functions/Get-Sensor.ps1
<#
.SYNOPSIS Get sensor details. .DESCRIPTION List all sensor for a specific sensorhub or get details for a specific sensor. .PARAMETER Filter You can filter the sensors based on the name of the sensor. .PARAMETER SensorhubId The id of the senorhub for wich you want to list the sensors. .PARAMETER SenorId The id of a specifc senor. Only this sensor will be show. .PARAMETER AuthToken Either a session or an API key. If no AuthToken is provided the global Server-Eye session will be used if available. #> function Get-Sensor { [CmdletBinding(DefaultParameterSetName = "bySensorhub")] Param( [Parameter(Mandatory = $false, ParameterSetName = "bySensorhub", Position = 0)] [string]$Filter, [parameter(ValueFromPipelineByPropertyName, ParameterSetName = "bySensorhub")] $SensorhubId, [parameter(ValueFromPipelineByPropertyName, ParameterSetName = "bySensor")] $SensorId, [parameter(Mandatory = $false, ValueFromPipelineByPropertyName, ParameterSetName = "bySensorType")] $SensorType, [parameter(Mandatory = $false, ValueFromPipelineByPropertyName, ParameterSetName = "bySensor")] [parameter(Mandatory = $false, ValueFromPipelineByPropertyName, ParameterSetName = "bySensorhub")] [parameter(Mandatory = $false, ValueFromPipelineByPropertyName, ParameterSetName = "bySensorType")] [switch]$ShowFree, [Parameter(Mandatory = $false, ParameterSetName = "bySensor")] [Parameter(Mandatory = $false, ParameterSetName = "bySensorhub")] [parameter(Mandatory = $false, ValueFromPipelineByPropertyName, ParameterSetName = "bySensorType")] $AuthToken, [parameter(Mandatory = $false, ValueFromPipelineByPropertyName)] [Alias("LineFilter")] [string[]]$script:MsgLineFilter, [parameter(Mandatory = $false, ValueFromPipelineByPropertyName)] [Alias("SpaceFilter")] [string[]]$script:MsgSpaceFilter ) Begin { $AuthToken = Test-SEAuth -AuthToken $AuthToken $agentList = Get-SeApiMyNodesList -Filter agent -AuthToken $AuthToken if (!$Global:ServerEyeAgents) { $Global:ServerEyeAgents = @() } } Process { if ($SensorhubId) { Write-Debug "SensorhubID will be used $SensorhubId" getSensorBySensorhub -sensorhubId $SensorhubId -filter $Filter -auth $AuthToken } elseif ($SensorId) { Write-Debug "SensorID will be used $SensorId" getSensorById -sensorId $SensorId -auth $AuthToken } elseif ($Sensortype) { Write-Debug "SensorType will be used $Sensortype" $agents = $agentList | Where-Object { $_.agentType -eq $SensorType } foreach ($agent in $agents) { formatSensorByType -auth $authtoken -agent $agent } } else { Write-Error "Please provide a SensorhubId or a SensorId." } } End { } } function getSensorBySensorhub ($sensorhubId, $filter, $auth) { $agents = Get-SeApiContainerAgentList -AuthToken $auth -CId $sensorhubId $sensorhub = Get-CachedContainer -ContainerID $sensorhubID -AuthToken $auth foreach ($sensor in $agents) { if ((-not $filter) -or ($sensor.name -like $filter) -or ($sensor.subtype -like $filter)) { $sensor = Get-CachedAgent -AgentID $sensor.id -AuthToken $auth formatSensor -sensor $sensor -auth $auth -sensorhub $sensorhub -agentList $agentList } } } function getSensorById ($sensorId, $auth) { $sensor = Get-CachedAgent -AgentID $sensorId -AuthToken $auth $sensorhub = Get-CachedContainer -ContainerID $sensor.parentId -AuthToken $auth formatSensor -sensor $sensor -auth $auth -sensorhub $sensorhub -agentList $agentList } function formatSensor($sensor, $sensorhub, $agentlist, $auth) { $Global:ServerEyeAgents += $sensor $type = $Global:ServerEyeSensorTypes.Get_Item($sensor.type) $notification = $agentList | Where-Object { $_.id -eq $sensor.aId } $MAC = Get-CachedContainer -AuthToken $auth -ContainerID $sensorhub.parentID $customer = Get-CachedCustomer -AuthToken $auth -CustomerId $sensorhub.CustomerId $SESensor = [PSCustomObject]@{ Name = $sensor.name SensorType = $type.defaultName SensorTypeID = $type.agentType SensorId = $sensor.aId Interval = $sensor.interval Error = $notification.state HasNotification = If (!$notification) { "Your are not a Manager of this customer, so we can't show that." }else { $notification.hasNotification } Sensorhub = $sensorhub.name 'OCC-Connector' = $MAC.Name Customer = $customer.Companyname Message = filterMSG($notification.message) } if ($ShowFree) { Add-Member -MemberType NoteProperty -Name forFree -Value $type.forFree -InputObject $SESensor } Return $SESensor } function formatSensorByType($auth, $agent) { $type = $Global:ServerEyeSensorTypes.Get_Item($agent.agentType) $sensorhub = Get-CachedContainer -ContainerID $agent.parentId -AuthToken $auth $MAC = Get-CachedContainer -AuthToken $auth -ContainerID $sensorhub.parentID $customer = Get-CachedCustomer -AuthToken $auth -CustomerId $sensorhub.CustomerId $SESensor = [PSCustomObject]@{ Name = $agent.name SensorType = $type.defaultName SensorTypeID = $type.agentType SensorId = $agent.Id Error = $agent.state HasNotification = $agent.hasNotification Sensorhub = $sensorhub.name 'OCC-Connector' = $MAC.Name Customer = $customer.Companyname Message = filterMSG($agent.message) } if ($ShowFree) { Add-Member -MemberType NoteProperty -Name forFree -Value $type.forFree -InputObject $SESensor } Return $SESensor } function filterMSG($message){ $result = ""; if(($script:MsgLineFilter) -and ($script:MsgSpaceFilter)){ Write-Error "Only one message filter type can be used at a time." } elseif ($script:MsgLineFilter){ foreach ($line in $($message -split "`n")) { foreach ($lineFilter in $script:MsgLineFilter){ if($line -match [regex]::escape($lineFilter)){ $result += $line +"`n"; break; } } } return $result } elseif ($script:MsgSpaceFilter){ if($script:MsgSpaceFilter.count -ne 2){ Write-Error "The space filter type only accepts two strings.(-MsgSpaceFilter `"Filter Start`", `"Filter End`")" }else{ $expression = '^' + $script:MsgSpaceFilter[0] + '.$([\s\S]*?)^' + $script:MsgSpaceFilter[1] + '.$' $matches = [Regex]::Matches($message, $expression, "Multiline"); if($matches.groups.count -ge 1){ return $matches.groups[1].value } } } else{ return $message } } # SIG # Begin signature block # MIIu4gYJKoZIhvcNAQcCoIIu0zCCLs8CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU9pbrnUI1I5Hd57qMPFu9cRJU # hpKggiicMIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQG # EwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxm # b3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENl # cnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1 # OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQ # MA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAf # BgNVBAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB # BQADggEPADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686td # UIoWMQuaBtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJ # VfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCo # kcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4 # qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH # Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNV # HQ4EFgQUoBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud # EwEB/wQFMAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9j # YS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9j # cmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG # 9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3s # Ag9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2 # LX1rzNLzRt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8 # tqtlbgT2G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs # 1OUIJqsil2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XX # vi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbjCCBW8wggRXoAMCAQICEEj8k7Rg # VZSNNqfJionWlBYwDQYJKoZIhvcNAQEMBQAwezELMAkGA1UEBhMCR0IxGzAZBgNV # BAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UE # CgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMMGEFBQSBDZXJ0aWZpY2F0ZSBT # ZXJ2aWNlczAeFw0yMTA1MjUwMDAwMDBaFw0yODEyMzEyMzU5NTlaMFYxCzAJBgNV # BAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxLTArBgNVBAMTJFNlY3Rp # Z28gUHVibGljIENvZGUgU2lnbmluZyBSb290IFI0NjCCAiIwDQYJKoZIhvcNAQEB # BQADggIPADCCAgoCggIBAI3nlBIiBCR0Lv8WIwKSirauNoWsR9QjkSs+3H3iMaBR # b6yEkeNSirXilt7Qh2MkiYr/7xKTO327toq9vQV/J5trZdOlDGmxvEk5mvFtbqrk # oIMn2poNK1DpS1uzuGQ2pH5KPalxq2Gzc7M8Cwzv2zNX5b40N+OXG139HxI9ggN2 # 5vs/ZtKUMWn6bbM0rMF6eNySUPJkx6otBKvDaurgL6en3G7X6P/aIatAv7nuDZ7G # 2Z6Z78beH6kMdrMnIKHWuv2A5wHS7+uCKZVwjf+7Fc/+0Q82oi5PMpB0RmtHNRN3 # BTNPYy64LeG/ZacEaxjYcfrMCPJtiZkQsa3bPizkqhiwxgcBdWfebeljYx42f2mJ # vqpFPm5aX4+hW8udMIYw6AOzQMYNDzjNZ6hTiPq4MGX6b8fnHbGDdGk+rMRoO7Hm # ZzOatgjggAVIQO72gmRGqPVzsAaV8mxln79VWxycVxrHeEZ8cKqUG4IXrIfptskO # gRxA1hYXKfxcnBgr6kX1773VZ08oXgXukEx658b00Pz6zT4yRhMgNooE6reqB0ac # DZM6CWaZWFwpo7kMpjA4PNBGNjV8nLruw9X5Cnb6fgUbQMqSNenVetG1fwCuqZCq # xX8BnBCxFvzMbhjcb2L+plCnuHu4nRU//iAMdcgiWhOVGZAA6RrVwobx447sX/Tl # AgMBAAGjggESMIIBDjAfBgNVHSMEGDAWgBSgEQojPpbxB+zirynvgqV/0DCktDAd # BgNVHQ4EFgQUMuuSmv81lkgvKEBCcCA2kVwXheYwDgYDVR0PAQH/BAQDAgGGMA8G # A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwMwGwYDVR0gBBQwEjAG # BgRVHSAAMAgGBmeBDAEEATBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsLmNv # bW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDA0BggrBgEFBQcB # AQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkq # hkiG9w0BAQwFAAOCAQEAEr+h74t0mphEuGlGtaskCgykime4OoG/RYp9UgeojR9O # IYU5o2teLSCGvxC4rnk7U820+9hEvgbZXGNn1EAWh0SGcirWMhX1EoPC+eFdEUBn # 9kIncsUj4gI4Gkwg4tsB981GTyaifGbAUTa2iQJUx/xY+2wA7v6Ypi6VoQxTKR9v # 2BmmT573rAnqXYLGi6+Ap72BSFKEMdoy7BXkpkw9bDlz1AuFOSDghRpo4adIOKnR # NiV3wY0ZFsWITGZ9L2POmOhp36w8qF2dyRxbrtjzL3TPuH7214OdEZZimq5FE9p/ # 3Ef738NSn+YGVemdjPI6YlG87CQPKdRYgITkRXta2DCCBdIwggQ6oAMCAQICEQC3 # hK8bsDEjswfwAlUoGMUIMA0GCSqGSIb3DQEBDAUAMFQxCzAJBgNVBAYTAkdCMRgw # FgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNlY3RpZ28gUHVibGlj # IENvZGUgU2lnbmluZyBDQSBSMzYwHhcNMjMwMzIxMDAwMDAwWhcNMjUwMzIwMjM1 # OTU5WjBoMQswCQYDVQQGEwJERTERMA8GA1UECAwIU2FhcmxhbmQxIjAgBgNVBAoM # GUtyw6RtZXIgSVQgU29sdXRpb25zIEdtYkgxIjAgBgNVBAMMGUtyw6RtZXIgSVQg # U29sdXRpb25zIEdtYkgwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDT # H/TMSn4rSnHOZjwUP2kGzD93pkzF6qxtBuqHIXHRVyo6+T1mhFrGD35pzjDmGaqj # a7heZan1yQF5Y9D/m9ckfJFzbeS1f+sGKkU1ZV/YEUsicOgKHKQ6SQBRWOjMmZft # PnVkQiGmtDd/zy7MBYmdFCJHMvWqKQQfuDWFJO3nCPfSQ1wNWG6FTfywqIFaJNN1 # ytGb1idiL039QhXXnFD3iLCSog+imaZ6Wj9HLAOyCQ9w72C/eHN1iWhVnh1oFkNi # g9b0EGObHgxYmg8cly6Jntqc6uhptVxzLMehmbhJ+jw92NoohAG9XrFlbtN8Fc7x # e1rUt4XgvZnVfa4dEiWolgbJhDRsqtE1wsnhXY2prFE1AqhDykfT8aEx3byuv3a2 # IpxF7x0wzpoj3WRe492K9Pn2gIEDTJg1YINaOf41WA8Z8kWv+//Kp/Hqyc0lGb1b # UM7gkVX0YowM7y8lWouqOV73VUI+wd94ETGrlxYb/UOuex+ZoJzmelhege8Lc7kC # AwEAAaOCAYkwggGFMB8GA1UdIwQYMBaAFA8qyyCHKLjsb0iuK1SmKaoXpM0MMB0G # A1UdDgQWBBQl9gPVw/AoEEo6c51A3Y77YrisfjAOBgNVHQ8BAf8EBAMCB4AwDAYD # VR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzBKBgNVHSAEQzBBMDUGDCsG # AQQBsjEBAgEDAjAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3RpZ28uY29tL0NQ # UzAIBgZngQwBBAEwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5zZWN0aWdv # LmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdDQVIzNi5jcmwweQYIKwYBBQUH # AQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp # Z29QdWJsaWNDb2RlU2lnbmluZ0NBUjM2LmNydDAjBggrBgEFBQcwAYYXaHR0cDov # L29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQEMBQADggGBAFPJOJKmNMi/Lo5U # OPXXjgQ7PVcBwRKTNiqScDJo8rU3/meYIjat/LRexYEWi7szclq4I01t+MSdgJYU # oXlp2SAwvTp2oxMEeuUgv4OgxEpWB8e5EOYzJjYJDdGHKzTZ6Ay8dFn6/+WPjDzL # VZDUqsbdbiho/oKjmYOFw3qhLt4M5znbeaHgGRRwqxu8kQUio1CroT4dTyqYpeHo # ePICW2zEsYl9h2LJ0jXWPzPv7qXf47bjW/Envgop5Zpf7U9dLpwT6TqombyypwOJ # zDGbvbxFt0lDZN89L/HPyCxftzf3+V6YARV32wY10U88eMyy8hhvl53bsF3BCPHn # fEHit5LzS/4oD58E9pShIgO3+zVEMNOIhFKE29DF1HwcKrdzXmpJamsZnSK8LOLn # ZSuqYiMOl/IwN9fhZqdszCruK4UvYpz0ynrHNeA7VhaRaqH10fmqPe2MSPXL7Zbt # JDK4TPOtwJQyT6LCUktfl3naE2vcecgz0oG6U+Vh5JCumNVoDzCCBhQwggP8oAMC # AQICEHojrtpTaZYPkcg+XPTH4z8wDQYJKoZIhvcNAQEMBQAwVzELMAkGA1UEBhMC # R0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEuMCwGA1UEAxMlU2VjdGlnbyBQ # dWJsaWMgVGltZSBTdGFtcGluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw0z # NjAzMjEyMzU5NTlaMFUxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExp # bWl0ZWQxLDAqBgNVBAMTI1NlY3RpZ28gUHVibGljIFRpbWUgU3RhbXBpbmcgQ0Eg # UjM2MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAzZjYQ0GrboIr7PYz # fiY05ImM0+8iEoBUPu8mr4wOgYPjoiIz5vzf7d5wu8GFK1JWN5hciN9rdqOhbdxL # cSVwnOTJmUGfAMQm4eXOls3iQwfapEFWuOsYmBKXPNSpwZAFoLGl5y1EaGGc5LBy # M8wjcbSF52/Z42YaJRsPXY545E3QAPN2mxDh0OLozhiGgYT1xtjXVfEzYBVmfQaI # 5QL35cTTAjsJAp85R+KAsOfuL9Z7LFnjdcuPkZWjssMETFIueH69rxbFOUD64G+r # Uo7xFIdRAuDNvWBsv0iGDPGaR2nZlY24tz5fISYk1sPY4gir99aXAGnoo0vX3Oke # w4MsiyBn5ZnUDMKzUcQrpVavGacrIkmDYu/bcOUR1mVBIZ0X7P4bKf38JF7Mp7tY # 3LFF/h7hvBS2tgTYXlD7TnIMPrxyXCfB5yQq3FFoXRXM3/DvqQ4shoVWF/mwwz9x # oRku05iphp22fTfjKRIVpm4gFT24JKspEpM8mFa9eTgKWWCvAgMBAAGjggFcMIIB # WDAfBgNVHSMEGDAWgBT2d2rdP/0BE/8WoWyCAi/QCj0UJTAdBgNVHQ4EFgQUX1jt # TDF6omFCjVKAurNhlxmiMpswDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYB # Af8CAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwgwEQYDVR0gBAowCDAGBgRVHSAAMEwG # A1UdHwRFMEMwQaA/oD2GO2h0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGlnb1B1 # YmxpY1RpbWVTdGFtcGluZ1Jvb3RSNDYuY3JsMHwGCCsGAQUFBwEBBHAwbjBHBggr # BgEFBQcwAoY7aHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljVGlt # ZVN0YW1waW5nUm9vdFI0Ni5wN2MwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNl # Y3RpZ28uY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAS13sgrQ41WAyegR0lWP1MLWd0 # r8diJiH2VVRpxqFGhnZbaF+IQ7JATGceTWOS+kgnMAzGYRzpm8jIcjlSQ8Jtcqym # Khgx1s6cFZBSfvfeoyigF8iCGlH+SVSo3HHr98NepjSFJTU5KSRKK+3nVSWYkSVQ # gJlgGh3MPcz9IWN4I/n1qfDGzqHCPWZ+/Mb5vVyhgaeqxLPbBIqv6cM74Nvyo1xN # sllECJJrOvsrJQkajVz4xJwZ8blAdX5umzwFfk7K/0K3fpjgiXpqNOpXaJ+KSRW0 # HdE0FSDC7+ZKJJSJx78mn+rwEyT+A3z7Ss0gT5CpTrcmhUwIw9jbvnYuYRKxFVWj # KklW3z83epDVzoWJttxFpujdrNmRwh1YZVIB2guAAjEQoF42H0BA7WBCueHVMDyV # 1e4nM9K4As7PVSNvQ8LI1WRaTuGSFUd9y8F8jw22BZC6mJoB40d7SlZIYfaildlg # pgbgtu6SDsek2L8qomG57Yp5qTqof0DwJ4Q4HsShvRl/59T4IJBovRwmqWafH0cI # PEX7cEttS5+tXrgRtMjjTOp6A9l0D6xcKZtxnLqiTH9KPCy6xZEi0UDcMTww5Fl4 # VvoGbMG2oonuX3f1tsoHLaO/Fwkj3xVr3lDkmeUqivebQTvGkx5hGuJaSVQ+x60x # J/Y29RBr8Tm9XJ59AjCCBhowggQCoAMCAQICEGIdbQxSAZ47kHkVIIkhHAowDQYJ # KoZIhvcNAQEMBQAwVjELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGlt # aXRlZDEtMCsGA1UEAxMkU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIFJvb3Qg # UjQ2MB4XDTIxMDMyMjAwMDAwMFoXDTM2MDMyMTIzNTk1OVowVDELMAkGA1UEBhMC # R0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDErMCkGA1UEAxMiU2VjdGlnbyBQ # dWJsaWMgQ29kZSBTaWduaW5nIENBIFIzNjCCAaIwDQYJKoZIhvcNAQEBBQADggGP # ADCCAYoCggGBAJsrnVP6NT+OYAZDasDP9X/2yFNTGMjO02x+/FgHlRd5ZTMLER4A # RkZsQ3hAyAKwktlQqFZOGP/I+rLSJJmFeRno+DYDY1UOAWKA4xjMHY4qF2p9YZWh # hbeFpPb09JNqFiTCYy/Rv/zedt4QJuIxeFI61tqb7/foXT1/LW2wHyN79FXSYiTx # cv+18Irpw+5gcTbXnDOsrSHVJYdPE9s+5iRF2Q/TlnCZGZOcA7n9qudjzeN43OE/ # TpKF2dGq1mVXn37zK/4oiETkgsyqA5lgAQ0c1f1IkOb6rGnhWqkHcxX+HnfKXjVo # dTmmV52L2UIFsf0l4iQ0UgKJUc2RGarhOnG3B++OxR53LPys3J9AnL9o6zlviz5p # zsgfrQH4lrtNUz4Qq/Va5MbBwuahTcWk4UxuY+PynPjgw9nV/35gRAhC3L81B3/b # IaBb659+Vxn9kT2jUztrkmep/aLb+4xJbKZHyvahAEx2XKHafkeKtjiMqcUf/2BG # 935A591GsllvWwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUMuuSmv81lkgvKEBC # cCA2kVwXheYwHQYDVR0OBBYEFA8qyyCHKLjsb0iuK1SmKaoXpM0MMA4GA1UdDwEB # /wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMBMGA1UdJQQMMAoGCCsGAQUFBwMD # MBsGA1UdIAQUMBIwBgYEVR0gADAIBgZngQwBBAEwSwYDVR0fBEQwQjBAoD6gPIY6 # aHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdS # b290UjQ2LmNybDB7BggrBgEFBQcBAQRvMG0wRgYIKwYBBQUHMAKGOmh0dHA6Ly9j # cnQuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5w # N2MwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMA0GCSqGSIb3 # DQEBDAUAA4ICAQAG/4Lhd2M2bnuhFSCbE/8E/ph1RGHDVpVx0ZE/haHrQECxyNbg # cv2FymQ5PPmNS6Dah66dtgCjBsULYAor5wxxcgEPRl05pZOzI3IEGwwsepp+8iGs # LKaVpL3z5CmgELIqmk/Q5zFgR1TSGmxqoEEhk60FqONzDn7D8p4W89h8sX+V1ima # Ub693TGqWp3T32IKGfIgy9jkd7GM7YCa2xulWfQ6E1xZtYNEX/ewGnp9ZeHPsNww # viJMBZL4xVd40uPWUnOJUoSiugaz0yWLODRtQxs5qU6E58KKmfHwJotl5WZ7nIQu # DT0mWjwEx7zSM7fs9Tx6N+Q/3+49qTtUvAQsrEAxwmzOTJ6Jp6uWmHCgrHW4dHM3 # ITpvG5Ipy62KyqYovk5O6cC+040Si15KJpuQ9VJnbPvqYqfMB9nEKX/d2rd1Q3Di # uDexMKCCQdJGpOqUsxLuCOuFOoGbO7Uv3RjUpY39jkkp0a+yls6tN85fJe+Y8voT # nbPU1knpy24wUFBkfenBa+pRFHwCBB1QtS+vGNRhsceP3kSPNrrfN2sRzFYsNfrF # aWz8YOdU254qNZQfd9O/VjxZ2Gjr3xgANHtM3HxfzPYF6/pKK8EE4dj66qKKtm2D # TL1KFCg/OYJyfrdLJq1q2/HXntgr2GVw+ZWhrWgMTn8v1SjZsLlrgIfZHDCCBl0w # ggTFoAMCAQICEDpSaiyEzlXmHWX8zBLY6YkwDQYJKoZIhvcNAQEMBQAwVTELMAkG # A1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEsMCoGA1UEAxMjU2Vj # dGlnbyBQdWJsaWMgVGltZSBTdGFtcGluZyBDQSBSMzYwHhcNMjQwMTE1MDAwMDAw # WhcNMzUwNDE0MjM1OTU5WjBuMQswCQYDVQQGEwJHQjETMBEGA1UECBMKTWFuY2hl # c3RlcjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTAwLgYDVQQDEydTZWN0aWdv # IFB1YmxpYyBUaW1lIFN0YW1waW5nIFNpZ25lciBSMzUwggIiMA0GCSqGSIb3DQEB # AQUAA4ICDwAwggIKAoICAQCN0Wf0wUibvf04STpNYYGbw9jcRaVhBDaNBp7jmJaA # 9dQZW5ighrXGNMYjK7Dey5RIHMqLIbT9z9if753mYbojJrKWO4ZP0N5dBT2TwZZa # Pb8E+hqaDZ8Vy2c+x1NiEwbEzTrPX4W3QFq/zJvDDbWKL99qLL42GJQzX3n5wWo6 # 0KklfFn+Wb22mOZWYSqkCVGl8aYuE12SqIS4MVO4PUaxXeO+4+48YpQlNqbc/ndT # gszRQLF4MjxDPjRDD1M9qvpLTZcTGVzxfViyIToRNxPP6DUiZDU6oXARrGwyP9ag # lPXwYbkqI2dLuf9fiIzBugCDciOly8TPDgBkJmjAfILNiGcVEzg+40xUdhxNcaC+ # 6r0juPiR7bzXHh7v/3RnlZuT3ZGstxLfmE7fRMAFwbHdDz5gtHLqjSTXDiNF58Ix # PtvmZPG2rlc+Yq+2B8+5pY+QZn+1vEifI0MDtiA6BxxQuOnj4PnqDaK7NEKwtD1p # zoA3jJFuoJiwbatwhDkg1PIjYnMDbDW+wAc9FtRN6pUsO405jaBgigoFZCw9hWjL # NqgFVTo7lMb5rVjJ9aSBVVL2dcqzyFW2LdWk5Xdp65oeeOALod7YIIMv1pbqC15R # 7QCYLxcK1bCl4/HpBbdE5mjy9JR70BHuYx27n4XNOZbwrXcG3wZf9gEUk7stbPAo # BQIDAQABo4IBjjCCAYowHwYDVR0jBBgwFoAUX1jtTDF6omFCjVKAurNhlxmiMpsw # HQYDVR0OBBYEFGjvpDJJabZSOB3qQzks9BRqngyFMA4GA1UdDwEB/wQEAwIGwDAM # BgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMEoGA1UdIARDMEEw # NQYMKwYBBAGyMQECAQMIMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5j # b20vQ1BTMAgGBmeBDAEEAjBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLnNl # Y3RpZ28uY29tL1NlY3RpZ29QdWJsaWNUaW1lU3RhbXBpbmdDQVIzNi5jcmwwegYI # KwYBBQUHAQEEbjBsMEUGCCsGAQUFBzAChjlodHRwOi8vY3J0LnNlY3RpZ28uY29t # L1NlY3RpZ29QdWJsaWNUaW1lU3RhbXBpbmdDQVIzNi5jcnQwIwYIKwYBBQUHMAGG # F2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMA0GCSqGSIb3DQEBDAUAA4IBgQCw3C7J # +k82TIov9slP1e8YTx+fDsa//hJ62Y6SMr2E89rv82y/n8we5W6z5pfBEWozlW7n # Wp+sdPCdUTFw/YQcqvshH6b9Rvs9qZp5Z+V7nHwPTH8yzKwgKzTTG1I1XEXLAK9f # HnmXpaDeVeI8K6Lw3iznWZdLQe3zl+Rejdq5l2jU7iUfMkthfhFmi+VVYPkR/BXp # V7Ub1QyyWebqkjSHJHRmv3lBYbQyk08/S7TlIeOr9iQ+UN57fJg4QI0yqdn6Pyie # hS1nSgLwKRs46T8A6hXiSn/pCXaASnds0LsM5OVoKYfbgOOlWCvKfwUySWoSgrhn # cihSBXxH2pAuDV2vr8GOCEaePZc0Dy6O1rYnKjGmqm/IRNkJghSMizr1iIOPN+23 # futBXAhmx8Ji/4NTmyH9K0UvXHiuA2Pa3wZxxR9r9XeIUVb2V8glZay+2ULlc445 # CzCvVSZV01ZB6bgvCuUuBx079gCcepjnZDCcEuIC5Se4F6yFaZ8RvmiJ4hgwggaC # MIIEaqADAgECAhA2wrC9fBs656Oz3TbLyXVoMA0GCSqGSIb3DQEBDAUAMIGIMQsw # CQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5 # IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMl # VVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0yMTAzMjIw # MDAwMDBaFw0zODAxMTgyMzU5NTlaMFcxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9T # ZWN0aWdvIExpbWl0ZWQxLjAsBgNVBAMTJVNlY3RpZ28gUHVibGljIFRpbWUgU3Rh # bXBpbmcgUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCI # ndi5RWedHd3ouSaBmlRUwHxJBZvMWhUP2ZQQRLRBQIF3FJmp1OR2LMgIU14g0JIl # L6VXWKmdbmKGRDILRxEtZdQnOh2qmcxGzjqemIk8et8sE6J+N+Gl1cnZocew8eCA # awKLu4TRrCoqCAT8uRjDeypoGJrruH/drCio28aqIVEn45NZiZQI7YYBex48eL78 # lQ0BrHeSmqy1uXe9xN04aG0pKG9ki+PC6VEfzutu6Q3IcZZfm00r9YAEp/4aeiLh # yaKxLuhKKaAdQjRaf/h6U13jQEV1JnUTCm511n5avv4N+jSVwd+Wb8UMOs4netap # q5Q/yGyiQOgjsP/JRUj0MAT9YrcmXcLgsrAimfWY3MzKm1HCxcquinTqbs1Q0d2V # MMQyi9cAgMYC9jKc+3mW62/yVl4jnDcw6ULJsBkOkrcPLUwqj7poS0T2+2JMzPP+ # jZ1h90/QpZnBkhdtixMiWDVgh60KmLmzXiqJc6lGwqoUqpq/1HVHm+Pc2B6+wCy/ # GwCcjw5rmzajLbmqGygEgaj/OLoanEWP6Y52Hflef3XLvYnhEY4kSirMQhtberRv # aI+5YsD3XVxHGBjlIli5u+NrLedIxsE88WzKXqZjj9Zi5ybJL2WjeXuOTbswB7Xj # kZbErg7ebeAQUQiS/uRGZ58NHs57ZPUfECcgJC+v2wIDAQABo4IBFjCCARIwHwYD # VR0jBBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFPZ3at0//QET # /xahbIICL9AKPRQlMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MBMG # A1UdJQQMMAoGCCsGAQUFBwMIMBEGA1UdIAQKMAgwBgYEVR0gADBQBgNVHR8ESTBH # MEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQ2Vy # dGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwNQYIKwYBBQUHAQEEKTAnMCUGCCsGAQUF # BzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4IC # AQAOvmVB7WhEuOWhxdQRh+S3OyWM637ayBeR7djxQ8SihTnLf2sABFoB0DFR6JfW # S0snf6WDG2gtCGflwVvcYXZJJlFfym1Doi+4PfDP8s0cqlDmdfyGOwMtGGzJ4iIm # yaz3IBae91g50QyrVbrUoT0mUGQHbRcF57olpfHhQEStz5i6hJvVLFV/ueQ21SM9 # 9zG4W2tB1ExGL98idX8ChsTwbD/zIExAopoe3l6JrzJtPxj8V9rocAnLP2C8Q5wX # VVZcbw4x4ztXLsGzqZIiRh5i111TW7HV1AtsQa6vXy633vCAbAOIaKcLAo/IU7sC # lyZUk62XD0VUnHD+YvVNvIGezjM6CRpcWed/ODiptK+evDKPU2K6synimYBaNH49 # v9Ih24+eYXNtI38byt5kIvh+8aW88WThRpv8lUJKaPn37+YHYafob9Rg7LyTrSYp # yZoBmwRWSE4W6iPjB7wJjJpH29308ZkpKKdpkiS9WNsf/eeUtvRrtIEiSJHN899L # 1P4l6zKVsdrUu1FX1T/ubSrsxrYJD+3f3aKg6yxdbugot06YwGXXiy5UUGZvOu3l # XlxA+fC13dQ5OlL2gIb5lmF6Ii8+CQOYDwXM+yd9dbmocQsHjcRPsccUd5E9Fisw # EqORvz8g3s+jR3SFCgXhN4wz7NgAnOgpCdUo4uDyllU9PzGCBbAwggWsAgEBMGkw # VDELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDErMCkGA1UE # AxMiU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIENBIFIzNgIRALeErxuwMSOz # B/ACVSgYxQgwCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAw # GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisG # AQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFIMcOCMJdy82TDzElUOUO0qYLRF8MA0G # CSqGSIb3DQEBAQUABIIBgIUFdbtUYPYjZeet/p9B1YlLQ6x4X2NWwK3SiAASYvQ0 # +j1BE+MdcvKGpYlGuPScWkAtW9MO15WLgDdFRn7fgg5cO6fRyLgQFC08bKYNPMsC # aj8J0y3oO1aIrOD524FzCPHQMXxJAfVduFcC/RrvAcJcq51H831fyPHdtK0mIOdJ # gSJGk0Df3CZhhALH9CGgAl1STJYUbOKnWi2yIUFkgdYiadveNIlhzSchOoyHfHwK # ICn6w9dj2hhgeFbdNB7zmzo7dZPUy61GlBnD0WbxgS/hcS1qMUPrFd9v1Cz/CTee # O4OIwKI4kFCgzAMrXyBeD7VFM97Qv60TnmhzKKKkSpy3Vg0V1xe/OPYecwz7OryI # tLEoy4gEtmsCMuRSE1Y4Fe1ywt6tgKSEPYNMlPCGycXNz4IDoB47n6Seqv1Acn52 # PTL3jOHGwnFsr3NTzWtuucXQJA90tIFXQL8v7qIsPTs5IUKICuDIlUyYKU9hVyYz # 5rWxKXaJWdXO8HOURerOHKGCAyIwggMeBgkqhkiG9w0BCQYxggMPMIIDCwIBATBp # MFUxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxLDAqBgNV # BAMTI1NlY3RpZ28gUHVibGljIFRpbWUgU3RhbXBpbmcgQ0EgUjM2AhA6UmoshM5V # 5h1l/MwS2OmJMA0GCWCGSAFlAwQCAgUAoHkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3 # DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwOTMwMTM1NTU5WjA/BgkqhkiG9w0BCQQx # MgQwvdDs15zBUjpE5s3oNEJMGhX45faxdWSYZ5KpdAVoLwvTOHqmI+PNU1OuY2GV # kA4pMA0GCSqGSIb3DQEBAQUABIICABl52y7lKBUKPQROviPTXSGV/ZV0/c1M1u/6 # nDToNMj6r51KoEvHdpML3ANMbsls/m5wHy5ioLfZUICT+x60mHwhGjWakW+U0y67 # iM9axSJ6Bu6NJ5/bvTpXVXi6FWHjzJzfrO8h8ZMuG3Txh6xvb5HA9adm357vdV9v # X3ntjeQT7Mb4kt3vDLI7M24eiPoVP6zQ6z7OTA+mr3tK1cWjNTZ+Qs5/t1SbLxDz # YytprA4w8KQFTO4bOjYDrgjU0ijWia59Da2e84zgFhdqPT0PF+fZlrIWRpzeLiOE # gjPLU4Yue/QjKHbMH2fxkhYdfXJWoX5MH0KM19dTIbsjtl06vkuHQ1IYiV/aQuTO # cgmkQnxDsG5Mk86t3Oj8uqmwVQeIpHssSFhiE2p4NaniOQjuoBnrlqr69/93xrAp # TmYH6yvAozEOLHT+aRC+RIqRX7eNrN1+pp+rS6nVxvTe2D3s06uCSFm3wkEefQiy # vWjhW1lwvzRialbVPhvJtc1j74+XNgZufLcOH0TqHxmgAGxVAYoCTVgu1A6CNuWU # vJJ7TiG/ArH26pZwGBNojJOpDbo7ev64VdhJuyIOKEYyFhKwQr/guyQt5eZDCZMT # lCNHFk7mkENjirABsP1Wc4sopkPLnd21OFtr6udyzBxPqvVqg6SZ4yEEJDwe/kur # JZAHdi7b # SIG # End signature block |