Checks/check-ORCA107.ps1

<#
 
ORCA-107 Check if End-user Spam notification is enabled and the notification frequency is less than equal to 3 days
 
#>


using module "..\ORCA.psm1"

class ORCA107 : ORCACheck
{
    <#
     
        CONSTRUCTOR with Check Header Data
     
    #>


    ORCA107()
    {
        $this.Control="ORCA-107"
        $this.Area="Anti-Spam Policies"
        $this.Name="End-user Spam notifications"
        $this.PassText="End-user Spam notification is enabled and the frequency is set to less than or equal to 3 days"
        $this.FailRecommendation="Enable End-user Spam notification and set the frequency to less than or equal to 3 days"
        $this.Importance="Enable End-user Spam notifications to let users manage their own spam-quarantined messages (Release, Block sender, Review). End-user spam notifications contain a list of all spam-quarantined messages that the end-user has received during a time period."
        $this.ExpandResults=$True
        $this.CheckType=[CheckType]::ObjectPropertyValue
        $this.ObjectType="Anti-Spam Policy"
        $this.ItemName="Setting"
        $this.DataType="Current Value"
        $this.Links= @{
            "Security & Compliance Center - Anti-spam settings"="https://aka.ms/orca-antispam-action-antispam"
            "Configure end-user spam notifications in Exchange Online"="https://aka.ms/orca-antispam-docs-2"
            "Recommended settings for EOP and Office 365 ATP security"="https://aka.ms/orca-atpp-docs-6"
        }
    }

    <#
     
        RESULTS
     
    #>


