public/Import-AppVManagementPackage.ps1
|
<#
.SYNOPSIS Imports App-V Management packages from an App-V Management SQL database into AppVentiX as publishing tasks. .DESCRIPTION Import-AppVManagementPackage retrieves packages from an App-V Management SQL database and converts them into AppVentiX publishing tasks. The function matches package URLs against the configured AppVentiX Content Shares and optionally associates packages with the appropriate Machine Groups based on Content Share location. If a Deployment Configuration XML is present in the database, it is saved as an .appd file alongside the package. .PARAMETER SQLServer The name or IP address of the SQL Server hosting the App-V Management database. Default: 'localhost'. .PARAMETER SQLInstance The SQL Server instance name (optional). Leave empty for the default instance. .PARAMETER SQLDatabase The name of the App-V Management database. Default: 'AppVManagement'. .PARAMETER SQLCredential A PSCredential object for SQL Server authentication. Use [System.Management.Automation.PSCredential]::Empty for Windows authentication (default). .PARAMETER MatchPackageWithMachineGroup When specified, attempts to match each package to the appropriate AppVentiX Machine Group based on its Content Share location. If no match is found, the package is published to all Machine Groups. .PARAMETER GUI When specified, displays a graphical selection window allowing the user to manually choose which packages to import. .PARAMETER ConfigShare Internal parameter. Points to the AppVentiX configuration share path. Automatically populated from the module configuration and does not normally need to be specified manually. .EXAMPLE Import-AppVManagementPackage Imports all enabled App-V packages from the local SQL Server ('localhost', database 'AppVManagement') and publishes them to all Machine Groups. .EXAMPLE Import-AppVManagementPackage -SQLServer 'sql01' -SQLDatabase 'AppVManagement' -MatchPackageWithMachineGroup Imports all enabled App-V packages from SQL Server 'sql01' and associates each package with the corresponding AppVentiX Machine Group based on its Content Share location. .EXAMPLE Import-AppVManagementPackage -SQLServer 'sql01' -GUI -MatchPackageWithMachineGroup Displays a selection window listing all available packages so the user can choose which ones to import, then associates them with the appropriate Machine Group. .NOTES Function : Import-AppVManagementPackage Author : John Billekens Copyright : (c) John Billekens Consultancy & AppVentiX Version : 2026.130.1000 Requires : SqlServer PowerShell module #> function Import-AppVManagementPackage { [CmdletBinding()] param ( [String]$SQLServer = "localhost", [String]$SQLInstance, [String]$SQLDatabase = 'AppVManagement', [System.Management.Automation.PSCredential]$SQLCredential = [System.Management.Automation.PSCredential]::Empty, [switch]$MatchPackageWithMachineGroup, [switch]$GUI, [Parameter(DontShow)] [ValidateNotNullOrEmpty()] [String]$ConfigShare = $Script:AppVentiX.ConfigShare ) $PSDefaultParameterValues['Write-AppVentiXError:Cmdlet'] = $PSCmdlet if (Test-AppVentiXIsLicensed -ConfigShare $ConfigShare) { try { $SQLParams = @{ SQLServer = $SQLServer SQLInstance = $SQLInstance SQLDatabase = $SQLDatabase SQLCredential = $SQLCredential } try { $connectionResult = Test-AppVManagementSQLConnection @SQLParams -ErrorAction Stop if (-not $connectionResult) { Write-AppVentiXError -Message "Cannot connect to the App-V Management database on server '$serverInstance'." ` -ErrorId 'SQLConnectionFailed' ` -Category ConnectionError ` -Cmdlet $PSCmdlet return } } catch { Write-AppVentiXError -Message "Cannot connect to the App-V Management database on server '$serverInstance'." ` -ErrorId 'SQLConnectionFailed' ` -Category ConnectionError ` -Cmdlet $PSCmdlet return } Write-Host "Connected to App-V Management database '$SQLDatabase' on server '$SQLServer'" Write-Host "Retrieving App-V Management Packages..." $AppVentiXContentSharePackages = Get-AppVentiXContentSharePackages -ConfigShare $ConfigShare $MachineGroups = Get-AppVentiXMachineGroup -ConfigShare $ConfigShare if ($AppVManagementPackageDetails = Get-AppVManagementPackage @SQLParams) { if ($GUI.IsPresent -eq $true) { $AppVManagementPackageDetails = @( $AppVManagementPackageDetails | Select-ObjectFromGrid -Title "Select App-V Management Packages to import" ` -ColumnsToShow @('Name', 'Version', 'IsEnabled', 'PackageGuid', 'VersionGuid', 'PackageUrl') ) } if (-not $AppVManagementPackageDetails -or $AppVManagementPackageDetails.Count -eq 0) { Write-Warning "No App-V Management Packages selected for import." return } Write-Host "Found $($AppVManagementPackageDetails.Count) App-V Management Packages to import." foreach ($appVManagementPackage in $AppVManagementPackageDetails) { Write-Host "`r`n================================" -ForegroundColor Cyan if ($appVManagementPackage.IsEnabled -eq $false) { Write-Host "`r`nSkipping disabled App-V Management Package '$($appVManagementPackage.Name)'" -ForegroundColor Yellow continue } Write-Host "`r`nProcessing package '$($appVManagementPackage.Name)'..." -ForegroundColor Cyan if (-not [string]::IsNullOrEmpty($appVManagementPackage.PackageUrl) -and $appVManagementPackage.PackageUrl.StartsWith('\\')) { $fileServer, $fileserverPath = $appVManagementPackage.PackageUrl.TrimStart('\\').Split('\', 2) $AppVentiXPackage = @($AppVentiXContentSharePackages | Where-Object { $_.FullName -like "\\$($fileServer)*\$($fileserverPath)" }) $MachineGroupFriendlyName = 'All Machine Groups' $MachineGroup = $MachineGroups if ($MatchPackageWithMachineGroup.IsPresent -eq $false) { if ($AppVentiXPackage.Count -eq 0) { Write-Warning "Package URL: '$($appVManagementPackage.PackageUrl)'" Write-Warning "Package not found in any of the configured Machine Group Content Shares." } } elseif ($AppVentiXPackage.Count -eq 0) { Write-Warning "Package URL: '$($appVManagementPackage.PackageUrl)'" Write-Warning "Package not found in AppVentiX Content Share Packages. Publishing to All Machine Groups." } elseif ($AppVentiXPackage.Count -gt 1) { Write-Warning "Package URL: '$($appVManagementPackage.PackageUrl)'" Write-Warning "Multiple packages found ($($AppVentiXPackage.Count)) in AppVentiX Content Share Packages matching the specified URL." Write-Warning "Publishing to All Machine Groups." } else { Write-Host "Found package in AppVentiX Content Share Packages." -ForegroundColor Green $MachineGroupFriendlyName = $AppVentiXPackage | Select-Object -ExpandProperty MachineGroup $MachineGroup = $MachineGroups | Where-Object { $_.FriendlyName -ieq $MachineGroupFriendlyName } } } else { Write-Warning "Package URL: '$($appVManagementPackage.PackageUrl)'" Write-Warning "Package is not a valid UNC path. Skipping package." continue } $ContentSharePackageRoots = @($MachineGroup.GroupContentshares | ForEach-Object { $_.ContentShare } | Select-Object -ExpandProperty Path) Write-Host "Importing App-V Management Package to Machine Group '$MachineGroupFriendlyName'" -ForegroundColor Cyan $Fileserver, $Share, $SharePath = "$($appVManagementPackage.PackageUrl)".TrimStart("\\").Split('\', 3) $PackageContentShareMatch = "\\{0}*\{1}" -f $Fileserver, $Share Write-Verbose "Looking for content share matching pattern '$PackageContentShareMatch' in machine group '$MachineGroupFriendlyName'" $ContentSharePackageRoot = $ContentSharePackageRoots | Where-Object { $_ -like $PackageContentShareMatch } if ([string]::IsNullOrEmpty($ContentSharePackageRoot)) { Write-Warning "No matching content share found for package in machine group '$MachineGroupFriendlyName'. Using Original Package URL." $PackagePath = $appVManagementPackage.PackageUrl } else { Write-Host "Found matching content share for package." -ForegroundColor Green $ContentShareFileserver, $ContentShareShare = $ContentSharePackageRoot.TrimStart("\\").Split('\', 2) $PackagePath = '\\{0}\{1}\{2}' -f $ContentShareFileserver, $ContentShareShare, $SharePath } if (Test-Path -Path $PackagePath) { Write-Host "Package found in content share" -ForegroundColor Green $adGroups = @() $appVManagementPackage.ADGroups | ForEach-Object { $adGroupName = '{0}\{1}' -f $_.Domain, $_.Name $adGroups += $adGroupName if (-not [string]::IsNullOrEmpty($($_.UserConfigurationXml))) { Write-Warning "User configuration detected, but only default Deployment Configuration is supported during import." } } $publishingTaskParams = @{ MachineGroupFriendlyName = $MachineGroupFriendlyName Group = $adGroups Path = $PackagePath } Write-Verbose "Creating publishing task with parameters: $($publishingTaskParams | Out-String)" Write-Host "Creating publishing task..." $newTaskId = New-AppVentiXPublishingTask @publishingTaskParams Write-Output ([PSCustomObject]@{ Name = $appVManagementPackage.Name Id = $newTaskId.Id }) try { if (-not [string]::IsNullOrEmpty($($appVManagementPackage.DeploymentConfigurationXml))) { Write-Host "Deployment configuration XML found. Saving XML data to appd file..." -ForegroundColor Cyan [xml]$DeploymentConfigXml = $($appVManagementPackage.DeploymentConfigurationXml) | Format-XML $appdFilePath = "$PackagePath".Replace('.appv', '_DeploymentConfig.appd') $DeploymentConfigXml.Save($appdFilePath) } } catch { Write-Warning "Failed to save deployment configuration XML to appd file: $($_.Exception.Message)" } } else { Write-Warning "The package could not be found at path '$PackagePath'. Skipping package import." continue } Write-Host "Successfully created publishing task with Task ID '$($newTaskId.Id)'." -ForegroundColor Green } Write-Host "`r`n================================" -ForegroundColor Cyan Write-Host "`r`nFinished processing App-V Management Packages.`r`n" -ForegroundColor Cyan } else { Write-Warning "No App-V Management Packages found in the database '$SQLDatabase' on server '$SQLServer'." return } } catch { $ErrorMessage = @{ Message = "Failed to import App-V Management Packages: $($_.Exception.Message)" ErrorId = "ImportAppVManagementPackageFailed" Category = [System.Management.Automation.ErrorCategory]::NotSpecified TargetObject = $_.Exception } Write-Verbose $($_ | Get-ExceptionDetails -AsPlainText) Write-AppVentiXError @ErrorMessage } } else { throw "AppVentiX is not licensed. Please run the license setup before using this function." } } # SIG # Begin signature block # MII6wAYJKoZIhvcNAQcCoII6sTCCOq0CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCxvm90Hg0CKDLd # P9SZvEHexrtaZhmdmNFKNwrrfVrqnqCCIuQwggXMMIIDtKADAgECAhBUmNLR1FsZ # 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 # 03u4aUoqlmZpxJTG9F9urJh4iIAGXKKy7aIwggcGMIIE7qADAgECAhMzAAfM8rDv # Jyd7QZv4AAAAB8zyMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ # RCBWZXJpZmllZCBDUyBFT0MgQ0EgMDIwHhcNMjYwNDAyMjE0MTIwWhcNMjYwNDA1 # MjE0MTIwWjCBgzELMAkGA1UEBhMCTkwxFjAUBgNVBAgTDU5vb3JkLUJyYWJhbnQx # EjAQBgNVBAcTCVNjaGlqbmRlbDEjMCEGA1UEChMaSm9obiBCaWxsZWtlbnMgQ29u # c3VsdGFuY3kxIzAhBgNVBAMTGkpvaG4gQmlsbGVrZW5zIENvbnN1bHRhbmN5MIIB # ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAql2zC5qD+WbLZzawVOEM6hmw # E525pZhueIRBk85Br6ZG8FoUZl7WzaPQV6JlW6kukWABJbvNbIKzQnLhu+SmCtBF # 5OA+rjaAREtoajEbtuL+N7rmNVrPTe7POYz2lgLn3VL/0l+xTMI402gfo/Vvha2H # ItsKRA93A7FHmWxnnhyA7p2ucpLfJNdNoCK1XsB22sNdhTqV8/TWRTuGzYP+FvTp # jhdcq/xyy16jKdwIgNOXCCAU9U4EO1TLR1WTTmxQNOWy5dNdP48HYLiACx/d9Gf1 # EVytoAgxmsNon12TmLU/FW1KUddP91DcbCmvEg0Zmab/UBPg0bRRufv8oGeJqnb9 # bcCUxCH99cPAvIe0MLg4qCtRM80fA36yz4/dfIC7xowKEUxhR7/kWUfg+3mKA2nJ # F6qSv3+llYtt7O6GRPWD40Rk9LGbSQD3+uCuAIBUNqh4Sokq1q+j+8jjU4yBNFBc # tL1HsI6KXgTLWBO81v+mX+Fs62Euo8AfRByW7HhRAgMBAAGjggIZMIICFTAMBgNV # HRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA8BgNVHSUENTAzBgorBgEEAYI3YQEA # BggrBgEFBQcDAwYbKwYBBAGCN2G789NTgYr4ukmC0/31KIOytcN0MB0GA1UdDgQW # BBQKkf4WVoYJs/qIk34nGHoMkkbjSzAfBgNVHSMEGDAWgBRln1HOhWh/L4pFiKrd # pzG7Hg0AXjBnBgNVHR8EYDBeMFygWqBYhlZodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBF # T0MlMjBDQSUyMDAyLmNybDCBpQYIKwYBBQUHAQEEgZgwgZUwZAYIKwYBBQUHMAKG # WGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0 # JTIwSUQlMjBWZXJpZmllZCUyMENTJTIwRU9DJTIwQ0ElMjAwMi5jcnQwLQYIKwYB # BQUHMAGGIWh0dHA6Ly9vbmVvY3NwLm1pY3Jvc29mdC5jb20vb2NzcDBmBgNVHSAE # XzBdMFEGDCsGAQQBgjdMg30BATBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1p # Y3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wCAYGZ4EMAQQB # MA0GCSqGSIb3DQEBDAUAA4ICAQC74nf6TvL5WCfrJh27QL0oRpanrcasjQ1NTjWc # SfyFdOv0IxPLaTcDfmin4wwOwgESPhnSPNWDwFf7tatAOG6pTL4MG2Op+izJPbGa # ap0Hht3E0qTTsgaoxC2CEgnfeInM2SCKIbf7ymTd76TfqQSDUQdz25Z343yKOPLT # 5WI/krGe4zCQh+ObMqhTfRTi31YQa+k9fRCALCGcVuu6nrfEC36y5zh8OmxbmawY # L/CgWg2V5OYx5EA3WXgFnJbgrt3YpL6rxNKcFTvqmqEkc5X1g6CucGXLkAH1x2CC # HoPQ/D5212vdFoPXLhHjASEbIi5VyzA77rFJF1ahcWO+pHI5YyQ4pvVrPCQ2im1D # vsihP12hTrlHxdSQnB57pBvKHPRyZdKIxl0eurYdsNIqdspSi0VuWbLB+xUwJhZf # cSmFBg9uIGVrQrt9MHAKzmcSAJQJn70BmaMmOgR5JbYsDOU4TIRg0p7h5XKWTvso # 1wGR/Ondg7CdFb68kfjNhUAZtCUNd4HdxcgVqkeaLV6teIpNChYu2EUuzOAG7P1V # hdz3fhn6WoKU6Yaj6mkIPOcBBJzM3ecoriYrrg2GQePxgWJltU6+zwA2PRrqzUzJ # Brkln75enYK+/KjaCrNE98LiX2/aHHkFDCxd2fwl47iSkdSR57klynfkL+28Lf2e # WhjDFzCCBwYwggTuoAMCAQICEzMAB8zysO8nJ3tBm/gAAAAHzPIwDQYJKoZIhvcN # AQEMBQAwWjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjErMCkGA1UEAxMiTWljcm9zb2Z0IElEIFZlcmlmaWVkIENTIEVPQyBDQSAw # MjAeFw0yNjA0MDIyMTQxMjBaFw0yNjA0MDUyMTQxMjBaMIGDMQswCQYDVQQGEwJO # TDEWMBQGA1UECBMNTm9vcmQtQnJhYmFudDESMBAGA1UEBxMJU2NoaWpuZGVsMSMw # IQYDVQQKExpKb2huIEJpbGxla2VucyBDb25zdWx0YW5jeTEjMCEGA1UEAxMaSm9o # biBCaWxsZWtlbnMgQ29uc3VsdGFuY3kwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw # ggGKAoIBgQCqXbMLmoP5ZstnNrBU4QzqGbATnbmlmG54hEGTzkGvpkbwWhRmXtbN # o9BXomVbqS6RYAElu81sgrNCcuG75KYK0EXk4D6uNoBES2hqMRu24v43uuY1Ws9N # 7s85jPaWAufdUv/SX7FMwjjTaB+j9W+FrYci2wpED3cDsUeZbGeeHIDuna5ykt8k # 102gIrVewHbaw12FOpXz9NZFO4bNg/4W9OmOF1yr/HLLXqMp3AiA05cIIBT1TgQ7 # VMtHVZNObFA05bLl010/jwdguIALH930Z/URXK2gCDGaw2ifXZOYtT8VbUpR10/3 # UNxsKa8SDRmZpv9QE+DRtFG5+/ygZ4mqdv1twJTEIf31w8C8h7QwuDioK1EzzR8D # frLPj918gLvGjAoRTGFHv+RZR+D7eYoDackXqpK/f6WVi23s7oZE9YPjRGT0sZtJ # APf64K4AgFQ2qHhKiSrWr6P7yONTjIE0UFy0vUewjopeBMtYE7zW/6Zf4WzrYS6j # wB9EHJbseFECAwEAAaOCAhkwggIVMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQD # AgeAMDwGA1UdJQQ1MDMGCisGAQQBgjdhAQAGCCsGAQUFBwMDBhsrBgEEAYI3Ybvz # 01OBivi6SYLT/fUog7K1w3QwHQYDVR0OBBYEFAqR/hZWhgmz+oiTficYegySRuNL # MB8GA1UdIwQYMBaAFGWfUc6FaH8vikWIqt2nMbseDQBeMGcGA1UdHwRgMF4wXKBa # oFiGVmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29m # dCUyMElEJTIwVmVyaWZpZWQlMjBDUyUyMEVPQyUyMENBJTIwMDIuY3JsMIGlBggr # BgEFBQcBAQSBmDCBlTBkBggrBgEFBQcwAoZYaHR0cDovL3d3dy5taWNyb3NvZnQu # Y29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ1Ml # MjBFT0MlMjBDQSUyMDAyLmNydDAtBggrBgEFBQcwAYYhaHR0cDovL29uZW9jc3Au # bWljcm9zb2Z0LmNvbS9vY3NwMGYGA1UdIARfMF0wUQYMKwYBBAGCN0yDfQEBMEEw # PwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9j # cy9SZXBvc2l0b3J5Lmh0bTAIBgZngQwBBAEwDQYJKoZIhvcNAQEMBQADggIBALvi # d/pO8vlYJ+smHbtAvShGlqetxqyNDU1ONZxJ/IV06/QjE8tpNwN+aKfjDA7CARI+ # GdI81YPAV/u1q0A4bqlMvgwbY6n6LMk9sZpqnQeG3cTSpNOyBqjELYISCd94iczZ # IIoht/vKZN3vpN+pBINRB3PblnfjfIo48tPlYj+SsZ7jMJCH45syqFN9FOLfVhBr # 6T19EIAsIZxW67qet8QLfrLnOHw6bFuZrBgv8KBaDZXk5jHkQDdZeAWcluCu3dik # vqvE0pwVO+qaoSRzlfWDoK5wZcuQAfXHYIIeg9D8PnbXa90Wg9cuEeMBIRsiLlXL # MDvusUkXVqFxY76kcjljJDim9Ws8JDaKbUO+yKE/XaFOuUfF1JCcHnukG8oc9HJl # 0ojGXR66th2w0ip2ylKLRW5ZssH7FTAmFl9xKYUGD24gZWtCu30wcArOZxIAlAmf # vQGZoyY6BHkltiwM5ThMhGDSnuHlcpZO+yjXAZH86d2DsJ0VvryR+M2FQBm0JQ13 # gd3FyBWqR5otXq14ik0KFi7YRS7M4Abs/VWF3Pd+GfpagpTphqPqaQg85wEEnMzd # 5yiuJiuuDYZB4/GBYmW1Tr7PADY9GurNTMkGuSWfvl6dgr78qNoKs0T3wuJfb9oc # eQUMLF3Z/CXjuJKR1JHnuSXKd+Qv7bwt/Z5aGMMXMIIHWjCCBUKgAwIBAgITMwAA # AAX7elwyE2HfXQAAAAAABTANBgkqhkiG9w0BAQwFADBjMQswCQYDVQQGEwJVUzEe # MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTQwMgYDVQQDEytNaWNyb3Nv # ZnQgSUQgVmVyaWZpZWQgQ29kZSBTaWduaW5nIFBDQSAyMDIxMB4XDTIxMDQxMzE3 # MzE1M1oXDTI2MDQxMzE3MzE1M1owWjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1p # Y3Jvc29mdCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiTWljcm9zb2Z0IElEIFZlcmlm # aWVkIENTIEVPQyBDQSAwMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB # ANIamXw/MpCkwOgg21r7IZgaQ6AX+y79d9kVbkqlcEDt2gCy5LkZ50yKEZjBqNHy # DEK7cEelBwdOsXajpAH6gensbm10x7uOPnbh1AnROJ4IxCwUMpbjLkjpx2hHb3iG # 7d9ToTBF/+J0JKYePgIdHkeB9rE0a1Spiq5TqEJYYmu90INnR6IrXF9bk9b1typ6 # bfTLe+h+2R2yzbKTGS5FgWmyjJegXWlmV2KTxnUvqmPNIA2jQrxatHddFDLu8R3r # CKl6Uw090NwHjsUspUk3P++D96IPY9zrnphBWrhcy+ebdTL6WnRIUJg/LhTMRb/4 # mTo8L3HWNc4Wp1Sy8qZc9d/zc0qFN0I4T3agBoUSMIf2A86N4wnVSYFkEa1vNz96 # lhRZMTYjBNojuCLmII+0cLHhsL+yPXMTsmh4oSjHU/TXqEo6Ujc1ZyihnGDLTnTL # ShaqFewoptpvOBpiGGUwaK0fz6PYsJWrE2ChaRmanVismJyTthVfKDJlpCCtYmoC # y4BLemWkdK5P9Y1GLLMk4kalq/OELN1y/1eSlARLVBEH0P+EbZyNPbhRVCBiWVfZ # g/8TlJLFqHRqwkEnpuh8tutcTCQB6k6jLgyoMIvMZP5n5a+8oVzy+90jlC5rtQKr # uCOxqXukMDVtk7UAcTN77Uk5nT1uqyuctIBA+dUY7MitAgMBAAGjggIOMIICCjAO # BgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGWfUc6F # aH8vikWIqt2nMbseDQBeMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIB # FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9y # eS5odG0wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwEgYDVR0TAQH/BAgwBgEB # /wIBADAfBgNVHSMEGDAWgBTZQSmwDw9jbO9p1/XNKZ6kSGow5jBwBgNVHR8EaTBn # MGWgY6Bhhl9odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNy # b3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ29kZSUyMFNpZ25pbmclMjBQQ0ElMjAy # MDIxLmNybDCBrgYIKwYBBQUHAQEEgaEwgZ4wbQYIKwYBBQUHMAKGYWh0dHA6Ly93 # d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwSUQlMjBW # ZXJpZmllZCUyMENvZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyMS5jcnQwLQYIKwYB # BQUHMAGGIWh0dHA6Ly9vbmVvY3NwLm1pY3Jvc29mdC5jb20vb2NzcDANBgkqhkiG # 9w0BAQwFAAOCAgEARUlg1HdPF+IOR871X6wdUolfKZOlzx0/Yz5Apr1P7rwc5mUQ # I2JNoCmEd6V6ErUSWif5YYwuQ6v9kez9WEWRwg2MitM70kTHROmELYBo5rHYcw9J # wkuoVVXIH5jULHDydVh8W7xuREIGENGRA9RTdDDj0M1ntc2x+VWtHUsbZ6HQVUY5 # 8g2BJu7DRHLyR0xt3l8wMndNBOSgwrBJeM+TtJr16sGh9j0tNtNBOj+Fqi8ILPzZ # lLufgGvC8P9hJ9lZCFuz5Iq+FJ9YxuvrY/3obqoBclDzwoepG575OPG4rIv8z4wF # ZI+6hK6+30mCAgsyeLOGFDVVR4HaBZ9sW1u2XwU90APc34avbuBMV261Q+a8V0kx # RFINoM0KvSR8bHR8jH3AiixUDlzg0s3GHi6Qnfq+hnKAwU6Mj3SnHIwupgKuvv4Y # jA56bylCB6cmBM1lHmrbcil7TH/kKyXkPp8uYwS/sanTjjxM93YO6p/P6Ka1K1Gx # iwb/X1ptfH1l3QL9TwrSy/2nDC7R6MnklTCkGKgx290JtLkPjUNGBOJFMUkGvlv3 # As2ACN9rjdJ2/TODK9aY+GyWYnTZDOCcmKns6ISC8WJIB226CUCEq0Fq5uUWHcoS # gaabSfSSZ9Gety43Z85TlMY5bAG0Iq9lps/ziRO9NwWx5kGUcMz8db7u0ucwggee # MIIFhqADAgECAhMzAAAAB4ejNKN7pY4cAAAAAAAHMA0GCSqGSIb3DQEBDAUAMHcx # CzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBG # BgNVBAMTP01pY3Jvc29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0 # aWZpY2F0ZSBBdXRob3JpdHkgMjAyMDAeFw0yMTA0MDEyMDA1MjBaFw0zNjA0MDEy # MDE1MjBaMGMxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y # YXRpb24xNDAyBgNVBAMTK01pY3Jvc29mdCBJRCBWZXJpZmllZCBDb2RlIFNpZ25p # bmcgUENBIDIwMjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCy8MCv # GYgo4t1UekxJbGkIVQm0Uv96SvjB6yUo92cXdylN65Xy96q2YpWCiTas7QPTkGnK # 9QMKDXB2ygS27EAIQZyAd+M8X+dmw6SDtzSZXyGkxP8a8Hi6EO9Zcwh5A+wOALNQ # bNO+iLvpgOnEM7GGB/wm5dYnMEOguua1OFfTUITVMIK8faxkP/4fPdEPCXYyy8NJ # 1fmskNhW5HduNqPZB/NkWbB9xxMqowAeWvPgHtpzyD3PLGVOmRO4ka0WcsEZqyg6 # efk3JiV/TEX39uNVGjgbODZhzspHvKFNU2K5MYfmHh4H1qObU4JKEjKGsqqA6Rzi # ybPqhvE74fEp4n1tiY9/ootdU0vPxRp4BGjQFq28nzawuvaCqUUF2PWxh+o5/TRC # b/cHhcYU8Mr8fTiS15kRmwFFzdVPZ3+JV3s5MulIf3II5FXeghlAH9CvicPhhP+V # aSFW3Da/azROdEm5sv+EUwhBrzqtxoYyE2wmuHKws00x4GGIx7NTWznOm6x/niqV # i7a/mxnnMvQq8EMse0vwX2CfqM7Le/smbRtsEeOtbnJBbtLfoAsC3TdAOnBbUkbU # fG78VRclsE7YDDBUbgWt75lDk53yi7C3n0WkHFU4EZ83i83abd9nHWCqfnYa9qIH # PqjOiuAgSOf4+FRcguEBXlD9mAInS7b6V0UaNwIDAQABo4ICNTCCAjEwDgYDVR0P # AQH/BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTZQSmwDw9jbO9p # 1/XNKZ6kSGow5jBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0 # cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRt # MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA8GA1UdEwEB/wQFMAMBAf8wHwYD # VR0jBBgwFoAUyH7SaoUqG8oZmAQHJ89QEE9oqKIwgYQGA1UdHwR9MHsweaB3oHWG # c2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUy # MElkZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIw # QXV0aG9yaXR5JTIwMjAyMC5jcmwwgcMGCCsGAQUFBwEBBIG2MIGzMIGBBggrBgEF # BQcwAoZ1aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNy # b3NvZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlvbiUyMFJvb3QlMjBDZXJ0aWZp # Y2F0ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3J0MC0GCCsGAQUFBzABhiFodHRwOi8v # b25lb2NzcC5taWNyb3NvZnQuY29tL29jc3AwDQYJKoZIhvcNAQEMBQADggIBAH8l # Kp7+1Kvq3WYK21cjTLpebJDjW4ZbOX3HD5ZiG84vjsFXT0OB+eb+1TiJ55ns0BHl # uC6itMI2vnwc5wDW1ywdCq3TAmx0KWy7xulAP179qX6VSBNQkRXzReFyjvF2BGt6 # FvKFR/imR4CEESMAG8hSkPYso+GjlngM8JPn/ROUrTaeU/BRu/1RFESFVgK2wMz7 # fU4VTd8NXwGZBe/mFPZG6tWwkdmA/jLbp0kNUX7elxu2+HtHo0QO5gdiKF+YTYd1 # BGrmNG8sTURvn09jAhIUJfYNotn7OlThtfQjXqe0qrimgY4Vpoq2MgDW9ESUi1o4 # pzC1zTgIGtdJ/IvY6nqa80jFOTg5qzAiRNdsUvzVkoYP7bi4wLCj+ks2GftUct+f # GUxXMdBUv5sdr0qFPLPB0b8vq516slCfRwaktAxK1S40MCvFbbAXXpAZnU20FaAo # Dwqq/jwzwd8Wo2J83r7O3onQbDO9TyDStgaBNlHzMMQgl95nHBYMelLEHkUnVVVT # UsgC0Huj09duNfMaJ9ogxhPNThgq3i8w3DAGZ61AMeF0C1M+mU5eucj1Ijod5O2M # MPeJQ3/vKBtqGZg4eTtUHt/BPjN74SsJsyHqAdXVS5c+ItyKWg3Eforhox9k3Wgt # WTpgV4gkSiS4+A09roSdOI4vrRw+p+fL4WrxSK5nMYIXMjCCFy4CAQEwcTBaMQsw # CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSswKQYD # VQQDEyJNaWNyb3NvZnQgSUQgVmVyaWZpZWQgQ1MgRU9DIENBIDAyAhMzAAfM8rDv # Jyd7QZv4AAAAB8zyMA0GCWCGSAFlAwQCAQUAoF4wEAYKKwYBBAGCNwIBDDECMAAw # GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEIJtTYhEo # tHrqcnftsLshVCMgy7a6+azUEU64DW+0bFlgMA0GCSqGSIb3DQEBAQUABIIBgGao # 5CBs72/krQ7xYphVMNhKdtv53NuViwjr8VKFIT+hw+2v0TC9c086y7jOahLHmGbo # r/QXe0yWYrqy2mXEUajXu32J3EHsCfxnS3Zp8yLl31VqQOJy2q+1snddbGGjAcyx # pEx4rjSNSMvOy5FPBja5FCtk3zQAusrgh8ka8jQ21NDb/ZWiWazTRoHCRVEXdw3D # my1JAXUHX4jfGwz159cuobC8ChPctlPQ7E2074Mn7H6GT4ITcbTzM0fmlMejuqzB # 07CsMws/ChUn8Y4OC3/u3aMNSyV6E/5/3EcTJm8dJZZVNh3ENu6mIDsp++ixfttb # MIFlBh1RmwMwPLdDom/IPKDZVhJaL88i+CSEsLdKkELbZhg//EJrzPVta+pV1lin # hUi1Vpw7n+ayjAZi5SBVDwMFhTZDL5IN9DGNw8f9DfyDPtmsYci8XNBk0WT39ioa # yioz6jC+2lboRq9oU4rGwBr+cUjbD19Ve2LShA519G3Y7RMN4SaAfq25bfPliqGC # FLIwghSuBgorBgEEAYI3AwMBMYIUnjCCFJoGCSqGSIb3DQEHAqCCFIswghSHAgED # MQ8wDQYJYIZIAWUDBAIBBQAwggFqBgsqhkiG9w0BCRABBKCCAVkEggFVMIIBUQIB # AQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCCPEf73Br1zCmk55xB5etR5 # oXJhqCOF522YZSAyYD+j9gIGacZn/6gmGBMyMDI2MDQwMzE0MzIzOS40NTNaMASA # AgH0oIHppIHmMIHjMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ # MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u # MS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQx # JzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo3QjFBLTA1RTAtRDk0NzE1MDMGA1UE # AxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHmg # gg8pMIIHgjCCBWqgAwIBAgITMwAAAAXlzw//Zi7JhwAAAAAABTANBgkqhkiG9w0B # AQwFADB3MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMUgwRgYDVQQDEz9NaWNyb3NvZnQgSWRlbnRpdHkgVmVyaWZpY2F0aW9uIFJv # b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMjAwHhcNMjAxMTE5MjAzMjMxWhcN # MzUxMTE5MjA0MjMxWjBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0 # IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1l # c3RhbXBpbmcgQ0EgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB # AJ5851Jj/eDFnwV9Y7UGIqMcHtfnlzPREwW9ZUZHd5HBXXBvf7KrQ5cMSqFSHGqg # 2/qJhYqOQxwuEQXG8kB41wsDJP5d0zmLYKAY8Zxv3lYkuLDsfMuIEqvGYOPURAH+ # Ybl4SJEESnt0MbPEoKdNihwM5xGv0rGofJ1qOYSTNcc55EbBT7uq3wx3mXhtVmtc # CEr5ZKTkKKE1CxZvNPWdGWJUPC6e4uRfWHIhZcgCsJ+sozf5EeH5KrlFnxpjKKTa # vwfFP6XaGZGWUG8TZaiTogRoAlqcevbiqioUz1Yt4FRK53P6ovnUfANjIgM9JDdJ # 4e0qiDRm5sOTiEQtBLGd9Vhd1MadxoGcHrRCsS5rO9yhv2fjJHrmlQ0EIXmp4DhD # BieKUGR+eZ4CNE3ctW4uvSDQVeSp9h1SaPV8UWEfyTxgGjOsRpeexIveR1MPTVf7 # gt8hY64XNPO6iyUGsEgt8c2PxF87E+CO7A28TpjNq5eLiiunhKbq0XbjkNoU5Jht # YUrlmAbpxRjb9tSreDdtACpm3rkpxp7AQndnI0Shu/fk1/rE3oWsDqMX3jjv40e8 # KN5YsJBnczyWB4JyeeFMW3JBfdeAKhzohFe8U5w9WuvcP1E8cIxLoKSDzCCBOu0h # WdjzKNu8Y5SwB1lt5dQhABYyzR3dxEO/T1K/BVF3rV69AgMBAAGjggIbMIICFzAO # BgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGtpKDo1 # L0hjQM972K9J6T7ZPdshMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIB # FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9y # eS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQCBAweCgBTAHUA # YgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIftJqhSobyhmYBAcn # z1AQT2ioojCBhAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3dy5taWNyb3NvZnQu # Y29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRp # b24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNybDCB # lAYIKwYBBQUHAQEEgYcwgYQwgYEGCCsGAQUFBzAChnVodHRwOi8vd3d3Lm1pY3Jv # c29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVy # aWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAy # MC5jcnQwDQYJKoZIhvcNAQEMBQADggIBAF+Idsd+bbVaFXXnTHho+k7h2ESZJRWl # uLE0Oa/pO+4ge/XEizXvhs0Y7+KVYyb4nHlugBesnFqBGEdC2IWmtKMyS1OWIviw # pnK3aL5JedwzbeBF7POyg6IGG/XhhJ3UqWeWTO+Czb1c2NP5zyEh89F72u9UIw+I # fvM9lzDmc2O2END7MPnrcjWdQnrLn1Ntday7JSyrDvBdmgbNnCKNZPmhzoa8PccO # iQljjTW6GePe5sGFuRHzdFt8y+bN2neF7Zu8hTO1I64XNGqst8S+w+RUdie8fXC1 # jKu3m9KGIqF4aldrYBamyh3g4nJPj/LR2CBaLyD+2BuGZCVmoNR/dSpRCxlot0i7 # 9dKOChmoONqbMI8m04uLaEHAv4qwKHQ1vBzbV/nG89LDKbRSSvijmwJwxRxLLpMQ # /u4xXxFfR4f/gksSkbJp7oqLwliDm/h+w0aJ/U5ccnYhYb7vPKNMN+SZDWycU5OD # IRfyoGl59BsXR/HpRGtiJquOYGmvA/pk5vC1lcnbeMrcWD/26ozePQ/TWfNXKBOm # kFpvPE8CH+EeGGWzqTCjdAsno2jzTeNSxlx3glDGJgcdz5D/AAxw9Sdgq/+rY7jj # gs7X6fqPTXPmaCAJKVHAP19oEjJIBwD1LyHbaEgBxFCogYSOiUIr0Xqcr1nJfiWG # 2GwYe6ZoAF1bMIIHnzCCBYegAwIBAgITMwAAAFl82nHpjV71wAAAAAAAWTANBgkq # hkiG9w0BAQwFADBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENv # cnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3Rh # bXBpbmcgQ0EgMjAyMDAeFw0yNjAxMDgxODU5MDFaFw0yNzAxMDcxODU5MDFaMIHj # MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk # bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRN # aWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNVBAsTHm5T # aGllbGQgVFNTIEVTTjo3QjFBLTA1RTAtRDk0NzE1MDMGA1UEAxMsTWljcm9zb2Z0 # IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHkwggIiMA0GCSqGSIb3 # DQEBAQUAA4ICDwAwggIKAoICAQCmLuf+NHhF/oU/uYxWteOm4nd3QOC512J7b5D9 # whsOCxgERYZ7yzEif1bbLm8w2nhZ5u8m9ikjO9Fph0Ka3Qlaqb1B+5dLgeIzcO7q # y6AEfZChyxNFZTJQ0rQ0sVASN6sLHa473Zr1dJPvf547gxIkpcyU3+w6MHdSt2zu # G3kcmhYUfmPLcphAjqpTgH32KxtsGXVTOdfkEgUnvjxMpK/Aujp56koqbhfH2bwm # +v4bpNGZumcLGosUhyAE9iBBr0u3OtyJvI1d2vEdCuotsosNDTZZ00qcMv2X7+4s # LCwcIX24wU5/lzpepj8w10EN1fkkT/cV2xijrAU8cxone2igB8N6OAIZfVBlix/Z # DT91VKJBOiWJI5X6blBmeoEMqg3sH8Q+FaGCJaKbeB2dMUL6mo7icfnK/C0fyGee # oCy5sMjM3Xufr7YwaIpa8v4EmcFRsIJL5CIKSjwUBxrEgdMt7M6+2O8BG+r9MmWp # dV1L1p5894p02klrAhayz1cFZl8t53GOf3duVaTpIbfpuvexljW77DToQDh0Wn7R # PY/4YZKDOkbMiXwS54ajHAP8HGr3+aI+TXskUHRmXiynJbPXLCkt7AVMz4nccdoo # jR/Qj2g6v2yyRDl2rGKIVzJ0Yp7vn1JPNbPFTuw0Ehen35+aKkh6FfJX9QMervpH # UoW/AQIDAQABo4IByzCCAccwHQYDVR0OBBYEFI+W5wtfA9L5Z0kYQjojgxhrlzZ2 # MB8GA1UdIwQYMBaAFGtpKDo1L0hjQM972K9J6T7ZPdshMGwGA1UdHwRlMGMwYaBf # oF2GW2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29m # dCUyMFB1YmxpYyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENBJTIwMjAyMC5jcmww # eQYIKwYBBQUHAQEEbTBrMGkGCCsGAQUFBzAChl1odHRwOi8vd3d3Lm1pY3Jvc29m # dC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFB1YmxpYyUyMFJTQSUyMFRp # bWVzdGFtcGluZyUyMENBJTIwMjAyMC5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUB # Af8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4AwZgYDVR0gBF8wXTBRBgwr # BgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQu # Y29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMAgGBmeBDAEEAjANBgkqhkiG # 9w0BAQwFAAOCAgEARDIcwv2XI6Rv81ERO89mKeb61MVI7BOV2t7f9kRrxEsL25rJ # N2yx4UhQGo4KNl0PMaBgz97FISgiz3iAkm5Fb+lfLEqfHyfCaLOsq2sH9mFYrPLX # Ffjju1PUuiRj0M6Zj53H80HOJ3tX6mePh4immyAxKBXXXUE9hIJJPX88QmPxGedm # rydu3Un6yPyA5sp/VddDt4kKYNhfgvbzU65O51YKA6B2vfkN6WK9CBxp0preYq4B # k+N+s6OVp1z/BcTIbMB9WosokmYlc4aK9dAvQudnD9wvPzxKDClF7LS46DztEzJH # lv9Ra9fOilw+OUEYAaNMSJoLVk3c1hZ5Q/qe/ogwSLkqzXEVw0WLqv2mGWg4VkiN # EmHTyFlYeV717lgN9WvKENEjvqD2tzZPNJNPOuMIosidSrG0p2mnn4Pb7KXoIa6W # PJYwsMXwlLceR0ETYACTiPCCgAiuHdNeDJNIZUTtJUFUR3oKiINvSul6pHN+tFtm # SRlHLLZSqJJFY+igB4xsqy0T83qWH4mVCauIF8sW6bym9VydhTduvNmlKDV6PUck # StXIdH+upOvso/PJM77gu/ryVrTQ7P1KSDOh4ZtJFOuCVCezDBEHAHO5KX7expu2 # HkSvqCoKlIGFwn5s21/JyVyWZz2vAA1lbCKrLjQMQiNAmV5FC6H6qOQXus8xggPU # MIID0AIBATB4MGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFt # cGluZyBDQSAyMDIwAhMzAAAAWXzacemNXvXAAAAAAABZMA0GCWCGSAFlAwQCAQUA # oIIBLTAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIE # IH0muMqKL8XQ4BxHLpgfsIDx4BjTmTT2JQX5xpGwCwakMIHdBgsqhkiG9w0BCRAC # LzGBzTCByjCBxzCBoAQgy0W6sduG6bHFxCfh44/ca3FFcO0fDssjH0gdmBit/rww # fDBlpGMwYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5n # IENBIDIwMjACEzMAAABZfNpx6Y1e9cAAAAAAAFkwIgQg2aGPSyfgTKIPOuZi5+OG # GZRzPS8sYF6XQTw2/IPxIA8wDQYJKoZIhvcNAQELBQAEggIAJJQI8TFtc0aPBr+2 # x8ryBj2mgrhZ8JFApKiGtOxgssJwfZEnarEpe7ds29ZZXyT1t06JEbNClsqkpKTh # kflvqMcb4pEIUzciVheSkRccfeGvfwNreSfVeOj0w4tfu9/5bV7OHkAjmAuG5Bwq # WkCcwdHYFuEuyfHpHrSbHLvm6WB6hj2QisVSR0KJOfOiQorBFN1IWjpp2O2h/JPY # yYwpgCTtcANSwh+kLSGzDVqJMxEQaloJ/67B4AjHZ+MaYNb+HAacYXfP7fdMU24y # 9VEIIQZCUNv6Rxw0T9bLR6Qecoipb4tqYd9PEObiDBVIIwg+JBrCz9JCCkC+Tyid # ByppZnEgDA6jae+ttCkMpN4ao6n290RS46jQBEXqStn8gHzMgmu8T2APAsdXoBE8 # Er8zhGWt5mmWi7KCUpmK6mT3KlLUMByKJ8BnPE/Eo20I9xsk7qf+wxbT5cTQX4/Q # H/v6+joyAIvT3GONVASVZmh6yPCqwgneesY4SZAv2A7nKoVIMmhbNj+r/g/RSyk7 # lcPIsZxzUNJo1xb3JdkDxlq4btulH4mp88dtnTdbayuZTQgxKwduM+PAT3+aZ3IE # Kp6EYzulgviaOPnGbRFsxWZVhGM9lHIGoRhcAvCpVyvgT4kjCUPDlxfsTduY+FO7 # 1hA9h6CwXs6J34kdzjN/xmbdHU8= # SIG # End signature block |