<#
. SYNOPSIS
The TAB completion for functions and their arguments
Version : v6 . 1 . 1
Date : 05 . 07 . 2022
Copyright ( c ) 2014 — 2022 farag
Copyright ( c ) 2019 — 2022 farag & Inestic
Thanks to all https : / / forum . ru-board . com members involved
. DESCRIPTION
Dot source the script first : . . \ Function . ps1 ( with a dot at the beginning )
Start typing any characters contained in the function ' s name or its arguments , and press the TAB button
. EXAMPLE
Sophia -Functions < tab >
Sophia -Functions temp < tab >
Sophia -Functions " DiagTrackService -Disable " , " DiagnosticDataLevel -Minimal " , UninstallUWPApps
. NOTES
Set execution policy to be able to run scripts only in the current PowerShell session :
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
. NOTES
Use commas to separate funtions
. LINK
https : / / github . com / farag2 / Sophia-Script -for -Windows
#>
#Requires -RunAsAdministrator
#Requires -Version 7.2
function Sophia
{
[ CmdletBinding ( ) ]
param
(
[ Parameter ( Mandatory = $false ) ]
[string[]]
$Functions
)
foreach ( $Function in $Functions )
{
Invoke-Expression -Command $Function
}
# The "RefreshEnvironment" and "Errors" functions will be executed at the end
Invoke-Command -ScriptBlock { RefreshEnvironment ; Errors }
}
Clear-Host
$Host . UI . RawUI . WindowTitle = " Sophia Script for Windows 11 v6.1.1 | Made with $( [char] :: ConvertFromUtf32 ( 0x1F497 ) ) of Windows | $( [char] 0x00A9 ) farag & Inestic, 2014 $( [char] 0x2013 ) 2022 "
Remove-Module -Name Sophia -Force -ErrorAction Ignore
Import-Module -Name $PSScriptRoot \ Manifest \ Sophia . psd1 -PassThru -Force
# Import module for modifying registry.pol files (Administrative Templates) of local GPOs
# https://www.powershellgallery.com/packages/PolicyFileEditor
Remove-Module -Name PolicyFileEditor -Force -ErrorAction Ignore
Import-Module -Name $PSScriptRoot \ bin \ PolicyFileEdit \ PolicyFileEditor . psd1 -PassThru -Force
Import-LocalizedData -BindingVariable Global: Localization -FileName Sophia -BaseDirectory $PSScriptRoot \ Localizations
# The mandatory checkings. Please, do not comment out this function
Checkings
$Parameters = @ {
CommandName = " Sophia "
ParameterName = " Functions "
ScriptBlock = {
param
(
$commandName ,
$parameterName ,
$wordToComplete ,
$commandAst ,
$fakeBoundParameters
)
# Get functions list with arguments to complete
$Commands = ( Get-Module -Name Sophia ) . ExportedCommands . Keys
foreach ( $Command in $Commands )
{
$ParameterSets = ( Get-Command -Name $Command ) . Parametersets . Parameters | Where-Object -FilterScript { $null -eq $_ . Attributes . AliasNames }
# If a module command is UnpinTaskbarShortcuts
if ( $Command -eq " UnpinTaskbarShortcuts " )
{
# Get all command arguments, excluding defaults
foreach ( $ParameterSet in $ParameterSets . Name )
{
# If an argument is Shortcuts
if ( $ParameterSet -eq " Shortcuts " )
{
$ValidValues = ( ( Get-Command -Name UnpinTaskbarShortcuts ) . Parametersets . Parameters | Where-Object -FilterScript { $null -eq $_ . Attributes . AliasNames } ) . Attributes . ValidValues
foreach ( $ValidValue in $ValidValues )
{
# The "UnpinTaskbarShortcuts -Shortcuts <function>" construction
" UnpinTaskbarShortcuts " + " " + " - " + $ParameterSet + " " + $ValidValue | Where-Object -FilterScript { $_ -like " * $ wordToComplete* " } | ForEach-Object -Process { " `" $ _ `" " }
}
# The "UnpinTaskbarShortcuts -Shortcuts <functions>" construction
" UnpinTaskbarShortcuts " + " " + " - " + $ParameterSet + " " + ( $ValidValues -join " , " ) | Where-Object -FilterScript { $_ -like " * $ wordToComplete* " } | ForEach-Object -Process { " `" $ _ `" " }
}
continue
}
}
# If a module command is UninstallUWPApps
if ( $Command -eq " UninstallUWPApps " )
{
( Get-Command -Name $Command ) . Name | Where-Object -FilterScript { $_ -like " * $ wordToComplete* " }
# Get all command arguments, excluding defaults
foreach ( $ParameterSet in $ParameterSets . Name )
{
# If an argument is ForAllUsers
if ( $ParameterSet -eq " ForAllUsers " )
{
# The "UninstallUWPApps -ForAllUsers" construction
" UninstallUWPApps " + " " + " - " + $ParameterSet | Where-Object -FilterScript { $_ -like " * $ wordToComplete* " } | ForEach-Object -Process { " `" $ _ `" " }
}
continue
}
}
# If a module command is DNSoverHTTPS
if ( $Command -eq " DNSoverHTTPS " )
{
( Get-Command -Name $Command ) . Name | Where-Object -FilterScript { $_ -like " * $ wordToComplete* " }
# Get the valid IPv4 addresses array
# ((Get-Command -Name DNSoverHTTPS).Parametersets.Parameters | Where-Object -FilterScript {$null -eq $_.Attributes.AliasNames}).Attributes.ValidValues | Select-Object -Unique
$ValidValues = @ ( ( Get-ChildItem -Path HKLM : \ SYSTEM \ CurrentControlSet \ Services \ Dnscache \ Parameters \ DohWellKnownServers ) . PSChildName ) | Where-Object { $_ -notmatch " : " }
foreach ( $ValidValue in $ValidValues )
{
$ValidValuesDescending = @ ( ( Get-ChildItem -Path HKLM : \ SYSTEM \ CurrentControlSet \ Services \ Dnscache \ Parameters \ DohWellKnownServers ) . PSChildName ) | Where-Object { $_ -notmatch " : " }
foreach ( $ValidValueDescending in $ValidValuesDescending )
{
# The "DNSoverHTTPS -Enable -PrimaryDNS x.x.x.x -SecondaryDNS x.x.x.x" construction
" DNSoverHTTPS -Enable -PrimaryDNS $ ValidValue -SecondaryDNS $ ValidValueDescending " | Where-Object -FilterScript { $_ -like " * $ wordToComplete* " } | ForEach-Object -Process { " `" $ _ `" " }
}
}
}
foreach ( $ParameterSet in $ParameterSets . Name )
{
# The "Function -Argument" construction
$Command + " " + " - " + $ParameterSet | Where-Object -FilterScript { $_ -like " * $ wordToComplete* " } | ForEach-Object -Process { " `" $ _ `" " }
continue
}
# Get functions list without arguments to complete
Get-Command -Name $Command | Where-Object -FilterScript { $null -eq $_ . Parametersets . Parameters } | Where-Object -FilterScript { $_ . Name -like " * $ wordToComplete* " }
continue
}
}
}
Register-ArgumentCompleter @Parameters
Write-Information -MessageData " " -InformationAction Continue
Write-Verbose -Message " Sophia -Functions <tab> " -Verbose
Write-Verbose -Message " Sophia -Functions temp<tab> " -Verbose
Write-Verbose -Message " Sophia -Functions `" DiagTrackService -Disable `" , `" DiagnosticDataLevel -Minimal `" , UninstallUWPApps " -Verbose
Write-Information -MessageData " " -InformationAction Continue
Write-Verbose -Message " UninstallUWPApps, `" PinToStart -UnpinAll `" " -Verbose
Write-Verbose -Message " `" Set-Association -ProgramPath `` `" %ProgramFiles%\Notepad++\notepad++.exe `` `" -Extension .txt -Icon `` `" %ProgramFiles%\Notepad++\notepad++.exe,0 `` `" `" " -Verbose
# SIG # Begin signature block
# MIIbvwYJKoZIhvcNAQcCoIIbsDCCG6wCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUwrSdqHATGrRZt50Grn5twbPo
# Pf6gghY3MIIDAjCCAeqgAwIBAgIQJleuSBzbO6BKj4tITuy73DANBgkqhkiG9w0B
# AQsFADAZMRcwFQYDVQQDDA5Tb3BoaWEgUHJvamVjdDAeFw0yMjA3MDUyMTM2Mzla
# Fw0yNDA3MDUyMTQ2MzlaMBkxFzAVBgNVBAMMDlNvcGhpYSBQcm9qZWN0MIIBIjAN
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtLryHEs3RXTUcHI/12bpCYscds1j
# 1dQzO8Rq9IJLdU1Uv99J8O1pOC6O/nXL7BjhBzdMijh3gYHe9L9rDANgsk03zZWb
# ZIu37+7Rd8V7bkIpeHugeyxEtRiKTIF5B8WG7Gg+gAtsLUPWmkjfEK8hY1+Pwly0
# pqz/fIjOn7xm76sI+/A9+5JvDXxUMlH6fUySLpdwe6/Uf1R7UkscmG1SQlkfNAhs
# uTvXdtILSuneG5UAtC66MiOPNx6HnDntmt4In2B6UEyEXAhPlbZmPWRKcklFRaFv
# ZOsvUcIXRzXwf/o7C0C/SjTDIIvvO5A1xNHEBKmvALQ/MfqIZo8DO+xAvQIDAQAB
# o0YwRDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHQYDVR0O
# BBYEFJCvnIKyGN8JJ0PdY41rLGlnKpw5MA0GCSqGSIb3DQEBCwUAA4IBAQCJzBTt
# MyUxzfIDFCjD0Z9dtF9Qr4tNz19+XM6mlrjFw7Q32B1nCI42vYEtHbX8s5kZSJN8
# 20JKIR6HuECjbRdtTslEHN5oPMMNd9jsqpheVlEcAn3u/VDxh7MJQocxhQyDp2Gm
# /ihlTmhXTPWaTXaIlD9Y3sUALAUiVRZuJ9bipwvaRsvn5ISi3db63SxKfdNuhUX6
# UmHQHegohrfioOq7rtAIolfvf8phg+oZ++t7fQOo6aSaowuSHxOOSRQ4J2wjpB2t
# hyAx4Y4+NE/VACR629qWBAXOIwD5LyDhAaLvAgjjeKKchzCS2C7M+J+OiwUxvAEE
# a4qX0OA77xC44aXdMIIFsTCCBJmgAwIBAgIQASQK+x44C4oW8UtxnfTTwDANBgkq
# hkiG9w0BAQwFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBB
# c3N1cmVkIElEIFJvb3QgQ0EwHhcNMjIwNjA5MDAwMDAwWhcNMzExMTA5MjM1OTU5
# WjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
# ExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJv
# b3QgRzQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1K
# PDAiMGkz7MKnJS7JIT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2r
# snnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C
# 8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBf
# sXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY
# QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8
# rhsDdV14Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaY
# dj1ZXUJ2h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+
# wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw
# ++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+N
# P8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7F
# wI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo4IBXjCCAVowDwYDVR0TAQH/BAUw
# AwEB/zAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgwFoAU
# Reuir/SSy4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMBMGA1UdJQQMMAoG
# CCsGAQUFBwMIMHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29j
# c3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdp
# Y2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0MEUGA1UdHwQ+MDww
# OqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
# RFJvb3RDQS5jcmwwIAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJYIZIAYb9bAcBMA0G
# CSqGSIb3DQEBDAUAA4IBAQCaFgKlAe+B+w20WLJ4ragjGdlzN9pgnlHXy/gvQLmj
# H3xATjM+kDzniQF1hehiex1W4HG63l7GN7x5XGIATfhJelFNBjLzxdIAKicg6oku
# FTngLD74dXwsgkFhNQ8j0O01ldKIlSlDy+CmWBB8U46fRckgNxTA7Rm6fnc50lSW
# x6YR3zQz9nVSQkscnY2W1ZVsRxIUJF8mQfoaRr3esOWRRwOsGAjLy9tmiX8rnGW/
# vjdOvi3znUrDzMxHXsiVla3Ry7sqBiD5P3LqNutFcpJ6KXsUAzz7TdZIcXoQEYoI
# dM1sGwRc0oqVA3ZRUFPWLvdKRsOuECxxTLCHtic3RGBEMIIGrjCCBJagAwIBAgIQ
# BzY3tyRUfNhHrP0oZipeWzANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEV
# MBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29t
# MSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMjIwMzIzMDAw
# MDAwWhcNMzcwMzIyMjM1OTU5WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGln
# aUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5
# NiBTSEEyNTYgVGltZVN0YW1waW5nIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
# MIICCgKCAgEAxoY1BkmzwT1ySVFVxyUDxPKRN6mXUaHW0oPRnkyibaCwzIP5WvYR
# oUQVQl+kiPNo+n3znIkLf50fng8zH1ATCyZzlm34V6gCff1DtITaEfFzsbPuK4CE
# iiIY3+vaPcQXf6sZKz5C3GeO6lE98NZW1OcoLevTsbV15x8GZY2UKdPZ7Gnf2ZCH
# RgB720RBidx8ald68Dd5n12sy+iEZLRS8nZH92GDGd1ftFQLIWhuNyG7QKxfst5K
# fc71ORJn7w6lY2zkpsUdzTYNXNXmG6jBZHRAp8ByxbpOH7G1WE15/tePc5OsLDni
# pUjW8LAxE6lXKZYnLvWHpo9OdhVVJnCYJn+gGkcgQ+NDY4B7dW4nJZCYOjgRs/b2
# nuY7W+yB3iIU2YIqx5K/oN7jPqJz+ucfWmyU8lKVEStYdEAoq3NDzt9KoRxrOMUp
# 88qqlnNCaJ+2RrOdOqPVA+C/8KI8ykLcGEh/FDTP0kyr75s9/g64ZCr6dSgkQe1C
# vwWcZklSUPRR8zZJTYsg0ixXNXkrqPNFYLwjjVj33GHek/45wPmyMKVM1+mYSlg+
# 0wOI/rOP015LdhJRk8mMDDtbiiKowSYI+RQQEgN9XyO7ZONj4KbhPvbCdLI/Hgl2
# 7KtdRnXiYKNYCQEoAA6EVO7O6V3IXjASvUaetdN2udIOa5kM0jO0zbECAwEAAaOC
# AV0wggFZMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLoW2W1NhS9zKXaa
# L3WMaiCPnshvMB8GA1UdIwQYMBaAFOzX44LScV1kTN8uZz/nupiuHA9PMA4GA1Ud
# DwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDCDB3BggrBgEFBQcBAQRrMGkw
# JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcw
# AoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJv
# b3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybDMuZGlnaWNlcnQu
# Y29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcmwwIAYDVR0gBBkwFzAIBgZngQwB
# BAIwCwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUAA4ICAQB9WY7Ak7ZvmKlEIgF+
# ZtbYIULhsBguEE0TzzBTzr8Y+8dQXeJLKftwig2qKWn8acHPHQfpPmDI2AvlXFvX
# bYf6hCAlNDFnzbYSlm/EUExiHQwIgqgWvalWzxVzjQEiJc6VaT9Hd/tydBTX/6tP
# iix6q4XNQ1/tYLaqT5Fmniye4Iqs5f2MvGQmh2ySvZ180HAKfO+ovHVPulr3qRCy
# Xen/KFSJ8NWKcXZl2szwcqMj+sAngkSumScbqyQeJsG33irr9p6xeZmBo1aGqwpF
# yd/EjaDnmPv7pp1yr8THwcFqcdnGE4AJxLafzYeHJLtPo0m5d2aR8XKc6UsCUqc3
# fpNTrDsdCEkPlM05et3/JWOZJyw9P2un8WbDQc1PtkCbISFA0LcTJM3cHXg65J6t
# 5TRxktcma+Q4c6umAU+9Pzt4rUyt+8SVe+0KXzM5h0F4ejjpnOHdI/0dKNPH+ejx
# mF/7K9h+8kaddSweJywm228Vex4Ziza4k9Tm8heZWcpw8De/mADfIBZPJ/tgZxah
# ZrrdVcA6KYawmKAr7ZVBtzrVFZgxtGIJDwq9gdkT/r+k0fNX2bwE+oLeMt8EifAA
# zV3C+dAjfwAL5HYCJtnwZXZCpimHCUcr5n8apIUP/JiW9lVUKx+A+sDyDivl1vup
# L0QVSucTDh3bNzgaoSv27dZ8/DCCBsYwggSuoAMCAQICEAp6SoieyZlCkAZjOE2G
# l50wDQYJKoZIhvcNAQELBQAwYzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lD
# ZXJ0LCBJbmMuMTswOQYDVQQDEzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYg
# U0hBMjU2IFRpbWVTdGFtcGluZyBDQTAeFw0yMjAzMjkwMDAwMDBaFw0zMzAzMTQy
# MzU5NTlaMEwxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjEk
# MCIGA1UEAxMbRGlnaUNlcnQgVGltZXN0YW1wIDIwMjIgLSAyMIICIjANBgkqhkiG
# 9w0BAQEFAAOCAg8AMIICCgKCAgEAuSqWI6ZcvF/WSfAVghj0M+7MXGzj4CUu0jHk
# PECu+6vE43hdflw26vUljUOjges4Y/k8iGnePNIwUQ0xB7pGbumjS0joiUF/DbLW
# +YTxmD4LvwqEEnFsoWImAdPOw2z9rDt+3Cocqb0wxhbY2rzrsvGD0Z/NCcW5QWpF
# QiNBWvhg02UsPn5evZan8Pyx9PQoz0J5HzvHkwdoaOVENFJfD1De1FksRHTAMkcZ
# W+KYLo/Qyj//xmfPPJOVToTpdhiYmREUxSsMoDPbTSSF6IKU4S8D7n+FAsmG4dUY
# FLcERfPgOL2ivXpxmOwV5/0u7NKbAIqsHY07gGj+0FmYJs7g7a5/KC7CnuALS8gI
# 0TK7g/ojPNn/0oy790Mj3+fDWgVifnAs5SuyPWPqyK6BIGtDich+X7Aa3Rm9n3RB
# Cq+5jgnTdKEvsFR2wZBPlOyGYf/bES+SAzDOMLeLD11Es0MdI1DNkdcvnfv8zbHB
# p8QOxO9APhk6AtQxqWmgSfl14ZvoaORqDI/r5LEhe4ZnWH5/H+gr5BSyFtaBocra
# MJBr7m91wLA2JrIIO/+9vn9sExjfxm2keUmti39hhwVo99Rw40KV6J67m0uy4rZB
# Peevpxooya1hsKBBGBlO7UebYZXtPgthWuo+epiSUc0/yUTngIspQnL3ebLdhOon
# 7v59emsCAwEAAaOCAYswggGHMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAA
# MBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsG
# CWCGSAGG/WwHATAfBgNVHSMEGDAWgBS6FtltTYUvcyl2mi91jGogj57IbzAdBgNV
# HQ4EFgQUjWS3iSH+VlhEhGGn6m8cNo/drw0wWgYDVR0fBFMwUTBPoE2gS4ZJaHR0
# cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNI
# QTI1NlRpbWVTdGFtcGluZ0NBLmNybDCBkAYIKwYBBQUHAQEEgYMwgYAwJAYIKwYB
# BQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBYBggrBgEFBQcwAoZMaHR0
# cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5
# NlNIQTI1NlRpbWVTdGFtcGluZ0NBLmNydDANBgkqhkiG9w0BAQsFAAOCAgEADS0j
# dKbR9fjqS5k/AeT2DOSvFp3Zs4yXgimcQ28BLas4tXARv4QZiz9d5YZPvpM63io5
# WjlO2IRZpbwbmKrobO/RSGkZOFvPiTkdcHDZTt8jImzV3/ZZy6HC6kx2yqHcoSuW
# uJtVqRprfdH1AglPgtalc4jEmIDf7kmVt7PMxafuDuHvHjiKn+8RyTFKWLbfOHzL
# +lz35FO/bgp8ftfemNUpZYkPopzAZfQBImXH6l50pls1klB89Bemh2RPPkaJFmMg
# a8vye9A140pwSKm25x1gvQQiFSVwBnKpRDtpRxHT7unHoD5PELkwNuTzqmkJqIt+
# ZKJllBH7bjLx9bs4rc3AkxHVMnhKSzcqTPNc3LaFwLtwMFV41pj+VG1/calIGnjd
# RncuG3rAM4r4SiiMEqhzzy350yPynhngDZQooOvbGlGglYKOKGukzp123qlzqkhq
# WUOuX+r4DwZCnd8GaJb+KqB0W2Nm3mssuHiqTXBt8CzxBxV+NbTmtQyimaXXFWs1
# DoXW4CzM4AwkuHxSCx6ZfO/IyMWMWGmvqz3hz8x9Fa4Uv4px38qXsdhH6hyF4EVO
# EhwUKVjMb9N/y77BDkpvIJyu2XMyWQjnLZKhGhH+MpimXSuX4IvTnMxttQ2uR2M4
# RxdbbxPaahBuH0m3RFu0CAqHWlkEdhGhp3cCExwxggTyMIIE7gIBATAtMBkxFzAV
# BgNVBAMMDlNvcGhpYSBQcm9qZWN0AhAmV65IHNs7oEqPi0hO7LvcMAkGBSsOAwIa
# BQCgeDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgor
# BgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
# DQEJBDEWBBRMYvUh0QNjcACPNcZe7aSvdqEvijANBgkqhkiG9w0BAQEFAASCAQAP
# 1DsIkuj3BZH2+0npyQVwza/hAbAvFYB2+KB+wVgN0UmD0mi64N4wxxfMmjc+drew
# aaYl70xxQAweIJfZ46CtgiEBEvAB6JoUCs8+qagP+uGP7YyceohYlYCSVi2blg5H
# k0wXSKF6RJi5eZ2BkcIoLpezwEaswP+sc+9b0ndvSK50UBnk7exyY/qj0tjbRoab
# IyTD68dmc8gsZY6eOyuEzWFYYpgFMvtr015BJIJM8j5A2cfQk10Kyygv89Lxm/Iu
# IPM9AJj7t1tyDg7ZxsG2mV1i6SJ0bQS+1fekgkdc9dqoekyEEw7wm1Fq8FobV9Zi
# 5k5aJeia7vQLltsxi/IToYIDIDCCAxwGCSqGSIb3DQEJBjGCAw0wggMJAgEBMHcw
# YzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMTswOQYDVQQD
# EzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYgU0hBMjU2IFRpbWVTdGFtcGlu
# ZyBDQQIQCnpKiJ7JmUKQBmM4TYaXnTANBglghkgBZQMEAgEFAKBpMBgGCSqGSIb3
# DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIyMDcwNTIxNDY1MVow
# LwYJKoZIhvcNAQkEMSIEIGIORNieE1E7cBDBLSIuZQFA2rTiSviPWTb6N5yHR11L
# MA0GCSqGSIb3DQEBAQUABIICAJfhZyg8Yefc4GemBPvE0Mj8Ng0LIeaneutZkv5L
# vnBZUlzDbs33qNHbM1eHA3O5KPdMe+jafmLuOyg0rD0hqhZBjVEiu7z6vTTVzYdN
# X+6g3Lt0odHCEgCDt2MGVgu9xQnDAGb2J8zSNHeQPF8NZ1qTEY9siIWNKZiCAaqf
# 4YG09yXNHYVTx2cEbczug7PGV+0eJnapX4MjkqaHASn5RvAToM2fC79CgC6k+265
# VoFX/V6bfUC3n/YSBvLuMTT73EO85l3WAlisNu2/+A+0auW/VY9xhqs71u1juUxJ
# KrF0MfvHt4E0yeJ3pXnR/dp0IEdpLlgY/nWM2Mhv1gOGlKSLaA50+4J/0d8hASri
# sQNHDXBlFVPjnXueYeRNSBOCAzuimOJoPwq9AKccVUMOyXpuiOexEwKxZbZZkqYP
# MqD3S8Bc0NwBqPOr0KUrolbnHHecF09dxHDyR2Y7vrJR79dPk9tV0WZcTffSsxou
# /1G7+OZCZkP3W7Lkc3OSiNT5sLvg6XwuFfGVoT6Z/ggaD6da4j3Ra1F3EszDkFKP
# 4jh52Q9toS/59u9x1NkGhK2rpt7CcvzwInC9rC/svh7NHiBnpPNpMlTEa4jfIxFB
# C1Fi4Zh36u0L98vv2Hzg0xyc1qMPfzjEh0b8spMNM0KH/ZAfkGeizEKAg3p+ZYvm
# hnRw
# SIG # End signature block