RP;9|P^%' 1.Sub - MOD 01/07/92 D. Stager LCopy [B20FM6-1]FormsEditor.run %1 yCopy [kbd] [sys]<$>Args.Temp yes'[File]' '[Form]' '[Graphic File]' '[Column]' '[Line]' New Command 'Forms Editor' %1FormsEditor.Run @[sys]<$>Args.Temp 'Design / Edit a Form' yes %0 tem, 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 1 %?2%' 1.Sub - MOD 01/07/92 D. Stager Copy [B20FM6-1]sFormsEditor.run %1FormsEditor.run y New Command 'Forms Editor' %1FormsEditor.Run '[File]' '[Form]' 'Design / Edit a Form' yes %0Editort' %1FormsEditor.Run @[sys]<$>Args.Temp 'Design / Edit a Form' yes %0 ` 0Oo0o/0`0 ??   ?oP` $. p/?`9< `D%' Choice.Sub - MOD 01/07/92, D. Stager Submit [B20FM6-1]%3.Sub %0 %1 %?2%2 yesE  F0 I/5,N' , 1 6 ; @ E J O T Y ^ c h m r w |      ! & + 0 5 : ? D I R6.4.0%%%%%%%%%%&B&N&i&n&&&&&&&h&&&&;&P&&&&&&+&R&s&&&&&&L&j&o&~&&6&^&&&&&,&K&&&&&&&&&S&&&&&1&C&Q&Y&&&& & & & &" &C &O &z & & & & &G &m & & &>&&&&&U&~&&&&&E&N&&&&&& &n&&&&&+&@&W&k&&&&&&&5&>&&&&)%' Install.Sub - MOD 01/07/92 D. Stager %#2Copy [Kbd] [Vid] PF BTOS FORMS DESIGNER 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 1 %?2Copy [Kbd] [Vid] PF BTOS FORMS DESIGNER INSTALLATION Power down all other workstations except this station and the XE520 server. 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 Sys1Create Directory %1Copy [Kbd] [Vid] PF Installing BTOS Forms Designer WITH the graphics capable Forms Editor requires approximately 952 free sectors on a BTOS workstation and a minimum of 300K memory. Installing BTOS Forms Designer WITHOUT the graphics capable Forms Editor requires approximately 653 free sectors on a BTOS workstation and a minimum of 300K memory. If this system does not have the required space or memory available AFPRESS AEAA to cancel installation. If this system does have the required space and memory available AFPRESS AEAA to continue. 1Copy [Kbd] [Vid] PF AE GRAPHICS INSTALLATION AA AE 1 AA Install graphics capable Forms Editor. AE 2 AA Install standard Forms Editor. To install the correct Forms Editor, enter the appropriate number (1 or 2) in the [Parameters] field of the Submit command form below, then AFPRESS AEAA. Submit [B20FM6-1]Choice.Sub %0 %1 %#2''%?2%2 yes 1Copy [kbd] [vid] PF Please remove the Forms Designer diskette 1 and insert diskette number 2 (B20FM6-2). PRESS AEAA when ready 1Copy [kbd] [vid]PF AE Forms Run-Time Library INSTALLATION AA To install Forms Run-Time library AFPRESS AEAA. Otherwise, AFPRESS AEAA. LCopy [B20FM6-2]Forms.Lib %1 y1LCopy [B20FM6-2]FormsReporter.Run %1 yCopy [kbd] [sys]<$>Args.Temp yes'File' '[Form]' '[Fields?]' '[Form Image?]' '[Output]' Copy [kbd] [sys]<$>Desc.Temp yes'Produce a report describing a form and its fields.' New Command 'FReport' %1FormsReporter.Run @[sys]<$>Args.Temp @[sys]<$>Desc.Temp yes %0Copy [kbd] [sys]<$>Desc.Temp yes'Print a Form to the designated printer.' New Command 'Print Form' %1FormsReporter.Run 'File' '[Form]' '[Queue Name (default = SPL)]' @[sys]<$>Desc.Temp yes '01' %0Append [B20FM6-2]fdSys.Version [Kbd] %#2[Sys]%?2[!Sys]Sys.Version Forms Designer 6.3 installed on %d|!*w! !*n! !*d!, !yyyy!, at !*t!:!0m!| Delete [sys]<$>Args.Temp [sys]<$>Desc.Temp Copy [kbd] [vid]PF The second diskette contains FmrGtd.Asm, FmTabKey.Asm, and FmValProc.Asm files. It also contains three object modules: 4.0FmChar.Obj, 4.0FmUser.obj, and 4.0FmRun1.0bj. After completion of installation, you may copy any of these files as required for configuration of Forms.Lib. AFPRESS AEAA to continue. 1Copy [kbd] [vid]PF Please remove the Forms Designer diskette from the disk drive and put it and all other software diskettes in a safe place. If this is a cluster system, you may now resume cluster operations. AE ********************* REBOOT THE SYSTEM ********************* AA AE **** TO COMPLETE INSTALLATION OF CTOS FORMS DESIGNER **** AA PNCopy [Kbd] [Vid] PF BTOS FORMS DESIGNER 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 1 %?2%' XEInstall.Sub - MOD 01/13/92, D. Stager Submit [B20FM6-1]Install.Sub %#0[!Sys]Sys.Cmds%0 %#1[!Sys]%1 XE yes F0 I/5,N' , 1 6 ; @ E J O T Y ^ c h m r w |      ! & + 0 5 : ? D I ;* ***************************** MODULE HEADER *************************** *; ;* *; ;* MACHINE: B2x/B3x OS: BTOS/CTOS *; ;* *; ;* DESCRIPTION: CTOS Forms Designer Install.jcl installation script *; ;* for 3.5 and 5.25 inch floppies *; ;* *; ;* THIS MODULE CONTAINS THE INSTALLATION JOB USED TO INSTALL THE *; ;* CTOS FORMS DESIGNER PRODUCT *; ;* *; ;* HISTORY: *; ;* *; ;* MM/DD/YY VVVV/MM PROGRAMMER / DESCRIPTION *; ;* *; ;* 10/06/93 0604/0A Tim Dooley / Modified for 6.4 release *; ;* 06/30/92 0603/0A Tim Dooley / Modified for single JCL 3.5 and 5.25 *; ;* 11/19/91 0603/00 Tim Dooley / Created *; ;* *; ;* TITLE: CTOS FORMS DESIGNER *; ;* *; ;* 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) 1993 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 THE CTOS FORMS DESIGNER USING INSTALLATION ; MANAGER. INSTALLATION FROM FLOPPY AND SERVER ARE SUPPORTED. JOB FORMINSTALL PauseOff CancelOnError ;NATIONALIZABLE STRINGS DoneMsg = 'Done.' CommandMsg = 'Creating the Forms Designer Commands ... ' CopyMsgP = 'Copying FormsEditor.Run, sFormsEditor.Run ... ' CopyMsg1g = 'Copying FormsEditor.Run ... ' CopyMsg1 = 'Copying sFormsEditor.Run ... ' CopyMsg2 = 'Copying FormsReporter.Run' CopyMsg3 = ' ... ' CopyMsg4 = ', Forms.Lib ... ' InstallMsg = 'Installation complete. ' InstallMsg1 = 'Installation complete. Remove and store diskettes.' InstallMsg2 = 'Resume Cluster if Disable Cluster was invoked.' InstallMsg3 = 'Press any key to finish.' TapeMsg = 'Forms Designer cannot be installed from Tape.' UserMsg1 = 'The Forms Designer files may be installed to any valid' UserMsg2 = 'Volume and Directory, at the prompt, enter Volume' UserMsg3 = 'and Directory names and then press GO, or simply' UserMsg4 = 'press GO to accept the default.' UserMsg5 = 'If the specified Volume does not exist, then the' UserMsg6 = 'installation will not successfully finish.' UserMsg7 = 'If the specified Directory does not exist, it will' UserMsg8 = 'be created for you.' UserPrompt = 'Press any key to continue.' EPrompt = 'Enter a Volume and Directory' Descript1 = 'Design / Edit a Form.' Descript2 = 'Produce a report describing a form and its fields.' Descript3 = 'Print a form to the designated printer.' GraphPrompt = 'Do you want Forms Editor Graphics capability?' SelectY = 'Yes' SelectN = 'No' LibPrompt = 'Do you want to install the Forms run-time library?' FEdCommand = 'Forms Editor Graphics' sFEdCommand = 'Forms Editor' FRepCommand = 'FReport' PrintCommand = 'Print Form' CopyLater1 = 'The second diskette contains the FmrGtd.Asm,' CopyLater3.5 = 'This diskette contains the FmrGtd.Asm,' CopyLater2 = 'FMTabKey.Asm, FmValProc.Asm files. It also' CopyLater3 = 'contains three object modules, 4.0FmChar.Obj,' CopyLater4 = '4.0FmUser.Obj, and 4.0FmRun1.Obj, for configuration' CopyLater5 = 'of Forms.Lib. You may copy any of these files as you' CopyLater6 = 'require them.' FlopInst = 'Unattended mode is not supported on floppy installation.' PressGo = ' Press to exit.' PubInst = 'Public installation from server is invalid.' ;THE NEXT THREE LINES WILL BE CHANGED TO MATCH THE APPROPRIATE ENTRY ;IN THE SYS.CMDS OR CLUSTER.CMDS FILE MCF = 'Merge Command Files' RC = 'Remove Command' 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 = 'Forms Designer Diskette 2 of 2' ;NATIONALIZATION OF THIS SCRIPT ENDS HERE ;VARIABLE INITIALIZATION - DO NOT NATIONALIZE Floppy = 0 Tape = 1 FromServer = 2 ClientVol = '[Sys]' ServerVol = '[!Sys]' ClientSpec = '[Sys]' ServerSpec = '[!Sys]' CopyPath = Concatstrings(DeviceFrom, '') ClstrCmds = '[!Sys]Cluster.cmds' Clear = '\\0Ch' Scr4 = '\\0Ah\\0Ah\\0Ah\\0Ah' ;SCROLL THE SCREEN FOUR LINES Display(Scr4) IF Unattended AND (InstallType = Floppy) DisplayLine DisplayLine DisplayLine(' AE ', FlopInst, ' AA') Displayline(' AE ', PressGo,' 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 ', PubInst, ' AA') Displayline(' AE ', PressGo, ' AA') DisplayLine DisplayLine DisplayAndWait Cancel ENDIF Deassign(SvrSysType) Deassign(ClstrSysType) Deassign(PubInst) Deassign(PressGo) Deassign(FlopInst) ;THE USERSELECTYESNO CONSTRUCT IS USED TO ALLOW THE USER TO ;SELECT EITHER GRAPHICS FORMS EDITOR OR NON-GRAPHICS FORMS EDITOR GraphicsYes = UserSelectYesNo(GraphPrompt, SelectN) Deassign(GraphPrompt) ;THE USERSELECTYESNO CONSTRUCT IS USED TO ALLOW THE USER TO ;CHOOSE WHETHER OR NOT TO INSTALL THE FORMS LIBRARY. LibYes = 255 IF not Public LibYes = UserSelectYesNo(LibPrompt, SelectY) ENDIF Deassign(LibPrompt) ;THE USERENTERVALUE CONSTRUCT WILL ALLOW THE ASSIGNMENT OF ;A VOLUME AND DIRECTORY PATH FOR THE CTOS FORMS DESIGNER 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(ServerSpec, 'Install>English.cmds') Run ([Sys]CmdFileEditor.run, MCF, 'MC'), & CmdSpec, & ;File From ToCmdSpec, & ;FileTo No & ;Overwrite ContinueOnError ;REMOVE THE OLD FORMS EDITOR, FREPORT,AND PRINT FORM COMMANDS Run ([Sys]CmdFileEditor.run, RC, 'RC'), & sFEdCommand, & ;CommandName [!sys]sys.cmds, & ;CommandFile No & ;Public Command? Run ([Sys]CmdFileEditor.run, RC, 'RC'), & FRepCommand, & ;CommandName [!sys]sys.cmds, & ;CommandFile No & ;Public Command? Run ([Sys]CmdFileEditor.run, RC, 'RC'), & PrintCommand, & ;CommandName [!sys]sys.cmds, & ;CommandFile No & ;Public Command? ;DELETE THE OLD FORMSEDITOR.RUN, FORMSREPORTER.RUN, FORMS.LIB ;FORMSUNINSTALL.SUB DelFile = ConcatStrings(ServerSpec, 'FormsEditor.run') Command Delete, DelFile, N DelFile = ConcatStrings(ServerSpec, 'FormsReporter.run') Command Delete, DelFile, N DelFile = ConcatStrings(ServerSpec, 'Forms.Lib') Command Delete, DelFile, N DelFile = ConcatStrings(ServerSpec, 'FormsUninstall.sub') Command Delete, DelFile, N Deassign(DelFile) CancelOnError ELSE PathDef = '[Sys]' DefVol = ClientVol ContinueOnError IF InstallType = FromServer CopyPath = ServerSpec 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 ;REMOVE THE OLD FORMS EDITOR, FREPORT, AND PRINT FORM COMMANDS Run ([Sys]CmdFileEditor.run, RC, 'RC'), & sFEdCommand, & ;CommandName [sys]sys.cmds, & ;CommandFile No & ;Public Command? Run ([Sys]CmdFileEditor.run, RC, 'RC'), & FRepCommand, & ;CommandName [sys]sys.cmds, & ;CommandFile No & ;Public Command? Run ([Sys]CmdFileEditor.run, RC, 'RC'), & PrintCommand, & ;CommandName [sys]sys.cmds, & ;CommandFile No & ;Public Command? ;DELETE THE OLD FORMSEDITOR.RUN, FORMSREPORTER.RUN, FORMS.LIB ;FORMSUNINSTALL.SUB DelFile = ConcatStrings(PathDef, 'FormsEditor.run') Command Delete, DelFile, N DelFile = ConcatStrings(PathDef, 'FormsReporter.run') Command Delete, DelFile, N DelFile = ConcatStrings(PathDef, 'Forms.Lib') Command Delete, DelFile, N DelFile = ConcatStrings(PathDef, 'FormsUninstall.sub') Command Delete, DelFile, N Deassign(DelFile) CancelOnError DisplayLine(UserMsg1) DisplayLine(UserMsg2) DisplayLine(UserMsg3) DisplayLine(UserMsg4) DisplayLine DisplayLine(UserMsg5) DisplayLine(UserMsg6) DisplayLine(UserMsg7) DisplayLine(UserMsg8) DisplayLine DisplayAndWait(UserPrompt) ;CLEAR THE SCREEN Display(Clear) InstallPath = UserEnterValue(EPrompt, PathDef) Deassign(PathDef) Command 'Create Directory', InstallPath CancelOnError Display(Scr4) ENDIF Deassign(UserMsg1) Deassign(UserMsg2) Deassign(UserMsg3) Deassign(UserMsg4) Deassign(UserMsg5) Deassign(UserMsg6) Deassign(UserMsg7) Deassign(UserMsg8) Deassign(EPrompt) Deassign(CmdSpec) Deassign(ToCmdSpec) IF InstallType EQ Floppy InstallFrom = ConcatStrings(DeviceFrom, '') ENDIF IF InstallType EQ FromServer InstallFrom = ServerSpec ENDIF Deassign(ServerSpec) IF InstallType EQ Tape DisplayLine DisplayLine(TapeMsg) DisplayLine(InstallMsg3) DisplayAndWait Cancel ENDIF Deassign(TapeMsg) Deassign(Tape) DisplayLine ;COPY FILES FROM THE FLOPPY DisplayLine IF Public Display(CopyMsgP) Run [Sys]LCopy.run, (FormsEditor.run, sFormsEditor.run), & InstallFrom, InstallPath,,y,n,n,y ELSE IF GraphicsYes = 255 Display(CopyMsg1g) Run [Sys]LCopy.run, FormsEditor.run, & InstallFrom, InstallPath,,y,n,n,y ELSE Display(CopyMsg1) Run [Sys]LCopy.run, sFormsEditor.run, & InstallFrom, InstallPath,,y,n,n,y ENDIF ENDIF DisplayLine(DoneMsg) Display(Scr4) Tvar = ConcatStrings(CopyPath, 'Forms Designer Diskette 1 of 1') VerLev = FileVersion(TVar) Deassign(TVar) IF (VerLev = '0') IF InstallType <> FromServer NextFloppy(Disk2of2) ENDIF ENDIF ;This If will check to see if we have a 3.5 floppy drive. The ;3.5 floppy will have a file called FDrive>3.5 the 5.25 won't. Deassign(Disk2of2) Display(Scr4) Display(CopyMsg2) IF LibYes = 255 Display(CopyMsg4) ELSE Display(CopyMsg3) ENDIF Run [Sys]LCopy.run, FormsReporter.run, & InstallFrom, InstallPath,,y,n,n,y IF LibYes = 255 Run [Sys]LCopy.run, Forms.Lib, & InstallFrom, InstallPath,,y,n,n,y ENDIF Displayline(DoneMsg) Deassign(SelectN) Deassign(MCF) Deassign(RC) Deassign(CopyMsg1) Deassign(CopyMsg1g) Deassign(CopyMsgP) Deassign(CopyMsg2) Deassign(CopyMsg3) Deassign(CopyMsg4) Deassign(LibYes) ;SCROLL THE SCREEN FOUR LINES Display(Scr4) ;ADD THE FORMS DESIGNER COMMANDS Display(CommandMsg) Deassign(CommandMsg) InstFile = ConcatStrings(InstallPath, 'FormsEditor.Run') sInstFile = ConcatStrings(InstallPath, 'sFormsEditor.Run') IF Public PubCom = 'Y' ELSE PubCom = 'N' ENDIF IF GraphicsYes = 255 Run ([Sys]CmdFileEditor.run, NC, 'AC'), & FEdCommand, & ;Command Name InstFile, & ;Run File ('[File]', '[Form]', '[Graphic File]', & ;Field Names '[Column]', '[Line]'), & ;Field Names Descript1, & ;Description Yes,, & ;Overwrite CmdFileTo, & ;Command File PubCom ;Public Command; ELSE Run ([Sys]CmdFileEditor.run, NC, 'AC'), & sFEdCommand, & ;Command Name sInstFile, & ;Run File ('[File]', '[Form]'), & ;Field Names Descript1, & ;Description Yes,, & ;Overwrite CmdFileTo, & ;Command File PubCom, ;Public Command; ENDIF InstFile = ConcatStrings(InstallPath, 'FormsReporter.Run') Run ([Sys]CmdFileEditor.run, NC, 'AC'), & FRepCommand, & ;Command Name InstFile, & ;Run File ('File', '[Form]', '[Fields]', & '[Form Image]', '[Output]'), & ;Field Names Descript2, & ;Description Yes,, & ;Overwrite CmdFileTo, & ;Command File PubCom ;Public Command; Run ([Sys]CmdFileEditor.run, NC, 'AC'), & PrintCommand, & ;Command Name InstFile, & ;Run File ('File', '[Form]', & '[Queue Name (default = SPL)]'), & ;Field Names Descript2, & ;Description Yes, & ;Overwrite '01', & ;Command Case CmdFileTo, & ;Command File PubCom ;Public Command; DisplayLine(DoneMsg) Deassign(NC) Deassign(Descript1) Deassign(Descript2) Deassign(Descript3) Deassign(InstFile) IF not (InstallType = FromServer) Display(Scr4) IF (VerLev = '0') DisplayLine(CopyLater1) ELSE DisplayLine(CopyLater3.5) ENDIF DisplayLine(CopyLater2) DisplayLine(CopyLater3) DisplayLine(CopyLater4) DisplayLine(CopyLater5) DisplayLine(CopyLater6) Display(Scr4) ENDIF Deassign(CopyLater1) Deassign(CopyLater2) Deassign(CopyLater3) Deassign(CopyLater4) Deassign(CopyLater5) Deassign(CopyLater6) IF InstallType = FromServer Display(Scr4) DisplayLine(InstallMsg) Deassign(InstallMsg) ELSE DisplayLine(InstallMsg1) Deassign(InstallMsg1) ENDIF DisplayLine(InstallMsg2) Deassign(InstallMsg2) DisplayAndWait(InstallMsg3) Deassign(InstallMsg3) Display(Scr4) PauseOn End :PackageName:CTOS FORMS DESIGNER :Version:s6.4.7 :RequiredMemory:150K :RequiredDiskSpace:1000 :Commands:'Forms Editor Graphics' 'Forms Editor' 'FReport' 'Print Form' :ProductFiles:FormsEditor.Run sFormsEditor.run FormsReporter.Run Forms.Lib :RelatedFiles: &Y&&&& & & & &" &C &O &z & & & & &G &m & & &>&&&&&U&~&&&&&E&N&&&&&& &n&&&&&+&@&W&k&&&&&&&5&>&&&&) Create DirectoryDelete00+(!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]^ 00!!3Delete each of a list of files.File list[Confirm each?] GWP @BhwZyCopyright 1992 Unisys Corporation. All rights reserved.Ver s6.4.7 Linker 12.2.0LO_OPU0XO[/ zoPP`?PO`O/  @  @_@_op@  P?O0!?!_" &'?6 PPRO 0S\]_O pdon 0}@В/ P 0 /o/0/`@_op/ o O !_P,G pHTUo `XaPj/n 0n/Pz@o `@O@лO_@?O0O?PO?@_?0pp@@?POp P P ` pOP@op ?(/80:=>??`@@o0A_AOC/PCEG/I0JKOLOPQUPY]]^_aP\!P\?~sP*aGP'[H(g1U"E! )#+7Y*^` 8F\0O% XQI VWe/5,_b!R] )&4BP^lzr???H -NJh   ( <      C   V$0%a%%%%&%%B%%%%%;%c%a%%%%%U$a qbK11111, 1 1 1 1 1, 1: 1 1 19 1 1 1 1!1&&& &&)&&&~8b_#5{ {bbObbb-bhbbbb b bSbtbbbbbQb\bobbbbb/bDbcb ] p ~   1 K d &     D S  ;* * * j* * * q* * * * \* *  * * * * ( * ` * * * * 50 0 v0 _0 0  f  + _   4 C v  , : V v   H V    b   ] ] B] <] ] ] L] |] ] ] ]  j  \ e  R ? *? ? ? ? )? S l B z &  > N   ) R l    S "  Y   6[] sQ '7GWgw:O%8`7 m3mZmqm`y9A4APAlAAAAAAA0ALAhAAAA[r$m$$ $ $E $P $M $ $J $u $ $ $)$v$$ GGPGC3G@('7GWgw C e ; #"`#"?#"#"#""#"#"W#"` #" #"$+$/$$$e$n$3$T.(q.(.(.(.(8.(U.(r.(.(.(.({.(0(W(((((_((;(L(((I((;(( ((e(,)1) 1)75)5)5)+5)G5)R5)})A})2ɱ2ѱ2ٱ2ᱹ2鱹2222*\****'4*C*jC*C*C*/W*W*g*Mt* **/*F*X**)*<+9+_9+9+9+9+g+g+Fg+g+g+0g+g+ g+{g+g+g+@2,,,F',',',e,Ge,_,y,3,r,7,H,0,C,c,,},,,,,,n,,$,T,,,,5,f,,,I,,Q,T,,0 , , , ,< ,s , , ,* ,f , , , ,K ,a , ,,,{,---l----v-------+-B -{ - -! -T - - -k - - -1 -g - - - --.&.a..... ./J/-J/hJ/D/i//y/.//+ 0F 0f 0 0 0[0U[0[0[0[0[0[000;0000=1P1,.12;1`;1;1;1;1;1;1;1>?%1&{Tb * 0  ]  ? S X l BMhs?,mu(R$aGP ]!! "#""8##Q$r$$$$&&&&/'4''.([((((,)1)5)}))))*0*4*=*C*W*g*t***+9+g++,,,',e,,,,,,-../,/9/F/J/S/Z/p/u////// 0?0O0[00011.1;1Z1AA!CD!27<Ag&Fd JW]e '????[?m?? ??9?? ?&?]?r?S?9Nio+1Pms `Yj*;_$X|9?M?`zN&,NBH`y/Po5) $ x L J ? )?Qu9R5,QHNqw>2+tz#VB 3  (-2EKy R(.TZ)/X^8>IO_e39bhBHSYio   ' 0 Q W a p u         m s       ! 0 D T Z m s            X x }        !5_dr|8v,<OXq 8[d%%%%%%%%%"%5%;%\%i%n%}%%%%%%%%%%%.%V%v%%%%%J%a%p%%%%%%%%% % %1%H%N%%%%C%k%%%%%%%%%%"%'%%T%t%%%%%%%,ty]j-AjF1K1W1z1111111111 1)1?1S1f11111111 11/151Z1`11111111#121E1R1X1]1o11111111"1(1-1c11111 111$1=1o1u111111111Z1`111111 111M1111"1d11111? 1~ 1 1 1 1 10 1 1 1 1 1 1 1 1! 1@ 1Q 1` 1 1 1 1 14 1B 1Q 1BS{*&0&:&i&&&&&(&<&A&&&P&d&&&&&&&&&m&x&&&&&&&&G&a&z&&&&&&&@&H&&&&&&!&.& *PXm!! I.4>Jgpu CuNSX]+0Lpv{88Y{#{({={R{X{{{{{{{4{{{{){{{{{{{G{M{{{{{{{1 { { { { {4 { { { { {4 {p2bbb b%b1b<bNbWb\babbbbbbbbbbWbbbbb5bpbbbbbbbbbbbbb(bEbJbbbbbbbbbb,b1bIbsbbbbbbbbJbPb|bbbYbdbwbbbbbbbbbb7bLbkb0XN>qQ%\I~>Ai7     p v {  W ] h      # 9 Y s y      E        $ L [      L V C* * * * b* h* * * r* * * * d* j* * T* y* * -* 3* * * d* y* * * \* b* * * * * * : * @ * * * " * Q * W * * *  * * * 0 * h * * * * * * * * 0 0 B0 o0 w0 0 0 =0 0 0 ~0 0 ?0 g0 0 0 ) F e w  ' n |      3 g w    < K [ ~ % 4 B c i v |    ^    1 7 P ^ 9 R \ m          " 5 ? ] p        % > H d w       9 9] N] ] ] ] ] ] J] c] x] ] ] ] ] D] X] ] ] ] ] ] '] C] c] ] ] ] ] ] ] -] D] ^] r] ] ] #] :] T] h] ] 6] ] ] $ 7 = Q ` s y 9 d n      A G r    @   (.>-.>2.>7.><.>A.>F.>K.>P.>U.>Z.>_.>d.>i.>n.>s.>x.>}.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> .>.>.>.>.>".>'.>,.>1.>6.>;.>@.>E.>J.>O.>T.>Y.>^.>c.>h.>m.>r.>w.>|.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> .>.>.>.>!.>&.>+.>0.>5.>:.>?.>D.>I.>N.>S.>X.>].>b.>g.>l.>q.>v.>{.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> .>.>.>.> .>%.>*.>/.>4.>9.>>.>C.>H.>M.>R.>W.>\.>a.>f.>k.>p.>u.>z.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> .>.>.>.>.>$.>).>..>3.>8.>=.>B.>G.>L.>Q.>V.>[.>`.>e.>j.>o.>t.>y.>~.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> .>.>.>.>.>#.>(.>-.>2.>7.><.>A.>F.>K.>P.>U.>Z.>Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1\ Z1d Z1l Z1t Z1| Z1 Z1 Z1 Z1 Z1 Z1 Z10Z1:Z1DZ1r2r2r2r2s2s2 s2s2s2s2s2s2#s2's2+s2/s23s27s2;s2?s2Cs2Gs2Ks2Os2Ss2Ws2[s2_s2cs2gs2ks2os2ss2ws2{s2s2s2s2s2s2s2s2s2s2s2s2s2s2s2El  s lZ1Z1Z1Z1 0 F  F   W  T     < b   ) 9 X       ) @ P s     [ y # B R r % A u * C \ k : a   )   8"Gg->]sD  i     e {  Lf-)`&,M"spsssssss6sEsesssss+sKspsssssssss/s=scsqssssss^susssssss-sss s9@K\r0/6P[biv ?R?g?n????????)6O^k .P_r9HVcv:Uh{ .<Ikz"5B !8Zu";HU~0KXm . p       G  ,!,C,P,a,,,,,,3,F,Z,n,,,, ,-,E,Z,p,,,,,,, ,2,M,^,,,,,,, , ,5,^,y,,,,,,, ,5,@,,,,,,,,$,M,X,,,,,,,,%,,,,,,,,, ,,),6,=,|,,, , ,O ,y , , , , , , ,2 ,? ,V , , , , , , ,? , , , ,! ,\ , , ,| , ,L,Z1Z1Z1 Z16Gfw(4B]l=^6BZt:X'E +q1u 5  )07KZah| %,@GNbip0Z14Z18Z1<Z1 EM_jr@Ne22"]yuu1u;uWuxuuuuu;uHutu!uEuu uIuuu u u u u uh u~ u u u& u((J(T(x(((ORR0RORvRRRRRRIRtRRRRjGW7c^r0kZ1Z1Z1L J,DV/dvPkS w    V  r (/ahLb~(=l0i1@KZjAA AAAAA"A&A*A.A2A:A>ABAFAJANAVAZA^AbAfAjArAvAzA~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAA"A&A*A.A6A:A>ABAFAJARAVAZA^AbAfAnArAvAzA~AAAAAAAAAAAAAA" q9rT+N5h%R/|(=NI]t|1GOT| &1^f|.9Z1'$$$&$d$$$$@$W$e$$<$z$$$h${$$F$$$$$$n$$$$$R$$$1$I$g $" $i $ $ $) $ $ $c $ $ $ $R$p$$$$$$$$\$$($/$A$L$W$^$e${$$$$$$$$$xaaaaaRaaEaa=aa a]aaa$aHaYaaajaEaaaa a a aQ a a a a@ ar a aO a aDaa$aKasaaaaaa+aNaia}aaa a+aMawaaabaaaaa3araaaXaaa2apaaaaaaaDa[aqaa{aaaa aRafaaaaaBadaa+aa&a7aJaWaGGGGtGGGG1GRGtGGGGG$GBGGGG9GO<&!Xw!Eh2CXm#B=\  : y      / d s      b t       ! 0 B c r      # A _ v   X~Dz>pU~F>CycPPfPP@PPPPPPP PPPPP#P`PtPPPPPPPPPEPPPPP P P! PA P] Pe P| P P PO PW P P P P8 PxZ1@Ly)5AIaAB{D.9Pz    H t       - M `  x   1ys~% 2W,-o%0A~Y"@`(Gx6UkC_>/]yq 9  M    w   & t     > M ^ !!! !!!#!2#"#"#"D#"`#"#"#"#"a#"#" #"#"#"#"#"#"#"[ #" #" #" #"B #" #"Z1"F"Z"f"r""""""""""" "%"D"["w"""""""""G"m""""" 8#/8#8#8#8#8#8#H8#8#8#8#8#8#8#)8#V8#8#8#8#8#?8#Y8#8#8#8#*8#X8#8#8#8#8#8#8#d8#x8#8#8#8#LQ$Q${$$$$$2$$$$$$$$2$F$Y$$$$$$$$"$`$y$$$$$$$$$$E$$R$r$$$>$m$$$*$$$$ $-$:$\$}$$$$$*$W$$$$$$/ $M $| $ $ $0 $O $e $ $ $ $ $/ $N $d $ $ $ $ $; $Z $p $ $ $ $ $G $f $| $ $ $ $$5$`$$$$$$x$$$$($H$$$$0$$$$9$a$w$$c$$$$=$a$$$$n$$$$&b$&$& $&~$&$&$&$&$&,$&I$&.&&&&&&+&&&&&A&د2ޯ2⯹2222222 22222"2&2*2.22262:2>2B2F2J2N2V2Z2Z1Z1Z1'''.(.(.(A.(.(.([([([(z[([(7[(?[((>(((($(g((()(@(f(}((( (p(((,(((((((((((U(,)s5)})))>)x22222222)DZ2=)ϱ2k)ױ2)߱2)籹2)ﱹ2#)2Q)2) 222222#2'2+2/24282<2@2D2I2M2Q2U2Y2^2b2f2j2n2s2w2{22222222222222222²2Dz2˲2ϲ2Ӳ2ײ2ܲ2ಹ2䲹2貹2첹2222222 222222#2'2+2/252:2#)Q)) )~))})))s)))#0*g4*=*A=*2,2*8*T*r***3*i*n***!****5+++9+A9+9+9+9+m9+9+I9+lg+g+*g+Pg+tg+ g+og+sg+g+g+6g+g+g+g+g+g+,C,\,,,,,',Q',`',',',b',%e,Ne,e,e,Ie,,a,,,,Y,,,,,[,,,,-,,,,L,c,B,,, ,g,n,,y,,,,a,,;---A - - -O..Z1"Z1......9/ S/S/"p/u/`u/9/Z/0/3/// ///3/z//9/k/F 0 0?04O0uO0O0[0R[0000!00y0000,0b0Z1Z1;1PU츯P ]U츯P ]U츯P ]U츯P ]U츯P ]U츯P ]U츯P ]U츯P ]U츯P ]U츯P ]U츯P ]U츯P ]U츯P ]U츯P ]UL,PFPP( PRPPFPPP/P(Fsd@jBNr:WPFP<F tF 29FvFNv@FF@PPFP<F tF 29FvFNv~FFFPPFP<F tFNvkBFFjBPPFP<F tF^Sv@Ps@PPFP<F tF^Sv@Ps@PQ>@u>jBtF,QQPPP(щNVFSRQPP<F tP*P(PQsF^ NRPQPFPPFPP0FP*P(PQ~u P ~u ~uE~uPP0~t*>@t FPP>jBtqJj]U] UпpWPFP/P(FR?T?&V?\?^?v&ލX?Z?FHN;rH؊Fͱt0v̵$u+JVtF  ˆFFu]U]UdFFtFF4:Fucb?F$t@FNNNNF"̋u+JVtNr PvP#sht6FV ̊Fu+JVt݋¹؍e͉^FWVFnjα;u$:tFFFtV͉FFP S Ft:^GFWVFnjα;u$:tFF\ _ͅt:^G FW VFnjα;u$:tFFfFt'Fr FtFFvvv:FsFtvv6v^b?PVnjα;u$:°u@Y"s_UQdF$t@FNNQPPFsҊF:t:t:t:t:t:t^&F]ŮFu+JVtRF؊F͈Ft$PFP8P(F؋D͉FNs  F!]UQFP7P(FF<w$v{nFu]UFsf N F FPd]UиPd]UF$F#r)NsR?&@$FR?& t$]U$Fu+J]ŮF u+JVtGF؊F͈ND͉FtNs Ns1FtFv v{]UFPPPPXG D J Mͣ]UvPP]UvPP]UQ6FPFPP(PPFPP(]UQ6FPFPP(PȴPFPP(]UQ6FPFPP(PFPPP(]UQ6FPFPP(PFPȴPP(]UQ6FPFPP(F F ~uFF~uFF]UQF uc6FPFPP(~uF~uFG DP#F Y;u1BF DtF:Nw(F)F GtF*:NvFFJ MP#F Y;u1BF JtF:Nw(F)F MtF*:NvFFPFPFPP(]UP,&GZ&W&GZ&W &GZ&W&GZ&WSP`,]U&GZ&W&GZ&W&GZ&W&GZ&WSP`,P,]UvPPP,PP,P(P P,P(@PP,P(&G&G &G]UvPPP,]U P,]U6>^Y6> ^Y6> ^Y]U6>^Y6 >^Y6> ^Y]U&GFF&GFFFFPw FFv}FPFQN F Z;vVFЉVFFFFF FF~t}FsNNNF;ȲtBV`^Pv v^PF`^PFPv^PvvFrFFN}] U &GFF&G :Fv+F⅋X ^F&G:F v &G:F w=F ^&F N &ON FQ ^P^SP(] UX,FP|~u P, vvvFރt~؍~FPXsY^6/FڊFFFFFFFt؍"~$~F~F~uD~FFFFF@F܍~F~FP./P0/P/i,F<wNQY:rvPvFԃt'؍~FPXsF9Fu9FuUL~tF^ȍ6/^S^S^ڊPu@N:NıuA N:NƱuA rV*FF:v FuN F|PFPFPRPP>PPP(&>?FP,|F%> ‰F~u%2 ‰F=>F ~u.H/ //SPPbAPP(.%)d/SvލFP6/P4s]/SFPPvؚ4B/Sv܍FP6/P4s"/SFPPPPt4У"/$/&/(/s/S"/S6&/6(/<F t1 t,t'/S*P(,!.(,[FFPFPFPPFPI Ɔ3FPPPP{Ɔ~t(rrFPvPs/njޱ;u$:t_/S*P(Ɔ/ /PPPbAPP(/SFPPPPt4l*/FtW^tO6/NFF,/F;,/r"^vF*/@*/vFv,/uӋ^󍾸*/F t>*/tQPP1sH/njޱ;u$:ts/S*P(,ƆH/ /PPPbAPP(/SvލFP6/P4/SFPPvؚ4 P,7~ uu 4P(~uu 4P(/S*P(,FPFPFF؈FQPFFttQPFFtQPFF>>tP6*/F>ȈF FFFP6./60/WF uF| ,FFFFFFts"F܊FF:r*ƆFF:sRsJQPPPP(>u+JuƆ뤊r~s>/u P,FsvPv>f Pvv6>EFt&sF܈F؍"vFFF޹؍vFF~tF~u P,FޣF=t"]U(/C"/$/ &//SQRP^S)PFPLP0F^&t&8 u&~|t ^&?u v/S"/S6&/P^GP^&POPoFR"/$/&//SPQP^GPPFPWP0F=|u R^&vW^"/$/&//SPQP^G PPFPeP0F=|u5sm"/$/ &//SPQP^G PPFPzP0F=|uI^&G t &G uz v^&G t^&s ]^&G $^&O:v |"/$/&//SPQP^ SP^SP0F=|us9^&G^&;s^ S^&7^&w &w F t y^&G t~e^&v eb^&GdPeP^&7^ SdP^&w F={t ^&G:ds :d^&;t/&/S"/S6&/P^ S^&7PoF^&g"/$/ &//SPQPFPPFPP0F=|tLFs ^&O"/$/ &//SPQPFPPFPP0F=|tcFs ^&O^&Gt tGA"/$/&//SPQPFPPFPP0F=|tLFs ^&O"/$/ &//SPQPFPPFPP0F=|tLFs ^&O"/$/ &//SPQPFPPFPP0F=|tNFs ^&O@"/$/ &//SPQPFPPFPP0F=|u0 cFs ^&O ^&G"/$/&//SPQPFPPFPP0F=|t~vT #^&G t^&GFHF=v+ F^&G"/$/ &//SPQP>PPFP P0F=|t>"/$/&//SPQP>PPFPP0F=|u P,>^& G> &G]U F(/!"/$/&//SQRP^SPFP(P0F=|tI^&?tF+"/$/&//SPQP^ S=PFP2P0F=|u^ &?tF5"/$/&/ F>FFFwf/S"/S6&/P^vP=PFP?P0F=|uFr F(/F^v&8tF>FFFuFssB"/$/&//SPQP./PPFPJP0F=|tP>./wIFQ"/$/ &//SPQP0/PPFP[P0F=|t>0/v P,)FFs ^&O^&g^&G]Ulb"/$/&/ */F>vFFvN(/vF u!N ;s<vN򤍆Pv^ &w &w F t Y^ &G td<F PPvPP^ &w F={t F :s P,;Ft+F/S"/S6&/6(/QPlPoFF t->^6*/&^6*/xNF*/@*/v@FFt] U~ tY>*/tRv"/$/&/FF~wF^v&F t%N ;w^ S^@PQuFF@FFu] U,6jPkPP(6hPiPP(ƆfƆgj:hw3Ɔhii8kwgs  P,yƆgƆilPhijPn<t<uPfrHahbicmdƆePQRP(aP,|]mhƆf>U,i,s>u  P,RPQRPQFPPFPPdFi,|ZYs,XYPP[YP\YPP("XYPP[YP\YPP(v FPP8P(XYP<vP8P(,s+FPPFPPRPQRPQdP(]UQQ,i,FFF;s:s^7wwf  ^7wwPEFF뽋]U:N FȈNϊV NшVΊV*ЈV̊F*F͸FN^N"NFˋF;r]v~F"F^Ft'FFFVFV~FЈFɊFPFFY8Nv8FsNF8Fv:FwFrFFPXs$뿊F:Fv@FȊN:NʱsANrrFsFFFsFFʊF:Ft F:FtFF:FwFFF*FFFF~s9FtFF؍"vFF؍vFFFNFNFr~v,Fs  P,FF"]U8F u8F u ~uZ6hPiPP(PF ȴPF PfPF ufuƆgƆgPF PF PgFP|P(sPF PF PF$PF PF PF$?PFPP(FF F :hrQPF PfPP(g:fuYguƆgƆgjPv v hPPF PF PgkP|P(km]UF FFF؍F^~tbNF+VFV~FFPFFY8Nv8F sF:FuFrFFPXsɋF]U^8u 8GutP^kGjkj:sBlRQ^wPPn<t<uk^m^Gmk벰^G]U(>eYv P, cYXYFPeYYFFFF؋F;eYr^^GXY‰FGtRGF^^t‰F؊F@F^GtXYF؊F@F^GtIXYFFF*/O>,/>;,/r^vF*/F,/u١*/F^G F^@F=vF^GtFeY^ȿFش"^ȿ"/FF;rr؍^8u8GuP[Y^\Y^G^GXYF؍QP^G^G XYPG P^G ^GtgGFٱ؍"^tXYF؍QP^^GtXYFދ؍QP^G^GtQXYFܸ*/O>,/>;,/r^܋6*/@*/,/uދ^GXYP6*/^Gs^7wwG%f ^7wwG%PEFs :,:,s,]UQQ/tF=v/(/F؍6/^vNNFȉ/]U,Ɔ5PPPFt>>>>">>>>>> >>> ???*?<?0F؍>"؍">"Ɔ5-F؍>>؍">vs#FPFPP(PP(FP||i,PP@WPP(F^ NRPQPhPPPoP(F^ NRPQPjPPPoP(????????v>5?򤠏s+5?PP=?QQ;RP6PQdP(FFw*WEWP^ B?Q PP(Fuθ(?5?V0*?V ,?N.?0?ď?NF؋?FFP9P(vskFPFPP(&G 1F&G 1FPP(vvyP(vvPPP(FtuPPPP(F u Fjuu[F T`uMF9vF F9sFvPyP(vvPPP(~ u$0?㋇ ?;(?wLJ(?30?(?'~uX0?ヿ(?t(?0?㋇ ?(?>0?t-*?#,?#ѱ‹.?(?5?~ tN0?@0?wOFڹN^ VSQRPhPPPoP(P^SvPMPP(ƆsPPPP( tP^SvPFP PP(P^SvPhPPFPP0P(P^SvPhPPPoP( Ftu:Ɔ6u"uƆPPP`ű;Fv h@%h;Fs hH%hPPPP(P^SvPhPPPoP(vvyP(vvPPP(rP^SvPUPP(FڹN^ VSQRPjPPPoP(P^SvPMPP(ƆsPPPP( tP^SvPFP PP(P^SvPjPPFPP0P(P^SvPjPPPoP( Ftu0Ɔ6u"uƆPPP`ű;Fv j@%j;Fs jH%jPPPP(P^SvPjPPPoP(vvyP(vvPPP(rP^SvPUPP(0?0?ć?FF0?㋇?FtFttvr4RP*P(s-;PP6PPRPQRPQdP(,~tFFw؊5?> ʈ5?Fuݠ5?"h#ڱ â5?6?"ô>h# Ǣ6?7?"ôh#ױ ¢7?9?"ôj ¢9?:?"ôj# Ƣ:?";?#ױ ڈ;?5?>>؍">Ɔ5FtuKs?s6i,XYPP[YP\YPP(P9P(5svs5vvyP(PP(vvPPP(FP,|]U s%5?PPRPQRPQRPQdP((?5?F%0*?F% ,?F%.?F~vF^F9 ?r+Qvļ?W?PUPP(FuNjF;0?u#QĿ?W^?(?M"P^Ŀ?W^?(?SPP(FtW]U,Fi,ZPPPPP(PPPP(P9P(PFP6P(~ uyZP*P($PPPPP(PPPP(P9P(PFP6P(P9P($P9P(ZP*P(,F]U@sU>@t .APP@s'|CrdAS6hA+FCjBPQwFaArszri,.,Fd P,FPF PP S#F u@PvF<u,Fsr,,Fb~t 4P(률s)|CrdAS6hA+FCjBPQ>@t .APP]UFaArszri,.,F P,FPF PP S#F u@PvF<u,Fso,,F_~t 4P(률s)|CrdAS6hA+FCaA@@@@P]UQQ~lNt+JVu^&^&F@;Fr^vPj SPFu ^&(^vPr SPFu ^&Y^vP SPFu ^&/^vPz SPFu ^&| ^&]UQQ^&u-^&tr "^&t ^&tz j FFv~^Y^&]UQ\ _ͅFtFP SͅFtFFvPP~]UQ\ _ͅFtFP SͅFtFFvPP~]U>FP+,s6FPFPP(6FPFPP(^ .FF1N FFȴN+ȉN^. 5FF1N FFȴN+ȉNFN|2FV|&FFN;FFŠN;~ P,FFr~u~~F ~}FFNQNVRPQvvPvOr> rMPPFPNQFPNQFPFPF$PIP(Fs FPxFsFPFPxFFFFF:FsКPFPFPWPFPQPP(FFȴN;r Fu暢FFFFFF:FsbQFPFFPvWP|P(PFFPFFPvPP(FFFFFFFFPxFP,|PFFPFFPF]UQQv P S#F u@Pva?\ _ͅFta?`?t9>a? t/#r+>\?`?V?u+JVt X?&a?c?s >a? ua?F#Y u@F6a?v\s Frd?4P( ]Uv v F S PPv]UFPF _v v vv]UQQ6&FPFPP(*F:Fs6&'QQ6)P\4P( ]UQF#Y u@FP\s Frd?4P( ]U\sd?4P( ]UFP+,r3vsPP(FPvsPP(]Ub?v P S#F u@Pv`?]U`?]U FP+,sv Pv,aFFFFFF:FrswFFFFF:FrNQPFPRPPFPPP(F$ FFNQNQNQPPP(F땊FPFPFPvFPP(FK]UPg]UPg]UPg]UFP+,svsPP(~uvvvvt~uvvvvNtP(#vvvvvtP(FPxvsPP(]U,c?6FPFPP(sbAFFF:FwFF8FvzQPFPFPP(c?s~ uPFPFP!c?r*~u$PFPFP PP|P(F~Fii,]UQ^GFGFF8FvR^QOQPPGP|P(^PGPFPPGPP(F릋]U^7wwwt^7wGGPwt^7wwwt^7GGPwwt]U6FPFPP(&:uF:(uF:*u|,i,| ,~uF~uFFFFPFȴPFPFPF u+F:r:vFs~u~uFN밊FFFPFPFPFPF u+F:r:rFs~u~uFF6vvvv\d?]UQQd?t@(*ȈN:(v)*)*(F6(*PvPvPPPOF(d?]UFP+,rvsPP(~uvvvvvt3~uvvvvvtvvvvvvitP(vsPP(]U PP?QP?PFl?PP?PlP?P,F^?&8w^&k^&?t ?r?Pt?PP(>r? r,PP?P?P?P؍?QPEP(?1?>n?f?&?u,? ᾕ@z?9򥾵@~?>?9@s 4P(sPP?Ph PP?PP?PFP?k*1P?P^GPQ,F!@r? r s1\]Ur?Pt?PP(r? s s0DPPf?P/P(PPj?P/P(f?&G"Ȣ??rGO ??f?&O ??&?j?&Tf?&G"Ȣ??rF&Ov?x?f?O ??f?&O ??&?v?n?p?f?&G#??s?>r? r'QQ6??QP؍?QPF$P(?1?6n?Ff?&?uT&Gz?|?f?&G~??? z?0@F~?6?0@F]U !F^&G FF&GtMv&D &D ^&gȋ^FF&Ot^FF@P!!r@P!]U"F ^ &G FF^ &G &G v&dȋ^ FF^ &GF&Gv&F^ &G&DF&GF&GF&G u&O ^&G $^^&GF&GFF%ĈFt^&G^&GFPPPP(Fs:^&Gt^GPdPfP/ dfdFFPFPFPF% FPFPP(FFFI@FsFFP5F t s> s7!r0F^߷t":u sP 4P(FNrIsIF:Ft:F;~u8^&G#t tv&|u ^߷^ Sv ~uHТHWP8P(^߷":uF:FuF%F ^߷":u~uFN^߷tNu^&Nߵ^&O^&GF^&GF^&GF^&GF|^tF:uIe^߷^tP LLFF^ S^&wFPPvᚢF@t.@P@P34@P.AP4@P.AP FPPPP@tP P(@L@tP P(@MPP]Uz,i,PPPbAPP(PNP PP@P3PXPoP(ЉFVFP^SvP<F tP*P(,[F^ NRPQP@P3PFPeP0F@lNOuI@@PFP34@PFP4~|t@PNQ 4Y PNQt 4Y s P,(P*P(,aAFPFP F]Uz,aAr ri,PPPbAPP(PhP PP@P3PrPoP(ЉFVFP^SvP<F tP*P(,^uF^NRPQPFPPFPzP0F=|u0 FrF^ NRPQP@P3PFPP0F@lNOuI@@PFP34@PFP4~|t@PNQ 4Y s P,P*P(,aAFsFPFP rKs+mPPuPPRPQRPQdP(@t P P( ]U,i,~P|~t@@QQPbAPP(PP PP@P3PPoP(@@@PP PP^S3PPoP(@ t0=t+PPPP@PPPoP(@ t0=t+PP PP@PPPoP(FrEЉFVFP^SvP<F tP*P(,F^ NRPQP@P3PFPP0F@lNOuI@~|uJ F^ NRPQPP3PFPP0FlNOuI@PP34~ytu#@PP4F^F ƆƆ~|t@PQ 4Y s FF^NRPQP@PPFPP0F=yt =|t>@u@ >@PvF^ NRPQP@PPFPP0F=yt=|t >@t@P*P(,@@򤸼@PPPRPPrmPF tL P,@@@@&G ;@rf P,d.A/A6@PPXYP PF=tu ~t& P,@@@6@ P(@s@PP, 4aA6]Yl>@u*&G bA*^Y:r*´1@@>@t@XYPP6@6@F>@t@>@t@~wuFsF,P,r # P,-P[YP\Y^YȴPP(c?i,]U s,FPFP^SXYP[ F t P,W P|,ZYF[YF\YFZY[Y\Yv^SPSXYP6XYlP(FZYF[YF\Y~t|^Fx68<Fv^GPF<PRPPP(v P(v^GPvRPPP(v P(aAb P|,]Uv& F%QQRQP=t3^ SPPRPPmmP t=68<<^SQPRPPmmP+<6BF+<Fu+QPRPP tXEuw^&7 u`^&7PPRPP;u0^ &^SPPRPPmmP]UQ߈r P,-&G FP:vNFvv&w ]UP,&GZ&WS&G P`,]U&GZ&WS&G P`,P,]Uv&G P&G P,]Uv&G P&G P,]U] U] UQdAS6hA+FCCsP*P(C,sVnjޱ;u$:t ^S,]UQsM%|shAPdAP*F t mP,{CRQPRQPjCPPIYPPdFrCFjCPPIYQQCRPNYPQdF=t!uPCF tP(9 F]UQQCs kBPjBPRPPrmPdAShAPdF=upjBkB.OtINujBF^kBFjBkBRPRPPrmPdAShAPdF~uA~u5~t~u "~u~u. ~uPC F tP(]UQCr6CPPNYPPRPQRPQdFPP(]UHFP4P(F<t<tFPPP(~s PCqCr>jBu[@tTȾ@jBjBkB.OtINujBF^kBFjB,Fi,PPPbAPP(C"F^ NRPQPjBP3P+PoP(FFsP^SvP<F tsP4P(.F^ NRPQPjBP3PFP7P0F=|uF tP(>jBt~u P,FRJCrP*P(C,jF]U FWPP/P(&G F&G FFFFȴ;Fr9FFȴN;r!PQv^CPFFFuFuF FFFFFȴN;r,PvQ^CPFP,FFFFuƋ]U8rl |r P,t|FPPP(~u FȚ F ~ujCPPIYPPRPQRPQdFȸsPP S#F]UP,&GZ&WS"P`,]U&GZ&WS"P`,P,]Uv"PP,]Uv"PP,]UQ&G FP:vNFvv"P]UQQ,i,|sF:]Ys P,4]Y1F[YFNN 1FN:sN]YN*V*:VsVF*FN:wɈF*FN:v:vPPMP(,vv,ZYXYPPF*FP\YPP(F6PPPP(P,|i,PPMP(vvd]U &G :Fv+F⅋X ^F&G:F v &G:F weF ^&F N &ON &WVF&g &WFF u ^&$ ^v&^&] U~lNt+JVt!^vPZ SPFu ^&@j^vPb SPFu ^& @^SvFPP^SP u Fw u|F^&^&]UQ ~N^&@uE^& t b &:^&t'2F^SvFPP^SvZ &^&F^&]UQQ~lNt+JVFt.^&FA:r&G PfF FfF^^0^9N^YFFNT] U,i,|s-&G FP:vNFF:]Ys P,Q]Y1F[YFNN1FN:vN]YN*V*:VsVF*FN:wɈF*FN:v:vPPMP(,ⅰ&8G uvv"P,ZYXYPPF*FP\YPP(F6PPPP(P,|i,PPMP(PPPP(]Uⅰ&8G uvv"PP,]Uⅰ&8G uvv"PP,]UQF]UQF]UQF]U&GFFFF&O ;rFF&O ;s}&G NPFFV F Z;vFȉNF FFFFF FF~uFsQFHFNIN&G PF FfF^^0^9N^NNOOYFr>&G PfF FfF^^0^9N^YFFNT] U P,]UP,&GZ&WS&G P`,]U&GZ&WS&G P`,P,]Uv&G P&G P,]Uv&G P&G P,]U &G :Fv+F⅋X ^F&G:F v &G:F wGF ^&F N &ON &WVF&g @F^&^&] U&GFFFF&O ;rFF&O ;s}&G NPFFV F Z;vFȉNF FFFFF FF~uFsQFHFNIN&G PF FfF^^0^9N^NNOOYFr>&G PfF FfF^^0^9N^YFFNT] UnraAP||,vsPP(6PPP(Ɔ:r:bAuu., P|,ƆƆ:sZQPPPPQPP(utu뜊XYuƆcYXYXyeYw6XyȿZydžs;s+؍Zyڅ܅uƆƆˊsssƆsƆ sƆ.Edžs;s3؍Zyڅ܅uSP P ƆÊsjreYHs؍Zyڅ܅Ɔtڅ+܅څ܅:sBڅ܅څ܅څ+܅څ܅6څtƆƆ[eYs؍Zyڅ܅Gdž;s:؍Zyڅ܅G:tSP P Ɔ뼡cYXYXyeY>XyȾZyr # P,r&,P,|vsPP(]UPF PF PFPPNQPP(c?s ~uF Ft<t :r :sFFsF$F$ F^F^GFN F:NrRQF PFPPNQPP(c?s ~uF FsF:FuI~u5Ft<<t8:r:r,8Fu8Fu FF^@F:FuF]F^G] UFXYcYFeYFF9Fv#^؍PQ: FFՃ>XYtrFFcYXYFF;FvQ^Gt>GXYuFcYXYFF;Fw^?t[Y(^t\Y(G^G8G vG ^w6/FF_ 6/NFFcYXYFF;Fw9Ft9Ft~u'^GXYFS^S^Pue^Gv#D uPP7 P F>^ÃF^Gv;tPPg P F^GF^GuE9Fu=O v:L w2L XYNO v^t+J;u ^G FFF~uB^PP: F^G t#GPP: Fދ^GPP: FދF^G~uI^P^G P: F^Gt(,^G+,QP: F܋F^G ^GtG r5PPPP&G1P^FRPPPPPP(&G16>^YPPPP(/]U/]UPPPP(P,|&?u> r;PPPP&G1P^FRPEP(#&G16>^YPPPP(s88/PPMP(vsH6ޅ6yP(PP(PP(6ޅ6PPP(]U ,|,&G :F s"vv,6PPM PP(vsPP(]UsFP||& uJ& u6SPPPP(SdPPPPPkPoFFP,|]Us-FP||S*P(FP,|]U>t bA:w bA:v, ]U\Y:bAr.,s#>@u>XYvS@PXYP4]UsSSuPPPPP(SxPPP^GP^&P{PoP(]U P|,]UQ^S|,sLs#SPPP SPPPPP(4F]U PPFP/P(>u &G &G FFFFFFHN;r)F^&Z&PFFNFNFű]UFsP ,P(0D1\P ,P(]UQQF s FPFFvvPPFPJP(/P(vP,P(vv,6PF1PF1PP(6|aAaAi,PPMP(vsPP(]UQvvPPFPJP(6PPvvPPPPPKP(RPvLP(>uPPP/P(&G慌]UQQ^SPPP^ GP^ &PPoF^SPPP^SPPoF^SPPP S6 PoF^&GF^SPPPFPPPoF^&GF^SPPPFPPPoF^SP PP^G PPPoF] U ~t(^SPPPFPPPoF^ &Gt<^&F^SQ WWv &t^HQPPoF^ &G t5^SPPP^ GPP PoF^ &Gtf^SQ WW@F^PPPoF^S$P PPv &tFv^@PP-PoF^ &F^S4PPPFPP;PoF^ &GF^SBPPPFPPJPoF^ &GF^SQPPPFPPUPoF^ &G% u@F^S\PPPFPPcPoF^ &G% u@F^ShP PPFPPrPoF^ &G% u@F^SwP PPFPPPoF^ &G F^SPPPFPPPoF^ &G F^SP PPFPPPoF^ &GF^SPPPFPPPoF^SPPPv &| ^P^ &G PPoF^ &G% u@F^SP PPFPPPoF^ &G%@ u@F^SP PPFPPPoF^ &G% u@F^SP PPFPPPoF^ &G%F^SPPPFPPPoF^ &G%F^SP PPFPPPoF]UQ^SP PP^ GP^ &PPoF^S(PPP^SFP/PoF]U~uq^ &t;^&F^S9QWWv &4^HQP@PoF^ &Gt<^&F^SJQWWv &t^HQPQPoF^ &trF&ONFNF;rV^ &wN^&V^S[S WP^ &Gȋ^@PRePoFFF@FFu^ GPFPFP/^SoPPPFPPwPoF^S~P PPFPPPoF]U^SPPP^GP^&PPoF^SPPP^ GP^ &PPoFFFFwB^v&N^SR WP^@PQPoFFF@FFu]UQQ^N.u+JVNAv~u<^vx^vx6  FF @^]UQQ^>OtIANQX+ȋx.u+JVu FFFF+F^^S^vp[]UQ^>OtIANv^w^~y]UQQF^NtvF:Fsl^@F>jnu+J;u?>u+Ju'<0r<9vF<_t<.t<]t<[t <tF댰]UQQF^NtaF:FsW^@F>jnu+J;u*>u+Ju<0r<9v ~_tF롰]U4FP:F u>~uF^S^ Svv{F^&G FNt;ryAP9F uF FF^&G F܌Fދ&WRY;t9&8t2&8Gt,^SvFPFPfF=uF뗃~u~u^Svp F urۃ~u~uFFNċF t t tFsF@F;FuF똃~uF ~uF 9Ft 9FuFF̴P9F t4P(FFF] UF^&G F t#H&G ^ܰ8u 8GuFHFF;Fr FFP9P(F^SvFPFPfF=u+F~u ~uF FH;FwFrC ~uF~t^SvFPFPfP(,~u^Svp b~u=F uFHFF^&G ^ܰ8ut8GuoNujFHFaF t t t FrF@;FsFFF^&G ^ܰ8u8GuF@F;FrF^SvFPPFPP%P(FP|,FF~t P,FFuF^&w F܋F9Fs8^Gt%OE^&G Q^^GFFP9P(]UQsP*P(,s&6 P( SP+FsS6 +FsVnjޱ;u$:t ^S,]UD\ _#F]U,FP|~u P,p>ub@tTȾ@.OtINuF^Fi,PPPbAPP(F^ NRPQPP3PPoP(>t2s+PP PPP PPoP(FFs P^SvP<F tsYP^SvPP3PFPP0FlNOuI~|u>t~u P,zF umFF^RPvQP PFPP0P(F^QPvPFPPFP P0P(PPPPPrmPF=ug.OtINuF^FQQPPPrmPF~u~u2P P*P(6 SFP$F tF &?GtF SP+FF@% PP*P(6S6 PPFP#P(6 P(FFNr s PFF긒P*P(,F:bAs,FF9Fr&8 u& FuFFsFF)FFѴFƆ9F9Fv NNӵ;Nw8 Nu+JVuFFFsnFFFFFN;vQ&8 u,F؉Fֹ1+ʉNԋ~؍: FFHFv&v؈:FF뢋Fv0:N6FF܋F܉FފNҵ;sNƆ9PFдPv䍆:Pvޚ,P(NFANN+INFF;FvƆ99sFssF^ ,^SD]UQOsLSR~uHTQUQVQPWP|P(OsUWs~tU:XvcTPUPUPVQX*ȵQLP(Y8XwRSTPXPVPPP(>up^<t.u PmOsXƇ # TPXPVP6P|P(~ u U:Xt~ uZ:XuQs ^S=L~ u XXXtȢ[ X[RSR~ u[TPUPVP$PWPP($WOuIUAX:ZuXXXUZȊ:rPTPQVPPP(>t$tȢ[U:[v[[Yu]UQ~ t[IHs:Y8Uw_uU:Xv^S=LTPUPVPPP(t>^u< t>^uQZȊX:vDOs $TPXPVPPP(<+t<-uXU*ȈNFHsXY*ȈNFTPFPPVPFPLP(Os$F:r^FuHsYIX:ZrSs>^uU]<+t<-uJHr$TPUPVPPP(U:Xt<+t<-uHsTPZȴPVPPP(>tUU:XuU>^uNOs ؊"TPUPVPPP(<+t<-u TP|TPXPXPVQZ*ɵQLP(Os?Z*XFZFF:r^˷S^XFuN]U]uOsUnW)TPUPVPnPWPP(WȊ:r,nu+JuuǠr L^t L]@u`t >u!]":t ":u P+> u sP]^&G^&GM]UF_.U[g>KuL1Hs%UY:w4u`uOsUlW)TPUPVPlPWPP(WȊ:r,lu+JuuǠs PҴ^&G^&GM]U^.  !<P]U>_unOrYTP\PVPPP( :uuSZȊX:wOs $TPXPVPPP(<+tO<-uWIX8Us)TQȴPVPPP(>uHsHsX:Yt TP P^SL]UQQ\ȢXOsTQPVPPP(>t;<+t<-u6X8Us'TQȴPXPVPPLP(F0F~ TPXPVPF \XtTX<+t<-uGX8Us3ȴXTQSVP#PP|P(XƇ0L#~TPXPVPFPP,P(\XYKJ]UQ>_u-^ &?r^&^ &F3^&W*F,_<t<u$^ &?r&WȈF^ &;s&] U_.>KuW*F,\X*U*EX*\^&^&@0Qs^Ҵ&9GuXZ*XX*U^&]UQF tCv ~^YFF HN;r!^&<,t<.u ^v&Fuԋ] U P,]UP,&GZ&WS&G P`,]U&GZ&WS&G P`,P,]Uv&G P&G P,]Uv&G P&G P,]U F&G :Fv:&GrF⅋X ^F&G:F v &G:F w^&G :F u#&G :F uFPPPP(FF ^&F N &ON &WVF&W &g F1@NF&0T^&FsFPF PF PP(] UQF%N FFuNFtNFtNF]UⅉFF&ONF^X ^F&G F&G FPPPP(FF^&O ;rFF&O ;s}^&G NPFFV F Z;vFȉNF FFFFF FF~tWFs$FHFNINQPv vFPvrTFr vvv vFPvrTFFN룠PFPFPP(] U&G &G NF F1~#ljF~+&G F&G fF F1FV#‰FVt@t<&&F1PF1^&H&HFFNFuFtNsF1PF1PF1_^09^NNOO;F1PF1PF1_^09^YFtFPFFYNN&&F1PF1^&H&H] FsQFtHFF;FuFPFFXFHFPFHFXFF~tv&v&FuBFt;1PF1^&H&HFr FFSnNJFt@Fu91PF1^&H&HFr FFNnNNUQQ&G ;FvZF⅋X ^F&G;F v &G;F wFs&F t$^&GPf F FF&gY;v] U&G ;Fwvv v PP0TF u|PP"P/P(F⅋X ^F&F "&^F^&GF F1N^&^&F] UF&F 'F (F)F*+\] U':(r](\]U(:)r](\]U'(\]U)Ȣ(\]UQ(:)s1Fr`&P)ȴP*PFPP(~t&P(P(P*Q)*ɵQP(&P(P*PvP|P(s&P(P*Ph&P(P*PPPP(+(\]U/\rFs\]U(:)r]ˠ&P(PP*P)*(ɵQP(&P)ȴP*PPP|P(&P)ȴP*PPPP(+]U&P'P*QS)*ȵQ|P(+'(\]U+]UQ&P(P*PF t&P(ȴP*PP(]UFPFPP(~ r#xy2P(P(P9P(PP&w dw4670PP(082:vs>#r>6>J\^`2bf\P1P(]UPFPPF t~uvPP(PP(PP(Fȴ,Nɵ.RRPQP(6,6.yP(6,6.PPP(v]UQPdF]UxrF\^ u``]Uvswt Fws]@vs{FHJ)#rzFHJ jFHJ 4P$P(Fs62FPLP62FPF tv(~4t6<(FъvrPP(>{ u}F#sz>{uf}t Fw}tMFw6~6,P.P)P(P6,6.P(PP(M#rzF>nFrjh*~\u#62FPF u ~4uFъF]UNPP^&PlPFP&PlP lPPPlP6PPlP8PPlP lPP^&PlPFP&PlP lPPPlPJPPlPFPPlPKPPlPMPPlP ldžPP^ &PlPNPPlPOPPlPF P&PlPPPlPPPPlP lN;v{+ȉ;vPPPlPQPPlPPPlP^PlP lzPPPlPRPPlP lP"l]U>uCF@F^ G^ G ^ PvNl^ PvNl^ PFPNl]UQ>u(FFHN;r^ P^&0NlFu݋]U>u ^PG PNl^tu]U>uv^G FON؋FF@F^G^O^FG 9Fs^OW;u;r"^766 uI^7G PPwwFP$^GW^G^ F]UQQ>u=^tjGW;u;r$^766 uN^7G PPwwFP$ u)^GGW^7PGPP ]UQQ~uNF ɈN~tANr'vv PPPvtFPFPP tFFjs$NQN QN QPPP(vv v vPotF F :Fsns$NQN QPPPP(Fr2vv v PPvtFPFVPP tFFss'FPF PF PPPP(Fr)vv vPPvtFPFPP tFFvv vvPot] Uv v vvPt]UQQ~u}NF ɈN~tANr"vPv PPvtFPvP tFFjs$NQN QN QPPP(vv v vPotF F :Fshs$NQPF PPPP(Fr,vv v PPvtFPFFPP tFFys'FPF PF PPPP(Fr)vvv PPvtFPFPP tFFvvv vPot] Uv v vvPt]UQ~ t~~txvvv vvtF u`vvv v vtF uEvFF Pv vvtF u$vvF FPv vtF u] U~t~uF FF F:FroF FF FȊN:rUFPQFPFPF u=Ft@]U8u^^G^G^Gf^:w^G*^G*^G:w^G*^G*^G]UFP|^~t+JtD^?u|5P|^GGGGȢGGȢP|]UP|P|]U >uvsPP(FP|FFFFF:FsyFFFFF:Fs_QPFPRPPFPPP(F4FQNQNQPPP(FFvsPP(]U > s>&G :Fw]F⅋X ^F&G ^ &^&G (FPFPFPHDF uF^ &F^&] UN F;t t t5> rP4P(>uFFFF9F w9FwF9F wNsR&G慌^;u$:t'FPNFQNQ^PT%FPNFQNQ^PFF ubF9Fv)NQNQNQ^PF u1F&FPvv^Sv ^SvF$F u]U&G ;Fv;F⅋X ^FN F&W;rF ;r &G;Fw^> r!FPPv FPv PvPPI6^&GF F &ON N &VVvWQRPR] Ubvv v ^SPvvv^SvX~N*V^FFu*:u$&%Āuub]GtF։N+~v~u:Ft;tVQRPP^ Sv+RV RF+WV #uiXXZY^#uvv^Sv v !vv v ^SN~vOG&uu^Svv<b]n]Uvv v ^SV$ڱˀ Êˀ ÊڱÀ ~&] U3&Gˆ&GĈ&G FNF N ^N;sH-.&nPQVWSS6ˆ2;[PQVW_^YXKu[_^Yƙ66ޜ6&Ǚ66XR6&ZS6Ĉ2;[XRQVWPSGt$&-t &3uu3[X_^YZKu] U>ވu=u].] U>ވu=u].] U>ވuz=u].]U>ވu_=u].5]U>ވuD=u].Q]U>ވu)=u].m]U>ވu=u].]U/FP/P^ш=ty~uW툉ሌ %A57]QSymoFP4~u~uM~ut~Ԅt ~ԒuF8Fc*刉ሌ957UQSqmo~~tZu刉ሌ-I57eQSqmo~u߈~t߈ሌ1M57iQSmo刉ሌ )E57aQSqmoU鈉ሌ!=57YQSumoވ]UFPFPF uq~ r-FPvv ^SvRPPF$F t=>FF9Fv.NQNQN Q^PF uFʸ] UFPFPF u(~ r#~ sUPPFP/F um^&G :Fw\F^X ^F&G^ &^&G(FPFPFPG F uF^ &F^&] U~u8vv vlPvF uvv vlPv,F] UQQ^S^Svv{F^SP^ S^Sf]UQQ4P(FP5F u ~u޸]UF^&uxFt ^&O I;syoF^&G FF^&G &G v&dȋ^FFF^&Gt&^&tF^Sv^SFFs^&GT&Gv&U^&G&DV&GW&GF$^v&t 0$WFF%Ģ`tD^&G^&GFWȊ^:r$t < t ^&GFuظ`$u@Os;^&G &G ^0UWFFs:^&Gt^GPdPfP/ dfdFTPUPVPF% FPWPP(UXWZPJKLIN@ ɱuAQN ɱuANSRFP7P(F$u@H^& u&O @^&G u&O ^&G $_&O "ʈ^u&"W V^ &FFPFPvLM>MtY _.u{>Kuw8Pu`^&O NZ*ʈ\ʈXNs~tFKFXF(XX>PuZȴ+FX[[XFXFFPrHrXYTPXPVPF t+XȢXSTQPVPF t:#r]P5F tD  PPQF t]]b%@ w@aNF s3 s.!r'F]t":tZ4P(W]8tD:t<:t4<t0:t(:t"<t]u9^&G#t tv&|u ^SL8^Sv(Fs_.o P:]u^P L]8t<uC>KuPP^SLFX:\uKPShXS\:]uE>Ku+X:\u P4X[YR!PP^SL:]u.>KuPP^SLF\XS:]u->KuP\ȢYRPP^SL#r]<t78t18t+#sI]<t8u>b"t:]u,>bu%>KuPPLFCPPL7]]t#s+>]u$>bDuHТHWP8P( :]u>Ku L^P L]t ^SL]^u P Lz>^u,]<+t<-u!>Ku ^S LTTPG>KuP^SL0P^SL P>Iu'>]wIPP^SL:]u^u P LI#r]<t78t18t+#s6]<t8u>b"t:]u>buPPLFs]]t#s+>]u$>bDuHТHWP8P(]8t<uPP^SLF:]u+X:Zu PX[YR:]uPP^SLF:]uPZȢYR]t ^SLg]^u P LM>^u]<+t<-u ^S L.P^SL>Iu)>]wIPP^SL:]u!Ir^u P LI]<t8ulFU:Xr7FsQr P]^&G^&GMkXSHsW>]tMPPLC:]uPP^SL':]uUXSF :]uPP^SL#r]<t@8t:8t4#r/]<t#8u>b"t:]t>btP]]t#s*>]u#>bDuHТHWP8P(G]t ^SL.]^u P LP^SLUW 8Nt8 u sPOsL]X]#"s]>_uVZ:XuFsHs 4P(FTPXPVP6]P|P(J*Z:XuP>_uIFsHs P]TPXPVP6]P|P(JF.TPXPVP6]P|P(JFQs ^S=LZ:XuXOs.>Lu'^&G &G U^9WTPUPVP$PWPP(^Sv뚀LJ^&G^&GOr.FWȊ^:rP$t < t ^&GFu2UFUWȊ^:rt < t ^&GFuԠs&TPUPVPF%f TPUPVPF%PWPP(TPPPP(]U <,t .:t ^ &GF&GFv FPFPF ue~uF:FwSF*F1F~uF:Fw2F*F1FFFFNNN8Fr8Nsw{^ Sv^ &GFFFF:Fs,FFF:Fw^ v^F&$F&N&ONtfs hFv FPFPvFPFv FPFP^GPFP,FFNp^&G:r:ws jFv FPFPvFPFv FPFP^&wFP|FF@FF u9FFFtF ^ &GF^ &GF^ &G^ S] U^&ux^&GF&GF&ON&GF&GF&GFNF:FsFFF8Fw^v^F&N&ONVRPFPPQFFPFPFPPFP|F u;FtFNF@FFFnFtS^&G]UQ^S^Svv{F^SP^Sv^ S^S%]UQ^S^Svv{F^SP^ SF P^SL ]UQ^S^ Svv{F^SPp ] U^&G FFF;Fs^SPp F uF]UQ^S^ Sv v{F^SPv]UQ^S^Svv {F^SP^Sv ]U^&G FFF;Fst^&G FF&|^AFFv&t^&FN;u.^ S^SQu^&G t &G;FuFF넸] U FF$F^&*ɈN~,Nu+JVu~.Nu+JV~u FFFFFN*ɈNF:FsFF{F:FsFF{F*FFFsFFFu!~tFrFF^ &0FD~uZ^&<+t<-uL~tFr%Fȴ^&^ &F^ &0:^&^ &^ &G0F ^ F8vNFY~t=FF^ &,FF^Np^ yN^YFs,~u~u ^&FtFF^&F^&ȊN:r'^ &<,t<.uF ^ &FuʋF]U6^&ux ~uyF^&G FF^&GF&Gv&F^&O&LN&ONF\^&Gu+FPFPFPPFPP((^&G &G ^0NFFFȊN:rt< tFFuۊFrcNt+JVN+ʋu+JVu F+FFFv\NN^&Guz& ts^&G t4FFP&w ^P^&w \PFP&w F9^&O S^_^&t 0\^&G FF\PFP^Sv^ S^SP]U F^&ux4~uy)F^&G ^F&8u &8Gu^&GF&Gv&F^&G&DF&GF荎VQP^ Sv FP^SPF u@s^&Gt,^&G &G vP&D_^F&u^&O t$VN򤍆PvVPL^S^&wVPvPUĞ&0Ğ&@u ~N] U~.u+JVt2~:Nu+JVuFFF^^&?tdF@NFN&^;uQP~WStNF;v.^PR@+QFPPFPPF tpF^&FNFNFsFNFN^Sv^Sv^ Sv^&S ^&FNFN!z]U~ t{~lNt+JVuFFFF9Fv8^&:lt*0rJ9wEF ^v&0FFN+N^v8lt+JVt|F^&^&]U^&G &G PF^FF&|^^FFFFN&V^&8GsNNF:Fv}FF@FH^&FFF~uF%FF8Ft^&G:FsF8Fu]F^&FF@FH^&FNF;r^vQ^ SPF~U ^ &G &G PF^FF&t^ ^FF&NFF:FvFF@F^&FF܋FFNFN؎]U^&"^ &^&"O^&] UF#^ &#N^ &O]ULFP,PP(~u ~uFssBdfjhFPPP(sF^&G FF;Fr.^&G FFذ&8u&8Gt v&D &D ^&gȋ^FFFFw^&H?zFu^&G"&W "ѱ&W "ѱ´h&G "±&_ "ڱ^&"W´js,zPPPQRPQRPQdP(.zPPQQmRPuPQdP(]FUQQ~ t{~v~N FFFF t4~u9Fu)FHFF 10^v&F1FŋF t N+^0FYF)FF^&]U&>jnu+J&>jnu+J>u&>u+J>u&>u+J]UQQr~lNt+JVt_^v&F&8t%&:Ft8j6F&8t &8uF$j6F&8t &8uF|F~N F ^&]U^&sFF FFFF;FsFv~N^YF^&]UFF9Fw^ &N^&F:td>u+JVtj&F+>Fu+JVtj&FF:FtF Fs] UvFPN QRPQ^Sv>^&;Fvv]UNdždždžPu^PF8Fu]UQ^ PPF^ v&>uP^SFPsFFѰ]U^ P@FFFF:Fw>t^ P@FNs N^;st^&V*uF&>Fu+JVt j&F>Fu+JVt j&FF:FtFFLFFF^;s^&8*u& Fs F^F]UQQF>uV^ PP^ P@:F u3^ PF^ P@:Fu^ P@:FuFF룰]U>t^PFuP^SFPF^PFNr"^P@F뷀~utn] UQQ>us^PFuP@FVN;w^ ;v +ʋ^ &FË] U^ G F^GWFVvFPFPFPFP^ PFY,FVRP^ P@FF~%sg^v&8u &%tT1^v&ÉFPvs^F@F؋]FFFF%;r)N듋FFFN;w)NGU^FNFFFFF~tP^ F^ NV´3ЉVVŠ^3ӉVV3ӉVV3‰FNFN몋F16^ F%1^F16^ F1^^ ?u^?u] U^ G^ GN~+^ O]UQQ^^:t^FFuȈF^@>u+JVtSj&[@^F@>u+JVtSj&[@^FH^:Hun]UQ>tT^tP^G ^P@F^P^G~u^P^GF]U>t}^G FGF;r>OW^7G PQwwFP#uu^GF^vFFv^w^O^FG F]UQ^P@F^P@FF]UQ^t>u P@Fs^G t >uu]UQFFN ;sNv~N^YN F;v+^8lF^&]UQF FN;sNv~N^YF^&]URPP]U ,F uRP:RPRPP:RPPPF uyֱPرPA F ucƱȱʱֱ̱JB±رJBı>>PPQQPPPPtF uW6±6ıFPFP)RPRPvvvvy F uRPRPvvvvF t.:62~ tlFurF ~sF;FV>PWR\|]UvvdP:RPsdvvP:RPP:RP=RP FVRP^&&Wvvvv RP^ &&W]UvvP:RPP:RP=RP ]U P:FVЉFVFF9F vP^ &:tB0r=9w8vvvv RP^ v&,0P:RPFVF^ v&:tFP:RPvv=FVF9F vY^ &0:rK9wFvvvv*ʵQ:RP RPFVvvvv=FVF럊Fs vvnFV^&&W] U~u FF-FFVs+FV ‰FFFFV]UF Fu FF:FFVVsFV FV+FFFV]UF Ft*F% u@FF%-F^F%F~uFF3F ~ȋFVNٵFVVFsFF]UF Ft*F% u@FF%-FlF%F~uFV0F ~ȋFVNٵFVFVFsFV؃FV]UFoFV ^ӉV^+ӉV+ȸFtFF]U FV uF%FsF% u@FFFV ^ӉVV VV;w+VJ҉V!VFFwK +ȋFFHЉF!FFV ‰FFV ‰FFsNFV]Ufvv6`6^ RP6d6bFVRP~ &vv6h6f RP6l6jFVRP~&]UQfvv6`6^ RP~ &vv6h6f RP~&Y]Ufv:RP6d6bFVRP6`6^=~ &&Uv:RP6l6jFVRP6h6f=~&&U] UfdP:FVP:FVvvRP FV2P:RPvvFVRPvv=FVRP~ &dP:FVP:FVvvRP FV2P:RPvvFVRPvv=FVRP~&]UfP:FVdP:FVv:RPvv FVRPvv=~ &&UP:FVdP:FVv:RPvv FVRPvv=~&&U] UQfPF+RPFHHPPF+RPFHHPv v vv)Y] Uf66FVvvRP FV66򱚊FVvvRP FVRPvvv v vv@~ &~&]UfF+PF+Pv v vv)66򱚊FVv:RPvv=~ &&U66FVv:RPvv=~&&U] Uf6ֱ:FVP:FVP:FVvvRP FVRPvv FVRPvv=FVRP~ &6ر:FVP:FVP:FVvvRP FVRPvv FVRPvv=FVRP~&~ &=v&~&=v&]Uf6ֱ:FVv:RPvv ~ &&U6ر:FVv:RPvv ~&&U] UQfv v 6P6N uEv v 6X6V t.vv6T6R uvv6\6Z u+Y]UfP:FV6X6V6P6NFVvvRP=^`6X6V6P6NFV6P6Nvv RPvv=FVRPnbd6\6Z6T6RFVvvRP=fh6\6Z6T6RFV6T6Rvv RPvv=FVRPnjl]Uf606.6(6&FV6@6>6866RPvv=FVRP6(6& FV6866RPNP66606.FVvvRP FV6@6>RPVX64626,6*FV6D6B6<6:RPvv=FVRP6,6* FV6<6:RPRT666462FVvvRP FV6D6BRPZ\68666<6:PP@J]UQf>|ujvvv v  tvvvv u;FV68FV:@FVBDb+Y]UQf>|uvvv v  tivvvv tTvv+PP uAv v 66 t*vv+PP uvv66 u;FV&(FV*,F V .0FV24b+Y]U F u@v v vvF u(v v vvPP66]U F u7v v vvFPFPyFNPQ]UFs FFFFFFPPFF]U F uiv v vvF uQFFv v vvPPvv66/LF u66F]U F u`FFv v vvFPFPyFNvvPQ/LF u66F]UFs"FFFFFFPPFF]UQvvvvF uv v vv]UdP:FVvvPPPvvWWY rCvvvvPvvv v Y Pv v vvY rEvvvvPvvvvY PvvvvY sGvvvvFPFP@v v vvFPFP@vvvvt]U |r >uP:FVvvPPPvvvvY QvvPPY QvvvvY Qv v PPY Qv v vvY QvvPPY PvvvvY sNvvvvFPFP[v v vvFPFP[vvvvPPPPt]U|rorv v PPPvvWWY Pv v dW:RPY PvvdW:RPY sTv v vvFPFP@vvtF u'F V &G9&W;FV&G=&W?]U|r r&w;&w9v v FV&w?&w=vvFVvvPPPvvWWY PvvdW:RPY PvvdW:RPY sTvvvvFPFP@vvtF u'FV&G9&W;FV&G=&W?]UQ|rorv v PPPvvWWY Pv v W:RPY PvvW:RPY sMv v RPvvRP[tF u'F V &G1&W3FV&G5&W7]U |r r&w3&w1v v FV&w7&w5vvFVvvPPPvvWWY PvvW:RPY PvvW:RPY sMvvRPvvRP[tF u'FV&G1&W3FV&G5&W7]U F u8~v-vsFFFFPPFF]U F u8~ rFvsFFFFPPFF]U F u2vFsFFFFPPFF]UF PN QV+BRF+@P ]UF PN QV+BRF+@P ]U>uSzFyFP FP F6α6б6ұ6Ա v Fv F]U|rO66^GP^G P)66򱚊^&&W66^&G&W ]U|r966FP؍GP)6±6ı^GP^G P)]U, F u rvvvvF uvv v vF uvvvvFPFPFFvv v vFPFPFFFFFFsOF NN܋NNދNNNNNNNNNNNNFFPPF u9zFոPFNQPvPlF֊FմPF֋]U F u1r%,PFRPP<svFFHN;rj^&p&0^ &p&0F uNjv^&p&0^ &p&0v,@Pvv,@PFusA,& F,&GF,&G,SFPF tFHFFF tQv,&NvV0_,y^NNOOYvF,&FN먠zFP,GPvvPlFFP,Sh<У,‰.‹F] U|r'Ʊ^&ȱ^&ʱ^ &̱^&]U|r]ˠr]ˀ>u ]ˁ>wmt]˸]U&G&WN׉FV^SQP{ FFV&G&WF]UQ>xuF7,>xu)PNβPOvv v voW>xu)PNβP/vv v vO'8HP+F F Y+NNvPv QvPXl,F] UuYF;r<uFF;s r<rFF{:vȴ1B{в%Nв]UQQF7,>xu1>xu#>xtPP6668 FF,F]U>xuv]U>xuv/]UF%̲>xu v?>xu v F%z]U~vFFy޲]U~v^FN]UQ~vF7,>xuvvvv v vv_R>xuvvvv v vvK/>xuvvvv v vv? >xuF,F]UQ>xun nF 1F F1F69F s89N s 9Fs9Nr1pr ޲㋇>βv v vvP F]U޲㋇>β]UFspp]UQ69F s89N s 9Fs9Nr*޲㋇>βv v vvP F]U>xun F 1F nF1Fv v vv ]U>xu(6N ;s8^ ;sNI;s^K;rF7,>xuv v vva>xuv v vvG>xt;8+F N+F WRSS4Vv PWRvQSS²SxlFF,]UF@}u>urFFFFF@F>Lw@FslFFPQVRWPQFPQdFFsPP6HP8HPlFF]UN~vF^&GFF @؍~vu>u>Lw@FslFFPPNQPNQWNQPdFF zЍvFPWNQQPQFPQdFFsPP6HP8HPlFF]U>F1VF @F؊F~u>u>Lw@FslFFPPNQPNQWNQPdFF FFBɍvɿ~FPWNQQPQFPQdFFsPP6HP8HPlFF]U>ulFFFFF>Lw@FslFFPQVRWPQRQdFFsPP6HP8HPlFF]U>ulFFFFF>Lw@FslFFPQVRWPQRQdFFsPP6HP8HPlFF]U>ulFFFFF>Lw@FslFFPQVRWPQRQdFFsPP6HP8HPlFF]U>ulFFFFF>Lw@FslFFPQVRWPQRQdFFsPP6HP8HPlFF]U8FP6PF u7F^ &>xu ^&c>xu ^&^ F^&]UFsP4t]UF1{]UF1{]U츰P ]U츰P ]U츰P ]U츰P ]U츰P ]U츰P ]U츰P ]U츰P ]U츰P ]UFw3؋ЋF]UF ur и ċЋF]UFw3ێ؎^]UF ur  Ď^]UF V RP$RPFVRP$RPRP]UF V RP$RPFVRP$RPRP]UF V RP$RPFVRP$RPRP]UF V RP$RPFVRP$RP/RP]UFVRP$RPDRP]UF V RP$RPFVRP$RP]UF V RP$RPFVRP$RPQ]U]܀gWGUFVRP$RP7D]UFVRP$RP)dRP]UFVRP$RPdRP]UFVRP$RPdRP]UFVRP$RPsdRP]U}ȴP^Sf ]UQ7,^Svvvvvvvvv/F,F]UQ7,vPiF,F]U 7,FF~t$V ;r$SWRP<rFF F^ SFP$STF u|~wFo$Sv TFF(QRPP<rF:$Svv(SvPPlF(Sh<У(‰*$Sh<У$‰&ƒ~u!Fs^ Sv ~u@PmLF,~uFs F] UQ ,]ULLNPWPFP/F u>FP6PF u)~t ^& uxFF u4FPFPF~u~ s~uF碖>|tRT< s RS؍ZPFٰ~ rARRVRSXPF u6X PF t VX|sFFFFFFRQP^SWRQPRQPdF u~uxF~uxF~ s@Fs&OTs@~tA~tB" FFrFˣ4FЌ t$FF&O;&O<&G FF(FFljFFɱ;~ rF<<8Fv <FF  x~ rF <{~ujPFPPF t@~uA"=F u<F u0 FF ;4\<x xFţ6Fã8:=>F@B4HJr6HF6HF^vw^Ȳʲβ²IJƲz{вyFHFH9v8Fu~ r| F| u4~uq8FvjFRPQ^SWRPQRPQdF t~PPf FPPf FP F~PPf FPPf FP FPFFRPQ^SWRPQRPQdF t+F u|]U]UQL@LuBsPPP6HP8HPFPP6HP8HPlFs]UQL@Lu=sPv v vvFv v vvlFs]UQ>Lu4slFsPPP6HP8HPFL]U8FP6PF u >xuw ^&Z&W^&GZ&W^&GZ&W 6^&G8^&G>xu ^&G >xu ^&G F^&G ]U$FPFFFFߋNNFFPFFFЉFVFFP$F tvFPLF]Us <FV %FV uv!FЉFVFFഉFFF u&&WNV&7& u@FF~ ;u;wNrNrSWPZ <^oFV9Vu9FsFVFFF^&GkF tTNV ;Vu;NwDNsFF&&O^Sv vZ <^S|v &Z&TFr \F] Us <^S|^F&&W% u eP^S<^&&W%F&&  &&w^S<FFF^&&W##׃uu &&W]Us <^ &S|^FF&&W%ut eP^&&W##׉FVS&^&w[##^# ۳uC^Fv%FvN;u;rj+փuvVNVsNF F V^&&W^Sv|^FFV &&W^S<ഉFFF t9Ft ^&GF;FuF;Fv^&GFFF;Fu FVF;Ft^&&%F~;~u;FsS*<^&&W##^&&W&&WFV##׉FVN~;u;vP)N~^SQ|^FF%  F V&&W^S<F F V^&&WFFV^&&WFV^ & Œ"NQRPv<F ^ &Z&WУ ‰"ŠFs`FVF^ &7~^YFV% ^&&W^ &Sh<F^ &Z&WF]U^&GFF^&GFF^ tFF&GZ&WY FഌF tFF&GZ&W Y]U ЉFVFഉFFF tN;Nt&GF;FuF;FvFFF&GFFًF;Ft F Fu^F Fu^&GFFm^&&W##׋vыN;u;uAv&&T%^&&WFFF&ONF^&GFFFF;Fu_^&&W##׋vʋF;u;u3&&W%v&&T^&&W^&GFFFFrjF^&GZ&W F tFF&GZ&WY FഌF^&GZ&WF tFF&GZ&W YFPഉFFFഌⴋظ&G&W F^&GZ&WF tFF&GZ&W Y]U^&GFF^&GFF tFF&GZ&WY F䴌F tFF&GZ&W Y]UЉFV䴉FFF t9Ft ^&GF;FuF;FvFFF&GFFًF;FtF Ft}F Fu ^&GFFF^&GZ&W F tFF&GZ&WY F䴌F^&GZ&WF tcFF&GZ&W YM䴉FF tFF&GZ&W YF䴌洋ظ&G&W F^&GZ&W]U ^ &&W%F&&W%FVN~;u;s4)N~SQ|^FF  F V&&W^S<^ S*<F  F V^ &&W^ S#<]U>ִ77t fPFFഉFFF te&&WNV&?~ug ~t mP~u~v nPFVFV^&G䴉FFF te&&WNV&?~ue ~t mP~u~v nPFVFV^&G댋FV;ڴu;شt lP]UVF t]U3^]UF^ u u3ҩtBӃtF^3ɩuéuĨu u uAuAu  uAuAQFwكQPك XY&wQSك [Y  3Yـ% t Ћ]UF3۩tSP$D]UF ^3ҨtB%R u t% w33Zr*F^=u u3۸Ss t̀r+*΃sPQك YX&32SQك Y[Z t ӃvD3]UF PFPFPD u/F^tt=tS u uv3]UQFPFPFPD tPT|FY]UQF^PSR3RRPFPD tPT|FY]UQ^&G;FvK^&w^&w^GP^&w&wPlF6{6yF]U~s޲㋇>βFHF^ &N&WVNV&N&@FF9FuA NFF9Fw^ &N&@FFQPoTFFFFFFFFFFPFPFPFPKTs"vvvv~t@PTF uqFFFFgvvoTFFFFFFFFFFPFPFPFPKTsvvvvPTF u^FsTFrMvvoTFFPFPFPFPKTs"vvvv~t@PTF u]UF PF PFPFPKTs)޲㋇>βv v vvPT]U޲㋇>βv v vvPT]U޲㋇>βv v vvPT]U~w^ SvvPl]UFFVNF+׉NV^ F +^~vPF+ZщvVFV;u;w@;u;ٳwC29vu9NwC2ÈF9vu9Nv V^^~u~v V^^~u~v V^^vv-DRPvDFVNsN~+ FVFV]UFFFw ƇδFu^ &FFF9Fv^&0&pPTFFF<w!؊δrPTFuء^ &] UNF<v6F &F&@v voTF^δsF F^ƇδAF^2ҴNt0ƴv vQFPFP TvvF@PT^F NƴV^ҴVu PQCST]UQNF<v6F &F&@Lv voTF^2ҴNt0ƴv vQF PFP Tv vF@PT]U^.$.>ڱܱ u"ڱⱋ u ^ & t ^ &^ &FPvP^ &7FPvPT^&`ޱ u"ޱ汋 u ^& t ^&^&FPvP^&7FPvPT^ &]U^. AFk^ &NQvQPFPvPT^&*^&NQvQPFPvPT^ &]UQFڱܱ uڱ;Fwܱ ~Fⱋ u;Fr }Fޱ uޱ;Fw ~F汋 u;Fr }FF]U^&F ;s&F ;v^&F ;s ^&F ;v^&]UQ^&7^&7oTF^ &7^&7oTFFFtyFt>^&7v&4^ &7^&7P^S^S T^&7^&7oTF믊Ft+^&7^&7^ &7v&4P^ S^S Ti]UQ^&7^&7FPT^ &7^&7FPTFFttFt9^&7v&4^ &7^&7P^S^ST^&7^&7F뭊Ft+^&7^&7^ &7v&4P^ S^STl]UF F FF]UУഉⴍFPF usFV tFV;Vu;Fv FVFVFVuw tFn^FF)FVfvFP*F t u6FഌⴉFF؋F&&W&G&W &G&W rFlGFs.Z^SgTF㋇ZF^SFPFF tDF^&G&WFF&GZ&W Yu ãഌF^&GZ&WFFFF~ u &&)NvPP|^F> rFlGFs.Z^SgTF㋇ZF^SFPFF u[F^SP|^F0FV ^&&WSv|^FFF=FF]UQF FtF F u vv\(F ;u^ Svl\^ Svv\FF u%ִ77У䴉洹شQRPRP \]UУشڴ鴣ִFSf\䴉FFF t*&GFFF;Fu ^&Gv\FǸFFഉFFF tI&GFFF;Fu ^&Gv\괴F^&&W%FVF먠rഉFFF t1PPFPF tFV^&G &W&Gഌ uFFFFF t5&O &WNV;Vu;Ns NVFF^&GFFFFFP*<^&G tF ^&%F^Sv+F uaУഉⴣ䴉洋F]UQQFFFF tظ&G &W&G܋]U ~uFF;u 괴FFFFЉFVFVFFFr8^&&WP%RF_XP%W u@F_X%F~;u;r^;u;v~uFVFV^S*<x~un^S<^&G FF uFVFVGFF~ ~t'NNNNVNv~^YFFVFFs^Sv|^F~u@"FN;6u;uA"FFFFFFFVN;u;v-^S#<FP&&W%P|^F빋FV tBFFVFFs FV FV ^&&W^S<]Us <Sf\SSഉFF~tP䴉FFF t9Ft ^&G^&GFFF;Fu ^&G~tv\F뤋]U^&G& u P^&S|^FFF&G Z&WY]U^&G& u P^&S|^FFFs 괴FFFFFsp^&&WP%RFV_YNt~u^&G& G uFVFF^Sv|^FF;Fw@ F뉋F t)F^S|v&Z&T]UЉFVFVഉFFFFF tB&&WNVNV9Vu9Ns NVFF^&GFFF t؋FV&&WF tNV&&WF tFF&Z&WY] U^SRPRP \]UvTNIQV\SSRPV F RPRP^Y]UvTNIQV\SS~ v WVRP/RP^Y]U^v3SVQQ^ v NFSVQPFPLV^Fv2΀vkt>8rQrӋ؋3t$r׊2 Ɔt x"u׊܊23ۋڀÃ] UV^RSwww7rdVFRP$w7؋VF uCRP,w7 t(w7VFRPVFRPHw7VFRPRPRPRPQLPdRP^N2yʀ]UV^VRSwww7rdRP$w7uRPHw7 ]UV^RSwww7rdVF2ۈ^^RP$w7Q؋VF uSRP(w7Q tF(w7VFRP#FHw7VFRPVFRPP3PRPRPRPRPQ`P9dRP^ tHw7RP/N^2y]UV^^VRSHw7QP؋VF uS3SRP/FVRPRPRPRPQpP9dRP[ uISSRP^Àt]UV t x^u uӋtTPT|h,PRSRSQPdVFQPdRPVFRP/VFDRPVFRPRPDw7]UV^wVRSw7RPRPFPD t PT|[[`FPDRPRPQ0Pd^s"Nt h|3%c|NtS2SRP/]U]U]U]UU]U]U]UU]U]U]U8U] U] U] UTU]U]U]UpnU]U]U]UNU]U]U]U.U]U]U]UU]U]U]UU]U]U]UU]U]U]UU] U] U] U4U]U]U]UPoU]U]U]UlOU]U]U]U/U] U] U] UU]U x2À>|u.]&(UQf~F V &;U|&;sF V ~&&U~FV&;U|&;sFV~&&U~F V &;U|&;vF V ~&&U~FV&;U|&;vFV~&&UY]Uf7,FVRP+FVRPڱܱFVRP+FVRPޱౡFVRP±+FVRPⱉ䱡FVRPı+FVRP汉象ⱋ+ڱܱRPұ+α@P6걉챡汋+ޱRPԱ+б@P6,+]UQfF ;FwF ;FvF F F±FıtY]UQf~>±F ;w~>ıF ;v)F F ±F±ıFıtY]UQf~ xu~ t~xu ~uF V FVtY]UQfF V  xu tFV xu u-F V FVtY]UQfFFtY]UQfFFtY]UQf~xu~t~ xu ~ u+FVF V FFtY] U fF ~vF~wF+RPFRP؋ʋÉF+RPFRP؋ʋÉF+RPFRP؋ʋÉF+RPFRP؋ʋÉF=w.+RPFRP@F+RPFRP@F+RPFRP@F+RPFRP@FF;FwF;wF;Fw F;v5FƱFȱFʱF̱FαFбFұFԱt]UQfP~ &+αP6ڱܱ؋ʋ~ &P~&+бP6ޱో؋ʋ~&Y]UQfN~tqP~&+αP6ڱܱ؋ʋ~&P&E+бP6ޱో؋ʋ~&EFY]UPPvvsvv66vv66FVvv]Uv ]U]U]Ufµ ĵuFVµĵ~&&E>µ&E%F~F&:E%wµĵ&&UFVµĵ_µĵFV~&& Et"&=&E%F~F&:E%v ~&&U~&&U~&&UFV~&&U]Ufµĵ;Vu;Fu~&&UµĵAµĵFV~&&U;Vu;Ft ~&&U~&&U~&&U]Uf>t >t+8εصP(F~uP(F~]UQfM+Y]UfMصF еF ҵFԵFֵFµĵ ~&&UFV tn~uh~&E&t&E& uՋv&|F ;w&|F;r~F &;EwF&;ErRVF~uvvF~~uvvFF]UfصFµĵ ~&&UFV t*~u$~&E&u&E& u&E&tRWF¡µĵ ~&&UFV t5~u/~&E&u&E&t&E& t&e&vvF뷃~uvvFqF]Uf~&=ICun~ t8&E *F&uFF~u >H&E*nF;s2~ u0~&E t &uFV ~&E&U FV~&E&UFV&E &U&E&EF &EF&E&E%@&E&E &E"&E#&E&&E'~ t &E&* @&E&~&u&u+PPFPFPFPFPF~u ~&M& ~u~&M&~F&EFF&EF&EFF&Evv+]Ufvv+P F~uvvF]UQQf>H&}~~~+Hv v F~u'~ F&EF&E&u&E v W0FF]UQQff~~~~uµ ĵt>µ&}%udv vF~uHv v~&}%~~t F*~F&E%v vv v0FF]Uf~&=ICtv v F~tr~&EF~ &}&;Eu~&E F~ &}F&:E tF~t6~ &}u~&E uFFV~ &E&Uv W0FF]UQf~&u~ &~&u~&~&E&@t#&}&E *~ &~&}&E *~&+Y] U3^;^ u ^;^ u@]U3^ V2y:rw^ :rw^ N;tw]U3^ V2y :rw^ :rw^ N;rw@]U3^ tÀu@]UQ^Svvvvvvvvv/]UzFvyFPFFN NVN NVFF9Fw~t^&F&FvvvvvvvvTFv&@&+N~Y,VVV~F FV~u N t^SWSQWP<FF FVF:vvF]U$rF t *v&F&FFV Y,׾FVvFغN vY,FV~~tFFV $Y,׋FЉVv&PV+VN ^֋Y,FЉVPvoTFvvoTF݄Ft(~u@~uA F܃FFv&FV&@FVF9~u9Nu ;u;u~u~uF FtFV## t0FغN vY,Fv+Fv(NVF ~ךY,V~V~FV## t,FغNv Y,V~V~,NVF~ ךY,Fv+FvF tyNQWQPvv<F tFVuv!uv FF FFFVuv!uv FF FFFs5Fsvvvv/LvvvvLFF uFFFFF]Ulr">wmt>u  ~Pv^Sv66PFPFPFPFPF uɸFF^Sv666 6vv66PPlF u@s9FFF~vFF@FNQPFF@F]Urt>wmtg>u [vvRPP:RPPPF u-s#F~vFPP]Ur>wmt>u }PPv v FPFPPvFPF P)v v vvPPF u+s!FFFFPP]Uro>wmtb>u V^Sv`F uBs8FFF~vFFFNQPFF]Ur ~ vr F uFvFп&G F&GFF~tb^&GN;u8^S^G PQu ^&^&G'^SP|^Fn^Sv9]UHrF t 9FtAQR^SPt@Y"s~ F Fv~NFFFFFFFr@F;s7؋F9Hu4QNQPuFFrF빊Fr(Fr!ţ؍п&G &W;vCщV&GFFFPWR+<sFп&GZ&W Fп&GFr ʼnFF^㋏pN\~FPFPvRPPrmPF t=u =F8vPFPPF udFPvvP<sFv^SvPPFP#Fv F~u t^Sh<F uFп&_Sп&w |^Fп&G ^ vNFYF^&GF^&Z&WFPP|^Fv&\Z&TF^]UFrF t 9FtAQR^SPt@Y"s~ F Fv~NFFFFFH^;r*F9Hu4QNQPt)FuˊFs^ &&W^&snп&_Sп&w |^F^㋏pN\~FPFPvRPPrmPF t=u }FvP^ SPF uv F usп&G F&GFF~tN^&GN;u$^S^G PQu ^&$^SP|^Fn묰^&]Uп&G F&GFF~te^& t0Ō^;u$:t ^&Sh<^&&W^SP|^Fnп&G п&GFFFPPP+<sFп&GZ&W п&G]UQQr F uWFH^;r*F9 u Q^SPt Fu˸^㋷4PH]UQ^&r F u^&> t^&]UQr F uF; rFF;r )^㋟ ^ &&_^㋇ ^&] UQr F uF; rFF;r )^㋟4^ &&_^㋇H^&] U 9F tAQR^ SPt@Y"s~ F v ~N FF Fr F uG^&H^&;r1H;Fu4PFPv t ^&u^&; v&] UQQrO>wmtB>u 6~v+FsFFFPP]U0rF t V $Y,VҸЉFԉV։FF9Fvb^&F&F&@&+>Y,V~։Vԉ~փuvF떠t<t<uF7<t<t<uFԋV؋N+N؉~F+FV։F؉Vڠt<t<uF'<t<t<uFN+ȺN F+FҺF܉VދF؋VFVֹ+׉FVFҺFV+׉FVF t|N؋VډNVNVNVNVNVN܋VމNVNQWQPvv<F u_9Vu9FwL9Vu9FwB9Vu9Fw89Vu9Fw.9Vu9Fw9Vu9Fw9Vu9Fw 9Vu9FvCF؋V^&&WF܋V^&&WFV^ &&WFV^&&W]Uv v RPvvRP=]UvvRPP:RPP:RP=RP ]UvvP:RPP:RP=RP ]Uv:RPP:RPP:RP=RP ]U6rq>ԿrmudrXп&G;FwFFп&GF&ON溋;r7F^FNQRP+<s7Fпҿ؋F&Gп&Grп&Gп@$п&G;t7BP&G+^x$6FNOYF;rFFпp$>^Yп&G&G &W&G&W&G!&W#&G)&W+FЋFFпvЍ@$<rпvҍ@$RPP8 ^̌FF̌ tTP&7FпvЍH$^SPP{ F tпvҍ@$^SvпvЍX$FP&GRPP<ryFпX$&O&w~^YпX$FF&GZ&WFP&G'RPP<YryFпX$&O%&w!~^YпX$FF&G!Z&W#FP&G/RPP<YsF]FпX$&O-&w)~^YпX$FF&G)Z&W+ F֋Fԋ]U rs>ԿrmufsZ~ vOwmп&GF&ON;r7F^FNQRP+<sFпҿ؋F&Gп&Oп&G@&GпX$&G &W&G&W&G!&W#&G)&W+wF&vNFY<r&G&GFPPPP<rzF&GZ&W&G&OVRRQP<r=F&G!Z&W#&G%&O'VRRQP<sFF&G)Z&W+&G-&G/P:&G1&W3&G1&W3&G5&W7&G9&W;&G=&W?WQWQPPUtF u)vvvvv v vvF u FF]UQr]>ԿrmuPrDr8^ Sv vvsFFF &G&WF] UQrJ>Կrmu=r1r%F Pvv7F &)G&W]Ur2r&rv v nv&Z&T]Ur1r%r&G&W^&&W]Ur)rr&G^&]Ur]ˁ>Կrmu]ˠr]ˠr]&G&G]Ur]ˁ>Կrmu]ˠr]ˠr]˸&G]UQr#>Կrmur r&G& G t&G tPh<&G! tPh<&G) tPh<@Fп&O+ȋp$>^Yп&oп&O]Ur]ˠr]ˠr]˰]Uп&G^&]UrCr7r+&^&&w~ ^Y]Ur$rr ^&]Ur]ˠrUп&torm9Կu.п@$]wm͠r]ˡ@п&9Gu]Ur]ˠs r]6 ]U rc>Կrmurr٠r9&tbPFP^&G3BF9Fs>K@PFPF&+GFV&G;Fw^S^SV]U^Sv ]Urw>Կrmujr^rRr&t86FPF&+GF&9Gw ]U ]UQQr`>ԿrmuSrGr;r&u$6FP^&G]UQQrb>ԿrmuUrIr=r&u&6FPF^&G]UQQre>ԿrmuXrLr@r&u)6FP^&G^&]UQQrb>ԿrmuUrIr=r&u&6FPF^&G ]UQQre>ԿrmuXrLr@r&u)6FP^&G ^&]Uri>Կrmu\rPrDr86FP^&G3BF9Fs^S^SV]UQ^ &7&wFP؍GP)^ &w&w^GP^G P)^ &w &w ^GP^GP)^ &G)s]&G)^ &w^&G/&W1P:^&G3&W5^&w1&w/&w5&w3^ G!P^ G%PF>^ &w'&w%5^&G/&W1^ &w#&w!&w'&w%^&G3&W5^&w1&w/k^&G&W^ &G^&G^ &G^&G^ &G^&G^ &G^&G^ &G^&G-^ &G ^&G.^ &G^&G ^ w^!^Y^ &G3^&GA^ &O3w4^B^Y^ &*u ^&G8^ &G*^&G8^ w,^:^Y]Uv"v vv^SvvvRPP:RPvvv ^SvP]U"r.>Կrmu!r>u  ~u~uFF^ Sv`F uvvvvPPF uv(v&v$v"FPFP@^SvvvvFPFPFPFPF uvrF4F&GF&9GsA&ONFNQRP+<sF&GZ&WF&G&_S&w|^FF&F^&G^&G)^&GN^&ON^&ON^&O^&G^&G^&G N^&O^&G N^&O*^,^v NFY^&G!&W# ^&G%&W'FV^&GFV^&GFV^&G FV^&G F^&G3^4vNFYF&G&GFF~t-^&G34)FS&G3P|^F͠s7^Sv666 6vvvvvPlFދFދ]$U^&G)s:&G)^&wRPP:RP^G!P^G%PF uԿrmu%>u r ^&Au^&8u&G8Fr^SF u^&w^&w &w&w&w FPFP@^&w&7&w&wFPFP@^GBP^&GAP666 6vvvv&w8vlFF]Ur >Կrmuz>u nrbrVrJ^&G7^&w&w^&G/&W1P:^&G3&W5^&G8^S]UDr;>Կrmu.>u "rr r.^&8u&G8^&G6FPv~4^&O3w4^&G&G ^SF uF u^&w&7&w&wGBP^&GAP&w1&w/&w5&w3&w&w&wG!P^&G P&w8F tFPFPFF26FP^&G^&G^&G ]Ur;>Կrmu.r"r>u  rP6FPr^&GF&ON&W V&_ ^;wu;wq;±wk;ıwe;r];rW;sN9FsF±9FvFı9FvFFPFPTFPFPTvvvv ^&G34FSP|^F6F&+D&L+ȉNv~^YF&)G&GFFFP&GRP+<s$F&GZ&W&G&G]U^&w&w^&G/&W1P:^&G3&W5^&G8^S]U^&8u&G8^&w&7&w&wFPFP@^G!P^&G P`F u.^&G&w1&w/&w5&w3PPF uu^GBP^&GAPvv&w8FPFPFPFPF u9vv^GP^G P)vv^GP^GP)]UQQ&GFF~ t^&G34FFN F^&Z&W]UF]UQ|rUsIs=vvvvv v vvF t wm]Ur]ˠrs]˰]Urr F]Us]Us"У]UsW&w;&w9&w?&w=FPFP@&w3&w1RP&w7&w5RPvvUtF]U4FPF t ^&O@wAF^&G@F+>PPv^G`P^&G_PrmP>PPF u@P>QQ WQWNQ u@Y s"F~u>PlF u/>PPvRPPrmP>PPF tУ FFڈF̊FsFFF>P66F uSF>PFPFPFPFP0F uZFrU>PFPFPFPFP0F ufFr)F>PFPFPFPFP0F uy~t@~tA"~tA"F̸>PPF uxFs >PvvF uy>P^ꍇPvFPF uWFꉇ F F~u>PvvF u >P^ꍇPvFPF uaFꉇ4NHF:R+؍P Pt@~ tA"s~u~uF FP^+^P Pt@~ tA"s ~uLJpP>PvvF uQ>P^ꍇPvFPF u/Fꉇ\FpFrF>uF  Pţ؍>PlFދF܋]UQQ^S^SF t^&^ &F&^&bFпп&G$п&Gп&Gп&G&W }؍п}؊~п&GпFPPPP<s1Fп&GZ&W п&G п&G]UQr:\F uֿsֿ SP+FF]UrF=mmt =rmt FԿ]U^&~ uvvv S,F u{P PFP,F ubFVN~;u;vE tAvv^S,F u-^F &9v&^& t^ SP,F u]U\rwvvv  S,F uFV RPFP,F uþ^~t+J;t`~t+J;uTPPFP,F tP 9b~t+J;td~t+J;tPPFP$PA,F uF݋Vп&G &W"Fs{vппt+Ju.}؍>п}}؊~п&GsPпGPf F u6п&ONFúF&9Gs&пQRP+<sFп&GFп&Gп&GF@$VÉVF tfPP,F urF9Fv?@п&G F t +F@FC@п@$빋FÉF6 F=t uпF&)GF uHFFпX$&G tIFF&G&WFV~tNF^&Sh<&_ Sh<&G tPh<&G! tPh<&G) tPh<DпPFRP+<sFп&GFп&GF] UQvvvvvv3F u!vvvvv^ Sv ^S]UQQvvv S,F uqFVRPFP,F uRf~t+J;th~t+J;uTPPFP,F tP 9j~t+J;tl~t+J;tFPPv v ,F u,vv; ,F uPPGLP,F u,]UQQvvv S,F uqFVRPFP,F u߾n~t+J;tp~t+J;uTPPFP,F tP hr~t+J;tt~t+J;t-PP^ S,F u^S,F u]UQrOпO$v^ S^Sп&wRQP FF] UQQr[rOrCF п&;Gv-v^S^Sv ^Sv FF]Uv^&w&7 S,F uwPPGLP,F usFп&G+F &O+ȉNNVQf,F uWvf,F uHv f,F u9PP; ,F usPP; ,F ubпGPP ,F uIп&G&Wп&G&GFVп&G &W"пGP P ,F ujFVFVN׃FVF 9F wWп@$P P ,F u{vv; ,F ux&G&WFVFVRP; ,F udvv; ,F usvv; ,F up&GFFVPf,F uavf,F usvv; ,F up&G%FFVPf,F uhvf,F urvv; ,F uo&G-FFVPf,F ugvf,F uXG1PZP ,F uxvvC,F u}vf,F uF t^SP ,F u֋F9F wп@$RPF u&_S&w ,F u}&_!S&w% ,F u_&_)S&w- ,F uAlGLPf,F u*^Sf,F u^&&W^&&W,]U(&G FF&GFF&G!FF&G)FF&G &W&G&W&G!&W#&G)&W+&G&WFV uFFF FFFF<riFrRPvvvvyF u|&GF uFF&G FFFFFPFRPP<r|F&GZ&WFrvv&_SvA,F u|&G%F uFF&G' FFFFFPFRPP<r~F&G!Z&W#Frvv&_!SvA,F uJ&G-F uFF&G/ FFFFFPFRPP<s:F&G)Z&W+Frvv&_)SvA,F u]U~uF]UQQ^S^SvF u9^&^&;F t#^SFPFw~t~ u ]~\u^SFPF u^&7F^ &^&U ~r ] FF FF^ SFPF uր~:ur~ ulFFF<:t0< t,^ SFPF uF=s ؊FؿFɀ~:uFHN;u^SؿPQu޸^~\u^ SFPF uFIURFP PFĂ~uFF‰Fă~u5F@F¿WPFP,F u݋F=8t=9uЋFHF‹F uFPFPF u~ u~s~ v8~9uF9F8vP P`PFP PF t ﺠ;  F  F¹ V‰,]nKG.pFFF tF@F;tF tFk  FF@ &} &} &} &LJ}\ FF@ &} &} &} &LJ}\ FF@ &} &} &} &LJ}\  xFċ]U^F]UvF]U[+F.V‰FF%Fu&>{uF>{uFFFFFFFFF;FsFFNF{t z4F>zuFFF IFF FFLF FF F F F F FFlFt8]UFFF1FvPvv v vv]UQQFFuF]UQQFFtF]UQFu]UfFF>H&EF~&E*FF>H&EF~&E *F~~;F~F;F|FF+FFFF;F}-~~;FF~+~F+ljFFFF~~;F~F;F|FF+FFFF;F}-~~;FF~+~F+ljFFFF~F&~F&~ F&~F&F]UQQf~u)vvvvvvF*Pv F *PzFvvvF PvvF*Pv F *PzF]Uf~&EFFFFFfF~uF>H&E*OFFF~tFFfF:FwlF*=uFF"nFVFVFPv v 6J6Hvv+PPvvvv*PxlF~tFFfF:Fwt~t!F*=uFF"nFV FVFPv v 6J6Hvv+PPvvvv*PxlF~t+]U f~&M&~&}t0&u&u &u&u&u&u&E*P%F~t~&E&to&EF&EF&EF&EF&u&u&u &u&E*P&E*P&u&u&u&E+FP&E+FP&E+F@P&E+F@P2~&u&u&u &u&E*P&E*P&u&u&u1]U f~&e&F~&}t&E&to&EF&EF&EF&EF&u&u&u &u&E*P&E*P&u&u&u&E+FP&E+FP&E+F@P&E+F@P[~&u&u&u &u&E*P&E*P&u&u&u1'~&u&u &u&u&u&u&E*PF]Uf~&E%F&EF&E F&EFFµĵ ~&&UFV;Vu;FtnF Ftf~u`~&E&t~&E& uv&|F;w&|F;r~F&;EwF&;Er&M'vvFxF]UfFµĵ ~&&UFV;Vu;Ft-F Ft%~u~&E't&e'vvF빋F]UQQfF~&E& t&M&~&E&u~&E&tw>صu:v&|;Եw'&|;еr~&E;ֵw &E;ҵs6vvF~u%vvF~uvvFF]UQQfF~&E& t&e&*~&E&t vWF~uvvFF]UQQfF~&E& t&e&>~&E&t4vWF~u%vvF~uvvFF]Uf~&}'tvvvv1F~t~&u(&E&u*&E&}'t&M&~&e&~&e'~&u&u&u&uFPFPFPFPF~&e&σ~u ~&M& ~u~&M&~F&EFF&EF&EFF&EvW0FF]Uf>ڵt:ڵµĵ ~&&UFV t~&E'tRWٚ1]UQQffF~t~&E&u/&M&v v0~&E&t&e&v v1FF]Uf~ &E&@t&}&E *)F~ &}&E *)Fv v F~t~ &u&uvvFPFPFPFPF~ &e&σ~u ~ &M& ~u~ &M&~ F&EFF&EF&EFF&EF&EF&Ev W0FF]UQQf~ &}%tF$ tp~t ~ &M'~ &e'~ &M'ڵ~ &E&@t.&}&E *F +~ &E(&}&E *F+~ ~ F &E(F&E*Kvv +P F~u7vv v vp F~uvv F*P F~uF] UQrvs rcп&uSFs $F u=пG$п&wlFF]UQQr=r1r%FPlFF]UQr`rTrHFп&;Gv2Fs $F uvlFF]UQvPi]UFFNN{пGPlF tF9Fviп@$&_ S&w&wXF u9&_S&wF u돠s>st~u >tF]U0FЉF&O&WNVF~ t\RPP8 ^ F F F uF@Fs;uF $F u^ &F܃r^.Zl#FWZF0Fs {:u,66^ &w&w/LF^ &G&G$F^ &wF^ &wD^ &GF@%Fs {:u^ GPv66PFPFPFPFPF uǸFԉF^ OQv666 6vv66PPlFЋF@2^ &GF@%FGPv֚`SF^ &GtF^ w~FvvRPP:RPPP-F^ &G{s:u^ &wlFFs {:u,PPPP<sF~u^ &G,&^ &G ,&G^ &G,&G^ &G,&G^ &G,&G^ &G,&G ^ &G ,&G ^ &G,&GzFظFPF,SP^ &wPlF=t=u^ &GFޱFs {:u(,PFޱRPP<sF~tgFFFFF;Fs:v^ &,&vv~^ &,&AFF뾠zFظFP,Sv^ &wPlF=t=uFv,Sh<У,‰.TF ^ &GF^ &GFޱF&Gtszs {:uj~vF\Nv >^YSvLF=t=u+F$F^ &G&G F t*%^ Sv8 ^ F FFV]UrF~us $F^&G34Fs &G:u^& u~th&G)s6&G)^&wRPP:RP^G!P^G%PF~uD^&G!&W#&G%&W' G4FF^GP^&GP`F~uM^&G&*u&G*^S^&G3P&7&w&w*FPFPFPFPF~tFV^&GFV^&GFV^&G FV^&G ^&wF^S^&O3Q666 6&w&w&7&w&w*PlFF uF)F^SP|^F ,]UQs ^S ^SlF]Urпw~^Y]UпvFY]U$rп&u#Fݾ~ދFdP:^&&W^&&W^&&W^ &&W^&&Wп&9Gw@$F ui>;u;wM6;u;w69u9w$9u9w9u9w 9u9vF66FPFP66FPFPvv^&w&7sFV^&&Wvv^&w&7sFV^&&W^ &w&7vvsFV^ &&W^&w&7vvsFV^&&WfFݢFPv`FF]Ur&rrп&uF~FF ui>;u;wM6;u;w69u9w$9u9w9u9w 9u9vF.66^S^S66^ S^SFFPv`FF]Ur&rrп&uF~FF ui>;u;wM6;u;w69u9w$9u9w9u9w 9u9vF4^&^&^ &^&FFPv`FF]Ur&rrп&uF~FF uq;u;w;u;vFD^&&W^&&W^ &&W^&&WFFPv`FF]U<&GFV&GFFF Fu^&G34F& ti&G)s:&G)^&wRPP:RP^G!P^G%PF u:^&G!&W#&G%&W' GP^&GP`F uW^&G&*u&G*^G4P^&G3P&7&w&w*FPFPFPFPF t=u]FҋVԉF։V؋F΋VЉFډV܋FʋV̉FމVFƋVȉFV^&G* u NQWQP&7&w<F uSF֋V؉FVFVFVFދVFVFڋV܉FVFPWP^&w*&7&w<F tPPPPvvvvښtPPPPvvvvtPPPPvvvvtPPPPvvvvEPPPPvvvvښtPPPPvvvvtF)FV^SP|^S&_ S&w&w ]U"Fދ~ ~t2RPP8 ^ F F u&Fr^.]}FFFMF^ &G&GcFPPPPRPRPt^ &G&ORRRRRPRQt^ GP^ &w66PFPFPFPFPF t=u^ &G@%FPPPPvvvvtPPPPvvvvtFVururD sF^&^vNFY. FFFF;^&V;ʱuAPQ^S^_SRu@Y Y"s F^G 뭋F;u6> s-F^&^vNFY. ]UQF~r^."""")^&G@%?FIFB^&G!F +^&G^&GF FFF]UF~ ~t{RPP8 ^ F F tY&FrJ^ SvF~u^ GP^ &wFF uF)FV^ S뒸]U &GFV&GFFF FtM^&G34F& uGP^&GPF u7F)FV^SP|^&_ S&w&w7]UQrHr<r0^& ;Vu;Fw^&';V u;F vrFF^& v~+6&F^&'N ~ +&F u^&^&F]U졪^&]U츰P ]U츰P ]U츰P ]U츰P ]U츰P ]U츰P ]U츰P ] U츰P ]U츰P ]U츰P ]U츰P ] U츰P ]U&G FF&G&WFV~u9FFNQRP+<r1FF&G Z&WFPFRPP<s&_ ^FFN;s<PF+F@1^V0_^y^NNOOYFFFF^&Z&PFF^&@FNFV&G&W]UPv]U FPP0PP<FsDFF^&&W^&GF&G Z&WFV&G&WF]U &G FF&G&WFVFF;Fs^&Sh<FFܸF^&&W^&GFV&G&W]U &G FF&G&WFV~vLF^&Sh<NFPF+F^^Vp_^9^YFFF^&&W^&GFV&G&W]U&G FF&G&WFVFFFFF;FsZ^&PVF tP^&SRFPZF^&Sv ,FF uF랋F]UFFFFFV;Vu;FwF tPFPPFPF2Fsv v FPPA,FPP,FFF ucFPvF uJFv NQP FPvP{ FF uFFV=УF] UЉFV&G FF&G&WFVFF9Fv&^&P;~u;Vw )V~F҃~uRF9Fv'^&PFN;u;v&SPFH^&SFH^&p|]U&G FF&G&WFVЉFVFF9Fv,NV;Vu;Nr^&@FVF̋F;FwFV;Vu;Fr%FHF^&PFN+ϋV~+V^ &^&P;u;r+V^ &FF^&@tF^ &^&)PF^&SF^ &P|SF^&Sv|FS^&H+N[_Z^F^R^&@RP+<FF^&xuv*]U &G FF&G&WFVЉFVFF9Fv,NV;Vu;Nv^&@FVF̋FV;Vu;Fs~u^ Sv P{ F t@FHF^&HF~+F~)F~F &@F&NFNQRP+<r&G FF^Sv|^FSv |FS^&H+NV[_vNOv ~N ^YFF^&Z&PFF^&@&_ ^FF&@N~+׉F u/vv r5&_ ^FF&8~tWF@PvrW&_ ^FF&Sv|FS^&x[^NF@Pv s0&_ ^FF&xv N FY] U&G FF&G&WFVF tHFFF^&NF^&@F~ ~t,NQNRP+<F&G FFFFs5FF^&Z&PFFPFX^&@F)v)F&G&WFVFHFF&G FFFr FrF^&Sv|^F8NuZv FY tP^GPFPFP^GPFP,FF t"v ~N^YFFF]U&G FF&G&WFVF Ft~u^Sv|F Fu^&^FFNNFF;Fs]NrV^&P;V u7&&HN&;Ѱw@~&XW+;"[;;ӲvB" FFrF^Sv|^FFsJF;FsF^&;Fv-F@;Fu ЉFVF^&@FF^]Ut6FPL]U3>tH]Ux63PP]Ut6FPL]Ux63PP]U]U]UV2]UV]UVF]UVF]UQ|r^ &^&]U8FP6PF um~u :9FuFѣFϣ]U>u^ &'+(^ &PRY,_X+^ &>u^&'+(^&PRY,_X+^&]U>u^ &16&$^ &Y,^ &>u^&16&$^&Y,^&]U|r?xELQX_hmt{U>H&} &}&>}F~FF~Vvv H&} &}&>}UU20F3FډF2^ .líNN u[.V>r~F~t>R>n2^~Vvt2@vȎ؃F F%WU.F- ȎWub tZt3v%F꫸ūv1ū%F꫸1ū%1v1ū%F꫸1ūvvt& 1ȫ%ƫ1ȫt,uJ t"t7 u3 u/FH򥫰sv󤰹FHXFWt tv1ū%F꫸1ūt QvYvtXH+ǪVt諊vvt& 1ȫ%ƫ1ȫut6uƫF$u^ tƫë^ tëu t6uǫF$u^ tǫë^ t頋ë@t]ū嫸KY+σtt骋-u˪t~t V VUv~ԋ^^]n3] U??U3UF~uv2DFDFf3~NNvv2؉vvp2䑘N~V$ZVU."t2W:r& u#& 3& ]u_]Ntm^vFF tVBF tVBF tVV˭ן |Ju^F @t~~VJu^F uUNWJ㭋 ʼnItМ s MI ʼn魋 Ńt  It6М sMہIہI Ńt  Ju^]F t,VVF tFt Ju^F tVF^F tf+1@F tVVFt!Ju^3]U~&eN t2fuр€ &uVN^INV+JV.$^؁.D^^ 2&Eu$&+FF&%&} F$2FV$F&%&&} ~+щFV~FN~u!NN^V V~vnn^V .-''''m[[[[)QBBBBTTTT5SvvN&! N3N&! ~JuNv&! ~JuvN&! N3N&! ~JuXNv&! ~JuBv&3#F&1N&3#F&1~JuNv&3#&1~Juv&3#F&1N&3#F&1~JuNv&3#&1~Juv&3#F&1NЫ&3#F&1~JuNv&3#&1~Jujv&3#F&1NЫ&3#F&1~Ju6Nv&3#&1~JuvN& NN& ~JuNv& ~JuvN& NN& ~JuNv& ~Juv#F&!N &!#F&!~JuuNv#&!~Ju\v#F&!N &!#F&!~Ju)Nv#&!~Juv#F& N & #F& ~JuNv#& ~Juv#F& N & #F& ~JuNv#& ~Juv#F&1N &1#F&1~Ju\Nv#&1~JuEv#F&1N &1#F&1~JuNv#&1~JuNt3]UZ XtX^S]U$"  t P^& $t$P^* (t(P^. ,t,P^2 0t0P^6 4t4P^: 8t8P^> tпG$PP|>tпG$PP|]UFXŒZ]UD£ŒH£ŒL£Œ P£ Œ0£Œ4£Œ8£Œ<£Œ]U]U]U]U] UQvPjPPF uej‹l9V u9F vF V F`‹F V b‰dN\Œ^%f‰h‹F V %n°q¢r¢sp] UF"rˆFN"sˆNrrFNVs NFrŠFs Fs¢q¡j‹l%^f‹6hN;u;s#FfhWS,F u36`\‹vPv6fhRVFP$F u]Uj‹l9V u9F v NsHF V N V F;lu;jv,^s+bdRQ,F tF V %Ff f psON tF=w@qsFF6`\Svv v FP#F upUF V ;hu;fuFNN;v6qr.6`6\QSRPFP#F uqF V %;hu;fu{qstFF=vUPP,F us¢rs\FY6`\PPF V RP\Ff‹h‰F V ePP,F ukF tDF=w@qsFF6`\Svv v FP#F t pqFn‹F V f‰h¸]UQFVbd‰FVj‹>l¹##Nָ##;u;t6`‹^~RQ F uFVj‰l¸]UFVbdRPPPt,]Unºfh+bd^&&W]UPP,F uGnºfh+bdRP,F u#j‹l‰FV6`¸PFPP ]UF V bdRPPPt,F u!\‹6n^Fn&^&]UnºfhRPPPt,F u!\‹6n^F&^&n]UF V bdRPPPt,F u)\‹6n^Fn&&W^&&W]UnºfhRPPPt,F u)\‹6n^F&&W^&&Wn]U F Vbd‰F VN;lu;jvVvv PPt,F uqsFFF+n‰FN;sNN\‹6n0~^YFt6nNH\&^&F)FFtPP,F unF uNfh=vFF6`\Sv6h6fFP#F ukF;FrFFN^v86\FYFtHvvN\‹&^&F)FF[Fn=w@q¸] Unºfh+bdRP^SvA,]UFV bdRPPPt,F u8\‹6n^FF&>nsr>nvsn]UnºfhRPPPt,F u8\‹6n^FF&>nsr>nvsn]UF V bdRPPPt,F u?\‹6n^FFV&&W>nsr>nvsn]UnºfhRPPPt,F u?\‹6n^FFV&&W>nsr>nvsn]UN Vb‹>d׉N V^;lu;jv+RQ,F utvv PPt,F u[n+ȉNV»;ðw@ s¢ss@qr9;s56`6\PSfhRSFP#F t~q>nr‹F;FsFN\‹6n8vFYFtHv6nN^&\&F)FunbFn~rIPP,F uVfh^6n0>\¹^Ys¢r¸)Fn밃~u nPP,F u[fhr¹9Nv Nq¢s Fq6`\‹vPP6fhRVFP#F uDN^6n0>\^YFt6nNH^&\&Fn¸] Unºfh+bdRP^Sv ,]Uұα+@NY,ҡαЉVԱб+@P׋Y,бVα9F}Fұ9F~Fб9F}FԱ9F~F>uFFNN+FF+#>u'FFNN+FFFNNN>uFFFFV+>u*FFFFVщVFVF+Fα9F}Fұ9F~Fб9F}FԱ9F~FNα;}>u+F α+F)FαFNұ;~+)NFNб;} +FбFNԱ;~>u+)N F+ԱFԱFNα;} +FαFNұ;~>u+)N F+ұFұFNб;}>u+F б+F)FбFNԱ;~+)NFzFyF{FP FP FP Fvvvvm Fvvvvm Fvvvvm Fvꚧ Fv Fv暰 F]U젙r>Lu7,4,]U젙s>Lu7,4,]U9F w9Fv7,FF NFP,]UQQvv PPPvv W:RPY Qv vPPY Pv vW:RPY s)vv v vFPFP[vvv,4] UQQvv v vFPFPAFPFQv,4] UQQvv v vFPFP@FPFQv,4] U6N6PFP؍GPp6N6P^GP^G P)s6N6P^GP^GP^&G&W^&G&W]Uf F t^~ +RPPPFVF;FuF;F u FF؉F FFF+FFF+FFF+FFF+F F FFF;F rFVt‰v¡v‰FPDFVv8DFVRPvD؋ʋÉF~FVljFVvvvD؋ʋFF~&vvv D؋ʋÉFFFVFVvvvD؋ʋFF~&EFVFVFV+]U0f F tF;F v +F F +FFڋ~ +RPFڹRPFVF+ҹF܉VދF;Fu>F;Fu6F+ҋ؋ʋF+щFVFVF+ҋ؋F+щFVJF+ҋ؋ʋF+щFVF+ҋ؋F+щFVF+ҋ؋F+щFVF+ҋ؋F+щFVFF֋F;F rF܋Vt‰v¡v‰FPDFVv8DFVRPvvD؋ʋÉFԋ~FVljFЉVvvvvD؋ʋFF~&vvvvD؋ʋÉFԋFFVFЉVvvvvD؋ʋFF~&EFVFVމF܉V+]UfF ؉F PDFVv 8DFVN~uF+ҋ؋~&+щFVF+ҋ&E+щFVFvvRPD؋ʋÉFvvvvD؋ʋFF~ &vvvvD؋ʋÉFvvvvD؋ʋF+F~ &EF @+]UfF ؉F PDFVv 8DFVN~uF+ҋ؋~F&&U+щFVF+ҋ؋~F&&U+щFVvvRPDFVF VF FVvvvvD؋ʋF+FV~&&UvvvvDFVF VF FVvvvvD؋ʋF++FV~&&U +]UfN~tz~&+FF&E+FFFFPFRPt‰v‹6v‹F~&F PFRPt‰v‹6v‹F~&EF}+]UQfN~t*~&F~ &~&EF~ &EFF +Y]U&f F t~u~&=wF F~ &F&EFFF VF FVFVF~u$~ &FF &EFN܃~t=F;Fs~+~+~;Fs!F;Fs~+~+~;FsF띃~uFVF VFFFFFFFN~t~ &+FVF &EFVكF F+RPvv؋ʋÉFF+RPvvޚ؋ʋÉF~F&FF&EFF V-FVFFFF~F&FF&E~F&+] UQf~ F+P~ F+PDY]UQfvDRPF+RPD؋ʋY]UQfv8DRPF+RPD؋ʋY]U3|]UFV]UFn]UFf]U~ v Nn2 y Ճ y փ u u rx|$ u urxs ]UNV F2 y y s ]UNFV ]U~ v Nn2 y Ճ y փӋƋ}͖Tr t|s ]U~ v NnƋ=͖r t|]UᑇŃ]UᑇŃ]U2ۋV F y ӋN ys ]UV FN]UFN2 y Ѓ u+V F y ss ]|UvN2 y уӋV F y  t s ]U t3]|U t"3;s3]|3|3U^2 yѾ;r3s+2Ɂr+сrQYs ]U^ÄU2ۋNF y؀ tlyـ3 t_;tXrFVSFVS[;Vrw;Frt OF;v+FV+V xC;vK[tttߋNj]Uvi CCz9 9 q /F +x v ^ } vaZYǓ0L*09|GUd^r=Ϲ^֥F*9WGUcrXӜHǸ5h*8F%UPczqǍ.LhԂ.A*R8aFnTxbp~yn` )7EsSQa,o}؊wAόݽ v+)6D6R_m{Ps o(5NCP^{kx-͠Z6 f'4AN\!i.v696.! &g33@LYsf(s"Vp˄ {%1X>JWtco|Uˠ&I 2B$J0Kis}&a! 8GL(I2<<&FPYcqm-w߀' %_/8BWKT]fp2y@E?#O, 5=kF OW,`h$qyJN )41C9GA@I/QY`hp9x=N%4-4;;C}JQX`g nu T")/g6=CJPVY]ci?r $*06l<7BGMQSX}^ j j %*/5&:(?DIMR -dk $A)-1'6[:>BF [c"%),j03$7m:>o i6 #S&(|+-u: ,IZ^U?j!I`D : sx1}|/vU.S.Uـ3t .Ńs.+]UPR[Yك+]UQF4 Y]UQY]UQ^ tN u2و^2ۊˆ͆ˁtyh|u؈NN2ɀN^ˀ^FVڋF؃ʋF ؃ʜFȃڋFV ȃڜF ȃڜF؃ʋF~ ؃ʜFV ؃ʜF؃ʜFȃڋFV ȃڜFVȃڜFV ؃ʋFV؃ʊFVs Ft9 yFu .€tEt `u<7Gu3Cu0@u-̀Fu%c|ڊ‹N3ҋڊ‹ Nက ̋v4|\DLY]UQY]U걋v3+6ڱܱtڋ&α^v 3+6ޱtڋ&б^ 걋v 3+6ڱܱtڋ&α^ v3+6ޱtڋ&б^].U~ &53+6ڱܱtڋ&α&~&53+6ޱtڋ&б&]U~N&53+6ڱܱtڋ&α&53+6ޱtڋ&б]U f~&E&tl&EF&EF&EF&EF&u&u&u &uP&E*P&u&u&u&E+FP&E+FP&E+F@P&E+F@P/~&u&u&u &uP&E*P&u&u&u1]UQQfF~&E& u;&E&t4vWF~u%vv\F~uvvFF]UfFPvFPLµĵ ~&&UFV u~&}%}&}%t&M$u~&u&~&E&t?&}u vW0~&u &EvW\F~&E"FF&E$~~&}u vW1~&E!FF&EvW\F~&E#븚~&E]Uf>εt+εFP(F~tFŒ^FNFFFFČ^FFFFF`FFFFFPF~u.FP1]UQQfF~uF*~ &E"~uF*~ &E#~ t\&}%~>εu\~ &e&vv 1F~uyvv ~ &E%vv ~ F&E$O~ &}%~E&M&vv F~u,vv ~ &m%vv vv 0FF] U |r>s2s&FusF FuP P*F u&F PP|^F .FP66\~jwvċNFFă~ vKv ŋNFFĹwm9N u,R^Sv^SPQ SPF tmdF =mmt=rmuYP^Sv^SvrmP SPF u^SvFPF uF t=t snЉFVQRPF u1PFPF uPPPvvv dFPlFF tP F]UQ|r>ssFus|F FuP P*F u_&F PP|^F .FP66\^Svvvvv d]UFČċN Vĉċ^Կwmt PRQF tFVп>ҿпQRPP<s>пп&G$п&Gп&Gп&G&W }؍п}؊~п&GпFVNQRPP<sCFп&GZ&W п&G п&GF=mmt=rmtFV FVSFVRPF unSFPPFPF uN~t+J;t~t+J;upS66ĚF uYSFPPFPF uZ~t+J;t~t+J;tSFPPFPF uiFFVп>ҿпQRPP<sS66ĚF uSпSvFPF tп&GF&Gпt+Ju.}؍>п}}؊~п&GFVNQRPP<sgFп&GZ&W п&G п&GпO$~tRFFHN;rDAп&OdF tP 6SP|Fu]UP^Sv P6ĸwmP SPF uOFFPFPFPgdFPlFF uF u^SvPF]U"rR^S^ &w&7F ut^SPPFPZF uxп&GFV^SпGPPFPZF uq^SпGPPFPZF ux^SпGPPFPZF utп&GFF^SFPPFPZF ujп&G F^SFPPFPZF uy^SFPPFPZF uZ^SпGPPFPZF uj^SпGP PFPZF ue^SFPF u~^ &&W)FV^SFV^ &&WRPF uK^S^SvFPZF u-FFV^SFV^ &&WRPF uTпG$п&uFп&GH;Fs^SS PFPZF u{&G FF^SFPPFPZF ud&G&WFV^SFPPFPZF uw^SFPPFPZF uX^SFPF uq^ &&W)FV^SFV^ &&WRPF uk^SF uZFVFV^SFV^ &&WRPF ut&GFF^SFPPFPZF u]&GF^SFPPFPZF uf^SFPPFPZF ue^SFPF u~^ &&W)FV^SFV^ &&WRPF ux^S^SvFPZF uZFFV^SFV^ &&WRPF ut&G!FF^SFPPFPZF u]&G%F^SFPPFPZF uf^SFPPFPZF ue^SFPF u~^ &&W)FV^SFV^ &&WRPF ux^S^SvFPZF uZFFV^SFV^ &&WRPF ut&G)FF^SFPPFPZF u]&G-F^SFPPFPZF uf^SFPPFPZF ue^SFPF u~^ &&W)FV^SFV^ &&WRPF un^S^SvFPZF uPFFV^SFV^ &&WRPF ub^SG1PZPFPZF uSP|Ft_ЉFV^SRPF u[^SPPFPZF u<^SFPFދFV^ &+&W^&&WFV^ &&WFދ] UQr[FFsP6ĚdF~u5\F us SP+FF]Ur;s r^ SvFPF uoF t =t^P^ SvRPPrmP SPF u,PPPvdFPlFF uF]UXrF ČċNV ĉPRQF uSFP$PFPF uFspvппt+Ju.}؍>п}}؊~п&GPпGPf FFɋVˉFVF͉F~tjSFVRPF u5SFPPFPF uzFPFP`F uc)FFVп&GF&GFFǹF;FvFFFFпFFFPvv+<sFпҿN&OFǹп&GпG$Pп&gP|FljFп&G$FVSRPF u$SSFPFPF ue~tBFFH;Fr4п&GdF u=SP|Fuð6 F=uF] U"&G &WFV&G&WFV&G!&W#FV&G)&W+FV&G &W&G&W&G!&W#&G)&W+&G&WFV uFVF&G&WFFVFV<r FrBSFVRPF uSPPvvyF t'&GFV uFVF&GFFVFVFPvvP<sjF&GZ&WFrISFVRPF u"S&_SvFPF to&G%FV uFVF&G'FFVFVFPvvP<sF&G!Z&W#FrFSFVRPF u{S&_!SvFPF u&G-FV uFVF&G/FFVFVFPvvP<saF&G)Z&W+FrFSFVRPF u'S&_)SvFPF u]Uvv v vvl] UZFFFF FFF FNNNFFPFPPvFPHPlF] UJ69Fs89N s 9F s9NrO~uDFFN NFFFV VFVNFPPvFP8PPPl] U~ t~wF;FvFFF>xubF9Fv`^&v^&v^&1v^&@v^&;6sc&@;8sYF랋F9FvVv^&^&v~^&^&Av^&;6s &@;8r-FFPvv v؍PF+PPPl]UQQ~ t~wXFFFF9Fv%^&;6s &@;8r$F^Svv ^SvPPl]UR~ rFs$Fsr~uQlı F~uF ~ uFFuβ"~uβ^ćţȲʲFtuh^&&;Gu\&G&;GuR^&&;Gu&G&;G u&G&;Gu &G&;G t-^&&;G u&G&;Gu&G&;Gu&G &;Gt~u^&&;Gs F&G&+^&GF&&+G@F^&G &9Gs8+IN&G &+G8^&+GHF&G&+G @FF^F#‰FFFތ^N#ʉNދN+ȉNFt<uF ^ćʼnFFv~޹^YFFw FRFu>̲uFF~uu>̲u9~uFFFFFFމFF\FFFމFFA>̲uFZF~u FމFFFFF~u FމFFFމFF7,><t=w=s{><u1F>вu74PNQVRPQR^Svvvv3%F FF4QVR^SQRS^SvvPv²SxlFxF<V;vcвt$4PNQVRPQR^Svvvv"4PNQVRPQR^Svvvv²SxlFf덚,^Sv^ Sv v]UQ}{؊~F# PF#,ZPF#Y]UQf>HF V &;Uu&;E u6JWrPP'F V ~FrFtxz+Y]UQf>HF V &;Uu&;E u6JWPP'F V FFࣄ+Y]UQf>HFV &;Uu&;E u6JWPP'FV FFࣔ+Y]UQfFV +Y]UQfFV ҲԲ+Y]UQQf~t~uwLFfF*F*#tF* F~t >H&E*OF*#Ǣw+]UQQf~t~uvLFfF*F*#tF* F~t >H&E*OF*#Ǣv+]UQQf~t~uLFfF*F*#tF* F~t >H&E*OF*#Ǣ+]UQQf~uw4FfF*F*#tF* F~tFw+]UQQf~uv4FfF*F*#tF* F~tFv+]UQQf~u4FfF*F*#tF* F~tF+]Ufx*=uw*Fv*F~t>xu>t7,~uZ>xuP>uFv*w*;u3FPFPlF~tF FuʼnFŋʼnFVF %@@FF FFFFFF+vF~ u~tF ;FvFF FFrPvvFPF%P+P66v vvF&*P6IJ6²xlF~uEFPF%P+PPvv66v vv~*P6IJ6²xlFFFF)F 3rPvvPvv66v v vF&~*P6IJ6²xlF~t>xu>t,F]Ufx*=u>t7,F̲F̲*Fv*vvv v vPFF̲F岀>t,F] UF^]Un^]UFF^]UF V^;u$:°t@]UF ;FtF ;F]UF V FV]U??U 6H^ F$+CdN t2fuр€ tRFV $F$t v+щFVZ~ F+F @VvHu^Nu3]U >H^ F$+C&eN t2fuр€ &uRFV $F&%&&} ~+щFVZv F+F @W~Hu_Nu3]U>Hv&eN t2fuр€ &uVLFV $F&%&&} ~+щFVN2.^d fv3ۀ~ t tËV VvWVSn.<Lcխ& u~u3ۭ3#F3ؓ& u& ~u~խ&!u~ue3ۭ3#F3ؓ&!u&!~u;խ&1u~u$3ۭ3#F3ؓ&1u&1~u[^_Nt 3]Uv ~N] Uv ~N] Uv ~NH] U??/^* M""""     #‹#‹# ‹#‹# Ë##‹# ‹#33 ~ &&r&Ӄ sӫ& ~ &&r&ۃ s۫& ~ rю&& ӫ ~ rц&& ۫ ~ &&r&Ӄ sӫ& ~ &&r&ۃ s۫& ~ rю&& ӫ ~ rц&& ۫U0vDF֋DFRF܌FVFЌF~vD&]L1 t^2F&Et"Fuр€ &uV\Tu t;u t u,&u tu uu^ډFVVF;F u2V^ v~;v ȇӇvVF2++y;s~+C^K+~F tHNt$Ft=tNuF ~%Fv %F ~vNu FvvN~&},uF^~Ft/FV$F&%&&} ~‰FVF F&^~F$~nȎV V2^ڋnnփtX tS..~^.t.|.d&(E˪~&^NvVVFt^Nu VvTQqFN;vF t;tA F t;tI؋+ȉNÁ..$ u#~&},uFV҉V~FtV$ȋ&%&} VȋF&%~~SFt ~N^2nnXt6 t1.D F&!It F&! F&!3.#F& It F& #F&  F&!It F&! F&!#F& It F& #F& #F&1It F&1#F&1&!It3&!t#F&!& ItF&!#F& F#F&!& ItF&!#F& & It& Nti3]Ubf~w">uF&F;sF V FV~ljFV~ljFVFFFVFFFV~ljFV~ljFV~ljFމV>u F>uFFVFFFF>t>u]FFFF;Fs+~FVRPFF؋QP^ʀ~t FVFFFFF;Fre~;u+F@F~~F&EFFFVFV~~&u;Ft+~&~u~ދF&FvvvvvvܚFF~~F&EF~~&E+FFv~&Fv~&+FF~ud~}uNF؉F~~F&EF~~&;E~ F* F~FVljFVv~&5~&~}pF؉Fb~~F&EF~~&;E}N~FVljFVv~&5~&~} F؉FNF;F~>Nfv~F&v~F+F&v~vF8fv~F&v~F+F&v~vF+&~~FF&FFFv&<~F&EFVXZ\LFF΃~u>t5>t.>t'>t F*vց>Ȳ&βFFF;Frv~&F؉Fҋ~F;u+F@Fփ~uFFFԋ~~F&E;F}OFF~v6~~F&=u~~F&E;F~~~&E;Fu~~F&u F;Ftv~&F~u ~&FfFFʋF;F}v~F&;}v+~FVRP~GFRPF+FP,v~F&FF~u~~F&Fv~&=~V~FVljFVv~&~&Ft$Fuv~&;v~& ,F&~FVljFVv~&~&FtFOFuv~&9v~& )~~F&~uX~~F&=t~~&=tN܃~tC~GFދVRP~FRPF+FPNF։F؋F։FFNFt L'~t~uFFF;Frv~&FȋvF~&Fƃ>t>u^FЉF‰FFPFP^FPFP^~tNF‹F@PF@PFPFP+PF~ufrvvvv+PF~uV~u+\5>Zu+ZƊFFNN~tFFVL+]UFPFPF u@F ;r ;u ~sFP^ SvRPPmmPF uzvPPPFe^^F~uv PPP F~tvPPP Fv F~tF]UFPFPF uF ;r ;u~s ^&gFP^ Sv RPPrmPF u?vPPPFk^^^&v F~tF] U FPFPF uF ;r ;u ~sivPPPFm^^F~uv PPP F~tvPPP FF]U FPFPF uMF ;r ;u~s ^&.v PPPFm^^^&F]U^SvP]U^SvP]U f~ &F~&~&F~&@F~}FFFF;Fr~ F &*~&FF;F|~ &E*~&FF+F~&~ F&F~;Fs&F;F}~ F &*~&F͋FH~&F~&+]U&f~&E& E u 1~&E& Et &E&UHJFV~&} u ~&E~&E F~&EFF ;F}FFFFF )F)FFvvv~&u &uFPFPFPFPFPF܋F;Fv~~tuF FF7,FPFPlF܃~tG~tF FuʼnFޡŋʼnFVF;FrF+F@FF%FfF+F@FF%+FF~&}&E*FڋFfڋF;s ,FFVRPF+F@P~&u &uF*Pvv&u"vvlF܃~ux~&EFF*;rFF*;rF~FVRPvvvvv v~&}&E*P~&u&E1*Pv8lFܚ,F܉]UQ^ &v&F^ &&)F^ &]UQ^ &v&+F^ &&F^ &]UQ^&Fv &^&F^ &]Uv~ NVC&C;}QK&C;~7rtsC&C;|FFrtsC+܋^^+NN&] UQQnP@PHF tPFPPF u~uPFPPF u~uPFPPF u~us F unPPF uYƣơƣơƣơƣƸ@ƉƣƉƸPPP/F&O &O Ƌ]UQQr  usvv^ S^SWF׋Ƌ6Ƌ,ƿ^ &FƋ>ƚ,ƿ^&r^ &)Ƌ+@^ &Y,FV&ƺȋF~ך,ƿ^ &^ &9v&^&)Ƌ+@^&Y,FV&ƺȋF~ך,ƿ^&^^ &9v&^&9v&Ƌ] U r  usvv^ S^SszF+¿P&ƺYY,FV+A,FFF+¿P&ƺYY,FV+A,FFF+ƺFVN+ƿN~Ƌ>ƚY,ҹ^ &FVƋ6ƋY,^&^ &9v&^&9v&Ƌ] Ur  uLs^ S^S1^ S^S u^ &7v&4^ S^S)]Ur  uZs vvosF;r3;w-F;r$;F;r;wF;r;v*vvFPFP uvv]Ur  uasv v vvsF ;r3;w-F ;r$;F ;r;wF ;r;vrv v F PF PƋFƋ>ƚY,ҹ׉VFƋƋ֋Y,Vv v vR]UQƢƚ usv v vvF ƋN ƋVƋ^+BV@+N׋,Ɖơ+@F@N׃,ƉơƋ]U usv v vv>u>u >upƴ;rơƣƠ~qƴ;rơƣƠƴƠoƴ;r Ơ}ƴ;r ơƣƋF ƋF ƋFƋFƸPPuHPsHPv v vvơ]UQr  u!sesv ^Svrv ^Sv uX^&=t`uH^&w&wGP^GP)&v FP6 uF^&G^& Ƌ]Us v3P^Se u+^&&WF2^F &&W3] UF>t=t P  ]U~u]^&FF~tiFs_h^&72P,F3^&~t3^& u+JV rF^&^&F 4PF u5ǴF4ǴF8PF u>ǰ?Lj@AV BNj8ljDǴFHJǵƉPnjRT@>P$F u68Ǹ:PLF u 9Fr>tƀLj7>t Lj\ LjǸЉljljlj ǰ Lj Ǵǂ>u>t  @ljljǁ~ r$ƀuut \>t `c8t!>t8tǁ>$r?ƴ NJǴ"NJ ǀ ut$ǹ;s;t>&r>sC>u9> Ǐu/>u%FPFPF tF NJF (r ,> Ǐt ,@,>t> Ǐu../>u r)Lj*Lj+)Lj*Lj+NjF ;s;t~r>$r1@9FwF~NF6PF u66^SvUFPFP"|V^&?{t@&?[uT6`:!t. FPQSVSVQ^[Y=Xt ],N~] t&<uP u>t&GɌɃ>u]ð]UQQPɣʍP$ uJF6PL u8=u0P$ u!F6PL u=t=!t3]^ &G :=uSvv^ &G :!tWSvvLn ^ &G ^ SvvLFNs=u8^ SFPt~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 :t^ Sj\F 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^SjF 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: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 ^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^&uFF^&G :!t SvW\6^&du ^&G ^SvW\F!^&G F^&G : t:t :!t^&G&G &W"FV&9Wu&9Gw&G&W^&G&9G*s&G*FP&t@"FP$F u^&uSlLF t^&w8&S^&w&w"&w G<P^&w: F t@^&G-^&G &W"&G4&W6^&G&G.^&F&G0Z&W2^Sv$F Yu,^&w8jGPj ^&G :u ^&G : Ȱt@&& tA"F&G :!uC&du ^&du &G ^&G-sS&G :u0G<PFP1^&G : t:t:t ^G<PFPFF^&w:FP u ~u~uߊFs^&w8jGPj FF^&w8 F^&w:)F^&G F u F uFF :r10^&Fr^&0FFF 10^v&F@ vvFP F^SvhF^&:F@F^Pvj]FF^&:F@F^Pvj6FF(FFF^SvRQPNQNQP\F u$F t^ SNQvNQPj<F~uVFF^S0PvFP|F u2~t,^S1PvFP|F u~tF;Fv4N+NA^v0^ ~9^YFF+F@^&^&<{t<[tF FF^&^&?{uFS2PvFP|F uoF sdt_NAv~^YF@^&^v&483 ^& ^S>PvFP|F u ~uFHN;v9@N+^vp^~&=9^YF@N+^&CFPF u^&O@wA^~&=9^Y^&G@^&^v&48?^&v&4^P^&wg&we^&^v&48A^&"^vFF^&F^&G^vNFY^&Gw^ &Gj^&GyF^&^vNFYFPF uQ^&G@^&^&O@wA^^Y^&Ƈ^&Ƈ^PF uN^ GkP^ &PFPFPjdF u#FPvhjj^ShEPj Ⱦ^&G F =wmt =amt^SvFPFPjFdF uݍFPvjjFPQ؍GPQF!t=u~^&Gi^GePF9FvF^kvN@YF^&^S^Sv^SFPdF tF~u;^SvRPPRPF=u^v&xF^&Gi뾃~t<džCFEGv@CPEP}FF7^SFPvRQjv PvF u ^&G $s ^&G8^&G8Fvj^ Sj7F t^&F^GkPIP^&PFP|F uFt @^&F^& ^ &Ow~&=^ 9^NOY^ &G^&F t$@^wk~ ^Y^ vxJU~ B^&G :t ^&G ^SFPFPPdF u^SrlF u}^&FFvN^S^SvmdF tJ^G8P^SvRPjhmm|F u"^&w8F t^&w8 FFU^&G :t ~v F^&Gj]Uv&D ~&] ~&] Y]^ &dtZSFP^& uV^ &du&G-sG<P^S^&^ Shwmvv^& u ^ &G ^&^ &Gd<tN<uSh\^& uH^ SFP^& u/^ Shrmvv^& u^ &G ^&U].0]U#U$VWQ^SY_^F^OGG w 3GGG؉GGGFG F GFGFGFGFGPS$]UU^ SG PPFP[#uMG~&wr/^ F%;u^ ^ FF;tX F ;FuX] ^&^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<PFPF^&G-^&G0FF^F&G4&W6Ft.H^&O.+N^v0^9^Y^&O.N^F&)G.^v^&G0Z&W2F^&.uF tuSvF 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^ShF u^&G : t :t ^&G&WFV&O&O &"N~;u;wN~Fs FF%u =F uFFPF tF= r= rF= t = t= ts*v^Sv^Sv^Sv ^SvvZEs'^Sv^Sv^Sv ^Svv*jvv^Sv^Sv^Sv ^Sv\F hFPjF up~tjEs-hv^Sv^Sv^Sv ^Sv\(v^Sv^Sv^Sv ^SvF~uCF!>\tF tt !tF*~ v~v~v ~vv~ڋNFv~ՋNF~ r'vRPQRPQPjPjF~tFF9FvJtFF t Ⱦ~F t ȍvڿ~u~tI~ r)vPvPvRPQRPQFvPP4F u,FPF umFڈF۰F܈F݋FFދF؉FF FFFFFFFFFFFFFFF FFFFFFFP$F u,v؍FPLF u^&G ;F t^&GF~ uN~uNP~uN F XPj@F t˸PPF t˃> u>s> v>Xuf>\t_FFVʃ~uy>VurjvRP,F u)R=8t =9t=9uFHP@VX`TF믂>Xu'>\taʣʡcʣ&>u =F ucFPF u^&G^&uvjP/>Xu :Fu vQhFFvjhF ue>\t[>Xuv^ S^S>Xuv^ S^SF u#>Xuv^ S^S F u &s6^&uFFFPPNQjRQPRQP5^&uʡ "^&7&w&w&w&wtF^&tFF<wH FFߠsRPQ^SjRPQRPQ5F^ F&@FuFF<wF FFߠsRPQ^SjRPQRPQ5F^ F&@FuFF<w< FFߠsRPQ^SjRPQRPQ5Fİ FuF FߠsRPQ^SjRPQRPQ5FİFF<w: FFߠsRPQ^SjRPQRPQ5Fİ FuFFߠsRPQ^SjRPQRPQ5Fİ̊F FߠsRPQ^SjRPQRPQ5F^ &GȊF FߠsRPQ^SjRPQRPQ5F^ &GȊF FߠsRPQ^SjRPQRPQ5F^ &GȊF Fߠs RPSvVQRPSRPS5F^ &GȊF FߠsRPQ^SjRPQRPQ5F^ &GȊF FߠsRPQ^SjRPQRPQ5F^ &GȊF FߠsRPQ^SjRPQRPQ5F^ &GȊFFߠsRPQ^SjRPQRPQ5F^ &ȠsRPQ^SjRPQRPQ5FhjP/F uF& &s#FRPQ^SjRPQRPQ5Vʰ^&8GtB>R9t&u"F݊F<wTʃаFu^&^ 0~޵FFF<wB޴PNݵBFuFF<wNTʃЋBFu4^&u,FF<wTʃаFuTʃj^&^ 0~޵FFF<wB޴P@NݵBFuFF<w:TʃЋBFu FF<wTʃаFu>R9u,FF<wTаFuTʰ>R8ud^&u\~v FFF<wB޴P{NݵBFuFF<w>TЋBFu'FF<wTаFuTʃ FPF u vv~tvFFFNNF NFF F?F*F r> u>rrsv RPQRPQFPjFPjF uH~u~~vNFv FPjRPQRPQRPQF uFPF uv^SvȆ^&^&G :Kt W^&G<t':t!&OFPsFr^&G^&u2F ^&~ t^ &?utPPP^ Sv ,_>u!FPF u ~ r ujjP/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 33&Nj:t :.t$C^Y tt &^&] ]U^&G :w):u&G t&G uF&G &G 3  ]U^&G jLF~uv&<tF~to~tEv&<u<^&?t'~tv &* v &*&4v &^&~tv &060A01ABCDEFGHIJKLMNOPQRSTUVWXYZPabcdefghijklmnopqrstuvwxyzpMandatory fieldInvalid cursor movementField overflowIllegal function keyReserved characterText characters onlyAlphanumeric characters onlyAlphabetic characters onlyNumeric characters onlySign cannot be inside a number No such valueNo help message No list of values for this field Invalid dataYesNo062F01062A01062F01060A01060A01060D01DATA060A01021A01020G01    021D01020C01$$X$}$?33#?33UU021D01 03?<020F01 \^ \021B01021A01SimplexRomanNatSimplexSimplexRomanNatSimplexNatSimplexSimplexRoman021A01[sys].userGraphicsFonts[sys]Graphics.fontsSimplexRomanNatSimplexSimplexRomanGLTSGLTSGLTSGLTSGLTSGLTSGLT020C01020F01021A014020E01020E03GLTSGLTSGLGLGL021C01-ZII020E0189>< DVTWPYX0123456789abcdef[KBD][VID]B22B21B25XE B27VE1[]}[!Scr]]$$.Tmp}[!Scr][!Scr][scr]<$>BsFilter.tmpVNVFp        ~tt{}MASTERSERVERLOCAL{}[]{}[]<>[sys]LptConfig.Sys&Press NEXT PAGE or SCROLL UP to continue(Press NEXT PAGE to continues6.4.7@A6061A02 Y060A01060A01061A01061D01061A02062D01)_TZ{(Th T_E\{Ts>THIT>J.FTdL/>Caption Color:  Line ColorColor01234567΀Red 0 1 2 3΀Green 0 1 2 3΀Blue 0 1 2 3@@P7@@Pz@@z@@z@@z@@z@@ z@@ z@@ z@@ @@@@@@@@@@@@@@@@@@@@@@@@'A'  ?*<0 CaptionColor;Enter color number (0-7) to be used for the forms captions.01234567 LineColor8Enter color number (0-7) to be used for the forms lines.ColorORedGreenBlue6؀ DEFINE FIELD Name:'Index:(Default value:%24Sequence number: 4 Control:  Justification:  Mandatory?  Protected?  Secret? Show default?  Auto-exit?  Repeating? 4Attributes: Unselected:  Selected: 4(@E. E2@E" E@E)@E *@5E! >@5E1 I@5E Q@^E! a@5E1 k@5E!  v@E3  @E 777777  ?*<0 fieldnameindexdefaultOrdering%Please enter a number in range 0..200ControlTxPlease enter Tx, An, Ab or Nu JustificationL,Please enter L, R or a number in range 1..15 fMandatoryNoYesNo fProtectedfSecret fShowDefaultYes fAutoExit fRepeating looksUnselA#Please enter a letter in range A..PlooksSelE@ ؀ DEFINE FIELD >User validation routine: > Help message:0<>List of values:.<<<<<<<<>Selected Color Number:Unselected Color Number:>>x@E<@E<@E <@E <@E <@E <@E <@E<@E<@E@E=@EValProcHelpMsg ListValuesColorSel/Enter a selected color number in the range 0..7 ColorUnSel2Enter an unselected color number in the range 0..7J`oGRAPHICS DISPLAY H[Graphics File]3HH3@@ sbPicSpec8 ؀ TEXT INSERTION 6File: #6 [Password:] 6[TAB expansion?]!66#@E @E@E sbTxtSpec sbPwdSpec fWriteTabNo3hw؀ FINISH 1Save?  1File: )11@E)@EfSaveYesYesNo SBFormSpecMJForms Editor Help J*F1 - Reselect the last selected areaӀ Ӏ F2 - Undo the last change'Ӏ Ӏ 'SHIFT-F2 - Discard changes made to formӀ Ӏ ,CODE-F2 - Start a new Forms Editing sessionӀ Ӏ 9F3 - Display a graphics image (Forms Graphics only) Ӏ Ӏ BSHIFT-F3 - UnDisplay (remove) graphics image (Forms Graphics only)Ӏ /F4 - Draw a line or box (single thin bar)Ӏ 0SHIFT-F4 - Draw a line or box (single thick bar)Ӏ Ӏ /CODE-F4 - Draw a line or box (double thin bar)Ӏ Ӏ 'F5 - Erase (remove) a line or boxӀ Ӏ "F6 - Read and display a Form$Ӏ Ӏ 'CODE-F6 - Read and display a text fileӀ Ӏ F7 - Write a Form/Ӏ Ӏ ;F8 - Define the characteristics of the selected field Ӏ Ӏ ?CODE-F8 - Define the color characteristics of the current formӀ Ӏ &F9 - Test drive the current form *F10 - Delete the entire selected area#CODE-= - Insert literal character##HELP - Forms Editor Help Screen#.CODE-(A-P) Define Attributes of selected area -(press Next Page to view table of attributes)J( Press Any Key (except HELP) To ContinueӀ JNLForms Editor Help L.CODE-char- Define attributes of selected area:L        Blinking/ -Bright Underline Rev. VideoOutline/    User-Defined   A   BX  C X DXX E  X FX X G XX HXXX I   XJX  XK X XLXX XM  X XNX X XO XX XPXXX X   ( Press Any Key (except HELP) To ContinueLP Forms Editor 2- ڀ1ڀ2ڀ3ڀ4ڀ5ڀ6ڀ7ڀ8 @2-@EK VersionB-1.0/USmsgformnamecbFormbytesU Forms Editor 2 1.ڀ1ڀ2ڀ3ڀ4ڀ5ڀ6ڀ7ڀ8ڀ9ڀ0ڀ1ڀ2ڀ3 +@322;@31.?@3yH@3O@3VersionB-1.0/USmsgformnamecbFormbytesm Forms Editor 2%:.ڀ1ڀ2ڀ3ڀ4ڀ5ڀ6ڀ7ڀ8ڀ9ڀ0ڀ1ڀ2ڀ3ڀ4 C@K;2S@K:.W@K`@Kg@KVersionB-1.0/USmsgformnamecbFormbytes PN  F O R M S E D I T O R NNM A I N M E N UNN51CREATE A NEW FORM 552EDIT/MODIFY AN OLD FORM553DISPLAY A GRAPHICS IMAGE554DISPLAY HELP SCREEN555EXIT TO BTOS SYSTEM5NN#PLEASE ENTER YOUR SELECTION (1-5): NN7@@ MenuOption6Please enter your selection, a number between 1 and 5.12345: ؀ READ FORM8File:.8[Form:].8Display[Column][Line]88 . @+E .+@+E6 +E#y +E? sbFormSpec sbFormNameiColForm9Enter a number between 1 and 80, or 0 to display centered iLineForm9Enter a number between 1 and 28, 29 or 34, or 0 to center=@O; R E A D A N E W F O R M ;;R E A D F O R M M E N U;;&1 SAVE CHANGES&&2DISCARD CHANGES&&3RETURN TO FORM&; *The current Form has been modified, select )one of the options to Read in a new Form. ; #Please enter your selection (1-3):  ;;0o@@SaveDeleteOption/Enter one of the available options, 1 , 2 or 3.123|3Ra WRITE FORM1File:)11)q@|@ sbFormSpec060A01  ?*<0@AB.020E01BBBB2, DNn"DNn"~;8 ׳]0 I@|Yt&wz^Pc|u~r1d&X4#]I.u!&FI~L M r5$cCt͍021A01?021A01"f 021A01̈f"Zj*V<(Pp0`` @  @020E01[Kbd][Vid] [Lpt][Nul][Debug][SysIn][SysOut]>ddd! d#>d%\d)4d*]d7ud8T\\\\T\\a]y]yB.\B\B.\Z]y \Oddy]y ]y {y2tLL;4d >ʜ> ʜ [KBD][VID]      HIEDLMC abcdefghijklmnopqrstuvwxyz !'+,-./0123456789;ABFGJK[\]^`{|}  " @,?,?,?T,?,?,?,?,?,,,, =Xgv##Diiiiiiiiiiiiiiii(6|||W|W|W||||vvv@@@ Ⱥlllllea l(l0l l l b@lHlPl@l@l{_`lhlpl`l`l Rlllllm ` lllllPlllllQtlllll]Utlllll V l(l0l l lp W@lHlPl@l@lXl`lhlpl`l`l\Ylllll[<lllllq\,lllll]$lllll^GW 1Copyright 1992 Unisys Corporation. All rights reserved.Ver s6.4.5 Linker 12.2.0(.]nsx}%Ec:GMUo '++++[+m++ ++9++ +&+]+r+S+9Nio+1Pms `Yj*;_$X|9?M?`zN&,NBH`y/Po5) $ x L J ? )?Qu9R5,QHNqw>2+tz#VB 3  (-2EKy R(.TZ)/X^8>IO_e39bhBHSYio   ' 0 Q W a p u         m s       ! 0 D T Z m s            X x }        !5_dr|8v,<OXq 8[d"5;\in}.VvJap  1HNCk"'TtFKWz )?Sf /5Z`#2ERX]o"(-c $=ouZ` M"d? ~     0        ! @ Q `     4 B Q BS{ *PXm!! I.4>Jgpu CuNSX]+0Lpv{88Y#(=RX4)GM1     4     4 W1iii i%i1i<iNiWi\iaiiiiiiiiiiWiiiii5ipiiiiiiiiiiiii(iEiJiiiiiiiiii,i1iIisiiiiiiiiJiPi|iiiYidiwiiiiiiiiii7iLiki0XN>qQ%\I~>Ai7pv{W]h#9YsyE$L[LV 1 1 B1 o1 w1 1 1 =1 1 1 ~1 1 ?1 g1 1 1 ) F e w  ' n |      3 g w   ) 9 \    A G T Z l r  < {     . < 9 R \ m          " 5 ? ] p        % > H d w       9 9\ N\ \ \ \ \ \ J\ c\ x\ \ \ \ \ D\ X\ \ \ \ \ \ '\ C\ c\ \ \ \ \ \ \ -\ D\ ^\ r\ \ \ #\ :\ T\ h\ \ 6\ \ \ $ 7 = Q ` s y 9 d n      A G r    @   m q               * 4            Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1Z1[1[1 [1[1[1[1[1[1#[1'[1+[1/[13[17[1;[1?[1C[1G[1K[1O[1S[1W[1[[1_[1c[1g[1k[1Ek ',16;@EJOTY^chmrw| !&+05:?DINSX]bglqv{  %*/49>CHMRW\afkpuz $).38=BGLQV[`ejoty~ #(-27<AFKPUZ_dinsx} "',16;@EJ 0 F  F   W  T     < b   ) 9 X       ) @ P s     [ y # B R r % A u * C \ k : a   )   8 " G g      - > ] s     D i  e {  L f   -  ) `       & , < \   C''''b'h'''r''''d'j''T'y''-'3'''d'y'''\'b'''''': '@ ' ' '" 'Q 'W ' ' ' ' ' '0 'h ' ' ' '''''t--y---]-j--------A-j----,s"p6Ee+Kp/=cq^u- >$g)@f} p,U#l"lEl#K+l 2%X 1QX% P+ULFPFPP( PRPPFPPiP>P(Fs +<tFiVPjPPP P(ЉFVNVSRPQQF tVP* P(PQk F^ NVRPQPFPPFPP0 FVP* P(PQk ~u P4~u ~u P~t><t FPP]U] ULNPпpWPFP>P(F<<&<<PtPFFP4:Fuc+^^Y6b>f^Y6j>n ^Y]U6^>Z^Y6f>b^Y6n>j ^Y]Ui&GFFi&GFFFFPw FFv}FPFQN F Z;vVFЉVFFFFF FF~t}FsNNNF;ȲtBV`^Pv v^PF`^PFPv^Pvv> FrFFN}] U i&GFFi&G :Fv+FiX ^F&G:F v &G:F w=F ^&F N &ON FQ ^P^SR P(] UXiFP ~u Pi vvvFރt~؍t~FPXsY^􍇐,FڊFFFFFFFt؍~$~F~F~uD~FFFFF@F܍~F~FP,P,P/ iiF<wNQY:rvPvFԃt'؍t~FPXsF9Fu9FuUL~tF^ȍ,^S^S^ڊPu@N:NıuA N:NƱuA rV*FF:v FuN F jPFPFPRPP2<PP P(&2,tQPP1swx,njޱ;u$:tsx,S* P(iƆwx,z,PjPPj=P P(x,SvލFP,Px,SFPPvؚ Pi7~ uu P(~uu P(x,S* P(iFPFPFF؈FQPFFttQPFFtQPFF>0<tP6,F0<ȈF FFFP6,6,W F uF iFFFFrFFtsF܊FF:r*ƆFF:sRsJjQPPP8P(>u+JuƆ뤊r~s>v,u PiFsvPv2< Pvv62|,~,,x,SPQP1<PPFPP0 F=|u Pi2<^& G1< &G]U F,!|,~,,x,SQRP^SPFP(P0 F=|tI^&?tF+|,~,,x,SPQP^ S=PFP2P0 F=|u^ &?tF5|,~,, F0,wIFQ|,~, ,x,SPQP,PPFP[P0 F=|t>,v Pi)FFs ^&O^&g^&G]Ulb|,~,, ,F0<vFFvN,vF u!N ;s<vN򤍆Pv^ &w &w *F t Y^ &G td<F PPvPP^ &w  F={t F :s Pi;Ft+Fx,S|,S6,6,QPlPo FF t-0<^6,&^6,xNF,@,v@FFt] U~ tY>,tRv|,~,,FF~wF^v&F t%N ;w^ S^@PQuFF@FFu] Ui6jjPkPP(6jhPiP P(ƆfƆgj:hw3Ɔhii8kwgs PiyƆgƆilPhijPn<t<uPfrHjahbicmdƆePQR2P(aP, ]mhƆf>Uiiis>ru PiRPQRPQFPPFPPFii r=s,p=PjPs=Pt=P P("p=PjPs=Pt=P P(v +FPPP(p=PvPP(is+FPPFPPRPQRPQP(]UQQiiiFFtF;rs:s^7ww虊  ^7wwPEFF뽋]U:N FȈNϊV NшVΊV*ЈV̊F*F͸FtN^rNNFˋF;rr]v~FF^Ft'FFFVFV~FЈFɊFPFFY8Nv8FsNF8Fv:FwFrFFPXs$뿊F:Fv@FȊN:NʱsANrrFsFFFsFFʊF:Ft F:FtFF:FwFFF*FFFF~s9FtFF؍vFF؍tvFFFNFNFr~viFs  PiFrF]U8F u8F u ~uZ6jhPiPP(jPF ȴPF PfP8F ufuƆgƆgjPF PF PgFP>P(sjPF PF PF$jPF PF PF$?PFP4P(FF F :hrjQPF PfP8P(g:fuYguƆgƆgjPv v hPjPF PF PgkP>P(km]UF FFrF؍tF^~tbNF+VFV~FFPFFY8Nv8F sF:FuFrFFPXsɋF]U^8u 8GutP^kGjkj:sBlRQ^wPPn<t<uk^m^Gmk벰^G]U(>}=v Pi {=p=FP}=YFFFF؋F;}=r^^Gp=‰FGtRGF^^t‰F؊F@F^Gtp=F؊F@F^GtIp=FFF裄,O0<,0<;,r^vF,F,u١,F^G F^@F=vF^GtF}=r^ȿtFش^ȿv,FF;rrr؍t^8u8GuPs=^t=^G^Gp=F؍QP^G^G p=PG P^G ^GtgGFٱ؍^tp=F؍QP^^Gtp=Fދ؍QP^G^GtQp=Fܸ,O0<,0<;,r^܋6,@,,uދ^Gp=P6,^Gs^7wwG%虊 ^7wwG%PEFs :i:isi]UQQv,tF=vv,(v,F؍,^vNNFȉv,]UiƆ5PPPFt><B<r؍N<Ɔ5-F؍t><A<؍N<~ls#FPFPP(PXP(FP  iimPP@WP P(F^ NmRPQPPPPo P(F^ NmRPQPPPPo P(j<l<n<p<r<t<v<x<t-<#<#ѱ‹<<<~ tN<@<wOFڹN^ VmSQRPPPPo P(mP^SvPMP P(ƆsPPPP( tmP^SvPFP P P(mP^SvPPPFPP0 P(mP^SvPPPPo P( Ftu:Ɔ6u"uƆPPP`ű;Fv @%ꙋ;Fs H%ꙸPPPP(mP^SvPPPPo P(vvyP(vvPPP(rmP^SvPUP P(FڹN^ VmSQRPPPPo P(mP^SvPMP P(ƆsPPPP( tmP^SvPFP P P(mP^SvPPPFPP0 P(mP^SvPPPPo P( Ftu0Ɔ6u"uƆPPP`ű;Fv @%왋;Fs H%외PPPP(mP^SvPPPPo P(vvyP(vvPPP(rmP^SvPUP P(<<ćj꙾# Ǣ<<"ôꙿ#ױ ¢<<"ô왁 ¢<<"ô# Ƣ<"<#ױ ڈ<<t 6=PP<Js'JIKHr@S6DFH@PQk wFi=rjszjrii.iFT PiFP+F P_ b#F u@Pv+F<uiFsriiFb~t P(률Js)JIKHr@S6DFH@PQk ><t 6=PP]UFi=rjszjrii.iF PiFP+F P_ b#F u@Pv+F<uiFsoiiF_~t P(률Js)JIKHr@S6DFHi=j<<<FP+is6jFPFP P(6jFPFPP(^ .FF1N FFȴN+ȉN^. 5FF1N FFȴN+ȉNFN|2FV|&FFN;FFŠN;~ PiFFr~u~~F ~}FFNQNVRPQvvPvOr>F rMjPPFPNQFPNQFPFPF$P2 oP(Fs FPxFsFPFPxFFFFF:FsКk jPFPFPWPFPQP P(FFȴN;r Fu暢k FFFFFF:FsbjQFPFFPvWP>P(jPFFPFFPvP4P(FFFFFFFFPxFP, jPFFPFFP2F]UFF9Fw^ &N^&F:td>Z^u+JVt:&F+>ZF^u+JVt:&FF:FtF Fs] UQQv _ b#F u@Pv+< t/r+><<<u+JVt <&<< u<F#h u@F6lF:Fs6:l;lQQ6=lP P( ]UQF#h u@FP s Fr<P( ]U s<P( ]UFP+ir3~lsPXP(FP~lsPXP(]UP(F~Fiii]UQ^GFGFF8FvR^QOQPPGP>P(^PGPFPPGP4P(F릋]U^7www\ ^7wGGPw\ ^7www\ ^7GGPww\ ]U6jFPFP P(:l:juF:lu iii i~uF~uFFFFjPFȴPFPFP8F u+F:r:vFs~u~uFN밊FFFjPFPFPFP8F u+F:r:rFs~u~uFF6jvvvv <]UQQ<t@lPvPvPPPOF<t.P PP<P3PHPo P(ЉFVFP^SvPF tP* P(iKF^ NRPQP<P3PFPUP0 F<NOuI<<u< ><t<P* P(i<<<PPPRPPrmPF tLPi<<<<i&G ;<u*i&G j=*v=:r*´1<<><t<t<><t<~wuFsFi Pir  Pi-jPs=Pt=v=ȴP2P(<ii]U s,FPFP^Sp=P[ F tPiG P|ir=Fs=Ft=Fr=s=t=v^SPSp=P6p= P(Fr=Fs=Ft=~t|^Fx6(,Fv^GPF,PRPPP(vP(v^GPvRPPP(vP(i=R P|i]Uv& F%QQRQP=t3^ SPPRPPmmP t=6(,,^SQPRPPmmP+,626+,6u+QPRPP tXEuw^&7 u`^&7PPRPP;u0^ &^SPPRPPmmP]UQlr Pi-i&G FP:vNFvvi&w ]UPiji&GZ&WjSi&G P`i]Uii&GZ&WiSi&G P`iPi]Uvi&G P&G Pi]Uvi&G P&G Pi]U] U] UPiji&GZ&WjS"P`i]Uii&GZ&WiS"P`iPi]Uv"PPi]Uv"PPi]UQi&G FP:vNFvv"P]UQQiii sF:u=s u Pi4u=1Fs=FNN 1FN:sNu=N*V*:VsVF*FjjN:wɈjF*FjjN:vj:vjPPP(ivvir=p=PjPF*FPt=P P(F6jjPjPjP2P(jP, iiPPP(vv ]U i&G :Fv+FiX ^F&G:F v &G:F weF ^&F N &ON i&WVFi&g &WFF u ^&$ ^v&^&] U~Nt+JVt!^vPSP6Fu ^&@j^vPSP6Fu ^& @^SvFPP^SP u Fw u|F^&^&]UQ ~N^&@uE^& t &:^&t'2F^SvFPP^Sv&^&F^&]UQQ~Nt+JVFt.^&FA:ri&G PfF FfF^^0^9N^YFFNT] Uiii s-i&G FP:vNFF:u=s u PiQu=1Fs=FNN1FN:vNu=N*V*:VsVF*FjjN:wɈjF*FjjN:vj:vjPPP(ii&8G uvv"Pir=p=PjPF*FPt=P P(F6jjPjPjP2P(jP, iiPPP(jPjPjP2P(]Ui&8G uvv"PPi]Ui&8G uvv"PPi]UQjF]UQjF]UQjF]Ui&GFFFFi&O ;rFF&O ;s}i&G NPFFV F Z;vFȉNF FFFFF FF~uFsQFHFNINi&G PF FfF^^0^9N^NNOOYFr>i&G PfF FfF^^0^9N^YFFNT] UPi]UPiji&GZ&WjSi&G P`i]Uii&GZ&WiSi&G P`iPi]Uvi&G P&G Pi]Uvi&G P&G Pi]U i&G :Fv+FiX ^F&G:F v &G:F wGF ^&F N &ON i&WVFi&g @F^&^&] Ui&GFFFFi&O ;rFF&O ;s}i&G NPFFV F Z;vFȉNF FFFFF FF~uFsQFHFNINi&G PF FfF^^0^9N^NNOOYFr>i&G PfF FfF^^0^9N^YFFNT] Unjri=P  i~lsPXP(6jPPP(Ɔ:r:j=uu.i P|iƆƆ:sZjQPPPPQP P(utu뜊p=uƆ{=p=p]}=w6p]ȿr]džs;s+؍r]iiuƆƆˊsssƆsƆ sƆ.Edžs;s3؍r]iiuSP P ƆÊsjr}=Hs؍r]iiƆti+iii:sBiiiii+iii6itƆƆ[}=s؍r]iiGdž;s:؍r]iiG:tSP P Ɔ뼡{=p=p]}=>p]Ⱦr]r  Pir&iP, ~lsPXP(]UjPF PF PFPPNQP P(p=trFF{=p=FF;FvQ^Gt>Gp=uF{=p=FF;Fw^?ts=(^tt=(G^G8G vG ^w,FF_ ,NFF{=p=FF;Fw9Ft9Ft~u'^Gp=FS^S^Pue^Gv#D uPP' P F>^ÃF^Gv;tPPW P F^GF^GuE9Fu=O v:L w2L p=NO v^t+J;u ^G FFF~uB^PP: F^G t#GPP: Fދ^GPP: FދF^G~uI^P^G P: F^Gt(,^G+,QP: F܋F^G ^GtGtF댰]UQQF^NtaF:FsW^@F>:>u+J;u*>Z^u+Ju<0r<9v ~_tF롰]U4FPF u>~uF^S^ Svv{ F^&G FNt;ryAPF uF FF^&G F܌Fދ&WRY;t9&8t2&8Gt,^SvFPFPf F=uF뗃~u~u^Svp F urۃ~u~uFFNċF t t tFsF@F;FuF똃~uF ~uF 9Ft 9FuFF̴PF tP(FF+F] UF^&G F t#H&G ^ܰ8u 8GuFHFF;Fr FFPP(F^SvFPFPf F=u+F~u ~uF FH;FwFrC ~uF~t^SvFPFPf P(i~u^Svp b~u=F uFHFF^&G ^ܰ8ut8GuoNujFHFaF t t t FrF@;FsFFF^&G ^ܰ8u8GuF@F;FrF^SvFPPFPP% P(FP|iFF~t@PiFFuF^&w F܋F9Fs8^Gt%OE^&G Q^^GFFPP(+]UQ)lsfP* P()li*ls&6lP(*l$lSPF+lslS6"lF+lCVnjޱ;u$:t ^Si]Uk n#FL]UiFP ~u Pip>jub<tTȾ<jjj.OtINujF^jFj,l,liifPjPPj=P P()lF^ NfRPQPjP3PPo P(>jt2,ls+fPP PPkP PPo P(FFs fP^SvPF tCYfP^SvPjP3PFPP0 FjNOuIj~|u >jt~u PizF umFF^kfRPvQkP PFPP0 P(F^fQPvPFPPFPP0 P(lPjPjPkPkPrmPF=ugjj.OtINujF^jFjlQjQPkPkPrmPF~uq ~u2*lP$lPP(6l$lSFPF tF$l&?GtF$lSPFF@%"lPlPP(+l6llS6"lPPFPP(6lP(*lFFNr sPFFfP* P()liF:j=siFF9Frl&8 u& FuFFsFF)FFѴFƆ9F9Fv NNӵ;Nwl8 Nu+JVuFFFsnFFFFFN;vQl&8 u,F؉Fֹ1+ʉNԋ~؍: FFHFlv&v؈:FF뢋Flv0:N6FF܋F܉FފNҵ;sNƆ9jPFдPv䍆:Pvޚ6P(NFANN+INFF;FvƆ99s Fs} CF^ i^S]UPi]UPiji&GZ&WjSi&G P`i]Uii&GZ&WiSi&G P`iPi]Uvi&G P&G Pi]Uvi&G P&G Pi]U Fi&G :Fv:i&GrFiX ^F&G:F v &G:F w^&G :F u#&G :F uFPPP2P(FF ^&F N &ON i&WVFi&W2l4li&g F1@NF2l&01 ^&FsFPF PF P2P(] UQF%N FFuNFtNFtNF]UiFF&ONFj^X ^F&G F&G FjPPP2P(FF^&O ;rFF&O ;s}^&G NPFFV F Z;vFȉNF FFFFF FF~tWFs$FHFNINQPv vFPvr1 Fr vvv vFPvr1 FFN룠jPFPFP2P(] Ui&G2l4li&G NF F1~#ljF~+&G F&G fF F1FV#‰FVt@t<2l&&F1PF12l^&H&HFFNFuFtNsF1PF1PF12l_^02l9^NNOO;F1PF1PF12l_^02l9^YFtFPFFYNN2l&&F1PF12l^&H&H] FsQFtHFF;FuFPFFXFHFPFHFXFF~t2lv&v&FuBFt;1PF12l^&H&HFr FFSnNJFt@Fu91PF12l^&H&HFr FFNnNNUQQi&G ;FvZFiX ^F&G;F v &G;F wFs&F t$^&GPf F FF&gY;v] Ui&G ;Fwvv v PP01 F u|PP6lP>P(FiX ^F&F 6l&^F^&GF F1N^&^&F] UF:lF ;lF l?l ] U;l:lPFP8P(~t:lPlQ=l*ɵQ P(:lPlPvP>P(s:lPlP:lPlPPP4P(?llP=l*lPPP>P(:lP=lȴP>lPPP4P(?l]U:lP;lP>lQS=l*ȵQ>P(?l;llP2F t:lPlP2P(]UQllFlPP(PP(PPi&w lHlJlKlDlP<P(DlLlFlNl~lsRlrRl6Rl^llplrltlFlvlzlplPP(]UPFPPF t~u~lPXP(PTP(PXP(Fȴ@lNɵBlRRPQP(6@l6BlyP(6@l6BlPPP(~l]UQP F]U저lrFplrl utltl]U~lslt Flls]Tl~lslZl\l^l)rlZl\l^l lZl\l^l HlPP(lFs6FlFPP6FlFPF tv(~Hlt6Pl(lFъ~lrPXP(>l ulFszlll>luflt FlltMFl6l6l@lPBlP)P(jP6@l6Bl2P(PXP(MrlF>lFlll|l*~plu#6FlFPF u ~HluFъF]UlNPP^&P PFP&P P  PPP PPP PPP P  PP^&P PFP&P P  PPP P PP PFPP P PP P PP P  džPP^ &P PPP PPP PF P&P PPP PPP P  N;v{+ȉ;vPPP PPP PPP P^P P  zPPP PPP P  P" l]U>luCF@F^ G^ G ^ PvN ^ PvN ^ PFPN ]UQ>lu(FFHN;r^ P^&0N Fu݋]U>lu ^PG PN ^tlu]U>luv^G FON؋FF@F^G^O^FG 9Fs^OW;lu;lr"ll^76l6ll uI^7G PPwwFPl^GW^G^ F]UQQ>lu=^tjGW;lu;lr$ll^76l6ll uN^7G PPwwFPl u)^GGW^7PGPPl]UQQ~uNF ɈN~tANr'vv PPPv\ FPFPP \ FF왷ls$NQN QN QPP4P(vv v vPo\ F F :Fsns$NQN QPlPP4P(Fr2vv v PPv\ FPFVPP \ FFss'FPF PF PlPP4P(Fr)vv vPPv\ FPFPP \ FFvv vvPo\ ] Uv v vvP\ ]UQQ~u}NF ɈN~tANr"vPv PPv\ FPvP \ FF왷ls$NQN QN QPP4P(vv v vPo\ F F :Fshs$NQPF PlPP4P(Fr,vv v PPv\ FPFFPP \ FFys'FPF PF PlPP4P(Fr)vvv PPv\ FPFPP \ FFvvv vPo\ ] Uv v vvP\ ]UQ~ t~~txvvv vv\ F u`vvv v v\ F uEvFF Pv vv\ F u$vvF FPv v\ F u] U~t~uF FF F:FroF FF FȊN:rUFPQFPFP8F u=FF u FuFu] UFFFF:Frv N QPPPv\ Fv v vPPv\ FV"шV"ÈF:txF"ÈF"^^:uF^FFvvP \ FvFPP \ Fv F PvvPo\ v v vvPo\ F/]UF FFF :Frv PFPPPv\ Fv v vPPv\ FV"ӈV"ÈF:uF"ÈFV"ӈV:uFVFFvFPP \ FvFPP \ Fv v FPvPo\ v v vvPo\ F ]UFPF PF PFP8F u FF] UFlllll]UP 6llPlP P(llllP ]UP 6llPlP P(P ]U>lt@]U8lu^^G^G^Gfl^l:lw^Gl*ll^Gl*l^Gl:lw^Gl*ll^Gl*l^G]UFP ^~t+JtD^?u 5P ^GlGlGGȢlGGȢlP ]UP llllP ]U >lu~lsPXP(FP FFFFF:FsyFFFFF:Fs_lQPFPRPPFPP P(F4FlQNQNQPP4P(FF~lsPXP(]U >F s>i&G :Fw]FiX ^F&G ^ &^&G (FPFPFP0 oF uF^ &F^&] UN F;t t t5>F rlPP(>luFFFF9F w9FwF9F wNsRi&Gi^;u$:t'FPNFQNQ^P1 %FPNFQNQ^P8FF ubF9Fv)NQNQNQ^Pk F u1F&FPvv^Sv ^Sv< F u]Ui&G ;Fv;FiX ^FN F&W;rF ;r &G;Fw^>F r!FPPv FPv PvPP2 o6^&GF F &ON N &VVvWQRPRk ] Ubvv v ^S0Pvvv^S0vX~N*V^FFu*:u$&%Āuub]GtF։N+~v~u:Ft;tVQRPP^ Sv+RV RF+WV0#uiXXZY^#uvv^Sv v 2vv v ^S0N~vOG&uu^Svv2b]n]Uvv v ^S0V$ڱˀ Êˀ ÊڱÀ ~&] Ui3&Gl&Gl&G lFNlF N ^Nl;sH-l.i&nPQVWSS6l2;[PQVW_^YXKu[_^Yƙ66lޜ6&lǙ66lXR6&lZS6l2;[XRQVWPSGt$&-t &3uu3[X_^YZKu] U>lu=u].l] U>lu=u].m] U>luz=u].!m]U>lu_=u].=m]U>luD=u].Ym]U>lu)=u].um]U>lu=u].m]U/FP/P^шl=ty~uWlllmmm-m!m#mIm=m?memYm[mmumwmmmmFP~u~uM~ut~Ԅt ~ԒuF8Fc*lll mmm%m!m#mAm=m?m]mYm[mymumwmmmm~~tZulllmmm5m!m#mQm=m?mmmYm[mymumwmmmm~ul~tlmllmmm9m!m#mUm=m?mqmYm[mmumwmmmmlllmmm1m!m#mMm=m?mimYm[mymumwmmmmUlll mmm)m!m#mEm=m?mamYm[m}mumwmmmml]UQQ^S^Svv{ F^SP^ S^Sf ]UQQP(FPF u ~u޸]UF^&uxFt ^&O I;syoF^&G FF^&G &G v&dȋ^FFF^&Gt&^&tF^Sv^S-FFs^&GΙ&Gv&ϙ^&G&DЙ&Gљ&GF^v&t 0љFF%ĢڙtD^&G^&GFљȊ^:rt < t ^&GFuظڙ$u@əs;0^&G &G ^0ϙ0љFFs:^&Gt^GPPP/ 晣虋晊FΙPϙPЙPF% FPљP4P(ϙҙљԙʙęřƙÙN@ ɱuA˙N ɱuAN͙̙FPP(F$u@™^& u&O @^&G u&O ^&G $ٙ&O "ʈؙu&"W V^ &FFPFPv'Ǚ>ǙtY ٙ.u{>řuw8ʙu`^&O Nԙ*ʈ֙ʈҙNs~tFřFҙF(ҙҙ>ʙuԙȴ+FҙՙՙҙFҙFFʙr™rҙәΙPҙPЙP2F t+ҙȢҙ͙ΙQPЙP2F t:rיPF tD PۙPQpF t]㙢יߙ噡ۙ%@ w@䙰șFs3s.r'Fיt":tZP(Wי8tD:t<:t4<t0:t(:t"<tיu9^&G#t tv&|u ^S'8^Sv-(Fsٙ.o ʙ:יuؙP 'י8t<uC>řuPP^S'Fҙ:֙uřʙ͙hҙ͙\:יuE>řu+ҙ:֙u pP4ҙՙә̙!PP^S':יu.>řuPP^S'F֙ҙ͙:יu->řuʙ֙Ȣә̙PP^S'rי<t78t18t+sIי<t8u>"t:יu,>u%>řuPP'FCPP'7ייts+>יu$>Du™Т™WPP(:יu>řu 'ؙP 'יt ^S'יؙu P 'z>ؙu,י<+t<-u!>řu ^S 'T$PG>řuP^S'0P^S' ʙ>Ùu'>יwÙPP^S':יuؙu P 'Ùrי<t78t18t+s6י<t8u>"t:יu>uPP'Fsייts+>יu$>Du™Т™WPP(י8t<uPP^S'F:יu+ҙ:ԙu pPҙՙә̙:יuPP^S'F:יuʙԙȢә̙יt ^S'gיؙu P 'M>ؙuי<+t<-u ^S '.P^S'>Ùu)>יwÙPP^S':יu!Ùrؙu P 'Ùי<t8ulFϙ:ҙr7Fs˙r pPי^&G^&GǙkҙ͙™sW>יtMPP'C:יuPP^S'':יuϙҙ͙F :יuPP^S'rי<t@8t:8t4r/י<t#8u>"t:יt>tPייts*>יu#>Du™Т™WPP(Gיt ^S'.יؙu P 'P^S'UW 8șt8u CPəsƙיҙ0י#s]>ٙuVԙ:ҙuFs™s P(FΙPҙPЙP6יP>P(ę*ԙ:ҙuP>ٙuIFs™s P]ΙPҙPЙP6יP>P(ęF.ΙPҙPЙP6יP>P(ęF˙s ^S='ԙ:ҙuҙəs.>ƙu'^&G &G ϙ0^9љΙPϙPЙPPљPP(^Sv뚀'ę^&G^&Gər.FљȊ^:rPt < t ^&GFu2ϙFϙљȊ^:r0t < t ^&GFuԠs&ΙPϙPЙPF%虊 ΙPϙPЙPF%PљP4P(ΙPPP2P(]U<,t .:t^ &GF&GFv FPFPF ue~uF:FwSF*F1F~uF:Fw2F*F1FFFFNNN8Fr8Nsw{^ Sv ^ &GFFFF:Fs,FFF:Fw^ v^F&$F&N&ONtfs ꙊFv FPFPvFP4Fv FPFP^GPFP6FFNp^&G:r:ws 왊Fv FPFPvFP4Fv FPFP^&wFP>FF@FF u9FFFtF ^ &GF^ &GF^ &G^ S ] U^&ux^&GF&GF&ON&GF&GF&GFNF:FsFFF8Fw^v^F&N&ONVRPFPPQ4FFPFPFPPFP>F u;FtFNF@FFFnFtS^&G]UQ^S^Svv{ F^SP^Sv^ S^S% ]UQ^S^Svv{ F^SP^ SF P^SL ]UQ^S^ Svv{ F^SPp ] U^&G FFF;Fs^SPp F uF]UQ^S^ Sv v{ F^SPv ]UQ^S^Svv { F^SP^Sv  ]U^&G FFF;Fst^&G FF&|^AFFv&t^&FN;u.^ S^SQu^&G t &G;FuFF넸] U FF$F^&*ɈN~,Nu+JVu~.Nu+JV~u FFFFFN*ɈNF:FsFF{F:FsFF{F*FFFsFFFu!~tFrFF^ &0FD~uZ^&<+t<-uL~tFr%Fȴ^&^ &F^ &0:^&^ &^ &G0F ^ F8vNFY~t=FF^ &,FF^Np^ yN^YFs,~u~u ^&FtFF^&F^&ȊN:r'^ &<,t<.uF^ &FuʋF]U6^&ux ~uyF^&G FF^&GF&Gv&F^&O&LN&ONF\^&Gu+FPFPFPPFPP((^&G &G ^0NFFFȊN:rt< tFFuۊFrcNt+JVN+ʋu+JVu F+FFFv\NN^&Guz& ts^&G t4FFP&w ^P^&w \PFP&w  F9^&O S^_^&t 0\^&G FF\PFP^Sv^ S^SP ]U F^&ux4~uy)F^&G ^F&8u &8Gu^&GF&Gv&F^&G&DF&GF荎VQP^ Sv FP^SP F u!s^&Gt,^&G &G vP&D_^F&u^&O t$VN򤍆PvVP'^S^&wVPvP UĞ&0Ğ&@u ~N] U~.u+JVt2~:Nu+JVuFFdF^^&?tdF@NFN&^;uQP~WStNF;v.^PR@+QFPPFPP F tpF^&FNFNFsFNFN^Sv^Sv^ Sv^&S^&FNFN!z]U~ t{~Nt+JVuFFFF9Fv8^&:t*0rJ9wEF ^v&0FFN+N^v8t+JVt|F^&^&]U^&G &G PF^FF&|^^FFFFN&V^&8GsNNF:Fv}FF@FH^&FFF~uF%FF8Ft^&G:FsF8Fu]F^&FF@FH^&FNF;r^vQ^ SPF~U ^ &G &G PF^FF&t^ ^FF&NFF:FvFF@F^&FF܋FFNFN؎]U^&"^ &^&"O^&] UF#^ &#N^ &O]ULFP,PP(~u ~uFssB왣ꙍFPPP(sF^&G FF;Fr.^&G FFذ&8u&8Gt v&D &D ^&gȋ^FFFFw^&H?Fu^&G"&W "ѱ&W "ѱ´&G "±&_ "ڱ^&"W´왠s,PP PQRPQRPQP(.PP QQRPPQP(]FUQəsƙ͙̙~uHΙQϙQЙQPљP>P(əsϙ0љs~tϙ:ҙvcΙPϙPϙPЙQҙ*ȵQLP(ә8ҙwP(ərҙ8ϙs6Fҙ*ϙ:r^˷0S^0XFuҊϙҙ:ԙrΙPҙPPЙPԙ*ҙɵQLP(ΙPԙȴPЙPPP>P(əs=ҙFԙ*ҙ:r^10Fuۊԙ˷Ƈ0 'ę]Uϙ:ҙs̙̙ԙ:ҙv͙͙~ t~ uԙ:ҙr[͙rT~ uϙ:ҙwE̙r>̙͙ΙPҙPЙPP8P(>upؙ<tu pPməsҙƇ0 # ΙPҙPЙP6P>P(~ u ϙ:ҙt~ uԙ:ҙu˙s ^S='~ u ҙҙҙtȢՙ ҙՙ̙͙̙~ u[ΙPϙPЙPPљPP(љOuIϙAҙ:ԙuҙҙXϙԙȊ:rPΙPQЙPP8P(>t$tȢՙϙ:ՙvՙՙәu]UQ~ t[ٙs:ә8ϙwٙuϙ:ҙv^S='ΙPϙPЙPP8P(t>ؙu< t>ؙuQԙȊҙ:vDəs 1$ΙPҙPЙPP8P(<+t<-uҙϙ*ȈNF™sҙә*ȈNFΙPFPPЙPFPLP(əs$F:r^10Fu™sәÙҙ:ԙr͙s>ؙuUי<+t<-uJ™r$ΙPϙPЙPP8P(ϙ:ҙt<+t<-u™sΙPԙȴPЙPP8P(>tUϙ:ҙuU>ؙuNəs ؊0"ΙPϙPЙPP8P(<+t<-u $P|ΙPҙPҙPЙQԙ*ɵQLP(əs?ԙ*ҙFԙFF:r^˷0S^0XFuș]Uיuəsϙ0nљ)ΙPϙPЙPnPљPP(љȊ:r,nu+JuuǠr 'ؙt 'י@uڙt >u`!י":t ":u bP+>u CPי^&G^&GǙ]UFٙ.U[g>řuL1™s%ϙә:w4uڙuəsϙ0lљ)ΙPϙPЙPlPљPP(љȊ:r,lu+JuuǠs `P^&G^&GǙ]U^.   P]U>ٙunərYΙP֙PЙPP8P(:u<ΙPϙPЙQlPљPP(.֙0:tCϙ0lљ֙*ϙϙlt+JVu ֙ȴ3֙ȴl+t-u!֙ȴ֙llƂl0֙ԙ*ɵmu+JV ulɈҙřʙəsEϙl؍0љϙԙȊ:rltƂl#uݠΙPϙPЙQlPљP6P(]Uəsϙ0jљ)ΙPϙPЙPjPљPP(jљt+JVuvj<+t<-t}љȴN;v(љ+HkȰt+JVuGəsϙ^0ΙPϙFPЙPPP>P(]UΙPҙPЙPP8P(>uSԙȊҙ:wəs 1$ΙPҙPЙPP8P(<+tO<-uWIҙ8ϙs)ΙQȴPЙPP8P(>u™s™sҙ:әt $P P^S']UQQ֙ȢҙəsΙQPЙPP8P(>t;<+t<-u6ҙ8ϙs'ΙQȴPҙPЙPPLP(F0F~ΙPҙPЙPF֙0ҙ0tTҙ0<+t<-uGҙ8ϙs3ȴҙ00ΙQSЙP#PP>P(ҙƇ00ƙ#~ΙPҙPЙPFPP6P(֙ҙәřę]UQ>ٙu-^ &?r^&^ &F3^&љ*F,ٙ<t<u$^ &?r&љȈF^ &;s&] Uٙ.>řuљ*F,֙ҙ*ϙ*Eҙ*֙^&^&@0˙s^&9Guҙԙ*ҙҙ*ϙ^&]UQF tCv ~^YFF HN;r!^&<,t<.u ^v&Fuԋ] U F^&G FF&GtMv&D &D ^&gȋ^FF&Ot^FF Pr RP]U"F ^ &G FF^ &G &G v&dȋ^ FF^ &GF&Gv&F^ &G&DF&GF&GF&G u&O ^&G $ؙ^&GF&GFF%ĈFt^&G^&GFPPP2P(Fs:^&Gt^GPPP/ 晣虋晊FFPFPFPF% FPFP4P(FFFÙ!FsFFPF ts>s7r0F^߷t":u CP P(FNrÙsÙF:Ft:F;~u8^&G#t tv&|u ^߷^ Sv - ~u™Т™WPP(^߷":uF:FuF%F ^߷":u~uFN^߷tNu^&Nߵ^&O^&GF^&GF^&GF^&GF|ؙtF:uÙe^߷ؙtP 'LFF^ S^&wFPPvᚢ F:>u+J"&>:>u+J$>"u&>Z^u+J">$u&>Z^u+J$&]UQQ&r~Nt+JVt_^v&F&8t%&:Ft8:6"F&8t Z&8uF$:6$F&8t Z&8uF|F~N F ^&]U^&sFF FFFF;FsFv~N^YF^&]UPPLQPMP4FlMPPLPlPMP6F^M&8w^&k^&?tN4P6PP(>4 r,PPLPOPMP؍OQP: P(H1O>0(&?u,J W<9w@>J9 s P(sPPLPꙊ PPLPPMP4FPMk*1PLP^GPQ6F 4 r s2]U4P6PP(4 s s0PP(P>P(PP,P>P((&G"ȢLNrGO DF(&O HD&J,&T(&G"ȢLNrF&O8:(O DF(&O HD&J802(&G#MNsN>4 r'QQ6LOQP؍OQP< P(H1O60F(&?uT&G<>(&G@BJ <0WF@6J0wF]UFPFPF uq~ r-FPvv ^SvRPP< F t=>FF9Fv.NQNQN Q^P8F uFʸ] UFPFPF u(~ r~ sUPPFP>F um^&G :Fw\F^X ^F&G^ &^&G(FPFPFP> F uF^ &F^&] U~u8vv vlPvF uvv vlPv6F] UvFPN QRPQ^Sv>x^&;Fvv]UxNdždždžPxu^PF8Fu]UQ^ PPF^ v&>xuP^SFPsFFѰ]U^ P@FFFF:Fw>xt^ P@FNs N^;st^&V*uF&>ZF^u+JVt :&F>ZF^u+JVt :&FF:FtFFLFFF^;s^&8*u& Fs F^F]UQQF>xuV^ PP^ P@:F u3^ PF^ P@:Fu^ P@:FuFF룰]U>xt^PFxuP^SFPF^PFNr"^P@F뷀~uxtn] UQQ>xus^PFxuP@FVN;w^ ;v +ʋ^ &FË] U^ G F^GWFVvFPFPFPFP^ PFYFVRP^ P@FF~%sg^v&8u &%tT1^v&ÉFPvs^F@F؋]FFFF%;r)N듋FFFN;w)NGU^FNFFFFF~tP^ F^ NV´3ЉVVŠ^3ӉVV3ӉVV3‰FNFN몋F16z^ F%1^F16z^ F1^^ ?u^?u] U^ G^ GN~+^ O]UQQ^^:t^FFuȈF^@>Z^u+JVtS:&[@^F@>Z^u+JVtS:&[@^FH^:Hun]UQ>xtT^tP^G ^P@F^P^G~u^P^GF]U>xt}^G FGF;r>OW^7G PQwwFPxuxu^GF^vFFv^w^O^FG F]UQ^P@F^P@FF]UQ^t>xu P@Fs^G t >xuxu]UQFFN ;sNv~N^YN F;v+^8F^&]UQF FN;sNv~N^YF^&]UQQ|P@P[#F tPFPPF u~uPFPPF u~uPFPPF u~us F unPPF uY훣›ě@ΛЛқԛPPP>F&O ܛ&O ޛ]UQQr  usvv^ S^S^񣼛WF׋Λ6Л^ &Fқ>ԛ^&r^ ڛ&)ʛƛ+@^ &YFV֛&ܛȋF~ךƛ^ &^ ʛ&9v&^&)̛ț+@^&YFV؛&ޛȋF~ךț^&^̛^ ›&9v&^ě&9v&] U r  usvv^ S^S񣼛szFƛ+¿P֛&ܛYYFVʛ+ƛAFڛFFț+¿P؛&ޛYYFV̛+țAFFF+FVN+N~Λ>ЛYҹ^ &FVқ6ԛY^&^ &9v&^&9v&] Ur  uLs^ S^ST1^ S^S u^ &7v&4^ S^S)]Ur  uZs vvVosF;ƛr3;ʛw-F;țr$;̛F;r;›wF;r;ěv*vvFPFP uvvP]Ur  uasv v vvXsF ;ƛr3;ʛw-F ;țr$;̛F ;r;›wF ;r;ěvrv v F PF PFΛ>ЛYҹ׉VFқԛ֋YVv v vRR]UQ囚 usv v vvZ񣼛F N V›^ě+BV@+N׋ΛЛě+@F@N׃қԛ]U usv v vv\񣼛>u>u >u~;ܛrܛڛ;ܛrܛڛ֛};ޛr ޛ;ޛr ޛ؛F ƛF țFʛF̛PPHPHPv v vv]UQr  u!sesv ^Sv񣼛rv ^Sv uX^&=t`uH^&w&wGP^GP)&v FP uF^&G^& ]UF>t=t P46]U~u]U^&FF~tjFs`P^&7BP8FC^&~t3^& u+JV rF^&^&F]U DPF u]EFDFHP0F u]NOPQV RHTVXZ`bd@NPF u]6HJPF u] 9Fr>t7>t \ Љ>u>t @ "$~ r4&uut (\>t (`(c+*,8t+*,!>t*8t*>4r?./02 ut/4;s;t>6r>sC>u9>u/>u%FPFPF tFF8+r <>t <@<>t>u>>?>u .r9:;9:;F ;s;t~r.>4rA@9FwF~NF]UQFP<F u]6F^Sv#]UQ^&FF t<w7F9F vY^ &0r"9wFu^ &85v^&?v(^& ^ v&0^&F런] UQ^&&WF~ tYF9F vO^ &0r9v;^&&W Y^ v&0^&&WF며] UFv N^ &$_l th&?s^& h&?s^& jh&? s^&Qh&?s^&8h&<vpunP> u>ptn&Grt>tu]ð]U^ S^S]UFFFFFP0FFFFP<FFFF^FFPFuFF u)vFPFF^&F^ &]UFv]UF%P7FF%P&FF%PFFV‹]U~u~uF]UFP0F urFFFFNNNNFFMFFFF6vFPF u*vFPF u^& Mt^&G]UQQFP<F u v^S3]U v~Fv FPPRPQRPQRPQF]UF@vWv FPPNQPNQNAQNQPFFvBv FPFVNQQPQFPQF]UQQFP<F uvvvw]U FP<F u vv:]UFFFFFsFFvRPQ^SWRPQRPQF]UQQFP<F u(v^Sv^Sv^Sv ^Sv]U,>u zF uFFPF tF= r= rF= t = t= ts*v^Sv^Sv^Sv ^Sv\)s'^Sv^Sv^Sv ^Sv ,vPv^Sv^Sv^Sv ^SvF PFPPF uq~tk)s.Pv^Sv^Sv^Sv ^Sv(v^Sv^Sv^Sv ^SvF~uGF!>tF tt !tF*~ v~v~v ~vv~ڋNFv~ՋNF~ r+vRPQRPQӜPPΜPPF~tFF9FvJtΜFF t ȾӜ~F t ȍvڿӜ~u~tI~ r)vӜPvΜPvRPQRPQFvӜPΜPwF u]U,FP0F umFڈF۰F܈F݋FFދF؉FF FFFFFFFFFFFFFFF FFFFFFFPF u,v؍FPF u^&G ;F t^&G]UQF~ uN~uNP~uN F] UQQ~P@PF uʜP̜PF t>ʜ u>̜s>ʜ v>~uh>taFF|~u{>|utPvxP8F u)x=8t =9t=9uFHP@|X`zF뭂>~u'>tœƜȜĜĜ]U&>u zF ufFP>F u^&G^&u vW0>~u :Fu vQPFFvPPF ue>t[>~uv^ S^Sc>~uv^ S^SF u#>~uv^ S^S F u] U&s8^&uFFFPPNQWRQPRQP:^&uƜȜ] U"^&7&w&w&w&w]F^&tFF<wJ FFߠs!RPQ^SWRPQRPQ:F^ F&@FuFF<wH FFߠs!RPQ^SWRPQRPQ:F^ F&@FuFF<w> FFߠs!RPQ^SWRPQRPQ:Fİ FuF Fߠs!RPQ^SWRPQRPQ:FİFF<w< FFߠs!RPQ^SWRPQRPQ:Fİ FuFFߠs!RPQ^SWRPQRPQ:Fİ̊F Fߠs!RPQ^SWRPQRPQ:F^ &GȊF Fߠs!RPQ^SWRPQRPQ:F^ &GȊF Fߠs!RPQ^SWRPQRPQ:F^ &GȊF Fߠs RPSvVQRPSRPS:F^ &GȊF Fߠs!RPQ^SWRPQRPQ:F^ &GȊF Fߠs!RPQ^SWRPQRPQ:F^ &GȊF Fߠs!RPQ^SWRPQRPQ:F^ &GȊFFߠs!RPQ^SWRPQRPQ:F^ &Ƞs!RPQ^SWRPQRPQ:FĸPPP>F uF&] U&s%FRPQ^SWRPQRPQ:|^&8GtB>x9t&u"F݊F<wzаFu^&^ 0~޵FFF<wB޴PkNݵBFuFF<wNzЋBFu4^&u,FF<wzаFuzj^&^ 0~޵FFF<wB޴PNݵBFuFF<w:zЋBFu FF<wzаFu>x9u,FF<wzаFuz>x8ud^&u\~v FFF<wB޴PNݵBFuFF<w>zЋBFu'FF<wzаFuz] UQQFP<F u vv]U~tzFFFNNF NFF F?F*Fʜ r>ʜ u>̜rryv RPQRPQFPPFPPF uJ~u~~vNFv FPPRPQRPQRPQF u]UQQFP<F uv^Sv%]UP3P%]UPP%]UĜ#t4ƜȜœ&F#t N#N&Ȝ3&]061E01MenuOptionBinary.060A01060A01ED060B01060A01060E01 fieldNameSb.Sb.indexBinary.ControlControl.JustificationJustif.defaultCharacter.Character.fMandatoryFlag.fProtectedFlag.fSecretFlag.fShowDefaultFlag.fAutoExitFlag.fRepeatingFlag.OrderingBinary.looksUnselLooks.looksSelLooks.ValProcSb.HelpMsgSb.ListValuesSb.ColorSelBinary.ColorUnSelBinary.ListValuesCharacter.default062B01CaptionColorBinary.LineColorBinary.ColorRedGreenBlueCaptionColorBinary.Binary.Binary.Binary.LineColorBinary.Binary.Binary.Binary.060A01060B01060A01060A01062F01SaveDeleteOptionBinary.sbFormSpecSB.sbFormSpecSB.sbFormSpecSB.fSaveFLAG.sbFormSpecSB.sbFormSpecSB.sbFormNameSB.iColFormBinary.iLineFormBinary.sbFormSpecSB.sbFormNameSB.sbFormSpeciColFormBinary.iLineFormBinary.DATA060A01062D01060A01060A01062D01060E01060A01062D01VersionCharacter.msgmsgCharacter.msgmsg060A01formnameCharacter.cbFormBinary.bytesCharacter.ccolBinary.clineBinary.iblankMacBinary.iblankBinary.fieldnameCharacter.indexBinary.indexFirstBinary.indexLastBinary.icolRelBinary.ilineRelBinary.ccolBinary.fSecretFlag.fProtectedFlag.fMandatoryFlag.ControlControl.JustificationJustif.OrderingBinary.defaultCharacter.fShowDefaultFlag.fAutoExitFlag.fRepeatingFlag.looksSelLooks.looksUnselLooks.fieldNameCharacter.DefaultCharacter.ValProcCharacter.HelpMsgCharacter.ListvaluesCharacter.ColorSelBinary.ColorUnSelBinary.ValProcCharacter.HelpMsgCharacter.ListvaluesCharacter..060A01SB.062F01.TxtsbTxtSpecSb.sbPwdSpecSb.Sb.sbPwdSpecSb.fWriteTabFlag..Txt060A01060A01060E01060A01ObjIO version X2.4H 060A01&bf*"j7s3wUQDETGt< (AP?.;060A01060C01Binary  CharacterRFlagBSb[[LooksrControlJustif.   Destination out of boundsInsufficient Video Capability Working...Form is too complexMultiple use of same field name Writing...DoneField has nonsequential indexForm is too wide No selection Name missingInvalid number#Please enter a letter in range A..PToo many fieldsNo room for fieldsNo fields definedCannot move partial fields0Press GO to delete current form, CANCEL to abort/Press GO to delete all changes, CANCEL to abort0Press GO to Start a new session, CANCEL to abort#Please enter a number in range 0..7"Please sequence all fields or noneDiscontinuous sequence numbers(Last sequence number is greater than 200%Please enter a number in range 0..200)A decimal-justified field must be numeric/Field too small to accept decimal justificationToo many decimalsValue too large(Default inconsistent with list of valuesInvalid justificationInvalid data type%A protected field cannot be mandatory&Not enough memory for Graphics display-Graphics is not available on this workstationInvalid file nameFile name missingFile is not a Picture fileNo such picture moduleFile is not a libraryFile is not a Graphics libraryA picture is already displayedNo picture displayed File in use/The specified file is not a Word Processor fileSelected area is too smallInvalid display coordinatesThe Forms Editor can only be run in the primary partition 9-Old$ -New. Application-defined command key Please enter Yes or No Invalid entry+ Missing Parameter: File name is missing Cannot open that file Illegal form name No such form Bad file format Cannot open output streamPress NEXT PAGE to continueFSorry ... this form is too big or too complex and cannot be displayed.L R Tx Nu Ab An form bytes [nul] A12,1@BTOSCHARSET S12  pl] 062F01062A01ABCDEFGHIJKLMNOPQRSTUVWXYZ  abcdefghijklmnopqrstuvwxyz@ Mandatory fieldInvalid cursor movementField overflowIllegal function keyReserved characterText characters onlyAlphanumeric characters onlyAlphabetic characters onlyNumeric characters onlySign cannot be inside a number No such valueNo help message No list of values for this field Invalid dataYes No 062F01 060A01Character.062F01060A01062C01060A01060D01DATA060A01II020E0189>< DVTWPYX0123456789abcdefB22B21B25XE B27VE1s6.4.5@A 060A01060A01061A01061A02061D01062D01)_1 Z{W (1 h 1 _E\{1 s>1 HI1 >J.F1 dL061A02 X/>Caption Color:  Line ColorColor01234567΀Red 0 1 2 3΀Green 0 1 2 3΀Blue 0 1 2 3@@P7@@Pz@@z@@z@@z@@z@@ z@@ z@@ z@@ @@@@@@@@@@@@@@@@@@@@@@@@'A'  ?*<0 CaptionColor;Enter color number (0-7) to be used for the forms captions.01234567 LineColor8Enter color number (0-7) to be used for the forms lines.ColorORedGreenBlue!  COLOR PALETTE INFORMATION! Caption Color:  Line Color: !! I N T E N S I T Y Colorƀ RedGreenBlue01234567@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ CaptionColor LineColorredgreenblue6؀ DEFINE FIELD Name:'Index:(Default value:%24Sequence number: 4 Control:  Justification:  Mandatory?  Protected?  Secret? Show default?  Auto-exit?  Repeating? 4Attributes: Unselected:  Selected: 4(@E. E2@E" E@E)@E *@5E! >@5E1 I@5E Q@^E! a@5E1 k@5E!  v@E3  @E 777777  ?*<0 fieldnameindexdefaultOrdering%Please enter a number in range 0..200ControlTxPlease enter Tx, An, Ab or Nu JustificationL,Please enter L, R or a number in range 1..15 fMandatoryNoYesNo fProtectedfSecret fShowDefaultYes fAutoExit fRepeating looksUnselA#Please enter a letter in range A..PlooksSelE@ ؀ DEFINE FIELD >User validation routine: > Help message:0<>List of values:.<<<<<<<<>Selected Color Number:Unselected Color Number:>>x@E<@E<@E <@E <@E <@E <@E <@E<@E<@E@E=@EValProcHelpMsg ListValuesColorSel/Enter a selected color number in the range 0..7 ColorUnSel2Enter an unselected color number in the range 0..7J`oGRAPHICS DISPLAY H[Graphics File]3HH3@@ sbPicSpec8 ؀ TEXT INSERTION 6File: #6 [Password:] 6[TAB expansion?]!66#@E @E@E sbTxtSpec sbPwdSpec fWriteTabNo3hw؀ FINISH 1Save?  1File: )11@E)@EfSaveYesYesNo SBFormSpecMJForms Editor Help J*F1 - Reselect the last selected areaӀ Ӏ F2 - Undo the last change'Ӏ Ӏ 'SHIFT-F2 - Discard changes made to formӀ Ӏ ,CODE-F2 - Start a new Forms Editing sessionӀ Ӏ 9F3 - Display a graphics image (Forms Graphics only) Ӏ Ӏ BSHIFT-F3 - UnDisplay (remove) graphics image (Forms Graphics only)Ӏ /F4 - Draw a line or box (single thin bar)Ӏ 0SHIFT-F4 - Draw a line or box (single thick bar)Ӏ Ӏ /CODE-F4 - Draw a line or box (double thin bar)Ӏ Ӏ 'F5 - Erase (remove) a line or boxӀ Ӏ "F6 - Read and display a Form$Ӏ Ӏ 'CODE-F6 - Read and display a text fileӀ Ӏ F7 - Write a Form/Ӏ Ӏ ;F8 - Define the characteristics of the selected field Ӏ Ӏ ?CODE-F8 - Define the color characteristics of the current formӀ Ӏ &F9 - Test drive the current form *F10 - Delete the entire selected area#CODE-= - Insert literal character##HELP - Forms Editor Help Screen#.CODE-(A-P) Define Attributes of selected area -(press Next Page to view table of attributes)J( Press Any Key (except HELP) To ContinueӀ JNLForms Editor Help L.CODE-char- Define attributes of selected area:L        Blinking/ -Bright Underline Rev. VideoOutline/    User-Defined   A   BX  C X DXX E  X FX X G XX HXXX I   XJX  XK X XLXX XM  X XNX X XO XX XPXXX X   ( Press Any Key (except HELP) To ContinueLP Forms Editor 2- ڀ1ڀ2ڀ3ڀ4ڀ5ڀ6ڀ7ڀ8 @2-@EK VersionB-1.0/USmsgformnamecbFormbytesU Forms Editor 2 1.ڀ1ڀ2ڀ3ڀ4ڀ5ڀ6ڀ7ڀ8ڀ9ڀ0ڀ1ڀ2ڀ3 +@322;@31.?@3yH@3O@3VersionB-1.0/USmsgformnamecbFormbytesm Forms Editor 2%:.ڀ1ڀ2ڀ3ڀ4ڀ5ڀ6ڀ7ڀ8ڀ9ڀ0ڀ1ڀ2ڀ3ڀ4 C@K;2S@K:.W@K`@Kg@KVersionB-1.0/USmsgformnamecbFormbytes: ؀ READ FORM8File:.8[Form:].8Display[Column][Line]88 . @+E .+@+E6 +E#y +E? sbFormSpec sbFormNameiColForm9Enter a number between 1 and 80, or 0 to display centered iLineForm9Enter a number between 1 and 28, 29 or 34, or 0 to center=@O; R E A D A N E W F O R M ;;R E A D F O R M M E N U;;&1 SAVE CHANGES&&2DISCARD CHANGES&&3RETURN TO FORM&; *The current Form has been modified, select )one of the options to Read in a new Form. ; #Please enter your selection (1-3):  ;;0o@@SaveDeleteOption/Enter one of the available options, 1 , 2 or 3.123PJYN F O R M S E D I T O RNNM A I N M E N UNNN51CREATE A NEW FORM 552EDIT/MODIFY AN OLD FORM553DISPLAY HELP SCREEN 554EXIT TO BTOS SYSTEM 5NNNN#PLEASE ENTER YOUR SELECTION (1-4): NN7y@@ MenuOption6Please enter your selection, a number between 1 and 4.1234|3Ra WRITE FORM1File:)11)q@|@ sbFormSpec  ?*<0@A060A01  HIEDLMC abcdefghijklmnopqrstuvwxyz !'+,-./0123456789;ABFGJK[\]^`{|}  " @,?,?,?T,?,?+,?+,?+,?+iiii =Xgv##iiiiiiiiiiiiiiii(6k    W W W |||vvv@@@   Ⱥ LIBRARY: Forms.lib VERSION: s6.4.5 (Wednesday July 20, 1994, 13:02)LIBRARY: mouse.lib VERSION: 12.2.0 (monday august 24, 1992, 14:21) LIBRARY: CTOS.Lib VERSION: s12.2.1 (thursday november 19, 1992, 17:41) LIBRARY: ctostoolkit.lib VERSION: 12.2.0 (monday august 24, 1992, 14:12) LIBRARY: enls.lib VERSION: 12.2.0 (monday august 24, 1992, 14:14) LIBRARY: sFormsEditor.lib VERSION: s6.4.5 (Wednesday July 20, 1994, 13:03) RUN FILE NAME: sFormsEditor.run COPYRIGHT 1980, 1994 CONVERGENT, INC. ALL RIGHTS RESERVED COPYRIGHT 1987, 1994 UNISYS CORP. 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 THE SOURCE CODE, SHALL AT ALL TIMES REMAIN IN THE NAME OF UNISYS CORPORATION AND CONVERGENT INCORPORATED. VERSION: s6.4.0C (tuesday january 11, 1994, 14:36)VERSION: s6.4.5 (Wednesday July 20, 1994, 13:04)$TITLE('FMRGTD V060AM01 === 03/27/87') NAME FMRGTD DATA SEGMENT WORD PUBLIC 'DATA' VERSION_MODULE DB '060A01' DATA ENDS ;******************************* MODULE HEADER *******************************; ;* *; ;* *; ;* MACHINE: B20 LANGUAGE: ASSEMBLER OS: BTOS *; ;* *; ;* DESCRIPTION: *; ;* *; ;* Module FMRGTD.ASM *; ;* *; ;* *; ;* HISTORY: *; ;* *; ;* 03/27/87 060A/01 M.Jungwirth / Module header BURROUGHS changed to UNISYS.*; ;* *; ;* 01/24/86 050C/01 B.Webber / Module header added *; ;* *; ;* *; ;* *; ;* TITLE: B20 SYSTEM SOFTWARE *; ;* *; ;* *; ;* 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 Const assume ds: DGroup Const segment word public 'Const' %*define (DefineType(typecode, EncodeProc, DecodeProc)) ( db %len(%typecode), '%typecode' dd %EncodeProc dd %DecodeProc Const ends extrn %EncodeProc: far, %DecodeProc: far Const segment ) public rgtdForm rgtdForm label byte %DefineType(Binary, EncodeBinary, DecodeBinary) %DefineType(Character, EncodeChar, DecodeChar) %DefineType(Flag, EncodeFlag, DecodeFlag) db 0 Const ends end $TITLE('FmTabKey.Asm V061A M01 === 06/17/88') NAME Fmtabkey DATA SEGMENT WORD PUBLIC 'DATA' VERSION_MODULE DB '061A01' DATA ENDS ;******************************* MODULE HEADER ******************************; ;* *; ;* *; ;* MACHINE: B20 LANGUAGE: ASSEMBLER OS: BTOS *; ;* *; ;* DESCRIPTION: *; ;* *; ;* SEE COMMENTS BELOW *; ;* *; ;* *; ;* *; ;* *; ;* *; ;* *; ;* HISTORY: *; ;* *; ;* MM/DD/YY VVVV/MM PROGRAMMER / DESCRIPTION (Most recent first) *; ;* *; ;* 06/17/88 061A/01 R. FARHANG / Single file to provide keyboard *; ;* / definition table for both 4.0 and 5.0 *; ;* / functionality. *; ;* *; ;* 09/11/87 060G/01 R. FARHANG / Complete key table 4.0 functionality *; ;* *; ;* 07/22/87 060B/01 R. FARHANG / Provide Forms 4.0 functionality *; ;* *; ;* 06/29/87 060A/01 M. JUNGWIRTH / Corrected corrupted code. *; ;* *; ;* 02/05/87 060A/01 M. JUNGWIRTH / Change func. keys (F1-F10) to NEXT. *; ;* *; ;* 07/28/86 051A/01 M. JUNGWIRTH / Add FORMS-B changes. *; ;* *; ;* *; ;* *; ;* TITLE: B20 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 ***************************; ;############################################################################# ; # ; File FmTabKey.asm # ; ================= # ; # ; Contains the table used by the Forms Run-Time to determine the type of # ; each key pressed by the operator. # ; Each key can be: # ; - a function key: # ; .Next field; # ; .Previous field; # ; .Validation (of the whole filled-in form); # ; .Cancel (the whole filled-in form); # ; .Correction (of an operator error); # ; .Illegal; # ; .Next value; # ; .Previous value; # ; .First field; # ; .Last field. # ; - a data key: # ; .Numeric; # ; .Alphabetic; # ; .Alphanumeric; # ; .Text. # ; These key definitions can be modified to meet the requirements of a # ; specific user application. # ; # ; FmTabKey.asm file also contains the definition of the decimal mark # ; (period or comma) to be used in fields with decimal justification. # ; # ;############################################################################# PUBLIC TabKey PUBLIC fCorr,chDecimalMark DGroup GROUP Const ASSUME DS:DGroup CONST SEGMENT WORD PUBLIC 'Const' TRUE EQU 0FFh FALSE EQU 00h ;############################################################################# ; # ; Definition of the flags used in TabKey table. # ; DO NOT MODIFY. # ; # ;############################################################################# Function EQU 80h; Function Key Illegal EQU 00h; Illegal FirstField EQU 01h; First Field LastField EQU 02h; Last Field NextVal EQU 09h; Next Value PreviousVal EQU 0Ah; Previous Value Correction EQU 0fh; Correction Function Key Next EQU 10h; Next Field Previous EQU 20h; Previous Field Validation EQU 30h; Validates filled-in form Cancel EQU 40h; Cancels filled-in form Tx EQU 01h; Text character An EQU 02h; Alphanumeric character Ab EQU 04h; Alphabetic character Nu EQU 08h; Numeric character ;############################################################################# ; # ; Definition of the decimal mark. # ; Can be either period (2Eh) or comma (2Ch). # ; DO NOT CHANGE THE NAME 'chDecimalMark'. # ; # ;############################################################################# chDecimalMark DB 2Eh ;############################################################################# ; # ; The flag 'fCorr' below indicates if any correction key must be used. # ; # ; fCorr = TRUE means that, after an operator error, the error message will# ; be erased and the keyboard unlocked only by pressing a correction # ; function key. # ; # ; fCorr = FALSE means that the first valid key entered after an operator # ; error will be processed normally and will reset the error condition. # ; # ; IF fCorr IS SET TO TRUE, MAKE SURE THERE IS AT LEAST ONE CORRECTION # ; FUNCTION KEY DEFINED IN TabKey TABLE. # ; # ;############################################################################# fCorr DB FALSE ;############################################################################# ; # ; TabKey table: # ; # ; 256-byte table indexed by the ASCII code associated with the key. # ; Each byte contains a set of flags defining the type of the related key. # ; # ; The only valid combinations are: # ; - Function+Next; # ; - Function+Previous; # ; - Function+Validation; # ; - Function+Cancel; # ; - Function+Correction; # ; - Function+Illegal; # ; - Function+NextVal; # ; - Function+PreviousVal; # ; - Function+FirstField; # ; - Function+LastField; # ; - Any combination of Tx, An, Ab and Nu. # ; # ; Function+Correction has meaning only if flag fCorr is set to TRUE. # ; # ; Keys for which table entry is null can be entered only by literal # ; insertion (code-quote). # ; ASCII codes between 00 and 03 cannot be used as data characters. # ; # ;############################################################################# Tabkey LABEL BYTE DB Function+Validation ; (00) Help /* 060B/01 */ DB Function+Previous ; (01) Up Arrow DB Function+Validation ; (02) Mark /* 060B/01 */ DB Function+Validation ; (03) Shift-6 DB Function+Validation ; (04) Finish /* 060B/01 */ DB Function+Validation ; (05) Prev Page DB Tx+An ; (06) 1/2 DB Function+Cancel ; (07) Cancel DB Function+Validation ; (08) Backspace DB Function+Next ; (09) Tab DB Function+Next ; (0A) Return - Next DB Function+Next ; (0B) Down Arrow DB Function+Validation ; (0C) Next Page DB Function+Validation ; (0D) Bound /* 060B/01 */ DB Function+Validation ; (0E) Left Arrow DB Function+Validation ; (0F) Move /* 060B/01 */ DB Tx+An ; (10) Shift-1/2 DB Function+NextVal ; (11) Scroll up DB Function+Validation ; (12) Right Arrow DB Function+PreviousVal ; (13) Scroll down DB Function+Validation ; (14) Copy /* 060B/01 */ DB Function+Validation ; (15) F1 DB Function+Validation ; (16) F2 DB Function+Validation ; (17) F3 DB Function+Validation ; (18) F4 DB Function+Validation ; (19) F5 DB Function+Validation ; (1A) F6 DB Function+Validation ; (1B) GO DB Function+Validation ; (1C) F7 DB Function+Validation ; (1D) F8 DB Function+Validation ; (1E) F9 DB Function+Validation ; (1F) F10 DB Tx+An ; (20) Space DB Tx+An ; (21) ! DB Tx+An ; (22) " DB Tx+An ; (23) # DB Tx+An ; (24) $ DB Tx+An ; (25) Shift-5 DB Tx+An ; (26) Shift-7 DB Tx+An ; (27) ' DB Tx+An ; (28) ( DB Tx+An ; (29) ) DB Tx+An ; (2A) * DB Tx+An+Nu ; (2B) + DB Tx+An ; (2C) , DB Tx+An+Nu ; (2D) - DB Tx+An ; (2E) . DB Tx+An ; (2F) / DB Tx+An+Nu ; (30) 0 DB Tx+An+Nu ; (31) 1 DB Tx+An+Nu ; (32) 2 DB Tx+An+Nu ; (33) 3 DB Tx+An+Nu ; (34) 4 DB Tx+An+Nu ; (35) 5 DB Tx+An+Nu ; (36) 6 DB Tx+An+Nu ; (37) 7 DB Tx+An+Nu ; (38) 8 DB Tx+An+Nu ; (39) 9 DB Tx+An ; (3A) : DB Tx+An ; (3B) ; DB Tx+An ; (3C) < DB Tx+An ; (3D) = DB Tx+An ; (3E) > DB Tx+An ; (3F) ? DB Tx+An ; (40) @ DB Tx+An+Ab ; (41) A DB Tx+An+Ab ; (42) B DB Tx+An+Ab ; (43) C DB Tx+An+Ab ; (44) D DB Tx+An+Ab ; (45) E DB Tx+An+Ab ; (46) F DB Tx+An+Ab ; (47) G DB Tx+An+Ab ; (48) H DB Tx+An+Ab ; (49) I DB Tx+An+Ab ; (4A) J DB Tx+An+Ab ; (4B) K DB Tx+An+Ab ; (4C) L DB Tx+An+Ab ; (4D) M DB Tx+An+Ab ; (4E) N DB Tx+An+Ab ; (4F) O DB Tx+An+Ab ; (50) P DB Tx+An+Ab ; (51) Q DB Tx+An+Ab ; (52) R DB Tx+An+Ab ; (53) S DB Tx+An+Ab ; (54) T DB Tx+An+Ab ; (55) U DB Tx+An+Ab ; (56) V DB Tx+An+Ab ; (57) W DB Tx+An+Ab ; (58) X DB Tx+An+Ab ; (59) Y DB Tx+An+Ab ; (5A) Z DB Tx+An ; (5B) [ DB Tx+An ; (5C) \ DB Tx+An ; (5D) ] DB Tx+An ; (5E) ^ DB Tx+An ; (5F) _ DB Tx+An ; (60) ` DB Tx+An+Ab ; (61) a DB Tx+An+Ab ; (62) b DB Tx+An+Ab ; (63) c DB Tx+An+Ab ; (64) d DB Tx+An+Ab ; (65) e DB Tx+An+Ab ; (66) f DB Tx+An+Ab ; (67) g DB Tx+An+Ab ; (68) h DB Tx+An+Ab ; (69) i DB Tx+An+Ab ; (6A) j DB Tx+An+Ab ; (6B) k DB Tx+An+Ab ; (6C) l DB Tx+An+Ab ; (6D) m DB Tx+An+Ab ; (6E) n DB Tx+An+Ab ; (6F) o DB Tx+An+Ab ; (70) p DB Tx+An+Ab ; (71) q DB Tx+An+Ab ; (72) r DB Tx+An+Ab ; (73) s DB Tx+An+Ab ; (74) t DB Tx+An+Ab ; (75) u DB Tx+An+Ab ; (76) v DB Tx+An+Ab ; (77) w DB Tx+An+Ab ; (78) x DB Tx+An+Ab ; (79) y DB Tx+An+Ab ; (7A) z DB Tx+An ; (7B) { DB Tx+An ; (7C) | DB Tx+An ; (7D) } DB Tx+An ; (7E) ~ DB Function+Validation ; (7F) Delete DB Function+Validation ; (80) Code-Help DB Function+FirstField ; (81) Code-Up Arrow DB Function+Validation ; (82) Code-Mark DB Function+Validation ; (83) Code-Shift-6 DB Function+Validation ; (84) Code-Finish DB Function+Validation ; (85) Code-Previous Page DB Function+Validation ; (86) Code-1/2 DB Function+Validation ; (87) Code-Cancel DB Function+Validation ; (88) Code-Backspace DB Function+Validation ; (89) Code-Tab DB Function+Validation ; (8A) Code-Return DB Function+LastField ; (8B) Code-Down Arrow DB Function+Validation ; (8C) Code-Next Page DB Function+Validation ; (8D) Code-Bound DB Function+Validation ; (8E) Code-Left Arrow DB Function+Validation ; (8F) Code-Move DB Function+Validation ; (90) Code-Shift-1/2 DB Function+Validation ; (91) Code-Scroll up DB Function+Validation ; (92) Code-Right Arrow DB Function+Validation ; (93) Code-Scroll down DB Function+Validation ; (94) Code-Copy DB Function+Validation ; (95) Code-F1 DB Function+Validation ; (96) Code-F2 DB Function+Validation ; (97) Code-F3 DB Function+Validation ; (98) Code-F4 DB Function+Validation ; (99) Code-F5 DB Function+Validation ; (9A) Code-F6 DB Function+Validation ; (9B) Code-GO DB Function+Validation ; (9C) Code-F7 DB Function+Validation ; (9D) Code-F8 DB Function+Validation ; (9E) Code-F9 DB Function+Validation ; (9F) Code-F10 DB Tx+An ; (A0) Code-Espace DB Tx+An ; (A1) Code-Shift-1 DB Tx+An ; (A2) Code-Shift-' DB Tx+An ; (A3) Code-Shift-3 DB Tx+An ; (A4) Code-Shift-4 DB Tx+An ; (A5) Code-Shift-5 DB Tx+An ; (A6) Code-Shift-7 DB Tx+An ; (A7) Code-' DB Tx+An ; (A8) Code-Shift-9 DB Tx+An ; (A9) Code-Shift-0 DB Tx+An ; (AA) Code-Shift-8 DB Tx+An ; (AB) Code-Shift-= DB Tx+An ; (AC) Code-, DB Tx+An ; (AD) Code-- DB Tx+An ; (AE) Code-. DB Tx+An ; (AF) Code-/ DB Tx+An ; (B0) Code-0 DB Tx+An ; (B1) Code-1 DB Tx+An ; (B2) Code-2 DB Tx+An ; (B3) Code-3 DB Tx+An ; (B4) Code-4 DB Tx+An ; (B5) Code-5 DB Function+Validation ; (B6) Code-6 DB Function+Validation ; (B7) Code-7 DB Function+Validation ; (B8) Code-8 DB Function+Validation ; (B9) Code-9 DB Function+Validation ; (BA) Code-Shift-; DB Function+Validation ; (BB) Code-; DB Function+Validation ; (BC) Code-Shift-[ DB Function+Validation ; (BD) Code-= DB Function+Validation ; (BE) Code-Shift-] DB Function+Validation ; (BF) Code-Shift-/ DB Function+Validation ; (C0) Code-Shift-2 DB Function+Validation ; (C1) Code-Shift-a DB Function+Validation ; (C2) Code-Shift-b DB Function+Validation ; (C3) Code-Shift-c DB Function+Validation ; (C4) Code-Shift-d DB Function+Validation ; (C5) Code-Shift-e DB Function+Validation ; (C6) Code-Shift-f DB Function+Validation ; (C7) Code-Shift-g DB Function+Validation ; (C8) Code-Shift-h DB Function+Validation ; (C9) Code-Shift-i DB Function+Validation ; (CA) Code-Shift-j DB Function+Validation ; (CB) Code-Shift-k DB Function+Validation ; (CC) Code-Shift-l DB Function+Validation ; (CD) Code-Shift-m DB Function+Validation ; (CE) Code-Shift-n DB Function+Validation ; (CF) Code-Shift-o DB Function+Validation ; (D0) Code-Shift-p DB Function+Validation ; (D1) Code-Shift-q DB Function+Validation ; (D2) Code-Shift-r DB Function+Validation ; (D3) Code-Shift-s DB Function+Validation ; (D4) Code-Shift-t DB Function+Validation ; (D5) Code-Shift-u DB Function+Validation ; (D6) Code-Shift-v DB Function+Validation ; (D7) Code-Shift-w DB Function+Validation ; (D8) Code-Shift-x DB Function+Validation ; (D9) Code-Shift-y DB Function+Validation ; (DA) Code-Shift-z DB Function+Validation ; (DB) Code-[ DB Function+Validation ; (DC) Code-Shift-num 8 DB Function+Validation ; (DD) Code-] DB Function+Validation ; (DE) Code- DB Function+Validation ; (DF) Code-Shift-- DB Function+Validation ; (E0) Code-Shift-num 1 DB Function+Validation ; (E1) Code-a DB Function+Validation ; (E2) Code-b DB Function+Validation ; (E3) Code-c DB Function+Validation ; (E4) Code-d DB Function+Validation ; (E5) Code-e DB Function+Validation ; (E6) Code-f DB Function+Validation ; (E7) Code-g DB Function+Validation ; (E8) Code-h DB Function+Validation ; (E9) Code-i DB Function+Validation ; (EA) Code-j DB Function+Validation ; (EB) Code-k DB Function+Validation ; (EC) Code-l DB Function+Validation ; (ED) Code-m DB Function+Validation ; (EE) Code-n DB Function+Validation ; (EF) Code-o DB Function+Validation ; (F0) Code-p DB Function+Validation ; (F1) Code-q DB Function+Validation ; (F2) Code-r DB Function+Validation ; (F3) Code-s DB Function+Validation ; (F4) Code-t DB Function+Validation ; (F5) Code-u DB Function+Validation ; (F6) Code-v DB Function+Validation ; (F7) Code-w DB Function+Validation ; (F8) Code-x DB Function+Validation ; (F9) Code-y DB Function+Validation ; (FA) Code-z DB Function+Validation ; (FB) Code-Shift-num 4 DB Function+Validation ; (FC) Code-Shift-num 7 DB Function+Validation ; (FD) Code-Shift-num 5 DB Function+Validation ; (FE) Code-Shift- DB Function+Validation ; (FF) Code-Delete CONST ENDS END (7E) ~ DB Function+Validation ; (7F) Delete DB Function+Validation ; (80) Code-Help DB Function+FirstField ; (81) Code-Up Arrow DB Function+Validation ; (82) Code-Mark DB Function+Validation ; (83) Code-Shift-6 DB Function+Validation ; (84) Code-Finish DB Function+Validation ; (85) Code-Previous Page DB Function+Validation ; (86) Code-1/2 DB Function+Validation ; (87) Code-Cancel DB Function+Validation ; (88) Code-Backspace DB Function+Validation ; (89) Code-Tab DB Functi$TITLE('FmValProc.Asm V060A M01 === 03/27/87') NAME Fmvalproc DATA SEGMENT WORD PUBLIC 'DATA' VERSION_MODULE DB '060A01' DATA ENDS ;******************************* MODULE HEADER *******************************; ;* *; ;* *; ;* MACHINE: B20 LANGUAGE: ASSEMBLER OS: BTOS *; ;* *; ;* DESCRIPTION: *; ;* *; ;* SEE COMMENTS BELOW *; ;* *; ;* *; ;* *; ;* *; ;* *; ;* *; ;* HISTORY: *; ;* *; ;* MM/DD/YY VVVV/MM PROGRAMMER / DESCRIPTION (Most recent first) *; ;* *; ;* 03/27/87 060A/01 M. JUNGWIRTH / Change BURROUGHS to UNISYS in header. *; ;* *; ;* 08/21/86 051A/02 M. JUNGWIRTH / Correct macro invocation example. *; ;* *; ;* 07/28/86 051A/01 M. JUNGWIRTH / Add FORMS-B changes. *; ;* *; ;* *; ;* *; ;* TITLE: B20 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 ****************************; ;############################################################################## ; # ; File FmValProc.asm # ; ================== # ; # ; This assembly language file is designed to contain the declarations of # ; all the user validation routines that are to be used under control of # ; the TypeForm operation. # ; # ;############################################################################## DGroup GROUP Const ASSUME DS: DGroup Const SEGMENT WORD PUBLIC 'Const' %*DEFINE (Warning(ProcName,Msg)) (%IF (%PASS1 EQ -1) THEN (%OUT(%ProcName...%Msg ))FI ) %*DEFINE (DefValProc(ProcName)) ( %IF (%LEN(%ProcName) GT 30) THEN( %Warning(%ProcName,Ignored : name too long)) ELSE(%Warning(%ProcName,OK) %SET(NoProc,0) DB %LEN(%ProcName), '%ProcName' DD %ProcName Const ENDS EXTRN %ProcName: FAR Const SEGMENT )FI) %IF (%PASS1 EQ -1) THEN (%OUT( ) %SET(NoProc,-1) )FI PUBLIC rgValProc rgValProc LABEL BYTE ;############################################################################## ; # ; Insert here the declarations of the user validation routines. # ; Each routine must be defined with the assembly language macro # ; "DefValProc". The format of this macro is as follows: # ; # ; DefValProc(ProcName) # ; # ; where ProcName is the name of the user validation routine ( up to 30 # ; characters ). It must be a public symbol in the application program. # ; # ; The declaration below is here as an example and is commented out. # ; That is, the apostrophe would be removed for an actual invocation. # ; # ;############################################################################## %'DefValProc(MyProc) ;############################################################################## ; # ; End of the declarations of the user validation routines. # ; # ;############################################################################## DB 0 %IF (%NoProc EQ -1) THEN(%OUT(No user validation routine defined ) %SET(NoProc,0) )FI Const ENDS END *; ;* *; ;* *; ;*  blankcontrolPLM86 V2.310/24/94 10:20:5ݖ7STACKMEMORYCODEDATACONSTBLANKCONTROL_CODEDGROUP%h@3ܘHHT D K BLANKCONTROLƌTABKEY CHDECIMALMARK D 060A017UFt~ uFt<,t .:t N N Fu>t<u6& u<uiFu(,t.uFFt@@w4F$ -<-t<+u >t>u @ ; vc>t2!>t)6&Fu и] :t*036=AHTX^imtāĆČĤĨķļȎю׎ێߎ $(t editformPLM86 V2.310/24/94 10:20:5ݖ3STACKMEMORYCODEDATACONST EDITFORM_CODEDGROUP\h@ HH/TD KOPENMODE(Ր GETFORMNAME TRANSCHAR TRANSRCHAR TRANSRBUFF BUFFERCHECKN RUNSCHECKDEFVALUEOPENING6VIDEDIT+ WRITINGFILEFILEEDITEDITFORM ڌ ALLOCMEMORYLL CLOSEFILEDEALLOCMEMORYLL EXPANDAREALLOPENFILE SHRINKAREALLOPENBYTESTREAM WRITEBSRECORDCLOSEBYTESTREAMOPENFORM DISPLAYFORM WRITEIBLANK BLANKCONTROLCHECKDECIMALVALUES IVALLOOKUP EXTRACTVALUECHECKDECIMALMARKRGCHTXL( D 060B01 (wmKCharacter.̠ .form aUQF N؋&8[u5AN&>]tF@FF@F&v&8>tF@FFF+F^&FFN^ &&O^&v &<.u+JVt^&]" (,:IQUhlzݠ(U>t6*&*] (U~t6*&*N]a ̠:U>t*6,&6*&*,]ˈ !(,0_NU^ &Z&WF v&Fv9vrct<uHF^ &&Ov&>v^&F@F9Fs^&?u <t<u]"&2AES\`ąUF. u60&ဈNF60H.&VF60H.u4&0.~tYv&F2Nڃ~t360&v&F0.2Nǃ>2uv& F42<]HLPZ`dqĀĄċđĕĢĦĪijĺǎʎUP4@F$$;&rRF&Gt2^&G &G 6&dȋ^F&tF&Gu Fr&O6&8&G:&G &G F8*&O ^6&|  Vrl&G u6~FFP6S^v&tFFFF^&G:FrJ^v&Np~FFPFP^v@PFF@FFu>u/^S&wP^F&G [^S&wS6PF*9^Z Y6&G*H*&Gt#6 H,$]c +5VEKOSY_cgjV ow}ČĘĥīĮijĹ̼VȎˎΎюԎ؎܎\ 5?COTW\^be\jqtx|à6UQQ~\w ~ $w~ vP^SvPPrmPF tb=uv> N^YFFFFQ SPPPrmPFn uI~ u^SvFPF P6^Sv ^SvF u 6F]Y2,9VOgj~ĄĊ̗V̿\ŎV VH+U"^Svvv uT~u$FF^&G &F$;&sm^SvvFPFPN uOF t0^S6$^SPP t={t=|u "$FF@FF늡"]<V 6FLPSWq\vĊē̘V ĝĮıĵɎjUQP6PF u9@Q^SvPP6(SPF uY@PS6<>PF u9@PF u(SPF uS PF]'R V*-14AKOXVdjpsxVĄ̉V Ė̟VĬ̵VUN" PP uSF  &ON&W2F<24&G0&G .&w  tN^ &G &S~u1^ &w $4FN$;&r^SvvFPPN NAN t t.&O &W ^SPRQ t"|&Gt4^ &G &G 6P&D_^F&t u&O t%v~FFP6^S^ S&w^S6PFGJMT[dhk\pā̆\ĝġħīĵĹļĿÎێ\  V %-3Pmxř͡VŬŹͿVюVY & "|&O6&8&G:48*>t#,*:H,;r& ,u&G @tq, tb:;v "{&Gt #8F 6,؍0>*9^Z YS&G t[&G*H* t:;v "{H,&Gt#6zF i>tb,:H,;r Ƈ ,uP^S6P:P6 t"6*8:ת$"]  "+47=@DJMQV`hny~ĆĎĔĘĤ̨\IJĶĺÎǎ͎І #/47\AEH\PW\ain|ńŊ͍VŒřŝšŦŪŭŹŽŽɎ̎Ў֎ UF t"^ SP^Sv^&Sv$6 u\~t1^&S^Sv "^Sv u*"%^&Svvv ^Sv+ u]$!\&@\EHS\X_z\tfmbnryPLM86 V2.310/24/94 10:21:11STACKMEMORYCODEDATACONST FMBNRY_CODEDGROUPh@eHH TD K DECODEBINARY D 062F01UQQ~ t{~v~N FFFF t4~u9Fu)FHFF 10^v&F1FŋF t N+^0FYF)FF^&]tfmcharPLM86 V2.310/24/94 10:21:2ߖ1STACKMEMORYCODEDATACONST FMCHAR_CODEDGROUP h@HH TD K ENCODECHAR DECODECHARRZ CHWHITESPACE D 060A01VUQFFN ;sNv~N^YN F;v+^8F^&];٠=RUQF FN;sNv~N^YF^&]5tfmcmpbPLM86 V2.310/24/94 10:21:3ޖ1STACKMEMORYCODEDATACONST FMCMPB_CODEDGROUPh@oHH TD KCOMPARESTRINGS. PBUPPERALPHAS PBLOWERALPHAS CBLOWERALPHAS D 060A01UFF9Fw^ &N^&F:td>u+JVt&F+>Fu+JVt&FF:FtF Fs] &26N\c{t fmerrorPLM86 V2.310/24/94 10:21:4ݖ2STACKMEMORYCODEDATACONST FMERROR_CODEDGROUPh@HHPTQD KOPERRORSAVELINE LOCKVIDEO UNLOCKVIDEOBEEPCHECKERCCURRENTOSVERSION GETPSTRUCTURE PUTFRAMECHARS PUTFRAMEATTRSQUERYFRAMECHARSANDATTRSPUTFRAMECHARSANDATTRSFERRORFHELPMSG FBEEPONERROR FUSECOLOR RGBCOLORMASK ICOLORCAPT D 062C01&2UPP$QP%PFl%PP$PlP%PF^%&8w^&k^&?t& PPP> r,PP$P'P%P؍'QPP 1'>&?u," /9O>"9s PsPP$P PP$PP%PFP%k*1P$P^GPQF r s]. \%V4COUV`Ā ăĆċ̐V̖VĜħĭIJĻV VΎ؎ގ  $V*V/;BFR[aVmŀ͑VŚ ş ţͰVU PPP s sPPPPPPPP&G"Ȣ$&rGO &O  &"&T&G"Ȣ$&rF&OO &O  &" &G#%&s&> r'QQ6$'QP؍'QPP 1'6F&?uT&G&G" 0/F6"0OF]J VV)V6;VAVNSVYV_hlw{ĉčĕĝĨıĵŎɎЎԎ؎ *-8>V DVKU[ivz~ŅʼnŌŗŜŭűŶt fmextendPLM86 V2.310/24/94 10:21:5ܖ3STACKMEMORYCODEDATACONST FMEXTEND_CODEDGROUP[h@HHTND K" FBEEPONERROR FVALUEFOUNDh! OPHELPMSG USERVALIBLANKTBEEPCHECKERCREADKBD SETKBDLED PUTFRAMEATTRSPOSFRAMECURSOR WRITEIBLANKCHINSERTLITERALOPERROR UNPACKCOLORS IVALLOOKUP EXTRACTVALUE CONTROLERRORFHELPMSGFERROR FINSERTNEXT FOVERTYPECONTROL RGBCOLORMASK ICOLORSEL ICOLORUNSEL FUSECOLORTABKEYFCORRSBILLEGALFUNCTIONKEY SBNULLSTRING SBNOSUCHVALUE SBNOHELPMSG D 060A01YWCharacter.U F^&G FF&GtMv&D &D ^&gȋ^FF&Ot^FFPrP]# lrV x|ĄĈ̍V ēzU"F ^ &G FF^ &G &G v&dȋ^ FF^ &GF&Gv&F^ &G&DF&GF&GF&G u&O ^&G $^&GF&GFF%ĈFt^&G^&GFPPPPFs:^&Gt^GPPP FFPFPFPF% FPFPPFFFFsFFPF ts>s7r0F^߷t":u P PFNrsF:FtrhĐVV V LVRVbf}VŌœŚūźͿV VVކ:F;~u8^&G#t tv&|u ^߷^ Sv ~uТWPP^߷":uF:FuF%F ^߷":u~uFN^߷tNu^&Nߵ^&O^&GF^&GF^&GF^&GF|tF:ue^߷tPLFF^ S^&wFPPvFu+J&>u+J>u&>u+J>u&>u+J]˵F  $+/>BIPT cgnuy ĉč UQQr~Nt+JVt_^v&F&8t%&:Ft86F&8t &8uF$6F&8t &8uF|F~N F ^&]D) \<EQUaptĀcBU^&sFF FFFF;FsFv~N^YF^&]!*tfmrun1PLM86 V2.310/24/94 10:22:1ߖ1STACKMEMORYCODEDATACONST FMRUN1_CODEDGROUPh@?HH/ژTD K CHWHITESPACERGBCOLORPALETTESAVE RGBCOLORCONTROLSAVERGBCOLORPALETTE RGBCOLORMASKRGBCOLORCONTROL& ICOLORSEL ICOLORUNSEL ICOLORCAPT ICOLORLINE FCOLORCAPABLE+ FUSECOLOR, FCOLORSAVED- FCHECKCOLOR.А^ DISPLAYFORM UNDISPLAYFORM* READFIELD0 WRITEFIELDo DEFAULTFIELD DEFAULTFORM SETFIELDATTRS GETFIELDINFOF IBLANKLOOKUP{CHECKDECIMALVALUES READIBLANK% WRITEIBLANKL  DEFAULTIBLANKp SETATTRSIBLANK GETINFOIBLANK  CONVERTDATA ENCODEBINARY IVALLOOKUP EXTRACTVALUE UNPACKCOLORS/ PACKCOLORSW CHECKCOLORvnRGTDFORM CHDECIMALMARK FVALUEFOUNDCALLPROCCOMPARESTRINGS BLANKCONTROLCHECKDECIMALMARKCHECKERCPROGRAMCOLORMAPPER QUERYVIDHDW PUTFRAMECHARS PUTFRAMEATTRS FILLFRAMEQUERYFRAMECHARSQUERYFRAMEBOUNDSFORFORMS CHFIRSTFORM CHLIMFORM D 062A01 0   ?*<09 @A/ &-WTSQ+-,,-+.+U<,t .:t^ &GF&GFv FPFPF ue~uF:FwSF*F1F~uF:Fw2F*F1FFFFNNN8Fr8Nsw{^ Sv^ &GFFFF:Fs,FFF:Fw^ v^F&$F&N&ONtf,s Fv FPFPvFPFv FPFP^GPFPFFNp^&G:r:w,s Fv FPFPvFPFv FPFP^&wFPFF@FF u9F\:6V̯\ 6V [V zŀŅōőͯV V @FFtF ^ &GF^ &GF^ &G^ S] G2\ *U^&ux^&GF&GF&ON&GF&GF&GFNF:FsFFF8Fw^v^F&N&ONVRPFPPQFFPFPFPPFPF u;FtFNF@FFFnFtS^&G]d ̗V ̺V C0UQ^S^Svv{F^SP^Sv^ S^S%]6\5\àAoUQ^S^Svv{F^SP^ SF P^SL ]\3\Š1UQ^S^ Svv{F^SPp ] \#\ՠAU^&G FFF;Fs^SPp F uF]М$\4UQ^S^ Sv v{F^SPv][\&\Ҡ9FUQ^S^Svv {F^SP^Sv ]~\+\͠{U^&G FFF;Fst^&G FF&|^AFFv&t^&FN;u.^ S^SQu^&G t &G;FuFF넸] jVΠU FF$F^&*ɈN~,Nu+JVu~.Nu+JV~u FFFFFN*ɈNF:FsFF{F:FsFF{F*FFFsFFFu!~tFrFF^ &0FD~uZ^&<+t<-uL~tFr%Fȴ^&^ &F^ &0:^&^ &^ &G0F ^ F8vNFY~t=FF^ &,FF^Np^ yN^YFs,~u~u ^&FtFF^&F^&ȊN:r'^ &<,t<.$uF^ &FuʋF]L  %U6^&ux ~uyF^&G FF^&GF&Gv&F^&O&LN&ONF\^&Gu+FPFPFPPFPP(^&G &G ^0NFFFȊN:rt< tFFuۊFrcNt+JVN+ʋu+JVu F+FFFv\NN^&Guz& ts^&G t4FFP&w ^P^&w \PFP&w F9^&O S^_^&t 0\^F ̧V̭V͹\Ƞ= &G FF\PFP^Sv^ S^SP]/\ L U F^&ux4~uy)F^&G ^F&8u &8Gu^&GF&Gv&F^&G&DF&GF荎VQP^ Sv FP^SPF us^&Gt,^&G &G vP&D_^F&u^&O t$VN򤍆PvVP^S^&wVPvPUĞ&0Ğ&@u ~N] 9U~.u+JVt2~:Nu+JVuFFF^^&?tdF@NFN&^;uQP~WStNF;v.^PR@+QFPPFPPF tpF^&FNFNFsFNFN^Sv^Sv^ Sv^&S^&FNFN!z]:ExV̯\ VU~ t{~Nt+JVuFFFF9Fv8^&:t*0rJ9wEF ^v&0FFN+N^v8t+JVt|F^&^&]М Lĉy U^&G &G PF^FF&|^^FFFFN&V^&8GsNNF:Fv}FF@FH^&FFF~uF%FF8Ft^&G:FsF8Fu]F^&FF@FH^&FNF;r^vQ^ SPF~VV9U ^ &G &G PF^FF&t^ ^FF&NFF:FvFF@F^&FF܋FFNFN؎],/U^&"^ &^&"O^&] s#WUF#^ &#N^ &O]ԠvUL+FP,PP~u ~u+Fs+,.sBFPPP+sF^&G FF;Fr.^&G FFذ&8u&8Gt ,v&D &D ^&gȋ^FFFFw^&H?Fu^&G"&W "ѱ&W "ѱ´&G "±&_ "ڱ^&"W´-s,PP&PQRPQRPQP.PP&QQ RPPQP-]F7cV V-9>BLPUXdV jVoĹ0Z]dm̓V ͉VŐřŢŨͮV ʹVźtfmrun2PLM86 V2.310/24/94 10:52:0ݖ1STACKMEMORYCODEDATACONST FMRUN2_CODEDGROUPh@HHST:ɘD K{FERRORFHELPMSGFOVERTYPEANDBEEPFNEWOS RGCHBLANKRGSECRET FOVERTYPE8 FINSERTNEXT9 FMODIFIED:FJUST;FSECRET< FEXITBLANK= FOKTOWRITE> FCHECKSECRET? FFIRSTBYTE@ FAUTOEXITA FLEFTLIMITB FRIGHTLIMITCIFRD ICOLFIELDE ILINEFIELDFCCOLG ICOLCURSORH ICOLCURSORVIICOLLIMJICOLRKICOLDLCHMCONTROLNJUSTIFOBLKTYPEP1 USERFILLFIELDLOCKKBD8USERFILLIBLANKfBEEPCHECKERC QUERYKBDLEDSREADKBD READKBDINFO SETKBDLEDOPERROR DELETECHAR MOVECURSOR SHIFTCHARS CONTROLERROR INPUTSIGNTESTFKEYTESTEXIT WRITECOMMA USERVALIBLANK OPHELPMSGCHECKICH COMPUTEICH UNPACKCOLORS PUTFRAMEATTRSPOSFRAMECURSOR FILLFRAMEQUERYFRAMECHARS IBLANKLOOKUPCHINSERTLITERAL CHLEFTCURSOR CHRIGHTCURSORCHFASTLEFTCURSORCHFASTRIGHTCURSOR CHSHIFTDELETE CHDELETECHARTABKEYFCORR CHDECIMALMARKSBPROHIBCURSORMOVINGSBFIELDOVERFLOWSBRESERVEDCHARVSBSIGNPROHIBINNUMBER SBNULLSTRING RGBCOLORMASK ICOLORSEL ICOLORUNSEL FUSECOLOR D 062F01HGFE<UQQ^S^SvvF^SP^ S^Sf]V.\28UQQPFPF u ~u޸]r V VV fUF^&uxFt ^&O I;syoF^&G FF^&G &G v&dȋ^FFF^&Gt&^&tF^Sv^SFFs^&GD&Gv&E^&G&DF&GG&GF^v&t 0GFF%ĢPtD^&G^&GFGȊ^:rt < t ^&GFuظP$u@?s;^&G &G ^0EGFFs:^&Gt^GPPP M̚VĶÎӎ܎9Hgs|ŜŢŦź,Ԇ*ن+V*+SFDPEPFPF% FPGPPEHGJ@:;<9N@ ɱuAAN ɱuANCBFPPF$u@8^& u&O @^&G u&O ^&G $O&O "ʈNu&"W V^ &FFPFPv=>=tY O.u{>;uw8@u`^&O NJ*ʈLʈHNs~tF;FHF(HH>@uJȴ+FHKKHFHFF@r8rHIDPHPFPF t+HȢHC㜽*).4V:V?BFIMSVY\nĂą̍V̓VĤҎގV  \"\$\&\*3FNTgnwzŀņŐœŘśŤŰŷžĎʎЎV뎖ADQPFPF t:rMPF tD PPQF t] MR%@ w@Q>Fs3s.r'FMt":tZPWM8tD:t<:t4<t0:t(:t"<tMu9^&G#t tv&|u ^S8^Sv(FsO.o @:MuNPM8t<uC>;uPP^SFH:Lu;@ChHC\:MuE>;u+H V&+VV NVaj\nrv{́V ʼnōŗͦV ŲŸſÎǎΎҎنݎ鎰.:Lu P4HKIB!PP^S:Mu.>;uPP^SFLHC:Mu->;u@LȢIBPP^SrM<t78t18t+sIM<t8u>R"t:Mu,>Ru%>;uPPFCPP7MMts+>Mu$>RDu8Т8WPP:Mu>;uNPMt ^SMNu Pz>Nu,M<+t<-u!>;u ^S$ V 2V :>DUV afjqu{ĂĆċď̟V ħĮĶ ļȎІ ֎܆V V#(V4;uP^S0P^S @>9u'>Mw9PP^S:MuNu P9rM<t78t18t+s6M<t8u>R"t:Mu>RuPPFsMMts+>Mu$>RDu8Т8WPPM8t<uPP^SF:Mu+H:Ju PHKIB:MuPP^SF:Mu@JȢIBMt ^Sg' V V 0V :>EKN&SVcV kot~V ćĎĕĝ ģĨįķ ĽÆǎ͎VV  &+5V;VCGYV einty$~VņŋŎŒřŝͭV ŹŽÎǎ̎Ў؎ކ!V G MNu PM>NuM<+t<-u ^S.P^S>9u)>Mw9PP^S:Mu!9rNu P9M<t8ulFE:Hr7FsAr PM^&G^&G=kHC8sW>MtMPPC:MuPP^S':MuEHCF :MuPP^SrM<t@8t:8t4r/M<t#8u>R"t:Mt>RtPMMto !V "2V BV KRY]&bVrV z~ăĊ̔V ĝĤĬĵĹŎ̆$Vَ V!1V 9=BEJSWeV mt| łŇőř şťũŲˎΎV s*>Mu#>RDu8Т8WPPGMt ^S.MNu PP^SUW 8>t8u P?s<MHM#s]>OuVJ:HuFs8s PFDPHPFP6MPP:*J:HuP>OuIFs8s P]DPHPFP6MPP:F.DPHPFP6MPP:FAs ^SJ:HuH?s.><u'^&G &G E^92 %V+V39!DV LQU!]V lV r\t\v\|ąĊ(̏VĔĜĠĤĪĮIJĺƎҎVVV V"/6%;VBHNU\VbViqw}ń͋V͑VŗşͫVŰŶſŎ͎Ӡ4 GDPEPFPPGPP^Sv:^&G^&G?r.FGȊ^:rPt < t ^&GFu2EFEGȊ^:rt < t ^&GFuԠs&DPEPFPF% DPEPFPF%PGPPDPPPP]ݜk !'V-V:V?T_nĉďēĢĻ,ŽȎΎۆ+߆)V VV#Vtfmrun3PLM86 V2.310/24/94 10:22:4ܖ1STACKMEMORYCODEDATACONST FMRUN3_CODEDGROUPh@B ŘH HT<ŘD K FCHECKCHKSUMؐOPENFORMREADOBJ> FINDMODULE&FINDTYPE ISTRINGFIND; FMATCHSTRINGISEGFIND IBFINDPUBLICREADDATA LOOKUPLIBSYM*HASHKEY SETUPPAGEREAD FCOMPARESBTYPEREADBYTEREAD@WORDREAD SKIPRECORD4READ PBUPPERALPHAS PBLOWERALPHAS CBLOWERALPHAS LQ_DWORD_MUL D 060D01S DATA0BUvFPN QRPQ^Sv>^&;Fvv]؜  \%:>UNdždždžPu^PF8Fu]$\ˠQ;UQ^ PPF^ v&>uP^SFPsFFѰ] \!3\VU^ P@FFFF:Fw>t^ P@FNs N^;st^&V*uF&>Fu+JVt &F>Fu+JVt &FF:FtFFLFFF^;s^&8*u& Fs F^F]" \)8\jqĉĕĜĴrUQQF>uV^ PP^ P@:F u3^ PF^ P@:Fu^ P@:FuFF룰] \%\5\C\S\"U>t^PFuP^SFPF^PFNr"^P@F뷀~utn] ]\)\7\K]\k\̀\đUQQ>us^PFuP@FVN;w^ ;v +ʋ^ &FË] w\+\;\MV\*U^ G F^GWFVvFPFPFPFP^ PFFVRP^ P@FF~%sg^v&8u &%tT1^v&ÉFPvs^F@F؋]FFFF%;r)N듋FFFN;w)NG2\IVV\a\̡\U^FNFFFFF~tP^ F^ NV´3ЉVVŠ^3ӉVV3ӉVV3‰FNFN몋F16^ F%1^F16^ F1^^ ?u^?u] Ĉĥ2U^ G^ GN~+^ O](UQQ^^:t^FFuȈF^@>u+JVtS&[@^F@>u+JVtS&[@^FH^:Hun]I7;TnrċLmUQ>tT^tP^G ^P@F^P^G~u^P^GF]P\/\=\T\@U>t}^G FGF;r>OW^7G PQwwFPuu^GF^vFFv^w^O^FG F]?GVLUM-UQ^P@F^P@FF]Μ \\IUQ^t>u P@Fs^G t >uu]\"4;-tfmrun4PLM86 V2.310/24/94 10:52:2ۖ1STACKMEMORYCODEDATACONST FMRUN4_CODEDGROUPh@ HHT%D K/USERFILLSPECIALUSERFILLIBLANKSPECIALIRBEEPCHECKERC QUERYKBDLEDSREADKBD READKBDINFO SETKBDLED PUTFRAMECHARS PUTFRAMEATTRSPOSFRAMECURSORCHINSERTLITERAL CHLEFTCURSOR CHRIGHTCURSORCHFASTLEFTCURSORCHFASTRIGHTCURSORFNEWOS IBLANKLOOKUPCALLPROCۜ D 060A01MUQ^$S^ SvvF^$SP^S^S^Sv^ S^SI]"oV?\IU~uy&F^&G FF^&uxcFFFF1^FF^&GF&Gv&F^&G&DF&GF&ON;Fv^S^SFP^ SF u܊FPFPFP^SFPPFPFPFPF%PFPP^&FFFFUPPU$u@VƆTFPFFPFPF tFPFFȴPFPFF urSPF t0  PPQF uݠ SRS:G̶VVV VV1V7VgV ͊V řͦVŸſÎVՎ܎ߎ 8uTrTQTrZS< r<rNS<tF<tB<t>rVͻVVV Vtfmrun5PLM86 V2.310/24/94 10:22:5ۖ1STACKMEMORYCODEDATACONST FMRUN5_CODEDGROUPh@HH TD K D 060A01tfmrun6PLM86 V2.310/24/94 10:23:0ߖ1STACKMEMORYCODEDATACONST FMRUN6_CODEDGROUPh@sHH T'D KMOVEFORM USERFILLCHARBEEP QUERYKBDLEDS SETKBDLED FILLFRAMEQUERYFRAMECHAR CHSHIFTDELETE CHDELETECHAR IBLANKLOOKUPQUERYFRAMECHARSQUERYFRAMEBOUNDSFORFORMS MOVECHARS CHWHITESPACEМ D 060B01U^ &uxp^ &G;F uFv FPFPF uI^ &GFF&ONNV;r F;swF^ &GF^ &G] 1V UF^S^SvvFuy&F^&G FF^&uxg^&GU&Gv&F^&O&LN&ON^ &FNN;r Ft =t=uF;FvHƆR^&GQTPF unT$u@S~tFsF;FrNFINFƆP~t@Pr8UPvvOPF tOtƆPNN뺊PsF^ &N;wNNF;NwINSs1Ft;t ;u^FrWFF;FwUPFP@PvN+NIQVVGVŰźzF uQUPFHPv6PF uf4~u4Fr-UPvv6vF uzFFƆR+~u'Fr SЈSWPF uBNFINFƆP~t=Pr5UPvvOPF uTOtƆPNN뽋F@FN^ &;vFSrQUPFHPvOPF uNO:uxUPF@PFPvN+IQF uPUPvvvPF uƆRFUPFPFPVPvF tcFR^&GLF+F^&F^&GR^&G5V  $VN TV̌VV&V7 VV vVͦV ʹVנ6gVNt+Jt@^&GF]Ĝ tfmuserPLM86 V2.310/24/94 10:23:1ޖ1STACKMEMORYCODEDATACONST FMUSER_CODEDGROUPh@YH HTYD K DELETECHAR MOVECURSOR SHIFTCHARSTESTFKEYTESTEXIT= CONTROLERROR CHECKCHARDECIMAL FERASESIGNALONE  INPUTSIGN  WRITECOMMA CHECKICH COMPUTEICHCHECKDECIMALMARKCHECKERCOPERROR PUTFRAMECHARS FILLFRAMEQUERYFRAMECHARQUERYFRAMECHARS MOVECHARS CHLEFTCURSOR CHRIGHTCURSORTABKEY CHDECIMALMARKSBMANDATORYENTRYSBPROHIBCURSORMOVINGSBFIELDOVERFLOWSBILLEGALFUNCTIONKEY SBMANDATORYTX SBMANDATORYAN SBMANDATORYAP SBMANDATORYNUSBSIGNPROHIBINNUMBER SBNULLSTRING SBNOLISTVALUE RGCHBLANKRGSECRETFERROR FOVERTYPE FINSERTNEXT FMODIFIEDFJUSTFSECRET FEXITBLANK FOKTOWRITE FCHECKSECRET FFIRSTBYTE FAUTOEXIT FLEFTLIMIT FRIGHTLIMITkqIFR ICOLFIELD ILINEFIELDCCOL ICOLCURSOR ICOLCURSORVICOLLIMICOLRICOLDCHCONTROLJUSTIFBLKTYPEU D 062F01 2 0UQs~uHQQQPPPss~t:vcPPPQ*ȵQP8wPPPPP>up<t u PmsƇ # PPP6PP~ u :t~ u:us ^S=~ u tȢ ~ u[PPPPPPOuIA:uXȊ:rPPQPPP^*'*$$,*%%,%?,E*J%W'[*`$i$l%o&u*{(ā̆V̌VĒĘ0Ġ ĥ ̪VIJ!ĺ*Ŏ̎І&ֆ*܆(VV'* ,*#!\,*1*7*@-E*H-L$U%X$a&g'm(sx)~V̈́Vʼnŏ)š'Ū*Ů,Ŵ*ŷ*ż'ſ†,Ȏφ&؆(ގVV9>t$tȢ:vu]4%-'-!-$-'+-=UQ~ t[s:8wu:v^S=PPPPPt>u< t>uQȊ:vDs $PPPPP<+t<-u*ȈNFs*ȈNFPFPPPFPPs$F:r^Fus:rs>uU<+t<-uJr$PPPPP:t<+t<-usP^+''#21;'?*L\T&Z'`(fkVqVv~0Č0Ē,Ę*ğ!ĩĬı&ķ*Ŀ(ŎVVՎ*'*+&(%V+V0!8@KOV[c+jn*r,z%Ņ0ŋ/Ŗŝ&ţ'ũ(ůʹVͺVŽƆ'ʆ*Ҏ&ˠȴPPPP>tU:uU>uNs ؊"PPPPP<+t<-u P|PPPQ*ɵQPs?*FFF:r^˷S^XFu]̜, (VV &+'/*50u!":t ":u P+>u P^&G^&G]ܜ / !#')1)=&C'I(U)[VaVglp)vąğĤḭ̃\Ķ0̼\ņ/ˆ ҆2َ߆ / VV/5~=UF.U[g>uL1s%:w4uusl)PPPlPPPȊ:r,lu+JuuǠs P^&G^&G] 1\\\\ +3'6+BF/W'\c,i*w,ą&đ(ė̜V̢VĨIJ2Ļ!Æ'Ɇц)݆&'()VV )%?DIP UV\ rؠ: U^. P]9' \\\\\\$).Vˠ U>unrYPPPPP:u<PPQlPPP.:tCl*lt+JVu ȴ3ȴl+t-u!ȴllƂl0*ɵmu+JV ulɈsEl؍Ȋ:rltƂl#uݠPPQlPPP]ʜ 1!&."((-V3V8 uSȊ:ws $PPPPP<+tO<-uWI8s)QȴPPPP>uss:t P P^S]m& *(V!V'-,3*=!GJO&U*](chVnVsĀ*Ą'Ċ&ĕ(ě̠V̦VĬIJĹ*Ć+ɆV\r UQQȢsQPPPP>t;<+t<-u68s'QȴPPPPPF0F~PPPFtT<+t<-uG8s3ȴQSP#PPPƇ0#~PPPFPPP]. *!&#().V4V:@K*O'U&`*f(pVvVāĊ ĕ&ě*ġ(ĭ ı.ķĻ*Ȇ*Άن*݆'*&( VV*!2&8*>(MVSVX.]*`+eh\qUQ>u-^ &?r^&^ &F3^&*F,<t<u$^ &?r&ȈF^ &;s&] 1/)91S)U.>u*F,**E*^&^&@0s^&9Gu**^&]\I1\\\\)&.**.'5*9.O#Y e*h,n*s*w' XUQF tCv ~^YFF HN;r!^&<,t<.u ^v&Fuԋ] .> ̊t fmvaluePLM86 V2.310/24/94 10:23:3ܖ2STACKMEMORYCODEDATACONST FMVALUE_CODEDGROUPh@[HHZT<D KoRGBTMP&CBBLANKS CBEXTBLANKSCBRGBSCR CBBEGINFORM CBBEGINDATAIBWORKIBTMP FHSAVE$P EXTRACTVALUES GETFORMAREAn PACKSTRINGS ADDVALUESk WRITEDISKFORMl ALLOCAREASL ALLOCMEMORYSL CLOSEFILE CREATEFILEDEALLOCMEMORYSL EXPANDAREASLOPENFILE SHRINKAREASLOPENFORMCOMPARESTRINGS IBLANKLOOKUPWRITEOBJ D 060A01;7S .Form M L-NewGF DATA#rU PFPF uM^S^Sv^SvnF u^S^ Sv ^S:F^S P"F]+V1\^Vc!nUv~N tFPFPv PPrmPF=u:v zF F NQNQP PPrmPFF t~u:~.N u+JVuF FFFȍvvvvNtvvPv^S PF t vF vFF]*)6VIhuVV V VRU^& u2^&w FFF^&~ N^F&9G w^^F&w^FFv&| ^FF^&G F^&v&ʴ;Fr^&S^ 8[^^&^&@&^w^ ~&=9^Y^&^&7F^ &^ v&4xvNFYF^&@&F]URFF&9G wa^F&w&F^F&w &N^&O NFFF;Fw9Ft9FtF^F~u:v&tFFPFP&Pu ^&GF^&GuW9FuO^&O V;r?v&|  N܌FދvFt+J;Yu ^&G FF'~u^&@=wIȉNv& 9^Y^&@^&G t*=w<^w>9^YF^&G~udF=wFȉND &8LĊĞV NX[oňŌŪŮ؎\8vNFYF^&Gt&O=v^&GF^&G ^&Gt&G^&Gt&u#F^F&g ^F9FuDv&9t<^&;t2FFPFP&Pu ^&Fĸ9FuP^&9GtG^&O;t<NFv& ~͜&FnĆģƎK_ŇͥV Վ^t+J;Yu ^&GF¸9FuM^&9GtD^&O;t9NFv̋NFt+J;Yu ^&GFF9FuR^&9tJ^&@=wbv& >9^YȉN^&@F^&9FuS^&9GtJ^&@=w_v& >9^YȉN^&@F^&G9FuG^&9Gt>F=vI68v̋NFYFFF^&GF^&]==ĔĩĭļĿҎ  #6XfjŁŅŏŢQkU PFPF uu PvPF tF^S^Sv^SvnF t^& u)S P"^S P"^&w FF^&G &O FFFF^&G HN;r;^^F&Gt&G:t:Fv &GFFus F^&w VF^&G &+ȉ>Y +68&w  &G 6 6F^&G HN;r(՜kV$)V;S\mvV{̇VČİ2^NƌF^Q&O &^ ^&G ^&G  > vF$F^ T1:V?KVPbfrăćĤĨюՎ._csņŊŴԎ؎Ѡ7F&9G w^^F^Fv&Dt&GNu+JVBF+‰F^vxȰ.u+JVuFFFF^vp~H^ &G^ &G^ &GvFPQPF P&7F tvF t)6$FvF t 6$FF] Ԝ<%UdVāğ̮VύVŁ͒V ͡VŮͱV;VˎV]tobjioPLM86 V2.310/24/94 10:23:4ۖ0STACKMEMORYCODEDATACONST OBJIO_CODEDGROUPIh@KH#HT2ϘD K LFAFILESIZE TWRITEOBJ STARTRECORD ADDTORECORD FINISHRECORD PUTBYTENFLUSHOBJ"ٌ)CHANGEFILELENGTH SETFILESTATUSWRITE# D 060A01RObjIO version X2.4[H;4:9 0!7"7UNPP^&PPFP&PP PPPPPPPPPP PP^&PPFP&PP PPPPPPPFPPPPPPPPP džPP^ &PPPPPPPPF P&PPPPP PPP N;v{+ȉ;vPPa 7\P\Z\k\u~\Ĉ̑\̛\̳\\\\\ \ \*3\=\[\en\x́\͚\ͮ\Ÿ\\ˠPPP!PPPPPP^PP zPPPP"PPP P"]% \\3\L\V\r\|̅\̏\̙\ĞUU>uCF@F^ G^ G ^ PvN^ PvN^ PFPN] ,\:\I\٠=UQ>u(FFHN;r^ P^&0NFu݋]@*\2 U>u ^PG PN^tu]; \&LNU>uv^G FON؋FF@F^G^O^FG 9Fs^OW;u;r"^766 uI^7G PPwwFP^GW^G^ F]k$Y_eiswzV̟VĤb"UQQ>u=^tjGW;u;r$^766 uN^7G PPwwFP u)^GGW^7PGPP]+#)/9=@VEeVj̒Vėt typeformPLM86 V2.310/24/94 10:23:5ږ3STACKMEMORYCODEDATACONST TYPEFORM_CODEDGROUP@h@rHH TD K-FTYPEFORMCOLORFVALEMPTYANDMODIFIED? PREVIOUSFIELD NEXTFIELD0VALID{TYPEFTYPEFORMBEEPCHECKERC IBLANKLOOKUPOPERRORUSERFILLIBLANK READIBLANKTABKEYSBMANDATORYENTRYSBILLEGALFUNCTIONKEY SBINVALIDDATA RGVALPROCCALLPROCCOMPARESTRINGS D 060J01Character. L4U^ &?u~uF&P^ &] V VڠO0UQ^&G H^ &;u(~u ~uPF^ &^ &]  'V-V{UF^ &NNF^&Gs ^&G H^&G F^ &;Fr^SP(PvFPPF uK^ &^&G ^F~u&GtPF^&G;Fv~u<^ &7^&H^v &4p~&YF@NFNR^v &4p~&YF@NFN(QNNFȋVNV^&G^&G^ & ~^&GF^&G]&chVĞ̣VfUFx^&^&G ^F&8u &8Gu^S^&7FPFPF^&~t^&G H^&;t ~uF ^&^&G FFƆ|F=ud^& u^ &?t ^&uh^&":u^&^&":t\^&F t^ꊇ":tsFrxs(Fs^&7^&HFsFsr^&Gt,^&G &G v&dȋFތF&?uƆ|&7^FڌFܸF؈}y}royrg^؊F uƆ}B^&7SVʆ܆ZՆ N;u3v؍PGPQu^^ҍ~ԹƆyFF҃F뉊}sT^S^&7~P^&GPFPPF u^v&tF̌F΋&v^&G9^&;FЈ=>ȍ~FFP^S{r+ƆxFĉFȌFʋ&?tPF‰FD^&^ &u;u"Ɔz&^SPP9^&Ɔz|sN{rF^&^&t":ts^&":uzsP^&?t3^&^ &F^&^&{0 V ( w|VV  VcVŘŰeu~uO^&F^&":u^&":us^&":uZ^&":u ^&"^&":u^&G H^&^&":u ]PFF_R% 9RkĉĮ† VU^&ux^&G t&H&G ^F&8u &8Gu^&w FFFF^&G ;Fv,Fr%^&GuF܋FNFNFȊFr5^&G~ uF#^S^Sv v FuyFFF=w ƂFuF~u^SFPPFPFPPFwz.)Y^SFPvv08FPvv^S^S^SvFPP{Ft^&GF]Q&JV+\>\@\B\D\F\Y\k\͓\.t utilformPLM86 V2.310/24/94 10:24:1ݖ3STACKMEMORYCODEDATACONST UTILFORM_CODEDGROUPDh@bHH,ݘTFD KLOUTFORM FONCTFORM RESTOREFORM SETFIELDTYPESTOREFIELDDATA. IBLANKLOOKUPEDITFORM CONVERTDATATABKEY= D 060B01 &[NUL]6+ UF tJ "^Sv^SP&P6^SvQRRSQ t ^ 8v @ 8vNFYF ^w 9^Y  ^w9^Y ^&w ^&G ;r^6&t &6 &6 &F6 @ 1> 9^Y  &O& @ &O & @ &O & @ w9^Y +1@FVKX_csw{ĘěĦĹĿʎގ!'04;?HMPTXaeswz~ňŎŒŖŠŦŪŮŸžŽƎΎ>2 ^&^&;F v]  UF  F; v6 &8w  ܋F; tg   9FvP&$6 &.$Ƈ$Ƈ $Ƈ  머]X $(59BMSXako{\}\\ā\ąĉĐĔěğħīGUF PQ+RQRQRQ&OQ&OQ&GP^Sv] 8V=U~v6^&w ~uC^S^ Sv vuy@^&G ;s]^.&g*&g&O&g&O뚸]/Y5V:HQUX\_cosx|Ĉ\Ċ\Č\Ď\ĒĞĨĴľǎΎюՎَQU^ S^SvvuyFFF;w^v&8wFFFF^v&8vFNF+ȉNH^&^ &G^vPv^Sv^ S^SP]dV7̦VYtvam2PLM86 V2.310/24/94 10:24:1ݖ/STACKMEMORYCODEDATACONST VAM2_CODEDGROUPh@sHH T3D K?QUERYFRAMECHARSQUERYFRAMEBOUNDSFORFORMS MOVECHARSLɌtCURRENTOSVERSION GETPSTRUCTURE PUTFRAMECHARSQUERYFRAMECHARQUERYFRAMEBOUNDSQUERYFRAMECHARSANDATTRSFNEWOSC D 060A01UFPFPF uq~ r-FPvv ^SvRPPF t=>FF9Fv.NQNQN Q^PF uFʸ] VBVzVUFPFPF u(~ r~ sUPPFPF um^&G :Fw\F^X ^F&G^ &^&G(FPFPFPF uF^ &F^&] V$;V̓VTLU~u8vv vlPvF uvv vlPvF] %\CVtfmptxlCTAsm 12.2.0p*??SEG??SEGDATADATAConstConstDGroupјhH H YrgchTxl| 060A01 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ************************************************************* GtfmrgtdCTAsm 12.2.0p*??SEG??SEGDATADATAConstConstDGroupјhH H/ߚYrgtdFormM DecodeChar EncodeChar EncodeFlag DecodeBinary DecodeFlag EncodeBinaryw 060A01BinaryߜGV V V VS Character V VVV!FlagVV V V.*t fmtabkeyCTAsm 12.2.0p*??SEG??SEGDATADATAConstConstDGroupјhH H Y'fCorrTabKey chDecimalMark 061A01.   mGt fmvalprocCTAsm 12.2.0p*??SEG??SEGDATADATAConstConstDGroupјhH H Y rgValProcĠ 060A01XGt formsalltextCTAsm 12.2.0p:??SEG??SEGDATADATAConstConst Forms_DataDATADGrouphH hkH  R, sbMandatoryAPsbIllegalFunctionKeywŐchFastRightCursorj-sbSignProhibInNumbersbReservedChar3 chShiftDelete chFirstForm chDeleteChar䐇 sbMandatoryAN sbNoSuchValue$ cbYesTextxsbProhibCursorMovingPsbMandatoryEntry@cbNoTextpbNoText| sbNoListValueBL! chLimForm chRightCursorc# sbNoHelpMsg2 cbUpperAlphasu chLeftCursorx2 sbMandatoryNU pbYesTextt cbLowerAlphas>chInsertLiteral:7sbFieldOverflowh sbNullString# sbInvalidDatacchFastLeftCursor6 sbMandatoryTX pbLowerAlphas: pbUpperAlphas 060A01TABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz Mandatory fieldU:70Y_*RHMC$e ICOLFIELD-editformHASHKEY;rgtdFormyFILEEDIT WRITEIBLANK PACKCOLORSOPERRORrgchTxlxVIDEDITFNEWOS- FEXITBLANK-OPENMODE typeform!l2"(;A READIBLANK pbLowerAlphas|typeformlchFastLeftCursor|sbFieldOverflow| utilform!r~"\HtP2dm:B*z CHECKCOLOR sbInvalidData| sbNoSuchValue| sbNullString| FCOLORCAPABLE SETFIELDTYPErBYTEREAD; IBLANKLOOKUPFVALEMPTYANDMODIFIEDl EXTRACTVALUES[sbReservedChar| DELETECHARLWORDREAD;CCOL-TabKeyzCONTROL-1E"K?\8T-c chDecimalMarkz TRANSRBUFFRGBCOLORPALETTESAVEIBTMP[ DEFAULTFORM ICOLCURSOR- FAUTOEXIT- NEXTFIELDlchInsertLiteral| FCHECKSECRET- ICOLORLINE(9-E 3?L FINSERTNEXT-CBRGBSCR[ chRightCursor|BLKTYPE-ISEGFIND; INITFLAGS FMODIFIED-OPENFORM; FRIGHTLIMIT-ZDaiu="odM19T)zFTYPEFORMCOLORl FONCTFORMr ICOLORUNSEL ENCODEBINARY FMATCHSTRING;FJUST- ICOLORCAPTSETATTRSIBLANK ICOLCURSORV-pbNoText| SHIFTCHARSLIFR-READOBJ;FINDTYPE; editform!fmbnry!( =TN2F7^Yc FOVERTYPE- TRANSRCHAR LOOKUPLIBSYM;FOVERTYPEANDBEEP-LOCKKBD- ICOLORSELQUERYFRAMECHARSv USERFILLCHARH TRANSCHARfmcmpb!fmrgtd!yobjio!he'k=L\6y~1Cs!T pbYesText| UNPACKCOLORS cbYesText|CHECKDECIMALMARKLJUSTIF- DECODECHAR READFIELDCOMPARESTRINGS EXTRACTVALUE blankcontrolUSERFILLIBLANK- INPUTSIGNL sbMandatoryNU| chLimForm|fmrun3!;fmflag!fmptxl!xNAr[Tk&4:d,Hw FBEEPONERRORCHECKDECIMALVALUESMOVEFORMH WRITEDISKFORM[RGSECRET- ENCODECHAR WRITEFIELDWRITEOBJh RGCHBLANK- WRITECOMMALSTOREFIELDDATAr PACKSTRINGS[ RESTOREFORMrfmrun2!-X]=)CR"K80c DEFAULTFIELD GETFORMAREA[ sbNoHelpMsg| IVALLOOKUP sbNoListValue|PUTBYTEhcbNoText| RGBCOLORMASK FINDMODULE;TESTEXITLfmrun1!fmvalue![j2oT$fbD*tOZ:zOPENINGCHECKICHLFHELPMSG- OPHELPMSG chLeftCursor| cbLowerAlphas|sbMandatoryEntry|RGBCOLORCONTROLSAVEFHSAVE[ rgValProc{ DEFAULTIBLANKICOLR-ICOLD-IBWORK[fmchar! fmtabkey!zg`An4;-KvZ!UO| FLEFTLIMIT- FVALUEFOUNDsbProhibCursorMoving| DECODEFLAG FOKTOWRITE- FUSECOLORchFastRightCursor|TYPEFl MOVECHARSvOUTFORMrCBBLANKS[ CONVERTDATA DISPLAYFORM formsalltext!| fmextend!Rz8;mtB+0Y"Je chShiftDelete| FCOMPARESB;RGBCOLORPALETTERGBTMP[ SETUPPAGEREAD;CH- ADDTORECORDh sbMandatoryTX| GETINFOIBLANK ENCODEFLAGsbSignProhibInNumber| FINISHRECORDh ISTRINGFIND;TESTFKEYLFLUSHOBJhFERASESIGNALONELfmrun6!H blankcontrol!J^Vt$)f3mC;RUSERFILLIBLANKSPECIALBICOLLIM-FSECRET-CHECKCHARDECIMALL SETFIELDATTRS USERVALIBLANK SKIPRECORD; cbUpperAlphas|fCorrz pbUpperAlphas| PREVIOUSFIELDl WRITINGFILE chFirstForm|QUERYFRAMEBOUNDSFORFORMSv UNDISPLAYFORM FCHECKCHKSUM; IBFINDPUBLIC;fmerror!fmrun5!GHOW^<#)07cUSERFILLSPECIALB CBBEGINFORM[TYPEREAD; FCHECKCOLOR GETFORMNAMEFERROR-sbIllegalFunctionKey| BUFFERCHECK DECODEBINARY fmvalproc!{fmrun4!B COPYRIGHT 1980, 1994 CONVERGENT, INC. ALL RIGHTS RESERVED COPYRIGHT 1987, 1994 UNISYS CORP. 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 OFGW,s;Copyright 1992 Unisys Corporation. All rights reserved.Ver s6.4.7 Linker 12.2.0 # 5 2 u  - | * <  =C#bh<hn{gmw@4ms5;^d#IOu{: o u TFFjMrK.  G !0XN>qQ%\I~>Ai 7pv{W]h4: IO#-3CI7=, ,,,$,(,/,3,=,A,M,Q,\,`,,,,,,,,,,(,4,T0TFTTFTTTWTTTTTTTT<TbTTT)T9TXTTTTTTT)T@TPTsTTTT T[ Ty T T T T# TB TR Tr T T T T% TA Tu T T* TC T\ Tk T T T T: Ta T T TTT)TTT\,|,,,CFFFFbFhFFFrFFFFdFjFFTFyFF-F3FFFdFyFFF\FbFFFFFF: F@ F F F" FQ FW F F F F F F0 Fh F F F FFFFFtLLyLLL]LjLLLLLL-LALjLLLL8"Gg->]sD  i     e {  Lf-)`&,Qllll,lllllls"p6Ee+Kp/=cq^u- kYYYYYYYYyZ=yZkyZyZy'Zy/Z#y7ZQy?ZyJZNZRZVZZZ_ZcZgZkZoZtZxZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[ [[[[[ [$[([,[1[5[9[=[A[F[J[N[R[V[[[_[c[g[k[o[u[z[#Q ~}s#gL\f\5 85 T5 r5 5 5 35 i5 n5 5 5 !5 5 5 5 5   A  m  I l  * P t  o s   6       C \  Q `   b % N   I + a5 5 X c Yc c c c c [c c c c -c c c c Lc cc Bc c c c gc nc c yc c c c ac c ;m m m A m m m  , ,a a a a a a  /  ` 9*Z*0C3bbb buu3z9kF4uR+++!+gygggg,gbg , ,  r6> u5Q2=rP PP(h<P P PBPPwmP SPkP(h<PPyP(h<P&S6* PZP(h<P P(h SPP(hP PPPS6PPPPP <QPP(h& 5Q7Q4=r> uW$ >tT64 6 2 H2 ;r52 S4 &H_8 &`o2 u P8QP P <PQ R RPQQQQ5=P6$  =wt=u tP(h> u?>t82 H2 ;r&2 ዏ8 4 &H2 u& 2=sE6Q$ VQdW <QP R RQPPP6( 5=QPP(h6z> uA <PdPP(h<;& ;v ( & @( 8Q`PP <PQ R RPQQQ6( 5=P6$ P(h( ( 9Q0;Q u>t;tx ( , ;;> t>t7Q( * @ ;* , ;rq<. 0 8u 8Gu9Q. &Gta&gȋ  G0<7w:r;Q &G 0<7w:r t 7Q( q u#P6( fP 6 @P6 Q 6 pt< F&תQPt<P6 " PZP(hQP <PP" PZP(h  @ ( s uOP6( fPCPP" PZP(hH;, u9QsU ( :Q@QP <PP" PZP(hQP <PP" PZP(h( , ;H. 0 8u 8Gu9Q9Qr. &gȋ  > u:Qr  > t 7Q(  &G"&W "ѱ&W "ѱ´;&W "б&"G &W‱´;;EQFQw=QF> thWPPP( @PP(hWPHP PP;PPTPoP(hWP[P PP;PPdPoP(h<<v؊=Q<0<< <<#£ u6UQ2;;3;;`3;;7;;]UFЉFVF2=3=4= PPFP F t 2=F429FvFN~10u+JVu2=2=PPFP F tFPv $29FvFNv FF PP3Ft PP(hFPPPRPPrmPF t Pv PPFP F tF 29FvFNvFF u PPP s Pv vPPP PF=tu1*vPPP PFvP(hF~tu ~t %Pv 2=sOPPFP F tF 29FvF~t 626F6PPFP F tF@29FvFRPFPFPF uFr3= Pv PPFP F tF@29FvFRPFPFPF uFr4= Pv PPFP F tF 29FvFNv FF ]UQfP^GP^&P" PZP(hFfP P(h6]UQF]U]U_Q`QCFaQFbQfP_QPP" PZP(h]U <P;PfPVPUP" PZP(h << t.<t*<t& <P << t<t<t՚ ˸P;PMfPP<P" PZP(h <<t<u6]UPPfPrPqP" PZP(h& ]UFF^&w FF^&G FF;FsI^5=F^&ONFF;Fs^Ƈ5=_FFFNFNF믋^Ƈ5=C$ ]UQQF؈5=@F5=FFذ5=C^5=QWQWNQPFP(hFFFذ5=C^ 5=QW QWNQPFP(hFFFذ5=C^ 5=QW QWNQPFP(hFFFذ5=C^5=QWQWNQPFP(hFFFƇ5=@$ ]UPP cQdQEeQFfPcQPP" PZP(h]UQFnQpQN؋&8[u5AN&>V>>V]tF@FnQF@FnQ&>VnQv&8V>>V>tF@FnQFF+F^&F+FN^ &&O^&v &<.u+JVt^&]U>jQt>VvQ6Q&QjQ]U~t>VvQ6Q&QN]U>jQt*nQ6Q&vQ6Q&QQjQ]UzQ^ &Z&WFnQpQv&?VFv9vrc?Vt<uHFzQ|Q^ &&OnQv&?V>?Vv^&F@F9Fs^&?u ?V<t<u]UFQ unQ6Q&ဈNF6QHQ&VF6QHQu~&>VQQ~tn2=s6QNnQ&8t6QNnQ& >VvQv&FQN붊>VvQv&FQQQN~t(nQ6Q&>V2=s&8uvQv& >QuvQv& FQQ]UQQ~\w ~ $w~ vlQP^Sv=VPPrmPF tb=uv>rQN^YFF,R8VFFlQQrQSP=VPPrmPFn uI~ u^SvFPF P6lQ^Sv ^SvF u 6lQF]U F^Svvv F t=|uT~uQFF^&G QFzQ|QQ;Qsm^SvvFPFPNF uOF t0^S6Q^SP.VPL F t={t=|uFFQFF@FF늋F]UQP~QPF ux~QQQ5Qs5QQ^Sv=VPP6Q~QSPkF5Q uP7Qs+2=r$QPZVPPQPZF7Q u̸QPvQS6QQPZF uk8Qs$QP[VPPQPZF8Q u@6QsQP F u(QSPF uvQS PF]U F PvQPF uFFnQpQ&ON&WQFQQQ&GQ&G QF tf~ u ~ xt^&w fQhQ^&G QQQFNzQ|QjQ~ xtQv>Q^YQsdfQ&OQ&Q&_QQQQHQQ@V0vQ&QjQfQhQfQhQ딸fQ&8Gu&8tlfQ&OQ&Q&GQQQQ>jQt#QQQHQ;rvQ& QufQ&G @tHQjQ tYQ;v F{jQFnQpQ6Q؍0vQ>Q9jQ^ifQ&G t>&GQHQjQ tYQ;v F{jQjQHQFnQpQ0jQ t)vQ6Q8vFZ YQjQfQhQfQhQQ;Qs4^Sv vFPjQPNFNjQAN uzF]UF t"^ SP^Sv^&Sv$Q ud~t9^&S^Svv$^ SQQ^SvQ u*Q%^&Svvv ^SvQ u]$UQQ~cNt+JVu^&^&F@;Fr^vPSP6Fu ^&(^vPSP6Fu ^&Y^vPSP6Fu ^&/^vPSP6Fu ^&| ^&]UQQ^&u-^&t"^&t^&tFFv~^Y^&]U~cNt+JVt!^vPSP6Fu ^&@j^vPSP6Fu ^& @^SvFPP^SP u Fw u|F^&^&]UQ ~N^&@uE^& t &:^&t'2F^SvFPP^SvF&^&F^&]UQQ~cNt+JVFt.^&FA:rOtIANQX+ȋx.u+JVu FFFF+F^^S^vp[]UQ^>OtIANv^w^~y]UQQF^NtvF:Fsl^@F>Z^u+J;u?>z~u+Ju'<0r<9vF<_t<.t<]t<[t <tF댰]UQQF^NtaF:FsW^@F>Z^u+J;u*>z~u+Ju<0r<9v ~_tF롰]UP(h]U4FPF u>~uF^S^ Svv{F^&G FNt;ryAPF uF FF^&G F܌Fދ&WRY;t9&8t2&8Gt,^SvFPFPfTF=uF뗃~u~u^Svp F urۃ~u~uFFNċF t t tFsF@F;FuF똃~uF ~uF 9Ft 9FuFF̴PF tP(hFF F] UF^&G F t#H&G ^ܰ8u 8GuFHFF;Fr FFPP(hF^SvFPFPfTF=u+F~u ~uF FH;FwFrC ~uF~t^SvFPFPfTP(h ~u^Svp b~u=F uFHFF^&G ^ܰ8ut8GuoNujFHFaF t t t FrF@;FsFFF^&G ^ܰ8u8GuF@F;FrF^SvFPPFPP%P(hFPFF~tpPv FFuF^&w F܋F9Fs8^Gt%OE^&G Q^^GFFPP(h ]UpV؈5=@pV^\V^V;dVfV6\V&tdV`VbV&hVw5=FhVpVpVذ5=CpV6\V&LrV5=QWrVQWjVQPFP(hjVpVpVذ5=CpV6\V& rV5=QWrVQWjVQPFP(hjVpVpVذ5=CpV6\V&LrV5=QWrVQWjVQPFP(hjVpVpVذ5=CpV6\V&L ɱuAlV5=QWlVQWjVQPBQP(hjVpVpV\V&u,&G u$tVpVtV;r Ƈ5=tVupVpV5=CpV5=QW\VOQWjVQPFP(hjVpVpVذ5=CpV5=QW`V6hVHQWjVQPFP(hjVpVpVذ5=CpV5=QW`V6hVHQWjVQPFP(hjVpVpV5=CpV6\V&L rV5=QQrVRQjVQPP(hjVpVpVذ5=CpV6\V&L rV5=QQrVRQjVQPP(hjVpVpV\V&u Ƈ5=pVJpV5=CpV6\V&LrV5=QWrVQWjVQPFP(hjVpVpV5=CpV6\V&L ɱuAlV5=QWlVQWjVQPBQP(hjVpVpVذ5=CpV6\V&L ɱuAlV5=QWlVQWjVQPBQP(hjVpVpVذ5=CpV6\V&L ɱuAlV5=QWlVQWjVQPBQP(hjVpVpVdV6\V&|  `VbV\V& u Ƈ5=pV8pVƇ5=CpV6\V&L 5=6`VF\V&G pVpV5=CpV6\V&L ɱuAlV5=QWlVQWjVQPBQP(hjVpVpVذ5=CpV6\V&L@ ɱuAlV5=QWlVQWjVQPBQP(hjVpVpVذ5=CpV6\V&LnV5=QWnVQWjVQPrP(hjVpVpVذ5=CpV6\V&TnV5=QWnVQWjVQPrP(hjVpVpV\V&Guذ5=CpVzdV&G &G 6\V&dȋvVxV&?upVƇ5=pVJpVƇ5=CpVdV6vV&4`VbV&hVw>pV5=FhVpVvV&upVƇ5=pVKpVƇ5=CpVdV6vV&t`VbV&hVw>pV5=FhVpVvV&G0<7w:rzVvV&Gu pVƇ5=pVƇ5=CpVzV5=pVvV&G 0<7w:r{VvV&G u pVƇ5=pVƇ5=CpV{V5=pVpVƇ5=CpV]UQQ^S^Svv{F^SP^ S^SfT]UQQP(hFPF u ~u޸]UF^&uxFt ^&O I;syoF^&G FF^&G &G v&dȋ^FFF^&Gt&^&tF^Sv^SLFFs^&Gb&Gv&b^&G&Db&Gb&GFa^v&t 0abFF%ĢctD^&G^&GFbȊ^:rat < t ^&GFuظc$u@bs;\b^&G &G ^0b\bbFFBcs:^&Gt^GPcPcP/ ccc4cFbPbPbPF% FPbP4P(hbbbcbbbbbN@ ɱuAbN ɱuANbbFPP(hF$u@b^& u&O @^&G u&O ^&G $c&O "ʈcu&"W V^ &FFPFPvFb>btY c.u{>buw8bu`^&O Nc*ʈcʈbNs~tFbFbF(bb>bucȴ+FbccbFbFFbrbrbbbPbPbP2F t+bȢbbbQPbP2F t:arcPF tD a aPaPQpF t]acaca%@ w@cbFas3s.ar'Fct":tZP(hWc8VjtDWj:t<Xj:t4<t0:t(:t"<tcu9^&G#t tv&|u ^SF8^SvL(Fsc.o bVj:cucP Fc8Wjt<uC>buPP^SFFb:cubbbhbb\Xj:cuE>bu+b:cu Pl4bcbb!PP^SFYj:cu.>buPP^SFFcbbZj:cu->bubcȢbbPP^SFarc<t78\jt18[jt+asIc<t8\ju>c"t[j:cu,>cu%>buPPFFCPPF7cctas+>cu$>cDubТbWPP(h:cu>bu FcP Fct ^SFccu P Fz>cu,c<+t<-u!>bu ^S FTDPlG>buP^SF0P^SF b>bu'>cwbPlP^SFVj:cucu P Fbarc<t78\jt18[jt+as6c<t8\ju>c"t[j:cu>cuPPFFscctas+>cu$>cDubТbWPP(hc8Wjt<uPP^SFFXj:cu+b:cu PlbcbbYj:cuPP^SFFZj:cubcȢbbct ^SFgccu P FM>cuc<+t<-u ^S F.P^SF>bu)>cwbPlP^SFVj:cu!brcu P Fbc<t8WjulFb:br7Fsbr Plc^&G^&GbkbbbsW>ctMPPFCXj:cuPP^SF'Yj:cubbbF Zj:cuPP^SFarc<t@8\jt:8[jt4ar/c<t#8\ju>c"t[j:ct>ctPcctas*>cu#>cDubТbWPP(hGct ^SF.ccu P FP^SFUW 8bt8au cPlbsbcb\bc#as]>cuVc:buFsbs P(hFbPbPbP6cP>P(hb*c:buP>cuIFsbs Pl]bPbPbP6cP>P(hbF.bPbPbP6cP>P(hbFbs ^S=Fc:bubbs.>bu'^&G &G b\b^9bbPbPbPaPbPP(h^Sv뚀Fb^&G^&Gbr.FbȊ^:rPat < t ^&GFu2bFbbȊ^:r\bt < t ^&GFuԠBcs&bPbPbPF%c4c bPbPbPF%PbP4P(hbPPP2P(h]UQbsbbb~uHbQbQbQPbP>P(hbsb\bbs~tb:bvcbPbPbPbQb*ȵQLP(hb8bwP(hbrb8bs6Fcb*b:cr^˷\bS^\bXFcuҊbb:crbPbPPbPc*bɵQLP(hbPcȴPbPPP>P(hbs=bFcc*b:cr^]b\bFcuۊc˷Ƈ\b Fb]Ub:bsbbc:bvbb~ t~ uc:br[brT~ ub:bwEbr>bbbPbPbPcP8P(h>cupc<t(u PlmbsbƇ\b c#c bPbPbP6cP>P(h~ u b:bt~ uc:bubs ^S=F~ u bbbtȢc bcbbb~ u[bPbPbPaPbPP(habOuIbAb:cubbXbccȊc:rPbPQbPcP8P(h>ct$ctcȢcb:cvccbcu]UQ~ t[bbs:b8bwcub:bv^S=FbPbPbPcP8P(hct>cu< t>cuQcȊb:vDbs ]bc$bPbPbPcP8P(hc<+t<-ubb*ȈNFbsbb*ȈNFbPFPPbPFPLP(hbs$cF:cr^]b\bFcubsbbb:crbs>cuUc<+t<-uJbr$bPbPbPcP8P(hcb:btc<+t<-ubsbPcȴPbPcP8P(h>ctUb:buU>cuNbs ؊\bc"bPbPbPcP8P(hc<+t<-u DPl|bPbPbPbQc*ɵQLP(hbs?c*bFcFcF:cr^˷\bS^\bXFcub]Ucubsb\bnb)bPbPbPnPbPP(hccbȊc:r,nu+JuccuǠcr Fct Fcc@uct >cu!c":t ":u Pl+>au cPlc^&G^&Gb]UFc.U[g>buL1bs%bb:w4cucubsb\blb)bPbPbPlPbPP(hccbȊc:r,lu+JuccuǠcs PlXj^&G^&Gb]U^.  ,Pl]U>cunbrYbPcPbPcP8P(h:cuP(h]UbPbPbPcP8P(h>cuScȊb:wbs ]bc$bPbPbPcP8P(hc<+tO<-uWIb8bs)bQȴPbPcP8P(h>cubsbsb:bt DPl P^SF]UQQcȢbbsbQPbPcP8P(h>ct;c<+t<-u6b8bs'bQȴPbPbPPLP(hF0cF~bPbPbPFc\bb\btTb\b<+t<-uGb8bs3ȴb\b\bbQSbP#PP>P(hbƇ\b0b#~bPbPbPFPP6P(hcbbbb]UQ>cu-^ &?r^&^ &F3^&b*F,c<t<u$^ &?r&bȈF^ &;s&] Uc.>bub*F,cb*b*Eb*c^&^&@0bs^Xj&9Gubc*bb*b^&]UQF tCv ~^YFF HN;r!^&<,t<.u ^v&Fuԋ] U aF^&G FF&GtMv&D &D ^&gȋ^FF&Ot^FFcPlaarcrPla]U"F ^ &G FF^ &G &G v&dȋ^ FF^ &GF&Gv&F^ &G&DF&GF&GF&G u&O ^&G $c^&GF&GFF%ĈFt^&G^&GFPPP2P(hFBcs:^&Gt^GPcPcP/ ccc4cFFPFPFPF% FPFP4P(hFFFbcFsFFPF tas>s7ar0F^߷t":u cPl P(hFNrbsbF:Ft:F;~u8^&G#t tv&|u ^߷^ Sv L ~ubТbWPP(h^߷":uF:FuF%F ^߷":u~uFN^߷tNu^&Nߵ^&O^&GF^&GF^&GF^&GF|ctF:Vjube^߷ctP FLFF^ S^&wFPPvᚢFFF@FF u9FFFtF ^ &GF^ &GF^ &G^ S] U^&ux^&GF&GF&ON&GF&GF&GFNF:FsFFF8Fw^v^F&N&ONVRPFPPQ4FFPFPFPPFP>F u;FtFNF@FFFnFtS^&G]UQ^S^Svv{F^SP^Sv^ S^S%]UQ^S^Svv{F^SP^ SF P^SL ]UQ^S^ Svv{F^SPp ] U^&G FFF;Fs^SPp F uF]UQ^S^ Sv v{F^SPv]UQ^S^Svv {F^SP^Sv ]U^&G FFF;Fst^&G FF&|^AFFv&t^&FN;u.^ S^SQu^&G t &G;FuFF넸] U FF$F^&*ɈN~,Nu+JVu~.Nu+JV~u FFFFFN*ɈNF:FsFF{F:FsFF{F*FFFsFFFu!~tFrFF^ &0FD~uZ^&<+t<-uL~tFr%Fȴ^&^ &F^ &0:^&^ &^ &G0F ^ F8vNFY~t=FF^ &,FF^Np^ yN^YFs,~u~u ^&FtFF^&F^&ȊN:r'^ &<,t<.uF^ &FuʋF]U6^&ux ~uyF^&G FF^&GF&Gv&F^&O&LN&ONF\^&Gu+FPFPFPPFPP(h(^&G &G ^0NFFFȊN:rt< tFFuۊFrcNt+JVN+ʋu+JVu F+FFFv\NN^&Guz& ts^&G t4FFP&w ^P^&w \PFP&w F9^&O S^_^&t 0\^&G FF\PFP^Sv^ S^SP]U F^&ux4~uy)F^&G ^F&8u &8Gu^&GF&Gv&F^&G&DF&GF荎VQP^ Sv FP^SPF ucs^&Gt,^&G &G vP&D_^F&u^&O t$VN򤍆PvVPF^S^&wVPvPUĞ&0Ğ&@u ~N] U~.u+JVt2~:Nu+JVuFFF^^&?tdF@NFN&^;uQP~WStNF;v.^PR@+QFPPFPPF tpF^&FNFNFsFNFN^Sv^Sv^ Sv^&S^&FNFN!z]U~ t{~cNt+JVuFFFF9Fv8^&:ct*0rJ9wEF ^v&0FFN+N^v8ct+JVt|F^&^&]U^&G &G PF^FF&|^^FFFFN&V^&8GsNNF:Fv}FF@FH^&FFF~uF%FF8Ft^&G:FsF8Fu]F^&FF@FH^&FNF;r^vQ^ SPF~U ^ &G &G PF^FF&t^ ^FF&NFF:FvFF@F^&FF܋FFNFN؎]U^&"^ &^&"O^&] UF#^ &#N^ &O]ULAcFP,PP(h~u ~uAcFsAcBcDcsBccccFPPP(hAcsF^&G FF;Fr.^&G FFذ&8u&8Gt Bcv&D &D ^&gȋ^FFFFw^&H?,cFu^&G"&W "ѱ&W "ѱ´c&G "±&_ "ڱ^&"W´cCcs,,cPPJctUc<uFc6Lc&Tc u<uiUcTcFu(,t.uFFt@Nc@Ncw4F$Rc-Tc<-t<+u >Lct>NcuPc@Pc;RcvUcLcJcc>Uct2!>Jct)Fc6Lc&TcFu LcJcи] UQQ~ t{~v~N FFFF t4~u9Fu)FHFF 10^v&F1FŋF t N+^0FYF)FF^&]U&>Z^u+JVc&>Z^u+JXc>Vcu&>z~u+JVc>Xcu&>z~u+JXcZc]UQQZcrQ~cNt+JVt_^v&F&8t%&:Ft8Z6VcF&8t z&8uF$Z6XcF&8t z&8uF|F~N F ^&]U^&sFF FFFF;FsFv~N^YF^&]UalPPcQPcP4FlcPPcPlPcP6F^c&8w^&k^&?tachcPjcPX P(h>hc r,PPcPcPcP؍cQP: P(h|c1c>dc\c&?u,~c ᾋdpc9򥾫dtc>~c9cs P(hBcsPPcPc4c PPcPPcP4FPck*1PcP^GPQ6Fachc r s2]UhcPjcPX P(hhc s s0PP\cP>P(hPP`cP>P(h\c&G"ȢccrGO xczc\c&O |cxc&~c`c&T\c&G"ȢccrF&Olcnc\cO xczc\c&O |cxc&~clcdcfc\c&G#ccsc>hc r'QQ6ccQP؍cQP< P(h|c1c6dcF\c&?uT&Gpcrc\c&Gtcvc~c pc0dFtc6~c0dF]UFF9Fw^ &N^&F:td>z~u+JVtZ&F+>zF~u+JVtZ&FF:FtF Fs] UFPFPX F uq~ r-FPvv ^SvRPP< F t=>FF9Fv.NQNQN Q^P8F uFʸ] UFPFPX F u(~ ra~ sUPPFP>F um^&G :Fw\F^X ^F&G^ &^&G(FPFPFP> F uF^ &F^&] U~u8vv vlPvF uvv vlPv6F] UvFPN QRPQ^Sv>d^&;Fvv]UdNdždždžPdu^PF8Fu]UQ^ PPF^ v&>duP^SFPsFFѰ]U^ P@FFFF:Fw>dt^ P@FNs N^;st^&V*uF&>zF~u+JVt Z&F>zF~u+JVt Z&FF:FtFFLFFF^;s^&8*u& Fs F^F]UQQF>duV^ PP^ P@:F u3^ PF^ P@:Fu^ P@:FuFF룰]U>dt^PFduP^SFPF^PFNr"^P@F뷀~udtn] UQQ>dus^PFduP@FVN;w^ ;v +ʋ^ &FË] U^ G F^GWFVvFPFPFPFP^ PFY FVRP^ P@FF~%sg^v&8u &%tT1^v&ÉFPvs^F@F؋]FFFF%;r)N듋FFFN;w)NGU^FNFFFFF~tP^ F^ NV´3ЉVVŠ^3ӉVV3ӉVV3‰FNFN몋F16d^ F%1^F16d^ F1^^ ?u^?u] U^ G^ GN~+^ O]UQQ^^:t^FFuȈF^@>z~u+JVtSZ&[@^F@>z~u+JVtSZ&[@^FH^:Hun]UQ>dtT^tP^G ^P@F^P^G~u^P^GF]U>dt}^G FGF;r>OW^7G PQwwFPdudu^GF^vFFv^w^O^FG F]UQ^P@F^P@FF]UQ^t>du P@Fs^G t >dudu]UQFFN ;sNv~N^YN F;v+^8cF^&]UQF FN;sNv~N^YF^&]UF>dt=t P46]U~u]UFPFP4V^&?{t@&?[uT6d:ft. FPQSVSVQ6^[Y=Xt ],N~] t&<LgNgNf^&G ]UQF =wmt =amt!6cfv >PgRgcf^&G ]U^&G :cft ^&PgSP0]UQ^&^ &&W^&G :Nft LgS2]U^&G :cfuPgSv4 ]U]X[YZSPTgt UgtcRQRQSUg[YZTgU+Zr tH]j&j^S> u ^& +ZrHU3 &L&;Wt]U#tH3&GtH]U u. t!;v 33@33.P43 ҃+@sH]U؋]UN~F V u. t!;v 33@33.P43 ҃+@sH]UN~F V ؋] 6r"^&&W&GZg&G;F s Wv ZgX^F&F&GFFF;FsN ;NvZg&@FFڋF;Fr ,Zgv@^&Z&WSZg&_[&GU|s]Zg&G@] ar Zg&G;FsGvZgX^F&F&GFFF;FsZg&@FFFU>XguVgP> u>XgtVg&GZg\g>\gu]ð]UQQdgP0dgxgrgP uJF6dgP u8zg=u0^gP u!F6dgP ufg=t=!t3]^ &G :fuSvv ^ &G :etWSvv5 n|e^ &G ^ Svv5 FNs=u8^ SFP ~u#e^ &G ^ &dt@Fsge률e^ &G F,^ &G :xfr^ &G :getw&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-sS F u^ &G-sG<PFP F^ &G-FVFVF%Ff^ &G^ &G^ &GNV^ &O &W"^ SPFPFP F u4F^ &G^ &G :|et :$ft^ Sj F 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*sSl5 F tF^ &G^ &G*&;G(uF&G(F^ &G* ^ F&9G*s&G*^ F&9G(v&G(Fr^ Sj$ F u^ Sl5 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 FPFu^ &?^ &G,(~t^ &G&GF^ &G :ft ^&FF^&G &W"&O*&;Wu&;GrI1&G^&G*1 uSj$ F u`^&G@1&@FF^&G*1&G &W"FV&w8^SQRPFPFtK uX^&G*1V+^0^~&}*9^Y^&G*H13^Sj F u/v&|*&L+^9 ^&G*&G^&G,^ &G :fuS^Sz O^ &G :et S^S<6^ &duge|e^ &G ^ S^SFe^ &G FU^&G :xfr^&G :|et:$fu^&G&G &W"^&&Wc^&G :geuX&r&G&;Gv &G&W^&G&G &W"^&&W^&G s7&G s/^&/&_!^&G :fu^&&G ]^&^ &&W^&G :get ^S F 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^&pvvFPFNVF׉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^&G :et SvW 6^&duge|e^&G ^SvW Fe^&G F^&G :|et:$ft :et^&G&G &W"FV&9Wu&9Gw&G&W^&G&9G*s&G*FP&t@"FP$ F u^&uSl5 F t^&w8&S^&w&w"&w G<P^&w: F t@^&G-^&G &W"&G4&W6^&G&G.^&F&G0Z&W2^Sv$ F Yu,^&w8jGPj^&G :geu ^&G :|et@&& tA"F&G :euC&duge ^&du|e&G ^&G-sS&G :geu0G<PFP 1^&G :|et:get:$ft ^G<PFP FF^&w:FP u ~u~uߊFs^&w8jGPjFF^&w8F^&w:F^&G F u F uFF :r10^&Fr^&0FFF 10^v&F@ vvFP F^SvhF^&:F@F^Pvj]FF^&:F@F^Pvj6FF(FFF^SvRQPNQNQPF u$F t^ SNQvNQPjuF~uVFF^S$ PvFPF u2~t,^S% PvFPF u~tF;Fv4N+NA^v0^ ~9^YFF+F@^&^&<{t<[tF FF^&^&?{uFS& PvFPF uoF sdt_NAv~^YF@^&^v&48' ^& ^S2 PvFPF u ~uFHN;v9@N+^vp^~&=9^YF@N+^&CFP>F u^&O@wA^~&=9^Y^&G@^&^v&483 ^&v&4^P^&wg&we^&^v&485 ^&"^vFF^&F^&G^vNFY^&Gw^ &Gj^&GyF^&^vNFYFP>F uQ^&G@^&^&O@wA^^Y^&Ƈ^&Ƈ^PF uN^ GkP^ &PFPFPj F u#FPvhjj^Sh9 Pj x Ⱦ^&G F =wmt =amt^SvFPFPjF F uݍFPvjjFPQ؍GPQ xF!t=u~^&Gi^GePF9FvF^kvN@YF^&^S^Sv^SFP F tF~u;^SvRPPRPF=u^v&xF^&Gi뾃~t<džCFEGv@CPEP FF7^SFPvRQjv PvkF u $f^&G  s ^&G8^&G8Fvj^ Sj7F t^&F^GkP= P^&PFPF uFt @^&F^& ^ &Ow~&=^ 9^NOY^ &G^&F t$@^wk~ ^Y^ vx> I ~ B^&G :$ft |e^&G ^SFPFPP F u^Sr F u}^&FFvN^S^Svm F tJ^G8P^SvRPjhmm F u"^&w8F t^&w8FFU^&G :$ft ~v F^&Gj]Uv&D ~&] ~&] Y]^ &dtZSFPy^& uV^ &du&G-sG<P^S ^&^ Shwmvv ^& u|e^ &G ^&^ &Gd<tN<uSh ^& uH^ SFPy^& u/^ Shrmvv ^& uge^ &G ^&U].g]U#U$VWQ^S<Y_^F^OGG w 3GGG؉GGGFG F GFGFGFGFGPS]UU^ SG PPFP[#uMG~&wr/^ F%;u^ ^ FF;tX F ;FuX] ^&^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 :|et :$ft 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&w4FPFFt.H^&O.+N^v0^9^Y^&O.N^F&G4&W6^F&)G.^v^&G0Z&W2F t ^&.u%FsFr^Sh F u^&G :|et :$ft ^&G&WFV&O&O &"N~;u;wN~Fs FF%F uKg&G ^;v ^gX ^F&u^& u@^ fVnjޱ;u$:uu^&GjjFP>F t^&$gt~t}grv^&GfQz QjRQPham^SvkFg@T ~&F =amt =wmtFP sFre^&G _^SvFPFPF uEe^&G F^&GFs  F^F^S^SvFPZ ^&GuFPFPX tF~ u ~rF 9FuN;r tF ~ s!hFPjF u%~u!v<"F u ^&GuFU^&G :|et :et ^&w8^Sv ^Sv]U^&G :|et :et [^Sh g uG^&w8g u4^&G&G^&G-^S g^_]U ~F =amt =wmtO F^PFP2F u1~Ps &F^&G9f^&G F^&Z&W]U ^&^&G :9ft ^&FF^&GF u^&O;wINF FF)F v ~^Y~ Nu+JVFt)N+^p^9^YN^&^v&FPFP2Fv u^F&L]U^ S^SX ]FFFFFP0FFFFP<FFFF^FFPFuFF u)vFPFF^&F^ &UFg]F%P2FF%P"FF%PFFVU~u~uF]FP0F urFFFFNNNNFFMFFFF6gFPF u*vFPF u^& Mt^&GFP<F u v^S$c  v~Fv FPjRPQRPQRPQc FF@vWv FPPNQPNQNAQNQPc FFvBv FPFVNQQPQFPQc FFP<F uvvvbc  FP<F u vvc FFFFFsFFvRPQ^SjRPQRPQc FFP<F u(v^Sv^Sv^Sv ^Svc ,>&hu =c F uFFPF tF= r= rF= t = t= ts*v^Sv^Sv^Sv ^SvZEs'^Sv^Sv^Sv ^Sv *jvv^Sv^Sv^Sv ^Sv\c F hFPjF up~tjEs-hv^Sv^Sv^Sv ^Sv\c (v^Sv^Sv^Sv ^SvF~uCF!>gtF tt !tF*~ v~v~v ~vv~ڋNFv~ՋNF~ r'vRPQRPQ hPjhPjF~tFF9FvJthFF t Ⱦ h~F t ȍvڿ h~u~tI~ r)v hPvhPvRPQRPQFv hPhP4c F u,FP0F umFڈF۰F܈F݋FFދF؉FF FFFFFFFFFFFFFFF FFFFFFFPF u,v؍FPF u^&G ;F t^&GF~ uN~uNP~uN F gPj@F t˸hPhPX F t˃>h u>hs>h v%h%h>guf>gt_FFg~uy>gurjvgP8F u)g=8t =9t=9uFHP@gX`gF믂>gu'>gtggghhgg&h&>&hu =c F ucFP>F u^&G^&uvjP/>gu :Fu vQhFFvjhF ue>gt[>guv^ S^Sc >guv^ S^Sc F u#>guv^ S^S c F u &%hs6^&uFFFPPNQjRQPRQP:^&u  hh "^&7&w&w&w&wtF^&tFF<wH FFߠ%hsRPQ^SjRPQRPQ:F^ F&@FuFF<wF FFߠ%hsRPQ^SjRPQRPQ:F^ F&@FuFF<w< FFߠ%hsRPQ^SjRPQRPQ:Fİ FuF Fߠ%hsRPQ^SjRPQRPQ:FİFF<w: FFߠ%hsRPQ^SjRPQRPQ:Fİ FuFFߠ%hsRPQ^SjRPQRPQ:Fİ̊F Fߠ%hsRPQ^SjRPQRPQ:F^ &GȊF Fߠ%hsRPQ^SjRPQRPQ:F^ &GȊF Fߠ%hsRPQ^SjRPQRPQ:F^ &GȊF Fߠ%hs RPSvVQRPSRPS:F^ &GȊF Fߠ%hsRPQ^SjRPQRPQ:F^ &GȊF Fߠ%hsRPQ^SjRPQRPQ:F^ &GȊF Fߠ%hsRPQ^SjRPQRPQ:F^ &GȊFFߠ%hsRPQ^SjRPQRPQ:F^ &Ƞ%hsRPQ^SjRPQRPQ:FhjgP>F uFg& &%hs#FRPQ^SjRPQRPQ:g^&8GtB>g9t&u"F݊F<wgаFu^&^ 0~޵FFF<wB޴PNݵBFuFF<wNgЋBFu4^&u,FF<wgаFugj^&^ 0~޵FFF<wB޴P@NݵBFuFF<w:gЋBFu FF<wgаFu>g9u,FF<wgаFug>g8ud^&u\~v FFF<wB޴P{NݵBFuFF<w>gЋBFu'FF<wgаFug FP<F u vvc ~tvFFFNNF NFF F?F*Fh r>h u>hrgrsv RPQRPQFPjFPjc F uH~u~~vNFv FPjRPQRPQRPQc F uFP<F uv^Svc Ȇ^&^&G :et W^&G<t':t!&OFP sFr^&G^&u2F ^&~ t^ &?utPPP^ Sv 6_>,hu!,hFPF u ~ r,h*h (hujj(hP>F t^&GF(h&8G wF(hX ^Fv&DF&GF&GF&GF^&GF&GF&GF&GF&G F&8G uANsNQPP2F t FF^&#tF ;Fv F&O#F ;Fw FrF9F w~^ &FF^&O&@^&G^&w6 FA:r F tFPFPFPjv4F~l^&GF&GFF^&Or- tFPFPFPFPFP4F~tfFM^&wFA:rF uՊFg~t/F:Fu~t FFN^SFPgF uFP:F u|FF~t`[~tNSFȈFIF:FvF:F4~tNFȈFF:FvFF~tFFƆ} F^&GF^&GF^&GF^&GF^&GF^&GF^&GF^&G FsFPFPFP2FFF^&F uFUFa:r F tf.h& 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=tmuge^&G &G 5^&G&G~ mmue&O FV|e^&G FF^SvvyF t ^SPmU2gVnjޱ;u$:u ^&G( ~F =rmt =tmt e^&G ]^&^ &&W^&G :et WFPF uCh~uF1~uF$^G^ &Z&W^&F^&GFU, ~F =amt=wmt=rmt=tmt =mmt&f^&G F^&Z&WF^&G]U^&^&G :ft ^&GN ^&]U^&^ &&W^&G :ft ]^ &GF&Z&W&G&O&G &G &O&G &W"&G(&G*&G,&G-&G.&G4&W6&O0&2<(Y~ rmuge^ &G &Gd&G&G |e^ &G &Gd&G&G ^ Svv5 Fe^ &O Uv&D F u ^&G-hjFP>F u^&G < sA<v@"FFF FtFPjF t@^&FUP3P% ]UPP% ]Ug#t4hhg&F#t N#N&h3&]&FFF=F\FzFFFFFF2FQF 1F1FF1Vu FFmFm1FF1VF1F ;vNvB;FvNFF^&F 1^&W^&8Os&vF+B@^&GF1^&WF <1^&WF 1F1^&WF 1º PF1Y^&GUFV v]UFV N ]UFf]UFV%]^ &G :fuSvv'  0^ &G :ft 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^ SPFPFPCF u F^ &G^ &G :fu S^S  U^&G :fuY&Gs&G&;Gv &G&W^&G&G&W^&&W^&G s7&G s/^&/&_!^&G :fu^&&G ] vjFPjF uxFV^&&W~u~tYFuRFVFV)F^v^ SPvvFPF u^ &?Gu&G &W^&&W ^Sv^ SjFPF u_^ &G &W ^&&W~u~t\FuUFVFV)F^vvvv^ SPFPRF u^ &?Gu&G &W^&&Wh~6F =wmt =mmt=amu dF =rmt=tmuF smhFPjFt;v ^Sv^SvFPXF t=c=u ~W=th~6FV^&G&WFF&Z&WF1&G&G;YsF^Sv^GPjFPF ui^&G(&W*&G&W~ tmu)&w&w^Sv^S^GPF uAf^&G &G SjjyF u^&G &w&wZFF^&vvvvv&<^ Pv ^SRF-u~FN ;sNFF~u\FsUvvvvv&4^ PvFPRF^F&~uFFV^&;F rF랋F^&^ &&W^&G :ft ^&Gs^&G&G&WFV&w&wRP&S^&wFPCFV~NV~=]=u# t^&GF^&G^&GFF up^&GFV^&G&WF^&G^&G&W;Vu;Fw4&G^&G&W&+G&WFVF&G^&uFFUFF F uvvvjjFPj j{j}jF#tF#t)Fv^@‰FV~u~~u v&<[uovvvvv v vj j[j]jF#to~tEv&<u<^&?[t3vvvvv v vj jj^jF#t ,v&v&<uvvvj vv VF~uFF^SvFPFPj{j}F uF;F vdP~ vE: ~^vNFY^vx; F^&F F t~u5^&~u^S^Sv^ SvuFFUFF F uZvvvjjFPj j{j}jF#t1F#t)Fv^@‰FVvvvjjFPj j[j]jF#tF#t)Fv^@‰FV~u~u v&<jF~uv&<tF~to~tEv&<u<^&?/ UF Fuk;$+v&;Vu ;F ui; F v&+ UF Ful;#+v&;V u ;F uc; v&+UF Ful;'+v&;V u ;F uc;v &v&+U F F uj;F Fuk;jjFP>vvjFPF#t~sv&\*wc.p7pPF*^&v &9F*^&v & F*^&&v &&Tv&D*v&Fv &v&+ UF Ful;F f v&+U ivvjFPF=4t=4uFavvjFPF=4t=4uF=~u+~u%ivF6i ivF6iiFjj+UPF Fuc;F F uj;F;ju;jtvv4F#tj>it'~tv &*i v &*i&4v &^&~tv &F umh&G ^ &:GwW^ &GhX ^F&G;FsF^ &GPj^&GȴP^Sv6F twEF^&~u8Fh^ &OQP^&OɵQPv>FF tmn~uF~ t~uF r~tFRPPNQNQPF uFPFPo+F uP뻋F U^ Sh^Smg]U^ Sj^Smg] ^ &G :et :cft bF FuTFP ^ &O cf:ʱtA sUFs&8W uH^&^&G^&GP^&G^&G^&G^&G^&GA^&G2h hujjhP>F uh&G ^ &:Gw^ &Gh@ FF^ &G^&^&G^&G^&G^&G^&G^&G^&G^&G^&8G uA^&O^&8G u@^&G^ &GA^&G^ &G^&GUFV;hu;ht^SLh uX^ &tAQ^S^ ShPY s ^&%^S^ ShPfs ^&4] U^ &u ^&2^S^ SiPh uis ^&^&] ^&FFFF^&GHN;rZ^&F< uF?Fs8F^ S^&S^vP^&wFPF~uFu FV;hu;ht^SsF teir@hGFFFFF9Fw Nr^PFP8+FFuVN+;sVFFF;FvFsFs@^v&`*طS^ &*ط^u [:u uFF FF)FF^v&^ &:u~u ^PFFFFF)F^S^v&Z[&S^ &[&:uFFFs ^&F^S^ Sv6^&i^SjhPF=4t=4uF~t@iFVhhU^&?u"^&G<`rRjTjRj u Pj Nju{NjF F^ &?TNt4bF FF&GF^ &O~F u+JVu4*^ &GFv^&FF^&Z&W U^SvP ]ULFs+PPFP>F u,^&!t@FF^ &FP0F usFFFFFNNFF @FF^F FsFs PFP FPF~u[vFPF tF;FtFF u$ 8FvFF^ &ȍvF!uFFFΈFψFбNѴFҋVVԉFF.F FڌF܋FFލFF^NFsFs PFP FPF~uGvFPF u6F;Ft )F։F u F^ &~!t FtFF]062A01 CaptionColorBinary.LineColorBinary.redBinary.greenBinary.blueBinary.061D01060A01060A01060A01060A01060A01formnameCharacter.cbFormBinary.bytesCharacter.ccolBinary.clineBinary.iblankMacBinary.iblankBinary.fieldnameCharacter.indexBinary.indexFirstBinary.indexLastBinary.icolRelBinary.ilineRelBinary.ccolBinary.fSecretFlag.fProtectedFlag.fMandatoryFlag.ControlControl.JustificationJustif.OrderingBinary.defaultCharacter.fShowDefaultFlag.fAutoExitFlag.fRepeatingFlag.looksSelLooks.looksUnselLooks.fieldNameCharacter.DefaultCharacter.ValProcCharacter.HelpMsgCharacter.ListvaluesCharacter.ColorSelBinary.ColorUnSelBinary.ValProcCharacter.HelpMsgCharacter.ListvaluesCharacter..060A01060A01SB.0603A01BinaryF Character_R_FlagQBQSbLooksrControlJustifApplication-defined command key Please enter Yes or No Invalid entry+ Missing Parameter: File name is missing Cannot open that file Illegal form name No such form Bad file format Cannot open output streamPress NEXT PAGE to continueFSorry ... this form is too big or too complex and cannot be displayed.L,R,Tx,Nu,Ab,An,form,bytes,[nul],A12,1@BTOSCHARSET S12 ,pl],,062F01ABCDEFGHIJKLMNOPQRSTUVWXYZ@,abcdefghijklmnopqrstuvwxyz`,Mandatory fieldInvalid cursor movementField overflowIllegal function keyReserved characterText characters onlyAlphanumeric characters onlyAlphabetic characters onlyNumeric characters onlySign cannot be inside a number No such valueNo help message No list of values for this field Invalid dataYes,No,062F01 060A01Character.062A01060A01062F01060A01062C01060A01060A01.   060D01DATA060A01 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ************************************************************* [KBD][VID][]}[!Scr]]$$.Tmp}[!Scr][!Scr][scr]<$>BsFilter.tmpVNVFp        ~ {}MASTERSERVERLOCAL{}[]{}[]<>[sys]LptConfig.Sys&YesNo`abcdefghijklmnopqrstuvwxyz{|}~`abcdefghijklmnopqrstuvwxyPress NEXT PAGE or SCROLL UP to continue ,(Press NEXT PAGE to continue ,s6.4.7 ,R,wm@V,Character..form 060A01061D01 PbqFile @[Form]@ [Fields?]@ [Form image?]@[Output]@P@@@@@@@@@@P  sbFormSpec sbFormNamefDisplayFieldsYes fFormImageoutputmsg!  COLOR PALETTE INFORMATION! Caption Color:  Line Color: !! I N T E N S I T Y Colorƀ RedGreenBlue01234567@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ CaptionColor LineColorredgreenbluec=  Field name: +Row:  Column:  Width:  Repeating?  Index:  (first:  last: ) Control:  Justification:  Sequence number:  Secret?  Protected?  Mandatory?  Default: 2Show default?  Auto-exit?  Unselected:  Selected: Validation routine: Help message:0<Selected Color Number: $ Unselected Color Number: List of values:. +@@@@ @@&@3@ @@1@@@(@ 2 @@!@/+@<6@?@ <G@ O@< X@ fieldnameilineRelicolRelccol fRepeatingindex indexFirst indexLastControl JustificationOrderingfSecret fProtected fMandatorydefault fShowDefault fAutoExit looksUnsellooksSelValProcHelpMsgColorSel ColorUnsel<`o Form name: size:  bytesheight:  width:  number of fields:  1-formnamecbFormclineccol iblankMac060A01  ?*<0@A061A01060A01[Kbd] [Vid]  [Lpt]y[Nul] [Debug]A [SysIn][SysOut]>:E>E2F6F>:F2G4G]>Hu0I       a ]ym ]yBy.y\yyyBy\yyBy.y\yyy Z ]y  O  yA ]y ]y {y2g5 5 5 ;5 4a   >P\>j\      Ⱥ LIBRARY: Forms.lib VERSION: s6.4.7 (Monday October 24, 1994, 10:52)LIBRARY: Ctos.lib VERSION: s12.3.7 (tuesday april 12, 1994, 16:18) LIBRARY: CtosToolKit.lib VERSION: s12.3.4 (saturday february 19, 1994, 15:33) LIBRARY: enls.lib VERSION: s12.3.5 (thursday march 3, 1994, 11:40) LIBRARY: FormsReporter.lib VERSION: s6.4.7 (Monday October 24, 1994, 10:31) RUN FILE NAME: FormsReporter.run COPYRIGHT 1980, 1994 CONVERGENT, INC. ALL RIGHTS RESERVED COPYRIGHT 1987, 1994 UNISYS CORP. 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 THE SOURCE CODE, SHALL AT ALL TIMES REMAIN IN THE NAME OF UNISYS CORPORATION AND CONVERGENT INCORPORATED. VERSION: s6.4.0C (tuesday january 11, 1994, 14:36)VERSION: s6.4.7 (Monday October 24, 1994, 10:55)FMRUN1PLM86 V2.310/15/93 09:41:1ז1STACKMEMORYCODEDATACONST FMRUN1_CODEDGROUPh@?HH/ژTD K CHWHITESPACERGBCOLORPALETTESAVE RGBCOLORCONTROLSAVERGBCOLORPALETTE RGBCOLORMASKRGBCOLORCONTROL& ICOLORSEL ICOLORUNSEL ICOLORCAPT ICOLORLINE FCOLORCAPABLE+ FUSECOLOR, FCOLORSAVED- FCHECKCOLOR.А^ DISPLAYFORM UNDISPLAYFORM* READFIELD0 WRITEFIELDo DEFAULTFIELD DEFAULTFORM SETFIELDATTRS GETFIELDINFOF IBLANKLOOKUP{CHECKDECIMALVALUES READIBLANK% WRITEIBLANKL  DEFAULTIBLANKp SETATTRSIBLANK GETINFOIBLANK  CONVERTDATA ENCODEBINARY IVALLOOKUP EXTRACTVALUE UNPACKCOLORS/ PACKCOLORSW CHECKCOLORvnRGTDFORM CHDECIMALMARK FVALUEFOUNDCALLPROCCOMPARESTRINGS BLANKCONTROLCHECKDECIMALMARKCHECKERCPROGRAMCOLORMAPPER QUERYVIDHDW PUTFRAMECHARS PUTFRAMEATTRS FILLFRAMEQUERYFRAMECHARSQUERYFRAMEBOUNDSFORFORMS CHFIRSTFORM CHLIMFORM D 062C01 0   ?*<09 @A/ &-WTSQ+-,,-+.+U<,t .:t^ &GF&GFv FPFPF ue~uF:FwSF*F1F~uF:Fw2F*F1FFFFNNN8Fr8Nsw{^ Sv^ &GFFFF:Fs,FFF:Fw^ v^F&$F&N&ONtf,s Fv FPFPvFPFv FPFP^GPFPFFNp^&G:r:w,s Fv FPFPvFPFv FPFP^&wFPFF@FF u9F\:6V̯\ 6V [V zŀŅōőͯV V @FFtF ^ &GF^ &GF^ &G^ S] G2\ *U^&ux^&GF&GF&ON&GF&GF&GFNF:FsFFF8Fw^v^F&N&ONVRPFPPQFFPFPFPPFPF u;FtFNF@FFFnFtS^&G]d ̗V ̺V C0UQ^S^Svv{F^SP^Sv^ S^S%]6\5\àAoUQ^S^Svv{F^SP^ SF P^SL ]\3\Š1UQ^S^ Svv{F^SPp ] \#\ՠAU^&G FFF;Fs^SPp F uF]М$\4UQ^S^ Sv v{F^SPv][\&\Ҡ9FUQ^S^Svv {F^SP^Sv ]~\+\͠{U^&G FFF;Fst^&G FF&|^AFFv&t^&FN;u.^ S^SQu^&G t &G;FuFF넸] jVΠU FF$F^&*ɈN~,Nu+JVu~.Nu+JV~u FFFFFN*ɈNF:FsFF{F:FsFF{F*FFFsFFFu!~tFrFF^ &0FD~uZ^&<+t<-uL~tFr%Fȴ^&^ &F^ &0:^&^ &^ &G0F ^ F8vNFY~t=FF^ &,FF^Np^ yN^YFs,~u~u ^&FtFF^&F^&ȊN:r'^ &<,t<.$uF^ &FuʋF]L  %U6^&ux ~uyF^&G FF^&GF&Gv&F^&O&LN&ONF\^&Gu+FPFPFPPFPP(^&G &G ^0NFFFȊN:rt< tFFuۊFrcNt+JVN+ʋu+JVu F+FFFv\NN^&Guz& ts^&G t4FFP&w ^P^&w \PFP&w F9^&O S^_^&t 0\^F ̧V̭V͹\Ƞ= &G FF\PFP^Sv^ S^SP]/\ L U F^&ux4~uy)F^&G ^F&8u &8Gu^&GF&Gv&F^&G&DF&GF荎VQP^ Sv FP^SPF us^&Gt,^&G &G vP&D_^F&u^&O t$VN򤍆PvVP^S^&wVPvPUĞ&0Ğ&@u ~N] 9U~.u+JVt2~:Nu+JVuFFF^^&?tdF@NFN&^;uQP~WStNF;v.^PR@+QFPPFPPF tpF^&FNFNFsFNFN^Sv^Sv^ Sv^&S^&FNFN!z]:ExV̯\ VU~ t{~Nt+JVuFFFF9Fv8^&:t*0rJ9wEF ^v&0FFN+N^v8t+JVt|F^&^&]М Lĉy U^&G &G PF^FF&|^^FFFFN&V^&8GsNNF:Fv}FF@FH^&FFF~uF%FF8Ft^&G:FsF8Fu]F^&FF@FH^&FNF;r^vQ^ SPF~VV9U ^ &G &G PF^FF&t^ ^FF&NFF:FvFF@F^&FF܋FFNFN؎],/U^&"^ &^&"O^&] s#WUF#^ &#N^ &O]ԠvUL+FP,PP~u ~u+Fs+,.sBFPPP+sF^&G FF;Fr.^&G FFذ&8u&8Gt ,v&D &D ^&gȋ^FFFFw^&H?Fu^&G"&W "ѱ&W "ѱ´&G "±&_ "ڱ^&"W´-s,PP&PQRPQRPQP.PP&QQ RPPQP-]F7cV V-9>BLPUXdV jVoĹ0Z]dm̓V ͉VŐřŢŨͮV ʹVźtFMCHARPLM86 V2.310/15/93 09:41:4Ԗ1STACKMEMORYCODEDATACONST FMCHAR_CODEDGROUP h@sHH TD K ENCODECHAR DECODECHARdH CHWHITESPACE D 062C01hUQFFN ;sNv~N^YN F;v+^8~N OuIA^&] ;DF=dUQF FN;sNv~N^YF^&]#tFMUSERPLM86 V2.306/14/94 09:06:1і1STACKMEMORYCODEDATACONST FMUSER_CODEDGROUPh@kH HTYD K DELETECHAR MOVECURSOR SHIFTCHARS TESTFKEY TESTEXITK CONTROLERROR CHECKCHARDECIMAL FERASESIGNALONE  INPUTSIGN  WRITECOMMA CHECKICH% COMPUTEICHCHECKDECIMALMARKCHECKERCOPERROR PUTFRAMECHARS FILLFRAMEQUERYFRAMECHARQUERYFRAMECHARS MOVECHARS CHLEFTCURSOR CHRIGHTCURSORTABKEY CHDECIMALMARKSBMANDATORYENTRYSBPROHIBCURSORMOVINGSBFIELDOVERFLOWSBILLEGALFUNCTIONKEY SBMANDATORYTX SBMANDATORYAN SBMANDATORYAP SBMANDATORYNUSBSIGNPROHIBINNUMBER SBNULLSTRING SBNOLISTVALUE RGCHBLANKRGSECRETFERROR FOVERTYPE FINSERTNEXT FMODIFIEDFJUSTFSECRET FEXITBLANK FOKTOWRITE FCHECKSECRET FFIRSTBYTE FAUTOEXIT FLEFTLIMIT FRIGHTLIMITkqIFR ICOLFIELD ILINEFIELDCCOL ICOLCURSOR ICOLCURSORVICOLLIMICOLRICOLDCHCONTROLJUSTIFBLKTYPEU D 062F01 2 0UQs~uHQQQPPPss~t:vcPPPQ*ȵQP8wPPPPP>up<t u PqsƇ # PPP6PP~ u :t~ u:us ^SK~ u tȢ ~ u[PPPPPP OuIA:u\Ȋ:rTPQPPPx-'*$$,*%%,%?,E*J%W'[*`$i$l%o&u*{(ā̆V̌VĒĘ0Ġ ĥ ̪VIJ!ĺ*Ŏ̎І&ֆ*܆(VV'* ,*#!\,*1*7*@-E*H-L$U%X$a&g'm(sx)~V̈́Vʼnŏ)š'Ū*Ů,Ŵ*ŷ*ż'ſ†,Ȏφ&؆(ގVVU:t(< t$tȢ:vu]5" -'-"-%-(+. UQ~ tas:8wu:v^SKPPPPPt :t>u:t>uQȊ:vDs $PPPPP<+t<-u*ȈNFs*ȈNFPFPPPFPPs$F:r^Fus:rs>uU<+t<-uJr$PPPPP:t<+t<-us +''#21;'?*L\T&Z'`(fkVqVvĄ0Ē0Ę,Ğ*ĥ!įIJķ&Ľ*ņ(ˎVVێ*'*+&(+V1V6!>FQU\ai+pt*x,ŀ%ŋ0ő/Ŝţ&ũ'ů(ŵͺVVȎ̆'І*؎PȴPPPPt < tU:uU>uNs ؊"PPPPP<+t<-u P|PPPQ*ɵQPs?*FFF:r^˷S^XFu]&,(V V%05'9*?0F!RUZ&`'f(lqVwV|ć̌Vē&ę*ġ*Ĩ(į,̹V̿VĆ!ˆ,φ*Ն,܎ B Uusn)PPPnPPPȊ:r,nu+JuuǠr t @ut >u!":t ":u P+>u P^&G^&G] / !#')1)=&C'I(U)[VaVglp)vąğĤḭ̃\Ķ0̼\ņ/ˆ ҆2َ߆ / VV/5KUF.ciu>uP1s%:w4unrYPPPPP:u<PPQlPPP.:tCl*lt+JVu ȴ3ȴl+t-u!ȴllƂl0*ɵmu+JV ulɈsEl؍Ȋ:rltƂl#uݠPPQlPPP]˸ 1!&."((-V3V8 uSȊ:ws $PPPPP<+tO<-uWI8s)QȴPPPP>uss:t P P^S ]W& *(V!V'-,3*=!GJO&U*](chVnVsĀ*Ą'Ċ&ĕ(ě̠V̦VĬIJĹ*Ć+ɆV\r UQQȢsQPPPP>t;<+t<-u68s'QȴPPPPPF0F~PPPFtT<+t<-uG8s3ȴQSP#PPPƇ0#~PPPFPPP]˯. *!&#().V4V:@K*O'U&`*f(pVvVāĊ ĕ&ě*ġ(ĭ ı.ķĻ*Ȇ*Άن*݆'*&( VV*!2&8*>(MVSVX.]*`+eh\q%UQ>u-^ &?r^&^ &F3^&*F,<t<u$^ &?r&ȈF^ &;s&] ќ1/)91S)U.>u*F,**E*^&^&@0s^&9Gu**^&]I1\\\\)&.**.'5*9.O#Y e*h,n*s*w' XUQF tCv ~^YFF HN;r!^&<,t<.u ^v&Fuԋ] > ̊t  UNISYS Emergency Maintenance Update CTOS Forms Designer s6.4.1 May 23, 1994 Released Version: R6.4.0 Style ID: B20-FM6 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 16194085 Error 33 when running Forms R6.4.0 on BTOS II 3.2 systems. PLE 16226581 Forms Editor goes into infinite loop when running Test Drive (F9). INSTALLATION INSTRUCTIONS Install the Forms Designer s6.4.1 patch using Floppy Install. This installation will overwrite the current version of Forms Designer which is on your system. RESTRICTIONS There are no new restrictions added with this EMU.2 Page # of 1   DGH DG HDG H@ 0( DGH!8&'*+,57OlOlD!8&'*+,())( DGH!8&'*+,@  FDGH!8&'*+,567OlOlD@ 0 DGH+d+Xd@@ xGH@GH@G H@ DGH  DGH@ ! DGHwϊƋϗ%>!"#$*+0*wҊҘ$>@"$0!0 GH@ !  GH@!GH,@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 6. VERSION: s6.4.0C (tuesday january 11, 1994, 14:36)VERSION: s6.4.5 (Wednesday July 20, 1994, 13:05)0 ^  $(,04 8<@DHLPTX\`dhlptx.v~(4Tv*\vVjDX`xHl2:TV fv.Br : `  " 8 L , 0 4 8 < @ D H L P T X \ ` d h l p t x |       $ ( , 0 4 8 < @ D H L P T X \ ` d h l p t x |       $ ( ,                                                                                                                                                                                        @@ @@ BIUU""UUUU""UUUU""UUUU""UUBI<<<<<<<<wwwwwwwwUUUUUUUUUUUUUUUUUUwwUUwwUUwwUUwwUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""""""""""""""""DDDDDDDDUUUUUUUUDDDDDDDD @@  @@ BIDD""DD""DD""DD""BIUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ @ BI""AAAA""""AAAA""BI LIBRARY: Forms.lib VERSION: s6.4.7 (Monday October 24, 1994, 10:52)LIBRARY: Graphics.lib VERSION: 2.1.0 (thursday january 18, 1990, 7:59) LIBRARY: mouse.lib VERSION: 12.2.0 (monday august 24, 1992, 14:21) LIBRARY: Ctos.lib VERSION: s12.3.7 (tuesday april 12, 1994, 16:18) LIBRARY: CtosToolKit.lib VERSION: s12.3.4 (saturday february 19, 1994, 15:33) LIBRARY: enls.lib VERSION: s12.3.5 (thursday march 3, 1994, 11:40) LIBRARY: FormsEditor.lib VERSION: s6.4.7 (Monday October 24, 1994, 10:53) RUN FILE NAME: FormsEditor.run COPYRIGHT 1980, 1994 CONVERGENT, INC. ALL RIGHTS RESERVED COPYRIGHT 1987, 1994 UNISYS CORP. 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 THE SOURCE CODE, SHALL AT ALL TIMES REMAIN IN THE NAME OF UNISYS CORPORATION AND CONVERGENT INCORPORATED. VERSION: s6.4.0C (tuesday january 11, 1994, 14:36)VERSION: s6.4.7 (Monday October 24, 1994, 10:53) 1 < + ej.l-e*l.f,! [ e' N 1(N Days e' N 1(N Days e' N 1(N Days e' N 1(N Days e*NERSHIP OF THE PROGRAM, INCLUDING THE SOURCE CODE, SHALL AT ALL TIMES REMAIN IN THE NAME OF UNISYS CORPORATION AND CONVERGENT INCORPORATED. VERSION: s6.4.0C (tuesday january 11, 1994, 14:36)VERSION: s6.4.5 (Wednesday July 20, 1994, 13:04)]o^o_o`oaobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozo{o|o}o~ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooFMRUN2PLM86 V2.306/15/94 14:31:5Җ1STACKMEMORYCODEDATACONST FMRUN2_CODEDGROUPh@HHPT:ɘD K{FERRORFHELPMSGFOVERTYPEANDBEEPFNEWOS RGCHBLANKRGSECRET FOVERTYPE, FINSERTNEXT- FMODIFIED.FJUST/FSECRET0 FEXITBLANK1 FOKTOWRITE2 FCHECKSECRET3 FFIRSTBYTE4 FAUTOEXIT5 FLEFTLIMIT6 FRIGHTLIMIT7IFR8 ICOLFIELD9 ILINEFIELD:CCOL; ICOLCURSOR< ICOLCURSORV=ICOLLIM>ICOLR?ICOLD@CHACONTROLBJUSTIFCBLKTYPED 1 USERFILLFIELDLOCKKBD8USERFILLIBLANKfBEEPCHECKERC QUERYKBDLEDSREADKBD READKBDINFO SETKBDLEDOPERROR DELETECHAR MOVECURSOR SHIFTCHARS CONTROLERROR INPUTSIGNTESTFKEYTESTEXIT WRITECOMMA USERVALIBLANK OPHELPMSGCHECKICH COMPUTEICH UNPACKCOLORS PUTFRAMEATTRSPOSFRAMECURSOR FILLFRAMEQUERYFRAMECHARS IBLANKLOOKUPCHINSERTLITERAL CHLEFTCURSOR CHRIGHTCURSORCHFASTLEFTCURSORCHFASTRIGHTCURSOR CHSHIFTDELETE CHDELETECHARTABKEYFCORR CHDECIMALMARKSBPROHIBCURSORMOVINGSBFIELDOVERFLOWSBRESERVEDCHARVSBSIGNPROHIBINNUMBER SBNULLSTRING RGBCOLORMASK ICOLORSEL ICOLORUNSEL FUSECOLOR D 062F01TSRQ<UQQ^S^SvvF^SP^ S^Sf]V.\28UQQPFPF u ~u޸]r V VV fUF^&uxFt ^&O I;syoF^&G FF^&G &G v&dȋ^FFF^&Gt&^&tF^Sv^SFFs^&G8&Gv&9^&G&D:&G;&GF^v&t 0;FF%ĢDtD^&G^&GF;Ȋ^:rt < t ^&GFuظD$u@3s;^&G &G ^09;FFs:^&Gt^GPPP kM̚VĶÎӎ܎9Hgs|ŜŢŦź,Ԇ*ن+V*+SF8P9P:PF% FP;PP9<;>4./0-N@ ɱuA5N ɱuAN76FPPF$u@,^& u&O @^&G u&O ^&G $C&O "ʈBu&"W V^ &FFPFPv1>1tY C.u{>/uw84u`^&O N>*ʈ@ʈ<Ns~tF/F<F(<<>4u>ȴ+F<??<F<FF4r,r<=8P<P:PF t+<Ȣ<7#*).4V:V?BFIMSVY\nĂą̍V̓VĤҎގV  \"\$\&\*3FNTgnwzŀņŐœŘśŤŰŷžĎʎЎV뎖A8QP:PF t:rAPF tD PEPQF t]MAIOE%@ w@N2Fs3s.r'FAt":tZPWA8tD:t<:t4<t0:t(:t"<tAu9^&G#t tv&|u ^S8^Sv(FsC.o 4:AuBPA8t<uC>/uPP^SF<:@u/47h<7\:AuE>/u+<  V&+VV NVaj\nrv{́V ʼnōŗͦV ŲŸſÎǎΎҎنݎ鎰.:@u P4<?=6!PP^S:Au.>/uPP^SF@<7:Au->/u4@Ȣ=6PP^SrA<t78t18t+sIA<t8u>O"t:Au,>Ou%>/uPPFCPP7AAts+>Au$>ODu,Т,WPP:Au>/uBPAt ^SABu Pz>Bu,A<+t<-u!>/u ^Sޜ$ V 2V :>DUV afjqu{ĂĆċď̟V ħĮĶ ļȎІ ֎܆V V#(V4/uP^S0P^S 4>-u'>Aw-PP^S:AuBu P-rA<t78t18t+s6A<t8u>O"t:Au>OuPPFsAAts+>Au$>ODu,Т,WPPA8t<uPP^SF:Au+<:>u P<?=6:AuPP^SF:Au4>Ȣ=6At ^Sg' V V 0V :>EKN&SVcV kot~V ćĎĕĝ ģĨįķ ĽÆǎ͎VV  &+5V;VCGYV einty$~VņŋŎŒřŝͭV ŹŽÎǎ̎Ў؎ކ!V G ABu PM>BuA<+t<-u ^S.P^S>-u)>Aw-PP^S:Au!-rBu P-A<t8ulF9:<r7Fs5r PA^&G^&G1k<7,sW>AtMPPC:AuPP^S':Au9<7F :AuPP^SrA<t@8t:8t4r/A<t#8u>O"t:At>OtPAAt1 !V "2V BV KRY]&bVrV z~ăĊ̔V ĝĤĬĵĹŎ̆$Vَ V!1V 9=BEJSWeV mt| łŇőř şťũŲˎΎV s*>Au#>ODu,Т,WPPGAt ^S.ABu PP^SUW 82t8u P3s0A<A#s]>CuV>:<uFs,s PF8P<P:P6APP.*>:<uP>CuIFs,s P]8P<P:P6APP.F.8P<P:P6APP.F5s ^S>:<u<3s.>0u'^&G &G 9^9i %V+V39!DV LQU!]V lV r\t\v\|ąĊ(̏VĔĜĠĤĪĮIJĺƎҎVVV V"/6%;VBHNU\VbViqw}ń͋V͑VŗşͫVŰŶſŎ͎Ӡ4 ;8P9P:PP;PP^Sv.^&G^&G3r.F;Ȋ^:rPt < t ^&GFu29F9;Ȋ^:rt < t ^&GFuԠs&8P9P:PF% 8P9P:PF%P;PP8PPPP]k !'V-V:V?T_nĉďēĢĻ,ŽȎΎۆ+߆)V VV#Vt THE PROGRAM, INCLUDING THE SOURCE CODE, SHALL AT ALL TIMES REMAIN IN THE NAME OF UNISYS CORPORATION AND CONVERGENT INCORPORATED. VERSION: s6.4.0C (tuesday january 11, 1994, 14:36) LIBRARY: Forms.lib VERSION: s6.4.7 (Monday October 24, 1994, 10:52)  UNISYS Emergency Maintenance Update CTOS Forms Designer s6.4.3 June 16, 1994 Released Version: R6.4.0 Style ID: B20-FM6 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 16274003 Field overflow error occurs if cursor moved out of last field space and then an attempt to overtype the last character of field is made. PLE 26579686 Decimal field will not auto-exit if the overtype key is on. PLE 16194085 Error 33 when running Forms R6.4.0 on BTOS II 3.2 systems. PLE 16226581 Forms Editor goes into infinite loop when running Test Drive (F9). INSTALLATION INSTRUCTIONS Install the Forms Designer s6.4.3 patch using Floppy Install. This installation will overwrite the current version of Forms Designer which is on your system. RESTRICTIONS There are no new restrictions added with this EMU.2 Page # of 1   DGH DG HDG H@ 0( DGH!8&'*+,57OlOlD!8&'*+,())( DGH!8&'*+,@  FDGH!8&'*+,567OlOlD@ 0 DGH,e,Yee@@ xGH@GH@G H@ DGH  DGH@ ! DGHwϊƋϗ!.kxƴ  *wҊҘ!/kyҴ@ GH@ !  GH@!GH,@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 6  UNISYS Emergency Maintenance Update CTOS Forms Designer s6.4.4 June 24, 1994 Released Version: s6.4.0 Style ID: B20-FM6 Library Reference Number: EA-128D 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 16266213 In Forms Editor pressing Code-E for reverse video causes the selected text to appear in a color which was not selected for captions. PLE 16274003 Field overflow error occurs if cursor moved out of last field space and then an attempt to overtype the last character of field is made. PLE 26579686 Decimal field will not auto-exit if the overtype key is on. PLE 16194085 Error 33 when running Forms R6.4.0 on BTOS II 3.2 systems. PLE 16226581 Forms Editor goes into infinite loop when running Test Drive (F9). INSTALLATION INSTRUCTIONS Install the Forms Designer s6.4.4 patch using Floppy Install. This installation will overwrite the current version of Forms Designer which is on your system. RESTRICTIONS There are no new restrictions added with this EMU.2 Page # of 1   DGH DG HDG H@ 0( DGH!8&'*+,57OlOlD!8&'*+,())(E DGH!8&'*+,@  FDGH!8&'*+,567OlOlD@ 0 DGH,,|@@ xGH@GH@G H@ DGH  DGH@ ! DGHwϗ*ƴ GTƘϙƚϳTaƔԖܘܟܥ*wҊҘ+Ҵ GUҙҳTaʔ@”ץ GH@ !  GH@!GH,@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!(cRB= LaserWriter+3.0 6mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmFileheaders.sysBootRecord.sysMfd.sysLog.sys SysImage.sys BadBlk.sys CrashDump.sys1.sub2.sub Choice.sub fdSys.Version Install.Sub XEInstall.Sub Install.jcl Install.ctrlInstall>English.cmdsForms Designer Diskette 1 of 1 ?@ B20FM6-1@ 0v]zB @ D > `0<9|P^Sys< Unisys 9|oFileheaders.sysSys< vv2v<D <?4BootRecord.sysSys< vv2vMfd.sysSys< vvM^zB Log.sysSys< vv2v@ q SysImage.sysSys< vv3vC BadBlk.sysSys< vv3v CrashDump.sysSys< vv3v@ 61.subSys< vAvAv.= 2.subSys < vCvCv Choice.subSys < vDvDvb +: fdSys.VersionSys < vcvcv  Install.SubSys < vGvGv7a XEInstall.SubSys < vHvHv$ Install.jclSys< vJvxz>&@( Install.ctrlSys< v?"yyzfmInstall>English.cmdsSys< vLvzhForms-s647.docUnisys y!yz, ,MPyyPaultimveHFormsEditor.RunUnisys vyy|z v0 sFormsEditor.RunUnisys vxz*Forms Designer Diskette 1 of 1Sys< Lvvz FmrGtd.asmUnisys vjvjvJ  | FmTabKey.asmUnisys vkvkvJLǠ FmValProc.asmUnisys vlvlvH@ Forms.LibUnisys vyT^z$^ $˷FormsReporter.RunUnisys vyzkx 8 4.0FmRun1.objUnisys vtvtv4  "l 4.0FmChar.objUnisys vuvuv0 _ 4.0FmUser.objUnisys vvxvx(2  z FMRUN2.OBJUnisys vx#xvx: sFormsEditor.Run FmTabKey.asm FmValProc.asm FMRUN2.OBJ FmrGtd.asmFormsReporter.Run 4.0FmRun1.obj 4.0FmUser.objFormsEditor.Run Forms.Lib 4.0FmChar.objForms-s647.doc  UNISYS Emergency Maintenance Update CTOS Forms Designer s6.4.5 July 21, 1994 Released Version: s6.4.0 Style ID: B20-FM6 Library Reference Number: EA-134D 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 16266213 In Forms Editor pressing Code-E for reverse video causes the selected text to appear in a color which was not selected for captions. PLE 16274003 Field overflow error occurs if cursor moved out of last field space and then an attempt to overtype the last character of field is made. PLE 26579686 Decimal field will not auto-exit if the overtype key is on. PLE 16194085 Error 33 when running Forms R6.4.0 on BTOS II 3.2 systems. PLE 16226581 Forms Editor goes into infinite loop when running Test Drive (F9). INSTALLATION INSTRUCTIONS Install the Forms Designer s6.4.5 patch using Floppy Install. This installation will overwrite the current version of Forms Designer which is on your system. RESTRICTIONS There are no new restrictions added with this EMU.2 Page # of 1   DGH DG HDG H@ 0( DGH!8&'*+,57OlOlD!8&'*+,())(E DGH!8&'*+,@  FDGH!8&'*+,567OlOlD@ 0 DGH,,|@@ xGH@GH@G H@ DGH  DGH@ ! DGHwϗ*ƴ GTƘϙƚϳTaƔԖܘܟܥ*wҊҘ+Ҵ GUҙҳTaʔ@”ץ GH@ !  GH@!GH,@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!(cRB= LaserWriter+3.0 6  UNISYS Emergency Maintenance Update CTOS Forms Designer s6.4.7 November 10, 1994 Released Version: s6.4.0 Style ID: B20-FM6 Library Reference Number: EA-157D 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 16312606 Forms Editor hangs if the Mouse Service is not installed. PLE 16266213 In Forms Editor pressing Code-E for reverse video causes the selected text to appear in a color which was not selected for captions. PLE 16274003 Field overflow error occurs if cursor moved out of last field space and then an attempt to overtype the last character of field is made. PLE 26579686 Decimal field will not auto-exit if the overtype key is on. PLE 16194085 Error 33 when running Forms R6.4.0 on BTOS II 3.2 systems. PLE 16226581 Forms Editor goes into infinite loop when running Test Drive (F9). PLE 16391441 Forms field entry fails with error 603 if Submit files are used to pass keystrokes. INSTALLATION INSTRUCTIONS Install the Forms Designer s6.4.7 patch using Floppy Install. This installation will overwrite the current version of Forms Designer which is on your system. RESTRICTIONS There are no new restrictions added with this EMU.2 Page # of 1   DGH DG HDG H@ 0( DGH!8&'*+,57OlOlD!8&'*+,())( DGH!8&'*+,@  FDGH!8&'*+,567OlOlD@ 0 DGH00@@ xGH@GH@G H@ DGH  DGH@ ! DGHwϗer FSƏϜC\ =?@ABHIN*wҊeFҏB\ =@@BN=?N GH@ !  GH@!GH,@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 6  UNISYS Emergency Maintenance Update CTOS Forms Designer s6.4.7 November 10, 1994 Released Version: s6.4.0 Style ID: B20-FM6 Library Reference Number: EA-157D 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 16312606 Forms Editor hangs if the Mouse Service is not installed. PLE 16266213 In Forms Editor pressing Code-E for reverse video causes the selected text to appear in a color which was not selected for captions. PLE 16274003 Field overflow error occurs if cursor moved out of last field space and then an attempt to overtype the last character of field is made. PLE 26579686 Decimal field will not auto-exit if the overtype key is on. PLE 16194085 Error 33 when running Forms R6.4.0 on BTOS II 3.2 systems. PLE 16226581 Forms Editor goes into infinite loop when running Test Drive (F9). PLE 16391441 Forms field entry fails with error 603 if Submit files are used to pass keystrokes. INSTALLATION INSTRUCTIONS Install the Forms Designer s6.4.7 patch using Floppy Install. This installation will overwrite the current version of Forms Designer which is on your system. RESTRICTIONS There are no new restrictions added with this EMU.2 Page # of 1   DGH DG HDG H@ 0( DGH!8&'*+,57OlOlD!8&'*+,())( DGH!8&'*+,@  FDGH!8&'*+,567OlOlD@ 0 DGH00@@ xGH@GH@G H@ DGH  DGH@ ! DGHwϗer FSƏϜC\ =?@ABHIN*wҊeFҏB\ =@@BN=?N GH@ !  GH@!GH,@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 6mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm