File: C:/Program Files/Docker/Docker/frontend/resources/regedit/vbs/util.vbs
Set stdout = WScript.StdOut
Set stderr = WScript.StdErr
Set stdin = WScript.StdIn
Set args = WScript.Arguments
Set fs = CreateObject("scripting.filesystemobject")
Dim OSArchitecture
Sub WriteErr(message)
stderr.Write message
End Sub
Sub WriteLineErr(message)
stderr.WriteLine message
End Sub
Sub Write(message)
stdout.Write message
End Sub
Sub WriteLine(message)
stdout.WriteLine message
End Sub
Function IndexOf(varNeedle, arrHaystack)
IndexOf = -1
If Not IsArray(arrHaystack) Then
Exit Function
End If
For xyz = 0 To UBound(arrHaystack)
If arrHaystack(xyz) = varNeedle Then
IndexOf = xyz
Exit Function
End If
Next
End Function
Sub CheckZeroArgs(message)
' bail if args are missing
If args.Count = 0 Then
WriteLineErr message
WScript.Quit 25121
End If
End Sub
Dim ALLOWED_OS_ARCHITECTURE_VALUES: ALLOWED_OS_ARCHITECTURE_VALUES = Array("S", "A", "32", "64")
'
' determine the architecture of the operating system, that will be used. there are 4 possibilities:
' A - means agnostic
' S - means that we want to use a specific architecture, but auto detect Item
' 32 - explicitly use 32 bit architecture
' 64 - explicitly use 64 bit architecture
'
Sub DetermineOSArchitecture()
strArchitecture = args(0)
If IsNull(strArchitecture) Then
WriteLineErr "missing architecture argument"
WScript.Quit 25124
End If
strArchitecture = UCase(strArchitecture)
If IndexOf(strArchitecture, ALLOWED_OS_ARCHITECTURE_VALUES) = -1 Then
WriteLineErr "invalid architecture argument"
WScript.Quit 25124
End If
If (strArchitecture = "S") Then
OSArchitecture = GetOSArchitecture()
If OSArchitecture = -1 Then
WriteLineErr "invalid os architecture detected " & OSArchitecture
WScript.Quit 25126
End If
Else
OSArchitecture = strArchitecture
End If
End Sub
Sub Include(sPath)
' TODO this is fragile, but should work for "modules" nested relatively to script root
include_ScriptPath = Left(WScript.ScriptFullName, InStr(WScript.ScriptFullName, WScript.ScriptName) - 2)
sPath = include_ScriptPath & "\" & sPath
include_code = fs.OpenTextFile(sPath).ReadAll
ExecuteGlobal include_code
End Sub
Function GetOSArchitecture()
Dim ObjWMI, ColSettings, ObjProcessor
Dim StrComputer, ObjNetwork
Set ObjWMI = GetObject("winmgmts:\Root\CIMV2")
Set ColSettings = ObjWMI.ExecQuery ("SELECT DataWidth, AddressWidth, Architecture FROM Win32_Processor")
' I make two assumptions here:
' 1. Eveyone will have CPU0 device
' 2. There is only one cpu defined in the wmi database (and if not, then they are all of the same architecture)
'
' from: https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-processor
' Architecture values:
' x86 (0)
' MIPS (1)
' Alpha (2)
' PowerPC (3)
' ARM (5)
' ia64 (6)
' x64 (9)
' ARM64 (12)
Set ObjProcessor = ColSettings.Item("Win32_Processor.DeviceID=""CPU0""")
If ObjProcessor.Architecture = 0 AND ObjProcessor.AddressWidth = 32 Then
GetOSArchitecture = 32
ElseIf (ObjProcessor.Architecture = 6 OR ObjProcessor.Architecture = 9) AND ObjProcessor.DataWidth = 64 AND ObjProcessor.AddressWidth = 32 Then
GetOSArchitecture = 32
ElseIf (ObjProcessor.Architecture = 6 OR ObjProcessor.Architecture = 9) AND ObjProcessor.DataWidth = 64 AND ObjProcessor.AddressWidth = 64 Then
GetOSArchitecture = 64
' special case (could be included in the statements above) for Windows VM on Apple Silicon, tested only on parallels
ElseIf ObjProcessor.Architecture = 12 AND ObjProcessor.DataWidth = 64 AND ObjProcessor.AddressWidth = 64 Then
GetOSArchitecture = 64
Else
GetOSArchitecture = -1
End If
End Function
Function JsonSafe(inStrText)
If inStrText = "" Then
JsonSafe = ""
Exit Function
End If
Dim outStrText: outStrText = inStrText
outStrText = Replace(outStrText, "\", "\\")
outStrText = Replace(outStrText, vbcrlf, "\\r\\n")
outStrText = Replace(outStrText, vblf, "\\n")
outStrText = Replace(outStrText, vbcr, "\\r")
outStrText = Replace(outStrText, """", "\""")
outStrText = JsonU(outStrText)
JsonSafe = outStrText
End Function
'TODO: need to change this function's name to something more appropriate
Function JsonU(astr)
If isNull(astr) Then
JsonU = ""
Exit Function
End If
Dim c
Dim utftext: utftext = ""
For n = 1 To Len(astr)
c = CLng(AscW(Mid(astr, n, 1)))
If c < 0 Then
c = &H10000 + c
End If
If c < &H80 Then
utftext = utftext & Mid(astr, n, 1)
ElseIf c < &H100 Then
utftext = utftext & "\u00" & Hex(c)
ElseIf c < &H1000 Then
utftext = utftext & "\u0" & Hex(c)
Else
utftext = utftext & "\u" & Hex(c)
End If
Next
JsonU = utftext
End Function
'' SIG '' Begin signature block
'' SIG '' MIIpugYJKoZIhvcNAQcCoIIpqzCCKacCAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' /xx+W09gkLJc/0HyNY6NAGcF9m9HJnfsYf8ONzIEqiqg
'' SIG '' gg5xMIIGsDCCBJigAwIBAgIQCK1AsmDSnEyfXs2pvZOu
'' SIG '' 2TANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQGEwJVUzEV
'' SIG '' MBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
'' SIG '' d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2Vy
'' SIG '' dCBUcnVzdGVkIFJvb3QgRzQwHhcNMjEwNDI5MDAwMDAw
'' SIG '' WhcNMzYwNDI4MjM1OTU5WjBpMQswCQYDVQQGEwJVUzEX
'' SIG '' MBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMT
'' SIG '' OERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5n
'' SIG '' IFJTQTQwOTYgU0hBMzg0IDIwMjEgQ0ExMIICIjANBgkq
'' SIG '' hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1bQvQtAorXi3
'' SIG '' XdU5WRuxiEL1M4zrPYGXcMW7xIUmMJ+kjmjYXPXrNCQH
'' SIG '' 4UtP03hD9BfXHtr50tVnGlJPDqFX/IiZwZHMgQM+TXAk
'' SIG '' ZLON4gh9NH1MgFcSa0OamfLFOx/y78tHWhOmTLMBICXz
'' SIG '' ENOLsvsI8IrgnQnAZaf6mIBJNYc9URnokCF4RS6hnyzh
'' SIG '' GMIazMXuk0lwQjKP+8bqHPNlaJGiTUyCEUhSaN4QvRRX
'' SIG '' XegYE2XFf7JPhSxIpFaENdb5LpyqABXRN/4aBpTCfMjq
'' SIG '' GzLmysL0p6MDDnSlrzm2q2AS4+jWufcx4dyt5Big2MEj
'' SIG '' R0ezoQ9uo6ttmAaDG7dqZy3SvUQakhCBj7A7CdfHmzJa
'' SIG '' wv9qYFSLScGT7eG0XOBv6yb5jNWy+TgQ5urOkfW+0/tv
'' SIG '' k2E0XLyTRSiDNipmKF+wc86LJiUGsoPUXPYVGUztYuBe
'' SIG '' M/Lo6OwKp7ADK5GyNnm+960IHnWmZcy740hQ83eRGv7b
'' SIG '' UKJGyGFYmPV8AhY8gyitOYbs1LcNU9D4R+Z1MI3sMJN2
'' SIG '' FKZbS110YU0/EpF23r9Yy3IQKUHw1cVtJnZoEUETWJrc
'' SIG '' JisB9IlNWdt4z4FKPkBHX8mBUHOFECMhWWCKZFTBzCEa
'' SIG '' 6DgZfGYczXg4RTCZT/9jT0y7qg0IU0F8WD1Hs/q27Iwy
'' SIG '' CQLMbDwMVhECAwEAAaOCAVkwggFVMBIGA1UdEwEB/wQI
'' SIG '' MAYBAf8CAQAwHQYDVR0OBBYEFGg34Ou2O/hfEYb7/mF7
'' SIG '' CIhl9E5CMB8GA1UdIwQYMBaAFOzX44LScV1kTN8uZz/n
'' SIG '' upiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
'' SIG '' BggrBgEFBQcDAzB3BggrBgEFBQcBAQRrMGkwJAYIKwYB
'' SIG '' BQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBB
'' SIG '' BggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMuZGlnaWNl
'' SIG '' cnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQw
'' SIG '' QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybDMuZGln
'' SIG '' aWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5j
'' SIG '' cmwwHAYDVR0gBBUwEzAHBgVngQwBAzAIBgZngQwBBAEw
'' SIG '' DQYJKoZIhvcNAQEMBQADggIBADojRD2NCHbuj7w6mdNW
'' SIG '' 4AIapfhINPMstuZ0ZveUcrEAyq9sMCcTEp6QRJ9L/Z6j
'' SIG '' fCbVN7w6XUhtldU/SfQnuxaBRVD9nL22heB2fjdxyyL3
'' SIG '' WqqQz/WTauPrINHVUHmImoqKwba9oUgYftzYgBoRGRjN
'' SIG '' YZmBVvbJ43bnxOQbX0P4PpT/djk9ntSZz0rdKOtfJqGV
'' SIG '' WEjVGv7XJz/9kNF2ht0csGBc8w2o7uCJob054ThO2m67
'' SIG '' Np375SFTWsPK6Wrxoj7bQ7gzyE84FJKZ9d3OVG3ZXQIU
'' SIG '' H0AzfAPilbLCIXVzUstG2MQ0HKKlS43Nb3Y3LIU/Gs4m
'' SIG '' 6Ri+kAewQ3+ViCCCcPDMyu/9KTVcH4k4Vfc3iosJocsL
'' SIG '' 6TEa/y4ZXDlx4b6cpwoG1iZnt5LmTl/eeqxJzy6kdJKt
'' SIG '' 2zyknIYf48FWGysj/4+16oh7cGvmoLr9Oj9FpsToFpFS
'' SIG '' i0HASIRLlk2rREDjjfAVKM7t8RhWByovEMQMCGQ8M4+u
'' SIG '' KIw8y4+ICw2/O/TOHnuO77Xry7fwdxPm5yg/rBKupS8i
'' SIG '' bEH5glwVZsxsDsrFhsP2JjMMB0ug0wcCampAMEhLNKhR
'' SIG '' ILutG4UI4lkNbcoFUCvqShyepf2gpx8GdOfy1lKQ/a+F
'' SIG '' SCH5Vzu0nAPthkX0tGFuv2jiJmCG6sivqf6UHedjGzqG
'' SIG '' VnhOMIIHuTCCBaGgAwIBAgIQCnsc1K1pEsyUUas2dqg1
'' SIG '' ZzANBgkqhkiG9w0BAQsFADBpMQswCQYDVQQGEwJVUzEX
'' SIG '' MBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMT
'' SIG '' OERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5n
'' SIG '' IFJTQTQwOTYgU0hBMzg0IDIwMjEgQ0ExMB4XDTI0MTEw
'' SIG '' ODAwMDAwMFoXDTI1MTEwNzIzNTk1OVowgcExEzARBgsr
'' SIG '' BgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMI
'' SIG '' RGVsYXdhcmUxHTAbBgNVBA8MFFByaXZhdGUgT3JnYW5p
'' SIG '' emF0aW9uMRAwDgYDVQQFEwc0ODE3NDY0MQswCQYDVQQG
'' SIG '' EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UE
'' SIG '' BxMJUGFsbyBBbHRvMRMwEQYDVQQKEwpEb2NrZXIgSW5j
'' SIG '' MRMwEQYDVQQDEwpEb2NrZXIgSW5jMIICIjANBgkqhkiG
'' SIG '' 9w0BAQEFAAOCAg8AMIICCgKCAgEA2bkcKnV+V48j+M8N
'' SIG '' qipIuAgFwMYVv9kAwVNy25KuSJ1WfgO0jGGVFgYtzpMf
'' SIG '' YG0Y8G6DaO7lSuIju73e3ylt0fqXW12Wszl+BvAjIGou
'' SIG '' 1qwPJMuyrr5Ne8uT7fd1xNbtbZrsm1MW6nNNHvQBapB8
'' SIG '' p6ggGILkpxfdt7O4f+7t0sQpBuHrr9ZG9HATm+VM4hbw
'' SIG '' +tONQf7uBNvogqWYy0g5X99c0XAUcYwn1lpaLr4aUuiv
'' SIG '' xHerVYEayZRY6Hev4NkrJMJaGarqmxX3tl1ZyH3SQn5t
'' SIG '' qx5HNDHaebh593K7dam7piNZ9gmDOF0bkKA9anuaG8JH
'' SIG '' leW19sXjtvzP7LOgH8g510jaQkOC0GuSzli7UZh74k6R
'' SIG '' kuZoWgCWIc8hQmDfM1AXD/Sn8mRsmsuqNdr8+bX1b+Jb
'' SIG '' ojrnFZSUNehUl/+HNABduQNJhl74JBZsZr0gJg+bclVU
'' SIG '' 13S4pnDQy4PPXD2mKy//KhrpimVgtzbuOCHNMO7f3AY1
'' SIG '' K+QA1rekaBz7XBBtLA9pPIw7pCaZMdZemOkiLImIGWqd
'' SIG '' QuCB4sfmcHdpQMi/FAq9ev/sPdDZD3ig4dlQ1e9t/Buc
'' SIG '' gaEsO69rLbclF9jHb/gL75UECtzjsAUAk1JXE52nkMey
'' SIG '' f9Ryusm55fUIQAXozay1BwPK3HcuNc7X4aZrYA0EZNFj
'' SIG '' 9pkRdJsCAwEAAaOCAgIwggH+MB8GA1UdIwQYMBaAFGg3
'' SIG '' 4Ou2O/hfEYb7/mF7CIhl9E5CMB0GA1UdDgQWBBTsCjbX
'' SIG '' 88tCqZ6UaqBFia6/kIqURDA9BgNVHSAENjA0MDIGBWeB
'' SIG '' DAEDMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGln
'' SIG '' aWNlcnQuY29tL0NQUzAOBgNVHQ8BAf8EBAMCB4AwEwYD
'' SIG '' VR0lBAwwCgYIKwYBBQUHAwMwgbUGA1UdHwSBrTCBqjBT
'' SIG '' oFGgT4ZNaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
'' SIG '' Z2lDZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdSU0E0MDk2
'' SIG '' U0hBMzg0MjAyMUNBMS5jcmwwU6BRoE+GTWh0dHA6Ly9j
'' SIG '' cmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRH
'' SIG '' NENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEu
'' SIG '' Y3JsMIGUBggrBgEFBQcBAQSBhzCBhDAkBggrBgEFBQcw
'' SIG '' AYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMFwGCCsG
'' SIG '' AQUFBzAChlBodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5j
'' SIG '' b20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JT
'' SIG '' QTQwOTZTSEEzODQyMDIxQ0ExLmNydDAJBgNVHRMEAjAA
'' SIG '' MA0GCSqGSIb3DQEBCwUAA4ICAQBonrdB+g0ATLlnIJR+
'' SIG '' +kEzYMFsWGlYAUnpIvB7HD6g4qKr4QveLBVgQB3itR99
'' SIG '' /jlTq2nuAD5LijDm5UBNxErcDsMpKy9nYMEqDZumfern
'' SIG '' DUHgifueXOYVOLiD9th957tOu716gZLMTs6IDnvtEaIl
'' SIG '' IFq2EBgJHESQmOPnoyTYzF4JZscUjAcKMMX4QMtx7A28
'' SIG '' 1ATUVA73kIzgs8TQVr9Ci0Ju8BtToSjYT6mDeHx64Zjo
'' SIG '' Y/00J3lEwzaklphadGkLdShP72GyadeMBCewI+zBxzkM
'' SIG '' dv9Eha5hobQd9rH+gGzcx9EGgXJakxL7EiGDDLLl+EMq
'' SIG '' ei/pG5kMbpZbwMjLL9KgD64mdIkGQKylyWnvEHjoB1kR
'' SIG '' YWMY66AX6BRqXzFve1qmlFoKJ6c69uf2zNuOgaQIcDuA
'' SIG '' ddSLzHfdbAS9/2HQX5iPy33VRhzqJaF3fsbh5iUJhH0p
'' SIG '' F7OwC7JhJmGhgYggcC9hPa1Bx5QXLk8eycDmitir0YXh
'' SIG '' RoI2sLsIev/dPq96bi3cuhDPXoN8je2EfvxbumYW03T5
'' SIG '' +ITUj93NNuRIUP/3mt+V6X54E96z1f37nemB3WOtB84c
'' SIG '' RMZcbCWd2cuO9Peiyw5kmudo8/1yAQveWV6Q990mz8BD
'' SIG '' 85AN4gAzEHpiJ3at1PZuUh+gKVgMvuFF0xV6gvdYsnka
'' SIG '' b7Sd5zGCGqEwghqdAgEBMH0waTELMAkGA1UEBhMCVVMx
'' SIG '' FzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQD
'' SIG '' EzhEaWdpQ2VydCBUcnVzdGVkIEc0IENvZGUgU2lnbmlu
'' SIG '' ZyBSU0E0MDk2IFNIQTM4NCAyMDIxIENBMQIQCnsc1K1p
'' SIG '' EsyUUas2dqg1ZzANBglghkgBZQMEAgEFAKB8MBAGCisG
'' SIG '' AQQBgjcCAQwxAjAAMBkGCSqGSIb3DQEJAzEMBgorBgEE
'' SIG '' AYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3
'' SIG '' AgEVMC8GCSqGSIb3DQEJBDEiBCCtKTXv4r5pL+bltUtR
'' SIG '' nleuqt/b8/4Pe8Vqw/4yFE19JzANBgkqhkiG9w0BAQEF
'' SIG '' AASCAgDFwJ0BkxpXu8papj44+xKUO8k6aochc5RPCgyu
'' SIG '' OPKP0pIPHphtbd86Us/0uNA8AG2yldf+PpxoZO9pxrZo
'' SIG '' i/PThZWy/EAqdFt/qSV2YiUIee6xUanaxOKfub7n8iQj
'' SIG '' 9YPxvrrTfbDV7cwMo7olqD/+za3/iTVLu0qv7lgZ7a/s
'' SIG '' GJvPyRFBGYrmW19FV43Rejn+mljQDKOLe6e6OYKiA+ty
'' SIG '' cZ6vkKkeMMA7hNYo2P2sUZcP31LvZK5gh9LZ+1PMKvB7
'' SIG '' Y8wnFJQDjavcSizS5fE2jwGO/lWra5S1MCbX9/ZifEb2
'' SIG '' jmi1wObWomDZJlSXrP0YKkXK3RUvLOIANKWS6PRuR1sC
'' SIG '' ZmLuSl1epwaWyfgJ62FRrOj7XWNTxfiOYWUHtnPUQxar
'' SIG '' 75/U55udW72L5UB2XlET+CbRSFBymkujZXOnyPo7JqcS
'' SIG '' KtfLPjL8tABa+GJ0KGNYqTcgKjiA6l9cvN25pAy9JHcv
'' SIG '' MOdf1gj4tyWEwUzJtRMlqcSzk5qgxwFpwNMvYMM8wJ6n
'' SIG '' S47Xnj3WjmW+1c250pFzyvVX+DiC7t9MI+7idARislR4
'' SIG '' LxjWZ//N6Diy5kOcY3yjuq9Z2yGG0SKgKrFaX1LfUsR5
'' SIG '' QXvJyzur+k4gn6i3qbZPr3FGOHD3DpB1SQdxPM5HJImp
'' SIG '' OqJLVh16zvE0iBUcRj+KjdCtG1VWWaGCF3cwghdzBgor
'' SIG '' BgEEAYI3AwMBMYIXYzCCF18GCSqGSIb3DQEHAqCCF1Aw
'' SIG '' ghdMAgEDMQ8wDQYJYIZIAWUDBAIBBQAweAYLKoZIhvcN
'' SIG '' AQkQAQSgaQRnMGUCAQEGCWCGSAGG/WwHATAxMA0GCWCG
'' SIG '' SAFlAwQCAQUABCAUkgInA1oWI9vGDIcQYSNpvnhqXDfC
'' SIG '' NM4iWOOrL39jJwIRAPBwwrr9sVYv/0mM8XtjjcoYDzIw
'' SIG '' MjUwOTExMDcyMjU3WqCCEzowggbtMIIE1aADAgECAhAK
'' SIG '' gO8YS43xBYLRxHanlXRoMA0GCSqGSIb3DQEBCwUAMGkx
'' SIG '' CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
'' SIG '' SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBH
'' SIG '' NCBUaW1lU3RhbXBpbmcgUlNBNDA5NiBTSEEyNTYgMjAy
'' SIG '' NSBDQTEwHhcNMjUwNjA0MDAwMDAwWhcNMzYwOTAzMjM1
'' SIG '' OTU5WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGln
'' SIG '' aUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFNI
'' SIG '' QTI1NiBSU0E0MDk2IFRpbWVzdGFtcCBSZXNwb25kZXIg
'' SIG '' MjAyNSAxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
'' SIG '' CgKCAgEA0EasLRLGntDqrmBWsytXum9R/4ZwCgHfyjfM
'' SIG '' GUIwYzKomd8U1nH7C8Dr0cVMF3BsfAFI54um8+dnxk36
'' SIG '' +jx0Tb+k+87H9WPxNyFPJIDZHhAqlUPt281mHrBbZHqR
'' SIG '' K71Em3/hCGC5KyyneqiZ7syvFXJ9A72wzHpkBaMUNg7M
'' SIG '' OLxI6E9RaUueHTQKWXymOtRwJXcrcTTPPT2V1D/+cFll
'' SIG '' ESviH8YjoPFvZSjKs3SKO1QNUdFd2adw44wDcKgH+JRJ
'' SIG '' E5Qg0NP3yiSyi5MxgU6cehGHr7zou1znOM8odbkqoK+l
'' SIG '' J25LCHBSai25CFyD23DZgPfDrJJJK77epTwMP6eKA0kW
'' SIG '' a3osAe8fcpK40uhktzUd/Yk0xUvhDU6lvJukx7jphx40
'' SIG '' DQt82yepyekl4i0r8OEps/FNO4ahfvAk12hE5FVs9HVV
'' SIG '' WcO5J4dVmVzix4A77p3awLbr89A90/nWGjXMGn7FQhmS
'' SIG '' lIUDy9Z2hSgctaepZTd0ILIUbWuhKuAeNIeWrzHKYueM
'' SIG '' JtItnj2Q+aTyLLKLM0MheP/9w6CtjuuVHJOVoIJ/DtpJ
'' SIG '' RE7Ce7vMRHoRon4CWIvuiNN1Lk9Y+xZ66lazs2kKFSTn
'' SIG '' nkrT3pXWETTJkhd76CIDBbTRofOsNyEhzZtCGmnQigpF
'' SIG '' Hti58CSmvEyJcAlDVcKacJ+A9/z7eacCAwEAAaOCAZUw
'' SIG '' ggGRMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOQ7/PIx
'' SIG '' 7f391/ORcWMZUEPPYYzoMB8GA1UdIwQYMBaAFO9vU0rp
'' SIG '' 5AZ8esrikFb2L9RJ7MtOMA4GA1UdDwEB/wQEAwIHgDAW
'' SIG '' BgNVHSUBAf8EDDAKBggrBgEFBQcDCDCBlQYIKwYBBQUH
'' SIG '' AQEEgYgwgYUwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3Nw
'' SIG '' LmRpZ2ljZXJ0LmNvbTBdBggrBgEFBQcwAoZRaHR0cDov
'' SIG '' L2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1
'' SIG '' c3RlZEc0VGltZVN0YW1waW5nUlNBNDA5NlNIQTI1NjIw
'' SIG '' MjVDQTEuY3J0MF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6
'' SIG '' Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0
'' SIG '' ZWRHNFRpbWVTdGFtcGluZ1JTQTQwOTZTSEEyNTYyMDI1
'' SIG '' Q0ExLmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglg
'' SIG '' hkgBhv1sBwEwDQYJKoZIhvcNAQELBQADggIBAGUqrfEc
'' SIG '' JwS5rmBB7NEIRJ5jQHIh+OT2Ik/bNYulCrVvhREafBYF
'' SIG '' 0RkP2AGr181o2YWPoSHz9iZEN/FPsLSTwVQWo2H62yGB
'' SIG '' vg7ouCODwrx6ULj6hYKqdT8wv2UV+Kbz/3ImZlJ7YXwB
'' SIG '' D9R0oU62PtgxOao872bOySCILdBghQ/ZLcdC8cbUUO75
'' SIG '' ZSpbh1oipOhcUT8lD8QAGB9lctZTTOJM3pHfKBAEcxQF
'' SIG '' oHlt2s9sXoxFizTeHihsQyfFg5fxUFEp7W42fNBVN4ue
'' SIG '' LaceRf9Cq9ec1v5iQMWTFQa0xNqItH3CPFTG7aEQJmmr
'' SIG '' JTV3Qhtfparz+BW60OiMEgV5GWoBy4RVPRwqxv7Mk0Sy
'' SIG '' 4QHs7v9y69NBqycz0BZwhB9WOfOu/CIJnzkQTwtSSpGG
'' SIG '' hLdjnQ4eBpjtP+XB3pQCtv4E5UCSDag6+iX8MmB10nfl
'' SIG '' dPF9SVD7weCC3yXZi/uuhqdwkgVxuiMFzGVFwYbQsiGn
'' SIG '' oa9F5AaAyBjFBtXVLcKtapnMG3VH3EmAp/jsJ3FVF3+d
'' SIG '' 1SVDTmjFjLbNFZUWMXuZyvgLfgyPehwJVxwC+UpX2MSe
'' SIG '' y2ueIu9THFVkT+um1vshETaWyQo8gmBto/m3acaP9Qsu
'' SIG '' Lj3FNwFlTxq25+T4QwX9xa6ILs84ZPvmpovq90K8eWyG
'' SIG '' 2N01c4IhSOxqt81nMIIGtDCCBJygAwIBAgIQDcesVwX/
'' SIG '' IZkuQEMiDDpJhjANBgkqhkiG9w0BAQsFADBiMQswCQYD
'' SIG '' VQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkw
'' SIG '' FwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQD
'' SIG '' ExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMjUw
'' SIG '' NTA3MDAwMDAwWhcNMzgwMTE0MjM1OTU5WjBpMQswCQYD
'' SIG '' VQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4x
'' SIG '' QTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
'' SIG '' ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0Ex
'' SIG '' MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
'' SIG '' tHgx0wqYQXK+PEbAHKx126NGaHS0URedTa2NDZS1mZaD
'' SIG '' LFTtQ2oRjzUXMmxCqvkbsDpz4aH+qbxeLho8I6jY3xL1
'' SIG '' IusLopuW2qftJYJaDNs1+JH7Z+QdSKWM06qchUP+AbdJ
'' SIG '' gMQB3h2DZ0Mal5kYp77jYMVQXSZH++0trj6Ao+xh/AS7
'' SIG '' sQRuQL37QXbDhAktVJMQbzIBHYJBYgzWIjk8eDrYhXDE
'' SIG '' pKk7RdoX0M980EpLtlrNyHw0Xm+nt5pnYJU3Gmq6bNMI
'' SIG '' 1I7Gb5IBZK4ivbVCiZv7PNBYqHEpNVWC2ZQ8BbfnFRQV
'' SIG '' ESYOszFI2Wv82wnJRfN20VRS3hpLgIR4hjzL0hpoYGk8
'' SIG '' 1coWJ+KdPvMvaB0WkE/2qHxJ0ucS638ZxqU14lDnki7C
'' SIG '' coKCz6eum5A19WZQHkqUJfdkDjHkccpL6uoG8pbF0LJA
'' SIG '' QQZxst7VvwDDjAmSFTUms+wV/FbWBqi7fTJnjq3hj0Xb
'' SIG '' Qcd8hjj/q8d6ylgxCZSKi17yVp2NL+cnT6Toy+rN+nM8
'' SIG '' M7LnLqCrO2JP3oW//1sfuZDKiDEb1AQ8es9Xr/u6bDTn
'' SIG '' YCTKIsDq1BtmXUqEG1NqzJKS4kOmxkYp2WyODi7vQTCB
'' SIG '' ZtVFJfVZ3j7OgWmnhFr4yUozZtqgPrHRVHhGNKlYzyjl
'' SIG '' roPxul+bgIspzOwbtmsgY1MCAwEAAaOCAV0wggFZMBIG
'' SIG '' A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFO9vU0rp
'' SIG '' 5AZ8esrikFb2L9RJ7MtOMB8GA1UdIwQYMBaAFOzX44LS
'' SIG '' cV1kTN8uZz/nupiuHA9PMA4GA1UdDwEB/wQEAwIBhjAT
'' SIG '' BgNVHSUEDDAKBggrBgEFBQcDCDB3BggrBgEFBQcBAQRr
'' SIG '' MGkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2lj
'' SIG '' ZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2Vy
'' SIG '' dHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJv
'' SIG '' b3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDov
'' SIG '' L2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3Rl
'' SIG '' ZFJvb3RHNC5jcmwwIAYDVR0gBBkwFzAIBgZngQwBBAIw
'' SIG '' CwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUAA4ICAQAX
'' SIG '' zvsWgBz+Bz0RdnEwvb4LyLU0pn/N0IfFiBowf0/Dm1wG
'' SIG '' c/Do7oVMY2mhXZXjDNJQa8j00DNqhCT3t+s8G0iP5kvN
'' SIG '' 2n7Jd2E4/iEIUBO41P5F448rSYJ59Ib61eoalhnd6ywF
'' SIG '' LerycvZTAz40y8S4F3/a+Z1jEMK/DMm/axFSgoR8n6c3
'' SIG '' nuZB9BfBwAQYK9FHaoq2e26MHvVY9gCDA/JYsq7pGdog
'' SIG '' P8HRtrYfctSLANEBfHU16r3J05qX3kId+ZOczgj5kjat
'' SIG '' VB+NdADVZKON/gnZruMvNYY2o1f4MXRJDMdTSlOLh0HC
'' SIG '' n2cQLwQCqjFbqrXuvTPSegOOzr4EWj7PtspIHBldNE2K
'' SIG '' 9i697cvaiIo2p61Ed2p8xMJb82Yosn0z4y25xUbI7GIN
'' SIG '' /TpVfHIqQ6Ku/qjTY6hc3hsXMrS+U0yy+GWqAXam4ToW
'' SIG '' d2UQ1KYT70kZjE4YtL8Pbzg0c1ugMZyZZd/BdHLiRu7h
'' SIG '' AWE6bTEm4XYRkA6Tl4KSFLFk43esaUeqGkH/wyW4N7Oi
'' SIG '' gizwJWeukcyIPbAvjSabnf7+Pu0VrFgoiovRDiyx3zEd
'' SIG '' mcif/sYQsfch28bZeUz2rtY/9TCA6TD8dC3JE3rYkrhL
'' SIG '' ULy7Dc90G6e8BlqmyIjlgp2+VqsS9/wQD7yFylIz0scm
'' SIG '' bKvFoW2jNrbM1pD2T7m3XDCCBY0wggR1oAMCAQICEA6b
'' SIG '' GI750C3n79tQ4ghAGFowDQYJKoZIhvcNAQEMBQAwZTEL
'' SIG '' MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IElu
'' SIG '' YzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEkMCIG
'' SIG '' A1UEAxMbRGlnaUNlcnQgQXNzdXJlZCBJRCBSb290IENB
'' SIG '' MB4XDTIyMDgwMTAwMDAwMFoXDTMxMTEwOTIzNTk1OVow
'' SIG '' YjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0
'' SIG '' IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEh
'' SIG '' MB8GA1UEAxMYRGlnaUNlcnQgVHJ1c3RlZCBSb290IEc0
'' SIG '' MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
'' SIG '' v+aQc2jeu+RdSjwwIjBpM+zCpyUuySE98orYWcLhKac9
'' SIG '' WKt2ms2uexuEDcQwH/MbpDgW61bGl20dq7J58soR0uRf
'' SIG '' 1gU8Ug9SH8aeFaV+vp+pVxZZVXKvaJNwwrK6dZlqczKU
'' SIG '' 0RBEEC7fgvMHhOZ0O21x4i0MG+4g1ckgHWMpLc7sXk7I
'' SIG '' k/ghYZs06wXGXuxbGrzryc/NrDRAX7F6Zu53yEioZldX
'' SIG '' n1RYjgwrt0+nMNlW7sp7XeOtyU9e5TXnMcvak17cjo+A
'' SIG '' 2raRmECQecN4x7axxLVqGDgDEI3Y1DekLgV9iPWCPhCR
'' SIG '' cKtVgkEy19sEcypukQF8IUzUvK4bA3VdeGbZOjFEmjNA
'' SIG '' vwjXWkmkwuapoGfdpCe8oU85tRFYF/ckXEaPZPfBaYh2
'' SIG '' mHY9WV1CdoeJl2l6SPDgohIbZpp0yt5LHucOY67m1O+S
'' SIG '' kjqePdwA5EUlibaaRBkrfsCUtNJhbesz2cXfSwQAzH0c
'' SIG '' lcOP9yGyshG3u3/y1YxwLEFgqrFjGESVGnZifvaAsPvo
'' SIG '' ZKYz0YkH4b235kOkGLimdwHhD5QMIR2yVCkliWzlDlJR
'' SIG '' R3S+Jqy2QXXeeqxfjT/JvNNBERJb5RBQ6zHFynIWIgnf
'' SIG '' fEx1P2PsIV/EIFFrb7GrhotPwtZFX50g/KEexcCPorF+
'' SIG '' CiaZ9eRpL5gdLfXZqbId5RsCAwEAAaOCATowggE2MA8G
'' SIG '' A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOzX44LScV1k
'' SIG '' TN8uZz/nupiuHA9PMB8GA1UdIwQYMBaAFEXroq/0ksuC
'' SIG '' MS1Ri6enIZ3zbcgPMA4GA1UdDwEB/wQEAwIBhjB5Bggr
'' SIG '' BgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
'' SIG '' Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0
'' SIG '' cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0
'' SIG '' QXNzdXJlZElEUm9vdENBLmNydDBFBgNVHR8EPjA8MDqg
'' SIG '' OKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGln
'' SIG '' aUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMBEGA1UdIAQK
'' SIG '' MAgwBgYEVR0gADANBgkqhkiG9w0BAQwFAAOCAQEAcKC/
'' SIG '' Q1xV5zhfoKN0Gz22Ftf3v1cHvZqsoYcs7IVeqRq7IviH
'' SIG '' GmlUIu2kiHdtvRoU9BNKei8ttzjv9P+Aufih9/Jy3iS8
'' SIG '' UgPITtAq3votVs/59PesMHqai7Je1M/RQ0SbQyHrlnKh
'' SIG '' SLSZy51PpwYDE3cnRNTnf+hZqPC/Lwum6fI0POz3A8eH
'' SIG '' qNJMQBk1RmppVLC4oVaO7KTVPeix3P0c2PR3WlxUjG/v
'' SIG '' oVA9/HYJaISfb8rbII01YBwCA8sgsKxYoA5AY8WYIsGy
'' SIG '' WfVVa88nq2x2zm8jLfR+cWojayL/ErhULSd+2DrZ8LaH
'' SIG '' lv1b0VysGMNNn3O3AamfV6peKOK5lDGCA3wwggN4AgEB
'' SIG '' MH0waTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lD
'' SIG '' ZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2VydCBUcnVz
'' SIG '' dGVkIEc0IFRpbWVTdGFtcGluZyBSU0E0MDk2IFNIQTI1
'' SIG '' NiAyMDI1IENBMQIQCoDvGEuN8QWC0cR2p5V0aDANBglg
'' SIG '' hkgBZQMEAgEFAKCB0TAaBgkqhkiG9w0BCQMxDQYLKoZI
'' SIG '' hvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI1MDkxMTA3
'' SIG '' MjI1N1owKwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQU3WIw
'' SIG '' rIYKLTBr2jixaHlSMAf7QX4wLwYJKoZIhvcNAQkEMSIE
'' SIG '' IHEHg97YtiEkz4cBrj/eoiPbPbSP25PWytZTzrWpDeZ3
'' SIG '' MDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEIEqgP6Is11yE
'' SIG '' xVyTj4KOZ2ucrsqzP+NtJpqjNPFGEQozMA0GCSqGSIb3
'' SIG '' DQEBAQUABIICACT693eW3o0FNQhzuw5O8oWE2MGMtKyv
'' SIG '' p8yG/l/I29VUgddJrhMeasHbsqBqbYxU+/wpbOhPQbTR
'' SIG '' 0kWeixD8+IbYSO4mAiI5xpnVsBHsVVzJtKdDSXWJb0GI
'' SIG '' B5s6pHomJisuVJtuM6CxMiJrxQFjhHOZkiCPwh7E3TeO
'' SIG '' j9jHOPdac6ll7jg/jKO5jzUfV/reJN5CYZqkJYvKwDuK
'' SIG '' 3i9i09313QqYihMSzyq/qUspxr3y44myrmPyVL+Pf38f
'' SIG '' BuZviGxMcFM9+wlt5HbrQNEWwxucr20GoFPjEXVhoX72
'' SIG '' h1nQnXUkq0FDo3x9ujhswTcZnyHSQXSIqH4bYREIBQzV
'' SIG '' j2OLFVN2ZoJc8nS6n0HAt/5eMGjt7Wx0/IgNWWDVcGF/
'' SIG '' Av6H6Kr+XB9Hmku8rP21KGdfJcwL+taY7ofm0sG9ctak
'' SIG '' 2yzqXak8HJ/vuT4Nhe312cPZco85inXJfNUoRDjsQox5
'' SIG '' BsW2ohzLiO9xlHWsNfpucwF3EY+TlBnbeHQ6VnTeGKXI
'' SIG '' 0C+RAx3aGb9H0NlXm1Gni87haShbHjizpH/Oqeh+IYy6
'' SIG '' PRIEDovSKkd8wruRsEEORf0x5lekDohpd4TH9y4zfwP3
'' SIG '' gzB2p7btzOP5HpHK2VHnevaL5FuENxjndh9De+TjMG2W
'' SIG '' Rt/QbKSAct6mSrv08WmHHGd8AniwJJfkMj4u
'' SIG '' End signature block