'McAfee AntiVirus updater script.
'Downloads and runs the latest SuperDAT update.
'REQUIRES: Windows 2000 or XP with recent service pack (to get WinHttp)
'USES: ByteArray.Ocx from: http://www.ericphelps.com/bytearray
'Will generate and use a temporary copy of the ByteArray object 
'if you don't have it already installed on your system.

Dim fs, wsh
Dim blnOcxCreated, strOcxFile
Dim blnScriptCreated, strScriptFile
Set wsh = CreateObject("Wscript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")

'Verify we have a good argument
If WScript.Arguments.Count <> 0 Then
	WScript.Echo "This script is not designed to accept arguments."
	WScript.Quit 1
End If

'Check for WinHttp object
If Not IsRegistered("WinHttp.WinHttpRequest.5.1") Then
	wsh.Popup "You need the WinHttp object, part of recent service packs in Windows 2000 and XP.", 15, "Error"
	WScript.Quit 1
End If

'Check for ByteArray object
If IsRegistered("ByteArray.Functions") Then
	blnOcxCreated = False
Else
	strOcxFile = fs.GetAbsolutePathName(WScript.ScriptFullName & "\..\ByteArray.Ocx")
	CreateByteArray strOcxFile
	RegisterServer strOcxFile
	blnOcxCreated = True
End If

'Check for and create the working script
strScriptFile = fs.GetAbsolutePathName(WScript.ScriptFullName & "\..\~nai-sdat.vbs")
If fs.FileExists(strScriptFile) Then
	blnScriptCreated = False
Else
	CreateScript strScriptFile
	blnScriptCreated = True
End If

'Warn the user not to close this window
If Lcase(Right(Wscript.FullName, 12)) = "\cscript.exe" Then
	WScript.Echo "Please wait. This window will close after the SDAT is downloaded and installed."
End If

