Private/Application/ConvertTo-OwnerLensAnonymizedConsoleReport.ps1
|
function New-OwnerLensAnonymizationState { [pscustomobject]@{ UserAliases = @{} GuidAliases = @{} StorageAliases = @{} UserCount = 0 GuidCount = 0 StorageCount = 0 } } function Get-OwnerLensAnonymizedAlias { param( [Parameter(Mandatory = $true)] [hashtable]$Aliases, [Parameter(Mandatory = $true)] [object]$State, [Parameter(Mandatory = $true)] [string]$Value, [Parameter(Mandatory = $true)] [ValidateSet("User", "Guid", "Storage")] [string]$Kind ) if (-not $Aliases.ContainsKey($Value)) { if ($Kind -eq "User") { $State.UserCount = [int]$State.UserCount + 1 $Aliases[$Value] = "user-{0:0000}" -f [int]$State.UserCount } elseif ($Kind -eq "Guid") { $State.GuidCount = [int]$State.GuidCount + 1 $Aliases[$Value] = "guid-{0:0000}" -f [int]$State.GuidCount } else { $State.StorageCount = [int]$State.StorageCount + 1 $Aliases[$Value] = "storage-{0:0000}" -f [int]$State.StorageCount } } return [string]$Aliases[$Value] } function Get-OwnerLensAnonymizedStorageAlias { param( [Parameter(Mandatory = $true)] [string]$Value, [Parameter(Mandatory = $true)] [object]$State ) return Get-OwnerLensAnonymizedAlias -Aliases $State.StorageAliases -State $State -Value $Value.ToLowerInvariant() -Kind Storage } function Test-OwnerLensUserIdentityField { param( [string]$PropertyName, [AllowNull()] [object]$SourceObject ) if ([string]::IsNullOrWhiteSpace($PropertyName)) { return $false } if ($PropertyName -in @( "userPrincipalName", "signInUser", "requesterUpn", "sasGeneratorUpn", "sasGeneratorUpns", "callerName" )) { return $true } if ($SourceObject -is [System.Collections.IDictionary] -and $PropertyName -match "(?i)^(userOwner|technicalOwner|businessOwner|managedBy|ownedBy|owner)$") { return $true } if ($null -eq $SourceObject) { return $false } $candidateType = [string]($SourceObject.PSObject.Properties["candidateType"].Value) if ($PropertyName -eq "candidate" -and $candidateType.Equals("User", [System.StringComparison]::OrdinalIgnoreCase)) { return $true } $principalType = [string]($SourceObject.PSObject.Properties["principalType"].Value) if ($PropertyName -in @("principalName", "principalDisplayName") -and $principalType.Equals("User", [System.StringComparison]::OrdinalIgnoreCase)) { return $true } $objectType = [string]($SourceObject.PSObject.Properties["objectType"].Value) if ($PropertyName -eq "displayName" -and $objectType.EndsWith(".user", [System.StringComparison]::OrdinalIgnoreCase)) { return $true } return $false } function Test-OwnerLensStorageAccountField { param( [string]$PropertyName, [AllowNull()] [object]$SourceObject ) if ([string]::IsNullOrWhiteSpace($PropertyName)) { return $false } if ($PropertyName -in @("storageAccountName", "storageAccounts")) { return $true } if ($null -eq $SourceObject) { return $false } $resourceType = [string]($SourceObject.PSObject.Properties["resourceType"].Value) if ($PropertyName -in @("name", "resourceName") -and $resourceType.Equals("Microsoft.Storage/storageAccounts", [System.StringComparison]::OrdinalIgnoreCase)) { return $true } $resourceId = [string]($SourceObject.PSObject.Properties["resourceId"].Value) if ($PropertyName -eq "name" -and $resourceId -match "(?i)/providers/Microsoft\.Storage/storageAccounts/") { return $true } return $false } function ConvertTo-OwnerLensAnonymizedStorageString { param( [Parameter(Mandatory = $true)] [string]$Value, [Parameter(Mandatory = $true)] [object]$State ) $text = [string]$Value $resourceIdPattern = "(?i)(/providers/Microsoft\.Storage/storageAccounts/)([^/\]\s\?]+)" $text = [regex]::Replace($text, $resourceIdPattern, { param($match) "{0}{1}" -f $match.Groups[1].Value, (Get-OwnerLensAnonymizedStorageAlias -Value $match.Groups[2].Value -State $State) }) $blobUriPattern = "(?i)(https?://)([a-z0-9]{3,24})(\.(?:blob|queue|table|dfs|file)\.core\.windows\.net\b)" $text = [regex]::Replace($text, $blobUriPattern, { param($match) "{0}{1}{2}" -f $match.Groups[1].Value, (Get-OwnerLensAnonymizedStorageAlias -Value $match.Groups[2].Value -State $State), $match.Groups[3].Value }) return $text } function ConvertTo-OwnerLensAnonymizedString { param( [AllowNull()] [string]$Value, [string]$PropertyName, [AllowNull()] [object]$SourceObject, [Parameter(Mandatory = $true)] [object]$State ) if ([string]::IsNullOrWhiteSpace($Value)) { return [string]$Value } if (Test-OwnerLensUserIdentityField -PropertyName $PropertyName -SourceObject $SourceObject) { return Get-OwnerLensAnonymizedAlias -Aliases $State.UserAliases -State $State -Value ([string]$Value) -Kind User } if (Test-OwnerLensStorageAccountField -PropertyName $PropertyName -SourceObject $SourceObject) { return Get-OwnerLensAnonymizedStorageAlias -Value ([string]$Value) -State $State } $emailPattern = "(?i)\b[A-Z0-9._%+\-']+@[A-Z0-9.\-]+\.[A-Z]{2,}\b" $text = [regex]::Replace([string]$Value, $emailPattern, { param($match) Get-OwnerLensAnonymizedAlias -Aliases $State.UserAliases -State $State -Value $match.Value.ToLowerInvariant() -Kind User }) $text = ConvertTo-OwnerLensAnonymizedStorageString -Value $text -State $State $guidPattern = "(?i)\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b" $text = [regex]::Replace($text, $guidPattern, { param($match) Get-OwnerLensAnonymizedAlias -Aliases $State.GuidAliases -State $State -Value $match.Value.ToLowerInvariant() -Kind Guid }) return $text } function ConvertTo-OwnerLensAnonymizedConsoleValue { param( [AllowNull()] [object]$Value, [string]$PropertyName = "", [AllowNull()] [object]$SourceObject = $null, [Parameter(Mandatory = $true)] [object]$State ) if ($null -eq $Value) { return $null } if ($Value -is [string]) { return ConvertTo-OwnerLensAnonymizedString -Value ([string]$Value) -PropertyName $PropertyName -SourceObject $SourceObject -State $State } if ($Value -is [datetime] -or $Value -is [bool] -or $Value.GetType().IsPrimitive) { return $Value } if ($Value -is [System.Collections.IDictionary]) { $result = [ordered]@{} foreach ($key in $Value.Keys) { $keyText = [string]$key $result[$keyText] = ConvertTo-OwnerLensAnonymizedConsoleValue -Value $Value[$key] -PropertyName $keyText -SourceObject $Value -State $State } return $result } if ($Value -is [System.Collections.IEnumerable]) { return @($Value | ForEach-Object { ConvertTo-OwnerLensAnonymizedConsoleValue -Value $_ -PropertyName $PropertyName -SourceObject $SourceObject -State $State }) } $resultObject = [ordered]@{} foreach ($property in $Value.PSObject.Properties) { $resultObject[$property.Name] = ConvertTo-OwnerLensAnonymizedConsoleValue -Value $property.Value -PropertyName $property.Name -SourceObject $Value -State $State } return [pscustomobject]$resultObject } function ConvertTo-OwnerLensAnonymizedConsoleReport { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [object]$Report ) $state = New-OwnerLensAnonymizationState return ConvertTo-OwnerLensAnonymizedConsoleValue -Value $Report -State $state } # SIG # Begin signature block # MII9MQYJKoZIhvcNAQcCoII9IjCCPR4CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCGr4ZEov+6Ultd # Y+ipatCsYKSCViwwj3jTugHAExjdGKCCIfYwggXMMIIDtKADAgECAhBUmNLR1FsZ # lUgTecgRwIeZMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVu # dGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAy # MDAeFw0yMDA0MTYxODM2MTZaFw00NTA0MTYxODQ0NDBaMHcxCzAJBgNVBAYTAlVT # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jv # c29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo # b3JpdHkgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALORKgeD # Bmf9np3gx8C3pOZCBH8Ppttf+9Va10Wg+3cL8IDzpm1aTXlT2KCGhFdFIMeiVPvH # or+Kx24186IVxC9O40qFlkkN/76Z2BT2vCcH7kKbK/ULkgbk/WkTZaiRcvKYhOuD # PQ7k13ESSCHLDe32R0m3m/nJxxe2hE//uKya13NnSYXjhr03QNAlhtTetcJtYmrV # qXi8LW9J+eVsFBT9FMfTZRY33stuvF4pjf1imxUs1gXmuYkyM6Nix9fWUmcIxC70 # ViueC4fM7Ke0pqrrBc0ZV6U6CwQnHJFnni1iLS8evtrAIMsEGcoz+4m+mOJyoHI1 # vnnhnINv5G0Xb5DzPQCGdTiO0OBJmrvb0/gwytVXiGhNctO/bX9x2P29Da6SZEi3 # W295JrXNm5UhhNHvDzI9e1eM80UHTHzgXhgONXaLbZ7LNnSrBfjgc10yVpRnlyUK # xjU9lJfnwUSLgP3B+PR0GeUw9gb7IVc+BhyLaxWGJ0l7gpPKWeh1R+g/OPTHU3mg # trTiXFHvvV84wRPmeAyVWi7FQFkozA8kwOy6CXcjmTimthzax7ogttc32H83rwjj # O3HbbnMbfZlysOSGM1l0tRYAe1BtxoYT2v3EOYI9JACaYNq6lMAFUSw0rFCZE4e7 # swWAsk0wAly4JoNdtGNz764jlU9gKL431VulAgMBAAGjVDBSMA4GA1UdDwEB/wQE # AwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIftJqhSobyhmYBAcnz1AQ # T2ioojAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQwFAAOCAgEAr2rd5hnn # LZRDGU7L6VCVZKUDkQKL4jaAOxWiUsIWGbZqWl10QzD0m/9gdAmxIR6QFm3FJI9c # Zohj9E/MffISTEAQiwGf2qnIrvKVG8+dBetJPnSgaFvlVixlHIJ+U9pW2UYXeZJF # xBA2CFIpF8svpvJ+1Gkkih6PsHMNzBxKq7Kq7aeRYwFkIqgyuH4yKLNncy2RtNwx # AQv3Rwqm8ddK7VZgxCwIo3tAsLx0J1KH1r6I3TeKiW5niB31yV2g/rarOoDXGpc8 # FzYiQR6sTdWD5jw4vU8w6VSp07YEwzJ2YbuwGMUrGLPAgNW3lbBeUU0i/OxYqujY # lLSlLu2S3ucYfCFX3VVj979tzR/SpncocMfiWzpbCNJbTsgAlrPhgzavhgplXHT2 # 6ux6anSg8Evu75SjrFDyh+3XOjCDyft9V77l4/hByuVkrrOj7FjshZrM77nq81YY # uVxzmq/FdxeDWds3GhhyVKVB0rYjdaNDmuV3fJZ5t0GNv+zcgKCf0Xd1WF81E+Al # GmcLfc4l+gcK5GEh2NQc5QfGNpn0ltDGFf5Ozdeui53bFv0ExpK91IjmqaOqu/dk # ODtfzAzQNb50GQOmxapMomE2gj4d8yu8l13bS3g7LfU772Aj6PXsCyM2la+YZr9T # 03u4aUoqlmZpxJTG9F9urJh4iIAGXKKy7aIwggaoMIIEkKADAgECAhMzAAVPfTUJ # QAZQHopGAAAABU99MA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ # RCBWZXJpZmllZCBDUyBBT0MgQ0EgMDQwHhcNMjYwODI1MDgwNDExWhcNMjYwODI4 # MDgwNDExWjBpMQswCQYDVQQGEwJQTDEXMBUGA1UECB4OAUEA8wBkAHoAawBpAGUx # DzANBgNVBAcTBldpZWx1bjEXMBUGA1UEChMOc29mdDRwbSBzcCB6b28xFzAVBgNV # BAMTDnNvZnQ0cG0gc3Agem9vMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC # AYEAocE6bh7BfN0QU54JIUvRPWmy+ysJUci/b3hULZiKuxSXgSEDL84ShpNAGwrh # lV6tPR5vcscj86/4XIFBEska7rrQn8vTXT1jHQs5osShbzpPVYGQ7XZoxZ3UKtjg # t8Qlk9SdprbULZjoAOtC3PJd4nAC8coEpIOcMlorOuqBGvpfoojTOlN6Zg/Jib4x # tbUMvRloe2so7oo27Vy/sXxGiyp1/uOPa+4r3IxB5/WUJ1MQBiql7DDwpUJNd1wV # EftVYiuKDM2NE5l/eGKMIwRwhReCAloZOh6OFkOXSJ6g4hCqWeecT2D6fQvyn8ZZ # pawAgbtLA5urPZejm/mqoTEqTx1KWQW+k8yqiFqLrxVlGtb0SHZxLVvjTd9gSwy4 # oANA6jfb/JJg5g1M3EeKIQPV5jvGIl6yfbOhyTggX1etcvPI4eXEw+f1kmh8TdTU # yHLBbuZ9kMWG2qtVmpqwtHrL2UwBAKo5MhXa3e6ERoVnEcROadONbo27S8WHqo3T # uRFxAgMBAAGjggHWMIIB0jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA9 # BgNVHSUENjA0BgorBgEEAYI3YQEABggrBgEFBQcDAwYcKwYBBAGCN2GCycz3dYGA # 0Y0Tg469piSB0sq0aDAdBgNVHQ4EFgQURabqFJmKZYz1eHc7Xhaz0j6pNQ4wHwYD # VR0jBBgwFoAUayVB3vtrfP0YgAotf492XapzPbgwZwYDVR0fBGAwXjBcoFqgWIZW # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIw # SUQlMjBWZXJpZmllZCUyMENTJTIwQU9DJTIwQ0ElMjAwNC5jcmwwdAYIKwYBBQUH # AQEEaDBmMGQGCCsGAQUFBzAChlhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp # b3BzL2NlcnRzL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUyMEFPQyUy # MENBJTIwMDQuY3J0MFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNo # dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5o # dG0wDQYJKoZIhvcNAQEMBQADggIBAA7WN0dZBECI5337xXm8N31AzYt/jteKg705 # rwgWajF4r9oGfz7dvPc6zUYpu6D9ZzkSL4nlGAWXb/vlBn8uh48UltXdZWdwIS34 # mLMUdGr4OMKrpCakWAmvip4pS+KP/DMoFX7L5Fs53gghdFU6Z54OnUDHODPPF44H # Zjq4Z/E0Xu2gVTfvQGBwzq6lNjxCXRR1v+XG1v0s+s9f/qPKAh9VDfPLRnb1w1PF # JuhC9GOpwU0b+8P8F6HdzRLoyiVkPIHEoWVxhQNnqk860hJXMCZ+MneMJCOWpRQO # eTzPVvpyMzXny21kKvNlMg1M/hdlTXoauvBbH0ttDopbSJNKTpqwNDRiLXlLubbv # pKIBSvUJGkjJjGvoK+rEG1C2YUJdNePG01Lm6HffemlVxk41akC6QlzUKZIsIm9F # PcyHWVsmH7yQ2aH5gqKQfhC9Y5w6c5WSQ6bqJAixCMTeNtV0NHleXxRZ5qLI+cfC # fX0zzzXaAkYDmwkmiHuu9CTMsCeTP6Oxi8QPoZinWPgktOnFaMknT5gDLWWzpTuc # b3S1Wt41UhuPLP2Jgi+rID9F4laca10Ir2VOMgS5oz0roDTW5wOWUWQl/+2ISqoE # shl+RwZcyi4L571Akr6hjt4uo7rESFzentjz57qj/5r0asX9mQkcZL7WvmqpePrI # RxtltUE3MIIGqDCCBJCgAwIBAgITMwAFT301CUAGUB6KRgAAAAVPfTANBgkqhkiG # 9w0BAQwFADBaMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv # cmF0aW9uMSswKQYDVQQDEyJNaWNyb3NvZnQgSUQgVmVyaWZpZWQgQ1MgQU9DIENB # IDA0MB4XDTI2MDgyNTA4MDQxMVoXDTI2MDgyODA4MDQxMVowaTELMAkGA1UEBhMC # UEwxFzAVBgNVBAgeDgFBAPMAZAB6AGsAaQBlMQ8wDQYDVQQHEwZXaWVsdW4xFzAV # BgNVBAoTDnNvZnQ0cG0gc3Agem9vMRcwFQYDVQQDEw5zb2Z0NHBtIHNwIHpvbzCC # AaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKHBOm4ewXzdEFOeCSFL0T1p # svsrCVHIv294VC2YirsUl4EhAy/OEoaTQBsK4ZVerT0eb3LHI/Ov+FyBQRLJGu66 # 0J/L0109Yx0LOaLEoW86T1WBkO12aMWd1CrY4LfEJZPUnaa21C2Y6ADrQtzyXeJw # AvHKBKSDnDJaKzrqgRr6X6KI0zpTemYPyYm+MbW1DL0ZaHtrKO6KNu1cv7F8Rosq # df7jj2vuK9yMQef1lCdTEAYqpeww8KVCTXdcFRH7VWIrigzNjROZf3hijCMEcIUX # ggJaGToejhZDl0ieoOIQqlnnnE9g+n0L8p/GWaWsAIG7SwObqz2Xo5v5qqExKk8d # SlkFvpPMqohai68VZRrW9Eh2cS1b403fYEsMuKADQOo32/ySYOYNTNxHiiED1eY7 # xiJesn2zock4IF9XrXLzyOHlxMPn9ZJofE3U1MhywW7mfZDFhtqrVZqasLR6y9lM # AQCqOTIV2t3uhEaFZxHETmnTjW6Nu0vFh6qN07kRcQIDAQABo4IB1jCCAdIwDAYD # VR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwPQYDVR0lBDYwNAYKKwYBBAGCN2EB # AAYIKwYBBQUHAwMGHCsGAQQBgjdhgsnM93WBgNGNE4OOvaYkgdLKtGgwHQYDVR0O # BBYEFEWm6hSZimWM9Xh3O14Ws9I+qTUOMB8GA1UdIwQYMBaAFGslQd77a3z9GIAK # LX+Pdl2qcz24MGcGA1UdHwRgMF4wXKBaoFiGVmh0dHA6Ly93d3cubWljcm9zb2Z0 # LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUy # MEFPQyUyMENBJTIwMDQuY3JsMHQGCCsGAQUFBwEBBGgwZjBkBggrBgEFBQcwAoZY # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQl # MjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBBT0MlMjBDQSUyMDA0LmNydDBUBgNVHSAE # TTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQu # Y29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMA0GCSqGSIb3DQEBDAUAA4IC # AQAO1jdHWQRAiOd9+8V5vDd9QM2Lf47XioO9Oa8IFmoxeK/aBn8+3bz3Os1GKbug # /Wc5Ei+J5RgFl2/75QZ/LoePFJbV3WVncCEt+JizFHRq+DjCq6QmpFgJr4qeKUvi # j/wzKBV+y+RbOd4IIXRVOmeeDp1AxzgzzxeOB2Y6uGfxNF7toFU370BgcM6upTY8 # Ql0Udb/lxtb9LPrPX/6jygIfVQ3zy0Z29cNTxSboQvRjqcFNG/vD/Beh3c0S6Mol # ZDyBxKFlcYUDZ6pPOtISVzAmfjJ3jCQjlqUUDnk8z1b6cjM158ttZCrzZTINTP4X # ZU16GrrwWx9LbQ6KW0iTSk6asDQ0Yi15S7m276SiAUr1CRpIyYxr6CvqxBtQtmFC # XTXjxtNS5uh333ppVcZONWpAukJc1CmSLCJvRT3Mh1lbJh+8kNmh+YKikH4QvWOc # OnOVkkOm6iQIsQjE3jbVdDR5Xl8UWeaiyPnHwn19M8812gJGA5sJJoh7rvQkzLAn # kz+jsYvED6GYp1j4JLTpxWjJJ0+YAy1ls6U7nG90tVreNVIbjyz9iYIvqyA/ReJW # nGtdCK9lTjIEuaM9K6A01ucDllFkJf/tiEqqBLIZfkcGXMouC+e9QJK+oY7eLqO6 # xEhc3p7Y8+e6o/+a9GrF/ZkJHGS+1r5qqXj6yEcbZbVBNzCCBygwggUQoAMCAQIC # EzMAAAAWMZKNkgJle5oAAAAAABYwDQYJKoZIhvcNAQEMBQAwYzELMAkGA1UEBhMC # VVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE0MDIGA1UEAxMrTWlj # cm9zb2Z0IElEIFZlcmlmaWVkIENvZGUgU2lnbmluZyBQQ0EgMjAyMTAeFw0yNjAz # MjYxODExMjlaFw0zMTAzMjYxODExMjlaMFoxCzAJBgNVBAYTAlVTMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJRCBW # ZXJpZmllZCBDUyBBT0MgQ0EgMDQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK # AoICAQDKVfrI2+gJMM/0bQ5OVKNdvOASzLbUUMvXuf+Vl7YGuofPaZHVo3gMHF5i # nT+GMSpIcfIZ9qtXU1UG68ry8vNbQtOL4Nm30ifXpqI1+ByiAWLO1YT0WnzG7XPO # uoTeeWsNZv5FmjxCsReBZvyzyzCyXZbu1EQfJxWTH4ebUwtAiW9rqMf9eDj/wYhi # EfNteJV3ZFeibD2ztCHr9JhFdd97XbnCHgQoTIqc02X5xlRKtUGBa++OtHBBjiJ/ # uwBnzTkqu4FjpZjQeJtrmda+ur1CT2jflWIB/ypn7u7V9tvW9wJbJYt/H2EtJ0GO # NWxJZ7TEu8jWPindOO3lzPP7UtzS/mVDV94HucWaltmsra6zSG8BoEJ87IM8QSb7 # vfm/O41FhYkUv89WIj5ES2O4kxyiMSfe95CMivCuYrRP2hKvx7egPMrWgDDBkxML # grKZO9hRNUMm8vk3w5b9SogHOyJVhxyFm8aFXfIxgqDF4S0g4bhbhnzljmSlCLlu # mMZcXFGDjpF2tNoAu3VGFGYtHtTSNVKvZpgB3b4ynaoDkbPf+Wg4523jt4VneasB # gZhC1srZI2NCnCBBfgjLq04pqEKAWEohyW2K29KSkkHvt5VaE1ac3Yt+oyiOzMS5 # 7tXwQDJLGvLg/OXFO0VNvczDndfIfXYExB/ab2PuMSwd5VIBOwIDAQABo4IB3DCC # AdgwDgYDVR0PAQH/BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRr # JUHe+2t8/RiACi1/j3ZdqnM9uDBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEF # BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9z # aXRvcnkuaHRtMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMBIGA1UdEwEB/wQI # MAYBAf8CAQAwHwYDVR0jBBgwFoAU2UEpsA8PY2zvadf1zSmepEhqMOYwcAYDVR0f # BGkwZzBloGOgYYZfaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwv # TWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUyMENvZGUlMjBTaWduaW5nJTIwUENB # JTIwMjAyMS5jcmwwfQYIKwYBBQUHAQEEcTBvMG0GCCsGAQUFBzAChmFodHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElEJTIw # VmVyaWZpZWQlMjBDb2RlJTIwU2lnbmluZyUyMFBDQSUyMDIwMjEuY3J0MA0GCSqG # SIb3DQEBDAUAA4ICAQAG1VBeVHTVRBljlcZD3IiMxwPyMjQyLNaEnVu5mODm2hRB # JfH8GsBLATmrHAc8F47jmk5CnpUPiIguCbw6Z/KVj4Dsoiq228NSLMLewFfGMri7 # uwNGLISC5ccp8vUdADDEIsS2dE+QI9OwkDpv3XuUD7d+hAgcLVcMOl1AsfEZtsZe # nhGvSYUrm/FuLq0BqEGL9GXM5c+Ho9q8o+Vn/S+GWQN2y+gkRO15s0kI05nUpq/d # OD4ri9rgVs6tipEd0YZqGgD+CZNiaZWrDTOQbNPncd2F9qOsUa20miYruoT5PwJA # aI+QQiTE2ZJeMJOkOpzhTUgqVMZwZidEUZKCqudaeQA08WwnkQMfKyHzaU8j48UL # cU4hUwvMsv7fSurOe9GAdRQCPvF8WcSK5oDHe8VVJM4tv6KKCm91HqLx9JamBgRI # 6R2SfY3nu26EGznu0rCg/769z8xWm4PVcC2ZaL6VlKVqFp1NsN8YqMyf5t+bbGVb # 09noFKcJG/UwyGlxRmQBlfeBUQx5/ytlzZzsEnhrJF9fTAfje8j3OdX5lEnePTFQ # LRlvzZFBqUXnIeQKv3fHQjC9m2fo/Z01DII/qp3d8LhGVUW0BCG04fRwHJNH8iqq # CG/qofMv+kym2AxBDnHzNgRjL60JOFiBgiurvLhYQNhB95KWojFA6shQnggkMTCC # B54wggWGoAMCAQICEzMAAAAHh6M0o3uljhwAAAAAAAcwDQYJKoZIhvcNAQEMBQAw # dzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFI # MEYGA1UEAxM/TWljcm9zb2Z0IElkZW50aXR5IFZlcmlmaWNhdGlvbiBSb290IENl # cnRpZmljYXRlIEF1dGhvcml0eSAyMDIwMB4XDTIxMDQwMTIwMDUyMFoXDTM2MDQw # MTIwMTUyMFowYzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw # b3JhdGlvbjE0MDIGA1UEAxMrTWljcm9zb2Z0IElEIFZlcmlmaWVkIENvZGUgU2ln # bmluZyBQQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALLw # wK8ZiCji3VR6TElsaQhVCbRS/3pK+MHrJSj3Zxd3KU3rlfL3qrZilYKJNqztA9OQ # acr1AwoNcHbKBLbsQAhBnIB34zxf52bDpIO3NJlfIaTE/xrweLoQ71lzCHkD7A4A # s1Bs076Iu+mA6cQzsYYH/Cbl1icwQ6C65rU4V9NQhNUwgrx9rGQ//h890Q8JdjLL # w0nV+ayQ2Fbkd242o9kH82RZsH3HEyqjAB5a8+Ae2nPIPc8sZU6ZE7iRrRZywRmr # KDp5+TcmJX9MRff241UaOBs4NmHOyke8oU1TYrkxh+YeHgfWo5tTgkoSMoayqoDp # HOLJs+qG8Tvh8SnifW2Jj3+ii11TS8/FGngEaNAWrbyfNrC69oKpRQXY9bGH6jn9 # NEJv9weFxhTwyvx9OJLXmRGbAUXN1U9nf4lXezky6Uh/cgjkVd6CGUAf0K+Jw+GE # /5VpIVbcNr9rNE50Sbmy/4RTCEGvOq3GhjITbCa4crCzTTHgYYjHs1NbOc6brH+e # KpWLtr+bGecy9CrwQyx7S/BfYJ+ozst7+yZtG2wR461uckFu0t+gCwLdN0A6cFtS # RtR8bvxVFyWwTtgMMFRuBa3vmUOTnfKLsLefRaQcVTgRnzeLzdpt32cdYKp+dhr2 # ogc+qM6K4CBI5/j4VFyC4QFeUP2YAidLtvpXRRo3AgMBAAGjggI1MIICMTAOBgNV # HQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFNlBKbAPD2Ns # 72nX9c0pnqRIajDmMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNo # dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5o # dG0wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAf # BgNVHSMEGDAWgBTIftJqhSobyhmYBAcnz1AQT2ioojCBhAYDVR0fBH0wezB5oHeg # dYZzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0 # JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUl # MjBBdXRob3JpdHklMjAyMDIwLmNybDCBwwYIKwYBBQUHAQEEgbYwgbMwgYEGCCsG # AQUFBzAChnVodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01p # Y3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRp # ZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcnQwLQYIKwYBBQUHMAGGIWh0dHA6 # Ly9vbmVvY3NwLm1pY3Jvc29mdC5jb20vb2NzcDANBgkqhkiG9w0BAQwFAAOCAgEA # fyUqnv7Uq+rdZgrbVyNMul5skONbhls5fccPlmIbzi+OwVdPQ4H55v7VOInnmezQ # EeW4LqK0wja+fBznANbXLB0KrdMCbHQpbLvG6UA/Xv2pfpVIE1CRFfNF4XKO8XYE # a3oW8oVH+KZHgIQRIwAbyFKQ9iyj4aOWeAzwk+f9E5StNp5T8FG7/VEURIVWArbA # zPt9ThVN3w1fAZkF7+YU9kbq1bCR2YD+MtunSQ1Rft6XG7b4e0ejRA7mB2IoX5hN # h3UEauY0byxNRG+fT2MCEhQl9g2i2fs6VOG19CNep7SquKaBjhWmirYyANb0RJSL # WjinMLXNOAga10n8i9jqeprzSMU5ODmrMCJE12xS/NWShg/tuLjAsKP6SzYZ+1Ry # 358ZTFcx0FS/mx2vSoU8s8HRvy+rnXqyUJ9HBqS0DErVLjQwK8VtsBdekBmdTbQV # oCgPCqr+PDPB3xajYnzevs7eidBsM71PINK2BoE2UfMwxCCX3mccFgx6UsQeRSdV # VVNSyALQe6PT12418xon2iDGE81OGCreLzDcMAZnrUAx4XQLUz6ZTl65yPUiOh3k # 7Yww94lDf+8oG2oZmDh5O1Qe38E+M3vhKwmzIeoB1dVLlz4i3IpaDcR+iuGjH2Td # aC1ZOmBXiCRKJLj4DT2uhJ04ji+tHD6n58vhavFIrmcxghqRMIIajQIBATBxMFox # CzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzAp # BgNVBAMTIk1pY3Jvc29mdCBJRCBWZXJpZmllZCBDUyBBT0MgQ0EgMDQCEzMABU99 # NQlABlAeikYAAAAFT30wDQYJYIZIAWUDBAIBBQCgXjAQBgorBgEEAYI3AgEMMQIw # ADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAvBgkqhkiG9w0BCQQxIgQgJZIc # dwinKwyOEn5DuvPixAsNwYFyCNQxDHg9fQxMaJUwDQYJKoZIhvcNAQEBBQAEggGA # Axs7jHb/EmOR85HgD+O4aUcjsltJbFS6h7nMUXE09+5k5vI5lHXsYy8od+2qGbn8 # fwHCWhQDjuE5gRRoSubYwoto6Tm9YklaMU5x7lBhZd37tHNAYE2bcvkHJIwZfBpA # yTGVxP6MWkMfjZNrrhwzrBJ1+Y7n12wSWYP1hNEToqCXLLSUTF4LlZayovDZ+G9M # luhW+2TIMuQa2xgq07yTyZjHoEgg088Lcyp5x4s29I39WqHTG+H13jgG9QJKdLbp # UOSPdx3GqqHcQ9UnWOGMo/8UvF9OzjX9hh8lquXXlQe64H00J48Z7BC/a7dNPG7P # cALm/0ID4FJSjRcqBHhjkp0I9w50VeKt+HttbBwCpbkiZsu53IT4XLpO89Pn8FzH # VmLYN3xolDZaHM0LPcOMGkZ/6D8Mm54L4aag/o5DixHmpwGQhgEUwlZmBlYHuVDz # OCpGl/8ltD+xOAmOfCn6MUsLOTH3EOXJMjd19dkBLMYi+DAIZ34gaI67PfNRi2Zd # oYIYETCCGA0GCisGAQQBgjcDAwExghf9MIIX+QYJKoZIhvcNAQcCoIIX6jCCF+YC # AQMxDzANBglghkgBZQMEAgEFADCCAWIGCyqGSIb3DQEJEAEEoIIBUQSCAU0wggFJ # AgEBBgorBgEEAYRZCgMBMDEwDQYJYIZIAWUDBAIBBQAEIBlWEuYjrx98a/TxGdzc # DwGq9oTRLeMm0v1FylJXRieRAgZqhI0d4skYEzIwMjYwODI2MTIxMDM5LjcxM1ow # BIACAfSggeGkgd4wgdsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u # MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp # b24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAlBgNV # BAsTHm5TaGllbGQgVFNTIEVTTjo3ODAwLTA1RTAtRDk0NzE1MDMGA1UEAxMsTWlj # cm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHmggg8hMIIH # gjCCBWqgAwIBAgITMwAAAAXlzw//Zi7JhwAAAAAABTANBgkqhkiG9w0BAQwFADB3 # MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMUgw # RgYDVQQDEz9NaWNyb3NvZnQgSWRlbnRpdHkgVmVyaWZpY2F0aW9uIFJvb3QgQ2Vy # dGlmaWNhdGUgQXV0aG9yaXR5IDIwMjAwHhcNMjAxMTE5MjAzMjMxWhcNMzUxMTE5 # MjA0MjMxWjBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv # cmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBp # bmcgQ0EgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ5851Jj # /eDFnwV9Y7UGIqMcHtfnlzPREwW9ZUZHd5HBXXBvf7KrQ5cMSqFSHGqg2/qJhYqO # QxwuEQXG8kB41wsDJP5d0zmLYKAY8Zxv3lYkuLDsfMuIEqvGYOPURAH+Ybl4SJEE # Snt0MbPEoKdNihwM5xGv0rGofJ1qOYSTNcc55EbBT7uq3wx3mXhtVmtcCEr5ZKTk # KKE1CxZvNPWdGWJUPC6e4uRfWHIhZcgCsJ+sozf5EeH5KrlFnxpjKKTavwfFP6Xa # GZGWUG8TZaiTogRoAlqcevbiqioUz1Yt4FRK53P6ovnUfANjIgM9JDdJ4e0qiDRm # 5sOTiEQtBLGd9Vhd1MadxoGcHrRCsS5rO9yhv2fjJHrmlQ0EIXmp4DhDBieKUGR+ # eZ4CNE3ctW4uvSDQVeSp9h1SaPV8UWEfyTxgGjOsRpeexIveR1MPTVf7gt8hY64X # NPO6iyUGsEgt8c2PxF87E+CO7A28TpjNq5eLiiunhKbq0XbjkNoU5JhtYUrlmAbp # xRjb9tSreDdtACpm3rkpxp7AQndnI0Shu/fk1/rE3oWsDqMX3jjv40e8KN5YsJBn # czyWB4JyeeFMW3JBfdeAKhzohFe8U5w9WuvcP1E8cIxLoKSDzCCBOu0hWdjzKNu8 # Y5SwB1lt5dQhABYyzR3dxEO/T1K/BVF3rV69AgMBAAGjggIbMIICFzAOBgNVHQ8B # Af8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGtpKDo1L0hjQM97 # 2K9J6T7ZPdshMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNodHRw # Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0w # EwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEw # DwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIftJqhSobyhmYBAcnz1AQT2io # ojCBhAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br # aW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBS # b290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNybDCBlAYIKwYB # BQUHAQEEgYcwgYQwgYEGCCsGAQUFBzAChnVodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0 # aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcnQw # DQYJKoZIhvcNAQEMBQADggIBAF+Idsd+bbVaFXXnTHho+k7h2ESZJRWluLE0Oa/p # O+4ge/XEizXvhs0Y7+KVYyb4nHlugBesnFqBGEdC2IWmtKMyS1OWIviwpnK3aL5J # edwzbeBF7POyg6IGG/XhhJ3UqWeWTO+Czb1c2NP5zyEh89F72u9UIw+IfvM9lzDm # c2O2END7MPnrcjWdQnrLn1Ntday7JSyrDvBdmgbNnCKNZPmhzoa8PccOiQljjTW6 # GePe5sGFuRHzdFt8y+bN2neF7Zu8hTO1I64XNGqst8S+w+RUdie8fXC1jKu3m9KG # IqF4aldrYBamyh3g4nJPj/LR2CBaLyD+2BuGZCVmoNR/dSpRCxlot0i79dKOChmo # ONqbMI8m04uLaEHAv4qwKHQ1vBzbV/nG89LDKbRSSvijmwJwxRxLLpMQ/u4xXxFf # R4f/gksSkbJp7oqLwliDm/h+w0aJ/U5ccnYhYb7vPKNMN+SZDWycU5ODIRfyoGl5 # 9BsXR/HpRGtiJquOYGmvA/pk5vC1lcnbeMrcWD/26ozePQ/TWfNXKBOmkFpvPE8C # H+EeGGWzqTCjdAsno2jzTeNSxlx3glDGJgcdz5D/AAxw9Sdgq/+rY7jjgs7X6fqP # TXPmaCAJKVHAP19oEjJIBwD1LyHbaEgBxFCogYSOiUIr0Xqcr1nJfiWG2GwYe6Zo # AF1bMIIHlzCCBX+gAwIBAgITMwAAAFck05XgounJMQAAAAAAVzANBgkqhkiG9w0B # AQwFADBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcg # Q0EgMjAyMDAeFw0yNTEwMjMyMDQ2NTNaFw0yNjEwMjIyMDQ2NTNaMIHbMQswCQYD # VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe # MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3Nv # ZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046 # NzgwMC0wNUUwLUQ5NDcxNTAzBgNVBAMTLE1pY3Jvc29mdCBQdWJsaWMgUlNBIFRp # bWUgU3RhbXBpbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC # CgKCAgEAsWylCpMIfbizJLY1kPXO2cmX2HRWvRbAmeKSZ5ex7/jCymdV7Eap+Ic2 # iqRtWDkKKe5gL6JV80wtn5C2qHJLPxUYFKNG3UkHkAI21MoCN+YWnhT8K/YuPib6 # +6970jdbeFKIiZMWwd5hnpX9J3jeteuEdXbp/DfFBK15JuD3JOzWuF2suQCPgqYj # QPk/gpq+3KCKtXJRbXSCSJ9YtITU2IHwmfdE7l2PfZ154w041po+fDeTj0gJOzcV # /Jv56Q0M+w19jAKo/I5PEzrLV1IPQnmP4or1X4RbJXk8ONXyOOfXOxK2VLpNxgkl # K1yAezbFP2uzqihaXkW1h9GQLGENKESnezwgdRaLNNaYtm8AT/pZHYJ35mZVqkZd # MIckpQHJk/F1fSLyDKeKtH4TC4cc3ESKUMgItq07ZZm74JCsfhmrQ1ijVNDi1Sln # +QBamgC7WviZbkQnceQRq9DY+6hANwOrasAZUiVr2kPuj1jHDOXzUG4O9QTK70P/ # oXSqZAN1oTv3UfF8JTGmAxg+l1ZPOz50MY96HBDw/3bI/wBGNvLk6fLVnrxGN5B5 # unF/lYvjjWbIUdyBPVQnPOKXu08SRHbY19M1HoWX6PNZv+vzSeqVeWWHKdKjC3Gj # VjbbGpi+JLbiyaKRSwEqo49tJLvu69cQ7dWsbksai4TURnVj2mMCAwEAAaOCAcsw # ggHHMB0GA1UdDgQWBBSOg8leLTUOAglIZ+bjXpiD7RKSpzAfBgNVHSMEGDAWgBRr # aSg6NS9IY0DPe9ivSek+2T3bITBsBgNVHR8EZTBjMGGgX6BdhltodHRwOi8vd3d3 # Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBQdWJsaWMlMjBS # U0ElMjBUaW1lc3RhbXBpbmclMjBDQSUyMDIwMjAuY3JsMHkGCCsGAQUFBwEBBG0w # azBpBggrBgEFBQcwAoZdaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9j # ZXJ0cy9NaWNyb3NvZnQlMjBQdWJsaWMlMjBSU0ElMjBUaW1lc3RhbXBpbmclMjBD # QSUyMDIwMjAuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH # AwgwDgYDVR0PAQH/BAQDAgeAMGYGA1UdIARfMF0wUQYMKwYBBAGCN0yDfQEBMEEw # PwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9j # cy9SZXBvc2l0b3J5Lmh0bTAIBgZngQwBBAIwDQYJKoZIhvcNAQEMBQADggIBAHJ1 # wHY86Zk5SUBDPY25d/u9YJVaaNa71uxjX4cyO/XJ4uPENCSOwkRTnNogPLxTD0Fg # 3z4TFf/2T/0IFSxdtWVtTjhzrn+WLInzeRawUhTCFVrPBJKEWVshm+Ig7/nB7JbJ # N88+ltImBbL5kT1StBLfG6UksAcDbNSQww90CUXhGueBxlnSvjkAX1ohiN16y1bB # 2s0rvQx8Csepl2CuBefTfDrMGzW/tzNx5YaK2D8OWweqTWZcGlJO4YjZNI83cTrQ # ghfHl/8AXOHj8cWL3wEFltQQs2xeRYAb3Kdnl7oIWKKXWaBYJY5P3QPsiC+DTMp7 # ejdYKTrb396f3gr+wL/Ms5/Z3vIWZPJJv18qNw40fUNveRnwzMQnx8dM2bGuXXQZ # 5y7P8aXT4HJMo349qZtn4XQwiUE/DDp++MUL0kgjvd/Deo7Xr371PFPPYb4TboZh # jV1x9+wCHDoOpNCBt+VuXU78ytJdKzQ1Jv2cEP1F9H9/wSLsMDUvWME7u9mGElOP # DZPMVr8AuBEuLdbTSEdaLwsZBplzxLBcgxhZ/Cs30yBhuE3QhqT1YDZ2pa56RexP # A2SasPcToT6gJgJ6E06BmZ2zQTNvWOjs5XQqHbYuXcoeDcwe2UaC7EDOGD8GmLE9 # LiqtQsuQCM7v7I2xR+sPZT2Ax/85HjIkM+3MzTK1MYIHQzCCBz8CAQEweDBhMQsw # CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYD # VQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcgQ0EgMjAyMAIT # MwAAAFck05XgounJMQAAAAAAVzANBglghkgBZQMEAgEFAKCCBJwwEQYLKoZIhvcN # AQkQAg8xAgUAMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0B # CQUxDxcNMjYwODI2MTIxMDM5WjAvBgkqhkiG9w0BCQQxIgQgo+KFTPGgFasaT/y6 # SAX9sEjGafHeV6fxkqHdHlStPu8wgbkGCyqGSIb3DQEJEAIvMYGpMIGmMIGjMIGg # BCD1PJ9ktQVuTGWIbKLO4f1VUOlUU29ARCEpDZmFTHjbUjB8MGWkYzBhMQswCQYD # VQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQD # EylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcgQ0EgMjAyMAITMwAA # AFck05XgounJMQAAAAAAVzCCA14GCyqGSIb3DQEJEAISMYIDTTCCA0mhggNFMIID # QTCCAikCAQEwggEJoYHhpIHeMIHbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz # aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv # cnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25z # MScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046NzgwMC0wNUUwLUQ5NDcxNTAzBgNV # BAMTLE1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWUgU3RhbXBpbmcgQXV0aG9yaXR5 # oiMKAQEwBwYFKw4DAhoDFQD9LzE5nEJRAUE2Ss3xaKKPXHnLw6BnMGWkYzBhMQsw # CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYD # VQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcgQ0EgMjAyMDAN # BgkqhkiG9w0BAQsFAAIFAO447tMwIhgPMjAyNjA4MjYwNDQ5MjNaGA8yMDI2MDgy # NzA0NDkyM1owdDA6BgorBgEEAYRZCgQBMSwwKjAKAgUA7jju0wIBADAHAgEAAgIC # ETAHAgEAAgISbzAKAgUA7jpAUwIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEE # AYRZCgMCoAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBCwUAA4IB # AQC/xTMB2Ekm0hqKqZ2Y66oMrh2PZODiFkPmrQn7K0x5jkuZA1RuM/8kggG3jokV # WJTsuoQcGE3LSCBRwtOodT3cWCsLlC24WGY/l7+AtqCf1z6VRFPUF203FwBH1n/Z # gON6OchC7QU5aacyHRvN2tC3SZApxa7QvD3ZcauA1uQEUaTnVugasX9wTaSGRPPG # RBTQvS5mPDrKely9FuNt8QG7X/o6nkpRHZltAljXoNVwlwyA4kGJ3/ZE8spfU15X # wb0lcRCah1kKBQVEHv8VRbqqyc4KoBACwDM57GwuSAs0AeiaABAJHQVMVP/keJpw # 2YLs3jWw7Q1HvqhjS1r0mAX5MA0GCSqGSIb3DQEBAQUABIICAIFuqXRJTZANmExJ # LoLU7Im+DGlVXIL0pMQ7Wp4NMSwKCRx8f/mf2MjMhcSpL9Y79h7wCfiw9eZ9LXTZ # jj+JPX/7OITL6kq6If8yhBsD3X8dNWCBWKqQB/L/S9oPxRnqrOJFp/ZsAADa7kNm # YcDIwylcbnIYfSssrD+fV4zAsphfA4iFqfxP1VRmnFyOAjGJcnHvGcR8nhdIyeRo # MtKNhqru396uP1N0IGaJ5V8jR0bbauS7knOp+kAa9E/7lE05PvgpxhWunNgXXj2R # EyMghuzEb9vvgOY5YAzVxz+zQvFdsTuFoi4XW+qzPoGREaQByMDAHDxCxPUj9neH # 9zhmh6caeSrFlSPwrn/+AOrulKy7cZnLzcrsjH3XvM9zSdozL7tS1JbLFBHxTMR1 # xxs0EO6Z9d6yUgCYy4M+3GlJ27cvbl+wFhZ0Pwy1pmrSrVYBXz+6N/gmcZ+2yQhg # vW5MTGIAyM2jUjZmqGzvUeHAZfvldm2O+xq7YnV7VKZQ8mXreKXBY7LvgjmDhUIG # q7q9wKyCUE0PEiuO28nc6y6Dn5Z941D/+Lab4kXPpEe8XQfA5fh/OX36hd2h1QRh # GP4IR4XfP0fMInksyzxIgizw2q2H6SpzoywAMuqn/al+cumE7vUDApit2s/hNiQF # c30S9R9H5Q6USPfBKFNu8FAu+AV2 # SIG # End signature block |