#Requires -RunAsAdministrator

$ErrorActionPreference = 'Stop'
Set-StrictMode -Version Latest

$rootCertificatePath = Join-Path $PSScriptRoot 'SecGateX-Internal-Root-CA.cer'
$publisherCertificatePath = Join-Path $PSScriptRoot 'SecGateX-Internal-Publisher.cer'
$expectedOrganization = '小语蜂蜂（上海）科技有限公司'
$expectedRootName = 'SecGateX Internal Code Signing Root CA 2026'
$codeSigningOid = '1.3.6.1.5.5.7.3.3'

function Test-CodeSigningUsage {
    param([System.Security.Cryptography.X509Certificates.X509Certificate2]$Certificate)

    foreach ($extension in $Certificate.Extensions) {
        if ($extension.Oid.Value -eq '2.5.29.37' -and
            @($extension.EnhancedKeyUsages | Where-Object { $_.Value -eq $codeSigningOid }).Count -gt 0) {
            return $true
        }
    }
    return $false
}

foreach ($path in @($rootCertificatePath, $publisherCertificatePath)) {
    if (-not (Test-Path -LiteralPath $path)) {
        throw '找不到完整的 SecGateX 公司发布者证书链，请保持两个 CER 文件与本脚本位于同一目录�?
    }
}

$rootCertificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($rootCertificatePath)
$publisherCertificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($publisherCertificatePath)
$rootHasCodeSigningUsage = Test-CodeSigningUsage $rootCertificate
$publisherHasCodeSigningUsage = Test-CodeSigningUsage $publisherCertificate
$rootIsCa = $false
foreach ($extension in $rootCertificate.Extensions) {
    if ($extension -is [System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension]) {
        $rootIsCa = $extension.CertificateAuthority
    }
}

if ($rootCertificate.Subject -notlike "*CN=$expectedRootName*" -or -not $rootIsCa -or -not $rootHasCodeSigningUsage) {
    throw '内部根证书的名称、CA 属性或代码签名用途不符合 SecGateX 策略，已拒绝导入�?
}
if ($publisherCertificate.Subject -notlike "*CN=$expectedOrganization*" -or
    $publisherCertificate.Subject -notlike "*O=$expectedOrganization*" -or
    $publisherCertificate.Issuer -ne $rootCertificate.Subject -or
    -not $publisherHasCodeSigningUsage) {
    throw '发布者证书的公司主体、签发者或代码签名用途不符合 SecGateX 策略，已拒绝导入�?
}
if ($rootCertificate.NotAfter -le (Get-Date) -or $publisherCertificate.NotAfter -le (Get-Date)) {
    throw 'SecGateX 证书链已过期，已拒绝导入�?
}

# This is a real, dedicated internal root CA constrained to code signing only.
# The publisher leaf never enters Trusted Root.
Import-Certificate -FilePath $rootCertificatePath -CertStoreLocation 'Cert:\LocalMachine\Root' | Out-Null
Import-Certificate -FilePath $publisherCertificatePath -CertStoreLocation 'Cert:\LocalMachine\TrustedPeople' | Out-Null
Import-Certificate -FilePath $publisherCertificatePath -CertStoreLocation 'Cert:\LocalMachine\TrustedPublisher' | Out-Null

Write-Host ''
Write-Host 'SecGateX 公司内部发布者已受信任�? -ForegroundColor Green
Write-Host "发布者：$expectedOrganization"
Write-Host "发布者证书指纹：$($publisherCertificate.Thumbprint)"
Write-Host "内部根证书指纹：$($rootCertificate.Thumbprint)"
Write-Host '根证书仅允许代码签名，未修改网络设置�?

