################################################################################ # # Copyright ©2023 Epic Systems Corporation # ################################################################################ #Requires -Version 4.0 #Requires -RunAsAdministrator <# .Synopsis Forces the active Satellite install to check-in with the Kuiper server, designed to make updating non-persistent images managed by Satellite easier. .Description Reads the Satellite installation path from the registry and then calls Satellite.exe with the "/F" flag to force Satellite to check-in with the Kuiper server. .Example .\Force-SatelliteCheckIn.ps1 #> <# .Synopsis Gets install location for Satellite (to account for non-C drives) #> function Get-SatelliteInstallPath { try { return (Get-ItemProperty -ErrorAction stop -Path Registry::'HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Epic Systems Corporation\Satellite' -Name 'Path').Path } catch { throw "Cannot locate Satellite installation directory in registry. Satellite may not be installed." } } <# .Synopsis Starts the Satellite process using the force check in flag. #> function Start-SatelliteCheckIn { param ( [Parameter(Mandatory = $true)] [string]$SatellitePath ) try { Start-Process -Wait -FilePath ($SatellitePath) -ArgumentList "/F" Write-Host "The Satellite forced check-in has completed. Check Kuiper to see the status of any deployment actions." } catch { throw "Unable to start Satellite process." } } <# .Synopsis Checks for if the Satellite Install Path changed with the Satellite check in and if it did, calls the Start-Satellite function again to ensure config updates are made. #> function Start-CheckForSatelliteUpdate { param ( [Parameter(Mandatory = $true)] [string]$OriginalSatellitePath, [Parameter(Mandatory = $true)] [string]$PostCheckinSatellitePath ) if($OriginalSatellitePath -ne $PostCheckinSatellitePath) { try { Write-Host "Satellite has been updated. We are running another forced check-in on the higher version to get the updated configuration." Start-SatelliteCheckIn -SatellitePath $PostCheckinSatellitePath } catch { throw "Satellite was updated, but we were unable to start the Satellite process a second time to update the config. Please relaunch the script." } } } # Main Execution try { $satelliteInstallPath = Get-SatelliteInstallPath Start-SatelliteCheckIn -SatellitePath $satelliteInstallPath $checkSatelliteInstallPathForUpdate = Get-SatelliteInstallPath Start-CheckForSatelliteUpdate -OriginalSatellitePath $satelliteInstallPath -PostCheckinSatellitePath $checkSatelliteInstallPathForUpdate } catch { Write-Error -Message $PSItem Exit } # SIG # Begin signature block # MIIbxgYJKoZIhvcNAQcCoIIbtzCCG7MCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDVBKenKRTZ2LBv # xQs95aypA+T22Phx7+e1v+nAJxFzi6CCCnIwggUwMIIEGKADAgECAhAECRgbX9W7 # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3 # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+ # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6 # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhADYr8hV+RmRGyDmaQCmRVYMA0G # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0 # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMjEwMjEyMDAwMDAw # WhcNMjQwMjEyMjM1OTU5WjB4MQswCQYDVQQGEwJVUzESMBAGA1UECBMJV2lzY29u # c2luMQ8wDQYDVQQHEwZWZXJvbmExITAfBgNVBAoTGEVwaWMgU3lzdGVtcyBDb3Jw # b3JhdGlvbjEhMB8GA1UEAxMYRXBpYyBTeXN0ZW1zIENvcnBvcmF0aW9uMIIBIjAN # BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs+Urj8fzh7dLsa5uuO47Zgw78vsU # yVBdMRkRBchFWOeRfJyL83Iqjzu4jk+Xw3ItG72fBOt18QWXxIoP8tAAtPKBhS1G # 5SobpyZD7pxw7F+s1za7Au36Lx4L3J+h3nnoEDJQIFlZwYxXprUVcf5eTd4D3+AP # zaB7YovG3qC1ioTUDbkPidSHZaVpcqfjrL5c79or6jbQaqOomMq4MBVrh45kU4rW # hFZkpe43X7j2DaTvJEHaqGQHgHANqdhWn5z5VD/t/VMb56VKghLWxXT6/Uej5bZ0 # wtCsGnJacx3KYku1CpRfMcsxrPNatB7wZRVk26/5qtFq406hY9ofGa2fkQIDAQAB # o4IBxDCCAcAwHwYDVR0jBBgwFoAUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHQYDVR0O # BBYEFBWKMGLl1NEO7nTjzyiaFAtayKG1MA4GA1UdDwEB/wQEAwIHgDATBgNVHSUE # DDAKBggrBgEFBQcDAzB3BgNVHR8EcDBuMDWgM6Axhi9odHRwOi8vY3JsMy5kaWdp # Y2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDA1oDOgMYYvaHR0cDovL2Ny # bDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwSwYDVR0gBEQw # QjA2BglghkgBhv1sAwEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2Vy # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAzfmKc # LV2aKX5MRrKE2c/ZZ3+TQu8QrWEJW7yA2RVxp4oLMfA1+K9BVIb6WkXo+WRmEZ46 # YCV0eXHxlTCvjkonUKvRkbVLU35+Yu7OnzqvJvcCUcVhjI31ZwUfqA8XersJDW0n # E3q0pp2Cswp2vTMkPl8aY8e9hDBng9XZd9EXYNO5SU7d/kfQD6ALghdpz7FL1jkV # 4d2D7fCBIvhKdqFT+MqD9T/8RMMkyJlqGOwE0KqS67a1p+ZWbZqYN6ATWoUjbsaM # 5R9l4+u9Ij8bTHYepeMn3LmW53Qa/lAgsmAVkX99rzxdakocuwwDHmjeSAUsQwjn # gBrnDbxVCUKff5FWMYIQqjCCEKYCAQEwgYYwcjELMAkGA1UEBhMCVVMxFTATBgNV # BAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8G # A1UEAxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIENvZGUgU2lnbmluZyBDQQIQ # A2K/IVfkZkRsg5mkApkVWDANBglghkgBZQMEAgEFAKCBtDAZBgkqhkiG9w0BCQMx # DAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkq # hkiG9w0BCQQxIgQg/8OeC6gUGwUM0IB6nE+eL65FErmU9xJo37QC7a29jpcwSAYK # KwYBBAGCNwIBDDE6MDigNoA0AEYAbwByAGMAZQAtAFMAYQB0AGUAbABsAGkAdABl # AEMAaABlAGMAawBJAG4ALgBwAHMAMTANBgkqhkiG9w0BAQEFAASCAQAW7sa6PXW3 # tFWlSt22RJS0PpJ9eclbuqmm+CuG2geB4/nUTgHYCLI5h2pTucJLx2emBua+Xisd # 6o5mvYlV8XWoxINqgw4eNt1Paklu4pPLVPd+xLLYRYvU8R5iPWjhCc6eH8pywCPX # 8XZn1AnKdRXW6xhG3yIBC3AM+IWrdQsPuXNvin7NH3eh+DDrEgA2TTrFlhK1cqrl # qopnjmBP4uyGhcGGaUIQI27Gutz1tStgy7v98/dGEoiuzgMAg9yGwyv/p1p3ibwS # WIqBcVXAtGocKdX/s4uyc7aRt53IGAzvabvAiH4hbxgMBcd9whorP5xewASOKSM9 # OU11hfNVFls4oYIOPTCCDjkGCisGAQQBgjcDAwExgg4pMIIOJQYJKoZIhvcNAQcC # oIIOFjCCDhICAQMxDTALBglghkgBZQMEAgEwggEPBgsqhkiG9w0BCRABBKCB/wSB # /DCB+QIBAQYLYIZIAYb4RQEHFwMwMTANBglghkgBZQMEAgEFAAQg5SaTGEu5m/pZ # yjP599WNjg3dAXEKlV11e2aLArJB3OYCFQDCp8WcaLPXJ0bRwFUz/w9tEolt5xgP # MjAyMzA2MjAyMDU0MjZaMAMCAR6ggYakgYMwgYAxCzAJBgNVBAYTAlVTMR0wGwYD # VQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1 # c3QgTmV0d29yazExMC8GA1UEAxMoU3ltYW50ZWMgU0hBMjU2IFRpbWVTdGFtcGlu # ZyBTaWduZXIgLSBHM6CCCoswggU4MIIEIKADAgECAhB7BbHUSWhRRPfJidKcGZ0S # MA0GCSqGSIb3DQEBCwUAMIG9MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNp # Z24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV # BAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl # IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmlj # YXRpb24gQXV0aG9yaXR5MB4XDTE2MDExMjAwMDAwMFoXDTMxMDExMTIzNTk1OVow # dzELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8w # HQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMSgwJgYDVQQDEx9TeW1hbnRl # YyBTSEEyNTYgVGltZVN0YW1waW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A # MIIBCgKCAQEAu1mdWVVPnYxyXRqBoutV87ABrTxxrDKPBWuGmicAMpdqTclkFEsp # u8LZKbku7GOz4c8/C1aQ+GIbfuumB+Lef15tQDjUkQbnQXx5HMvLrRu/2JWR8/Du # bPitljkuf8EnuHg5xYSl7e2vh47Ojcdt6tKYtTofHjmdw/SaqPSE4cTRfHHGBim0 # P+SDDSbDewg+TfkKtzNJ/8o71PWym0vhiJka9cDpMxTW38eA25Hu/rySV3J39M2o # zP4J9ZM3vpWIasXc9LFL1M7oCZFftYR5NYp4rBkyjyPBMkEbWQ6pPrHM+dYr77fY # 5NUdbRE6kvaTyZzjSO67Uw7UNpeGeMWhNwIDAQABo4IBdzCCAXMwDgYDVR0PAQH/ # BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwZgYDVR0gBF8wXTBbBgtghkgBhvhF # AQcXAzBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2NwczAlBggr # BgEFBQcCAjAZGhdodHRwczovL2Quc3ltY2IuY29tL3JwYTAuBggrBgEFBQcBAQQi # MCAwHgYIKwYBBQUHMAGGEmh0dHA6Ly9zLnN5bWNkLmNvbTA2BgNVHR8ELzAtMCug # KaAnhiVodHRwOi8vcy5zeW1jYi5jb20vdW5pdmVyc2FsLXJvb3QuY3JsMBMGA1Ud # JQQMMAoGCCsGAQUFBwMIMCgGA1UdEQQhMB+kHTAbMRkwFwYDVQQDExBUaW1lU3Rh # bXAtMjA0OC0zMB0GA1UdDgQWBBSvY9bKo06FcuCnvEHzKaI4f4B1YjAfBgNVHSME # GDAWgBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEAdeqw # LdU0GVwyRf4O4dRPpnjBb9fq3dxP86HIgYj3p48V5kApreZd9KLZVmSEcTAq3R5h # F2YgVgaYGY1dcfL4l7wJ/RyRR8ni6I0D+8yQL9YKbE4z7Na0k8hMkGNIOUAhxN3W # bomYPLWYl+ipBrcJyY9TV0GQL+EeTU7cyhB4bEJu8LbF+GFcUvVO9muN90p6vvPN # /QPX2fYDqA/jU/cKdezGdS6qZoUEmbf4Blfhxg726K/a7JsYH6q54zoAv86KlMsB # 257HOLsPUqvR45QDYApNoP4nbRQy/D+XQOG/mYnb5DkUvdrk08PqK1qzlVhVBH3H # muwjA42FKtL/rqlhgTCCBUswggQzoAMCAQICEHvU5a+6zAc/oQEjBCJBTRIwDQYJ # KoZIhvcNAQELBQAwdzELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENv # cnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMSgwJgYD # VQQDEx9TeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIENBMB4XDTE3MTIyMzAw # MDAwMFoXDTI5MDMyMjIzNTk1OVowgYAxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRT # eW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0 # d29yazExMC8GA1UEAxMoU3ltYW50ZWMgU0hBMjU2IFRpbWVTdGFtcGluZyBTaWdu # ZXIgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8Oiqr43L9p # e1QXcUcJvY08gfh0FXdnkJz93k4Cnkt29uU2PmXVJCBtMPndHYPpPydKM05tFork # jUCNIqq+pwsb0ge2PLUaJCj4G3JRPcgJiCYIOvn6QyN1R3AMs19bjwgdckhXZU2v # AjxA9/TdMjiTP+UspvNZI8uA3hNN+RDJqgoYbFVhV9HxAizEtavybCPSnw0PGWyt # hWJp/U6FwYpSMatb2Ml0UuNXbCK/VX9vygarP0q3InZl7Ow28paVgSYs/buYqgE4 # 068lQJsJU/ApV4VYXuqFSEEhh+XetNMmsntAU1h5jlIxBk2UA0XEzjwD7LcA8joi # xbRv5e+wipsCAwEAAaOCAccwggHDMAwGA1UdEwEB/wQCMAAwZgYDVR0gBF8wXTBb # BgtghkgBhvhFAQcXAzBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29t # L2NwczAlBggrBgEFBQcCAjAZGhdodHRwczovL2Quc3ltY2IuY29tL3JwYTBABgNV # HR8EOTA3MDWgM6Axhi9odHRwOi8vdHMtY3JsLndzLnN5bWFudGVjLmNvbS9zaGEy # NTYtdHNzLWNhLmNybDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8E # BAMCB4AwdwYIKwYBBQUHAQEEazBpMCoGCCsGAQUFBzABhh5odHRwOi8vdHMtb2Nz # cC53cy5zeW1hbnRlYy5jb20wOwYIKwYBBQUHMAKGL2h0dHA6Ly90cy1haWEud3Mu # c3ltYW50ZWMuY29tL3NoYTI1Ni10c3MtY2EuY2VyMCgGA1UdEQQhMB+kHTAbMRkw # FwYDVQQDExBUaW1lU3RhbXAtMjA0OC02MB0GA1UdDgQWBBSlEwGpn4XMG24WHl87 # Map5NgB7HTAfBgNVHSMEGDAWgBSvY9bKo06FcuCnvEHzKaI4f4B1YjANBgkqhkiG # 9w0BAQsFAAOCAQEARp6v8LiiX6KZSM+oJ0shzbK5pnJwYy/jVSl7OUZO535lBliL # vFeKkg0I2BC6NiT6Cnv7O9Niv0qUFeaC24pUbf8o/mfPcT/mMwnZolkQ9B5K/mXM # 3tRr41IpdQBKK6XMy5voqU33tBdZkkHDtz+G5vbAf0Q8RlwXWuOkO9VpJtUhfeGA # Z35irLdOLhWa5Zwjr1sR6nGpQfkNeTipoQ3PtLHaPpp6xyLFdM3fRwmGxPyRJbIb # lumFCOjd6nRgbmClVnoNyERY3Ob5SBSe5b/eAL13sZgUchQk38cRLB8AP8NLFMZn # HMweBqOQX1xUiz7jM1uCD8W3hgJOcZ/pZkU/djGCAlowggJWAgEBMIGLMHcxCzAJ # BgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UE # CxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEoMCYGA1UEAxMfU3ltYW50ZWMgU0hB # MjU2IFRpbWVTdGFtcGluZyBDQQIQe9Tlr7rMBz+hASMEIkFNEjALBglghkgBZQME # AgGggaQwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEP # Fw0yMzA2MjAyMDU0MjZaMC8GCSqGSIb3DQEJBDEiBCAfIWyxLgUzFqPjq1AWfwKf # oRinQaTV+yzzVrBaTyiSXTA3BgsqhkiG9w0BCRACLzEoMCYwJDAiBCDEdM52AH0C # OU4NpeTefBTGgPniggE8/vZT7123H99h+DALBgkqhkiG9w0BAQEEggEAYb+peL+E # 1fpcXUzHXufcz0coGNsW4dFR+vDFeXxmKsZ8OIL91MYZbablA2yWlqHV4pGJ+Hf8 # oYWGvHSRBmxiR/GDNJGxtnhOIG1jY4Y7SlUSkvJPNyvWCNvPqdJQxH+UwzPRQUAC # d+B98RLxG6kEKanzkC5Fpw8EI641lnnYvR0qHCsT16XM+tG6y7G4aJ5CgK7Acxj+ # dTxZusAjusEJs7PC/zgufzIFsVkTU3N8p9hkcDzkcprZe2BBPPH9G4FuAjvy05j0 # lSLa2GW++b+354+inR3JHqnclW+8iClaGHlnFPAMvGfAYZWZ6q9CvhGK1uNImuXO # oixPEvvFCZbpRw== # SIG # End signature block