'Creates a self-extracting VBS file slightly more than twice 'the size of the original file. The created file will be named 'the same as the source file except for an additional VBS 'extension. For example, "test.gif" would create "test.gif.vbs". 'When run, the self-extracting VBS file will create the original 'file in the same directory as the VBS file. ' 'This script uses the "q193998.BinRead" object (named after the 'Microsoft Knowledge Base article Q193998). If the object 'doesn't exist, q193998.ocx will be extracted from this 'script, registered, used, unregistered, and deleted. Dim fs, wsh Dim blnQ193998Created, strQ193998File Dim blnScriptCreated, strScriptFile Set wsh = CreateObject("Wscript.Shell") Set fs = CreateObject("Scripting.FileSystemObject") 'Verify we have a good argument If WScript.Arguments.Count <> 1 Then WScript.Echo "Drop a file on me. I will create a VBS self-extractor." WScript.Quit 1 End If If Not fs.FileExists(WScript.Arguments(0)) Then WScript.Echo "The argument you supplied does not exist as a file." WScript.Quit 1 End If 'Check for and create each object as needed If IsRegistered("q193998.BinRead") Then blnQ193998Created = False Else strQ193998File = fs.GetAbsolutePathName(WScript.ScriptFullName & "\..\q193998.ocx") CreateQ193998 strQ193998File RegisterServer strQ193998File blnQ193998Created = True End If 'Check for and create the working script strScriptFile = fs.GetAbsolutePathName(WScript.ScriptFullName & "\..\~sfx.vbs") If fs.FileExists(strScriptFile) Then blnScriptCreated = False Else CreateSfx strScriptFile blnScriptCreated = True End If 'Warn the user not to close this window If Lcase(Right(Wscript.FullName, 12)) = "\cscript.exe" Then WScript.Echo "Do not close this window. This window has launched " WScript.Echo "a child window to perform the requested task. This " WScript.Echo "window will close as soon as the child window finishes." End If 'Launch the working script and wait for it to finish wsh.Run "cscript.exe" & " " & """" & strScriptFile & """" & " " & """" & WScript.Arguments(0) & """", 1, True 'Delete working files if appropriate If blnScriptCreated Then On Error Resume Next If fs.FileExists(strScriptFile) Then fs.DeleteFile strScriptFile, True On Error Goto 0 End If 'UnRegister and delete objects if appropriate If blnQ193998Created Then UnRegisterServer strQ193998File On Error Resume Next 'Delete might fail if OCX/DLL isn't released fs.DeleteFile strQ193998File, True On Error Goto 0 'Turn Error checking back on End If Function IsRegistered(strObjectName) 'Returns True if object can be created Dim obj On Error Resume Next Set obj = Nothing Set obj = CreateObject(strObjectName) If obj Is Nothing Then IsRegistered = False Else IsRegistered = True Set obj = Nothing End If End Function Sub RegisterServer(strPath) Dim fs, wsh Const SystemFolder = 1 Const WshNormalFocus = 1 Set wsh = CreateObject("Wscript.Shell") Set fs = CreateObject("Scripting.FileSystemObject") Select Case Lcase(Right(strPath, 4)) Case ".exe" wsh.Run strPath & " /RegServer", WshNormalFocus, True Case ".wsc" wsh.Run "regsvr32.exe /i:""" & strPath & """ """ & fs.GetSpecialFolder(SystemFolder) & "\scrobj.dll""", WshNormalFocus, True Case Else wsh.Run "regsvr32.exe /s """ & strPath & """", WshNormalFocus, True 'wsh.Run "rundll32.exe """ & strPath & """ DllRegisterServer", WshNormalFocus, True End Select End Sub Sub UnRegisterServer(strPath) Dim fs, wsh Const SystemFolder = 1 Const WshNormalFocus = 1 Set wsh = CreateObject("Wscript.Shell") Set fs = CreateObject("Scripting.FileSystemObject") Select Case Lcase(Right(strPath, 4)) Case ".exe" wsh.Run strPath & " /UnRegServer", WshNormalFocus, True Case ".wsc" wsh.Run "regsvr32.exe /u /n /i:""" & strPath & """ """ & fs.GetSpecialFolder(SystemFolder) & "\scrobj.dll""", WshNormalFocus, True Case Else wsh.Run "regsvr32.exe /s /u """ & strPath & """", WshNormalFocus, True 'wsh.Run "rundll32.exe """ & strPath & """ DllUnRegisterServer", WshNormalFocus, True End Select End Sub Sub CreateSfx(strOutFile) Set ts = CreateObject("Scripting.FileSystemObject").OpenTextFile(strOutFile, 2, True) On Error Resume Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("44696D207661724279746541727261792C206C6E67436F756E7465722C2066732C2074732C20626C6E576173437265617465640D0A44696D2073747246756E6374696F6E4E616D652C207374724C696E652C20696E74506F732C20696E7450657263656E740D0A436F6E73742042595445535F5045525F4C494E45203D203235360D0A436F6E737420466F7257726974696E67203D20320D0A536574206673203D204372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422290D0A274261736520746865206E616D65206F66207468652066756E6374696F6E207765276C6C20637265617465206F6E20746865",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("20736F757263652066696C652C2062757420636C65616E2069742075702066697273740D0A466F7220696E74436F756E746572203D203120546F204C656E2866732E476574426173654E616D6528575363726970742E417267756D656E747328302929290D0A20202020496620496E537472282251574552545955494F504153444647484A4B4C5A584356424E4D31323334353637383930222C205563617365284D69642866732E476574426173654E616D6528575363726970742E417267756D656E7473283029292C20696E74436F756E7465722C2031292929203C3E2030205468656E0D0A" & S & "73747246756E6374696F6E4E616D65203D",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("2073747246756E6374696F6E4E616D652026204D69642866732E476574426173654E616D6528575363726970742E417267756D656E7473283029292C20696E74436F756E7465722C2031290D0A20202020456E642049660D0A4E6578740D0A49662073747246756E6374696F6E4E616D65203D202222205468656E2073747246756E6374696F6E4E616D65203D202246696C65220D0A446F205768696C652049734E756D65726963284C6566742873747246756E6374696F6E4E616D652C203129290D0A202020204966204C656E2873747246756E6374696F6E4E616D6529203D2031205468656E200D0A" & S & "73747246756E6374696F6E4E61",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("6D65203D202246696C65220D0A" & S & "4578697420446F0D0A20202020456C73650D0A" & S & "73747246756E6374696F6E4E616D65203D204D69642873747246756E6374696F6E4E616D652C2032290D0A20202020456E642049660D0A4C6F6F700D0A73747246756E6374696F6E4E616D65203D205543617365284C6566742873747246756E6374696F6E4E616D652C203129292026204C43617365284D69642873747246756E6374696F6E4E616D652C203229290D0A73747246756E6374696F6E4E616D65203D20224372656174652220262073747246756E6374696F6E4E616D650D0A27526561642074686520736F7572636520",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("66696C650D0A766172427974654172726179203D204372656174654F626A6563742822713139333939382E42696E5265616422292E7265616442696E46696C6528575363726970742E417267756D656E7473283029290D0A27426567696E2077726974696E6720746865206F75747075742066696C650D0A536574207473203D2066732E4F70656E5465787446696C6528575363726970742E417267756D656E7473283029202620222E766273222C20466F7257726974696E672C2054727565290D0A74732E57726974654C696E6520222754686973207363726970742077696C6C2063726561746520612066696C65206E616D65642022222220262066732E",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("47657446696C654E616D6528575363726970742E417267756D656E747328302929202620222222220D0A74732E57726974654C696E652022220D0A74732E57726974654C696E652073747246756E6374696F6E4E616D65202620222022202620224C65667428577363726970742E53637269707446756C6C4E616D652C20496E53747252657628575363726970742E53637269707446756C6C4E616D652C2022225C2222292920262022222220262066732E47657446696C654E616D6528575363726970742E417267756D656E747328302929202620222222220D0A74732E57726974654C696E652022220D0A74732E57726974654C696E6520225375622022",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("20262073747246756E6374696F6E4E616D6520262022287374724F757446696C6529220D0A74732E57726974654C696E65202244696D2074732C2078220D0A74732E57726974654C696E652022436F6E7374205A3D2222303030303030303030303030303030302222220D0A74732E57726974654C696E652022436F6E737420463D2222464646464646464646464646464646462222220D0A74732E57726974654C696E652022436F6E737420533D2222323032303230323032303230323032302222220D0A74732E57726974654C696E652022496620496E737472287374724F757446696C652C2022225C222229203D2030205468656E207374724F757446",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("696C65203D204C65667428577363726970742E53637269707446756C6C4E616D652C20496E53747252657628575363726970742E53637269707446756C6C4E616D652C2022225C222229292026207374724F757446696C65220D0A74732E57726974654C696E6520766254616220262022536574207473203D204372656174654F626A656374282222536372697074696E672E46696C6553797374656D4F626A6563742222292E4F70656E5465787446696C65287374724F757446696C652C20322C205472756529220D0A74732E57726974654C696E65207662546162202620224F6E204572726F7220526573756D65204E657874220D0A74732E5772697465",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("20766254616220262022466F722078203D203120546F20222026202842595445535F5045525F4C494E45202A203229202D20312026202220537465702032203A2074732E57726974652043687228436C6E67282222264822222026204D696428220D0A696E7450657263656E74203D20300D0A274E6F772072656164206576657279206279746520696E207468652066696C6520616E642073706974206F7574206865780D0A7374724C696E65203D2022220D0A466F72206C6E67436F756E746572203D203120746F2055426F756E642876617242797465417272617929202B20310D0A202020207374724C696E65203D207374724C696E6520262052696768",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("7428223030222026204865782841736362284D696462287661724279746541727261792C6C6E67436F756E7465722C312929292C2032290D0A202020204966206C6E67436F756E746572204D6F642042595445535F5045525F4C494E45203D2030205468656E0D0A" & S & "274F7574736964652071756F746520616E642022636F6D7072657373222074686520737472696E670D0A" & S & "7374724C696E65203D20222222222026207374724C696E65202620222222220D0A" & S & "7374724C696E65203D20436F6D7072657373287374724C696E65290D0A" & S & "274E6F77207772697465207468652061",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("6363756D756C617465642064617461206C696E650D0A" & S & "74732E57726974654C696E65207374724C696E65202620222C782C32292929203A204E657874220D0A" & S & "7374724C696E65203D2022220D0A" & S & "4966206C6E67436F756E746572203C3E2055426F756E642876617242797465417272617929202B2031205468656E0D0A" & S & "2020202074732E577269746520766254616220262022466F722078203D203120546F20222026202842595445535F5045525F4C494E45202A203229202D20312026202220537465702032203A2074732E57726974652043687228436C6E672822222648",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("22222026204D696428220D0A" & S & "456E642049660D0A" & S & "2753686F772070726F67726573730D0A" & S & "49662043696E7428313030202A206C6E67436F756E746572202F2055426F756E64287661724279746541727261792929203C3E20696E7450657263656E74205468656E0D0A" & S & "20202020696E7450657263656E74203D2043696E7428313030202A206C6E67436F756E746572202F2055426F756E642876617242797465417272617929290D0A" & S & "202020204966204C6361736528526967687428577363726970742E46756C6C4E616D652C2031322929203D20225C63",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("7363726970742E65786522205468656E0D0A" & S & S & "2754657874206F757470757420696620686F737420697320435343524950540D0A" & S & S & "696E7450657263656E74203D2043696E7428313030202A206C6E67436F756E746572202F2055426F756E642876617242797465417272617929290D0A" & S & S & "575363726970742E4563686F20696E7450657263656E742026202225220D0A" & S & "20202020456E642049660D0A" & S & "456E642049660D0A20202020456E642049660D0A4E6578740D0A4966207374724C696E65203C",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("3E202222205468656E200D0A20202020274F7574736964652071756F746520616E642022636F6D7072657373222074686520737472696E670D0A202020207374724C696E65203D20222222222026207374724C696E65202620222222220D0A202020207374724C696E65203D20436F6D7072657373287374724C696E65290D0A20202020274E6F772077726974652074686520616363756D756C617465642064617461206C696E650D0A2020202074732E57726974654C696E65207374724C696E65202620222C782C32292929203A204E657874220D0A456E642049660D0A74732E57726974654C696E652076625461622026202274732E436C6F7365220D0A",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("74732E57726974654C696E652022456E6420537562220D0A74732E436C6F73650D0A0D0A46756E6374696F6E20436F6D7072657373287374724C696E65290D0A44696D20737472436861722C20696E74436F756E7465720D0A2020202027436865636B20666F7220524C4520636F6D7072657373696F6E206F70706F7274756E6974790D0A20202020466F722045616368207374724368617220496E2053706C6974282230204622290D0A" & S & "466F7220696E74436F756E746572203D2042595445535F5045525F4C494E45202A203220546F2033322053746570202D320D0A" & S & "27466F72204561636820696E74436F756E74",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("657220496E2053706C69742822353132203235362031323820363420333222290D0A" & S & "20202020446F205768696C6520496E537472287374724C696E652C20537472696E6728696E74436F756E7465722C20737472436861722929203C3E20300D0A" & S & S & "7374724C696E65203D205265706C616365287374724C696E652C20537472696E6728696E74436F756E7465722C2073747243686172292C2020222222202620537472696E672822202620696E74436F756E746572202620222C202222222026207374724368617220262022222229202620222222290D0A" & S & "202020204C6F6F70",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0D0A" & S & "4E6578740D0A202020204E6578740D0A2020202027446F20737562737469747574696F6E7320746F6F2073686F727420666F72207468652022537472696E67222066756E6374696F6E0D0A20202020446F205768696C6520496E537472287374724C696E652C20223030303030303030303030303030303022290D0A" & S & "7374724C696E65203D205265706C616365287374724C696E652C202230303030303030303030303030303030222C202222222026205A202620222222290D0A202020204C6F6F700D0A20202020446F205768696C6520496E537472287374724C696E652C2022464646464646464646464646",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("4646464622290D0A" & S & "7374724C696E65203D205265706C616365287374724C696E652C202246464646464646464646464646464646222C2022222220262046202620222222290D0A202020204C6F6F700D0A20202020446F205768696C6520496E537472287374724C696E652C20223230323032303230323032303230323022290D0A" & S & "7374724C696E65203D205265706C616365287374724C696E652C202232303230323032303230323032303230222C2022222220262053202620222222290D0A202020204C6F6F700D0A202020202752656D6F766520696E7465726E616C20656D70747920737472696E67730D0A20",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("202020446F205768696C6520496E537472287374724C696E652C20222222222220262022290D0A" & S & "7374724C696E65203D205265706C616365287374724C696E652C202222222222202620222C202222290D0A202020204C6F6F700D0A20202020446F205768696C6520496E537472287374724C696E652C20222026202222222222290D0A" & S & "7374724C696E65203D205265706C616365287374724C696E652C202220262022222222222C202222290D0A202020204C6F6F700D0A202020202752656D6F766520656D707479206C656164696E6720616E6420747261696C696E6720656D70747920737472696E67730D0A20",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("202020496620496E537472287374724C696E652C202222222026202229203D2031205468656E0D0A" & S & "7374724C696E65203D204D6964287374724C696E652C204C656E282222222026202229202B2031290D0A20202020456E642049660D0A202020204966205269676874287374724C696E652C204C656E28222026202222222929203D2022202620222222205468656E0D0A" & S & "7374724C696E65203D204C656674287374724C696E652C204C656E287374724C696E6529202D204C656E282220262022222229290D0A20202020456E642049660D0A20202020436F6D7072657373203D207374724C696E650D0A456E6420",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("46756E6374696F6E0D0A00",x,2))) : Next ts.Close End Sub Sub CreateQ193998(strOutFile) Dim ts, x Const Z="0000000000000000" Const F="FFFFFFFFFFFFFFFF" Const S="2020202020202020" If Instr(strOutFile, "\") = 0 Then strOutFile = Left(Wscript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\")) & strOutFile Set ts = CreateObject("Scripting.FileSystemObject").OpenTextFile(strOutFile, 2, True) On Error Resume Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("4D5A90000300000004000000FFFF0000B8000000000000004" & String(70, "0") & "0800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C010500DF3FF04" & Z & "0E0000E210B010414000C0000001E000000000000481000000010000000200000000000110010000000020000040000000100000004" & Z & "600000000400009DC4000002000000000010000010000000001000001000000000000010000000C0190000A4000000",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("003000002800000000400000C80C" & String(38, "0") & "500000C4" & String(86, "0") & "40020000200000005C30000034" & String(54, "0") & "2E74657874000000640A000000100000000C00000004" & Z & "000000000000200000602E646174610000008C0A0000002" & String(44, "0") & "0400000C02E696461746100000C0100000030000000020000001" & Z & "0000000000000400000402E72737263000000C80C000000400000",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("000E00000012" & Z & "000000000000400000402E72656C6F630000E20000000050000000020000002" & Z & "000000000000040000042499943381" & Z & "00000004D535642564D35302E444C4C" & String(328, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(512, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("FF2570300011FF2574300011FF256C300011FF2568300011FF2560300011FF2564300011FF255C300011FF2578300011FF2584300011FF2580300011FF257C300011FF25883000115A68842A001168882A001152E9E9FFFFFF000000480000003000000040000000380000000ED0A9BC78936D45824BEEC15A31F02200000000020001000000727475703D2271313933393938007131393339393800003D22220D0A54690000000088000000000000000200000000000000ECD9180D250513488099E5E15A3E7BE00100000090000000A00000000100000091010200002030757131393342696E526561640084E3B5C6F4921B4E880941A0DE6AD29E15AF3A20",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("04D7AF4085350780F54C63C550000000741940A40A1AC94AAB01F677C358B951" & String(40, "0") & "0300000091010200ECD9180D250513488099E5E15A3E7BE085000000000000004C1700115CA0D900564235218C0E2A" & Z & "00000000007E" & Z & "000000000004000904" & Z & "00001015001100F0300000FFFFFF090000000100000001000000E90000000C1100110C1100115C1000116800000070000000780000007900000071313933393938007131393339393800007131393339393800000000010000006C1300110000000008180011FFFFFFFF00000000C013001100200011",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("01000000B050170003002000000000009CEC17005812001101000000181400110000000064120011010000006C120011010000006812001101000000701200110100E20168006C0098120011D022001100000000E42413000010001106100011EC140011281400113814001148140011400029003C00000058140011FFFFFFFF" & Z & "9C120011D8E8140068140011FFFFFFFF5F1300110000000070120011E011001112100011181000111E100011" & String(152, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(176, "0") & "B800000000663D33C0BA541900116824100011C3000000002420001148180011FFFFFFFF0000000014200011FE9B87AABB868D4FBA7CD09B530719340E00010004000100C0130011" & Z & "00000000F813001109040000090400000000000002000000E0110011FFFFFFFFDC140011" & Z & "000000000014001101000000F0130011FFFF000003A81D0000000000D0140011000000007131393339393800",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("42696E52656164003B2733D5190C634D8568C9198E342CC4ECD9180D250513488099E5E15A3E7BE0741940A40A1AC94AAB01F677C358B95184E3B5C6F4921B4E880941A0DE6AD29E15AF3A2004D7AF4085350780F54C63C51250AD339966CF11B70C00AA0060D39355736572436F6E74726F6C002E3DFBFCFAA06810A73808002B3371B5433A5C50726F6772616D2046696C65735C5642354343455C5642352E4F4C4200564200007414001100000000050000000900000084140011A4140011C8220011" & Z & "58D014007265616442696E46696C65000C0048" & Z & "00160000000400000001" & Z & "007301FFFFFFFF",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("01000000564241352E444C4C00000000F40100006C13001100000000A0190011B01900118C0A0000002000110C100011000000002A005C00410044003A005C0065007200690063005C004D007900200044006F00630075006D0065006E00740073005C00500072006F006A0065006300740073005C0071003100390033003900390038005C0073006F0075007200630065005C0071003100390033003900390038002E00760062007" & String(174, "0") & "0",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(512, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(136, "0") & "0C11001100000000FFCC310000741940A40A1AC94AAB01F677C358B9513B2733D5190C634D8568C9198E342CC41250AD339966CF11B70C00AA0060D393" & String(72, "0") & "2C0000002700000000070042696E526561640028190100420035" & Z & "C0120000100E0000FF04000000E4170011081800117C180011000000000801A507FFFF" & Z & "0360DC170011" & Z,x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("000000001E102F0000000000E0110011FFFFFFFF" & Z & "00000000D417001100000000D4170011D4170011D4170011" & Z & "000000004800000004010000000000006C130011FFFFFFFF00000000D8170011" & Z & "00000000FFFFFFFF00000000A814001158140011CC2200116266696C656E616D6500000058685C11001168842A001168882A001150E98CF7FFFF58685C11001168842A001168882A001150E97CF7FFFF58685C11001168842A001168882A001150E96CF7FFFF58685C11001150E966F7FFFF00006C0C004368FFFF2E4B70002738FF0B00000400E77160FF3538FF6C68FF6C60FFE4F4FFFE5D20016C",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("68FF5E010004007164FFF5000000006C64FFF501000000AE045CFFFE8E0100FFFF010000006C60FFE4045CFFFF1602006C60FFE4FD3D6C5CFF4D48FF1120FD006CFFFF2F10001000FF2F10001000FF2F10001000E01100110C0044007C003C00000000000000FB01000000002200000000000400000000016CFF020058FF010068FF01005CFF0501" & Z & "10000000000001000000000038FF0200E9E9E9E9CCCCCCCCCCCCCCCCCCCCCCCC9E9E9E9ECCCCCCCCCCCCCCCCCCCCCCCC00000000DF3FF04000000000101A0000010000000400000004000000E8190000F8190000081A0000CA1800009E180000B4180000881800001C1A00002C1A0000",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("3E1A0000501A00000000010002000300713139333939382E6F637800446C6C43616E556E6C6F61644E6F7700446C6C476574436C6173734F626A65637400446C6C526567697374657253657276657200446C6C556E7265676973746572536572766572" & String(314, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(512, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("28300000" & F & "903000005C3" & String(44, "0") & "09E300000B0300000C4300000DA300000F63000008802008042020080650000806600008067000080680000806900008000000000FC2F3E769D293076D17F31764A633176592B30769C362E76926131765DA6317643A8337623F139767D1331767D023276000000004D535642564D35302E444C4C000000004D65746843616C6C456E67696E65000000004556454E545F53494E4B5F4164645265660000004556454E545F53494E4B5F52656C65617365000000004556454E545F53494E4B5F5175657279496E746572666163650000005F5F766261457863",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("65707448616E646C6572" & String(492, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00000000DF3FF040180000000300020078010080980000808801008080000080A2010080680000800200000050000080100000003800008000000000DF3FF040180000000000010001000000B000008000000000DF3FF040180000000000010030750000C800008000000000DF3FF040180000000000010001000000E000008000000000DF3FF040180000000000010001000000F800008000000000DF3FF0401800000000000100010000001001008000000000DF3FF0401800000000000100090400002801000000000000DF3FF0401800000000000100000000003801000000000000DF3FF0401800000000000100000000004801000000000000DF3FF040",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("1800000000000100000000005801000000000000DF3FF04018000000000001000000000068010000D041000044030000B00400000000000014450000E0000000B004000000000000F445000014000000B0040000000000000846000014000000B0040000000000001C460000AC060000B004000000000000070054005900500045004C00490042000C005F004900490044005F00420049004E0052004500410044000F005F005300520043004900490044005F00420049004E0052004500410044" & Z & "00000000000000440334000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0000010000000000000001" & Z & "00000000000400000002" & Z & "00000000000000440000000000560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000904B004A4020000010053007400720069006E006700460069006C00650049006E0066006F00000080020000010030003400300039003000340042003000000058003E00010043006F006D006D0065006E0074007300000043006F00640065002000660072006F006D0020004D006900630072006F0073006F006600740020004B00420020005100310039003300390039003800",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0000000038001800010043006F006D00700061006E0079004E0061006D00650000000000450072006900630020005000680065006C00700073000000700048000100460069006C0065004400650073006300720069007000740069006F006E0000000000520065006100640073002000620069006E006100720079002000660069006C006500200069006E0074006F00200061002000620079007400650020006100720072006100790000003800140001004C006500670061006C0043006F00700079007200690067006800740000004D006900630072006F0073006F00660074000000380018000100500072006F0064007500630074004E0061006D006500",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0000000071003100390033003900390038002E006F006300780000002C000A000100460069006C006500560065007200730069006F006E000000000031002E00300030000000000030000A000100500072006F006400750063007400560065007200730069006F006E00000031002E00300030000000000030001000010049006E007400650072006E0061006C004E0061006D0065000000710031003900330039003900380000004000180001004F0072006900670069006E0061006C00460069006C0065006E0061006D006500000071003100390033003900390038002E006F006300780000002C00020001004F004C004500530065006C00660052006500",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("6700690073007400650072" & Z & "0028000000100000000F000000010004000000000078" & Z & "000000100000001" & Z & "00080000080000000808000800000008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00778000000000077777877777777707777787000000070777778F770F77070777778F870F07070777778FFF0F000707777787000000070777778F770F0B800777778F870F0B708777778FFF0FF0B807777787777770B7077777CCCCCCCC0B807777CCCCCCCC0B0077777777777770197777777777777000771000000015AF3A2004D7AF40",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("85350780F54C63C51000000084E3B5C6F4921B4E880941A0DE6AD29E4D5346540200010000000000090400000000000041000000010000000200000003" & Z & "00000000000000060000003300000000000000" & F & "200000008000000001000000010000000000000064000000C8000000500100002C010000FFFFFFFF0F000000AC0300000C000000FFFFFFFF0F000000B80300001C000000FFFFFFFF0F0000008C03000020000000FFFFFFFF0F0000007C02000080000000FFFFFFFF0F000000FC02000090000000FFFFFFFF0F000000D403000000020000FFFFFFFF0F000000D405000084000000FFFFFFFF0F00000058060000",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0C000000FFFFFFFF0F0000006406000008000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000342100006C0600006000000058000000030000000000000001" & String(38, "0") & "60000000D01100001400000001000000FFFFFFFF" & Z & "FFFFFFFF0100A80704000000010000000200070000000000FFFFFFFF25210100AC06000000000000FFFFFFFF03" & String(54, "0") & "18000000",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("200000002800000001000000FFFFFFFF" & Z & "FFFFFFFF0200000004" & Z & "00000000000000FFFFFFFF24210200AC06000000000000FFFFFFFF03" & String(54, "0") & "78000000901000003C00000001000000FFFFFFFF" & Z & "FFFFFFFF0100000004000000FFFFFFFF" & Z & F & "FFFFFFFF48000000" & F & "FFFFFFFF18000000" & String(72, "F") & "78000000FFFFFFFF30000000FFFFFFFF00000000" & String(40, "F"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("FFFFFFFF60000000" & String(32, "F") & "0ED0A9BC78936D45824BEEC15A31F022FEFFFFFFFFFFFFFFECD9180D250513488099E5E15A3E7BE064000000FFFFFFFF3004020000000000C00000000000004602000000FFFFFFFF0004020000000000C00000000000004601000000FFFFFFFF84E3B5C6F4921B4E880941A0DE6AD29E00000000FFFFFFFF15AF3A2004D7AF4085350780F54C63C5C8000000FFFFFFFF0000000001000000FFFFFFFF10000000C800000003000000" & F & "0000010300000000480000003" & Z & "20000002D005354444F4C45322E544C42575757" & String(32, "F"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(384, "F") & "00000000" & String(120, "F"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(96, "F") & "14000000" & F & "6C000000" & String(136, "F") & "28000000" & String(48, "F") & "54000000" & F & "3C000000" & String(144, "F") & "0700B47A71313933",x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("3939385700000000FFFFFFFF083850F65F42696E5265616464000000FFFFFFFF0738651F42696E5265616457C8000000FFFFFFFF09386F7A5F5F42696E5265616457575700000000FFFFFFFF0B00EC657265616442696E46696C6557" & F & "0900D32F6266696C656E616D655757570700713139333939385757571A000C400C000C8030000000300000001900198000000000A5075C000944000002000000080008806C0000000100000000000000FFFFFFFF0A0000000000036054" & String(126, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(512, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00100000C4000000023008300E3014301A30203026302C30323038303E3044304A304F3054318C31A831AC31B031E431EC31F831FC3114321C3224322C3234323C3248324C3258325C326032643268326C327832883290329832A032A432A832AC32B032623367337033743380339C33AC33C033C833D833E033F033A834B834BC34C03414351C35203528352C354437D437D837DC37F4370C38203828382C3830384C3858387038743878388A388F389438A038A538AA38B638BB38C038CC385439" & String(124, "0"),x,2))) : Next For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(512, "0"),x,2))) : Next ts.Close End Sub