'--------------------------------------------------------------------
' Portswitch.vbs
' Usage: Portswitch (HTTP port number)
' Example:Portswitch 1337
' (c) Microsoft Corporation. All rights reserved.
'
' This script will set the HTTP port on which the
' ConfigMgr Advanced Client will use to communicate with the Management Point.
' This script is intended to be used with software distribution.
' Because file associations can change it is recommended that you execute portswitch.vbs in the
' following way:
'
' The command line provided in the package's program should be "wscript.exe portswitch.vbs
' (HTTP port number) (optional: HTTPS port number)"
'
' Example: "Wscript.exe portswitch.vbs 1337 31337"
'
'
' To properly generate pass/fail status for software distribution you must do the following:
' 1) In the ConfigMgr package, set the MIF matching properties to the following:
'      MIF Filename:  "Portswitch.mif"
' 2) In the ConfigMgr Program, you must specify that the "Program will reboot"
'      (this is because CCMExec restarts)
'
'--------------------------------------------------------------------

Dim objShell 'This establishes the variable Shell that will become the WScript.Shell object.
Dim nPortValue, nSslPortValue, nReadValue 'Holds the value passed as a command argument
Dim CCMService

Const EVENT_SUCESS = 0
Const EVENT_FAILED = 2

Const Reg_PortKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCM\HttpPort" 'Set constant as the registry path to the desired key.
Const Reg_PortKeySSL = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCM\HttpsPort" 'SSL port for ConfigMgr client

' Create a WScript.Shell oject
Set objShell = Wscript.CreateObject("Wscript.Shell")

' check the argument count
iNumberOfArguments = Wscript.Arguments.Count
If iNumberOfArguments > 2 or iNumberOfArguments < 1 Then
    objShell.LogEvent EVENT_FAILED, _
            "Portswitch.vbs was executed with no specified port. " & _
            "Usage: Portswitch (HTTP port number) " & _
            "(optional HTTPS port number). Examples: ""Portswitch 8080"" or ""PortSwitch 8080 8443""" 
    FailAndQuit
End if

On Error Resume Next
' Validate the port arguments, and set the ports in the registry
nPortValue = CLng(Wscript.Arguments.Item(0))
ValidatePort nPortValue

' If we have an SSL port, validate it, too.
If iNumberOfArguments = 2 Then
    nSslPortValue = CLng(Wscript.Arguments.Item(1))
    If nSslPortValue = nPortValue Then
        objShell.LogEvent EVENT_FAILED, _
            "Portswitch.vbs had an invalid port specification: HTTP and HTTPS ports cannot be identical."
        FailAndQuit
    End If

    ValidatePort nSslPortValue
    WriteRegKey Reg_PortKeySSL, nSslPortValue
End If

WriteRegKey Reg_PortKey, nPortValue

Set objWmiservice = GetObject("winmgmts:root\cimv2:Win32_Service.Name=""CCMExec""")

' Stop the CCMExec so the port change may be picked up by the client.
errReturnCode = objWMIService.StopService()

If errReturnCode <> 0 Then
    objShell.LogEvent EVENT_FAILED, _
        "Portswitch.vbs was unable to stop the CCMExec service: (Err=" & errReturnCode & ")"
    FailAndQuit
End If

' Wait for the ccmexec service to stop  (to a maximum of 10 minutes)
Dim dWaitUntil
dWaitUntil = DateAdd("n", 10, Now)
Do While (objWMIService.InterrogateService() <> 6) And (Now < dWaitUntil)
    ' The service is still running
    WScript.Sleep 1000
Loop

' Did the service stop?
If objWMIService.InterrogateService() <> 6 then
    objShell.LogEvent EVENT_FAILED, _
        "Portswitch.vbs timed out trying to stop the CCMExec service after 3 minutes."
    FailAndQuit
End If

If Err.number <> 0 Then
    objShell.LogEvent EVENT_FAILED, _
    "Portswitch.vbs - An error occured: " & Err.Description
    FailAndQuit
End If

' Generate a success status mif
WriteStatusMIF(true)

' Starting CCMExec so the port change may be picked up by the client.
errReturnCode = objWMIService.StartService ()
If iNumberOfArguments = 2 Then
    objShell.LogEvent EVENT_SUCCESS, _
        "The ConfigMgr Advanced Client has been successfully set to communicate with the MP on ports " & nPortValue & " (HTTP) and " & nSslPortValue & " (HTTPS)"
Else
    objShell.LogEvent EVENT_SUCCESS, _
        "The ConfigMgr Advanced Client has been successfully set to communicate with the MP on port " & nPortValue
End If

WScript.Quit(0)
' -----------------------------

ErrorHandler:
    objShell.LogEvent EVENT_FAILED, _
        "Portswitch failed with an internal error: " & Err.Description
    FailAndQuit

