1
0
Files
Repository/Windows-ActivateBitlocker/Modules/DellBIOSProvider/DSCResources/DCPP_PowerManagement/DCPP_PowerManagement.psm1
2025-10-31 08:58:36 +01:00

1063 lines
70 KiB
PowerShell
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Import the helper functions
Import-Module $PSScriptRoot\..\..\Misc\helper.psm1 -Verbose:$false
function Get-TargetResource
{
[CmdletBinding()]
[OutputType([System.Collections.Hashtable])]
param
(
[parameter(Mandatory = $true)]
[System.String]
$BlockDefinition
)
#Write-Verbose "Use this cmdlet to deliver information about command processing."
#Write-Debug "Use this cmdlet to write debug information while troubleshooting."
<#
$returnValue = @{
BlockDefinition = [System.String]
Category = [System.String]
AutoOn = [System.String]
AutoOnHr = [System.UInt16]
AutoOnMn = [System.UInt16]
AutoOnSun = [System.String]
AutoOnMon = [System.String]
AutoOnTue = [System.String]
AutoOnWed = [System.String]
AutoOnThur = [System.String]
AutoOnFri = [System.String]
AutoOnSat = [System.String]
DeepSleepCtrl = [System.String]
FanSpeed = [System.String]
FanSpeedLvl = [System.UInt16]
UsbWake = [System.String]
FanCtrlOvrd = [System.String]
AcPwrRcvry = [System.String]
WakeOnLan = [System.String]
SfpwakeOnLan = [System.String]
WakeOnAc = [System.String]
WakeOnDock = [System.String]
LidSwitch = [System.String]
BlinkPowerSupply1LED = [System.String]
BlinkPowerSupply2LED = [System.String]
WlanAutoSense = [System.String]
WwanAutoSense = [System.String]
BlockSleep = [System.String]
SleepMode = [System.String]
PrimaryBattChargeCfg = [System.String]
CustomChargeStart = [System.UInt16]
CustomChargeStop = [System.UInt16]
SliceBattChargeCfg = [System.String]
ModBattChargeCfg = [System.String]
DockBatteryChargeConfiguration = [System.String]
IntlSmartConnect = [System.String]
IntelReadyModeEn = [System.String]
PeakShiftCfg = [System.String]
PeakShiftBatteryThreshold = [System.UInt16]
PeakShiftDayConfiguration = [System.String]
StartTime = [System.String]
EndTime = [System.String]
ChargeStartTime = [System.String]
AdvBatteryChargeCfg = [System.String]
AdvancedBatteryChargeConfiguration = [System.String]
Type_CBatteryOverloadProtection = [System.String]
BeginningOfDay = [System.String]
WorkPeriod = [System.String]
Password = [System.String]
SecurePassword = [System.String]
PathToKey = [System.String]
}
$returnValue
#>
# Check if module DellBIOSprovider is already loaded. If not, load it.
try{
$bool = Confirm-DellPSDrive -verbose
}
catch
{
write-Verbose $_
$msg = "Get-TargetResource: $($_.Exception.Message)"
Write-DellEventLog -Message $msg -EventID 1 -EntryType 'Error'
write-Verbose "Exiting Get-TargetResource"
return
}
if ($bool) {
Write-Verbose "Dell PS-Drive DellSmbios is found."
}
else{
$Message = Get-TargetResource: Module DellBiosProvider was imported correctly."
Write-DellEventLog -Message $Message -EventID 2
}
$Get = get-childitem -path @("DellSmbios:\" + $Category)
# Removing Verbose and Debug from output
$PSBoundParameters.Remove("Verbose") | out-null
$PSBoundParameters.Remove("Debug") | out-null
$out = @{}
$Get | foreach-Object {$out.Add($_.Attribute, $_.CurrentValue)}
$out.add('Category', $Category )
$out
}
function Set-TargetResource
{
[CmdletBinding()]
param
(
[parameter(Mandatory = $true)]
[System.String]
$BlockDefinition,
[System.String]
$Category,
[ValidateSet("EveryDay","Disabled","WeekDays","SelectDays")]
[System.String]
$AutoOn,
[System.UInt16]
$AutoOnHr,
[System.UInt16]
$AutoOnMn,
[System.UInt16]
$AutoWakePeriod,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnSun,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnMon,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnTue,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnWed,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnThur,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnFri,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnSat,
[ValidateSet("Disabled","S5Only","S4AndS5")]
[System.String]
$DeepSleepCtrl,
[ValidateSet("Auto","High","Med","Low","MedHigh","MedLow")]
[System.String]
$FanSpeed,
[System.UInt16]
$FanSpeedLvl,
[ValidateSet("Disabled","Enabled")]
[System.String]
$UsbWake,
[ValidateSet("Enabled","Disabled")]
[System.String]
$FanCtrlOvrd,
[ValidateSet("Off","On","Last")]
[System.String]
$AcPwrRcvry,
[ValidateSet("AddInCard","Onboard","Disabled","LanOnly","LanWithPxeBoot","WlanOnly","LanWlan")]
[System.String]
$WakeOnLan,
[ValidateSet("SFP","LANSFP","SFPPXE")]
[System.String]
$SfpwakeOnLan,
[ValidateSet("Disabled","Enabled")]
[System.String]
$WakeOnAc,
[ValidateSet("Enabled","Disabled")]
[System.String]
$WakeOnDock,
[ValidateSet("Enabled","Disabled")]
[System.String]
$LidSwitch,
[ValidateSet("Enabled")]
[System.String]
$BlinkPowerSupply1LED,
[ValidateSet("Enabled")]
[System.String]
$BlinkPowerSupply2LED,
[ValidateSet("Disabled","Enabled")]
[System.String]
$WlanAutoSense,
[ValidateSet("Disabled","Enabled")]
[System.String]
$WwanAutoSense,
[ValidateSet("Enabled","Disabled")]
[System.String]
$BlockSleep,
[ValidateSet("OSAutomaticSelection","ForceS3")]
[System.String]
$SleepMode,
[ValidateSet("Auto","Standard","Express","PrimAcUse","Custom")]
[System.String]
$PrimaryBattChargeCfg,
[System.UInt16]
$CustomChargeStart,
[System.UInt16]
$CustomChargeStop,
[ValidateSet("Standard","Express")]
[System.String]
$SliceBattChargeCfg,
[ValidateSet("Standard","Express")]
[System.String]
$ModBattChargeCfg,
[ValidateSet("Standard","Express")]
[System.String]
$DockBatteryChargeConfiguration,
[ValidateSet("Enabled","Disabled")]
[System.String]
$IntlSmartConnect,
[ValidateSet("Enabled","Disabled")]
[System.String]
$IntelReadyModeEn,
[ValidateSet("Enabled","Disabled")]
[System.String]
$PeakShiftCfg,
[ValidateSet("LanOnly","Disabled","LanWithPxeBoot")]
[System.String]
$WakeOnLan2,
[System.UInt16]
$PeakShiftBatteryThreshold,
[System.String]
$PeakShiftDayConfiguration,
[System.String]
$StartTime,
[System.String]
$EndTime,
[System.String]
$ChargeStartTime,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AdvBatteryChargeCfg,
[System.String]
$AdvancedBatteryChargeConfiguration,
[ValidateSet("7.5Watts","15Watts")]
[System.String]
$Type_CBatteryOverloadProtection,
[System.String]
$BeginningOfDay,
[System.String]
$WorkPeriod,
[ValidateSet("Enabled","Disabled")]
[System.String]
$SpeedShift,
[System.String]
$Password,
[System.String]
$SecurePassword,
[System.String]
$PathToKey
)
if (-not(CheckModuleLoaded)) {
Write-Verbose -Message 'Required module DellBiosProvider does not exist. Exiting.'
return $true
}
$DellPSDrive = get-psdrive -name Dellsmbios
if ( !$DellPSDrive) {
$Message = "Drive DellSmbios is not found. Exiting."
Write-Verbose $Message
Write-DellEventLog -Message $Message -EventID 3 -EntryType "Error"
return $true
}
$atts = $PSBoundParameters
$pathToCategory = $DellPSDrive.Name + ':\' + $atts["Category"]
Dir $pathToCategory -verbose
$atts.Remove("Verbose") | out-null
$atts.Remove("Category") | out-null
$atts.Remove("Debug") | out-null
$atts.Remove("BlockDefinition") | out-null
$startTime=$atts['StartTime']
$endTime=$atts['EndTime']
$chargeStartTime=$atts['ChargeStartTime']
$atts.Remove("StartTime") | out-null
$atts.Remove("EndTime") | out-null
$atts.Remove("ChargeStartTime") | out-null
$beginningOfDay=$atts['BeginningOfDay']
$workPeriod=$atts['WorkPeriod']
$atts.Remove("BeginningOfDay") | out-null
$atts.Remove("WorkPeriod") | out-null
$securePwd=$atts["SecurePassword"]
$passwordSet=$atts["Password"]
$atts.Remove("Password") | Out-Null
$atts.Remove("SecurePassword") | Out-Null
$pathToKey=$atts["PathToKey"]
if(-Not [string]::IsNullOrEmpty($pathToKey))
{
if(Test-Path $pathToKey)
{
$key=Get-Content $pathToKey
}
else
{
$key=""
}
}
$atts.Remove("PathToKey") | Out-Null
$atts.Keys | foreach-object {
if($($_) -eq "PeakShiftDayConfiguration")
{
$path = $pathToCategory + '\' + $($_)
$value = $atts[$_]
if(-Not [string]::IsNullOrEmpty($securePwd))
{
$pasvar=ConvertTo-SecureString $securePwd.ToString() -Key $key
Set-Item -path $path -value $value -StartTime $startTime -EndTime $endTime -ChargeStartTime $chargeStartTime -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -PasswordSecure $pasvar
}
elseif(-Not [string]::IsNullOrEmpty($passwordSet))
{
Set-Item -path $path -value $value -StartTime $startTime -EndTime $endTime -ChargeStartTime $chargeStartTime -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -Password $passwordSet
}
else
{
Set-Item -path $path -value $value -StartTime $startTime -EndTime $endTime -ChargeStartTime $chargeStartTime -verbose -ErrorVariable ev -ErrorAction SilentlyContinue
}
if ( $ev) {
$cmdline = $ExecutionContext.InvokeCommand.ExpandString($ev.InvocationInfo.Line)
$Message = "An error occured in executing " + $cmdline + "`nError message: $($ev.ErrorDetails)"
Write-Verbose $Message
Write-DellEventLog -Message $Message -EventID 5 -EntryType "Error"
}
}
elseif($($_) -eq "AdvancedBatteryChargeConfiguration")
{
$path = $pathToCategory + '\' + $($_)
$value = $atts[$_]
if(-Not [string]::IsNullOrEmpty($securePwd))
{
$pasvar=ConvertTo-SecureString $securePwd.ToString() -Key $key
Set-Item -path $path -value $value -BeginningOfDay $beginningOfDay -WorkPeriod $workPeriod -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -PasswordSecure $pasvar
}
elseif(-Not [string]::IsNullOrEmpty($passwordSet))
{
Set-Item -path $path -value $value -BeginningOfDay $beginningOfDay -WorkPeriod $workPeriod -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -Password $passwordSet
}
else
{
Set-Item -path $path -value $value -BeginningOfDay $beginningOfDay -WorkPeriod $workPeriod -verbose -ErrorVariable ev -ErrorAction SilentlyContinue
}
if ( $ev) {
$cmdline = $ExecutionContext.InvokeCommand.ExpandString($ev.InvocationInfo.Line)
$Message = "An error occured in executing " + $cmdline + "`nError message: $($ev.ErrorDetails)"
Write-Verbose $Message
Write-DellEventLog -Message $Message -EventID 5 -EntryType "Error"
}
}
else
{
$path=""
if($($_) -eq "Type_CBatteryOverloadProtection")
{
$path = $pathToCategory + '\' + "Type-CBatteryOverloadProtection"
}
else
{
$path = $pathToCategory + '\' + $($_)
}
$value = $atts[$_]
if(-Not [string]::IsNullOrEmpty($securePwd))
{
$pasvar=ConvertTo-SecureString $securePwd.ToString() -Key $key
Set-Item -path $path -value $value -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -PasswordSecure $pasvar
}
elseif(-Not [string]::IsNullOrEmpty($passwordSet))
{
Set-Item -path $path -value $value -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -Password $passwordSet
}
else
{
Set-Item -path $path -value $value -verbose -ErrorVariable ev -ErrorAction SilentlyContinue
}
if ( $ev) {
$cmdline = $ExecutionContext.InvokeCommand.ExpandString($ev.InvocationInfo.Line)
$Message = "An error occured in executing " + $cmdline + "`nError message: $($ev.ErrorDetails)"
Write-Verbose $Message
Write-DellEventLog -Message $Message -EventID 5 -EntryType "Error"
}
}
}
}
function Test-TargetResource
{
[CmdletBinding()]
[OutputType([System.Boolean])]
param
(
[parameter(Mandatory = $true)]
[System.String]
$BlockDefinition,
[System.String]
$Category,
[ValidateSet("EveryDay","Disabled","WeekDays","SelectDays")]
[System.String]
$AutoOn,
[System.UInt16]
$AutoOnHr,
[System.UInt16]
$AutoOnMn,
[System.UInt16]
$AutoWakePeriod,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnSun,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnMon,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnTue,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnWed,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnThur,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnFri,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AutoOnSat,
[ValidateSet("Disabled","S5Only","S4AndS5")]
[System.String]
$DeepSleepCtrl,
[ValidateSet("Auto","High","Med","Low","MedHigh","MedLow")]
[System.String]
$FanSpeed,
[System.UInt16]
$FanSpeedLvl,
[ValidateSet("Disabled","Enabled")]
[System.String]
$UsbWake,
[ValidateSet("Enabled","Disabled")]
[System.String]
$FanCtrlOvrd,
[ValidateSet("Off","On","Last")]
[System.String]
$AcPwrRcvry,
[ValidateSet("AddInCard","Onboard","Disabled","LanOnly","LanWithPxeBoot","WlanOnly","LanWlan")]
[System.String]
$WakeOnLan,
[ValidateSet("SFP","LANSFP","SFPPXE")]
[System.String]
$SfpwakeOnLan,
[ValidateSet("Disabled","Enabled")]
[System.String]
$WakeOnAc,
[ValidateSet("Enabled","Disabled")]
[System.String]
$WakeOnDock,
[ValidateSet("Enabled","Disabled")]
[System.String]
$LidSwitch,
[ValidateSet("Enabled")]
[System.String]
$BlinkPowerSupply1LED,
[ValidateSet("Enabled")]
[System.String]
$BlinkPowerSupply2LED,
[ValidateSet("Disabled","Enabled")]
[System.String]
$WlanAutoSense,
[ValidateSet("Disabled","Enabled")]
[System.String]
$WwanAutoSense,
[ValidateSet("Enabled","Disabled")]
[System.String]
$BlockSleep,
[ValidateSet("OSAutomaticSelection","ForceS3")]
[System.String]
$SleepMode,
[ValidateSet("Auto","Standard","Express","PrimAcUse","Custom")]
[System.String]
$PrimaryBattChargeCfg,
[System.UInt16]
$CustomChargeStart,
[System.UInt16]
$CustomChargeStop,
[ValidateSet("Standard","Express")]
[System.String]
$SliceBattChargeCfg,
[ValidateSet("Standard","Express")]
[System.String]
$ModBattChargeCfg,
[ValidateSet("Standard","Express")]
[System.String]
$DockBatteryChargeConfiguration,
[ValidateSet("Enabled","Disabled")]
[System.String]
$IntlSmartConnect,
[ValidateSet("Enabled","Disabled")]
[System.String]
$IntelReadyModeEn,
[ValidateSet("Enabled","Disabled")]
[System.String]
$PeakShiftCfg,
[System.UInt16]
$PeakShiftBatteryThreshold,
[System.String]
$PeakShiftDayConfiguration,
[System.String]
$StartTime,
[System.String]
$EndTime,
[System.String]
$ChargeStartTime,
[ValidateSet("Enabled","Disabled")]
[System.String]
$AdvBatteryChargeCfg,
[System.String]
$AdvancedBatteryChargeConfiguration,
[ValidateSet("7.5Watts","15Watts")]
[System.String]
$Type_CBatteryOverloadProtection,
[System.String]
$BeginningOfDay,
[System.String]
$WorkPeriod,
[ValidateSet("Enabled","Disabled")]
[System.String]
$SpeedShift,
[ValidateSet("LanOnly","Disabled","LanWithPxeBoot")]
[System.String]
$WakeOnLan2,
[System.String]
$Password,
[System.String]
$SecurePassword,
[System.String]
$PathToKey
)
$Get = Get-TargetResource $PSBoundParameters['Category'] -verbose
New-DellEventLog
$PSBoundParameters.Remove("Verbose") | out-null
$PSBoundParameters.Remove("Debug") | out-null
$PSBoundParameters.Remove("Category") | out-null
$startTime=$PSBoundParameters['StartTime']
$endTime=$PSBoundParameters['EndTime']
$chargestartTime=$PSBoundParameters['ChargeStartTime']
$beginningOfDay=$PSBoundParameters['BeginningOfDay']
$workPeriod=$PSBoundParameters['WorkPeriod']
$PSBoundParameters.Remove("StartTime") | out-null
$PSBoundParameters.Remove("EndTime") | out-null
$PSBoundParameters.Remove("ChargeStartTime") | out-null
$PSBoundParameters.Remove("BeginningOfDay") | out-null
$PSBoundParameters.Remove("WorkPeriod") | out-null
$PSBoundParameters.Remove("BlockDefinition") | out-null
$bool = $true
foreach ($config_att in $PSBoundParameters.GetEnumerator())
{
if ($Get.ContainsKey($config_att.Key)) {
if($config_att.Key -match "PeakShiftDayConfiguration")
{
$currentvalue = $Get[$config_att.Key]
$whichDay=$config_att.Value
if($whichDay -eq "Monday")
{
$iIndex=0
}
elseif($whichDay -eq "Tuesday")
{
$iIndex=1
}
elseif($whichDay -eq "Wednesday")
{
$iIndex=2
}
elseif($whichDay -eq "Thursday")
{
$iIndex=3
}
elseif($whichDay -eq "Friday")
{
$iIndex=4
}
elseif($whichDay -eq "Saturday")
{
$iIndex=5
}
elseif($whichDay -eq "Sunday")
{
$iIndex=6
}
if (($currentvalue[$iIndex].StartTime -ne $startTime) -or ($currentvalue[$iIndex].EndTime -ne $endTime) -or ($currentvalue[$iIndex].ChargeStartTime -ne $chargestartTime)){
$bool = $false
#$drift = "`nCurrentValue: $currentvalue_nospace`nDesiredValue: $($config_att.value)"
$drift = "`nCurrentValue: StartTime "+$currentvalue[$iIndex].StartTime+" EndTime "+$currentvalue[$iIndex].EndTime+" ChargeStartTime "+$currentvalue[$iIndex].ChargeStartTime+"`nDesiredValue: StartTime "+$startTime+" EndTime "+$endTime+" ChargeStartTime "+$chargestartTime
$message = "Configuration is drifted in category $Category for $($config_att.Key). $drift"
write-verbose $message
Write-DellEventLog -Message $message -EventID 4 -EntryType Warning
}
else {
write-Debug "Configuration is same for $config_att."
}
}
elseif($config_att.Key -match "AdvancedBatteryChargeConfiguration")
{
$currentvalue = $Get[$config_att.Key]
$whichDay=$config_att.Value
if($whichDay -eq "Monday")
{
$iIndex=0
}
elseif($whichDay -eq "Tuesday")
{
$iIndex=1
}
elseif($whichDay -eq "Wednesday")
{
$iIndex=2
}
elseif($whichDay -eq "Thursday")
{
$iIndex=3
}
elseif($whichDay -eq "Friday")
{
$iIndex=4
}
elseif($whichDay -eq "Saturday")
{
$iIndex=5
}
elseif($whichDay -eq "Sunday")
{
$iIndex=6
}
if (($currentvalue[$iIndex].BeginningOfDay -ne $beginningOfDay) -or ($currentvalue[$iIndex].WorkPeriod -ne $workPeriod)){
$bool = $false
#$drift = "`nCurrentValue: $currentvalue_nospace`nDesiredValue: $($config_att.value)"
$drift = "`nCurrentValue: BeginningOfDay "+$currentvalue[$iIndex].BeginningOfDay+" WorkPeriod "+$currentvalue[$iIndex].WorkPeriod+"`nDesiredValue: BeginningOfDay "+$beginningOfDay+" WorkPeriod "+$workPeriod
$message = "Configuration is drifted in category $Category for $($config_att.Key). $drift"
write-verbose $message
Write-DellEventLog -Message $message -EventID 4 -EntryType Warning
}
else {
write-Debug "Configuration is same for $config_att."
}
}
else
{
$currentvalue=""
if($config_att.Key -match "Type_CBatteryOverloadProtection")
{
$currentvalue = $Get["Type-CBatteryOverloadProtection"]
}
else
{
$currentvalue = $Get[$config_att.Key]
}
$currentvalue_nospace = $currentvalue -replace " ", ""
if ($config_att.Value -ne $currentvalue_nospace){
$bool = $false
$drift = "`nCurrentValue: $currentvalue_nospace`nDesiredValue: $($config_att.value)"
$message = "Configuration is drifted in category $Category for $($config_att.Key). $drift"
write-verbose $message
Write-DellEventLog -Message $message -EventID 4 -EntryType Warning
}
else {
write-Debug "Configuration is same for $config_att."
}
}
}
else {
$message = "Unsupported attribute $($config_att)."
Write-Verbose $message
}
}
return $bool
}
Export-ModuleMember -Function *-TargetResource
# SIG # Begin signature block
# MIIkoAYJKoZIhvcNAQcCoIIkkTCCJI0CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAobZh4LxqOtTwx
# LOGi1r5SQObPHnLtmViLjo6aWmuPB6CCExYwggXfMIIEx6ADAgECAhBOQOQ3VO3m
# jAAAAABR05R/MA0GCSqGSIb3DQEBCwUAMIG+MQswCQYDVQQGEwJVUzEWMBQGA1UE
# ChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9s
# ZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkgRW50cnVzdCwgSW5jLiAtIGZv
# ciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQDEylFbnRydXN0IFJvb3QgQ2Vy
# dGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjAeFw0yMTA1MDcxNTQzNDVaFw0zMDEx
# MDcxNjEzNDVaMGkxCzAJBgNVBAYTAlVTMRYwFAYDVQQKDA1FbnRydXN0LCBJbmMu
# MUIwQAYDVQQDDDlFbnRydXN0IENvZGUgU2lnbmluZyBSb290IENlcnRpZmljYXRp
# b24gQXV0aG9yaXR5IC0gQ1NCUjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
# AoICAQCngY/3FEW2YkPy2K7TJV5IT1G/xX2fUBw10dZ+YSqUGW0nRqSmGl33VFFq
# gCLGqGZ1TVSDyV5oG6v2W2Swra0gvVTvRmttAudFrnX2joq5Mi6LuHccUk15iF+l
# OhjJUCyXJy2/2gB9Y3/vMuxGh2Pbmp/DWiE2e/mb1cqgbnIs/OHxnnBNCFYVb5Cr
# +0i6udfBgniFZS5/tcnA4hS3NxFBBuKK4Kj25X62eAUBw2DtTwdBLgoTSeOQm3/d
# vfqsv2RR0VybtPVc51z/O5uloBrXfQmywrf/bhy8yH3m6Sv8crMU6UpVEoScRCV1
# HfYq8E+lID1oJethl3wP5bY9867DwRG8G47M4EcwXkIAhnHjWKwGymUfe5SmS1dn
# DH5erXhnW1XjXuvH2OxMbobL89z4n4eqclgSD32m+PhCOTs8LOQyTUmM4OEAwjig
# nPqEPkHcblauxhpb9GdoBQHNG7+uh7ydU/Yu6LZr5JnexU+HWKjSZR7IH9Vybu5Z
# HFc7CXKd18q3kMbNe0WSkUIDTH0/yvKquMIOhvMQn0YupGaGaFpoGHApOBGAYGuK
# Q6NzbOOzazf/5p1nAZKG3y9I0ftQYNVc/iHTAUJj/u9wtBfAj6ju08FLXxLq/f0u
# DodEYOOp9MIYo+P9zgyEIg3zp3jak/PbOM+5LzPG/wc8Xr5F0wIDAQABo4IBKzCC
# AScwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQEwHQYDVR0lBBYw
# FAYIKwYBBQUHAwMGCCsGAQUFBwMIMDsGA1UdIAQ0MDIwMAYEVR0gADAoMCYGCCsG
# AQUFBwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L3JwYTAzBggrBgEFBQcBAQQn
# MCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVudHJ1c3QubmV0MDAGA1UdHwQp
# MCcwJaAjoCGGH2h0dHA6Ly9jcmwuZW50cnVzdC5uZXQvZzJjYS5jcmwwHQYDVR0O
# BBYEFIK61j2Xzp/PceiSN6/9s7VpNVfPMB8GA1UdIwQYMBaAFGpyJnrQHu995ztp
# UdRsjZ+QEmarMA0GCSqGSIb3DQEBCwUAA4IBAQAfXkEEtoNwJFMsVXMdZTrA7LR7
# BJheWTgTCaRZlEJeUL9PbG4lIJCTWEAN9Rm0Yu4kXsIBWBUCHRAJb6jU+5J+Nzg+
# LxR9jx1DNmSzZhNfFMylcfdbIUvGl77clfxwfREc0yHd0CQ5KcX+Chqlz3t57jpv
# 3ty/6RHdFoMI0yyNf02oFHkvBWFSOOtg8xRofcuyiq3AlFzkJg4sit1Gw87kVlHF
# VuOFuE2bRXKLB/GK+0m4X9HyloFdaVIk8Qgj0tYjD+uL136LwZNr+vFie1jpUJuX
# bheIDeHGQ5jXgWG2hZ1H7LGerj8gO0Od2KIc4NR8CMKvdgb4YmZ6tvf6yK81MIIG
# gzCCBGugAwIBAgIQNa+3e500H2r8j4RGqzE1KzANBgkqhkiG9w0BAQ0FADBpMQsw
# CQYDVQQGEwJVUzEWMBQGA1UECgwNRW50cnVzdCwgSW5jLjFCMEAGA1UEAww5RW50
# cnVzdCBDb2RlIFNpZ25pbmcgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
# IENTQlIxMB4XDTIxMDUwNzE5MTk1MloXDTQwMTIyOTIzNTkwMFowYzELMAkGA1UE
# BhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xPDA6BgNVBAMTM0VudHJ1c3Qg
# RXh0ZW5kZWQgVmFsaWRhdGlvbiBDb2RlIFNpZ25pbmcgQ0EgLSBFVkNTMjCCAiIw
# DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL69pznJpX3sXWXx9Cuph9DnrRrF
# GjsYzuGhUY1y+s5YH1y4JEIPRtUxl9BKTeObMMm6l6ic/kU2zyeA53u4bsEkt9+n
# dNyF8qMkWEXMlJQ7AuvEjXxG9VxmguOkwdMfrG4MUyMO1Dr62kLxg1RfNTJW8rV4
# m1cASB6pYWEnDnMDQ7bWcJL71IWaMMaz5ppeS+8dKthmqxZG/wvYD6aJSgJRV0E8
# QThOl8dRMm1njmahXk2fNSKv1Wq3f0BfaDXMafrxBfDqhabqMoXLwcHKg2lFSQbc
# CWy6SWUZjPm3NyeMZJ414+Xs5wegnahyvG+FOiymFk49nM8I5oL1RH0owL2JrWwv
# 3C94eRHXHHBL3Z0ITF4u+o29p91j9n/wUjGEbjrY2VyFRJ5jBmnQhlh4iZuHu1gc
# pChsxv5pCpwerBFgal7JaWUu7UMtafF4tzstNfKqT+If4wFvkEaq1agNBFegtKzj
# bb2dGyiAJ0bH2qpnlfHRh3vHyCXphAyPiTbSvjPhhcAz1aA8GYuvOPLlk4C/xsOr
# e5PEPZ257kV2wNRobzBePLQ2+ddFQuASBoDbpSH85wV6KI20jmB798i1SkesFGaX
# oFppcjFXa1OEzWG6cwcVcDt7AfynP4wtPYeM+wjX5S8Xg36Cq08J8inhflV3ZZQF
# HVnUCt2TfuMUXeK7AgMBAAGjggErMIIBJzASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
# A1UdDgQWBBTOiU+CUaoVooRiyjEjYdJh+/j+eDAfBgNVHSMEGDAWgBSCutY9l86f
# z3Hokjev/bO1aTVXzzAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6
# Ly9vY3NwLmVudHJ1c3QubmV0MDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwu
# ZW50cnVzdC5uZXQvY3NicjEuY3JsMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
# BggrBgEFBQcDAzBEBgNVHSAEPTA7MDAGBFUdIAAwKDAmBggrBgEFBQcCARYaaHR0
# cDovL3d3dy5lbnRydXN0Lm5ldC9ycGEwBwYFZ4EMAQMwDQYJKoZIhvcNAQENBQAD
# ggIBAD4AVLgq849mr2EWxFiTZPRBi2RVjRs1M6GbkdirRsqrX7y+fnDk0tcHqJYH
# 14bRVwoI0NB4Tfgq37IE85rh13zwwQB6wUCh34qMt8u0HQFh8piapt24gwXKqSwW
# 3JwtDv6nl+RQqZeVwUsqjFHjxALga3w1TVO8S5QTi1MYFl6mCqe4NMFssess5DF9
# DCzGfOGkVugtdtWyE3XqgwCuAHfGb6k97mMUgVAW/FtPEhkOWw+N6kvOBkyJS64g
# zI5HpnXWZe4vMOhdNI8fgk1cQqbyFExQIJwJonQkXDnYiTKFPK+M5Wqe5gQ6pRP/
# qh3NR0suAgW0ao/rhU+B7wrbfZ8pj6XCP1I4UkGVO7w+W1QwQiMJY95QjYk1Rfqr
# uA+Poq17ehGT8Y8ohHtoeUdq6GQpTR/0HS9tHsiUhjzTWpl6a3yrNfcrOUtPuT8W
# ku8pjI2rrAEazHFEOctAPiASzghw40f+3IDXCADRC2rqIbV5ZhfpaqpW3c0VeLED
# wBStPkcYde0KU0syk83/gLGQ1hPl5EF4Iu1BguUO37DOlSFF5osB0xn39CtVrNlW
# c2MQ4LigbctUlpigmSFRBqqmDDorY8t52kO50hLM3o9VeukJ8+Ka0yXBezaS2uDl
# UmfN4+ZUCqWd1HOj0y9dBmSFA3d/YNjCvHTJlZFot7d+YRl1MIIGqDCCBJCgAwIB
# AgIQAe4UxLGsyd7P5PzHxoWYOTANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJV
# UzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjE8MDoGA1UEAxMzRW50cnVzdCBFeHRl
# bmRlZCBWYWxpZGF0aW9uIENvZGUgU2lnbmluZyBDQSAtIEVWQ1MyMB4XDTIxMTEx
# ODIzMDczOVoXDTIyMTIxMjIzMDczOVowgdgxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI
# EwVUZXhhczETMBEGA1UEBxMKUm91bmQgUm9jazETMBEGCysGAQQBgjc8AgEDEwJV
# UzEZMBcGCysGAQQBgjc8AgECEwhEZWxhd2FyZTERMA8GA1UEChMIRGVsbCBJbmMx
# HTAbBgNVBA8TFFByaXZhdGUgT3JnYW5pemF0aW9uMR0wGwYDVQQLExRDbGllbnQg
# UHJvZHVjdCBHcm91cDEQMA4GA1UEBRMHMjE0MTU0MTERMA8GA1UEAxMIRGVsbCBJ
# bmMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCcnoY5qeZB6eKg6TA0
# u4F4EOiljq6evB9RAQVNoxAiM/LCe2DdMC6NJZ65D+NvuoqdJOwFfFF4XsDZ1Ejt
# GIKSkFWi4UrgdG/VAh8QUru2zJc7Loun9WlgixCc3+umiC+BepYwkzRwCA6fnXDd
# pn7leFV6+hfTZxLZ+3FM+apPHrCA06ediV7TTqE2D+8OiO2ltOzTMGBSIFd+6QS3
# 9yqKiEFgU6Fj/XrZ/daJ7M3Y9E1HJGcmKB5I+7tO7WMcFXElJiCkXt8MJiKZWf9v
# sQUwz95YEwFHyQq28CIqSwhzTsu1RTr2ntYztWusyggBmeRMOZbpBCPwov/uH3Qg
# p3fss43WHpTOvrrOxy/aNi3l4wiAzE76I/Ormena6Q5KeDDRspg39LMopZqujyB3
# 0n1+MLt7AT+Rn/Wo8QEWmHWTPKxNgDLLGzmUdtwfNgkkBuh9d7QM4RQVm97Q/yCI
# OrVDpGpJic3WcgiWoeBNYGHjml0FQC0Y3wkmgOgUND7xL5ECAwEAAaOCAWAwggFc
# MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLo0bmGFz/lpCSH/8Bb/n9HscUq3MB8G
# A1UdIwQYMBaAFM6JT4JRqhWihGLKMSNh0mH7+P54MGcGCCsGAQUFBwEBBFswWTAj
# BggrBgEFBQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMgYIKwYBBQUHMAKG
# Jmh0dHA6Ly9haWEuZW50cnVzdC5uZXQvZXZjczItY2hhaW4ucDdjMDEGA1UdHwQq
# MCgwJqAkoCKGIGh0dHA6Ly9jcmwuZW50cnVzdC5uZXQvZXZjczIuY3JsMA4GA1Ud
# DwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzBLBgNVHSAERDBCMDcGCmCG
# SAGG+mwKAQIwKTAnBggrBgEFBQcCARYbaHR0cHM6Ly93d3cuZW50cnVzdC5uZXQv
# cnBhMAcGBWeBDAEDMA0GCSqGSIb3DQEBCwUAA4ICAQCeCAC5jie90k3LIkOSD8lh
# F5ljcQDkp7HGkCvIVqNJ0hLHoLTubqURUWOBh0XVln6oGG80NVLVz/NqW4kGpLoC
# ntX/BGb68IbyyEh/uA2ODqRkFfnHhOqtoBlfn6A02/1GbW8Gjuc90MsK89ANVUyo
# g9l4DG+jjVjWpsRu21YypDNwnuHTzjbvl1E85zNDUJgq1P/9lxwvXr/DKQgwHsQs
# /7bflgYQsf2BS0aj1mDvnqUmFOVR6lEdbnxYo2cEmw3Uvx+Zd3oAkP+Cd8uxDn4b
# h+9DhnL+D7NNzbgAnDwB5RAiHp4yCIvHwHE+IZhUEGWLSqph81+oUUDwaeOohdMf
# NA3ZJYd8aSDgldapLuG3kfP91eMDu59AWtdFW1JZ0tGr8I24+LS4NeD6dsdb7RUj
# Z8VsK8S5VDKYyHzxQPYFI78w8wjIKZ9d1M7BrRiQMhg3U3gP9kj4GRVWIjJyxqPx
# JXahtIULNreCnfZzMi0w3QcLt1KwH4hYYQ9sO2EZYOUoZ4wWVodb5NQiM5Ksjmli
# 8262L7zhW5fb9LIzlvNf10z9Ab8nf+QN6dMWqydnHmB0kL6H1i515cE3cmBDo+b2
# QKQFbpI5d2AilrbsD3s9OD2siDrmTj+aFsZ3h/OZB2xiYkewm0QTpFDG5q715634
# kdBK9cjmdy5Y5OJ8+LSZkzGCEOAwghDcAgEBMHcwYzELMAkGA1UEBhMCVVMxFjAU
# BgNVBAoTDUVudHJ1c3QsIEluYy4xPDA6BgNVBAMTM0VudHJ1c3QgRXh0ZW5kZWQg
# VmFsaWRhdGlvbiBDb2RlIFNpZ25pbmcgQ0EgLSBFVkNTMgIQAe4UxLGsyd7P5PzH
# xoWYOTANBglghkgBZQMEAgEFAKB8MBAGCisGAQQBgjcCAQwxAjAAMBkGCSqGSIb3
# DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEV
# MC8GCSqGSIb3DQEJBDEiBCBaeHZtGV3h1mS037nI56FhmmMTkGSaOLONJLOFMAh9
# 2zANBgkqhkiG9w0BAQEFAASCAYBU9QErRaSmwJXkxFeUYLhooWIg9+2zlpaRYdom
# pX0XrQVRNq4rFRMa//dH6E21KnMdH/hydcOTyxbTWRKHAT4JyigJoFR2n+r/hXxb
# QfeZBWk9XzVmed3MVJ7bM1nx17l7T0NDr77NxzHfmcLZzHP6ZbxTz1lRQInuaHiW
# m0ekovmfBZl523gVcQ50yPZs9KKGhRrZvTNt6b7KDLOswGWqO7MQmPrKEyY5bYlR
# SB6bFt/+7K1PZD8ZejQo95FWfydLgrcfQzPA/VJ5e7bgCIc+EKw6+ZUVf+5Uoi+p
# gBW2ainu4fY1t/cFfgyS0gUUnHwELG4aVUHKeJL5hDsiRovuplvyASsQazc3KyBM
# usMpg2/zY1blPJnWo8IDIl8bpGeBJib7KoUATp/ktSmqmGM6vuzgIJnEolr/K3pa
# 89lTTojWx8AIsfqfrz2He2GAG7rqsMPYQjsilB8huuoO7EiMJ2jDsocMmjCZ6N44
# zUZ+M1lMMLaSw4xBrm56oAQOlBChgg48MIIOOAYKKwYBBAGCNwMDATGCDigwgg4k
# BgkqhkiG9w0BBwKggg4VMIIOEQIBAzENMAsGCWCGSAFlAwQCATCCAQ4GCyqGSIb3
# DQEJEAEEoIH+BIH7MIH4AgEBBgtghkgBhvhFAQcXAzAxMA0GCWCGSAFlAwQCAQUA
# BCCirD+XwvkK+mzTkDtCJ0I8aV5yu+0HXDhj/famYtAKzAIUeOH8vPHKGzeNLt7B
# UYMcfX4bBAAYDzIwMjIwOTI5MTA0MjM1WjADAgEeoIGGpIGDMIGAMQswCQYDVQQG
# EwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5
# bWFudGVjIFRydXN0IE5ldHdvcmsxMTAvBgNVBAMTKFN5bWFudGVjIFNIQTI1NiBU
# aW1lU3RhbXBpbmcgU2lnbmVyIC0gRzOgggqLMIIFODCCBCCgAwIBAgIQewWx1Elo
# UUT3yYnSnBmdEjANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UEBhMCVVMxFzAVBgNV
# BAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
# b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
# b3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9v
# dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNjAxMTIwMDAwMDBaFw0zMTAx
# MTEyMzU5NTlaMHcxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jw
# b3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEoMCYGA1UE
# AxMfU3ltYW50ZWMgU0hBMjU2IFRpbWVTdGFtcGluZyBDQTCCASIwDQYJKoZIhvcN
# AQEBBQADggEPADCCAQoCggEBALtZnVlVT52Mcl0agaLrVfOwAa08cawyjwVrhpon
# ADKXak3JZBRLKbvC2Sm5Luxjs+HPPwtWkPhiG37rpgfi3n9ebUA41JEG50F8eRzL
# y60bv9iVkfPw7mz4rZY5Ln/BJ7h4OcWEpe3tr4eOzo3HberSmLU6Hx45ncP0mqj0
# hOHE0XxxxgYptD/kgw0mw3sIPk35CrczSf/KO9T1sptL4YiZGvXA6TMU1t/HgNuR
# 7v68kldyd/TNqMz+CfWTN76ViGrF3PSxS9TO6AmRX7WEeTWKeKwZMo8jwTJBG1kO
# qT6xzPnWK++32OTVHW0ROpL2k8mc40juu1MO1DaXhnjFoTcCAwEAAaOCAXcwggFz
# MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMGYGA1UdIARfMF0w
# WwYLYIZIAYb4RQEHFwMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9kLnN5bWNiLmNv
# bS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEwLgYI
# KwYBBQUHAQEEIjAgMB4GCCsGAQUFBzABhhJodHRwOi8vcy5zeW1jZC5jb20wNgYD
# VR0fBC8wLTAroCmgJ4YlaHR0cDovL3Muc3ltY2IuY29tL3VuaXZlcnNhbC1yb290
# LmNybDATBgNVHSUEDDAKBggrBgEFBQcDCDAoBgNVHREEITAfpB0wGzEZMBcGA1UE
# AxMQVGltZVN0YW1wLTIwNDgtMzAdBgNVHQ4EFgQUr2PWyqNOhXLgp7xB8ymiOH+A
# dWIwHwYDVR0jBBgwFoAUtnf6aUhHn1MS1cLqBzJ2B9GXBxkwDQYJKoZIhvcNAQEL
# BQADggEBAHXqsC3VNBlcMkX+DuHUT6Z4wW/X6t3cT/OhyIGI96ePFeZAKa3mXfSi
# 2VZkhHEwKt0eYRdmIFYGmBmNXXHy+Je8Cf0ckUfJ4uiNA/vMkC/WCmxOM+zWtJPI
# TJBjSDlAIcTd1m6JmDy1mJfoqQa3CcmPU1dBkC/hHk1O3MoQeGxCbvC2xfhhXFL1
# TvZrjfdKer7zzf0D19n2A6gP41P3CnXsxnUuqmaFBJm3+AZX4cYO9uiv2uybGB+q
# ueM6AL/OipTLAduexzi7D1Kr0eOUA2AKTaD+J20UMvw/l0Dhv5mJ2+Q5FL3a5NPD
# 6itas5VYVQR9x5rsIwONhSrS/66pYYEwggVLMIIEM6ADAgECAhB71OWvuswHP6EB
# IwQiQU0SMA0GCSqGSIb3DQEBCwUAMHcxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRT
# eW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0
# d29yazEoMCYGA1UEAxMfU3ltYW50ZWMgU0hBMjU2IFRpbWVTdGFtcGluZyBDQTAe
# Fw0xNzEyMjMwMDAwMDBaFw0yOTAzMjIyMzU5NTlaMIGAMQswCQYDVQQGEwJVUzEd
# MBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVj
# IFRydXN0IE5ldHdvcmsxMTAvBgNVBAMTKFN5bWFudGVjIFNIQTI1NiBUaW1lU3Rh
# bXBpbmcgU2lnbmVyIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQCvDoqq+Ny/aXtUF3FHCb2NPIH4dBV3Z5Cc/d5OAp5LdvblNj5l1SQgbTD53R2D
# 6T8nSjNObRaK5I1AjSKqvqcLG9IHtjy1GiQo+BtyUT3ICYgmCDr5+kMjdUdwDLNf
# W48IHXJIV2VNrwI8QPf03TI4kz/lLKbzWSPLgN4TTfkQyaoKGGxVYVfR8QIsxLWr
# 8mwj0p8NDxlsrYViaf1OhcGKUjGrW9jJdFLjV2wiv1V/b8oGqz9KtyJ2ZezsNvKW
# lYEmLP27mKoBONOvJUCbCVPwKVeFWF7qhUhBIYfl3rTTJrJ7QFNYeY5SMQZNlANF
# xM48A+y3API6IsW0b+XvsIqbAgMBAAGjggHHMIIBwzAMBgNVHRMBAf8EAjAAMGYG
# A1UdIARfMF0wWwYLYIZIAYb4RQEHFwMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9k
# LnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNv
# bS9ycGEwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL3RzLWNybC53cy5zeW1hbnRl
# Yy5jb20vc2hhMjU2LXRzcy1jYS5jcmwwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgw
# DgYDVR0PAQH/BAQDAgeAMHcGCCsGAQUFBwEBBGswaTAqBggrBgEFBQcwAYYeaHR0
# cDovL3RzLW9jc3Aud3Muc3ltYW50ZWMuY29tMDsGCCsGAQUFBzAChi9odHRwOi8v
# dHMtYWlhLndzLnN5bWFudGVjLmNvbS9zaGEyNTYtdHNzLWNhLmNlcjAoBgNVHREE
# ITAfpB0wGzEZMBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtNjAdBgNVHQ4EFgQUpRMB
# qZ+FzBtuFh5fOzGqeTYAex0wHwYDVR0jBBgwFoAUr2PWyqNOhXLgp7xB8ymiOH+A
# dWIwDQYJKoZIhvcNAQELBQADggEBAEaer/C4ol+imUjPqCdLIc2yuaZycGMv41Up
# ezlGTud+ZQZYi7xXipINCNgQujYk+gp7+zvTYr9KlBXmgtuKVG3/KP5nz3E/5jMJ
# 2aJZEPQeSv5lzN7Ua+NSKXUASiulzMub6KlN97QXWZJBw7c/hub2wH9EPEZcF1rj
# pDvVaSbVIX3hgGd+Yqy3Ti4VmuWcI69bEepxqUH5DXk4qaENz7Sx2j6aescixXTN
# 30cJhsT8kSWyG5bphQjo3ep0YG5gpVZ6DchEWNzm+UgUnuW/3gC9d7GYFHIUJN/H
# ESwfAD/DSxTGZxzMHgajkF9cVIs+4zNbgg/Ft4YCTnGf6WZFP3YxggJaMIICVgIB
# ATCBizB3MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRp
# b24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5
# bWFudGVjIFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEHvU5a+6zAc/oQEjBCJBTRIw
# CwYJYIZIAWUDBAIBoIGkMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkq
# hkiG9w0BCQUxDxcNMjIwOTI5MTA0MjM1WjAvBgkqhkiG9w0BCQQxIgQgDCMT8nZM
# qYpgHT8CVwebaDTSQQJbi+4gvvMqMRx2EuIwNwYLKoZIhvcNAQkQAi8xKDAmMCQw
# IgQgxHTOdgB9AjlODaXk3nwUxoD54oIBPP72U+9dtx/fYfgwCwYJKoZIhvcNAQEB
# BIIBAHTMO9cRi0FL02IpR9OVz3gGFaHkshBo9vY4AbKyQMT6ciozpTSUQYnFN5v5
# P56a5PqBbK0ZYbm+nVdlvjG0cFjUM3izrvghT8nL3pVsyPdv0Xase7SciWM1ne7W
# olMAT76z5sIqiX+0LFmq7QkxhQGPw6xx63lqbkq5LBjNnaMvTvQNg35QuuFpU5uu
# GVJgEwiF96NhH8x7xu606VuU1YPwQ8SflOZSGMpxQnXRMVIEtCMbgkX18RQuY1Eh
# JhjkBrYgBwwOhpqzJFzQ5hj/YmKzaHZqM6LIhpY6rRy13neOrOJRjP4TP2zyPlkj
# LlVaZeV16whepP0isggSP0RCyVY=
# SIG # End signature block