' Windows Installer utility to generate a transform from two databases
' For use with Windows Scripting Host, CScript.exe or WScript.exe
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates use of Database.GenerateTransform and MsiDatabaseGenerateTransform
'
Option Explicit

Const msiOpenDatabaseModeReadOnly     = 0
Const msiOpenDatabaseModeTransact     = 1
Const msiOpenDatabaseModeCreate       = 3

If Wscript.Arguments.Count < 2 Then
	Wscript.Echo "Windows Installer database tranform generation utility" &_
		vbNewLine & " 1st argument is the path to the original installer database" &_
		vbNewLine & " 2nd argument is the path to the updated installer database" &_
		vbNewLine & " 3rd argument is the path to the transform file to generate" &_
		vbNewLine & " If the 3rd argument is omitted, the databases are only compared" &_
		vbNewLine &_
		vbNewLine & "Copyright (C) Microsoft Corporation.  All rights reserved."
	Wscript.Quit 1
End If

' Connect to Windows Installer object
On Error Resume Next
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError

' Open databases and generate transform
Dim database1 : Set database1 = installer.OpenDatabase(Wscript.Arguments(0), msiOpenDatabaseModeReadOnly) : CheckError
Dim database2 : Set database2 = installer.OpenDatabase(Wscript.Arguments(1), msiOpenDatabaseModeReadOnly) : CheckError
Dim transform:transform = ""  'Simply compare if no output transform file supplied
If Wscript.Arguments.Count >= 3 Then transform = Wscript.Arguments(2)
Dim different:different = Database2.GenerateTransform(Database1, transform) : CheckError
If Not different Then Wscript.Echo "Databases are identical" Else If transform = Empty Then Wscript.Echo "Databases are different"

Sub CheckError
	Dim message, errRec
	If Err = 0 Then Exit Sub
	message = Err.Source & " " & Hex(Err) & ": " & Err.Description
	If Not installer Is Nothing Then
		Set errRec = installer.LastErrorRecord
		If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
	End If
	Wscript.Echo message
	Wscript.Quit 2
End Sub

'' SIG '' Begin signature block
'' SIG '' MIIiPAYJKoZIhvcNAQcCoIIiLTCCIikCAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' LEOvI1OL4Ms+i8VD+9Lv0JnljZ8+Z42whrFijf9Ua/Cg
'' SIG '' ggt+MIIFBjCCA+6gAwIBAgITMwAAAbMMsIBMVVRNwwAA
'' SIG '' AAABszANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
'' SIG '' aWduaW5nIFBDQSAyMDEwMB4XDTE3MDcxODE3NTA0MVoX
'' SIG '' DTE4MDcxMDE3NTA0MVowfzELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEpMCcGA1UEAxMgTWljcm9zb2Z0IFdpbmRvd3MgS2l0
'' SIG '' cyBQdWJsaXNoZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
'' SIG '' DwAwggEKAoIBAQDj/OZIi6Wkvb/7qsbk9Hzt29FnPTTx
'' SIG '' jlF1ieuIDWbFH6N67ReJ6irt/TwIaUb7UhbtnZlTv3jM
'' SIG '' CeoSn16BIu6fx5yYgCbDNigTbgDK/VtLtlPM1JhBsHSP
'' SIG '' OifMQODUGyz4ESy4iPuSjoZ3AzxCIPHowUwhLKd/OMCI
'' SIG '' 9ZH4kOCWJR7FO0G8cnzGg14YLQ+Myj1gfJUNNJ39G6J9
'' SIG '' rkkSaP3qhDDFlSEvA1LT/tDdhd80lk15lAL9XixHQWqL
'' SIG '' RuDEvsS+PtUdtvPHcd0a8SCdgwDSmRTCMcgV/+Y9XxPx
'' SIG '' ZgVhR4E+oxjb3TOsqONvPZ4okmXyegkpVGSLTKdvlaob
'' SIG '' 9at1AgMBAAGjggF6MIIBdjAfBgNVHSUEGDAWBgorBgEE
'' SIG '' AYI3CgMUBggrBgEFBQcDAzAdBgNVHQ4EFgQUEOt/BMoa
'' SIG '' ngBw73XWgdsQqAbmFkAwUQYDVR0RBEowSKRGMEQxDDAK
'' SIG '' BgNVBAsTA0FPQzE0MDIGA1UEBRMrMjI5OTAzK2ZkNmI5
'' SIG '' ZTVkLWViNzMtNDE4OS1hYmMyLWY3Y2FjZGEzODFhYzAf
'' SIG '' BgNVHSMEGDAWgBTm/F97uyIAWORyTrX0IXQjMubvrDBW
'' SIG '' BgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jv
'' SIG '' c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNDb2RT
'' SIG '' aWdQQ0FfMjAxMC0wNy0wNi5jcmwwWgYIKwYBBQUHAQEE
'' SIG '' TjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jv
'' SIG '' c29mdC5jb20vcGtpL2NlcnRzL01pY0NvZFNpZ1BDQV8y
'' SIG '' MDEwLTA3LTA2LmNydDAMBgNVHRMBAf8EAjAAMA0GCSqG
'' SIG '' SIb3DQEBCwUAA4IBAQCZefVnnkCvoNaNSWyXyPeQWeFb
'' SIG '' 58BqjndhUqkCTsZkcACo16vVO9MsQWsMb2JIXmXS4Znr
'' SIG '' aOE5TAb3I9x663oKc2kuJ0L3CoTBPXq6BBYT+Xy+JsWc
'' SIG '' DUqB2o2pVHOsPEabt+9vMBx6gilZpSxrUsXhctdn+xVT
'' SIG '' ssRGEkBHsDLhXnoBwQFvgZgG/PPQ4i3pina/YpS6EIet
'' SIG '' BCZy8SqkpdLojf37fgx1RAwmS29ei87ROBUGqJe+DoQu
'' SIG '' weFac/IgbLUNhIE3R06lax3fWiucaiMxIkbq3dKy9vpz
'' SIG '' iZTFTLtG9oEwXGuQRGpF8s1hN9Jww0oQzomI0LF5nVMz
'' SIG '' nU5untD8MIIGcDCCBFigAwIBAgIKYQxSTAAAAAAAAzAN
'' SIG '' BgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm
'' SIG '' aWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzA2MjA0
'' SIG '' MDE3WhcNMjUwNzA2MjA1MDE3WjB+MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
'' SIG '' aWduaW5nIFBDQSAyMDEwMIIBIjANBgkqhkiG9w0BAQEF
'' SIG '' AAOCAQ8AMIIBCgKCAQEA6Q5kUHlntcTj/QkATJ6UrPdW
'' SIG '' aOpE2M/FWE+ppXZ8bUW60zmStKQe+fllguQX0o/9RJwI
'' SIG '' 6GWTzixVhL99COMuK6hBKxi3oktuSUxrFQfe0dLCiR5x
'' SIG '' lM21f0u0rwjYzIjWaxeUOpPOJj/s5v40mFfVHV1J9rIq
'' SIG '' LtWFu1k/+JC0K4N0yiuzO0bj8EZJwRdmVMkcvR3EVWJX
'' SIG '' cvhnuSUgNN5dpqWVXqsogM3Vsp7lA7Vj07IUyMHIiiYK
'' SIG '' WX8H7P8O7YASNUwSpr5SW/Wm2uCLC0h31oVH1RC5xuiq
'' SIG '' 7otqLQVcYMa0KlucIxxfReMaFB5vN8sZM4BqiU2jamZj
'' SIG '' eJPVMM+VHwIDAQABo4IB4zCCAd8wEAYJKwYBBAGCNxUB
'' SIG '' BAMCAQAwHQYDVR0OBBYEFOb8X3u7IgBY5HJOtfQhdCMy
'' SIG '' 5u+sMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsG
'' SIG '' A1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1Ud
'' SIG '' IwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1Ud
'' SIG '' HwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0
'' SIG '' LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1
'' SIG '' dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEww
'' SIG '' SgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0
'' SIG '' LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAt
'' SIG '' MDYtMjMuY3J0MIGdBgNVHSAEgZUwgZIwgY8GCSsGAQQB
'' SIG '' gjcuAzCBgTA9BggrBgEFBQcCARYxaHR0cDovL3d3dy5t
'' SIG '' aWNyb3NvZnQuY29tL1BLSS9kb2NzL0NQUy9kZWZhdWx0
'' SIG '' Lmh0bTBABggrBgEFBQcCAjA0HjIgHQBMAGUAZwBhAGwA
'' SIG '' XwBQAG8AbABpAGMAeQBfAFMAdABhAHQAZQBtAGUAbgB0
'' SIG '' AC4gHTANBgkqhkiG9w0BAQsFAAOCAgEAGnTvV08pe8QW
'' SIG '' hXi4UNMi/AmdrIKX+DT/KiyXlRLl5L/Pv5PI4zSp24G4
'' SIG '' 3B4AvtI1b6/lf3mVd+UC1PHr2M1OHhthosJaIxrwjKhi
'' SIG '' UUVnCOM/PB6T+DCFF8g5QKbXDrMhKeWloWmMIpPMdJjn
'' SIG '' oUdD8lOswA8waX/+0iUgbW9h098H1dlyACxphnY9Udum
'' SIG '' OUjJN2FtB91TGcun1mHCv+KDqw/ga5uV1n0oUbCJSlGk
'' SIG '' mmzItx9KGg5pqdfcwX7RSXCqtq27ckdjF/qm1qKmhuyo
'' SIG '' EESbY7ayaYkGx0aGehg/6MUdIdV7+QIjLcVBy78dTMgW
'' SIG '' 77Gcf/wiS0mKbhXjpn92W9FTeZGFndXS2z1zNfM8rlSy
'' SIG '' UkdqwKoTldKOEdqZZ14yjPs3hdHcdYWch8ZaV4XCv90N
'' SIG '' j4ybLeu07s8n07VeafqkFgQBpyRnc89NT7beBVaXevfp
'' SIG '' Uk30dwVPhcbYC/GO7UIJ0Q124yNWeCImNr7KsYxuqh3k
'' SIG '' hdpHM2KPpMmRM19xHkCvmGXJIuhCISWKHC1g2TeJQYkq
'' SIG '' Fg/XYTyUaGBS79ZHmaCAQO4VgXc+nOBTGBpQHTiVmx5m
'' SIG '' MxMnORd4hzbOTsNfsvU9R1O24OXbC2E9KteSLM43Wj5A
'' SIG '' QjGkHxAIwlacvyRdUQKdannSF9PawZSOB3slcUSrBmrm
'' SIG '' 1MbfI5qWdcUxghYWMIIWEgIBATCBlTB+MQswCQYDVQQG
'' SIG '' EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE
'' SIG '' BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv
'' SIG '' cnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29k
'' SIG '' ZSBTaWduaW5nIFBDQSAyMDEwAhMzAAABswywgExVVE3D
'' SIG '' AAAAAAGzMA0GCWCGSAFlAwQCAQUAoIIBBDAZBgkqhkiG
'' SIG '' 9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgEL
'' SIG '' MQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQg
'' SIG '' gN866NpS7HixjtjP92kpjmQFYaHpBAujo7+KZVwNlocw
'' SIG '' PAYKKwYBBAGCNwoDHDEuDCxlRzFGZkF4Tmdnc1hXZmQv
'' SIG '' SGxxdlBmVkFzSGdXZFRFUzA3dlpSWVhNOXNvPTBaBgor
'' SIG '' BgEEAYI3AgEMMUwwSqAkgCIATQBpAGMAcgBvAHMAbwBm
'' SIG '' AHQAIABXAGkAbgBkAG8AdwBzoSKAIGh0dHA6Ly93d3cu
'' SIG '' bWljcm9zb2Z0LmNvbS93aW5kb3dzMA0GCSqGSIb3DQEB
'' SIG '' AQUABIIBALvy8BfUeEw85tP9I0/KOzYBHOBHuCzegybh
'' SIG '' 0bhGdWzZjC386MSzLv7uSrwCX85qLDvHiGgkOpTuRYtT
'' SIG '' JId/6MT5taQp+DKZ37agVUuOTLoCzs95pl78F4naKbqW
'' SIG '' VLpcBXN3S+Jm8tG3qYVKFwWvu4vU4of3yqNDNj5AaJJ0
'' SIG '' EK16PbH5zdf55ZCl0I1r4/ZObKuDrMcYLsBr3SjEntsD
'' SIG '' SZWSLPr6lLGIfEZJJPXJNF6F+vRk0iWLPVPenlDt9nyO
'' SIG '' lKOPzHNC5QFWnjCyftNsi+ydHZ2SZTIp0I/8Sb4ByhlM
'' SIG '' GRKEW1096uK4/5tejkBm0b9FiUuBoov6wgwTaw8axyah
'' SIG '' ghNJMIITRQYKKwYBBAGCNwMDATGCEzUwghMxBgkqhkiG
'' SIG '' 9w0BBwKgghMiMIITHgIBAzEPMA0GCWCGSAFlAwQCAQUA
'' SIG '' MIIBPAYLKoZIhvcNAQkQAQSgggErBIIBJzCCASMCAQEG
'' SIG '' CisGAQQBhFkKAwEwMTANBglghkgBZQMEAgEFAAQgqyC5
'' SIG '' adEDCaUWq9O7MHaIG0AyyvAwzML3JVAGNArACIgCBlnO
'' SIG '' ywEYhBgTMjAxNzA5MzAwMjIzMjUuNDMxWjAHAgEBgAIB
'' SIG '' 9KCBuKSBtTCBsjELMAkGA1UEBhMCVVMxEzARBgNVBAgT
'' SIG '' Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
'' SIG '' BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEMMAoG
'' SIG '' A1UECxMDQU9DMScwJQYDVQQLEx5uQ2lwaGVyIERTRSBF
'' SIG '' U046RjZGRi0yREE3LUJCNzUxJTAjBgNVBAMTHE1pY3Jv
'' SIG '' c29mdCBUaW1lLVN0YW1wIFNlcnZpY2Wggg7NMIIGcTCC
'' SIG '' BFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsF
'' SIG '' ADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
'' SIG '' bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
'' SIG '' FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMp
'' SIG '' TWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y
'' SIG '' aXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcNMjUwNzAx
'' SIG '' MjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
'' SIG '' V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
'' SIG '' A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYD
'' SIG '' VQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAx
'' SIG '' MDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
'' SIG '' AKkdDbx3EYo6IOz8E5f1+n9plGt0VBDVpQoAgoX77Xxo
'' SIG '' SyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEw
'' SIG '' WbEwRA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq
'' SIG '' 9UeBzb8kYDJYYEbyWEeGMoQedGFnkV+BVLHPk0ySwcSm
'' SIG '' XdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKx
'' SIG '' Xf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9
'' SIG '' buWayrGo8noqCjHw2k4GkbaICDXoeByw6ZnNPOcvRLqn
'' SIG '' 9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEAAaOC
'' SIG '' AeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQW
'' SIG '' BBTVYzpcijGQ80N7fEYbxTNoWoVtVTAZBgkrBgEEAYI3
'' SIG '' FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYD
'' SIG '' VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+ii
'' SIG '' XGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVo
'' SIG '' dHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9w
'' SIG '' cm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5j
'' SIG '' cmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5o
'' SIG '' dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRz
'' SIG '' L01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYD
'' SIG '' VR0gAQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYI
'' SIG '' KwYBBQUHAgEWMWh0dHA6Ly93d3cubWljcm9zb2Z0LmNv
'' SIG '' bS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYB
'' SIG '' BQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBj
'' SIG '' AHkAXwBTAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZI
'' SIG '' hvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOhIW+z
'' SIG '' 66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj
'' SIG '' +bzta1RXCCtRgkQS+7lTjMz0YBKKdsxAQEGb3FwX/1z5
'' SIG '' Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlKkVIArzgP
'' SIG '' F/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8
'' SIG '' tv0E4XCfMkon/VWvL/625Y4zu2JfmttXQOnxzplmkIz/
'' SIG '' amJ/3cVKC5Em4jnsGUpxY517IW3DnKOiPPp/fZZqkHim
'' SIG '' bdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl
'' SIG '' 5WTs9/S/fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5H
'' SIG '' moDF0M2n0O99g/DhO3EJ3110mCIIYdqwUB5vvfHhAN/n
'' SIG '' MQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL
'' SIG '' 2IK0cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt
'' SIG '' 6o3gMy4SKfXAL1QnIffIrE7aKLixqduWsqdCosnPGUFN
'' SIG '' 4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQ
'' SIG '' cdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9Y
'' SIG '' BS7vDaBQNdrvCScc1bN+NR4Iuto229Nfj950iEkSMIIE
'' SIG '' 2TCCA8GgAwIBAgITMwAAAKVIF3In+XC+YwAAAAAApTAN
'' SIG '' BgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEG
'' SIG '' A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
'' SIG '' ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
'' SIG '' MSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQ
'' SIG '' Q0EgMjAxMDAeFw0xNjA5MDcxNzU2NTBaFw0xODA5MDcx
'' SIG '' NzU2NTBaMIGyMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
'' SIG '' V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
'' SIG '' A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMQwwCgYD
'' SIG '' VQQLEwNBT0MxJzAlBgNVBAsTHm5DaXBoZXIgRFNFIEVT
'' SIG '' TjpGNkZGLTJEQTctQkI3NTElMCMGA1UEAxMcTWljcm9z
'' SIG '' b2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCASIwDQYJKoZI
'' SIG '' hvcNAQEBBQADggEPADCCAQoCggEBALTaktS9TF7w21cH
'' SIG '' 31lhgTomttMYs2nD/fvMI2/SDczTG1YWzFBNvsMS+1zW
'' SIG '' wTSzwjnJtPsh+jLXYWwKCl5uT74Kly/RrQLk4dDvaYGf
'' SIG '' HzLGTYQm/eJ7qNIiLDzxzCs5Mi/+G+yeT2/9i8dU84Wd
'' SIG '' foJLUhKO7g9jPbY3RPpOW7tf3Y/+5oXXA1IRnsGU/zX7
'' SIG '' hzL2EyCRp5o3ofJPpDJUS+AoFOXnIYbt1sOamTQhJjB1
'' SIG '' B5igZehTt9CZWpQSZrvbVlY01ESRYYnQuNRfOk7lgDrH
'' SIG '' 8lKbOnXX3HaoIFMgxxm3FFV1fPvKAiIOoUuB87DmWcUa
'' SIG '' pQuByhcCPmrFC46/wbcCAwEAAaOCARswggEXMB0GA1Ud
'' SIG '' DgQWBBTiE6tL8u2xYLh48YWgUf5y57EvpDAfBgNVHSME
'' SIG '' GDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8E
'' SIG '' TzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5j
'' SIG '' b20vcGtpL2NybC9wcm9kdWN0cy9NaWNUaW1TdGFQQ0Ff
'' SIG '' MjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoG
'' SIG '' CCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5j
'' SIG '' b20vcGtpL2NlcnRzL01pY1RpbVN0YVBDQV8yMDEwLTA3
'' SIG '' LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoG
'' SIG '' CCsGAQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQA2fW15
'' SIG '' K8YuLyQgyiX1NBWM3PJLRwf0oz7uhngI3nuH1gbFWOn7
'' SIG '' y/MXTh/pMaDG0MJmA5+uzfDsnCtZk4JTupERHAqex2Ia
'' SIG '' WqPVFsstpurA8rT/eX77DvAz6k4brlza9FAu6EuoZxkG
'' SIG '' q8ffwX1hBSIwYc6lmMDAAih9aTEpmSBupDbn4pTShGzc
'' SIG '' DRpJyfXjNlVtbffVWxHUOboA36bRJMtJMbwlgIJgpOsZ
'' SIG '' 5iGCaS9IkrJQxQ8OnTffHrz+uHLrk0P+W8YfG16gaF3e
'' SIG '' DhTkItRqFVbk6OLnrY/KJzhiZtZs2yYSLwmDxa5wQeI5
'' SIG '' HoQtC7HviXAmUgQy6TwMA55sbPhuoYIDdzCCAl8CAQEw
'' SIG '' geKhgbikgbUwgbIxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
'' SIG '' EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
'' SIG '' HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDDAK
'' SIG '' BgNVBAsTA0FPQzEnMCUGA1UECxMebkNpcGhlciBEU0Ug
'' SIG '' RVNOOkY2RkYtMkRBNy1CQjc1MSUwIwYDVQQDExxNaWNy
'' SIG '' b3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloiUKAQEwCQYF
'' SIG '' Kw4DAhoFAAMVAJvCNd37siYrGhQxZVAvHVOUaYJvoIHB
'' SIG '' MIG+pIG7MIG4MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
'' SIG '' V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
'' SIG '' A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMQwwCgYD
'' SIG '' VQQLEwNBT0MxJzAlBgNVBAsTHm5DaXBoZXIgTlRTIEVT
'' SIG '' TjoyNjY1LTRDM0YtQzVERTErMCkGA1UEAxMiTWljcm9z
'' SIG '' b2Z0IFRpbWUgU291cmNlIE1hc3RlciBDbG9jazANBgkq
'' SIG '' hkiG9w0BAQUFAAIFAN15csUwIhgPMjAxNzA5MzAwMTMy
'' SIG '' NTNaGA8yMDE3MTAwMTAxMzI1M1owdzA9BgorBgEEAYRZ
'' SIG '' CgQBMS8wLTAKAgUA3XlyxQIBADAKAgEAAgIUpAIB/zAH
'' SIG '' AgEAAgIYPDAKAgUA3XrERQIBADA2BgorBgEEAYRZCgQC
'' SIG '' MSgwJjAMBgorBgEEAYRZCgMBoAowCAIBAAIDFuNgoQow
'' SIG '' CAIBAAIDB6EgMA0GCSqGSIb3DQEBBQUAA4IBAQCStVlO
'' SIG '' DdMWpd6uw91GonV+0jrqSDxQgPZavkXEjotSW0PZuKdK
'' SIG '' tLOEAXENdqWL1VdjLpwG36v0Bau/NGInJUIXkEFnCycH
'' SIG '' PnMfdInz/8fNGITDDlM0zdOgmo4o7m4bUGpLdWOSyB2t
'' SIG '' 0w8FZhF2WcTTuyPjFlBNFJVtPrkXnok6RoKhrQe6+3p/
'' SIG '' qgdSXpc12zk6kSje2qNZn/OoG9k2gjsMPGMoXPmNg55Z
'' SIG '' uFzyU/AC6A5zYXcQpzUcJaZ74WA8LAclsbNN1AMyxt4t
'' SIG '' /i+3V1LVI+gDIAUSKiDiKdAKqXHkcNHKv7zWXY3+wyHS
'' SIG '' 0KexkVqBSz87NG5bLammnb4W6bP/MYIC9TCCAvECAQEw
'' SIG '' gZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
'' SIG '' bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
'' SIG '' FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMd
'' SIG '' TWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMA
'' SIG '' AAClSBdyJ/lwvmMAAAAAAKUwDQYJYIZIAWUDBAIBBQCg
'' SIG '' ggEyMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAv
'' SIG '' BgkqhkiG9w0BCQQxIgQgBrGm0LGzc/ZNa1mtSOa3MLue
'' SIG '' zPGfo9guc8UUxOxPeu4wgeIGCyqGSIb3DQEJEAIMMYHS
'' SIG '' MIHPMIHMMIGxBBSbwjXd+7ImKxoUMWVQLx1TlGmCbzCB
'' SIG '' mDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX
'' SIG '' YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
'' SIG '' VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNV
'' SIG '' BAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw
'' SIG '' AhMzAAAApUgXcif5cL5jAAAAAAClMBYEFElxed1n8kXh
'' SIG '' DxnxA44nMrRYrZVQMA0GCSqGSIb3DQEBCwUABIIBABcR
'' SIG '' gKK33iW0poCS7liY0yHgj3D2bcYaU6+Xb3ENlhxzaAyq
'' SIG '' LuNDahyOpkgAIBzBHdI2TPUFmetbXgS4lH/rXPOjHLX1
'' SIG '' r8laE38xOBsoMTi2R05FFRvXZC0ZCSV9EMmIlnGQgToB
'' SIG '' 90ORX4p++Hb4wbEPU3scPN9kp6/zsuSbFMaXXaht0xrx
'' SIG '' hYPk3xKKElF7mnIrU3ODV2w3lKsN0dQ6BoErIYzFr747
'' SIG '' c1Gd1JevIFFaYggk0NG2vYY9d2sqgbInx0oLujL+gUUq
'' SIG '' uLpuFr9qEQlQdKUqiA3/YcIq73t/lnBA1HxubbenssQV
'' SIG '' qDDagL292UKd4ilrZN1kqd3pFGOaVaQ=
'' SIG '' End signature block