'Launch the working script and wait for it to finish
wsh.Run """" & WScript.FullName & """ """ & strScriptFile & """", 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 blnOcxCreated Then
	UnRegisterServer strOcxFile
	On Error Resume Next 'Delete might fail if Ocx/DLL isn't released
	fs.DeleteFile strOcxFile, 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 CreateScript(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("274D634166656520416E746956697275732075706461746572207363726970742E0D0A27446F776E6C6F61647320616E642072756E7320746865206C6174657374205375706572444154207570646174652E0D0A2752455155495245533A2057696E646F77732032303030206F72205850207769746820726563656E742073657276696365207061636B2028746F206765742057696E48747470290D0A2752455155495245533A204279746541727261792E6F63782066726F6D3A20687474703A2F2F7777772E657269637068656C70732E636F6D2F6279746561727261790D0A0D0A436F6E7374205745425F50414745203D2022687474703A2F2F6E61692E",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("636F6D2F75732F646F776E6C6F6164732F757064617465732F73757065726461745F646F776E6C6F61642E617370220D0A436F6E7374204C494E4B5F505245464958203D202257696E646F7773202D20496E74656C220D0A436F6E73742057696E48747470526571756573744F7074696F6E5F456E61626C65526564697265637473203D20360D0A44696D207765622C2066732C20737472576562506167652C206F63782C207661724279746541727261792C207773680D0A44696D2073747255726C2C206C6E67506F736974696F6E2C20626C6E437265617465642C207374724F637846696C650D0A0D0A2020202027437265617465206F626A656374730D",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0A20202020536574206673203D204372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422290D0A2020202053657420777368203D204372656174654F626A6563742822577363726970742E5368656C6C22290D0A2020202053657420776562203D204372656174654F626A656374282257696E487474702E57696E48747470526571756573742E352E3122290D0A20202020536574206F6378203D204372656174654F626A65637428224279746541727261792E46756E6374696F6E7322290D0A0D0A2020202027466972737420646F776E6C6F61642074686520776562207061676520746861742068617320",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("746865206C696E6B20746F2074686973207765656B27732066696C650D0A20202020537461747573202247657474696E672077656220706167652E2E2E220D0A202020207765622E4F7074696F6E2857696E48747470526571756573744F7074696F6E5F456E61626C6552656469726563747329203D20547275650D0A202020207765622E4F70656E2022504F5354222C205745425F504147452C2046616C73650D0A202020207765622E536574526571756573744865616465722022436F6F6B6965222C20224E61694461747341677265653D506172616D3D4163636570746564220D0A202020207765622E53657452657175657374486561646572202252",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("656665726572222C2022687474703A2F2F6E61692E636F6D2F75732F646F776E6C6F6164732F757064617465732F64656661756C742E617370220D0A202020207765622E53656E642022706172616D3D73656E64220D0A0D0A2020202073747257656250616765203D207765622E526573706F6E7365546578740D0A202020200D0A20202020274E6F772065787472616374207468652055524C2066726F6D207468652077656220706167650D0A202020206C6E67506F736974696F6E203D20496E53747228737472576562506167652C204C494E4B5F505245464958290D0A202020204966206C6E67506F736974696F6E203D2030205468656E0D0A202020",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("20202020207773682E506F7075702022546865207765622070616765206E6F206C6F6E676572206861732074657874206964656E74696679696E6720746865206C6F636174696F6E206F662074686520534441542066696C652E205468697320736372697074206E6565647320746F206265207570646174656421222C2031352C20224572726F72220D0A" & S & "575363726970742E5175697420310D0A20202020456E642049660D0A2020202073747255726C203D204D696428737472576562506167652C206C6E67506F736974696F6E290D0A202020206C6E67506F736974696F6E203D20496E53747228312C2073747255726C2C20222E65",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("7865222C20766254657874436F6D7061726529202B20330D0A202020204966206C6E67506F736974696F6E203D2033205468656E0D0A" & S & "7773682E506F7075702022546865206964656E74696679696E6720746578742069736E277420666F6C6C6F7765642062792061206C696E6B20746F20616E204558452066696C652E205468697320736372697074206E6565647320746F206265207570646174656421222C2031352C20224572726F72220D0A" & S & "575363726970742E5175697420310D0A20202020456E642049660D0A2020202073747255726C203D204C6566742873747255726C2C206C6E67506F736974696F6E",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("290D0A202020206C6E67506F736974696F6E203D20496E53747228312C2073747255726C2C2022687474703A2F2F222C20766254657874436F6D70617265290D0A202020204966206C6E67506F736974696F6E203D2030205468656E0D0A" & S & "7773682E506F7075702022546865206964656E74696679696E6720746578742069736E277420666F6C6C6F7765642062792061206C696E6B207769746820612066756C6C202222687474703A2F2F222220706174682E205468697320736372697074206E6565647320746F206265207570646174656421222C2031352C20224572726F72220D0A" & S & "575363726970742E517569",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("7420310D0A20202020456E642049660D0A2020202073747255726C203D204D69642873747255726C2C206C6E67506F736974696F6E290D0A202020200D0A20202020274E6F7720646F776E6C6F6164207468652065786563757461626C6520534441542066696C650D0A202020205374617475732022446F776E6C6F6164696E6720534441542066696C653A220D0A202020205374617475732073747255726C0D0A202020207765622E4F70656E2022474554222C2073747255726C2C2046616C73650D0A202020207765622E53656E640D0A20202020766172427974654172726179203D207765622E526573706F6E7365426F64790D0A202020200D0A2020",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("2020274E6F77207361766520697420746F206469736B0D0A202020205374617475732022536176696E67205344415420746F206469736B2061733A220D0A2020202053746174757320575363726970742E53637269707446756C6C4E616D65202620222E657865220D0A202020206F63782E546F46696C65207661724279746541727261792C20575363726970742E53637269707446756C6C4E616D65202620222E657865220D0A0D0A20202020274E6F772072756E2069740D0A20202020537461747573202252756E6E696E672053444154207570646174652070726F6772616D2E2E2E220D0A202020204372656174654F626A6563742822577363726970",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("742E5368656C6C22292E52756E2022222222202620575363726970742E53637269707446756C6C4E616D65202620222E65786522202620222222202F53494C454E54222C20312C20547275650D0A202020200D0A202020202744656C65746520746865205344415420646F776E6C6F61640D0A2020202066732E44656C65746546696C6520575363726970742E53637269707446756C6C4E616D65202620222E657865222C20547275650D0A0D0A0D0A53756220537461747573287374724D657373616765290D0A202020204966204C6361736528526967687428577363726970742E46756C6C4E616D652C2031322929203D20225C637363726970742E6578",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("6522205468656E0D0A" & S & "577363726970742E4563686F207374724D6573736167650D0A20202020456E642049660D0A456E64205375620D0A",x,2))) : Next
	ts.Close
End Sub

Sub CreateBytearray(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") & "0800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C0105008C74C13F" & Z & "E0000E210B01041400100000001E0000000000005C1000000010000000200000000000110010000000020000040000000100000004" & Z & "60000000040000464A000002000000000010000010000000001000001000000000000010000000A01E0000A6000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("003000002800000000400000440D" & String(38, "0") & "500000D8" & String(86, "0") & "4002000020000000683000004" & String(54, "0") & "02E74657874000000460F000000100000001000000004" & Z & "000000000000200000602E64617461000000900A0000002" & String(44, "0") & "0400000C02E696461746100002401000000300000000200000014" & Z & "000000000000400000402E72737263000000440D000000400000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("000E00000016" & Z & "000000000000400000402E72656C6F630000F800000000500000000200000024" & Z & "00000000000040000042499943381" & 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("FF2584300011FF2570300011FF256C300011FF2588300011FF258C300011FF2580300011FF257C300011FF2574300011FF2578300011FF2568300011FF2590300011FF259C300011FF2598300011FF2594300011FF25A030001100005A68882A0011688C2A001152E9E7FFFFFF00000058000000300000005000000040000000C87B31F270E6BB4E949D06D82D955FF100000000020016000000EFFE000001004279746541727261790001000000000042797465417272617900000002" & Z & "00000000000000980000000000000002000000000000000B11ADBC4A5FE34583DB1C850AC1192101000000A8000000B80000000100000091010200",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("002030756F006E0046756E6374696F6E73000000010053007B11F12C1E856E4BBCEA99F0371FF1129DD195BCE6A06548942D661982DFB0B950000000C7893A5E236E53438A763663976C6BF9" & String(40, "0") & "03000000910102000B11ADBC4A5FE34583DB1C850AC119218700000000000000901B00115495D900564235218C0E2A" & Z & "00000000007E" & Z & "000000000004000904" & Z & "0000B013001100F0300000FFFFFF090000000100000001000000E900000038110011381100117010001168000000720000007C0000007D00000042797465417272617900427974654172",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("7261790000427974654172726179000001000000EC150011000000007C1C0011FFFFFFFF00000000401600110020001102000000D8C6180002002000000000008C2918008812001101000000601B0011000000009012001101000000981200110100000094120011010000009C1200110200E20168006C00C4120011D022001100000000F424130000100011481B0011B8160011701B0011801B0011400029003C000000E8160011FFFFFFFF" & Z & "CC120011A8EC1400F8160011FFFFFFFF8F130011A3130011000000009C12001110120011241000112A10001130100011" & String(56, "0"),x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(272, "0") & "B800000000663D33C0BA381E00116836100011C3B800000000663D33C0BA881D00116836100011C3F4010000EC15001100000000801E0011901E0011900A0000002000111E100011000000002A005C00410044003A005C004D007900200044006F00630075006D0065006E00740073005C00500072006F00",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("6A0065006300740073005C0042007900740065004100720072006100790054006F0054006500780074005C004200790074006500410072007200610079002E00760062007" & String(374, "0") & "0",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(456, "0") & "38110011" & Z & "24200011BC1C0011FFFFFFFF00000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("1420001175449255FF629A4F9F7C06E42AB7CB680E0001000400010040160011" & Z & "000000007C1600110904000009040000000000000200000010120011FFFFFFFF70170011" & Z & "000000008C1600110200000070160011FFFF000003A81D0000000000601700116817001100000000427974654172726179000000546F000046756E6374696F6E73000000FFDCA85CE61CEB44B1A655B8413648614756C8EF6157724A8F96EE2FF896B240C7893A5E236E53438A763663976C6BF9138997BF427A294EB8F49CA07EDA5F71BE82B8B2BC594246B9533FE7B1081E9C1250AD339966CF11B70C00AA0060D39355736572436F6E74",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("726F6C002E3DFBFCFAA06810A73808002B3371B5433A5C50726F6772616D2046696C65735C5642354343455C5642352E4F4C420056420000041700110000000005000000090000001417001134170011C8220011" & Z & "78D41400546F546578740000546F46696C6500000C0048" & Z & "00564241352E444C4C000000000400000001008C000BAD5E5A4E2728498CD370BF6A62A8AC9689E713F48692469CA91E956C7F2C9AAB8D3158F4C32348B961B5CCA05E649CA0361BE1107B1948BE927EA7903885CEEBBBEFE5E447304F8F3DC0261747F1891E11BA32DBA1D342B5CB8A7EE401B5FF4B5EAEF05024B645B5E78145AB5C8F93",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("FCD3F812203B604C9A73A2167F8EF310C567E94C27B62148BCBFBF49EC246ECE04000000010088009ABC14A590A10C4DA2FBF64F38D471F9C47DA9EFAA4CBB449DE497FD474AD9ED055DBF2C2D684B4D8D16CED892B6795A040000000100910088700BAF5136624B8CAEC79B970CE9E74087A1206F37094287C03EE329FE717CEBEF752915B34E4EAFAD49546FD9998E48640D0716AE4946A75B203C7CE886EF7B8E4343CE648E479D6D3EE34C7C8AD1429BB5857EA744489D9E13228AA7D72ED9B4BEBE2023BA4CB55EE2D0F63ECA400C25C2AF4360184AA99B8A6307F217A0BD7764CA0CE19C499ED099CE3D0764D88CE8E487AC0A50429A9EEEEFA5040C6C",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("5F282D1E8502F74096BA3275775348E779DB78CC2CF3B0429ED809FB6D72DD13FC9FFFADF4C9ED4B884674E18ACDF5A825975C790667384BB44487E47306284D94BBC8D0B017DA42A006485DE5518B3DB8C82C7E701BDD49A8EB8907A33F73628777BB71B7E3DA4C9D124C5CB0E9D07DD4A1419044889C439E2879AC63CE3E8D04000000010083009BB53E619773B54FB318F08B500D02C8E36A8D325EFF8D4EB0D7D87E54CB9431EE173CFF7ECDDF4EA9C59B3BD664E654B866C4A49F491B10BB7800AA00383CBBD2D78F0D79C34B4DACA5A0B8BC91305ED85A94A43C430D409F582401C7C1DF5296AF102B21503248B59B1648C5013515B74973E1D1CF8D4C",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("AE27BD69AE868A4B01B3452C786E1F45ACA3942A412D3C6900000000DBEA3DAB114DBF4BA705F4F05CFCC7F38BC0FB24B8997E49BDD2972116010E1C353FB6462EE4614192717FE364AF53F7B220D4F8984C0B45861E34B3FA08E4327F421E4951D1EE4BA49B40902995B1129EDF513904F97B4FB2704057ED6F2FCA39E72BC3EF9A4D48A572AC7CB67EB35251E75709C162EA479B72B83AF7B5574805B8A758F1C50345B9E8F2CB68771C535B8B8D168DF0D14D8035B2BCCE04C2424E0069006D006200650072000000000051E301C8A0E09C459F90863DE62C2395B74C469FF42400468384D98A140C158F6E58EC41E877E245BA4842F9D68BDB7704000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("3100200000000000040000003200200000000000B6D48080A5FF454A8D4D7DD25A26CD4E86807BC538A39C409821DA37EC8A6E314FF7F84606ECE24BB4AA538CB42CA171160000000400000001" & Z & "007301FFFFFFFF010000000B11ADBC4A5FE34583DB1C850AC119217B11F12C1E856E4BBCEA99F0371FF1129DD195BCE6A06548942D661982DFB0B9FFCC310000C7893A5E236E53438A763663976C6BF9FFDCA85CE61CEB44B1A655B8413648611250AD339966CF11B70C00AA0060D393" & String(72, "0") & "2E0000002900000000090046756E6374696F6E73002819",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0100420035" & Z & "C0120000100E0000FF04007C1C0011F01C0011001D0011341C0011581C0011F01C0011000000000801A507FFFF" & Z & "03602C1C0011" & Z & "000000001E2F30000800A907FFFF000000000000010003601C1C0011" & Z & "000000001E2F30000000000010120011FFFFFFFF" & Z & "00000000241C001100000000181C0011181C0011181C0011" & Z & "00000000480000000401000000000000EC150011FFFFFFFF00000000181C0011" & Z & "00000000FFFFFFFF0000000038170011E8160011CC22001176617242797465417272617900000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("73747246696C654E616D650058688811001168882A0011688C2A001150E91AF3FFFF58688811001168882A0011688C2A001150E90AF3FFFF58688811001168882A0011688C2A001150E9FAF2FFFF58688811001150E9F4F2FFFF0000FD160C0068FFFC6064FF0464FF0478FFFF01801000F401F4FFFE5D2000F4010478FFFF180100F401FD3D1300101200110C0018002C003" & Z & "0000000000016000000000001000000000078FF0501550056000000580016000000000001000000000064FF05010600070000000000FF2D6C0C00FC3549F4014C0474FF6C0C00FC3549F401FCCBFE6468FF5A006C70FF4628FF0474FFFD9303406C0C00FEAE",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("48FF0100FC220438FF0A000008000438FFFBEF18FF603170FF36060048FF38FF18FF0474FF6668FF1E006C70FF4378FFFF2F100004000000101200110C00640068002C" & Z & "000000000014000000000002000000000178FF010070FF010018000000000003000000000048FF020038FF020018FF0200CCCCCCCCE9E9E9E9CCCCCCCCCCCCCCCCCCCCCCCC9E9E9E9ECCCCCCCCCCCCCCCCCCCCCCCC000000008C74C13F00000000F01E0000010000000400000004000000C81E0000D81E0000E81E00004E1D0000221D0000381D00000C1D0000FE1E00000E1F0000201F0000321F000000000100020003004279746541727261792E6F637800446C",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("6C43616E556E6C6F61644E6F7700446C6C476574436C6173734F626A65637400446C6C526567697374657253657276657200446C6C556E7265676973746572536572766572" & String(374, "0"),x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("28300000" & F & "A8300000683" & String(44, "0") & "0B63000004F02008053020080C8300000DC300000F23000000E3100006002008084020080AD020080650000806600008067000080680000806900008000000000FC2F3E760A0C34765A403B769D293076D17F31764A633176592B307644BD2F76C34A3B7607D62E765DA6317643A8337623F139767D1331767D023276000000004D535642564D35302E444C4C000000004D65746843616C6C456E67696E65000000004556454E545F53494E4B5F4164645265660000004556454E545F53494E4B5F52656C65617365000000004556454E545F53494E4B5F51",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("75657279496E746572666163650000005F5F76626145786365707448616E646C6572" & String(444, "0"),x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("000000008C74C13F1C000000030002007801008098000080AC01008080000080880100806800008002000000500000801000000038000080000000008C74C13F1C0000000000010001000000B0000080000000008C74C13F1C0000000000010030750000C8000080000000008C74C13F1C0000000000010001000000E0000080000000008C74C13F1C0000000000010001000000F8000080000000008C74C13F1C000000000001000100000010010080000000008C74C13F1C000000000001000904000028010000000000008C74C13F1C000000000001000000000038010000000000008C74C13F1C000000000001000000000048010000000000008C74C13F",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("1C000000000001000000000058010000000000008C74C13F1C000000000001000000000068010000D041000048030000B00400000000000018450000E0000000B004000000000000F845000014000000B0040000000000000C46000014000000B0040000000000002046000024070000B004000000000000070054005900500045004C004900420011005F005300520043004900490044005F00460055004E004300540049004F004E0053000E005F004900490044005F00460055004E004300540049004F004E005300000000000000480334000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0000010000000000000001" & Z & "00000000000400000002" & Z & "00000000000000440000000000560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000904B004A8020000010053007400720069006E006700460069006C00650049006E0066006F00000084020000010030003400300039003000340042003000000054003C00010043006F006D006D0065006E0074007300000043006F006E007600650072007400730020006200790074006500200061007200720061007900200074006F00200073007400720069006E0067000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("38001800010043006F006D00700061006E0079004E0061006D00650000000000450072006900630020005000680065006C0070007300000064003C000100460069006C0065004400650073006300720069007000740069006F006E000000000043006F006E007600650072007400730020006200790074006500200061007200720061007900200074006F00200073007400720069006E006700000040001C0001004C006500670061006C0043006F00700079007200690067006800740000005000750062006C0069006300200044006F006D00610069006E0000003C001C000100500072006F0064007500630074004E0061006D0065000000000042007900",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("74006500410072007200610079002E006F006300780000002C000A000100460069006C006500560065007200730069006F006E000000000031002E00300030000000000030000A000100500072006F006400750063007400560065007200730069006F006E00000031002E00300030000000000034001400010049006E007400650072006E0061006C004E0061006D0065000000420079007400650041007200720061007900000044001C0001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000004200790074006500410072007200610079002E006F006300780000002C00020001004F004C004500530065006C006600",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("520065006700690073007400650072" & Z & "0028000000100000000F000000010004000000000078" & Z & "000000100000001" & Z & "00080000080000000808000800000008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00778000000000077777877777777707777787000000070777778F770F77070777778F870F07070777778FFF0F000707777787000000070777778F770F0B800777778F870F0B708777778FFF0FF0B807777787777770B7077777CCCCCCCC0B807777CCCCCCCC0B007777777777777019777777777777700077100000009DD195BC",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("E6A06548942D661982DFB0B9100000007B11F12C1E856E4BBCEA99F0371FF1124D5346540200010000000000090400000000000041000000160000000200000003" & Z & "00000000000000080000004A00000000000000" & F & "200000008000000001000000010000000000000064000000C8000000500100002C010000FFFFFFFF0F000000AC0300000C000000FFFFFFFF0F000000B80300001C000000FFFFFFFF0F0000008C03000020000000FFFFFFFF0F0000007C02000080000000FFFFFFFF0F000000FC02000090000000FFFFFFFF0F000000D403000000020000FFFFFFFF0F000000D4050000B8000000FFFFFFFF0F000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("8C0600000C000000FFFFFFFF0F0000009806000010000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F00000034210000A8060000C0000000B0000000030000000000000002" & String(38, "0") & "60000000D01100001800000001000000FFFFFFFF" & Z & "FFFFFFFF0100AC0704000000010000000200070000000000FFFFFFFF252101002407000000000000FFFFFFFF03" & String(54, "0"),x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("18000000200000003000000001000000FFFFFFFF" & Z & "FFFFFFFF0200000004" & Z & "00000000000000FFFFFFFF242102002407000000000000FFFFFFFF03" & String(54, "0") & "78000000901000004800000001000000FFFFFFFF" & Z & "FFFFFFFF0100000004000000FFFFFFFF" & Z & F & "FFFFFFFF4800000018000000" & String(56, "F") & "78000000" & String(48, "F") & "30000000" & String(48, "F"),x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("60000000" & String(48, "F") & "C87B31F270E6BB4E949D06D82D955FF1FEFFFFFFFFFFFFFF0B11ADBC4A5FE34583DB1C850AC1192164000000FFFFFFFF3004020000000000C00000000000004602" & Z & "04020000000000C00000000000004601000000FFFFFFFF7B11F12C1E856E4BBCEA99F0371FF11200000000FFFFFFFF9DD195BCE6A06548942D661982DFB0B9C8000000FFFFFFFF0000000001000000FFFFFFFF10000000C800000003000000" & F & "0000010300000000480000003" & Z & "20000002D007374646F6C65322E746C62575757" & F & "FFFFFFFF",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(120, "F") & "74000000" & String(96, "F") & "48000000" & String(32, "F") & "00000000" & String(240, "F"),x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid(String(192, "F") & "A0000000" & String(120, "F") & "8C000000" & F & "FFFFFFFF30000000" & F & "60000000" & String(120, "F") & "0900A459",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("42797465417272617957575700000000FFFFFFFF0A385B545F46756E6374696F6E73575764000000FFFFFFFF0938EF0846756E6374696F6E73575757C8000000FFFFFFFF0B381FEA5F5F46756E6374696F6E735700000000FFFFFFFF0600F2C4546F546578745757" & F & "0C00125476617242797465417272617900000000FFFFFFFF0600EB08546F46696C655757FFFFFFFF180000000B00DB6573747246696C654E616D65570900427974654172726179571A000C400C000C801A0008400800088060000000300000001900198000000000A5076400094400000200000000000000740000000300000008000000FFFFFFFF0A00000030000100",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("1900198000000000A9076400090401000200000000000000740000000300000008000000A0000000030000000000036001000360600000008C000000000000003" & String(382, "0") & "0",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00100000D8000000023008300E3014301A30203026302C30323038303E3044304A30503056305E3063308031B831D431D831DC3114321C3228322C3244324C3254325C3264326C3278327C3288328C32903294329832A432B432BC32C432C832D032D432D832DC32E03292339733A633AB33B433BC33C033C833CC33E435F035F43500361C362C36403648365836603670367436383748374C375037183C1C3C203C243C283C2C3C443C683C803C943C9C3CA03CA43CC03CCC3CE43CE83CEC3C0E3D133D183D243D293D2E3D3A3D3F3D443D503D883D383E" & String(80, "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