# SIG # Begin signature block
# MIIfQgYJKoZIhvcNAQcCoIIfMzCCHy8CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB/pW0mV5bbHcY9
# tg6oSX+cLQMpBbswC2uRwggsg1bb9qCCGK8wggVxMIIDWaADAgECAhBKmHbhO3bI
# oEoqFGVcOAZJMA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNVBAYTAkNOMTMwMQYDVQQK
# DCrlsI/or63onILonILvvIjkuIrmtbfvvInnp5HmioDmnInpmZDlhazlj7gxNDAy
# BgNVBAMMK1NlY0dhdGVYIEludGVybmFsIENvZGUgU2lnbmluZyBSb290IENBIDIw
# MjYwHhcNMjYwOTA0MDg1OTI4WhcNMzEwOTA0MDkwOTI4WjB3MQswCQYDVQQGEwJD
# TjEzMDEGA1UECgwq5bCP6K+t6JyC6JyC77yI5LiK5rW377yJ56eR5oqA5pyJ6ZmQ
# 5YWs5Y+4MTMwMQYDVQQDDCrlsI/or63onILonILvvIjkuIrmtbfvvInnp5HmioDm
# nInpmZDlhazlj7gwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC4yIz9
# 6EDSka94PZPfFSPeLHV2dtbbzXCLn0pqppxtsmtTA0GBaLQrSUlRyinCqAf8ScAf
# 8IFYc94iKcFYu9JxY9Bdx8uKhf3EvNn/7gUDl7XaJCSe1ETqeMdwC0njMO7GlphU
# gS2FAkn/p0EXk0KCcrLd5VtlceC/ExRQ9Fvzg3nZZtptmXgeml7OtDfKxOfvW3Oy
# xzTDJxl5UJO+PZb58H77aEY2uw8ckeJAEkh8EIh7q+EMlso6r7hTvXpleJvoQy4u
# XfgQmXZku3dmz85xlyqTWLvDoeyRDQmotwryXR0Dtnq6lnmKIZ/003ZoWs4Vxt6f
# 3MxPa6BXBF468g+K0Qc9wpL0hJakCFw+TNMb8O6+Trr0jnum2PwHO9zzWSi2PvA4
# cryF57LUvFhcyuTzPBrnznl0xnCJHOHp4nZMFFHIBZun8mtP6foBfmO9wKZB9sQS
# qTqmBwWHfwy+rJgWU+3+TXp1mFeG+95ugnfdgN3V9doWPmXEMG4b13M63ukCAwEA
# AaN4MHYwDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAww
# CgYIKwYBBQUHAwMwHwYDVR0jBBgwFoAUyMo3wMI3sjAU5m2n8yQJ/pJVSGUwHQYD
# VR0OBBYEFGsbME0qBPWnlhVeEjD3lF/SMQBuMA0GCSqGSIb3DQEBCwUAA4ICAQBS
# 9OdmEc2/S/BBt1t31PjlvvIhc6BzgVkIofxqdpTBlF1SXNyXRnVnlbfQZp0KaufV
# EWce/MyemNLZ43K5iLTunTpI1SdVGWGMqhmQjMxaOPXb5gZwcbMFb04pLbMstRbI
# axL9L7fCIbZ1VBO6afcG+PCHjTKmMy8ys5Cz0/4gf9Cf4VrfhbP81zI+iHzxcuqX
# Vyj70jqVXjpFrqX0QKHamdEbQADRn7UITuc+nHzAWKAhl2m45Yf6F+JbuaDQq9IM
# JRBhOLvitTvo7oiraq8xFwnWZw+Vq9eWr81YskijFzcW33jTzvez9esNchRKHy6v
# /NQ92M8EkS98DoCHoxGqwYfeJzc6YmD/6wa3cXbnW0368TTj8XkIJKpDx48CIy/P
# r9CDXBJuVjqe8TBKT2FIqA+RniziskzCL/t3LoQdYP9D+ydMdJt4cYCaNVF8sQWo
# 4+LHow4Urn1Ngzl+RC84wxkGb0Xx8+QakmaBERqX34+c/tfqbc0rIFkoCZ8UuhLH
# hjLXuX3o7cvvfkMMjEiUmWl/UVTDjJ2iOXS90IrVhpvfAfwtd88QWNh8q7XeJZhz
# FXhAmi6lleVF7v03gjNXapVyhGFtQZBXqbnz3gTkEwerBzZz0d3GIG9mXrCg14/a
# DI8qL4QccLP1RjaXvFdLqwIPpIDk0g4sINtlCvrFrTCCBY0wggR1oAMCAQICEA6b
# GI750C3n79tQ4ghAGFowDQYJKoZIhvcNAQEMBQAwZTELMAkGA1UEBhMCVVMxFTAT
# BgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEk
# MCIGA1UEAxMbRGlnaUNlcnQgQXNzdXJlZCBJRCBSb290IENBMB4XDTIyMDgwMTAw
# MDAwMFoXDTMxMTEwOTIzNTk1OVowYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERp
# Z2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMY
# RGlnaUNlcnQgVHJ1c3RlZCBSb290IEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
# MIICCgKCAgEAv+aQc2jeu+RdSjwwIjBpM+zCpyUuySE98orYWcLhKac9WKt2ms2u
# exuEDcQwH/MbpDgW61bGl20dq7J58soR0uRf1gU8Ug9SH8aeFaV+vp+pVxZZVXKv
# aJNwwrK6dZlqczKU0RBEEC7fgvMHhOZ0O21x4i0MG+4g1ckgHWMpLc7sXk7Ik/gh
# YZs06wXGXuxbGrzryc/NrDRAX7F6Zu53yEioZldXn1RYjgwrt0+nMNlW7sp7XeOt
# yU9e5TXnMcvak17cjo+A2raRmECQecN4x7axxLVqGDgDEI3Y1DekLgV9iPWCPhCR
# cKtVgkEy19sEcypukQF8IUzUvK4bA3VdeGbZOjFEmjNAvwjXWkmkwuapoGfdpCe8
# oU85tRFYF/ckXEaPZPfBaYh2mHY9WV1CdoeJl2l6SPDgohIbZpp0yt5LHucOY67m
# 1O+SkjqePdwA5EUlibaaRBkrfsCUtNJhbesz2cXfSwQAzH0clcOP9yGyshG3u3/y
# 1YxwLEFgqrFjGESVGnZifvaAsPvoZKYz0YkH4b235kOkGLimdwHhD5QMIR2yVCkl
# iWzlDlJRR3S+Jqy2QXXeeqxfjT/JvNNBERJb5RBQ6zHFynIWIgnffEx1P2PsIV/E
# IFFrb7GrhotPwtZFX50g/KEexcCPorF+CiaZ9eRpL5gdLfXZqbId5RsCAwEAAaOC
# ATowggE2MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOzX44LScV1kTN8uZz/n
# upiuHA9PMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgPMA4GA1UdDwEB
# /wQEAwIBhjB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3Nw
# LmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGlnaWNl
# cnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDBFBgNVHR8EPjA8MDqg
# OKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURS
# b290Q0EuY3JsMBEGA1UdIAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQwFAAOCAQEA
# cKC/Q1xV5zhfoKN0Gz22Ftf3v1cHvZqsoYcs7IVeqRq7IviHGmlUIu2kiHdtvRoU
# 9BNKei8ttzjv9P+Aufih9/Jy3iS8UgPITtAq3votVs/59PesMHqai7Je1M/RQ0Sb
# QyHrlnKhSLSZy51PpwYDE3cnRNTnf+hZqPC/Lwum6fI0POz3A8eHqNJMQBk1Rmpp
# VLC4oVaO7KTVPeix3P0c2PR3WlxUjG/voVA9/HYJaISfb8rbII01YBwCA8sgsKxY
# oA5AY8WYIsGyWfVVa88nq2x2zm8jLfR+cWojayL/ErhULSd+2DrZ8LaHlv1b0Vys
# GMNNn3O3AamfV6peKOK5lDCCBrQwggScoAMCAQICEA3HrFcF/yGZLkBDIgw6SYYw
# DQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0
# IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMYRGlnaUNl
# cnQgVHJ1c3RlZCBSb290IEc0MB4XDTI1MDUwNzAwMDAwMFoXDTM4MDExNDIzNTk1
# OVowaTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYD
# VQQDEzhEaWdpQ2VydCBUcnVzdGVkIEc0IFRpbWVTdGFtcGluZyBSU0E0MDk2IFNI
# QTI1NiAyMDI1IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALR4
# MdMKmEFyvjxGwBysddujRmh0tFEXnU2tjQ2UtZmWgyxU7UNqEY81FzJsQqr5G7A6
# c+Gh/qm8Xi4aPCOo2N8S9SLrC6Kbltqn7SWCWgzbNfiR+2fkHUiljNOqnIVD/gG3
# SYDEAd4dg2dDGpeZGKe+42DFUF0mR/vtLa4+gKPsYfwEu7EEbkC9+0F2w4QJLVST
# EG8yAR2CQWIM1iI5PHg62IVwxKSpO0XaF9DPfNBKS7Zazch8NF5vp7eaZ2CVNxpq
# umzTCNSOxm+SAWSuIr21Qomb+zzQWKhxKTVVgtmUPAW35xUUFREmDrMxSNlr/NsJ
# yUXzdtFUUt4aS4CEeIY8y9IaaGBpPNXKFifinT7zL2gdFpBP9qh8SdLnEut/Gcal
# NeJQ55IuwnKCgs+nrpuQNfVmUB5KlCX3ZA4x5HHKS+rqBvKWxdCyQEEGcbLe1b8A
# w4wJkhU1JrPsFfxW1gaou30yZ46t4Y9F20HHfIY4/6vHespYMQmUiote8ladjS/n
# J0+k6MvqzfpzPDOy5y6gqztiT96Fv/9bH7mQyogxG9QEPHrPV6/7umw052AkyiLA
# 6tQbZl1KhBtTasySkuJDpsZGKdlsjg4u70EwgWbVRSX1Wd4+zoFpp4Ra+MlKM2ba
# oD6x0VR4RjSpWM8o5a6D8bpfm4CLKczsG7ZrIGNTAgMBAAGjggFdMIIBWTASBgNV
# HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTvb1NK6eQGfHrK4pBW9i/USezLTjAf
# BgNVHSMEGDAWgBTs1+OC0nFdZEzfLmc/57qYrhwPTzAOBgNVHQ8BAf8EBAMCAYYw
# EwYDVR0lBAwwCgYIKwYBBQUHAwgwdwYIKwYBBQUHAQEEazBpMCQGCCsGAQUFBzAB
# hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQQYIKwYBBQUHMAKGNWh0dHA6Ly9j
# YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRSb290RzQuY3J0MEMG
# A1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2Vy
# dFRydXN0ZWRSb290RzQuY3JsMCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsGCWCGSAGG
# /WwHATANBgkqhkiG9w0BAQsFAAOCAgEAF877FoAc/gc9EXZxML2+C8i1NKZ/zdCH
# xYgaMH9Pw5tcBnPw6O6FTGNpoV2V4wzSUGvI9NAzaoQk97frPBtIj+ZLzdp+yXdh
# OP4hCFATuNT+ReOPK0mCefSG+tXqGpYZ3essBS3q8nL2UwM+NMvEuBd/2vmdYxDC
# vwzJv2sRUoKEfJ+nN57mQfQXwcAEGCvRR2qKtntujB71WPYAgwPyWLKu6RnaID/B
# 0ba2H3LUiwDRAXx1Neq9ydOal95CHfmTnM4I+ZI2rVQfjXQA1WSjjf4J2a7jLzWG
# NqNX+DF0SQzHU0pTi4dBwp9nEC8EAqoxW6q17r0z0noDjs6+BFo+z7bKSBwZXTRN
# ivYuve3L2oiKNqetRHdqfMTCW/NmKLJ9M+MtucVGyOxiDf06VXxyKkOirv6o02Oo
# XN4bFzK0vlNMsvhlqgF2puE6FndlENSmE+9JGYxOGLS/D284NHNboDGcmWXfwXRy
# 4kbu4QFhOm0xJuF2EZAOk5eCkhSxZON3rGlHqhpB/8MluDezooIs8CVnrpHMiD2w
# L40mm53+/j7tFaxYKIqL0Q4ssd8xHZnIn/7GELH3IdvG2XlM9q7WP/UwgOkw/HQt
# yRN62JK4S1C8uw3PdBunvAZapsiI5YKdvlarEvf8EA+8hcpSM9LHJmyrxaFtoza2
# zNaQ9k+5t1wwggbtMIIE1aADAgECAhAIT9wzT35FTtvDD4/5khg1MA0GCSqGSIb3
# DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFB
# MD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBUaW1lU3RhbXBpbmcgUlNBNDA5
# NiBTSEEyNTYgMjAyNSBDQTEwHhcNMjYwODA1MDAwMDAwWhcNMzcxMTA0MjM1OTU5
# WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xOzA5BgNV
# BAMTMkRpZ2lDZXJ0IFNIQTI1NiBSU0E0MDk2IFRpbWVzdGFtcCBSZXNwb25kZXIg
# MjAyNiAxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtnum8sn+zUr4
# 1JtMZbP9OMYw+HwJDpG5xkIu/lqcfNYmMX81YmsUiHLbh9ykpeWBGKTLhYBrAN9T
# dg/QEzG32XcObmgIblnr0CoQ3WSAeDZ6nH6X6VkFyYkJw3QBJREwvm4UhLzSxmwP
# A7cFKRTEOMsmEEj6qJk/dqLEAL+oQYuOwE2UuiX1Vnul8YReIyWd4kgLn9gq6LNX
# M0UplkR6jL/QHxmb6fMoGBJYbnaUI7XD6cKDpekK2SVMld4iDbzeHDtOaaxldH5I
# xuNusQ69nd8/ZXEiB5Hbxj3RlK13cX1W4DlFXKdv/CEhM8Cj1vvlmvhNroyPdRGb
# bpBlgyf8Wdu5N6ByhFwURn0U6ozlPoxN22v+fviUhP+6DR547OZnpBMWDfei1f5s
# VGwiiW/KQTWOK97g+4RJpPzPNV4VYMAwO2jM2Aty2QYPVmOQTJm0msuXnJrSbl2g
# f9JylpkJlWXqk1Q4LJsxz+TELoQCZIljbgvTJgoPU2R12ydv8i1UqL/adelA0y7U
# 9Pmmtbze9Xx3rtajC5SzQd1jgfwAwsa90v9YcSPdmeoyoBBA/27cCL237l5DTYYP
# DLQ4ON3OLTGWnvRb6jDrf/T75gMRfUzSLCBQfBusm9+mSWRlC/Df6S/e9Q8i13Cu
# hzOT2Jx+V/nlbXM4QoBwlUAhelwwJT0CAwEAAaOCAZUwggGRMAwGA1UdEwEB/wQC
# MAAwHQYDVR0OBBYEFBTJY4owLtRK+26U8+bjQH717M3iMB8GA1UdIwQYMBaAFO9v
# U0rp5AZ8esrikFb2L9RJ7MtOMA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAK
# BggrBgEFBQcDCDCBlQYIKwYBBQUHAQEEgYgwgYUwJAYIKwYBBQUHMAGGGGh0dHA6
# Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBdBggrBgEFBQcwAoZRaHR0cDovL2NhY2VydHMu
# ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0VGltZVN0YW1waW5nUlNBNDA5
# NlNIQTI1NjIwMjVDQTEuY3J0MF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly9jcmwz
# LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFRpbWVTdGFtcGluZ1JTQTQw
# OTZTSEEyNTYyMDI1Q0ExLmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglghkgB
# hv1sBwEwDQYJKoZIhvcNAQELBQADggIBAI3FOmEenVIK35msCYB+fShAsWvSYvLB
# ItoNdAgQ2jIqrGsVsluXMJU/+mRebBc52s6lbKAvOVPXaizmKkMLLflEEKDZQx4C
# kS2t8aHPjkXha3hYZ010htFa3dhNgmalH5vuWvh3tTCf4frTS7gPtGc4Z/xaPhQ2
# AB1mR8eEe/WbH0RWHvVIl6VwQ3+g5FKNfN2N/DWJkf13w2H+2GfqEfbd35Ww8Cvo
# YBjLNIDTadcPWdgsjsiOaK/7EsKJgLjUNIVgvcaFOLLQ/GlrA+0ZHJoFUbOr5SJN
# 8zykPspXIXlpDJY/gqFUZRROeab9GVgmhbdOJcD/63RhxPahFUGbckRONqMe6DYA
# v6/mOG0pWd3cPStsdcS7buj5DyniwRY8yooMH6ptx5vpP/pZzBPBeZD2U4Isthyx
# B5Jaa8qrOkB5z160TXiM5ADMspZ0TfD9MJoq0tFpFPssKRFhWeEDYPvcUuN7U7lv
# cdHl4ezQ3NT/7Ffs1sR1yh/LRbdZ3B3Vc6q2WmD8mDC0p9kzl2o73iVtS946IkEj
# 7FkRsZGww1teYxERROC745xrtjvcw9ZyyUjHZWGRIpJeMNsPquCDf0fkyHtB+J4A
# iNZqCQk23rxh+KbpyMTNVKItJ5l92Svl20U9NbqMBOVYl1h54NEYLJq1/xHWFKPN
# K903zJZA9P2DMYIF6TCCBeUCAQEwgYwweDELMAkGA1UEBhMCQ04xMzAxBgNVBAoM
# KuWwj+ivreicguicgu+8iOS4iua1t++8ieenkeaKgOaciemZkOWFrOWPuDE0MDIG
# A1UEAwwrU2VjR2F0ZVggSW50ZXJuYWwgQ29kZSBTaWduaW5nIFJvb3QgQ0EgMjAy
# NgIQSph24Tt2yKBKKhRlXDgGSTANBglghkgBZQMEAgEFAKCBhDAYBgorBgEEAYI3
# AgEMMQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
# AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCCvMk9ql1Hn
# 5a2ngogNW2OYDLDIqfAw9zgyhXu5i6PXKTANBgkqhkiG9w0BAQEFAASCAYA0QdHd
# 5Tn/+ue6ZYriQvmA1qiQOPEX8KozA10DJCWWKHVZc1vwY4hCA0CHza3ft1bxlk8o
# dvWukm9A3Sm9N84kDLlHjLwA2t508+kJNnZemiqrLmssAUEF/bAZO4yeBoHlmcvc
# ThxIY4j7COyELe/5tH2irsBrIKC21/Z3vYMAc2vvgpjR1Ug4hlwEOpFuOdSb6Bvs
# UDKslRuDjj+6SkErp6RmGf+gw/LcYGbVKPVD0ILmLn01nF33M56+90Pu5pIRMEBW
# Ht631bmQOe1NL9FHgSa22bN3NmOOUOf1eJvdAP4rGacw9RVBmK3IFe0B/3kV+OHT
# XyzBErTXVqa8du2hgR7axqq8xsvOYjJmE/Bw5hXhsb+ue0XDI79nDeSB4+BILFVL
# lN//gR4d1Lp4mXZAthQQchV4t+pxWI4K/JnXMbUdaTeSZwDF0IT4YFCRpWdenLS4
# U4E33KEBB3GWtu4Nfxo+Kvse/vwFOiXGKtfjSWw3vkGR9Wu6fmTL+r9kkSihggMm
# MIIDIgYJKoZIhvcNAQkGMYIDEzCCAw8CAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUG
# A1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQg
# RzQgVGltZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35F
# TtvDD4/5khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3
# DQEHATAcBgkqhkiG9w0BCQUxDxcNMjYwOTA0MDkxMzU4WjAvBgkqhkiG9w0BCQQx
# IgQgVTmZBJM/g2QOHqA30PuFjZSc8A8UhRmUGGdBN/M5+zgwDQYJKoZIhvcNAQEB
# BQAEggIAsmW5hv7iFVQWZFhE6QETwmN3boJa7Qt1LnNxZsyXZd96XWSdcK3FboU5
# 4MEgZPaOvFcUfMWFybne+GsLZSBDAOcptjSF+CQ2EX/JN6FvUnb+n3DQpwFu5WLF
# u7dJdE5lJiwcEAExqSo32Jdcalah4LZJmdFYmsSUgC9t+pzBFqvPUEEy8FbJ6VnX
# SO5weASu1b2B4tZsbfalAmE6fl7s/KslyR6GgyLsbD5cvN/3dB69vP1E12/XWcLq
# G2EmIdGhs84EcXNcnlZ+IOkC1U7cs8iw2pgaBUwn3dtwkg7Q/+/NPhENwW0FuopW
# d7bj817SJrw5KL9eTSe8HfQNNEskHUg68FyJah19H70FOfAvGZYffThSXZRdUL07
# tsz3y+YkF5NzVXVeDLY4xzaunsmbU+kW+YXcqyqEZ061Hv9/hCVs2vsGO4SdbCwM
# B9eewgWuhHMiZk0m+9en4gbAp45spbaLKTaH8mfbwpwMWCP8hWH5sYFmM3EB1j0q
# jcGnO1hCFOrsqgSVFSxZu3NuqSV2TyIUsf5hubi4OUakgCbUEtoRr/W4+O1vPnP8
# U2+M2gshXdh8o9aUBD2FAV0f7uM4bfnnJw58Jtcp+fgrRHeK7PdmkWTpALXekmXn
# PXGjXIPQXwMjzU/huoSvI7YXpJYaoInk5nwLPW4Lz2Sqi+rqtyY=
# SIG # End signature block