    GetResults($Config)
    {
        #$CountOfPolicies = ($Config["HostedContentFilterPolicy"] ).Count
        $CountOfPolicies = ($global:HostedContentPolicyStatus| Where-Object {$_.IsEnabled -eq $True}).Count
      
        ForEach($Policy in $Config["HostedContentFilterPolicy"])
        {
            $IsPolicyDisabled = $false
            $SpamQuarantineTag =  $($Policy.SpamQuarantineTag)

            $IsBuiltIn = $false
            $policyname = $($Policy.Name)

            ForEach($data in ($global:HostedContentPolicyStatus | Where-Object {$_.PolicyName -eq $policyname})) 
            {
                $IsPolicyDisabled = !$data.IsEnabled
            }

            if($IsPolicyDisabled)
            {
                $IsPolicyDisabled = $true
                $policyname = "$policyname" + " [Disabled]"
            }
            elseif($policyname -match "Built-In" -and $CountOfPolicies -gt 1)
            {
                $IsBuiltIn =$True
                $policyname = "$policyname" +" [Built-In]"
            }
            elseif(($policyname -eq "Default" -or $policyname -eq "Office365 AntiPhish Default") -and $CountOfPolicies -gt 1)
            {
                $IsBuiltIn =$True
                $policyname = "$policyname" +" [Default]"
            }


            <#
             
            EnableEndUserSpamNotifications
             
            #>

            
                # Check objects
                $ConfigObject = [ORCACheckConfig]::new()
                $ConfigObject.Object=$policyname
                $QuarantineTag = $SpamQuarantineTag
                $status = $false 
                $frequency =0
                ForEach($Tag in $Config["QuarantineTag"])
                {
                    if($($Tag.Name) -eq $QuarantineTag)
                    {
                        $status = $Tag.ESNEnabled
                        $frequency = $Tag.AdminNotificationFrequencyInDays

                        $ConfigObject.ConfigItem="EnableEndUserSpamNotifications"
                        
        
                        If($status -eq $false )
                        {

                            if($IsPolicyDisabled)
                            {
                                $ConfigObject.ConfigData ="N/A"
                                $ConfigObject.InfoText = "The policy is not enabled and will not apply. The configuration for this policy is not set properly according to this check. It is being flagged incase of accidental enablement."
                                $ConfigObject.SetResult([ORCAConfigLevel]::Informational,"Fail")
                            }
                            elseif($IsBuiltIn)
                            {
                                $ConfigObject.ConfigData = $status
                                $ConfigObject.InfoText = "This is a Built-In/Default policy managed by Microsoft and therefore cannot be edited. Other policies are set up in this area. It is being flagged only for informational purpose."
                                $ConfigObject.SetResult([ORCAConfigLevel]::Informational,"Fail")
                            }
                            else
                            {
                                $ConfigObject.ConfigData = $status
                                 $ConfigObject.SetResult([ORCAConfigLevel]::Standard,"Fail")
                            }
                        }
                        Else 
                        {
                            if($IsPolicyDisabled)
                            {
                                $ConfigObject.ConfigData = "N/A"
                                $ConfigObject.InfoText = "The policy is not enabled and will not apply. The configuration for this policy is properly set according to this check. It is being flagged incase of accidental enablement."
                                $ConfigObject.SetResult([ORCAConfigLevel]::Informational,"Fail")
                            }
                            elseif($IsBuiltIn)
                            {
                                $ConfigObject.ConfigData = $status
                                $ConfigObject.InfoText = "This is a Built-In/Default policy managed by Microsoft and therefore cannot be edited. Other policies are set up in this area. It is being flagged only for informational purpose."
                                $ConfigObject.SetResult([ORCAConfigLevel]::Informational,"Fail")
                            }
                            else
                            {
                                $ConfigObject.ConfigData = $status
                                $ConfigObject.SetResult([ORCAConfigLevel]::Standard,"Pass")
                            }
                        }
                
                        # Add config to check
                        $this.AddConfig($ConfigObject)

                        <#
                            EndUserSpamNotificationFrequency
                        #>

            
                        # Check objects
                        $ConfigObject = [ORCACheckConfig]::new()
                        $ConfigObject.Object = $policyname
                        $ConfigObject.ConfigItem = "EndUserSpamNotificationFrequency"
                        
        
                    
                        If($frequency -le 3)
                        {
                            if($IsPolicyDisabled)
                            {
                                $ConfigObject.ConfigData = "N/A"
                                $ConfigObject.InfoText = "The policy is not enabled and will not apply. The configuration for this policy is properly set according to this check. It is being flagged incase of accidental enablement."
                                $ConfigObject.SetResult([ORCAConfigLevel]::Informational,"Fail")
                            }
                            elseif($IsBuiltIn)
                            {
                                $ConfigObject.ConfigData = $frequency
                                $ConfigObject.InfoText = "This is a Built-In/Default policy managed by Microsoft and therefore cannot be edited. Other policies are set up in this area. It is being flagged only for informational purpose."
                                $ConfigObject.SetResult([ORCAConfigLevel]::Informational,"Fail")
                            }
                            else
                            {
                                $ConfigObject.ConfigData = $frequency
                                $ConfigObject.SetResult([ORCAConfigLevel]::Standard,"Pass")
                            }
                        }
                        Else 
                        {
                            if($IsPolicyDisabled)
                            {
                                $ConfigObject.ConfigData = "N/A"
                                $ConfigObject.InfoText = "The policy is not enabled and will not apply. The configuration for this policy is not set properly according to this check. It is being flagged incase of accidental enablement."
                                $ConfigObject.SetResult([ORCAConfigLevel]::Informational,"Fail")
                            }
                            elseif($IsBuiltIn)
                            {
                                $ConfigObject.ConfigData = $frequency
                                $ConfigObject.InfoText = "This is a Built-In/Default policy managed by Microsoft and therefore cannot be edited. Other policies are set up in this area. It is being flagged only for informational purpose."
                                $ConfigObject.SetResult([ORCAConfigLevel]::Informational,"Fail")
                            }
                            else
                            {
                                $ConfigObject.ConfigData = $frequency
                                $ConfigObject.SetResult([ORCAConfigLevel]::Standard,"Fail")
                            }
                        }
                        # Add config to check
                        $this.AddConfig($ConfigObject)
                    }
                }
        }            
    }

}
# SIG # Begin signature block
# MIIlugYJKoZIhvcNAQcCoIIlqzCCJacCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCnJoSUZkoFDduI
# hjI7wk/ERwYbP16kLNFX98Y42hv1xqCCC6EwggUGMIID7qADAgECAhMzAAAE4xrK
# 0/aegtm7AAEAAATjMA0GCSqGSIb3DQEBCwUAMHkxCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBUZXN0aW5nIFBD
# QSAyMDEwMB4XDTIxMDkwMjE5MjYyOFoXDTIyMDkwMTE5MjYyOFowfDELMAkGA1UE
# BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
# BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdQ29kZSBTaWdu
# IFRlc3QgKERPIE5PVCBUUlVTVCkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
# AoIBAQDokaNBqvPFgH8yAnEicnWyLoQ58nf7j+B20b5uqsDq9EXWyt87+Wc9CCFh
# +9gxWx6wx+iRsO/yT8SZhxi/w00uxM5jDWnbAbSIMB2VrNnLGNOxAQj674zPskBs
# ecseXAMHA/+o5ujZOse4EorLmTfJ5f/Zzun8KVVwlSd1CVlj0hgk28xmTdLV7ZWw
# 0wV9e/0p/XOHSRUNWw8gFfIfzli3oVV4H/DzT2o1jD4HIt3QIX1kRRXVqleASUgD
# Z6/6JthrKti4xfyMdSUGyXuxEoe6zZ4EOXltaHw7hqZzH2Ufl3UxB6HmdxvG9BI4
# 3LVKq3pFO+Nj3NdMVkyptnjDJnGpAgMBAAGjggGCMIIBfjATBgNVHSUEDDAKBggr
# BgEFBQcDAzAdBgNVHQ4EFgQUPMsdBtvwLsgDf0B50WrJSL+NYrEwUAYDVR0RBEkw
# R6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNv
# MRYwFAYDVQQFEw0yMzAwNzIrNDY3NjA2MB8GA1UdIwQYMBaAFL9loqtvdaNORZZX
# Bc85h/TAFRwcMFwGA1UdHwRVMFMwUaBPoE2GS2h0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRlc3RpbmclMjBQQ0ElMjAyMDEw
# KDEpLmNybDBpBggrBgEFBQcBAQRdMFswWQYIKwYBBQUHMAKGTWh0dHA6Ly93d3cu
# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGVzdGluZyUy
# MFBDQSUyMDIwMTAoMSkuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQAD
# ggEBAAylFduuUCCNS+ejRtNeqm7geSoNzl+E0wbGZi4W9+rqo972KaS338FB5Y5G
# 8PNqaN3RNqNaHra/zI97JaLYjrZ+iCmKMzROdVS5cR/WpAla36J/tpuVSvNwwvW1
# 5KHRv6PEzGQ7BQYU55cMTkUwNtRVbARMdjcFa3pbuIkioVsoFNVOZ4e8aOSPV+Vz
# PVmOU2xltmM/8IOgTSfFTCJhqY7d/vjqajXAXg2olbbJ2vX051uUuFfIyfo/5xJS
# uyWOUCZ1opzXHy5EwrkmdZs6orQtMy1akT6UYjl4x5VZsqiszDshDNjVgRUdR97M
# d7NxQZEScdZfoTf0byI8Cwtp8JIwggaTMIIEe6ADAgECAhMzAAAALTV6RojJB3HY
# AAAAAAAtMA0GCSqGSIb3DQEBCwUAMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMTowOAYDVQQDEzFNaWNyb3NvZnQgVGVzdGluZyBSb290IENl
# cnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIwMTIxMDIwNDMyMFoXDTM1MDYx
# NzIxMDQxMVoweTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEj
# MCEGA1UEAxMaTWljcm9zb2Z0IFRlc3RpbmcgUENBIDIwMTAwggEiMA0GCSqGSIb3
# DQEBAQUAA4IBDwAwggEKAoIBAQC/PGCBq77s/9cXY/KmQtETYpywF866Rhp7Ii5V
# c5pUucbU0cqY/ndHDY6d8F7M+FTv8s8q1GLxqTQKBNfFBYbyEPVN05YIZoXbAn0Y
# 3OJ6I6eaKV2ueRjPDGPwGv+BqalDP6kLuVHxs0g6/EQuXxHFVjr/yg7NiAjB/cfV
# 9T7v6k4bcosjvUU3nh9wwafJuCBz7fNsPYshBc93Ev6h3AfpDVt4CWwyVRBH0DfI
# x/f6c/5GNORWFqg3ZFPWNfvDgLaOtoaRoRDWwUr243rUEQqy3i6eEJfgga4SXYgB
# XcykxChSnGDwCuaIr0vpV4rsow83Hin2XSHT19pdDslO241tAgMBAAGjggH6MIIB
# 9jAOBgNVHQ8BAf8EBAMCAYYwEgYJKwYBBAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3
# FQIEFgQU6p9fM7bQX56t6y2mwQK7QDjL57UwHQYDVR0OBBYEFL9loqtvdaNORZZX
# Bc85h/TAFRwcMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNodHRw
# Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0w
# GQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
# HSMEGDAWgBSjAQR+MIgz67kxnMrrhXZn/GW00TBZBgNVHR8EUjBQME6gTKBKhkho
# dHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNUZXNS
# b29DZXJBdXRfMjAxMC0wNi0xNy5jcmwwgY0GCCsGAQUFBwEBBIGAMH4wTQYIKwYB
# BQUHMAKGQWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljVGVz
# Um9vQ2VyQXV0XzIwMTAtMDYtMTcuY3J0MC0GCCsGAQUFBzABhiFodHRwOi8vb25l
# b2NzcC5taWNyb3NvZnQuY29tL29jc3AwDQYJKoZIhvcNAQELBQADggIBACe00IWy
# nswPpCpTc9Vt2tcxAMj2/2PI9gERtRiS2ty0+a8m6PxKeb3BZ7CIA3llzzU1BViO
# 4oMGlvW6fhJZUJvg8NU9nQnzu0bNh7104nfQRgZ6IhppK2QsuYs5gAzqgiciojBX
# IiTZIT+raUa3w6/Bxl682Y+RViOTqfImLkR29LpyI9GZb1tFZFPilZTxtkhAv3fw
# sTiUc5ACLGsBCJZ6zlLOnZTzkTSct1oOvnD8jbwn9nX7jNbU1qjWmtUI6quiyeg1
# R9V/WS+zB9bcVjaXU+IBinywbI7nsZrO1d0GgQ4FwMt519w+tr340t0QXfo2QTSD
# 711uiQVjsrGFQnxakyIKY3jKP0soUu9Bty0Ywklj0TAcWJ+bamBqJpp8oXUbLP42
# u4nMQSCnKwyj9/0BUFD+oJ09BAYRandAMhp5/i2z1BPH5GYMoIEMxMUuAWaaFu1R
# jQlaMuQqfuyjP8shwNSV7+nlOIUPhWF9mcBy9hAdd+6yWfKn7K6FbMBKcBA2c4g7
# p9zUkUjCQORwz6T9Oyl8BqPMeihIDBeSs5auNENXrAjRjMxUesTJDSFnk2chdsve
# WtOQ4+N/c0G7WdpI0RrJJ25K0NsVWNXdNegQ0SdmK6AkphLCaHOhgczWeCKk3ms1
# 2omIrm6SnoTwsPOLeXn/tdy0lBjf5mAcMmiyMYIZbzCCGWsCAQEwgZAweTELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9z
# b2Z0IFRlc3RpbmcgUENBIDIwMTACEzMAAATjGsrT9p6C2bsAAQAABOMwDQYJYIZI
# AWUDBAIBBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGC
# NwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIESYhVZLt2Iaz2vz
# 12yJjXFjNXVX1L734XKWkIMUquERMEQGCisGAQQBgjcCAQwxNjA0oBSAEgBNAGkA
# YwByAG8AcwBvAGYAdKEcgBpodHRwczovL3d3dy5taWNyb3NvZnQuY29tIDANBgkq
# hkiG9w0BAQEFAASCAQCAdN6tUUZW+uGop8kEhpZVvWntmXlN7Zl6w4LXOfo2bluD
# whuzAxy1tfCxTqAuUuISBX/l+TolyF45ptzob/7vZf0tBTKj8W1NwUK8i2yVC3dY
# iVHsDYFSMu8XWhtfjvfDQ2pbDscYrXQjt09uzoLygedJ6vUnrpw1Hxl6tYm6qfB0
# T6WlN1jwzJHsMEeVCvK8cmBDp07L4roU0UIitC25/BRDq+03Gs+7Z7mWRmwoTCJI
# c5Q6rySeKmuXCNzIHleBo4buDjT8NSByNmzSQ3TCljkC90R44QQzuwr+yBiJwW4K
# xLz35suss/TPIWaYomdf5FUidet5y/uZF0wDo+MdoYIW/DCCFvgGCisGAQQBgjcD
# AwExghboMIIW5AYJKoZIhvcNAQcCoIIW1TCCFtECAQMxDzANBglghkgBZQMEAgEF
# ADCCAVAGCyqGSIb3DQEJEAEEoIIBPwSCATswggE3AgEBBgorBgEEAYRZCgMBMDEw
# DQYJYIZIAWUDBAIBBQAEIN4lFB5gZ6XjXPXx2iW7OZHkh7xb8uSxr+XvZqjR4vmy
# AgZiFm2NyssYEjIwMjIwMzI4MTEwOTU1LjYyWjAEgAIB9KCB0KSBzTCByjELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9z
# b2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046
# N0JGMS1FM0VBLUI4MDgxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNl
# cnZpY2WgghFUMIIHDDCCBPSgAwIBAgITMwAAAZ8rRTUVCC5LXQABAAABnzANBgkq
# hkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
# MSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0yMTEy
# MDIxOTA1MjJaFw0yMzAyMjgxOTA1MjJaMIHKMQswCQYDVQQGEwJVUzETMBEGA1UE
# CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
# b2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVy
# YXRpb25zMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjo3QkYxLUUzRUEtQjgwODEl
# MCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZI
# hvcNAQEBBQADggIPADCCAgoCggIBAKT1eXxNUbKJkC/Oby0Hh8s/TOcvzzdgMgbT
# eOzX9bMJogJcOzSReUnf05RnB4EVr9XyXbuaUGPItkO1ODdbx1A5EO6d+ftLNkSg
# WaVdpJhxCHIMxXmCHGLqWHzLc1XVM0cZgvNqhCa0F64VKUQf3CnqsL+xErsY+s6f
# XtcAbOj7/IXLsN9aAhDjdffm63bRNKFR5gOuzkY5Wkenui6pBhFOm76UBoId+ry2
# v4sWojKOmS/HFvcdzHpWO17Q08foacgJPzg/FZgrt6hrkDFuxNSpZDKJa2sajJDJ
# c/jIgp9NRg+2xMUKLXiK4k2vfJEaOjhTU4dlTbIaZZ4Kt1xwmCRvLqTY3kCFFi8o
# et48+HmhYdjTWDxNyTFXiHiKWiq9ppgaHccM9Y/DgqgrITLtAca5krWoCSF5aIpf
# aoTR41Fa6aYIo+F1wXd1xWJUj1opeG3LjMzvq2xSNx0K2cblUgjp5Tp3NwvpgWnS
# 8yXsk8jfL0ivH2wESJWZKKAzZMNlThFQhsUi0PrQMljM0fSsa7YO/f0//Q7CjHfs
# /dl+8HmMB6DoH5IFIPRrCL5/rUkWtVz9Rnzdb7m2Aj/TFwsZYcE10SJtIXU0V+tX
# Qo8Ip+L2IPYGRCAxiLTYJjwTe6z5TJgDg0VhxYmmNpwEoAF4MF2RjUE98aDOyRoq
# EgaF2jH1AgMBAAGjggE2MIIBMjAdBgNVHQ4EFgQUYjTy1R4TFitIDi7o39lqx9Yd
# yGEwHwYDVR0jBBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBU
# oFKgUIZOaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9z
# b2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEB
# BGAwXjBcBggrBgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w
# cy9jZXJ0cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5j
# cnQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDCDANBgkqhkiG9w0B
# AQsFAAOCAgEAHYooKTw76Rnz6b1s9dAgCaj7rFsoNoqQxHf/zYDxdUAxr1Gki1gm
# R2S1r4LpkhUGxkQBEmQqdalgmKLIYFXc+Y+ggw/nMVuvQFgsyiUMlky0fcyJ9UEP
# 02Sdg0qD4ZtbJoA+zxVnpQPcJHOOhVnY9sdEf5Q6XZhz9ybUhHcGW+OVw3DKSnME
# ZSd0BF5+7ON9FJ8H50HOaUVj50wTz4nc6+94ytohzOdKuWvjoZcyhYYm3SEEk1/g
# bklmrJd7yfzPbJHmmgva6IxHOohdfWvAIheFws8WBIo3+8nGvEeIX0HJWKi5/iMJ
# wPw7aY73i2gJKosRG6h1J711DuqspUGicOhhYDH5bRcYBfapqhmaoS6ftBvyGfI3
# JWsnYLZ9nABjbKJfdkyAsZSukNGglZ0/61zlJLopnV/DKEv8oCCOI0+9QGK7s8Xg
# sfHlNEVTsdle+ClkOfnGS2RdmJ0DhLbo1mwxLKDHRHWddXfJtjcl2U19ERO3pIh9
# B0LFFflhRsjk12+5UyLLmgHduV+E+A0nKjSp2aQcoTak3hzyLD1KtqOdZwzRtQTG
# sOQ2pzBqrXUPPBzSUMZfXiCeMZFuCGXocuwPuPHHT5u7Mkcpk/MZ1MswUqhJ0l5X
# ilT+3d09t1TbUdLrQTHYinZN0Z+C1L087NVpMDhS5y6SVuNmRCKF+DYwggdxMIIF
# WaADAgECAhMzAAAAFcXna54Cm0mZAAAAAAAVMA0GCSqGSIb3DQEBCwUAMIGIMQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNy
# b3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yMTA5MzAx
# ODIyMjVaFw0zMDA5MzAxODMyMjVaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX
# YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
# Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAy
# MDEwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5OGmTOe0ciELeaLL
# 1yR5vQ7VgtP97pwHB9KpbE51yMo1V/YBf2xK4OK9uT4XYDP/XE/HZveVU3Fa4n5K
# Wv64NmeFRiMMtY0Tz3cywBAY6GB9alKDRLemjkZrBxTzxXb1hlDcwUTIcVxRMTeg
# Cjhuje3XD9gmU3w5YQJ6xKr9cmmvHaus9ja+NSZk2pg7uhp7M62AW36MEBydUv62
# 6GIl3GoPz130/o5Tz9bshVZN7928jaTjkY+yOSxRnOlwaQ3KNi1wjjHINSi947SH
# JMPgyY9+tVSP3PoFVZhtaDuaRr3tpK56KTesy+uDRedGbsoy1cCGMFxPLOJiss25
# 4o2I5JasAUq7vnGpF1tnYN74kpEeHT39IM9zfUGaRnXNxF803RKJ1v2lIH1+/Nme
# Rd+2ci/bfV+AutuqfjbsNkz2K26oElHovwUDo9Fzpk03dJQcNIIP8BDyt0cY7afo
# mXw/TNuvXsLz1dhzPUNOwTM5TI4CvEJoLhDqhFFG4tG9ahhaYQFzymeiXtcodgLi
# Mxhy16cg8ML6EgrXY28MyTZki1ugpoMhXV8wdJGUlNi5UPkLiWHzNgY1GIRH29wb
# 0f2y1BzFa/ZcUlFdEtsluq9QBXpsxREdcu+N+VLEhReTwDwV2xo3xwgVGD94q0W2
# 9R6HXtqPnhZyacaue7e3PmriLq0CAwEAAaOCAd0wggHZMBIGCSsGAQQBgjcVAQQF
# AgMBAAEwIwYJKwYBBAGCNxUCBBYEFCqnUv5kxJq+gpE8RjUpzxD/LwTuMB0GA1Ud
# DgQWBBSfpxVdAF5iXYP05dJlpxtTNRnpcjBcBgNVHSAEVTBTMFEGDCsGAQQBgjdM
# g30BATBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp
# b3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJ
# KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF
# MAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8w
# TTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVj
# dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBK
# BggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9N
# aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZIhvcNAQELBQADggIBAJ1V
# ffwqreEsH2cBMSRb4Z5yS/ypb+pcFLY+TkdkeLEGk5c9MTO1OdfCcTY/2mRsfNB1
# OW27DzHkwo/7bNGhlBgi7ulmZzpTTd2YurYeeNg2LpypglYAA7AFvonoaeC6Ce57
# 32pvvinLbtg/SHUB2RjebYIM9W0jVOR4U3UkV7ndn/OOPcbzaN9l9qRWqveVtihV
# J9AkvUCgvxm2EhIRXT0n4ECWOKz3+SmJw7wXsFSFQrP8DJ6LGYnn8AtqgcKBGUIZ
# UnWKNsIdw2FzLixre24/LAl4FOmRsqlb30mjdAy87JGA0j3mSj5mO0+7hvoyGtmW
# 9I/2kQH2zsZ0/fZMcm8Qq3UwxTSwethQ/gpY3UA8x1RtnWN0SCyxTkctwRQEcb9k
# +SS+c23Kjgm9swFXSVRk2XPXfx5bRAGOWhmRaw2fpCjcZxkoJLo4S5pu+yFUa2pF
# EUep8beuyOiJXk+d0tBMdrVXVAmxaQFEfnyhYWxz/gq77EFmPWn9y8FBSX5+k77L
# +DvktxW/tM4+pTFRhLy/AsGConsXHRWJjXD+57XQKBqJC4822rpM+Zv/Cuk0+CQ1
# ZyvgDbjmjJnW4SLq8CdCPSWU5nR0W2rRnj7tfqAxM328y+l7vzhwRNGQ8cirOoo6
# CGJ/2XBjU02N7oJtpQUQwXEGahC0HVUzWLOhcGbyoYICyzCCAjQCAQEwgfihgdCk
# gc0wgcoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
# EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNV
# BAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJjAkBgNVBAsTHVRoYWxl
# cyBUU1MgRVNOOjdCRjEtRTNFQS1CODA4MSUwIwYDVQQDExxNaWNyb3NvZnQgVGlt
# ZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoDFQB0Xa6YH/LLDEUsVMLysn0W
# /1z2t6CBgzCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
# b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqG
# SIb3DQEBBQUAAgUA5evDijAiGA8yMDIyMDMyODEzMTgwMloYDzIwMjIwMzI5MTMx
# ODAyWjB0MDoGCisGAQQBhFkKBAExLDAqMAoCBQDl68OKAgEAMAcCAQACAgHNMAcC
# AQACAhOEMAoCBQDl7RUKAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkK
# AwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQEFBQADgYEAwrF4
# sb+wrIPK6Li5XZuJKoFx1mp1C6uRETzEiX1FDhPo70eNOpggr12CQmxc1LilTKTq
# FmVUrbJn3Ot7FR39f6/JIY+WtdvnPxTsOk8dTbvgsSwLK0vhemETJ8v94/yBzBPo
# ipaeem1UYgLL8h8Ij5Z2uVIa6+cEuFBV7xx1HP0xggQNMIIECQIBATCBkzB8MQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNy
# b3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAZ8rRTUVCC5LXQABAAABnzAN
# BglghkgBZQMEAgEFAKCCAUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8G
# CSqGSIb3DQEJBDEiBCD7+4P+fAsUAaFKre9P8KxcSY8uvxKVFuznKXZ4qAld+TCB
# +gYLKoZIhvcNAQkQAi8xgeowgecwgeQwgb0EIIbxXimiJ4mepedXPA1R6N4qAsl8
# Qfs/6OynLDdLfFzaMIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
# c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
# b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIw
# MTACEzMAAAGfK0U1FQguS10AAQAAAZ8wIgQgW/nmidmaXYX3hUGNkCgREUeF8bB7
# U/6vh2sQUeWvQ0gwDQYJKoZIhvcNAQELBQAEggIAKJTIqh1pJSaIjwmRoKA8tz1G
# oGpw76Em9rIGSiXOKQnxE/d2azTOiyW2mtNbu+8U/BEmJi8hSk4exrLJ9SgEAN8J
# e2Eyu0M9F7lVMKy8tS7GKdY44lnKVScP6RIC+/W2oiiciGYwosNxplRB1FR4Ip8G
# m3ExQIugSQncvZ8e8zlsTBf9Q4ctVaVS8RMz2IlPJzW64rVMXkeg2VV4t5Nijtq6
# HA7kU2MJ52ccIwjAwlbQYjWV99QnxES1XiwTJrJC1LB+9axEuwSN5M0tULBQcrPB
# GKI9Ku+TGz1Mis/kB8QeGq7EV4o1Ii4DWZNwcWh6vAMeQlFcBg1SV6Y/UWqhYSso
# IxOc6Bbw9HI2Gj/nBhguPyzFD1PYy5JZeewA9Xos7ZAytA7VY8QnUkQ1rBxAuspz
# swEjVbUGWwpMyQvF7FxAGXoVnyPCuqAG3loX9ZuaObIhp3sMjIa9lJSxZc5hN6m5
# ChBPAWhQ06vQ/BIITcCgW9R8yzJyoxAWG+IAsF1+/5929t3LW1CX4s4YciG4/zs0
# FPbj6mn+czX8QND8In+d78CvL3Lcc/WSNiqgX3QfwXHX2p2pivfbWGOgeuXfWjo5
# gbQmKYaO6Ffpy2RJH3b0pVOf4SWELUnjlhoa1oPt1BAdOJnXye3aFswvyAfU75C+
# DasFrzUoDBRoDlyNW1E=
# SIG # End signature block