Public/Set-SpecDeviceToComPort.ps1
function Set-SpecDeviceToComPort { <# .SYNOPSIS Moves a device to a specified COM port number. .DESCRIPTION The Set-SpecDeviceToComPort function allows you to move a device to a specified COM port number in Windows. It iterates through the available COM ports, checks if a device is attached, and, if necessary, updates the COM port settings to move the device to the desired COM port. .PARAMETER PortNumber Specifies the target COM port number to which the device should be moved. The default is COM1. .EXAMPLE Set-SpecDeviceToComPort -PortNumber 3 Moves the attached device to COM3. .NOTES Author : owen.heaume Version : 1.0 #> [CmdletBinding()] param ( [parameter(Mandatory = $false)] [int]$PortNumber = 1 ) # Convert the port number to a string $PortNumberString = "COM$PortNumber" # Get the COM port details for all serial ports $comports = Get-WmiObject Win32_PnPEntity | Where-Object { $_.caption -match '\(COM\d+\)' } # Iterate through the COM ports foreach ($comPort in $comPorts) { $device = $comPort.PNPDeviceID # Check if a device is attached to the COM port if ($device) { #if the attached device is 'Intel*' then ignore it if ($comport.description -match "\bIntel") { write-host "Intel device detected - not moving com port for this device`n" -ForegroundColor DarkYellow continue } # Check if the device is already on the specified COM port $oldPort = Get-SpecComPort -inputString $comport.name if ($oldport -eq $PortNumberString) { Write-Host "Device '$($comPort.Description)' is already on '$PortNumberString' No action needed." -ForegroundColor DarkGreen return } else { write-host "Device needs to move to specified com port. Moving to COM$PortNumber..." -ForegroundColor DarkYellow # Construct the registry paths for the device $deviceKey = "HKLM:\SYSTEM\CurrentControlSet\Enum\$($comPort.PNPDeviceID)" $portKey = "$deviceKey\Device Parameters" # Set the new port name and update Friendly Name try { Set-ItemProperty -Path $portKey -Name "PortName" -Value $PortNumberString -ErrorAction Stop Set-ItemProperty -Path $deviceKey -Name "FriendlyName" -Value "$($comPort.Description) ($PortNumberString)" -ErrorAction Stop Write-Host "Device '$($comPort.Description)' set to '$PortNumberString'" -ForegroundColor DarkGreen } catch { Write-Error "Failed to update the COM port settings: $_" } } # No need to continue checking other COM ports break } write-host "Releasing previous port from com database..." -ForegroundColor DarkCyan $status = Release-SpecPreviousComPort -OldPort $OldPort switch ($status) { 400 { Write-Host "OK`n" -ForegroundColor DarkGreen } 401 { Write-Host "Unable to release previous port from COM database" -ForegroundColor DarkYellow } } } } # SIG # Begin signature block # MIIsogYJKoZIhvcNAQcCoIIskzCCLI8CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCA7b3FlF+Ike6mk # YtOa4Gsnho18ie/x89igxODaBYLRnaCCE7owggWQMIIDeKADAgECAhAFmxtXno4h # MuI5B72nd3VcMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV # BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0xMzA4MDExMjAwMDBaFw0z # ODAxMTUxMjAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0 # IFRydXN0ZWQgUm9vdCBHNDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB # AL/mkHNo3rvkXUo8MCIwaTPswqclLskhPfKK2FnC4SmnPVirdprNrnsbhA3EMB/z # G6Q4FutWxpdtHauyefLKEdLkX9YFPFIPUh/GnhWlfr6fqVcWWVVyr2iTcMKyunWZ # anMylNEQRBAu34LzB4TmdDttceItDBvuINXJIB1jKS3O7F5OyJP4IWGbNOsFxl7s # Wxq868nPzaw0QF+xembud8hIqGZXV59UWI4MK7dPpzDZVu7Ke13jrclPXuU15zHL # 2pNe3I6PgNq2kZhAkHnDeMe2scS1ahg4AxCN2NQ3pC4FfYj1gj4QkXCrVYJBMtfb # BHMqbpEBfCFM1LyuGwN1XXhm2ToxRJozQL8I11pJpMLmqaBn3aQnvKFPObURWBf3 # JFxGj2T3wWmIdph2PVldQnaHiZdpekjw4KISG2aadMreSx7nDmOu5tTvkpI6nj3c # AORFJYm2mkQZK37AlLTSYW3rM9nF30sEAMx9HJXDj/chsrIRt7t/8tWMcCxBYKqx # YxhElRp2Yn72gLD76GSmM9GJB+G9t+ZDpBi4pncB4Q+UDCEdslQpJYls5Q5SUUd0 # viastkF13nqsX40/ybzTQRESW+UQUOsxxcpyFiIJ33xMdT9j7CFfxCBRa2+xq4aL # T8LWRV+dIPyhHsXAj6KxfgommfXkaS+YHS312amyHeUbAgMBAAGjQjBAMA8GA1Ud # EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTs1+OC0nFdZEzf # Lmc/57qYrhwPTzANBgkqhkiG9w0BAQwFAAOCAgEAu2HZfalsvhfEkRvDoaIAjeNk # aA9Wz3eucPn9mkqZucl4XAwMX+TmFClWCzZJXURj4K2clhhmGyMNPXnpbWvWVPjS # PMFDQK4dUPVS/JA7u5iZaWvHwaeoaKQn3J35J64whbn2Z006Po9ZOSJTROvIXQPK # 7VB6fWIhCoDIc2bRoAVgX+iltKevqPdtNZx8WorWojiZ83iL9E3SIAveBO6Mm0eB # cg3AFDLvMFkuruBx8lbkapdvklBtlo1oepqyNhR6BvIkuQkRUNcIsbiJeoQjYUIp # 5aPNoiBB19GcZNnqJqGLFNdMGbJQQXE9P01wI4YMStyB0swylIQNCAmXHE/A7msg # dDDS4Dk0EIUhFQEI6FUy3nFJ2SgXUE3mvk3RdazQyvtBuEOlqtPDBURPLDab4vri # RbgjU2wGb2dVf0a1TD9uKFp5JtKkqGKX0h7i7UqLvBv9R0oN32dmfrJbQdA75PQ7 # 9ARj6e/CVABRoIoqyc54zNXqhwQYs86vSYiv85KZtrPmYQ/ShQDnUBrkG5WdGaG5 # nLGbsQAe79APT0JsyQq87kP6OnGlyE0mpTX9iV28hWIdMtKgK1TtmlfB2/oQzxm3 # i0objwG2J5VT6LaJbVu8aNQj6ItRolb58KaAoNYes7wPD1N1KarqE3fk3oyBIa0H # EEcRrYc9B9F1vM/zZn4wggawMIIEmKADAgECAhAIrUCyYNKcTJ9ezam9k67ZMA0G # CSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0 # IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0zNjA0MjgyMzU5NTla # MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE # AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz # ODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDVtC9C # 0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0JAfhS0/TeEP0F9ce # 2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJrQ5qZ8sU7H/Lvy0da # E6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhFLqGfLOEYwhrMxe6T # SXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+FLEikVoQ11vkunKoA # FdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh3K3kGKDYwSNHR7Oh # D26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJwZPt4bRc4G/rJvmM # 1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQayg9Rc9hUZTO1i4F4z # 8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbIYViY9XwCFjyDKK05 # huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchApQfDVxW0mdmgRQRNY # mtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRroOBl8ZhzNeDhFMJlP # /2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IBWTCCAVUwEgYDVR0T # AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+YXsIiGX0TkIwHwYD # VR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQDAgGGMBMG # A1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAkBggrBgEFBQcwAYYY # aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRwOi8vY2Fj # ZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNydDBDBgNV # HR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRU # cnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAEDMAgGBmeBDAEEATAN # BgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql+Eg08yy25nRm95Ry # sQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFFUP2cvbaF4HZ+N3HL # IvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1hmYFW9snjdufE5Btf # Q/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3RywYFzzDaju4ImhvTnh # OE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5UbdldAhQfQDN8A+KVssIh # dXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw8MzK7/0pNVwfiThV # 9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnPLqR0kq3bPKSchh/j # wVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatEQOON8BUozu3xGFYH # Ki8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bnKD+sEq6lLyJsQfmC # XBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQjiWQ1tygVQK+pKHJ6l # /aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbqyK+p/pQd52MbOoZW # eE4wggduMIIFVqADAgECAhAJoJUtTqC7i9+OKkwQKIGcMA0GCSqGSIb3DQEBCwUA # MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE # AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz # ODQgMjAyMSBDQTEwHhcNMjMwODA4MDAwMDAwWhcNMjUwODA3MjM1OTU5WjB2MQsw # CQYDVQQGEwJHRzERMA8GA1UEBxMIR3Vlcm5zZXkxKTAnBgNVBAoTIFNwZWNzYXZl # cnMgT3B0aWNhbCBHcm91cCBMaW1pdGVkMSkwJwYDVQQDEyBTcGVjc2F2ZXJzIE9w # dGljYWwgR3JvdXAgTGltaXRlZDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC # ggIBAOPMoe4VdNIy4/vGzO34XwI7nCi+OH1mZuy14lq6l2iYKfo7E2DFmtAkZiH/ # vP1rbJ1yytpuhuP51ujqHfqKJ9cikkMAhI9LjD69TP9DkAgsb1DsxcWTBgNeLpNc # dvk5gqLD2PrR+yeMKdWLnydE+oavli/nk/btmmO6jwRqdAKUTXu8hCmDDJ35anVc # EC50aGek2LAjSNw9pUQHI0TuwhQBj22bVRwPv3SqnxXmpi4Lvk/4aRGDWkJCciWI # a26nF3inFre5LTh1Rp1jtIf3GteieEW/bPnyhy8sJuRhhPsCxtdGxTNSIGwNxhvU # 6FKgW1vQC6p/kPb9doDK8MF8w2gN7jJkjT8QtCdthUuSwbvfa2iNg80hzOHJ/2Ep # t8aCVVxZgHnuWZwP4uy+mzLoE/MVPo+LbtvUXOwi8tUjcK4m0wlvWjbouwuGA/dO # ahZ1MuQh7+DHOXHdUhJwm0RPVE/tdkJoozx7PBaOocsTxCiFmIq6GD9sBPq2yB5I # MXRxP0ORUtgE6bL/vfVwdB0u3iLI4xT+fwS0mHMqCrEVV1AkfH8jfFB6/hLvwYo2 # d1fnGPhlykCUEltgDehuPHA7edHP7F7gJsLMLsJn5+1z/PT+ZenhA7EY7ONvgNKl # bR1p2Z2RlxGCCKTKhc2RJ5hvYQRxKL76zFr+23FUhgDjYahtAgMBAAGjggIDMIIB # /zAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNVHQ4EFgQU7WId # ep8KzsDOpdKUoMlbdIsx+ckwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsG # AQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0 # LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIw # MjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNl # cnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIxQ0ExLmNybDA+ # BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRp # Z2ljZXJ0LmNvbS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsGAQUFBzABhhho # dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0dHA6Ly9jYWNl # cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNB # NDA5NlNIQTM4NDIwMjFDQTEuY3J0MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQAD # ggIBAKWiLtlCokxJ3Z2lxExg3RLHEqYMrrZSQCud8jMJdkpJFn+YocIVY91pVFen # LroZOXaPSG5q9KVEOQ1rOjKDNZbkI1k/AC6qY4b6ZcwrSWjKpZYhPdeaKixp+see # MMv1HIZGBULIPv2ECsvYRXLBY2cMaFaDcT6zEJ2SwAlibWGsAffWCDmt+HDfvxCs # zFKkUuVUmLRKAKVoRVY5bMI9TBp+BOLsj5aD8OgulHk6htiJ7rh8mDt4CksEk1yE # e60BZiiyNTvcY/NdYyJc7onHkMguHDue6BMo6T8+3oTpuHYdddvvCeXGpGV9SG3M # SwgRuOVo7GCiRyRqJjd1ekeOKjjgwbqUqCwfydDZ3neUv9f/lZ/RwMvvQctmc1jv # DR2CoQ4tfMl7ISd3EmMRsDoQCk6SfV8AgC7ZpflVJRY5PZwxKB6lzy9lksdIs8IV # 4ef3uwIPdsuRQhsmqVMkZahtLqWHXP4QdKFLRYR6yFHoJ13L4dhwaRbbpTFPDyrS # LmSC7dbqYUlfQo23/yHMUKiG3+Tv+OELsbXaHC4DsKjl+3NxNRLOlq79AR5dNJJJ # 1vXfvgihF+hmsEs/3oEVv8QHQdbLSBF8QBSZ1+icPagquysQguKwbzMAMTCpyEws # LztEZyOIkkSuldBJxP6PdUcu6ywBry5uPEW06UbmfBtplI88MYIYPjCCGDoCAQEw # fTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNV # BAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hB # Mzg0IDIwMjEgQ0ExAhAJoJUtTqC7i9+OKkwQKIGcMA0GCWCGSAFlAwQCAQUAoIGg # MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgor # BgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCDhBKLXrd6KnXS4P4v7utlyK1ey/im7 # nHI7EaXPSyId2zA0BgorBgEEAYI3AgEMMSYwJKACgAChHoAcaHR0cHM6Ly93d3cu # c3BlY3NhdmVycy5jby51azANBgkqhkiG9w0BAQEFAASCAgCemYsN/nx5UGyjpm24 # rS2wrROa8d8uVm4q9ygvtS3Jl52SX1KgUDoSRxI+aT/IXUNp2MZCGPAT7M7pP+uG # LjdbDTEkUryxs2rme18Le5vlXvD2dl1kVG77rEsNlllfp8/SJXtHBwFhLF9m1A/n # 5M3xOUKV6evYZteUPoPS36LOeS8gvAKzdNrhQM04RiJlIxWTbZEgeKtxRekJiQtT # Arix1TwClVwCFdjcoVyXgIqd43fkWZZB/9zPn+Qw2kcdCpk8Ns/omSFMGDsucbM6 # N8hkduO9j+xScjdmVYo3nJYNRfT/4yzS5jNpyjEQysdst6bNvSz34ZZBYMLts77z # ew2/niEruulEyey6H5hvHI/jCBv4CFCoWaswMQvlhXtboOvPXsk5P7aFAsRQVHXP # IKIhlrzn8J98DDDLgU3ihLdU9VPX5HyOolJoY/UkmjkzBoAPez2EEEr//up7imJ7 # czBZ8LCqVsBbpCcj5uKKjjDwFKGDDb/UbJCHMInf6VB9Vr5st/A+gIxCeqIO7D4u # dwZ+mGvrXzyHADgM2h22d3eW2faV+v1KUycrlJ91J15DMtYTav6bScbWJ27W2pSv # 0QDnLchKvuAQl2vb8NAmK0rjIlm1MqGEQKU0n6P8j8IJQZLNDvinliipkLOj6Q68 # v5I2d2/ySKDfqDjkRzjVPcNKoKGCFO8wghTrBgorBgEEAYI3AwMBMYIU2zCCFNcG # CSqGSIb3DQEHAqCCFMgwghTEAgEDMQ0wCwYJYIZIAWUDBAIBMHcGCyqGSIb3DQEJ # EAEEoGgEZjBkAgEBBgwrBgEEAYKpMAEDBgEwMTANBglghkgBZQMEAgEFAAQgkTeX # 8gsNTTYK49dm7hwJBitK+Zh5gCS+f5ZH+sPcGRcCCDamug5UhusqGA8yMDIzMDkw # MTEwNDMxM1owAwIBAaCCEdkwggT5MIIC4aADAgECAhAa1gin1jS1zd6Xy6PM8NBL # MA0GCSqGSIb3DQEBCwUAMHMxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQ # MA4GA1UEBwwHSG91c3RvbjERMA8GA1UECgwIU1NMIENvcnAxLzAtBgNVBAMMJlNT # TC5jb20gVGltZXN0YW1waW5nIElzc3VpbmcgUlNBIENBIFIxMB4XDTIyMTIwOTE4 # MzA1MVoXDTMyMTIwNjE4MzA1MFowazELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRl # eGFzMRAwDgYDVQQHDAdIb3VzdG9uMREwDwYDVQQKDAhTU0wgQ29ycDEnMCUGA1UE # AwweU1NMLmNvbSBUaW1lc3RhbXBpbmcgVW5pdCAyMDIyMFkwEwYHKoZIzj0CAQYI # KoZIzj0DAQcDQgAE3nz6kiWUstk02cheBocqRK/WAmOOCkK/uP0dvuEDh8gMQi8m # DCKJVS0M2qjskniOpyOI//i9Wgdyb/R3gT07uKOCAVowggFWMB8GA1UdIwQYMBaA # FAydECWOmqcbmYdDzwh+4b2BkPTPMFEGCCsGAQUFBwEBBEUwQzBBBggrBgEFBQcw # AoY1aHR0cDovL2NlcnQuc3NsLmNvbS9TU0wuY29tLXRpbWVTdGFtcGluZy1JLVJT # QS1SMS5jZXIwUQYDVR0gBEowSDA8BgwrBgEEAYKpMAEDBgEwLDAqBggrBgEFBQcC # ARYeaHR0cHM6Ly93d3cuc3NsLmNvbS9yZXBvc2l0b3J5MAgGBmeBDAEEAjAWBgNV # HSUBAf8EDDAKBggrBgEFBQcDCDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vY3Js # cy5zc2wuY29tL1NTTC5jb20tdGltZVN0YW1waW5nLUktUlNBLVIxLmNybDAdBgNV # HQ4EFgQUBbqT0d/iFKwgKoZZMX8ocg6trF8wDgYDVR0PAQH/BAQDAgeAMA0GCSqG # SIb3DQEBCwUAA4ICAQBaqLSWEGMNRGjMx5OTZSS2ic8Q39543mTUt4jKzr2TwDJy # ccz3iFhqp3iOq8RnTsHsKkt4GHAj2ShGoNllU464QaRbTeaAnW52gkLlnCR739x9 # dODQYWLKpAqzMFqKNxNlHWsOPTwXmaGRTMpD62kxvyN1u+haD9QbsyPcYUhueg80 # Z95SMCIPNCYIprEQEiRMHMOCtlJNGtWjt4SfP0R4WexGdm0hEH8spuupFG7hrJLM # c24LQkmaZO+ly30/q0jiC+UmPlgiIlXfha1D3y4RTEs8Y8G1bkQORS3XC+/qfZLk # oIKVCPptn88K6KXV+hh6aeRH2HaVhmQ3QfUfn2yoiwueIG83drmwKxJ9UBzsHuSt # al6o2K3pWrSGzZQOTVEuwSZpnI5S7YhjH6sP35knxjr6NZXtRxZ0RY9UCWF/a2JL # tok7Yxkuo4lAJj+kNsorp5/JzVbYFGAqKw+TbIG5lRKs3HCCJCiJlvSMVhzkhRru # NWbMKUhigwAXHavjXFFU8I4OkJbxot60LQFWSml1s222Uoke4TNAg7XD8FzynYW7 # XRpCZrwrwX19+e6u/nZpAd1x2C7XqMRHwpczETCfQChdKkoeoX+D04PVmy8BTQgp # VkHjPQl7aYuRFg98LuQ5XyA6SJzcFGQzzq1TtAxrvfprHe9p2jD12U5fnL67/TCC # BdgwggTAoAMCAQICEQDkJwSV9oyR1tDse0lOpN8cMA0GCSqGSIb3DQEBCwUAMH4x # CzAJBgNVBAYTAlBMMSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEu # MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNV # BAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMTgwOTExMDkyNjQ3WhcN # MjMwOTExMDkyNjQ3WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO # BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UE # AwwoU1NMLmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIw # DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh # 4/WvpOz6Sl2RxFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVTo # ZRdOQbngT0aXqhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO # 7IZl/zbzXmcCC52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZEx # qysdBP+lSgQ36YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9 # aqkpk8zruFvh/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrI # M/4RJTXq/LrFYD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUW # NmuF6R7As93EJNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH # 4Ih86hzOtXVcUS4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvig # Y2q8lpJqPvi8ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnI # k2snYxnP/Okm+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4s # bE6x/c+cCbqiM+2HAgMBAAGjggFRMIIBTTASBgNVHRMBAf8ECDAGAQH/AgECMB0G # A1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAfBgNVHSMEGDAWgBQIds3LB/8k # 9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYwNgYDVR0fBC8wLTAroCmgJ4Yl # aHR0cDovL3NzbGNvbS5jcmwuY2VydHVtLnBsL2N0bmNhLmNybDBzBggrBgEFBQcB # AQRnMGUwKQYIKwYBBQUHMAGGHWh0dHA6Ly9zc2xjb20ub2NzcC1jZXJ0dW0uY29t # MDgGCCsGAQUFBzAChixodHRwOi8vc3NsY29tLnJlcG9zaXRvcnkuY2VydHVtLnBs # L2N0bmNhLmNlcjA6BgNVHSAEMzAxMC8GBFUdIAAwJzAlBggrBgEFBQcCARYZaHR0 # cHM6Ly93d3cuY2VydHVtLnBsL0NQUzANBgkqhkiG9w0BAQsFAAOCAQEAH5WaI1Tu # hcLz1G+56QSPRn8s9zLAp0OsBwDt4KlFLf0X4e0AQMivmKz1wBmtG6CXMEBs7Fv7 # o5NOjIliG3zwOl+nQs9YynVlnCJMv3Z7mJOcFYMzsQ7cUTiHfJWcEmmUHgB4dH7c # wAZ3unAthyzXaJ3juoWtSfOPZLQVBoOSxpekQJOLrfFnlLS5WmdUPKgb2QXP5KT5 # iBIABoglhdRe7vOTV9aB+Cyu9/VRSKu2Yjp52+wu8j8UVjrI2cukok8lqNGbqy0w # IFAHGm/x8ZQdOYNj6B/9SdDoHUayRoImvZyd4aJoQUhRbnr8NZb0VNK8K0TlR9d3 # gqVKq1+XM6skETCCBvwwggTkoAMCAQICEG1SGHCH6CNNhWAA0ICPk1YwDQYJKoZI # hvcNAQELBQAwfDELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQH # DAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNT # TC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTkxMTEz # MTg1MDA1WhcNMzQxMTEyMTg1MDA1WjBzMQswCQYDVQQGEwJVUzEOMAwGA1UECAwF # VGV4YXMxEDAOBgNVBAcMB0hvdXN0b24xETAPBgNVBAoMCFNTTCBDb3JwMS8wLQYD # VQQDDCZTU0wuY29tIFRpbWVzdGFtcGluZyBJc3N1aW5nIFJTQSBDQSBSMTCCAiIw # DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK5REBPS+TwgoCCF3slQHGTJ4f3F # 6TT/Cn8xSOhyWsVeqGH98Yf3UVz7t+bQwcITsD7CY6KoGP04OskBgareubfeMKcd # KwIE1YBBjKhq4urwiOqxLUmVcvb2oM0wx3BnxQ3NBLu9ZkwMnjQlIY2mEwZMgDaq # fZuiEa2BFzinXf3kRLKlQ5oa8ne3QU0vcG4qZvphy0xxBQXayqigzN3z2HQTq6N2 # 8EOjpnA2dajGPtiZ9aNJeDfcDka5j3KbhBkzk4RWCjx5vP8H6DKHIIs02GHgxv/j # G8JMIxWY1isG+IaB09livKbxlvzhNAKZK5fQmUstrpYrVo7qqXAhJtv1tUaHzrp6 # QpuUL9dE/bSAC7UKO9xhyJSA1OsYWDx/wAmBA84JzX8IJ1olJjCEmlJ2F4o6dCAR # KA2Zhk+EU4LogpowBReTlTW2NNwUKAW+8Cte0rhrMBZQ47Vjd92V0gEvouOTMtQJ # gk2QVeqGwFVw8y4HSdQNa8sl8+Kay2MnyUXhLoQLFaeVaLs4SVXBOe3Ua1Gp5j3J # 2+8Yue1T4V5wrsNuocNR3frpSt4yRIG3N68Bz1qqhk+eNUyO8WpXWlg6POZOJUdm # 0BzzRsB8V7kst8nM8joOe03KqhunBN69Ckeo8M32qo07zeveRrDwD2P4dmJLDYBf # lwZ1A/SQbS+HN+AHAgMBAAGjggGBMIIBfTASBgNVHRMBAf8ECDAGAQH/AgEAMB8G # A1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMIGDBggrBgEFBQcBAQR3MHUw # UQYIKwYBBQUHMAKGRWh0dHA6Ly93d3cuc3NsLmNvbS9yZXBvc2l0b3J5L1NTTGNv # bVJvb3RDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5UlNBLmNydDAgBggrBgEFBQcwAYYU # aHR0cDovL29jc3BzLnNzbC5jb20wPwYDVR0gBDgwNjA0BgRVHSAAMCwwKgYIKwYB # BQUHAgEWHmh0dHBzOi8vd3d3LnNzbC5jb20vcmVwb3NpdG9yeTATBgNVHSUEDDAK # BggrBgEFBQcDCDA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3Jscy5zc2wuY29t # L3NzbC5jb20tcnNhLVJvb3RDQS5jcmwwHQYDVR0OBBYEFAydECWOmqcbmYdDzwh+ # 4b2BkPTPMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAkhl1DaZa # Qs8ZB9ny/JT6wJvwFelEllovcTPdUOUTe5mTdw/E+3JtV8u6ppyLRbpIHbYlMy20 # KJAychU6xdaci4BsP9oVNxSRMsEjfHKz7ARqPNdpclhYAINLjsFGMO1iUNbXiAsn # F/xboNCgfeMcMYbLyQYkU6UMobv9isrtQZ8e0EAQNV7qXJn4W0KyuTt0P8iIv/5D # dDpIUBIktDZcjz2KEW6B1gvvsKIM1esjYwWylAazBcQAake5pANMdSn8t1HdPKsi # wuWfOguyRQazAX8oXz6SlZSIok0Lis9a02vGVtdhEaB0R3HxIyNRMMKWV1yuSeUX # FuoexWav3GRPZC0WYb50SrW/l+wgrS8doetaMwyZon2L7ioYlIPSy1h9Dq/Q911P # sSkbEZ3zrsB1roVnIfBu5BJp0xvQrQ/Q4LavuvCoFR7QFoypNrotbNYi2AGMZw5t # d4zGZtCqUTPZi0BwSuRm+HRYAEMMThTwbJX/fYV1oC8mBN970yIvadIGKhh7+DmY # dRJYBrL8inVFCZAK+YX2w1+qWEnCSPL/VTWJtSRMhQFfceDKbJC+pBNksvKzqkva # 0J1ZyMj1i4vDfSuBmbz4rfzsvvJxS+quZDdkmW6MeXevWGBXvqzdbAw+AqTVsAQU # yP6tFeKZIL4S/fSFdl2rIx2X+KXkqx3S+EYxggJYMIICVAIBATCBhzBzMQswCQYD # VQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24xETAPBgNV # BAoMCFNTTCBDb3JwMS8wLQYDVQQDDCZTU0wuY29tIFRpbWVzdGFtcGluZyBJc3N1 # aW5nIFJTQSBDQSBSMQIQGtYIp9Y0tc3el8ujzPDQSzALBglghkgBZQMEAgGgggFh # MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjMw # OTAxMTA0MzEzWjAoBgkqhkiG9w0BCTQxGzAZMAsGCWCGSAFlAwQCAaEKBggqhkjO # PQQDAjAvBgkqhkiG9w0BCQQxIgQghHbLiTOMNFHvi37+n5HaGnEWOM2mkG+YqThn # n5rTb4EwgckGCyqGSIb3DQEJEAIvMYG5MIG2MIGzMIGwBCCNxcQlQtJPFc/1yBlu # 1FqDaNTK1r3L5CGp3iNQnYvTIjCBizB3pHUwczELMAkGA1UEBhMCVVMxDjAMBgNV # BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMREwDwYDVQQKDAhTU0wgQ29ycDEv # MC0GA1UEAwwmU1NMLmNvbSBUaW1lc3RhbXBpbmcgSXNzdWluZyBSU0EgQ0EgUjEC # EBrWCKfWNLXN3pfLo8zw0EswCgYIKoZIzj0EAwIERzBFAiBC49rKqG7e26PJgr3H # Ljtq+7werode4v4iEAv8nAnCZAIhAI7VkzsosCqZm8J1qDxVXo35WamWmUxIfZ2W # 8MIQ7sU9 # SIG # End signature block |