' -----------------------------
Sub ValidatePort(nPort)
    If Err.number <> 0 Then
        objShell.LogEvent EVENT_FAILED, _
            "Portswitch.vbs - An invalid port number was specified  (Valid ports are 1-65535). " & _
            "Usage: Portswitch (HTTP port number) Example: Portswitch 8080"
        FailAndQuit
    End If

    ' Check the port value
    If nPort  < 1 or nPort > 65535 then
        objShell.LogEvent EVENT_FAILED, _
            "Portswitch.vbs was executed with an invalid port number (" & nPort & "). Port numbers must fall " & _
            "between 1-65535 Usage: Portswitch (HTTP port number) Example: Portswitch 8080"
        FailAndQuit
    End if
End Sub

' -----------------------------
Sub WriteRegKey(sRegKey, nPort)
    nReadValue = objShell.RegRead(sRegKey)
    If nReadValue then
        ' Write current path to registry key and read it to become constant for script.
        objShell.RegWrite (sRegKey), nPort, "REG_DWORD"
        nReadValue = objShell.RegRead(sRegKey)
    else
        objShell.LogEvent EVENT_FAILED, _
            "Portswitch is unable to modify the Registry. The Registry Key is not present. This must be an RTM Advanced Client or a Legacy Client."
        FailAndQuit
    End If
End Sub

' -----------------------------
Sub FailAndQuit()
    WriteStatusMIF(false)
    WScript.Quit(1)
End Sub


' -----------------------------
Sub WriteStatusMIF(bSuccess)

    ' Writing a status MIF for SWDist to return a success or a failure to execute
    Const ForWriting = 2
    Const TemporaryFolder = 2
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim strTempDir
    strTempDir = objFSO.GetSpecialFolder(TemporaryFolder)
    Set objFile = objFSO.CreateTextFile(strTempDir & "\portswitch.mif", ForWriting)
    objFile.Writeline ("START COMPONENT")
    objFile.Writeline ("NAME = ""WORKSTATION""")
    objFile.Writeline ("  START GROUP")
    objFile.Writeline ("    NAME = ""ComponentID""")
    objFile.Writeline ("    ID = 1")
    objFile.Writeline ("    CLASS = ""DMTF|ComponentID|1.0""")
    objFile.Writeline ("    START ATTRIBUTE")
    objFile.Writeline ("      NAME = ""Manufacturer""")
    objFile.Writeline ("      ID = 1")
    objFile.Writeline ("      ACCESS = READ-ONLY")
    objFile.Writeline ("      STORAGE = SPECIFIC")
    objFile.Writeline ("      TYPE = STRING(64)")
    objFile.Writeline ("      VALUE = ""Microsoft""")
    objFile.Writeline ("    END ATTRIBUTE")
    objFile.Writeline ("    START ATTRIBUTE")
    objFile.Writeline ("      NAME = ""Product""")
    objFile.Writeline ("      ID = 2")
    objFile.Writeline ("      ACCESS = READ-ONLY")
    objFile.Writeline ("      STORAGE = SPECIFIC")
    objFile.Writeline ("      TYPE = STRING(64)")
    objFile.Writeline ("      VALUE = ""Portswitch""")
    objFile.Writeline ("    END ATTRIBUTE")
    objFile.Writeline ("    START ATTRIBUTE")
    objFile.Writeline ("      NAME = ""Version""")
    objFile.Writeline ("      ID = 3")
    objFile.Writeline ("      ACCESS = READ-ONLY")
    objFile.Writeline ("      STORAGE = SPECIFIC")
    objFile.Writeline ("      TYPE = STRING(64)")
    objFile.Writeline ("      VALUE = ""1.0""")
    objFile.Writeline ("    END ATTRIBUTE")
    objFile.Writeline ("    START ATTRIBUTE")
    objFile.Writeline ("      NAME = ""Locale""")
    objFile.Writeline ("      ID = 4")
    objFile.Writeline ("      ACCESS = READ-ONLY")
    objFile.Writeline ("      STORAGE = SPECIFIC")
    objFile.Writeline ("      TYPE = STRING(16)")
    objFile.Writeline ("      VALUE = ""ENU""")
    objFile.Writeline ("    END ATTRIBUTE")
    objFile.Writeline ("    START ATTRIBUTE")
    objFile.Writeline ("      NAME = ""Serial Number""")
    objFile.Writeline ("      ID = 5")
    objFile.Writeline ("      ACCESS = READ-ONLY")
    objFile.Writeline ("      STORAGE = SPECIFIC")
    objFile.Writeline ("      TYPE = STRING(64)")
    objFile.Writeline ("      VALUE = """"")
    objFile.Writeline ("    END ATTRIBUTE")
    objFile.Writeline ("    START ATTRIBUTE")
    objFile.Writeline ("      NAME = ""Installation""")
    objFile.Writeline ("      ID = 6")
    objFile.Writeline ("      ACCESS = READ-ONLY")
    objFile.Writeline ("      STORAGE = SPECIFIC")
    objFile.Writeline ("      TYPE = STRING(64)")
    objFile.Writeline ("      VALUE = ""DateTime""")
    objFile.Writeline ("    END ATTRIBUTE")
    objFile.Writeline ("  END GROUP")
    objFile.Writeline ("  START GROUP")
    objFile.Writeline ("    NAME = ""InstallStatus""")
    objFile.Writeline ("    ID = 2")
    objFile.Writeline ("    CLASS = ""MICROSOFT|JOBSTATUS|1.0""")
    objFile.Writeline ("    START ATTRIBUTE")
    objFile.Writeline ("      NAME = ""Status""")
    objFile.Writeline ("      ID = 1")
    objFile.Writeline ("      ACCESS = READ-ONLY")
    objFile.Writeline ("      STORAGE = SPECIFIC")
    objFile.Writeline ("      TYPE = STRING(32)")

    ' Pass or fail this status mif?
    If bSuccess = true then
        objFile.Writeline ("      VALUE = ""Success""")
    else
        objFile.Writeline ("      VALUE = ""Failed""")
    End if

    objFile.Writeline ("    END ATTRIBUTE")
    objFile.Writeline ("    START ATTRIBUTE")
    objFile.Writeline ("      NAME = ""Description""")
    objFile.Writeline ("      ID = 2")
    objFile.Writeline ("      ACCESS = READ-ONLY")
    objFile.Writeline ("      STORAGE = SPECIFIC")
    objFile.Writeline ("      TYPE = STRING(128)")

    If bSuccess = true and iNumberOfArguments = 2 then
        objFile.Writeline ("      VALUE = ""The ConfigMgr Advanced Client has been successfully set to communicate with the MP on ports " & nPortValue & " (HTTP) and " & nSslPortValue & " (HTTPS)""")
    ElseIf bSuccess = true then
        objFile.Writeline ("      VALUE = ""The ConfigMgr Advanced Client has been successfully set to communicate with the MP on ports " & nPortValue & """")
    Else
        objFile.Writeline ("      VALUE = ""The ConfigMgr Advanced Client has not been set to communicate with the MP on the specified port.  See the client's Application Event Log for more details""")
    End If

    objFile.Writeline ("    END ATTRIBUTE")
    objFile.Writeline ("  END GROUP")
    objFile.Writeline ("END COMPONENT")

