0м3ظR9|+ uZ;OOG ~ v QR>>U?]XXvZYT=GWDwwRQ|h3h˹3ҭR>V;WW%GGGGGGGGGGG3۴E:\ 0!_Y^>>Uvʃ`2QR2F*;QRP¹ P:X% X*XZY3o2ZYPQR2Z&?CCY[2S.AKu[Î+q(XXXˋvB?=^Uc@ B25-PAS@ _s|;B @ D >  9|P^  UNISYS Emergency Maintenance Update CTOS Pascal Compiler s7.0.11 May 2, 1995 Released Version: 7.0.1 Style ID: B25-PAS Library Reference Number: EU-112D DESCRIPTION This Emergency Maintenance Update (EMU) is provided on an as-needed basis only. It is not an official release nor is it available through Corporate Software and Publications Operations (CSPO). The information in this document is supplemental to the product's Software Release Announcement (SRA). Contact your Unisys support center for more information concerning this EMU. PROBLEMS CORRECTED PLE 16490831 - Fixed in s7.0.11 Pascal Compiler hangs in optimization pass. PLE 16470899 - Fixed in s7.0.10 Pascal generates incorrect code when performing near / far variable comparisons. PLE 16479101 - Fixed in s7.0.10 Application generates GP Fault when using linked lists. PLE 16440701 - Fixed in s7.0.9 $InitCk+ directive fails to detect unitialized reals, and causes Erc 87 or system traps. PLE 16397091 - Fixed in s7.0.7 System hang or crash after compiling with s7.0.6 compiler on an SG4000. PLE 16249025 Decode function returning erroneous results. PLE 16243671 Incorrect floating point instructions being generated by the Pascal runtime. INSTALLATION INSTRUCTIONS Install the Pascal Compiler s7.0.11 EMU using Floppy Install. When prompted specifiy the directory name where the Pascal Compiler is currently installed. This installation will overwrite the current version of Pascal Compilerwhich is on your system. 2 Page # of 2   DGH DG HDG H@ 0( DGH!8&'*+,57OlOlD!8&'*+,())( DGH!8&'*+,@  FDGH!8&'*+,567OlOlD@ 0 DGH , ,{|@@ xGH@GH@G H@ DGH  DGH@ ! DGHwϙHVƠϮ&όƻ0-/01289>*wxҋҫHhҠҿ7ҍҺ0-@02>-/> GH@ !  GH@!GH,!8&'*+,@GH@GH $  */=<@@@@@@@@ @ @ @CourierTimes=Times,Times0 Helvetica8 Helvetica Helvetica Helvetica% Helvetica! Helvetica HelveticaR))pRR))3R33.?33370???? vvVvV7v0vE77777777{#.7070000RRRccccZ~Zx,xxxZxZdddLx@TxdxxxdddxdHxxZ  ZZZwx@xaxAxxhhh,-,,ddM7ddooop!  !!!!d!!! !!z!!oooo7o!Pd``ddd!!!!!d 00H! i<!!   !   @k           @@[[@%u[@ [u@u[@%[@@@% k      kkk     [}  @ @ u u%[    % bb%\ !!!mdYvmmddd2cmdccd?iccc2<Udd2<<Fi2<22dddddddddd<<iiinxn2dnxxnxxxn<2<id2dndnd<nn22d2nnnnFd<ndddZF2Fi<<2ddd222A<ddnnnddddnd<<nZZ+Z<<dmmmEEEEmdYvmmddd2cmdcca?iccc22@ddx(<<Fi2<22dddddddddd22iiidxxxn2Zxdxxnxxxn222Td(ddZdd2dd((Z(dddd<Z2dZZZZ</<i<<2dad222A<xdxddndZdddnd<<n<<"<<<dmmmEEEENbN]N]]mN]NN]]N]N]N]NNNm]mNm]]NNNNe]]]C]]llllwCTCPrCPP]CPCCPPCPCPCPCCC]Px]C]PPCCCCWPPPxx9xPP\\\\yocyyooo8nyonnoFunnn8C_oo8CCNu8C88ooooooooooCCuuuzz8ozzzC8Cuo8ozozoCzz88o8zzzzNoCzooodN8NuCC8ooo888HCoozzzoooozoCCzdd0dCCoyyyMMMMyocyyooo8nyonnkFunnn88Goo,CCNu8C88oooooooooo88uuuoz8dozz888^o,oodoo8oo,,d,ooooCd8oddddC4CuCC8oko888HCooozodooozoCCzCC&CCCoyyyMMMMG!(B= LaserWriter+3.0 6GWv@i$T$d,{Copyright (c) 1994 Unisys Corporation. All rights reserved.Ver Pascal Obj Dumper s7.0.11 Linker s1.00.0008/dd?P/@_`_? /`_ ?Щp`0?@O OP_/@pP?_ ```?p@po0?P`O/@p/`  p OPPp @ !#*'(" )#+7* 8% /N!)H.)..r...*9ct#[~; ; 1 111!1)11191A1] &] a] ] ] ] ] ] T g         ) L [  | _| | | |  \     F   0   {   R AR ` G` '  j  ]    F v   /v v M  / F X  ) <' DK iK K yK 01F   _ y 3 r 7 H 0 C c  lv+B {  ! T   k   1 g    -h.GG+FfU/k;kkkk=P,2`  HU   ,.; ? ]  p t | R `   v ' K d  $Gfy/k" @ I b ~         " h u        * 9 Q ^ k x    , ; H M l y           ! R _ n {           '    = o    " / F x      2 G T c                 5 N         & ? L [ z          @ M g v       z     % _ z    o    $     / C       Y r   {       ! Z g     w   7    I:Y%5EUeuH HH&H-H3HHHHHHHHUBUQU`UoUUUUUUUUU UUUJUjUUU#U+UOUcUUUUUUUUUU,UMUUUUUU1 >FZaf(-AUk7PZb{;QV"2?LY11`7.n...(...?....5.."./.F.S...[...J.j. h&=Ul+c (gm11111111? 1=? 1k? 1? 1? '1? /1#? 71Q? ?1? J1N1R1V1Z1_1c1g1k1o1t1x1|1111111111111111111111111111111111 11111 1$1(1,1115191=1A1F1J1N1R1V1[1_1c1g1k1o1u1z1 ] ] ] ] ] ] ? # Q  ~  }   s     ; h       < t <t ft | A| | | | m| | I| l  * P t  o s   6      R %` N` ` ` I` O  ) C  g  A D  ?   7 Y ~  v  11 8 T r   3 i n   !    5' ' ' 9K ZK %d 7d pd d d Bd d d %d d  C \  Q `   b  a  ;A    "$`$0G3fff fyy3z9kF4uR///!/kykkkk,kbkBad argument to fremqqBad argument to dismqq700A01BWESCSSSDSADD ADD ADD ADD ADD ADD PUSH POP OR OR OR OR OR OR PUSH ******ADC ADC ADC ADC ADC ADC PUSH POP SBB SBB SBB SBB SBB SBB PUSH POP AND AND AND AND AND AND ************SUB SUB SUB SUB SUB SUB ************XOR XOR XOR XOR XOR XOR ************CMP CMP CMP CMP CMP CMP ************INC INC INC INC INC INC INC INC DEC DEC DEC DEC DEC DEC DEC DEC PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH POP POP POP POP POP POP POP POP ************************************************************************************************JO JNO JB JAE JE JNE JBE JA JS JNS JP JNP JL JGE JLE JGT ************************TEST TEST XCHG XCHG MOV MOV MOV MOV MOV LEA MOV POP NOP XCHG XCHG XCHG XCHG XCHG XCHG XCHG CBW CWD LCALL ************************MOV MOV MOV MOV MOVSB MOVSW CMPSB CMPSW TEST TEST ************************************MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV ************RET RET LES LDS MOV MOV ************LRET LRET ******************IRET ************************************************************************************************************LOOP JCXZ ************************CALL JMP LJMP JMP ************************************REPNZ REPZ ******CMC ************CLC STC ************CLD STD ************[BX][BP][SI][DI]ALAXCLCXDLDXBLBXAHSPCHBPDHSIBHDITEST ******NOT NEG MUL IMUL DIV IDIV INC DEC CALL LCALL JMP LJMP PUSH ******ROL ROR RCL RCR SHL SHR ******SAR FADDP FMULP FSUBP FSUBRPFDIVP FDIVRPFLD FST FSTP FADD FMUL FSUB FSUBR FDIV FDIVR FLD FST FSTP FADD FMUL FSUB FSUBR FDIV FDIVR FILD FISTP FILD FISTP FLD FCHS FABS FLD FSTP FWAIT [SCR]<$>PASIBF.OID[SCR]<$>PASIBF.TMPBWBWBWBWBW[VID] [KBD] [Kbd]l[Vid] [Lpt]\[Nul]t[Debug]t[SysIn][SysOut]><4!l#>%)|*4]7u84\4\al]y]yB\.\\\\\B\\\\B\.\\\\\tZt]y \Oyt]y ]y {y2,,l;l4d [KBD][VID]>>.     061A01061A01 ; **DWL:I:** DW IU:  Procedure/Function : H@@+H@@+H+-+QQHI$+IUI** :..,,,,,,,,,,,ST(1),STST,,,$+3,10@ Error: Compiler REAL IEEE Denormal detectedREAL Precision loss=REAL arithmetic processor instruction illegal or not emulated Out Of MemoryInternal Error Hard data File access Disk full File system error in file , error code  00000 700E01C700E01700B01[scr]<$>TmpQQ062E01VNVN062E01~LL[KBD][VID][]}[!Scr]]$$.Tmp}[!Scr][!Scr][scr]<$>BsFilter.tmpVNVFp        {}MASTERSERVERLOCAL{}[]{}[]<>[sys]LptConfig.Sys&Press NEXT PAGE or SCROLL UP to continuep(Press NEXT PAGE to continuePascal Obj Dumper s7.0.11bP2PP:P3PPP2PP P3PP:PLFVFbP^S4^SfPPF@F=uʸbP^S4t vvL2^&&WFV:PLFV문bP$]bP$P$6$]PDP4tBE2>E uFHFV FHFVFVF FtO^&G&W+FV u'>E uFVFH FVFH^&G&WFVLNGEwr.<<<<<<<<<]-FF~|!FN6NF7F@FH;Fu]{>tvoPPPPPPNF~|uPPPPL@PPZQPZ2P[PF&GFPPP!PPPPPvPZPPZ2P[PF2PPkF2PP\L]\:ZrBt.BtE2E>tC6FPPPPP%PP2PQPP'P:8>tC6FPPPPP)PP2PQPP+P:>uL@PPZQPPPP-PZ2P[PPP6FPPPP P1PP2PQP3PPLR>tC6FPZPPP=PZ2P[PP?P:Fv\ZL$>tdPAPPCPPEP:PGPFP P2PQP::>Ft@>oBP$_LLQOwr.L999998R 999+=Bu*Z2䖋FvZL>t v4PW]^&<u^P ^P P2PQP]zFDv\&<uv\&GPvtFP0v\&G %tFv\&GPvtFPF2PPF2PP]9\:ZsoE2;\:Zs$FPFuFP>t_Fu&F2PPZPPZ2P[PF2PPZPPZ2P[PP]P>t^P_P6H6Fq>Jt<F&<u16JPPPPPcPP2PQPsL}>tpFDv\&GFvDsF؉FvPZPPZ2P[PPePF2PP F2PPL>tZPgP6FPPPPPkPP2PQPF2PPF2PPL>tOF&G PPZPPZ2P[PF&G 2PPJF&G 2PP6L8w2www.w&wsw] \:Zs >EuE2FFPr>Dt>Du FP]F>t_Ft&F2PPZPPZ2P[PF2PPZPPZ2P[PPuP>tM6FPPPPPwPP2PQPF2PPF2PPL[>t 6H6F>Et>u>Ju|F&<uq>Jv8+J@PPPPPPPP2PQP16JPPPPPPP2PQP,LF&G #;t!F&<tL>t 3PPq>t8FPFGPF@F=uPP3PPL*>tpFDv\&GFvDsF؉FvPZPPZ2P[PPPF2PPKF2PP<L>t;6FPPPPPPP2PQP3PPLb>EuPNws.R < < < < H < 1 1  < < < < < < < < < < b < < < < < < < * ]:Z:\w>E u\@Z`>Eu \ZFE2=Z2䖋FFZ>tqPP~v+F2PPPPPP2PQP3F2PPPPPPPP2PQP>t16FPPPPPPP2PQP>t16FPZPPPPZ2P[Pc>t16HPPPPPPP2PQP)'wr." `^2F FFv.`?FM>t vvFL]G^2F2斁h~F2斁~fF2斁Ƙ~LF2斁~2F斁(~wv.!>uPPPP@t$LHPPZQPZ2P[P!6LPZQPZ2P[PPPPFPPP]>t!3P6TPP2^PZ] T$uJJ] VPV2vV$82vV2%v]u @t->tPX2^PPP@>Hsf>tP>Hv@2hP>Dt>t PPL>tPH%2pP>Hs'>Dt>tPH`PV>Du >HuC>tP>Hu@2hP>Dt>t PP]G >Du'>tPHРJ2xR] 4FuT$tC>t+3P6TPJ2xPPP>Ju@P{kT$tANDPFPHP>tL3PF2P-L&>t PP>Ju@ FPT$tAN>t 3P6TDPFPHPaFt7>t+PFРJ2xRPP5>t+PPPFРJ2xR&] 3P6TE~t ~t~uET$tJJT2%F>tPFРJ2xR^DPFPHPk>t PP>Ju@PE~uoT2%F~u->t!PJ2xPPP +>t!PPPJ2xP~uJDPFPHPT2%F~uQ>tEPP~uPF^PPFРJ2xRO>tE~uPF^PPFРJ2xRPPk4]FtVT$t'3P6TC>tPJ2xP#>t PP>Ju@PN3P6TDPFPHPw>t+PPPFРJ2xRy]FDv|u+PvtPP븛PPLRPvt\PPv|u@X&PPLvDPv|1PPvD22PPwv|u1PPvD22PP=v|u@v|uA svDPPTvDyDvD%HDvЋD2H2RPL]W3P6TDPFPHP>t#PFzQPP]3P6TFtKT2%F>Ft7>t0PzPPPPFzQGDPFPHP>t+PFРJ2xRPP]U3P6TDPFPHP]->E t>Ju$3P6T>t 6TPFvw>TuTFT%sTT3P6T>tPPPP)L3PPN>t PPPB3P6T)v0]aT2%FDPFPHPLPF2PL>t2PP~uPP P|Pr]DPFPHPL~uPF2PsLPPF2PYLR]DPFPHPLPF2P"L][zP P3PbP:P3PeTP"BtT2PT$RP2>RvT$tAQ>Ru@PXT$tAQ3P6Tg>tPR2zPwt3PUkR2Pc,3P$3P[v.xSSSS\\dd+>Ru#>Ru>Rr P~PuP3P6T>Ru DCk>Rs3P;3P6TIPP>Rs3P6TR>Ju3PS)>Pu3P6T/>RsPGA>R2PPPs3P>Ru3P6TDr4R2P#P3Pv.R203P6TJ!v.R23P6TF#!v.U33BB33DDOw].v??BBK oux+TP6u$]^. FFU+r;.wVUF;FvFFFFF]UFvvF@F= uFFFvv~^&F@FH;FuF FFvv~~~^& F@FH;Fu؋F]UFvvF@F= uFFFvv~^&F@FH;FuF FFvv~~~^& "F@FH;Fu֋F]U Fvv FFFFv^ &v^&:tFF@FH;FuًF@FFFF;Fr$FFv^ &"tFF@FH;FuF@FF FF;Fr$FFv^&"tFF@FH;FuF] UFvvF@F= u]Uvv~~~ ]Uvv:uANFt:v2F~r*Fvvvv:tF F@FH;FuۋF]UPPv 2PF @P7tt t]UPPZP3P]UPP[P3P]U=P$P\P3P]UFF]U PbP3PP]UPpP3PP]U]U]U]U]U]U]U]U]U]U]U]Us]Us]U]U]U]U]U]U욜4>t ؚtʁ Žм&.+03>t4oUvv]U*v|uv\2< PPT PPE PP6 PP' wr.7FddFFFUFFFPPv(PFP4F֊F2PFP PPvt(PFPPF2PFP7]U~ t4+6 F 30F 3F ~ t@2ơ;F|FF@PF+P P+PF+@FP6vF]U~ tLF %0>9v 2+6F F ~ t@2뮡;F|FF@PF+P0P+PF+@FP6vF]U]Uv FD v FD v Dv ,]UvDvF4D%vDvDvDvFDvFDvD!vF D vFD vvv 4v$vvD] Uu>P06PPP6`PPPP3P6&6D66 P6]Uu>P06PPP6`PPPP3P6vvY6D"6D6]Uv v t vvv D"v ;D tAv |u@"ȋv D%4"sv Dv DWv ]Uv Dv v t vvYv ~ E Dv D"v ;D tAv |u@"ȋv D%4"sv Dv DWv v &v ]U]U]Uv<uv4Dsv4DvP$hv4D v4L$v4 L4"ȋv4|u@"ȋv4|u@"svP&vP PvPu$v4Dv[]UPU?PU7]U]U]UF؋v F ~Ns] UF@%F;r6+;wF%ub>t@H;Fs1@@FF6FF;Fv +FH6g@@;uO>uFD>t63>u F@@Pm;uF]UPvF~s~u[K-F]UP-]UF FnFr@]UP-]UP-]UPF-]UPFFF^^F^&;vI^&FP0F3ҋFvv FV^&3+FV| t F^&^&#t<^&PvFPF~uFFFF+FH^&F~uFFF-F]UP^S]F-F]U P^^F;FvW~s@>vA"sFvvFP#u!FFFF+FH^&FQF+F~v@F~s ~vFF;Fv FFH^&F-]UP-]U]X>u[X&.&kU]XX[PSU]XX[PSU]XX[PSU]XX[PSU]>u!܋_ݍFG_U]F;rUv ;vwvN ,r3]U]U]sގU؎v ~Ns]U]XX[PS.U]ʗ;u;u t=؋™ʇؙU3]Ëѽ u u u u փMU3ɋٽ u u Ԇ u x|-;r+@|;rw;r+@] x у z  UVWv~ y 3 y փ u u  u#rrx y _^]_^]UVWQSv~[Y_^]UVWQSv~ы[Y_^]U]XX[PS.U^F FFF Gp@] UVF v v ^Wp@] U؎~ NFs]UF^ GFG]UQ~ u1^&?tqPPF t t<t7:^&π~ u ^&?t(Pv F ttu F~ u ^&?t&]UQRPF tPT t H؀ u9F vF ~N F ]U^ GFĿWt4~Wwv +DF t<= u^ GG$~ u^ G"G%^ GGFG F ^ G"]UQQ^ ĿW~Wv G"PF t);u^ "uO%F^ GGG]UQQ^SFPF ttu)>tZF >rF< t<t<t 4뷋F6vPF u"F<t<t< t< uƸ]UQ^tĿW^S1>u%;w^ ^]U^ G!G%sG"5^ uPv ^S^ G rPv ^S^ u);u ĿWF t^ GG^FF ;Fw^ PFPF t?;u$^ G$s ~u O%^ G$F^ $^ GGFG>~ u^ G$FG"&F< t^v&Ft^ G$NO"]UQPF]UQQP^Sv FPZF tPT]UQP PF tPT]UQQ^ G!G$uiGFĿWt4~Wwv D^ G t%= uG$GG ^ GG^ WF ^ G"G;G uKG$E^ ĿW~Wv G"PZ^ G t tu ^ GGG]U^G!G$8GtN^tE^G s;^ĿW P^G t tu ^GGG]U^G!8GtF~+us^ğ^F&G F:t:Dt :t:uF Q^ĿWFP\F u^ĿWPPFPZFFF~1uF F ~u^ĿWvF~0u~u^ĿWvFF t#tu ^GGFG ^G$]U^G(PPw&Tt^G(PPw&Tu]UQR^vGDG$D$GDO%D%]U^ sFF^uhPG(Pw&FPPmmPF PPw F u*^PbwP7F t^PF^GsG sFtm FrmFwm^PG(Pw&FPPvF PPF u^^^G F:t:t:t:t :t:Du ^G[F:t:uL^PF u7^PG(Pw&FPPmmPF PPFF^G t(=u GG ^GG^GF.^GG$GsG%^G%]U^Gsmu ĿW8^t!Grğ^F&G &W"&G&W^ĿWFF t^GGG ^G]Uvu$FFP^G(Pw&FPPmmPF uvF t^GGG]U^&u]UF ^GG&]U^Gs8( ^G&G5/u VWVW1RP]_^P(T_^/v+)'% u tLV6'6%VF u t VF&%&W&'%'%;+u;)u9-rVW6-%RP*_^ t'-VW6-%RP*_^ t33'%%&W&G-'%؃QS%&_XZ&W&'% %&_&&W&>+u>)u'%%&W&()&W&%&W&'%)&W&V'%+)RPe]_^VWUv J]_^VWU~ u~ tn V F tPPP|^ &t^ &3]_^VWUv^ &W&GVF^&t^&W&VF^&uF^ &W&G9Vu9Fu^&W&^ &W&G^&W&^&W&VF^&?+~Njփ;ro;v7ƋN^؃N^^&W&^&W&VF^&W&VF^ +)&W&G^&^ &W&G6^&W&%VF^ &W&G9Vt9Ft33]_^VWU>/u1RP]P(T/]_^VWU~ u~ tn V F u ^ &uPPP|^ &t^ &3]_^UF>t=t P  ]U~u]U^SPd u].Aks].=]U^SPd u].Iks].E]U^S!Pd u].Qks].M]U^S#Pd u].Yks].U]U^S%Pd u].aks].]]U^ S)Pd u].iks].e] U^ S*Pd u].qks].m]U^S7Pd u].yks].u]U^ S8Pd u].ks].}] U].U].U].U].U].U].^&G &w8 F^&G:t P)FFgicep~eF =wmtAN=smt=pmu'^S^Sv^Svv ^Sv<0F =rmt=tmuFrmF =wmt =mmt=amuFmm iFP^Sv^SvvTF=t=uB^S^Sv^Svv ^Sv<Ft !t= uFFa~uv~mmuo^Sv^Sv^&w&&w$F=u^Sv^SvjhF~u FP^Sv^SvvTFFF t^G:P(F uM^&w:FP uF FuF^&G8#;u8n luhjlP/DF tfl& r 9FvFF1F1F1F;s ^Sh %F^&GZ&WvF&MX&E&uF+ƹ1&EFF&Z&U&E$<&E&FYs߸&G&G<~ tmuv^S^GPvj^GPjFF usF =rmt=tmu^&G &G 5^&G&G~ mmu&O FV^&G FF^Svv\F t ^SPmURVnjޱ;u$:u ^&G(~F =rmt =tmt ^&G ]^&^ &&W^&G :t WFP5F uC~uF1~uF$^G^ &Z&W^&F^&GFU0~F =amt=wmt=rmt=tmt =mmt&/^&G F^&Z&WF^&G]U^&^&G :/t ^&GN ^&]U^&^ &&W^&G :/t ] vFP,F uqv~N^Y~u ЉFVsjjj ^SvNdF,jjFP/DF uF^&G Z&W F&GF^Sv|Fv ^&G :tSv^ S^Sg<^SFPgF u'^Sv^ S^SgF^&G F^ &&W^&^&O :v^&zRVnjޱ;u$:u0br)RP>PjRPQhrmRPQF u(^&G :nu FF^Su ^&G s<&G s4~u ^&"^&G ^G ^ &Z&W^&}^&G&;Gr$Sv^ S^S9F uX^&?uL^&G&O+;FsFF^&^&FFv&t^^ &Z&W^F&G FFN F;vP~uJ^S+QFPFPF t tu.^ v8vNFYFF릋F^&F^&G :tRS^ Sv ^SFsmVnjޱ;u$:uH^SF9^SFPcF u'^S^ Sv ^SF^&G F ^&^&O :v ^&Vnjޱ;u$:u7r0r)PCPjRPQhwmRPQF u(^&G :u FF^Su FFN F;w~t^&W&;WrS^ R+QFPFT^&G&+GFV N+;sV^&FF^ v0~&}^9N^Y^F&GFFcF^&FU^&G :v ]U^&G :v ^&G ]U^&]U^&]U]U^& t^&G :u &G& u]^S s \FFFvPFF uAF s 5FFwJZ:sz*ʈJFuF=rmt =mmtKFP^Sv^SvvF=uW~mmuPF~&] ~&] Y]&FFF=F\FzFFFFFF2FQF 1F1FF1Vu FFmFm1FF1VF1F ;vNvB;FvNFF^&F 1^&W^&8Os&vF+B@^&GF1^&WF <1^&WF 1F1^&WF 1º PF1Y^&GU^ &G 33&:t :.t$C^Y tt &^&] ]U^&G :w):nu&G t&G uF&G &G 3  ]U^&G uPD u>t&G>u]ð]UQQPtP\ uJF6P  u8=u0P\ u!F6P  u =t=!t3]^ &G :uSvv^ &G :tWSvv,n^ &G ^ Svv,FNs=u8^ SFPL~u#^ &G ^ &dt@Fs률^ &G F,^ &G :r^ &G :tw&G 9Fu9Fu^ &G&WFV^ &G&W;Vu;Fw3&G^ &O^ &O^ &O&W;Vu;Ns+^ &r &G&;Gwe^ &G &W"N~;u;wL&wщFVN;u;s&+O &"N։~؋F^ &G-sS4F u^ &G-sG<PFPF^ &G-FVFVF%Ff^ &G^ &G^ &GNV^ &O &W"^ SPFPFP4F u4F^ &G^ &G :t :Dt^ SjF t^ &G&G &W"FV&9Wu&9Gw&G&W9Fu9Fu^ &G&WFV^ &G&9G*s&G*^ &FF^ &G@1&@FތFF^ FV&9W"u&9G v&G*H1Fܺ&G &W"N~;u;r_F&+O &"N։~؋F։F&O,r&9G*sSl,F tF^ &G^ &G*&;G(uF&G(F^ &G* ^ F&9G*s&G*^ F&9G(v&G(Fr^ Sj$\F u^ Sl,F uy^ &G ts&w8&SP^ &w"&w G<P^ &w: F t@^ &G-^ &G &W"&G4&W6^ &G&G.^ &F&G0Z&W2~Yt^ &G@1&W^ &w&@F&Z&W^ &GN^ &O^ &OF~+&G &"^ &G&G(^ &G&G*^ &G,^ &Yti&w8&Sh^ &w"&w FP#Fu^ &?^ &G,(~t^ &G&GF^ &G :/t ^&FF^&G &W"&O*&;Wu&;GrI1&G^&G*1 uSj$\F u`^&G@1&@FF^&G*1&G &W"FV&w8^SQRPFP#FtK uX^&G*1V+^0^~&}*9^Y^&G*H13^Sj\F u/v&|*&L+^9 ^&G*&G^&G,^ &G :uS^SzO^ &G :t S^S<6^ &du^ &G ^ S^SF^ &G FU^&G :r^&G :t:Du^&G&G &W"^&&Wc^&G :uX&r&G&;Gv &G&W^&G&G &W"^&&W^&G s7&G s/^&/&_!^&G :/u^&&G ]^&^ &&W^&G :t ^S4F uk^&G;s]@1V&G&G &"F~&w8&XSv^&pWPG<P^&w:F t@^&G-F^&GFrF@1V^&G&G &W"FV&G-sG<PFPF^&G-3^&w8v&XSv^&pvvFP#FNVF׉NV~u t%^&9Wu&9Or&O&WFF t ^&Gv^&@F&Z&W^&GFV^&G &W"^&G&W;Vu;FYvF&GF^&G8^&G^&G&W&+G &W"FVF&G^&uFF0~6F =wmt =mmt=amu dF =rmt=tmuF smhFPjFt;v ^Sv^SvFPF t=c=u ~W=t0~6FV^&G&WFF&Z&WF1&G&G;YsF^Sv^GPjFPF ui^&G(&W*&G&W~ tmu)&w&w^Sv^S^GPF uA^&G &G Sjj\F u^&G &w&wFFUFPv v ^Sj؎F&G P+D] ^S s x^&G FNN;v \^Svvj F uC^&GF&_^F&xw !vv^0~ N^YUFPv v ^Sj؎F&G PD] ^S s *^&$mmt^&G FNN;v ^Svvh F u^&GFF^&GFF^8v NFY^v&@F<sF~uFFF^v&@vvNF^&^&G"s&G#^S F u ^ S s P^ &$mmt^ Svvj F uh^ &GF&O N&_^F&xs ?^v&@vvN^&^ &G"s&G#^ S F u^ &dtZSFP\^& uV^ &du&G-sG<P^S^&^ Shwmvv^& u^ &G ^&^ &Gd<tN<uSh^& uH^ SFP\^& u/^ Shrmvv^& u^ &G ^&U].p] ^&^SP$\F t^&G t~&w8&SP^&w"&w G<P^&w: F t@^&G-^&G &W"&G4&W6^&G&G.^&F&G0Z&W2~Yt^&GFu^&G@1V&G&G &W"F^&Gv^&@F&Z&Wv^&@&G^&G*^&G(^&G^&G, ^&G :t :Dt F^&G-rG<PFPF^&G-^&G0FF^F&G4&W6Ft.H^&O.+N^v0^9^Y^&O.N^F&)G.^v^&G0Z&W2F^&.uF tuSv\F tF^&G0FF^&w8^S^&w.&w6&w4FP$FFt.H^&O.+N^v0^9^Y^&O.N^F&G4&W6^F&)G.^v^&G0Z&W2F t ^&.u%FsFr^Sh\F u^&G :t :Dt ^&G&WFV&O&O &"N~;u;wN~Fs FF%u!FPF u ~ r ujjP/DF t^&GF&8G wFX ^Fv&DF&GF&GF&GF^&GF&GF&GF&GF&G F&8G uANsNQPP$F t FF^&#tF ;Fv F&O#F ;Fw FrF9F w~^ &FF^&O&@^&G^&w6 FA:r jF~uv&<tF~to~tEv&<u<^&?t'~tv &* v &*&4v &^&~tv &)Db)ib)b)yb)P;A F)))_)y)3)r)7 *H *0!*C!*c!*!*,*,*,*l,*,*,*,*v,*,*,*,*,*,*,*+,*B ,*{ ,* ,*! ,*T ,* ,* ,*k ,* ,* ,*1 ,*g ,* ,* ,* ,*,*-+--+h-+.^+^+++F+f+++,U,,,,,,F,,;,,,,=,P,,,2,`,,,,,,,wcq!!!!M"######$$$$ $ $$$$$$$$$$&$)$+$/$1$7$:$<$>$A$E$$$$% %%R%V%t%%%%%%&&&&&&&i'w''''' (()(/(((((>)b){)))))) *!*,* +-+6+;+^+}++++++,F,,,,,,-.$6G>*bH8O   '     xe:mD5fV %    ((((~))*Q*b******f++++,,E,T,,,,,,,-w/www>'Ui%Sg7w   ' a cccjcccAccc~cc1c}ccc c% c cI ce c c cG cw c c2 c; c cc5cbcc|cccc>c5ccccBcwccccsccccccc3ccmc c\cwcccczc cccc1 cH cV c c c c!c.!cB!cM!c!c!c!c"c"c3&c(c)cZ,c,c0-c-c.c.c.c0c0c1c 1c>1cj1c1cO2cv2c2c2c2c2c2c3cC4cO4ct4c4c4c4c4c5c95c>5cr5cw5c|5c5c5c6cH6cM6cR6c6c6c6c6c6c7c<8cA8c8c9c9c:cz;ccY>cw>c>cn?cAcAc+BcOBcBcBCcCcCcCcCcKDcDcEcFc3Fc`FcGcIcIcIc/Jc>Jc\JcwJcOMcMcMc`OcOcOcPcFPcPcPc Qc5QcgQcQcRcRcScxTcUcUcVc7VcVcWcWc XcXcYcnYczYcYcYcYcZc)ZcUZc;\cT]c*_cS`cCacacacbcMbcbcbcEccbccqccccccdcdc ecececfcfcfcNgcwgcgcgcgc3hcphcicicjc{kcUlc~mcococpcFZaf caR .CX]jy 0ERan}DS`u1IenzM %%V&C*N*W*`**Iq!8q!Kq!Pq!aq!fq!q!q!q!q!q!!q!1q!Aq!Qq!aq!qq!q!q!q!q!q!q!q!q!!!(!-!A!U!k!!7!P!Z!b!{!;!Q!V!1!!!!!B!Q!`!o!!!!!!!!! !!!J!j!!!#!+!O!c!!!!!!!!!!,!M!!!!!!M"M"%M"9M"M"M"M"M"M"+M"#M"M"M"M"M"M"M"M"M"M"M""M"/M">M"KM"XM"]M"jM"oM"|M"M"M"M"M"M"M"M"M"M"M"M"M",M"9M"IM"VM"eM"rM"M"M"M"M"M"M"M"M"M"M"M"$M")M"0 M" M"k M" M" M" M"Y M"q M"M"JM"M"M"M".M"M"##b#6A 6A `### ##&#-#3########'$2$=$H$S$^$i$"1$21$?1$L1$Y1$&7$7E$nE$E$E$(E$E$E$?E$E$E$E$5E$E$"E$/E$FE$SE$E$E$[E$E$E$JE$jE$$$ $h$$$$$$$&$=$U$l$% %+ %c % % % % %(%%g%m%%7A 7A 7A 7A 8A 8A 8A 8A V%'8A =V%/8A kV%78A V%?8A V%G8A V%O8A #V%W8A QV%_8A V%j8A n8A r8A v8A z8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 8A 9A 9A 9A 9A 9A 9A 9A 9A "9A '9A +9A /9A 39A 79A <9A @9A D9A H9A L9A Q9A U9A Y9A ]9A a9A f9A j9A n9A r9A v9A {9A 9A 9A 9A 9A 9A 9A 9A hlt%t%t%t%t%t%?%%#%Q%% %~%%}%%%s%%% %&%&;%&h%&%&%&%&%&%&%&<%&&<&f&&A&&&&m&&I&&l&&*&P&t& &o&s&&&6&&&&&&i'%w'Nw'w'w'Iw'O'' ')''''C''g ()(A)(D/(/(?/(/(/(7/(Y/(~/(/(v/(/(:A ;A (8(T(r(((3(i(n(((!((((5>)>)>)9b)Zb)%{)7{)p{){){)B{){){)%{){))C)\)))))Q)`)))b))a))!*;,*,*,*A ,* ,* ,* +"6+;+`;+0^+3}+}+}+ }+++3+z++9+k+F+++4+u++,R,F,F,F,!F,,y,,,,,,b, ,Bad argument to fremqqBad argument to dismqq700A01BW[SCR]<$>PASIBF.SYM[SCR]<$>PASIBF.BIN-./0BW1234BWBWBW gen6Alt.pas aVAGvAXGtXTGaSMGsAOGuAOGsOVGsDZGuDZG nAOGnDZGvASGcESGcLSGlMNGlDNGlRNGaSNGaVLGtRTRcDDRcDERcSERcDDDcDEDcSEDcSDRcSDDmNNGmXNGcMPWsRSRsNSRcNSRaTSReXSRlNSRlDSRaSSRaCSRtNSRaISRaNSRsHSRcHSRtHSR????????????mNSRmXSRpRSRpISRa2SRmDSRsRDRsNDRcNDRaTDReXDRlNDRlDDRaSDRaCDRtNDRaIDRaNDRsHDRcHDRtHDR????????????mNDRmXDRpRDRpIDRa2DRmDDRaDPTmUPTsBPTsRPTdVPTdRPTrLSTrSSTrASTrMSTrTSTrRSTrDSTrCSTrLDTrSDTrADTrMDTrTDTrRDTrDDTrCDTrISTrOSTrIDTrODTdUPTcHSTaBSTrLTTrSTTbLSTbSSTbASTbMSTbTSTbRSTbDSTbCSTbLDTbSDTbADTbMDTbTDTbRDTbDDTbCDTbISTbOSTbIDTbODTbLTTbSTT 0 ((88BWBW????QQ BWBWBWBWBWbb""bbbbbbbbb""bb""bb""bb""bb""bb""bb""bbbb"".-0/21436587:9<;>=@?BADCFEHGBW. 2 1  25  2H  g@N A  MH N  1 5 #  1  1 $ A #  A $ .  2 H # $  1  1 .  1  5  H  i@N A  #H N  1 5 # $ A #  A $  1 A 1$ A 1K .   H # $  1 A $  1 .>   7  7 #( A  7 A 7   A A 1SC A  . 5   1  H  _@N  A H A xN O .   H O g. 5   1  H  W@N  A H A pN 5  1   $ "  A $ "F .  1 $ "   H F .   A   .   1M .   1M .   ,L O F 2F .A D +D.    +   +  + @ @4  @  .A  1 .A +  D A + D 1 . + +$(@,(H$, +X , ,@  @ @ 1 + , ,+ , ,. +B %+% +B %  1  s'q'q '.  @ 1 $EI 1 +X+ (e,* (d, p++ ,* , 1 .   +B+ % +33%+B+ (e(e% 1   +(e,(d, +(e(e%W.&+># y (e," y (d, 1 +>#y (e(e% +(c, +(c(c% +4,.     + , ,  @ @ 1 +  ,  ,+  ,  ,.+%+B  %+B  %  1 .  +# ," , @ @ 1 +# ," ,+# ," ,.+%+B# %+B# %  1  .i  i { { {  +H 3 ,2 , { @ @ 1 +u 3 ,2 ,+ 3 ,2 ,. +33%+B3 %+B3 %  1  .+# , +# , +# , (   0.*+  +$ 83,,[ .+ t, +8#t, 1 .&n K t :K+; t83, 1 .*+  +K 3%% +#t, +";t, .+# ,+83, 1 * . +, +,A ,[ .*  +983, 1 w . +, +,A ,  7 %, .!  7 , 7 , 1  *7 ,7 , *7 ,  7 ,@ @ 1 . 1>C +W  )n +W  1>C +W  +)n % >C +W  1  .  +K , +K ,.1>C  )n   1>C +% % .  +K , +K ,.1>C  )n   1>C +% %q ' .!\ B \ O /i /h j    1 5 1A     A     1 .!    i h    1  1 I.+2683Q, 1 .+% 1  .!/k /j + *  1 5 A + *  A + *  1 .!6)k j D+ *  1  1 .+2t83(H, 1 .+% 1 .=+(, +(,+(&, +(&K, 1 .J +(, +(,,+(y , +(y K, 1 `&b3u(@,&oK3 u(@,&b3t(@,&oK3 t(@,&b3s(@,}(@,v(@,~(@,&oK3}(@,| t(@,<&b3"w(@,(@,3.r(@,|(@,&oK3X| u(@,|(@,0. w; '  2'4 ' 1  2; '; ' 2 ; ' ; ' @ 1!2 . 1  1  : '  2'4 ' 2: ': ' 2 : ' : '  1!2 . +33'  !2  +B+ '!2  1 !2 A A K:KA +K'L.  E(*4" E40# t <" t &bt &o t .  v*" # u " u &bu &o u &br | w  &o| | u &b v ~ s } &o'| t } .  1; Lr  +,|  +,Je*; yr *"",| *"",; r *"",| *"",  1 1  1 .+% 1>C +% )n +% 1>C +% +)n % 1 .  1; 5w  +,  +,JNn*; bw *"", *"",; w *"",} *"",  1 1  1 .+% 1>C +% )n +% 1>C +% +)n % 1 .&o ,!&W*&W*&B63u,|t . &o 3!&Wl&Wl&Bx3t,:u .&o,!&W&W&93s,r 3r,s . !&o3!&W&W&93w,(v $3v,w (@,4,  F  7'.   7'A 1SC A  7 ' +283 ;  ; w  + | ;~ ; ; ~  + r ;v ; ; v  6 6 . (P0/n  . (P0/n  A =.(P/n  1 . RP=  )n F    1 F A = (P(P. W= Z 7+ 1+ ; w 7+ QO KK+ ; wP 71 A   +4L. +(@$ ; : u @ +(@$ ; : u    @ +(@$ (H ; : u .# +(H$ 4 8; 8: u @" +(H$ [ _; _: u   u @ +(H$ (@; : u .    +(r  /` u @ +(r .    +(s  /` t @ +(s   D.E GE G  E GO .PN N G  `@N GA yN G  `@N GO  O O O  .E GE G  E GF F .J + X@N GA qN G  X@N GF  F F F  c.E GE G  E GO .QN N G  a@N GA zN G  a@N GO  O O O  .E GE G  E GF F .i J Y@N GA rN G  Y@N GF  F F F " .dE GE G |E GE G!2 O O O .RN N GSN N G  b@N Gc@N GA {N G|N G!2 O O O  O O  s.5E GE G ME GE G!2 F F F .2  Z@N G[@N GA sN GtN G!2 F F F  F F  ?.E GE G | E GE GO !2 O O O .QTN N GUN N G  qd@N Ge@N GA }N G~N G!2 O O O  O O   .E GE G | E GE G!2 F F F .E |  1 \@N G]@N GA H uN GvN G!2 F F F  F F .G O F . I GkN G O F . I GlN G O F .C!! H  1i@ !K%G !H !1g@ +!,0!O F .F`!a! O!H V!1i@ !K%G l!H s!1g@ +!,!O F ; u'#u ; u ' "!.G# J G$ J GJ G 1 .G# J G$ J GJ G 1 e".G6" f@G# f@G $ f@GA G 1 .G}" h@G# h@G $ h@GA G 1 &.#"3ru(@,"r t &.#"3rt(@,"r u &.##3v(@, #w v &.#"#3r(@,*#s r . 1  1   W#''  q#''  #''  #''. 1(PC #!2 5 A =C #!2 &.$(P)$&.$(P)$&.$$(P)$(P)$&.$ $(P)$(P)$,. ,U$ 1(P 1(PC 2!  1(P 1(PC 'A $ 1(P=C 2!  1(P=C '.$>#w!_ /  w +Q  QMt>###$Mt"""# M.##! 3! `p$C , kW"gW[VID] [KBD] [Kbd]4[Vid] [Lpt]$[Nul]<[Debug]<[SysIn]t[SysOut]>t!4#>%)D*]7u8LllLL$llL$llLa4L]LyLLLL]LyLLB$.$\$$$B$L\$$LB$.$\$$$<Z<]LyLL L$lOLy<]LyLL tL]LyLL L{ttyLL24;4\4, [KBD][VID]>>     061A01061A01061A01 BUFFQQ8 CONST~`l@ [SCR]<$>PASIBF.OID[SCR]<$>PASIBF.TMP*temp*BCONSTSTKHQQSTKGQQBOSXQQSTKBQQBEGXQQENTGQQx,L( l@@S@@@pp@@@@@@@@@@@@@@@@@@@@@@@@hPascal MS PASCAL_X MS PASCALFORTRAN FORTRAN 77X FORTRAN 77Pascal PASCALFORTRAN FORTRANPascal A:PASCALFORTRAN A:FORTRANCODEHIMEMCOMMONCOMMQQFAR_DATA CONSTCOMADSDATASTACKMEMORYHEAPCODEDGROUPy Code Area Size = # () Cons Area Size = # () Data Area Size = # () 0 Far Area Size = # ()[SCR]<$>PASIBF.TMPFIDRQQ FIERQQ FIWRQQ @ Error: Compiler REAL IEEE Denormal detectedREAL Precision loss=REAL arithmetic processor instruction illegal or not emulated Out Of MemoryInternal Error Hard data File access Disk full File system error in file , error code  00000  ---------- User Error # at line / User Error # at line /Attempted to divide by zero(Overflow during integer constant folding/Expression too complex/Too many internal labels$Too many procedures and/or functions1Range error (number too large to fit into target)2Program size too large (exceeds 64K bytes of code) User Error Pass Two No Errors Detected.h700A01PascalOpt.RunPascalLst.Run700E01C700E01700B01[scr]<$>TmpQQ062E01VNVN062E01~[KBD][VID][]}[!Scr]]$$.Tmp}[!Scr][!Scr][scr]<$>BsFilter.tmpVNVFp        {}MASTERSERVERLOCAL{}[]{}[]<>[sys]LptConfig.Sys&Press NEXT PAGE or SCROLL UP to continuep(Press NEXT PAGE to continuePascal Optimizer s7.0.11,6ع 6عع P46Ɩv>狅26Ɩv>狅D@=u2< ts]H,NP0ֹ6ֹBP3PP0ع6ع P3P6ֹPڹPBP3PP6عPP P3PPP`P PP`P P6عع P4PP 6عt6ع 6عع P46>狅2䈄 6>狅 @=uȋ6عu6عع P4P0¹6¹D¹ĹHH2DŽrH@Ht>u>t Ft2#;tTPPP&Pi4%tTPPP&PiTPPPPiT^F^&#^ &^&^ &#;tTP6P(PiTP6P(PiT^F^&^&^ &^&^ &^&G %t^F&^F&^&^&^&Q PTVT &3FF%Fwr."} V TuT^FXZ^&^&<uo66`XZZ XtTX&G^&X&G<u ^ &*X&G<u ^ &X&G ^ &XZ^&^&&WFu^&G&WRPXZZ Xu%^&&WTV^&<t ^&<t^&GX&^&GX&X&G %t*^&G %tX&G # X &^&<u5^&G X &^&GX&X&<uX&6V6T 6V6T]$v4拴һ~%Ɩv]$vt4lTVvTVT]i$FF%6惼һuA6Pv0vһ6拴һƖ@=uދ6拴һƖF]#6惼һt6һ4L6DŽһ@=uˋ]#~u tiFFt\6عF~t@~tA"ЊF2拄%tA"s6عع P46عF믋6ع 6عع P4>t#>t>t>t>t>u P|BFPFFv6Evv2拄ljFF%tIvDvDvDvguV2~E2䈄]6>~E^@=uaQbQ\ιйTVV Tt1TS\PVsT&G&WTVơV TtTPPP\PiT^FvE D,vHt>Hu=vt|u1>Huvt|uvDFvDFv<&tv|u@v|uA"v|uAv|uB" rvt<t@vt<tA"sSP6&6~ED6~ED6~E D 6DvDvDv|u vDvDF] v|uFFFPvvrFFvDv2拄%F~r5Fvv~~uvvDF@FH;FuЋF] FFv2拄%FFFFF~r5Fvv~~uvvDF@FH;FuЃ~tQvtD$ u"v~E2%~}M2 ȈLv~E2%~}M@2 ȈLv2v~E2%DvtD$!E!D6<u6>E DFUvD6>E2%Dvv~ED v3PvDv~E @DvD6D$t6>EHDF#vv~ED v3PvDPv6rvvDv3PvDvD vDlP6*6~EDvDvt=v| w@vED6FD6tDFF]v2拄%F~r5Fvv~~uvvDF@FH;FuЋFFv<1r@v<4wA"s0v|u!v~2䗋v~E D$v<9r@v<<wA"rFvvt2PPPs$vvt~~}E D4P66~~EDvvDF@F=tvFFF]6 FFFFv<u@v<uA rvtD$uyvtv:uhvt~E D vvt~EDvDvD vDFvDFv~EDvvvDvt<tvt\&<uAvt\&G<tB"ʋvt\&G<tB"rvt<uOvDFvttvttvDPtvt~EDvt~E D Qvt<uFvtt<u8vttvtttvDPtv~}EDF]r v2拄%F~r5Fvv~~uvvDF@FH;Fuvv|~vv2拄% t vFv2PPPs vFv!Fv<tvлuлFvD$ unvDv;DuAvDv;DuB"ʋvD v;D uB"ʋvDv;DuB"ʋvDv:DuB"sлF6лDлkFF]1 FFv<tv\&G %t<λv2拄rл>лu6л~DT+EU t6л|u^лλ6лDлʡлFvD$u$v\&G<tv\&G<uлλ 6лλP6лDлt6v<u@v<uA rvDFv<t vDFvDv DuvD$tv\&G<tv\&G<tλv2拄rл>лuu6лDv;DuA6лDv;DuB"ʋ6лD v;D uB"ʋ6лDv;DuB"s 6лλPлλ6лDл낋vtv2拄%v vt]$ FFFFv2拄%FFF~r5Fvv~~uvvDF@FH;FuЋvDv2vtD$uAvtD$@tB s vtEv<u@v<uA svDTTVvDTTVT&G %uS!v<u@v<uA s;*52v\&G %uxvv|wbQvD$tAvt<u@"ȋvtDvt DtB"svt\&G<uvDFvwJ>Jt-JF6JD~v vtL~v vtLFPa^wr.&&&&% &&&&%&%&&&&&&&t&&&&&&&&&&&&&&&&&&&&%%&&&&&&&&&&&&&&&&&&&&&&&&%%%%&&&&&&&&&&&&&&&&&&&&&&&&&;%;%;%;%;%;%&&&&&&%t%t%t%&%%%%%%%%%%%%%%%&&%%%%&&&&%&&%%&%%%&&%%&;%;%;%&&%%%%%%%w%w%w%w%&F] FFFFv2拄%FFF~r5Fvv~~uvvDF@FH;FuЋvDv<u vDFF].zP3PPP(&=EYuA׸P-3PC6¹Dȹ>ȹt6ȹ@룴6ȹDȹ6¹Dȹ>ȹu6ȹȹE D6ȹ 6ȹDȹj6¹Dȹu>ȹt6ȹ6ȹDȹ>ȹt6ȹ)6ȹDȹ6¹Dȹ>ȹt26ȹu!~uvt F Ɩt<u vt F Ɩtu3Pvt P3PU6UevD F;Fs>t>u@~wA"~tA"v| tA"v| tA"s3Pvt 63PUo6UvDG vUvD/ vD@;Fu vDF';Fv3Pvt P3PUvUm vD@;Fr-v| s3PPQ3PU 3PFvU$ 3Pvt vD@P3PUPvt vDP3PUv|uv~E DG Ft<3Pvt P3PUAPvt P3PU,PUvDF;FvFF;Fs>t>u@~wA"~tA"v| tA"v| tA"s>u@v<uA"s3Pvt 63PUhPvt 63PUS6UvD+F;FvFF>u6U3Pvt 63PUPvt 63PUvDF;FvFF;Fs>t>u@~wA"~tA"v| tA"v| tA"s3Pvt 63PUQPvt 63PUt3Pvt 63PUPvt 63PUvD6U/F;FvFFvt<u@vt|sA"~uA"vt<uAvt|sB"ʃ~uB" "s3Pvt 63PU(Pvt 63PU6UyvDvFDvt<uFvt<uFvFDF;Fuv~2䗋ͼvFD v~E D3PPP3PUsvDNv~E D3PPP3PUBPQP3PU2vD vt<u@vt| uA"vtLtB"s,FFvt\ &vtD (vtFF;FtPvt v3PUvFDvUmj3PPP3PUlUvtUH3Pvt vt3PUFvtU%3Pvt vtPU"vtUvUjvv~~]&G DvvDFvD6UF;FvFF3Pvt 6PUzvE>^gsVnVVVrr >>>>>>>> O O O O O O >>>>>>>>>> ii;;; |0 0 >>>>U x H ;>;;;;3 3 ;;;;;; >>;;;;;;;;;>>>>>;;;;>;;>>>>>>>>>>;> ;;Ftv"u 2u 6u v| u@v| uA 0v| u@v| uA 8vD:>"v vD<:u P 0t36 >7(*- u P6*6($&X ,.2t6>u P"0t36 >7(*- u P6*6($&p ,.#42t #93҉FV3#F#VС3҉FV3#F#Vѣ,.D 422t  93҉FV3 F VС3҉FV3 F Vѣ,.2t 393҉FV33F3VС3҉FV33F3Vѣ,.;uA24y2t;uA2$&+(* uA248;tA242t;tA2$&+(* tA240t;vA2;~A242t10t;vA2;~A2$&+(*}A24J0t;rA2;|A242t10t;rA2;|A2(*+$&|A24v|u@v|uA"s_22v| u@ 0r8>s;t Py#t P4v|u@v|uA"s/22>v0u 4wv|u@v|uA"s'0t3ҡ,. ,.40v|u@v|uA"s 4mp4b2t90t;s;}/$&+(*}$&,.(*,.2t90t;s;}/(*+$&}$&,.(*,.~uy@w r.  1|  b"N  [ !+ b4t6:6:D6:6:,D6:.D:Fv2拄%@=@tvt<u@vt<uA vt v: uB"sevttvt:uPvt vtt 's8vtDFvt~EDv~u!vDvFDF]]^. FFU+r;.\wVj]a]X]O]F]=]4]+]"]]]]]]]]ڣ]ѣ]ȣ]迣]趣]譣]褣]蛣]蒣]艣]耣]w]n]e]\]S]J]A]8]/]&]]] ]]]]]ޢ]բ]̢]â]躢]豢]訢]蟢]薢]荢]脢]{]r]i]`]W]N]E]<]3]*]!]]]]]]]]١]С]ǡ]辡]赡]謡]裡]蚡]葡]舡UbPP1P P3PPPPPDPiÉ^F^&^ L&^&^ &PPPNPiÉ^F^ V&^&^ &^&P0áÉFvvDvËÉDTvDvD vDvDvXDvDvDP0Ë>Ë6ù 6DPPPZPiÉ^F^&^&^ b&^ &^&^&^&PPPdPiÉ^F^&^&^ l&^ &^&^Ë&&WPPPnPiÉ^F^&^&^ v&^ &^&^Ë&&WPPPxPiÉ^F^&^&^ &^ &^&^Ë&&WPPPPiÉ^F^ &^&^Ë&&WPPPPiÉ^F^ &^&^Ë&&WËãʹ̹P0nơnƣpƋ6nD]֝^&GР2+ |^&G2Р2+‰FF]螝 FvDFvDFvD؉FvvtFPtv<{tFFFvDF~uF~vFиf;rOFFv<{t?v~E DF;FuA"svuv~EDvDF vFD ]ŜFFvD$tAvt<u@v|uB"‹vt<&uBv|Fu@"Ћv|u@" V"sv~}EDv~EDv~}Dv|t v|tv~}EDv~EDvtDFvt~}E2%DvDPvDPv|uAvtTFt@"ȑ4"Frv|uv_vtt<uKvt| w?v~}}EDv|}vvtt~E؉Dvvv~}EDv~}E D zv|tv|uhvtD$t[v~}EDvDPvDPs5v|uvvv~}EDv~}E D vtFD]x"FFv2拄%Fv2P PPrvD$uAv<`u@"svUQvt<uvt~}E D~u@v<`tA"vv<uv|u vDFvv~E2%|DvD  v<uBvt<u5vttvtFPtv~EDv Fa ^vhuP0Fv P0vhƉFvDhƋvFvD>ft 6fƋFDFdƋFfƋF]藇>|tdF~|¹ |]l6DFF2DŽF2ƄF2DŽFHFdu*6dƋF‰F6dơ‰Dv\2v|tFFv\&G "v\ &Fu,v\&<tv\&G #$;&t Pm_v2PmOvtvF~t@v|tA"+NxsB"svDv|uv|u Pm Pmv\&v|u Ã&vt6šv\ &vDr Pm~v|u Pmv|u Pm PmKww.`!= = M M !!   !!!vD2šm6pơdƉDdƣpƋ6dƋDdƋ6pDf3P]胂 v~EDv~}E$tA"&ʈLvt2vDPvYvDsvtD$uT&t@vtLvtD$toP6(v{MwP6*vkMvtDt !P3PvdFFFvDvDvtD$t vDvDvttv =ujvttDF~u vDJF#y=}vDF22Pv%vDF22PvF22Pv4vttv. =u v~}}E%tA2DvO@}vt| ttt 3PvG!vDvDPv-3Pv$&PvGPv=vttv =uIvttDFv3PPv|&PvPvF@@PPPvTuvttv> =uavttD%tA2Pv&PvPvvttD%tA2PPvwPvmv>>tK6\&G<t6PvE6ƸP3PvrPv*63PPvWvttvn F~t ~tPvPvttv 3PvF&Pvvt| t@FF2Pvvttv=u*vttDFvF2PPv Cvttv=u/F2vttLtB2Rv!vv=]@~Pv~tvPPvv&Pv v3PvjP3PPvPv 3Pv3Pv SPv 3Pv Pv SPv ^&G<3Pvk Pva f^&G2Р2+‰F~u UPv: HPv- Pv# ~v$Pv _Pv Pv FָSPv Pv Pv vPvi SPv ]|^&G<^&GР2+HF~}~}UP^w} ~u*P^wg vP^wZ P^wM P^wP^w0 ^P^w# P^w ~~,P^w _P^w P^w NθP^w wP^w P^w ^&G #,;.tP^w P^w Pvv3P^w ]{vv\&GPFPt~uP^_w= ^P^_w- P^_w ~v6FP^_w _P^_w P^_w ĸP^_w vPP^_w, 'P^_w vPP^_w ]z~u@2~~A2+@FF]zvvF~u@FP^wP^wP^wvPU#P^w P^w tP^w ^&G#y؉FvUCP^w P^w Ft^&GPPP^w ^&GPPP^w#P^wi P^w\ tP^wO P^wB QP^w5 v3PU#P^w P^w tP^w vUrP^wP^wFt^&GPPP^w4^&GPPP^wP^w^&G-#y؉F~u@"F2vFUFP^wZP^wMFt ^&G-PPP^w^&G-PPP^w{P^wP^w]xt !P3Pv vt~E2ƖDTFV^&<t vvU vvU,^&G #t5^&G =v ^&G =u 3Pv`6^&G =uv6]tw v~}]&G =uALv~E DFPvvDv~}EUDTvFD vDv2vDPvNvDP3Pv]v%vDFvDTFV^^F^&G 0^ &v~EDvPvvIvDซPv:vD2FPv"Pvv|vGvDPvvD2v|uA2ȃDQvPv밋vt^&GPFPtvDPvPv8]u.v2FvD;2t0vD%@tFvD#0;4tFFFvD;6uFvD#0;8tFF^vD;:tFFCvD;tF;FutF.vD%@tFvD#0;@tFFXvDTFVF FuF:vD$u^&G<uFF ^&G<uFF@|vD$tFFdF]wvwwvكw ṽ wL v wvvvw,F]sF7FvD;FwvDvF~u}FF2PPFPsTF2拄;FtAFPFPF2P"PFPPFPFP~F@F<uFT] s@vDvDvDFvDvF@F=uFvDȋvFHF=u]rIvD2F~rVFvtFƖDFFFvLv~E2%Dv}t }|2䖋F~ |@|€>|u]{qvv2zvD22Pv&FuvD22Pv wvDTFV^&<uPvvvtvtFvttP3P3Pvx+) wr.33|3|303|3|3|3|3|3|3|3a3]p~ u~tFFPvkcF #y=}'~ t FF@PvDF 22Pv6.FFPv$F 22PvF 22Pv]0p>}t }|2䖋F~ |@|€>|u]odFvF DvFDvFD~ uvD~ u v2D]o^&<uO^&G %tC^&GPvFPt^&G %t3PvPvY3Pv3PvH.dFvF DvFV DTvFD] odFvD vFDv怼Ar@v怼ZwA"rv~狅2ËvË~]yndFvDvF VDTvF DvFDvFD ] +ndFvDvFDvFV DT]m ^2SdFFFvDvDvFDvFFv<t9dFFFvDvDvFD;FutvDvDvD#0;BtAvD$uB"sv~E%tA2Dv\^FvDF^&G<uvDPvttvv0gv^&GPFPtF#y=}~tvDF22PvV%vDF22Pv?F22Pv/vtD#0;DuPv PvtvdFFFvDvDvFDvtD#0Pvk2FvD FvDv Dtfv\^F^&G<u0v~u@2DPvttvvv^&GPFPtvDvD~uv~E~uA2ȈLF#y=}5~t.v~E~uA2ȈLF22Pv<wvw~vw vك wvˁw5F2FFPFPF2P"PFPPFPFP'~]Y*vDvD3Pv~u Pvmv2A6v|tEPvj6vD22PvQ6vD22Pv63Pv*&Pv@=uvD#0;ftbvD$uXPvvD%tA2Pv踋PvvD%tA2TPvPvkvDTFV^&G<u"PvtPvvvtvPvRv3PPvPv;vPPvk vtD#0;huPv PvtvvDFvtD#0Pv FPvvDv Dt/vD PPvttvv 1vD PP~u@2Pv@=ty1/wvwvw%v؁wFFv~E jD]$W3FF&tqvD$uAv| u@"ȋvD#0;luB"s4FPvvrv~E@DvnDvDFFv<t&u;Fu7t0FtFoFwvLF2P6pv!vDEvPvv"v| uFmFtFVF^F2P6rv!:v| uPvv"FtPvv PvvvSWF2䖋":FtvvvPv] S`F2拄s vvF2FPvtF2PPFPrF2怼tF2FPv1F2FPvz;Fu |#F;~tN;FtvvvPv9#F%tv3Pv vPvvvv vvvC~t@~tA"vFv"Fsvvv vvvN&]QiF%2Fá;sãÁ>u PÉFF]pQrvtDT‰&G ƒ &&G@&G-أ&G %tANvtD$tFtdPPvSPvQPvRPvVPvWPvPvuPvkPvaPvW# 4 FsEUPv=ซPv3Pv)กPvPv663Pv 1Pv߸PP3Pv(663Pv]O{&G #;tA2F&G %tANvtD$utFtPPvr߸Pvh߸_Pv^߸^PvT߸ZPvJ߸YPv@߸[Pv6߸XPv,߸Pv"߸Pv߸]PvFt PvcF~tF&G+F#u vv9FHPv&G+F22Pv&G+F22Pvދ]N~uFF2惼uFFF]N#F;uF&FF2PPFPrFFFF]2FPvx~ uqvv=uH~uF $Pv^v3Pv%PvF؋F2Pv7v3Pvv v vF2P3PvL]8H~ @rF %4F~u3F @@Pv׋F22PvFuF22PvF#y=}A~t@"ȈNFt4F =#tAF = tB"ʋF =3tB"ʈNF %ЊF2Ё€Rv9׋F %8ЋF2ЁRv׋F22PvFuFuF22Pv֋]GvFPFPv"PFPPFPFP~FHF=ttPvËF2Pvċ]3@wPv_ËF2ЋF2ЁRv@ËF2F2狅‰FPFPF2P"PF2拄PPFPFP'ЋF2拴ƒ]2vgvA~t vv&]2F%Pv‹F2 Pvl‹]2t !P3Pvġ;FuA"ˆNvtD$t|vtD$uANFt4&PvŠF2PvPvvF4Pv+F2Pvv3PPv6vF4PvaFu&PvPvPvvD22PvqvD22Pv^&PvTPvJGPv@Pv6vD22Pv%vD22PvyPvv3PPvtϋvD22PvvD22PvPvv3PPv6ϋvD22PvvD22Pv]0t !P3PvFFv<uvDTFVvtD$uANvDsN~wFtv͸Pv蹾v3PPv$;FuPtI&Pv荾Pv胾Pvy&PvoPveWPv[PvQF FtK^&<u<^&G<u1vD$t'F2PvPvvvtv蚾Pvv3PPv_̸PvڽvPPvG̋]-Pv貽F2Pv製Pv虽Pv菽3Pv膽Pv|PvrPvhP663Pv뽸PvIPv?3Pv6Pv,P663Pv诽]A-vtDFvt~}EDvtFD]-~`sF2FPv踼:F~prFvv虼v拄4ƋЋF2ЁRv|],vËED~ uÉFÉFNvtD2N;vvttFƖDމFvttFƖtޚFF]g(VFFFFFtv52FFv52F^,vvFv3PvvƋvDvv62PvPv72PUPv݃Fvv62PvPv72Pvr߃F`v~62PvUrvDv~72PvUXvD^vF2P3Pvlvt~}E#Dvt~}E#DsF2PvDPv#vt~}E#DDBws}.}}}}}}u}u}u}F}F}F}F}F}F}u}u}u}F}F}F}F}F}F}Fhvv62PU}Pv72PUnPve߃F:vv72PUOPvFvU:FvD22PvFPvP+FP3Pv-FFPvN؃FvUPv62PUPvFvvvPv62PUPvRFd PvUP^weFIvvvUbvDPvDP^w8FvtD$tlvtt6ƒ|~£ƸPvỡ;Fu*t#3PPvPv貸Pv޲Lv~}E D@H;Fuv2拄%tA"s !P3PUlv2pvD$t FPPlSvD$t FPPO6vDTFVF Ft^&G  ^ &vUvtPU)ڈFv|u@Fv|u@Fv2FPU%vDËvtvrv~E DvÉD}wPvtvtUOv]ZvtUhÃ>t> t>ÀuvFtpvt<u-vtDv2FPUzvtlvttN>tGFtAPUŨ##,ã,Ëv2FPU# ,ã,$ vtDFvDFt~v@F ~v@FvtU㙣Ã>tN>tGFtAPU*##,ã,Ëv2FPU# ,ã, p vD$u5MFvFDv2FPUvPUG . PvtvUZ-  vD vD v|u vttU谹PU苞vtt3P3QPU. PUi&PUaPvttt3PU vu66¸PU裛66¸PU葛Pvtt3PU U.&<uU莹&<uU襣P663PU͙&GHHƒ&lv~]D&v\&G"t,&G (à &&G *à &PvttvtULUpUָ66U&GHHƒ&P663PUPbPu£rƋvDãtƋvDvƋvDxƒzƹ LzƘzPz2-P PzPP P&G2F~r)6Ë>Ã&zơ@H;Fuv|t@Pvt3PUǗvtt3PPvtUv|u@v|uA"Fv|u@v|uA"Fv|u@v|uA"Fv|u@v|uA"F6FvDv;DujvtLPvtvvtU=tvtvD$tAQU蚯&tjP6,U: P3PU诘vtDv|w@FvD$tAv|t@"ȋv| t@"ȋv| t@"ȈNvDFt3v2FPU݋vt~}E.#D>%vtvt~EDv =)Z))3))333,|)63Ґ3333 333Փ)))ۜ)))333))))8888)))))))))))33ZZZZ ϑٝٝß))))dd))))))33x)CYʕkk33ɖɖ66))$Ӛ)))))))))))3b))))3XXXX))v2FPU^6惼u6拴ƒ|urzPzP6Ú"P6拄PPzPZP6拴ƒ6DŽ6Ƅ6惼t_zPzP6Ú"P6拌ÃQQzQZQ6拴Ã6DŽ@=tUv2PP4PrYvt@ơƣVHơ;FsV1V@@FF6VFFV;Fv +FH6VgV@@VX;VuO>uFD>t6ƚ3XV>u F@@PmX;VuTVF]UPvF~s~u-F]UP-]*FFHF~|,FvvD2F~vFF@FH;Fuك~uF +FFF]0*ƖFDƋ]*ƖFDƋ])ƉFF2PvF2PvF66v PvHF~|%F6ƋFHPF@FH;Fu]l)66vPv"HF~|%F6ƋFHPF@FH;Fu,>~v])v2F~|%Fvv22PvF@FH;Fu](F2PvF2Pvs](~wF2PvV#F2Pv@F%2Pv1][(vƉDvDPvuvDv]"(>~vPv3Pv;3Pv6tvJƉF~|:Fv6tvv6tvF@FH;Fuv:]'P0FvFVTvDv <u Fv  v 4FDFv ] ='P0FvFVTv~ DFv ]'v 22Pvvv v~ u0P0F .P0FFFFvv~~ F@F=%uvF D&vFD(vFD,~ uvD.vƉD*FƋ] _&Pv 3PvP0FFFv\,2rƉFFƸ@PvvƉFFƸHPv"ljFFƸHPvFHPvtƉFFƸHPvFFƸTPvosFDPv^bFXPvMFKvt.DFHPv/FƋvt.FD !w2.Vhvv_vt&vxv\,266vdH6vX }$6 ǀz u6 Nj> Njzƈ  ǡ Ǣơ @@P^w] 2P^w$PP^w^w]#P^w3P^w t3P^w P^wvtt;u-#t PDP^w PPP^wmCvtt[u-#t PdP^w= PpP^w*^wP^w3P^wF3P^wP^w"tRvtt}uPP^w'vttuPP^wPvttuPP^wm'vttu PP^wD^w]7",P^w3P^wWvD uyPPvDPP3P^wvD6 Ƅ_6 ƄC6 ƄO6 ƄD6 ƄE$PPvDP3PP^wvD%PPvDP3PP^wmvDPPvDPP3P^wHvDNjvDPPvDP3PP^wvD>t.PPvDPP3P^wvDNjvD>uƣƃ>u~ھ6\&GFڊF2Fԃ~|+Fv؋~؃6\&v؈BڋF@FH;Fuڸ$PFPvDP3P P^wQvD6ơƉD.6ƋbPPvDP3PP^wvDPPvDP3PP^wvDPPvDP3PP^wvDPPvDP3PP^wvDPPvDPP3P^w~vDPPvDP3PP^wYvD twP"PvDPP3P^w-vD6 Ƅ_6 ƄC6 ƄO6 ƄD6 ƄE$PPvDP3PP^wvD3P(PvDPP3P^wvDNjvDP*PvDPP3P^w^w*]ƉFF~t&v|(uvv^wFvD*Fԋ]=P^w3P^w]vDP^wrƉF~tKv4D,2PP2Pr;FuP^wvt^w&vDF믋^wT] U%U"vD T FVF Fu^&<u^&G #4;6uQ^&<u5^&G #8;:uPvvvPvvvPvvv%^&G #<;>uPFPvvvY^&<t^&G %u^&G #@;Bt^&G #D;Ft^&G #H;JtP0FFFvFVDTv^&G Dv"ljD^&G %u^"&"^&G %t.vƉFƋvƉDvƉD ;^&G %tvƉDFvƉDFƋvvD ^&G&WFV2U~U2Up].~t=v&<u'v&G #L;NuljF 6ƋDF 6ƋDFF~uP^w3P^ww3P^wv؋^w~uEv^ԌF֋v&<uv~ڹ Lv~ڹ LF2FF=|F#tZF@2P^wu_P^whFF҃~|/FvB26Ƌ22P^w:F@FH;FuAF2P^wFF҃~|&FvB22P^wF@FH;Fu^&<u^&GP^w=^&GP^w*P^wvDF^woFub]6Uƣƃ>t.6ƋD Ƌ6ƋD ǃ>t6U6Ƌ6U]eF=|v>uPv 3Pvp#tSF@2Pv_PvFF~|.Fvv 26Ƌ22PvF@FH;Fu=F2PvFF~|%Fvv 22PvxF@FH;FuPva$Njv$Nj]*Fv怼Ar@v怼ZwA"sPv拄âNjv拄âNjv拄âNjv拄âǸPPFPvF@F=twƉF~tgFF֋v&<uv~ڹ Lv~ڹ LFPF2PFPv-vF&vDF듃>tv]f,^^֌FF >~vzPv 3Pvq3Pv6tv^~ڹ LF2FF2PvFFԃ~|#FvB22PvF@FH;Fu^&GPv6v^&G #P;RtF@F2Pv`3Pv3PvNv]r>~v|Pv&Pvv]@ƉFFPv3Pv\~tHv4D,2PPTPr!vvvtvJvFDFvDF벸DPvPvv[]>*t*:Ft*LjF,:Fu >*u>~vPv=3Pv~ u 6 v*ƉFv4D,:Ft vDFvtv6v\F,ǃ>uPv3Pv3Pv]FF =|v~vv ]vvNj]FFu~ vFF6ƋF@P6,vF FF2PvPF2PvDFtFFP~uFFtF FF F2FF2PvFu7~ wF 2Pv#F 2PvF %2Pv~tF2PvF2Pv]ƣƃ>uƉFǣNjvDǡ(;t,Pv3Pv3Pv3PPQ6t P3Pv3Pvc3PvZǣ(ǡǣNj6Ƌtƣƃ>uƉFǣNjvDǡ(;t,Pv3PP Pv\&GPP3Pv3Pv3Pv3Pv3Pvǣ(ǡǣNj6ƋDl]l76rƸPPP6rƸPPPPWP2PPPkP2PPPoP76tƸPPP6tƸPPPPqP2PPPP2PPPP76vƸPPP6vƸPPPPP2PPPP2PPPP7ƣƃ>u.6ƋDFǾǣ ǃ> t3+v 30ǡ 3 ǃ> t@2FƸ+FF ~} Nj6 Nj~LjF ǢǸPP2PPPP6ǸPPP6ǸPPP2PPPP2PPPP76Ƌ>~vU>tv縊PviPv3PvV]6P06ƸP3P6Ƹ`PvP3PPbPPP P3PPP0ƸP0Ƹ P0ǸP0ƸP0UBFF226ƋFF@F=uFAF226ƋF F@F=[uฎPUlPU3PU{PUU3PUNUv v Uv v UU"UFFt bP.P4F.Njv̋\2x PU{6Ƌv̋2@PPU'v̋2HFʃ~|"Fvv̋D$PU&F@FH;Fuu PU(6ƸPPUPPP6ƋD2P3P3PUv̋D Njṽ|ux ǡ 2PU NJ2PU ǣNjv̋DNjv̋Dsxǡ;t,PU6Ƌv̋D@PPU?v̋DHFʃ~|$Fvv̋D22PU~Ua㸢PU3PUv̋D ǸbP.P4>u`>/u,6tU>/u,6tU0ǣ6U6 Uǣ 3PUz⡰ƣ&3PU>/t>/u5v̋DHFʃ~|$Fvv̋D22PU/F@FH;Fu>/t>+ ǣ ǡ&Ɩ LjDUk,ǣM ṽ|u ǣ*-ṽ|u*ṽ|u*ǣNjv̋D PU6ƸPPUkv\&GFv̋DsF؉FF2PUgF2PU[ PUj6ƸPPUv\&<uv\&GPvtFPtF#v\&G %tF v\&GFv\&G %t@v\&GFP3PQ6tP3PUF2PUF2PUv\&<uAv\&G %tB"sSv\&G % tPPP6ƋD2P3P3PUdv\&G2PU;v\&G2PU(v\&G %uv\&<udv̋DF~t#P3PPv\&GPPvU!P3PPv\&GPP3PU3PU3PUv\&G %tJv\&G2PUv\&G2PUov\&G2PU^v\&G2PUK:3PP Pv\&GPP3PUC3PU$3PU3PU3PUv\&G %uv\&<uZFF~}/PPP6ƋD2P3PvtUv\&GFPPP6ƋD2P3P3PU3PQ Q6ƋD2P3P3PUF2PUjF2PU^v\&<t3PUJ3PUCv\&G %tF3PQ Q6ƋD2P3P3PU*F2PUF2PU3PU3PUFFv\&<tNṽ|uF+HHF3PQQ6ƋD2P3P3PUF2PUF2PUh~}/PPP6ƋD2P3PvtU|v\&GFPPP6ƋD2P3P3PUPF2PU.F2PU"~PU16ƸPPU3PP Pv̋D264P3PU3PU3PU3PU3PU# PUvtvFṽ|u46ƸPPUmv̋D2PUF+HFF2PUpu6ƸPPU9v́|t1v̋D%s ṽDvDv̋D2PU+PU#PUF+HHFF2PUF2PUUPU6ƸPPUvtvFṽ|u'3PQQ6ƋD2P3P3PUFF F+HHFF2PUF2PU~vtvFv̋DsǣNjv̋D ǸPUcPUY6ƸPPU v\&G Fṽ|u@v̋ЋD4"sF+HHF%3PQQ6ƋD2P3P3PUFFF2PUF2PUv̋Dsǣv\&G Fv̋Dɋv̋Dɋṽ|u6>2uUƋ66Ƌ~̋ED66ơljDǣ+ǣNjvttUUv,u+ǣNjvttUcUSv v UOFI>t@>~UGڸPP@PU-PPDPUPPBPU >v̀|uBPU6ƸPPU]3PPP6BǸP3PUPUcPU[cPUj6ƸPPUv̀|u96ƸPPU3PPP6DǸP3PU(PU&PU/6ƸPPU3PPP6@ǸP3PU츛PUv̋DFUv̀|!v̋Dh22PUv̀|u v̋Dh22PUnwv̀|u@v̀|uA sv̋DhPU9Bv̋Dyv̋ЋDh2Ћv̋D$2RURPws.)G__p )$))%)^&%'M&/'%' ''''))'>~Ut bPu bP6ƚu6ƚ&Ƌ4LƋ4LƋ4LNj4L]]^. FFU+r;.\wVUF;FvFFFFF]UFvvF@F= uFFFvv~^&F@FH;FuF FFvv~~~^& F@FH;Fu؋F]UFvvF@F= uFFFvv~^&F@FH;FuF FFvv~~~^& "F@FH;Fu֋F]U Fvv FFFFv^ &v^&:tFF@FH;FuًF@FFFF;Fr$FFv^ &"tFF@FH;FuF@FF FF;Fr$FFv^&"tFF@FH;FuF] UFvvF@F= u]Uvv~~~ <]U^ &^&:uBVFt?^ &2F~r.Fv^ &v^&:tF F@FH;Fu׋F]Uvv:uANFt:v2F~r*Fvvvv:tF F@FH;FuۋF]UPEPv 2PF @P7t -]UPVPZP3P%]UPrP[P3P%]U=PP\P3P%]UFF]U PP3PP%]UPP3PP%]U]U]U]U]U]U]U]U]U]U]U]U]U]U]U]U]Ut]U]UP-]UP-]UPFXX\-]UPFFF^^F^&;TvI^T&FP0F3ҋFvv FV^&3+FV| t F^&^&#t<^&PvFPF~uFFFFT+FH^&FT~uFFF-F]UP^S]F-F]U P^^FT;FvW~s@>TvA"sFvvFP#u!FFFFT+FH^&FTQF+XF~v@F~s ~vFF;Fv XFFH^&FXX\-]UP-]Uv<uv4Dsv4DvPhv4D v4L$v4 L4"ȋv4|u@"ȋv4|u@"svP&vP PvPuv4Dv[]UFPU?HPU7]U]U]Uvv]U*v|uv\2< PPT PPE PP6 P P' wr.7FddFFFUFFFPPv(PFPF֊F2PFP P%Pvt(PFPPF2PFP7-]UǾ3~ t4+6ǹ F 30NjF 3F ~ t@2ơ;F|ljFF@PF+P P+PF+@FP6ǚvF]UǾ9~ tLF %0ǀ>9v 2Ǿ+6ǠLjNjF F ~ t@2뮡;F|ljFF@PF+P0P+PF+@FP6ǚvF]U]Uv FD v FD v Dv ]UvDvF4D%vDvDvDvFDvFDvD!vF D vFD vvv vvvD] Uu>P06ǸPPP6Ǹ`PPPP3P6ǚ&6D6ǚ6Ǹ P6ǚ]Uu>P06ǸPPP6Ǹ`PPPP3P6vvY6NjD"6D6ǚ]Uv v t vvv D"v ;D tAv |u@"ȋv D%4"sv Dv DWv ]Uv Dv v t vvYv ~ E Dv D"v ;D tAv |u@"ȋv D%4"sv Dv DWv v &v ]U]U]Ft6ֹ6عbP]^P]LFЋv #v F#Fv v ]"~ u;~ t~ u'~ u!v Pv Tv F &jv2䣶ɡ@ɋv 6ɚv Tv F &~ uvv S@P!vv S@P!]dFF;Ft1~t@~tA"~tA"~tA"FF]vDFvDF~v vFDvFD]FFv2svt<t@vt<tA"s vtvttD)t6ɋ>ɋE D6vrwvw}wuv݃wewcw[wMwK wu w; w3UvVvWvvwwvw]vɠ2拄%=t->u>t>uvtDɃ>}vɉD]Iv2v\&G %tANv\&G %tANFtFPFvDTɉ&<u1&G<t%&G<t&G #@;BuANFv2拄%F~r0FFtvvtB"FFF@FH;FuՊFFCwvw0w(vw"wywwF]>uvP0vɋv6ɋDɋ~=pɹ v4ɉDvɋ]P66ɋFD6DɉFF]f>t8ɣɋ6ɋDɃ>d| ɋ4L6ɡɉDɣFt">tɣɋ6ɋDɾɋ4Lދ]:vPPP PEP PQP2PP6ɸPFPP6ɸPFPP P_PF2PFPPiPF2PFP PEPPkP: PEP7 PEP PmP2PP P{PF2PFPPPF2PFP PEPPP7 PEP^PPPP(PP(PP/PP/PPo$PP$PPS1P%P1P%P72PWP2PWPwN.!>Zv PEP: PEP7P PPv3P%]|7 PP7]\~s@tF #yأF v>w;sv~ }t v؋v;ɹuANF] Fv2拄%Fv2拄%FF;FtPFHF~|?FFu9"vvtvvtFF@FH;FuFuvv:tv<uXvD$ tv~EDvD v;D uAvDv;DuB"ʋvDv:DuB"ʈNv2PPQsgvDv;DuAvDv;DuB"ʋvD v;D uB"ʋvDv;DuB"ʋvDv:DuB"ʈNFFFFFF]2 vtP6*6ɋ~EDvɉD] FFvt<+u@vt<,uA rJvttBvttFB"Fr!P6ɋ~6D6ɋ~}ED6ɋ~ED6ɋ~E D ɣɋvvDvt<tvttvt P/sqvt|uvtɉDvt#y؉Dv!>}-PɉF6 6ɋFD6ɋ~E Dvt<tvt|u Pmvttvt P/sQvt#y؉Dv">}-PɉF6 6ɋFD6ɋ~E DZvt<u8vttvt P/s>~vvtDvt<uvt|uvDFvvDɋ6ɀ<-r 6ɀ<0v6ɀ<=rm6ɀ<@wdv>ɋ2䗋/Ɉv~E>ɋM Dv~EDv>ɋE D v>ɋEDv>ɋED)6ɀ<*uvsv>ɋEDvR&vt<u@vL်tB"s.vt|u"vtvtDvDFvjtw v wCw;vރwvуwvăwww v!wN"wF)v*wWvXw_wu`wgwehwOiwGrwMswtwF]FFvtDvt;DvDɋv~EDvɉDv<9r@v<<wA"svD ɋv~ED vɉDv2拄%@uv~E4D]sv:uFvD$tFFF]=FF^NvɈv~E2%DEvɈv~E2%D*vɈv~E D~.^y]FFFFvɠɢɋv2拄%u#v2䖃拄%t 2 2Hɋvt:ɹuAvt:ɺuB ʋvt| t@"ȋvt| t@"rv~uvFɢɋvDɋv>ɋED6ɋ~EDvɉDvɘ%PvtɘyyPcvt:ɹtAvt:ɺtB"s vMvttDvt;D}Avt| t@"ȋvt| t@"rv~uvFɢɋvDɋv~}EDvtɉDvD ɋv~}E D vtɉD vɘyyP_vtɘ%PNF]}FFv2拄%@uAv2拄%uB"ʋv| u@ ȋv| u@ sv vKFF]]^. FFU+r;.\wVU]U&PP"P/  uZ"6&&@<>t&;v ^ &&"&&;v^ &>A&&&^ &^ &^ 6&8vNFYv6&^ &] U,PQPQ*P( tP*]UdFFPP PFNQPPPvPPF tP]UdFFPP PFNQPPPvPPF tP]Uv ~&*u Gtw]UF3F]U]XX[PS.4U]ʗ;u;u t=؋™ʇؙU3]Ëѽ u u u u փMU3ɋٽ u u Ԇ u x|-;r+@|;rw;r+@] x у z  UVWv~ y 3 y փ u u  u#rrx y _^]_^]UVWQSv~[Y_^]UVWQSv~ы[Y_^]U]XX[PS.0U^F FFF Gp@] UVF v v ^Wp@] U>t tؚhhtʁ Žм``&Z.Z+J@DFHTVX\d3^b`i>t(U]U]UÎێF~r3]U^^H]UÎێF~t3]U^Ӌ^~ vn &FE< t<t &C3 2ڋ+щ] UF nnFp~t@]sގUF FnFp~t@]UF^&]UF؋v F ~Ns] UF fnFr@]UF FnFr@]U^v;Fu;v;s NOtIs]U]Rt.RMMX][YZQSXU]wU]U]U]U]nU]U]UF ~ NFs]Uv ;vwvN ,r3];>Tr;>Xs E;vA؎U]>Ju!܋_ݍFJGL_NPU]F;JrJU؎v ~NNO]U]X>Ju[X&J.LNP&ZU]XX[PSGU]XX[PS'U]XX[PS7U]XX[PSZX++;&\rÎPRRPPU؎v ~Ns]U؎~ NFs]UF؋v F ~NNO] U~F ؋v Ns]U~F v Ns]UF^ GFG]UQ~ u1^&?tq`PPdF t t<t7:^&π~ u ^&?t(`Pv dF ttu tF~ u ^&?t&]UQPF tPj t H؀n ujj9F vF n~N ljF ]U^ GFĿWt4~Wwv + F t<= u^ GG$~ u^ G"G%^ GGFG F ^ G"]UQQ^ ĿW~Wv G"PLF t);u^ "uO%F^ GGG]UQQlj^SFPF ttu)>jtZF >jrF< t<t<t 4뷋F6vjPF u"F<t<t< tjnj< uƸ]UQ^tĿW^S1>ju%j;lw^ ln^l]U^ G!G%sG"5^ uPv ^S^ G rPv ^S^ u)j;lu ĿWF t^ GG^FF ;Fw^ PFPF t?;u$^ G$s ~u O%^ G$F^ $^ GGFG>~ u^ G$FG"&F< t^v&Ft^ G$NO"]UQ`PF]UQQ`P^Sv FPZLF tP]UQ`P PdF tP]UQQ^ G!G$uiGFĿWt4~Wwv ^ G t%= uG$GG ^ GG^ WF ^ G"G;G uKG$E^ ĿW~Wv G"PZL^ G t tu t^ GGG]U^G!G$8GtN^tE^G s;^ĿW Pd^G t tu t^GGG]U^G!8GtF~+us^ğ^F&G F:t:t :Yt:QuF Q^ĿWFP$F u^ĿWPPFPZLFFF~1uF F ~u^ĿWvdF~0u~u^ĿWvdFF t#tu t^GGFG ^G$]U^G(PEPw&t^G(P=Pw&u]UQ^`vGDG$D$GDO%D%]U^ sFF^uhPG(Pw&FPPmmPF PPw TF u*^PbwP7F t^PTF^GsG sFtm FrmFwm^PG(Pw&FPPvF PPF u^^^G F:Vt:kt:t:Qt :Yt:u ^G[F:Rt:SuL^PF u7^PG(Pw&FPPmmPF PPFF^G t(=u GG ^GG^GF.^GG$GsG%^G%]U^Gsmu ĿWT8^t!Grğ^F&G &W"&G&W^ĿWFF t^GGG ^G]UvuFFP^G(Pw&FPPmmPF uvF t^GGG]U^&u]UF ^GG&]U^Gs8( ^G&u VWVWRP]_^P(_^v u tLV66VF u t VF&&W&;u;u9rVW6RP*_^ t'VW6RP*_^ t33&W&G؃QS&_XZ&W& &_&&W&>u>u&W&(&W&&W&&W&VRPe]_^VWUv J]_^VWU~ u~ tn V F tP`PPD^ &t^ &3]_^VWUv^ &W&GVF^&t^&W&VF^&uF^ &W&G9Vu9Fu^&W&^ &W&G^&W&^&W&VF^&?+~Njփ;ro;v7ƋN^؃N^^&W&^&W&VF^&W&VF^ &W&G^&^ &W&G6^&W&%VF^ &W&G9Vt9Ft33]_^VWU>uRP]P(]_^VWU~ u~ tn V F u ^ &uPwPPD^ &t^ &3]_^UF>pt=t P  t]U~u]U^SP, u].s].]U^SP, u].s].]U^S!P, u].s].]U^S#P, u].s].]U^S%P, u].s].]U^ S)P, u].s].] U^ S*P, u].s].]U^S7P, u]. s].]U^ S8P, u].s]. ] U].)U].-U].1U].5U].9U].=^&G &w8 F^&G:t P)FF~eF =wmtAN=smt=pmu'^S^Sv^Svv ^Sv0F =rmt=tmuFrmF =wmt =mmt=amuFmm iFP^Sv^SvvF=t=uB^S^Sv^Svv ^SvFt !t= uFFa~uv~mmuo^Sv^Sv^&w&&w$F=u^Sv^SvjhF~u FP^Sv^SvvFFF t^G:P(F uM^&w:FPl uF FuF^&G8#;u8 uhjP/ F tf& r 9FvFF1F1F1F;s ^Sh %F^&GZ&WvF&MX&E&uF+ƹ1&EFF&Z&U&E$<&E&FYs߸&G&G<~ tmuv^S^GPvj^GPjFF usF =rmt=tmu^&G &G 5^&G&G~ mmuA&O FV,^&G FF^Svv$F t ^SPmUVnjޱ;u$:u ^&G( ~F =rmt =tmt V^&G ]^&^ &&W^&G :Vt WFP5F uCf~uF1~uF$^G^ &Z&W^&F^&GFU2~F =amt=wmt=rmt=tmt =mmt&^&G F^&Z&WF^&G]U^&^&G :t ^&GN ^&]U^&^ &&W^&G :t ] vFP,F uqv~N^Y~u ЉFVsjjj ^SvN,F,jjFP/ F uF^&G Z&W F&GF^SvDFv ^&G :AtSv^ S^SgL<^SFPF u'^Sv^ S^SgLFA^&G F^ &&W^&^&O :(v^&zVnjޱ;u$:u0r)P@PjRPQhrmRPQF u(^&G :u pFF^SLu ^&G s<&G s4~u ^&"^&G ^G ^ &Z&W^&}^&G&;Gr$Sv^ S^S9F uX^&?uL^&G&O+;FsFF^&^&FFv&t^^ &Z&W^F&G FFN F;vP~uJ^S+QFPFPLF t tu.^ v8vNFYFF릋F^&F^&G :AtRS^ Sv ^SLF|sm`Vnjޱ;u$:uH^SF9^SFPF u'^S^ Sv ^SLFA^&G F ^&^&O :(v ^&`Vnjޱ;u$:u7zr0|r)`PEPjRPQhwmRPQF u(^&G :u tFF^SLu FFN F;w~t^&W&;WrS^ R+QFPFT^&G&+GFV N+;sV^&FF^ v0~&}^9N^Y^F&GFFcF^&FU^&G :(v ]U^&G :(v ^&G ]U^&]U^&]U]U^& t^&G :u &G& u]^Ss \FFFvPFF uAF s 5FFwJZ:sz*ʈJFuF=rmt =mmtKFP^Sv^SvvF=uW~mmuPF~&] ~&] Y]&FFF=F\FzFFFFFF2FQF 1F1FF1Vu FFmFm1FF1VF1F ;vNvB;FvNFF^&F 1^&W^&8Os&vF+B@^&GF1^&WF <1^&WF 1F1^&WF 1º PF1Y^&GU^ &G 33&:t :.(t$C^Y tt &^&] ]U^&G :(w):up&G t&G uF&G &G 3  ]U^&G uP  u>t&G>u]ð]UQQP<P$ uJF6P u8=u0P$ u!F6P u=t=!t3]^ &G :]uSvvl^ &G :AtWSvvn,^ &G ^ SvvFNs=u8^ SFP~u#A^ &G ^ &dt@Fs률A^ &G F,^ &G :(r^ &G :tw&G 9Fu9Fu^ &G&WFV^ &G&W;Vu;Fw3&G^ &O^ &O^ &O&W;Vu;Ns+^ &r &G&;Gwe^ &G &W"N~;u;wL&wщFVN;u;s&+O &"N։~؋F^ &G-sSF u^ &G-sG<PFP|F^ &G-FVFVF%Ff^ &G^ &G^ &GNV^ &O &W"^ SPFPFPF u4F^ &G^ &G :,t :t^ SjlF t^ &G&G &W"FV&9Wu&9Gw&G&W9Fu9Fu^ &G&WFV^ &G&9G*s&G*^ &FF^ &G@1&@FތFF^ FV&9W"u&9G v&G*H1Fܺ&G &W"N~;u;r_F&+O &"N։~؋F։F&O,r&9G*sSlF tF^ &G^ &G*&;G(uF&G(F^ &G* ^ F&9G*s&G*^ F&9G(v&G(Fr^ Sj$$F u^ SlF uy^ &G ts&w8&SP^ &w"&w G<P^ &w: |F t@^ &G-^ &G &W"&G4&W6^ &G&G.^ &F&G0Z&W2~Yt^ &G@1&W^ &w&@F&Z&W^ &GN^ &O^ &OF~+&G &"^ &G&G(^ &G&G*^ &G,^ &Yti&w8&Sh^ &w"&w FP#Fu^ &?^ &G,(~t^ &G&GF^ &G :t ^&FF^&G &W"&O*&;Wu&;GrI1&G^&G*1 uSj$$F u`^&G@1&@FF^&G*1&G &W"FV&w8^SQRPFP#FtK uX^&G*1V+^0^~&}*9^Y^&G*H13^Sj$F u/v&|*&L+^9 ^&G*&G^&G,^ &G :]uS^SzlO^ &G :At S^S<6^ &du,^ &G ^ S^SFA^ &G FU^&G :(r^&G :,t:u^&G&G &W"^&&Wc^&G :uX&r&G&;Gv &G&W^&G&G &W"^&&W^&G s7&G s/^&/&_!^&G :u^&&G ]^&^ &&W^&G :t ^SF uk^&G;s]@1V&G&G &"F~&w8&XSv^&pWPG<P^&w:|F t@^&G-F^&GFrF@1V^&G&G &W"FV&G-sG<PFP|F^&G-3^&w8v&XSv^&pvvFP#FNVF׉NV~u t%^&9Wu&9Or&O&WFF t ^&Gv^&@F&Z&W^&GFV^&G &W"^&G&W;Vu;FYvF&GF^&G8^&G^&G&W&+G &W"FVF&G^&uFF~6F =wmt =mmt=amu dF =rmt=tmuF smhFPjFt;v ^Sv^SvFPF t=c=u ~W=t~6FV^&G&WFF&Z&WF1&G&G;YsF^Sv^GPjFPF ui^&G(&W*&G&W~ tmu)&w&w^Sv^S^GPF uA]^&G &G Sjj$F u^&G &w&wFFUFPv v ^Sj؎F&G P+ ] ^Ss x^&G FNN;v \^SvvjF uC^&GF&_^F&xw !vv^0~ N^YUFPv v ^Sj؎F&G P ] ^Ss *^&$mmt^&G FNN;v ^SvvhF u^&GFF^&GFF^8v NFY^v&@F<sF~uFFF^v&@vvNF^&^&G"s&G#^SF u ^ Ss P^ &$mmt^ SvvjF uh^ &GF&O N&_^F&xs ?^v&@vvN^&^ &G"s&G#^ SF u^ &dtZSFP$^& uV^ &du&G-sG<P^S|^&^ ShwmvvT^& u,^ &G ^&^ &Gd<tN<uShl^& uH^ SFP$^& u/^ ShrmvvT^& u^ &G ^&U].] ^&^SP$$F t^&G t~&w8&SP^&w"&w G<P^&w: |F t@^&G-^&G &W"&G4&W6^&G&G.^&F&G0Z&W2~Yt^&GFu^&G@1V&G&G &W"F^&Gv^&@F&Z&Wv^&@&G^&G*^&G(^&G^&G, ^&G :,t :t F^&G-rG<PFP|F^&G-^&G0FF^F&G4&W6Ft.H^&O.+N^v0^9^Y^&O.N^F&)G.^v^&G0Z&W2F^&.uF tuSv$F tF^&G0FF^&w8^S^&w.&w6&w4FP$FFt.H^&O.+N^v0^9^Y^&O.N^F&G4&W6^F&)G.^v^&G0Z&W2F t ^&.u%FsFr^Sh$F u^&G :,t :t ^&G&WFV&O&O &"N~;u;wN~Fs FF%$u!$FPF u ~ r$"  ujj P/ F t^&GF &8G wF X ^Fv&DF&GF&GF&GF^&GF&GF&GF&GF&G F&8G uANsNQPPF t FF^&#tF ;Fv F&O#F ;Fw FrF9F w~^ &FF^&O&@^&G^&w6 FA:r jF~uv&<tF~to~tEv&<u<^&?,t'~tv &*2 v &*.&4v &^&~tv &pascal.lib(pasmax) [sys]pascal8087.lib(intr7alt chk87 int87 int87a oemr7alt)._ Ж 0O0Oиo`P@?/  0 oP` 0", ,?6?9 Ao0JY Zcejoj0m Pp@|0}Ѐ0 %BOCF MS PASCALv PASCAL:GCODEBOCFQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H( ؘH H" X @T  ={5WTBFQQRTBFQQDEBCQQBOCFQQIENBCQQ?ENBCQQDEBCQQRTQFQQFILLCMOVELWSBFQQFERFQQERCFQQn DBWFALSETRUE ݠ3UF~u F 2-؉FF#y؉FFTRUE FALSE1 0 e0F~~F~t~u\F;F|TFv FF @Pv 2P PF~~ F+F@FF 2PFF PvF] @VdrVzENBCQQ`|UFFFFFPP Pv 2F~|nFvv F~ t~ u ~uF9~uF~u%~}~a%V$F<F<a*r F2FFvFBFF@FH;Fu~tAFt;Ff ~uF%^&F F@F=uʋF]{FzDEBCQQ`|pU F Fv 3PsJv PFPPv|u%PFP^SrvDXvDv ]V(,VGVbVRzRTBFQQl`$|;Uv PQPPv vvPP]s #V-VzWTBFQQ7`|IU]*zBOCFQQI `|tDEBE MS PASCALv PASCAL:GCODEDEBEQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H  H H X @ i ={ TRAEQQ+LNTEQQqEXTEQQEDEBEQQENTEQQ)SOVGQQSTKHQQGETHQQCSXEQQCLNEQQ DBWPQHP6F6FD6D6D]g# V&)039<zENTEQQD`|0EC6D6D4L] #&zEXTEQQE,`|qF] zLNTEQQq`|,]^. FFU+r;.wV VzDEBEQQ(`|tDENC MS PASCALv PASCAL:ECODEDENCCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H  H H X @W  ={DEDCQQDENC/ENDCQQ8SOVGQQSTKHQQFILLCFMRCQQRNDCQQEEDCQQDDECQQ DBW4~}@FFtF@Pv PF؉F~uFFFF PFPr F@Pv.PvFF~tX~ uF~~FFFFt~-u@2FF@FFFF~}FFF)~ }F FFFF@FFFE~ %VLVaVSTPP LN J N~Fv|0t(FPvs~u~~ FFtFFPvvvvvvvFFtF;F~FvFF]ɜ VRVzENDCQQ~`|Fv 2F~rFFF2~~ = u@~~ = uA 2ƖFF@FH;Fu~r@FFt5F @Pv 2P3PFPF%AuAN^vF]ṀV zDEDCQQ`%|,/]^. FFU+r;.wVT VzDENC/(`|./0123D5U6n7r9u;|<=>?@BCDEHJ-K9O9QZR`ShTnUvVvxy} &&tDIOF MS PASCALv PASCAL:GCODEDIOFQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPݘD T H H H" X @  ={!WTDFQQDIOFQQRTDFQQtQSOVGQQSTKHQQENDCQQERTEQQDEDCQQRTQFQQBRTEQQWSBFQQFERFQQERCFQQל DBW$ H"PF Fv 3PsRvDv PFPPvރ|u%PFP^SrvD\vDv ] VV 7;VVVqV vV.zRTDFQQ`|ScPvPQPPv vvPP]A V6V@VEVzWTDFQQO``|:P]^. FFU+r;.wV[ VV&,V*zDIOFQQ6`=|tERRE MS PASCALv PASCAL:GCODEERREQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPјD T H H Hc X @8 ٚ ={ERREQQEMSEQQYERTEQQBRTEQQENDXQQPLYUQQPTYUQQREPEQQRECEQQREFEQQRESEQQCLNEQQCSXEQQ DBW 0000 0Uvv]V)zPUTMES O| U>0 ? Error: Error Codeu& , Status .v#u~ ~ F~t8vF360Rvz9vv~C2BF36FFHFuPFE 4] 0 Line RPve] zPUTWOR |%U P PPU>m VV 8 In  > Of Pv 2PF @PU- PPU vU(~t P'PU vUV$:C DPC = J:; SS =e T, FP = \, SP = >tq>tP1PU 6UP9PU6tD2P6DPUP?PU642P6@PUx>tzPEPUZ6UkPKPUF6UWPMPU2^FÓPU8PUPU6U$P]PU6U]}gV  #) 4= J \e p {Vā ĈđĚĥĮĹ ؍ VVVPzEMSEQQ}`|UP] VVzERREQQ`|t filfalt MS PASCALv PASCAL:GCODEFILFQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPޘD T H,  ɘH H X @o  ={SINPFQQOUTFQQPBAFQQ PBCFQQ" PBFFQQ$ PBLFQQ& PPAFQQ( PPLFQQ* ]WSBFQQDPTUFQQGTUFQQERCFQQINIFQQQNEWFQQPPMFQQA PPEFQQ RESFQQ REWFQQe ASSFQQCLOFQQCLDFQQGETFQQPUTFQQ BUFFQQ*SEKFQQ SENFQQ EOFFQQEOLFQQXRTLFQQ WTLFQQ& WTPFQQ FILFQQ4FERFQQPADFQQʌNEWFQQGETHQQERTEQQEOFFQQBRTEQQCFNUQQTY2UQQTTYUQQMOVELEMSEQQHDRFQQPPMUQQTFNUQQNEWUQQBUFUQQPFNUQQGFNUQQPTYUQQGTYUQQSEKUQQPCCUQQPERUQQPUTUQQGETUQQCLDUQQCLSUQQOPNUQQOUTUQQINPUQQn DBW  error in file Hard data@ Device nameP Operation;` File systemp Device offlineo Lost fileZ File namek Device fullu Unknown device File not foundE Protected file File in uset File not open Data format Line too longYUvDrFt vwv|u@v"D vЋD$4"ЋvD4"s6v|uvv~E +DPv#u v Pvrvv|uvDvDvF;Ftv~ED vDvDvvDv]#Vk\sṼV̋V̗Vļ ؆ \zCLTFQQ ~|UPv|u vF4Dv|u@Р$ 4"ssvDrvDNvD XvD:FuvDPvD( VB[hV mz̀V ą̩VV V^zFERFQQ`|>UF;FtvD;Ft vDFFFF]   zFINDLI: |Uv~EDvD$vDvDvDvDvD!vDvrvDvvv~EDv~}u@DvDsvDF]fMV`V hVę Ģ zOPNFQQ |BU Pv v vvv D$v ЋD 4 s=v D+ VVѠ 4Qv D s v t v |tv Dv Dv D v D"v D]CVzGTUFQQ`|UP~wFFFF;FwAv|u@"s"FvPPvD"vD뿋F%F~v@v|uA"svvPvD"vD]Ҝ VV[VĚ̟V̰VGzPADFQQ`u|wU Pv |u"v DF v ;D vv DWv Dv v vvF v Dv |u@FF]Z VHVfVzPTUFQQs`|hDU PvPs1Ftvv 2PF @PvFLDvDv]  V\8\U\ZVzWSBFQQDd`|U Pv Dsv DLv DDv ~ u@^& ɺuB"ˆDv Ds v v v ^Sv ]Y VYV kVs\xVzASSFQQ` |*UPv|udvDsKvD!rvvD v"DvЋD4"svPvDPvDvDMvDv]W V1Va\́\̆VzBUFFQQ*`|)UPvP-]̜ VVzCLDFQQ%`g|+UPvvt]A VVzCLOFQQ'`5|VUPvDrvDQvDv*vD%FvF] V/\@\EVzEOFFQQR`|BXUPv3PrvvD$FF] V\#\1VBzEOLFQQX>`|UPv|tvDrvDRvDv|u@vЋD4"svDvD%vDrvDTvD}vD%svDSvDbvD rvvt vDP@vDs vD-vPvDPvD%svDSvDv] V̶\\\VzGETFQQ`|rUPv Dv Dv Dv Dv Dv Dv FD v Dv v FD v ]ߜ V_VdV zNEWFQQn`|( UP$ t 4L$ ! V": 7 ]ٜV8zPPEFQQ .`|A UP$ uP & $ F( F* & ;" w_vvP6 #u6 <t 6 2& ,vvPPP @P& " >& u@(]xS VV!%+28;?ORV \elxVā̆Vď̕VĚĞĤĮ̱VzPPMFQQA `-| UPv|tvDrvDUvDv|uvDvDsvDVvDjvD svPvDPJvvt vDPs0vv|tvDvDvDvDv]* V}\̕\̡V\VzPUTFQQ `A| UPv3P vD%vDvDvDvvDvЋD 4"Ћv|t@"svvt vDPv] Vr\z\VBzRESFQQ `|Ke UPv3PvD%vDvDvIv]s V8\=VczREWFQQe G`z|n UPv3Ps1vD$4v|uA"svPvDPϋvDv]՜ V\J\[\`VfzRTLFQQ j` | UvDrvD`vD v|tvDavDnvD4vЋD$4"s0vD svv~E +DPv|uvvDvD$v|uvvvvDv]0p\́V̧V̶\IzSEFFQQ |+ UPvv3P$] VVzSEKFQQ '`3|- UPv FPFP]Y VVzSENFQQ )`|& UPvPssv|u@vЋD$4"svv~E +DPv|uv#u v Pv|tvDvDvD" V\N\_VoV+ "& vD$vDv]\VzWTLFQQ& `@|z UPvPsCvD$rv& v|u(v|uv1PvPPv]V V\.\LVZ_\g\lVzWTPFQQ v`|QUP" $ PPPPPPPPPPPP/! 3&(!% PPF]˅ V(\-9\>FKVPX]Vchmrw}ăĈ ċď đĕĚğĤĩĮĴĺĿ ŽƆ ȎˎώVVYzINIFQQQ`|?4UPPPPPPPPP]ˣ VV".V3VZzFILFQQ4;`|t tsdraltFIDRQQFIWRQQFIERQQ3COMMONDGROUPDATACODECONST COMMONDUMMYENTR7QH=ӘH\(x8Fٚ\ILNEEQQASNEQQSINEQQEXPEQQRNPEQQSRTEQQZPREQQTUGRQQI3EX87CCHDRQQLDDRQQCNDRQQcACSRQQASDRQQATDRQQPIDRQQKCHSRQQLNDRQQ-SHDRQQTHDRQQEXDRQQ?LDSRQQCNSRQQZSNDRQQQTNDRQQuPRDRQQ ASSRQQ~ATSRQQSRDRQQPISRQQRLNSRQQ$SHSRQQTHSRQQEXSRQQ6SNSRQQHTNSRQQlPRSRQQSRSRQQ)A2DRQQA2SRQQACDRQQĈѠA @@5h!?6C ?v1d~dv "$&(*,.0!2 46W8,: <>W@BmDFJHJLNPRmTVXZ\^`/bdfh9j'lnpDrtvxSz|~ĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞ2ĠĢmĤĦĨĪĬĮ> U]8٠W  U]/ݠV U]&0|9U U]0x=T $U]8|1S -U] 8x5R 6U]@|)Q ?U]@x-P HU]H|!O QU]Hx% N ZU]ޜP| M cU]՜Px L lU]̜X| K uU]ÜXx J ~U]ú`| I U]ñ`x H U]èh|G U]ßhxF U]Öp|E U]ÍpxD U]ÄxqC U]{xuB U]r|ѠA U]ixՠ@ U]`|ɠ? U]Wx͠> U]N|= U]ExŠ< U]%FR; U]FR:U]Ҡ9 U]ÒFR8U] t؛n F F F 7'U]؛.ýFF)0!62U]FtuÈ tQ"5>U]FtiÈ }H#4JU]Ft] u;$3WU]FtP uLܠ%2 dU]éFR&1 mU]؛ FF>'0vU]Ft1U] u`Ô(/ U]ÅFR). U]؛× FF>*-U]Fui×+, U]gFR,+U]؛.5FFX-*U] uu&D  &\.)U] uFt u͠/( U])FR0'U]؛.FF N1& U] Õ2%U]Ft3$ U]U] tU]uÛ.ٛ~FAuӛ.V.ɛ~Ft2қћ~Ft ɛ؛^tɀќ' F & F$F'F*F-/F2F6F>FAFD)FFIFLFPFS)UFXF[F^FbFnFqFtFwF{FăFĆFĉFĘF4# U] Q/5"0U]ɀɛtX0/F FFFFFFF F(F/6!UU]tXuɛɛ~Fu2ÜU/F F &!F$F'F*F-F0F3F6F9F:SU]ɛɛћ~Vtɛ t. t tX.ٛ~FAu~Vɛ~Û 'FFF FFFFF"F)F,).F5F8F?FEGFJFMFPRFUFYFaFdFgFjFnFsFvFyF|FĀFăFćF4K;-U]Ft@um+FF  FFFF"F&< U]uÑF & =!U] # FF>>\,U]ɛ~FAuΛ.ٛ~FAt؛Ûɛ؛ËsFFF FFFFF F#F&3(F+F/F7F:F>FAFDFILORmUߠ?U] t  4 F@ U] tɛ&   FFFFAU]~^ ^nS  tÛ3Ft ɛ@u כ u Û u ɛFFF  "& ,F0 2F648F;F?FBFHS4UFXFbFeFhFlo4qFxF{F~FĂFąFČFďFĒFĕFB KU]2ˣCRU] &U~ &&Mv t&&3 y ʲs u u tvt]& ͜D"F(F;F>FCFFFOFZFaFdFnFsFvF}[DWUv&~^^ntnv]~Ftښ=3 F FF $F'F.F1F;F>FBFK& ֠E)Uv&~^^ntnv]~Ftښ2 &Uv t&&~^^n~N$ט6nvt]Lj&2 &U~v t && &&~^^n~ɐN~ɐnŊ$׊$ Ę6nvt]Lj& F FF $F'F.F1F;F>FBFK& W`iFoFsFFĆĈFċFďFĪFķFļFĿFFFFFF FFFF F%F(F,F/F^FkFpFsF|ҊtFMRC MS PASCALv PASCAL:ECODEFMRCCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUP}D T H H H X @ ' ={FMRCFMRCQQ)iSOVGQQSTKHQQFILLC! DBW,~tvDvt~uF]!zPUTCHA( Y|)FF~ } F ؉FF v|t@2~tA2ȃ~t@2N N NANv4|0tvD+F FFF#y؉F~c~@2~ ~A2ANF;FA~u@vT;V F@"F~~BFF;FNA" V"VVFuF+FF~~F@Pv PFvtU~u vF +DFF F +FFv42FF;F~FFFFF F F~|PFF~ u.PUI~u~~Nv4F+FƖ4U& N0PUN FHFu~ u.PU~vU~} -PU+PUFFF@FF;F|FF0PUFHF@;Fu~|dF02PUdFV~| F02PUi FVF02PUPvFF]V"zFMRCQQ)`y|,]^. FFU+r;.wV VzFMRC(`|tFONG MS PASCALv PASCAL:ECODEFONGCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUP{D T H H H X @ : ={NSNWQQFONGISIWQQٌaSAOGQQUAOGQQSDZGQQUDZGQQNAOGQQNDZGQQLMNGQQLDNGQQERTEQQBRTEQQZPNEQQZPIEQQ DBWUPFF~t~F~t>FF~u ~}F#yqc=u~u FFVM~tGF%sFvvq<FVFyF~~FnqF볚FV] V CV ̇V̺V zISIWQQ`^|U PFV- uF V v v qFVFFF V #y ؃q- uANF V - uANFV-| tFtXFV- tEFFFV-} FtFV- uFt F V FVFV- tFt0F V FVFV%- u FFFV- twFV%sFVv v qFV3RPFVqzFVFV-| tF V v v qGF V yFV]} V -VV gV̈́VͲVV zNSNWQQ`~|;UP]˚͜! V V VV$V)V.V3VzFONG7`|tHEAH MS PASCALv PASCAL:GCODEHEAHQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H  H H X @  ={!GETHQQ0HEAHQQqALLHQQJIERTEQQBRTEQQGHSEQQGHVEQQCUTHQQGROHQQENDHQQCURHQQBEGHQQ DBW3U F@%F;r6+;wF%ub>t@H;Fs1@@FF6FF;Fv +FH6g@@;uO> uFD>t6> u F@@P;u F] "+037;HPSW_eimpsx|ćĊďěĦĩıĹĆɆ̆І֎VV  zALLHQQ/`|E0UPvF~s~uF] V\(V/V4VzGETHQQ0A`|qUP]˷ VVzHEAHQQq`|tLIBH MS PASCALv PASCAL:GCODEMISLIBCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H H H X @  ={MTICSsDATEWTIME;FREECTMEMAVLERELEASMISLIBMARKAS FILLCENDHQQCURHQQBEGHQQ DBW"UvvD] zMARKAS`)|*UvvvD]Q 0zRELEAS&`|7EUFF;FsF+FFF]/ zMEMAVLE3`|/xUv~MD3vDvD]zCOUNTFx+ |UFFFF~ul;FvAvFF%F@@FF%s~t FF@FFHFUkUeFF;Fs F+FUFF]J$zĆzFREECT`| ;Uvv P]oV*zTIME;`| WUvv P]SV*zDATEW`y|sUFF]!zTICSs`Q|U]zMISLIB `|tLIOF MS PASCALv PASCAL:GCODELIOFQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUP՘D T H H H" X @  ={!WTNFQQyLIOFQQRTNFQQqQSOVGQQSTKHQQENNCQQERTEQQDENCQQRTQFQQBRTEQQWSBFQQFERFQQERCFQQÜ DBW$|"PF Fv 3PsJv PFPPvހ|u%PFP^SrvDfvDv ] VV /3VNViV nVVzRTNFQQx`|JyZ PvPQPPv v vvPP] $ V-V7Vu VWVWARP_^P_^v;975 u tLV6765VF u t VF&5&W&7575;;u;9u9=rVW6=5RP_^ t'=VW6=5RP_^ t33755&W&G=75؃QS5&_XZ&W&75 5&_&&W&>;u>9u755&W&(9&W&5&W&759&W&V75;9RPe]_^VWUv J]_^VWU~ u~ tn V F tPPP^ &t^ &3]_^VWUv^ &W&GVF^&t^&W&VF^&uF^ &W&G9Vu9Fu^&W&^ &W&G^&W&^&W&VF^&?+~Njփ;ro;v7ƋN^؃N^^&W&^&W&VF^&W&VF^ ;9&W&G^&^ &W&G6^&W&%VF^ &W&G9Vt9Ft33]_^VWU>uARPP]_^VWU~ u~ tn V F u ^ &uPPP^ &t^ &3]_^36 ?V&V.?CFJMZ^ĀċĎĒĕęğĪIJĵ̼VV (+2DKRUYfq|ŃŏŒŖřVX?^eVkVq?ǩϱV tLSTL MS PASCALv PASCAL:GCODELSTLQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H H H X @ f ={SNELQQSSEQLQQSCALQQPOSLQQ CPSLQQCPLLQQ;INSLQQDELLQQDCONLQQLEDLQQLTDLQQ"NEDLQQEQDLQQLECLQQQLTCLQQNECLQQ{LSTLQQEQCLQQa9ERTEQQBRTEQQFILLSCMOVESRMOVESLCSLEQQLSLEQQ_ DBW~U P^ &^&:uBVFt?^ &2F~r.Fv^ &v^&:tF F@FH;FuךF]j VmVzEQCLQQz`|6{U P^ S^S4FF] V\%VzNECLQQ{2`|U P^ &^&:sBV^&2FFt ^ &2FFF~rGFv^ &v^&:tv^ &v^&:sBV F@FH;FuF]p V̗VqzLTCLQQ`|6QU P^S^ S4FF] V\%VzLECLQQQ2`|uUPvv:uANFt:v2F~r*Fvvvv:tF F@FH;FuۚF]$ VdVzEQDLQQq`J|2UPvv4FF]4 V\!VzNEDLQQ.`|"UPvv:sANv2FFt v2FFF~r?Fvvvv:tvvvv:sAN F@FH;FuƚF]x V̉VzLTDLQQ"`{|2UPvv"4FF]Ϝ V\!VzLEDLQQ.`\|bUP^ &2F ;F~^S^ &2@^ Sv ^ &2F ^ &]  V!V>VTVzCONLQQ^`|pDU PFFH^ &2;v^ &2+F^ &FF^ S^ ^S^ &2+F@P]  V%V]VbVzDELLQQDl`|UP^&2F;F ^&2@;F}^^SFF^S^&2+F@P^S^^Sv^&2F^&]М V/VVVkV́VzINSLQQ`|f;UPF;F ~FF~r%FvN^ &^^&F@FH;Fu^F&] VVXVjzCPLLQQ;b`|qUPF;F ~^Sv PFF~r(FvN^ &NI^&F@FH;Fuݚ]  VV*VcV zCPSLQQm`%| U PFFFF FF;FrcFFFF~rUPvvv ^Sv3PFF] + V%\-VzSEQLQQ:`|?SUPvvv ^SvPFF] * V&\.VzSNELQQS;`|UP]˕ VVzLSTLQQ`y|t mishcAlt MS PASCALv PASCAL:GCODEMISHQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPΘD T H H H X @\  ={OGROHQQmIALLHPB PREALLOCHEAP]CUTHQQ3EXTHQQMISHQQCENTHQQNLMNGQQERTEQQBRTEQQ QUERYMEMAVAIL EXPANDAREASLSTKHQQENDHQQBEGHQQ DBWUP], VVzENTHQQ`|UP] VVzEXTHQQ`|.3UPF]" V VzCUTHQQ3*`|]UPFFF^^F^&;vI^&FPF3ҋFvvFV^&3+FV| t F^&^&#t<^&PvFPF~uFFFF+FH^&F~uFFFF]t% V2:EVXV̙VijÆVBz PREALLOCHEAP]`I|/BUP^S]FF] V\VzIALLHPB+`|mU P^^F;FvW~s@>vA"sFvvFP#u!FFFF+FH^&FQF+F~v@F~s ~vFF;Fv FFH^&F]1 V0QVfvĬÆɆVzGROHQQm`|CUP] VVzMISHQQC`|t MisoAlt1 MS PASCALv PASCAL:GCODEMISOQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPǘD T H H H X @  ={MISOQQ BEGOQQ DBWU]xzBEGOQQ `<| U]izMISOQQ `|t MisoAlt2 MS PASCALv PASCAL:GCODEMISO2QCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H H H X @  ={MISO2Q ENDOQQ DBWU]xzENDOQQ `3| U]izMISO2Q `5|tMISY MS PASCALv PASCAL:GCODEMISYQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H H H X @ / ={!FILKQQMISYQQENDYQQ[1HDRVQQHDRFQQPCCUQQPERUQQCLDUQQCLSUQQ/ DBWUv<uv4Dsv4DvPhv4D v4L$v4 L4"ȋv4|u@"ȋv4|u@"svPvP PvPv4Dv[].V~V̍V̘VzENDFCB |UPU?PU7]˸ zENDYQQ`g|U]˫zFILKQQ `f|U]˜zMISYQQ `?|tORDC MS PASCALv PASCAL:GCODECODCQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H H H X @ p ={IDEXCQQaDEWCQQ+DEJCQQDEICQQENWCQQ+CODCQQENICQQENNCQQMINCQQDENCQQ DBW.Uvv F RPvvFF] V"zENICQQ*`|/+Uvv 3ҋF RPvvFF] pV!zENWCQQ++`|kVUvvPFFt>+F V |AFV+N|A"N:FwB"ʈNF]uV!%;?NzDENCXXVg |9UvvFRPFRPPyF^ &F] ̜$zDEICQQ5`^|=UvvFRPFRPPDF22^ &F] $zDEJCQQ9`$|:+Uvv3ҋFRP3ҋFRP3P F^ &F] %zDEWCQQ+6`|:aUvv3ҋFRP3ҋFRP3PF^ &F] %zDEXCQQa6`|U]zCODCQQ `|tORDF MS PASCALv PASCAL:GCODEORDFQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPԘD T H H H" X @ X ={]WTWFQQYWTIFQQRTXFQQRTWFQQ RTJFQQRTIFQQ,RTAFQQORDFQQRTQFQQΌENWCQQENICQQERTEQQCINSQQBRTEQQWSBFQQPPMFQQGTUFQQFERFQQERCFQQDEXCQQDEWCQQDEJCQQDEICQQASSFQQPPLFQQPPAFQQPBLFQQPBFFQQPBCFQQPBAFQQFNSUQQߜ DBWUtX;s 66vt ;vAL$vt D$s vD vDBvt Dsvt Dv~} }DvD PPvDP]1  V&/3X\̤VzGETNEX |U Pv 3PrFU'v |t@v D%v L$~ uB ʀ~ uB ʀ~ uB ʑ4 sv D$v D%4v |uA"ЊF2PPvV"FsFF ;F| vvFUuv tF2v Dv D$42)F ;F| vF VV ̡Vʆ$: vF v |uv Dv D]v ]i 'V ,VzRTQFQQ8`@|IUPvPPPv2PP]Ϝ V!\6V;VzRTAFQQE` |~,U Pv3PsHvPFPPv|u+PFP^ SvvrvDZvDv]  VV +/\PVkV pVUzRTIFQQ,z`|~U Pv3PsHvPFPPv|u+PFP^ SvvrvD[vDv] 6 VV +/\PV kV pVVzRTJFQQz` |~ U Pv3PsHvPFPPv|u+PFP^ SvvrvD^vDv]  VV +/\PV kV pVWzRTWFQQ z`|~U Pv3PsHvPFPPv|u+PFP^ SvvrvD_vDv] = VV +/\PV kV pVXzRTXFQQz` |IU Pv PQPPv vvPP] V,V6V;VzWTIFQQE`|IYU Pv PQPPv vvPP]Ӝ V,V6V;VzWTWFQQYE`{|UP]ˇ VVzORDFQQ`|tPASE MS PASCALv PASCAL:GCODEPASEQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUP֘D T H H H X @ ~ ={INUXQQSETEQQaDISEQQNILEQQeINREQQ&INJEQQINIEQQRCIEQQWRCWEQQPCDEQQINUEQQSELEQQLSLEQQ[CSLEQQ.PASEQQxMICEQQ1ERTEQQBRTEQQEMSEQQPNUXQQENDHQQBEGHQQF DBW#No CASE Value Matches Selector"String Too Long in COPYSTR<,>'Lstring Too Long in Intrinsic ProcedureRUPk!fSet Element Greater Than 255Q% PPP3P]֜V VVazMICEQQ-`|.UP>!Unit Version Number Mismatch%:P"PfP3P])V VVazCSLEQQ.-`|[UP Illegal Pcodeՠ%g'P>PgP3P]ҜV VVazLSLEQQ[-`|UP Unsigned Value Out of Range%PfPP3P]kV VVazSELEQQ-`|(UPPP P3Po V V}Signed Value Out of Range ]AV;zINUEQQ-`R|1UP PP` P3P]* V V%V1zPCDEQQ-`:|UPF F V/&!Uninitialized 16 Bit Integer Usedp6%F ;FrF ;FvPPP3PF]^  V%VezRCWEQQH`|WUP % Uninitialized 8 Bit Integer Used~@cF FF ;F|F ;F~PPP3PF]AV*V/VzRCIEQQWH`|UPȠ6*1REAL Indefinite (uninitialized or previous error)7~u!PP P3PFFF]VV&VFzINIEQQ?`a|UP\NIL Pointer Reference<2~t F2=u PP P3PFF5 V$VrUninitialized Pointer_F]+V;zINJEQQH`|&UP@Invalid Pointer RangeΠ72FV- u1P*PXP3P]jV$V)V1zINREQQ&?`|eUPPointer To Disposed Var!3qFF~uP\PP3P~uP V VLong DISPOSE Sizes Unequal{brPP3P;FvA;FwB ʋF% sPPP3P"vNN%sP V:EV %@ Set Element Out of Rangeܠ!PP3PF]i VVzNILEQQe` |JUPveHHFv;FtPPP3P] V\,7V?@ACDEFIK7LCPCRdSjTrUxVWyz|QffXtSETS MS PASCALv PASCAL:GCODESETSQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPD T H H H  X @ * ={xTWOSQQmONESQQZERSQQCLTSQQCLESQQCEQSQQ&MULSQQSUBSQQADDSQQMINTSETSQQCISSQQERTEQQBRTEQQSELEQQڜ DBW @ NWU PFF ;F w#v ^&v "tANF]S V:FV4zCISSQQS`|8TUPF;FvFFFFF]͜ V'VzMINT4`|UPFvvF@F= uFFFvv~^&F@FH;FuF FFvv~~~^& F@FH;FuؚF]' V̇VzADDSQQ`-|UPFvvF@F= uFFFvv~^&F@FH;FuF FFvv~~~^& "F@FH;Fu֚F] V̉VzSUBSQQ`u|xUPFvvF@F= uvv TFFvv~^&~^& "F@FH;FuךF]Ŝ V1\gVEzMULSQQt`|&U PFvv TFFFFv^ &v^&:tFF@FH;FuًF@FFFF;Fr$FFv^ &"tFF@FH;FuF@FF FF;Fr$FFv^&"tFF@FH;FuF] ˜ V\VzCEQSQQ&`=|U PFvv TFFFFv^ &v^&"tFF@FH;Fu׋F@FFFF;Fr$FFv^ &"tFF@FH;FuF] V\̐V2zCLESQQ`|WUPv^ Sv ^Sv^ Sv ^SF&4"FFF] Ϝ V!\9\FVzCLTSQQS`B|9UPFvvF@F= u]3 V+VzZERSQQ5`|RUP~vvv~~~ ] VV?DVzONESQQN`|cmUPF;Fv v 2FFFFF;FrFFv vF@FH;Fu] V\C\UVzTWOSQQm_`H|UP]Y VVzSETSQQ`=|tSIOF MS PASCALv PASCAL:GCODESIOFQQCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPΘD T H H H" X @  ={!WTRFQQSIOFQQRTRFQQRQSOVGQQSTKHQQENRCQQERTEQQDERCQQRTQFQQBRTEQQWSBFQQFERFQQERCFQQ DBW$ H"PF Fv 3PsRvDv PFPPvރ|u%PFP^SrvD\vDv ] VV 7;VVVqV vV.zRTRFQQ`|JZ PvPQPPv v vvPP]  V-V7VUPv^ &2P^ Svv] V+\0VzWTTFQQ:`|6%U Pv PF Pvv] V#\(VzWTCFQQ%2`|WUP]Ϝ VVzSTRFQQW`|tSTSR MS PASCALv PASCAL:ECODERFSRCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPDGROUPhD T H  H H X @ z ={3MXSRQQ(MNSRQQMDSRQQqRFSRANSRQQp)CSERQQCSDRQQERTEQQBRTEQQAISRQQ DBW ?'UP^r^ VVFIDRQQFIERQQFIWRQQݠQ$&^^&&^FPFPT~UF]/VV V VVVV!V-V@V,zANSRQQp`|dqU P^ &^&^^ &FPFP^& vF] 9 VVVV!V%V*V8V@VDVGVMVPVSVzMDSRQQq``^|[U P^^F^ vv^ &v^&vF] c% V#V,V3V6V=VDVGVJV5zMNSRQQW`|[(U P^ ^F^vv^ &v^&vF] % V#V,V3V6V=VDVGVJV5zMXSRQQ(W`|UP]˩ VVzRFSR`5|tRIAUQQPLM86 V2.303/06/95 09:59:1ʖ1STACKMEMORYCODEDATACONST FIAUQQ_CODEDGROUPh@^HH T0ӘD K5TY2UQQTTYUQQAOPNUQQCLSUQQuCLDUQQBSKBD TAGCOMMREAD TAGCOMMWRITE TAGGPAMWRITE TAGKBDREAD TAGLPTWRITE TAGPTRWRITE TAGSPLWRITE TAGVIDEOWRITEBSVIDCLOSEBYTESTREAM CLOSEDAFILE DELETEFILEOPENBYTESTREAM OPENDAFILEOPENFILESETDABUFFERMODEULCMPBOUTUQQINPUQQ2 D 700E01EU^G(PPw&t^G(PPw&u]t V&.VJAUQ^vGDG$D$GDO%D%]}  U^ sFF^uhPG(Pw&FPPmmPF PPw F u*^PbwPF t^PF^GsG sFtm FrmFwm^PG(Pw&FPPvF PPF u^^^G F:t:t:t:t :t:u ^G[F:t:uL^PF u7^PG(Pw&FPPmmPF PPFF^G t(=u GG ^GG^GF.^GG$GsG%^G%]9TVmV̂V V /5CV ~V젊uU^Gsmu ĿW8^t!Grğ^F&G &W"&G&W^ĿWFF t^GGG ^G]U V WV gUvuFFP^G(Pw&FPPmmPF uvF t^GGG] \/V>V XtRIBUQQPLM86 V2.303/06/95 09:59:3Ȗ1STACKMEMORYCODEDATACONST FIBUQQ_CODEDGROUPh@aH H=T8˘D KSEKUQQECHOBYTEGTYUQQGTDUQQGTBUQQGETLINEGETUQQCBSUQQPTYUQQPLYUQQ7PUTUQQYPERUQQ&PCCUQQh CHECKPOINTBSEXIT READBSRECORDREADBYTEREADDAFRAGMENT WRITEBSRECORD WRITEBYTEWRITEDAFRAGMENTBSKBD TAGGPAMWRITE TAGLPTWRITE TAGPTRWRITE TAGSPLWRITEBSVID QUERYVIDBSBEEP FATALERROR D 700E01WUCUF^ GFG],UQ~ u1^&?tqPPF t t<t7:^&π~ u ^&?t(Pv F ttuF~ u ^&?t&]xVKSViV\UQPF tP t H؀ u9F vF ~N F ]tZF >rF< t<t<t 뷋F6vPF u"F<t<t< t< uƸ];$ V0;QV`e\āąĉZpUQ^tĿW^S1>u%;w^ ^]̜V!,0>BKڠ1U^ G!G%sG"5^ uPv ^S^ G rPv ^S^ u);u ĿWF t^ GG^FF ;Fw^ PFPF t?;u$^ G$s ~u O%^ G$F^ $^ GGFG>~ u^ G$FG"&F< t^v&Ft^ G$NO"]1\M\^bm\UQPF]  VѠ3UQQP^Sv FPF tP] V%Va&7UQP PF tP]˅  VVwYUQQ^ G!G$uiGFĿWt4~Wwv ^ G t%= uG$GG ^ GG^ WF ^ G"G;G uKG$E^ ĿW~Wv G"P^ G t tu^ GGG] 5V̖V̯Vgl&U^G!G$8GtN^tE^G s;^ĿW P^G t tu^GGG] 3VLVU^G!8GtF~+us^ğ^F&G F:t:t :t:uF Q^ĿWFPF u^ĿWPPFPFFF~1uF F ~u^ĿWvF~0u~u^ĿWvFF t#tu^GGFG ^G$](: @ F L eVz̈V̺VVV̊tRICUQQPLM86 V2.303/06/95 09:59:5Ɩ1STACKMEMORYCODEDATACONST FICUQQ_CODEDGROUPh@H H7ҘTD K? CHTEMPNAME IPASCALPARAMOUTUQQINPUQQFNSUQQҐ+INIUQQPFNUQQGFNUQQENDUQQ\NBSVID ERROREXITSETTRAPHANDLER WRITEBSRECORD INITSCREENDIVZEROHANDLER D 062E01 [VID] O [KBD] Y$VN VNUQQAPPPFPF=u*PPP PPFPFF tPPRPF tP]}; $V16;V@ESVcVlVoVtV́Vz[UQF HF^v&8 uNF@^ G&\vGGG^ O&(vF]G4UQ^ F 9G&w^ G&F^ w(~NF]AU]t InitScreenPLM86 V2.303/06/95 10:00:15STACKMEMORYCODEDATACONSTINITFRAME0_CODEDGROUPh@ZHH T(ۘD K INITSCREEN_Q INITCHARMAP INITVIDFRAME QUERYVIDHDW RESETVIDEOSETSCREENVIDATTRCHECKERCϜ D 062E01UPPPFPPPF^ &F^&^&7^ &7P PFPPPPP^&7^ &7P SPPPPRPvPPPP]1VV#V)V[VaV~V̄V̓V̙V̦V̬Vt DivZeroCTAsm R12.3.1??SEG??SEGDivXqqCODE h`DivZeroHandlerʌEXITDziEqqӜAU]̜VVV VÊtRIPUQQPLM86 V2.303/06/95 10:00:3ޖ1STACKMEMORYCODEDATACONST FIPUQQ_CODEDGROUPh@HH TD K5CFNUQQNEWUQQTFNUQQ1PPMUQQ}BUFUQQ'$RGPARAM CHTEMPNAME IPASCALPARAM֜ D 700B01[scr]<$>TmpQQ֠U^&u]tUF ^GG&]8P1U^Gs8( ^G&G5@Nn3ɉNNNNN tÚÚÚx"'  F& RVce{ ~FāFć'̮&ĺ Ŀ FF F FR#& ,F4F8F@qB~DFHJM&VikFoFŀFńFňFŗFͰ&ͽ&&&Ŋt dedr7AltFIDRQQFIWRQQ3COMMONDGROUPDATACODECONST COMMONDUMMYDEDRQQHOh ʘhN8 \!MPDRQQRNDRQQMPHRQQMPPRQQԐEIGRQQDPCRQQ INARQQ NANRQQ Z4TRQQ.V ONERQQs Z5TRQQf TENRQQbTOORQQ i STPRQQE,PWRRQQPWTRQQSXTPRQQ1YTPRQQ; LDLG2DDEC87DENC87JSCAC87/STAT87DDECQQEEDCQQѠC)#*19; CEM$1#NAN1#INF1#IND?@@@@ @P@$@@ @(k@  @ @C#@ &@ *焑*@ -@1_0@4@.7@@v:k :@#NJ>@bxA@z&D@n2xH@W ?hK@N@@aQYR@ȥoU@: 'X@fPKе@7pdeAlD> iyB ? d'@Bʚ; TvHrN @zZƤ~o#]xEcd !U]RUZU]RUZˠWU]RUt$ˬV).U]RUt 3 Uu Uu Uu Z˅U4SU]RWVQ, ;tU ;x-ɐ+uY^_ZX#  FFF"F%F/TUQVNv^Y]U]\lT3Ɉ+Tl\sTl\u.t 0-Gt2˹*t0^_[ZYX]М/ SF,2TZnSJUPQRSWVЎ؋~vD-?r3ɺ@+;wILTl\|CRiJU]W؎йt(Ћ#uD_ D03˾Њ3ɭ ȭ ȭ u t t _3˳ #t >.?.ɛ3Ȋ+y@ٚ#uɐ>&..>u!u B. B>뉛>Qs YVV __r 1$1'.0B1`ej ~Fā1ăFĆ;ĈFČCĐFēCĕFĘĚFĝFĠ;ĢFĦ;ĨFī1ĭF̽SFFFFF;FCF;FFFFEFME F FFFEFF";$F)C,7:;C;GKPY&^Q-U~v5U]] &&J&PHU]UWΉ3ɉỳ u.`3x6x+P&ȋ. uŋr XȃrXP @3ؿ]t 3Au_.m%_WP3 X_ _3؋ u=s u=s>~ _]23 -.xû,0rf< wb2 wx,0rB< ~,:}6<.t,0r(< w$t ɀ2À u N23<-t <+tN2EN'X'q#z#Ă1Đ#ēFĖFĢ#ĺ#i'-' ''##'%-%;/G$QTS^FaFeFhFk1mFpFsFv}ŗFŚFŝFŠFŪ#ź$ſFFFFFFFFFFFFFF$F#F"F*#E+PFSF^1hFkFnpFs;uFx~FƁ;ƃFƆFƉF'+-+)O6U~^N v E] 2M ]&&&Qt emtr7Alt&DGROUPDATACODECONSTTRANSENTR7QPH<ԘX0͘H]OP1RQQDIDRQQDRDRQQMUDRQQSUDRQQSVDRQQMOVRQQCHIX87BASX87FLGX87INDX87OLDX87LIMX87NEWX87CURX87ADDRQQӐTUGRQQwѠ<j0SeB׳#,k d35h!Kx\); yr{Z>\i7M, fˑX^ y cfψp9F ˑX^2[ɤPK+RJeBPUK$C8V ObmQP;$m[ PK$CtT=_Jow{8 ]{~ -wWqO15^KzӲ( /Ċ vp>[`3l_ L0/^   Bj"4I٠U]Վݎŋ6;6u 6>U]U]Վݎŋ6;6u 6>U]U]Վݎŋ6;6u 6>U]U]Վݎŋ6;6u 6>U]U]Վݎŋ6;6u 6>U]U]Վݎŋ6;6u 6>U]U]Վݎŋ6;6u 6>U]U]Վݎŋ6s ru urËD uVE DH\LTt@Er:RuWsӸ݋Ӌ݋ӋX݋ȃى]ME_>M:LL ဋU :u>VW yʀ:u' wӋL?U?;uuuu_^ÿWVS>^3Ɋ F_>QV^ V^Y^VS^ 3Ɋ F[WQV>^YQ V^V^Y_U]Վݎŋ6V6;6u 6>^ûU]Վݎŋ>D ;>u}=6 ;6u6É>s-V>^W>^P>X tU]Վݎŋ6ûW>_>EU]Վݎŋ>D ;>  "&)x,:> CJNQUX[im ry}ćĘĜ ĨĬĶ    %) .59<@CFTWdx {Ł ŏt w}Ƅƕƚ  s*6 @XDK P TZ]b<e$losHwz}LJHNjǚ.sǡǬTǽsޠ u}=6 ;6u6V^W]EwMCS>[_S[3 t9y۹IsWۿë«>_>U]Վݎŋ>D ;>u}=6 ;6u6WV>^E>_>ۜ   &$)003>`A$KORZw0Ć$ĉ0čėĨĴ   lsrt emur7altFIDRQQFIWRQQRCOMMONEINQQQDGROUPDATACODESTACK MODULE_DATACONSTTRANS COMMONDUMMYENTR7Q[HH#h .tޘXX0 Řhv W8  MALLHQQDNREQQPREEQQCHPRQQUEREQQLCWRQQ _FATALERROR_CMOD_FPROTECTEDMODE__SETTRAPHANDLER_I3EX87INRE87DZRE87OEMX87UNRE87OVRE87UPCX87TSIR87Ő OP1RQQ~BIDTQQDIDRQQ9FIDRQQ2\ BLDTQQrFIERQQ2KBMDTQQRABRQQ BODTQQADPTQQRADRQQ" BASTQQABSTQQRDBRQQ RADTQQBRDTQQBCSTQQTSADTQQRDDRQQ DRDRQQCBSDTQQBDSTQQ6RCDTQQ@BTDTQQSCDTQQ<RDDTQQ"SDDTQQH TAJRQQ?CHSTQQBISTQQXRIDTQQMPDRQQRMBRQQY SIDTQQL TDJRQQ,XgBLSTQQRMDRQQk BMSTQQRLDTQQxSLDTQQtRMDTQQMPHRQQBOSTQQpSMDTQQMUDRQQ1FIWRQQ=5RODTQQSBPTQQ8SODTQQRASTQQDRPTQQw TASRQQ{BRSTQQSASTQQBSSTQQRRDTQQRCSTQQZBTSTQQDUPTQQSRDTQQRSDTQQSCSTQQVRDSTQQ<DSTRQQzՐTDSRQQTMJRQQ SSDTQQRTDTQQSDSTQQ8DVPTQQbSUDRQQ+STDTQQMPPRQQ(SVDRQQ%RISTQQ^SISTQQZMOVRQQRLSTQQRLTTQQSLSTQQRMSTQQMUPTQQ# DSFIXUPONFLY( TMSRQQSLTTQQSMSTQQ ESFIXUPONFLYROSTQQvSOSTQQrSRPTQQMRRSTQQSRSTQQRSSTQQ FWFIXUPONFLYsTRTRQQRSTTQQ SSSTQQRTSTQQSSTTQQSTSTQQ@CSALIASCHIX87BASX87TFLGX87INDX87CWDX87OLDX87CINIX87=x LIMX87XY NEWX87!CURX87VMSKX87SLOX875BADTQQADDRQQKBCDTQQ:BDDTQQCFERQQ}Ѡ 070F01@@?Ü(=Rg | #A_} "$& ('*E,c.{02468:<>@.BCDXFmHJLNPR T)VGXeZ\^`bdf-hKjilnprtvxz2@B" k  "  z"$&(z*,x.x02x468z:<k >@zBDFHzJLxNxPRxTVXzZ\ ^`zbdfhqjlxnxprxtvxzzĄZĆfĈĊ̒z̖z̚z̞z̢z̦z̪z̮z̲j̶̺(̾(((((((s2|0  |,|.| " $ &|(*,.|0&246|8:<>|@KB1DqFlH+J%L9NCP_RTiVsXZ\^`bdfhjlnprQtvzxz|!~ĀĂĄĆĈĊČ ĎĐĒ ĔĖĘĚĜĞĠĢĤĦĨĪĬĮ İ IJĴĶAS=EFc4$O&&$%1PXPXU]+uGGt+،ÎÍ>t4 PWQPURR tPY_X@P"   k ,  !,$*-03 69,@CF0]&cil>ĀbĄĊ̞& ̨& ķ̻&JS@t"P> ..XUP X]]F  FFF F#%F+04%8ƠRKSWPQR<P3=r<ZYX_ tރ \6 6[a) &,X0T7T>CTĠQ+CSw t6O46 6[ú$TTX#VsPjUFŎ] O z)N(Њ& tÂ"   M=U]tttt t@t<&&&"&+&4&PLUVPRuv NNv ,2&v 6`P~ OO~ W&-2PaZX^]UVPRuv NNv ,2\&v 6`P~ OO~ W&-2\PaZX^]UVPRuv NNv ,=&v 6`P~ OO~ W&-=PaZX^]6&UVWPSQRӋ6_6GMr4Ŋ݃6‹<3Ћ‹G$3Ћ‹GG5GG ƋՋ~݃t6S[Վݎŋ6 ;>u}=>\~t6duYՎݎŋ6 ;>u}=6t>tt66 ;6u6 6ЎZY[X_^]6&U6&U6&U6&U6&U6&U6&U6&U6&U6& U6&$U6&,U6&4U6&<U6&U6&U6&U6& U- & $)?& T& ot̊& ̟& ĺĿ& uPx|_ňVőTŜ~Ż`VT~~@V TCV@!(5>7F;=?BBKE J@LFP=TBW1Z _BaFe=iBl+o tDvFz=~B% ƉFƋF=B9 ƞHƠF=BC ƹJƻF=4LFF= NF=BK  P F=B1 'R)F-=14B7+: ETGFK=ORBU%X cVeFi=mpBs9v ǁXǃF=BC ǟZǡF=4Ƿ\ǹFǼF=! ^F=BK `F=ZQ6&$U6&,U6&4U6&<U6&U6&U6&U6&Ue6&wUg6&eUU6&SUC6&,=U-6&<%U6 ;6u6Ў]ˌЎˌЎ6 ;>u}=>Ëك6ك66 ;6u6Ëك6ك6uzuqt uu666u%uЎ؋6 ;6u6À@4B1 bF=B!+$ /d1F5=9<B?%B MfOFS=WZB]9` khmFq=uxB{C~ ĉjċF=z4ġlģFĦF= ĻnĽF=Q4pFF=rF}tFt v Fk!x#F+7z9F;u2Êu þ2>u ÀU(16~@GP~S[_eiנE[ t2x뺋Ƌ߹w똋딋ځu3ۓtt 3=D ځu't C;" +|=C~/URu2y݋M]} xURQ2֜譋Эȭح3 tp| tыˋ3wtSr)|3 tĊ╊֊͊ߊ2wt(Fu?t ΋?tXx%L\|ss@+L\|s3XP+4 C  * 4 ȠBY ځu'* Ak U2R@P"3ۋˋ t  tU tU t ڃD t t ڃX P3ɋ tU t D tU t D t t X P3ۋ t eʃD tU t ʃD tU t ʃD t ʃՁ?X P3RD t eڃD tU t ڃDU t ڃQ3ɋD t eDU t DeY]ыˋX t^ùd P@ ځu'Ô ? 2URVW_^譋ȭحЭ3r EU>WWWr";Tu ;Du;\u; s 2Y[_^63;sb u;wARS3 tP t t[+[]蕒sOsO+‹ɰ ut ًʋ3>X]uNJ݊Ί򗕊Ԋ2ufNtS ͊ tD rrwr't"XPr rXPr sF3Ջʊr^s Š t rrwr,t'XPr rXPr3sF32H tA rrwr,t'XPr rXPr3sFM]EX]䀈e @}~uE Ë6e Àrr"e r  Āue À Ātí$ȆČՎ݋6;6u 6ʀ2Ō؎6;6u 6Ë>Ō؎6;6u 6׋ ;>u}= ;6u6#QpVtXyĀVzzĹV#/VN`z ,V0X5<VƦVTCVVTCVVTCV/VeTjCnVuV~VLJVǑVǕXǡVǭVǷVǻXVTTCV堆íáŌێËáŌێËË6 ;>u}=E$*ȋEM yDp=@} =~Dy @D D 3ҊD e 3ۊ\ ] 62xz yߋD;E|NS2ut:r2w7@iuEEDD92A+t$xtxt2t t6 ;6u6Ë6D $עË6D $3ۋӊ\ 4 (V1TĖ  .BVITNCRVXVdLhmVMt emus7Alt-COMMONDGROUPDATACODE COMMONDUMMYENTR7Q3hh)8_OP1RQQRABRQQRADRQQRDBRQQRDDRQQTAJRQQRMBRQQTDJRQQRMDRQQTASRQQTDSRQQTMJRQQTMSRQQBASX87FLGX87CURX87ܐ!MPBRQQ MPIRQQ2MPSRQQxѠ>U];}և+݃wR2ۊӇ܊W| t3ۀrt@~- t֊ߊwt%u֊2?t ?t p sBE;+׋s 4 u  tm3 u ފ2 xMqwrt sEց@}~'2>U]m$ E Ã@3ۊӴۃ3ۊӽKy+gX^:U]2SƊ2Ɨ܊‹SS X؃tXNjӋX xMEVKWWbU]2+MS2ɊދV ‹t[;s3sNsþ+ЋsíK"VU]#  :U- U]dA    :$ & T2U]3t@t@( SzKU]tU}t1ttË E ĊeU}=rwt؀sEʋ D Ċdtt=rwtsAۊt erreeAlt-ERREEQCOMMONDGROUPDATACODE COMMONDUMMY0h*hY89^ EMSEQQLNEEQQGHSEQQASNEQQTANEQQDNREQQ6GHVEQQPREEQQ?CNVEQQDZIEQQ SINEQQ^UEREQQHDZNEQQ!EXPEQQkOVIEQQ9NOREQQ-RNPEQQDZREQQZPIEQQOVNEQQQUNREQQDZWEQQOVREQQESOVEQQZPNEQQSRTEQQyZPREQQOVWEQQ-GHIEQQ&ѠMissing Arithmetic ProcessorREAL Denormal DetectedREAL Precision Loss=REAL Arithmetic Processor Instruction Illegal or not Emulated= ^too smallunsigneddivide by zeroREALlong integermath overflowSIN or COSargumentrangeEXPSQRTofLNTRUNC/ROUNDTANARCSIN or ARCCOS> 1.0negativetopowermath underflowstackno room inis invalidallocator interruptedheapnon-positive3 lX QW 4 8V  ڜQU d#T ΜQS (qR !œQQ (5 5P -˶(Q O 46 5 N 9˪4Qx M @e#5Ô L E˞@Ql K L(5J Q˒LQ`I XfCNWH ^˅XQTG eg]NW F kxeQGE rhafN D yjrQ:C iifNÞB \Q,A jlNWÇ@ OQ? xNë> BQ= |f#Ѡ< 4Q; ##?: %Q9 T-\ 8 ͠!7 (۠"6 q#5 #$4 b%3 #Q&2 V'1 :æ(0 J)/  *. > +- Π,, 2|-+ !ö.* &&!p/( -I˝1& 6@˜h3$ ?7˛4Q5" H.˚H=7!GQ.C.2 . ÌVj U]P..>PXPX.t,SQVRWU.؀&t 2]_Z^Y[qtX..XO &&,2 8 > JPT_LUoU]PPP=t@2=s6=t=t3>PXPX 3>PXPX>tURVWSPQ3P&3یȎ26^Ë>YX[_^Z]ܜ7;BLPX`pswzĀ̅&ĊčēĠĦĴķ kT 6U]1S0=U]SQWV. t3ێË>^_Y[^ R i3&gQotpasmaxCTAsm R12.3.1??SEG??SEGHEAPMEMORYSTACKSTACKDATADATAMEMORYMEMORYCONSTCONSTEINQQQDATACOMADSCOMADS COMADS_DATACOMADS COMMON_DATACOMMONCOMMQQCOMMONENTXQQCODEDGROUPhht ˜h*h h X hژh֘hҘx`  !UPCX87HDRFQQSTKHQQ ENDXQQ*BEGHQQHDRVQQIsProtectedMode(j BEGXQQ$eENDHQQBEGMQQPNUXQQCESXQQ&CLNEQQCSXEQQRESEQQ STKBQQRECEQQREPEQQMAXMQQ"ENDMQQ CURHQQ LongHeapSetqq)REFEQQ DGRMQQ$܌ENDUQQBEGOQQINIUQQALLOCALLMEMORYSL ALLOCMEMORYSLENTGQQEXITins2qqENDX87ENDOQQins1qqfProtectedModeENDYQQALLHQQ)W *..?;A  GDF( U>tۜ)V V V V VVV Vv $ؚ((tʁ Žм &.+ $3" )>t˱UV V U%-15;>ADGJMPV\`bUgjmpuV wV {ĂąVȇVĊVȌVďVȑVĔVȖVę]țT  $ passwpAltCTAsm R12.3.1??SEG??SEGpasswpcodeJh@ins2qqins1qqAU]ڠU]׊tRNDC7-COMMONDGROUPRNARQQDATACODE COMMONDUMMYHHe8_RNDCQQIRNDRQQaѠMU 2Gݎ3;s%+Ȋ<5r<9w :O:rAEB1O0A]-X IUF^W7 W]{tclsgqqDGROUPMCLSGQQDATACODEH`ٚ` CLSGQQѠ#UÎێF~r3]1tlockedDGROUPMLOCKEDDATACODE5H`` LOCKEDѠU^^H]݊tcesgqqDGROUPMCESGQQDATACODE#H`ٚ` CESGQQѠ#UÎێF~t3]/tmtbuqqDGROUPMMTBUQQDATACODE H`@` MTBUQQѠDU^Ӌ^~ vn &FE< t<t &C3 2ڋ+щ] tsmulokDGROUPMSMULOKDATACODE H` ؚ` SMULOKѠ$UF nnFp~t@]NJtasngqqDGROUPMASNGQQDATACODEH`` ASNGQQѠsގيtsaddokDGROUPMSADDOKDATACODE1H` ؚ` SADDOKѠ$UF FnFp~t@]tunlockDGROUPMUNLOCKDATACODEH`` UNLOCKѠUF^&]tmoveslDGROUPMMOVESLDATACODEH`$Ԛ` MOVESLѠ(UF؋v F ~Ns] +tumulokDGROUPMUMULOKDATACODE H`ߚ` UMULOK~ѠUF fnFr@]ϊtuaddokDGROUPMUADDOKDATACODE/H`ߚ` UADDOKѠUF FnFr@]tasmgqqDGROUPMASMGQQDATACODEH`@` ASMGQQѠDU^v;Fu;v;s NOtIs]ۊterr879COMMONDGROUPDATACODE MODULE_DATA COMMONDUMMYMERR87HH`l8^ADNREQQPREEQQINREQQUEREQQDZREQQUNREQQOVREQQUPCX87IDNRE87KPREE87VINRE875UERE87aDZRE87UNRE87@OVRE87*҈Ѡ 061A01#U]t.MMX][YZQSX  WU]0 &ƠV*U]% & U5U] &ʠT@U] &ĠSKU] &ΠRVU] &̠QaU] &ȊtfillscDGROUPMFILLSCDATACODE*H`ٚ` FILLSCѠ#UF ~ NFs]ntcinsqqDGROUPMCINSQQDATACODEH`+͚` CINSQQѠ/Uv ;vwvN ,r3]tavagqqDGROUPMAVAGQQDATACODE&H` ؚ`BEGHQQENDHQQސ AVAGQQѠ$;>r;>s E;vA؎ˣ t runtime;COMMONDGROUPMRUNTIMEDATACODE MODULE_DATA COMMONDUMMY)HH`?8^!REFEQQREPEQQRESEQQRECEQQBRTEQQERTEQQ-|Ѡ 061A011U]>u!܋_ݍFG_$(tW-U]F;rB  tmoverDGROUPMMOVERDATACODE`H`ښ` MOVERԈѠ"U؎v ~NNO]yt ArithErr9MARITHCOMMONDGROUPDATACODE MODULE_DATA COMMONDUMMY٘HH`\8]YREFEQQREPEQQDZIEQQRESEQQOVIEQQSTKBQQSTKHQQDZWEQQSOVEQQOVWEQQRECEQQ5SAOGQQ(UAOGQQ5SDZGQQBUDZGQQOSOVGQQѠ 061A01,U]X>u[X&.&$  & nW(U]XX[PS&ZV5U]XX[PS& PUBU]XX[PS&^TOU]XX[PS&TtvasgqqDGROUPMVASGQQDATACODEH`)Ϛ`STKHQQSOVGQQ VASGQQѠ-ZX++;&rÎPRRPPp $&[tmovelMMOVELDGROUPDATACODEfH`ݚ_ MOVELڈѠ U؎v ~Ns]2tfillcDGROUPDATACODEMFILLCH`ٚ` FILLCѠ"U؎~ NFs]tmovesrDGROUPMMOVESRDATACODE H`&Қ` MOVESRѠ*UF؋v F ~NNO] rtsyscomCTAsm R12.3.1*??SEG??SEGDATADATAsyscomCODEDGROUPhH `8Zb _GetModuleId_& _FatalError_r_fProtectedMode_L_SetSegmentAccess__SetTrapHandler_LSetTrapHandler GetModuleIdSetSegmentAccess FatalErrorfProtectedMode[ 061A01A N*U]. ZZ. RR-)AG VV"*&U]. ZZ. RR! VV"*LU]. ZZ. RR! VV"*rU]. ZZ. RR˻! VV"*U]. ZZ. RR˕! VV"tpmodeCTAsm R12.3.1/??SEG??SEG MODULE_DATADATACSEGCODEDGROUPhH `sZ CMOD;CS_Aliasr*CheckErcSetSegmentAccess CreateAlias 070D01RwUVWRSF =u) uF P3PP؋F^1F PPPF^^ F P PP[Z_^]AAG T $V&V)AVCVGVIV`VbVfVhVtint87aDGROUPINT_CODEDATACODE͘h`ۚ` RGBSAVR87INTR87UPCX87b SAVR87Ѡ!U6.&7]Ϭ &t@JE16',XTO"^RRSTQQCBSUQQqFREMQQ:ASNEQQRABRQQWTCFQQgREWFQQ_fProtectedMode_BISTQQADDRQQENNCQQ7TDSRQQFMRC!) emus7Alt!JP6,E@1';"VBSSTQQins2qqBOCFQQSBPTQQRCDTQQCSLEQQSPPAFQQDZNEQQGTBUQQqRCIEQQSRTTFQQgDivZero!{ dedr7Alt!j4>9R\fC/% WHaM*o PROTEXSEGOVRENDYQQIOLDX87TDJRQQTENRQQBASX87HDRFQQOEMX87LIMX87EOLFQQRLTTQQSLDTQQDZIEQQRDSTQQSLOX87RMDRQQORDF!Nasmgqq!/CH>\f%aR4W*M9lSTKHQQRRDTQQ FWFIXUPONFLYMAXMQQNOREQQIALLHPDDZWEQQGFNUQQwWTSFQQgCHDRQQPASEQQSDNRE87M2ISQQpmode!mover!pasmax! emur7alt!@"OJ;',61ESSENFQQFILKQQIsaddokENDOQQHmoveslLNTEQQSCDTQQINJEQQSADDSQQ]movesrZ5TRQQRTDFQQ MISY!Ir1^J6O|wTY',@"h;cEmERREQQ umulokSOVGQQTRAEQQcinsqqDEWCQQKCWDX87GETFQQI2MSQQSLTTQQRLDTQQBEGMQQSDSTQQSEQLQQ>EXSRQQNEWUQQ|RADRQQPIDRQQEQCLQQ>cinsqq!vasgqq!STRF!g@fTYak;JE"'O1,6^pROSTQQTANEQQDIOFQQ SRDTQQSTAT87FNSUQQwDVPTQQGETMQQ:MP2DQQBASTQQLONCQQ7OUTFQQENICQQKCDDRQQRESEQQMIN]INTR87FIERQQumulok!lg+?S&XIbq:50D]N!vNDZGQQIsProtectedModeINIX87DENCQQ7ENWCQQKRTQFQQNTHDRQQCLTSQQ]GHVEQQLTDLQQ>HEAHQQ/MP2SQQBLSTQQCHSTQQOVRE87INRE87saddok!unlock!fillsc!DINqS?5]gX0&:mb+"w~CSALIASENDHQQPBFFQQCMODFLGX87ASDRQQasngqqZPREQQSDDTQQLTCLQQ>DENC87PARENA:mtbuqqMICEQQSCSXEQQCDEDQQ~MISOQQG lscw7Alt!DIOF! mishcAlt!D InitScreen!yJg^@E6cY1O"',;TlSOSTQQACSRQQSNDRQQPBAFQQDRPTQQBODTQQMSKX87MPHRQQWTLFQQDEXCQQKLEDLQQ>EXDRQQRECEQQTOORQQTHSRQQuaddok!LSTL!>RICUQQ!w+q:&5D!NXS]lI0b?gwLMNGQQPCCUQQqRFSRkENBCQQCFERQQuaddokLCWRQQASSFQQERTEQQMULSQQ]BUFFQQRTAFQQNCPSLQQ>PADFQQDEBEQQRESFQQCHPRQQlocked!MSFR7! erreeAlt!7FKZ_#P-A<2U(eSDZGQQCS_AliasRTXFQQNBRSTQQENTHQQDSNSRQQTSIR87INUEQQSPERUQQqCHIX87MISYQQIRDDTQQGETUQQqPPEFQQPTUFQQ cmpr7Alt!6b^JY1@O;,'E"TgSCSTQQRNDRQQUPCX87TRTRQQBCDTQQGETLINEqRTSFQQgclsgqqATDRQQHDRVQQMPSRQQOUTUQQwSETSQQ]SMDTQQRIDTQQDEBE!asngqq!cT"Y1:,BJ'5Oh^?lENRCQQZLNSRQQSSTTQQSRPTQQRSDTQQGHSEQQFMRC)DUPTQQCONLQQ>K64: _FatalError_BEGOQQGRDBRQQWTWFQQNBDSTQQEXTHQQDDDECQQSETS!]JTc'^";rOY6@,Ehm1vDZREQQPBCFQQBRDTQQNEWX87MNDRQQdRSTFQQgLDNGQQSCWRQQWTNFQQ5CSDRQQPFNUQQwRELEAS2RTSTQQOVNEQQFIWRQQATSRQQCLSUQQnRNDC7!int87a!LIOF!5K#rA-(ZUF7i2P_<dnxRCSTQQ RGBSAVR87UNREQQWTIFQQNCLNEQQTTYUQQnENDCQQPPLFQQfillscRTCFQQgNEDLQQ>SETEQQSOVIEQQINIEQQSENDX87COLDSPRMDTQQSIDTQQLIBH!2 emtr7Alt!"6ETcO@m;Y,1^'JgsSEKUQQqDELLQQ>STKBQQFILFQQSNELQQ>MNSRQQkOVWEQQRSTTQQSSDTQQSUBSQQ]BLDTQQMPDRQQEEDCQQINDX87BUFUQQ|LRNGQQTICS2 oemr7alt! mp2r7alt!glD1@SXN,6;I"]'bpSIOFQQbLSTLQQ>BOSTQQUDZGQQPPMUQQ|CSDDQQ~LNDRQQWSBFQQDEJCQQKLDLG2POSLQQ>SRTEQQZERSQQ]CLDUQQnSTSTQQFERFQQSUDRQQMISHQQDBOCF!+05":?&FLENDUQQwFREECT2CNVEQQTIME2CUTHQQDGETHQQ/MXSRQQkTSRR87RADTQQ InitScreeny comr7Alt!:#DO5I(0?U NORMALIZERCWEQQSLIOFQQ5RTJFQQN DSFIXUPONFLYINIFQQWTPFQQasmgqqDEDCQQGTUFQQ MisoAlt1!G cmpd7Alt!~C;?,"16'GDRDRQQCNDRQQA2SRQQREFEQQSTDTQQEIGRQQSTPRQQPBLFQQHEAH!/LONC!7STDR!dQLG:&0B+5!UDivZeroHandler{ASSRQQPRDRQQALLMQQ:PLYUQQqEQDLQQ>WTBFQQ LongHeapSetqqSADTQQerr87!movel!STSR!k@'O"J_6T1EY;,dALIASSNCNSRQQDGRMQQMEMAVL2CESXQQBEGHQQFRXDQQBDDTQQMXDRQQdPUTFQQNSNWQQ,RTWFQQNREPEQQFIDRQQ MisoAlt2!Hmovesr!g]l;YbTJ"E'O16ys,~DNREQQINUXQQSNAOGQQPRSRQQMARKAS2LNEEQQRMSTQQSISTQQ_SetTrapHandler_EXPEQQGTDUQQqRTDTQQBIDTQQDATE2MPPRQQMUDRQQCURHQQ passwpAlt! long6Alt!cesgqq!@6PE',";1JUSSSTQQsmulokA2DRQQCODCQQKBSDTQQRTLFQQWTRFQQbPISRQQPREE87LDSRQQXTPRQQfilfalt!mtbuqq!'IM,R5a1?"W\:DgmPREALLOCLONGHEAP:MISLIB2NILEQQSWSTYPESCALQQ>RENCZRESX87I3EX87CLESQQ]MDDRQQdFONG,BTSTQQSHSRQQOP1RQQINIUQQwtsdralt!rencalt!Z'6mJr1YT"@;^EO|vch,LMULOKTAJRQQPWRRQQBCSTQQMINCQQ7INPFQQRNPEQQPCDEQQSANDRQQdSSWRQQSRSRQQTNSRQQRNDCQQSMSTQQRISTQQTFNUQQ|ADPTQQBMDTQQWTDFQQ SIOF!bruntime!RIAUQQ!n';"O@1Te6axYK,is]n}RSSTQQEOFFQQSAOGQQOVREQQOPNUQQnINREQQSSVDRQQlockedABSTQQ_SetSegmentAccess_RFDRdPREEQQPTYUQQqfillcmovelmoverCBMAX:CDERQQMDSRQQkYTPRQQDISMQQ:-?7XID'"2NS]SAVR87ERCFQQANSRQQkunlockECHOBYTEqCFNUQQ|LDDRQQ IPASCALPARAMwTUGRQQcesgqqPUTUQQqDIDRQQmovesl!RIPUQQ!|I?"N+:5D'0TONERQQEXCX87NANRQQRTNFQQ5SNRETSASTQQMUPTQQSHDRQQvasgqqBADTQQCDDDQQ~WTTFQQg misr7alt!'",E@;J16ORTIFQQNSRDRQQTNDRQQSEKFQQMPIRQQCURX87CISSQQ]TASRQQLSLEQQSOEMS87LECLQQ>smulok!JO,X'@;16TE"]GHIEQQDDEC87LADDOKBRTEQQENTEQQPWTRQQPPMFQQZ4TRQQMPBRQQDERCQQZFMRCQQ)DZRE87CLDFQQERRE! fillc!VBQ[.8G=3`)L$e CHTEMPNAMEwSELEQQSCPLLQQ>MOVRQQINPUQQwSODTQQRASTQQAISRQQTY2UQQnISIWQQ,UNRE87DISEQQSEMSEQQ TWOSQQ]BEGXQQGROHQQDjQBL/*G[o49e%>t`V x _GetModuleId_UAOGQQUERE87PNUXQQONESQQ]CSEDQQ~ENDMQQALLHQQ/DENCINARQQDEICQQKDSTRQQACDRQQTMSRQQRTRFQQbRLSTQQEXTEQQavagqq!clsgqq!heap!:6"1E;J',@OSOVEQQSINEQQINSLQQ>SRSTQQins1qqRMBRQQBMSTQQBTDTQQSCAC87CEQSQQ]DEBCQQsyscom!UMC[9aH>"*/4eTMJRQQENDXQQCTCR87 ESFIXUPONFLYLSWRQQZPNEQQCLOFQQCSERQQRODTQQGTYUQQqRDDRQQ PREALLOCHEAPDTRYALLOC: ArithErr!FONG!,7FK"c_V[(APg-<2lZPIEQQavagqqORDFQQN AIDRALTQQNEWFQQSTRFQQgRTBFQQMISO2QHSLSTQQDPCRQQCHSRQQUEREQQ LASTARENA:NECLQQ>ORDC!KDENC!PASE!SRIBUQQ!q COPYRIGHT (c) 1980, 1992 CONVERGENT TECHNOLOGIES, INC. ALL RIGHTS RESERVED COPYRIGHT (c) 1994 UNISYS CORPORATION. ALL RIGHTS RESERVED THIS SOFTWARE IS PROPRIETARY TO CONVERGENT TECHNOLOGIES, INC. AND UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF THE PATENT DIVISION OF UNISYS CORPORATION. THIS PROGRAM IS FURNISHED UNDER A LICENSE RESTRICTING ITS USE SOLELY FOR THE OPERATION OF A DESIGNATED COMPUTER FOR A PARTICULAR PURPOSE. TITLE TO AND OWNERSHIP OF THE PROGRAM, INCLUDING THE SOURCE CODE, SHALL AT ALL TIMES REMAIN IN THE NAMES OF CONVERGENT TECHNOLOGIES, INC. AND UNISYS CORPORATION. LIBRARY: Pascal.lib VERSION: s7.0.11 (monday may 1, 1995, 9:19) This file is LinkerConfig.sys. Under each "LibraryRefernce" heading is a list of library files. The "Default" reference contains the list of libraries to be searched when nothing is specified. The other lists can be accessed by specifying the name of the reference on the [Libraries] field of the "Link V6" form as follows ... Link V6 Object modules MyFile.obj Run file MyFile.Run ... Libraries (Services) ... Note that none of the libraries in the Default list are searched when another list is specified. :Details:Yes :PackCode:Yes :FarCallTranslation:Yes :LibraryReference:Default :LibraryFile:[!sys]Ctos.lib :LibraryFile:[!sys]CtosToolKit.lib :LibraryFile:[!sys]ENLS.lib :LibraryReference:3.3.3 :LibraryFile:[d1]Ctos.lib :LibraryFile:[d1]CtosToolKit.lib :LibraryFile:[sys]ENLS.lib :LibraryReference:3.4.0 :LibraryFile:[!Sys]Ctos.lib :LibraryFile:[!Sys]CtosToolKit.lib :LibraryFile:[!sys]ENLS.lib :LibraryReference:Japanese :LibraryFile:[sys]Ctos.lib :LibraryFile:[sys]CtosToolKit.lib :LibraryFile:[sys]ENLS-J.lib :Details:Yes :LibraryReference:XVT :LibraryFile:[sys]Ctos.lib :LibraryFile:[sys]CtosToolKit.lib :LibraryFile:[sys]ENLS.lib :LibraryFile:[sys]XVT.lib :Details:Yes :LibraryReference:Services :LibraryFile:[sys]Ctos.lib :LibraryFile:[sys]CtosToolKit.lib :LibraryFile:[sys]ENLS.lib :LibraryFile:[!sys]Mouse.lib :LibraryFile:[!sys]Forms.lib :LibraryFile:[!sys]Exec.lib :Details:Yes pasmidCTAsm 12.2.0p??SEG??SEGHEAPMEMORYSTACKSTACKDATADATAMEMORYMEMORYCONSTCONSTEINQQQDATACOMADSCOMADS COMADS_DATACOMADS COMMON_DATACOMMONCOMMQQCOMMONENTXQQCODEDGROUPhht ˜hOh h X hژh֘hҘx`,  UPCX87STKHQQ ENDXQQ.R BEGHQQISPROTECTEDMODE BEGXQQ8QENDHQQPNUXQQ EMSEQQ?CLNEQQCSXEQQRESEQQSTKBQQRECEQQREPEQQ INIFQQCURHQQREFEQQ4 ERROREXITENTGQQEXITWRITELOGfProtectedModeGW *^|ɠ?;A  GDF2 UF @v FFSPvr TTT"V$V*V,V .U VVo 8ؚtʁ Žм &.+>t.\UV V U%.28;>ADGMSW^aVcVf]hT  U]- 8emul>oemr7alt.ASM1BCOMMONDGROUPINT_CODEDATACODE MODULE_DATA COMMONDUMMYOEMR87HH`h Ԙ8^VCHPRQQENDXQQ _FATALERROR_ _GETMODULEID_CMOD_SETTRAPHANDLER_SAVR87INTR87?WSTYPEALIASSN<CTCR87 OEMS87 EXCX87!OEMX87oTSIR87TSRR87ɈѠ 070F01<8087> ÌVj U]P..>PXPX.t,SQVRWU.؀&t 2]_Z^Y[qtX..XO &&,2 8 > JPT_LUooU]URVWSPQ3P&3یȎ26^Ë>YX[_^Z]ˏ[$)&.17DJX[ DT U]ˎS0U]SQWV. t3ێË>^_Y[˻ R  ˏ&gQxt$TITLE('FIRST V700AM01 === 10/30/91') NAME FIRST ;MODULE_DATA SEGMENT WORD PUBLIC 'DATA' ;VERSION_MODULE DB '700A01' ;MODULE_DATA ENDS ;******************************* MODULE HEADER *******************************; ;* *; ;* *; ;* MACHINE: B38 LANGUAGE: ASS V12.2 OS: CTOS II *; ;* *; ;* DESCRIPTION: *; ;* *; ;* THIS MODULE ORDERS SEGMENTS FOR THE LINKER. IT *; ;* MUST BE THE FIRST ENTRY IN THE LIST OF OBJ MODULES. *; ;* *; ;* *; ;* *; ;* *; ;* *; ;* HISTORY: *; ;* *; ;* MM/DD/YY VVVV/MM PROGRAMMER / DESCRIPTION *; ;* *; ;* 10/30/91 700A/01 S. L. Ruiz / Added FARDATA data segment class. *; ;* 01/22/88 061A/01 M. Chen / Removed extraneous segments and added *; ;* others. *; ;* *; ;* *; ;* TITLE: BTOS SYSTEM SOFTWARE *; ;* *; ;* PROPRIETARY PROGRAM MATERIAL *; ;* *; ;* THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE *; ;* REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE *; ;* OR UPON WRITTEN AUTHORIZATION OF THE PATENT DIVISION OF UNISYS *; ;* CORPORATION, DETROIT, MICHIGAN 48232, USA. *; ;* *; ;* COPYRIGHT (C) 1980 CONVERGENT TECHNOLOGIES, INC. ALL RIGHTS RESERVED *; ;* COPYRIGHT (C) 1987 UNISYS CORPORATION *; ;* ************************************************************************* *; ;* *; ;* UNISYS BELIEVES THAT THE SOFTWARE FURNISHED HEREWITH IS ACCURATE AND *; ;* RELIABLE, AND MUCH CARE HAS BEEN TAKEN IN ITS PREPARATION. HOWEVER, *; ;* NO RESPONSIBILITY, FINANCIAL OR OTHERWISE, CAN BE ACCEPTED FOR ANY *; ;* CONSEQUENCES ARISING OUT OF THE USE OF THIS MATERIAL, INCLUDING LOSS OF *; ;* PROFIT, INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES, THERE ARE NO *; ;* WARRANTIES WHICH EXTEND BEYOND THE PROGRAM SPECIFICATION. *; ;* *; ;* THE CUSTOMER SHOULD EXERCISE CARE TO ASSURE THAT USE OF THE SOFTWARE *; ;* WILL BE IN FULL COMPLIANCE WITH LAWS, RULES AND REGULATIONS OF THE *; ;* JURISDICTIONS WITH RESPECT TO WHICH IT IS USED. *; ;* *; ;* *; ;*************************** END OF MODULE HEADER ****************************; DGROUP GROUP HEAP,MEMORY,STACK,DATA,TRANS,CONST,STATICS,COMADS,COMADS_DATA,COMMONDUMMY,EINQQQ,COMMQQ,MODULE_DATA,ZeroData,AQMDATA HEAP SEGMENT PUBLIC 'MEMORY' HEAP ENDS MEMORY SEGMENT MEMORY 'MEMORY' MEMORY ENDS STACK SEGMENT STACK 'STACK' STACK ENDS DATA SEGMENT PUBLIC 'DATA' DATA ENDS EINQQQ SEGMENT WORD COMMON 'DATA' EINQQQ ENDS ZERODATA SEGMENT PUBLIC 'DATA' ZERODATA ENDS AQMDATA SEGMENT PUBLIC 'AQMDATA' AQMDATA ENDS MODULE_DATA SEGMENT PUBLIC 'DATA' MODULE_DATA ENDS TRANS SEGMENT PUBLIC 'CONST' TRANS ENDS CONST SEGMENT PUBLIC 'CONST' CONST ENDS STATICS SEGMENT PUBLIC 'CONST' STATICS ENDS COMADS SEGMENT PUBLIC 'COMADS' COMADS ENDS COMADS_DATA SEGMENT PUBLIC 'COMADS' COMADS_DATA ENDS COMMQQ SEGMENT COMMON 'COMMON' COMMQQ ENDS COMMONDUMMY SEGMENT BYTE COMMON 'COMMON' COMMONDUMMY ENDS FAR_DATA segment word public 'FAR_DATA' FAR_DATA ends END st all object files and their prerequisites. #======================================================================== # The source file tmpl6Alt.pas is created by executing gentb6.run # gentb6.run depends on gentb6.pas and musInt87PLM86 V2.303/06/95 10:21:5ٖ0STACKMEMORYCODEDATACONST INT87_CODEDGROUPbh@vHHTD KOOEMX87TSIR87TSRR87OEMS87' HANDLE8087INT1HANDLE8087STACKVLCHECKERCPSENDWAITEXITINTR87SAVR87XXXHANDLE8087STACKOEM87CHKF D 062E01UVV6RV7U]V ̠ U]˨ U]'U]g )1UQs6FPF]  VV#$VUQQ6FPPVVVNtchk87DGROUPDATACODEOEMR87hhp` CHPRQQ _GETMODULEID_EXCX87Ԑ WSTYPEoOEM87CHK1ѠYtUP6PPP=tF2=s<=t=t3>PXPX 3>PXPX>X]tVB &%=AHRV^dl͊tint87aDGROUPINT_CODEDATACODE͘h`ۚ` RGBSAVR87INTR87UPCX87b SAVR87Ѡ!U6.&7]Ϭ &t intr7altFIDRQQFIWRQQFIERQQ4INTRQ7COMMONEINQQQDGROUPDATACODE COMMONDUMMYSH X`8P͚]IALLHQQGETHQQCHPRQQNOREQQLCWRQQEXCX87OEMX87UPCX87TSIR87: BIDTQQFIDRQQ BLDTQQFIERQQ9BMDTQQ6BODTQQADPTQQhBASTQQABSTQQRADTQQ2BRDTQQRSADTQQ-BCSTQQRCDTQQxBSDTQQBDSTQQSCDTQQsRDDTQQjBTDTQQDSDDTQQeMPBRQQ,BISTQQ|CHSTQQRIDTQQMPDRQQASIDTQQBLSTQQRLDTQQBMSTQQRMDTQQ@SLDTQQ MPHRQQ;BOSTQQSMDTQQ;MPIRQQ4+FIWRQQRODTQQSBPTQQpSODTQQRASTQQDRPTQQ|BRSTQQSASTQQRRDTQQ\RCSTQQBSSTQQSRDTQQWRSDTQQ"SCSTQQRDSTQQBTSTQQDUPTQQRTDTQQNSSDTQQSDSTQQDVPTQQxSTDTQQIMPPRQQ>RISTQQMPSRQQ$TUGRQQwSISTQQRLSTQQRLTTQQRMSTQQSLSTQQMUPTQQlSLTTQQSMSTQQROSTQQSOSTQQSRPTQQtRRSTQQSRSTQQRSSTQQTRTRQQRSTTQQRTSTQQSSSTQQSSTTQQSTSTQQ~INITIALIZECODEADDRESS* FLGX87 INIX87Ij RNBX87!BADTQQ(BCDTQQnBDDTQQ`ѠVIA 2 (U]P> ..X6FF FFF FW $U]zV ,U]ڜzU 4U]i{T;U]˞S>U]˛R AU]ǜzQ#IU]t P˚;& &&9PhFTOlܜFT Np˸FT Mt˼FT LxˠFT K|ˤFT J֜FTI˲FTH˭FTG ˓F &- FF>E M FFAD ˁC & FF>B # FFAA o@ &7FR?YFT> a= & !FR< CFT; S: &$FR9$FT8 E 7 &,FR!6,FT"5 7#4 &4ϜFR$34FT%2 )&1 &<˹FR'0<ڜFT(/ ).  &˰ FF>*- М FFA+, ,+ &ˆ FF>-* "˦ FFA.) (/( -&˺FR0'2ܜFT1& 62% ;& ˤFR3$@ ƜFT4# Dڠ5" I&$~FR6!N$ˠFT7 R̠8 W&,hFR9\,ˊFT: `˾; e&4RFR<j4tFT= n˰> s&<<FR?x<^FT@ |ˢA &6 FF>B V FFAC ːD & FF>E , FFAF ~G & FF>H 6 FFAI lJ & FF>K R FFAL &,̜ FF>M ,2 FFAN &<ˬ FF>O <̜ FFAt oemr7AltDATAEh EXCX87ѠWt;1'",6@RCSTQQINIX87SRDTQQTSIR87RMSTQQSISTQQBIDTQQRADTQQMPPRQQ@Y;h'T,6m1JO^"cEsSOSTQQSRSTQQDRPTQQBODTQQSCDTQQMPHRQQFLGX87BASTQQDUPTQQBTDTQQMUPTQQSDDTQQSDSTQQMPSRQQTUGRQQSMDTQQRIDTQQFIDRQQ intr7alt!'@6E",;1KSSSTQQBSDTQQRODTQQRASTQQBISTQQRLTTQQSLDTQQRTDTQQSLSTQQBTSTQQ oemr7Alt! ,Q'@V`"1;6[EejoBRDTQQEXCX87 ABSTQQBRSTQQSSTTQQSRPTQQRSDTQQSMSTQQRISTQQOEMX87INITIALIZECODEADDRESSBDDTQQOEMS87RTSTQQADPTQQBMDTQQSADTQQJ'1@"6,;EOTSCSTQQBOSTQQBSSTQQRRDTQQRRSTQQBCDTQQBLDTQQRDDTQQMPDRQQBDSTQQRMDTQQSIDTQQint87a!NcD0^I"+TYp:5?kuROSTQQRSSTQQSAVR87HANDLE8087STACKDVPTQQSBPTQQRCDTQQSLTTQQRLDTQQRNBX87RDSTQQOEM87CHKFIWRQQBLSTQQCHSTQQ HANDLE8087INTInt87!chk87!;,'TY16JOE"^@cBCSTQQTRTRQQWSTYPEMPIRQQSODTQQRSTTQQSSDTQQSASTQQBMSTQQSTDTQQRLSTQQSTSTQQMPBRQQTSRR87BADTQQFIERQQ COPYRIGHT (c) 1980, 1992 CONVERGENT TECHNOLOGIES, INC. ALL RIGHTS RESERVED COPYRIGHT (c) 1994 UNISYS CORPORATION. ALL RIGHTS RESERVED THIS SOFTWARE IS PROPRIETARY TO CONVERGENT TECHNOLOGIES, INC. AND UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF THE PATENT DIVISION OF UNISYS CORPORATION. THIS PROGRAM IS FURNISHED UNDER A LICENSE RESTRICTING ITS USE SOLELY FOR THE OPERATION OF A DESIGNATED COMPUTER FOR A PARTICULAR PURPOSE. TITLE TO AND OWNERSHIP OF THE PROGRAM, INCLUDING THE SOURCE CODE, SHALL AT ALL TIMES REMAIN IN THE NAMES OF CONVERGENT TECHNOLOGIES, INC. AND UNISYS CORPORATION. LIBRARY: Pascal8087.lib VERSION: s7.0.11 (monday may 1, 1995, 9:19) GW /-m  uhN”jsLVCopyright 1992 Unisys Corporation. All rights reserved.Ver 12.2.0 Linker x12.2-FSF"_ oP1@:OT `e/0p`xO?P?СpO?Че?poO`o o@P`_@_/@op/?/@?pO/ _P   "4-c/-40O9 P;EJ]/m*'(" )#+i7* %e/!)w |                                 ! & + 0 5 : ? D I N S X ] b g l q v {                     Dv4666 6 6f f?f|ff0f f@ff `^``'`O```h```5` pN6NsN/^I=n===aW|WWWWd~2Ee&0++6RSRRR:R ,,,i,rq)[H[^[s[[[[[[[[[[ [7[R[s[%A^Dcat!N`=KPK[plppp}}}}} } } } }- }` }' }p }B}f}}}B}Th111;!6f`NWX]=W&+KR,Te 1M[K]hp}r $ &`'@*-.1@2234      B.X.b.l.v...............ò.Dz.˲.ϲ.ֲ.ڲ.޲........... .....!.%.*...2.6.:.?.C.G.K.O.T.X.\.`.d.i.m.q.u.y.~..............      %  e   T [  `  !  g   P  M }  3   C      R   L .  /  8 " 4     t  [ K       .  $ B Q  $ ' =  H        q     8 j c       N : 6 W @ J  )   &  h 5   Y 1 X        _ r     +           |    ^  ; ]      S  V   x   a V G \ t   s    e  O  p       M  ?     m  -  k * D  ` ~   A    G    R )  l     \   (  z   7 H   n  W  0    F ,    2 B 3   u U = I  E o   Z   C   {        d a  < k y j    >   f #    b L   o w  p      9 z v       f     u   Q i    O1Z1i1f;; ;$;b;z;y;;;;R;[;c;k;p;x;;;;;;;*;9;M;R;\;h;s;};;;;;;G;P;;;;;; ; ;W ;L~<)|k q8LQVcMm  % 2 H a |       # 2 B N V ^ q       0 9 B J V ^ c r w           ?   k !6Rh'5?_hG094$/)R#$>\(Ac~ F](3q| "0:H`jt~2i*49>[es}$>Yeoz #[" ' ] k y      $ y         L [ w        -;Vmw6dirS<Xiu})R/8pKo-5D`n|QV!!!!!! !(!0!S!!!!!o!~!!!!!!1!6!C!!!(!I!!!!!!I!N!V!c!!!%!8!A!V!!!!!!!! !~ ! ! ! ! ! ! ! !& !7 !I !p ! ! !7 ! ! ! !T !N !m ! ! ! ! ! !!!$!S!`!!!!!!!!\!d!s!!!!!!!#!<!X!y!!!!!!!'!;!666666666666 6+6;6E666666666@6E6J6Z6e6j6r6666 66)686N6v6666666 6!606R6a6f66666666r6666666'666p66666 6 6' 6> 6h 6 6 6 6 6 6; 6J 6O 6h 6q 6v 6$B]|Mr$4U-Wi"GOf}fffKffffffff"f,f2f<fHfRf\ftf~ffffffff'f2fff f fa f ff f f f f5 fT f f f f fs f fPfff` ``'`,`A`M`R```l`u``````9`W````'`7`q````` ```&`A`R`W`x`````` ` `0 `H `S `] `b `l `v ` ` ` ` ` ` ` `+ `C ` ` ` ` ` ` ` ` `M ` ` ` `E `] `h `m ` ` `X `` `k `p `x ` ` ` ` ` ` `.`3`A`Y`c`````````7`?`G`O`l``"`?`w`````````*`M`k````````` `E```` ``#`-`2````[`````````-`W`i```````````&`4`;`      B.X.b.l.v...............ò.Dz.˲.ϲ.ֲ.ڲ.޲........... .....!.%.*...2.6.:.?.C.G.K.O.T.X.\.`.d.i.m.q.u.y.~..............z..#Q /X]f]r+c}z BG: .W@WWW> B zLhKTl&&6+KKRRR;RqRRRcRRRR"RNRRRRR=RuRR4(Io.LAPXqr!Tq,,,,1,=,`,#TATT.emee&egeeee.,pCI9`P s6  #1`111K1v110MM#Af8w#Af(M!V J l  !&+0hhhpU}X}}}u}}}9}}} }}(([Kbd][Vid]M[Lpt][Nul][SysIn]3[SysOut]8V`[[ejyBotp` fkfkfkR f$ B =G\ >N>h   0123456789ABCDEF [Sys]     [KBD][VID]U[scr]<$>BsFilter.tmpVNVF        .)[]}[!Scr]]$$.Tmp}[!Scr][!Scr][sys]LptConfig.Sys&[KBD][VID]TQTTTable of offsets to procs in overlay # not sorted. This causes the search index to go out of bounds. Call Technical Support.$ []}[0123456789ABCDEF-Old.user{}[<>]>^II120A00 {}[]<^MASTER{}[]^<><[]^Press NEXT PAGE or SCROLL UP to continue(Press NEXT PAGE to continue/{ 52BL0-c4~P9 0l>"/m}+ g { IW#^9X[/LzN"i3!9f. r K>8rF M} `$1M?^ Qm B  )x]C "0wO(ig t  7+$$$$$$)$*$,Y,m,,4+4P4<DDD.DLLLLLLTTQToTTTT\ \p\\dllt||)EGv,Cj{t*G^'%ZwEpX $$,o,44 44444#4<8<o<<<<<DD(4-4LWLT\ddddddd>d0d d dllElt|* $,+$48'<(D*LM "T\d l)t#|+iC7*  0%4e/ ꌀ 6#!5(},)$ME  $IuO@ p  /  AD2b%y)rC!# [ 9Mt&'l9.  V !Vw;'z!#%k)*%,/0E1#k~xy.A     3 `-%%&(a))w*+,..y/60y051A3c444k8ZPc q`96`P`D;| N   & N|4b 0.p~   }    :xP&d GPRl!" / m  ~Mj7Kz' v!(.)u) *(+-_-N..//o00123348,8~88)9:R<<>BcCCQDE GiHKMOuRRRU.WXYr[\^aabcbbccddeeefiiklmlll9mmnn-ooDpQpppmqq_r~rrr^upuvwx{{ }}~nSyȂۇM3CՑYɓ yg?@h)'͟4PtС`p}Bh)*Щ)=Ъc `y?p?$C&SoP` W<SzKp '>h:WkzV0@!P0.3@HK0`0`ejoty~J~2?KpPKP?h U@12.2.0UvsRD&jAt!t1ğIF%]6IPVjAɚ jAĸ2PUv Fٴ ˬ 32]Too many procedures (both public and private) in program with overlays @static0000 Offset of data in ( ) exceeds the current maximum of 64Kb.Bad object module, data offset too large Bad object module, data record too large DUP record too complexProc near in doesn't follow CALL/RET conventions Us-@=rP>P8^ ㋇X=F4&@&N<&p&022&GF&G F(rP^SFPvQQX=QQQP!]U2s!rrrr r^^F1PMF1@uƆ(sQrrs1 T5HPM]UU2^F>uk?FV tTTPiPFPP vP mPrPP?P8FVFT5H=vP?P8AP6^㋇X=FI@&;2vdU2FIvF8&I@&IxAVV(rnui=rAP6Ig )F t(r@&;2vIvAxAAxAA>xAA򪠍rӠr̠rŠrrrv<&p&0222s&Gtr r>AUu>Au>At>AuF/vPs(s{FV5HN;rh$&;FuS(&FN;wBxA;v8+F؀Au*A.t6u^AuF/vPP>Fu^㋷X=8&NFI;wxA;vӋ~&+V+щVڀAuA<.t<6u^AuF/vPP,rGAAt>uu>Au /AFN/sYrHFrAF(s6r/P6/PPP F FrFs%rrrv6/6/>]STATICSCONST StaticsDescU$F@F޹ F,P2P*P(2(pr2,ٌٸ@P֭P*P(rDFPP*$P(FFFPFP*P(^SvDP(FPP(F1FFV,FVFFF tf9Ns^;vNFFFPFP*P(^F≇ ы^NҌ QP6F)FF듋FѸP6S ѹP6P P*P((4525L5R52lAV2\2L226585:5<5/6F6Fܚ2PP ]Ud2 f2j2l2n2p2r2t2x2@z2|2~2h2]U2P6p2 2P6l2 s52P6x2 2P6z2 2P6|2 2P6~2%2P6t2 2P6j2 2P6n2 2P6h2 ]U 2;2rP6$sIII2J5PPRPPP636^F>~tIFPP^F6V5ZA\A,&&P^SPPPP6J5PPPv!]U u%"F ]II021E00Relocation offset of target is too largeRelocation offset of 'from group is too large Program entry point at (. Referenced in near module offset h.' LIDATA Fixup Overflow Relocation Table Overflow Illegal segment address reference type . Base fixup inPointer fixup in data code to data code at 'Unrecognized fixup type, , specifiedCurrent fixup segment is 0.Large-model overlay fixup failedRelocation offset of near reference to 'is too largeUQ^&G&G&G&GF $&V pVu?&W.^nuuu^&G(^&G^Pv&D㋇*&D]UQQ^&G&G&G&GF $&V &WN &Ou&O^&G ^&_L$v&D㋇2&D^&u@>u+?FV t P>$FV^&G ^&G]U^&&G&G&G^ &_.^ &?u'&_㋇X="^ &?u&_㋟zA㋇ 3^ &G^&Gv&|@&&D8&&D^ &GF$&^&OS(&_[&GtuD^&u&^&^ &Gv&D~ &u0&^ &G^0^&wS@&_[^ &G&G^&G&G]U^&&G^&_. I^&?u'&_㋇X="^&?u&_㋟zA㋇ 3^&G^&^&7S@&_[c^&w$&^&tu^&Gv&~&u0&^&G^^&G&G^&&GuI^&j^ &Gv&D^&Gv&^&G&D^ &Gv&D^ &G&D%^^&G&G&G^&G&]U ^&uv &D&GFF^.`p&&&&&^.|v^ &w&w^&7&w r{Fry^ &w&w{ F tb^ &w 3@&9^..Xv^ &w&w^&7&w F uT^ &G^&Gs<^ &w&w^&7&w F ts^ &w&w{ e^ ^ &<t<t&w^&`&&P&+&QFuFrqsj^ &w&w^&7&w F tI؋ 3^&@&^&G^ &w`&&P&+&PNVFV uFVF^ &OF~u~s;vG^ &G;3u8&;2w)6PIPNPF tPg F^ &Gr v&D&G^.^ &<t<u^&G^ &G]U1F@u1FPFPvFP>45u[FPFP}FPFPFPFPvFPvFPPP+FFFN45$5 ]U1Ft1Ft$؋2&FP":t~_s1F^؋X=Fv8&F>45u@&45$5 >T5w1F@":u$1Fu^FF1FF":uP1Ft$؋2FP":u^؋X=Fv@&R5s]UfPs 645`&&P t RP645`&0P:PM6$5Ps8P645#PP:PM6$5P)PM$]U츂PP6IF8&+PPP$]UQQ>Ft<^S6F,&p&0^FG PP]UQQF$Ff^F~u ؋X=~u^㋟zA㋇ 3FFsF^PF*F^LF2]UF>2t 2IF>2t F;Fu30F t,N;2w#<&p&0^F&G FF]U FF>2t 2IF>2t F ;Fu30F t,N ;2w#<&p&0^F&G F>2t F;Fu30F t,N;2w#<&p&0^F&G FF;Fu u]U.U2rp>ulF+IFءvAN N N NN NNNNN=MrPP8QFP62vARPB vAs-~t~u!F FFFF FFFFFF t ;2v_;2wYsTv&8t @Pv`&FFFPFP62H5RPB H51Tv&8tr2s@Plv&$<u)FvԋFF֍FP PP^܌Fޠssv`&&PFFFrVPFP626Z26X2B X2Z2ףX2Z2,F؉VڃuvPKP8~uLPFP622RPB 2+F FFFFFF FPFPv ]UQv @&F^;2v2r Tv&8txF ;J5u&FuiT6I&8uVh&uL^ET6I&8u<hv&":u(~u"T&8th6I&u^]U3㋷ 3@&;>uJv$&0@&0h&u+>@sV2IPIRPIF HF ؁?t ^ ^ C^ ^]UUsUF>2t*T6I&8uh& t\&)FV9Vu9FrFF)FVFVF+NFF~tsv vvP22FV%+NF;rFFFFVF)F^A62FFF]U>@s!F+IuV2IPIRPI@F HF ؀?u-@F @F @F NV+щV؉3^ ?u/C^ FV+ЉVى^ C^ F ]UPF PPP~ u.Phv&u@FPPv6tLPhv&uflPPv6trPvg ] U6FҴFFFF߈FӉFԉF։F؉F1FV£@AFI@F1FPFPvFPF <w<u'xPF PP Pv~ uF >IuPPg KsVKI;u6~ u0Fr)>@u"~\uAt+JtfPvg FPFP}FPFPFPFP8Ft5~u/8F u'>@r FHF؀?u A6D^v܍FPvFPvv+Fr~t~u~t 6I~ 6I~`&&P&+&QFVFVF~u~sFs$PP Pvg F+F+FF؂~ uF؋FF؉F؂~ u ^^FFss-~u F <t<tvv~t@PFPrF8F uGN+;:u=>Ju6I;u,F9@sV2QIRPI)@)F)Fs>@uv@&+;IsgK>3㋷ 3@&0`&&A&+&@6I8&v@&+£D|DF;J5tN~ u^FFFԉF̋F؉F΍FPPP^F uJ5F^&GF؊Fs3㋷ 3@&FF |>@sV2IPIRPI@FHF؀?u#6@F@F@FNA؉tFsZ~uTvvFPsAFsMFF:IF Jv@&F֣BKsPv 6IvvtTssRFtV:u#NҋFFN>t7^F-8Fu&NִurxwF FsF^ .AF؋^F؋^~u8Fu6IvWP~uFL~t-~u'F;2v;2w`&8^?FU2s v֚^v֚#^F<uv~u":u6IvPQ6Iv$6Iv.2sb8Ft[8FtVF֋2;wK9NwF6I`&&Q&;Pu&;u"vh&tvvvWsF؋^^~uFO~t-~u'F;2v;2w`&8^?FU2s v֚^v֚#^F<tj~uC:u)6IFPPQ@Pvv(&0v06IFPPv6IFPvvҸP^7PP ]UQsv^F t FHv`&]UQs3F;2v;2w APvX&F }^FF]UQI;BuJAP6@FP6,s6IIFQAWP6;ъI.@P6']øAPI.@PFP6,s6IIFQAWP6;U~ uF ^^F t-FF F V ‰F~tr#F%PN^Xt9s26I@&0h&tTAP6xA66">T5v{1FHVINNB.F$PF$PP 6IFP 6IFPPܠTs/AP6xAFP6,s6IIFQAWP6;ы]$ DGROUPCODEDATAInternal error (Node hash index = 0 and no index passed in). Internal error (Node hash index and index passed in not equal). Internal error (invalid hash index) UQ^ &^&:u9^ &FFt-ȈF^ &H^&P:tފFs2ʀ tа] UQIP6r2 r2ڮܮ ڮܮ>֭ FFw^㉇VXFuܡҭԭPPPz22lA&G33lAQPPz22ZA\A^A`APPPz22ZA\AnApA]U~u~ u$P2P8F'F +FV;s;tbP2P8F]UQQFV;ܮu;ڮrIQP&@&+PQ^FVVXFV]U ff v v^FF &=vI&wvF؋VXFV9V u9Fuv[FVFVFV ^&?u&F &G^&PFRV FV_^22^F &6jAFV]U v v^FjAF^.Pv v PbAdA2FF^.F^&Gv&D&T&&WbAdA^&G&Wv^]U v v^FjAFv v v PbAdA2FFN F^&Gv&D&T&&WbAdA^&G&Wv^]U v v^FjAFv v v PbAdA2FFN F^&Gv&&T&&W6jAbAdA^&&Wv^]UQQF V ZA\ARP&G&WbAdA6dA6bA^F&G:Ft;^&&WbAdA&ůFr6\A6ZAv]Uv lF֭&&PZA\A\A ZAtFrF v֭&&PFV uFF؋VXFV^  PvvvZA\A2vS֭&&x^[&&&G&G&W~ W ^vZA\A֭&&PNt RPQe^6\A6ZA>2uF<t < tFF^ SG Pvs6\A6ZAvvL]&&WZA\AUv & ڭFڭPvv]U9Vu9Fs 9Vu9FrP2P8]UFF=v֭&&PFVFV uvvvRPPPvv^FF&&WFV&G&WFVvvv^Svvvv^F&&WFV&GFN:tu ^S^Svvvvv^F~tFV냋FV#Ft]CODECOEDDEBTYPDEBSYM$$TYPES $$SYMBOLSOdd length STACK in , rounded up. Total size of is h bytes;Segment size exceeds 64Kb Size mismatch for communal symbol "" in file vs. communal symbol in file Length for near communal " is h which exceeds 64KbMultiple Multiple definition of public symbol "definition of communal symbol "" in a code segment of file already defined as communal symbol already defined as public symbol "" in a code segment Module # .asmToo many segment or class names Too many segments Re-assigning STACK segment in Too many groups Non Fortran 86 module(s) in overlays Invalid object module U>2t]˸*P?P$]U$MPvP6tcPv vPhPqP5P8]U>2u[PP^ SP$P$Pvv$]UP^SPv v P P$]U2sFF~uF-v<&p&0^F&G":uFF 222&t&w&72ߊFr5^&62&:L u%t ~^t+JYuFr >2t>2t "P ,PFs6TP^StP$vPFsFs PP$FrFsPP2G PPFsFr$P$] U 1FQP~tLPPP22ZA\A6hA6fA^F&G&W6hA6fA^F&G&G6jA^&GXAޮs0P6XAP)PP$F+Ft%P+PQ$u sd6hA6fA^F6jA^&G& Gu;Ƃ!PPP22ZA\A^&G&W]U^F t-FFHN;r^@FT5wk>VAr/P3P81QP2s P"PPP22VAZA\A\5^5VAƇ߮u0PPPrOPPPsA6:v5*򤍆PPPs VAƇ߮wspP PPrPPPs VAƇ߮@7PPPrP PPs VAƇ߮VA]U"2;2rP6$2;2s>2rPP4P81FF߂~t)<t%<t!<t2LJX=2T5HPM~uFV1FᚸFVF蚎F1F^㋇\5^5FVFuF^^5\5PPL^F tg&G&W;Vu;Ft0^&G&W;Vu;Ft&t&w&7^F^&u &G^&GFދF Ft~u ^^5\5PPL^Fr0^&G&W;Vu;Ft&t&w&7^F^&8Gt8^^5\5^^5\5P^Fr2^&G ~&G FV&G&WF&G&G&GfAhA&G&Wv抄߮":t(^&u&v抄߮@":u~芅߮":u߮&G^&Gt&O462&bAdA<&&P2^&G FNul3 t;tcP$F3Fߴ#F#V t FV^&GFVFV t:FF/F$<u&^&GFV&G9Vu9FsFV~u^&G@%~u^&G% ^&GFV^&GV:s&G$ &G~tHFVFVFV uFV-2FꉇX=26jAvvv F^&GvF8&2FꉇX=26jA]U F^5\5PPL^Fs lA&GlA^&GF>T5vw1FlAvP6P8]UQQ1FVuu X~u~uPR1~u~u%PR_YFV]UQQ^SPPz^F ðu@^ r2^SPPz^F u^S PPz^F^]U6V5bAdA0&&P6V5F$&F(&F^&GFs&G^&G F^&GFF&G&G F &G F &GXA&GF&G6jAV5@V52;X5r6.]U^F^ uF"㋇X=8&F>T5wƆ1>uP6ƆPP^rs.$u'XA芎XA%ƆPPr rsAĞ&G":u1PSPPĞ&wPĞSvP!2szrrse㋷X=<&p&022&Gt8P>&t Ğ&O Ğ&gPK]U1^F uFFꚸ^㋇X=F8&Fv<&p&0^F&GF>T5w1QPs!F1F=u,F"F1Ft 1PPP^Fs0SvvvPvPPPP!F+F6V5(&Fv<&p&0^F6jAF^&G]U>T5wƆ1>uP6PP^F1T5wnZ5@Z59X5sV5NV56.FV5Ɔ1>uƆP6PP^8vCX8u;8u58u/:s,ڀrs.$u'XA芎XA%ƆPPP^FP PP^F u F FuPPP^F/F Fu'^&Gt&O^&g6jA]UQ2V5Z5VAТF1T5>u}>uFr#>zu}>uO}>uo>nu F>uiuiuƠsu]Fr*s%rr6T5Ms]sV>~tOrHP7>uF*T5HPM>T5u 1FzP9P8]Too many segments Too many groups Internal error Internal error(expected a public) Internal error Line numbers for H Invalid object module U2;2s>2rP4P81FF~t)<t%<t!<t2LJX=2T5HPMx~uFV1F隸FFF1FFtL^^5\5PPL^F^㋇\5^5^&;Wu&;GtS&w&7΋^^5\5PPL^F^&G&W;hAu;fAt&w&7ՋF Fu :P^&G FF$<u+FtF^&G+Fv@&8\&IF$<tGv8&~&EF~u@%~uF%vvF8&F^&G2FX=@&F~uFV`&&PcvX&F^&GuLT~&9u? ~d&8t;^s^يF$<u F;bsbًF؋vX&PF;`svd&8t`٠2s.^&G":u6hA6fAFPv8&0626jA]U F^5\5PPL^F&GFް㉇zAް@ް rP6P8T5HPM]UT5HPM]U>T5wƆ1>uP6ƆPP1t 1Ɔ8vHX8u@8u:8u4Ɔ:s,ڀrs)$u"XA芎XA%PPP^F utQSP^F&G& GurA6\A6ZAP^FfAhA^&G&W6jA6V5(&$&^& t-s>~u&G t@&0T&8tu6V5J5$&^&G I(&r>L53V 3@&0`&&Q&+&P^(&q6V5^&G(&^&G":u $&/^&u6V5$&6V5^&G$&6V5^&G 0&6V5ZA\A,&&PV5@V5;X5r ;P:]U1^F uFFF^㋇X=F8&FF>T5wƆ1>uP6ƆPPF1t 1rs)$u"XA芎XA%s*PPP^F t& t&GI2sOrrs:^㋷X=<&p&022&GtvvP>]U1^F uFFꚸ^㋇X=F8&Fv<&p&0^FF&GFƆ>T5w1QPF1t 1PPP^F u <P^&GFN;FvF+FFƆ6V5^&G(&^&G$&6V5ZA\A,&&PV5@V5;X5r$P8P8!s0v<&p&0^F6jAF^&G]U>T5wƆ1>u P6PP^F12t*T6I&8uh& t\&)FVvvV2IPvvޚ NFȋxAʉN‰FFF;Fsh؊tXFV62RPP^F6IFIP62&4^&G%P&G%P&7&w&w FF됋FIF~t<^F؉^NF~tvv FNFFN뾋F]U2t*T6I&8uh& t\&)FV3;Iu-2I;w"xA;w1QA+IPV2IPPPvvV2IPvv xAI%FAvP FxAA;r]U1F^؋X=F@&FI9Ft|2sh t$gPPv<&p&0^F^&t &w&7^G P^&G P$$FI>T5w2s>r $FPPvF8&F2s6hA6fAvvP62sovP yPPv`&&P t RPv`&0P:PMvP{PP%]U2V5ްVAF1T5>u XFv>t)FsFT5FT5XFT5r us>uOe>zus>uz>uilu.ost>t>u:>t>un'>pu >u2r2sy>u1r#sr6T5MsIm>u_>ur rrT5u 1F*P9P8] Fatal Error: Error: Multiple Multiple definition of symbol in file Warning: No warnings detected There were warnings detected No errors detected There were errors detectedStatus Code: pos: Unresolved Externals: Cannot open file An internal failure has occured. Module not found in in file(s): Linker Unresolved Externals: UrA'ТP^S]UrA>It $IP^S]U>2t P %P/P^SEP$]U>2u*tA>It $IOP^S]U>2t 'rFv6#F'Т>2u,>tAuYoP6tAP |P>rAuP6rAP P$FPP(^&Ƈ%>tAt&%>rAt ^&%s ^&%]U$s$>$~tPvP $vK&s P6F%sv  l]U 6hA6fA^F&G&WFV^&t&w&7^FFFF؍G PF Ft6(PMvv^F&O G P^&G )PM]U$sMtPFP6F>5)FVPFPPvP66]U vv^F&G&WFV^&t&w&7^FFFF؍G PF Ft6(PMvv^F&O G P^&G )PM]U^S'sP.SP$v]UP^S$$v]UPv]U $XANVF6585:5<5FV uFFFVfAhARP^F&G&WFV&GFu@&G &W FV&G&WFV&G~&G"F&GXA^&t&&WRP^Fق>~tr >J5uFFrZFtP6oJF FtD6hA6fA^F6jAG P&G PPP6e^&GctPG P&G PRPPrmP2S(P6XF t%O NF&O NNQPr>5FV uF FtvvG P6[FVuu\&O $$PG P66,PG P$P6hA6fA^F6jAFV^&G &W 'FV t"tPvv6F tP(sF FutP6F tP7$]UQQ^&G& Gty$FsN^& $u & ~u&G ,&G G ^&o ^G FF^S;P  PM^&G&WfAhA]UQQ%rSPIPPFPgFPPPFPgFPPPPFPgF6r6r26Q6 PP)666L(>426s66P6>2u6sQP.SP$P6F>It$PKx&s P6F%s)>rAtrA2S626rA66rA  l]Invalid object module; Read error (Input file) Write error (List file) Invalid object module; Name index out of range Invalid object module; External index out of range UQQ&s>P^SvFPgF t sP(1Pv8]UQQ~u+JV^SRsP^SvFPgF]UQFPPsPFPPFPgF]UQQ^GP^&Ps#P^GP^&PFPgF]UQQ^&S^&ws!P^&S^&wFPgF]U F~tMFȈFNNnN s 0JFA, NB~u~wN뭱F*ȵNBPQs!PFBPvFPgF]UF~teFȈFV~ V^v ^v s 0RFA, NBF Fu~wN땱F*ȵNBPQs!PFBPvFPgF]U~'r%~r~dr~ r]UFFFt?ȈFF t# 10F^&F 1F ʊF^&0뺋]UvFPFPFPFPsPFPFPFPgF]U00FFFFF F*FFF:FvQȈFFV ,FV Y,N~ +0FJFVFV uFBPFPs$PFBPFPFPgF]U PM]UQQT5>>5u*tPPP>5PF t QP8&F>5䰋]UQQ>>5u6tPPP>5PFuF t QP8]UQF)T5>59FvJ^6F>5)FFtPPP>5PF tQP8뮋^6䰋NFF)>5]UF)T5;>5w )>5H>5)F>5tPFP6FtPFFVRP6F t QP8]U)T5>5;sYNu &FtPPP>5PF t QP8~u&F>5F&F)>5]UQQFFFV]UQQ1Ft%P1YFF]UQQ1Ft%P1YFF;VArKPGP8F]UQ1Ft%P1YFF;V5r;2rv{PFP8F]II120A00Read error (Temporary VM file) [Scr]<$>Vm.TmpI/O error (Temporary VM file) Write error (Temporary VM file) WorkingDataRgRleRgPdhCgRgRqLableExportDataV8StringsCodeViewLinesCodeViewCodeLibVersionRgIDctImportDataRgRlePStubStringsTOC Attempting to access data in area for segment # ( >= ) Size of configurable virtual Linker area exceeded; default current setting in Linker configuration file is: :Max:Virtual address exceeds virtual area bounds Attempt to allocate data area failedU^く ]UQQFFH^;rみ t ;FsFFuڸ9FsFFH^;r?み t0;FsLJ ^F)^㋇;r@Fu]U OOtIjA;uVNFF tHF؋;NwVjAN܋jA tjA㋷ D&jAćIFFvvVjAD&X H&F=u~<6^SPF RPFP#F t QP8]U>t FV(NN^QSWQWRPF=u.^GFFNPQRPPvvF~uF t=u$P^SvRPPmmPFF t 6QP8jA㋇ % H&NuGNA>jAF&;v(W6찺 RP F Yu:6찋jAĿIWPF RPFP$F t$UPv8]U FFF ;V2vEF ;IuvFNF{F ;2uFNF{F ;2uFNF@{F ;2uFNF{F ;2uFNFF ;2uFNF̋F ;2uFNF볋F ;2uFNF뚋F ;2uFNFhF ;2uFNF OF ;2uFNF 6F ;2uFNFF ;2uFNF@FFrPN V2;v+ȉNF Pv .Pv P 2PFPP}P 5PFPP}P :Pd<P^SgPF`2ut}PP^SPFPP}P P0P8]UQQF Fv &H&+;w ~ WPQQv &F=u 1PvFD&jAu v Pvu jA~t jAF%II؎]Uv &F=u 1P~u1v &@&+V;w ~ WRPQvvD&Ft)ĴI^ FF FN듋vvH&F=u^ FNF ʋF FVFNF~t4F@vNH&;u~D&8uFNFF6찋^ SFPvvFP#F tPFF ]UQ~tbv vvP22FV%+NF;sFF)FFV^ >2FF 똋] UQQF~tlv vvP22FV%+NF;sFF)FFV^ v0>2^YFF뎋] U&Z2 X2uGЉFމVFVFF;2w(PFP626Z26X2 X2Z2FuσX2Z2%+ȉNڃs X2Z2FFV62RPP^F&G& uOX2Z2&&W6jA2FVFVWX2W62RP ^G G 0jAF62^&w&7P^Fv&;s!^&&WD T X2Z2&&W2FVFV62RPP^FjAF62&w&7P^Fv&;v0X2Z2~&&U^&G &W D D 6jAX^^&;v(^FjAF62&w &w P^F^&G &W vD T X2Z2&G &W vPv626Z26X2 X2Z2]UQQ^&@9wP639sN׉NVuvP6갡PPQF6&;vP68]Uv&F&HINFF;Fw'D&N;t &LJ Fuы]U F+;sNF tn;sdPFP*F=t=P(FF;Fsċ;sFN㉇IIF΋F1F닡+=r`+III+ IIII6捄III뒃>s P ]UNF;s>+;r5;s,^ IILJ LJV]UQ>t6찚F tP]__*&_PresMgrName ~~~~ExportDefProcessing Invalid object module Processing in Multiple definition of IMPORT procedure Procedure importation is INVALID for non V8 run files.Procedure exportation is INVALID for non V8 run files Export specified in module , Procedure exportation is INVALID for non dll. Unresolved Export in file Duplicate exported ordinal Incompatible window access mode encountered processing Incompatible initialization instructions Cannot continue Duplicate segment attribute directives ignored (default data segment) (code segment) ()Segment of name class not found; attributes specifying characteristics for that segment ignored.Object module generated by does not support version 4 run files format Object module does not support version 4 run files formatMS CMicrosoft CCT DefHigh CMetaWare High CCannot prohibit DS Allocation and use High C small or compact model MetaWareMS PASCAL[Sys]Pascal.LibFORTRAN 7[Sys]Fortran.LibBasic[Sys]BasCompiler.LibModule compiled with Publics is not residentFORT86[Sys]Fort86.LibNo First.Obj found before Fortran-86 module PLM86 VASM86MWC86Odd size stack requested; rounded up.Requested heap size exceeds 64KbU,(r T5HPMS11t QP1tQPP+P9P8t.FP}Ɔ#vQP:F1tQP򤍆PPbAdAr r.PPP tPPPB5&G&G6jA6B5ZA\A&&PB5@B5;rP6B P6dA6bAPbAdA&G&W6jAbAdA Ğ&&WĞ&G PĞ&wPSPĞ&wPPPQPP!P PP tFĞ&G&&WRPv&w&w P&G&WF&G &G tbAdA&G&W6jA2BPPNPSPNP8V5;X5r6. Pr|P]UF F tZ^ &w&7^F^& u;&w&w^FG P^S62s^^&w&7밻Ë]U>r(sP11QP(rcPPPz uEPPPP-PT5HPMƆ1tƆQPuF-FP}FƆ#vQPF@Fs 1Ɔ(rĞSPPĞS PP uW uMZ5@Z59X5sV5V56.V5ĞSPPfAhA&G&W uiĞ&G&g6jAPĞSPP u5rADPĞSWP$ƆZA\AFPQPzbAdAZA>\As &O&7ĞSP] u7PPPzv P@5Ğ&G&WF&G &G &G t&G  Ğ&G ~uPPP taPP$ZA\AFPQPzbAdAZA\As&G&Wv6dA6bA P/@5&G&WF&G &G &G t&G  Ğ&G ]U(r T5HPM1FPMF1FPPPz^F u8PPPz^F6\A6ZAP^FF&GFzF t3^&O t;t$}PP8$ F^&GFt=^&Ot#:t)PPP8 F^&G]U$P~Pu "~Ou8HPvvJP$]UQ(r T5HPM"P6F tP;u QPPr]UQ(r T5HPM"P6 F tO;u QPP5]U(r T5HPM)FFF^^5\5PPL^F tv拄\5^5&;Wu&;Gu^^5\5PPL^Fs(F &Gv拄\5^5&G&W&G~^㋇\5^5FV^&G&W;Vu;Ft&t&w&7^F^&u vv"^&Gu F&G QPvv]ULP^^5\5PPL^FG P]P^^5\5PPL^FG P]UvvePsP]UТT5HPM]UQFT5HPM]U(s2s T5HPM4T5v,H22QP62P62PPB ]U츳PP^SPPP8]U sT5vHPMT5vUHF ;vNFPv9Fr6NQKQP$u!Тr OP9FrNQ[QP$u9FsNQaQP$tСT5 ;v VR+PT5FFPT5HPvzGthr gPvB2uwPP82%9Fr NQQP$u  9Fr-NQQP$uFNF\2t69~rWFPP P$u?FNF\2u2б(szry9FrNQQP$ujFNF~Pu,>~t%(sP%P$(s}r~^SvSz9Fr}NQLQP$uhRFNF>XAu(sfP$б(sr^SvQP6eFu9FrNQQP$uL9FrNQQP$u(9Fr%NQQP$uT5vHPMsP8PSP6]U(r T5HPMjT5HQP\2u \2P2PP6:\2uOPFPP6:~t5\2P2PP6:2tP$2\2uqPFPP6:~tW\2PFPP6:~t\2/P2PP6:2 tP$ P3PP6: P3PP6: P3PP6: P3PP6: P3PP6:]U(r T5HPM1T5HQPPPPP6e]UQQF=t=u1F~u~u~ul~uT5HPM ~u~ur~u0x~uk~u^~u"Q~u PA~u4~ uw'~u~uC ]UF>t=t P  l]U~u]U^&^ &&W^&G :t ^&Gs^&G&G &W"FV&w8&S^&wRPFP#FV~NV~u/ t^&9u&9Wr&W&F ^&GFF up^&GFV^&G &W"F^&G^&G&W;Vu;Fw4&G^&G&W&+G &W"FVF&G^&uFF]UQ^&G :tSv^ S^Si<^SFP7F u'^Sv^ S^SiF^&G F]U^ &&W^&^&O :uv^&}"Vnjޱ;u$:u32r,"PPPRPQrmWRPQ6XF u(^&G :Ku lFF^Su ^&G s<&G s4~u ^&"^&G ^G ^ &Z&W^&}^&G&;Gr$Sv^ S^S6vF uX^&?uL^&G&O+;FsFF^&^&FFv&t^^ &Z&W^F&G]U FFN F;vP~uJ^S+QFPFPF t tu.^ v8vNFYFF릋F^&F]UQQ^&G :tRS^ Sv ^S FsmVnjޱ;u$:uH^S6F9^SFP3F u'^S^ Sv ^S F^&G F]U ^&^&O :uv ^&Vnjޱ;u$:u:r3r,PPPRPQwmWRPQ6XF u(^&G :`u pFF^Su FFN F;w~t^&W&;WrS^ R+QFP6qFT^&G&+GFV N+;sV^&FF^ v0~&}^9N^Y^F&GFFcF^&F]U^&G :uv ]U^&G :uv ^&G ]U^&]U^&]U]U^& t^&G :u &G& u]U&PPFP/F u ^&G0PPFP/F u^&G < sA<v@"FFF FtFPPF t@^&F]U]UFf]UFV v]UFV N,]UFV%]U^ &G :uSvv+ ]U0^ &G :t k^ &G 9Fu9Fu^ &G&WFV^ &G&W;Vu;Fw3&G^ &G^ &G^ &O&W;Vu;Ns^ &Gs &G&;GwH^ &G&WN~;u;w/&wщFVN;u;s&+O&N։~؋FgFVFVF%Ff^ &G^ &GNV^ &O&W^ &G^ SPFPFP|F u F^ &G]UQ^ &G :u S^S  ]U^&G :uY&Gs&G&;Gv &G&W^&G&G&W^&&W^&G s7&G s/^&/&_!^&G :!u^&&G ]U&Gs2F F%F^&GF&G^&GF^&G7F&9Gw%&9Gr^&G^SPRP4]UTS$]UQQ&GsRPPPiH&GFF&G;Fv(v&|u&G &D^&GF˸]U&GsF;FrFFFF9FwFtFFFF;Fs t ؋FFu ^GF^F^SFPFPFPLFF;FvFsF+F&ON`++щV^&GS]U&Gs6F trF &+G^&&_^G^&;w0C&GFFF&9Gv&9F u^&^&^&GF͸]U&_^G;F w&GsF &G Z&GFFF&9Gv^&;N t2^&GFv PPPPP4^FF^&]UF^F&GsuF^ SPFPtF u^SPFPtF t&GFVN~;u;vCv;Vu;Fw@)F ;Ft@&OV ;ʳvCN;ʱwA""ÈFFs(^ &GF^ &GFF^&Z&W]U FFFFFȴN;r;^@FN;sNF F9FsFFFFu~r F^&~r F^&G~r F^&G]U u. t!;v 33@33.P 3 ҃+@sH]U؋]UN~F V u. t!;v 33@33.P 3 ҃+@sH]UN~F V ؋]U F FF FF tl=vF FFF~t.&w^SvvvFP#F tP̋F)FtFFFV덋]U^ &G&GFF^ &G HN;ra&@FrK~uF^Gv^ &@ F^ &+^G^ &F^GF ^FFu] UFsFFFF F3^ FFF;u^SFPFPFPLFFFs&FsFFF^&t&G^ GFrF&GFF_&G ;Fw^&t/nF&G&;Gs PF&G F^&^&^&G^&G`+F+1F^ +F^ G8FuO^&G~ sУFPF t_ PPP/F tDFFs1^SPCF uG$PPCF t. PXtN&G&GN&O㍏NN&&G ^&&G&G&G &GN&ONsO&GW$+N+&O&G&G&_ &G"j2&G&G&G&GF-&G&G `؍&G&_rFFFHN;r~^8ueVsYF^P;Vt F@FN+PFX^@FPFX^@Ftw]U&F9F u.&GFs&GFF &G-FF ;FvNFs&G FFF`&+G F1v~^NNOO|F+F FNsRQPPiF tVPvvPvP4^F&G FFF`&+G F1v~^YFsF+F &)GF &Fr F&G]U&]UF;rU+FuKF;u>&GFF`++щV^&G^&^&^ &^ &^&&GN;w&;wA^&&GFFFV+‰F FFN^&FFFFFFF^&G HFF9Fv^&@]FFF^&H N^&@F:Fu;NwF:Fs F@FFHF^&G ;Fv;FsP&P^&7PP PP5PPPP()U &GFF&ONF `++щVFFr2&G;Fv%^&^&;GuF^&GFNJFs ^SL ^&w&wvPPP4^F^&G^&^FF^GoT]U &GFF^&;Ft6&D;Fv^&GF&G;Fw@Fs ^SLvvvPPP4^FF &+G1FsvP&_^&G)FFF^&G HN;rw&@FsFYFF;FuNF^ Gv^&@ ^ Fs$s^ G^ G^ ^ G^ oTFtzP] UQQ&GsRPvPiFn6&&GF^&t&G&G ;Fv:&GFF&G;Fv!^&tF&G^&GFҋF&G ]U&Gs]˚TSL]UQ&Gs$F&GZ&W аu@F]UF ]U욖T[،;t S&_K rX-6PSԃ RVULTX-YPԃRULU]6>6U]66Ў؉6>䜏UFPFP^SD]UFPFP^SD]U&_]UsP tG\^FFFFF;Fr(^& t&G r&G;FuF&GF s͋]U s~ tu\^FFFFF;FrV^& tF&G s>&G;Fu5FF^&F^&^&G^&̋F^&G^&G F s]U sX tO\^FFFFF;Fr0^& t &G r&G;FuF&G^&G F sŋ]U ^&GuFPFPl tF~ u ~rF 9FuN;r tF ~ s$PFPPF u%~u!vF u ^&GuF]U^ S^Sl]UFFFFFPFFFFP\FFFF^FFP,FuFF u)vFPFF^&F^ &]Us v3P^Se u+^&&WF2^F &&W3] U^&vvvvv&<^ Pv ^SF-u~FN ;sNFF~u\FsUvvvvv&4^ PvFPF^F&~uFFV^&;F rF랋F]U^&^ &&W^&G :t ^&Gs^&G&G&WFV&w&wRP&S^&wFP|FV~NV~=]=u# t^&GF^&G^&GFF up^&GFV^&G&WF^&G^&G&W;Vu;Fw4&G^&G&W&+G&WFVF&G^&uFF]U+Zr tH]U+ZrH]U3 &L&;Wt]U#tH3&GtH]UQ>tm~saP^Sv^Sv rmPF u96PPPF uFF%F]U^Sv RPP^Sv] U^Sv ^Sv] UQ t P FFF]U]UQQut uFRP{FF]U;u;sN,~ u;6S666FP#Fw~u ~u&FFv&^&F]U^Sv v vvPF ui~ uPFFs?FPGF:Fu+JV~t@uA"F뺃~~uFFF] U^Sv v vv] UQ^ Sv vvPPF] UFF~ uZFFs?FPGF:Fu+JV~t@uA"F뺃~uqFgF ~ u@FFsPFFFPGFFsF :Ft@~ tA" F :Fu@F~t@ F멃~uTFFFFrFPGF u-~ u0~s*FPGF u~ tF tF ~ u ~sF<'t<"u$Ft8FuFЈFsFFFFr_F :t u)8N u$:FNu+JVt@&~ uF< uAu@" F :Fu@FFrF<'t<"u^v&@FvF;vs~u ~tF~tFF^&F]UQQFsF F^ Svv PPvFF]U^ Svv]U>u^&&W]U^SC]U>uFV;u;vHFЉFV^~6;u;s##+NvFV##N~+N~9Vu9FrL^Nv## t86SP#N#vVQFP#Fw~u ~u FFFVF]Uvv{]UF FtF F u^&?{u4SvFPFPF uhFF^NF)FF^& w9^&v~ ^Y^ S^&7FPFPF~t]UF FtF F uF^&F tX^S@QPFP(4FFt= t H^&8}uKF^vPF+P^ S^SF tT^SAPvFP(4F~ud~u+^Sv^ S^SF uH^&?tF~u2F t)N t"PQ P^ S^SF t]UF FtF F u^SBPvFP(4FFtftaF@;Fs ^v&x}tKFH^& w<^&^w~ ^Y^ S^&7FPFPF~t]UF FtrF F tF^SCPvFP(4F~uF^&N t%v&<{uFVQ^ S^SF u;~u2F t)N t"PQ P^ S^SF t]U~tP PPN]UFRP PPP]Uv* P]U^D^D]Uv^ P]UFRPPP0P P]UvvPP0P P]U P]U^F ws FF F FV~PvFFFOw FBFuOFB0FF V tLF VN~,~vF VN^,F V^^lvJ tFN몋F9FsFPF+JQP] UF RPv vv]UFrvFFRPFPJ0P]UVF wsF ~PvFFFOw FBFuOFB0FF t-N 1VF 1F ^lvJ tFN̋F9FsFPF+JQP]Uv v%:Pvv%]UFrvFv vFP0P]UFrvFFRPFP(0P]U^GP^&P]U^Sv]Uv*]UQF^v&8uSV]FUFPF t^G_FF>| t^&O@wAF^&G@ |^SPFP6F u@^&?LCu1&Ow|卿F^&G|FF~t|卿X|^SP6|^GP^&PvF t~mmt>~uU~u3^v&Hp|卿F^v&@||卿T|~^&7P6~^GP^&P^ SvP F u]U^SFP^SvrmPF u>dFv^Sv^Sv^ Sv ^SdFv FF]U^SFP^SvmmPF u9dFv^Sv^Sv ^Sv dFv FF]U^SvFPFP{P}PF u6^SvFPFPF~uF;F vdP~ vE^~^vNFY^vx_F^&]UQF F t~u5^&~u^S^Sv^ SvFF]UF FtF F u^S`PvFP(4FFtW tH^&8}tk^vPF+PFPFPF ueFFF^NF)F^SvFPFPF~u~ vF^&v~ ^Y]U F F t F Ft~uF^&F t[^SaQPFP(4FFt@ tH^&8]tF^vPF+P^ S^SF tZ^SbPvFP(4F~t~td~u+^Sv^ S^SF uH^&?tF~u2F t)N t"PQ P^ S^SF t]UF FtF F u^SdPvFP(4FFtftaF@;Fs ^v&x]tKFH^& w<^&^w~ ^Y^ S^&7FPFPF~t]UF FtF F tw^SePvFP(4FFtPtKFH^& w<^&^w~ ^Y^ S^&7FPFPF~t]UF F tzF Ftr^SfPvFP(4FFuF^&^&?2w9^&v~ ^Y^ S^&7FPFPF~t]UQPP,F uQ^&G t;Q^&SPpPPamPَFPP6XF u]U^ .^& ^&]UQsS6F u]U츠PvTP(ssSvTP(]UQP^SvFPgP(s%sS^SvFPgP(]UQQF F t^ &F FuF{^SrPv^ S(4F^ &?uLF}^SsPv^ S(4F^ &?uF[^StPv^ S(4F^ &?usF]^SuPv^ S(4F^ &?uLF<^SvPv^ S(4F^ &?u%F^^SwPv^ S(4F^ &?]U`F~ ~t ^ t&F F tF t&F FtUF FtMF tDN t=PxPQ$u+FP PtF uKF^&v~F F tF Ft F Ft~uF FtMF tF v~ܾ~~vNFvzݾFFvzܾvzvNFFF@F{ܾFPF@PFP.PF tNµv~ F´^&]UQ~u ^&9F;Fv/F Ft$F F tv~ N^YF^&]Unv ^Sv PFPFPFPFPFPFPFPFPFPFPvPF uQv ^S^S^SvPFPvFPvFPvFPvv FPvPvF]UF8F*t8Fuv:yP_P\F tj~*ufF( F&uF˴F$F̉F&^(F" F u{F|F ^"F FuFFFF^F F uFF FF ^FsFFFF^FЉFVFr^&Sv$F&PF$P{P}PF u~$ vN^ SvF PFP[P]PF u~ vN^&Sv$^ SvFPFPFPFPF t F&F t NN&^(F$F t N؉N ^"FF6 tN, t^6S^2Sv,^&Sv$vF t F^6S^2Sv,^ SvvF t F^6S^2Sv,^SvvF t F^6S^2Sv,^Sv^Svv$F t F^2&v.&F^2&^6PF2PV,+R^ Sv vF t F^2F&F]6UF FtF~t@^&;Fu3vN&;Fu ^G^&Z&WF^ &u]U ^&FFNN^ &^SFP^&7FP(4F ufFt>^HQNQ^&+IQFP(4F u4Ft F^ &v &4^^&Z&W^&)7]UFF2sv:P_P\F t}_^6Sv4FPFѴP^.S^*SvF F^6Sv4FPFP^&S^"SvF FFsVF$ F"tNF* t &FF^.Sv^&S^"&7FPFPFPFPF t F6F tȍv~.F^*&F tȍv~&F^"&^6Sv4FPFP^S^SvF F^6Sv4RPP^S^SvF F^6Sv4FPFP^S^ Svo,F FF]6U^&?^u GFF N^SvFPFPF~uF@;F vd<~ v1~^vNFYF@^&]UQF F t~u5^&~u^S^Sv^ SvFF]U$FFFPv*v(v&v$v"v hrm#ujv*v(v&v$v"v jj=uBvjFPj #u-vjFPj#uvjFPj F#tv ~tvv v vv^#tF~u%FvjFPj Fv +vjFPj@FF~u v F~u#t~tJFG~t=v.v,v*v(v&v$v"v vvvv6XFv,F.8vFVv*v(v&v$v"v jjF#t=u#v.v,v*v(v&v$v"v vFF,V.FV~u@FPv*v(v&v$v"v hrmF#t~vjFPj FF~uWv&4jFPF*P F#u8v&4jFPj F#u~tv&4jFPj FF*U ^SvFPFP<P>PF uY^SvFPFPF~u9FPF PFP[P]PXF uF;F vdS~ vH~^vNFY^vxFF^&]UQF F t~u5^&~u^S^Sv^ SvFF]U*~sVvPFPPF uvPFPPF uvPP PF uv^ SvPPFP#F tu^Sv^SvvvF t=t~u FrFP^Sv^SvmmPF uvPFPP F uav P^ SPF uE^ &Glr&Gnrvvv F~uv PPPF t<^ &GV=&GWR&GlS&GmT&Gna{9F^ &F&F&F&v@v P^ SP F uv u tƆ^ &7 u &GCtƆsrvPRPvPPP F~uDFP0F u39FvFFF F9FsPFP*F uTF FFFFFFFV;Vu;Fs\v^SvRPFP#F~tAF tu5v^SvvvFP$F uFFVFF9Fs^SP+F tFv FF]UF F t~u^&F^SPvFP(4FFtO tH^&8]tc^vPF+PFPFPF u^FFFF)F+^SvFPFPFFt u^vPv^ S^SEF]U^SvFPFP[P]PF uY^SvFPFPF~u9FPF PFP{P}PXF uF;F vdS~ vH~^vNFY^vxFF^&]UQF F t~u5^&~u^S^Sv^ SvFF]U F FuF^Sv FPFPF~u>FPFPFP<P>PXF uF F;FvdbF F2vRF t$N t~^Y^vFFv~N ^YFFF ^&]UQF Ft~uF F t~u=^&~u'^S^Sv^Sv^ Sv$FF]UF FtXF F tPFH^& w<^&^w~ ^Y^ S^&7FPFPF~t]UFF F tmF Ft^&F tI^SQPFP(4FFt)F^QN+Q^ S^S,F u;~u2F t)N t"PQ P^ S^SF t]<<<8<o<<DDLWLUF Fuk;$+v&;Vu ;F ui; F v&+ UF Ful;#+v&;V u ;F uc; v&+UF Ful;'+v&;V u ;F uc;v &v&+UF F uj; F Fuk;Fv &v&+ UF Ful;F f v&+U vvjFP6F=4t=4uFavvjFP6F=4t=4uF=~u+~u%vF6vF6F+UPF Fuc;F F uj;F;u;tvv4F#tj>t'~tv &* v &*&4v &^&~tv &HtF1 u~uGRPPFP|F u ^&G[УLNv^ SvRPJP#F>JtvZPPP6MFHvPTPPF uiFH;HsBFFVLNLNv^ SvRPJP#F>Jt{HHLN;Ru;PrV^ 6H&^&>Xu'^SXP4F>XuZ ZXH^&? u& ] UQQXZ>HtH&F;Nu;Ls)LNHH ] U v^Sv^ Sv F PPP0dF uU^&FV~u~wov^SvFPFw|~t~ uFV^&_F:[u!Zsv^SvFPF u5F< t0*< w#FFV Y,NY]U v N^& JtF+FFF+FHF;FuRFFHN;r"v^Sv^&0F u"Fuv^Sv6N6LFP$FFF;vQH;vI VL>NL>Nv^SPWRJP#F>JtF )H)FFVL6NPR+lj^FNvvZPPVQFP#F~tFFVFVvZQWRPFP#FFFHN;r#v^SP^&0zF u:FuҋF FtF9Fw~ ~txv^SWZ>F ueFFVFV uv^SPF u6FVLNNHv^SvRPFP# ~u ]ZZFFVFVvZQWRPFP#FFU F'F9Fs 1F~uF FF t-ȋF10vBF1VF 1Fv^Sv^ SvFPv d]UFHH;sttoNL>N;Vu;Tvv RQ F uUv ^Sv6N6LJP$F>Jt.FFVLNHF^6H&H] UNL>N;Vu;Tvv RQ F ujHL>N;Ru;Pt/NVv PFPP F u*FVPRv ^Sv6N6LFP$]U^ &G 42>@2>82>&>H>D]U츸P6^S6︻P6PP6]U^S6FP6^Sv6s^&FFfFHN;rx9NtkQ6FPv6sT^&%F@^&7~^Yv6^&S6F^&Z&W6 Ft}]Uv6)2FFr2;2w22F;2u2F4P626 WԱ PպRPFP6F"٢#SP6 "sFF#s FseF~]U#^G P6[FVuuޮs0P6^G P66d*(61^F&O w PPvvdԳSP6jZA\A؋أfAhAޮs-"r&6dٰP6KP6P66"٢$6]$]U2^&ȴ&x!uƆ 2Јv& d㋇ԉFNFFމFF܉F悾tT^ ^ Vޱ´3ЉVދVŠ3ӉVV3ӉV܋V3‰FFN륋FދN1VڋFܻ%1VF1VF1V~uF~uFFF~t@Fڱ   FNƆ%r^v&F u &%uv^PP6s|v抆^@FFsd6od㋏`։N^&FԉVֹtQRP6F tP6>5FԋV8FFF%;r)N"FFډFڋN;w)NNЋ]UQQFFFvN;Nt Nn]U(s2s FrF FFN N䈎2s P6P PP6^Fru>drX6jA6/^&GءZA\A(׉*׍FP^ Sv RPPrmP6F t FrFPPPPPFP6F u%FIuFV싆2tL6lP6F FFF FFP66xP6PP66~u'ТP666FV ㉇ՋFԃvvPFPP6F u7vPPF܋Vރ%-RPFP6F t?F܋Vރ%FFNF;w-+ȃLu+JVVttvPPP6t>2u2PP62PP6WNF+QP622RP6WF2+F2>2t.NF;vy+ȃVu+JVVtavPPP6u9FP6vF^F+ƉF;vNFP6 FuFԊFsf^&_㋇ԉFP6o^&G;dt=dv S؋Ա RպRPFP6F uyF>dsy^&GԈrP6F FFF FFP6P6vP6P6FPv6PP6] U ЉFV^ t$?tQPP6^FZA\AFV^PPP6^Fr6\A6ZAP6^FF^&GFV&G&WF&G"F V&G &W F &G؋؉FVbAdA؉؋A&O&O&&O& > >u ,vv61^F6jA6/؋^&G&W]U2$ٌ&ًF\٠1پ$ٿt:]5 / AD2b%y)rC!#STATICSCONSTsbVerRun_qcbStackLinkerGen_qcbHeapLinkerGen_qcbAutoDataLinkerGen StaticsData StaticsDescThis application cannot run in real mode. Internal failure (mpgsnRprop maps to bad rhte) Segment of Name , Class Total size of is h bytes;Segment size exceeds limit LoadOnCall attribute for NonShared attribute for NonShared attribute and LoadOnCall attribute for Code Data Attribute for conflicts with other segments within its group Total size of resident segments is h paragraphs at segmentSize of resident segments exceed 64Kb paragraphs ~~~~ExportDef OverlayFaultNo 'OverlayFault' procedure loaded NonShared DGroup cannot be expanded if DsAllocation is requested DGroup may not be LoadOnCall data if DsAllocation is requested Non 'CODE' class loaded into overlay No STACK segment Total group size exceeds 64Kb; exceeded size is h bytes Non-contiguous GROUPS not pMode compatible (selectors h and h) DGroup is maximum value; DsAllocation turned off; DsAllocation segment ordering maintainedDGroup too large; it is h bytes long Internal failure while sorting data segmentsU~uA~uFv@&;Fu F;2rFv@&;Ftv<&p&061^F222&t&w&761߸IP62G P6^&w&w6122ZP62G P6]U6cP6Pv6tyP6v vP6~P66︇P6]U~u~u ~u P6~u ~u P6~u P6vP6t6#P6]Urorh6YP6v vP6︄P6Pv6t6︜P66s P6P5P6]U^&G<t< uh^& $u^&G":tO62FV L&&P2@2;uP6=^&G IIII]U^&G<t< uG^& $u^&G":t.62F VL&&P2@2;uP6=]UPPP6^F u^&&WFVRP61^F^& uu&w&w61^F tO& tHG PPP6^F t.62FVL&&P2@2;uP6=^&&Wn62L&&@]U^&G<t< uV^& $u^&G":t=^&G":u.62F VL&&P2@2;uP6=]URv v 61^Fvv61^F<t<t4FF^&GFv&LN@&F&N^&ONv&TV u#Q^&w FPFP6FκF܉V%v`&&PF܉VމF^&GFʃ~u&^&w&w FPFP6F̺F؉V%v`&&PF؉VډF^&GFȀ>t~u^&G F&GFxvv6F tG 3@&1`&&PNԉV֋^܋v+^@&1F;2v;2v v6FΉF^&G":u F F~u^&G F&GFxvv6F tG 3@&1`&&PNЉVҋ^؋v+^@&1F;2v;2v v6F̉F^&G":u F FFNʿ׉FV^NȾ^~;u;F t ;FuF;FuTv&v&:ueFα F‹VV^α^ʉ^ƿ#ljF‹FFȉF#׉V9Vu;vF;FtF;FF;FTv&v&:t<t>u,^&w&w61^F^&w&w61^F^G FF^G FF^&G v&8D w^&G FFNF;v)^& ʈN^& V:wu^&GF^&ON;v EP6]U^&G<t< uR^&GF ta@&F;2v3;2w-rs^&G&G&G6jA6/v6FTv&F@Fs&^& u&G":u&w6^&G ^&G FFv8&^&G6jA6/s^&GF&G Fu;IrI;s I+F I+I)FF^&G IF~tsPs~u"F6L5FPvPPPPP6F횸PFPV2L5PFRP6R~tkFFFFFFPPP6^F6L5>3狽 3@&9`&&P&+&QF^&G]U^&GF u9jAFv<&p&061^F&t &GF u ^&G^&GF^&OF= r=.wFЁ #F=r)=w$F^&O F&GF[F%Fu^&G%+FF N^&OFF%^&GF%F2srI^&G IF^&G &Gv6/]U FFFFFFPFP622RP6R3H2F2]UsF IFFF^FPPP6^F u~u P6FAv&|@&FN^&O8& N`&&PFVFF뚋FFFF~tBPFPV2L5PFRP6R6L5FPvPPPPP6FN븋]UFFF;2r<@&8u}v<&p&061^F&GF&t|^&G&W;Vu;F uss|F""N:uF""N:t(~ t^& t^&G ;F uvP6~F""N:t:~ t^& t^&G ;F usvP6~^& tFuU2@2v@&^T&^&Oh&^^&G6jA6/4v&^F]U H^&;vw &&PFVF2HN;rG@&8u4v<&p&061^F&G&W;Vu;FuFFu^&{2]U FsF F FFP6FF;2r@&8ujv<&p&061^F&G tE;F u@&t9r& u+^&G vPvP&w&wv vv6FsFoF\] U2@2IF2HN;rq@&8u^s@v<&p&061^F uP2P6^&G@":tI2@2v@&Fu22]UQQF2F2HN;r9@&8u&FI2B2&h&@T&FuFs22]UQQF2F2HN;r7@&8u$FI2@2&h&@T&FuFs22]U>2tbF ulsgFP6FP6360FtFs+ P6^ P^ P63PPv6Ft/NPP6^ P^ P63PPv6FsFFFP6FF;2r@&8udv<&p&061^F uP2P6^&t ^&G@":usF "^&"O:tg^& u=s"2^&G":u vP6~^ ^&:G tFsF@F@FFP6F^ ?tF;2r<&p&061^F& uhv@&8uY~&}tO2@2@&^ T&^&Oh&^ v&DS4v&[6jA6/FsFFFP6FJv<&p&061^F^ 2^&G v T62&^&Gh&~@&1^&G&WFV&G Fv &G6jA6/4v&^ >D5u^&Gt2D5^ ?tr^&Gu,P6 ^ P^ Pvvvvv62 tI>2uBF t;Ns^ Q^ QPvv^ P^ PvvvP6FsF F]U>\2F2HN;sp<&p&061^F uP2P6^&t<^&Guw&Gt:GP6!^&G &G& tP6+u~^^&G ;3u&OGP6 ^GP6&^&OO^&G tD\&8u~&M&(^&w S\&_[&;Gt vP6~^GP^&w 60^&G&w6+t5^&G":uvP6~^& u~&G &OFt]U FFFF;2w}X&;Nuel~&VVd&F~uFV%~uFV%FVFVFVFtzFV%FV]U63@&Fd&636FVlv&^^;u;s +N~ FFvFVd&63<&p&061^FFV&G6jA6/]UFF;lAv 3hS@&0_[&FFF;2w|@&FX&;FuVhv&N:tE"":t vP6~hv&"V":t:uvvP6~Ft{FtA]Uv d&\P&HFY;vF'lv &tFFV F FFPv6a>V2uFHV2FV]U2@FF;2wFPP6aFuFF2@FF;2wPvv6FVFu]UFFFF05 t@FsrPPP622 tFFPPP622 tFFPPP622 tFF~u>J5u6^6J5<&p&061^FF&G6jA6/FFFFF>05tdFPP6D^FbAdAN5P56V5ZA\A,&&P^Svvvv6J5v05@PPv6IFsUFPP6D^F6V5ZA\A,&&P^Svvvv6J5vPPv6IFsUFPP6D^F6V5ZA\A,&&P^Svvvv6J5vPPv6IFsUFPP6D^F6V5ZA\A,&&P^Svvvv6J5vPPv6I]UX>J5u?2FV3 t@&0d&FV FF6J5<&p&061^F&GF05 t4+HF6P56N561226jA6/F2&GFFPPP622 t6jA6/FF2&GFFPPP622 t6jA6/FF2&GFFPPP622 t6jA6/FF2&GFFFt(WNQV2L5Q6J58&RP6RFt(WNQV2L5Q6J58&RP6RFt(WNQV2L5Q6J58&RP6R05 tA6,5~F05F@PFPV2L5P6J5F8&RP6R]UZs6stSP6 F2A>T2A>h63\2#;u6s*slD56J5<&p&061^F6jA6/^&G~&G2sI&G I&G2"rPPRPPP636^FIF2HN;r9<&p&061^F&G&W;pAu;nAuIFu6I<&p&061^F6jA6/I^&G>3urPP6D63<&p&061^F6jA6/\2s 2^&G ^&G2s6FND5N2s>tFFPFPQQ6FPFPPP6rFsFPFPPP6FPFPPP62@F5FsFPFPPP6FPFPPP62@;F5uF5FsFPFPPP6FPFPPP6FsFPFP PP6FPFP PP66>2t62F@2;2vP6$2I2@2F֋v@&62@;vP6)>`>\>d>P>X>lI)23F6J5@&L56I&Fޡ2HN;s@&Fҋv<&p&061^FrA&GFt";IrI;s I+F I+I)FF^&G6jA6/^&uv&G`&&P^&G F tKvX&؋ 3F t@&;Fv ^Fމ 3F;3u F9FsFԋv4~&P&FtF2HN;s@&Fҋv<&p&061^F&GFs;F;2w2X&8t vX&㋷ 3@&;FuFvd&FV^&G"<tuFlv&V:s~&E$ l&~uFV%FV:~u4FVFVFVFVvFV8&^&O׉FVN;2w-uv"P6vvP6P6~u~ulv&d&FV uvFVd&Ft+\2#;u6s6ЉFVF3FFFFFFNҋF;2vl&VT&:Nus~~2srP& FF~u F@%~u F%Fvd&N׃FVuv RPv6yFV%FV uvFVd&>25uFH25FF~u%F~uFFFfvNd&N׋N+׉FVuv RPFHP6y~u~uvNl&d&FV uvNFVd&FFv nFVr&FVuvNrRPv6FvFV`&&PvN\&vRP6FVvd&FVT~&9u d&%F~v FVnvX&8t>2tT~&:FuP6>2t6vX&06FV uFV+׻;u;sf>2t;u;uBP62EFVuw+P6FPP6vP6︶P6>2uvd&\&~`&&QFV>3V 3VvJ5t6L5X&8~&s6X&8~&>3t6s6r225F2HN;r @&8\&8&Fuvv6sIpSP6 6J58&~IpSP6 r4V2L5FP6J58&RPP6H22~&G&GI&G63@&0V桂2\&^3㋿ 3@&9`&&H&+&IQ_62&6D5`&&P6D562&G6L56J58&PPPPPPP62s?II䉋INFN‰NȉNĉNƿ WNQvRP6RF2rFIHN;s@&F;2vT&t:Nuv<&p&061^F&Gt,Nt VR+PQ6^&GFTv&FFV2PPPP6H22STv&_[&Sd&[&GSP&[&G F&GFtFu艋F+;IrPHP6F+6I8&Fs v6v`&&PFPFPV2PFRP6R6vvҰPPPPP6Ft] [ h 9M6t! THEADR LHEADR COMENT MODEND MODEND-32 EXTDEF TYPDEF PUBDEF PUBDEF-32 LINNUM LINNUM-32 LNAMES SEGDEF SEGDEF-32 GRPDEF FIXUPP FIXUPP-32 LEDATA LEDATA-32 LIDATA LIDATA-32 COMDEF BAKPAT BAKPAT-32 LEXTDEF LPUBDEF LPUBDEF-32LCOMDEF LIBRECORD LIBDICT Exported publics by name Exported name () Imported publics by name Dll Internal error (iDll maps to bad rhte) .Internal error (attrDll) 0000h (h) h Imp CallGate Abs Res LoadOnCall Start Stop Length Name Class Resident Overlay h h h h 10000h (h) h (NonShared)(LoadOnCall) Publics by name Address Overlay Publics by value Address Overlay Record Type: () (default)Class ordering requested :Linker DetailsLinker Information:Run file : Run file format : version Stack : (default) DGroup Heap Size: Run file mode : h; Real Real Distrix HighMemCodeSharingServer HighMemGdtProtected HighMemProtected CodeSharingServer LowDataGdtProtected GdtProtected NRelProtected Protected Conditionally ProtectedGdtPMOS (default) SuppressStubsCharacterCodeSet: Case Sensitive LinkVersion : Max array = (default) Max SL Memory = (default)Min array = (default) Min SL Memory = (default)No default libraries DS Allocation usedDS Allocation not used(default) Pack Code set, maximum code segment size = Far call translation requestedNon contiguous group option requestedConfigurable Linker work areas: Area Name Sectors Used Max SectorsCodeViewCode CodeViewLines ExportData ImportData RgIdct RgPdhCG RgRlePStub RgRle WorkingData StringsTOC V8Strings RgRqLable Link End Time : U@0~"26>2u  P6LS626FF;2rL&p&061^F&w&w61^FG P6^& !r 6F! !^&*G FFP6^& u^&G FG ^&G FG P6^&G FtB=P6v6FF#vNQP6F@FFP6@P66F]UP0~"2SP6 >2uBP6LS626FF;2rL&p&061^F^&t &w&7FFF؍G P6^& !r 6F! !^&*G FFP6^&w&w61^F^&G<t < t &w&7^&GF&ON&ON@&F؋N tg`&&PFމVQv6F tP 3@&0`&&PFډV܋^ދ~+^ ^&G FމV~t%F;2wP6v`&&PFދVF؋FԹ#;tF;B5v&p&061^F t ^&tkP2P6FFF؍G P6︓P6^&w&w61^F t&tP2P6^&w&761^F&w&761^FF^& u/F;Fu2& t G P6^&G PP6P66Fh^&w&761^FF뢋]UH0~"FF;2rL&p&061^F^&t &w&7FFF؍G P6^& !r 6F! !^&*G FFP6^&w&w61^F^&G<t < t &w&7^&GF&ON&ON@&F܋N tx`&&PFVTv&FQV6F tw 3@&0`&&PFV^~+^FV1^&G FVsvPFPFP6FFFFVFFVsFV t RP6 P6vP6:P6vP6sUP6~t"F;2w P6Pv`&0vP6:P6vP6︹P6Fڱ":u-Fڱ":u~t F;2v ~u P6&s P6F۴PP66FP]UhFNINFNF+ȃr u ~tF@FF9FrvHFv^&&PFVv^&p&0vv6sv^&&P&@&PN‹vFV^&@&PF낃~uMFHFJNBF;NFN^&&PNVFFFF&p&0RQ6s9v~^&&P&&QFV&&P&&QFVvvv^&p&06sPv~^&&P&&QFV&&P&&QFVv&p&0RP6s9v~^&&P&&QFV&&P&&QFVv^&&PFVNF;v^&&x&&xFV&&PNv^&p&0vv6r݋v^&&PFVFvvv^&p&06rh؋F+FVN+;svJFBFFvFBFBFFF@Fr EP6]U60~˹"P6s =P6FF;2vNT&8t+r$GP6Tv&PP66v`&&PFVF2HN;s@&;Ftv<&p&061^F222&t&w&761ߋv8&FVFVsRP6vP6QFPP6vP6UP6^&GPHFX u&GtFFFFVFVsRP6vP6\FPP6vP6`P6^&Gt gP6^&wP6s+Fs$FmP6v6PP6rvP62G P62&G *ȈN<vFFP6^&w&w6122G P6>t(^&Gt P6^&Gt P66FtFtg2so2xSP6 >2tVP6LS626 2P6|SP6 LS626]UQ)P6PP6F>uF>uF>uF>uF>uF>uF>uF>uF>uF>uF >uF >uF >uF >uF >uF>uF>uF>uF>uF>uF>uF>uF>uF>uF>uF>uF>uF>uF>uF>uF~t(8P6F ؍RP6:P6]UQF FuFFV FF<P6^ S6vP6OP6v P6F`2u [P66] U*0~ֹ"6fP66F FP6FFHN;rj &&PFVRP6122&G FG P6~3t-P662P6\2u P66\2t-P663@&0d&0P66 P62FPP6P6r ~u  Ft &P6Ft ,P6F tUtt5lF@tO`d[FtvOFtCF@t7Ft+&FtFt@t P6P6\2u P66r\2 tP66P6626>2t'P666;P6>05u NP6,5S60566^P66b2P6\2ukwP6rs,P66262 P6\2u P66︟P662P6\2uP6rs,P66262 P6\2u P66>2tP66>2t P6\2u P66>2t+P66IP66>2tWP66>2tvP66>2t66︜P66︼P66>2u0P6f26<56:5PP6d2685665Pks.%P6|26362PL:P6z26363 OP6j22RP PdP6l22RP@PryP6n22RPPP6p26Z26X2PP6r266Ps.P6~26363@PP6x26262P6t2H5RPPj6P6FP6FvvFP6FFPP6/P6FPP6/P6vP6 P6FPP6:P6FPP6:P6FPP66] &'lII120A00 Linker Write error (Run file) I/O error (Append file ; status code ) Run file header exceeds 64Kb (Number of Relocation entries exceeds 64Kb) Run file header exceeds 64Kb (rbRgpIDiv) Run file header exceeds 64Kb (rbrgRqlable) Run file header exceeds 64Kb (rbMpSnSa) Run file header exceeds 64Kb (rbRgRlePstub) Run file header exceeds 64Kb (rbRgRle) Run file header exceeds 64Kb (rbRgRle) Run file header exceeds 64Kb; Run file cannot run on OS prior to CTOS II 3.3 Overlay with zero length will cause real mode Virtual Code Segment Management to fail. Ver Ver Write error (Run file) UQQP^SvFP6F t @QP6]UtP&5S6*5RPPrmP^SP6XF u=tPPFPFP6F~t^Sv6(иtP6F~t3YP6&5P6qP6vP6︀P6]U츃PP6(]Usv ^SFP6Av ^Sv6<]UQFsN ^&jFF F~t^&jكFNF s ^&jً]UQQF+hٹ1V tLFN ;sNFFF;Fw.^&lnN FFuʃ~ v^&&WlnٸF)F ݃~ t=FF HN;r-^&lnFFuȋ]UF V FF V FV%F V s %hFFrFVF V ;u;vN~FVF V FVFH1F^QvvP6Mv V ^F^N~+N ~ N~v v Vs QPv67^Sv6(FVFVN~+N~FF uF(v6f]UQQ~ u FF F FVvvvF RPvv6F] U>2jdžpsF6R56&sFF6R5`&&PF2s p2pnnnsn:05 tn@%nn#t +ȉPdžPs X2Z2FGW6456F$5F2Fb2FX2Z26eFV tPKP6FVF21FF2F֋63@&z`&&Pvxz桂2\&trs8636F63拆vx`&+&PtvxFꋆtFFnPF؊r2׉jlFuvPKP62jl3HQׇV6j_Y׉jlFuvPKP6H5jljlFuv$PKP63HjljlF΃uvMPKP62jljlFuvzPKP63HF213HFH51F21FС22FV22FV22FƉVȡ22FʉVF^ٺH ÉFbJ ӉVFFFĺFVFV 5P6F 5"5FV  F5Fغ2׉jlFuvPKP6FX2Z2FVuv P6FV#+؉^F׹ FVFVFsU>05tN6P56N561226L5FV`&&P2&O׉FVF~FF;2vyT&8ur=r5P&8u)!P6Tv&PP6*P6~~t FFVvd&FFV~6J58&Tv&|W~QV2L5QRP6WFV+FVv`&&Pvd&N׉FVlv&t FVFV FVFV%FN;25u t FFVFVFFt{~FFPp6(pFPP67FPP6(PFPP67sFP:P6(:PFPP6782u2 t62QWPnP6K>05tL{PP6(PPP67,5S6056(605,5SP6705s628PP6(P8PP67PP6(PPP67s62Pt 62P2 t62PPPnP6KFVpىr FVFr=FVFFPFPFPFPP6262 t62PPPnP6KH5 t62PPPnP6KZFF;2wrZX&&9 tW>3&; u >2t63Z`&&P\\PP6(P\PP67FZFuZ`&&P\\PP6(P\PP672 t62PPPnP6KX2Z2 t626Z26X2PPPnP6F~t~t 62NFVFVFFVtىv٣pىrFF;2wnT&8tJpًrٹ## t#p#>rQP6Zpr١pًrٹ FVFPFPFPnP6_뉡pًrٹ## t#p#>rQP6Zpr١pًrٹ FV bd2s2 t62PPPnP6K>*5t nP6-sSFVRj++ȉjًbddǣjٸ<fhQRP6FbPP6(YjٸfhQRP6FjPP6(P6F~u tFF t QP6]0-9Y.   V !II120A00__*&_PresMgrNameInternal failure (mpgsnRprop maps to bad rhte) Ver Linker ~DefaultInitProcInternal error (iDll maps to bad rhte) Internal error (attrDll) cbArea= ; oFirstPageFixup= Internal error (FirstPageFixup) Segment : offset(ra) in seg-> value at loc(sn):iProc - tyFixup Segment : v8rle=ra:sn:iProc:tyFixup: h -> (h:h) dll + h ty= h Two segments in group have conflicting attributes Segment h exceeds 64Kb; it is h bytes long Internal error (iDll maps to bad rhte) Internal error (iDll order) ~~~~ExportDefAttempting to export from non DLL; Missing initial entry point qbHdr= ; lfaStart= Internal error (Start) pn= ; pnStartOlayData= Internal Error (LoadOnCall) pn= ; pnStartCode= Internal error (Code) Internal error (Code) pn= ; pnStartOlayCode= Internal error (Code) Internal error (Code) Write error (Run file) UQQFFFPP6(]UFN1V t+ʉNF]UQQFV N׉FVPv6UFVFV FV ]UQvv6UF t"FF ts 62N9nF]U F^7d&FV uv4l&t FF^7T&8trFFF2tv4h&tfFs0V2^PvvFRPvv6FFVprً^7d&^ ^  ^ W^ '^]UF V tMF V^WPv6ZF V^W^&&W^F VW ^&&GF V^&G&Wlًn^&G&W ] UP2P6263636WPF P6262626W2222v ^ S62RP6Wxًz^&&WF 22xz33] UB5FF;B5v`&p&061^F t&tP2P6~F^G P^&G PFP6i^&w&w61^F t&tP2P6^&GFPFP6263636W33^&w&761^F&w&761^F^& uc&G tOQPFP6i^&G FVPFP6263636W33^&w&7Ft]UQF FFPFP62^w76W^W^W~@u~u F#;urF=t=u0PF P62^w76W^W^WPF P62^w76W^W^W~u-PFP62^w76W^W^W]UQQF V FF9Vu9Fr%FQNQ62RP6WFuˋ] Uv^?X&&;t~F;D5u^W%WF;F5u^W%WTv&8t#^W tW%WF^]Uvd&^Wlv&t ^WF;25u#^W tW%W]UDFFFFFԉF֡2HN;rFPQFPFPv\FuڋFV F~FF܉VމFV¸ЉFVQNQ62RP6WFVFFFF;Fr%PFP62vv6WFVFuӸFFFFFFFV;Vu;Ft=+P6vP64P6vܰP66HPLP6F2HN;s<FPQFPFֺFЉV62RPP6H^̌F&&W u62&w&7P6H^ȌFFFr^&FVv\&+׉FV F؉VڋFV%F^&GFF=@uFFF~u ~uZFTF=tsGFVFV F؉VڋFV##׉FF;u FF~uFFV;Vu;FrFs'vvvvvv6xF؋VډFVFvFPFP^&w&w&wP6sFVFV F؉VڋFV%FFFV;Vu;FrFs'vvvvvv6xF؋VډFVFFrvFPFP^&w&w&wv6sF؋VڃF؉VRPvvvv6xF؋VډFVF FPFPFP^&w&w&wv6sFsFFPFPFP^&w&w&wPvFPFP^&w&w&wv6s^&G & G uF62^&w &w P6H^ȌF8FPvFtFRPvvvv6xFV]UiP6F2HV;sV~62WRP6H^FP6vP6︹P6^&G& uF F62^&w&7P6H^FFFrkFsF P6P6^&7P6P6^&wP6P6^&wP6P6^&wP66P6v^&\&+FPP6P6P6^&wP6P6^&wP6 P6^&t< P6^&wP6P6^&wP6P66^&G & G uF62^&w &w P6H^FFt]U 2A>8F2HN;s<&p&061^F uP2P6^&tp&G@ui&G%F&GtNv@&08&F t9FtvP6tPQP6v@&0F8&Ft@]UFFs,hv&F8&NQPFPFP65F V N׉F V V^WF^GF V ^G^F^GF^G] U;Vu;FsNQP6sv 6PP6ZP6]P6vvP6rP6F Fulv &u ^ G%^ u+FVFVn^FV^ ]UFFNQ^w7^7P6FFFFF9FsvX&&;tYFPvvv6FPP6(PFPP67FP^w7^7v6FFFFTv&8tksN~^ ?uX9vt#^w7^7Pf^W^^W^ WF^ ^?t^W~tgs.vX& }P>3&;u >2tN8f2vX& }>3&;u >2tF FFvd&FFV ulv&t FFFVFV^׉FVlv&t ^WFV ^WFV%^rF;25u^?t^WFtFPvvv6FPP6(PFPP67] U PB5P62PP6W33B5F~FB5H;FsPFP6263636W33v&p&0PP6^F uP2P6^&G;FtP2P6FV^&O׉FVFtS6n]U У2233626f626fF^F056,5F05F^SPFP6iFFF^SPFP6i>2t.>2t'62RPP6H^FS62FP6i]U33FVFFFV;zu;xs8626jRPP6H22FV&&WFV붋]UQF~dw 62Fu]U.V2F ȉN\&FNN>2thv &t)FfFFFVvRPP6H^FFV%+N;vF~vNFFs4vFVRPP6H^F+NvzҋF~u~Xt ~Ҍu ~u~ԐtvvvP6H^F&~uF^&GF ^&GJvFVRPP6H^FF&vFVRPP6H^FF &F@F܋FF޸FFFFVPFPv 6\]URFF 626f~NF2NFQ2_>u+JBVV2+FF~.OtINuFF^SvFP6iF23FQSP6^،Fڌ u1&w&761^܌F^& tF~Ĺ^&w&w61^F&w&w61^ԌF&GF@&FP6F^&GF^&G u8N;45u ;$5uFhv&":uV636Pv6F tgN;2w^PQ6F tPv`&&xV~ 3@&0`&&HFN+V^& u^&G FG ^&G FGFF^SvFP6iPFP6263626W23^&G tFHF&G ":uNF^&G FtYP6FF#vNQP6F@FNQPFP6iPFP6263626W23F^&w&7~u->45t&PPP6^̌FΌ u P6^&GP"Z tFF&G":uFFF~u)hv&":u645636P6$56~Ĺ6456Fơ$5F.FNNQPFP6iPFP6263626W2323N+׹6eFvFP62PP6W]UQQPPP6^F u^&G]U 򪍆fhtvdžGW 36363633 3džP213I2 5"52222263@&0d&dž$_P6v6t6P66tٸP6ZtvٸУlىnً63@&`&&x2\&v@6456$5vx63663拆`&+&PvP@P6(@PvPP6AĆfbd@tWRQPP6dУlىn٣xىz623>B5t6s66xPP6(PxPP6A626363PPPP6F626262PPPP6F22h33pىrٿtWRPĞfG PP6dtًvى23HףtىvPP6Utv٣tىvٹQRP6P623 tEУlىn626362RPPP6FtP6362ĞfG0PP6d6tٸP6Utv٣tىvٹQRP6P633 tEУlىn626363RPPP6FtP6363ĞfGxPP6dl٣n6}62RPPPPP6Fl٣nٸtPĞfPP6dP6P6Уlىnىtًv%pىrٹ dž>D5u2D5H>F5uF5H6Љ~;wRRRRQP6>F5tBPV߉džPPPP6F562;D5roP ߉PPPP6D5626u2H2 t62PPPP6KPĞfG$PP6dP6v6t6P6 ;vu;ttXP6vPP66tٰP6P6PP6P66(PLP6pى>rىlى>nى;w'T&8uPPPP6_ϸtP6r6pĞfPP6dtًvٹ## t#t#>vQP6Ztv١tًvٹ pى>rىlى>nً u;u;tY@P6PP6P6EP6PP6P66YPLP6;wPPPP6_۸tP6r6pĞfPP6dtًvٹ## t#t#>vQP6Ztv١tًvٹ pىr٣lىn١F5 tH;wPPPP6_۸tP6r6pĞfPP6dtًvٹ## t#t#>vQP6Ztv١tًvٹ pى>rىlى>nك>D5u;u;tYvP6PP6P6{P6PP6P66︋PLP6D5;w5T&8tPMP6PPPP6_tP6r6pĞfPP6dtًvٹ## t#t#>vQP6Ztv١tًvٹ pى>rىlى>nكu;u;tYP6PP6P6︾P6PP6P66PLP6;2w5T&8uPMP6PPPP6_tP6r6pĞfPP6dУlىnٍj džj 6l3 t@&0d&rt2npjP P6( PjPP6AĞfPbd tWRQPP6dtًvٹ tPPPĞf\PP6dtًvٹĞf&\&^tPPPĞfhPP6dtًvٹĞf&h&j2s2 t62PPPP6K>*5t P6-PPP6jٿWQP622II٠s r625`&@ t|SP6 2H1>2us62L&&@S6262%1@١2II6eF;v١ٹ1F^ͷ.p;sFʹzsFߊ^ͷ.pٹ~QP6aىFFF~t;6~vvP6H222&G%NFVFF;2sxL&p&061^F^&t&&WFVRPFFFvL&p&061^F^S^Svv6F Pٺ RP6FFFىF~t16~vvP6H22SP[FVNɠrsF܉FދF;2wevX&&9 tK>3&; u >2t63v`&&PF҉VԋFҋVԉFЍFPPFމFFuv`&&PFЍFPP PFP6FF҉FԋF%F΁~wFPPgFs縂PPUPPI2PP=~PP1F2sNsds FN@3F΍FPPPP^كH FFPPFPP 5P PPFPPPP P6F t QP6]UJ^& $u^ &G":u^ &GF@&F^ &ONNʺV̰FΈF&w v&GFVV~~uTv&F`&&xVu@FsFVv`&&PF̋FFFr FFF^&G FO NڌF܉N֌FعNԴF҉NNNNނ~t[FHF^ڋv& ʈN^& VF^3ÉFF3‰FF3‰FF3ÉFNF럋F1VF%1VF1VF1V~uF~uFF2u2P6d26a2P6f26a]˸d2f2]UQFPFF Z;t\ P6v P6 P6vP6 P6vP6 P66 P2P6v^ Sv vv6W] UFPFF Z;t\" P6v P6T P6vP6[ P6vP6c P66e P2P6v v vP6H^F]UDF@F F‹Ȱ>ىFFv؍NFٍFFFٍFFvٍFތFFٍFڌF܋FٍF֌F؋FٍFҌFԋFٍFΌFF^&Nw~^Y^&GF<{t<[t<N~N~^&Gr P6︾ P6v P6 P6vP6 P6vP6 P6^&wP66 P6 P6FVRQ6FVPQ6 P685PP6665P66P^ЍGP62FVRP6FFFFPFP62685665665sZ P64 P685PP6665P6^&GFʸK P6vʰP66FV6585^&Oף6585RPP66585^&&W PS62vv6FމFFFFFF栔rR P6p P6v P6v P6vP6{ P6vP6︀ P6vP66︋ P6︩ P6FPP6vP6︶ P685PP6665P66 PFP62685665665 85] Uvv 61^F&G&WFVutZFF FFFFF6<56:5P6FV^&G&W6jA6/FV:5<5r P6 P6vP6 P6^&wP6 P6v P6P6vP6P6vP6 P6vP6P6<5PP66:5P6*P6FPP6vP66PFP626<56:56:5<5b62vvP6^Fr9P6TP6v P6ZP6vP6_P6vP6dP6^&@PP6sP6FPP6vP6︂P6<5PP66:5P66^&@F&GF&GF&GFPFP62vv6F FFFFF6<56:5P6+ף:5<5QNQ62RP66<56:5P6:5<5] U66ٸ P6 ى٠rP6vP6︲P6vP6P6F PP6v P6P6FPP6vP6P6PP66ٰP66FFFFF V FVN~+N~N PFP666666ٸ P6ىً] UQQP^SvFP6F t QP6Fً]UPFP6F uPvv6F~uP^ SvFP6F~uPvv6FF t QP6] UsDP6vP6!P6vP6&P6v P66F FF Ff v d&FF ulv &uFFrF F;vN~uF F FFFH1F^SvvP6M^v FFN+ΉNF PQ=FFN+ȉNFF nv6f] UJFVFFFދFV u2FޡًىFVFFFVFVRP61^F&G&WFV&G&WFV&G&WFV&G"Fsy0P6vްP67P6vP6CP6vP6OP6^&wP6TP6^&G"PP66FrPFF FtCF;s؋^&;GtFF;s؋^&;GuFF~u#vv61^F&G ȈFċF@F5FV tvv61^F FN^&G FF^&G&WF؉V&uF^&GFFÃ~u~uF´FƉFȉFF62vvظP6^ԌF&FΈF&w@&06F^&GF&GFʠs`P6^&wP6|P6^&wP6︁P6^&wP6︆P6^&7P6︎P6FPP6vذP66FPPFPP^G PFĴP~w!vvظP6F؉VFF;Fs62vvظP6^ЌFҠrP6^&7P6︹P6^&wP6︾P6^&wP6P6^&7P6P6FPP6vذP66v&4@&06F^&GF&GFʍFPPvvظP6F؉VFtPvvv666]U(FًىN؉VډFFHN;sIL&p&061^F^&t &w&7FFF&w&w61^F^&G<t < t &w&7FFF؋F&9Gtb t%WPvv666ًىF؉V^&GFꠔs(P6^&wP6P66^SFP6FދFF^&GF^&G FFPPu^G P^&G P`s^G P66Ft]UًىFVFVFFV uFFVFVRP61^F&G&WFVF2HN;r@&Fh&@":uDv<&p&061^F uP2P6^&G&W;Vu;Fu]&G&W;Vu;FuKV2FQPPP6hv& v vvv666ًىFVFt+]UPًىFVFFVFV uFFVFVRP61^F&G&WFV&G&WFV&G&W F‰VċF‹Văut62RP P6^܌Fދ~ι FF҉FFԋV։FVsP69P6vP6DP6^&wP6KP6FPP6v°P6YP6FPP6vP66FFVut62RP P6^F&GF uBFV tvv61^F FN^G P^&G P;v@&06FʋFȉFً̡ىFVFPPFVuuz62RP P6^F&&WFV&GFFƍGF،FڋFV FV~uriP6︇P6vP6︍P6^&7P6︒P6^&wP6︗P6vȰP66︢P6P6FVRQ6FVPQ6P6FPP6vP66^SPNu62vvP6^،FvvP6FVFVrF9FtF̍FPPvv Pvvv666ًىFVF΋V]U>t|ًىFV PPFH^;r8㋇(׋*׉FVRP61^FG P^&G PFuPPvv666]UXAXAԹ HFV FQP6a٣6v6 PPP6^FZA\AFVWRP6 PPP6^FZA\AFVWRP66 6]U2|SP6 2F uyLSv6P2S62RPPwmP2S(P6XF t 2QP6>2򫸠 PPIًىFV PP0v6ًىFVFFPP FF;XAv3FFFV;u;r RP P6 +׉FV6RPQ6^F&?u&G;FtrP6^&7P6P6^&wP6 P6^&GPP6^&wP6P6^&wP6P6FPP6vP66^S PFvv P6FVFtFFFV;u;rRP P6 +׉FV6RPQ6^F&?trP6^&7P6:P6^&wP6HP6^&GPP6^&wP6MP6^&wP6RP6FPP6vP66^S PFvv P6FV PPًٹ׉FVFPQ{FPPvvFPPvvP6F t YQP6]#k~xCode reader confused at procedure startCode reader found illegal instruction IDIV of unfixable type foundIDIV instruction in overlayUFيFيF يF ٸ٣٣]U졖+٣يNs0 tpP66I69Fr ^ ?u]UF;v]U F١ىFF;F t F ^ vF^ v@F^.0F u9P6FPP6FPP6FIP6FFtdF@;FuFيFF$NFF@tF8t.0F^.0FF^NFN":u N":tٰFٰ]UQF$NF.Pt%^.Pt~ tP6v6]UQQTv&8tP6v66v`&FFFPFP622RP6W2]U~u(F V2PF RPP6H^F&7^7 ^v0pv 61s v v 66]P9(y.A M  3 `X$%-%%Q&~&&'(a))w*+,..y/60y051A3c444k8II120A01DistrixGdtProtectedLowDataGdtProtectedProtectedNRelProtectedPmosRealSuppressStubsYesNoV4HighMemGdtProtectedHighMemProtectedCodeSharingServerHighMemCodeSharingServerMaxVal/ : Copyright 1992 Unisys Corporation. All rights reserved.CodeView **** WARNING **** WARNING **** WARNING **** WARNING **** Since no entry was made for maximum array the default of zero was used. If you or one of your customers use variable sized partitions this default means that the maximum partition size will be allocated when this run file executes even if it is not needed. This may force other applications to swap out unnecessarily. We recommend determining the actual memory requirements of your application and entering it rather than using the default. **** WARNING **** WARNING **** WARNING **** WARNING **** Invalid run file mode parameter Run file mode is not unique Bad yes/no parameter Bad OS version parameter Odd Copyright string length; truncated.noreportnone(Library reference expected Bad libraries parameter Library reference not foundRight paren expected after library reference )Right paren expected after library reference d[Sys]Ctos.Lib[Sys]CtosToolkit.LibNo run file No object module(s) .map Linker Run file : Link Start Time : .symInvalid source debugger parameter .CdvRequested stack size exceeds 64Kb Odd size stack requested; rounded up.Requested heap size exceeds 64Kb Odd DGroup heap size requested; rounded up to.Too many parameters on stack line Bad max parameter Bad max parameter The PackCode option not supported when linking programs in real mode. dataBad numeric parameter yesnoynBad yes/no parameter Ur>2ttAPDP6P)P6^S6PP63PJP6}PJP6PKP6PMP6_PPP6︮PP6PDP6]UPP6]UQQP6F t 2QP6FP2S62RPPmmP6F t 2QP6v6F t 2QP6]UQQ P6F t QP6FPS6ٸRPPmmP6F u v6F]UQ^ &GFN;sN^ &S^Sv6u] U^ S^Sv6Tss0PP6] UQ^S PPr^SP Pss6E2\2 ^^S PPhr^SPPSss-6E&^SPP0ss6EFz^SPPss6EFn^SP PsF`s^SPPsFb^SPPsFp^SP PsF ^SP Pks F n^S#PPJsF"R^S3PP.sF$6^SDPPsF&^SPPsFr0s6J6O6E6J6OMPP6\2F]U^&uss^&s%6 33 3333]U^ &FF^ &O.u+JVu6J6OcPP6H^ &Sv P6w^v@P^ &G+HP P6w^&% &]U^&G22S PP6Ts28g^&&O^S PPhs22t2u2}P662 tP^&S62PP6W]U22FF P6IF uFFHN;s PQFP6?F9Fu^SQP6u2"9Fu^SQP6u21^SPP6t~uDF@F;Fr PvFP6?F t P6FFFF^GFFFHFvN^&8)uN^Sv6FuP66FvN^&8)tsF@F;FrPP6 PvFP6?F u9Fu^S3QP6t$4PP6^SvPP6eFFt^%rQ2rJFrCcPP6Fu.dPPPP6eFvPPPP6eFsMrF>2u 2%%1>2Qu 2% @>2Vu2% >2Ru 2 @ 2]U,PP2P6?F tPP6P6IF uPP6P2S62RPPwmP2S(P6XF tR=u;P2S62RPQwmWS2S(WQRPRPQRP6mFF t 2QP6P6I ux2622FF t HF.t%sv/t١2FvFPPP6?FPĞSRPPwmPpSP6XF t6JPv6&:t@'sPP6PP6︽PP62S626PP6 5P6F6"56 5P6FPP6bPP6PP6bPP6P6cPP6PP6dPP6PP6dPP6PP6ePP6 P6I ux2622FF t HF.t%sv/t١2FvF PPP6?F PĞSRPPwmP2S(P6XF t6JPv6P6I tLPPP6? u5PPPs26J6OPP6>2ut2622FF t HF؀.t%s^/t١2F^پ ٣22F22~t6JPv6P2P6I t^2P2P6I t^2 P2 P6I t\2PPP6? u P6h 222FPPP6? t@FuKuDĞ& &=v6t=uiuĞ&?uiuFĞ&?v8u F WPP6? uP6YFsF FFP6^F t' PPP6? uPFP6cF2P6I tPP&5P6?F P6I t! PP,5P6?F@905v05P6I uVPPP6?F tV\2ĞSP P6wFV t6J6OP5P6F2t2P662P6I;wPQP6?Ft$\2P\PP6Ts\2sĞS P6wFV t6J6OXP5P6FV22## t#2>2zP662P66P6IvPP6PPP6? u*\2ĞS P6w2b2PPP6? u'\2ĞS P6w2222PPP6? u'\2 ĞS P6w2222PPP6? u'\2ĞS P6wb2PPP6? u"\2ĞS P6w22 22PPP6? u"\2@ĞS P6w22 222;b2w22;2u;2v6J6OPP62292u92v$\2u u6J6OPP6P6IFF؈F9FwTWPP6?Fs Ķ_Ķľ(u+JVtsB;u2u @P6@]UFFVF9Fw^ &F0:r&<9w"FN~6jN03FA:r69Fu^SaQP6u99Fu^SbQP6u6J6OcPP6]LinkerConfig.Sys[Sys]LinkerConfig.SysLinkerConfigFileDefaultNo Yes MaxVal PWB X DGroupHeapSize LibraryReference LibraryFile PackCode RunFileMode ClassOrder Undefined CopyRight DefaultConfigFile FileToAppend CharacterCodeSet SingleByte Japan China Korea CaseSensitive Details DsAllocation FarCallTranslation LineNumbers NonContiguousGroupOKMultipleDefSymbolsOKPublics SuppressWarnings MaxCodeViewLines MaxCodeViewCode MaxRgIdct MaxRgPdhCG MaxRgRlePStub MaxRgRle MaxWorkingData MaxRgRqlable MaxV8Strings MaxStringsTOC MaxImportData MaxExportData MaxArray MinArray StackSize MaxData MinData Invalid configuration file parameter :: for non-version 8 run file is ignored.Invalid value in configuration file for parameter Invalid yes/no Parameter in configuration file for parameter Invalid CharacterCodeSet "" specified in configuration file for version run file formatCharacterCodeSet: Invalid Character Code Parameter in config file - Library Reference:() from file I/O error (Linker configuration file ; status code )Expect ( for :ClassOrder: ( classname ) configuration parameterDuplicate :ClassOrder:; class name Expect ) for :ClassOrder: ( classname ) configuration parameterConfig File : Default : U6,"P6F؍QP6S"P6r Z"P6_"P6]U6~"P6F؍QP6]UFFF/s;Nr4^S؍QR.QP6Ft@FF뽊FrFFH]UF~u&sPP:PPP6KF uwP6|F9F u~t[ƆPP PP6UF u?N;u^SPQ6FF~t@r^F]UQ^S6|F:u ~u]UQ^SF.&&&&%6︱"P6F؍QP6]UQ~QuF~RuF~VuFFF؍QP66]UQQ^S6|F<s<v<uF%~uFQ~uFR ~uFV~tQrJ6"P6F؍QP6 #P6s14P69#P6F2>2tB6J#P66266#6]#P6F؍QP6]U ^&^ GP^ &PPP62F tP^Sv6F uq>2tO6︐#P6FFP6︤#P6︦#P6^ S66PP:PPP6KF u|P6|<u%PP PP6UF uOP 뫀u=PP PP6UF u#PPPP6eF^&6uO PPP6F u5PP PP6UF utۍۋ6tP6F tFF]U PP PPP6KF tuP6YFFP6^F tGPP PPP6KF u*t"PFP6cF2F]U>2u2QW QQP6KF(uNuPP PPP6KF2džȴ;ru#gP6G> 򫊆ȴ)u Ɔur"ȴ,u u2s P60PPP622dž;w? &&P;\Au;ZAu*$P6P665u6ZA\A &&P@;rP6GsF[PP PPP6KF u1u,tPP PPP6KF uN$P6]UPP PP6UF ttXZ5@Z59X5sV5V56.V5 t.^SPP6bAdA;u;te^SPP6&G&G&W&G"&G &W &G&G&G&W&G&W bAdAፆPPP6&G&W6jA6/]U^&G&W;u;u(^G PPP6^F u rA]U졪 u]˸c4PP6 ]UF~uTPP:PPP6KF u7P6|<r<.w<rB<w>PP PP6UF uHtP*5uGPP PP6UF uUtj򤠨*5&5(5C u>>u5PP PP6UF uFtvۍۋa uK>2uSPP PPP6KF u9t.P6h u6Fu6uPڴPPP62F tZ6︎$P6︨P66︨P6F tFt`QPPP62F tQP6F56︡$P6︨P66︨P6F tFF] #Z MsC_CommonBSSFar_BSSHuge_BSSHeapInvalid segment Segment of Name , Class Size of segment exceeds 64Kb Too many segments Size of Near Common Segment exceeds 64Kb UF <t<ttUPP6~u~ v6fP6^S6wP6^S6︀P5P62;2rP6$2;2s>2rP4P6^SPP6^FZA\AFV^SPP6^FZA\AFVF F F ~u~ uN F uvvFvvPP6^F tg&G&W;Vu;Ft0^&G&W;Vu;Ft&t&w&761^F^&t &G^&GFF Ft~uvvPP6^Fr0^&G&W;Vu;Ft&t&w&761^F^&8GtvvP6^Fr2^&G F&G ~&G FV&G&WF &G&O&W&WfA>hA&W&&O&Ot&OsF;3u^GP6^&O462&bAdA<&&P2^&G FF $<u&GFV9Vu9F s_F VWF $<uN~u^&G@%~u^&G% ^&GFVFVF V^&GV:s&G$ &G^&GFF ^&Gv8&2FX=26jA6/^]U^&GF":t^&G&G 6jA6/^&G&WFV&GFVF":te&G&G6jA6/FVᣰ## t>>u>vP5P6]FVur>N~ף## t>>t>u>w tD<&p&061^FFV&Guu &O&O6jA6/?PPRPPSP6^F&G FFFVv v61^F&GFV&G6jA6/N~6eN~6jFV+N~^&O2&G6jA6/FFFV tFVusFVFF FV)FVGPPvvPSP6^FUQQ0P;PPPPP636^F&G ᣺&GУᣴSP6 6<&p&061^F&Guu &O&O6jA6/ tE<&p&061^F&Guu &O&O6jA6/]UQQ t:FF;2w.@&Fh&uX&8~&Fuɋ]U\2#;u FF 22FVPPPvvPP636^F&G 3\2#;u&G6jA6/]UQ63@&FX&8~&]UP^&P6 ^&G$&G~&^&&XAYA"ʋ&H"&@"&P$&@&] *Pc q`9/ka///U>/u/F///;Fu+PU>/u/F//;Fu+O&// U졼/v&U졾/v&U졺/v&U/v&UF%H+UPv&F&$V;3uu)Fu,Ft$t Fu Ft u v&L+UFtv & Ft"v &Ft &Ft)v &  v &Fu &Ftv&  U FFFVFV^K v_.i1:O0>v& "v& u)v&v&tvvv&u~ v&|u^ &F_uv&D Fv~ v&Du&D &D v&D tvv~v&DuxEv&th Zv&tZ&D*&T v&tE&D*&T*ЉVv~ #v&t v&Dt ~  U <r"^&&W&G&G;F s Wv X^F&F&GFFF;FsN ;Nv&@FFڋF;Fr ,v@^&Z&WS&_[&G]Us]&G@]U cr &G;FsGvX^F&F&GFFF;Fs&@FFF]U>uP6 u>t&G>u]ð] 9 6U$^ SvRPPNQNQP6F uP^ SvRPPFPFPP6F u$^FF;Fs4z0r vz9vt^ vJ܀0Fġ uDPPP6uF uK&G ^;v ^X ^F&u^& u@^] UVnjޱ;u$:u^&GPPFP6uF t^&$t~ury^&GQQWRQPamP^Sv6XF@~&F =amt =wmtFP6sFr^&G _^SvFPFPF uE^&G F^&GFsF^F^S^SvFP6]U^&^&G :t W^&G<t':t!&OFP6sFr^&G^&u2F ^&~ t^ &?uxPPP^ Sv 6c>u!FP6fF u ~ r uPPP6uF t^&GF&8G w ]FX ^Fv&DF&GF&GF&GF^&GF&GF&GF&GF&G F&8G uANsNQPP6gF t) FF^&#tF ;Fv F&O#F ;Fw FrF9F w^ &FF^&O&@^&G^&wH FA:r ~&] ~&] Y]U^ &G :uSvv6.^ &G :tWSvv6n^ &G ^ Svv6FNs=u8^ SFP6*~u#^ &G ^ &t@Fs률^ &G F]U0^ &G :t9&G 9Fu9Fu^ &G&WFV^ &G&W;Vu;Fw3&G^ &G^ &G^ &O&W;Vu;Ns^ &Gs &G&;GwH^ &G &W"N~;u;w/&wщFVN;u;s&+O &"N։~؋FjFVFVF%Ff^ &G^ &GNV^ &O &W"^ &G^ SPFPFP6F t4F^ &G$^ &G :t :6t^ &G&G &W"FV&9Wu&9Gw&G&W9Fu9Fu^ &G&WFV^ &tSP6F t^ &G&GF%^ &G^ &GF҉VԋN~+&O &"^ &tb&w8&SP^ &w"&w FP6Fu^ &?(~t"^ &G&GF^ &G :!t ]UQ^ &G :uS^S68O^ &G :t S^S>6^ &u^ &G ^ S^SF^ &G F]U^&G :t:6u^&G&G &W"^&&Wd^&G :uY&Gs&G&;Gv &G&W^&G&G &W"^&&W^&G s7&G s/^&/&_!^&G :!u^&&G ]U^&^SP6]U^&G :t :6t UƆ^&GF1F&VF9FtfF+^&G &W"FV&w8SQRPFP6F tuvN+N^~9^&w8^Sv^&w"&w FP6F t%u^Sv6F uƆ뵋FsF1F^&G &W"F+F^&GN+N^v0Y^&G&GFss^SP6]U^&G :t :6t ^&G&WFV&O&O &"N~;u;wN~Fs FF% u8X=u0<P6 u!F6BP6> uD=t=!t3]U"Vnjޱ;u$:u ^&G(6~F =rmt =tmt ^&G ]UQQ^&^ &&W^&G :t WFP6F uCj~uF1~uF$^G^ &Z&W^&F^&GF]UH~F =amt=wmt=rmt=tmt =mmt&!^&G F^&Z&WF^&G]U^&^&G :!t ^&GN ^&]U^&^ &&W^&G :!t ]UQ^ &G&O&G &G &G &W"~ rmu&G &G&O&G ^ &G &G&G&G ^ Svv6F^ &O ] UQF :r10^&Fr^&0FFF 10^v&F@]U vvFP6F^SvP}F^&:F@F^PvPXFF^&:F@F^PvP0FF]U(FFF^SvRQPNQNQP6F u%F t^ SNQvNQPP6F~uVFF^SVPvFP6F u2~t,^SWPvFP6F u~tF;Fv4N+NA^v0^ ~9^YFF+F@^&]U^&<{t<[tF FF^&^&?{uFSXPvFP6F uoF sdt_NAv~^YF@^&^v&48Y ^& ^SdPvFP6F u ~uFHN;v9@N+^vp^~&=9^YF@N+^&CFP6F u^&O@wA^~&=9^Y^&G@^&^v&48e^&v&4^P^&wg&we ^&^v&48g^&]U"^vFF^&F^&G^vNFY^&Gw^ &Gj^&GyF^&^vNFYFP6F uQ^&G@^&^&O@wA^^Y^&Ƈ^&Ƈ^P6F uV^ GkP^ &PFPFPP6F u)FPvPPP^SPkPP6] UT^&G F =wmt =amt^SvFPFPFP6F uۍFPvPPFPQ؍GPQ6F!t=u'~^&Gi^GeP6F9FvF^kvNFYF^&^S^Sv^SFP6 F tF~u;^SvRPPRP6F=u^v&xF^&Gi뾃~thPFP6F^&F^&G^vNFYFP&GP6F^SP6FF9^SFPvRQWv Pv6XF u 6^&G ]U4s ^&G8^&G8FvP^ S7P6F t^&F^GkPoP^&PFP6F uFt @^&F^& ^ &Ow~&=^ 9^NOY^ &G^&F t$@^wk~ ^Y^ vxp{~ ] UB^&G :6t ^&G ^SFPFP6F u^S6{F u^&FFvN^S^Sv6F tM^G8P^SvRPPmmP6bF u"^&w86F t^&w86FF]U^&G :6t ~v F^&Gj]UQQ^ &t4SFP6^& u0^ SwmPvv6^& u^ &G ^&]UQQ^ &G<tO<uSP6g^& uI^ SFP6^& u0^ SrmPvv6^& u^ &G ^&]UQF =rmt =tmt"6KrmP6lnK^&G ]UQF =wmt =mmt"6`wmP6pr`^&G ]U^&G :`t ^&pSP6]UQ^&^ &&W^&G :Kt lS6]U^&G :`upSv6 ]U vPFPP6F uxFV^&&W~u~tYFuRFVFV)F^v^ SPvvFP6F u^ &?Gu&G &W^&&W] U^Sv^ SPFP6F u_^ &G &W ^&&W~u~t\FuUFVFV)F^vvvv^ SPFP6RF u^ &?Gu&G &W^&&W]U^SPvFP6F uM~u ^Sv^SvRPPFPFPP6F~t ~s ~u^&GM&_O^&GL&^v@^&GMZ&WOF@N+^&OL^S^Sv^Svv ^Sv6F u~~~~Zclu~~~~^ &G=2^ &G;)^ &G.^ &G/!^ &GB^ &GDFF^&] U^ &G : t:t :t x~ wT^.%%%% %%%*6F^ &G=?F^ &G;3F^ &G.'F^ &G/F^ &GB F^ &GD]U^&G : t :t ~v F^&G1]URPPFP6F uK~tE^&t6G^&G&vH^&@x]UFP6s FrfxreF sFF FFFv tuPPtP6uF uot&G ^ &:GwY^ &GtX ^F&G;FsF^ &GPP^&GȴP^Sv6F twEF^&~u8Fj^ &OQP^&OɵQPv6MFF tmn~uF~ t~uF r~t6HFRPPNQNQP6F uFPFP6F uP뻋F] U^ SP^S6]U^ SP^S6]U ^ &G :t :`t fF FuXFP6^ &O `:ʱtA sUFs&8W uH^&^&G^&GP^&G^&G^&G^&G^&GA^&G6v tuPPtP6uF ut&G ^ &:Gw^ &Gt@ FF^ &G^&^&G^&G^&G^&G^&G^&G^&G^&G^&8G uA^&O^&8G u@^&G^ &GA^&G^ &G^&G]U^&&WF F u@rPPzP6u~~ u | zu{zF F^ &?TNt4bF FF&GF^ &O~F u+JVu4*^ &GFv^&FF^&Z&W] LIBRARY: ctos.lib VERSION: x12.2-FSF (tuesday july 28, 1992, 8:53) LIBRARY: ctostoolkit.lib VERSION: x12.2-FSF (tuesday july 28, 1992, 8:54) LIBRARY: enls.lib VERSION: x12.2-FSF (tuesday july 28, 1992, 8:56) LIBRARY: linker.lib VERSION: 12.2.0 (tuesday august 11, 1992, 10:34) COPYRIGHT (C) 1980, 1992 CONVERGENT INCORPORATED. ALL RIGHTS RESERVED. COPYRIGHT (C) 1980, 1992 UNISYS CORPORATION. ALL RIGHTS RESERVED. THIS SOFTWARE IS PROPRIETARY TO CONVERGENT INC. AND UNISYS CORP. AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF THE PATENT DIVISION OF UNISYS CORPORATION. THIS PROGRAM IS FURNISHED UNDER A LICENSE RESTRICTING ITS USE SOLELY FOR THE OPERATION OF A DESIGNATED COMPUTER FOR A PARTICULAR PURPOSE. TITLE TO AND OWNERSHIP OF THE PROGRAM, INCLUDING ITS SOURCE CODE, SHALL AT ALL TIMES REMAIN IN THE NAMES OF UNISYS CORPORATION AND CONVERGENT INCORPORATED. VERSION: 12.2.0 (tuesday august 11, 1992, 10:33)$TITLE('ENTX V061A M01 === 08/05/87) NAME ENTX ;MODULE_DATA SEGMENT WORD PUBLIC 'DATA' ;VERSION_MODULE DB '061A01' ;MODULE_DATA ENDS ;******************************* MODULE HEADER *******************************; ;* *; ;* *; ;* MACHINE: B38 LANGUAGE: MASM V5.1 OS: CTOS II *; ;* *; ;* DESCRIPTION: *; ;* *; ;* THIS MODULE CONTAINS THE 8086 MS-PASCAL *; ;* AND FORTRAN ENTRY AND EXIT POINTS. *; ;* *; ;* *; ;* *; ;* *; ;* *; ;* HISTORY: *; ;* *; ;* MM/DD/YY VVVV/MM PROGRAMMER / DESCRIPTION *; ;* *; ;* 08/05/87 061A/01 M. Chen / Modified 'Begxqq' to fix the stack *; ;* segment problem with PMOSS. This *; ;* initialization must also be done for V4 *; ;* run files. We now take the RPL of the *; ;* code segment and put it in SS. *; ;* *; ;* *; ;* TITLE: BTOS SYSTEM SOFTWARE *; ;* *; ;* PROPRIETARY PROGRAM MATERIAL *; ;* *; ;* THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE *; ;* REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE *; ;* OR UPON WRITTEN AUTHORIZATION OF THE PATENT DIVISION OF UNISYS *; ;* CORPORATION, DETROIT, MICHIGAN 48232, USA. *; ;* *; ;* COPYRIGHT (C) 1980 CONVERGENT TECHNOLOGIES, INC. ALL RIGHTS RESERVED *; ;* COPYRIGHT (C) 1987 UNISYS CORPORATION *; ;* ************************************************************************* *; ;* *; ;* UNISYS BELIEVES THAT THE SOFTWARE FURNISHED HEREWITH IS ACCURATE AND *; ;* RELIABLE, AND MUCH CARE HAS BEEN TAKEN IN ITS PREPARATION. HOWEVER, *; ;* NO RESPONSIBILITY, FINANCIAL OR OTHERWISE, CAN BE ACCEPTED FOR ANY *; ;* CONSEQUENCES ARISING OUT OF THE USE OF THIS MATERIAL, INCLUDING LOSS OF *; ;* PROFIT, INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES, THERE ARE NO *; ;* WARRANTIES WHICH EXTEND BEYOND THE PROGRAM SPECIFICATION. *; ;* *; ;* THE CUSTOMER SHOULD EXERCISE CARE TO ASSURE THAT USE OF THE SOFTWARE *; ;* WILL BE IN FULL COMPLIANCE WITH LAWS, RULES AND REGULATIONS OF THE *; ;* JURISDICTIONS WITH RESPECT TO WHICH IT IS USED. *; ;* *; ;* *; ;*************************** END OF MODULE HEADER ****************************; ; 8086 MS-Pascal/FORTRAN entry and exit points BEGXQQ and ENDXQQ ; Convergent Technologies version; requires CTOS operating system ; Bob Wallace, Microsoft; original 7/80 (revised 12/80 and 5/81) PUBLIC INIFQQ ;Dummy to avoid bringing runtime. EXTRN ENTGQQ:FAR ;Main program entry point EXTRN EXIT:FAR ;operating system exit point EXTRN ERROREXIT:FAR EXTRN WRITELOG: FAR EXTRN fProtectedMode:FAR ; a CTOS routine ; ordering of segments must be enforced for V6 run files. MDB DGROUP GROUP HEAP,STACK,DATA,MEMORY,CONST,EINQQQ,COMADS,COMADS_DATA,COMMON_DATA ;CT--- move MEMORY not to be overwritten by heap and stack - M.S. ;Memory segment definition (PL/M) ; MEMORY SEGMENT PUBLIC 'MEMORY' MEMORY ENDS ;Heap segment definition (lowest segment) ; HEAP SEGMENT PUBLIC 'MEMORY' HEAPGO DW 1 ;allocated length zero block HEAP ENDS ; *** CT enhancement - PKD ;Memory segment definition (PL/M) ; ;MEMORY SEGMENT PUBLIC 'MEMORY' ;MEMORY ENDS ;Stack segment definition (fixed length) ; STACK SEGMENT STACK 'STACK' DB 8192 DUP (?) SKTOP EQU THIS BYTE STACK ENDS ;FIRST resident public data ; DATA SEGMENT PUBLIC 'DATA' ; WriteLog message called by emseqq PbMSG DW 0FFF7h CbMsg DW ? Msg DB 124 DUP(?) PUBLIC CSXEQQ ;pointer to sourcef context list CSXEQQ DW 0 PUBLIC CLNEQQ ;last line number encountered CLNEQQ DW 0 PUBLIC PNUXQQ ;pointer to unit initialization list PNUXQQ DW 0 PUBLIC RESEQQ ;machine error context, stack ptr RESEQQ DW 0 PUBLIC REFEQQ ;machine error context, frame ptr REFEQQ DW 0 PUBLIC REPEQQ ;machine error context, program offset REPEQQ DW 0 PUBLIC RECEQQ ;machine error context, program segment RECEQQ DW 0 PUBLIC UPCX87 ;offset address of 8087 error context UPCX87 DW 0 PUBLIC BEGHQQ ;first header word in heap BEGHQQ DW 0 PUBLIC CURHQQ ;current heap item CURHQQ DW 0 PUBLIC ENDHQQ ;just past end of the heap ENDHQQ DW 0 PUBLIC STKBQQ ;stack start, to fix long GOTO STKBQQ DW 0 PUBLIC STKHQQ ;stack limit, to check overflow STKHQQ DW 0 PUBLIC ISPROTECTEDMODE ISPROTECTEDMODE DB 0 DATA ENDS ; *** CT enhancement - PKD ;COMADS segment definition for FORTRAN Commons COMADS_DATA SEGMENT PUBLIC 'COMADS' COMADS_DATA ENDS COMADS SEGMENT PUBLIC 'COMADS' COMADS ENDS ;Constant segment definition ; CONST SEGMENT PUBLIC 'CONST' CONST ENDS ;COMMON segment definition for FORTRAN Named Commons ; COMMON_DATA SEGMENT PUBLIC 'COMMON' COMMON_DATA ENDS ; end CT COMMQQ SEGMENT COMMON 'COMMON' COMMQQ ENDS ; EINQQQ SEGMENT WORD COMMON 'DATA' InitializeCodeAddress DD 1 DUP(?) ExitCodeAddress DD 1 DUP(?) EINQQQ ENDS ; dummy segments are used in Microsoft assembler files to break ; records so that the CT linker will be able to do overlays. MDB ;COMMONDUMMY SEGMENT BYTE COMMON ;COMMONDUMMY ENDS ;DUMMY SEGMENT BYTE COMMON ;DUMMY ENDS ;Code for this module ; ENTXQQ SEGMENT 'CODE' ASSUME CS:ENTXQQ,DS:DGROUP,ES:DGROUP,SS:DGROUP ;*** CT enhancement - PKD ENTXQQ ENDS PUBLIC EMSEQQ ; EMSEQQ: this replaces the real emseqq in erre.pas. ; The routine will pass real time errors to ; WRITELOG and ERROREXIT. ; LTV-2/14/89 ENTXQQ SEGMENT 'CODE' EMSEQQ PROC FAR ;assume ds:data,es:data push bp mov bp,sp mov ax,[bp+12] mov cx,ax inc ax mov bx,offset CbMsg mov [bx],ax mov di,offset Msg mov si,[bp+10] inc si inc si rep movsb push ds mov bx,offset PbMsg push bx add ax,4 push ax call WRITELOG push [bp+8] call ERROREXIT EMSEQQ ENDP ENTXQQ ENDS PUBLIC BEGXQQ,ENDXQQ ;main entry and exit points ;PUBLIC GETXQQ,TICBQQ ;other CTOS dependent code ;*** CT enhancement - PKD ;ENDXQQ: Termination code ; - call EXIT (operating system) ENTXQQ SEGMENT 'CODE' ENDXQQ PROC FAR ;termination entry point PUSH BP MOV BP,SP ;end CT CALL EXIT ;operating system termination HLT ;just in case exit doesn't ;*** CT RET ENDXQQ ENDP ENTXQQ ENDS ;end CT ; ;BEGXQQ: Initialization code ; - set initial stackpointer, framepointer, STKBQQ ; - call INIX87 (real initialization) ; ; For pasMID version: ; ; - set initial stackpointer STKBQQ ; - clear RESEQQ (machine error context) ; - clear CSXEQQ (sourcef error context) ; - clear PNUXQQ (unit init list header) ; - set BEGHQQ, CURHQQ, ENDHQQ, STKHQQ (heap init) ; ; - call INIX87 (real initialization) ; ; ; ENTXQQ SEGMENT 'CODE' BEGXQQ PROC FAR cli ;required by linker/swapper *** CT ; Initialize registers for V4 link. MOV AX,DGROUP ;get data segment value MOV DS,AX ;initialize data segment reg ; Set flag to indicate whether or not we're in protected mode. Currently, ; the 87 emulator makes use of this flag. MDB. ; We need to know this to set up the RPL field of the stack segment. - MEC CALL fProtectedMode MOV BYTE PTR ISPROTECTEDMODE, AL MOV AX,DGROUP ;get data segment value MOV DL,ISPROTECTEDMODE CMP DL,0 ;is this protected mode? JE SET ;no, do nothing special to SS MOV DX,CS ;get the code segment value AND DX,3 ;want the RPL field OR AX,DX ;set the RPL field in SS SET: MOV SS,AX ;initialize stack segment reg MOV SP,OFFSET DGROUP:SKTOP ;set stackpointer sti ;required by linker/swapper *** CT mov bp, sp ; SWAPPER requires initial BP = initial SP PUSH DS ; Make sure that DS and ES are the same. POP ES ; Some of our initialization code assumes ; that they are. ; <<<<<< Following lines of code from pasmax. >>>>>> MOV STKBQQ,SP ;to re-init BP after long GOTO SUB STKBQQ,6 ;contains address of main frame SUB AX,AX ;initial frame pointer zero MOV RESEQQ,AX ;machine error context zero MOV CSXEQQ,AX ;sourcef error context NIL MOV PNUXQQ,AX ;unit init list header NIL ; ; Initialize short heap control addresses ; MOV AX,OFFSET DGROUP:HEAPGO ;get initial heap MOV BEGHQQ,AX ;heap start address MOV CURHQQ,AX ;current heap pointer ADD AX,2 ;point past heap MOV ENDHQQ,AX ;heap end address ;CT--- Give stack as much room as the linker will. M.S. ADD AX,384 ;extra room for safety MOV STKHQQ,AX ;stack overflow check value ; ; Call real number initialization ; CMP WORD PTR InitializeCodeAddress,0 ; Was init code linked in? JZ DoneInitialize ; If not, skip call CALL DWORD PTR InitializeCodeAddress ; Init. floating pt. DoneInitialize: ; <<<<<< END OF CODE from pasmax. >>>>>> ;hand coded instruction for the 8087 ; FINIT eliminated. It seems to mischeivous and not important to the ; operation of PasMin programs. MDB. ; db 0dbh,0e3h ;initialize 8087 (FNINIT) CALL ENTGQQ ;call main program CALL ENDXQQ ;*** CT ret ;*** CT BEGXQQ ENDP ENTXQQ ENDS ;*** CT ENTXQQ SEGMENT 'CODE' INIFQQ PROC FAR PUSH BP POP BP RET INIFQQ ENDP ENTXQQ ENDS ;TICBQQ returns an arbitrary current tenths of seconds value ; called by BEGOQQ and ENDOQQ to give program runtime. ; Only valid for Convergent Technologies operating system ! ; ;TICBQQ PROC FAR ; MOV CX,0 ;constant/tenths register ; MOV DX,10 ;multiplier for seconds ; MOV ES,CX ;address OS data segment ; MOV BX,240H ;time indirect address ; MOV AX,ES:[BX] ;get offset of time struct ; MOV ES,ES:[BX+2] ;get segment of time struct ; MOV BX,AX ;now have address [LES?] ; MOV AX,ES:[BX+2] ;get seconds ; MOV CL,ES:[BX+1] ;get hundreths ; MUL DX ;seconds times ten ; ADD AX,CX ;plus hundreths ; RET ;TICBQQ ENDP ;GETXQQ transfers control to ALLOCMEMORYSL. Since it has a 6 char ;name, its caller in MISHC.PAS can be compiled on the DEC-10. ; ;GETXQQ LABEL FAR ; JMP ALLOCMEMORYSL ;ENTXQQ ENDS END BEGXQQ mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm Crashdump.sys Install.jclInstall>English.cmds Install.ctrl fdSys.Versionfileheaders.sysMfd.sys SysImage.sys XEInstall.Sub Install.SubBootRecord.sysLog.sys BadBlk.sysc@ B25-PAS@ _s|;B @ D >  9|P^Sys8 unisys  datasheet 9|fileheaders.sysSys: sssXD XBootRecord.sysSys< sssMfd.sysSys: ss!ԇB ϖLog.sysSys< sss@ \ SysImage.sysSys: ss!ԇ!} BadBlk.sysSys< sssyW Crashdump.sysSys8 sss@ - pas-s7011.doc datasheet L.{|.{"ԇ**MP|.{|.{tim PascalLst.rununisys  ^.{.{"ԇ(0* PascalOpt.rununisys  d.{.{d"ԇZ- First.objunisys  .{vtw"ԇNC Pascal8087.flsunisys  .{vtw"ԇ\P Pascal.libunisys  .{x.{"ԇRSLinkerConfig.sysunisys .{fhbu "ԇh] pasmid.objunisys .{ǚu!"ԇmp no8087>oemr7alt.objunisys .{v#"ԇvZ First.Asmunisys .{vtw+"ԇ z8 Pascal8087.Libunisys .{z.{-"ԇ,.  Linker.rununisys .{Kt5"ԇߋw PasMid.asmunisys .{ghbu6"ԇ\-B . PascalFe.Rununisys .{z.{k"ԇ  " PasMin.Objunisys .{vtw="ԇk' pasmax.objunisys .{,Vr>"ԇ1ֻ Install.jclSys8 .{|Kt!ԇ24Install>English.cmdsSys8 .{Kt!ԇM Install.ctrlSys8 .{~.{!ԇ&O fdSys.VersionSys8 .{~.{!ԇ~ XEInstall.SubSys: .{zKt!ԇk XfDrive>5.25Sys.{Kt*1w Install.SubSys: .{xKt!ԇ"\ [ !Z!"Y"#X#$W$%V%&U&'T'(S()R)*Q*+P+, O,- N-. M./ L/0 K01J12I23H34G45F56E67D78C89B9:@:;?;<><===><>?;?@:@A9AB8BC7CD6DE5EF4FG3GH2HI1IJ0JK/KL.LM-MN,NO+OP*PQ)QR(RS'ST&TU%UV$VW#WX"XY!YZ Z[[\\]]^^__``aabbccddeeffgghhiijjkkllm mn no op pq qrrssttuuvvwwxxyyzz{{||}}~~ߛޜݝܞ۟ڠ١آף֤եԦӧҨѩЪ{ PascalLst.run First.obj Pascal8087.fls Pascal.lib LinkerConfig.sys pasmid.objno8087>oemr7alt.obj PascalOpt.run First.AsmPascal8087.Lib Linker.run PasMid.asm PascalFe.Run PasMin.Obj pasmax.obj pas-s7011.docGW@ $. @ wH,{. Copyright (c) 1994 Unisys Corporation. All rights reserved.Ver Pascal s7.0.11 Linker s1.00.0008/$_) >@C_F?IPJ@No0OPRO SpY?r0s?u@uo@uvvvw? w`wwww/wx0x?Pxoxy/ yPy?pyy_y/0z`zz/z?z{_  @PЈo? `@РPP?p00O@pO@_/0`@?_pPPP?`0`o ?@PO/0`/P`O@ @  `0*'(" )#+7* 8% /N,!)!!+"+"+"=""" "S"q%)q%q%rq%q%%.%*%9%c"&t"&"&4&5&#5&[5&~5&5&5&A&9A&A&$'A'`'b' b'3 3 3 3 4 4 4 4 !4 '&'a''''' '' 'T'g''5(5(5(5(5(5(5(5()5(L5([5(5((_(((((\(((((((((F(((0(( ({(((y)Ay))C)5))) )))G))G)'**j***]****F*v***/++M+ -+-+/-+F-+X-+5+)5+<+D+i++y+ 7 F.,.,.,_l,yl,3v,rv,7,H,0,C,c,,,,,l,,,,v,,,,,,,+,B ,{ , ,! ,T , , ,k , , ,1 ,g , , , ,,---h-.--+/.F/.f/././..U........;....=A/PA/,S/2`/``/`/`/`/`/`/`/*!!!+"Q"e""""""W#$$%%%+%,%.%0%2%6%8%:%<%>%A%C%E%I%P%R%U%W%[%]%c%f%h%j%m%q%%&"&4&5&A&M&&&&''b'f''''''5(((((((y)))*-*C*f*****++-+5++++,-,.,l,v,,,,------../.d.t....6/A/S/`/ &-3******(*_*p**************p*x****3*S*e*******A*$ * *f *& * *l * * *D*c***r******************=*W*y******;*_*{*****.*=*L******7*^************6 *e * * *-$*'*]****6/*/*0*0*'4*X6*V9*9*;*Y@*o@*@*PA*A*B*B*B*C*D*D*uE*zE*E*E*E*F*rF*F*G*:H*H*0I*MI*fI*^M*N*N*N*O*2P*,T*T*.V*V*W*W*W*X*Y* Y*JY*tY*Y*,Z*Z*Z*W[*[*]*^*^*-_*`*#a*`b*2c*e*e*f*ah*j*l* p*ap*|p*p*q*@q*r*-u*v*:v*|v*v*v*w*~w*w*w*e{*{*{*{*|*\}*}*~*Q~*r**)*|**;**Ѓ***߅**7*`**!**҇**6*y*~**.*_**lj****M****0*{*.*j********3*I*R*W********;*j* *h**˒**D*[*h*m**i*ɖ**9*T****(* *:*{*U*Λ**^*X*n********Ϟ**9*D*V***!*8*C**O**%*P*f*|*`***$****$*)*^***k******H*w*|*ͨ** *1*m***0*U**X*****$*1*6*V*a*f*****'*N*** *=*^******>*s**"*5**;** *C*v*K*ĺ**,*8*k*p***Ǽ*̼*ڼ***|**** *a*n*s****T**Ϳ*>*I*i*****9*D***$**^**#*9*I****!*7*`*w****J********O**]***N*Y**q*"*C*****%*P*m*****f**p***(*8*=*X***-***[*l**** */*E*S***!*F*T****I*q************6***.*3*Z*i***'*p*****%*****%*5*E*}*****;*C*^****9*n*****A**-*Y****$*7*J*q***** *,*J*}***I*h*****F*v**@*k*t********G*^*p*V*k********]*p********/*F*Y*r****e********** *** *7*<*A*****/*4*S*^*c*h*m*r*w* &4HVdiw|"\*8=W\~'5CglOXA\w&7?P|N}     a      m    ; V     = j y   SLox&4BGaf w;"G#?Q*5]&.Yw>J^l"No #Kny|  !!~"""6#F#'$J$$$%[%x%|&&'H(N)! !>!F!Z!a!f!!! !(!!g!m!!=!\!!!!!!!!!5!F!]!r!!!!!!!!!/!D!Y!n!!!!+"+"(+"-+"A+"U+"k+"+"7+"P+"Z+"b+"{+";+"Q+"V+"+e"Ae"Te"e"e"e"e"e"V"""b"N"""J"t"""""p""s" "N"""""""."P"."3"8"="0( 4( 8( <( @( D( H( L( P( T( X( \( `( d( h( l( p( t( x( |( N_W#W#W#W#W#W#W#W#W#W#W#W#W#W#2W#hW#}W#W#w$$$1%%%l%'I%2I%=I%HI%SI%^I%iI%"]%2]%?]%L]%Y]%&c%7q%nq%q%q%(q%q%q%?q%q%q%q%5q%q%"q%/q%Fq%Sq%q%q%[q%q%q%Jq%jq%%% %h%%%%%%&&"&="&U"&l"&4&5&+5&c5&5&5&5&aA&A&M&pM&M&M&M&M&FM&_M&nM&xM&M&M&M& M&M&0M&M&M&M&M&M& M&&M&<M&RM&kM&M&M&M&M&M&M&3M&IM&VM&M&M&M&M&M&M&M&M&M&'M&@M&HM&aM&{M&M&M&M&Z& &&&I&b&}&&&*&&&&&4&C&&&&&&&&&&&-&9&e&{&&&&&& 'I'h''#'('<'P'U'i'}'''''''''' ''G'L'e'''''''''4'X']'s'''' '')'1'T'Y'o'''''m'''3 3 3 3 3 3 3 3 f'3 =f'3 kf'3 f'3 f'4 f'4 #f'4 Qf'4 f'*4 .4 24 64 :4 ?4 C4 G4 K4 O4 T4 X4 \4 `4 d4 i4 m4 q4 u4 y4 ~4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 !5 &5 *5 .5 25 65 ;5 ?5 C5 G5 K5 O5 U5 Z5 U U''''''?''#'Q'' '~''}'''s''' 5(5(;5(h5(5(5(5(5(5(5(<5((<(f((A((((m((I((l((*(P(t( (o(s(((6((((((y)%)=))))())%)N)))I)OC*C* f*)f*f*f*f*Cf*f*g**A*D**?***7*Y*~**v**6 6 5+85+T5+r5+5+5+35+i5+n5+5+5+!5+5+5+5+5+++9+Z+%+7+p+++B+++%++,C,\,,,,.,Q.,`.,.,.,b.,l,av,v,,;,,,A , , ,-"--`-0-3--- -..3.z..9.k.F/./.d.4t.ut.t..R....!..y....,.b. U< U`/Bad argument to fremqqBad argument to dismqq700A01BW00|9 }9  @ @&/0.- %#$!" IWCB WRNW A -./0 *+,>=>?@ P Q RST UABCD  !"#$%-./0L IJK EFGH1234CEQSCEQSCLTSCLESADDSSUBSMULSEQCLNECLLTCLLECL%@""@%     :)BW >>>>>> Fatal Program Error STACKCK RANGECK MATHCK NILCK INDEXCK TAGCK INITCK LINESIZE PAGESIZE 5PAGE LIST INCLUDE TITLE SYMTAB SUBTITLE ERRORS WARN BRAVE PAGEIF SKIP DEBUG GOTO ROM PUSH POP ENTRY LINE OPTBUG REAL INTEGER FLOATCALLSSTANDARD EXTEND SYSTEM SIMPLE SIZE SPEED MESSAGE INCONST RUNTIME IF THEN ELSE END KANJI OCODE :Integer:Word :Char :Boolean:Subrng :Ordinal:Real :Intger4:Pointer:Adr-ptr:Ads-ptr:Array :Record :Set :File :ProcTyp:FuncTypValue Const StaticOriginExternPublicFar RegistSegmenValuePVarP VarsP ProcP >>>>>> Error Count ExceededOffset Length Variable - (function return) Return offset, Frame length128 Forward Proc Missing: 129 Label Not Encountered: 130 Program Parameter Bad: - Compiler Cannot Continue!Errors Warns In Pass One  -+* =/%ELSEEXTERNRORRETURNTYPEREPEATTHENNOTENDRECORD OTHERWISEORORIGINTODODOWNTOFILEFORFUNCTIONFORTRANFORWARDOF PROCEDUREPUREPORTPACKEDSUPERSHRSET INTERFACEISRINIMPLEMENTATION INTERRUPTIFEXTERNALROLNILSHLLABELCASECYCLECONSTSTATICPUBLICMODULEMODPROGRAMPLMVALUEVARDIVVARSWHILEADRANDADSREADONLYOVERLAYLIBRARYARRAYBEGINUNITUSESUNTILXORGOTOWITHBREAKCONSTSFAR ,.A1 %8E#UA/Q1T"G@4%VPIE:.J;]?NB6F&H!M^*h,7#zX].K}a0Qxb*(AAN ~$7=ErDj IZR2ns ;,=:+*-/()[]<>.^@?:=<><=>=(..)..   BWBWBWBWType Extra Hexadecimal Too Invalid Line Number Long , Truncated In Meta String Not Insert Out Expression Identifier Value Character Of Zero Assumed Wrong Skip To Or EXTERN Variable Command Integer Range : Expected Skipped Constant Assign Cannot = Unknown Static Memory Ignored Symbol As Real Overflow Supertype Array LSTRING For Operator Function Compiler Size Assignment Compatible Identical Index Use TO Word Field Record Dereference VAR Parameter Set With Many Components List 255 Types GOTO Statement Procedure Considered Harmful Label Loop Ordinal ; CONST File Procedural Forward * THEN END OF WITH Numeric End Pointer Declared CASE Previous Already Boolean := DO [ ] .. FOR TEXT Begin Contains PACKED Attribute Section Origin Initialize Unexpected Found UNIT Program ( ) NULL Designator Stack INPUT . Levels OUTPUT Module ROM Segment Address Incorrect Control      ] s r]T !*' *#'\#  2 " "T"ET}q S!{ "r "r -#"6.#).().z).#.=#. 2?E5O5E}55b_r]T && d&&dfvvfwggwRR+R&dZgwfve |hY<XW+k]]oC34-34234565# 8D=I 78I 8  0kQ;mF ?>*>T@MN%@Q #2CHlTk0F*?F*#!5F!2.HF #;x%$D/1  # !H4%$%;,SB'kAB[?k%$L4BkT{2T{~1!TB!kC!rBk jT6 9UBG 8%;LDnrBk%;L4,BB L4k/0B 85ASBI 9BG6kUBC#2'  B:>k\#-\#%k"%k#.=#.=#.`#!b ;+O!OO_ c]K5R* "!2iKk iKdJJMNO PO P?!kOb ;a;*;L4B'KKK !47 srY"5nn!!m?p!R'k!55aVBG nD4Bn L45bV!2L4+"DnQ!klT%q! / !H21%;/;y/y slT%q/ 0RCHTlTm*rmRR%;oD)tL4 0k ?k>#! 73R%qR%;o'V^^V%;Oo#!nlTqplT%qt!RqqtG]tG*t!5 tG _u!t!u sT]!]u sV^/BWC(=Rg|#A_} 'Ec{.CXm )Ge-Ki@@?2" k " zzxxxzk zzxxxz zqxxxz@Bz z z z z z z z j  ( ( ( ( ( ( ( (  s 2+INTEGER WORD CHAR REAL INTEGER4 REAL4 REAL812929READLN WRITELN READ WRITE PAGE READFN READSET NEW DISPOSE7PACK UNPACK EVAL FLOAT FLOAT4 ROUND ROUND4 TRUNC TRUNC4=SQRT SIN COS ARCTAN EXP LN EOF EOLN CHR ORD ABS SQR PRED SUCC=ODD WRD LOWER UPPER LOBYTE HIBYTE LOWORD HIWORD BYWORD BYLONG,DECODE ENCODE SIZEOF RETYPE RESULT {$REAL:4}>CONST MAXINT=32767; MAXWORD=65535; MAXINT4=2147483647; NULL=0;?TYPE BOOLEAN=(FALSE,TRUE); TEXT=FILE OF CHAR; INTEGER2=INTEGER;:STRING =SUPER PACKED ARRAY [1..*] OF CHAR; SINT=-127..127;=LSTRING=SUPER PACKED ARRAY [ 0..*] OF CHAR; BYTE=WRD(0)..255;=ADRPQQQ=RECORD R:WORD END; ADSPQQQ=RECORD R:WORD; S:WORD END;CLSTLQQQ=RECORD LEN:BYTE END; ADAPQQQ=ARRAY [WRD(0)..32765] OF BYTE;[VID] [KBD] 061A01BWBWBW[Kbd][Vid] [Lpt]t[Nul][Debug][SysIn][SysOut]>TL!#>%,)*L]7u8T|T|a]y]yBt.t\tttBt\ttBt.t\tttZ]y |Oy]y ]y {y2LL;4| [KBD][VID]>4>N     = 070F01070F01061A01061A01061A01070D01% 0 Hard Data Disk Full File Access File System Error In ; Code: ; Status: Compiler Cannot Continue 0&>@@((  PCISSCINSRCIERCWELSTLQQQADSPQQQADRPQQQCLOFNEWFNILEBUFF `RCWESETEPPMFDE_CEN_CRTQFEOFFWTPFEOLF_T_FGETFPUTFGETHNILEDISE   Dx!Dx!ZERSONESTWOSINIEINJEINRE` @ Dx!x!MICEB  @LNTEDPPINIFBRTEENTEINUXUNITQQREADFN PPEFEXTEERTE  |JD,0 @ 0FCBFQQ [NUL][VID]BOOLEANTEXT STRING LSTRINGNULL INPUT OUTPUT FCBFQQ Source File: Object File: Source List: Object List: [SCR]<$>PASIBF.SYM[SCR]<$>PASIBF.BIN.LST  .OBJ [vid]FCBFQQ Hard Data Disk Full File Access File System Error In ; Code: ; Status: Compiler Cannot Continue    Pag  JG IC Line#    Warning ### ###  Symtab  Pass On Warnings Detected. Pass One  No Errors Detected. Inconst:  =  0Eqq Error: Compiler Eqq - Out of MemoryEqq - Internal ErrorDzwOvwDziOviDznOvnDzrOvrUnrGhsNorGhvSovDnrPreUer062E01700A01PascalOpt.RunPascalLst.Run1#NAN1#INF1#IND?@@@@ @P@$@@ @(k@  @ @C#@ &@ *焑*@ -@1_0@4@.7@@v:k :@#NJ>@bxA@z&D@n2xH@W ?hK@N@@aQYR@ȥoU@: 'X@fPKе@7pdeAlD> iyB ? d'@Bʚ; TvHrN @zZƤ~o#]xEcd 2|0|,|.|  ||&||K1ql+%9C_isQz!    700E01C700E01700B01[scr]<$>TmpQQ062E01VNVN062E01@ No CASE Value Matches SelectorString Too Long in COPYSTR'Lstring Too Long in Intrinsic ProcedureSet Element Greater Than 255Unit Version Number Mismatch Illegal PcodeUnsigned Value Out of RangeSigned Value Out of Range!Uninitialized 16 Bit Integer Used Uninitialized 8 Bit Integer Used1REAL Indefinite (uninitialized or previous error)NIL Pointer ReferenceUninitialized PointerInvalid Pointer RangePointer To Disposed VarLong DISPOSE Sizes Unequal@ Set Element Out of Range~ll[KBD][VID][]}[!Scr]]$$.Tmp}[!Scr][!Scr][scr]<$>BsFilter.tmpVNVFp        {}MASTERSERVERLOCAL{}[]{}[]<>[sys]LptConfig.Sys&Press NEXT PAGE or SCROLL UP to continuep(Press NEXT PAGE to continuePascal s7.0.11U용>t ؚtʁ Žм  &.+zptvx03<>t<8BF~tv F30BF3FFHFuӋ]F Fv|#u FFkv2=|Av|#u@v|#uB "s9vD2FFv|#u nvЋD2ЃЉVFFFPv2+F@PvFPF%WuANvFVT^ ؿڿ&&WvT-| uAvT-N|A"NsQvTFVvTvFV-| u^ ȿʿ&&W^ ̿ο&&WF] PkHPk]h*v|u%v\2@ PPW PPG PP7 PP' wr.=        PPv(PFPF֊F2PFPvt PPPCPv|t'vt PPPCP7PP7Pu ],v Dv Dv Dv FDv Dv F4D%v Dv FDv Dv v2PF@Pv v ~ }u@Dv >]P06ѸPPP6щ6v vP46р|t@"F];vDvvt vDPYv~E Dv&v]vvFPtrF2PFFFF]vvFPrF2PFFFF]vvFPdrF2PFFFF]JvvFPrF2PFFFF]~uF2PFF؉FF]v<t@vЋ%"sv]~vFPFFF]vuv P0vˋv6ˋDˋv4D v4Dv4D v4ȿʿTv4ˉDv4FDv4Dv4Dv4D]Rv4Dv4"Dv4Lv4 LuB"sv4ttv6ƿ6Ŀv4ˉDvˋv]v4DFv4LFv] F2䖋2P^&&WF2^&&WFV‹&~t~uF~uF~uF^&&WFVƒ&^&&WFVƒF&^&&WFVƒ&&W^&&W]~uFPP} $~uFPP} FPP} ^FV&&W^&vvK^&^&^ &^&^&^&^&^&FVFVFV]^&G &W+ȿʿ tA^&G =vB^&G=NvA:Ѹu@ Fs^&G ^&O+ȑ^&G^&O 6P3PFF]y^&G&WFVF Ft_vT+ȿʿ uAQvt^&GP^&G P s^&G&WFV^&G&W FV뙸PFV]FPP} ^&^&^&G^&^&G^&^&G^&^&G^&^&G &W^ &&W^FV&&W^SP} ^&G&W FV‰^F^&G&W FV&G ^ &^F&^&G&W FV꓎&G &W^ &&WFVFVFV]vvvDTvFD vD vDvDv]vFFF Ft6^&GsFVFVFF^&G&WFV‹FV]V2F2FF]vt4vT+ uXFPFPb~uA"s PvNBF%sF 2FvT+ u/vNvDF%sF 2FO>w vD !~wvDT vDT F%s F 2FF]FP6ʿ6ȿavDvDvD]>rPˡˉFF]FPP} ^^F^ F&^ &^SP} ^&G&W FV‰^F^ F&^F&^ F V &&WFVFVFV] #F;tANF]>}@>}A"s/~<`u' u P ~tF?9Fv:u4v2P PFPsv͢FPdF@F= uF2P PNQ4~uA Р2P PNQVР2P PrQVР2P PrPV4 F"F F sFu P!FQFv:FuFF@F=u⡲PIʠF|Ft P] :Ft9FPTFPF2PTvv ;>w!] :Ft9FPTFPF2PTvv ;>w\]5 :FtA:FtB"sHFPTFPF2PTFPF2PTvv ;>wV] :FtA:FtB"ʠ:FtB"sWFPTFPF2PTFPF2PTFPF2PTvv ;>w]]62P PFP4>`tA"s`F!~u#>t@>`tA"s!݀~u#>t@>`tA"s!z] v ;>wUKP] r FPTFPF2PTFPF2PTv ;>wI]"3PPP66h] ^&G<t ^&G<ul^&G^&O t^&G&WRPv^&G^&O t^&G&WRPv拄ˋ+FV uvDFVTʼnV^SXP^&2HHPHP]K>tʈF tyFV^&G<t,^&G<t!^&G<t ^&G<u^&G "u vvU^&G&W^&^&~FuU]HPR]>uk tˋF 2PPP ˁ>vPˣʋF ʋF ʋFʋFʋFʸP衸ˉFF] v v vvvc] vvv3PPHFF]vvv3PP']PvvP3PFF]Pvv3PPFF]cvv3PPPFF]Dvv3PPP]+vvv3PPFF] vvv3PPl]kPv3PPPR]Pv3PPP8FF]hPvPP3P]hPvPP3P]uhPvPP3P]UhPvPP3P]5jPvQPP3PP]Pvv-Pv3PoFF]Ft7vv 4PvD 22P3Pv 4PPv v| wvD HFFFFvD +FF~vFvv 4vv~]&22vF~]&22ъPvFF~]&22v~]&22ъPv 4vP:v F@FH;Ft[]vDrvDvDsvt4yFv&G< t!vT+ uˀvoP@PP]vt4 HPPvtcP!]vvttvttP3PFF]PvttPvtt3PQPPP3PFF]K-PvP3P`PP3PFF] ~ u P~ LtvDvt4F=uA"Nsnv|vv3PvDJv.PP~+uPPvtP3PP3PPP3PvDvDvDsP+PPP!P1PPP vWvtvvDr#vt4HPPvtPvUvvD~ Iu@~ JuA ~ KuA FvT+ t&v&G&W FV&G &WFVGvT+ t&v&G&W FV&G &WFV пҿFVvt4=uAvt4N=uA"Nr^ 2vPU>vDvU^vDvPUvDov-PUvD\v.PUvDIv+P.PUPUIPevD)vU6vDEv.&k&~&&&4&H&X&Ft"vv3PQv&G PFVPF 2PF$2ЊF2BRPvUvUFtNvv3PQv&G PQFVvv RPPvPP PvD vvD~ Fuv*P~u!vDFPvvFtvD]^~ u P~ Xumvt4sFvT+ؿڿ uFP66FP66vv ~u3Pv~u5PSvDHvv ~uv3PP5vD~t&vtT+ uFP66]~ tv~uFvvDFvt4߉FvT+ȿʿ tAvT+̿οN tA"NrtvT+пҿ uAv&G<uB sF2䖋4̈F5v&G< uF v&G<uF vT+ؿڿ u~Xt F2䖋̈FvT+Կֿ uF2䖋Z̈FFv&G< r^v&G< wQ~-t ~.tFv&G&W RPs)v~u3PPvDv3PPFMvt4`s8~-sFv&GsFv&GrFFF~u Ps~ uLPvvUV\~XuXPv3PUE~|R~u*v&G&W FV&GFF2䖋̈Fvv~uvv3PvD~tvP~uvDvP~upvDF2n̍~vDr5vDr+FDPFPPP^vtvt%PFPPP7vtvtvzvD0~uF2vvUF2vvU]FF Fu^&Gs ^&GF"^&GP^&G&W RPP3P؉FF;FvFF^&GsO^&G&WFVF Ft4^&G&WRPpF^&G&W FVF;FvFF^&G&WFV@v؉FF]3 F^&G2FFFV+ uFFV+ uFFFF^&G &W+ȿʿ uA^&G=B"^&G =|B"^&G &W+ȿʿN tA^&G=wB" NsFF,^&G=FFF^&G&W FVvvsF^&G &WFV^&GsF^&G&W RP߉F^&G &WRP|Pv3P[։F^&G&W RPFz^&G&W FV&G@@FQ6^&G&W RPP3PՉF1/wr. /--%-%-x----`-.h-p-U....~uPdF~v~t F%sFFFF]~uFFt8vPvԋvˠ拄HHFʉF6vPԣʋF]e>Pʉʃ&ʃ&&>&G&Wʃ&&Wʋ&&Wʃ&ʃ&ʃ &ʃ&ʃ&ʃ&ʃ&ʃ 6&]$~uF6vFP4~vA s2FFʃ&ʃS6ʚ.'ʃF&ʉFFʋF]6YԣˡˉF6˸PP4ӣˋF]6vPӣˡHHF;sˣˋF]vv3PۉFVFVFV^&GP^&FV]o 6ο6̿3PxۉFVFVFV^&FFFt^&FF v0^&^F&`PvvvIPPvP3PFV]ˉFv2@FFP6˸Pvv22vvЋD22PvvD22vvЋD22PW6˸PPѣˋF@FH;FuF]2 ^&G<u^&G&W FV ^&G<u^&G&W FV ^&G<uAFV +пҿN uAFV +ԿֿN uA N^&G<uB "N Nr+v vFPFPxv vԉF^&G<u^&G &WFV v DsC~t~u6FV +ȿʿ uAQv tvvr P~u@"σ~tA"H rv FV +ȿʿ uP9PPPv tP?PPPqv t~t~u vFvEvv v D] b v v҉FV vv҉FV^&G<t^&G<tFV + u FVFV FV+ u FV FV^&G ^&O :t^&G s ^&G r,^&G&W RPrщFV ^&G&W RP\щFVFV +FV uA^&G< uB^&G< NuA" VVFV +ȿʿ uAFV+̿οN uA"NFV +̿οN uAFV+ȿʿN uA"N Ns PdF^&G<u^&G^&O 4"FF^&G<u^&G4"FF^&G<t^&G<t^&Gs^&GsF{^&Gsp^&Gse^&G&W FV&G^&G&W FV&G;ȺuB^&G^&O 4"^&G^&O 4"ЈV^&G< uC^&G< u8FV + uAFV+N uA N NN^&G< u ^&G< t^&G< u^&G< uFFFF]^vDrJvvωFVFV+̿ο uAvT+ȿʿN uA"Nsv̿οTFV+ؿڿ uAvT+ȿʿN uAvT+̿οN uA N"NsIvT+ȿʿ uv~EDTv~3ҋEDTvؿڿTR^&G< u]v&G< uPvFVT^&G&W RPs+FPvvPJ׋v\&v\&vv`rvT+пҿ uDvDv66࿸PՋvTFPP֋v\&vDvt4`so^&Gsd^&Gr8^&G&W FV&Gv&G&W FV&G;r!FP66俋vt'RPЋvD]vvT+̿ο u%vP3PPvtPP5vDv&P~u3PPPvDvؿڿT]vvvvt4)̉FVFV+ȿʿ uAFV+ؿڿN uA N^&G< uB"sXPv3PvTFVvvvvsFV+ؿڿ uAFV+ȿʿN uAFV+̿οN uA N"Nsv&PFPvv ϋvˉDvD^&G<uvvv3P3P]Ev&G<uv&G<uvˋˉTovt4WsvPEP׋vTHv&G< uvPMP׋vT#v&G< uvPUP׋vT]"FtFF^&G2S^&G&W FVF FtX^&Gs FF?^&G&W RPv ^&GPvoPv vvv^&G&WFV^&G4^&G &W+̿οN tA"N^&G &W+ԿֿN tA"N^&G &W+пҿN tA"N^&G &WFV蓎&G<tB"r^&G &WRP-FF^&G&W FV䓎&G F^&G&W FމV&GFF;FrKFF^&G &WRPv vv=Pv vvvNvvv!ƉFF@FH;FuF F4^&OtB^ʉF&G &W+ȿʿN uA N"N"hrFF>ˀv+Fu63PFVMFu vvܣ^&G< uF^&G< uFvv=u FFh4"Fs$Pv v P0PvvP3P#`P6v vPvPP3PFt@>~@ЋF4 s&P]P3P3PX6v PdPCPcP3P3P+6v P7PX^&G P^&G2Pu1/wr."@m>@@@m>@m>@m>@@2=<@?]Ws P&G:tv]½"^&GFFF;F|8FFv拄ˋ+FV uA ""F@FH;Fu"u P]PZFF FtAvT+̿οN uA"N4"Fs vvvF Fuv&G<vPvЋFFF]Ҽ^&&WRP3PkF^&G^& uv^T&&WvDrPvЋvDFFPʋF]cFPFFV+ȿʿ uAQvvjsPFFFFF]Fv t4ċv | uA"v Lv L uB"s9v ~ u3PPڋv D Ftv P~ u Pwًv D >u@>uA rP3PىFv F!v &G<tPPP՚!Cv &G&W FV&G &WRPv &GPFv &Gs v މFFvv t43Pvv &G&W FV&G &W+ȿʿ uFFv &Gsv vމF>v &G&W RP`ʉFv &G &WRP(=u vFvr؉FPvvv3P։FFFvEڸPvPvtv &G&W FV&G PPv3P`Pv3PV։Fv &Gsv &GrFFPeǍF Pv &G &WRP2v B޸PP[Ҁ>u@>uA"s !>u!v t4Fv P~ uPvv^PP3PPv3PՋv Dv t4 rv D v Dv D >t"v v v &G<tP!3Pv &G &WRP͚!6h>t@&OtB &G&Wv +TN tA NsP3P͚!F P&G&W RPċv ~ u&GP&G&W RPP֋v D&G&WFV&GsF3Pl͚!>t!v Fv T+ uv ܿ޿Tv &G< tv DsF Pv &G&W RPËv t4FsPv ~ uPP֋v D Ftv P~ u Pԋv D v ~ u3PPՋv D>t@"8sRPiPPPFt$Pv tPPԸPPv tԋv ًv Dv P~ u~ u5DPHԋv Dv D\v &G<tv &GsIPoP3P3PFt v t7Pv tP$Yًv Ds Pv ~ u6ˋ~ &G&W RPPԋv DF Pv &G&W RPOFt PIv &G< uAF Pv &G&W RP‹v P~ u~ u5>PBӋv Dv DWv &G< uAF Pv &G&W RPv P~ u~ u5Pҋv Dv D PcFtFt PIv DsFu P]˴v&G< rv&G<wv3PPP]蘴vt4膽&OuB"sQ&G<uA&G<uB sv&G&WD Tv66ыvD ]v&G<tv&G &WFV&G<uvDvP~&G P~&GPv3P3Pv&GPv&G&W RPlPҋvDFPv&G&W RPyv&G %uv&G #t;vuuvP~&GP~&GPv3PϋvDv P~uPЋvDv~u~&GP~&G&W RPPыvDJvP~5~uv3P?ϋvDv P~u~&G&W RPpPtЋvDvD!vP~5~uv3P΋vDv&G<uvDv&G #x;zu0v P~u~&G&W RPPϋvDvDv~&G&W T]v&G<u^vt4v&GƄav~&G&WRPϋvDv~&G&WFV&G&W T vPiv]w &G<uA&G<uB&G<NtA" V&G<uA&G NuA"N "(sBFP3PvTvF uP!vPPvvF u4NFF Fu vvvv>vv`߉FvDsFFV+ uvTvЃ~uvP~u͋vDv&G2PP|Psdv&G< uv[P~u3PPvv̋vD*v&P~u3P~u5PvJ̋vDvFVTvP~uL͋vDU>u@ȡ+ĿƿN uA"Ns P P@ʍFP3PovnËFFF]C3PP66FF]#P3P66FF]3PP66rFF]ݮPP66QFF]輮^&Gr v&Gs P^&G&W FV&G@Fv&G&W FV&G@FF;FvQFFtBPPPPыvt3PPPk3P̋FHP̸P8PFFF] v v܉Fvt4܉FF;FvFFFFv&G&W FV&G ^&G&W FV&G ;ȺsB^&G&W FV&GvF&G&W FV꓎&G;FvB "rPQPPϸPvtPt^&G&W FV擎&G P^&G&W FVⓎ&GPˋvt4HPˋv PPvʋvDF]觬bPvv v~Pv vvqPv3Pxɋ] u vt4vv̋v~u5vTv&G<v v&G< u%`Pvtvtvt4NP3Pv&G< uaPvtvt3PPv&G< w`PvtvtP3Pvt4s+vt3PvtPvt4vvPUqv&G<tvt4vvgFvt4ډFvt4 =u'`Pvt3PPPvtP3Pvt3PvtPvUUF;Fv]`PvtvPP3PPP3PNjF@@;Fs-vtF@@PPvtv}PvF+FHHPUv&G<t v&G<ufFbv&G<u2v&G&W RPἋv&G&W RPNʼ FtFcvvtvtvt4P3P PFP買FP諷]vDP薷]Gvt]שv66vt47vt4ɋ]訩PPPċvt4蠽]~vvt43PӋ]bv4&G<u v4̣6Njv4t:Nj]#vDs$PvDP3P3Pˋvt4t"PvDPP3PˋvDPvl]Ȩ Fvtt4tFV^&G2䖋-̈FFV+ uFD~Cu vDs~Auvt|tF ~Iu@~WuA vtt4F=uA"N"Ns F2Fvtt4`v"Dsvt&GsFTFSFvt&G< uGvtt4=v"vt~}u3PPvƋvDvt̿οT~ u PFIvFDvEF]_vDPvD>u@Р4"r!FVFtvv^_wvDvvjDvDvt&G<tvtT+ tvD~}vDFu#vt4P~}=uv&ċvDvt4Ds P>u!vt4T+ uvt4ܿ޿T>t@v|tA FˈFvtDvt<uiFt迋꿉FV 쿋FVvDP3Pಋvt4FVTvt4vt|uu PdFV+꿹 tA ˋFV+N tA "N r"v|Ru PI PIF]"PPPJ>u@>tA"s!6ʿ6ȿ3PF.FPP汀>u!vȿʿTvDvċvtÍFPD]萤vt4Э4v Ds PP蒼]^uPP3P3PNj6ˋD2Fv¡PM@Pv`ǡPhFVvDP3PvtFVTˉF6ˋDˋvtT+Ŀƿ tAvt&G<uB"svDPFP讱EvFPIvTvt46ƿ6ĿvDPuvˉDF!v|uvv^_w-vDPvUsvDPPVv|Au$vttvtDs P vtt1Ƌvt&G2PPPs3vtt4FPFP蒭vtt4ˬFvPvJvDP#]ov|uvv?vDvDPk3Pvws%vDPPxPvtt躿Pxv|RuiPvttPP3Pv|DuiPvttPP3PȾivt&G<u(hPvttPvtt4׫P3P萾1hPvttvtt4CPvtt4褫P3P]v8v2vDP]Dv|,t v|+tFvήFv|+u@PP66vv4U`v|+u~Uz~UXv4vËvDv6ֿ6Կ9v|tF~PU#rPPUH~u ^w\FvUFPUFP^wFv&G<uA""t^v&G&W FV쓎‰^F^&G &W+пҿ uA^&G uB"^&G=uB"ʑ""u Pvt赽FPHv|tv|t v|tv|uFWFRv|t@PUsPPP͹v|uPPP3PFv4&Gr Pv|uPP3P3PPPP3Pv4t⼋v4vvDv6ֿ6ԿC~Fv|t v|uFWFR~Ru@PUFFu+v4&Gs~RuUUFP3PTv~=&G&W Tvt4̉Fv~=u6v+vD~RuG^wFvP~uv譻vDvv^wNPP3P3P&%;Fvv^w&PP3P3P\v4t萻t>t@F$PP%>u@FFt!v|t v|u;v4&Gr PFLPFP3P3Pѿv4t:v4D]v|-u^wF ^wFvDvDv̿οTvTFVv|-t2^&G< tv^&G&W FVvFVTPP>u@FFui^&G<t^&G&W FVvvvɋvDF FtvvzFVF Fuv4!L9FvDr FFF Ft>^&G&W RPv ^&G&WRPvFVvvvnɋvDFPPP0>uZvvMrsFFVFVvDvPQvDvvr ve!F^&G&W FV&G &WRP^&GP݉Fvvv3P3Pv຋v|u%`PvtvP茹PvtP3P茷vP~uPPPvP\vD vP~uvPRPP3P迶vD^&G &WFVFPاPP검>tvP~uvvP&PP3PgvDvvߢsv/ v'F8vvvȋvDv| t@vvF蜢"Fsvv|uRPPP3PHv蓹vt買v莼vD`Pvt3PP3PvtP3P3v|-tFvv"r9PvtvvP޶vv3PP3PPv|t@PJ׋v| tPvt3PP賷PP蔶F8t&PPPPtv綸P»PFt*PP3PPIv蔸vt賶v譶註PvtFP]C.v4&G 2Fu!F~r~t ~tP3^ vU1 v4U % UPU_ UPv4v4? U~ u PU2PU(v4v4t4P3P[ UPUv6ֿ6Կ U U~t~uFv6ʿ6ȿԣFv6ڿ6ؿ迣~t~uFYFZv4v~=u3P~=u5v0PvcvډD Uv4VP~=u3PNQPv4vډD Uv4Dv4ȋT+ȿʿNڹ uAv4T+̿οNع uA N"Ns4~&uv4~=E22Dv4~=E22D~&u PUPUv6ο6̿虢A U 6ڿ6ؿv4ϋv4&G2PPPrU&v4Dv4ȋT+ؿڿNڹ uA"Ns;~(uv4~=EU3҉DTv4~=EU3҉DT?v4}~(uFFv4v~=u3PPPv蠱vډDv6ο6̿覡N 663P׋vP&663P׉Fv4Dv"Dsv4~=U2~E2D8v4Ҵv̴v4P~=u~uP3PvvډDv6ο6̿ Us6ڿ6ؿv4͸P聬1F6ڿ6ؿv͋v4Dv"Ds%v4~=EU~ȋEUщDT9v4#vv4P~=u~uPPvLvډDv6ڿ6ؿRUv4&G2PPQrnv4Drkv4T+ȿʿ u*v4&P~=u3PPPv˯vډD(v4&P~=u3PPPv衯vډDv4&G< t~u@v4ȋDT-Nڹ}Av4DT-Nع| tA N"Nڃ~"u@v4F֋DT-NԹ}Av4DT-Nҹ| tA N"N NsUv4~=EUD~uȿʿFV ̿οFVvvv轞U~_>t@&OtB&OFڸt@"&G<tA" VsU, vyvvv4t4豚~$uA"s9v4~5v0vډDv4Dvv4&G&W RPv4&G2PPPrv4&G<uvv4&G&W RP賝v4&G<uvv4&G&W RP荝v4t4FPFPݛ~#u v4FD v4FDv4Dv4DU U~ u'P˨.FP辨vFv4袰-P褨vFvhvP芨-Fvsv4&G<tAv&G<tB ʋv4&G ȋv&G4 ȋv4&G ȋv&G ȋv4&G ȋv&G ȋv4&G &WvF؉V&G &W+FVډNֹ tA NsUv4&G&W RPvv襯v4&G&W F؉Vړ&G &W+ȿʿ uFFv&G &WRPPv&G&W RPP3PԕFv4P~=uP~=&G &WRPv輽PPPvtv4&G&W F։Vؓ&G PPv3P-PP3P"Pv3PvډDv~u3PvuvDvP~u~&G&W RPTHP芬Pv3P̪vDvv4t43P3PøPvtFPћ~ ubPvtv4tv3PbPv4tvtv3P>u!K+FvPvtFPbPPt>u&G<sA&G<vB ʠ(4 sUFV66 F!PrUIv4t4;Ft Pdv4Dv4L^&W2PPPVډNؚ:FعtA"Nrv4Drv4DFv4\&2F~vV2v4\&G22F~s v4FD3v4~=]&G22~=]&O22ъVDTv4DYFPvv P|FF܃~|)Fv4vNI^&F@FH;Fu܋~=v޹vvvuP Fv4 &G<tA(4 sUrv4&G&WF؉Vړ&G&W Tv4Dv4&G&WRPvߨv։D66͚!PuFv4puUo/wr.s:f:f:f:f:f:f:fDfDfmmWpffffffVgVgVgVgVgVg:f:fs{jPf_fwfwff{jllgg4h4h'ii:f:fDfpkrFtP墋]豊^ &G^&O:uB^ &G ^&O ;VuB"VV^ &G<uXFtR^ &G&WFV&G&W ^FV&G&WFV꓎&G&W +FV uA"NN^ &G&WFV^&G&WFVF FuF Fu^&G<u ^&G<tP^&G^&O:uB^&G&W ^FV&G&W +FVN uA"N"NN ^&G&W RP^&G&W RPv^&G&WFV^&G&WFV?F FuF FuFu P] v~]&G&WDTFvDPvFvDPvt&G &WRPKvDPWv~]&G &WDTvDTRP艑sv}hPvPPvi]f>&G<u&G&W FV FV^&G%t PFVFV^&G&WFV!F Ft^&G&W+FV u4>u*3PPP>u!P$!^&G<t3FFF>u@&OuB&OFu@ "Vs9&G "t P"FV^&GP4sF>u@&OuB"&OuB"s&G&W FVF FuP蔡R^&G%t^&G% u PmP66v3P{^&G&W RPvvU!^&G"t#F^&G&W RPvvUvt4wr^&G&W RPvvN׉FFP"^&G+F𣴿>~5@@;v@@˸jPPP6蛣P63PP财jPvt3Pv萤Pv3PP蓢v&G<t{^&G&W RPvvy׉FFFvt4&^&O;vv~u3Pv(vD^&G;Fv 3PFjPvtv3PPYvt4:v&G< uFiv&G< wFh Fjvvt^&GP63P謡FPV^&G<t^&G<t^&G&W+FV u^&G<uFlFk^&G %tAQ~lu@P^&G&W RP҉FF^&G&W RPrwvT+пҿ uA^&G&W +⿉N uA"Ns!v66࿸PޔvTvDvt4^&G&W +⿉N uA"Ns]^&G&WFVhPPvtP3P3PP?PPP3PAv~uPPvDv&G<u?^&G&W v+T t3^&G&W vFV&G&W+FV t P0^&G&W FVUvT+FV t Pv^&G&W +T u^&G&W RP`vt4F`"Fr^&G&W FV䓎&Gv&O:t^&G&W FމV&GsI^&G&W FډVܓ&G&W F։Vؓ&Gv&G&W F҉Vԓ&G;re^&G&W FΉVГ&GrR^&G&W FʉV̓&G&W FƉVȓ&Gv&G&W F‰Vē&G;t P~v&G<uAvT+ˉN uA N^&G&W +N uA^&G&W +ˉN uA N"Nr Pvvt3PPvŝFPoPP聙^&G&WFV^&G&W+FV uF FuҀ>u@N NuB r>t@N NtB sP3PP舚>u!]FP3P#vFVTFt:v͸P!v3PPPøPFFvvUL9^&G "t FPUh#^&G<u FPDeP66œUɢdP66詜Uv&G&WFV&G&W FVv&G&WFV&G<uvOvDvv^FVvvWPv&G&WFV&G&W RP*"s!PPvvv4vDvPԡPvvjPnvDvFVTFFF]v~!vDTRP3P vvD~ Euv~=UDTv4Dv4|vA"sPv4D]}PFP3P3P躠vDTRP0P盋]}@FP P3PFFFFFP>u!FPUPPP貖>uFPUPP'FFvDrvDr}vDv;D~FvDFƋvDFċF;F|KFƉFvy~yC2N+ ˈBȋF@FH;FuF FuHvv3PP3PRP믉FV^&G&W FV“ƒ &66Ur趟F;Fu66U[vt蛚*66UDv_vYvtxvtojF;FtFPFP蹉>tt!F Ft FuFPPvTFFtgF FvztFHFFHF=uFP蹂vDvvv3PFHP3P쏋vTv &FP P蕍vFDFPv\S PF FuFFVFP3P/vvv臘vDv^&G&W TvDFtPvvSFP耈FFF]zvDv~}F]zvvvDPvvMFvtDr PvtDs_vtt4虃svtD2PvpFFF~r)FvN~}]&PvDF@FH;FuCvtFVTFF~r&FvDPvˌPvF@FH;Fuߋ]y$FV!PFVFVFP9^&G<uANFt_^&Gs^&G &WRP3F^&G&W RPFFv^&G &WRPP3PF^&G&W FVvv躧F~v@ȋFV+濉 uA^&G&W+濉 uA "N vv s"PVFP3P腅vˉDF!>:u!̿PrFPhFFF扆sFFt)F;Fr PF^&G &WRPULpF Fu P]^&GF^&Gr^&G&W RPU^&Gs^&G&WRPvFV^&G&WFVF@FH;tPFPPP >t!F;Fv^&GrFuF FtFu PFPP"vvs;FFvDvv^&G&W &G FHP⇉FVFPvPv\SvvFVTFFF]vvDv|u Pv|wv~}F]AvFFFPP?>u!>u_&"u Pd&2䉆|"Fv&PUVF@FH;u66!>t&G<t&G&W RP`sK&G|6FvN&G&W&PUF@FH;u-&G&W +пҿ u&G2PUF!&&G<uA&G <uB"r!PFPx663PlFP1!v6ҿ6пP3PfvDsvD2PU4~t P#FvP~u3PQPȐvDi+ uRFP݁vzFvDs6vD|%FvN~]&PUqF@FH;uFF>t@vЋD4 Vr~tFtPFPU~u'FP6ҿ6пvDs v2DM~vFFPv蕅Pv\SvFP66vBRPvDFFF]s2>t%&G<u)&G <u UF663PF&G<uA&G<uB"sR&G&W FډVܓ&G<u-PFP3Pv芆&G&W RP3P=Fu&G<uA&G<uB rQFP3P6vT>u &Gv3P۽vW!vvt4z+ȿʿ uA4""hsPvt4|=uP PPPiPPPPTvt䏋v蠔vDvt4"z+ uAvt4Nz+ uA Nܠ4""hs?PP3P3Pvt4y+ u vty vt莏)&G<t&G&W RP`&G&W +пҿNܹ uA N܀>u@"ȡ+Nڹ tA"Ns UF9FPPg}v&G&W T~ l!B&G2PPPs&+ u UFU4F&G<t,FV!UFvvyFvDFvD4N;NsB ‹v&G&W FډVܓ&G &W^F։V&G&W F҉Vԓ&G &W+FV؉Nй tAvT+Nι tA"N Ns PvDTFVFPvv~{FPv$v\Sv3PF;Fr^Sv\Svvv+Ŀƿ u P P!FPP{v聂>u@>uA >uA >uA sRP>u!PP蠈+>u!PP芈>u!P!x5>uHFPPz6vFPFPJr PvDD!>u]FPPzvT@P62P3PFPF%At P!~v>u! FP5t!vFvDrv&G2PPQrvT+Կֿ uv~+EDXvT+̿ο uAv|u@"s vD"v~uPP_rPP?svD Pv3P贖>u*!FPP7yvTvDa>Du@>EuA r>Eu@F!D Fv拋vP~uPvDFt-v P~u4vDFP P} vDFP P} v^T&&WvFVTvDvDsFu P>u UFq>u U;Fa2PPPs02P P|Pr P!vF PFPPwv~vԵv~u5TsvTFFF]zj v&G< tv&G< t ~ tvT+ȿʿ uAvT+ؿڿN uA Ns XPv3P腔vT+ȿʿ uAvT+ؿڿN uA Ns XPv3P>vt4vXvt4vJ~ 9tvt4vt4-Fmv&G<uAvT+N tA"Nsvt4v&G&W RP۟FvT+ uANvT+ؿڿ uAvT+ؿڿN uA NrvT+ȿʿ uAvT+ȿʿN uA NvT+̿οN uA NvT+̿οN uA Ns=F 2䖋2䖀̕t@FvT+ؿڿ uv9v1~ u@vȋT+̿οN uAvT+̿οN uA N"NsFFuBPFPvt4PtvDvD~ 9uv{vT]gvvF2PP&P>7uA>uB"ʑ4"rF!v+FvvvvvDv"Dv&O2PP.PN"FЊF2PP0PV"FvȋT+ԿֿN uA~7t@"ȑ4"Fr~7uv~E~#ED~tv|u PvT+ȿʿ u^~uv~u~uPlvD8~(uv~vLEvDv~vLEvT^~uv~u~uPlvD:~(uv~vLE3vDv~vLE3vTF2vv FP6sFFF]ve>u@F>u@ FFFt!vFFuv&G2PP8Pr PFuvDrvT+ uv~E5DvT+ؿڿ uv~EU؃ډDTSvT+̿ο u)vؿڿTv~3ҋE؃ډDTv~uPDkvD Pv3P蹎2P P:P>8uA>uB"ʑ4"rqF!vhFvvvvkvDv"Dv&O2PPDPN"FvȋT+ԿֿN uA~w@"ȑ4"Fr~8uv~E~ ED~@uv~E~3EDvT+ȿʿ u:~uv~uPjvDv~u~uPivDI~u'vDv;Dv P vDv)Dv~u~uPhvDF2vvFPHpXFFF]bU F2PPFPreF!UF~ t~ u"~ uFF FFFFFFvvvUvDrvDr~9uv&G2PPNPrvT+ȿʿ uvDv;D}ANvDv;DsANvDv;DuANv~ u@ЊF4"Ѐ~ u@~ uA "F Ѐ~ u@~uA "F В2DF2vv萋FPnFP6ֿ6ԿmFFF]`v"PMFV"t PFV]`6IFV!FV]`P3PPy>uP6|#u@6|#uA 6|#uA s Pd6h>tPĿƿFV/+Ŀƿ uA&G<tB &G&W FVFV+ˉN tAF4" N NrFt PFPP} FVvvvv^ &^ &^ˋ&&WFVFVFu PI8Ft &G s P PFV!FV]^~uTv<w v2䣴F~r#Fvv^^&F@FH;Fu^&^v]\^v vg+ȿʿ uAN!2P P|Ps PFtFPP} PFVFP^&^&G^ &^F&^&^&FFv TFVF Fuv^&GP^&G PesFVFV^&G&W FVIv^&GP^&GP^&G Pes$P^&G PP3PTc^&pPPP0v>uy!v v^&GPt^ &F FtGv^&G P^&GPdv^&O Q^&OQ^&O QFqd Fs PPP?uF Fu%v ^T&&Wv FVT&^FV&&W^FV&&W>t!] \FV +46 uv vRPvvv vRPvvv vFV^&G<ug^&G #P;RuV^&G<rKvvx^&G&W RP3P^&GP^&G % tAQ^&G<uAQv覙]=[oPvP y]$[t3PPT^u3PPZGu]ZF!LFvzvT+Կֿ t P>8u~unFtPvtvxsPvtvoxFP h>8u@>7uA s !7>7uf~t v^w]*Z":Pa!663P赜FvzEnFvPvtvvt4dP3PvPOrnFFF nFv^wqFPvt4v3P=vDPvDP^w uPvPPCPrF>u@>CuA"s!>CuamFv^w>u Pd!!vDPvDP^wL PPq>uҸuPv>u@>uA"s!>t:PQ`!~u@"s&lFv^wAPaP3P3P?{{v^w!F FuvT+ȿʿ uFyFwF FzFxFFVFV^&G ^&O t^&G&W FVv^&G Pvu^&GPPFP"^&G;Ft~t vvvu>u@^&O ɺ}B"s PF Fuv^&G P^&GPQu^&G ^&O u~ty^&G&W FV擎&GPPFP"^&G&W FVⓎ&G;FtA~yu@Pv^&G PN_"Fs vvvtFVFV^&G&W FVvv蚼 {P3Pv^wGFP+d]wV6jFjFvD~ Et+v\&v\F&v\F&>uFoPvvv+:P8nvv^wPuPvv^w> uj:PB]jFoPv!vv^wP/Pln>/uڸ:P=]v^wJvvv^w5!F>4u@>uA"sU3P6664vj!6IFډV6ʿ6ȿkFVvvvvFV𣺿F>t@&OtB s#!P:PPMo>:u!&G:tA&G<tB"&G #f;htB &G<uB &G<uB &G&W F։Vؓ&G< rB s #PFVP!>t@> tA"s$P3Pj(nPk;F)P.Pl>)uF|F}!FFtv^T&&W^&G&W RP1\FVvv]FvDr>vv藆FV`PvvpPvtv3P#pvvvpvDvDr>vvOFV`PvvDpPvtv3PovvvMpvDvD4vLv|uBF؉V֋FV+ȿʿNԹ tA"Nր~|u@" Nԑ4 F؋vLv"L~|uBF҉VЋFV+ȿʿNι uAQvtvtlZ"FЀ~}uAF̋FV+ȿʿNʹ uAQvtvt3Z"F F"F FrFP3P^~vvvvgvqvq~|u/Pvtvtv3Pn/Pvtvtv3PmtP6vaoFP_^&G&W RPvύ^&G&W RPv輍:PeivTq`PvvznPvtv3PnvDr+^&G&W F։Vؓ&G<uPvt^&G F^&G r^ & eFoPvvv^wv^wW^ F&vDsvtn vvmv6vvmPvvGmFt3Pe\FV+ȿʿ uA"hs>F^&G&W RP~=uF`PvvHmPvnPP3PlFP]FP]]O >3t!3PPFV^&G&W FVFV+˹ tA^ &qPvv^&G 2P3PRl^&G Рx "s %PdXt &Pd>WuPuP6˚!>Uu@FFt P P!>u@>uA sA3PPFV^&GsFt ^&G ^&G (P.v|tFt vD vD )PuP6]3NF Ftuv^ DT&&W^&GsA^&G&WFVF Ft&^&G&WRPv^&G&W FV^&G&WFV냋]M"2P PtPs Pf}FF>u@>uA&WFu@>uB " NsY3PPFV^&^&G s ,P^ &P-epPvv^&G 2P3PigˉFqvDFvDt6P63PjtPP3PPho6Zko>t&G<uA&G<uB &G<uB &G<uB r&G<uA&G<uB"sE&G&W FމV&G<u-PU&G&W RP3PˉF66&G<tAQˉF++Ŀƿ u /P 0PUZm>u@>uA r:PR͈F>u@tFF!vvvt>u@>/uA s0P>/u@>uA s !UٸPvc:FuF⢬͸:P^RFt!>*t^FvUPbvvv>u@>uA"sPd!>u7!^FuPvvvvvvtvv vv>#t>!bRFPP66lFv蕇v&G<t*P:PPGd!3Pv&G &WRP^v&G&W FމV&G &WFVvtvt|FVv^T&&WFt ^ &v&G&W RPU:PPa6h$&>:u!#vvvDFVFVv&G&W RPU3Pl^FPqV>u@> uA >'uA sU>3u@>UuA >VuA >WuA sUF>%uU9t3P3PP^3P3PP^Fˋ]H.>u@>uA>uB"ʀ>¿uB>¿FԸu@ " Nr[ˠĜ&G&WRPP >~Pdp>¿u,P6 6"˸P3PLdPP3P3Pjj=P6"6 ed>¿t@Р4 Ѐ>u@"s 1PĜ&GP\"xs*PP3PPiĜ&G Pei ͹tA"stPP3PP`iuyF66cPdvPiiPvP6=YP3PPcĜ&G&WRPFP FPWz>¿u@>uA""rPPP3Ph6ο6̿3PUFV^&^&vv@cP d &G&WF҉Vԓ&GPod6ڿ6ؿPTFV^3PPv^&^&P^&GPPEcvvbPSc &G&WRPFP FPOyPPhtPBhP6c拄ˣˡˣ˚gRP3PU>~ t_ ˃ S˃ S{<s/eP66a&G&WF҉Vԓ&GP\cg&G&Wˉ똀>¿u@>tA"s;PPFZRP3P*ĉFFPQPP3P3PfkgF>u3PPUd6UĜ˃&gRPPU ͹tA"sPP3PPfgĜ&GPX"xsPP3PP[ff>~P3PP66Xa_g,.>~拄ˋˣщ `r 2PPX! >~ P[P [.>u3P!>`u3P3PPPP6:Y]BFPP} ^&^&^&^&^ &^F&^ &^SP} ^&G&WFV&G&W^&G&WFVƒ&^&G&WFVƒ &F@@^ &^&G ^&^ S6PFVFVFV]Aˀ>tQ>u !!=Ft !˸̿P}˸PsY!>Gs@>TvA s 6P2旋4"FР2旋4ЋF4" ʠ2斋#;tB s 5P2斋 ˣˀ>Kt@>JtA"s!=!̿P裃>u ˣ˚!ˣ˸̿Pv˸PPY>t!]%@3PPP66kZ] @>t@>uA"s%2P PrPr7P!>u@FF]?vsvދvTF:PvVFF]n?FF~wFFv?r 8P0P0FvD~6~t~tvDދvTv46T!~r0P~u@Pv7vˉDvˉD vˉD ~uFF vFDFFvPQW>u!:Ft !F]a>&G<wA&G<rB"66NG66FG F"F4"F"(sFV!H;PȿʿFV2P PrP>GuA s PXFV]=^&G<uF7^&G<uF%^&G<uF^&G&W RP%lFF]L=PvvvP`n^&]$=v\&G&W RP3P%LFV^&v\FV&&WvFVDTv~]&G &WDTvDTRPEsvvvvM]<4P6664QFF>t!>+u@>,uA r>,u@F!>u10P0FvDFuvPۋvT!<PFvDFvPvEFV^&G&WvFވDPRQFFzFF>0u F4>Yu FX>Xu F!>4u F! F2@@P^wF~u@PUFV~u.FPP} ^FV&&W^F&^ F&~uD^&G<u,^&G&WF։Vؓ&G&W RPi^& ^&vvbi^&F FuFVFV^FV&&WFVFV^&^& Frvt4vvFVFVvv CsUvvUFPHPPR>ts!FtPQPUcFV3PP^w>@>¿uA"s ˣˀ>TuGv>Gu@>¿uA 6ˉv؉FdN F֋v؈DvDs&FtFPP} FPP} $FtFPP} FPP} vDs ˣFuvv3PGFV^&G&W^FV&&W^&G< u^&G&W RP}A"$^&G<rA^&G< uB ʑ""t=^&vvUF FuFVFV^FV&&W^&^&^&^FV&&W^ &^&/>~ PPh%tA F4>FuB>¿Fظu@ "V sp^SP} ^&G&WFԉV֓&G&W^&G&WFЉVғƒ&^&G&WF̉VΓƒ &^&^&FVFVFV]6@FF>+u@>,uA r>+uFF!&G:FuA&G 4"&G:uB""(rbFV!P^&G&WFȉVʓ&G &WRPbK^&G&WFĉVƓ&G^&G&WFVF Ft[^&G&W+FV tF^&G^&O u!^&&WFV^&G&WFV^&G^&O t7^&G&WFȉVʓƒ&&W^&G&W>u@>uA >uA s@Pdv>Fu EPdT~̋6FPv7r/FP &G&WRPFP FPIFV~u@P3PU FVvvvv^FV&&W^ SFPF2@PոPPe^ &FtPPge^ &拄ˣ^&G&WFVF Ft^&)^&G&WFV٠DŽFt PPd PPd^&G<uX^&G&WFȉVʓ&G<u<P^&G&WFĉVƓ&GPd^&G&WFV“ƒ&^&^&G%tA>Gt@"s AP^&G%t&^&G^&O u ^&G<u BP^&G#;tA>Gu@ ^&G<~B"s CP^&G&WRPP PJ>Fu@>¿uA szuTg^FȉV&G&WFĉVƓƒ FȋV&&W^&G&WFV“ƒ&PG>¿u@ ^ &"^ &^&G<tA`ˀ>Fu@>GuA >TuA r>¿u GP>Fu^&G ^&^&G%tD^&G#^&>¿u HP>¿u@" s \Pg,.>~FVщ PF!PIFVFVFV]0vDTRP_=v vDP7]0vDPP} v\^Fv^DT&&Wv^D T &&Wv^D&v^D&^&^&^&^&^ &vDrCvDTRPvDTRPv~EP~EURPv^P3P5vDvD~ Euv~EUDTv~]DT&&Wv~EUDT]_/"P3PPEvFF>tP^_wFFP3P^w\FVv FvU$F~t0vD;u vD FvTFVUFP<ʸPPPG>u!d>%t!>u@>uA>uB "s4͉FVF>uPP^_w졲ˉFPYFF&G<rA&G<wB""(sFV!!IPȿʿFVPPTHP>FUUFP4FFFPvv3PP6ϸPEv v vFPvFVv FvFt JPdP}EFVFVF Ft8^&G^&O u^FV&&W^&G&W FVPPP0F>u@>uA>uB "s!>u@>uA r^FV&&W^&F FuԿֿFVFUFV] a,&G<sA"(sS&G<sA&G<vB sKPпҿFV FV!>u@>uA"rF:tA4"sFgFV3PCA!3P^_wFFt 3Pvv@FPP} F~tVFPP} ^ &^FV&&W^F&Fvt4vvFP(9뤋FH^&FVFV6h$&2PPP (snFPP} ^&^ &^ Sm^ &PB^&G &WRP^&G Pn^&FVFVMNPȿʿFV>u!>u$!vtvNjvDvtDP7FV])vFV^&G<tjFPP} ^ FV&&W^&G F^&GFvvFPFP4^ F&^F&FVFVFVFVFV]]) vvM2rMP࿋⿉FV^&G&W FV&G &WRP^&G&W FV&G PlFV+濹 uA>v@"s OPvv69FVFV](.3P ;>w(?v>u@>DuA >EuA FFt_>uFP P} !F?>Eu@ sFP P} FP P} !P!@F>uNPȿʿFV>tt+Ŀƿ uA2PPPN F"FsaFPP} ^ ˋ&&WFVˉ^FV&&W^6ĿƿFV+Ŀƿ uA"Ns!+Ŀƿ uA&G<rB &G<sB s UcFVgFV!>u@>uA FFtP>vvv/rFuvvUFVFVFV>uL!^&G &WRPUFV^ FV&&WFVFVPPP7?^&G &WRP.s QPFu PPZFV+ܿ޿ uA"Ns=FPP} ^пҿ&&W^&̿Ph^ &FtP=vv.v=>Bu!Fu PPF>!u@FFt!>1t!P=FF!FPP} ^F&^F&^&^&^&^&^&Fu^SP} ^&G&W FVⓎ‰^F^&^ &^ Sqg^ &^&G &W+ȿʿ u ^& ^&P2<P+<U^&&WF FuFVFV^ FV&&WFVFVPPP<>u@>uA rP;P;v3PvFV^ FV&&W^&G^&G&W FVⓎ&G &W+ȿʿN޹ uA^&G&W FډVܓ&G &W+̿οNع uA N"NދFV+пҿNֹ uA"N^&G&W F҉Vԓ&G =uB"s(^&^&^࿋&&W^&Gv"s RPdFVFVv^&^&G &WFVFV+FV uFt"SP^wȿʿFV>-uz!FPP} 3P66647vv3PvUf^&&W^F&v^&g^ &&W3P(7P9h>&t!P9FPP} UY^&&W^ F&^ &^&G&W FVⓎ&G =w^&G&W F܉Vޓ&G=v"TP&G&W ^&&W>$up!P8FPP} v3Pv^&&W^&G&W RPUO^ &^&vs UPvG("FsVPFV! >`tFt WPUFVFt^FV&&WFVFVFVFVFV]>t=>u P7+;uYP^w{ߚ! ZP!], u&˃~ع lFPhFV˃vع&G&W FԉV֓&G&W FVFV+Ŀƿ uePȿʿFVFV+FV tAFV+ĿƿNֹ tA"Ns fPIFV+FV tAvvN'"Fs hP&G&W FԉV֓ƒFV&&W&G &Wˉ]F.3P  ;>wA4>"u<>¿u gP!P3P`FVPP6>uٚ!>0t9!FPvr P5+FvDrv1iPFPP} v^T&&Wv^ vDr^FV&&WvDv DuvFVDTZ^ ~عlFPvtG/^ vعv\S^&G&WF҉VԓS^&GPvDFPg*vvvvU>u>2uN!FPvs P4vvFPPURPUy>tU>4t!P3PvڡˉFF%t jPPv܉FFP3PUFFVUa~uvD FF#F;tF%t jP#F;tA>@ Ȁ>¿u@ r#F;uuFt lPd FF>¿t@vF[04"FsFFvvv=*FV^&^SFPv'vv3P *FV"#F;$uA>¿t@"sbF%t6^&GPM^&^&^ʋ&&W$^&G<uAQ^&GPK^&F%uF% u^&F%u|^&GPL^&^&^ʋ&&W;tʣʸP63PPP6P^&GPPvt ,Pvt ,P6:3PPJ^&P^&GPPvt t,Pvt j,P6&#FFv^D &Ft mPd^ F&vt4vvFPO'KUT>u>AtZ!ht [P>¿u dP&G<tA&G:tB ʠ(4 scPv&G<tA&G #(;*tB scPvQ&G #,;.t/&G;t&GʸP63PPP55FքFևFV!=^&G 0^ &^&GF^&G&W FVPPP1>u@>uA r>t!^&G<t^PPP2v^&G &WRPEFP^SZP^&G&W F҉Vԓ&G PP;PPKPPPPuF^&G &WFVPP/>u>u!!FPT^&G<t_PPP\13P^&G &WRP+6h>u@&OuB"&G&W+FVNԹ uA"Ns*v&GPPF&G&W FV `P3P+!H>t@> tA"sbPv*P.cFvvvZRvDr aPvvDFvDs FPv֋FPvt4P4vFVT~vKv֋FPPvPf(vQFY(VԊPvPI(vQF<(VҊP.2vv~v@2+FPvP (vQF(VԊPvP'vQF'VҊP1FFFPy"U>u2PP2P>`uA rUuP9P}*ˉˋ]wvDTRPvDTRPtv\& v\&v\&G<u6v\SvDPP5v\&G @v\ &v\&G<tv\&G<uOv\ SvDPP㴋v\&G Bv\&v~]DT&&W]>\t5!&G tA(4 snPPP-&G=tA4"r6DPvbЉFVu oPdˋˉFVFFF FtFVFV^&G&WFVًF FuFVˉ^FV&&W&G^&G&WFV꓎ƒ&6F3PvωFV&GFt &!PPP_+>t9~t0FPIFVvDTFVUzvDF!3Pvg҉F~tavTFV~upPȿʿFV,vDTFVUt FP vDFFP뙃~t qPIPP*>u\!]5FV+46 t1vvRPvvvRPvvv3]>[t¿FP3P} u!^ˋ&&WFVˉ˚!PPY)>u4!̿PS^&P(^&G=u P ^&Po(>Zt tP!FPvss&vvvv^ FV&&W sPP(>tPvg^&^&!P'4$P6664$vvNv؉FV>`u@>uA >uA sŀ>u! ^&Pm'Pf'^&GF~tTFPhFVFV+Ŀƿ uȿʿFVuPvFVDTvDF릚gRPU4$P`$]6Hv^wˣ ˉ"ˀ>¿u&G &W FV#FP^wrvPPvv6"6 ˚ ˃FV&&WvvP P6664P# &Gˋ]>^t!¿3PU0PP&>t!PvIΣˡˉFF~uFPhFVFV+꿹 uAFV+N uA Ns=~u vD v~EDFV+ uFFvDF`>]t~!P%&G tA(4 swPP&GF¿&G=tAˠ2PU&G ˋ&G&WFVƒ&~uFPIFVvDTFVvvvv^&^&G<u5^&G J# L^ &3P^&GP"=^&O^&G<t ^&G<u9^&GN# P^&^ &^FV&&WvDF !c>_uJ!¿3PU>u!3PPvɡˣˡ%t APxPPPB#] v2PF@P<Pv}#t*v2PF@Pv<PF@Pv] Fv | u@v <uA r~ uF~ Rv~ n󥤋vn2F~6~F6FF <.t@СF < t@"Ѓ>~@"sŃ>uF@F P<+P PFP@F PPv F] v2@FPv2-<P PF3PvvD22vvЋD22PvvD22vvЋD22PvvD22vvЋD22PvvD22vvЋD22P&Fvv< tl]Ft+U@FF扶Uыˉ/PPXP3Pl ĿPP} Ŀ&G&W66646ƿ6Ŀ P0 P0!!Ŀƿ>N'u46>LΈ 6L'u@>@~A s1FVȿPP} vv6ʿ6ȿFVˉFV̿PP} vv6ο6̿ЦFVпPP} vv6ҿ6п覦ʼn蜦FVؿP P} vv6ڿ6ؿrFVP P} vv66HFVP P} vv66̿PJˍFPP} ^ȿʿ&&W^ ^&^&F>u!ǥFV~ w&FPP} ^&^&!FPP} ^FV&&W^ F&^ &^`&^&^&^&^&vvvvF@F=0t-Uy>t UΉFV!PcPԿֿԿ&PkPxܿ޿ܿ&ܿ &PPsPO࿉⿸P{P=俉濸PP+俋+Ŀƿ tA+Ŀƿ tA"r促&促&&G&W ƒ& lP3P &&W663P~&&WP P} Կֿ&&W6ֿ6Կ3PP3P &>t UUPP迉꿸PP쿉PP&>tˉF6ˋDˍv4LtPE &G˸PP1>>v> ξ󥤠 2P P7PPnPUPPvPUPP0PUPP8PU 󥤍 󥤿ʍn󥤍0P U68PU4vPU"~X0PFP tA͍~"0PFP tA"͑̀1 t@Њ64"Вu6u 0XP<P0P3PHP<PP3PP<PP3PzvPU8PU9 t@Њ44"Вu3PaPPcsPlaP PVPTPP2PP2P<PnP3P!!P3PQWBQPP)PˉUUU@ t/&GF~t FP&G&Wˉȋ]PPPPP P3PHPBP3P3PN>~@>`tA"s P+؀>`t yP!]^. FFU+r;.wV(5BOoy3)~r@~wA"~rA~wB" FF](~u@FF](*v|u%v\2@ P3PW P=PG PGP7 PSP' wr.v P_Pv(PFPF֊F2PFPvt PkPPCPv|t'vt PuPPCP7PP7Pu ]',t^&2P^SP^&2P^SY^&2P[]F',t7P&P PP[] 'F Fu ^&2䣲F FtP^S@FxFF;F|!FFPPF@FH;Fu]&xFHH;*~4,ӈF,"u&PPPPPP66U6ϚCePPPBP66U PPxF~| FPPF@FH;Fu PPPP>P PΣ(ӡϣ Ӂ> s @*"F,Ӄ~ut>uPP3PP6ӚPBPPPF;FvFLFLθPLP*ӋF;FvF)FFMPMPvM Ծ]$t 6ӚF@PMPPPhPP͢,Ӹ6PΚ!]"$Ft&&uΡ+(;| uF>uF]G"MPP PF-~ vFt F ؉F F+v CPNPPvCPUPPFtFM΋]!"^&&WRPFP F LPP PFPF LPF2P]!F @PMPPPFPv"͢,Ӹ:P΋]C!fPvDMPPvDvtƄL ] !FV+46 uvvFV^&G<u^&G &WRPv^&G<u^&G rPvvv^&G<t ^&G<u^&G rPvvv^&G<uA"r^&G<u^&G<u ^&G^&GP6^&G<tAQ^wPFPv| ^&G&W FV쓎&G2P}PPF9vƄL FF2PP^ STs F2HHPU:F@F< u^&G<w^&G2 PUvvvRPv2vvRPv^&G<t ^&G<ut^&G&WFVF Ft*FVFV^&G&WFVvv^&G^&O t^&G&WRPvvO^&G<t^&G<t ^&G<u vv!^&G<u^&G<r vvvv3]>FF~u`v~5vvvDA;u;vFvDs~}~}vtEPvD~ЋE2RPvtvDP/MPP-PvD;s^vD;v>vD 6 ƄL^ HvЋD2;v vD2+ H vD2 vDP MPvD2PvӉDvD6vDӍv4LF]fu>$t@""Т,Ӡ4"̓>$tA s 6Ӛ6$U3$*uu<3PԾYPMPP> @uP3P63Pv6P>SU.:P>&G P>&GPPvP]PP+P> @u>&G<t>&G&WFV‰^F^&GP^&GPPv"uP]PP^&G&W FV&G2P}PP8P6260U >tP6t4Ut6ˋDt3P͢u>~#;*ӹ~A"s3Pփ>~*;|*Lξ8ԹH󥤠2䖋Ԣ2䖋Ԣ8t <Ԡ:8ыѣ>@ѣӡѣӠѢ*,.02.t .*;2u 2;0u 0tt8ԋ60H󥤠820Q6ыD%r36D6ѸP9P6ыD"8ԋ6ыD"6D6њ[6ыD%te6њE>vA6拄PE6ы4L6拄ӣы6拄ѣ9 tt&6ыD$r6ѸPP6Dڠ82с>reP.>юvюѣѸfP.9P+P P>u6р8 u@>vA"s١Ѣ8ԋ]>u zPvt9,PMPPP66&3PvbPPE>uPEHPE>&t=PP6&ӚCePCPPP7 PP>uP#P6ΚPCPP)P7>u@̓>t+tEY،ظP}P(lPP(l] F6ы8ԈF~ar~zw F2F~Ar@~ZwA"ЊF2PP4PV~_uA "F FFFtу>w FFtp6>t@F>v6gP.F]"v>ы8ԈDvD2PP4Pr.v|Ar v|Zvv|ar^v|zwUvDsK6<s(6>2626~E"ыv>ы8ԈDm"u hP.]6<s6>2626>ы8Ԉы] Fv>ы8ԈD;wAFv>ы8Ԉ6ы8ԋ~:Eu6ы9ԋ~:Eu붡;s iP.уFv|"t v|`u jP.F@PFV^F&P^SvFVFVFV];sv6р8 u@6р8 uA С;ѹrA"sš;ѹrA sшFt F4Р 4"skP. F]962@P62- P PFFFЋF2v:tFF@F= u΋F]lPvs 6р8$t 3Pvsk vru lP.+ F/F~/u$~/svU"sFFF2Ft ~/u mP. F2拄ΈF3Pv7s ~u(v>ы8ԈDFFv|+t v|-uыv|+u@2Fv|:t ~)t~)t3Pvsc ~'uzFFFvr6hFV^&G<t^&G&W FV&G<r(^&G&W FV&G<w ^&GFm^&G&W RP`sN^&G@PFV^&G^&^&G&WFVS^S^&GP nP. nP.6р8'uvFVivDv6<tJ6FPFPFPJ"FV+ؿڿ tA""sFF pP. qP. rP.F Ft~uF Fu~u sP.F^2y~~@~}A"FFu tP.Mv|+u@.Ӡ.4F2~~ѣ0ѣ2^&2=<~ uP.A^~=l>u vP.!6щѸ<PFP3P~~@С;F~A"sF~~@С;F~A"sFhP~~@2POP~~@2P~~@σ~~@(σ~~@8σ~~@Xσ~~@hσ~~@HP0ԋ>Ծιp6ԡԉԣԋ6DŽ6DŽ6DŽ6DŽ6DŽ6DŽ6DŽ^6DŽ\c>u wP.΋6Թpԣԋ6ԋԾԋ4Ltѣ0ѣ2ӸP2PP2P>u6666>u6666~~~Pv~u6666&~u6666 tP.F~u tP.2~~PXP PP  F23P^&2P^S7F3Pv;svyr xP. 6IFVFPP} P;P62P@PPEP6P@P6^&G&WFV^&GF6^SFPFPJF^FV&&W^F&62=rAF4 syP.^&&G^ &vvvvP~@2d8Pv3Pvs6р8$u@FFt]3PvsXvFFt:*PU0s~@+PUs~~@FFu zP.tԣ{P.ԣ>v {P.tP~~@2PxmP.m.wr.nnnnnnqn+.11114[3AO^St(6PSFu~uF2F~uF2~~@e~u_F2拄΋ЊF2 tF2ΚF2FVΉM~)uA~+u;u+~,u%>v {P.;sPvns6р8,ub]" tʢkFF$&;;PUs3>t kPI>t zP>`uU`6ы8ԈF6ы9ԈFtUr62䣰6D2䖋`֘С2䖋`֘>r~ 6֢>tO>Nu6|CuY>'u6|AuS62拄P#t~{ujU;wEt*67Ԛ67ԉF@ Fs‹6р7}uU3PUns란~(t~*tUR;wbt*67Ԛ67ԉF@ Fs‹6р7*u@6р8)uA"sU3PUs~!uVы6р8 u@6р8 uA С;ѹrA"sš;w U@~'t ~"t~`u*Uzt66PXt?~$u|P.U)6F6р80u@6ыЋ92PP4PV"FsU6р8#u@FFtUU6ы92PP4P6р8.uA"sUR6<u ~P.Uv6р9)t@6р9.tA"6р8.uA"6<tA"sU~P.6ы82P PHPs5U6р8-u@6р8+uA sUU6<t~)rZ~>wT6:FuA6:FuB"sѹע>|>|Q6:Fu6ע >~؃>~~ u . P.ѣΡѣ8>u@ȡ+ĿƿN tA"N(>u6h$&Ŀƿ$&;t>`u@"s P>`u@ŋ]  u 2F~~FF6.t@6 tA">~A"sɃ>uFFv>t@~~A"sN݋F)FF;F|Mvar@vzwA"sv~2v~ʈFF뫡P+P Pʠ2F^ʹF~V~t1+v F30RF3F~t@2Fɸ+FF~}Fv^^B&FF@^&_F@@^&DF^&AF^&TF^&AF^&]]^. FFU+r;.wVUF@%F;r6ء+;wF%uأb>t@ءأHء;Fs1@@FF6FF;Fv +FH6g@@;uO>uFD>t6ؚ3>u F@@Pm;uF]UPvF~s~u5 -F]UP-]VWUv >_u VWVWaRP]_^P(l_^_v[YWU u tLV6W6UVF u t VF&U&W&WUWU;[u;Yu9]rVW6]URP*_^ t']VW6]URP*_^ t33WUU&W&G]WU؃QSU&_XZ&W&WU U&_&&W&>[u>YuWUU&W&(Y&W&U&W&WUY&W&VWU[YRPe]_^VWUv J]_^VWU~ u~ tn V F tP PP^ &t^ &3]_^VWUv^ &W&GVF^&t^&W&VF^&uF^ &W&G9Vu9Fu^&W&^ &W&G^&W&^&W&VF^&?+~Njփ;ro;v7ƋN^؃N^^&W&^&W&VF^&W&VF^ [Y&W&G^&^ &W&G6^&W&%VF^ &W&G9Vt9Ft33]_^VWU>_uaRP]P(l_]_^VWU~ u~ tn V F u ^ &uP7PP^ &t^ &3]_^U]U]Uv FD v FD v Dv ]UvDsvu vD]UvDsv vD]U]U]UPaPv 2PF @P7 t  ]UP^SPvP3PP]UP^SPP3PP]UP]UP]UP]UP]UP]UP]UP]UP]UP]UP]UP]UP]UP]UP]UP]UP]U]Ut]U]UP-]UP-]UPF-]UPFFF^^F^&;vI^&FP0F3ҋFvvFV^&3+FV| t F^&^&#t<^&PvFPF~uFFFF+FH^&F~uFFF-F]UP^S]F-F]U P^^F;FvW~s@>vA"sFvvFP#u!FFFF+FH^&FQF+F~v@F~s ~vFF;Fv FFH^&F-]UP-]U6\\%Ɩ*؈FF]U~huF{v2^bFHF~er!de6dE2bd@dH;FubFvE2bHFF;Fs|Fb\f6b:fv)f2fU1< t\U#< u\^^FvUv\^F< u١b@bH;Fuv^H]U]F V lnFV]]࠰FVln]l]_拄lnFVFV]9^&G&WFVFV]^&G&W FVFV]^&&WFVFV]^ FV&&W]^ Sv^&G 2@P]vv]}vFVFV]^F~}}FFFFv拄lnFVF FtHv^ SF~u8~}^&G&WFV^&G&W FV밋FHF=uF FuFV0^&G^& uFV^&&WFVFV]y拄lnFVvFFF FtdFVFVv^ SF~}@F~uvFt^&G&WFV^&G&W FV딋v2FF PFVv^ Sv^&^&^&^&^&G&W^&&WFVFVF FuFVln.Ft^FV&&W^FV&&WFV]]^. FFU+r;.wVUF 10v&TF11&]UFPF uvvFPF u~^ & FPGP^ &G/vGPy^ &G/Fd1RGP^^& vGPL^&G:vGP9^&G:vGP&F]UPPP/\ uZ6&@<>t&;v ^ &&;v^ &>A&^ &^ &^ 68vNFYv6^ &] UPQPQP tPl]UdFFPP PFNQPPPvPPF tPl]UdFFPP PFNQP PPvPPF tPl]U]U]tVWS=4o4[_^U&.7tuCS^(sĉF[2VtNtZtU#ˁ᪪t;&€"Կe tsRW._ZGG75n&]ˀVY뺀V-K문*RP0Z(  57<Ë6 uÍ|7,  Ìȣ7ًF؀؀t$8 v QRRRP\Y5ЎيF9~=Fq~&d t uF%8=t7~=Nt"Fu;n7~=~t >@N7n3ɉNNNNN t6ÚÚÚtȭЭح ы%}3~ )ƁrwyÁƀ ëƫˌX[_^SPQU]RUZU]RUZU]RUt$U]RUt 3 Uu Uu Uu ZU]RWVQ"7,= ;tU ;x7-:=+uY^_ZUQVNSv9^Y]U]\lT3Ɉ(+Tl\sTl\u.t 0-Gt2˹*t0^_[ZYX]UPQRSWVЎ؋~vD-?r3ɺ@+;wILTl\SU]W؎йt(Ћ#.uD_ D03˾Њ3ɭ ȭ ȭ u t t _3˳ #t 97>'=./?;/7.:;'='9=3Ȋ+y@ٚS#u:=:57>'=&/7.'57.:7>1=9u!1u B7..:= B7>1=7>'=Q/s 'Y'VVD _U~v  J( 5U]]U]UWΉ3ɉỳ u(.`3ux6nx+P&ȋ. uŋr XȃrXP @3ؿ]t 7=/3{=Au=_9=.m%_9WP3 X_ _9=3؋ u=s u=s>~ _9=]23᫫ 7-7..9'=Qx8';:=û,0rf< wb2 wxc,0rB< ~,:}6[<.t,0r(< w$t ɀ2À u N23 <-t <+tN2 t4 PWQPURR4 tPr4Y_X@P$t"P5>= 5.55.=XUP /X]SWPQR<P3=r<ZYX_ tރ \6 6[Sw t6O46 6[UFŎ]E@ˠЊ& t U]t5tt*t@ tt@tUVPRL4uv NNv ,2&v 6`P~ OO~ W&-2P\aZX^]UVPRL4uv NNv ,2\&v 6`P~ OO~ W&-2\P\aZX^]UVPRL4uv NNv ,=&v 6`P~ OO~ W&-=P\aZX^]6&UVWPSQRӋ6_6GMr4Ŋ݃60‹<3Ћ‹G$3Ћ‹GG5GG ƋՋ~݃t6S[Վݎŋ6 ;>u}=>\~t6duYՎݎŋ6 ;>u}=6t>tt6p6 ;6uU6 6p ЎyZY[X_^]6&z:$U%+6&|:U6&~:U6&:U6&:U6&:U6&5UT 6&5=U b6&4nU" lrD6&4 PU N:&6&4$2U 06&4,U 6&44U 6&4<U 6&9U^ 6&9=U |6&8U, ^6&8 jU hT@6&8$LU J0"6&8,.U , 6&84U 6&8<U 6&;U 6&;=Ua 6&7U 6&7=U e6&5wUg6&5eUU6&5SU|C6&7,=U-6&7<=%U6 ;6u6ЎD]ˌЎˌЎ6 ;>u}=>Ëك6ك66 ;6u6Ëك6ك6uzuqt uu6P6`6pu%uЎ؋6 ;6u)6À@ú'ú!3һH3҇h3һh U]3һ(E D 2u 2T MD'>;u2Ê,u þ2>u Àå t2x뺋Ƌ߹w똋딋ځu3ۓtt 3Ëځu'+|=C~/URu2y݋M]} xxURQ2֜譋Эȭح3 tp| tыˋ3wtSr)|3 tĊ╊֊͊ߊ2wt(Fu?t ΋?tXx%L\|ss@+L\|s3XPËځu'xU2R@P"3ۋˋ t  tU tU t ڃD t t ڃX P3ɋ tU t D tU t D t t X P3ۋ t eʃD tU t ʃD tU t ʃD t ʃՁ?X P3RD t eڃD tU t ڃDU t ڃQ3ɋD t eDU t DeY]ыˋX t^wËځu '2URVW_^譋ȭحЭ⥥3r EU> JW @W<W8r";Tu ;Du;\u; s 2Y[_^<6 3;sb u;wARS3 tP t t [+[]蕒sO sO+‹ɰ ut ًʋ3龼>X]vuNJ݊Ί򗕊Ԋ2ufNtS ͊ tD rrwr't"XPr rXPr sF3Ջʊr^s Š t rrwr,t'XPr rXPr3sF32H tA rrwr,t'XPr rXPr3sFᗉM]EX]䀈e @}~uE Ë6 e Àrr"e r  Āue À Ātí$ȆČՎ݋6;6u 6ʀ2Ō؎6;6uh 6Ë>Ō؎6;6uB 6׋ ;>u}= ;6uS6íáŌێËáŌێËË6 ;>u}=E$*ȋEM yDp=@} =~Dy @D D 3ҊD e 3ۊ\ ] 62xz yߋD;E|NS2ut:r2w7@iuEEDD92A+t$xtxt2t t6 ;6u6Ë6D $עË6D $3ۋӊ\ Uv ~&*u Gtw]UF3F]ʗ;u;u t7؋™ʇؙËѽ u u΋ u uփMU3ɋٽ u u Ԇ u x|-;r+@|;rw;r+@] x у z  UVWv~ y 3 y փ u u  u#rrx y _^]UVWQSv~[Y_^]UVWQSv~ы[Y_^]XX[PSXX[PSU^F FFF Gp@] UVF v v^Wp@] SUS^ &<^5n[][UP9~=X]U]P..>PXPX.t,SQVRWU%.؀&t 2]_Z^Y[qtX..XU]PPP&4=t@2=s6=t=t3>PXPX 3>PXPX>tURVWSPQ3죲존P\&3یȎ26^Ë> YX[_^Z]U]U]SQWV. t3ێË>^_Y[U]U]UÎێF~r3]U^^H]UÎێF~t3]U^Ӌ^~ vn &FE< t<t &C3 2ڋ+щ] UF nnFp~t@]sގUF FnFp~t@]UF^&]UF؋v F ~Ns] UF fnFr@]UF FnFr@]U^v;Fu;v;s NOtIs]U]t.MMX][YZQSXU]U]U]&dU]U]_U]tU]UF ~ NFs]Uv ;vwvN ,r3];>r;>s E;vA؎U]>zu!܋_ݍFzG|_~U]F;zrzU؎v ~NNO]U]X>zu[X&z.|~&JU]XX[PSU]XX[PScU]XX[PSxU]XX[PSNZX++;&rÎPRRPPU؎v ~Ns]U؎~ NFs]UF؋v F ~NNO] U~F ؋v Ns]U~F v Ns]UF^ GFG]UQ~ u1^&?tqPPF t t<t7:^&π~ u ^&?t(Pv F ttu F~ u ^&?t&]UQbPF tPl t H؀ u9F vF ~N F ]U^ GFĿWt4~Wwv +dF t<= u^ GG$~ u^ G"G%^ GGFG F ^ G"]UQQ^ ĿW~Wv G"PF t);u^ "uO%F^ GGG]UQQ^SFP$F ttu)>tZF >rF< t<t<t 4뷋F6vPF u"F<t<t< t숇< uƸ]UQ^tĿW^S$1>u%;w^ 슇^]U^ G!G%sG"5^ uPv ^S^ G rPv ^S^ u);u ĿWF t^ GG^FF ;Fw^ PFPF t?;u$^ G$s ~u O%^ G$F^ $^ GGFG>~ u^ G$FG"&F< t^v&Ft^ G$NO"]UQPF]UQQP^Sv FPZF tPl]UQP PF tPl]UQQ^ G!G$uiGFĿWt4~Wwv d^ G t%= uG$GG ^ GG^ WF ^ G"G;G uKG$E^ ĿW~Wv G"PZ^ G t tu ^ GGG]U^G!G$8GtN^tE^G s;^ĿW P^G t tu ^GGG]U^G!8GtF~+us^ğ^F&G F:t:Tt :t:uF Q^ĿWFPtF u^ĿWPPFPZFFF~1uF F ~u^ĿWvF~0u~u^ĿWvFF t#tu ^GGFG ^G$]U^G(PPw&lt^G(PPw&lu]UQb^vGDG$D$GDO%D%]U^ sFF^uhPG(Pw&FPPmmPF PPw F u*^PbwP7 F t^PF^GsG sFtm FrmFwm^PG(Pw&FPPvF PPF u^^^G F:t:t:t:t :t:Tu ^G[F:t:uL^PF u7^PG(Pw&FPPmmPF PPFF^G t(=u GG ^GG^GF.^GG$GsG%^G%]U^Gsmu ĿW8^t!Grğ^F&G &W"&G&W^ĿWFF t^GGG ^G]Uvu FFP^G(Pw&FPPmmPF uvF t^GGG]U^&u]UF ^GG&]U^Gs8( ^G&G5t=t P  ]U~u]U^SP u].Q{s].M]U^SP u].Y{s].U]U^S!P u].a{s].]]U^S#P u].i{s].e]U^S%P u].q{s].m]U^ S)P u].y{s].u] U^ S*P u].{s].}]U^S7P u].{s].]U^ S8P u].{s].] U].U].U].U].U].U].^&G &w8 F^&G:t P)FFwy"su~eF =wmtAN=smt=pmu'^S^Sv^Svv ^Sv\0F =rmt=tmuFrmF =wmt =mmt=amuFmm iFP^Sv^SvvtF=t=uB^S^Sv^Svv ^Sv\Ft !t= uFFa~uv~mmuo^Sv^Sv^&w&&w$F=u^Sv^SvjhF~u FP^Sv^SvvtFFF t^G:P(F uM^&w:FP uF FuF^&G8#;u8~ |uhj|P/\F tf|& r 9FvFF1F1F1F;s ^Sh %F^&GZ&WvF&MX&E&uF+ƹ1&EFF&Z&U&E$<&E&FYs߸&G&G<~ tmuv^S^GPvj^GPjFF usF =rmt=tmu^&G &G 5^&G&G~ mmu&O FV^&G FF^SvvtF t ^SPmUbVnjޱ;u$:u ^&G((~F =rmt =tmt ^&G ]^&^ &&W^&G :t WFP5F uC~uF1~uF$^G^ &Z&W^&F^&GFU:~F =amt=wmt=rmt=tmt =mmt&?^&G F^&Z&WF^&G]U^&^&G :?t ^&GN ^&]U^&^ &&W^&G :?t ] vFP,F uqv~N^Y~u ЉFVsjjj ^SvN|F,jjFP/\F uF^&G Z&W F&GF^SvFv ^&G :tSv^ S^Sg<^SFPwF u'^Sv^ S^SgF^&G F^ &&W^&^&O :v^&zbVnjޱ;u$:u0rr)bPHPjRPQhrmRPQF u(^&G :~u FF^Su ^&G s<&G s4~u ^&"^&G ^G ^ &Z&W^&}^&G&;Gr$Sv^ S^S9F uX^&?uL^&G&O+;FsFF^&^&FFv&t^^ &Z&W^F&G FFN F;vP~uJ^S+QFPFPF t tu.^ v8vNFYFF릋F^&F^&G :tRS^ Sv ^SFsmVnjޱ;u$:uH^SF9^SFPsF u'^S^ Sv ^SF^&G F ^&^&O :v ^&Vnjޱ;u$:u7r0r)PMPjRPQhwmRPQF u(^&G :u FF^Su FFN F;w~t^&W&;WrS^ R+QFPFT^&G&+GFV N+;sV^&FF^ v0~&}^9N^Y^F&GFFcF^&FU^&G :v ]U^&G :v ^&G ]U^&]U^&]U]U^& t^&G :u &G& u]^S,s \FFFvPFF uAF s 5FFwJZ:sz*ʈJFuF=rmt =mmtKFP^Sv^SvvF=uW~mmuPFu>uP\P(l~u<&G& GujF P,F u|F&_^ F &FF #t+ȉNF V F V )NF &GZ&WF^ &F FN;s^ S+P F uHF^ &GF^ &GFF9Fr$^ X^F&^&GFuԸ>u>uP\P(l&_^F&G;F s FP^Sv ؎F@P>u>uP\P(l&_^F&G;Fs 2v^@^&O&&GUr &_S^SS]^&v ^ &Gv&L@^ &;vS&O+P0F ud^&O&7^ &y^Y^&G^ &w&^ &G^&^&G@^&G^ &Gv&D@^ &G ^&v ^&&G^ &;Gthj l^ &G@v&L^ &;vS&wF+PiF u^^&O&7^ &y^Y^&G^ &w&^&G@v&D^&G^ &G@v&D^ &G 9FsF^&&+GFSv+FF9Fw^SF+FPF%FPvFPF=t5v(l^&%FN;tFPQvP(l FF^&F^&OANFF;Fs"^&@&PFVFFFFFFF;FwFFF;Fs;^&@&PFVF9Fv9Fw~t FFFFF뽋v^&@&PFVFN;s7N0^~9^YFFvFV^&@&PFFFF@F^&GFF;Fs@^&@&PFV~uFFvFV^&@&PF^&+FFN@;vjvFPF=tCv(lvF#^;Vu&#+ЉVFNPQjFLNFȃ#ʉN^QN+#QF uFP+F%Y+ȉNFF^&F$^ SvRPPNQNQPF uM^ SvRPjFPFPjF u$^FF;Fs4z0r vz9vq^ vJ܀0Fġ uhDjP/\F uK&G ^;v ^X ^F&u^& u@^ Vnjޱ;u$:uu^&GjjFP/\F t^&$t~t}rv^&GQQjRQPham^SvF@~&F =amt =wmtFPsFr^&G _^SvFPFPF uE^&G F^&GFsF^F^S^SvFPZUv&D ~&] ~&] Y]&FFF=F\FzFFFFFF2FQF 1F1FF1Vu FFmFm1FF1VF1F ;vNvB;FvNFF^&F 1^&W^&8Os&vF+B@^&GF1^&WF <1^&WF 1F1^&WF 1º PF1Y^&GU^ &G 33&:t :.t$C^Y tt &^&] ]U^&G :w):~u&G t&G uF&G &G 3  ]U^&G uP\ u>t&G > u]ð]UQQ(P(<6Pt uJF6(P$ u8>=u0"Pt u!F6(P$ u*=t=!t3]^ &G :uSvv^ &G :tWSvvLn^ &G ^ SvvLFNs=u8^ SFPl~u#^ &G ^ &dt@Fs률^ &G F,^ &G :r^ &G :tw&G 9Fu9Fu^ &G&WFV^ &G&W;Vu;Fw3&G^ &O^ &O^ &O&W;Vu;Ns+^ &r &G&;Gwe^ &G &W"N~;u;wL&wщFVN;u;s&+O &"N։~؋F^ &G-sSTF u^ &G-sG<PFPF^ &G-FVFVF%Ff^ &G^ &G^ &GNV^ &O &W"^ SPFPFPTF u4F^ &G^ &G :t :Tt^ SjF t^ &G&G &W"FV&9Wu&9Gw&G&W9Fu9Fu^ &G&WFV^ &G&9G*s&G*^ &FF^ &G@1&@FތFF^ FV&9W"u&9G v&G*H1Fܺ&G &W"N~;u;r_F&+O &"N։~؋F։F&O,r&9G*sSlLF tF^ &G^ &G*&;G(uF&G(F^ &G* ^ F&9G*s&G*^ F&9G(v&G(Fr^ Sj$|F u^ SlLF uy^ &G ts&w8&SP^ &w"&w G<P^ &w: F t@^ &G-^ &G &W"&G4&W6^ &G&G.^ &F&G0Z&W2~Yt^ &G@1&W^ &w&@F&Z&W^ &GN^ &O^ &OF~+&G &"^ &G&G(^ &G&G*^ &G,^ &Yti&w8&Sh^ &w"&w FP#Fu^ &?^ &G,(~t^ &G&GF^ &G :?t ^&FF^&G &W"&O*&;Wu&;GrI1&G^&G*1 uSj$|F u`^&G@1&@FF^&G*1&G &W"FV&w8^SQRPFP#FtK uX^&G*1V+^0^~&}*9^Y^&G*H13^Sj|F u/v&|*&L+^9 ^&G*&G^&G,^ &G :uS^SzO^ &G :t S^S<6^ &du^ &G ^ S^SF^ &G FU^&G :r^&G :t:Tu^&G&G &W"^&&Wc^&G :uX&r&G&;Gv &G&W^&G&G &W"^&&W^&G s7&G s/^&/&_!^&G :?u^&&G ]^&^ &&W^&G :t ^STF uk^&G;s]@1V&G&G &"F~&w8&XSv^&pWPG<P^&w:F t@^&G-F^&GFrF@1V^&G&G &W"FV&G-sG<PFPF^&G-3^&w8v&XSv^&pvvFP#FNVF׉NV~u t%^&9Wu&9Or&O&WFF t ^&Gv^&@F&Z&W^&GFV^&G &W"^&G&W;Vu;FYvF&GF^&G8^&G^&G&W&+G &W"FVF&G^&uFFP~6F =wmt =mmt=amu dF =rmt=tmuF smhFPjFt;v ^Sv^SvFPF t=c=u ~W=tP~6FV^&G&WFF&Z&WF1&G&G;YsF^Sv^GPjFPF ui^&G(&W*&G&W~ tmu)&w&w^Sv^S^GPF uA^&G &G SjjtF u^&G &w&wFFUFPv v ^Sj؎F&G P+d] ^S,s x^&G FNN;v \^Svvj,F uC^&GF&_^F&xw !vv^0~ N^YUFPv v ^Sj؎F&G Pd] ^S,s *^&$mmt^&G FNN;v ^Svvh,F u^&GFF^&GFF^8v NFY^v&@F<sF~uFFF^v&@vvNF^&^&G"s&G#^S,F u ^ S,s P^ &$mmt^ Svvj,F uh^ &GF&O N&_^F&xs ?^v&@vvN^&^ &G"s&G#^ S,F u^ &dtZSFPt^& uV^ &du&G-sG<P^S^&^ Shwmvv^& u^ &G ^&^ &Gd<tN<uSh^& uH^ SFPt^& u/^ Shrmvv^& u^ &G ^&U].] ^&^SP$|F t^&G t~&w8&SP^&w"&w G<P^&w: F t@^&G-^&G &W"&G4&W6^&G&G.^&F&G0Z&W2~Yt^&GFu^&G@1V&G&G &W"F^&Gv^&@F&Z&Wv^&@&G^&G*^&G(^&G^&G, ^&G :t :Tt F^&G-rG<PFPF^&G-^&G0FF^F&G4&W6Ft.H^&O.+N^v0^9^Y^&O.N^F&)G.^v^&G0Z&W2F^&.uF tuSv|F tF^&G0FF^&w8^S^&w.&w6&w4FP$FFt.H^&O.+N^v0^9^Y^&O.N^F&G4&W6^F&)G.^v^&G0Z&W2F t ^&.u%FsFr^Sh|F u^&G :t :Tt ^&G&WFV&O&O &"N~;u;wN~Fs FF%u!FPF u ~ r ujjP/\F t^&GF&8G wFX ^Fv&DF&GF&GF&GF^&GF&GF&GF&GF&G F&8G uANsNQPP<F t FF^&#tF ;Fv F&O#F ;Fw FrF9F w~^ &FF^&O&@^&G^&w6 FA:r jF~uv&<tF~to~tEv&<u<^&?Qvlt@Y F^SDPvltFsah @FPjF t@"FN ɲuB"ƒ uA"FNQj P4F ut'~tv &* v &*&4v &^&~tv &tۜ)V V V V VVV Vv $ؚ((tʁ Žм &.+ $3" )>t˱UV V U%-15;>ADGJMPV\`bUgjmpuV wV {ĂąVȇVĊVȌVďVȑVĔVȖVę]țT  $;* ***************************** MODULE HEADER *************************** *; ;* *; ;* MACHINE: B2x/B3x OS: BTOS/CTOS *; ;* *; ;* DESCRIPTION: CTOS Pascal install.jcl installation script *; ;* *; ;* THIS MODULE CONTAINS THE INSTALLATION JOB USED TO INSTALL THE *; ;* CTOS PASCAL PRODUCT *; ;* *; ;* HISTORY: *; ;* *; ;* MM/DD/YY VVVV/MM PROGRAMMER / DESCRIPTION *; ;* *; ;* 11/12/92 0701/00 Tim Dooley / Changes for multi-floppy installation *; ;* *; ;* 11/18/91 0700/01 Tim Dooley / Added ability to declare volume and *; ;* / directory for Pascal files when *; ;* / making installation private. *; ;* *; ;* 11/13/91 0700/00 Tim Dooley / Created *; ;* *; ;* TITLE: CTOS Pascal 7.0.1 *; ;* *; ;* PROPRIETARY PROGRAM MATERIAL *; ;* *; ;* THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE *; ;* REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE *; ;* OR UPON WRITTEN AUTHORIZATION OF THE PATENT DIVISION OF UNISYS *; ;* CORPORATION, DETROIT, MICHIGAN 48232, USA. *; ;* *; ;* COPYRIGHT (C) 1992 UNISYS CORPORATION *; ;* *; ;* UNISYS BELIEVES THAT THE SOFTWARE FURNISHED HEREWITH IS ACCURATE AND *; ;* RELIABLE, AND MUCH CARE HAS BEEN TAKEN IN ITS PREPARATION. HOWEVER, *; ;* NO RESPONSIBILITY, FINANCIAL OR OTHERWISE, CAN BE ACCEPTED FOR ANY *; ;* CONSEQUENCES ARISING OUT OF THE USE OF THIS MATERIAL, INCLUDING LOSS OF *; ;* PROFIT, INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES, THERE ARE NO *; ;* WARRANTIES WHICH EXTEND BEYOND THE PROGRAM SPECIFICATION. *; ;* *; ;* THE CUSTOMER SHOULD EXERCISE CARE TO ASSURE THAT USE OF THE SOFTWARE *; ;* WILL BE IN FULL COMPLIANCE WITH LAWS, RULES AND REGULATIONS OF THE *; ;* JURISDICTIONS WITH RESPECT TO WHICH IT IS USED. *; ;* *; ;* ************************* END OF MODULE HEADER ************************ *; ; THIS IS AN INSTALLATION OF CTOS PASCAL USING THE INSTALLATION ; MANAGER. INSTALLATION FROM FLOPPY AND SERVER ARE SUPPORTED. $JOB PASINSTALL $PauseOff ; NATIONALIZABLE STRINGS DoneMsg = 'Done.' CommandMsg = 'Creating the Pascal Command ...................... ' CopyMsg1 = 'Copying First.Asm, Pascal8087.fls, ' CopyMsg2 = ' Pascal8087.Lib, PascalFe.Run ... ' CopyMsg3 = 'Copying PascalLst.Run, PascalOpt.Run, ' CopyMsg4 = ' PasMin.obj, First.Obj .......... ' CopyMsg5 = 'Copying Pascal.lib ............................... ' CopyMsg6 = 'Copying Linker.run ............................... ' InstallMsg = 'Installation complete. ' InstallMsg1 = 'Installation complete. Remove and store diskettes.' InstallMsg2 = 'Resume Cluster if Disable Cluster was invoked.' InstallMsg4 = 'Press any key to finish.' TapeMsg = 'CTOS Pascal cannot be installed from Tape.' UserMsg1 = 'The CTOS Pascal files may be installed to any valid' UserMsg2 = 'Volume and Directory. At the prompt, enter a Volume' UserMsg3 = 'and Directory name and then press GO, or simply' UserMsg4 = 'press GO to accept the default.' UserMsg5 = 'If the Volume name that you specify does not exist,' UserMsg6 = 'this installation will fail.' UserPrompt = 'Press any key to continue.' EPrompt = 'Enter a Volume and Directory' Descript = 'Invoke the Pascal Compiler.' SF = 'Source File' OF = '[Object File]' LF = '[List File]' OLF = '[Object List File]' SelectY = 'Yes' LinkPrompt = 'Select YES to Copy Linker.run' LMsg1 = 'The installation process has detected a version of the' LMsg2 = 'Linker.run which contains a version level that is less' LMsg3 = 'than 12.1. To properly use all features of CTOS Pascal,' LMsg4 = 'a different version of Linker.run may be copied to your' LMsg5 = 'system in the directory. Any existing version of' LMsg6 = 'Linker.run will be copied to Linker.run-save. ' LMsg7 = 'At the prompt select Yes to overwrite the existing' LMsg8 = 'Linker.run file.' LMsg9 = 'Press any key to continue ...' ;THE NEXT TWO LINES WILL BE CHANGED TO MATCH THE APPROPRIATE ENTRY ;IN THE SYS.CMDS OR CLUSTER.CMDS FILE MCF = 'Merge Command Files' NC = 'New Command' ;IF THIS NEXT LINE IS TO BE NATIONALIZED THEN THE SAME FILE ON ;DISKETTE 2 MUST BE CHANGED TO MATCH THIS TEXT. Disk2of2 = 'CTOS Pascal Diskette 2 of 2' ; VARIABLE INITIALIZATION - DO NOT NATIONALIZE Floppy = 0 Tape = 1 FromServer = 2 ClientVol = '[Sys]' ServerVol = '[!Sys]' ClientSpec = '[Sys]' ServerSpec = '[!Sys]' CopyPath = '[B25PAS-1]' ClstrCmds = '[!Sys]Cluster.cmds' DiskType = FileVersion('[B25PAS-1]FDrive5.25') $IF Unattended AND (InstallType = Floppy) $DisplayLine $DisplayLine $Displayline(' AE Unattended mode is not supported on floppy installation.AA') $Displayline(' AE Press to exit AA') $DisplayLine $DisplayLine $DisplayAndWait $Cancel $ENDIF SvrSysType = FileVersion('[!Sys]SysImage.sys') ClstrSysType = FileVersion('[Sys]SysImage.sys') $IF (InstallType = FromServer) AND (Public OR (SvrSysType = ClstrSysType)) $DisplayLine $DisplayLine $Displayline(' AE Public installation from server is invalid. AA') $Displayline(' AE Press to exit AA') $DisplayLine $DisplayLine $DisplayAndWait $Cancel $ENDIF ;A VOLUME AND DIRECTORY PATH FOR THE CTOS PASCAL SOFTWARE, ;IF IT IS A PUBLIC INSTALLATION WE WILL FORCE IT TO [SYS] If Public CmdFileTo = ClstrCmds DefVol = ServerVol InstallPath = ServerSpec CmdSpec = ConcatStrings(CopyPath, 'Install>English.cmds') ToCmdSpec = ConcatStrings(InstallPath, 'Install>English.cmds') CopyTo = '[!Sys]Pascal7.0.1>Install>English.cmds' Command Copy, CmdSpec, CopyTo, Yes Run ([Sys]CmdFileEditor.run, MCF, 'MC'), & CmdSpec, & ;File From ToCmdSpec, & ;FileTo No & ;Overwrite ContinueOnError Else PathDef = '[Sys]' DefVol = ClientVol ContinueOnError IF InstallType = FromServer CopyPath = '[!Sys]Pascal7.0.1>' EndIf CmdSpec = ConcatStrings(CopyPath, 'Install>English.cmds') ToCmdSpec = ConcatStrings(PathDef, 'Install>English.cmds') Run ([Sys]CmdFileEditor.run, MCF, 'MC'), & CmdSpec, & ;File From ToCmdSpec, & ;FileTo No & ;Overwrite ContinueOnError EndIf ;SCROLL THE SCREEN 32 LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah) Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah) Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah) Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah) ;THE USERENTERVALUE CONSTRUCT WILL ALLOW THE ASSIGNMENT OF ;A VOLUME AND DIRECTORY PATH FOR THE CTOS PASCAL SOFTWARE, ;IF IT IS A PUBLIC INSTALLATION WE WILL FORCE IT TO [SYS] If Public CmdFileTo = ClstrCmds DefVol = ServerVol InstallPath = '[!Sys]' Command 'Create Directory', InstallPath Else PathDef = '[Sys]' DefVol = ClientVol DisplayLine(UserMsg1) DisplayLine(UserMsg2) DisplayLine(UserMsg3) DisplayLine(UserMsg4) DisplayLine DisplayLine(UserMsg5) DisplayLine(UserMsg6) DisplayLine DisplayAndWait(UserPrompt) InstallPath = UserEnterValue(EPrompt, PathDef) Command 'Create Directory', InstallPath DisplayLine DisplayLine EndIf If InstallType EQ FromServer InstallFrom = '[!Sys]' Else InstallFrom = ConcatStrings(DeviceFrom, '') Endif If InstallType EQ Tape DisplayLine DisplayLine(TapeMsg) DisplayLine(InstallMsg4) DisplayAndWait Cancel Endif DisplayLine ; COPY FILES FROM THE FLOPPIES DisplayLine DisplayLine(CopyMsg1) Display(CopyMsg2) Run [Sys]LCopy.run, (First.Asm, Pascal8087.fls, & Pascal8087.Lib, PascalFE.Run), & InstallFrom, InstallPath,,y,n,n,y Displayline(DoneMsg) ;SCROLL THE SCREEN FOUR LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah) DisplayLine(CopyMsg3) Display(CopyMsg4) Run [Sys]LCopy.run,(PascalLst.Run, PascalOpt.Run, PasMin.Obj, & First.Obj), & InstallFrom, InstallPath,,y,n,n,y DisplayLine(DoneMsg) DiskType = FileVersion('[B25PAS-1]fDrive>5.25') If DiskType = '255' ;SCROLL THE SCREEN FOUR LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah) If InstallType <> FromServer NextFloppy(Disk2of2) EndIf EndIf ;SCROLL THE SCREEN FOUR LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah) Display(CopyMsg5) Run [Sys]LCopy.run, Pascal.lib, & InstallFrom, InstallPath,,y,n,n,y If Public Run [Sys]LCopy.run, Linker.run, & InstallFrom, InstallPath,,y,n,n,y EndIf DisplayLine(DoneMsg) ;SCROLL THE SCREEN FOUR LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah) Deassign(Disk2of2) Deassign(CopyMsg1) Deassign(CopyMsg2) Deassign(CopyMsg3) Deassign(CopyMsg4) Deassign(CopyMsg5) If Public VerLev = FileVersion('[!Sys]Linker.run') Else VerLev = FileVersion('[Sys]Linker.run') EndIf VerString = '12.0' VerVar = SubString(VerString, VerLev) If VerVar <> 65535 ;SCROLL THE SCREEN 32 LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah) Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah) Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah) Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah) DisplayLine(LMsg1) DisplayLine(LMsg2) DisplayLine(LMsg3) DisplayLine(LMsg4) DisplayLine(LMsg5) DisplayLine(LMsg6) DisplayLine(LMsg7) DisplayLine(LMsg8) DisplayLine DisplayAndWait(LMsg9) Default = SelectY LinkerYes = UserSelectYesNo(LinkPrompt, Default) Deassign(LinkPrompt) ;SCROLL THE SCREEN FOUR LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah) If LinkerYes = 255 Display(CopyMsg6) If Public Command Copy, [!Sys]Linker.run, [!Sys]Linker.run-save,y Run [Sys]LCopy.run, Linker.Run, & InstallFrom, [!Sys],,y,n,n,y Else Command Copy, [Sys]Linker.run, [Sys]Linker.run-save,y If InstallType = FromServer Run [Sys]LCopy.run, Linker.Run, & [!Sys], [Sys],,y,n,n,y Else Run [Sys]LCopy.run, Linker.Run, & InstallFrom, [Sys],,y,n,n,y EndIf EndIf DisplayLine(DoneMsg) ;SCROLL THE SCREEN FOUR LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah) EndIf EndIf ; ADD PASCAL COMMAND Display(CommandMsg) InstFile = ConcatStrings(InstallPath, 'PascalFE.Run') If Public PubCom = 'Y' Else PubCom = 'N' EndIf Run ([Sys]CmdFileEditor.run, NC, 'AC'), & Pascal, & ;Command Name InstFile, & ;Run File (SF, OF, LF, OLF), & ;Field Names Descript, & ;Description Yes,, & ;Overwrite CmdFileTo, & ;Command File PubCom, ;Public Command; DisplayLine(DoneMsg) ;SCROLL THE SCREEN FOUR LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah) If InstallType = FromServer DisplayLine(InstallMsg) Else DisplayLine(InstallMsg1) Endif DisplayLine(InstallMsg2) DisplayAndWait(InstallMsg4) DisplayLine DisplayLine PauseOn End CmdSpec = ConcatStrings(CopyPath, 'Install>English.cmds') ToCmdSpec = ConcatStrings(PathDef, 'Install>English.cmds') Run ([Sys]CmdFileEditor.run, MCF, 'MC'), & CmdSpec, & ;File From ToCmdSpec, & ;FileTo No & ;Overwrite ContinueOnError EndIf ;SCROLL THE SCREEN 32 LINES Display(\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\0Ah,\\ CopyCreate Directory005!2Copy a file to another file.File from*File to*[Overwrite ok?] [Confirm each?] 00+(!14Create a new directory on a disk volume.New directory name(s)[Default protection level (15)][Maximum number of files (75)][Password for new directory][Volume password]^lume password]^ :PackageName:CTOS Pascal :Version:s7.0.11 :RequiredMemory:400K :RequiredDiskSpace:1700 :Commands:'Pascal' :ProductFiles:First.Asm PascalLst.Run Pascal.Lib PascalOpt.Run Pascal8087.fls PasMin.Obj Pascal8087.Lib PascalFe.Run First.Obj :RelatedFiles: s7.0.11 Name:CTOS Pascal :Version:s7.0.11 :RequiredMemory:400K :RequiredDiskSpace:1700 :Commands:'Pascal' :ProductFiles:First.Asm PascalLst.Run Pascal.Lib PascalOpt.Run Pascal8087.fls PasMin.Obj Pascal8087.Lib PascalFe.Run First.Obj :RelatedFiles: %' XEInstall.Sub - MOD 11/05/91, L. Lyons Submit [B25PAS-1]Install.Sub %0 [!Sys] XE y CTOS PASCAL COMPILER Installation If this is the server station of a cluster system, then power down all cluster workstations. If this is a cluster workstation, then power down all other workstations except this station and the master station. Copy [Kbd] [Vid] PF %' Install.Sub - MOD 11/23/92, L. Lyons %#2Copy [Kbd] [Vid] PF CTOS PASCAL Compiler Installation If this is the server station of a cluster system, then power down all cluster workstations. If this is a cluster workstation, then power down all other workstations except this station and the server station. PRESS AEAA when ready 1Copy [Kbd] [Vid] PF This installation will create commands. Before continuing, ensure that the command file is not in use elsewhere. AFPRESS AEAA to cancel installation. AFPRESS AEAA to continue. PRESS AEAA when ready 1 Copy [Kbd] [Vid] PF Volume Status will display the number of unused sectors on your [Sys] volume. AFPRESS AEAA to invoke Volume Status, note the number of unused sectors, then AFPRESS AEAA again to continue. 1Screen Setup yesVolume Status Sys1Copy [Kbd] [Vid] PF CTOS PASCAL COMPILER requires approximately 1200 sectors on a CTOS workstation and you will need a minimum of 400K of memory. If this system does not have the required space available AFPRESS AEAA to cancel installation. If this system does have the required space available AFPRESS AEAA to continue. 1%?2Copy [Kbd] [Vid] PF CTOS PASCAL Compiler Installation Power down all other workstations except this station and the XE server. PRESS AEAA when ready 1Copy [Kbd] [Vid] PF Volume Status will display the number of unused sectors on your [!Sys] volume. AFPRESS AEAA to invoke Volume Status, note the number of unused sectors, then AFPRESS AEAA again to continue. 1Screen Setup yesVolume Status !Sys1Copy [Kbd] [Vid] PF CTOS PASCAL COMPILER requires approximately 1200 sectors on a CTOS workstation and you will need a minimum of 400K of memory. If this system does not have the required space available AFPRESS AEAA to cancel installation. If this system does have the required space available AFPRESS AEAA to continue. 1Create Directory %1 200LCopy [B25PAS-1]* %1 yesCopy [kbd] [sys]<$>Args.Tmp yes'Source File' '[Object File]' '[List File]' '[Object List File]' New Command 'Pascal' %1PascalFe.Run @[Sys]<$>Args.Tmp 'Invoke the Pascal Compiler.' y %0Copy [kbd] [vid] PF Please remove the Pascal Compiler diskette 1 and insert diskette number 2 (B25PAS-2). PRESS AEAA when ready 1Copy [Kbd] [Vid] PF Installation of CTOS PASCAL Compiler software requires [Sys]Linker.Run with release level 12.2.0 or greater. AFPRESS AEAA to overwrite any existing version of [Sys]Linker.Run. AFPRESS AEAA to continue installation. LCopy Linker.Run [B25PAS-2] %#2[Sys]%?2[!Sys] yes1LCopy [B25PAS-2]Pascal.lib %1 yesDelete [Sys]<$*>Args.Tmp Append [f0]fdSys.Version [Kbd] %#2[Sys]%?2[!Sys]Sys.Version PASCAL Compiler installed on %d|!*w! !*n! !*d!, !yyyy!, at !*t!:!0m!| Copy [kbd] [vid]PF AE ***** INSTALLATION OF CTOS PASCAL COMPILER COMPLETE ***** AA Please remove the PASCAL Compiler disk from the disk drive and put it and all other diskettes in a safe place. If this is a cluster system, you may now resume cluster operations. PN PathDef = '[Sys]' DefVol = Clienmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm