daily pastebin goal
76%
SHARE
TWEET

ISO Creator v1.16 build 2012-09-11 beta

UEZ Jun 17th, 2011 1,120 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #AutoIt3Wrapper_Res_RequestedExecutionLevel=RequireAdministrator
  2. #AutoIt3Wrapper_Icon=CD.ico
  3. #AutoIt3Wrapper_Run_Obfuscator=y
  4. #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
  5. #AutoIt3Wrapper_UseX64=n
  6. #AutoIt3Wrapper_Res_Description=Creates an ISO image from a standard CDs or DVDs
  7. #AutoIt3Wrapper_Res_Fileversion=1.1.6.0
  8. #AutoIt3Wrapper_Res_Language=1033
  9. #AutoIt3Wrapper_Res_Field=CompanyName|UEZ Software Production
  10. #AutoIt3Wrapper_Res_Field=ProductName|ISO Creator
  11. #AutoIt3Wrapper_Res_Field=Version|1.16
  12. #AutoIt3Wrapper_Res_Field=Build|2012-09-11 beta
  13. #AutoIt3Wrapper_Res_Field=Coded by|UEZ
  14. #AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
  15. #AutoIt3Wrapper_Res_Field=ProductVersion|%AutoItVer%
  16. #AutoIt3Wrapper_Res_Field=URL|http://www.autoitscript.com/forum/index.php?showtopic=129859
  17. #AutoIt3Wrapper_UseUpx=n
  18. ;~ #AutoIt3Wrapper_Run_After=..\..\..\ResourceHacker\ResHacker.exe -delete %out%, %out%, ICON, 1,
  19. ;~ #AutoIt3Wrapper_Run_After=..\..\..\ResourceHacker\ResHacker.exe -delete %out%, %out%, ICON, 2,
  20. ;~ #AutoIt3Wrapper_Run_After=..\..\..\ResourceHacker\ResHacker.exe -delete %out%, %out%, ICON, 3,
  21. ;~ #AutoIt3Wrapper_Run_After=..\..\..\ResourceHacker\ResHacker.exe -delete %out%, %out%, MENU, 166,
  22. ;~ #AutoIt3Wrapper_Run_After=..\..\..\ResourceHacker\ResHacker.exe -delete %out%, %out%, DIALOG, 1000,
  23. ;~ #AutoIt3Wrapper_Run_After=..\..\..\ResourceHacker\ResHacker.exe -delete %out%, %out%, ICONGROUP, 162,
  24. ;~ #AutoIt3Wrapper_Run_After=..\..\..\ResourceHacker\ResHacker.exe -delete %out%, %out%, ICONGROUP, 164,
  25. ;~ #AutoIt3Wrapper_Run_After=..\..\..\ResourceHacker\ResHacker.exe -delete %out%, %out%, ICONGROUP, 169,
  26. #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"
  27. ;~ #AutoIt3Wrapper_Run_After=upx.exe --ultra-brute --crp-ms=999999 --all-methods --all-filters "%out%"
  28. #AutoIt3Wrapper_Run_After=upx.exe --best --lzma "%out%"
  29. ;~ #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
  30. #include <Array.au3>
  31. #include <ButtonConstants.au3>
  32. #include <Constants.au3>
  33. #include <Date.au3>
  34. #include <GDIPlus.au3>
  35. #include <EditConstants.au3>
  36. #include <GuiComboBoxEx.au3>
  37. #include <GUIConstantsEx.au3>
  38. #include <GUIMenu.au3>
  39. #include <Memory.au3>
  40. #include <Misc.au3>
  41. #include <ProgressConstants.au3>
  42. #include <String.au3>
  43. #include <WindowsConstants.au3>
  44. #include "AutoItObject.au3"
  45.  
  46. ;~ #NoTrayIcon
  47. Opt("TrayMenuMode", 1)
  48. Opt("MustDeclareVars", 1)
  49.  
  50. Global Const $hFullScreen = WinGetHandle("Program Manager")
  51. Global Const $aFullScreen = WinGetPos($hFullScreen)
  52. Global Const $STM_SETIMAGE = 0x0172
  53.  
  54. _GDIPlus_Startup()
  55. Global Const $ini_file = @ScriptDir & "\ISO Creator.ini"
  56. Global $bg_pic = "0"
  57. If FileExists($ini_file) Then
  58.         $bg_pic = IniRead($ini_file, "Settings", "Background_Pic", "0")
  59.         If $bg_pic <> "0" And Not FileExists($bg_pic) Then $bg_pic = "0"
  60. EndIf
  61. Global $ok = 0
  62. Global Const $w = 615
  63. Global Const $h = 157
  64. Global Const $prg_name = "ISO Creator v1.16"
  65. Global Const $title = $prg_name & " beta by UEZ 2011-2012"
  66. Global Const $build = " build 2012-09-11 beta"
  67. Global Const $ver = $prg_name & $build
  68.  
  69. Global Const $hGUI = GUICreate($title, $w, $h, -1, -1, Default, $WS_EX_TOPMOST)
  70. ;~ GUISetBkColor(0xABCDEF, $hGUI)
  71. Global $hGUI_Settings
  72. Global Const $idPic = GUICtrlCreatePic("", 0, 0, $w, $h)
  73. GUICtrlSetState(-1, $GUI_DISABLE)
  74. Global Const $idButton_Create = GUICtrlCreateButton("&Create" & @LF & "ISO", 528, 8, 75, 73, BitOR($BS_CENTER, $BS_VCENTER, $BS_MULTILINE))
  75. GUICtrlSetState(-1, $GUI_DISABLE)
  76. GUICtrlSetTip(-1, "Start creating ISO", "", 0, 1)
  77. GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
  78. Global Const $idButton_Abort = GUICtrlCreateButton("A&bort", 528, 8, 75, 73, BitOR($BS_CENTER, $BS_VCENTER, $BS_MULTILINE))
  79. GUICtrlSetState(-1, $GUI_HIDE)
  80. GUICtrlSetTip(-1, "Abort the ISO creation", "", 0, 1)
  81. GUICtrlSetFont(-1, 14, 400, 0, "Times New Roman")
  82. Global Const $idProgressbar = GUICtrlCreateProgress(8, 93, 595, 27, $PBS_SMOOTH)
  83. Global Const $idInput_Filename = GUICtrlCreateInput("", 160, 31, 257, 24, $GUI_SS_DEFAULT_INPUT)
  84. GUICtrlSetFont(-1, 11, 600, 0, "Times New Roman", 5)
  85. GUICtrlSetTip(-1, "Click on the Save As button to create an iso file", "", 0, 1)
  86. Global Const $hInput_Filename = GUICtrlGetHandle($idInput_Filename)
  87. Global Const $idInput_Filename_Color = 0x002000
  88. Global Const $idLabel_filename = GUICtrlCreateLabel("Filename:", 96, 34, 60, 21)
  89. GUICtrlSetFont(-1, 11, 800, 0, "Times New Roman")
  90. GUICtrlSetBkColor(-1, -2)
  91. GUICtrlSetColor(-1, 0x101080)
  92. Global Const $idButton_Browse = GUICtrlCreateButton("&Save as", 426, 31, 75, 25)
  93. GUICtrlSetTip(-1, "Filename of ISO image", "", 0, 1)
  94. Global Const $idLabel_Drive = GUICtrlCreateLabel("Drive:", 8, 34, 37, 21)
  95. GUICtrlSetFont(-1, 11, 800, 0, "Times New Roman")
  96. GUICtrlSetBkColor(-1, -2)
  97. GUICtrlSetColor(-1, 0xF0F0FF)
  98. Global Const $idCB_MD5 = GUICtrlCreateCheckbox("", 8, 125, 12, 12)
  99. GUICtrlSetTip(-1, "Create MD5 checksum", "", 0, 1)
  100. Global Const $idLabel_MD5 = GUICtrlCreateLabel("Create MD5 checksum", 24, 125, 95, 18)
  101. GUICtrlSetTip(-1, "Create MD5 checksum after ISO has been created", "", 0, 1)
  102. GUICtrlSetFont(-1, 8, 800, 0, "Times New Roman")
  103. GUICtrlSetBkColor(-1, -2)
  104. GUICtrlSetColor(-1, 0x101060)
  105. Global Const $idCB_Eject = GUICtrlCreateCheckbox("", 8, 141, 12, 12)
  106. Global Const $idLabel_Eject = GUICtrlCreateLabel("Auto Eject Media", 24, 141, 95, 18)
  107. GUICtrlSetTip(-1, "Eject media automacally when process is finished", "", 0, 1)
  108. GUICtrlSetFont(-1, 8, 800, 0, "Times New Roman")
  109. GUICtrlSetBkColor(-1, -2)
  110. GUICtrlSetColor(-1, 0x101060)
  111.  
  112. Global Const $idPic_CD = GUICtrlCreatePic("", 574, 125, 28, 28)
  113. GUICtrlSetTip(-1, "Display sector read view on disc", "", 0, 1)
  114. GUICtrlSetCursor(-1, 2)
  115. Global Const $hHBITMAP_CD = Load_BMP_From_Mem(CDIcon(), True)
  116. _WinAPI_DeleteObject(GUICtrlSendMsg($idPic_CD, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBITMAP_CD)) ;$STM_SETIMAGE = 0x0172, $IMAGE_BITMAP = 0
  117. _WinAPI_DeleteObject($hHBITMAP_CD)
  118.  
  119. Global Const $IOCTL_STORAGE_MEDIA_REMOVAL = 0x002D4804
  120. Global Const $IOCTL_SCSI_PASS_THROUGH = 0x0004D004
  121. Global Const $IOCTL_STORAGE_EJECT_MEDIA = 0x002D4808
  122. Global Const $IOCTL_STORAGE_LOAD_MEDIA = 0x002D480C
  123. Global Const $sector = 2048
  124. #region Media Type
  125. Global $aMediaTypes[0x10000][2] ;media type, max. block size (approx.)
  126. $aMediaTypes[0x0000][0] = "No media"
  127. $aMediaTypes[0x0000][1] = 0
  128. $aMediaTypes[0x0008][0] = "CD-ROM"
  129. $aMediaTypes[0x0008][1] = 702 * 1024 ^ 2 / $sector
  130. $aMediaTypes[0x0009][0] = "CD-R"
  131. $aMediaTypes[0x0009][1] = 702 * 1024 ^ 2 / $sector
  132. $aMediaTypes[0x000A][0] = "CD-RW"
  133. $aMediaTypes[0x000A][1] = 702 * 1024 ^ 2 / $sector
  134. $aMediaTypes[0x0010][0] = "DVD-ROM"
  135. $aMediaTypes[0x0010][1] = 4481 * 1024 ^ 2 / $sector
  136. $aMediaTypes[0x0011][0] = "DVD-R Seq. Rec." ;Sequential Recording
  137. $aMediaTypes[0x0011][1] = 4481 * 1024 ^ 2 / $sector
  138. $aMediaTypes[0x0012][0] = "DVD-RAM"
  139. $aMediaTypes[0x0012][1] = 4481 * 1024 ^ 2 / $sector
  140. $aMediaTypes[0x0013][0] = "DVD-RW Restricted Overwrite"
  141. $aMediaTypes[0x0013][1] = 4481 * 1024 ^ 2 / $sector
  142. $aMediaTypes[0x0014][0] = "DVD-RW Seq. Rec." ;Sequential Recording
  143. $aMediaTypes[0x0014][1] = 4481 * 1024 ^ 2 / $sector
  144. $aMediaTypes[0x0015][0] = "DVD-R DL" ;Dual Layer
  145. $aMediaTypes[0x0015][1] = 8148 * 1024 ^ 2 / $sector
  146. $aMediaTypes[0x0016][0] = "DVD-R DL Jmp Rec." ;Dual Layer Jump Recording
  147. $aMediaTypes[0x0016][1] = 8148 * 1024 ^ 2 / $sector
  148. $aMediaTypes[0x0017][0] = "DVD-RW DL"
  149. $aMediaTypes[0x0017][1] = 8148 * 1024 ^ 2 / $sector
  150. $aMediaTypes[0x0018][0] = "DVD-Download Disc Rec."
  151. $aMediaTypes[0x0018][1] = 4481 * 1024 ^ 2 / $sector
  152. $aMediaTypes[0x001A][0] = "DVD+RW"
  153. $aMediaTypes[0x001A][1] = 4481 * 1024 ^ 2 / $sector
  154. $aMediaTypes[0x001B][0] = "DVD+R"
  155. $aMediaTypes[0x001B][1] = 4481 * 1024 ^ 2 / $sector
  156. $aMediaTypes[0x002A][0] = "DVD+RW DL"
  157. $aMediaTypes[0x002A][1] = 4481 * 1024 ^ 2 / $sector
  158. $aMediaTypes[0x002B][0] = "DVD+R DL" ;Dual Layer
  159. $aMediaTypes[0x002B][1] = 8148 * 1024 ^ 2 / $sector
  160. $aMediaTypes[0x0040][0] = "BD-ROM"
  161. $aMediaTypes[0x0040][1] = 23859 * 1024 ^ 2 / $sector
  162. $aMediaTypes[0x0041][0] = "BD-R SRM" ;Sequential Recording Mode
  163. $aMediaTypes[0x0041][1] = 23859 * 1024 ^ 2 / $sector
  164. $aMediaTypes[0x0042][0] = "BD-R RRM" ;Random Recording Mode (RRM)
  165. $aMediaTypes[0x0042][1] = 23859 * 1024 ^ 2 / $sector
  166. $aMediaTypes[0x0043][0] = "BD-RE"
  167. $aMediaTypes[0x0043][1] = 23859 * 1024 ^ 2 / $sector
  168. $aMediaTypes[0x0050][0] = "HD DVD-ROM"
  169. $aMediaTypes[0x0050][1] = 14300 * 1024 ^ 2 / $sector
  170. $aMediaTypes[0x0051][0] = "HD DVD-R"
  171. $aMediaTypes[0x0051][1] = 14300 * 1024 ^ 2 / $sector
  172. $aMediaTypes[0x0052][0] = "HD DVD-RAM"
  173. $aMediaTypes[0x0052][1] = 14300 * 1024 ^ 2 / $sector
  174. $aMediaTypes[0x0053][0] = "HD DVD-RW"
  175. $aMediaTypes[0x0053][1] = 14300 * 1024 ^ 2 / $sector
  176. $aMediaTypes[0x0058][0] = "HD DVD-R DL"
  177. $aMediaTypes[0x0058][1] = 28570 * 1024 ^ 2 / $sector
  178. $aMediaTypes[0x005A][0] = "HD DVD-RW DL"
  179. $aMediaTypes[0x005A][1] = 28570 * 1024 ^ 2 / $sector
  180. $aMediaTypes[0xFFFF][0] = "Unknown"
  181. $aMediaTypes[0xFFFF][1] = 0
  182. #endregion Media Type
  183.  
  184. Global $sDrives = GetDrivesInfo()
  185. Global $noDrv = False
  186.  
  187. If Not $sDrives Then
  188.         GUICtrlSetState($idButton_Browse, $GUI_DISABLE)
  189.         $sDrives = "0: [No drive found, , 0 MB]|"
  190.         $noDrv  = True
  191.         If Not $CmdLine[0] Then ErrorMsgBox("No CD/DVD drive found!")
  192. EndIf
  193. Global $drv_tmp = $sDrives
  194. Global $aInfo_o = StringSplit($sDrives, "|", 2)
  195. Global $combo_size = 38, $width = $combo_size + 1
  196. Global Const $combo_height = 28
  197. Global Const $idCombo = GUICtrlCreateCombo("", 48, 31, $combo_size, $combo_height, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_SORT, $CBS_UPPERCASE, $CBS_SORT), $WS_EX_TOPMOST)
  198. GUICtrlSetData(-1, $sDrives)
  199. GUICtrlSetTip(-1, "Select CD/DVD drive", "", 0, 1)
  200. GUICtrlSetFont(-1, 9, 800, 0, "Times New Roman")
  201. Global Const $hCombo = GUICtrlGetHandle($idCombo)
  202.  
  203. Global $saveas, $drv, $file, $pid, $aChild, $line, $aP, $po, $abort, $t, $i, $c, $fn, $td, $sek, $err, $mo, $dummy, $aM, $blocks
  204. Global $fs = False, $start_dummy = False, $combo_min = True, $started = False
  205. Global Const $perf = 250
  206. Global Const $dt = 1000 * 3600 ; if timer > 1h abort copy process
  207. Global $hHBITMAP
  208. If $bg_pic = "0" Then
  209.         $hHBITMAP = Load_BMP_From_Mem(BackgroundPic(), True)
  210.         _WinAPI_DeleteObject(GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBITMAP)) ;$STM_SETIMAGE = 0x0172, $IMAGE_BITMAP = 0
  211.         _WinAPI_DeleteObject($hHBITMAP)
  212. Else
  213.         Change_Background_Pic($bg_pic)
  214.         ControlFocus($hGUI, "", $idButton_Browse)
  215. EndIf
  216.  
  217. GUISetIcon(@SystemDir & "\Shell32.dll", 189, $hGUI)
  218.  
  219. Global Const $hBitmap = Load_BMP_From_Mem(Texture(), True)
  220. Global $aR = DllCall("Gdi32.dll", "Handle", "CreatePatternBrush", "Handle", $hBitmap) ;create background image of input box!
  221. Global $hBrush = $aR[0]
  222. Global $mco = MouseGetCursor()
  223. GUIRegisterMsg(0x0133, "WM_CTLCOLOREDIT") ;$WM_CTLCOLOREDIT = 0x0133
  224.  
  225. Global Const $AW_ACTIVATE = 0x00020000, $AW_BLEND = 0x00080000, $AW_HIDE = 0x00010000
  226. Global Const $hDwmApiDll = DllOpen("dwmapi.dll")
  227. Global Const $sChkAero = DllStructCreate("int;")
  228. DllCall($hDwmApiDll, "int", "DwmIsCompositionEnabled", "ptr", DllStructGetPtr($sChkAero))
  229. Global Const $aero = DllStructGetData($sChkAero, 1)
  230. DllClose($hDwmApiDll)
  231.  
  232. If $aero Then
  233.         Global Const $TBPF_NOPROGRESS = 0
  234.         Global Const $TBPF_INDETERMINATE = 0x1
  235.         Global Const $TBPF_NORMAL = 0x2
  236.         Global Const $TBPF_ERROR = 0x4
  237.         Global Const $TBPF_PAUSED = 0x8
  238.         Global $CLSID_TaskBarlist, $CLSID_TaskBarlist, $IID_ITaskbarList3, $pTB3, $oTB3
  239.         Global $tagInterface = _
  240.         "QueryInterface long(ptr;ptr;ptr);" & _
  241.         "AddRef ulong();" & _
  242.         "Release ulong();" & _
  243.         "HrInit long();" & _
  244.         "AddTab long(hwnd);" & _
  245.         "DeleteTab long(hwnd);" & _
  246.         "ActivateTab long(hwnd);" & _
  247.         "SetActiveAlt long(hwnd);" & _
  248.         "MarkFullscreenWindow long(hwnd;int);" & _
  249.         "SetProgressValue long(hwnd;uint64;uint64);" & _
  250.         "SetProgressState long(hwnd;int);" & _
  251.         "RegisterTab long(hwnd;hwnd);" & _
  252.         "UnregisterTab long(hwnd);" & _
  253.         "SetTabOrder long(hwnd;hwnd);" & _
  254.         "SetTabActive long(hwnd;hwnd;dword);" & _
  255.         "ThumbBarAddButtons long(hwnd;uint;ptr);" & _
  256.         "ThumbBarUpdateButtons long(hwnd;uint;ptr);" & _
  257.         "ThumbBarSetImageList long(hwnd;ptr);" & _
  258.         "SetOverlayIcon long(hwnd;ptr;wstr);" & _
  259.         "SetThumbnailTooltip long(hwnd;wstr);" & _
  260.         "SetThumbnailClip long(hwnd;ptr);"
  261.         _AutoItObject_StartUp()
  262.         ; get interfaces
  263.         $CLSID_TaskBarlist = _AutoItObject_CLSIDFromString("{56FDF344-FD6D-11D0-958A-006097C9A090}")
  264.         ; ITaskbarList3:  http://msdn.microsoft.com/en-us/library/dd391692(VS.85).aspx
  265.         $IID_ITaskbarList3 = _AutoItObject_CLSIDFromString("{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}")
  266.         _AutoItObject_CoCreateInstance(DllStructGetPtr($CLSID_TaskBarlist), 0, 1, DllStructGetPtr($IID_ITaskbarList3), $pTB3)
  267.         $oTB3 = _AutoItObject_WrapperCreate($pTB3, $tagInterface)
  268.         $oTB3.HrInit()
  269.         $oTB3.SetProgressState($hGUI, $TBPF_NORMAL)
  270. EndIf
  271.  
  272. Global $auto_exit = False
  273. If $CmdLine[0] Then CheckCMDLine()
  274.  
  275. If Not $auto_exit Then
  276. ;~      _WinAPI_AnimateWindow($hGUI, BitOR($AW_BLEND, $AW_ACTIVATE), 500)
  277.         _GUICtrlComboBoxEx_SetCurSel($hCombo, 0)
  278.         ControlFocus($hGUI, "", $idButton_Browse)
  279.         GUICtrlSetPos($idCombo, 48, 31, $combo_size, $combo_height)
  280. EndIf
  281. GUISetState(@SW_SHOW, $hGUI)
  282.  
  283. Global Const $SND_SYNC = 0, $SND_ASYNC = 1, $SND_NODEFAULT = 2, $SND_MEMORY = 4, $SND_NOWAIT = 0x2000
  284.  
  285. Global $binCapture_snd_finished = Sound_Finished()
  286. Global $ByteStruct_snd_finished = DllStructCreate("byte[" & BinaryLen($binCapture_snd_finished) & "]")
  287. DllStructSetData($ByteStruct_snd_finished, 1, $binCapture_snd_finished)
  288. Global Const $BytePtr_snd_finished = DllStructGetPtr($ByteStruct_snd_finished)
  289.  
  290. Global $binCapture_snd_abort = Sound_Abort()
  291. Global $ByteStruct_snd_abort = DllStructCreate("byte[" & BinaryLen($binCapture_snd_abort) & "]")
  292. DllStructSetData($ByteStruct_snd_abort, 1, $binCapture_snd_abort)
  293. Global Const $BytePtr_snd_abort = DllStructGetPtr($ByteStruct_snd_abort)
  294.  
  295. Global Const $fuSound = BitOR($SND_MEMORY, $SND_ASYNC, $SND_NODEFAULT, $SND_NOWAIT)
  296. Global $hUser32DLL = DllOpen("user32.dll")
  297.  
  298. DllCall($hUser32DLL, 'int', 'HideCaret', 'hwnd', $hGUI)
  299. DllCall($hUser32DLL, 'int', 'DestroyCaret')
  300.  
  301. Global $_MD5_CodeBuffer, $_MD5_CodeBufferMemory
  302. Global $_MD5_InitOffset, $_MD5_InputOffset, $_MD5_ResultOffset
  303. Global $_HASH_MD5[4] = [16, 88, '_MD5_', '_MD5_']
  304.  
  305. Global Enum $idAbout = 1000, $idChangeBGPic, $idEjectMedia, $idLoadMedia, $idMD5, $idUpd, $idVisitWeb
  306. Global Const $hMenu = _GUICtrlMenu_GetSystemMenu($hGUI)
  307. _GUICtrlMenu_InsertMenuItem($hMenu, 5, 0, 0)
  308. _GUICtrlMenu_InsertMenuItem($hMenu, 6, "&About", $idAbout)
  309. _GUICtrlMenu_InsertMenuItem($hMenu, 7, 0, 0)
  310. _GUICtrlMenu_InsertMenuItem($hMenu, 8, "Change &Background Pic", $idChangeBGPic)
  311. _GUICtrlMenu_InsertMenuItem($hMenu, 9, "Create MD&5 checksum from ISO", $idMD5)
  312. _GUICtrlMenu_InsertMenuItem($hMenu, 10, "Check for &Updates", $idUpd)
  313. _GUICtrlMenu_InsertMenuItem($hMenu, 11, "Visit &Web Site", $idVisitWeb)
  314.  
  315. Global Const $hBmp_MD5 = Load_BMP_From_Mem(CDIcon())
  316. Global Const $hGraphic_MD5 = _GDIPlus_ImageGetGraphicsContext($hBmp_MD5)
  317. _GDIPlus_GraphicsDrawString($hGraphic_MD5, "MD5", 1, 6, "Tahoma", 11)
  318. Global Const $hHBmp_MD5 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp_MD5)
  319. _GDIPlus_GraphicsDispose($hGraphic_MD5)
  320. _GDIPlus_BitmapDispose($hBmp_MD5)
  321. _GUICtrlMenu_SetItemBmp($hMenu, 9, $hHBmp_MD5)
  322.  
  323. Global Const $hBmp_About = _WinAPI_CreateBitmapFromIcon(@SystemDir & "\Shell32.dll", 221, 28, 28)
  324. _GUICtrlMenu_SetItemBmp($hMenu, 6, $hBmp_About)
  325. Global $Icon_ChP = 301
  326. If @OSBuild < 6000 Then $Icon_ChP = 117
  327. If @OSBuild > 7999 Then $Icon_ChP = 317
  328. Global Const $hBmp_ChangeBG = _WinAPI_CreateBitmapFromIcon(@SystemDir & "\Shell32.dll", $Icon_ChP, 28, 28)
  329. _GUICtrlMenu_SetItemBmp($hMenu, 8, $hBmp_ChangeBG)
  330. Global Const $hBmp_Update = _WinAPI_CreateBitmapFromIcon(@SystemDir & "\Shell32.dll", 91, 28, 28)
  331. _GUICtrlMenu_SetItemBmp($hMenu, 10, $hBmp_Update)
  332. Global $hBMP_VisitWeb = _WinAPI_CreateBitmapFromIcon(@SystemDir & "\Shell32.dll", 13, 28, 28)
  333. _GUICtrlMenu_SetItemBmp($hMenu, 11, $hBMP_VisitWeb)
  334.  
  335. Global Const $hQMenu = _GUICtrlMenu_CreatePopup()
  336. _GUICtrlMenu_InsertMenuItem($hQMenu, 0, "Eject media from the device", $idEjectMedia)
  337. _GUICtrlMenu_InsertMenuItem($hQMenu, 1, "", 0)
  338. _GUICtrlMenu_InsertMenuItem($hQMenu, 2, "Load Media", $idLoadMedia)
  339.  
  340. Global Const $hBmp_EjectMedia = _WinAPI_CreateBitmapFromIcon(@SystemDir & "\Shell32.dll", 78, 32, 32)
  341. _GUICtrlMenu_SetItemBmp($hQMenu, 0, $hBmp_EjectMedia)
  342. ;~ Global Const $hBmp_LoadMedia = _WinAPI_CreateBitmapFromIcon(@SystemDir & "\Shell32.dll", 11, 32, 32)
  343. Global Const $hBmp_LoadMedia = Load_BMP_From_Mem(Icon_LM(), True)
  344. _GUICtrlMenu_SetItemBmp($hQMenu, 2, $hBmp_LoadMedia)
  345.  
  346. $dummy = GUICtrlCreateDummy()
  347.  
  348. Global $hGraphic_Disc, $hImage_Disc, $hBitmap_Disk, $hHBITMAP_Disc, $hBrush_Disc, $hGUI_Disc, $id_DiscPic
  349. Global $mbps, $MediaSize, $mem1, $mem2
  350. Global Const $deg = ACos(-1) / 180
  351. Global Const $disc_w = 172
  352. Global Const $disc_h = 172
  353. Global Const $w2 = $disc_w / 2
  354. Global Const $h2 = $disc_h / 2
  355. Global Const $wTitle = _WinAPI_GetSystemMetrics($SM_CYCAPTION)
  356. Global Const $wFrame = _WinAPI_GetSystemMetrics($SM_CXFRAME)
  357. Global Const $wFrameB = _WinAPI_GetSystemMetrics($SM_CYDLGFRAME)
  358. Global Const $wFrameF = _WinAPI_GetSystemMetrics($SM_CXDLGFRAME)
  359. Global $radius, $angel, $s
  360. Global $switch_view = True
  361.  
  362. $hGUI_Disc = GUICreate("Sector Reading View", $disc_w, $disc_h, $w + $wFrame, -$wFrameB, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
  363. $id_DiscPic = GUICtrlCreatePic("", 0, 0, $disc_w, $disc_h)
  364.  
  365. $hBrush_Disc = _GDIPlus_BrushCreateSolid(0x180000A0)
  366. $hImage_Disc = Load_BMP_From_Mem(DiskImage())
  367. $hBitmap_Disk = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $disc_w, "int", $disc_h, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  368. $hBitmap_Disk = $hBitmap_Disk[6]
  369. $hGraphic_Disc = _GDIPlus_ImageGetGraphicsContext($hBitmap_Disk)
  370. _GDIPlus_GraphicsDrawImageRect($hGraphic_Disc, $hImage_Disc, 0, 0, $disc_w, $disc_h)
  371. _GDIPlus_GraphicsSetSmoothingMode($hGraphic_Disc, 2)
  372. ;~ _GDIPlus_GraphicsSetSmoothingMode($hGraphic_Size, 2)
  373. ;~ DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hGraphic_Size, "int", 4)
  374.  
  375. $hHBITMAP_Disc = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage_Disc)
  376. _WinAPI_DeleteObject(GUICtrlSendMsg($id_DiscPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBITMAP_Disc))
  377. _WinAPI_DeleteObject($hHBITMAP_Disc)
  378. GUISetState(@SW_HIDE)
  379.  
  380. Global $rgn = _WinAPI_CreateRoundRectRgn(0, 0, $disc_w, $disc_h, $disc_w, $disc_h)
  381. _WinAPI_SetWindowRgn($hGUI_Disc, $rgn)
  382.  
  383. Chk_Drive_Status()
  384. GetTextLength()
  385.  
  386. AdlibRegister("Chk_Drive_Status", 2000) ; checks every 2 seconds whether new media has been inserted to update combo box
  387.  
  388. GUIRegisterMsg(0x0112, "WM_SYSCOMMAND") ;$WM_SYSCOMMAND = 0x0112
  389. GUIRegisterMsg(0x0111, "WM_COMMAND") ;$WM_COMMAND = 0x0111
  390. GUIRegisterMsg(0x007B, "WM_CONTEXTMENU") ; $WM_CONTEXTMENU = 0x007B
  391. GUIRegisterMsg(0x0046, "WM_WINDOWPOSCHANGING") ;$WM_WINDOWPOSCHANGING = 0x0046
  392.  
  393.  
  394. While 1
  395.         Switch GUIGetMsg()
  396.                 Case $GUI_EVENT_CLOSE
  397.                         _Exit()
  398.                 Case $idButton_Browse
  399.                         $saveas = FileSaveDialog("Enter ISO file name", "", "ISO (*.iso)", 2, "", $hGUI)
  400.                         If Not @error Then
  401.                                 If StringRight($saveas, 4) <> ".iso" Then $saveas &= ".iso"
  402.                                 GUICtrlSetData($idInput_Filename, $saveas)
  403.                                 $ok += 1
  404.                                 $fs = True
  405.                         EndIf
  406.                 Case $idButton_Create, $dummy
  407.                         $fn = GUICtrlRead($idInput_Filename)
  408.                         If FileExists($fn) Then
  409.                                 $c = MsgBox(48 + 4, "Information", $fn & " already exists!" & @CRLF & @CRLF & "Overwrite?", 0, $hGUI)
  410.                                 If $c = 6 Then
  411.                                         If FileDelete($fn) Then
  412.                                                 Create_ISO()
  413.                                         Else
  414.                                                 ErrorMsgBox("Unable to delete " & $fn)
  415.                                         EndIf
  416.                                 EndIf
  417.                         Else
  418.                                 Create_ISO()
  419.                         EndIf
  420.                 Case $idPic_CD
  421.                         Switch_View()
  422.                         CheckDiskPos()
  423. ;~                      Draw_DiscView(1000)
  424.         EndSwitch
  425.  
  426.         If $ok > 0 Then
  427.                 If BitAND(GUICtrlGetState($idButton_Create), $GUI_ENABLE) <> $GUI_ENABLE Then GUICtrlSetState($idButton_Create, $GUI_ENABLE)
  428.         Else
  429.                 If BitAND(GUICtrlGetState($idButton_Create), $GUI_DISABLE) <> $GUI_DISABLE Then GUICtrlSetState($idButton_Create, $GUI_DISABLE)
  430.         EndIf
  431.  
  432.         If $start_dummy Then
  433.                 GUICtrlSendToDummy($dummy)
  434.                 $start_dummy = False
  435.         EndIf
  436.  
  437.         $aM = GUIGetCursorInfo($hGUI)
  438.         If Not @error Then
  439.                 If $aM[4] = $idCombo Then
  440.                         If Not $mem1 Then
  441.                                 GUICtrlSetPos($idCombo, 48, 31, $width, $combo_height)
  442.                                 If Not $aero Then _WinAPI_RedrawWindow($hGUI)
  443.                                 $mem1 = True
  444.                                 $mem2 = False
  445.                         EndIf
  446.                 Else
  447.                         If Not $mem2 Then
  448.                                 If $combo_min Then
  449.                                         GUICtrlSetPos($idCombo, 48, 31, 38, $combo_height)
  450.                                         $mem2 = True
  451.                                         $mem1 = False
  452.                                 EndIf
  453.                         EndIf
  454.                 EndIf
  455.         EndIf
  456. WEnd
  457.  
  458. Func Chk_Drive_Status()
  459.         Local $z, $info
  460.         Local $drv_info = GetDrivesInfo()
  461.         Local $aInfo_c = StringSplit($drv_info, "|", 2)
  462.         If UBound($aInfo_o) <> UBound($aInfo_c) Then $aInfo_o = $aInfo_c
  463.         Local $ci = _GUICtrlComboBox_GetCurSel($hCombo)
  464.         If $drv_info <> $drv_tmp Then
  465.                 GUICtrlSetState($idCombo, $GUI_DISABLE)
  466.                 _GUICtrlComboBox_ResetContent($hCombo)
  467.                 GUICtrlSetData($idCombo, $drv_info)
  468.                 _GUICtrlComboBoxEx_SetCurSel($hCombo, $ci)
  469.                 GUICtrlSetState($idCombo, $GUI_ENABLE)
  470.                 $drv_tmp = $drv_info
  471.                 For $z = 0 To UBound($aInfo_c) - 1
  472.                         If $aInfo_c[$z] <> $aInfo_o[$z] Then $info &= $aInfo_c[$z] & @CRLF
  473.                 Next
  474.                 TrayTip("Information", "CD/DVD media change detected:" & @CRLF & @CRLF & $info, 1, 1)
  475.                 $aInfo_o = $aInfo_c
  476.                 GetTextLength()
  477.         EndIf
  478. EndFunc   ;==>Chk_Drive_Status
  479.  
  480. Func GetTextLength()
  481.         Local $l, $max = 0
  482.         Local $elements = _GUICtrlComboBox_GetListArray($hCombo)
  483.         For $l = 1 To $elements[0]
  484.                 If StringLen($elements[$l]) > $max Then $max = StringLen($elements[$l])
  485.         Next
  486.         $width = Max($combo_size + 1, $max * 7.5)
  487. EndFunc   ;==>GetTextLength
  488.  
  489. Func GetDrivesInfo()
  490.         Local $k
  491.         Local $aDrives = DriveGetDrive("CDROM")
  492.         If @error Then Return
  493.         For $k = 1 To $aDrives[0]
  494.                 $aDrives[$k] = StringUpper($aDrives[$k])
  495.                 $aDrives[$k] &= " [" & $aMediaTypes[_WinAPI_GetCDType($aDrives[$k])][0] & ", " & DriveGetLabel($aDrives[$k]) & ", " & Round(DriveSpaceTotal($aDrives[$k]), 2) & " MB]"
  496.         Next
  497.         Return _ArrayToString($aDrives, "|", 1)
  498. EndFunc   ;==>GetDrivesInfo
  499.  
  500. Func CheckCMDLine()
  501.         If $noDrv Then
  502.                 ErrorMsgBox("No CD/DVD drive found!" & @LF & @LF & @LF  & "Terminating program!")
  503.                 _Exit(True)
  504.         EndIf
  505.         Local $ps, $pd, $md5, $index, $sText, $exit, $aem, $help
  506.         $help = BitAND(_ArraySearch($CmdLine, "-?"), _ArraySearch($CmdLine, "/?"), _ArraySearch($CmdLine, "-h"), _ArraySearch($CmdLine, "/h"))
  507.  
  508.         If $help > 0 Then
  509.                 MsgBox(64 + 262144, "Command line information", "Command line syntax:" & @CRLF & @CRLF & _
  510.                                                                                                                                                                                                                                                 "ISO Creator.exe"& @TAB & _
  511.                                                                                                                                                                                                                                                 "-s [source cd/dvd drive]"& @CRLF & @TAB & @TAB & _
  512.                                                                                                                                                                                                                                                 "-d [filename]" & @CRLF & @TAB & @TAB & _
  513.                                                                                                                                                                                                                                                 "(-md5)" & @CRLF & @TAB & @TAB & _
  514.                                                                                                                                                                                                                                                 "(-aem)" & @CRLF & @TAB & @TAB & _
  515.                                                                                                                                                                                                                                                 "(-exit)", 30)
  516.                 _Exit(True)
  517.         EndIf
  518.         $index = _ArraySearch($CmdLine, "-s")
  519.         If @error Then Return
  520.         $ps = $CmdLine[$index + 1]
  521.         $index = _ArraySearch($CmdLine, "-d")
  522.         If @error Then Return
  523.         $md5 = _ArraySearch($CmdLine, "-md5")
  524.         $aem = _ArraySearch($CmdLine, "-aem")
  525.         $exit = _ArraySearch($CmdLine, "-exit")
  526.         $pd = $CmdLine[$index + 1]
  527.         If StringRight($pd, 4) <> ".iso" Then $pd &= ".iso"
  528.         If StringRegExp($ps, "(?i)\A[a-z]:", 0) And _GUICtrlComboBox_FindString($hCombo, $ps) > -1 And StringRegExp($pd, "((?<!.)([a-zA-Z]\:\\)(?!\s)(([\w-+.]*((?<!\s)(\s{1})(?!\\)|(?<!\\)(\\{1})(?!\s))*)*)(\\?)(?!.))", 0) Then
  529.                 _GUICtrlComboBox_GetLBText($hCombo, _GUICtrlComboBox_FindString($hCombo, $ps), $sText)
  530.                 GUICtrlSetData($idCombo, $sText)
  531.                 GUICtrlSetData($idInput_Filename, $pd)
  532.                 If $md5 > -1 Then GUICtrlSetState($idCB_MD5, $GUI_CHECKED)
  533.                 If $aem > -1 Then GUICtrlSetState($idCB_Eject, $GUI_CHECKED)
  534.                 If $exit > -1 Then $auto_exit = True
  535.                 $ok = 2
  536.                 $start_dummy = True
  537.         EndIf
  538. EndFunc   ;==>CheckCMDLine
  539.  
  540. Func ISO9660_Check($drv) ;good source http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_97/cdrom/Kapitel2.html (German only)
  541.         Local $nBytes, $tBuffer, $hFile, $id, $LogicalBlockSize, $BD = False
  542.         If StringRegExpReplace(GUICtrlRead($idCombo), "(?i).*\[(BD.*|HD.*),.*,.*\]", "") = "" Then $BD = True
  543.         If Not $BD Then
  544.                                                                                                                                                                                                                                                                         ;length -> position
  545.                 $tBuffer = DllStructCreate(     "byte Type;" & _                                                                                                ;1
  546.                                                                                                                 "char Identifier[5];" & _                                                                       ;5 -> 6
  547.                                                                                                                 "byte Version;" & _                                                                                     ;1 -> 7
  548.                                                                                                                 "byte Empty1;" & _                                                                                      ;1 -> 8
  549.                                                                                                                 "char SystemID[32];" & _                                                                ;32 -> 40
  550.                                                                                                                 "char VolumeID[32];" & _                                                                ;32 -> 72
  551.                                                                                                                 "byte Empty2[8];" & _                                                                           ;8 -> 80
  552.                                                                                                                 "uint BlocksLE;" & _                                                                                    ;4 -> 84
  553.                                                                                                                 "uint BlocksBE;" & _                                                                            ;4 -> 88
  554.                                                                                                                 "byte Empty3[32];" & _                                                                          ;32 -> 120
  555.                                                                                                                 "ushort VolumeSetSizeLE;" & _                                           ;2 -> 122
  556.                                                                                                                 "ushort VolumeSetSizeBE;" & _                                           ;2 -> 124
  557.                                                                                                                 "ushort VolumeSequenceNumberLE;" & _    ;2 -> 126
  558.                                                                                                                 "ushort VolumeSequenceNumberBE;" & _    ;2 -> 128
  559.                                                                                                                 "ushort LogicalBlockSizeLE;" & _                                        ;2 -> 130
  560.                                                                                                                 "ushort LogicalBlockSizeBE;" & _                                        ;2 -> 132
  561.                                                                                                                 "byte DataRest[1916]")
  562.                                                                                                                 ;LE = Little Endian (right to left)
  563.                                                                                                                 ;BE = Big Endian (left to right)
  564.                 $hFile = _WinAPI_CreateFile("\\.\" & $drv, 2, 2, 2)
  565.                 If Not $hFile Then Return SetError(1, 0, 0)
  566.                 _WinAPI_SetFilePointer($hFile, 0x08000)
  567.                 _WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), DllStructGetSize($tBuffer), $nBytes)
  568.                 _WinAPI_CloseHandle($hFile)
  569.                 $id = DllStructGetData($tBuffer, "Identifier")
  570.                 If Not StringInStr("CD001CDW02NSR02", $id) Then Return SetError(2, 0, 0)
  571.                 $LogicalBlockSize = DllStructGetData($tBuffer, "LogicalBlockSizeLE")
  572.                 If $LogicalBlockSize <> 0x0800 Then Return SetError(3, 0, 0)
  573.                 $blocks = DllStructGetData($tBuffer, "BlocksLE")
  574.                 $tBuffer = 0
  575.         Else
  576.                 Return SetError(4, 0, 0) ;No BD / HD support yet
  577.         EndIf
  578.         Return True
  579. EndFunc   ;==>ISO9660_Check
  580.  
  581. Func Create_ISO()
  582.         Local $dl, $drvl, $p, $bytes, $speed, $aDrives, $error, $dd
  583.         $drvl = GUICtrlRead($idCombo)
  584.         $dl = StringLeft($drvl, 1) & ":"
  585.         If DriveSpaceFree(StringLeft(GUICtrlRead($idInput_Filename), 3)) < DriveSpaceTotal($dl) Then Return ErrorMsgBox("Not enough space on destination drive!")
  586.         If DriveStatus($dl) = "READY" And ISO9660_Check($dl) Then
  587.                 AdlibUnRegister("Chk_Drive_Status")
  588.  
  589.                 $abort = False
  590.                 $started = True
  591.                 GUICtrlSetState($idButton_Browse, $GUI_DISABLE)
  592. ;~              GUICtrlSetState($idCB_MD5, $GUI_DISABLE)
  593. ;~              GUICtrlSetState($idCB_Eject, $GUI_DISABLE)
  594.                 GUICtrlSetState($idCombo, $GUI_DISABLE)
  595.                 GUICtrlSetState($idButton_Create, $GUI_HIDE)
  596.                 GUICtrlSetState($idButton_Abort, $GUI_SHOW)
  597.                 _GUICtrlMenu_SetItemDisabled($hMenu, 6)
  598.                 _GUICtrlMenu_SetItemDisabled($hMenu, 8)
  599.                 _GUICtrlMenu_SetItemDisabled($hMenu, 9)
  600.                 _GUICtrlMenu_SetItemDisabled($hMenu, 10)
  601.  
  602.                 ControlFocus($hGUI, "", $idButton_Abort)
  603.                 $mo = MouseGetCursor()
  604.                 GUISetCursor(15, 1, $hGUI)
  605.                 $drv = StringLeft($drvl, 1)
  606.                 $MediaSize = Round(DriveSpaceTotal($dl), 2)
  607.  
  608.                 Opt("GUIOnEventMode", 1)
  609.                 GUICtrlSetOnEvent($idButton_Abort, "Abort_Ctrl")
  610.                 GUICtrlSetOnEvent($idPic_CD, "Switch_View")
  611.  
  612.                 Local $max_blocks = $aMediaTypes[_ArraySearch($aMediaTypes, StringRegExpReplace($drvl, "\w:..(.*),.*,.*", "$1"))][1]
  613.  
  614.                 $t = TimerInit()
  615.                 $err = TimerInit()
  616.  
  617.                 Local $hFileRead = FileOpen("\\.\" & $dl, 16)
  618.                 If $hFileRead = -1 Then Return ErrorMsgBox("Unable to open drive " & $dl)
  619.                 Local $hFileSave = FileOpen($fn, 18)
  620.                 If $hFileSave = -1 Then
  621.                         FileClose($hFileRead)
  622.                         Return ErrorMsgBox("Unable to create  " & $fn)
  623.                 EndIf
  624.  
  625.                 Local $sector_steps = Ceiling($max_blocks / 2824)
  626.                 $radius = 32
  627.                 $angel = 0
  628.                 $s = 4
  629.                 _GDIPlus_GraphicsDrawImageRect($hGraphic_Disc, $hImage_Disc, 0, 0, $disc_w, $disc_h)
  630.  
  631.                 Local $block_count, $bench_timer, $ii
  632.                 AdlibRegister("Progress", $perf)
  633.                 $p = 0
  634.                 _WinAPI_LockDevice($dl, 1)
  635.                 FileSetPos($hFileRead, $p, $FILE_BEGIN)
  636.                 $bench_timer = TimerInit()
  637.                 For $ii = 0 To $blocks
  638.                         $bytes = FileRead($hFileRead, $sector)
  639.                         FileWrite($hFileSave, $bytes)
  640.                         $p += $sector
  641.                         FileSetPos($hFileRead, $p, $FILE_BEGIN)
  642.                         If TimerDiff($bench_timer) > 999 Then
  643.                                 $mbps = ($ii - $block_count) * 2048 / 1024 ^ 2
  644.                                 $block_count = $ii
  645.                                 $bench_timer = TimerInit()
  646.                         EndIf
  647.                         If Not Mod($ii, $sector_steps) Then
  648.                                 Draw_DiscView($ii + 1)
  649.                         EndIf
  650.                         $po = Ceiling($ii / $blocks * 100)
  651.                         If TimerDiff($t) > $dt Then $abort = True
  652.                         If $abort Then ExitLoop
  653.                 Next
  654.                 If Mod($ii, $sector_steps) Then Draw_DiscView($ii + 1)
  655.                 FileClose($hFileSave)
  656.                 FileClose($hFileRead)
  657.                 AdlibUnRegister("Progress")
  658.                 _WinAPI_LockDevice($dl, 0)
  659.                 Opt("GUIOnEventMode", 0)
  660.  
  661. ;~              If ProcessExists($pid) Then ProcessClose($pid)
  662.                 AdlibRegister("Chk_Drive_Status", 2000)
  663.                 GUISetState(@SW_DISABLE, $hGUI)
  664.                 If $abort Then
  665.                         sndPlaySound($BytePtr_snd_abort, $fuSound)
  666.                         $c = MsgBox(4, "Information", "Process aborted!" & @CRLF & @CRLF & _
  667.                                         "Delete incomplete iso file?", 0, $hGUI)
  668.                         If $c = 6 Then
  669.                                 If FileDelete($fn) Then
  670.                                         MsgBox(64, "Information", $fn & " has been properly deleted!", 10, $hGUI)
  671.                                 Else
  672.                                         ErrorMsgBox("Unable to delete " & $fn)
  673.                                 EndIf
  674.                         EndIf
  675.                 Else
  676.                         If TimerDiff($err) < 500 Then
  677.                                 FileDelete($fn)
  678.                                 ErrorMsgBox("An unexpected error has occured :-(")
  679.                         Else
  680.                                 $speed = Round((FileGetSize($fn) / 1024 ^ 2) / $sek, 2) ;mb/s
  681.                                 If BitAND(GUICtrlRead($idCB_MD5), $GUI_CHECKED) Then Create_MD5($fn)
  682.                                 If BitAND(GUICtrlRead($idCB_Eject), $GUI_CHECKED) Then
  683.                                         $dd = StringLeft($drvl, 1) & ":"
  684.                                         If Not _WinAPI_IsDoorOpen($dd) Then _WinAPI_EjectMedia($dd)
  685.                                 EndIf
  686.                                 If Not $auto_exit Then
  687.                                         sndPlaySound($BytePtr_snd_finished, $fuSound)
  688.                                         MsgBox(0, "Information", "ISO file has been created successfully in " & $td & " (" & $speed & " mb/s)", 30, $hGUI)
  689.                                 EndIf
  690.                         EndIf
  691.                 EndIf
  692.                 If $aero Then $oTB3.SetProgressState($hGUI, $TBPF_NOPROGRESS)
  693.                 $started = False
  694.                 GUISetState(@SW_ENABLE, $hGUI)
  695.                 _GUICtrlMenu_SetItemEnabled($hMenu, 6)
  696.                 _GUICtrlMenu_SetItemEnabled($hMenu, 8)
  697.                 _GUICtrlMenu_SetItemEnabled($hMenu, 9)
  698.                 _GUICtrlMenu_SetItemEnabled($hMenu, 10)
  699.                 GUICtrlSetState($idButton_Browse, $GUI_ENABLE)
  700. ;~              GUICtrlSetState($idCB_MD5, $GUI_ENABLE)
  701. ;~              GUICtrlSetState($idCB_Eject, $GUI_ENABLE)
  702.                 GUICtrlSetState($idCombo, $GUI_ENABLE)
  703.                 GUICtrlSetState($idButton_Create, $GUI_SHOW)
  704.                 GUICtrlSetState($idButton_Abort, $GUI_HIDE)
  705.                 GUICtrlSetData($idProgressbar, 0)
  706.                 WinSetTitle($hGUI, "", $title)
  707.         Else
  708.                 $error = @error
  709.                 GUISetState(@SW_DISABLE, $hGUI)
  710.                 $aDrives = DriveGetDrive("CDROM")
  711.                 If DriveGetLabel($aDrives[_GUICtrlComboBox_GetCurSel($hCombo) + 1]) = "Audio CD" Then
  712.                         ErrorMsgBox("Audio CD is not support yet!")
  713.                 Else
  714.                         If $error = 4 Then
  715.                                 ErrorMsgBox("HD/BD discs are not supported yet!)")
  716.                         Else
  717.                                 ErrorMsgBox("Maybe no media is inserted to the drive or not an ISO9660 CD/DVD with 2048 bytes/sector !?!")
  718.                         EndIf
  719.                 EndIf
  720.                 GUISetState(@SW_ENABLE, $hGUI)
  721.         EndIf
  722.         GUISetCursor($mo)
  723.         If $auto_exit Then _Exit()
  724. EndFunc   ;==>Create_ISO
  725.  
  726. Func Draw_DiscView($block)
  727.         _GDIPlus_GraphicsFillEllipse($hGraphic_Disc, -2 + $w2 + Cos($angel * $deg) * $radius, -2 + $h2 + Sin($angel * $deg) * $radius, 4, 4, $hBrush_Disc)
  728.         If Not $switch_view Then
  729.                 _GDIPlus_GraphicsDrawImageRectRect($hGraphic_Disc, $hImage_Disc, 65, 65, 44, 44, 65, 65, 44, 44)
  730.                 _GDIPlus_GraphicsDrawString($hGraphic_Disc, StringFormat("%.2f%s\n%.2f %s", $block * 2048 / 1024 ^ 2, " /", $MediaSize, " mb"), 66, 76, "Arial", 6)
  731.                 $hHBITMAP_Disc = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_Disk)
  732.                 _WinAPI_DeleteObject(GUICtrlSendMsg($id_DiscPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBITMAP_Disc))
  733.                 _WinAPI_DeleteObject($hHBITMAP_Disc)
  734.         EndIf
  735.         $angel += $s
  736.         If $angel > 359 Then
  737.                 $angel = 0
  738.                 $radius += 2.35
  739.                 $s -= 0.1
  740.         EndIf
  741. EndFunc   ;==>Draw_DiscView
  742.  
  743. Func Progress()
  744.         $sek = Int(TimerDiff($t) / 1000)
  745.         $td = Sec_2_Time_Format($sek)
  746.         WinSetTitle($hGUI, "", $title & "  -  Created: " & $po & " % / Elapsed: " & $td & " (" & StringFormat("%05.2f %s", Round($mbps, 2), "mb/s") & ")")
  747.         GUICtrlSetData($idProgressbar, $po) ;slow down the whole copy process
  748.         If $aero Then $oTB3.SetProgressValue($hGUI, $po, 100)
  749. EndFunc   ;==>Progress
  750.  
  751. Func Switch_View()
  752.         If $switch_view Then
  753.                 GUISetState(@SW_SHOW, $hGUI_Disc)
  754.                 $switch_view = False
  755.         Else
  756.                 GUISetState(@SW_HIDE, $hGUI_Disc)
  757.                 $switch_view = True
  758.         EndIf
  759. EndFunc   ;==>Switch_View
  760.  
  761. Func Abort_Ctrl()
  762.         $abort = True
  763. EndFunc   ;==>Abort_Ctrl
  764.  
  765. Func Create_MD5($file)
  766.         Local $aWinPos = WinGetPos($hGUI)
  767.         Local Const $sw = 350
  768.         Local Const $sh = 45
  769.         Local Const $x = $aWinPos[0] + $aWinPos[2] / 2 - $sw / 2
  770.         Local Const $y = $aWinPos[1] + $aWinPos[3] / 2 - $sh / 2
  771.         GUISetState(@SW_MINIMIZE, $hGUI)
  772.         Local Const $txt = "Creating MD5 checksum "
  773.         Local Const $hSplash = SplashTextOn("MD5 Creation Process (ESC to abort)", $txt, $sw, $sh, $x, $y, 4 + 16, "Times New Roman", 16, 400)
  774.         TrayTip("MD5 Checksum", "Started with creation of MD5 checksum...", 3, 1)
  775.         Local $i, $j = 0
  776.         Local $t = TimerInit()
  777.         Local $BufferSize = 0x100000
  778.         Local $State = _MD5Init()
  779.         Local $hFile = FileOpen($file, 16)
  780.         Local $f = Ceiling(FileGetSize($file) / $BufferSize)
  781.         Local $dll = DllOpen("user32.dll")
  782.         Local $esc = False
  783.         For $i = 1 To $f
  784.                 _MD5Input_Thread($State, FileRead($hFile, $BufferSize))
  785.                 If TimerDiff($t) > 500 Then
  786.                         ControlSetText($hSplash, "Creating MD5 checksum...", "Static1", $txt & "(" & StringFormat("%.2f", Round($i / $f * 100, 2)) & " %) " & _StringRepeat(".", Mod($j, 4)))
  787.                         $t = TimerInit()
  788.                         $j += 1
  789.                 EndIf
  790.                 If _IsPressed("1B", $dll) Then
  791.                         If WinActive($hSplash) Then
  792.                                 $esc = True
  793.                                 ExitLoop
  794.                         EndIf
  795.                 EndIf
  796.         Next
  797.         FileClose($hFile)
  798.         DllClose($dll)
  799.         If Not $esc Then
  800.                 Local $Hash = StringTrimLeft(_MD5Result($State), 2)
  801.                 Local $fname = " *" & StringRegExpReplace($file, ".*\\(.*)", "$1")
  802.                 Local $w = "# Generated on " & _Now() & " by " & $prg_name & @CRLF & @CRLF & $Hash & $fname
  803.                 $hFile = FileOpen($file & ".md5", 2)
  804.                 FileWrite($hFile, $w)
  805.                 FileClose($hFile)
  806.                 SplashOff()
  807.                 TrayTip("MD5 Checksum", "MD5 checksum creation has been finished!", 2, 1)
  808.                 GUISetState(@SW_RESTORE, $hGUI)
  809.                 If Not $auto_exit Then MsgBox(64, "Information", "MD5 checksum creation has been finished!" & @CRLF & @CRLF & "File saved to '" & $file & ".md5' successfully!", 20, $hGUI)
  810.         Else
  811.                 SplashOff()
  812.                 TrayTip("MD5 Checksum", "MD5 checksum creation has been aborted!", 2, 2)
  813.                 MsgBox(48 + 262144, "Warning", "MD5 checksum creation has been aborted!", 20)
  814.                 GUISetState(@SW_RESTORE, $hGUI)
  815.         EndIf
  816. EndFunc   ;==>Create_MD5
  817.  
  818. Func ErrorMsgBox($message, $timer = 30)
  819.         Return MsgBox(16, "Error", "An error has occured." & @CRLF & @CRLF & $message, $timer, $hGUI)
  820. EndFunc   ;==>ErrorMsgBox
  821.  
  822. Func Sec_2_Time_Format($time)
  823.         Local $sec = Mod($time, 60)
  824.         Local $min = Mod(Int($time / 60), 60)
  825.         Local $hr = Int($time / 60 ^ 2)
  826.         Return StringFormat("%02i:%02i:%02i", $hr, $min, $sec)
  827. EndFunc   ;==>Sec_2_Time_Format
  828.  
  829. Func Max($a, $b)
  830.         If $a > $b Then Return $a
  831.         Return $b
  832. EndFunc   ;==>Max
  833.  
  834. Func _WinAPI_CreateBitmapFromIcon($file, $iIndex = 0, $iW = 16, $iH = 16)
  835.         If FileExists($file) Then
  836.                 Local $aRet, $hIcon, $hBitmap
  837.                 Local $hDC, $hBackDC, $hBackObj
  838.  
  839.                 $aRet = DllCall("shell32", "long", "ExtractAssociatedIcon", "int", 0, "str", $file, "word*", $iIndex)
  840.                 If @error Then Return SetError(@error, @extended, 0)
  841.                 $hIcon = $aRet[0]
  842.  
  843.                 $hDC = _WinAPI_GetDC(0)
  844.                 $hBackDC = _WinAPI_CreateCompatibleDC($hDC)
  845.                 $hBitmap = _WinAPI_CreateSolidBitmap(0, _WinAPI_GetSysColor($COLOR_MENU), $iW, $iH)
  846.                 $hBackObj = _WinAPI_SelectObject($hBackDC, $hBitmap)
  847.                 _WinAPI_DrawIconEx($hBackDC, 0, 0, $hIcon, $iW, $iH, 0, 0, 3)
  848.                 _WinAPI_DestroyIcon($hIcon)
  849.  
  850.                 _WinAPI_SelectObject($hBackDC, $hBackObj)
  851.                 _WinAPI_ReleaseDC(0, $hDC)
  852.                 _WinAPI_DeleteDC($hBackDC)
  853.                 Return $hBitmap
  854.         Else
  855.                 Return SetError(1, 0, 0)
  856.         EndIf
  857. EndFunc   ;==>_WinAPI_CreateBitmapFromIcon
  858.  
  859. Func Change_Background_Pic($new_pic)
  860.         Local Const $hImage = _GDIPlus_ImageLoadFromFile($new_pic)
  861.         If Not $hImage Then Return SetError(1, 0, 0)
  862.         Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $w, "int", $h, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  863.         Local Const $hBmp = $aResult[6]
  864.         Local Const $hCtx = _GDIPlus_ImageGetGraphicsContext($hBmp)
  865.         DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtx, "int", 7)
  866.         _GDIPlus_GraphicsDrawImageRect($hCtx, $hImage, 0, 0, $w, $h)
  867.         Local Const $hHBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp)
  868.         _WinAPI_DeleteObject(GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBMP))
  869.         _WinAPI_DeleteObject($hHBMP)
  870.         _GDIPlus_ImageDispose($hImage)
  871.         _GDIPlus_BitmapDispose($hBmp)
  872.         _GDIPlus_GraphicsDispose($hCtx)
  873.         _WinAPI_RedrawWindow($hGUI)
  874.         Return 1
  875. EndFunc   ;==>Change_Background_Pic
  876.  
  877. Func Check4Update()
  878.         Local $iRead = InetRead("http://www.autoitscript.com/forum/index.php?showtopic=129859")
  879.         If @error Then Return MsgBox(16, "Error", "Unable to check online! Behind a firewall or proxy?", 30, $hGUI)
  880.         Local $aRegEx = StringRegExp(BinaryToString($iRead), "(?i)<title>ISO Creator\s*(v.+beta)\s*", 1)
  881.         If Not IsArray($aRegEx) Or @error Then Return MsgBox(16, "Error", "Unable to parse line!", 30, $hGUI)
  882.         Local $iVer = $aRegEx[0]
  883.         If $ver = "ISO Creator " & $iVer Then
  884.                 MsgBox(64, "Update Information", "Web version: " & $iVer & @LF & @LF & "Your version is up-to-date! :-)", 15, $hGUI)
  885.         Else
  886.                 Local $iChk = MsgBox(32 + 4 + 256, "Update Information", "Web version: " & $iVer & @LF & @LF & "Found a newer version. Visit web site?", 30, $hGUI)
  887.                 If $iChk = 6 Then ShellExecute("http://www.autoitscript.com/forum/index.php?showtopic=129859")
  888.         EndIf
  889.         WinActivate($hGUI)
  890. EndFunc   ;==>Check4Update
  891.  
  892. Func _Exit($cmdl = False)
  893.         If Not $cmdl Then
  894.                 $ByteStruct_snd_abort = 0
  895.                 $ByteStruct_snd_finished = 0
  896.                 $binCapture_snd_finished = 0
  897.                 $binCapture_snd_abort = 0
  898.                 _GDIPlus_BitmapDispose($hImage_Disc)
  899.                 _GDIPlus_BitmapDispose($hBitmap_Disk)
  900.                 _GDIPlus_BrushDispose($hBrush_Disc)
  901.                 _GDIPlus_GraphicsDispose($hGraphic_Disc)
  902.                 _WinAPI_DeleteObject($hBmp_About)
  903.                 _WinAPI_DeleteObject($hBmp_ChangeBG)
  904.                 _WinAPI_DeleteObject($hBmp_Update)
  905.                 _WinAPI_DeleteObject($hBmp_MD5)
  906.                 _WinAPI_DeleteObject($hBMP_VisitWeb)
  907.                 _WinAPI_DeleteObject($hBmp_EjectMedia)
  908.                 _WinAPI_DeleteObject($hBmp_LoadMedia)
  909.                 GUISetCursor($mco, 1, $hGUI)
  910.                 AdlibUnRegister("Chk_Drive_Status")
  911.  
  912.                 GUIRegisterMsg(0x0111, "")
  913.                 GUIRegisterMsg(0x0112, "")
  914.                 GUIRegisterMsg(0x0133, "")
  915.                 GUIRegisterMsg(0x0046, "")
  916.                 GUIRegisterMsg(0x007B, "")
  917.                 GUIDelete($hGUI_Disc)
  918.         EndIf
  919.         _WinAPI_DeleteObject($hBitmap)
  920.         DllCall("Gdi32.dll", "BOOL", "DeleteObject", "Handle", $hBrush)
  921.         If $aero Then
  922.                 $oTB3.SetProgressState($hGUI, $TBPF_NOPROGRESS)
  923.                 $oTB3 = 0
  924.                 _AutoItObject_Shutdown()
  925.         EndIf
  926.         DllClose($hUser32DLL)
  927.         _GDIPlus_Shutdown()
  928.         If Not $auto_exit Then _WinAPI_AnimateWindow($hGUI, BitOR($AW_BLEND, $AW_HIDE), 750)
  929.         GUIDelete($hGUI)
  930.         Exit
  931. EndFunc   ;==>_Exit
  932.  
  933. ;======================================================================================
  934. ; Function Name:                Load_BMP_From_Mem
  935. ; Description:                          Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
  936. ;
  937. ; Parameters:                           $bImage:    the binary string which contains any valid image which is supported by GDI+
  938. ; Optional:                             $hHBITMAP:  if false a bitmap will be created, if true a hbitmap will be created
  939. ;
  940. ; Remark:                               hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
  941. ;                                                       Don't forget _GDIPlus_Startup() and _GDIPlus_Shutdown()
  942. ;
  943. ; Requirement(s):               GDIPlus.au3, Memory.au3 and _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
  944. ; Return Value(s):              Success: handle to bitmap (GDI+ bitmap format) or hbitmap (WinAPI bitmap format),
  945. ;                                                       Error: 0
  946. ; Error codes:                  1: $bImage is not a binary string
  947. ;                                                       2: unable to create stream on HGlobal
  948. ;                                                       3: unable to create bitmap from stream
  949. ;
  950. ; Author(s):                            UEZ
  951. ; Additional Code:      thanks to progandy for the MemGlobalAlloc and tVARIANT lines and
  952. ;                                                       Yashied for _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
  953. ; Version:                              v0.98 Build 2012-08-29 Beta
  954. ;=======================================================================================
  955. Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
  956.         If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
  957.         Local $aResult
  958.         Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
  959.     Local Const $len = BinaryLen($memBitmap) ;get length of image
  960.     Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
  961.     Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
  962.     Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
  963.     DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
  964.     _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
  965.     $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
  966.         If @error Then Return SetError(2, 0, 0)
  967.         Local Const $hStream = $aResult[3]
  968.     $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
  969.         If @error Then Return SetError(3, 0, 0)
  970.         Local Const $hBitmap = $aResult[2]
  971.     Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
  972.     DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
  973.                                                                                    "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
  974.     $tMem = 0
  975.         $tVARIANT = 0
  976.     If $hHBITMAP Then
  977.         Local Const $hHBmp = _WinAPI_BitmapCreateDIBFromBitmap($hBitmap)
  978.         _GDIPlus_BitmapDispose($hBitmap)
  979.         Return $hHBmp
  980.     EndIf
  981.     Return $hBitmap
  982. EndFunc   ;==>Load_BMP_From_Mem
  983.  
  984. Func _WinAPI_BitmapCreateDIBFromBitmap($hBitmap) ;create 32-bit bitmap v5 (alpha channel supported)
  985.     Local $tBIHDR, $aRet, $tData, $pBits, $hResult = 0
  986.     $aRet = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
  987.     If (@error) Or ($aRet[0]) Then Return 0
  988.     $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $aRet[2], $aRet[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
  989.     $pBits = DllStructGetData($tData, 'Scan0')
  990.     If Not $pBits Then Return 0
  991.     $tBIHDR = DllStructCreate(  'dword bV5Size;long bV5Width;long bV5Height;word bV5Planes;word bV5BitCount;dword bV5Compression;' & _ ;http://msdn.microsoft.com/en-us/library/windows/desktop/dd183381(v=vs.85).aspx
  992.                                                                                                                                 'dword bV5SizeImage;long bV5XPelsPerMeter;long bV5YPelsPerMeter;dword bV5ClrUsed;dword bV5ClrImportant;'  & _
  993.                                                                                                                                 'dword bV5RedMask;dword bV5GreenMask;dword bV5BlueMask;dword bV5AlphaMask;dword bV5CSType;' & _
  994.                                                                                                                                 'int bV5Endpoints[3];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;' & _
  995.                                                                                                                                 'dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved')
  996.     DllStructSetData($tBIHDR, 'bV5Size', DllStructGetSize($tBIHDR))
  997.     DllStructSetData($tBIHDR, 'bV5Width', $aRet[2])
  998.     DllStructSetData($tBIHDR, 'bV5Height', $aRet[3])
  999.     DllStructSetData($tBIHDR, 'bV5Planes', 1)
  1000.     DllStructSetData($tBIHDR, 'bV5BitCount', 32)
  1001.     DllStructSetData($tBIHDR, 'bV5Compression', 0) ; $BI_BITFIELDS = 3, $BI_RGB = 0, $BI_RLE8 = 1, $BI_RLE4 = 2, $RGBA = 0x41424752
  1002.         DllStructSetData($tBIHDR, 'bV5SizeImage', $aRet[3] * DllStructGetData($tData, 'Stride'))
  1003.         DllStructSetData($tBIHDR, 'bV5AlphaMask', 0xFF000000)
  1004.         DllStructSetData($tBIHDR, 'bV5RedMask', 0x00FF0000)
  1005.         DllStructSetData($tBIHDR, 'bV5GreenMask', 0x0000FF00)
  1006.         DllStructSetData($tBIHDR, 'bV5BlueMask', 0x000000FF)
  1007.         DllStructSetData($tBIHDR, 'bV5CSType', 2) ; LCS_WINDOWS_COLOR_SPACE = 2
  1008.         DllStructSetData($tBIHDR, 'bV5Intent', 4) ; $LCS_GM_IMA
  1009.     $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
  1010.     If (Not @error) And ($hResult[0]) Then
  1011.         DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $aRet[2] * $aRet[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
  1012.         $hResult = $hResult[0]
  1013.     Else
  1014.         $hResult = 0
  1015.     EndIf
  1016.     _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
  1017.         $tData = 0
  1018.         $tBIHDR = 0
  1019.     Return $hResult
  1020. EndFunc   ;==>_WinAPI_BitmapCreateDIBFromBitmap
  1021.  
  1022. Func CheckDiskPos()
  1023. ;~      Local $stWINDOWPOS = DllStructCreate("int[6];uint", $lParam)
  1024. ;~      Local $iX = DllStructGetData($stWINDOWPOS, 1, 3)
  1025.         Local $aPos = WinGetPos($hGUI)
  1026.         Local $iX = $aPos[0]
  1027.         If Not @error Then
  1028.                 If $iX + $w + $disc_w + $wFrame > $aFullScreen[2] - Abs($aFullScreen[0]) Then WinMove($hGUI_Disc, "", $aPos[0] - $wFrame - $disc_w + $wFrameF, $aPos[1] + $wTitle)
  1029.                 If $iX - $disc_w - $wFrame < $aFullScreen[0] Then WinMove($hGUI_Disc, "", $aPos[0] + $w + $wFrame + $wFrameF, $aPos[1] + $wTitle)
  1030.         EndIf
  1031. ;~     Local $iY = DllStructGetData($stWINDOWPOS, 1, 4)
  1032. ;~     Local $iW = DllStructGetData($stWINDOWPOS, 1, 5)
  1033. ;~     Local $iH = DllStructGetData($stWINDOWPOS, 1, 6)
  1034. ;~      $stWINDOWPOS = 0
  1035. EndFunc
  1036.  
  1037. #region functions for base64 string decompression and decoding
  1038. Func _Base64Decode($input_string)
  1039.         Local $struct = DllStructCreate("int")
  1040.         Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
  1041.         If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
  1042.         Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
  1043.         $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
  1044.         If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
  1045.         Return DllStructGetData($a, 1)
  1046. EndFunc   ;==>_Base64Decode
  1047.  
  1048. Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000)
  1049.         Local $tBuffer, $Ret
  1050.         $tOutput = 0
  1051.         $tBuffer = DllStructCreate('byte[' & $iBufferSize & ']')
  1052.         If @error Then Return SetError(1, 0, 0)
  1053.         $Ret = DllCall('ntdll.dll', 'uint', 'RtlDecompressBuffer', 'ushort', 0x0002, 'ptr', DllStructGetPtr($tBuffer), 'ulong', $iBufferSize, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ulong*', 0)
  1054.         If @error Then Return SetError(2, 0, 0)
  1055.         If $Ret[0] Then Return SetError(3, $Ret[0], 0)
  1056.         $tOutput = DllStructCreate('byte[' & $Ret[6] & ']')
  1057.         If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $Ret[6]) Then
  1058.                 $tOutput = 0
  1059.                 Return SetError(4, 0, 0)
  1060.         EndIf
  1061.         Return $Ret[6]
  1062. EndFunc   ;==>_WinAPI_LZNTDecompress
  1063.  
  1064. Func _WinAPI_MoveMemory($pDestination, $pSource, $iLenght)
  1065.         DllCall('ntdll.dll', 'none', 'RtlMoveMemory', 'ptr', $pDestination, 'ptr', $pSource, 'ulong_ptr', $iLenght)
  1066.         If @error Then Return SetError(5, 0, 0)
  1067.         Return 1
  1068. EndFunc   ;==>_WinAPI_MoveMemory
  1069. #endregion
  1070.  
  1071. ;http://msdn.microsoft.com/en-us/library/aa910369.aspx WAVE
  1072. ;http://msdn.microsoft.com/en-us/library/aa909803.aspx
  1073. #region play wave from memory by  wolf9228
  1074. Func sndPlaySound($lpszSound, $fuSound)
  1075.         Local $Type = "wstr", $aRes
  1076.         If IsPtr($lpszSound) Then $Type = "ptr"
  1077.         $aRes = DllCall("winmm.dll", "int", "sndPlaySound", $Type, $lpszSound, "dword", $fuSound)
  1078.         If @error Then Return SetError(1, 0, 0)
  1079.         Return $aRes[0]
  1080. EndFunc   ;==>sndPlaySound
  1081. #endregion play wave from memory by  wolf9228
  1082.  
  1083. #region Windows Message Code Section
  1084. Func WM_WINDOWPOSCHANGING($hWnd, $iMsg, $wParam, $lParam)
  1085.         #forceref $hWnd, $iMsg, $wParam, $lParam
  1086.         If $hWnd <> $hGUI Then Return "GUI_RUNDEFMSG"
  1087.         CheckDiskPos()
  1088.         Return "GUI_RUNDEFMSG"
  1089. EndFunc   ;==>WM_WINDOWPOSCHANGING
  1090.  
  1091. Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
  1092.         #forceref $Msg
  1093.         Local $hWndFrom, $iIDFrom, $iCode, $d
  1094.         $hWndFrom = $lParam
  1095.         $iIDFrom = BitAND($wParam, 0xFFFF)
  1096.         $iCode = BitShift($wParam, 16)
  1097.         Switch $hWndFrom
  1098.                 Case $hCombo
  1099.                         Switch $iCode
  1100.                                 Case $CBN_SELENDOK, $CBN_CLOSEUP
  1101.                                         ControlFocus($hGUI, '', $idButton_Browse)
  1102.                                         $combo_min = True
  1103.                                 Case $CBN_DROPDOWN
  1104.                                         $combo_min = False
  1105.                         EndSwitch
  1106.         EndSwitch
  1107.  
  1108.         Switch $wParam
  1109.                 Case $idEjectMedia
  1110.                         $d = StringLeft(GUICtrlRead($idCombo), 1) & ":"
  1111.                         If Not _WinAPI_IsDoorOpen($d) Then _WinAPI_EjectMedia($d)
  1112.  
  1113.                 Case $idLoadMedia
  1114.                         $d = StringLeft(GUICtrlRead($idCombo), 1) & ":"
  1115.                         If _WinAPI_IsDoorOpen($d) Then _WinAPI_LoadMedia($d)
  1116.         EndSwitch
  1117.  
  1118.         Switch $iIDFrom
  1119.                 Case $idInput_Filename
  1120.                         DllCall('user32.dll', 'int', 'HideCaret', 'hwnd', $hWnd)
  1121.                         DllCall('user32.dll', 'int', 'DestroyCaret')
  1122.                         If Not $fs Then
  1123.                                 If StringLen(GUICtrlRead($idInput_Filename)) < 2 Then GUICtrlSetData($idInput_Filename, "")
  1124.                         Else
  1125.                                 GUICtrlSetData($idInput_Filename, $saveas)
  1126.                         EndIf
  1127.         EndSwitch
  1128.  
  1129.         Return "GUI_RUNDEFMSG"
  1130. EndFunc   ;==>WM_COMMAND
  1131.  
  1132. Func WM_CONTEXTMENU($hWnd, $Msg, $wParam, $lParam)
  1133.         #forceref $hWnd, $Msg, $wParam, $lParam
  1134.         Local $mi = GUIGetCursorInfo()
  1135.         If IsArray($mi) Then
  1136.                 If $mi[4] = $idCombo And Not $started Then
  1137.                         _GUICtrlMenu_TrackPopupMenu($hQMenu, $hWnd)
  1138.                         Return True
  1139.                 EndIf
  1140.         EndIf
  1141.         Return "GUI_RUNDEFMSG"
  1142. EndFunc   ;==>WM_CONTEXTMENU
  1143.  
  1144. Func WM_SYSCOMMAND($hGUI, $Msg, $wParam, $lParam)
  1145.         #forceref $hGUI, $Msg, $lParam
  1146.         Switch BitAND($wParam, 0xFFFF)
  1147.                 Case $idAbout
  1148.                         GUISetState(@SW_DISABLE, $hGUI)
  1149.                         MsgBox(64, "About", $prg_name & $build & @LF & @LF & _
  1150.                                         "Credits:" & @LF & _
  1151.                                         "Main code by UEZ using AutoIt ;-)" & @LF & _
  1152.                                         "MD5 checksum code by Ward" & @LF & _
  1153.                                         "AutoItObject by AutoItObject-Team" & @LF & _
  1154.                                         "WinAPIEx by Yashied" & @LF & @LF & _
  1155.                                         "Thanks to smashly for pointing me to right direction ;-)" & @LF & _
  1156.                                         "And smartee for his efforts on this little project :-)", 90, $hGUI)
  1157.                         GUISetState(@SW_ENABLE, $hGUI)
  1158.  
  1159.                 Case $idChangeBGPic
  1160.                         Local $chk_bg = MsgBox(3 + 48 + 4096, "Setting", "Change default background picture?" & @CRLF & _
  1161.                                         "(best resolution is 615x157)" & @CRLF & @CRLF & _
  1162.                                         "Yes = Browse and select a new picture" & @CRLF & _
  1163.                                         "No = Reset to default picture" & @CRLF & _
  1164.                                         "Cancel = Cancel this operation", 0, $hGUI)
  1165.                         Switch $chk_bg
  1166.                                 Case 6
  1167.                                         Local Const $new_pic = FileOpenDialog("Select an image (best dimension: 615x157)", "", "Images (*.jpg;*png;*.bmp;*.gif)", 3, "", $hGUI)
  1168.                                         If @error Then Return 0
  1169.                                         Local $Result = Change_Background_Pic($new_pic)
  1170.                                         If $Result Then IniWrite($ini_file, "Settings", "Background_Pic", $new_pic)
  1171.                                         ControlFocus($hGUI, "", $idButton_Browse)
  1172.                                         Return 1
  1173.                                 Case 7
  1174.                                         Local Const $hHBITMAP = Load_BMP_From_Mem(BackgroundPic(), True)
  1175.                                         _WinAPI_DeleteObject(GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBITMAP))
  1176.                                         _WinAPI_DeleteObject($hHBITMAP)
  1177.                                         _WinAPI_RedrawWindow($hGUI)
  1178.                                         IniWrite($ini_file, "Settings", "Background_Pic", "0")
  1179.                         EndSwitch
  1180.                 Case $idMD5
  1181.                         Local $file_MD5 = FileOpenDialog("Select an ISO to create MD5 checksum", "", "ISO (*.iso)", 11, "", $hGUI)
  1182.                         If Not @error Then Create_MD5($file_MD5)
  1183.                 Case $idUpd
  1184.                         Check4Update()
  1185.                 Case $idVisitWeb
  1186.                         ShellExecute("http://www.autoitscript.com/forum/index.php?showtopic=129859")
  1187.         EndSwitch
  1188.         Return "GUI_RUNDEFMSG"
  1189. EndFunc   ;==>WM_SYSCOMMAND
  1190.  
  1191. Func WM_CTLCOLOREDIT($hGUI, $Msg, $wParam, $lParam)
  1192.         #forceref $hGUI, $Msg
  1193.         If $lParam = $hInput_Filename Then
  1194.                 If Not $started Then GUISetCursor(2, 1, $hGUI)
  1195.                 DllCall("Gdi32.dll", "uint", "SetTextColor", "handle", $wParam, "uint", $idInput_Filename_Color)
  1196.                 DllCall("Gdi32.dll", "int", "SetBkMode", "handle", $wParam, "int", 1)
  1197.                 Return $hBrush
  1198.         EndIf
  1199.         Return "GUI_RUNDEFMSG"
  1200. EndFunc   ;==>WM_CTLCOLOREDIT
  1201. #endregion Windows Message Code Section
  1202.  
  1203. #region WinAPIEx functions
  1204. ; #FUNCTION# ====================================================================================================================
  1205. ; Name...........: _WinAPI_IsDoorOpen
  1206. ; Description....: Checks if a CD (DVD) tray is open.
  1207. ; Syntax.........: _WinAPI_IsDoorOpen ( $sDrive )
  1208. ; Parameters.....: $sDrive - The drive letter of the CD tray to check, in the format D:, E:, etc.
  1209. ; Return values..: Success - 1 - CD (DVD) tray is open.
  1210. ;                            0 - Otherwise.
  1211. ;                  Failure - 0 and sets the @error flag to non-zero.
  1212. ; Author.........: G.Sandler (CreatoR)
  1213. ; Modified.......: Yashied
  1214. ; Remarks........: None
  1215. ; Related........:
  1216. ; Link...........: @@MsdnLink@@ IOCTL_SCSI_PASS_THROUGH
  1217. ; Example........: Yes
  1218. ; ===============================================================================================================================
  1219. Func _WinAPI_IsDoorOpen($sDrive)
  1220.         If @AutoItX64 Then Return SetError(1, 0, 0)
  1221.         Local $hFile = _WinAPI_CreateFileEx('\\.\' & $sDrive, 3, 0xC0000000, 0x03)
  1222.         If Not $hFile Then Return SetError(1, 0, 0)
  1223.         Local $tSPT = DllStructCreate('ushort Length;byte ScsiStatus;byte PathId;byte TargetId;byte Lun;byte CdbLength;byte SenseInfoLength;byte DataIn;byte Alignment[3];ulong DataTransferLength;ulong TimeOutValue;ulong_ptr DataBufferOffset;ulong SenseInfoOffset;byte Cdb[16];byte Hdr[8]')
  1224.         Local $tCDB = DllStructCreate('byte;byte;byte[6];byte[2];byte;byte;byte[4]', DllStructGetPtr($tSPT, 'Cdb'))
  1225.         Local $tHDR = DllStructCreate('byte;byte;byte[3];byte;byte[2]', DllStructGetPtr($tSPT, 'Hdr'))
  1226.         Local $Size = DllStructGetSize($tSPT) - 8
  1227.         DllStructSetData($tSPT, 'Length', $Size)
  1228.         DllStructSetData($tSPT, 'ScsiStatus', 0)
  1229.         DllStructSetData($tSPT, 'PathId', 0)
  1230.         DllStructSetData($tSPT, 'TargetId', 0)
  1231.         DllStructSetData($tSPT, 'Lun', 0)
  1232.         DllStructSetData($tSPT, 'CdbLength', 12)
  1233.         DllStructSetData($tSPT, 'SenseInfoLength', 0)
  1234.         DllStructSetData($tSPT, 'DataIn', 1)
  1235.         DllStructSetData($tSPT, 'DataTransferLength', 8)
  1236.         DllStructSetData($tSPT, 'TimeOutValue', 86400)
  1237.         DllStructSetData($tSPT, 'DataBufferOffset', $Size)
  1238.         DllStructSetData($tSPT, 'SenseInfoOffset', 0)
  1239.         DllStructSetData($tCDB, 1, 0xBD)
  1240.         DllStructSetData($tCDB, 2, 0)
  1241.         DllStructSetData($tCDB, 4, 0, 1)
  1242.         DllStructSetData($tCDB, 4, 8, 2)
  1243.         DllStructSetData($tCDB, 5, 0)
  1244.         DllStructSetData($tCDB, 6, 0)
  1245.         Local $Ret = DllCall('kernel32.dll', 'int', 'DeviceIoControl', 'ptr', $hFile, 'dword', $IOCTL_SCSI_PASS_THROUGH, 'ptr', DllStructGetPtr($tSPT), 'dword', $Size, 'ptr', DllStructGetPtr($tSPT), 'dword', DllStructGetSize($tSPT), 'dword*', 0, 'ptr', 0)
  1246.         If (@error) Or (Not $Ret[0]) Then $Ret = 0
  1247.         _WinAPI_CloseHandle($hFile)
  1248.         If Not IsArray($Ret) Then Return SetError(2, 0, 0)
  1249.         Return Number(BitAND(DllStructGetData($tHDR, 2), 0x10) = 0x10)
  1250. EndFunc   ;==>_WinAPI_IsDoorOpen
  1251.  
  1252. ; #FUNCTION# ====================================================================================================================
  1253. ; Name...........: _WinAPI_LoadMedia
  1254. ; Description....: Loads media into a device.
  1255. ; Syntax.........: _WinAPI_LoadMedia ( $sDrive )
  1256. ; Parameters.....: $sDrive - The drive letter of the CD tray to load, in the format D:, E:, etc.
  1257. ; Return values..: Success - 1.
  1258. ;                  Failure - 0 and sets the @error flag to non-zero.
  1259. ; Author.........: Yashied
  1260. ; Modified.......:
  1261. ; Remarks........: None
  1262. ; Related........:
  1263. ; Link...........: @@MsdnLink@@ IOCTL_STORAGE_LOAD_MEDIA
  1264. ; Example........: Yes
  1265. ; ===============================================================================================================================
  1266. Func _WinAPI_LoadMedia($sDrive)
  1267.         Local $hFile = _WinAPI_CreateFileEx('\\.\' & $sDrive, 3, 0x80000000, 0x01)
  1268.         If Not $hFile Then Return SetError(1, 0, 0)
  1269.         Local $Ret = DllCall('kernel32.dll', 'int', 'DeviceIoControl', 'ptr', $hFile, 'dword', $IOCTL_STORAGE_LOAD_MEDIA, 'ptr', 0, 'dword', 0, 'ptr', 0, 'dword', 0, 'dword*', 0, 'ptr', 0)
  1270.         If (@error) Or (Not $Ret[0]) Then $Ret = 0
  1271.         _WinAPI_CloseHandle($hFile)
  1272.         If Not IsArray($Ret) Then Return SetError(2, 0, 0)
  1273.         Return $Ret[0]
  1274. EndFunc   ;==>_WinAPI_LoadMedia
  1275.  
  1276. ; #FUNCTION# ====================================================================================================================
  1277. ; Name...........: _WinAPI_EjectMedia
  1278. ; Description....: Ejects media from a device.
  1279. ; Syntax.........: _WinAPI_EjectMedia ( $sDrive )
  1280. ; Parameters.....: $sDrive - The drive letter of the CD tray to eject, in the format D:, E:, etc.
  1281. ; Return values..: Success - 1.
  1282. ;                  Failure - 0 and sets the @error flag to non-zero.
  1283. ; Author.........: Yashied
  1284. ; Modified.......:
  1285. ; Remarks........: None
  1286. ; Related........:
  1287. ; Link...........: @@MsdnLink@@ IOCTL_STORAGE_EJECT_MEDIA
  1288. ; Example........: Yes
  1289. ; ===============================================================================================================================
  1290. Func _WinAPI_EjectMedia($sDrive)
  1291.         Local $hFile = _WinAPI_CreateFileEx('\\.\' & $sDrive, 3, 0x80000000, 0x01)
  1292.         If Not $hFile Then Return SetError(1, 0, 0)
  1293.         Local $Ret = DllCall('kernel32.dll', 'int', 'DeviceIoControl', 'ptr', $hFile, 'dword', $IOCTL_STORAGE_EJECT_MEDIA, 'ptr', 0, 'dword', 0, 'ptr', 0, 'dword', 0, 'dword*', 0, 'ptr', 0)
  1294.         If (@error) Or (Not $Ret[0]) Then $Ret = 0
  1295.         _WinAPI_CloseHandle($hFile)
  1296.         If Not IsArray($Ret) Then Return SetError(2, 0, 0)
  1297.         Return 1
  1298. EndFunc   ;==>_WinAPI_EjectMedia
  1299.  
  1300. ; #FUNCTION# ====================================================================================================================
  1301. ; Name...........: _WinAPI_GetCDType
  1302. ; Description....: Retrieves a type of the media which is loaded into a specified CD-ROM device.
  1303. ; Syntax.........: _WinAPI_GetCDType ( $sDrive )
  1304. ; Parameters.....: $sDrive - The drive letter of the CD tray to retrieve information, in the format D:, E:, etc.
  1305. ; Return values..: Success - The type of the media, it must be one of the following values.
  1306. ;
  1307. ;                            0x0000 - No media
  1308. ;                            0x0008 - CD-ROM
  1309. ;                            0x0009 - CD-R
  1310. ;                            0x000A - CD-RW
  1311. ;                            0x0010 - DVD-ROM
  1312. ;                            0x0011 - DVD-R Sequential Recording
  1313. ;                            0x0012 - DVD-RAM
  1314. ;                            0x0013 - DVD-RW Restricted Overwrite
  1315. ;                            0x0014 - DVD-RW Sequential Recording
  1316. ;                            0x0015 - DVD-R Dual Layer
  1317. ;                            0x0016 - DVD-R Dual Layer Jump Recording
  1318. ;                            0x0017 - DVD-RW Dual Layer
  1319. ;                            0x0018 - DVD-Download Disc Recording
  1320. ;                            0x001A - DVD+RW
  1321. ;                            0x001B - DVD+R
  1322. ;                            0x0040 - BD-ROM
  1323. ;                            0x0041 - BD-R Sequential Recording Mode (SRM)
  1324. ;                            0x0042 - BD-R Random Recording Mode (RRM)
  1325. ;                            0x0043 - BD-RE
  1326. ;                            0x0050 - HD DVD-ROM
  1327. ;                            0x0051 - HD DVD-R
  1328. ;                            0x0052 - HD DVD-RAM
  1329. ;                            0x0053 - HD DVD-RW
  1330. ;                            0x0058 - HD DVD-R Dual Layer
  1331. ;                            0x005A - HD DVD-RW Dual Layer
  1332. ;                            0xFFFF - Unknown
  1333. ;
  1334. ;                  Failure - 0 and sets the @error flag to non-zero.
  1335. ; Author.........: Yashied
  1336. ; Modified.......:
  1337. ; Remarks........: None
  1338. ; Related........:
  1339. ; Link...........: @@MsdnLink@@ IOCTL_SCSI_PASS_THROUGH
  1340. ; Example........: Yes
  1341. ; ===============================================================================================================================
  1342. Func _WinAPI_GetCDType($sDrive)
  1343.         If @AutoItX64 Then Return SetError(1, 0, 0)
  1344.         Local $hFile = _WinAPI_CreateFileEx('\\.\' & $sDrive, 3, 0xC0000000, 0x03)
  1345.         If Not $hFile Then Return SetError(1, 0, 0)
  1346.         Local $tSPT = DllStructCreate('ushort Length;byte ScsiStatus;byte PathId;byte TargetId;byte Lun;byte CdbLength;byte SenseInfoLength;byte DataIn;byte Alignment[3];ulong DataTransferLength;ulong TimeOutValue;ulong_ptr DataBufferOffset;ulong SenseInfoOffset;byte Cdb[16];byte Hdr[8]')
  1347.         Local $tCDB = DllStructCreate('byte;byte;byte[2];byte[3];byte[2];byte;byte[2];byte[4]', DllStructGetPtr($tSPT, 'Cdb'))
  1348.         Local $tHDR = DllStructCreate('byte[4];byte;byte;byte[2]', DllStructGetPtr($tSPT, 'Hdr'))
  1349.         Local $Size = DllStructGetSize($tSPT) - 8
  1350.         DllStructSetData($tSPT, 'Length', $Size)
  1351.         DllStructSetData($tSPT, 'ScsiStatus', 0)
  1352.         DllStructSetData($tSPT, 'PathId', 0)
  1353.         DllStructSetData($tSPT, 'TargetId', 0)
  1354.         DllStructSetData($tSPT, 'Lun', 0)
  1355.         DllStructSetData($tSPT, 'CdbLength', 12)
  1356.         DllStructSetData($tSPT, 'SenseInfoLength', 0)
  1357.         DllStructSetData($tSPT, 'DataIn', 1)
  1358.         DllStructSetData($tSPT, 'DataTransferLength', 8)
  1359.         DllStructSetData($tSPT, 'TimeOutValue', 86400)
  1360.         DllStructSetData($tSPT, 'DataBufferOffset', $Size)
  1361.         DllStructSetData($tSPT, 'SenseInfoOffset', 0)
  1362.         DllStructSetData($tCDB, 1, 0x46)
  1363.         DllStructSetData($tCDB, 2, 0)
  1364.         DllStructSetData($tCDB, 3, 0, 1)
  1365.         DllStructSetData($tCDB, 3, 0, 2)
  1366.         DllStructSetData($tCDB, 5, 0, 1)
  1367.         DllStructSetData($tCDB, 5, 8, 2)
  1368.         DllStructSetData($tCDB, 6, 0)
  1369.         DllStructSetData($tCDB, 7, 0, 1)
  1370.         DllStructSetData($tCDB, 7, 0, 2)
  1371.         Local $Ret = DllCall('kernel32.dll', 'int', 'DeviceIoControl', 'ptr', $hFile, 'dword', $IOCTL_SCSI_PASS_THROUGH, 'ptr', DllStructGetPtr($tSPT), 'dword', $Size, 'ptr', DllStructGetPtr($tSPT), 'dword', DllStructGetSize($tSPT), 'dword*', 0, 'ptr', 0)
  1372.         If (@error) Or (Not $Ret[0]) Then $Ret = 0
  1373.         _WinAPI_CloseHandle($hFile)
  1374.         If Not IsArray($Ret) Then Return SetError(2, 0, 0)
  1375.         Return BitOR(BitShift(DllStructGetData($tHDR, 4, 1), -8), DllStructGetData($tHDR, 4, 2))
  1376. EndFunc   ;==>_WinAPI_GetCDType
  1377.  
  1378. ; #FUNCTION# ====================================================================================================================
  1379. ; Name...........: _WinAPI_LockDevice
  1380. ; Description....: Enables or disables the mechanism that ejects media, for those devices possessing that locking capability.
  1381. ; Syntax.........: _WinAPI_LockDevice ( $sDrive, $fLock )
  1382. ; Parameters.....: $sDrive - The drive letter of the device to enable or disable, in the format D:, E:, etc.
  1383. ;                  $fLock  - Specifies whether the device should be disabled, valid values:
  1384. ;                  |TRUE   - The device is disabled.
  1385. ;                  |FALSE  - The device is enabled.
  1386. ; Return values..: Success - 1.
  1387. ;                  Failure - 0 and sets the @error flag to non-zero.
  1388. ; Author.........: Psandu.ro
  1389. ; Modified.......: Yashied
  1390. ; Remarks........: This function is valid only for devices that support removable media.
  1391. ; Related........:
  1392. ; Link...........: @@MsdnLink@@ IOCTL_STORAGE_MEDIA_REMOVAL
  1393. ; Example........: Yes
  1394. ; ===============================================================================================================================
  1395. Func _WinAPI_LockDevice($sDrive, $fLock)
  1396.         Local $hFile = _WinAPI_CreateFileEx('\\.\' & $sDrive, 3, 0xC0000000, 0x03)
  1397.         If Not $hFile Then Return SetError(1, 0, 0)
  1398.         Local $Ret = DllCall('kernel32.dll', 'int', 'DeviceIoControl', 'ptr', $hFile, 'dword', 0x002D4804, 'byte*', $fLock, 'dword', 1, 'ptr', 0, 'dword', 0, 'dword*', 0, 'ptr', 0)
  1399.         If (@error) Or (Not $Ret[0]) Then $Ret = 0
  1400.         _WinAPI_CloseHandle($hFile)
  1401.         If Not IsArray($Ret) Then Return SetError(2, 0, 0)
  1402.         Return 1
  1403. EndFunc   ;==>_WinAPI_LockDevice
  1404.  
  1405. ; #FUNCTION# ====================================================================================================================
  1406. ; Name...........: _WinAPI_CreateFileEx
  1407. ; Description....: Creates or opens a file or I/O device.
  1408. ; Syntax.........: _WinAPI_CreateFileEx ( $sFile, $iCreation, $iAccess, $iShare [, $iFlagsAndAttributes [, $tSecurity [, $hTemplate]]] )
  1409. ; Parameters.....: $sFile               - The name of the file or device to be created or opened.
  1410. ;                  $iCreation           - The action to take on a file or device that exists or does not exist. This parameter must be
  1411. ;                                         one of the following values, which cannot be combined.
  1412. ;
  1413. ;                                         $CREATE_NEW
  1414. ;                                         $CREATE_ALWAYS
  1415. ;                                         $OPEN_EXISTING
  1416. ;                                         $OPEN_ALWAYS
  1417. ;                                         $TRUNCATE_EXISTING
  1418. ;
  1419. ;                  $iAccess             - The requested access to the file or device, which can be summarized as read, write, both
  1420. ;                                         or neither (zero).
  1421. ;
  1422. ;                                         $GENERIC_READ
  1423. ;                                         $GENERIC_WRITE
  1424. ;
  1425. ;                                         (See MSDN for more information)
  1426. ;
  1427. ;                  $iShare              - The requested sharing mode of the file or device, which can be read, write, both,
  1428. ;                                         delete, all of these, or none. If this parameter is 0 and _WinAPI_CreateFileEx() succeeds,
  1429. ;                                         the file or device cannot be shared and cannot be opened again until the handle to
  1430. ;                                         the file or device is closed.
  1431. ;
  1432. ;                                         $FILE_SHARE_READ
  1433. ;                                         $FILE_SHARE_WRITE
  1434. ;                                         $FILE_SHARE_DELETE
  1435. ;
  1436. ;                  $iFlagsAndAttributes - The file or device attributes and flags. This parameter can be one or more of the
  1437. ;                                         following values.
  1438. ;
  1439. ;                                         $FILE_ATTRIBUTE_READONLY
  1440. ;                                         $FILE_ATTRIBUTE_HIDDEN
  1441. ;                                         $FILE_ATTRIBUTE_SYSTEM
  1442. ;                                         $FILE_ATTRIBUTE_DIRECTORY
  1443. ;                                         $FILE_ATTRIBUTE_ARCHIVE
  1444. ;                                         $FILE_ATTRIBUTE_DEVICE
  1445. ;                                         $FILE_ATTRIBUTE_NORMAL
  1446. ;                                         $FILE_ATTRIBUTE_TEMPORARY
  1447. ;                                         $FILE_ATTRIBUTE_SPARSE_FILE
  1448. ;                                         $FILE_ATTRIBUTE_REPARSE_POINT
  1449. ;                                         $FILE_ATTRIBUTE_COMPRESSED
  1450. ;                                         $FILE_ATTRIBUTE_OFFLINE
  1451. ;                                         $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
  1452. ;                                         $FILE_ATTRIBUTE_ENCRYPTED
  1453. ;
  1454. ;                                         $FILE_FLAG_BACKUP_SEMANTICS
  1455. ;                                         $FILE_FLAG_DELETE_ON_CLOSE
  1456. ;                                         $FILE_FLAG_NO_BUFFERING
  1457. ;                                         $FILE_FLAG_OPEN_NO_RECALL
  1458. ;                                         $FILE_FLAG_OPEN_REPARSE_POINT
  1459. ;                                         $FILE_FLAG_OVERLAPPED
  1460. ;                                         $FILE_FLAG_POSIX_SEMANTICS
  1461. ;                                         $FILE_FLAG_RANDOM_ACCESS
  1462. ;                                         $FILE_FLAG_SEQUENTIAL_SCAN
  1463. ;                                         $FILE_FLAG_WRITE_THROUGH
  1464. ;
  1465. ;                                         $SECURITY_ANONYMOUS
  1466. ;                                         $SECURITY_CONTEXT_TRACKING
  1467. ;                                         $SECURITY_DELEGATION
  1468. ;                                         $SECURITY_EFFECTIVE_ONLY
  1469. ;                                         $SECURITY_IDENTIFICATION
  1470. ;                                         $SECURITY_IMPERSONATION
  1471. ;
  1472. ;                  $tSecurity           - $tagSECURITY_ATTRIBUTES structure that contains two separate but related data members:
  1473. ;                                         an optional security descriptor, and a Boolean value that determines whether the returned
  1474. ;                                         handle can be inherited by child processes. If this parameter is 0, the handle cannot
  1475. ;                                         be inherited by any child processes the application may create and the file or device
  1476. ;                                         associated with the returned handle gets a default security descriptor.
  1477. ;                  $hTemplate           - Handle to a template file with the $GENERIC_READ access right. The template file supplies
  1478. ;                                         file attributes and extended attributes for the file that is being created.
  1479. ; Return values..: Success              - Handle to the specified file, device, named pipe, or mail slot.
  1480. ;                  Failure              - 0 and sets the @error flag to non-zero.
  1481. ; Author.........: Yashied
  1482. ; Modified.......:
  1483. ; Remarks........: When an application is Finisheded using the object handle returned by this function, use the _WinAPI_CloseHandle()
  1484. ;                  function to close the handle. This not only frees up system resources, but can have wider influence on things
  1485. ;                  like sharing the file or device and committing data to disk.
  1486. ; Related........:
  1487. ; Link...........: @@MsdnLink@@ CreateFile
  1488. ; Example........: Yes
  1489. ; ===============================================================================================================================
  1490. Func _WinAPI_CreateFileEx($sFile, $iCreation, $iAccess, $iShare, $iFlagsAndAttributes = 0, $tSecurity = 0, $hTemplate = 0)
  1491.         Local $Ret = DllCall('kernel32.dll', 'ptr', 'CreateFileW', 'wstr', $sFile, 'dword', $iAccess, 'dword', $iShare, 'ptr', DllStructGetPtr($tSecurity), 'dword', $iCreation, 'dword', $iFlagsAndAttributes, 'ptr', $hTemplate)
  1492.         If (@error) Or ($Ret[0] = Ptr(-1)) Then Return SetError(1, 0, 0)
  1493.         Return $Ret[0]
  1494. EndFunc   ;==>_WinAPI_CreateFileEx
  1495.  
  1496. ; #FUNCTION# ====================================================================================================================
  1497. ; Name...........: _WinAPI_AnimateWindow
  1498. ; Description....: Enables you to produce special effects when showing or hiding windows.
  1499. ; Syntax.........: _WinAPI_AnimateWindow ( $hWnd, $iFlags [, $iDuration] )
  1500. ; Parameters.....: $hWnd      - Handle to the window to animate.
  1501. ;                  $iFlags    - The flags that specify the type of animation. This parameter can be one or more of the following
  1502. ;                               values. Note that, by default, these flags take effect when showing a window. To take effect when
  1503. ;                               hiding a window, use AW_HIDE and a logical OR operator with the appropriate flags.
  1504. ;
  1505. ;                               $AW_SLIDE
  1506. ;                               $AW_ACTIVATE
  1507. ;                               $AW_BLEND
  1508. ;                               $AW_HIDE
  1509. ;                               $AW_CENTER
  1510. ;                               $AW_HOR_POSITIVE
  1511. ;                               $AW_HOR_NEGATIVE
  1512. ;                               $AW_VER_POSITIVE
  1513. ;                               $AW_VER_NEGATIVE
  1514. ;
  1515. ;                  $iDuration - Specifies how long it takes to play the animation, in milliseconds. Default is 1000.
  1516. ; Return values..: Success    - 1.
  1517. ;                  Failure    - 0 and sets the @error flag to non-zero.
  1518. ; Author.........: Yashied
  1519. ; Modified.......:
  1520. ; Remarks........: None
  1521. ; Related........:
  1522. ; Link...........: @@MsdnLink@@ AnimateWindow
  1523. ; Example........: Yes
  1524. ; ===============================================================================================================================
  1525. Func _WinAPI_AnimateWindow($hWnd, $iFlags, $iDuration = 1000)
  1526.         Local $Ret = DllCall('user32.dll', 'int', 'AnimateWindow', 'hwnd', $hWnd, 'dword', $iDuration, 'dword', $iFlags)
  1527.         If (@error) Or (Not $Ret[0]) Then Return SetError(1, 0, 0)
  1528.         Return 1
  1529. EndFunc   ;==>_WinAPI_AnimateWindow
  1530. #endregion WinAPIEx functions
  1531.  
  1532. #region MD5 checksum
  1533. Func _MD5Input_Thread(ByRef $Context, $Data)
  1534.         Local $Opcode
  1535.         If Not IsDllStruct($_MD5_CodeBuffer) Then _MD5_Startup()
  1536.         If Not IsDllStruct($Context) Then Return SetError(1, 0, 0)
  1537.  
  1538.         $Data = Binary($Data)
  1539.         Local $InputLen = BinaryLen($Data)
  1540.         Local $Input = DllStructCreate("byte[" & $InputLen & "]")
  1541.         DllStructSetData($Input, 1, $Data)
  1542.  
  1543.         If @AutoItX64 Then
  1544.                 $Opcode = Binary('0x4883EC084989C8488B5110498B004D8B4820488B49084D8B40184883C408FFE0')
  1545.         Else
  1546.                 $Opcode = Binary('0x83EC1C8B4424208B50108954240C8B500C895424088B5008895424048B5004891424FF1083EC1083C41CC20400')
  1547.         EndIf
  1548.  
  1549.         Local $CodeBufferMemory = _MemVirtualAlloc(0, BinaryLen($Opcode), $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
  1550.         Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]", $CodeBufferMemory)
  1551.         DllStructSetData($CodeBuffer, 1, $Opcode)
  1552.  
  1553.         Local $ThreadParam = DllStructCreate("ptr addr; ptr var1; ptr var2; uint var3; int var4")
  1554.         DllStructSetData($ThreadParam, 'addr', DllStructGetPtr($_MD5_CodeBuffer) + $_MD5_InputOffset)
  1555.         DllStructSetData($ThreadParam, 'var1', DllStructGetPtr($Context))
  1556.         DllStructSetData($ThreadParam, 'var2', DllStructGetPtr($Input))
  1557.         DllStructSetData($ThreadParam, 'var3', $InputLen)
  1558.         DllStructSetData($ThreadParam, 'var4', 0)
  1559.  
  1560.         Local $Ret = DllCall("kernel32.dll", "hwnd", "CreateThread", "ptr", 0, "uint", 0, "ptr", _
  1561.                         DllStructGetPtr($CodeBuffer), "ptr", DllStructGetPtr($ThreadParam), "uint", 0, "uint", 0)
  1562.         Local $ThreadHandle = $Ret[0]
  1563.         Do
  1564.                 Sleep(10)
  1565.                 $Ret = DllCall("kernel32.dll", "int", "GetExitCodeThread", "hwnd", $ThreadHandle, "uint*", 0)
  1566.         Until $Ret[2] <> 259 ; STILL_ACTIVE
  1567. EndFunc   ;==>_MD5Input_Thread
  1568.  
  1569. Func _MD5_Exit()
  1570.         $_MD5_CodeBuffer = 0
  1571.         _MemVirtualFree($_MD5_CodeBufferMemory, 0, $MEM_RELEASE)
  1572. EndFunc   ;==>_MD5_Exit
  1573.  
  1574. Func _MD5_Startup()
  1575.         Local $Code
  1576.         If Not IsDllStruct($_MD5_CodeBuffer) Then
  1577.                 If @AutoItX64 Then
  1578.                         $Code = 'BQsAAIkO2+kECRwYhw5XCIPUBK4KD0GcnVYdVZxU/HcAU0iD7ChEiyHHBnoMZwKDWggZEnIECEkTWQMieRBBjbT4eKRqf9c/ifgGaRgx2C5jUV4h8PB8JBT3+PhHAY28OVa3x+j9bP0Q7AQG7t7BKPbBwAfYAfA9IcZ9d0EO94txCMPBxwx0FABEjawe23AgJDmJwzp0sxhQ82M2hCH7YBOKtDPuzjG9wdZcHcOwwxFG8CxjO977MdY+b+sKoIQ4rw98UPWLJNiKvonrxp7GFmo++0Wq7oSAriHzog0AhzcqxocoRwGfKYnzgAox64NGwxHANqwtE0YwUKi9HM2A3/oKjmjufURFDy7jlUb9Nijd6Tw2xRHmuP9We+OhBSBEcQJuXCQMgIwY2JiAVWmGo+t7hD+v94QWK3sgRw4VsVv/NXjb30L3eGzhuCyjcGXduQRDiR6+18+6+s7q74JsUv+mhUcwZSr3QYQiEZBrvzXIkhJ5NGBuiTwkpIkUk3GYunygjjHvdkEPwCHHRQrwCwwB/1A4rvgSRSH4QBI9jkN5ptk9pMVBukE8Avmb+aQy6UmQBtkI0UmbIELawGIlHmX2cs4ogYlm8abpSm/5DcLIi0xC9wSBBVj9D0Bys/iJ/5sy8YlQDc8Mag+8pA4EwScJAUZH7QpRWl4mmRzP1TGHN/fN16qStum'
  1579.                         $Code &= 'NDu4TgA49zM1R+LQgQhi78jBdGxAv1hsyOv75FCw69/tRzyHPQJeMEVOYPWwCHfb4rIHRsO9jQCHvA9MFgeah2GUdLvlRfHTQbJCVihRxaIaBPsj70+ddeQlyAiMImnegBTjmzeFXIX9g/DnWBzdGw6Adhw0j1fTxDA8E7RRaRStRzwt9BAXp46ktCXYCRRiSe6ANOfij71L8g92gBC3ZAm9nOkhlg4pMKrV0i9KKHE16swz+JMjGfYJCOfr/Ac5EA6lFf02gMJo8FDiLRL+GxwTuBgGB9nGHiJJGknJd6A5t0jtT7wtE8YYFCyJhnW2sODTwwPE+DDjl/fTIx9bFiVzpELs+JCIG6r6k/9mDDMa7WmbbF0za321LsCijFG7YyeOpzyLeS9Bb5Y9ghrv2jbB4TQHBSXFUThYJcLy/vggYgYv4MaNQTA2HUonFhbn9CZQQLwYKzVgFiywkEmVR1IA8L4x+myhIzck4xSBrIPonoWbqXvUyJCwvcrQqiGsZCoUw79SyooRJ9X5SBEOoFMcL2YUB72SD2QvOoOkOBR2IUgSSVacxJQiHDGoO6kgUCIUmFx+BNTnQ1NmU5MaQZZr+kDcf5Zkk2+Zrtr0s7UZoGlXGjMD4fCSiH5lPzO5spAQlRCIp9JQFH5aoeokw77CDuqwvlxP/KkNQCWRJFDQQ8UC2MWVWrMSSz8D'
  1580.                         $Code &= 'COKcjlKvVjQputcb31UJp8TIZ4wxWkyJJ1hsbCc45Kqb0RcbExAb0f8woCeXHSeA2GffQZu0lJYKtOaCT/IWjCkxG5Wzt3bCoxAOkHMNZW2UyIu98bGgAxw/JFAkGgOiuqicAoCuSzAxmj9IVjJAWCQnIicsPL0zTvMTzUKa8F30U9O//b2w640QkCeD7Irzu0RNdhIUVKPw2ENnTEwnriUoQ46qU35J3kg8GPE9+qG/T05Q2quEd+zHrjtmJ1Ggi00nOG0HOgfy0KODmLO6llxR21cgd4zHLwN6NnAcUQ/yjmIuQCmkK+KxwzOZNCVks4E6CoREITkD9AcOr/bHXwd0PULnzCdiQ7KongJcsgn5TUPekrAYuNfI6vd00id7uAZgJzzHfIncBvDO70tcqReQKhwaHhMgJxoCojTQu38k9fHTzJXIMg88cHwVPOZHThgDUwQMC99Hbw76QWggJTNnCAokCi0IEUDf+2Ni1EAiJfkoASIPEKFteX105QVxvCB28p8MYvEmJftVnVArMn8tMCfhmxR1NhcDBi3FQdF/w5j8DTI15QEG+nwwC6wANSQFcJFBIhR7/dEalo+T1KZdH6/A5+3YE9v372/vxM4rYhuq23ONgHEgGKd/osAJqBoP+QHXILGf6'
  1581.                         $Code &= 'BuGRMPboMAH/41hGdVK6krPrhPRKSBiJ11YIzlPKaMOOjiBJgfh/dn5BkUFQ9OA/IHVHDGZAMe1A+cw+4szp30Q/m+h2r+WDOysGGvg/d+RENEPAOhvDXrtBYmcyVAeHhSbxAV5QkeMghcO9IdMpxUO06DMy75Drue7+u4gzorDx1cZ+NI0uoQtD6cZEUZcY6MejkXCHuFIHJAEjRWfrobCJq82blosgAxkI/ty6mAMRDHZUMhAbqkFAMG8rE5mXGEnYpRKGrCAKmCZmKArLBpB9aTAKAV44v4Cgq79/ZNpnxIFmwdP/mQrGIs1E8kTN99nkkNH10AEJwB74OEKIDBgDdnJIQbikz4H5Y6hqf5jUDSnAMdKaQYI/AUNL4j0W2ZRT9rdzDMMBujhRDzOFpQ1A+ccCkRSpiAQRsACJ0THAwekDKPbCzAzJ80irKq2LZBxRs0CD4gF0HybGBwoUGnIhOFDo0NAltQVDUIn2JXVMk8YOQw046Nb1+p4wQNxFMgxEBAQISBAIIExqDGIHT5CepARP8T9M0v9RKfTDxmADpI17AbIbN+lNhpBmxweohuoC0Da7GulGIwgQEhEEdCHpPmgPlUQykS8iP0hT7yTRbaxrKSAkW4nodBLNCqnfY+kmJhtWfpnPBtZAmsH88wqkX17DEETQMqpjogAA'
  1582.                 Else
  1583.                         $Code = 'XgsAAIkA24PsBItEJAjz26DoLgnhw/vE+cIQwYeRLxwbKIk3eRGKBCcgIVcICByJCR0PHxBhCqBVV1ZjU0JEix2EagxdMthaEHoEAIlMJDyNtDF4HqRq193px9kh+b7AAc6LSAQewcYHGP47OI0DrClWt8fo2Nkx+Tch8ULzTA2Ai2gIccE/DAF8Bpwd23Ag2kFc0fPZbOQ0MWH7Ngwhy5gOAyeNvAE97s69wYl8nT3PwMMRMfcBy8xLMEYQMyHfGgNhMfIurw/g9YlhdBbBxxbc3gHMMM5HLIAUIWb+FgMxAY2MKSrGh0dUiieTdfkQlYRkRygKGI9GAzGAhysTEEYwqJGXQYoEmRuBR/QKHIxwLwEZlUb9LSBWijLtWZYEkRCIjPDYmIBCaUGJFo7+g443YRxaSox4r/eQP4WMRBgIKHixW3H/hUQUCCx4vtfwiaSCiowzhSBHEFMwjMEiEZBrIhjaP42xCPZEIISN8PX8cBI0wcUKov2TPw6TcZjwkJBlYQgYhzY4IVLpjoAzjkN5polA0etUTg2Uiw71AZRA+4+eH96CWDyJyIrNnR/oM7TwQAydH+4IPrRJpsc+mzj5yvdgAAViACUe9on4MfAhb8gI70T8KoviwXjAJAH4EY5As16izMDBLRCZJLpl90BBw1FaXiabKzzz/AcJAU8izjHGrr+NAyNQBqr'
  1584.                         $Code &= 'HtmnpQQbUfEEoxg6B8vcMMc8hxwgDwCONhChdEDAv1kEUiUSJx96Ii4RRA7Ej91MU4QIJAKIegeYpodiSoIeHgyF04Y10NUi4LKtpBPvI+9PnSBhIeNjmzX7hiQQagdYHN8OUQTB8R3XR+ASHDdX0SBzUCO0UWkWRCKgFEenjqSM0U/Cj7/zKQSCA1ArZAm9nfF6EbX31dM19LMqDDIyHikwqaRSE8DzxT4YDQjn6/4tDUIEmMWg9JigSkxwIdAROgYH2cYdJliQ3wcwxENYLmFTA9gYiYZ1tGYnoMTTI/camMSeSECBuBww4TOWkQcKTNPAoWheG9uobvqSJjCY0+FjkLAgEYKnP3kuE3Sk8XJVA3sE+Ac1pIIa/xdTnAA5gS0y7lEH4Zq9lMBQIau4OD3Blv77WyTSwnn0MUYvLZKoXiIQ4EsZ+m5M+QHQp0OeLIciQPGXiz0GL+ieh6lajNGz4wDEwoWn9AQaF6O/Uqusvva8EthI9JvrU0xgBeAUdiARMonSLQOSKwYZBGLni1Io5FdDU2aJmNPHAyjEMaSL0Ag3lmdvmia3QZHVMVjooBhj4fKIfyjIB+f/IGTQGzGDN/2VWrMSqlweB6PXGNq+9iegH7CIpYfQw99AJYrU/BNXWQBv'
  1585.                         $Code &= 'ABgH98Iw5DZf/KkMhCZ0gJOkS99EJTQ0DGYHQPacjlKsxbsXXkuwKALkJzzHHjSR8PXdFKAmdDykGADw5oJP8izB4xi0M99ZcCfukgBHDWVtLZVtY7FQ32hXC+gH+CUcwsvz1D6GSzAyPRMtVme1IHc4UvZEKAZwZ4OYs/lC6ffTvSP+BakNTpA5SIH0G0V2ETIU+ajVvq20QHCYVD4CsNU9+qG+Yy4KQQAsJxqDSMf6zz7jBueykCU6o7hgLicPV99OS7pDYOxRDoqMuCAnmH/PBHB/Bww+BKiihEQhOsPQvLAHLyM3YRgfFwDYugn5T99rAN4V22ED2xjHejTRsN7s2KQI18jq9idkjNAFC92w2D9U2Biu70tcq7M03GOqh8mznkfKG6whowgMykWqJ4ItymAY5WgidSgyV3uMfiUKAg8REW15fH13DVQ/VV+PPVlMAoIPsTIXJi1DidBx5jUB+kuI/SXU8QMMc6z0ii1xWyTCuT4nHriUbA+JcoJlIUBFYAVSF/3RHvkCsJ6IBOf52AonSjy+S1lzmfvVRVPayd/TQehTyAttzJfDyg/oZQHWoFzxALeja93H/CjHS65eVEUyTiDIskopmSEFA2e38/n+okRwPOIaAVUTroEJQgwvgP3VEkPMx//bFsA1y2FzqpXl57zToi58P5jd/Rz936oBGwInCo86uWfZU'
  1586.                         $Code &= 'ZBPqLlhhAXKhu3rrIeAslL+/gYnaKcdM6vk9AfsO/ujjeIrrop75zSqUbATChLIBBuu8cZhL0GA8Gum7UQasEEsHFI1QQMcuYQEjRWe9Du6lH5hCaqvNYO8OCP7cukCYDA12VDIQONYTeoiRcy4CCkS/1ETT5b5DccOydMbcSVBAQf2/jqjNkAr32SHRwJ4JR4gMA4LAAYDYOHZmupFyh8KNe4rqFQOeJAiZvMJCpiJQ8PqSEVR8ut/+e1H2o8zDATC6OD8PhZ7CDffHAqQMn0mJgNjAwekCOfbCmfOrJJ0VAC8BdCrGB6HpJaFmZiFjUe2EEY1DQIiUiyV7UAd90nBrVA+kDv0Dwed2CzsRgtRTPERq7kNQOIfoKPr1gf2ZWwYKRPxGBMgMSBAIIExJDNxkUnSiIFLLJkgDhsPGA7YDewGyN+lVcm4VZscHkhzqAuizK+lRELIbViFTMckgRBjZ+YwgbIGQmmLfpf7RCxggmBhbMelgG1ZXp78kgxCltCHm5C/8BIP5CHInggcBKQKWpElMEfQFEmalgwQLicqTEPPUhxnD4QO5pOu6FgZfXsNXd0QQMDEPttIMaSGHswOtCCF0AwUKqkkhCnX2Uj/8Qk0QQKpfYMMA'
  1587.                 EndIf
  1588.                 Local $Opcode = String(_MD5_CodeDecompress($Code))
  1589.                 $_MD5_InitOffset = (StringInStr($Opcode, "89DB") - 3) / 2
  1590.                 $_MD5_InputOffset = (StringInStr($Opcode, "87DB") - 3) / 2
  1591.                 $_MD5_ResultOffset = (StringInStr($Opcode, "09DB") - 3) / 2
  1592.                 $Opcode = Binary($Opcode)
  1593.  
  1594.                 $_MD5_CodeBufferMemory = _MemVirtualAlloc(0, BinaryLen($Opcode), $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
  1595.                 $_MD5_CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]", $_MD5_CodeBufferMemory)
  1596.                 DllStructSetData($_MD5_CodeBuffer, 1, $Opcode)
  1597.                 OnAutoItExitRegister("_MD5_Exit")
  1598.         EndIf
  1599. EndFunc   ;==>_MD5_Startup
  1600.  
  1601. Func _MD5Init()
  1602.         If Not IsDllStruct($_MD5_CodeBuffer) Then _MD5_Startup()
  1603.         Local $Context = DllStructCreate("byte[" & $_HASH_MD5[1] & "]")
  1604.         DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($_MD5_CodeBuffer) + $_MD5_InitOffset, _
  1605.                         "ptr", DllStructGetPtr($Context), _
  1606.                         "int", 0, _
  1607.                         "int", 0, _
  1608.                         "int", 0)
  1609.  
  1610.         Return $Context
  1611. EndFunc   ;==>_MD5Init
  1612.  
  1613. Func _MD5Input(ByRef $Context, $Data)
  1614.         If Not IsDllStruct($_MD5_CodeBuffer) Then _MD5_Startup()
  1615.         If Not IsDllStruct($Context) Then Return SetError(1, 0, 0)
  1616.  
  1617.         $Data = Binary($Data)
  1618.         Local $InputLen = BinaryLen($Data)
  1619.         Local $Input = DllStructCreate("byte[" & $InputLen & "]")
  1620.         DllStructSetData($Input, 1, $Data)
  1621.         DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($_MD5_CodeBuffer) + $_MD5_InputOffset, _
  1622.                         "ptr", DllStructGetPtr($Context), _
  1623.                         "ptr", DllStructGetPtr($Input), _
  1624.                         "uint", $InputLen, _
  1625.                         "int", 0)
  1626. EndFunc   ;==>_MD5Input
  1627.  
  1628. Func _MD5Result(ByRef $Context)
  1629.         If Not IsDllStruct($_MD5_CodeBuffer) Then _MD5_Startup()
  1630.         If Not IsDllStruct($Context) Then Return SetError(1, 0, "")
  1631.  
  1632.         Local $Digest = DllStructCreate("byte[" & $_HASH_MD5[0] & "]")
  1633.         DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($_MD5_CodeBuffer) + $_MD5_ResultOffset, _
  1634.                         "ptr", DllStructGetPtr($Context), _
  1635.                         "ptr", DllStructGetPtr($Digest), _
  1636.                         "int", 0, _
  1637.                         "int", 0)
  1638.         Return DllStructGetData($Digest, 1)
  1639. EndFunc   ;==>_MD5Result
  1640.  
  1641. Func _MD5($Data)
  1642.         Local $Context = _MD5Init()
  1643.         _MD5Input($Context, $Data)
  1644.         Return _MD5Result($Context)
  1645. EndFunc   ;==>_MD5
  1646.  
  1647. Func _MD5_CodeDecompress($Code)
  1648.         Local $Opcode
  1649.         If @AutoItX64 Then
  1650.                 $Opcode = '0x89C04150535657524889CE4889D7FCB28031DBA4B302E87500000073F631C9E86C000000731D31C0E8630000007324B302FFC1B010E85600000010C073F77544AAEBD3E85600000029D97510E84B000000EB2CACD1E8745711C9EB1D91FFC8C1E008ACE8340000003D007D0000730A80FC05730783F87F7704FFC1FFC141904489C0B301564889FE4829C6F3A45EEB8600D275078A1648FFC610D2C331C9FFC1E8EBFFFFFF11C9E8E4FFFFFF72F2C35A4829D7975F5E5B4158C389D24883EC08C70100000000C64104004883C408C389F64156415541544D89CC555756534C89C34883EC20410FB64104418800418B3183FE010F84AB00000073434863D24D89C54889CE488D3C114839FE0F84A50100000FB62E4883C601E8C601000083ED2B4080FD5077E2480FBEED0FB6042884C00FBED078D3C1E20241885500EB7383FE020F841C01000031C083FE03740F4883C4205B5E5F5D415C415D415EC34863D24D89C54889CE488D3C114839FE0F84CA0000000FB62E4883C601E86401000083ED2B4080FD5077E2480FBEED0FB6042884C078D683E03F410845004983C501E964FFFFFF4863D24D89C54889CE488D3C114839FE0F84E00000000FB62E4883C601E81D01000083ED2B4080FD5077E2480FBEED0FB6042884C00FBED078D389D04D8D7501C1E20483E03041885501C1F804410845004839FE747B0FB62E4883C601E8DD00000083ED2B4080FD5077E6480FBEED0FB6042884C00FBED078D789D0C1E2064D8D6E0183E03C41885601C1F8024108064839FE0F8536FFFFFF41C7042403000000410FB6450041884424044489E84883C42029D85B5E5F5D415C415D415EC34863D24889CE4D89C6488D3C114839FE758541C7042402000000410FB60641884424044489F04883C42029D85B5E5F5D415C415D415EC341C7042401000000410FB6450041884424044489E829D8E998FEFFFF41C7042400000000410FB6450041884424044489E829D8E97CFEFFFF56574889CF4889D64C89C1FCF3A45F5EC3E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFFFEFFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F3031323358C3'
  1651.         Else
  1652.                 $Opcode = '0x89C0608B7424248B7C2428FCB28031DBA4B302E86D00000073F631C9E864000000731C31C0E85B0000007323B30241B010E84F00000010C073F7753FAAEBD4E84D00000029D97510E842000000EB28ACD1E8744D11C9EB1C9148C1E008ACE82C0000003D007D0000730A80FC05730683F87F770241419589E8B3015689FE29C6F3A45EEB8E00D275058A164610D2C331C941E8EEFFFFFF11C9E8E7FFFFFF72F2C32B7C2428897C241C61C389D28B442404C70000000000C6400400C2100089F65557565383EC1C8B6C243C8B5424388B5C24308B7424340FB6450488028B550083FA010F84A1000000733F8B5424388D34338954240C39F30F848B0100000FB63B83C301E8CD0100008D57D580FA5077E50FBED20FB6041084C00FBED078D78B44240CC1E2028810EB6B83FA020F841201000031C083FA03740A83C41C5B5E5F5DC210008B4C24388D3433894C240C39F30F84CD0000000FB63B83C301E8740100008D57D580FA5077E50FBED20FB6041084C078DA8B54240C83E03F080283C2018954240CE96CFFFFFF8B4424388D34338944240C39F30F84D00000000FB63B83C301E82E0100008D57D580FA5077E50FBED20FB6141084D20FBEC278D78B4C240C89C283E230C1FA04C1E004081189CF83C70188410139F374750FB60383C3018844240CE8EC0000000FB654240C83EA2B80FA5077E00FBED20FB6141084D20FBEC278D289C283E23CC1FA02C1E006081739F38D57018954240C8847010F8533FFFFFFC74500030000008B4C240C0FB60188450489C82B44243883C41C5B5E5F5DC210008D34338B7C243839F3758BC74500020000000FB60788450489F82B44243883C41C5B5E5F5DC210008B54240CC74500010000000FB60288450489D02B442438E9B1FEFFFFC7450000000000EB9956578B7C240C8B7424108B4C241485C9742FFC83F9087227F7C7010000007402A449F7C702000000740566A583E90289CAC1E902F3A589D183E103F3A4EB02F3A45F5EC3E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFFFEFFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F3031323358C3'
  1653.         EndIf
  1654.         Local $AP_Decompress = (StringInStr($Opcode, "89C0") - 3) / 2
  1655.         Local $B64D_Init = (StringInStr($Opcode, "89D2") - 3) / 2
  1656.         Local $B64D_DecodeData = (StringInStr($Opcode, "89F6") - 3) / 2
  1657.         $Opcode = Binary($Opcode)
  1658.  
  1659.         Local $CodeBufferMemory = _MemVirtualAlloc(0, BinaryLen($Opcode), $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
  1660.         Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]", $CodeBufferMemory)
  1661.         DllStructSetData($CodeBuffer, 1, $Opcode)
  1662.  
  1663.         Local $B64D_State = DllStructCreate("byte[16]")
  1664.         Local $Length = StringLen($Code)
  1665.         Local $Output = DllStructCreate("byte[" & $Length & "]")
  1666.  
  1667.         DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer) + $B64D_Init, _
  1668.                         "ptr", DllStructGetPtr($B64D_State), _
  1669.                         "int", 0, _
  1670.                         "int", 0, _
  1671.                         "int", 0)
  1672.  
  1673.         DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer) + $B64D_DecodeData, _
  1674.                         "str", $Code, _
  1675.                         "uint", $Length, _
  1676.                         "ptr", DllStructGetPtr($Output), _
  1677.                         "ptr", DllStructGetPtr($B64D_State))
  1678.  
  1679.         Local $ResultLen = DllStructGetData(DllStructCreate("uint", DllStructGetPtr($Output)), 1)
  1680.         Local $Result = DllStructCreate("byte[" & ($ResultLen + 16) & "]")
  1681.  
  1682.         Local $Ret = DllCall("user32.dll", "uint", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer) + $AP_Decompress, _
  1683.                         "ptr", DllStructGetPtr($Output) + 4, _
  1684.                         "ptr", DllStructGetPtr($Result), _
  1685.                         "int", 0, _
  1686.                         "int", 0)
  1687.  
  1688.         _MemVirtualFree($CodeBufferMemory, 0, $MEM_RELEASE)
  1689.         Return BinaryMid(DllStructGetData($Result, 1), 1, $Ret[0])
  1690. EndFunc   ;==>_MD5_CodeDecompress
  1691. #endregion MD5 checksum
  1692.  
  1693. #region binary strings
  1694. Func BackgroundPic()
  1695.         Local $BackgroundPic
  1696.         $BackgroundPic &= '/9j/4AAQSkZJRgABAQEAAAAAAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wgARCACdAmcDAREAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAwQAAQIFBv/EABgBAQEBAQEAAAAAAAAAAAAAAAABAgME/9oADAMBAAIQAxAAAAHikIQhCEIQhCEIQhCELLLNWOU1TsPS6W81eaJT1ztBzVKS5tkE6Am2mDaxEHLhcylsqwYjbxxCQUZshAlQDFEIQhZZkhCEIQhCEIQhCEIQhCGiyEMkKIQhZCBE3Rl6FGBystdCGmYoZoqEuYgptedGGDaxAMq81hTJNZUTmWc8WkpbMFEIUQshZCFFEIQhCEIQhCEIQhCFhZTNHUxtKQNCQKDBlFEIQs0Gsbtumprpw3GFy02yRmSDbUnQsh9Y1c4lDNKKvqDZSZTpWSghgwsIaNhJTqwpCjAJF0AmKohCEIQhCEIQhZuVubdmm4YQ1m0us0KgIuLWKC8gjJCFm6Kjdsp1Ws6k04NSEZiYmlZ0EN3BLkYJeWKagWVoGCKIUWbU6tyuDMrAYsiZUIsKCSKXI7MkIQhCEIQhuViadm3s1sYZLZpNJdXVGTNAF6VOeIyBsyQs0FsY0Ku5voyvYrEbubKAtc+aZQ9yOznWc4BcrwIsoohpW5eg06rchgiaSyloyUDUMqypIjYncDshCEIQhAkrs6P505DKGTSDsFYQKGTdSoZMyjtXl5xzbEWR2UQtCVtXVem3M6ZkMaSjNqaoymuZcoWLMqgSiENDE0/N9OVywyES7IVGASroCiwZblyoZVVQuefrArmiEIQhodz06WejsHmcUC5SuUtQNmg8ro7DQa0slkXEoVUXmHM1la4ohosZVudHppiRqUqSBaLanMRVLszYrIMyQsJK7N9OaehhCamkqhwARsURQBZVahiVyacmmJcCtvPuedeYrIQhCw8108dX86YQWscvWefci1CahtzOatzsNjErY5KyHjS0ZVaVC3nXCusUQgZXZtiadzpmXcWC0WsS1jnOYbIZKIWMTT+ej6tyFSkFoFE7FBdA2UVY91yWhSr4o80+a/NPLppWXm3COueSEIWOZ6dLPRnNxc8vfNPWNbjnXLO8lRDjtXlqgSwa1LlFBI2sNmCNFzpS5X1iiFh5WptrOzzW1LGVDYnvCV5L3OSELDzTWd7XNzbNgrBBNTViUtQUImdOz3w3rIVXhXOlOehYrWa62ZpRnl3mMhCGh2bamxSJ3AdZPudHth3eSSXm8bh0zhcKatV39Qhw5VcsqTU3ZiWpWs7NnaGuYrmENDc07noxnZVkYXAHWU9ck7zxULGJtqaVuB3N6mwcskh2dR2vPSr5p5GKuuz1y/rI6HYrSWd87hoGNM2uqGOfcYIQs0Hmsgks1qP9sdPrhvI2WM3hctbxMy83Wg2t6h7nOAGgnQ65c64WlU57Dz05joEU1zyQ0PzfTz0Zzra0CF7F7FNc03PNQJL0cdQayHryZ6Zc1LzeVx0XMGs01SsZlYRuSre70z0bMANFaWz0Hy6JZqTFpoDZkosKsIalK082TWd9+LWsOYMZmZeNli5xm82bUWKeToYzdK7vX6x7plbWUpeVx6Tl0cz0R1zBc0FXqTp05tmNEjIFVU52sc+8x2WO56MTSvbi735vWPZXz153noeRZFrVqoMPoxIC30GzSCVe6xNazoU0tnSci9xmyWCRZCK+02u5dzRGt2HuN6zWsWyxISObYkyOUUqzVWHzGeYeqLd9DobUBvKe5zMXn8ejvPuMQ1xyNzXXnXoKyzokZBSrTSKcrfFTWSS9XPUOs36eHT6ZfxWed3m8bN5k'
  1697.         $BackgroundPic &= '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'
  1698.         $BackgroundPic &= 'IrEVBvRL2rkfKMZKEjR1HI5KKY+ZRK0rYp2TjJwl4vqlppDQrcjzNje+JEj/AH46+tcMocbHhLxaGtCpjY/RSdTTOjZOInEeAUaJJRopfWSfvRSMk8wiZHI5+8EfTgqC4Lkhmtq55lGOSEJGjRoclSZIKXOOSvpf1xBEEwXH1mjTlHQqDRomCMY1pSt1hWlsbGdTQylsrGeIeI8RUGiURAsJ+OeE8Z1EjodBfQnxlXDHGx4jxE49GimY57VijS0OS5MkGtOP5kkfGNGNEoSNGjQ0Ui0ZFxKIX1ZjkiSZEjR8jET9NFSPGLEKNcUzFP3P0vXqdToeM8Y4LktGOTHIpNHU6nU0LjXNzsrGxYzodTqa412eDCJDGUi5Lgn6GtrIuMSIRKF6MsyGR8Yka1OtuIJQhcZI7LLi053wsZOM8Y8R4CMWjXOjXOjRrikWjIjEiEL31zvjqjojoeMeMqBwYsRK1wxjZSLka+1/MqP9xEEi9GUZS+MKK/i/sErnZsuFR4PvxihGlxoa/YyjIWYSBfq1w+NmzfHRCWuW+NGjIiv7Bmk/3EYyRejKMpkEYUXP1EfePHzs2dh2KzsbNmzsdjZ2N/qoyFmIgX6tmzZv02KjZ2Ow6O55BWUtmTGRJmQ1940QxWjyo8qPKjyoeVFWi2ZCf7gNbJnR20PKeY8p5DubNnY2b9NHU6nU0aNe1GQv+4aMbF6b9tGjRr12dh2eQrMP5B5yc5OYdJm0jNY39zk0eY8zPIxWzszuyrZ5GPIUyWYrJyI7oyZiswsjFTFsXqkaOp1NGvXZs2b42UzLRTJrRjzkZ0K0/Xfro0aNHU6jk6mhyUixs2KhZTzjzlZN+ioVis8h5B2b4fCrQszPOVk3xJj0KUKDqKTqKTqa/Q+Gxs2disheUu987JyMx5aMdb4f7tDRZkouh/r2bNmzZs3+hE2yMjMdb/exvm6Ktjrn/8QAHhEAAwADAQEBAQEAAAAAAAAAAAERECAwQFACEmD/2gAIAQMBAT8B+MsP/FrD+dCEIT0rD8cIQhCEJ4oJE9qFh94QnGEJ2hO8+BCdoQnNLxwnBeOE8TQ1xS2veE2W00vCCXlaHuhaUub3a2W8HwSJwutKUuKUpcPdZbG80uFypSlw1smXZj2SxSlKUpd3ml2e6KNlzdFtdblPD1QtmPVLDZfEutxMPa8XilEJj1Qt3ohDeKXwQX5EiE4TEF+SDQ0TZdELDWiXBoeUhjfhhBLSEITaaPMJrcUvBCEz9ZQtLox4Qj9D5XMxCeuEJ0R+Xh4XFjwsfrE4whPhQhCcVh4XJ4QxkJ3nxoQhCYeFuhYeFtCEJvCfYTKPhPqXjSlP6P6Eyl3pSl+fS9YQ/kgl0pS/6T//xAAfEQADAAEFAQEBAAAAAAAAAAAAAREQAhIgMEBQcGD/2gAIAQIBAT8B/q5+CX9phCE+lCE8aJiG02jX0ULSbTaPSQnfBYSFpJjVxmJ3zwQhCYhOKNOYPSNd0JhISy2ai5WXmG0mH54QnUhFKXDH3o0rNGMa40udJCDXVOxCQtJBj4XiuNGx96EylLmE40QhFw0ND7ry0oSw2N9S4UvipS9EGsLgsNDQ+5cEaVhsvivU+i9LJxQnhoa8WlCGx+Cl+LcPxIpe+/GpSlL47ml+2+EJ8V/CuEhaTYbDYPSTphCE8z+KmLUbjcbh6vfM35FKXN+H/8QAFBABAAAAAAAAAAAAAAAAAAAAoP/aAAgBAQAGPwJAn//EACAQAQEAAgIDAQEBAQAAAAAAAAEAEBEhQSAxYVFxMED/2gAIAQEAAT8h/wCXeNTkX2tpgDWDyXAtyiDMiiZYIoy4CS1XNbMPho+R/wBG1vbW+GvLdu0Yau7d3aS3W2YDxMefhHGQySNG4ISI8Lg3Jqbdu34bW9vbXP8AyBuRmer4R8x8Xxl/JTqU6lHUs8twzDcV7WpijbHzePxcQ45QYRrfa/VgZuNDxDaGyvUr1fC/ififiY6mOpZJr/cJW23w'
  1699.         $BackgroundPic &= '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'
  1700.         $BackgroundPic &= 'Daks6CbuRATb7GFCrSzbPiaAQWIbS9WN2Su8NWeDH5KJJ+BQ3iEeY53bhoWpRQPoImsJX5yXdz5rHwkrzoVsv2XxI4Q9KuH90d8KoQkT0vb7oirIGstBihMgEgp8SyL3bO7BTl/jBE2vZnkHOKm2nwCL3eLO+Dxn55jQdpWcjaQ9OEd3WJVSmPVlmaurRCANUR33jc8M1SURP4dUXYZaVTAZA1gCGpIOyu9W+3n1mMieZZRWGpzVqD+aK3IHYUT3tum3gshs191aCVF3zjfslFNpIYhGcDMVzdNuV/gs/q+YBAtuqEpSaouNZVJJJJkb2RSJJIPbuO1x+QdpnLpP/8QAHhEBAQEBAQEBAQEBAQAAAAAAAQARECAwIUAxQVD/2gAIAQMBAT8Q/rOESy8CWXzPSyebbLbL/wCJllln3GGXgRMx4nhBZJM2/TLLLP5ciHiMssss+Yw8yDjPRCSYi2WZ+OWRDyB4Z/CcJwsttvcssss+OwwdSSzhSQkiGWW34ZEOGc2223mcMZn0CKTJZZnxtvjOEs9kNvGyzgwySdX4BEONttt9DbxjX5A4BbLLMttvvY5kx9CIWWWWWcLZmZ9ZEJmSy2+tthhiLb/fkAcglnizFtttt7lngeManodyzjLJeFl9HDmWyz5bbbbbYYbfIPYhZJLkxmy8D3bbbfOw348EzwMogsssk4E+g4Gb/Jbbebbxttss8CE2IQhwZ9y3obLMZvO2922223wCH76h4EG3qR9A4GE19Yb5et4INsMMPD6fSxZZi8CExxt4G3i8bDyTSGeggsg6Iz5kzgzbfDbHlsss4oODDLPoZm7akyU2WRbkwY4lnB4rYhFwMngcDbbLbLKeiGHJZ4D4SzxvHmWR1LVHN85xnYdwzOE8UPWW2JJODKcGll0OWW2228TgOHJYcl5kHG2Huy29yIcAQx+zXsThBZEA4spJJ4ZJZH5E2Y8ETMlkpchJw8LLbxsMeEQ/JTtgsjjMNvG2RM6BZFkESyzxmI5sNvGbLLLJOHhk2WQcbJJOLgukPFZbbYYYfAb/AJOf2IHlIJOCEzwFkHdll5ssxbbbbbbMyWT5zh6M5nGySCcP54dlltthhiYxGX5De2WWWWWWWWWdyCJndtt8Mz08bbb1LLJLLPGWWWWeR/EeRnp0eTh/bJ5nkMssssg6BEy2229Zt49Iep3be5ZZZZZZZZZZZZZw4/kvBtlltthh4PAhtlggsOMsssskss5tttstvpltt8jDDxs8bbbb4yyyyyZeNi2W3m2zGPI4TmtttsWzCnBe7Lbbbbbb8GWX4bHMsknxtttttttvDFl7tvpJjyPhNttiHwNttt+qy/IiOM/DbbbbbftlllnM+O22222+j4LL6//EAB0RAQEBAQEBAQEBAQAAAAAAAAEAERAgMCFAMVD/2gAIAQIBAT8Q/nGHj1LIPb08nck97/zNtt5knGe3pxnhHX/ibbbbbb9TrPwW2HjZBZZ9tttttt/iWYttttsMNttvy22ySSyW23jPDwRPy2223zttttv12WW35bbbbb7LbeMvB87D3Ob7223znw2GH5MsvkILPhtsNtvnbeLPd4WWR8ltt/hGPistvAg4OjLPG29222H0sz3bYYssj3ssvCPOWQeBklnM4Me2WW2EQIhCZT3LLJ7llnB9sttvBhh+C2+COZZZZwWkx4GMSyzh7ZLIggteBmQJz0OEmZZZZZJP5D6SZlnNhhj0zB5AI4JzbeFbfkh6Kcyyz2ycEC2sY/JeCmDHQeBrhckIh8rLbb4GPK2wRCvZHHyXBDg/wRvRZihvAIhh4ZsQgSbOSSPKSTMsssgjwssd6gSJwww8b5DbDD1rbbfq+TGMXp8FmLhxB205Dg+Fn0MQ6wbzGfzpM8PLxttvDV2ZthjxlnFt4F/kZ7LbEstlkcSfsIIYZQ23IR4yyyyyzjDLjLHeX+cmLNkltvdiDm22zbwvCPBMrebDbDbwsMMttsMMtv1BnRlw'
  1701.         $BackgroundPic &= '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'
  1702.         $BackgroundPic &= 'vLq5KzlhjFpbXJPxSsw5cDlw8j/E/wCbf5E/I0eSmpK2/g1yRxy5kshhy6nIwORrz5M6H2IyUeWxhOQz5MnIsaXxkAYfYzXnI1r5BbRrI/IMwI9aR6Ql7P4Jc6T7wmVmcs5yIwPv6ljbwgzpfGXpCYy0OzFI9OSNGz1yx+X8l1gY5GLYCEufbL58ufluPLk8tNcnjjNprlqR7YnLMOXE5cPw/lPIOzlAmT7YcO6XIJEKWgcgByIIXMtkJ0R+CccheC2YIcsD5M4iqIyQpOGyBjRyecr/ADv4rMPIB8h1yKciHDkQHIM8hflk+QP5IDkVRcZDdsXljkqRnhJ6LXhPs4YA8iE5Bc0BMCwgMIeRI8n1Qi6ruZacdpqR4XAuMV/PwvSdrRvth3wfy33/ALGDlxQYfgJzyRwE6J86RikWkQeW5DDCyJAz8JS7EBO/ll+Wf5IPlm8ixi1+PRLmXEuH4a33HMdayZwhnbDlwdL2i9IEk8v4IscI3hZzG42AIFiZAQPMhO5CRl4f9gx/yzfI5H5NwhwhyyyMORYwpMnDZxOS4f5FG4MkxyGQi/2sDJhwgaBCdL5BAfIUj+MBoTbkVuGGCdRiyAkhcS42A3XYJHiHPxkMA/kifh/k6bCD8kjsA9Sc5B9XvkluF4xcfsMUsmk3C30lzvZywvsvBPhLltsrxcmWjB3aXbOTPJFOfYiUjc2/1v6ZI+xx7YPsD6wv26lWyw+yBjYPJDdwpMrGxLMZ3HqeDdMTS8rxCbewQYd/FLljLJ3aEOux5cNxYFmDfbP9hH2B9EH6X0ZLL2E56Qbv/ouSJNYLsGel/oXL0n+hYfS3+kW9uy0EIEY8tRl9r8tp5HcN/bb7I+r/AEu0aWX7bsjy7y5E0ZjJ+UEM/wCBPEWogbdQALAMYklz8PIW2/5bZaE7JNKuflqHk4BhBLPtl9u7seohpNsFzYWGBek6GkkQYe4B7KeTyI/6kfW5esQ9bQ9b+1knWV9sGz9YZqQ+EiLkZBFPV9WS/EzQ8gv7GInfzP8AME+QHywJlhIP7F/b/f8AAmRGD2LE22YQ7cowk0RBggj2GwCM/jvD+Zv4TYhkfyDPL+ZJ+bunN7MHtsdsPs/7+GKQrJ7DKu3+0+9YvX5BfZL7Kffyl00gHluPJ/jfZW5k3Oy3UeNiBuRxl8V/hBnSU+X8UT5AQB8/Nttn8HCz+2P2/wBY79gHsAwMQjt2XXbZzjJmf/UwC/8A2DxWSEP8MTWw9h5+kk4Hr9S6MJpwt/Z7/wANf7/0I+wvt/vP97/WX+wX24Tr/wBquWfjLQhmIibHLcllbbqzkkuWySzTlukZSXZbXZLrKr+f/9k='
  1703.         Return Binary(_Base64Decode($BackgroundPic))
  1704. EndFunc   ;==>BackgroundPic
  1705.  
  1706. Func Texture()
  1707.         Local $Texture
  1708.         $Texture &= 'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWAQMAAAD+ev54AAAABlBMVEX58vL8/vwLi9S/AAAAHUlEQVR4Xo3DQREAAAABwWuifytBzFDBY6m5obwGWsMgvzLU9ywAAAAASUVORK5CYII='
  1709.         Return Binary(_Base64Decode($Texture))
  1710. EndFunc   ;==>Texture
  1711.  
  1712. Func Icon_LM()
  1713.         Local $Icon_LM
  1714.         $Icon_LM &= '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'
  1715.         $Icon_LM &= '1OS10Q5wcC5cjKUzaYCeIoaHD9Z66O96+aXNm38DBtHYhVw2zRYKqgqqrXe56qvRa71VPPb7R3q39VjM5ng8qigKiiIGA/X8i8/d5KF/Q1pXrvD5fJ9/9qWiqiiK7njowVAwAN0E1Rr8L1595Y2u7s1tbWtv1c1u069+WY1+U/wHkdDe883mV+YAAAAASUVORK5CYII='
  1716.         Return Binary(_Base64Decode($Icon_LM))
  1717. EndFunc   ;==>Icon_LM
  1718.  
  1719. Func DiskImage()
  1720.         Local $DiskImage
  1721.         $DiskImage &= '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'
  1722.         $DiskImage &= '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'
  1723.         $DiskImage &= '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'
  1724.         $DiskImage &= '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'
  1725.         $DiskImage &= 'Ulo2MHY4Q3wAcOvi9/wG/XisDkXkWW8IuZtW5SlssrM8kImSNFkBJrncTC0sVfNiHGQqUylVGoEC1MwlBgMog2UrIAJ83DBCpYWgeUMvP4NVgZ218x7SGTK6iADwATCzBszKkziZ9zGZlfzCczQ9ko4C7BE1BrDcdUJhTD4P/qYsXAuFAl10x8jcJaoA5FiYpvsrfAv45RTjBeej5JfuyWwCu0pgaQS42mUzULBGNSl1cezxFkPFGD2kOga3S/tlGVyKB+U/4jHF6D9If4Y9mRScrpmBFiULmIbYaoFcR4FEkEzOYa/J+BRhISQpyH5q4swfApWbR0MU1GmCXMlit4IlwDQ0vXmB9Tf6VAQNZp9jKKdpqaxDONSNj2hOllebd/8ATLExWMukV6uZLeI2tEd6qFnVxr0eDYjc7czSDMLY4nFgP7ueAjLlKCEfCMBx+YVEfuPkaozQNftgvChXbliu8wVVq4A5YF2cE/LSBCMUYzUex1DLiKPJesmWvhgdPLoI0n2TMke2M56gAgoC1KCMkDmbIa+kmmVNNUNH+IUwE3A1mct+45v9y4bcEqohC/Kv9QcNQGbAjptR+C/uBRCYEcVM8ctgh42ZQ4FUYy3KCrX6iPDEzT9SlsxLiZNxKECjgb/bAUAkcDWBmYJbtzC7ARDcCU15jHFWPKx/ZjgSqckBRRTbT/iBhBNjGqjodyo5rNxMAwc8sQg5Gu3H6n/SZzm/UAVlCOsAf8PxKXZqpZZTspoboJPmyUOoYcRBernU2RUFWxsVSJfWBzwj7MQCIDV5XK8kPC4sTLsxKLyfcBDUFquolyeiNd0DhMUmuiXU2gl1+kdv+kveEoXGYvUSgVpsk90JtNgryX6tPxFPNRHBV8TSkHiGgiucw+hU8TrSUOjpGMXZL8Pk6iro6UM9O/iV8I9tShLxkqxad7Ls/wDUPZncy+WK6MdQXOUOyWn/AIERdi4LxCLgwt0DK/RL0c8bON8Vf5lBNYRt+UfWlbspbq8QcQxxBgCOmKJVQbULJm5oISmARniinUKltqsIkdqWqr9wPYrmT0Q0og5i0oYzyXMC7ht4lMB+tlpC+0F+EY6q7Kja/cZXTNIqfZFxdwbfRZFTwI+ozEszMpZUtmBippm3R3lctJB8DLjfMzVxOD3LRagl4lN4ivU8MqALgCCdFZfiirdteFfnACSepbbgdPzaMBFGZQLKqZLE1LuWzce1pvlzzBgzd5Ur6l+3Z+KuXErXE34iLqDpI5eCj5zx5l666SRH5fyETD9CbEeEYVlYYGBTo0HaB2lFHCR3mbLczmNSwtxszidwYz9dOSm4DEuCHEDhEHUIQHINdHa0BlWOBXrQDr1itfRx/FfMC2Vns4TSQsD7AUZN2uwysmIiYtjLzMVuZvYzqsxy5goe5X6VLYupQbldKEuYJhz4BdF7WgMrG+eyHFBnH0nn+bMDEtLAZGGbRYH0UN3XLmoE2p1/IgiPYxc5lF5l7FGY9/irWfUtyyvd3EDOI5bFNbg7DoCMZMnq4Tq5cHAf1C3IqVcr3Z5deGVZZsh9RhfX2lZsS4dIpH4YocDyhHdIQJkYRh9CW13goiHtI6OrNvYE6z7sFteyz4iGHpifK4PBg/tX09/bwv8AJAdwGqe7Z9kAqJDWp0l+44o09sJJUll/5jmBouedbfEtuNTAeNEe4ZU1lXtRX+j/2Q=='
  1726.         Return Binary(_Base64Decode($DiskImage))
  1727. EndFunc   ;==>DiskImage
  1728.  
  1729. Func CDIcon()
  1730.         Local $CDIcon
  1731.         $CDIcon &= '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'
  1732.         $CDIcon &= '2YF0ACaB6zqGoCOFABpvoBzWsFJbAK3Nl+bPMwB6AHZ29n2v6S1eALMtdQ2UBq8JANR9g8DYcNIpAGRzOSQSCTeTAM3e2uKt4aWVAPJis+mLsNVKAAKmvxl3+xZqAFUihIDIROApAI5YLAbbZUjZAEn0ZXrw+sU3AKcXFv89QwHAAPd52N/fu2vsAMDo7sqKTcr1ABiklUQyk0E2AJtFPB5vc0EdANvOx93YVgIzABjx1hbfb6bzAPk88TxvQ9q0ANJrMkgIJDPwACjnx5777bGZAHPnJ+has2hRACpVxYHxu2+nAKyYisU70JFOACOdTsN13TUBAN/UvWEYkiAIAEhbpCmlYIx9AEoSlVLQWsMYAODc+fPvP//cAHNPc84X2uOgAOt1r6I1Kx4+APzNGzpSSZZKAKXgOFeuJGMMAKIo2nAhBHzfAEc+n0cQBNBaAENKiSiKYIyBAJCy/uyzzz5xAPHChb8CEPS/AIF0+PG56bnBAKGh6/fv3z/sADiO9UVbXggBAKUUpJRQWsJNALrwGwEsi0ApAAWldOu11177AP1bb00c01rXAD678Y0Qon7yANTJS1sHBrftANi+fQul1LraEJbfvEkgB0qBtwA4nJSCEApKGgCAEH9y8u0/vAD80p+ejKKoBABAX+2m0c1mcwDp7b9NnqeUdQCNjIxsicVijABsIrENKKXcAADTWkMpjSjicACLgaktqerx4wCvPH/8zy/9igBzPgNAfe4RBQBA+r6/NDHx5gDUv06f9np6+wB6+np7M+vZEgAp5VUBCYHhgQAMpk6dOvWbXwAfe+rdd975nQAQYg6A3Bz8fwDdjowQks3n8wC7xw8evOOeewDuuWV09+7hrgCu7nQylXSjMAC0ms2mXCmvtADm5uZrU1NTZwAmJt6cODs9PQDRarVmADTbZQD8soDt7zaAFACz7d5CPj+QLwAU+vP5fKdlWQAO5zyolCtL1QDqaqler5e01gBlAP56Cc3nBQD80sf4+klirwBTQdYzkOuurgCW0WftP3tKqyCAxDSxL6D6AEmARU5ErkJggi+A/y+AL4AvgC+AL4AvgC+AL4D/L4AvgC+AL4AvgC+AL4AvgP8vgC+AL4AvgC+AL4AvgC+A/y+AL4AvgC+AL4AvgC+AL4D/L4AvgC+AL4AvgC+AL4AvgP8vgC+AL4AvgC+AL4AvgC+A/y+AL4AvgC+AL4AvgC+AL4D/L4AvgC+AL4AvgC+AL4AvgP8vgC+AL4AvgC+AL4AvgC+A/y+AL4AvgC+AL4AvgC+AL4D/L4AvgC+AL4AvgC+AL4AvgP8vgC+AL4AvgC+AL4AvgC+A/y+AL4AvgC+AL4AvgC+AL4D/L4AvgC+AL4AvgC+AL4AvgAEogAawAE5ErkJggg=='
  1733.         $CDIcon = _Base64Decode($CDIcon)
  1734.         Local $tSource = DllStructCreate('byte[' & BinaryLen($CDIcon) & ']')
  1735.         DllStructSetData($tSource, 1, $CDIcon)
  1736.         Local $tDecompress
  1737.         _WinAPI_LZNTDecompress($tSource, $tDecompress)
  1738.         $tSource = 0
  1739.         Return Binary(DllStructGetData($tDecompress, 1))
  1740. EndFunc   ;==>CDIcon
  1741.  
  1742. Func Sound_Finished()
  1743.         Local $Sound_Finished
  1744.         $Sound_Finished &= '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'
  1745.         $Sound_Finished &= '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'
  1746.         $Sound_Finished &= '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'
  1747.         $Sound_Finished &= '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'
  1748.         $Sound_Finished &= 'qPpD+eEMFPqR+D0OlfeW+7oMoPbo/T0KH/kb/IAJ2Pzz9yoL1v3/9VUNT/vv95oN5vi5+ogLUfqN+i8JlP5p9wQJEgG69DULWP8Q9SQNMfxt9y8MN/y2+O4IAgBU9+EGfQOr9FMIGgNi81ELIwCP9MsL6f629o8IZQFZ9w8FCAWI9TQFHgYL82QIMwSe8isKQgLb9MQH/gJE96ID3wXl9lMCGQj588sE0Qf68VIH7AWM80UG7QQP93wCUAZV+AcABAnW9RUBfgrH8pADYAk08/ADIgfi9mEBrgaL+Wr+Dgkz+MP97Avm9GL/FQwU9NMAYgkG9wUAOgds+l39jgib+jH7FAz691r7mw0+9jX9SAvP9zb+/gcV+5v85gex/In5Jwt6+wj4tg1/+Yr5Zwx0+fL73AjD+9f7XQdR/rP4hQnj/s71awxo/V32aQz++2v5gQnF/NT6EAeG/274mQfIAdL0AApsASn0KQs///j2mglW/n/56waEAG74wQXsA/n07gb+BDjzvwjSAgz11wiMAPb3sgaVAWX4NAROBfb1uQOsB6PzeQU+Bgz0EgdHA4X2FQbxAjb49wIVBmf31AA9CTn11QECCTb0YAQ1Bo71zQSwBO334wGIBu34jP60CZv3W/68Cpf1DQHiCG71vQK5Brv3vQDwBkH69/xMCU76gPs/C/z3jP3YCmD29f/KCOz3Sv90B1P79vtdCOL8jfmaCgf7V/rAC274vPx7Cs34Z/0aCDr8TftKB/3+lPgWCTP+6PduC2P7gPlkC4/6IPu1CC/9sPpeBoAAa/gdBwoBgvb3Cdj+xfY0Cy39s/j6CHb+7PmvBYMBxPgXBT4DMfahB00C+vTSCWgAg/afCDAA+vguBTsCSPlaA6kEyfbfBEkFWfRbB+ID9vRjB2wC8/ekBPMCrfkMAmEF+fchAm0H9PQmBBEHbPQ9BfMEHvfNA+UD1fkiAaAFZPnH/5AIl/arAH8JFPVRAnUHz/ZyAiMFzflvAK4FuPoE/sMI5Pht/doK4/b3/ogJTPd4AJwGy/mp/9IFxvva/EMIavvW+v0Kmvmn+8YKvPgB/goIF/qX/jAGiPwl/GMHwv0h+QsKyfzb+O8KD/tR+xkJ9voc/bwGLP2h+3IGrv9X+EkI+f/y9vAJB/7L+HIJkvxB+0YH7P0T+6YFEgFU+CAGsgIn9vQHNwHf9tsI3f5F+YIHCv9Q+g4FCwLE+P0DrQRs9lUFKwTd9UcHoAGE9yQHowBf+Y8EzgJc+ScC1QWJ94ECewbw9d4EfgRc9vUFuQJo+O4DlAPh+ccAPQYk+ez/3wcM9/UBBAce9u8DEgW09/QCiQQ6+sz/KQbd+t/9TQjx+P/+zQjt9j0BWAeR93MBtgV4+gj/5QVj/IX85AdA+2P8mwm7+Db+IQlF+Gf/9wbM+kL+rwWL/dT77AaO/Xr6XglC+0n7Fwrh+fH8GAhu+0X9rQVW/pP7wwWH/2X5PQgf/uL4AApQ/GT6vQia/Pv71gXv/nz7tAT4ABz5hQbgAFn31ghG/yf4nwhj/nj6+gWV/1P75gPlAWr5kAQrA9X2xgZXAp72lgeyAPj42AV+AO76ZwNwAgH6vgLABEX3LwQUBQ32pQVMA8f3MAXTAU/6CQPaApr6RAGbBXH4dAEbB5P2BgPGBUP31gN/A675kAJaAw77MgDRBQv6CP8kCBr4FgC8B6P31AFTBUn5wQEYBE77cv+pBa37Lv08CEb6Uv3XCO/4Y//4Bmn5egAOBXj70/5nBRn9AvyKB7f8F/v2CP761vwgCDr6vf4dBrr7IP49BSz+cPtiBgP/pfkmCIT9jfqDCM37rPwEB1j8LP09Bfb+R/sQBd4AF/mYBhwA6vj7B/z9nfpwB3z98/tTBZ//RPvgAycCR/mnBGgCG/iaBoIA4/goBzD/lfpOBVoANPv0AuUC+PmvAhwEMfiWBAAD1PcNBlEBUPn0BFgB+fpOAj8D3/oAARQFDPlHAhQFpPcyBJwD'
  1749.         $Sound_Finished &= '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'
  1750.         $Sound_Finished &= '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'
  1751.         $Sound_Finished &= 'CwCyAHX/w/+xAMX/T/8JAar/MP9SAU7/fP83AS3/y//YAHn/tv+hAOf/TP/PAAAAA/8pAbb/Iv9DAWz/ff/5AIv/nf+cAPv/V/+UAEIA+f7kABwA5/4oAcX/Lv8IAbH/d/+hAAQAaP9kAGgADv+SAHMA0P7rACcA8f77AO3/SP+mABEAb/9GAHcANP9DALAA3P6WAIYA0P7OADgAHP+fACoAa/83AHUAYP8EAMsACv82ANIA0f6EAIsA/f6FAFIAXf8vAHAAg//d/8kAR//h//4A9f4pANYA9/5TAIUAT/8kAHAAm//I/7UAif+d/wgBN//M/wcBEP8NALsASP8OAHwApf/C/5kAwv91//IAiP95/w=='
  1752.         Return Binary(_Base64Decode($Sound_Finished))
  1753. EndFunc   ;==>Sound_Finished
  1754.  
  1755. Func Sound_Abort()
  1756.         Local $Sound_Abort
  1757.         $Sound_Abort &= 'UklGRgQqAABXQVZFZm10IBAAAAABAAEAESsAABErAAABAAgAZGF0YeApAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgIGAgYCAgICBgYGAgYGBgICAgICBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAf39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3+AgICAgICAgICAgICAgYJ9en+Eg4B4dYOJgXh6e4CGiomGgXdzeoWQjH1zbHeHh4GBgH2IjIqMe29rcYWJjY2Gf4B9eoaEhYl5d3x4f312dXV7jZWXj4JzaHV+g5OQhntubHiKkpN9X2NthJqfi3JeYW+HnZuLdGdqeoycn5J6XlVjhJykjWdSX3qVopeDcWt3foiWhnZrYW2Nm6WXdF5OYIijrpNnVlaBo6KQc2BsgI+Tjo5+bWloeqCpnHZPS2iSpqGAX2BqiaaolndpXGd/ipSSg3ZueJWsrZ1uUVBhfpOKe3lwc4iWkZF6eHF8i4eBd3d2iZmcmYd1bmZzf3hxcHB9gomMg396iol8d3Rwd4GBhJKhm39oU1V7kIiIgHN8iImKkIh0bXR0ho1+cHR5jZilnoN0V1pshYmEc2J0jJ+pmXl6dHaAfnp5e3p5hZGkpIduZnKFk4ZiTFZ1i6GXenFre5OUh3xqdI+bo5OHcF9SYoaQnoBRQEyHqrWidllec4WTh3t6dYCIk5qTfG9rh5yhiG1cVmmCk5mJfndwiY+Rh3yLnaGainlwfYqjm4NzWFNkf4eKf3d7gYB/cXJygpmfp6OJamhpk5+PfWJDV2p2i392d3lziYpyZmd2i52Xg25reZqqpJuDaXRtamRaXGaEpK2dh2dVZpSpqY1vX2mSp7yym3lkam6FhGlRTGmNmKGNdmNqfJKXk4d/f5Snr6KAXF5nd399YVhkdHtzfImOjYxzZnSDeYKKm7i6lWpWSmGCfGxmZ3NsdIiGjJmDd255h4KOk6CwqYdxcG5+g25gXWuDf4B/fYyQm5iPgW10jqW0vo9jVmR8h4l0TVBjcZCTj3ldaYqcl4dnYIetx7ODW1hpg5CJXkdIYHiKkZJ2cICMmpuFeICap7SVbWlveI2McmNvam10cHh9fJGKeX11hp+5t5p9XF99g4qBXFNkeoF9fHVreIyEeHBzgaSpt51zZXB0c2pdW2uFjm1haXeVt7KPcVVgfKG6uZlwXWt2hX1pV1p0gHZ0d4GSoKqikIuGhJaip5R3bnmLjn1qUk5ka2BvfIaSm5uamKSjmJ6em4JeVFFmeoF+a1RVV0lcg4yIj5eQlKCbqJqaoHtnaU1je3iEb1BcVFJ5g4CHloyRlpWqsrm5l29dUV9/j4RgWlRabHJzZHeaoqinkJKwtbWgd1ZQaYOem3pdODp8inl3ZW2Rl6SYl665pH9hUF9tfouMjXZjUUVkfXFyend/j5egub+pimBTanqHi350enRrVVBdcY+Wg3txdK3JxK11SlB5lp+JeGt1jIVmW0tilKKVinJqkbjGqnpgVXSUkIJ1do6XeGRQWY6fn4hodJSorpV0UFyBgn1+cWeGjoV/cWx7jIaGdWWHpp2PdWJdc3eBjIBje3pacI2AhpCRjXl6f3uFiYF5Z210fI+ZnZF/X1FbgaasnouHfZGvnnJqVkNTXHWioKKKe2p3kZaIjJOPenWEnJqPe15CXV1WVmiEkJKBcoOcqaqpoYx3bnVyiYdvXFFUcXF3b2ZvfH2Rl5+5xrOkm4+Mkn5nUEtTXnGBjWxdU2F3iKGuusash3+Dl7SdVDMwY4mei19IQlNjcHiQtcXTtH51fJ24rWI8KVuVqZtlQjhSX3N4jbPIuJuHdZC3roNNPUR4l6CFVUhNaXR7g5its5yJgY6xuohTM0aCp6yKYUpCSW6Iipyr'
  1758.         $Sound_Abort &= 'nH50eJuytJxeODh1mK6hemNTS1RthZ6qnnlqcpOrtpNgSD9hhpmkmIF2Yl5xh6SpnH9oa4ylpYtpWVRndI6Vkp2SfWVnh6ezr4pxcoONimpaT1ltdn6JhoaVk4iBj5+npJmEfIyUjG1GJzVTZ3x+bGt5gIqTrLazqZOKjoeimWlCJCBCXGxyXFxwfIaasrS0saKYm6WtoXtNLyhGZXJpVkJijJujtLWrqa6jmq+zsYxNKyVIgH1wVzU/gqGqq62RlKGanbKxtZFUNy1IfYJlTDs+iKq5uZp+eoebrbOxqHBKSE97hHZRKyRel7THwJ57bnqhu8Gsek07Voqkm2c5IDBymbjMtYp5bnapwrqCVDtDia+pfEopIVSLscq+nIRpeaW6rnhPOj16qqyHWj4lRH2pxb2df3N/p8K5g1E2Ll+Vn5lqRyo7bJ7AzrWNc26YusGfXz4tVZKqm25SLTRwn8C+pZd5fam2tphkUEdLeJKEaVdIQHelt6+Yk4uYu7Gce2BZaXF/fHFIQUJVhaixo4x8gaW9tpJrSldyh5KDdlE1NVSHrLStmn+Eqbi1k2VAWm2BmJBuW05EZImosqWYiZadrbGMZU1TaXp+elFMaGZ4nqunpJ2Rl56pmHZYSE1ucnVUL053fI+YmqaosaWfoaaLaFFCVWReUDk7V36SqKaoo6uvu7itpYJfYV9bZFUhFkR4j52xoYWara/Dzb2kcV9xZ31sNA4OP3WUsLSWjImZuM/NtolmcHV6bkwiFiZCdKW0s6OAdJe30M6rf29wcmtUNxgqQ1uCpq2wnYB/pcDMr4eFhYp3TykXQV1ripaboY+KkZq6xquGg4qSkHBAGyNEa5WqsaWDeX+gt7+kc258jKCHUSkcLVGCorO4lnuCj6e8nWlbbHqPlF81OiQ8bpqxtaCQmKq/wZhlWVlyg390SkBIRl9+l5yQoqy61Meuj3FnWV9bYGJdV1JnjJWHfHqRu8zMrIKBbmdpUE9VV2Nuh5WKeWdzm7bCtKeOjIllSz4xUHJ2fYyFiXx0i7PFvpR3apKenWA0GC56m5midlZoeJa+zMuodWxwhJRqRCY0Z5ajoolmY4Olv8axlYGHlY90SCEtXYaVlnpjZHSiwszAjGBfiKiue0YZKW2bq6l3UERZpMTOtnZVXoujl2EzKVmJnq6ng2pkW4yyw798aGlwiX5RLUaFmqiikYWSjoeDeZSSiod1YlhRSVN9i5aclYmds6+ef25teIeFbE45Nk16k6OcjXJ1nr7IoXVkWISJemI8NEFjf5SoppSCkbO8uI1tXYCAd2RCQ19seouiqoqQkbPGvJx1YnJ6a25LP2F6doeinoh/ham/wZdzW2VtZmNJUF6FhoWknoJ/j5art5Z0XVlXYktLX12Amae+t4Jrd5GuvJJlU1hbYUZCWGuDkKzGxpyAfo2jvJZaS1ZVZlNAQmOFmMnRwaSFe32lw7FnRj0+Y2lTPEt7mbvMwbOUiY+Vr5x6ZTouT1ZFR1mHq6exsJOnwbOhjl9ncDdDWjo+U1aQuq6poYqfwcevhFtqVDpBRFBja3WLrrO1qKSlssObYVJ2ZVdMNzpwgZKSg6GqsM3BsK2LW15PUkg9MEuGoqaMiI6hxtvApINqdGtdVTIvJkOSoqCOcGapzNSxnnpne3NUOTI7SHOOkYV2aZPFyMGthXuQi25GNThLe5WUjGpTZKTGyLmYd4GNhW5MNE5+mZaajVpchqKqtLOUfINvYlM+ZY2Ui4SCdXGUnXSInX6CkmpQVEVZiqWgjXl6jqGtelp7bnmTcT47UmaMrauWiIeZwb+QZmhmgHlmRDJVfJOhoo+PmqDP1qSKdmV+cVYyK0NlkaCciI+UmsvfvqFyYnZtekwrLTdrmIh6fW+PstDMv4pzbERdY1lOPE5xeX6Dh5CZvsK7r5t3VkpfX1dTXGlzi4B9lJ+uur+1gmhbUXtyYWFeT3+Xgo6nnZysrpt9b2pmfG9bUWNyiYqA'
  1759.         $Sound_Abort &= 'iKSxqLaicHltW3mIX19OTXeIiYmNlZ+gq512YHduhXxkUENcfX59laKcj5t8jZNwiIOOe2VWR2p4gouctKiWiFhrjYeZqYZ9d11jbGSCpqixsY9UYWx6hJqRfZGGbmhZW4a5uLKaWjxbeXePmGd1noBadVtYnbeqsndGQ2x3aX10fZKZel1OYpnBu6Z5SUJkiYZ2aWKCnZR/Uk2Qt87Di1A3UYKIfoFtgaijhVY5eb26yZ9eQ1t6f2l2boKvq6B2S1mrusSaZ0dTfY1nXU5xsLKrfFhZmrDDqGtLXW17cFRTZ5impIhzd5y1t5FzTmyJfGtaPWSSlpp+boCduMCVcFVsfnZvbz9ek390fmV/sMnDnn5TZn94aGhYZYyOenZSYrPCt6KDWW+QfWtZZIKLhIOEV3W0wZ2Ug1N6jG1gVnCQjod0c3SYtsyjfmtUa3pralZhiHx7hHmIrL23sYhYampXYVdoaHN5aHOBoLnGnaqUZGpuR1JacoJpV2RrdabTvoyflF93gFJIb4KUcFJdZYmz0rSFqJpmc2dFSnyFmoJQS2yRwdK8lqONf4JhSz9zhY2CUU1zmMXYxJeZj3V4Y0VHc3p8aExLeazEzcavkoF1al1GW2JlbmZLT3mqwMHEuIaNdlNdSFx3bF5UTlaBrMXEs6B9i3t5YT1PbW9naFtUe6rAx7yXf313hmJZYFxtb3FqZI6nvsCxjIaQf3l0Y1dgi3l+cmCaoaSkiHmYnJF2Y1hZZo51hYN9nqiVbVd8mMGhZlVDT4CDfnx+n7S3eFJMeJ3IkVZHP1iEgnN2krTBs2lPWYqpqXdOQ11ldXVqjMTPvJJaUF2atJ1vWFdxb35dYKXD06pdPUZ+tqiPcVRwgHp2WYi3w7NsOEJ5q6WQf2xud4ZnWJO2wbVtPDtukpp/eHZ8iIN0SH2/w7iDRzdjkZF5Z1Z6j4SIYGSxzcGOXURSiZuEXUxni4J7cVuYxs+iaFJSh5aPbUpag3p1blmaw86tdFFch5uNc2pagpRqX1CGt8u5flJSfZKah3RheIxtYlaOsceud0lRdIuXhoKIhJluXViNsLCddElOk4V3enOgrZt6Xk+PuLiLZU1UkJNrZF+OqaJyX1SUtbyDT0NakIh+ZlOEpqByWFOXusuOTDdCjJKFd1xvrKp4WU2GususW0M4hZqChHB7qqt/U1GDusSwZ0c8ZHeJhY2frqx2U1R+sbiqbU8/VmOGfYW4wqd2V06EsKmfckU5XGVucouxwbqBbVV8rK6aZUU1TGlfcIqrt7mSiXWBoKqKUD1GSHBtW5+dpbKklI6EmZ6KVSlQYGdwYJeknq66rZyQm6WMTSU8UHF4aoyblpuswq2Or6FwRCExSG9rZoqSj6myvLysrZ5vLh4zWnNra25whaXCsLOzpZViLSkvWXR2bm5bd6+7sLm1qo9QRU1BYmR9gWNig7i1oaqyp3NCUVhXcmSDkWZalsalqMKulE8nVFZ2hnqAdGR4prWqxMWyhjooQW+Gl3tyaGWMpJ2sw76ycjspN3SRmHZ2a2GRppy8vLSbUjgsQHaNhoF+dW2clKrVvK53PTBDYIWDdn9+eoqUjLfCua1nPzFFd4h/eGVocIeBlb7DwJpaPi5UhoaQgmBia26DpLvQuWlUQzd0mZKPhW9pblmEuLvKqV5ZSUd3o5mGiYZzYFODtbW7j1VRRF19npqDfJN7XmqSrrKobFlEPXCVlqaJepN5gJKToZJtXkxXYHaSmqmLfoyOkJeGhGdISVR5dHiAm6F+eqarm4p5Y0dBSWCOj3uClYVzoLW9snVqRzJUV2acqpiRjniDucDKrHpLMkVaWHuwxaGCgHaUsLetj24xQWhSWn6xwI1zfHmhqbOMgkInZGNXaYC5p2qAi4+nsJyBYydKaV5tdIa7gleNkKO6tIZ8TilPZll1iZCeZGKJqrjBpodiREteZ0t3oJZxdnSKtLy5qXpPbFdqbV6RoW5pe26iubOvnmRh'
  1760.         $Sound_Abort &= 'dnBwcX2He2RxaXqtrbmsd2ZxcXdyhHppa2lfaZCvuaaTjHNue3iHe2ZiZl5kbn+hpHeOnoGBeYyNYVdrZWhqcZSTaIuljJaLjZV7amRfb21neJhrapOYsaeJjJN/cWJ/bVlyiHFsepS2vqV7d4WHeomBWlJca3hrgbW/u5Rwdm1+pptwRj9KWHCIo7u4m318WWeXrZljRUZDX4qWsMCeeolwSnubpZ1nTk86cpCpxKJ3h4FWXIKZopNbQj1hkpnDt4B4cGVifpuajVsuRHqaoMG/mXhrcXCBio6DUS5YiZKbssKkf257eHZ0jo1CMHqVgIahwaaCeHt3gnV/hllBb6mNcoe8qHVze3qAcH+JWUtur59igLOHbYR9bXBxkntKbIqonGlqo4dwfG9zgXl3bWWHna6PdGuQh2htdoGFfGRLfp+qp411dpOJY291go12UkSSrrWhj4VvjIhncnuBiW5DQpy1uKaciGeDhXJybnOEVDJnrLKtoqF0bot+aXJ2emwzMnyspLuti3Rrh5R4f4FlQCpDjqmjxKuDal2Inn6JilclMGiooKrOl3h0comLlaB0PilFg6mgu8d3ZYN/jqOxjVQsLmWjqK7cpWBtcnigtLNsPRk/g6ivxceKXGFgdpmupVgpFFqYpLjVrm9UXFOHobWKSxgne5ae08qOeFZWWZGmr3M3EUWPkrfmrIpqTFV8maKZZCAiapur0dmygEdHbZmUnYM4E0yFoMHYwI1aSlORqpqJYhwuapC7y7OMcU1Pkb6kdmE8KlN7q9G4nX1jRoS8tnpXPEBXc6q9sa2OblNvprePWzAvam+TxcGmnXlnY5WjnHBFGlJ3irTQvqJ+a1qRpaF/WSI5a4ent8GtgW1bfqiphmQ2JVmNoaW2rXdSVH2hoo1rRihOiaWnr62EVzpoq6ukclA1UWWatp+lp3dMTpirp3lVOlRsgayimaaQXVqDq6eLXEZEcniZo4SIpnVng5ydm3FQOmuAlY1vepqGeJmPlKKHWz5Xh5OXbE52gnakq5KdjF5QUoianXtIUHd7nq6qnINUVWKMmJ+MVjpfiaSnqq6PQVOAlKGykmE8R3+nprGnfkxPeqCswJtZQ0ZvmK2um3ZMQ2yhs8ijW1FCUo61pox6VTZWl7XJsnRgSEyDqZx6ckwyXpiwxa56Y05gkKeScGY8KG2ntLenfmBhdJueiXBlRCtho7K7pXtsfYafmIFgV0tUZ5qmrKR1ZZWmsJ9tXUw0c5GhoZaSZFKgxr6acVk3LnWhqLOadllIkr7FoWVJJjd3kK7EnGlnUHyuwLBkQiY8e4muxplgaVhvs8GyZ0coUomRrryRaWhjYKu5tXVTLmGZnKirg1lgbl2jtrR8Ui5uoqOwo3NEWWZcsL6zelEtcKidsKxzO1NqZrK2rHRQMXaloKqicUFZcG6psap1TjBzpaOmk2RCVXOHuraocVE6gp2iroNBQltrl8nCqWpNOomkratzNjhPdqjRxaRiSTuIrb6uYjYtSIrA1MKLUjs2k7rGqmE6I1GeydDFeUItQpbC0athPCJeqsjUs2M7KE2aw9azZEMlWqnE1qlVLChaqcbaq1k3JXe0w9CTQCU5YK3H17NaOy6Ds76wdjUmUIizyM6ZUTs3ka6skFouNW+owr+rdkYvVqmrp3dLJ0yVv7m7j0w+OIuwsJdgKy9wssu7qWU1NWizt7R4SylJicfLuZBTOTmRtLufXzkycKXQyKdsTDJVsbrAh1IuTJ7B0L99Qzg7kL++t2pCM320v8OTRytBdLO9yY1FNEmiuMWkXSssX5/DxLVmPzlxucK9cEQiR4u6xayGQi89j7/ItmQ/I3Ctw76JTh0ybrzI0JlRLEGfsMKiXSIcTqDL0MVxPyhprrrCgTwVLHPC0dOdUTI4mLjFrmMnHEKez9TNekUlVK6+yplOISRmuszWr1o7L4Wzw8JyOSUsgsHP05BOODydsMSpWTsoRZbHyciDUTdhrK+v'
  1761.         $Sound_Abort &= 'cUs0SYnGxrudXUdElKiviVE7TYCsyraLZU5Gc56rol9FQXKew8SMYFRHcJyosHROSFqZtsqsZlFGZqCut45HQEyMscS8dUVCWJqytqhYN0NvrbvDiUo5VI+utK1tM0VXmLnErF5COnSmta6GPzZOjba6uHRFNGWnrZyPVihQjrq0sIJVN1+ms5OEYzVHh7qysINYQV+XrJp4Vz5Tgbi6spleQlCRqKiBWzRJg7vJsZxkOkeRqKyPYT5DhL3JtJNoQUmXp5qKZDhTiLPMv5hlSkSNpJ2AXi5SlqvIz5NWUz2DqqiCVi09kcLN1KBKRjV+s7OVXS8sbLvS0LxfPTFktbyidDkiVarY0cRxNzFcp7unf0QeTpTP1cuGOylSobKifEsWTJDL1s+VRydGmamWfFEcVqrIz8qOTic8haGLiVolW6rD0r6DWDVMeZd+glkzZqXDz8B2V0dllKNoX0NDgbbUxrhwTExwnLBqVSs7jrfdzqlsP0V/n654WSwvkMDa2KhsOUWNpa6CVCkqhrzW4LRxQjd+pKuBUiMjh8LU4LBgQD2OoaBxRxQwisvX3K5bPUeZpaZwQRAsfcfW2qxfPkSjsbJ9RRIlcLzW271lQTiPsLWRTBQgZq3S18NwSDuErrmVVBYoYZ3Pz8N7Tz+Ep7OXXBktZJrMz8R+VEB9orSWTxY2YZvMzrtyVlCIoKKIQBdPZKPNzqxjUmiVnY10NiBqfKPFx6FdWXKVnolkMS15nLDFvopVVYKbpIJVJEaMscnDqGtNUZaqqHdGHFibutm8glVAVaewqHBAGVufwt26dk0xVKexqXI+E1Sjwt/KeUgxTaOxqnI7GU+ewNvNfUk4SJ6yqXk/HFKlxNzSgkc3SJ2tp3Q8G2Kwy9/IfkM0U6Kqom07Im63ztmtaj42caaplF4vLH6709OdZT8xh6+mkl0rL4O908yQXTczjamkklcoNInA18mNWDQ9kKirklEtPI7D1MOOXzdEip2rkllCPIbEzr+TZDlYjJSpg1hLTJPIy7WRXTtufoyablZQZ6fNw52HWkOCb4KMWmBYda7RwIuHVlWKbIJnU2JakrjMuYxsSGqAf4tWXFNtpcLHs5VoTmtrfoBXXUJipLS6sZpuZ1tXhHp0e01wqMK3rI10Y0tLaGF3eVmBo7vGtJmQaDhPSEuMf2iGiJ2ysqelZUNRKFmhj4uIdoeeu8CqWEY5GXOsnKSIbnasy9KhVUYeH4GjoplyXm+l0MqKTzkQNYerr5BwXn273cB/USQkXJ29r4pzVJ3Y36xvORdHfbPEoXdbT7Xd0JxmIyFcibi6g2dSar7StXlADD5ql7ilZVtJhsTMpnIrG1FumrGRYFVdrsjIlmkgP26AoJ1vWGGYxM6qdkU2a4iQjXRNWZC9zsJ+UTximaOGfFM4ZbbE0pxePVSGt5xqWSs/l8THwHlFRn2ku31SMS2Dw8HAgU5AhKC7mlE1IVu0xMKUVjVxrbW+eD8gOIzBwqxrPkanvMaeSyYqesHIvHxJNHrBycJyNRxGpcfGnmAwU6LGyKRWKC99s8WwckI9erXEsnE8LWajtK96TEZun8GyhlM5T5Kpq41cR3KTtLSJYERRi6Sjg11Iep2rtoZbTVKHoaKGYD5rpa26k1hEWZKqrIpkNlSbsbujX0JNkK66jGE5PIOtuK5xSEaAqbqbaUI1a6S0uYhURG6kuK12TDNXi6q3nWZNWJi0tYdVM0+BmbKzeVdNh7G8jmU0Roabp7KFWliFrbmPaUJIhqSjo4BbV4iytpFpS06DqJ6Vd1RZgrO0lmpNUoKlpodkTlF7sr2haU9Mg5+phVlKT3WzwrF8VkqCpKqCWEJNeLDEs4NcUYKgqYlMN0Z1rcavflpQhqSsjk0vQG2nyLaHYU+Bp7GYUys3aaHCuI5oTHmmsqZhNC1gmreyjGpJd6axsnhDMViXsbCSbEZxobC5jFQzSYqqsJZuSGGds7qWXj1MkaiqimY/ZaKz'
  1762.         $Sound_Abort &= 't5RjQlGcqqaDWThknLG5m2lISpasp39XNVaTq7WdcVJDja6thlo1TY6ssZt2W0ePsbCEWDdWkK2vk3BdT5W0rYJdOluTral9amFYorezhlg8ZZGwpmpjX1KguL2QVzhejqmwa0pVVqS/wI5SNV6Xr7FqR0FWrMLImVYyUZOqunpJNk6lv8mnYThChqW3jlc4QJe9ybVuQTp2oLKWZD4/irnGv3tLRXKWrpBmRkSGtb28g01Ng4+fg2E9S5m1urmHU02OmZZ5WTxNobu/toZZSoyjh3ldMFOku7urflNKkaSGeFwwVqK6vah8UkuMpYl7XS1Un7m/onxXS4ekiHpiN1GYt76egWNOip5+eVs6V5O1xaeFc1J+pHh1XzdWkK/BsIlvXXegdnpaMFqOrMe7iGlodJZ/dU4xXJCoxLiBa2pvj4x3Uz1Xi6DAtHxpcGWDkXpaSFeDnL+/gXNuXoGUemNSTXiVu8CPfHNdd5iGY1pPc466ypeDfltwko9fWFV2h7HMkoiEW2+LjHNXTnKErciKjIRUcoqNglZCbIO3vomQf0prkZmNXkBgfrLBl5V2OGedk5V3SE93q8OcnnQ+VpSVl41TSmyXtJ+ldklIf5WXl2lOYImspKqFVz9ul5KhflRkhaSqtINbQ1yJjKmKWWqCk6WwfFxLXnuMq49odoGHo6ZwUVRlcZapinF9eIOqlWJMV2t3qK6EdHpthrOMa1BdZ3uzsIV4eWCGsol0UmJchbS1jnhvWIa0in9kYEmHtraUfGJOiKuXc2VcQ4u0rouAXE+QqpNnb04+lLSnj4BVUJeqjGp3RkKcr62XeUlemquNeHM9TaO4uKNvSVeJsZV7bjlYqb/ApWdKU4Gsmn5gNmqtvMGfXEdWhKKPflNBgrC+t4hOSVmPmod7TkuKtMKvgFRHYZCUlG5JToqxwa18UU90kouJXT5imLzBpHRWT4OUiX9KQnOYxr6fcllXiYqBe0lLd6DFwqt7WmGBdH9zOFqDo86ypHpdZ3pygmE2dJGuyqmPbmRtdWp6WESJk7PCmXV0eXZsb3JHVpubvLWDcHWGgmtzUztvpai7qndshYqEd2hDNWuhpreod2qQkYR0WUE7ep2it6FugaGKg3pIN0GBpKexnW6Kqo6DbjoxWI2kp6KQfp+njXdYKEB5lZ+VmnuOraiEX0QlUY+Xj4yNcqa0qHpVPC9hlpB/hoCFsbqfakY5SYSci3l9eqO7vZlkQDplnpuEem98sri8jVI2UoSZkItsZJqztK6BTz5znYh/gVFzuKyumWpLX5GdbG9cQae+n6F+UVWLn41dWDpiwLOgiWlAcamle1lCOZXHso93T0mau5hmVjFgssqidWVIc7K5eFhFOpjKu4hlU2Cdv6VdUjpltcetbl9Nfqm1hFVEQ5TDvJNlTU+bsqpwTjBhrsayfF9BZK64mmJCNIO3xJpmUUeMt617Vy9RocG5gVxFWaq8nGxLM32xyaRrS0SAuK+HXjlZocK5g1hBYqu1mnNJPo64vphsR1OdvKaBWThjpb6sdl9Jdq6ziWNGQ4y1tYttWGGitZ9uTEJppbehdWZVhrOriFk+UI2rro1pZG2atpd0UEBon6uZfnFohbWne188TYuvnoh6analuIVjQjloraaJgXRtjbWfaEU2VI6nlId8Y36jtIRVNUx8m5SLhW52lqudakFBdpeWjIR7eI+gpYVWP2GNk4qCgX6OnaORZ0lSgJiRg3uEjpyel39SRG6VkXp9goGdopaKZUNdkpd9c4B2k6ebi3FLT4iegG19doKnn4qFVUWCmodpfH54oaeHhmhEc56HbGyGeZqtjoZwQGmsg21zfHWPqZmGcUpXpIxrdoR0iKakh3FVUY2YfXCBeoKiqI19YEd4oYJogYx1mauQfmlHb5mGcXaLeIqonH5yUViVjXVrjHl6naSAiF9HiIxvbIaHcYmljY12THeTamyAlHp0k5yFgmlzkHFnfZyMd4aYhXx7'
  1763.         $Sound_Abort &= 'dIZ6aXGUmIN+j4Zze36AfHFvipuNfYWGenV8fnxzaoGYkH6BgHp2fIF6dmt4lZ2DeHx1dH+GfnhucIyej3l0dXV+i4N4dG2FnJqDc3VyeI2HcnZzfpSajXNyc3OMjm5yeH6Rnph+bXZveZN4Y3WCkJiciWlucnGOfGBzf5KbmoxuaXZuiIdaZoCTlpeReWV2d4yJXV96i5mbjX1oeXyJkGxVcoycoJCDZneCiJl7UWCHmaGVhGt3hYWbildYgZidl4dta36GnI9bT3qUnJ6TZ2B5hpqWa1F1lJmgk2RVbISdkHVlcY2WnphwWWd3k5R5aHeOkI6TdF9rdZGTdGJ9lZGGjXFhb4COjHhkdJKah4t3X296hpGFa2+LkYmOh2RpeIOQiXBxjJGFk41qZ3V/kY91coyNgZWVbWJqeZCQeXyKhH+ZnGlZZ2+Bl4Z5iYZ6k6FxU19qeJiOgpCFe5mdc1pgZnOTloyMfoKPlYBkY2JriZaUlHp/lI58cmtkZoKRkZ9+fZmTc3FxZl+AjoeiiXSdm3RrbmxgepGCno90nKB2Z2FkYXiMgJmVcpyqeWlcWltxjISVmHaXp31oWFZbco2CmZZ0mK6AcVxOWnOOiZaQe5irhnhnUVd0jYiTkXqTrox8bFJceImFkoR1m6+RgW1SWHmIhJF8bp+skINrUVl5iYWPeGySqpeJb1ZYdoqGkHprka2Xh3RTUnaOiJV7b5Srl4tzT091j4iXeG2QpZ2Qc1JUdI+GknpsjqmdjW9PUH2Vh5V1YY+tn5huT1N9kYiTdGKNqaCXbVVUfIuCmHNml5qZkWlZWH2MfZJzapmXmIpdX2F7iHuLcHKmoIuCWFxnh5J/eXJ6qqeIek5TdpeNhXtnf6ypi3hEUH2gmYdyZ36lq5BxREyDqZmHcmZ6pKmPa0RPiKediW5me6WqlWhEToWon4pnY3yhqJNmRk+GqJ+LZGWDpKyVY0RTiZ6cjWhihqmokGNJVoSdnYpnao2jo45eQFSMnJWIb3CPoqaHV0NdjJmah250jp+ih1hIYY2VlIhreZWfoYZYSmSMk42FaXmXnqCBU1Jri4+JgWN7o5+dfFFTb5KThHlge6WhoHlHUniSkIV7XnimqJx4Tld1kJOHeGF3oKaXdlJae5OQh3dngJyjmHFPYICTkId4Z3+dpphvT2B/j46IcWGIo6OWak5ef5GMhGxgiqWnmGdPYYGRiIdtX4+pqY9fVWiGj4iFamSWq6qJW1Rvh42GiGtqm66je1ZfeouNiIRqdZusnWxOZoCOjol+an2aqpRfS22GjYmEe2yBmqeIV090jomBgHlwhp2ghFpZdouJgIB0c4iZnYJfXnSMiYB6c3aKmp9/X2Z1ioh/e3F5jZadeFtrdoSIf350epGVmHNdcXmJiICBeXySkY5pX3WAg4KBfXyKkYyAYmd9hIWBenyCjY6JfGZufouCe3iBjJONg3Rte4WIfnlygJOUi3xseYSEhn91bYOaloh3aH2GhIN8dm+GnJGGcGCCi359gnRviZuRg2ljiIR+gnx2doqWiXtmbY2GfXx8c3yQk4V7X3STg3t9e3F/j5CEc12AlX56f3hug5SJfXNgi5l7dnl3comShX9rZZaTeXh/c3OKk4F3bm+WkHp8e3B5j5J+dmt7nop2fXl1gpGLeW9uhZqCeIB4fIeIhXdweZKSeHh+eIGKh3tycX+UkHp6fXmGiYJ6dHWFl4t3fn16h4eAeHJ9i5KFeX96foiFfHV1gYuOgHt+eYGFgHt2eYOIhn19fXqDg356d3yDhYF9fnx+g4B8eXl/g4J+fX59f4J9enp8gYSCfX6Af4GAfHt8f4KEgH1+f4CBf3x7fICEg399gICAgH19fH6Bg4J+fn9/gYB9fX1+f4GAf35+f4B9fn5+f4CAf35/gICAfn5+fYCBgH9+f36AgH9+f3+AgIGAgH+AgICBgICAgYGBgoKCgYGBgYGBgYGBgYCBgYGCgoGAgYCB'
  1764.         $Sound_Abort &= 'gYCAgIB/gICAfn9/fn9/f39/f35/f4CAf35/f4B/f4CAgIB/f4B/gH9/fn5/f4B/f39+fn9/f35+fX5+f35+fn1+fn9/f35/f35/f35+f39/f39+f4B/f39/f3+AgH9/f39/gH6Af39/f4B/gH+AgH6Af4B/f39/gICAf39/fn+AgH5/f39/f4B/fn9+f4CAgH9/f4CBgICAgICAgYB/gICAgYGAgICBgYGBgICBgYGBgYCAgICBgYCAgICAgYGBgICAgICAgICAgICAf4CAgIB/f39/f4CAf39+f4B/f39+fn9/f4B/fn5+f39/fnx9fn5+fn59fX5+fn5+fX1+fX5+fn5+fn5+'
  1765.         Return Binary(_Base64Decode($Sound_Abort))
  1766. EndFunc   ;==>Sound_Abort
  1767. #endregion binary strings
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top