End Sub

'' SIG '' Begin signature block
'' SIG '' MIIn+wYJKoZIhvcNAQcCoIIn7DCCJ+gCAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' kNoyQ+kEDMJy5X6lruwNc6Pgdomi/DC06UKEA/dNZYmg
'' SIG '' gg2FMIIGAzCCA+ugAwIBAgITMwAAA64tNVHIU49VHQAA
'' SIG '' AAADrjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
'' SIG '' aWduaW5nIFBDQSAyMDExMB4XDTIzMTExNjE5MDg1OVoX
'' SIG '' DTI0MTExNDE5MDg1OVowdDELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEeMBwGA1UEAxMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
'' SIG '' MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
'' SIG '' 9CD8pjY3wxCoPmMhOkow7ycCltfqYnqk4wGNApzh2dTY
'' SIG '' +YqxozWTzJUOB38VxsgFQmXBFhOMdrGYGpvO9kdbNPkw
'' SIG '' HpTrW6hZqFuLLiRwGKEx4ZM5zVSqbHJuX2fPfUJ0Xmb+
'' SIG '' VrVsGw/BwBV2zz0rVtiSgqj3GeeGOsG7llfWyrSjyJqm
'' SIG '' 5DHE3o04BAI/NuhkHOv04euiqJGvHFCL8+fXvyD9OAxq
'' SIG '' 4fcJKtoyBb0PBA3oMNQeCsiUyLO+voZqVTOUsAWY0bN5
'' SIG '' YjkK4nq5DVaNdVrrowd5AX9gmz6D/TJTssns6pDCG00Y
'' SIG '' +Dh3ipWpnVmkhYcByyUSEKX3PLC8DkiAQQIDAQABo4IB
'' SIG '' gjCCAX4wHwYDVR0lBBgwFgYKKwYBBAGCN0wIAQYIKwYB
'' SIG '' BQUHAwMwHQYDVR0OBBYEFIcf73Spl4cHOFoll27H9COd
'' SIG '' 4fE/MFQGA1UdEQRNMEukSTBHMS0wKwYDVQQLEyRNaWNy
'' SIG '' b3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQx
'' SIG '' FjAUBgNVBAUTDTIzMDAxMis1MDE4MzYwHwYDVR0jBBgw
'' SIG '' FoAUSG5k5VAF04KqFzc3IrVtqMp1ApUwVAYDVR0fBE0w
'' SIG '' SzBJoEegRYZDaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
'' SIG '' L3BraW9wcy9jcmwvTWljQ29kU2lnUENBMjAxMV8yMDEx
'' SIG '' LTA3LTA4LmNybDBhBggrBgEFBQcBAQRVMFMwUQYIKwYB
'' SIG '' BQUHMAKGRWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w
'' SIG '' a2lvcHMvY2VydHMvTWljQ29kU2lnUENBMjAxMV8yMDEx
'' SIG '' LTA3LTA4LmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3
'' SIG '' DQEBCwUAA4ICAQBqyWA1Eu7PKNMjaaxl0V7gJ0XBysUo
'' SIG '' xZluMHJXFE2LEGZIZ2zMLYVjOnAGG/4dluRjSrZZo/8v
'' SIG '' wk4Xt8v6NBB9ofo8H1P/XidHytWTv9lg9MYu++6lPmu5
'' SIG '' fCozD3cI2NLZPW2BBhGX2D0R8tQBj0FbmZRuIucpiQ7D
'' SIG '' K3CHKlfKcc7MP8pPzuMv55Tox8+KFQD1NG6+bfbYA/BN
'' SIG '' PBkg4tyOh+exbaHfcNuodDJUIjq9dF6oa+Yjy0u0pUMI
'' SIG '' /B1t+8m6rJo0KSoZlrpesYl0jRhpt+hmqx8uENXoGJcY
'' SIG '' ZVJ5N2Skq90LViKNRhi9N4U+e8c4y9uXyomUF/6viCPJ
'' SIG '' 7huTNEJo75ehIJba+IWd3txUEc0R3y6DT6txC6cW1nR/
'' SIG '' LTbo9I/8fQq538G5IvJ+e5iSiOSVVkVk0i5m03Awy5E2
'' SIG '' ZSS4PVdQSCcFxmN4tpEfYuR7AAy/GJVtIDFlUpSgdXok
'' SIG '' pSui5hYtK1R9enXXvo+U/xGkLRc+qp4De3dZbzu7pOq7
'' SIG '' V/jCyhuCw0bEIAU4urCGIip7TI6GBRzD7yPzjFIqeZY7
'' SIG '' S4rVW5BRn2oEqpm8Su6yTIQvMIk8x2pwYNUa2339Z4gW
'' SIG '' 5xW21eFA5mLpo7NRSKRQms5OgAA18aCgqOU7Ds0h6q/Y
'' SIG '' B4BmEAtoTMl/TBiyKaMGAlEcdy+5FIhmzojMGjCCB3ow
'' SIG '' ggVioAMCAQICCmEOkNIAAAAAAAMwDQYJKoZIhvcNAQEL
'' SIG '' BQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo
'' SIG '' aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
'' SIG '' ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMT
'' SIG '' KU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhv
'' SIG '' cml0eSAyMDExMB4XDTExMDcwODIwNTkwOVoXDTI2MDcw
'' SIG '' ODIxMDkwOVowfjELMAkGA1UEBhMCVVMxEzARBgNVBAgT
'' SIG '' Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
'' SIG '' BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYG
'' SIG '' A1UEAxMfTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0Eg
'' SIG '' MjAxMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
'' SIG '' ggIBAKvw+nIQHC6t2G6qghBNNLrytlghn0IbKmvpWlCq
'' SIG '' uAY4GgRJun/DDB7dN2vGEtgL8DjCmQawyDnVARQxQtOJ
'' SIG '' DXlkh36UYCRsr55JnOloXtLfm1OyCizDr9mpK656Ca/X
'' SIG '' llnKYBoF6WZ26DJSJhIv56sIUM+zRLdd2MQuA3WraPPL
'' SIG '' bfM6XKEW9Ea64DhkrG5kNXimoGMPLdNAk/jj3gcN1Vx5
'' SIG '' pUkp5w2+oBN3vpQ97/vjK1oQH01WKKJ6cuASOrdJXtjt
'' SIG '' 7UORg9l7snuGG9k+sYxd6IlPhBryoS9Z5JA7La4zWMW3
'' SIG '' Pv4y07MDPbGyr5I4ftKdgCz1TlaRITUlwzluZH9TupwP
'' SIG '' rRkjhMv0ugOGjfdf8NBSv4yUh7zAIXQlXxgotswnKDgl
'' SIG '' mDlKNs98sZKuHCOnqWbsYR9q4ShJnV+I4iVd0yFLPlLE
'' SIG '' tVc/JAPw0XpbL9Uj43BdD1FGd7P4AOG8rAKCX9vAFbO9
'' SIG '' G9RVS+c5oQ/pI0m8GLhEfEXkwcNyeuBy5yTfv0aZxe/C
'' SIG '' HFfbg43sTUkwp6uO3+xbn6/83bBm4sGXgXvt1u1L50kp
'' SIG '' pxMopqd9Z4DmimJ4X7IvhNdXnFy/dygo8e1twyiPLI9A
'' SIG '' N0/B4YVEicQJTMXUpUMvdJX3bvh4IFgsE11glZo+TzOE
'' SIG '' 2rCIF96eTvSWsLxGoGyY0uDWiIwLAgMBAAGjggHtMIIB
'' SIG '' 6TAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQUSG5k
'' SIG '' 5VAF04KqFzc3IrVtqMp1ApUwGQYJKwYBBAGCNxQCBAwe
'' SIG '' CgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB
'' SIG '' /wQFMAMBAf8wHwYDVR0jBBgwFoAUci06AjGQQ7kUBU7h
'' SIG '' 6qfHMdEjiTQwWgYDVR0fBFMwUTBPoE2gS4ZJaHR0cDov
'' SIG '' L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVj
'' SIG '' dHMvTWljUm9vQ2VyQXV0MjAxMV8yMDExXzAzXzIyLmNy
'' SIG '' bDBeBggrBgEFBQcBAQRSMFAwTgYIKwYBBQUHMAKGQmh0
'' SIG '' dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMv
'' SIG '' TWljUm9vQ2VyQXV0MjAxMV8yMDExXzAzXzIyLmNydDCB
'' SIG '' nwYDVR0gBIGXMIGUMIGRBgkrBgEEAYI3LgMwgYMwPwYI
'' SIG '' KwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNv
'' SIG '' bS9wa2lvcHMvZG9jcy9wcmltYXJ5Y3BzLmh0bTBABggr
'' SIG '' BgEFBQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBwAG8AbABp
'' SIG '' AGMAeQBfAHMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkq
'' SIG '' hkiG9w0BAQsFAAOCAgEAZ/KGpZjgVHkaLtPYdGcimwuW
'' SIG '' EeFjkplCln3SeQyQwWVfLiw++MNy0W2D/r4/6ArKO79H
'' SIG '' qaPzadtjvyI1pZddZYSQfYtGUFXYDJJ80hpLHPM8QotS
'' SIG '' 0LD9a+M+By4pm+Y9G6XUtR13lDni6WTJRD14eiPzE32m
'' SIG '' kHSDjfTLJgJGKsKKELukqQUMm+1o+mgulaAqPyprWElj
'' SIG '' HwlpblqYluSD9MCP80Yr3vw70L01724lruWvJ+3Q3fMO
'' SIG '' r5kol5hNDj0L8giJ1h/DMhji8MUtzluetEk5CsYKwsat
'' SIG '' ruWy2dsViFFFWDgycScaf7H0J/jeLDogaZiyWYlobm+n
'' SIG '' t3TDQAUGpgEqKD6CPxNNZgvAs0314Y9/HG8VfUWnduVA
'' SIG '' KmWjw11SYobDHWM2l4bf2vP48hahmifhzaWX0O5dY0Hj
'' SIG '' Wwechz4GdwbRBrF1HxS+YWG18NzGGwS+30HHDiju3mUv
'' SIG '' 7Jf2oVyW2ADWoUa9WfOXpQlLSBCZgB/QACnFsZulP0V3
'' SIG '' HjXG0qKin3p6IvpIlR+r+0cjgPWe+L9rt0uX4ut1eBrs
'' SIG '' 6jeZeRhL/9azI2h15q/6/IvrC4DqaTuv/DDtBEyO3991
'' SIG '' bWORPdGdVk5Pv4BXIqF4ETIheu9BCrE/+6jMpF3BoYib
'' SIG '' V3FWTkhFwELJm3ZbCoBIa/15n8G9bW1qyVJzEw16UM0x
'' SIG '' ghnOMIIZygIBATCBlTB+MQswCQYDVQQGEwJVUzETMBEG
'' SIG '' A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
'' SIG '' ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
'' SIG '' MSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5n
'' SIG '' IFBDQSAyMDExAhMzAAADri01UchTj1UdAAAAAAOuMA0G
'' SIG '' CWCGSAFlAwQCAQUAoIHeMBkGCSqGSIb3DQEJAzEMBgor
'' SIG '' BgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEE
'' SIG '' AYI3AgEVMC8GCSqGSIb3DQEJBDEiBCA0WmhIyaCB433Q
'' SIG '' btKGvSlstI+NGeScr9S1mJTSgSORSDByBgorBgEEAYI3
'' SIG '' AgEMMWQwYqBEgEIARABlAHMAawB0AG8AcABBAG4AYQBs
'' SIG '' AHkAdABpAGMAcwBMAG8AZwBzAEMAbwBsAGwAZQBjAHQA
'' SIG '' bwByAC4AcABzADGhGoAYaHR0cDovL3d3dy5taWNyb3Nv
'' SIG '' ZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAJ9zK+4HpCF+
'' SIG '' MUnwpdesD9BH6r7upuQnz2Islc44ygwusOykI7QwsqTM
'' SIG '' 0zimy+ptdC3/LT2tobs3Qg/fbLvTqpQpvjtO4Lb/4j5o
'' SIG '' beSb75ATIe/PiTxCtU/2ItsxBNZq/vciBHBPcQrjOxw0
'' SIG '' c+bdqsqoKkViOngFhOnezGpmj3LsiSn697jifm7top4m
'' SIG '' hEhMML0ekqqfOQ4KP3TUF9ltBWrDCjiDaEyP//w6o56c
'' SIG '' KEHJQ2JFFIuedJ9ACLgW85h/RY1cuJAXN6+79JuLHQgT
'' SIG '' 7PurvxR+idMyjCWNXCXYy13ZVKYryNA9gmtH6OQxi3ht
'' SIG '' oIFv78IMoqfwXgEAIK1/9PuhghcoMIIXJAYKKwYBBAGC
'' SIG '' NwMDATGCFxQwghcQBgkqhkiG9w0BBwKgghcBMIIW/QIB
'' SIG '' AzEPMA0GCWCGSAFlAwQCAQUAMIIBWQYLKoZIhvcNAQkQ
'' SIG '' AQSgggFIBIIBRDCCAUACAQEGCisGAQQBhFkKAwEwMTAN
'' SIG '' BglghkgBZQMEAgEFAAQgSr696137b/L1iZdh+gDumG0i
'' SIG '' y7UFdJv/wZFbrf7GFXYCBmYzqJqqQxgTMjAyNDA1MDIy
'' SIG '' MDU1NDYuMzg1WjAEgAIB9KCB2KSB1TCB0jELMAkGA1UE
'' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
'' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
'' SIG '' b3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IEly
'' SIG '' ZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQL
'' SIG '' Ex1UaGFsZXMgVFNTIEVTTjozQkQ0LTRCODAtNjlDMzEl
'' SIG '' MCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy
'' SIG '' dmljZaCCEXcwggcnMIIFD6ADAgECAhMzAAAB5Y9qwPM9
'' SIG '' tAujAAEAAAHlMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNV
'' SIG '' BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
'' SIG '' VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
'' SIG '' Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBU
'' SIG '' aW1lLVN0YW1wIFBDQSAyMDEwMB4XDTIzMTAxMjE5MDcz
'' SIG '' NVoXDTI1MDExMDE5MDczNVowgdIxCzAJBgNVBAYTAlVT
'' SIG '' MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
'' SIG '' ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
'' SIG '' YXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5k
'' SIG '' IE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhh
'' SIG '' bGVzIFRTUyBFU046M0JENC00QjgwLTY5QzMxJTAjBgNV
'' SIG '' BAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2Uw
'' SIG '' ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCp
'' SIG '' e+A62rtjuiy6yTtx8k7zvWl2ov/3jcj+TC1ma5lBjTiT
'' SIG '' D8DCNPFfcwX0TzXLnK3iGEsiR45DCFBprodKz1ef9vlA
'' SIG '' ixqzdT++5/X6v5nc1zDdRc6mjx3ShJSp3iUPEenD+Ha7
'' SIG '' thspprda6xnDXvNNAnA+nfzXaKJppHdfelajrY2RQNV1
'' SIG '' rvhrBQXlh4ns/z5ZanDP3lp7ZEDLNJStM5gnx/gbu4tY
'' SIG '' fhQ0UfBe1s1K/+zN44VXT6QH6ts2AgPGVSzYBIs2PrxZ
'' SIG '' oMfsw7rlPxgoQyu5JQ3AsPv4FaBLkjpeXJULMnVkIySV
'' SIG '' +2dslftSguhtSVaqT93aSjwD/+LnTaqUeRyHm/E2tSX4
'' SIG '' 0VM0r96ko3ucvUWE/wI1jWEO4LHs7g1jP/HGddZHKNSb
'' SIG '' 1MjkPMfyQ5DBakkcI9b/pnOiyipY//3Vghvx8PaaXZVi
'' SIG '' V+qbA3rELkEexVe3gqlf5X2o6C6Tzcf/cxdXb/MlwXc5
'' SIG '' liT3gontl2kJ6wCg6pRt817sfbTUJs9i/ek3cZyDtjhp
'' SIG '' mMQQAGQFqCm5rWCPgos+AmMjtBZuWd0+NGuXeyibn7Re
'' SIG '' gk6HHHP1Kf46RX0IrS343e9XEvnCwnqEPqtJ9CAC71fm
'' SIG '' nGxDaLkjq47/0LWOBSIx5SOc3ScyZxrJFSeaM4Y4tGEb
'' SIG '' HL9VsCRQLssgjELy3Zj3XQIDAQABo4IBSTCCAUUwHQYD
'' SIG '' VR0OBBYEFN//n4e7TXMxInxF5QkIBTl4DIeqMB8GA1Ud
'' SIG '' IwQYMBaAFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMF8GA1Ud
'' SIG '' HwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0
'' SIG '' LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUt
'' SIG '' U3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBsBggrBgEF
'' SIG '' BQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93d3cu
'' SIG '' bWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9z
'' SIG '' b2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSku
'' SIG '' Y3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYI
'' SIG '' KwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3
'' SIG '' DQEBCwUAA4ICAQAz+sIThYw9WnfBpBCfaCwbr3453TMh
'' SIG '' kPUeB4ASkpT7d6WtF1S3IpqyZQ5yhoBQYlsCOlzoMPNo
'' SIG '' XaJQ4jAwSy1kTEyR1lXlGNYFOFwfDjiMQXPf0PN829XN
'' SIG '' EVhLqYAuPCPm/tsdlTYBiVLECMj0dj4l0IU+T8nqzIGo
'' SIG '' PTkqHUIxcKTXRoq52tq6VdtxFMBXjuft6El+CXgjWb4M
'' SIG '' lDsyqcjL6lWrm6PhpX/6bH1ubSHDI2VbdHpbMH6tKiTU
'' SIG '' IKGIqW2k77+8ZosVCRk24sWIn08AIrz3CjXXorGZrbbO
'' SIG '' zh2wDO/eWbyi0hKl4kVIw2Gcnh8gMrDBAC2yIXV4BxIe
'' SIG '' tCqGcs5QV891cRIqxO54bnDcDNrVYjpcCOxJHlOYbnXL
'' SIG '' Z1whueSbjMP8G+3O9USopmQPyl5VqZgb5CZAdAWREvDg
'' SIG '' hg3fs2P0/QZ06fLIt+k6pfOFX6WHvYh5suz6qsajBdgp
'' SIG '' +KtmtJhDJ6Qa7gxhP4EfXPElSdp7ZAEcuUn5brifzAet
'' SIG '' ckb09ZlMd5cqaTttnj4wY58KBL1cWw409Y4XTDXXrzrg
'' SIG '' 3iRs0SyvRzZkwwvk3WUJY/lTICJvGXhCETRdKGr4hfkG
'' SIG '' XFGS1s1m2Kusg6JPBGShYkUeaLQaBi72mBacQWVBPJpy
'' SIG '' yrg5WKG468Ye5Z8K8Vf3zMtBfX0qNicRZrS4LTCCB3Ew
'' SIG '' ggVZoAMCAQICEzMAAAAVxedrngKbSZkAAAAAABUwDQYJ
'' SIG '' KoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD
'' SIG '' VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
'' SIG '' MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
'' SIG '' MjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmlj
'' SIG '' YXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIy
'' SIG '' NVoXDTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMx
'' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
'' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
'' SIG '' dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh
'' SIG '' bXAgUENBIDIwMTAwggIiMA0GCSqGSIb3DQEBAQUAA4IC
'' SIG '' DwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC0/3u
'' SIG '' nAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VT
'' SIG '' cVrifkpa/rg2Z4VGIwy1jRPPdzLAEBjoYH1qUoNEt6aO
'' SIG '' RmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP2CZTfDlh
'' SIG '' AnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S
'' SIG '' /rboYiXcag/PXfT+jlPP1uyFVk3v3byNpOORj7I5LFGc
'' SIG '' 6XBpDco2LXCOMcg1KL3jtIckw+DJj361VI/c+gVVmG1o
'' SIG '' O5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbni
'' SIG '' jYjklqwBSru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3E
'' SIG '' XzTdEonW/aUgfX782Z5F37ZyL9t9X4C626p+Nuw2TPYr
'' SIG '' bqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M
'' SIG '' 269ewvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFph
'' SIG '' AXPKZ6Je1yh2AuIzGHLXpyDwwvoSCtdjbwzJNmSLW6Cm
'' SIG '' gyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr
'' SIG '' 9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfH
'' SIG '' CBUYP3irRbb1Hode2o+eFnJpxq57t7c+auIurQIDAQAB
'' SIG '' o4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAjBgkr
'' SIG '' BgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4w
'' SIG '' HQYDVR0OBBYEFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMFwG
'' SIG '' A1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEwPwYIKwYB
'' SIG '' BQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w
'' SIG '' a2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUE
'' SIG '' DDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMA
'' SIG '' dQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
'' SIG '' AwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX
'' SIG '' zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3Js
'' SIG '' Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9N
'' SIG '' aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYB
'' SIG '' BQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3
'' SIG '' Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0Nl
'' SIG '' ckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsF
'' SIG '' AAOCAgEAnVV9/Cqt4SwfZwExJFvhnnJL/Klv6lwUtj5O
'' SIG '' R2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTCj/ts
'' SIG '' 0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp
'' SIG '' 4LoJ7nvfam++Kctu2D9IdQHZGN5tggz1bSNU5HhTdSRX
'' SIG '' ud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/GbYSEhFd
'' SIG '' PSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZ
'' SIG '' QhlSdYo2wh3DYXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzs
'' SIG '' kYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbOxnT99kxybxCr
'' SIG '' dTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5
'' SIG '' JL5zbcqOCb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxn
'' SIG '' GSgkujhLmm77IVRrakURR6nxt67I6IleT53S0Ex2tVdU
'' SIG '' CbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3
'' SIG '' Fb+0zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzba
'' SIG '' ukz5m/8K6TT4JDVnK+ANuOaMmdbhIurwJ0I9JZTmdHRb
'' SIG '' atGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNT
'' SIG '' TY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggLTMIICPAIB
'' SIG '' ATCCAQChgdikgdUwgdIxCzAJBgNVBAYTAlVTMRMwEQYD
'' SIG '' VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
'' SIG '' MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
'' SIG '' LTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh
'' SIG '' dGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRT
'' SIG '' UyBFU046M0JENC00QjgwLTY5QzMxJTAjBgNVBAMTHE1p
'' SIG '' Y3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WiIwoBATAH
'' SIG '' BgUrDgMCGgMVAPeNohrmBa7BOMM1g3fORKTOkYsKoIGD
'' SIG '' MIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
'' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
'' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE
'' SIG '' AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAw
'' SIG '' DQYJKoZIhvcNAQEFBQACBQDp3icNMCIYDzIwMjQwNTAy
'' SIG '' MjI1MTU3WhgPMjAyNDA1MDMyMjUxNTdaMHMwOQYKKwYB
'' SIG '' BAGEWQoEATErMCkwCgIFAOneJw0CAQAwBgIBAAIBCDAH
'' SIG '' AgEAAgIRVzAKAgUA6d94jQIBADA2BgorBgEEAYRZCgQC
'' SIG '' MSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQow
'' SIG '' CAIBAAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBADaQqHja
'' SIG '' OqoHQOVEUxJ0LoKdCagtOxJfD3099ShJlCv3vUni6+3H
'' SIG '' GPKMH46NjPwqRE+gazyrJAR1sEnnrM+jlmA6Ybde0GlC
'' SIG '' 7NQUjSVI/LU9ie9XkodPq28cc5KXmny1roGN3UByBene
'' SIG '' hsSHrJ63JCzv//vI4XGwGemjCYKmz3oYMYIEDTCCBAkC
'' SIG '' AQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
'' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
'' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE
'' SIG '' AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAC
'' SIG '' EzMAAAHlj2rA8z20C6MAAQAAAeUwDQYJYIZIAWUDBAIB
'' SIG '' BQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRAB
'' SIG '' BDAvBgkqhkiG9w0BCQQxIgQgO/d+xJXyipEnhQB5YCKb
'' SIG '' /510ev/Bpllc+uySGfDQNiIwgfoGCyqGSIb3DQEJEAIv
'' SIG '' MYHqMIHnMIHkMIG9BCAVqdP//qjxGFhe2YboEXeb8I/p
'' SIG '' Aof01CwhbxUH9U697TCBmDCBgKR+MHwxCzAJBgNVBAYT
'' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
'' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
'' SIG '' cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1l
'' SIG '' LVN0YW1wIFBDQSAyMDEwAhMzAAAB5Y9qwPM9tAujAAEA
'' SIG '' AAHlMCIEIIxI1X5ALp6rnWH5V1diADKb7ruIm50/mvcH
'' SIG '' f/g5juuhMA0GCSqGSIb3DQEBCwUABIICAGNonK74S7hT
'' SIG '' zX8qp/LdUDLYemNFd6lC/VyG/wGUm1KRz7xb+chJDA9z
'' SIG '' rEumYQR8ZvS6B6bhbhRMi34xoAKA/saTgtGDr/zT3hGp
'' SIG '' n79JJt4F9d/bBUwt2am+PIX+PbnQl90VUYqGVml21fbE
'' SIG '' bmym5kuOWPa3ro59yMZ7QcKs1ZFYSNzUNacQ52XuGsZP
'' SIG '' 07l77Nm5ECWPzXfuBCmbDsxeK7LDBCeptTO3DAIrtkDf
'' SIG '' p+dx2eO4d0E3bqQ0buISKCh/ERqVP+D5kvFx4xE/z8ag
'' SIG '' RazCysLFvzElldhnWf0+6+AOgT++2r0LKJf52NpytAA+
'' SIG '' TBw4tgFQKhai5+jn5k0Y7r0kyFtQ76r7szNbobPKkxEB
'' SIG '' v69Gwq9prlezA7knth/NjnZdFgkmiMTJkX4BS23Kouvn
'' SIG '' 2Hz5qMZk3bcS4UM+wyOr85xq8DeN8hVj9eiUWTOlXEJQ
'' SIG '' lGD+o196BgWD+Yi1Rap3K84gXyXOpbXK83aYDlWGCJxo
'' SIG '' fAga1ZUIhqol7Q++SMllOjmKcGb+1kSRUFo30BaEaT81
'' SIG '' 8cViNmglvbi4fCWG38dhhWKxDil+4LLMjPsKyS6tnEvS
'' SIG '' VWB2iv/l1hDfTeCarsJVxnPbQY8vo4mE2vVBhA8Bwc/E
'' SIG '' oZpQMEDaKUHHCJ+qlAKwmnbqbWH1+Kj3FRJeU5MvKR22
'' SIG '' aeejB/WQJnsi
'' SIG '' End signature block
