ScriptsToProcess/PreLoadTypes.ps1
|
# Pure-managed Ahtola stack — no native e_sqlite3 / SQLitePCLRaw preload. $moduleRoot = Split-Path -Path $PSScriptRoot -Parent $binPath = Join-Path -Path $moduleRoot -ChildPath 'bin' if (-not (Test-Path -LiteralPath $binPath)) { Write-Error "Devolutions.Ahtola.Sqlite bin folder not found: $binPath" return } # Load dependency assemblies before the binary module binds types. $preferredOrder = @( 'Devolutions.Ahtola.Core.dll' 'Devolutions.Ahtola.Data.dll' 'Devolutions.Ahtola.Data.Sqlite.dll' 'Devolutions.Ahtola.PowerShell.dll' ) $loadedNames = [System.Collections.Generic.HashSet[string]]::new([StringComparer]::OrdinalIgnoreCase) foreach ($assembly in [AppDomain]::CurrentDomain.GetAssemblies()) { try { $name = [System.IO.Path]::GetFileName($assembly.Location) if ($name) { [void]$loadedNames.Add($name) } } catch { # Dynamic assemblies have no Location. } } function Import-AhtolaAssembly { param([Parameter(Mandatory)][string]$Path) $fileName = [System.IO.Path]::GetFileName($Path) if ($loadedNames.Contains($fileName)) { Write-Verbose "Assembly already loaded: $fileName" return } Write-Verbose "Loading assembly: $Path" $null = [System.Reflection.Assembly]::LoadFrom($Path) [void]$loadedNames.Add($fileName) } foreach ($name in $preferredOrder) { $path = Join-Path -Path $binPath -ChildPath $name if (Test-Path -LiteralPath $path) { Import-AhtolaAssembly -Path $path } } Get-ChildItem -LiteralPath $binPath -Filter '*.dll' | Where-Object { -not $loadedNames.Contains($_.Name) } | ForEach-Object { Import-AhtolaAssembly -Path $_.FullName } # SIG # Begin signature block # MII2bwYJKoZIhvcNAQcCoII2YDCCNlwCAQExDTALBglghkgBZQMEAgEwdwYKKwYB # BAGCNwIBBKBpMGcwNAYKKwYBBAGCNwIBHjAmAgMBAAAEEB/MO2BZSwhOtyTSxil+ # 81ECAQACAQACAQACAQACAQAwLzALBglghkgBZQMEAgEEIFCgI8Sp7lOjq+dVEgjo # prHKSJy7Turq9qkp77NB4l89oIIbTDCCBcwwggO0oAMCAQICEFSY0tHUWxmVSBN5 # yBHAh5kwDQYJKoZIhvcNAQEMBQAwdzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1p # Y3Jvc29mdCBDb3Jwb3JhdGlvbjFIMEYGA1UEAxM/TWljcm9zb2Z0IElkZW50aXR5 # IFZlcmlmaWNhdGlvbiBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDIwMB4X # DTIwMDQxNjE4MzYxNloXDTQ1MDQxNjE4NDQ0MFowdzELMAkGA1UEBhMCVVMxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFIMEYGA1UEAxM/TWljcm9zb2Z0 # IElkZW50aXR5IFZlcmlmaWNhdGlvbiBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 # eSAyMDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAs5EqB4MGZ/2e # neDHwLek5kIEfw+m21/71VrXRaD7dwvwgPOmbVpNeVPYoIaEV0Ugx6JU+8eiv4rH # bjXzohXEL07jSoWWSQ3/vpnYFPa8JwfuQpsr9QuSBuT9aRNlqJFy8piE64M9DuTX # cRJIIcsN7fZHSbeb+cnHF7aET/+4rJrXc2dJheOGvTdA0CWG1N61wm1iatWpeLwt # b0n55WwUFP0Ux9NlFjfey268XimN/WKbFSzWBea5iTIzo2LH19ZSZwjELvRWK54L # h8zsp7SmqusFzRlXpToLBCcckWeeLWItLx6+2sAgywQZyjP7ib6Y4nKgcjW+eeGc # g2/kbRdvkPM9AIZ1OI7Q4Emau9vT+DDK1VeIaE1y079tf3HY/b0NrpJkSLdbb3km # tc2blSGE0e8PMj17V4zzRQdMfOBeGA41dottnss2dKsF+OBzXTJWlGeXJQrGNT2U # l+fBRIuA/cH49HQZ5TD2BvshVz4GHItrFYYnSXuCk8pZ6HVH6D849MdTeaC2tOJc # Ue+9XzjBE+Z4DJVaLsVAWSjMDyTA7LoJdyOZOKa2HNrHuiC21zfYfzevCOM7cdtu # cxt9mXKw5IYzWXS1FgB7UG3GhhPa/cQ5gj0kAJpg2rqUwAVRLDSsUJkTh7uzBYCy # TTACXLgmg120Y3PvriOVT2AovjfVW6UCAwEAAaNUMFIwDgYDVR0PAQH/BAQDAgGG # MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMh+0mqFKhvKGZgEByfPUBBPaKii # MBAGCSsGAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBDAUAA4ICAQCvat3mGectlEMZ # TsvpUJVkpQORAoviNoA7FaJSwhYZtmpaXXRDMPSb/2B0CbEhHpAWbcUkj1xmiGP0 # T8x98hJMQBCLAZ/aqciu8pUbz50F60k+dKBoW+VWLGUcgn5T2lbZRhd5kkXEEDYI # UikXyy+m8n7UaSSKHo+wcw3MHEqrsqrtp5FjAWQiqDK4fjIos2dzLZG03DEBC/dH # Cqbx10rtVmDELAije0CwvHQnUofWvojdN4qJbmeIHfXJXaD+tqs6gNcalzwXNiJB # HqxN1YPmPDi9TzDpVKnTtgTDMnZhu7AYxSsYs8CA1beVsF5RTSL87Fiq6NiUtKUu # 7ZLe5xh8IVfdVWP3v23NH9Kmdyhwx+JbOlsI0ltOyACWs+GDNq+GCmVcdPbq7Hpq # dKDwS+7vlKOsUPKH7dc6MIPJ+31XvuXj+EHK5WSus6PsWOyFmszvuerzVhi5XHOa # r8V3F4NZ2zcaGHJUpUHStiN1o0Oa5Xd8lnm3QY2/7NyAoJ/Rd3VYXzUT4CUaZwt9 # ziX6BwrkYSHY1BzlB8Y2mfSW0MYV/k7N166LndsW/QTGkr3UiOapo6q792Q4O1/M # DNA1vnQZA6bFqkyiYTaCPh3zK7yXXdtLeDst9TvvYCPo9ewLIzaVr5hmv1PTe7hp # SiqWZmnElMb0X26smHiIgAZcorLtojCCBqowggSSoAMCAQICEzMABJxMFopxgJtk # M/sAAAAEnEwwDQYJKoZIhvcNAQEMBQAwWjELMAkGA1UEBhMCVVMxHjAcBgNVBAoT # FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiTWljcm9zb2Z0IElEIFZl # cmlmaWVkIENTIEVPQyBDQSAwMzAeFw0yNjA4MTkxOTU3MDZaFw0yNjA4MjIxOTU3 # MDZaMGwxCzAJBgNVBAYTAkNBMRUwEwYDVQQIHgwAUQB1AOkAYgBlAGMxEjAQBgNV # BAcTCUxhdmFsdHJpZTEYMBYGA1UEChMPRGV2b2x1dGlvbnMgSW5jMRgwFgYDVQQD # Ew9EZXZvbHV0aW9ucyBJbmMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB # gQCi6cBG0iNhtSqXlikZnav56gPRZwaVboP3VAiyem4yFHvQpdsYXOZ8iEb4URCa # zCAOoWU/H6ixhU3YU74naBgVIPedYzzzaAv26muq/xSs7DGc60MaYfQQT2cb7Zsb # zKUP+kkW0aZQsENPrZ/C1S0Nhdc3KRu76k8G6FEpv5o30tYMugPOjEdTFANgaHeO # W6sll37rKlfAO5BJIAUi49u6hwfQAdL+mcUXQZ3rkOIrJl06dDdXvNC6yCfjBdzS # i4CwEbWQLk/cmjyXldUEl7MqJOBhycGFfhQmB5Dck+xO0DOEff28o9PFfsute8NI # k4m8QJjZJF5uedDSX0XlOaUWPhLQX9FJRU0eAYKWmRBPHYXmNakfqndWbCsIg872 # OL06iL3D9mt/ARWj932oLtw6HffjTOgzjuNQfCBT7ReyGLnUSXdk2sb17p53wIQL # wJfux1dKj9pgMpuOAWCdEZDwFjRwfckvulQOWul74ygsZ+0erQYks6YyImN23RG2 # qh0CAwEAAaOCAdUwggHRMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMDwG # A1UdJQQ1MDMGCisGAQQBgjdhAQAGCCsGAQUFBwMDBhsrBgEEAYI3YYGIgLEFgoX5 # gFL4yJBqgdOiwFUwHQYDVR0OBBYEFJ9ozdbwnfVOaKc6ejHXLMmx7ahXMB8GA1Ud # IwQYMBaAFGtepTTDBcViSiFajqtzYGLUrGOFMGcGA1UdHwRgMF4wXKBaoFiGVmh0 # dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElE # JTIwVmVyaWZpZWQlMjBDUyUyMEVPQyUyMENBJTIwMDMuY3JsMHQGCCsGAQUFBwEB # BGgwZjBkBggrBgEFBQcwAoZYaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w # cy9jZXJ0cy9NaWNyb3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBFT0MlMjBD # QSUyMDAzLmNydDBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0 # cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRt # MA0GCSqGSIb3DQEBDAUAA4ICAQA8jrTJ0UmUeiehv4PlOxfp9yDLBTMnbCbjib0P # vb441RdFDEd4VUOprYBI8J4cWUdZO2lqHH6A/wHSLNXmjgeZ6Qjzx4VKUydHqfjg # nBi8ERx7kL+RY7Ml/B1YjvlYFTwWkZxqQ+Tj9YojhcSk1Cih4ZCshAipEy2bwmJ0 # WTL9MKNIH5ltTLaDif9Faiyu5o/ok7y67gV+dmbNYP8QrX2WkCE1q954QFHylhgL # tZfM3AX3dyY1Moyucn06Z/UD2IiHWLkEJBiJ+afy3CnvVNNEULox5HQ84+t7VB/q # XwPytjlSCTyA+/75kTmbr8kDZG7onKe/Zrb6wMmyEQGwl09OB8gUm/HK2Lu8dit3 # 9Vy/U3Jx+lvIQhm3xnHWcZmIR731NNN2BuY3c9i29SKnGGSSMaThlRzeoB/RO/Xj # zyM2xHxpnr6Vzbrv4749R+nKMoz/y/dnWt0V1MMHBW5DK3a361jDgp+Sjas8QysT # A31f+93LKrrAOQMC5B4SDsWviigboqvozt0t2H7iFR7FKmrxiQerTTNZMMwjSkR0 # GikmfhLioBcyvOXtBgIDfhEtaUEksS00myuFAJ0tbhGBSKCZ+nDs9Mv71dIK/mR9 # Lymq/3GSsFFzEMGZsCqdh1eC9ZcnpiS3P3ag+1Vt2uOb3ngjS4ETMSAVWUoKvtpH # PRaCcDCCBygwggUQoAMCAQICEzMAAAAVBT5uGY6TKdkAAAAAABUwDQYJKoZIhvcN # AQEMBQAwYzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjE0MDIGA1UEAxMrTWljcm9zb2Z0IElEIFZlcmlmaWVkIENvZGUgU2lnbmlu # ZyBQQ0EgMjAyMTAeFw0yNjAzMjYxODExMjhaFw0zMTAzMjYxODExMjhaMFoxCzAJ # BgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNV # BAMTIk1pY3Jvc29mdCBJRCBWZXJpZmllZCBDUyBFT0MgQ0EgMDMwggIiMA0GCSqG # SIb3DQEBAQUAA4ICDwAwggIKAoICAQDg9Ms9AqovDnMePvMOe+KybhCd8+lokzYO # RlS3kBVXseecbyGwBcsenlm5bLtMGPjiIFLzBQF+ghlVV/U29q5GcdeEEBCHTTGh # L2koIrLc4UrliMRcbv9mOMtR/l7/xAmv0Fx4BJHn1dHt37fvrBqXmKjKfGf5DpyO # /+hnV7TEreMtS19iO+bjZ/9Hnpg3PCk0e7YSbRTFkx97FZwRWpC4s3NepRfRXQh/ # WMAj7JmsYeVZohi4TF5yW2JMrJZqwHcyzJZYtD2Hlno5ZEJkdiZcEaxHOobmwO06 # Z1J9c23ps9PGIhGaq1sKLEAz9Doc5rLkYWGteDrscKhAp2kIc/oYlH9Ij6BkOqqg # WINEkEtC8ZNG1Mak+h3o65aj0iQKmdxW7IZaHO5cuyoMi+KtYfXeIIg3sVIbS2EL # 8kUtsDGdEqNqAq/isqTi1jXqLe6iKp1ni1SPdvPW9G03CTsYF68b/yuIQRwbdoBC # XemMNJCS0dorCRY4b2WAAy4ng7SANcEgrBgZf535+QfLU5hGzrKjIpbMabauWb5F # KWUKkMsPcXFkXRWO4noKPm4KWlFypqOpbJ/KONVReIlxHQRegAOBzIhRB7gr9IDQ # 1sc2MgOgQ+xVGW4oq4HD0mfAiwiyLskZrkaQ7JoanYjBNcR9RS26YxAVbcBtLitF # TzCIEg5ZdQIDAQABo4IB3DCCAdgwDgYDVR0PAQH/BAQDAgGGMBAGCSsGAQQBgjcV # AQQDAgEAMB0GA1UdDgQWBBRrXqU0wwXFYkohWo6rc2Bi1KxjhTBUBgNVHSAETTBL # MEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29t # L3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBkGCSsGAQQBgjcUAgQMHgoAUwB1 # AGIAQwBBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU2UEpsA8PY2zv # adf1zSmepEhqMOYwcAYDVR0fBGkwZzBloGOgYYZfaHR0cDovL3d3dy5taWNyb3Nv # ZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUyMENv # ZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyMS5jcmwwfQYIKwYBBQUHAQEEcTBvMG0G # CCsGAQUFBzAChmFodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRz # L01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDb2RlJTIwU2lnbmluZyUyMFBD # QSUyMDIwMjEuY3J0MA0GCSqGSIb3DQEBDAUAA4ICAQBdbiI8zwXLX8glJEh/8Q22 # UMCUhWBO46Z9FPhwOR3mdlqRVLkYOon/MczUwrjDhx3X99SPH5PSflkGoTvnO9ZW # HM5YFVYpO7NYuB+mfVSGAGZwiGOASWk0i2B7vn9nElJJmoiXxugfH5YdBsrUgTt0 # AFNXkzmqTgk+S1Hxb1u/0HCqEHVZPk2A/6eJXYbtpRM5Fcz00jisUl9BRZgSebOD # V85bBzOveqyC3f0PnHCxRJNhMb8xP/sB/VI7pf2rheSV7zqUSv8vn/fIMblXeaVI # lpqoq8SP9BJMjE/CoVXJxnkZQRM1Fa7kN9yztvReOhxSgPgpZx/Xl/jkwyEFVJTB # fBp3sTgfIc/pmqv2ehtakL2AEj78EmOPQohxJT3wyX+P78GA25tLpAvzj3RMMHd8 # z18ZuuVi+60MAzGpOASH1L8Nlr3fZRZnQO+pyye2DCvYmHaIfdUgYJqn7noxxGVv # 89+RaETh1tgCDvwNpFCSG7vl5A4ako+2fx409r9TWjXC7Oif1IQ5ZJzB4Rf8GvBi # HYjvMmHpledp1FGRLdSRFVpC3/OKpZY6avIqZp7+8pP/WQP903DdgrvAT6W4xPOB # xXPa4tGksN3SuqJaiFYHSNyeBufn8iseujW4IbBSbHD4BPqbF3qZ+7nG9d/d/G2/ # Lx4kH9cCmBfmsZdSkHmukDCCB54wggWGoAMCAQICEzMAAAAHh6M0o3uljhwAAAAA # AAcwDQYJKoZIhvcNAQEMBQAwdzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jv # c29mdCBDb3Jwb3JhdGlvbjFIMEYGA1UEAxM/TWljcm9zb2Z0IElkZW50aXR5IFZl # cmlmaWNhdGlvbiBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDIwMB4XDTIx # MDQwMTIwMDUyMFoXDTM2MDQwMTIwMTUyMFowYzELMAkGA1UEBhMCVVMxHjAcBgNV # BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE0MDIGA1UEAxMrTWljcm9zb2Z0IElE # IFZlcmlmaWVkIENvZGUgU2lnbmluZyBQQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEB # BQADggIPADCCAgoCggIBALLwwK8ZiCji3VR6TElsaQhVCbRS/3pK+MHrJSj3Zxd3 # KU3rlfL3qrZilYKJNqztA9OQacr1AwoNcHbKBLbsQAhBnIB34zxf52bDpIO3NJlf # IaTE/xrweLoQ71lzCHkD7A4As1Bs076Iu+mA6cQzsYYH/Cbl1icwQ6C65rU4V9NQ # hNUwgrx9rGQ//h890Q8JdjLLw0nV+ayQ2Fbkd242o9kH82RZsH3HEyqjAB5a8+Ae # 2nPIPc8sZU6ZE7iRrRZywRmrKDp5+TcmJX9MRff241UaOBs4NmHOyke8oU1TYrkx # h+YeHgfWo5tTgkoSMoayqoDpHOLJs+qG8Tvh8SnifW2Jj3+ii11TS8/FGngEaNAW # rbyfNrC69oKpRQXY9bGH6jn9NEJv9weFxhTwyvx9OJLXmRGbAUXN1U9nf4lXezky # 6Uh/cgjkVd6CGUAf0K+Jw+GE/5VpIVbcNr9rNE50Sbmy/4RTCEGvOq3GhjITbCa4 # crCzTTHgYYjHs1NbOc6brH+eKpWLtr+bGecy9CrwQyx7S/BfYJ+ozst7+yZtG2wR # 461uckFu0t+gCwLdN0A6cFtSRtR8bvxVFyWwTtgMMFRuBa3vmUOTnfKLsLefRaQc # VTgRnzeLzdpt32cdYKp+dhr2ogc+qM6K4CBI5/j4VFyC4QFeUP2YAidLtvpXRRo3 # AgMBAAGjggI1MIICMTAOBgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAw # HQYDVR0OBBYEFNlBKbAPD2Ns72nX9c0pnqRIajDmMFQGA1UdIARNMEswSQYEVR0g # ADBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3Bz # L0RvY3MvUmVwb3NpdG9yeS5odG0wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEw # DwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIftJqhSobyhmYBAcnz1AQT2io # ojCBhAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br # aW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBS # b290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNybDCBwwYIKwYB # BQUHAQEEgbYwgbMwgYEGCCsGAQUFBzAChnVodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0 # aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcnQw # LQYIKwYBBQUHMAGGIWh0dHA6Ly9vbmVvY3NwLm1pY3Jvc29mdC5jb20vb2NzcDAN # BgkqhkiG9w0BAQwFAAOCAgEAfyUqnv7Uq+rdZgrbVyNMul5skONbhls5fccPlmIb # zi+OwVdPQ4H55v7VOInnmezQEeW4LqK0wja+fBznANbXLB0KrdMCbHQpbLvG6UA/ # Xv2pfpVIE1CRFfNF4XKO8XYEa3oW8oVH+KZHgIQRIwAbyFKQ9iyj4aOWeAzwk+f9 # E5StNp5T8FG7/VEURIVWArbAzPt9ThVN3w1fAZkF7+YU9kbq1bCR2YD+MtunSQ1R # ft6XG7b4e0ejRA7mB2IoX5hNh3UEauY0byxNRG+fT2MCEhQl9g2i2fs6VOG19CNe # p7SquKaBjhWmirYyANb0RJSLWjinMLXNOAga10n8i9jqeprzSMU5ODmrMCJE12xS # /NWShg/tuLjAsKP6SzYZ+1Ry358ZTFcx0FS/mx2vSoU8s8HRvy+rnXqyUJ9HBqS0 # DErVLjQwK8VtsBdekBmdTbQVoCgPCqr+PDPB3xajYnzevs7eidBsM71PINK2BoE2 # UfMwxCCX3mccFgx6UsQeRSdVVVNSyALQe6PT12418xon2iDGE81OGCreLzDcMAZn # rUAx4XQLUz6ZTl65yPUiOh3k7Yww94lDf+8oG2oZmDh5O1Qe38E+M3vhKwmzIeoB # 1dVLlz4i3IpaDcR+iuGjH2TdaC1ZOmBXiCRKJLj4DT2uhJ04ji+tHD6n58vhavFI # rmcxghp9MIIaeQIBATBxMFoxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3Nv # ZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJRCBWZXJpZmllZCBD # UyBFT0MgQ0EgMDMCEzMABJxMFopxgJtkM/sAAAAEnEwwCwYJYIZIAWUDBAIBoEww # GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEIEs1KZdR # GCw84ue5E2Y28k4/G9VUhV3SEP/Xokvy2qMdMA0GCSqGSIb3DQEBCwUABIIBgCce # trUtJl1bPXHTyBQ3Y5CjE80j8IkwsCVX5BdyJZD0BvyMRrx4B89LRe5FyrXnkCQ3 # GXeWplutMGrbe9NRQK+6Ahc5q7AMygtaWqDu4CM2Nl9ggB8XoONhGU9u6bABU1GP # /3VnyDAbVSl5tuzZcOB2IrsIQef06cc0IW8OuDDeG4wSy8xC0VNzsY6dPN14rb7e # r9cx01InhpY0kP+hg/FwpvtfnK+VlON9dOLfOhZR9dnqAVq4C+e7gGO4h5UL1yNd # +TnMRuIhRqmN6oMqXRuWSv2aHJLKPQjVCZaXX3P25t8Z4P9hKE5IQ68OfRBSIGbO # 0yT1Se9g2xDQkBvWPHI7w9FC1Z0Dpb9tk7qelIjJyxnhSTigTxY5I5OPD/IKAjgp # C1dqx/n2VmTvMZ/BIXHKEkRBVI7n0RpFSY3kn9SYd0VYZUnK3SJZ+sYudt4fVNPX # M0evaagSFY2te2j/U5Rwiclkuq29JMILjlcBWEcXT7H8Dx7VJ++3GK9mlJ1p1aGC # GBEwghgNBgorBgEEAYI3AwMBMYIX/TCCF/kGCSqGSIb3DQEHAqCCF+owghfmAgED # MQ8wDQYJYIZIAWUDBAIBBQAwggFiBgsqhkiG9w0BCRABBKCCAVEEggFNMIIBSQIB # AQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCC3DcW/Jvz987lYlv5SpINe # v8rsjHh18b1lOVgv85Yl2wIGaoRI32CJGBMyMDI2MDgyMTEyNDYzNy43NDRaMASA # AgH0oIHhpIHeMIHbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ # MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u # MSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQL # Ex5uU2hpZWxkIFRTUyBFU046QTUwMC0wNUUwLUQ5NDcxNTAzBgNVBAMTLE1pY3Jv # c29mdCBQdWJsaWMgUlNBIFRpbWUgU3RhbXBpbmcgQXV0aG9yaXR5oIIPITCCB4Iw # ggVqoAMCAQICEzMAAAAF5c8P/2YuyYcAAAAAAAUwDQYJKoZIhvcNAQEMBQAwdzEL # MAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFIMEYG # A1UEAxM/TWljcm9zb2Z0IElkZW50aXR5IFZlcmlmaWNhdGlvbiBSb290IENlcnRp # ZmljYXRlIEF1dGhvcml0eSAyMDIwMB4XDTIwMTExOTIwMzIzMVoXDTM1MTExOTIw # NDIzMVowYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5n # IENBIDIwMjAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCefOdSY/3g # xZ8FfWO1BiKjHB7X55cz0RMFvWVGR3eRwV1wb3+yq0OXDEqhUhxqoNv6iYWKjkMc # LhEFxvJAeNcLAyT+XdM5i2CgGPGcb95WJLiw7HzLiBKrxmDj1EQB/mG5eEiRBEp7 # dDGzxKCnTYocDOcRr9KxqHydajmEkzXHOeRGwU+7qt8Md5l4bVZrXAhK+WSk5Cih # NQsWbzT1nRliVDwunuLkX1hyIWXIArCfrKM3+RHh+Sq5RZ8aYyik2r8HxT+l2hmR # llBvE2Wok6IEaAJanHr24qoqFM9WLeBUSudz+qL51HwDYyIDPSQ3SeHtKog0ZubD # k4hELQSxnfVYXdTGncaBnB60QrEuazvcob9n4yR65pUNBCF5qeA4QwYnilBkfnme # AjRN3LVuLr0g0FXkqfYdUmj1fFFhH8k8YBozrEaXnsSL3kdTD01X+4LfIWOuFzTz # uoslBrBILfHNj8RfOxPgjuwNvE6YzauXi4orp4Sm6tF245DaFOSYbWFK5ZgG6cUY # 2/bUq3g3bQAqZt65KcaewEJ3ZyNEobv35Nf6xN6FrA6jF9447+NHvCjeWLCQZ3M8 # lgeCcnnhTFtyQX3XgCoc6IRXvFOcPVrr3D9RPHCMS6Ckg8wggTrtIVnY8yjbvGOU # sAdZbeXUIQAWMs0d3cRDv09SvwVRd61evQIDAQABo4ICGzCCAhcwDgYDVR0PAQH/ # BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRraSg6NS9IY0DPe9iv # Sek+2T3bITBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDov # L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMG # A1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA8G # A1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUyH7SaoUqG8oZmAQHJ89QEE9oqKIw # gYQGA1UdHwR9MHsweaB3oHWGc2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lv # cHMvY3JsL01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9v # dCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcmwwgZQGCCsGAQUF # BwEBBIGHMIGEMIGBBggrBgEFBQcwAoZ1aHR0cDovL3d3dy5taWNyb3NvZnQuY29t # L3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlv # biUyMFJvb3QlMjBDZXJ0aWZpY2F0ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3J0MA0G # CSqGSIb3DQEBDAUAA4ICAQBfiHbHfm21WhV150x4aPpO4dhEmSUVpbixNDmv6Tvu # IHv1xIs174bNGO/ilWMm+Jx5boAXrJxagRhHQtiFprSjMktTliL4sKZyt2i+SXnc # M23gRezzsoOiBhv14YSd1Klnlkzvgs29XNjT+c8hIfPRe9rvVCMPiH7zPZcw5nNj # thDQ+zD563I1nUJ6y59TbXWsuyUsqw7wXZoGzZwijWT5oc6GvD3HDokJY401uhnj # 3ubBhbkR83RbfMvmzdp3he2bvIUztSOuFzRqrLfEvsPkVHYnvH1wtYyrt5vShiKh # eGpXa2AWpsod4OJyT4/y0dggWi8g/tgbhmQlZqDUf3UqUQsZaLdIu/XSjgoZqDja # mzCPJtOLi2hBwL+KsCh0Nbwc21f5xvPSwym0Ukr4o5sCcMUcSy6TEP7uMV8RX0eH # /4JLEpGyae6Ki8JYg5v4fsNGif1OXHJ2IWG+7zyjTDfkmQ1snFOTgyEX8qBpefQb # F0fx6URrYiarjmBprwP6ZObwtZXJ23jK3Fg/9uqM3j0P01nzVygTppBabzxPAh/h # Hhhls6kwo3QLJ6No803jUsZcd4JQxiYHHc+Q/wAMcPUnYKv/q2O444LO1+n6j01z # 5mggCSlRwD9faBIySAcA9S8h22hIAcRQqIGEjolCK9F6nK9ZyX4lhthsGHumaABd # WzCCB5cwggV/oAMCAQICEzMAAABWfo+dWAiO6WAAAAAAAFYwDQYJKoZIhvcNAQEM # BQAwYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENB # IDIwMjAwHhcNMjUxMDIzMjA0NjUxWhcNMjYxMDIyMjA0NjUxWjCB2zELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0 # IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOkE1 # MDAtMDVFMC1EOTQ3MTUwMwYDVQQDEyxNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1l # IFN0YW1waW5nIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC # ggIBALSln5v7pdNu/3fEZW/DJ/4NEFL7y6mNlbMt7SPFNrRUrKU2aJmTg9wR0/C5 # Efka4TCYG9VYwChTcrGivXC0l4nzxkiAazwoLPT+MtuJayRJq1ekOc+AZqjISD62 # YRL2Z1qQkuBzu42Enov58Zgu/9RK/peS4Nz5ksW/HdiFXAEcUsNQeJsQelyNJ5Hp # fcGtXWG9sHxqaH62hZsWTsU/XjYbeCx9EQUlbnm2umTaY0v9ILX5u6oiIsj+qej0 # c002zJ1arB51f3f61tMx8fkPkDWecFKipk2SQfYVPOd/tqV+aw3yt9rjWPf1gTgJ # s26oKRHUJG4jGr1DMlA0oZsnCL4B3UJ0ttO7E4/DPpCS97TnWoT7j6jMLGggoHX8 # MEMdDvUynuxUr2wBGLNQJ5XQpfyhxmQjlb1Dao8i9dCS3tP/hg/f8p6lxlhaVzo2 # rp72f3CkToYzeDOXuscdG9poqnD4ouP4otmYXimpZSRE+wipaRUobN8MoOhf36I0 # MULz521g+DcsepYY1o8JqC3MesNRUgrWrywpct9wS0UpU1OKilMWmvHe2DexKqZ/ # VztEmNLpjryhV61h+68ZfvYmonIrXZ005LAJ0Y73pHSk95YO5UTH5n2VPL1zYjdF # GCc0/RI6o0ZtLjf4dKF8T4TXz2KnhW8j1xhsc2mFM+s8d6k3AgMBAAGjggHLMIIB # xzAdBgNVHQ4EFgQUvrYz8rurWf4eRrMi78s9R/hTSFowHwYDVR0jBBgwFoAUa2ko # OjUvSGNAz3vYr0npPtk92yEwbAYDVR0fBGUwYzBhoF+gXYZbaHR0cDovL3d3dy5t # aWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwUHVibGljJTIwUlNB # JTIwVGltZXN0YW1waW5nJTIwQ0ElMjAyMDIwLmNybDB5BggrBgEFBQcBAQRtMGsw # aQYIKwYBBQUHMAKGXWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2Vy # dHMvTWljcm9zb2Z0JTIwUHVibGljJTIwUlNBJTIwVGltZXN0YW1waW5nJTIwQ0El # MjAyMDIwLmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMI # MA4GA1UdDwEB/wQEAwIHgDBmBgNVHSAEXzBdMFEGDCsGAQQBgjdMg30BATBBMD8G # CCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3Mv # UmVwb3NpdG9yeS5odG0wCAYGZ4EMAQQCMA0GCSqGSIb3DQEBDAUAA4ICAQAOA6gF # xLDtuo/y2uxYJ/0In4rfMbmXpKmee/mHvrB/4UU2xBIxmK2YLKsEf5VFHyghaW2R # fJrGmT0CTkeGGFBFPF8oy65/GNYwkpqMYfZe7VokqHPyRQcN+eiQJsxhsXgQNhFk # sUbk69QLmXup2GjfP8LRZIh3LPIDGncVwbOg8VYcruWJ4Sz0JH7pipt5RX7cBO6Y # nle39ZbJJpYLAugHkhgsxj2VIAr3B+U7/0Hvc+2yCJkg90rs4TiMGj/nikE2H+u0 # 4n8iSpFkEnRn0wOinLuNZPCweqDyvjC5NY28cSucD6i0i+tsYytOEgVxxCUhJ7Bb # dM8VpMT/5YHo9Q8alJ5q2BHZMb8ykhyAKhVkmbpf+YSPrycbxT4bDUARJOHErpQ5 # CUKXHVYv4Jn/5hxTmIQwY7GtebOC/trAYpd11f0/EYkeukPMWL0y0VsXdnVbKzqA # sJ7FOFiHogtCYpwr9VixxIe0Ms6/UUq+JCiS1naTWC4YI5KI05hJAIxTu++Ld8Qe # 3p27yBdBjrFdfcZwlM6vRBisrdIDLmqYSpTYyfmk6Y1jGQxqPhjirJ6fdx5n7Zpd # EsqdxffjN8vsuliRlGaCGSattu4w44xJ3baVK4fQXT3VSH1SQ/wLvNUc4dOVBwIr # 6K0NzrPDxCxyIIjnfU1s23YJhs3CC7f3XVUBETGCB0Mwggc/AgEBMHgwYTELMAkG # A1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UE # AxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENBIDIwMjACEzMA # AABWfo+dWAiO6WAAAAAAAFYwDQYJYIZIAWUDBAIBBQCgggScMBEGCyqGSIb3DQEJ # EAIPMQIFADAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkF # MQ8XDTI2MDgyMTEyNDYzN1owLwYJKoZIhvcNAQkEMSIEIE4p5YqNUlU7fomzMxcy # Jyl8DJ7vbfPr8HWObUz2z+pBMIG5BgsqhkiG9w0BCRACLzGBqTCBpjCBozCBoAQg # tgwzJU2k4/CVd4k4OV56XuAkh+tNeN2fl/aOTQYDDKgwfDBlpGMwYTELMAkGA1UE # BhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMp # TWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENBIDIwMjACEzMAAABW # fo+dWAiO6WAAAAAAAFYwggNeBgsqhkiG9w0BCRACEjGCA00wggNJoYIDRTCCA0Ew # ggIpAgEBMIIBCaGB4aSB3jCB2zELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp # bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw # b3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEn # MCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOkE1MDAtMDVFMC1EOTQ3MTUwMwYDVQQD # EyxNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lIFN0YW1waW5nIEF1dGhvcml0eaIj # CgEBMAcGBSsOAwIaAxUA/3P3KRUqkFmAXl4IMkSdmW72BBGgZzBlpGMwYTELMAkG # A1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UE # AxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENBIDIwMjAwDQYJ # KoZIhvcNAQELBQACBQDuMrvdMCIYDzIwMjYwODIxMTE1ODIxWhgPMjAyNjA4MjIx # MTU4MjFaMHQwOgYKKwYBBAGEWQoEATEsMCowCgIFAO4yu90CAQAwBwIBAAICC1Iw # BwIBAAICElUwCgIFAO40DV0CAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGE # WQoDAqAKMAgCAQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQsFAAOCAQEA # D9Q+iyOvxF8jrQETPWT9jMtDxIA949GzBx2VGNMMotmZVYgz6J8UPiDkgx9P8eSh # sKIaJonsi3UAWtnMylyjoyUKjDRik6RA+aUPm5kgATBp6gr2s11ZLri3ciaPwVCS # cEZoWDquJ4IF8rx/j6zbcL5ECykRxN/lK14j4UqmmSXzM64psnBYuzXp1QUsGprS # FGVXW9pjxgJtpYix4uzdl7FtORB28n+9wgWCRCcRqBtC2DkdLg5qrdTj/zhwuJnH # G3oVSI7CAng8MfzjOMRzXbE400qqvxrBtZkriefWbEUHN8bXnB4XNuHdzUGxpR0N # qlfGp4zwl26iR9lBdusxfzANBgkqhkiG9w0BAQEFAASCAgCNNBioti4Pjx26mC/0 # FMELZLTzd7kcNdpMe/WQw3oMyDVna+Q7j50fmc+hgONAO/M/jKtjogbS4iuGIxcx # ccAksjh7WwGVDgiiKpvSZeAPwGS1JEtqf4WXFKaEnb2n/+yFfCFVArWByTXdBFf2 # QwHm/BgHkrCO3GPuL59DCJTKkwScdioLmkxRbloEn4XthOy2Wt5UZzNb5K4fsbJV # Np/3TE6TfqqsCO8WdGk1RqYGTECHdUVjaGAWPcyumadMaxfyWnU/C28v/HJVs4By # IULfd3yIVUZF2ROIu5Ng9s2yQNLUM0Hn0vdmFPw1PPQtw0OCOq41JMpivktRM8pJ # G/EuiKGDeVyV9reQUMpn84kzCXmTPJeM8nTOXy7wjaV+o+Wzc+SvgqB5Ud9k74Ct # uxa5zEbi2W6yvvv9OHZfI8afGtFafF8mU3ujlZvRsjhwfYpet19SbM3npybXh+n/ # wY5XlCCGa8HSWU1MtD/XTd9jUVd4hTrH/ciLS5q/ncoXq6ByJuoCfeqdc3o0Tj5O # n8CKgNQO3K2kRNQywG7BXabsc4VfLat+UFoRI59VpN92hRLVd8syx0w1+w7VD7xM # yZ51AzV7KLwVqMZ8N+zfCv8kWs5tlYIGwXmDMBTb7Tam60qJDq8YjPKj8o9ktHwl # +IBglI0KIL5TvZmA2I30CMddyw== # SIG # End signature block |