ComplianceDiagnosticIB.psm1
Import-Module "$PSScriptRoot\ComplianceDiagnosticUtils.psm1" #region IB function Initialize-IB{ $global:IBControlVariables.fileData = $null } function Confirm-IBCommandsPresent { # Check if MIP Label Commands are present $command = Get-Command Get-Informationbarrierpolicy -ErrorAction SilentlyContinue if ($command -eq $null) { return $false } $command = Get-Command Get-Organizationsegment -ErrorAction SilentlyContinue if ($command -eq $null) { return $false } $command = Get-Command Get-InformationBarrierPoliciesApplicationStatus -ErrorAction SilentlyContinue if ($command -eq $null) { return $false } return $true } function Get-IBTabContent($TabObject){ [Parameter(Mandatory=$true)] [Windows.Controls.TabItem] $TabObject # Collect diagnostic data from user $global:IBControlVariables.IBSupportDataTabContent = New-Object Windows.Controls.StackPanel $global:IBControlVariables.IBSupportDataTabContent.HorizontalAlignment = [Windows.HorizontalAlignment]::Center $IBDiagButton = Get-Button -ButtonName "Information Barrier" -Margin '10,50,10,10' -width 200 -HorizontalAlignment "Left" GetGlobalIBPol $IBPanelGrid = New-Object Windows.Controls.Grid $IBTopTabControl = Get-TopTabControl $IBPanelGrid.Children.Add($IBTopTabControl.TopTabControl) > $null $global:IBControlVariables.IBOutput = New-Object Windows.Controls.StackPanel $IBoutputPanelTemplate = Get-TemplateGrid $IBoutputPanelTemplate.Column1.Children.Add($IBDiagButton) > $null $blueColor = [System.Windows.Media.Color]::FromRgb(63, 119, 206) $supportDataHeader = Show-Text -Text "IB Support Data Template" -Color $blueColor -fontSize 20 $global:IBControlVariables.IBSupportDataTabContent.Children.Add($supportDataHeader) > $null # Define Gather Support data in a table format and pinning all the Controlds to Table Grid$tableGrid = New-Object System.Windows.Controls.Grid $tableGrid = Get-Table -columns 4 -rows 7 #Row 0 $ImpactedUserSMTP = Show-Text -Text "Affected user email ID" -IsBold $false -margin "0,0,10,0" -VerticalAlignment "Center" -HorizontalAlignment "Left" Add-ControlToTableAt -TableObj $tableGrid -row 0 -column 1 -Control $ImpactedUserSMTP $global:IBControlVariables.ImpactedUserTextBox = Get-TextBox -Width 400 -Margin "0,0,10,0" -HorizontalAlignment "Left" Add-ControlToTableAt -TableObj $tableGrid -row 0 -column 2 -Control $global:IBControlVariables.ImpactedUserTextBox #Row 1 $ImpactedDomain = Show-Text -Text "Enter Domain Info (Ex: Contoso.com)" -IsBold $false -margin "0,0,10,0" -VerticalAlignment "Center" -HorizontalAlignment "Left" Add-ControlToTableAt -TableObj $tableGrid -row 1 -column 1 -Control $ImpactedDomain $global:IBControlVariables.ImpactedDomainTextBox = Get-TextBox -Width 400 -Margin "0,0,10,0" -HorizontalAlignment "Left" Add-ControlToTableAt -TableObj $tableGrid -row 1 -column 2 -Control $global:IBControlVariables.ImpactedDomainTextBox #Row 2 $dateTimeLabel = Show-Text -Text "Date & Time of issue (UTC)" -IsBold $false -margin "0,0,10,0" -HorizontalAlignment "Left" Add-ControlToTableAt -TableObj $tableGrid -row 2 -column 1 -Control $dateTimeLabel $dateTimeButton = Get-Button -ButtonName "Select date & Time" -Margin "0,0,10,0" -HorizontalAlignment "Left" -height 30 -width 220 Add-ControlToTableAt -TableObj $tableGrid -row 2 -column 2 -Control $dateTimeButton $global:ContextScopeVariables["IBDateTimeLabel"] = Show-Text -Text "UTC Date Time" -IsBold $false -margin "0,0,10,0" -HorizontalAlignment "Left" Add-ControlToTableAt -TableObj $tableGrid -row 2 -column 3 -Control $global:ContextScopeVariables["IBDateTimeLabel"] $dateTimeButton.Add_Click({ $global:ContextScopeVariables.DateTimeProp = "IBDateTime" $global:ContextScopeVariables["IBDateTime"] = "" Get-DateTimePickerDialog }) #Row 3 $IBPolicy = Show-Text -Text "IB Policy" -IsBold $false -margin "0,0,10,0" -HorizontalAlignment "Left" Add-ControlToTableAt -TableObj $tableGrid -row 3 -column 1 -Control $IBPolicy $global:IBControlVariables.IBPolicycombo = Get-ComboBox -Margin "0,5,10,5" -Width 400 -HorizontalAlignment "Left" $global:IBControlVariables.IBPolicycombo.ItemsSource = $global:ContextScopeVariables.IBPolicyDropDown Add-ControlToTableAt -TableObj $tableGrid -row 3 -column 2 -Control $global:IBControlVariables.IBPolicycombo #row 4 $IBSegment = Show-Text -Text "IB segment" -IsBold $false -margin "0,0,10,0" -VerticalAlignment "Center" -HorizontalAlignment "Left" Add-ControlToTableAt -TableObj $tableGrid -row 4 -column 1 -Control $IBSegment $global:IBControlVariables.IBSegment = Get-ComboBox -Margin "0,5,10,5" -Width 400 -HorizontalAlignment "Left" $global:IBControlVariables.IBSegment.ItemsSource = $global:ContextScopeVariables.SegmentsDropDown Add-ControlToTableAt -TableObj $tableGrid -row 4 -column 2 -Control $global:IBControlVariables.IBSegment #row 5 $global:IBControlVariables.BrowseAttachLabel = Show-Text -Text "Screenshot/ Fiddler /HAR / screen recording/ Other info?" -IsBold $false -margin "0,0,10,0" -HorizontalAlignment "Left" Add-ControlToTableAt -TableObj $tableGrid -row 5 -column 1 -Control $global:IBControlVariables.BrowseAttachLabel $global:IBControlVariables.IBBrowseAttachButton = Get-FileButton ` -GlobalScopeName "IBControlVariables" ` -GlobalVariableName "BrowsedFileLabel" ` -GlobalFileListName "fileData" ` -ButtonName "Browse Supporting Files" ` -Margin "0,0,10,0" ` -HorizontalAlignment "Left" ` -height 30 ` -width 220 ` -VerticalAlignment "Center" Add-ControlToTableAt -TableObj $tableGrid -row 5 -column 2 -Control $global:IBControlVariables.IBBrowseAttachButton $global:IBControlVariables.BrowsedFileLabel = Show-Text -Text "Attached Files" -IsBold $false -margin "0,0,10,0" -HorizontalAlignment "Left" $FilesScrollViewer = New-Object Windows.Controls.ScrollViewer $FilesScrollViewer.VerticalScrollBarVisibility = [Windows.Controls.ScrollBarVisibility]::Auto $FilesScrollViewer.HorizontalScrollBarVisibility = [Windows.Controls.ScrollBarVisibility]::Auto $FilesScrollViewer.Content = $global:IBControlVariables.BrowsedFileLabel Add-ControlToTableAt -TableObj $tableGrid -row 6 -column 2 -Control $FilesScrollViewer $tableGrid.Margin = New-Object System.Windows.Thickness(10,30,10,10) $tableGrid.HorizontalAlignment = "Center" $global:IBControlVariables.IBSupportDataTabContent.Children.Add($tableGrid) > $null $IBoutputPanelTemplate.Column2.Children.Add($global:IBControlVariables.IBSupportDataTabContent ) > $null $DiagscrollViewer = New-Object Windows.Controls.ScrollViewer $DiagscrollViewer.VerticalScrollBarVisibility = [Windows.Controls.ScrollBarVisibility]::Auto $DiagscrollViewer.HorizontalScrollBarVisibility = [Windows.Controls.ScrollBarVisibility]::Auto $DiagscrollViewer.Content = $IBoutputPanelTemplate.Grid $IBTopTabControl.GatherSupportDataTabItem.Content = $DiagscrollViewer $global:IBControlVariables.IBSupportDataTabContent.Visibility = "hidden" $IBDiagButton.Add_Click({ Initialize-IB $global:IBControlVariables.IBSupportDataTabContent.Visibility = "visible" }) $IBExport = Get-Button -ButtonName "Export Support Data" $IBExport.Margin = New-Object System.Windows.Thickness(10,50,10,10) $global:IBControlVariables.IBSupportDataTabContent.Children.Add($IBExport) > $null $IBExport.Add_Click({ # Create a new SaveFileDialog object $Folder = Get-ExportFolder("ExportedIBData") if (!$Folder) { return } $filePath = $Folder + "\"+"IBExport.xmla" $supportData=@{} $supportData["ImpactedUser"] = $global:IBControlVariables.ImpactedUserTextBox.Text $supportData["ImpactedDomain"] = $global:IBControlVariables.ImpactedDomainTextBox.Text $supportData["IBPolicy"] = $global:IBControlVariables.IBPolicycombo.Text $supportData["IBSegment"] = $global:IBControlVariables.IBSegment.Text $supportData["AllIBPolicy"] = $global:ContextScopeVariables.IBPolicy $supportData["AllIBSegment"] = $global:ContextScopeVariables.Segments $supportData["PolicyApplication"]= $global:ContextScopeVariables.IBAppStatus $supportData["Forests"] = Get-ForestInfo $supportData["DateTime"] = $global:ContextScopeVariables["IBDateTime"] try { # Copy the files to the destination folder $supportData["SupportingFiles"] = Get-FileName($global:IBControlVariables.fileData) foreach ($file in $global:IBControlVariables.fileData) { # $destinationFile = Join-Path $zipFilePath (Split-Path $file -Leaf) Copy-Item $file $Folder -Force } # Save the object as an XMLA file $supportData | Export-Clixml -Path $filePath # Zip the destination folder CleanAndShowFolder -Folder $Folder -supportData $supportData -filePath $filePath } catch { [System.Windows.MessageBox]::Show("Failed to create zip file. Error message: $_", "Error", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error) } }) $TabObject.Content = $IBPanelGrid } function GetGlobalIBPol { [System.Windows.Input.Mouse]::SetCursor([System.Windows.Input.Cursors]::Wait) Write-Host "Getting IB segments in your organization." $global:ContextScopeVariables.Segments = Get-Organizationsegment if ($global:ContextScopeVariables.Segments -ne $null) { if ($global:ContextScopeVariables.Segments.GetType().Name -eq "PSObject") { $global:ContextScopeVariables.SegmentsDropDown = @( $global:ContextScopeVariables.Segments.Name ) } else { $global:ContextScopeVariables.SegmentsDropDown = $global:ContextScopeVariables.Segments.Name } } Write-Host "Getting IB policies in your organization." $global:ContextScopeVariables.IBPolicy=Get-Informationbarrierpolicy if ($global:ContextScopeVariables.Segments -ne $null) { if ($global:ContextScopeVariables.IBPolicy.GetType().Name -eq "PSObject") { $global:ContextScopeVariables.IBPolicyDropDown = @( $global:ContextScopeVariables.IBPolicy.Name ) } else { $global:ContextScopeVariables.IBPolicyDropDown = $global:ContextScopeVariables.IBPolicy.Name } } Write-Host "Getting IB Application Status for your organization." $global:ContextScopeVariables.IBAppStatus=Get-InformationBarrierPoliciesApplicationStatus -ErrorAction SilentlyContinue [System.Windows.Input.Mouse]::SetCursor([System.Windows.Input.Cursors]::Arrow) } #endregion IB Export-ModuleMember -Function * # SIG # Begin signature block # MIIn0AYJKoZIhvcNAQcCoIInwTCCJ70CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDXxV7NS9+EYyaO # 6lYiMIbzNEa/+mq8kTppH8vyLdTG/KCCDYUwggYDMIID66ADAgECAhMzAAADri01 # UchTj1UdAAAAAAOuMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p # bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwODU5WhcNMjQxMTE0MTkwODU5WjB0MQsw # CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u # ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB # AQD0IPymNjfDEKg+YyE6SjDvJwKW1+pieqTjAY0CnOHZ1Nj5irGjNZPMlQ4HfxXG # yAVCZcEWE4x2sZgam872R1s0+TAelOtbqFmoW4suJHAYoTHhkznNVKpscm5fZ899 # QnReZv5WtWwbD8HAFXbPPStW2JKCqPcZ54Y6wbuWV9bKtKPImqbkMcTejTgEAj82 # 6GQc6/Th66Koka8cUIvz59e/IP04DGrh9wkq2jIFvQ8EDegw1B4KyJTIs76+hmpV # M5SwBZjRs3liOQrierkNVo11WuujB3kBf2CbPoP9MlOyyezqkMIbTRj4OHeKlamd # WaSFhwHLJRIQpfc8sLwOSIBBAgMBAAGjggGCMIIBfjAfBgNVHSUEGDAWBgorBgEE # AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhx/vdKmXhwc4WiWXbsf0I53h8T8w # VAYDVR0RBE0wS6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh # dGlvbnMgTGltaXRlZDEWMBQGA1UEBRMNMjMwMDEyKzUwMTgzNjAfBgNVHSMEGDAW # gBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIw # MTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDov # L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDEx # XzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIB # AGrJYDUS7s8o0yNprGXRXuAnRcHKxSjFmW4wclcUTYsQZkhnbMwthWM6cAYb/h2W # 5GNKtlmj/y/CThe3y/o0EH2h+jwfU/9eJ0fK1ZO/2WD0xi777qU+a7l8KjMPdwjY # 0tk9bYEGEZfYPRHy1AGPQVuZlG4i5ymJDsMrcIcqV8pxzsw/yk/O4y/nlOjHz4oV # APU0br5t9tgD8E08GSDi3I6H57Ftod9w26h0MlQiOr10Xqhr5iPLS7SlQwj8HW37 # ybqsmjQpKhmWul6xiXSNGGm36GarHy4Q1egYlxhlUnk3ZKSr3QtWIo1GGL03hT57 # xzjL25fKiZQX/q+II8nuG5M0Qmjvl6Egltr4hZ3e3FQRzRHfLoNPq3ELpxbWdH8t # Nuj0j/x9Crnfwbki8n57mJKI5JVWRWTSLmbTcDDLkTZlJLg9V1BIJwXGY3i2kR9i # 5HsADL8YlW0gMWVSlKB1eiSlK6LmFi0rVH16dde+j5T/EaQtFz6qngN7d1lvO7uk # 6rtX+MLKG4LDRsQgBTi6sIYiKntMjoYFHMPvI/OMUip5ljtLitVbkFGfagSqmbxK # 7rJMhC8wiTzHanBg1Rrbff1niBbnFbbV4UDmYumjs1FIpFCazk6AADXxoKCo5TsO # zSHqr9gHgGYQC2hMyX9MGLIpowYCURx3L7kUiGbOiMwaMIIHejCCBWKgAwIBAgIK # YQ6Q0gAAAAAAAzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV # BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv # c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm # aWNhdGUgQXV0aG9yaXR5IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEw # OTA5WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE # BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD # VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG # 9w0BAQEFAAOCAg8AMIICCgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+la # UKq4BjgaBEm6f8MMHt03a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc # 6Whe0t+bU7IKLMOv2akrrnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4D # dato88tt8zpcoRb0RrrgOGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+ # lD3v++MrWhAfTVYoonpy4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nk # kDstrjNYxbc+/jLTswM9sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6 # A4aN91/w0FK/jJSHvMAhdCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmd # X4jiJV3TIUs+UsS1Vz8kA/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL # 5zmhD+kjSbwYuER8ReTBw3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zd # sGbiwZeBe+3W7UvnSSmnEyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3 # T8HhhUSJxAlMxdSlQy90lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS # 4NaIjAsCAwEAAaOCAe0wggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRI # bmTlUAXTgqoXNzcitW2oynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAL # BgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBD # uRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jv # c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf # MDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3 # dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf # MDNfMjIuY3J0MIGfBgNVHSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEF # BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1h # cnljcHMuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkA # YwB5AF8AcwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn # 8oalmOBUeRou09h0ZyKbC5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7 # v0epo/Np22O/IjWll11lhJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0b # pdS1HXeUOeLpZMlEPXh6I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/ # KmtYSWMfCWluWpiW5IP0wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvy # CInWH8MyGOLwxS3OW560STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBp # mLJZiWhub6e3dMNABQamASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJi # hsMdYzaXht/a8/jyFqGaJ+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYb # BL7fQccOKO7eZS/sl/ahXJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbS # oqKfenoi+kiVH6v7RyOA9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sL # gOppO6/8MO0ETI7f33VtY5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtX # cVZOSEXAQsmbdlsKgEhr/Xmfwb1tbWrJUnMTDXpQzTGCGaEwghmdAgEBMIGVMH4x # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p # Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTECEzMAAAOuLTVRyFOPVR0AAAAA # A64wDQYJYIZIAWUDBAIBBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw # HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIKuz # HXn94fkgHShnibc4PEEi45TN3CoKpG4PaFxrA99jMEQGCisGAQQBgjcCAQwxNjA0 # oBSAEgBNAGkAYwByAG8AcwBvAGYAdKEcgBpodHRwczovL3d3dy5taWNyb3NvZnQu # Y29tIDANBgkqhkiG9w0BAQEFAASCAQAdPXPCg4wpk6GMrYtTPqX3He/FKPRS7seK # AkX1ddu8UeKu/hV0ZTiIo9ME5ooES5IqLT+f73hhgL8l6IAcC7JDJj6sm2xdCRqu # eChY3rZm2S8ft3UL3pKhcf7iv7MIhD+Rydh3X5pL6PzMPPhc5/ProPgEi6NnYxG/ # kpOrNbuaIyY20RNiIuKbX/SsLxCGKwMiiwbQa3bgqM0E6pNWxGeEp30K8gpHaXKr # fJ0brmriLdUhmBbyzNGGSLIbvjCUxtftlLJBKQkAk8Cc6db7gZk7hHxrtWD2HPPl # vLB72yHIoh9ua1dqqewTBc+CUl5nQF0GuHpVVI2H2Xy0Q4c2R12yoYIXKTCCFyUG # CisGAQQBgjcDAwExghcVMIIXEQYJKoZIhvcNAQcCoIIXAjCCFv4CAQMxDzANBglg # hkgBZQMEAgEFADCCAVkGCyqGSIb3DQEJEAEEoIIBSASCAUQwggFAAgEBBgorBgEE # AYRZCgMBMDEwDQYJYIZIAWUDBAIBBQAEIL6gGmM/1WE7V/1XIHZARl6n1wzwshSX # 2HiZJLrvXtB/AgZlup3MLmsYEzIwMjQwMjIwMjEyNTM4Ljg5MVowBIACAfSggdik # gdUwgdIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH # EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNV # BAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UE # CxMdVGhhbGVzIFRTUyBFU046MkFENC00QjkyLUZBMDExJTAjBgNVBAMTHE1pY3Jv # c29mdCBUaW1lLVN0YW1wIFNlcnZpY2WgghF4MIIHJzCCBQ+gAwIBAgITMwAAAd6e # SJ6WnyhEPQABAAAB3jANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEG # A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj # cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFt # cCBQQ0EgMjAxMDAeFw0yMzEwMTIxOTA3MTJaFw0yNTAxMTAxOTA3MTJaMIHSMQsw # CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u # ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNy # b3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxl # cyBUU1MgRVNOOjJBRDQtNEI5Mi1GQTAxMSUwIwYDVQQDExxNaWNyb3NvZnQgVGlt # ZS1TdGFtcCBTZXJ2aWNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA # tIH0HIX1QgOEDrEWs6eLD/GwOXyxKL2s4I5dJI7hUxCOc0YCjlUfHSKKMwQwf0tj # ZJQgGRVBLQyXqRH5NqCRQ9toSnCOFDWamuFGAlP+OVKeJzjZUMCjR6fgkjrGdegC # hagrJJjz9E4gp2mmGAjs4lvhceTU/exfak1nfYsNjWS1yErX+FbI+VuVpcAdG7QT # fKe/CtLz9tyisA07oOO7KzJL3NSav7DcfcAS9KCzZF64uPamQFx9bVQ8IW50t3sg # 9nZELih1BwQ+djXaPKlg+dLrJkCzSkumrQpEVTIHXHrHo5Tvey52Ic43XqYTSXos # tP06YajRL3gHGDc3/doTp9RudWh6ZVzsWQUu6bwqRlxtDtw4dIBYYnF0K+jk61S1 # F1Kp/zkWSUJcgiSDiybucz1OS1RV87SSnqTHubKyAPRCvHHr/mhqqfA5NYs3Mr4E # KLUbudQPWm165e9Cnx8TUqlOOcb/U4l56HAo00+Ma33xXQGaiBlN7dLEGQ545DIs # D77kfKD8vryl74Otmhk9cloZT+IGIWYv66X86Ld3zfMsAeUdCYf9UY0F9HA/6LG+ # qHKT8R5vC5dUlj6tPJ9tF+6H2fQBoyGE3HGDq0YrJlLgQASIPGsX2YBkTLx7yt/p # 2Uohfl3dpAuj18N1rVlM7D5cBwC+Pb83cMtUZmUeceUCAwEAAaOCAUkwggFFMB0G # A1UdDgQWBBRrMCZvGx5pqmB3HMrw6z6do9ASyDAfBgNVHSMEGDAWgBSfpxVdAF5i # XYP05dJlpxtTNRnpcjBfBgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vd3d3Lm1pY3Jv # c29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENB # JTIwMjAxMCgxKS5jcmwwbAYIKwYBBQUHAQEEYDBeMFwGCCsGAQUFBzAChlBodHRw # Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFRp # bWUtU3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNydDAMBgNVHRMBAf8EAjAAMBYGA1Ud # JQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsF # AAOCAgEA4pTAexcNpwY69QiCzkcOA+zQtnWrIdLoLrB8qUtoPfq1l9ta3XH4YyJr # NK7L4azGJUfOSExb4WoryCu4tBY3+w4Jf58ZSBP0tPbVxEilxmPj9kUi/C2QFywL # PVcRSxdg5IlQ+K1jsTxtuV2aaFhnb2n5dCkhywb+r5iOSoFb2bDSu7Ux/ExNCz0x # MOIPbyABUas8Dc3KSJIKG92pLtVf78twTP1RvO2j/DbxYDwc4IeoFNsNEeaI/swi # P5JCYj1UhrJiwgZGO96WY1rQ69tT0IlLP818wSB/Y0cxlRhbwqpYSMiM98cgrFaU # 0xiG5Z9ZFIdkIrIgA0DRokviygdC3PNnYyc1+NhjznXAdiMaDBSP+GUtGBA7lLfR # nHvwaoEp/KWnblo5Yn+o+EL4NczaBdqMhduX6OkZxUA3C0UW6MIlF1lt4fVH5DjU # WOAGDibc5MUMai3kNK5WRCCOS7uk5U+2V0TjpCUOD/ZaE+lNDFcfriw/UZ+QDBS2 # 3qutkz88LBEbqCKtiadNEsuyJwGGhguH4QQWNW+JcAZOTqme7yPH/hY9a7SOzPvI # XODzb8UyoKT3Arcu/IsDIMc34XFscDG2DBp3ugtA8zRYYRF0HW6Y8IiJixJ/+Pv0 # Sod2g3BBhE5Wb5lfXRFfefptGYCeyR42GLTCdVp5WiAsx0YP6eowggdxMIIFWaAD # AgECAhMzAAAAFcXna54Cm0mZAAAAAAAVMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYD # VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe # MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3Nv # ZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yMTA5MzAxODIy # MjVaFw0zMDA5MzAxODMyMjVaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo # aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw # MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5OGmTOe0ciELeaLL1yR5 # vQ7VgtP97pwHB9KpbE51yMo1V/YBf2xK4OK9uT4XYDP/XE/HZveVU3Fa4n5KWv64 # NmeFRiMMtY0Tz3cywBAY6GB9alKDRLemjkZrBxTzxXb1hlDcwUTIcVxRMTegCjhu # je3XD9gmU3w5YQJ6xKr9cmmvHaus9ja+NSZk2pg7uhp7M62AW36MEBydUv626GIl # 3GoPz130/o5Tz9bshVZN7928jaTjkY+yOSxRnOlwaQ3KNi1wjjHINSi947SHJMPg # yY9+tVSP3PoFVZhtaDuaRr3tpK56KTesy+uDRedGbsoy1cCGMFxPLOJiss254o2I # 5JasAUq7vnGpF1tnYN74kpEeHT39IM9zfUGaRnXNxF803RKJ1v2lIH1+/NmeRd+2 # ci/bfV+AutuqfjbsNkz2K26oElHovwUDo9Fzpk03dJQcNIIP8BDyt0cY7afomXw/ # TNuvXsLz1dhzPUNOwTM5TI4CvEJoLhDqhFFG4tG9ahhaYQFzymeiXtcodgLiMxhy # 16cg8ML6EgrXY28MyTZki1ugpoMhXV8wdJGUlNi5UPkLiWHzNgY1GIRH29wb0f2y # 1BzFa/ZcUlFdEtsluq9QBXpsxREdcu+N+VLEhReTwDwV2xo3xwgVGD94q0W29R6H # XtqPnhZyacaue7e3PmriLq0CAwEAAaOCAd0wggHZMBIGCSsGAQQBgjcVAQQFAgMB # AAEwIwYJKwYBBAGCNxUCBBYEFCqnUv5kxJq+gpE8RjUpzxD/LwTuMB0GA1UdDgQW # BBSfpxVdAF5iXYP05dJlpxtTNRnpcjBcBgNVHSAEVTBTMFEGDCsGAQQBgjdMg30B # ATBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3Bz # L0RvY3MvUmVwb3NpdG9yeS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYB # BAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB # Af8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8wTTBL # oEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMv # TWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggr # BgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNS # b29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZIhvcNAQELBQADggIBAJ1Vffwq # reEsH2cBMSRb4Z5yS/ypb+pcFLY+TkdkeLEGk5c9MTO1OdfCcTY/2mRsfNB1OW27 # DzHkwo/7bNGhlBgi7ulmZzpTTd2YurYeeNg2LpypglYAA7AFvonoaeC6Ce5732pv # vinLbtg/SHUB2RjebYIM9W0jVOR4U3UkV7ndn/OOPcbzaN9l9qRWqveVtihVJ9Ak # vUCgvxm2EhIRXT0n4ECWOKz3+SmJw7wXsFSFQrP8DJ6LGYnn8AtqgcKBGUIZUnWK # NsIdw2FzLixre24/LAl4FOmRsqlb30mjdAy87JGA0j3mSj5mO0+7hvoyGtmW9I/2 # kQH2zsZ0/fZMcm8Qq3UwxTSwethQ/gpY3UA8x1RtnWN0SCyxTkctwRQEcb9k+SS+ # c23Kjgm9swFXSVRk2XPXfx5bRAGOWhmRaw2fpCjcZxkoJLo4S5pu+yFUa2pFEUep # 8beuyOiJXk+d0tBMdrVXVAmxaQFEfnyhYWxz/gq77EFmPWn9y8FBSX5+k77L+Dvk # txW/tM4+pTFRhLy/AsGConsXHRWJjXD+57XQKBqJC4822rpM+Zv/Cuk0+CQ1Zyvg # DbjmjJnW4SLq8CdCPSWU5nR0W2rRnj7tfqAxM328y+l7vzhwRNGQ8cirOoo6CGJ/ # 2XBjU02N7oJtpQUQwXEGahC0HVUzWLOhcGbyoYIC1DCCAj0CAQEwggEAoYHYpIHV # MIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH # UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQL # EyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsT # HVRoYWxlcyBUU1MgRVNOOjJBRDQtNEI5Mi1GQTAxMSUwIwYDVQQDExxNaWNyb3Nv # ZnQgVGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoDFQBooFKKzLjLzqmX # xfLbYIlkTETa86CBgzCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo # aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw # MA0GCSqGSIb3DQEBBQUAAgUA6X95hzAiGA8yMDI0MDIyMTAzMTgzMVoYDzIwMjQw # MjIyMDMxODMxWjB0MDoGCisGAQQBhFkKBAExLDAqMAoCBQDpf3mHAgEAMAcCAQAC # AhreMAcCAQACAhJVMAoCBQDpgMsHAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisG # AQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQEFBQAD # gYEAi/SnVvKlI5zoid/vFePJ+3dYRtCaJC+5ALReHayBrQCVnszSnQkcj0CtyGVD # 1q3P7Pluk/DUWYIuegwcny1JNfFOh5oUrX2SNK9p6kIfI64tZ13SJvKnTsvfdtEM # qkyNvVzRuwjWnuN0QJpQtV2iiCZUa1BVKGfHqL2zKB4xKhYxggQNMIIECQIBATCB # kzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH # UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD # Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAd6eSJ6WnyhEPQAB # AAAB3jANBglghkgBZQMEAgEFAKCCAUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJ # EAEEMC8GCSqGSIb3DQEJBDEiBCBM7zreJPAFM9TTL7bfjCGMO+9V4ObeKqg5j8JB # F00rvTCB+gYLKoZIhvcNAQkQAi8xgeowgecwgeQwgb0EII4+I58NwV4QEEkCf+YL # cyCtPnD9TbPzUtgPjgdzfh17MIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNV # BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv # c29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAg # UENBIDIwMTACEzMAAAHenkielp8oRD0AAQAAAd4wIgQgfWC9enJkErTjSzOejesk # VV+3EGebPe9JDzs4tTq10aMwDQYJKoZIhvcNAQELBQAEggIAoRarkUmpz92gDhZE # 4XEFvqDOeuIimV6GihJOHEV+bAZhx60ZAeO2MTYahAIzcAJVvauF3/XZYWDpIA4V # hDYyBhflV3iheCKkViegWUBTlfm03sDA+48lTlfcQzGBwB0m0Xvuw7MoaTJksswy # BczBzkNQVuY8EzjjCiit8JmlMOqFA/ejcWda0UMx5ZEKLkDt9bqOK4luaJwpNoeQ # 8jPKx+gO/Iv+sZg0/zQLhWdWCzP4SOx/IAc1igepBNxGUkm85XnZbiSjYGdNyqmK # 6j6VZwRVVzqYM8J+I4iGjyiQpOG33WJ0HvR1yAyfz/yQGqLQzt8H/uGjFldvBGEO # dUZgWm2xrcoRGczRu4Ta4bqHibcWTgzgqYz7DGOtQHJquYb9PTa8zV9d7bVTYiwH # zyv3BUnwQ8GxQbIgHs7vzHHwsEio8A2YfuTjCC3RW6uUTWLxT8OQwY8/g+3K4FzI # U4x6k9Z2p9TRuyzPp1dZTUecXOI/isDHgFvUb7wtYZmqDcjKcLt6/J5U1u0vPU2F # XjstPYaeBaDjFU8ZYha/pIPvwoAdsIHqGTpnNENdI5X/6gtMHzIR5or0862LOz5L # nKTPJNoCOidOphaCDbmiKwOw1dvGwVR5Laiku/QekubtGJ0gsk49sLKj84yME3Bg # kxVJjoOsaTAVQWnniU7VmOMbdXM= # SIG # End signature block |