forked from jamesstringerparsec/Easy-GPU-PV
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCheckGPU.ps1
310 lines (303 loc) · 17.1 KB
/
CheckGPU.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
Function Get-DesktopPC
{
$isDesktop = $true
if (Get-WmiObject -Class win32_systemenclosure | Where-Object { $_.chassistypes -eq 9 -or $_.chassistypes -eq 10 -or $_.chassistypes -eq 14 })
{
#Write-Warning "Computer is a laptop. Laptop dedicated GPU's that are partitioned and assigned to VM may not work with Parsec."
#Write-Warning "Thunderbolt 3 or 4 dock based GPU's may work"
$isDesktop = $false
}
if (Get-WmiObject -Class win32_battery)
{
$isDesktop = $false
}
$isDesktop
}
Function Get-WindowsCompatibleOS
{
$build = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
if ($build.CurrentBuild -ge 19041 -and ($( $build.editionid -like 'Professional*' ) -or $( $build.editionid -like 'Enterprise*' ) -or $( $build.editionid -like 'Education*' ) -or $( $build.editionid -like 'Server*' )))
{
Return $true
}
Else
{
#Write-Warning "Only Windows 10 20H1 or Windows 11 (Pro or Enterprise) is supported"
Return $true
# Return $false
}
}
Function Get-HyperVEnabled
{
if (Get-WindowsOptionalFeature -Online | Where-Object FeatureName -Like 'Microsoft-Hyper-V-All')
{
Return $true
}
elseif (Get-WindowsOptionalFeature -Online | Where-Object FeatureName -Like 'Microsoft-Hyper-V')
{
Return $true
}
Else
{
#Write-Warning "You need to enable Virtualisation in your motherboard and then add the Hyper-V Windows Feature and reboot"
Return $false
}
}
Function Get-WSLEnabled
{
if ((wsl -l -v)[2].length -gt 1)
{
#Write-Warning "WSL is Enabled. This may interferre with GPU-P and produce an error 43 in the VM"
Return $true
}
Else
{
Return $false
}
}
Function Get-VMGpuPartitionAdapterFriendlyName
{
$Devices = (Get-WmiObject -Class "Msvm_PartitionableGpu" -ComputerName $env:COMPUTERNAME -Namespace "ROOT\virtualization\v2").name
Foreach ($GPU in $Devices)
{
$GPUParse = $GPU.Split('#')[1]
$GPU_Name = Get-WmiObject Win32_PNPSignedDriver | where { ($_.HardwareID -eq "PCI\$GPUParse") } | select DeviceName -ExpandProperty DeviceName
Write-Host $GPU_Name"|||"$GPU
}
}
If ((Get-DesktopPC) -and (Get-WindowsCompatibleOS) -and (Get-HyperVEnabled))
{
# "System Compatible"
# "Printing a list of compatible GPUs...May take a second"
# "Copy the name of the GPU you want to share..."
Get-VMGpuPartitionAdapterFriendlyName
#Read-Host -Prompt "Press Enter to Exit"
}
else
{
#Read-Host -Prompt "Press Enter to Exit"
}
# SIG # Begin signature block
# MIIpeAYJKoZIhvcNAQcCoIIpaTCCKWUCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAAyl70HHDQB3+7
# qPIzkoMG7S5+JhHbyxF9hOG/1nnlbKCCDmowggbNMIIEtaADAgECAhEAu/DMtbe4
# Mf0hrjJ3iuQMiTANBgkqhkiG9w0BAQwFADCBgDELMAkGA1UEBhMCUEwxIjAgBgNV
# BAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1bSBD
# ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQg
# TmV0d29yayBDQSAyMB4XDTIxMDUxOTA1MzIxM1oXDTM2MDUxODA1MzIxM1owajEL
# MAkGA1UEBhMCUEwxITAfBgNVBAoTGEFzc2VjbyBEYXRhIFN5c3RlbXMgUy5BLjE4
# MDYGA1UEAxMvQ2VydHVtIEV4dGVuZGVkIFZhbGlkYXRpb24gQ29kZSBTaWduaW5n
# IDIwMjEgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCUvvjwlqjf
# 9eedRTK+NoavZlVxmQTPIN1nK5XQRUQWyPWwHD54wa2aD2kRDrAjBf71/T0XN9Oq
# ms5ML/Jolgryv3JW7/yahp7lg/wn3PDnNwzC1BlFMyCdEktQmUXMmE4mmxSutRY1
# OGGagENWPjbQ1R/x4HuTByWbG+TUV7dIPxE7TMy9Npco4f09DN6QFRXdk7bZTu58
# kxu6MFH6mzQkC3IXvExfo0c/CT4/hTZD2XknHjXLzi9jzInSHS9GQqeXd6nWbkwE
# u7znKpNEcSElorDSEcRhc1OSOLjUK0x0cOw8whzQ0fWGkPoqgCslbjZoko7U7kj/
# Fn4TWQ8s75LHjhVao+w2SWMP0ELWYIkq1ComGq3wqBD7VU6rtCDoUf237HkgRBxL
# XFjwp444oKWnchYMZ7epWX8jqntSr4QHeidL72c6XswQIIZsFglV4BO28jO02yS7
# w4iyY0c6PQs34GZ7SWphsN1DaiX9ysc6hovVYoVA94t+3p4TI1RtK9Ayh0atmfYP
# JqtBfk5kJ1h4nNax0lZmJL9chJjZQb+7XW8MQgstiQdsegaz2QL6Edm+94N8IW6T
# YaalyO9LeR35A9MoTLo79rdB04naTqWdPTBKh7DpS53ZAQn5dYs2per+m7ZeIxnE
# WaNcG+PbRh+ZslFb6M75JgN43szB+/VYVQIDAQABo4IBVTCCAVEwDwYDVR0TAQH/
# BAUwAwEB/zAdBgNVHQ4EFgQUrFfKCBbcP8UxHApN2/vx3pknLTQwHwYDVR0jBBgw
# FoAUtqFUOQLDoD+Oirz61PgcptE6Dv0wDgYDVR0PAQH/BAQDAgEGMBMGA1UdJQQM
# MAoGCCsGAQUFBwMDMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jcmwuY2VydHVt
# LnBsL2N0bmNhMi5jcmwwbAYIKwYBBQUHAQEEYDBeMCgGCCsGAQUFBzABhhxodHRw
# Oi8vc3ViY2Eub2NzcC1jZXJ0dW0uY29tMDIGCCsGAQUFBzAChiZodHRwOi8vcmVw
# b3NpdG9yeS5jZXJ0dW0ucGwvY3RuY2EyLmNlcjA5BgNVHSAEMjAwMC4GBFUdIAAw
# JjAkBggrBgEFBQcCARYYaHR0cDovL3d3dy5jZXJ0dW0ucGwvQ1BTMA0GCSqGSIb3
# DQEBDAUAA4ICAQC7khlZjFbU+gsRdcraFFJKj1PL63MVudnm/AILuNaxm7LIZOYt
# rZaRWEpR0qd3uhSpUEI29fMBZvuu3CHXJsM58hbJFo4YoHnyDJgTkeVmc10fd1NI
# //cI3nRD1/Alx09yWhPZlze0A/Bvwc3LcZtTywfsL5tD3QAL8ZqelrHt1Eb8AnDE
# nAzKNbm1mwYmD/5dy1XkIKfsM1pmRM2ZDcJ4qpwVewE7g+4e+Y+iq42LuaHPvNAk
# wq0daA9Hp3qemk0cRFfM5257MvEsu+6w8+44mpQUOgpASVIjY3l2vdf6BUfBJfsd
# 3pcp/2hfDnXaql9AoB7ps7eCZb9VXKm/u2lTRMf5esOcZFy4udsnGBaOwSSUe0ch
# YusfJ9IjsmpoMl4CW5E0R/U55Bz6TpDo+gaXQJL4i/zv0UR5papGsDguBASp9g/O
# fnvGTeWrS9l5orEktu9ExrFfPvAKxZK+4AO9bapPhMATraKo6kx6K51pS1ZO2pf1
# r3B+lXN5bTLgp8g/dygUZm2cmauBAzJA5v/iHOb0b4b4Muqc8dxgcX1jZRLtLvxn
# AWxkKIMfj7A4M0JrN4rLBUpPFM0+Bp2sR7rtFqNZW56huaDkxO75eNRN2z4A959R
# 5GBRnFWtgE65+B1RHAQQ/TOF4mU0Y3oIhVQr3rUh4tdSvIxr8QpsDKIvsDCCB5Uw
# ggV9oAMCAQICEFQ9mkv948CeDPCAPvnmOb0wDQYJKoZIhvcNAQELBQAwajELMAkG
# A1UEBhMCUEwxITAfBgNVBAoTGEFzc2VjbyBEYXRhIFN5c3RlbXMgUy5BLjE4MDYG
# A1UEAxMvQ2VydHVtIEV4dGVuZGVkIFZhbGlkYXRpb24gQ29kZSBTaWduaW5nIDIw
# MjEgQ0EwHhcNMjQwNTE2MDUyMTU5WhcNMjcwNTE2MDUyMTU4WjCCAR4xHTAbBgNV
# BA8TFFByaXZhdGUgT3JnYW5pemF0aW9uMRMwEQYLKwYBBAGCNzwCAQMTAkNOMRow
# GAYLKwYBBAGCNzwCAQIMCUd1YW5nZG9uZzEZMBcGCysGAQQBgjc8AgEBDAhTaGVu
# emhlbjEbMBkGA1UEBRMSOTE0NDAzMDBNQURKSlFEUFhMMQswCQYDVQQGEwJDTjES
# MBAGA1UECAwJR3Vhbmdkb25nMREwDwYDVQQHDAhTaGVuemhlbjEvMC0GA1UECgwm
# Rmlubm94IFRlY2hub2xvZ3kgKFNoZW56aGVuKSBDby4sIEx0ZC4xLzAtBgNVBAMM
# JkZpbm5veCBUZWNobm9sb2d5IChTaGVuemhlbikgQ28uLCBMdGQuMIICIjANBgkq
# hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA8dIB5SPqXLevmTIZAU0g5mt88QBgf7OF
# o5YJg4lwP/OGOczlxxRI8tjx+CO8vdp1ky3UKmSVcCHW6Vj7teWUlGyWapH4FdYC
# DEE+P6P092+QBIlMWR22YfnUkCbgV3k+UicYNuPByNhZuRO8GBdkwdvooSPeh+M+
# ueWDSqxi/WjljgISrfk85wzHA/rA0MvrgBnTq8rXM0bvPJlRrlM6AIAfs0LheVUR
# 9XTqVpp6BT/3GNc628ywSD98oQwxAHQ63aw/5+eMpdLgtpyeoBPU99iVlJlKqxJ8
# tdTdnD4dLuKfBlYRv6h13Sy2XAG3xwBUiwjJQ3wyLODIqjU4bCfBKOUxNeCWt395
# ZDRuWyve5f6rb8J9Z/7rChlH/rMT4u5IcbA4WENlvvKGaYC+smoU+T5573i9BPPl
# mH6VR9FvBUhft84doxJVWh2vRkYYKLQZYmfskuQzKNfPr+d9s/1tMymdKypSYQrf
# m8LqyjSA8QVLUBf+f8kCZFAlzuYaqybP4i/e3qrJGky0WBx3tKxvqkFbopcYqAsc
# dcf2p1KFru5stihU1SzycWtbf1Q+wLQIHGSXKX9uzqKKPjlPeo1jIPwQrKfx4/s+
# w42orSvDTYzMigvh29WcnWDm4D/HxHakN8gVkqsn7hUzrpRDAIgeZ3ajMhJsXkDt
# iMXg5/nmhPcCAwEAAaOCAX8wggF7MAwGA1UdEwEB/wQCMAAwQQYDVR0fBDowODA2
# oDSgMoYwaHR0cDovL2NldmNzY2EyMDIxLmNybC5jZXJ0dW0ucGwvY2V2Y3NjYTIw
# MjEuY3JsMHcGCCsGAQUFBwEBBGswaTAuBggrBgEFBQcwAYYiaHR0cDovL2NldmNz
# Y2EyMDIxLm9jc3AtY2VydHVtLmNvbTA3BggrBgEFBQcwAoYraHR0cDovL3JlcG9z
# aXRvcnkuY2VydHVtLnBsL2NldmNzY2EyMDIxLmNlcjAfBgNVHSMEGDAWgBSsV8oI
# Ftw/xTEcCk3b+/HemSctNDAdBgNVHQ4EFgQUAHnCTTXopORSrJ/2eSOiudq4O8gw
# SgYDVR0gBEMwQTAHBgVngQwBAzA2BgsqhGgBhvZ3AgUBBzAnMCUGCCsGAQUFBwIB
# FhlodHRwczovL3d3dy5jZXJ0dW0ucGwvQ1BTMBMGA1UdJQQMMAoGCCsGAQUFBwMD
# MA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAIUP2XbGdUYAK1Mei
# ZFvYbfC5ITpaqvsZ2Mt3bQw2xPzE+STcXwEdVw23LQboxXY0CesdejvI/kTZkn2r
# F0mcjUrlQP+zFrP4Z4826Z5rVEWaOy0vngVb61MNfSINyU6JMQyNiBuYrFAPW1iE
# QYdEdnfsueM1YkRkFB57DeoQIfdICf4dgr0qMEv0cTwK7gAjeA7JMl0jLj7hLxjt
# rvnNX8eHKOszbhkmRe0FiETk4X19VmaBGMwJZreAcDnG9SsPFA+xSvbwlmcAAVs/
# K8YK30HLV4aknwyPMXRVJZ17yiYGCLnuUavr5M0pVK46O06mdPT1w1VQrBiQFwcg
# qu3jk23QUzhttPfDXzhQZWHyzzzGsrhnLeXBCiC5tnNIbUF4QqIZsEBa2L8oKA6U
# xqZiIWLQyUpiiR3fc13hDYSbnx1SmZBjN6IESzLfSn5h+716slI7Ik5xlosBX9n6
# UlcNPGTVQYb+xr8c6ZBVgwuvWOh92irKeULYMJOCEpNGmzWZWyZivive/IUwKoIy
# GJcUikaQuLR0Vee37Z8LiwwE3sY5Jx/4ldvQxt2dwM8foI+MhWLj6ApU/e8Asir4
# TeybMtV/mBYUvgHrjFdk6lDCC5ljYJBC064aOgzfqXNDair2lDiEp+Ptq3HFpneC
# QNzG8ko4/ZtEs4Odyi0KIcj5oTkxghpkMIIaYAIBATB+MGoxCzAJBgNVBAYTAlBM
# MSEwHwYDVQQKExhBc3NlY28gRGF0YSBTeXN0ZW1zIFMuQS4xODA2BgNVBAMTL0Nl
# cnR1bSBFeHRlbmRlZCBWYWxpZGF0aW9uIENvZGUgU2lnbmluZyAyMDIxIENBAhBU
# PZpL/ePAngzwgD755jm9MA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIBDDEC
# MAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwG
# CisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIJYvQGPCHqZee46rScaP+I5T2Mi9
# rkVLDmZ+gOfKdwxcMA0GCSqGSIb3DQEBAQUABIICAOh6LToaow7Gj1+gVWH36RWa
# H1g1nFYFTGjeRlNoQ9vl0cotNPQtTtxMr40HQYfaglj8Kc+A9dVQUIOhn06z4MIL
# 1mrsy8gkno+YswFmn/DgAuTKPIvbbY7Apoyyqpku4ZomRtOO8/7kNjEw0tSzXV0d
# X4qVRuNhG7UR3wrkQKZ+wwb28LGD9wmRfUUcSFMZCaJtWwgAdZ/uDWhASO2oc5rw
# iywEj4ccR5VfRIRNTpQzsKsQdhChxoF17spWLtpTKtHR0cvFyJRfOMPAE5ntDAQ9
# u6Sbc19DveulmnwR2W1N0iSVrpt1yWRm3GDDwdjH8UHhnjN/kzX23ThihLjCchFt
# InZl5R/UVL5u4Cxzsdb6KonFKbIln7f9zf2bfSqTVny1yHb7VwQJQZObh2aN3LOg
# R1jdcc/k5MxWhmLU7dI5zQOhQVDD58G1GdZVfN24NqSnItG/yS2sk3uaBouVNIT0
# qbJrwkLgSqVTipL6RC6on/T9SQloc7aFuK2t4VAHgRt0faBz16iH5RQfSA0ZQ0iQ
# ia0aBHINjuEEzxYkx6Sihc5Q/flezukXJmLOhfOe1TJ2uSVmjnXrK+dLVyhTnp3B
# /4sxObXu5gs85xFxeAJW9ozzBmGm4rsHyTp2pjqfogvnxxrwdWaom2o79ytx8DcJ
# Pl1wtbE4RW1vjhH20SLNoYIXOTCCFzUGCisGAQQBgjcDAwExghclMIIXIQYJKoZI
# hvcNAQcCoIIXEjCCFw4CAQMxDzANBglghkgBZQMEAgEFADB3BgsqhkiG9w0BCRAB
# BKBoBGYwZAIBAQYJYIZIAYb9bAcBMDEwDQYJYIZIAWUDBAIBBQAEIKhMW+G9eVm4
# ODGWQjETQTRoBahvpBHb+aE37PtMNzdwAhBEW34anz6TmsF7O4RTMiBHGA8yMDI1
# MDMzMTExNDkyNFqgghMDMIIGvDCCBKSgAwIBAgIQC65mvFq6f5WHxvnpBOMzBDAN
# BgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs
# IEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5NiBTSEEy
# NTYgVGltZVN0YW1waW5nIENBMB4XDTI0MDkyNjAwMDAwMFoXDTM1MTEyNTIzNTk1
# OVowQjELMAkGA1UEBhMCVVMxETAPBgNVBAoTCERpZ2lDZXJ0MSAwHgYDVQQDExdE
# aWdpQ2VydCBUaW1lc3RhbXAgMjAyNDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
# AgoCggIBAL5qc5/2lSGrljC6W23mWaO16P2RHxjEiDtqmeOlwf0KMCBDEr4IxHRG
# d7+L660x5XltSVhhK64zi9CeC9B6lUdXM0s71EOcRe8+CEJp+3R2O8oo76EO7o5t
# Luslxdr9Qq82aKcpA9O//X6QE+AcaU/byaCagLD/GLoUb35SfWHh43rOH3bpLEx7
# pZ7avVnpUVmPvkxT8c2a2yC0WMp8hMu60tZR0ChaV76Nhnj37DEYTX9ReNZ8hIOY
# e4jl7/r419CvEYVIrH6sN00yx49boUuumF9i2T8UuKGn9966fR5X6kgXj3o5WHhH
# VO+NBikDO0mlUh902wS/Eeh8F/UFaRp1z5SnROHwSJ+QQRZ1fisD8UTVDSupWJNs
# tVkiqLq+ISTdEjJKGjVfIcsgA4l9cbk8Smlzddh4EfvFrpVNnes4c16Jidj5XiPV
# dsn5n10jxmGpxoMc6iPkoaDhi6JjHd5ibfdp5uzIXp4P0wXkgNs+CO/CacBqU0R4
# k+8h6gYldp4FCMgrXdKWfM4N0u25OEAuEa3JyidxW48jwBqIJqImd93NRxvd1aep
# SeNeREXAu2xUDEW8aqzFQDYmr9ZONuc2MhTMizchNULpUEoA6Vva7b1XCB+1rxvb
# KmLqfY/M/SdV6mwWTyeVy5Z/JkvMFpnQy5wR14GJcv6dQ4aEKOX5AgMBAAGjggGL
# MIIBhzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAK
# BggrBgEFBQcDCDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglghkgBhv1sBwEwHwYD
# VR0jBBgwFoAUuhbZbU2FL3MpdpovdYxqII+eyG8wHQYDVR0OBBYEFJ9XLAN3DigV
# kGalY17uT5IfdqBbMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwzLmRpZ2lj
# ZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFJTQTQwOTZTSEEyNTZUaW1lU3RhbXBp
# bmdDQS5jcmwwgZAGCCsGAQUFBwEBBIGDMIGAMCQGCCsGAQUFBzABhhhodHRwOi8v
# b2NzcC5kaWdpY2VydC5jb20wWAYIKwYBBQUHMAKGTGh0dHA6Ly9jYWNlcnRzLmRp
# Z2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFJTQTQwOTZTSEEyNTZUaW1lU3Rh
# bXBpbmdDQS5jcnQwDQYJKoZIhvcNAQELBQADggIBAD2tHh92mVvjOIQSR9lDkfYR
# 25tOCB3RKE/P09x7gUsmXqt40ouRl3lj+8QioVYq3igpwrPvBmZdrlWBb0HvqT00
# nFSXgmUrDKNSQqGTdpjHsPy+LaalTW0qVjvUBhcHzBMutB6HzeledbDCzFzUy34V
# arPnvIWrqVogK0qM8gJhh/+qDEAIdO/KkYesLyTVOoJ4eTq7gj9UFAL1UruJKlTn
# CVaM2UeUUW/8z3fvjxhN6hdT98Vr2FYlCS7Mbb4Hv5swO+aAXxWUm3WpByXtgVQx
# iBlTVYzqfLDbe9PpBKDBfk+rabTFDZXoUke7zPgtd7/fvWTlCs30VAGEsshJmLbJ
# 6ZbQ/xll/HjO9JbNVekBv2Tgem+mLptR7yIrpaidRJXrI+UzB6vAlk/8a1u7cIqV
# 0yef4uaZFORNekUgQHTqddmsPCEIYQP7xGxZBIhdmm4bhYsVA6G2WgNFYagLDBzp
# mk9104WQzYuVNsxyoVLObhx3RugaEGru+SojW4dHPoWrUhftNpFC5H7QEY7MhKRy
# rBe7ucykW7eaCuWBsBb4HOKRFVDcrZgdwaSIqMDiCLg4D+TPVgKx2EgEdeoHNHT9
# l3ZDBD+XgbF+23/zBjeCtxz+dL/9NWR6P2eZRi7zcEO1xwcdcqJsyz/JceENc2Sg
# 8h3KeFUCS7tpFk7CrDqkMIIGrjCCBJagAwIBAgIQBzY3tyRUfNhHrP0oZipeWzAN
# BgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQg
# SW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2Vy
# dCBUcnVzdGVkIFJvb3QgRzQwHhcNMjIwMzIzMDAwMDAwWhcNMzcwMzIyMjM1OTU5
# WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xOzA5BgNV
# BAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5NiBTSEEyNTYgVGltZVN0YW1w
# aW5nIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxoY1BkmzwT1y
# SVFVxyUDxPKRN6mXUaHW0oPRnkyibaCwzIP5WvYRoUQVQl+kiPNo+n3znIkLf50f
# ng8zH1ATCyZzlm34V6gCff1DtITaEfFzsbPuK4CEiiIY3+vaPcQXf6sZKz5C3GeO
# 6lE98NZW1OcoLevTsbV15x8GZY2UKdPZ7Gnf2ZCHRgB720RBidx8ald68Dd5n12s
# y+iEZLRS8nZH92GDGd1ftFQLIWhuNyG7QKxfst5Kfc71ORJn7w6lY2zkpsUdzTYN
# XNXmG6jBZHRAp8ByxbpOH7G1WE15/tePc5OsLDnipUjW8LAxE6lXKZYnLvWHpo9O
# dhVVJnCYJn+gGkcgQ+NDY4B7dW4nJZCYOjgRs/b2nuY7W+yB3iIU2YIqx5K/oN7j
# PqJz+ucfWmyU8lKVEStYdEAoq3NDzt9KoRxrOMUp88qqlnNCaJ+2RrOdOqPVA+C/
# 8KI8ykLcGEh/FDTP0kyr75s9/g64ZCr6dSgkQe1CvwWcZklSUPRR8zZJTYsg0ixX
# NXkrqPNFYLwjjVj33GHek/45wPmyMKVM1+mYSlg+0wOI/rOP015LdhJRk8mMDDtb
# iiKowSYI+RQQEgN9XyO7ZONj4KbhPvbCdLI/Hgl27KtdRnXiYKNYCQEoAA6EVO7O
# 6V3IXjASvUaetdN2udIOa5kM0jO0zbECAwEAAaOCAV0wggFZMBIGA1UdEwEB/wQI
# MAYBAf8CAQAwHQYDVR0OBBYEFLoW2W1NhS9zKXaaL3WMaiCPnshvMB8GA1UdIwQY
# MBaAFOzX44LScV1kTN8uZz/nupiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUE
# DDAKBggrBgEFBQcDCDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
# Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
# ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQwQwYDVR0fBDww
# OjA4oDagNIYyaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3Rl
# ZFJvb3RHNC5jcmwwIAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJYIZIAYb9bAcBMA0G
# CSqGSIb3DQEBCwUAA4ICAQB9WY7Ak7ZvmKlEIgF+ZtbYIULhsBguEE0TzzBTzr8Y
# +8dQXeJLKftwig2qKWn8acHPHQfpPmDI2AvlXFvXbYf6hCAlNDFnzbYSlm/EUExi
# HQwIgqgWvalWzxVzjQEiJc6VaT9Hd/tydBTX/6tPiix6q4XNQ1/tYLaqT5Fmniye
# 4Iqs5f2MvGQmh2ySvZ180HAKfO+ovHVPulr3qRCyXen/KFSJ8NWKcXZl2szwcqMj
# +sAngkSumScbqyQeJsG33irr9p6xeZmBo1aGqwpFyd/EjaDnmPv7pp1yr8THwcFq
# cdnGE4AJxLafzYeHJLtPo0m5d2aR8XKc6UsCUqc3fpNTrDsdCEkPlM05et3/JWOZ
# Jyw9P2un8WbDQc1PtkCbISFA0LcTJM3cHXg65J6t5TRxktcma+Q4c6umAU+9Pzt4
# rUyt+8SVe+0KXzM5h0F4ejjpnOHdI/0dKNPH+ejxmF/7K9h+8kaddSweJywm228V
# ex4Ziza4k9Tm8heZWcpw8De/mADfIBZPJ/tgZxahZrrdVcA6KYawmKAr7ZVBtzrV
# FZgxtGIJDwq9gdkT/r+k0fNX2bwE+oLeMt8EifAAzV3C+dAjfwAL5HYCJtnwZXZC
# pimHCUcr5n8apIUP/JiW9lVUKx+A+sDyDivl1vupL0QVSucTDh3bNzgaoSv27dZ8
# /DCCBY0wggR1oAMCAQICEA6bGI750C3n79tQ4ghAGFowDQYJKoZIhvcNAQEMBQAw
# ZTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQ
# d3d3LmRpZ2ljZXJ0LmNvbTEkMCIGA1UEAxMbRGlnaUNlcnQgQXNzdXJlZCBJRCBS
# b290IENBMB4XDTIyMDgwMTAwMDAwMFoXDTMxMTEwOTIzNTk1OVowYjELMAkGA1UE
# BhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2lj
# ZXJ0LmNvbTEhMB8GA1UEAxMYRGlnaUNlcnQgVHJ1c3RlZCBSb290IEc0MIICIjAN
# BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAv+aQc2jeu+RdSjwwIjBpM+zCpyUu
# ySE98orYWcLhKac9WKt2ms2uexuEDcQwH/MbpDgW61bGl20dq7J58soR0uRf1gU8
# Ug9SH8aeFaV+vp+pVxZZVXKvaJNwwrK6dZlqczKU0RBEEC7fgvMHhOZ0O21x4i0M
# G+4g1ckgHWMpLc7sXk7Ik/ghYZs06wXGXuxbGrzryc/NrDRAX7F6Zu53yEioZldX
# n1RYjgwrt0+nMNlW7sp7XeOtyU9e5TXnMcvak17cjo+A2raRmECQecN4x7axxLVq
# GDgDEI3Y1DekLgV9iPWCPhCRcKtVgkEy19sEcypukQF8IUzUvK4bA3VdeGbZOjFE
# mjNAvwjXWkmkwuapoGfdpCe8oU85tRFYF/ckXEaPZPfBaYh2mHY9WV1CdoeJl2l6
# SPDgohIbZpp0yt5LHucOY67m1O+SkjqePdwA5EUlibaaRBkrfsCUtNJhbesz2cXf
# SwQAzH0clcOP9yGyshG3u3/y1YxwLEFgqrFjGESVGnZifvaAsPvoZKYz0YkH4b23
# 5kOkGLimdwHhD5QMIR2yVCkliWzlDlJRR3S+Jqy2QXXeeqxfjT/JvNNBERJb5RBQ
# 6zHFynIWIgnffEx1P2PsIV/EIFFrb7GrhotPwtZFX50g/KEexcCPorF+CiaZ9eRp
# L5gdLfXZqbId5RsCAwEAAaOCATowggE2MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
# BBYEFOzX44LScV1kTN8uZz/nupiuHA9PMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1R
# i6enIZ3zbcgPMA4GA1UdDwEB/wQEAwIBhjB5BggrBgEFBQcBAQRtMGswJAYIKwYB
# BQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0
# cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENB
# LmNydDBFBgNVHR8EPjA8MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
# RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMBEGA1UdIAQKMAgwBgYEVR0gADAN
# BgkqhkiG9w0BAQwFAAOCAQEAcKC/Q1xV5zhfoKN0Gz22Ftf3v1cHvZqsoYcs7IVe
# qRq7IviHGmlUIu2kiHdtvRoU9BNKei8ttzjv9P+Aufih9/Jy3iS8UgPITtAq3vot
# Vs/59PesMHqai7Je1M/RQ0SbQyHrlnKhSLSZy51PpwYDE3cnRNTnf+hZqPC/Lwum
# 6fI0POz3A8eHqNJMQBk1RmppVLC4oVaO7KTVPeix3P0c2PR3WlxUjG/voVA9/HYJ
# aISfb8rbII01YBwCA8sgsKxYoA5AY8WYIsGyWfVVa88nq2x2zm8jLfR+cWojayL/
# ErhULSd+2DrZ8LaHlv1b0VysGMNNn3O3AamfV6peKOK5lDGCA3YwggNyAgEBMHcw
# YzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMTswOQYDVQQD
# EzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYgU0hBMjU2IFRpbWVTdGFtcGlu
# ZyBDQQIQC65mvFq6f5WHxvnpBOMzBDANBglghkgBZQMEAgEFAKCB0TAaBgkqhkiG
# 9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI1MDMzMTExNDky
# NFowKwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQU29OF7mLb0j575PZxSFCHJNWGW0Uw
# LwYJKoZIhvcNAQkEMSIEICrpcThXPHr1fje2+y4XXt/5kC0IZa6RO1aIrsEqop24
# MDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEIHZ2n6jyYy8fQws6IzCu1lZ1/tdz2wXW
# ZbkFk5hDj5rbMA0GCSqGSIb3DQEBAQUABIICAIExfMYb+F7Vr6ki3SE9LnDNDE+J
# mFLIBM2CU6Cnwqs3F3fWy7bk41c3kuVBMqozjdTReqrvi0bSF3CtYKA1vmYgbNHj
# awvj4QUy6ilxPl1azKlkG9SVa5fdMXRvBOz/9TRzJUAsl5Bymfct7jhoJonr6K3P
# DFo4MxOpbFonyIs8Rff5TkGd3l5PvmA9/vDN29vmWW4jj8oS474pW1EUU/kKKyqb
# 7hbTXj1CowljxB8tuh8cr7p62W3A9Xx3WK6jaVhMfx+6XJKv38UVZt6MVrLgPg91
# L0Mau2qJSszxadTjuGPdHmZXValWJZJJGQBdxfxRFapm8rFvbyDlHzkPuOf48p9S
# j4HaqUarmNgoD+Cx1jC08Jzojh92xkmkm3ubj7SkZnSdQaqeFOwNHEHLR6LpKaRK
# FcdebZVBuADjheZ7BgSiWdmruAkh8qx6JNzqjtJPPjwvPNtxXqWAfx7t15L5B/Oi
# sM4/Up0gAdBZ9V6pUo9Fap2g1huXkQY9uaXrI517G+E8NxpHWGE1Ou84rgLeTRkK
# Wgvxe8bdP1P0bJBZfOOX3okIKyZZLqx2z6VU52+EUtD5nCfM1YucoEz5KJGgYWu8
# ACEIcxJhwJu29h6C1hCdpP0bDdhv+RxR6pwpNLCW7NLX4haV5Lplf+MKzJGGwNim
# RZN9LxlkFQgpF85X
# SIG # End signature block