' 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 '' MIImWAYJKoZIhvcNAQcCoIImSTCCJkUCAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' LEOvI1OL4Ms+i8VD+9Lv0JnljZ8+Z42whrFijf9Ua/Cg
'' SIG '' ggtyMIIE+jCCA+KgAwIBAgITMwAABdRHV87dZyuA6wAA
'' SIG '' AAAF1DANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
'' SIG '' aWduaW5nIFBDQSAyMDEwMB4XDTI1MDIyMDE5NTA1N1oX
'' SIG '' DTI1MDcwNTE5NTA1N1owfzELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEpMCcGA1UEAxMgTWljcm9zb2Z0IFdpbmRvd3MgS2l0
'' SIG '' cyBQdWJsaXNoZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
'' SIG '' DwAwggEKAoIBAQDIiYt4rE484MZdX29P73RFVJzFeTtU
'' SIG '' buZ2sSf5txMzXFJdYNsnB4IljjNRD3cEfUwoOosP10iu
'' SIG '' 1lC86ium7WioFdtQS1FSpxrreuXDfvyC6fu1sH+hJJHy
'' SIG '' k5/gSBuK7kg4tGUfh1lISH3tvpk2xhlZN6Fmb/Se5n5Z
'' SIG '' GTICo0yG+QUMJZjeQuuYksRpgXlyEAYnFkNuZcNP6e4E
'' SIG '' 3YbROaWgoBX7yJ8caZ72Bw+czUv2NG7azU0rjCqCg/Rr
'' SIG '' u9J4ZZJuLQ/D+/F1mieki0y70vxUo6pDAXIADHUSsYQl
'' SIG '' CsGl4kWQW8Nt2gSTQRyxtqMub5VBDlU2VpRSSNPD4IRL
'' SIG '' sANLAgMBAAGjggFuMIIBajAfBgNVHSUEGDAWBgorBgEE
'' SIG '' AYI3CgMUBggrBgEFBQcDAzAdBgNVHQ4EFgQULW4m1KgI
'' SIG '' yexDypqzWHwyNglwzpwwRQYDVR0RBD4wPKQ6MDgxHjAc
'' SIG '' BgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEWMBQG
'' SIG '' A1UEBRMNMjI5OTAzKzUwMzczMTAfBgNVHSMEGDAWgBTm
'' SIG '' /F97uyIAWORyTrX0IXQjMubvrDBWBgNVHR8ETzBNMEug
'' SIG '' SaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp
'' SIG '' L2NybC9wcm9kdWN0cy9NaWNDb2RTaWdQQ0FfMjAxMC0w
'' SIG '' Ny0wNi5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF
'' SIG '' BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp
'' SIG '' L2NlcnRzL01pY0NvZFNpZ1BDQV8yMDEwLTA3LTA2LmNy
'' SIG '' dDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IB
'' SIG '' AQCphLz18suslKVNJUx7wkHrX+loV2DScLZ1Ig8Rv9sj
'' SIG '' TTger8Lndn9gkKoAcAZ1sXh6yTmtD3ZQooGKagKYDejY
'' SIG '' hvcSpTbpdJprs/ijOiqTfCGVqAZhz9DLb+bi5TRAyGHN
'' SIG '' bim9PyzIXQgYP/8a6Yay+HD9W1IAQOT78ISp5UAhoD20
'' SIG '' v0Kk6Tq7cXpkyfJe83QzG/7dvzt1bzB9E+7jq9P+dDuZ
'' SIG '' SpvU311ufkVa0GoiI26kLlOMkMyS5GSI/X3kM0Oju07l
'' SIG '' yNHsozC8Ug/fT8OKSmzyRzc2DOHq1fVsDXMFjPmLNMXy
'' SIG '' thSuB4rn11IqaJCJtCujYARCfMK/6riHWk3WMIIGcDCC
'' SIG '' BFigAwIBAgIKYQxSTAAAAAAAAzANBgkqhkiG9w0BAQsF
'' SIG '' ADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
'' SIG '' bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
'' SIG '' FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMp
'' SIG '' TWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y
'' SIG '' aXR5IDIwMTAwHhcNMTAwNzA2MjA0MDE3WhcNMjUwNzA2
'' SIG '' MjA1MDE3WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
'' SIG '' V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
'' SIG '' A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD
'' SIG '' VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAy
'' SIG '' MDEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
'' SIG '' AQEA6Q5kUHlntcTj/QkATJ6UrPdWaOpE2M/FWE+ppXZ8
'' SIG '' bUW60zmStKQe+fllguQX0o/9RJwI6GWTzixVhL99COMu
'' SIG '' K6hBKxi3oktuSUxrFQfe0dLCiR5xlM21f0u0rwjYzIjW
'' SIG '' axeUOpPOJj/s5v40mFfVHV1J9rIqLtWFu1k/+JC0K4N0
'' SIG '' yiuzO0bj8EZJwRdmVMkcvR3EVWJXcvhnuSUgNN5dpqWV
'' SIG '' XqsogM3Vsp7lA7Vj07IUyMHIiiYKWX8H7P8O7YASNUwS
'' SIG '' pr5SW/Wm2uCLC0h31oVH1RC5xuiq7otqLQVcYMa0Kluc
'' SIG '' IxxfReMaFB5vN8sZM4BqiU2jamZjeJPVMM+VHwIDAQAB
'' SIG '' o4IB4zCCAd8wEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0O
'' SIG '' BBYEFOb8X3u7IgBY5HJOtfQhdCMy5u+sMBkGCSsGAQQB
'' SIG '' gjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP
'' SIG '' BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP
'' SIG '' 6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeG
'' SIG '' RWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3Js
'' SIG '' L3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIz
'' SIG '' LmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKG
'' SIG '' Pmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2Vy
'' SIG '' dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MIGd
'' SIG '' BgNVHSAEgZUwgZIwgY8GCSsGAQQBgjcuAzCBgTA9Bggr
'' SIG '' BgEFBQcCARYxaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
'' SIG '' L1BLSS9kb2NzL0NQUy9kZWZhdWx0Lmh0bTBABggrBgEF
'' SIG '' BQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBQAG8AbABpAGMA
'' SIG '' eQBfAFMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkqhkiG
'' SIG '' 9w0BAQsFAAOCAgEAGnTvV08pe8QWhXi4UNMi/AmdrIKX
'' SIG '' +DT/KiyXlRLl5L/Pv5PI4zSp24G43B4AvtI1b6/lf3mV
'' SIG '' d+UC1PHr2M1OHhthosJaIxrwjKhiUUVnCOM/PB6T+DCF
'' SIG '' F8g5QKbXDrMhKeWloWmMIpPMdJjnoUdD8lOswA8waX/+
'' SIG '' 0iUgbW9h098H1dlyACxphnY9UdumOUjJN2FtB91TGcun
'' SIG '' 1mHCv+KDqw/ga5uV1n0oUbCJSlGkmmzItx9KGg5pqdfc
'' SIG '' wX7RSXCqtq27ckdjF/qm1qKmhuyoEESbY7ayaYkGx0aG
'' SIG '' ehg/6MUdIdV7+QIjLcVBy78dTMgW77Gcf/wiS0mKbhXj
'' SIG '' pn92W9FTeZGFndXS2z1zNfM8rlSyUkdqwKoTldKOEdqZ
'' SIG '' Z14yjPs3hdHcdYWch8ZaV4XCv90Nj4ybLeu07s8n07Ve
'' SIG '' afqkFgQBpyRnc89NT7beBVaXevfpUk30dwVPhcbYC/GO
'' SIG '' 7UIJ0Q124yNWeCImNr7KsYxuqh3khdpHM2KPpMmRM19x
'' SIG '' HkCvmGXJIuhCISWKHC1g2TeJQYkqFg/XYTyUaGBS79ZH
'' SIG '' maCAQO4VgXc+nOBTGBpQHTiVmx5mMxMnORd4hzbOTsNf
'' SIG '' svU9R1O24OXbC2E9KteSLM43Wj5AQjGkHxAIwlacvyRd
'' SIG '' UQKdannSF9PawZSOB3slcUSrBmrm1MbfI5qWdcUxgho+
'' SIG '' MIIaOgIBATCBlTB+MQswCQYDVQQGEwJVUzETMBEGA1UE
'' SIG '' CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
'' SIG '' MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgw
'' SIG '' JgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD
'' SIG '' QSAyMDEwAhMzAAAF1EdXzt1nK4DrAAAAAAXUMA0GCWCG
'' SIG '' SAFlAwQCAQUAoIHGMBkGCSqGSIb3DQEJAzEMBgorBgEE
'' SIG '' AYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3
'' SIG '' AgEVMC8GCSqGSIb3DQEJBDEiBCCA3zro2lLseLGO2M/3
'' SIG '' aSmOZAVhoekEC6Ojv4plXA2WhzBaBgorBgEEAYI3AgEM
'' SIG '' MUwwSqAkgCIATQBpAGMAcgBvAHMAbwBmAHQAIABXAGkA
'' SIG '' bgBkAG8AdwBzoSKAIGh0dHA6Ly93d3cubWljcm9zb2Z0
'' SIG '' LmNvbS93aW5kb3dzMA0GCSqGSIb3DQEBAQUABIIBAHUI
'' SIG '' FHV2Qbx/LS33/CB5vFb0Gq3uAzYmxBbp4fArNMJ5P1M3
'' SIG '' bfiU5dWzIUjY+FrxF6g9udqU/hSNAllFN62pLfDiEOJV
'' SIG '' Tm7GEjIBDTfR6IfhBmuvp6w5eUT+k+FYdEAp9d7+MON1
'' SIG '' kc0ByO4YZXYc+G1HrMQTjYBpOdMVoYC15VsAqri64Byn
'' SIG '' FM5jyKpDHIpxLCqHxY8htH8/9E3Gb2pcM8VGPjAJaGA/
'' SIG '' ZtlWfxnAWjIVydUvQ/TZvrJIKo7/Hmdzqn19gCwURnVf
'' SIG '' mqBFA3F3W3qxoDPqfxYDVRl2sRET4bTJ1bH6ng0yDarC
'' SIG '' W6CdJLWHtL+/Bkiul4/mM2Qu9q1BONChghewMIIXrAYK
'' SIG '' KwYBBAGCNwMDATGCF5wwgheYBgkqhkiG9w0BBwKggheJ
'' SIG '' MIIXhQIBAzEPMA0GCWCGSAFlAwQCAQUAMIIBWgYLKoZI
'' SIG '' hvcNAQkQAQSgggFJBIIBRTCCAUECAQEGCisGAQQBhFkK
'' SIG '' AwEwMTANBglghkgBZQMEAgEFAAQgm2pR+YTBzK9yY7JO
'' SIG '' 3imI7Pzvsw0TGFqmJaraqkXYM2UCBmftLjKYLRgTMjAy
'' SIG '' NTA0MjMxNjAwMTguNTc1WjAEgAIB9KCB2aSB1jCB0zEL
'' SIG '' MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
'' SIG '' EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
'' SIG '' c29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9z
'' SIG '' b2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMScw
'' SIG '' JQYDVQQLEx5uU2hpZWxkIFRTUyBFU046MkExQS0wNUUw
'' SIG '' LUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0
'' SIG '' YW1wIFNlcnZpY2WgghH+MIIHKDCCBRCgAwIBAgITMwAA
'' SIG '' AfkfZ411q6TxsQABAAAB+TANBgkqhkiG9w0BAQsFADB8
'' SIG '' MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
'' SIG '' bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
'' SIG '' cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNy
'' SIG '' b3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0yNDA3
'' SIG '' MjUxODMxMDlaFw0yNTEwMjIxODMxMDlaMIHTMQswCQYD
'' SIG '' VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
'' SIG '' A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
'' SIG '' IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQg
'' SIG '' SXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNV
'' SIG '' BAsTHm5TaGllbGQgVFNTIEVTTjoyQTFBLTA1RTAtRDk0
'' SIG '' NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAg
'' SIG '' U2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
'' SIG '' AgoCggIBALQ9TB98gB1hzVbJQvggU4/zKXeeSwz7UK4T
'' SIG '' e1nqhYUXgvcSl0o6G1tWR8x1PFdgTiVImIO3wydgMRlR
'' SIG '' sqL1LYBmYNvhmrhSpN2Y47C0rKnoWCLFEK4F/q/1QE2l
'' SIG '' vPzjVsupTshmcGacX1dhF+KgIepm9oWnQLr3W0ZdUCtb
'' SIG '' XwZUd33XggUBvsm8/SRWeOSzdqbPDXNca+NTfEItylSS
'' SIG '' 2F9ImxGwJJLEeG27Mws72Pr3Uq41sigI0emIGIWgWg8R
'' SIG '' NigydrEERRRf3oAsSoKIHRd1SCaAhP1rsvTLhIMqXmtR
'' SIG '' 3ou5RRr3S0GR+SaNkEebjfIYjHPGeO0USbiFgjnsiCdW
'' SIG '' J0Yoom6VGe9vsKb/C06L9Mh+guR0fw/PgE+L6rT+eyE1
'' SIG '' 7A/QzzqG/LY7bHnz3ECXm1DYqsn8ky+Y+fyftnfhjwnF
'' SIG '' xGKHlmfp67GUn63eQxzOKLwpg95Yn4GJ84zq8uIIUE/3
'' SIG '' L5nR8Ba+siRqYVvxxvBkHfnAeMO8BqToR1SW8uOJBlSv
'' SIG '' DM2PbN9g8tUx5yYPKe8tbBBs/wNcvOGbeoCLCE2GnHB4
'' SIG '' QSqeHDlTa36EVVMdhv9E6+w5N36QlPLvuaJajz8CoGbO
'' SIG '' e45fpTq0VbF9QGBJgJ8gshq6kQM6Rl8pNR7zSAaUjTbk
'' SIG '' wUJOxQb7vmKYugO0tldk4+pc2FlQb7hhAgMBAAGjggFJ
'' SIG '' MIIBRTAdBgNVHQ4EFgQUie2jupyVySPXoo80uUJEdkZZ
'' SIG '' 4AAwHwYDVR0jBBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ
'' SIG '' 6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0cDovL3d3dy5t
'' SIG '' aWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0
'' SIG '' JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3Js
'' SIG '' MGwGCCsGAQUFBwEBBGAwXjBcBggrBgEFBQcwAoZQaHR0
'' SIG '' cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0
'' SIG '' cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIw
'' SIG '' MjAxMCgxKS5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUB
'' SIG '' Af8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4Aw
'' SIG '' DQYJKoZIhvcNAQELBQADggIBAGYgCYBW5H+434cf5pmZ
'' SIG '' Zxma6WnvhxqcVsbPCO/b1G/BkKLudDNZ7O4sBtgnHaF2
'' SIG '' qu1YKVZDX9bryIaxmKSggV0PkmidjtAb8LiUe1LIE2ij
'' SIG '' dI/8n936Rw9JLR/hJBLhl7PQwS8re9YrrVZMKMPYkJkp
'' SIG '' OKCCvEvAKzRqUjs3rrvU3SYwY7GrJriftquU45q4BCsj
'' SIG '' 3t0wKQIqPHHcP29XAQJo7SO7aTWFeT8kSNytTYbg4HxI
'' SIG '' +ZMpxhf7osz9Tbh0sRf1dZLP9rQhKK4onDOJNTyU0wNE
'' SIG '' wozW5KZgXLADJcU8wZ1rKpwQrfXflHfVWtyMPQbOHHK5
'' SIG '' IAYy7YN72BmGq+teaH2LVPnbqfi7lNHdsAQxBtZ4Ulh2
'' SIG '' jvrtsukotwGjSDbf6TjClOpeAFtLg1lB9/Thx9xKhR7U
'' SIG '' 7LGV2gzo7ckYG6jBppH/CiN6iFQWSdl0KZ4RLkW4fgIK
'' SIG '' ZkZ/2uNdA5O1bT4NrguNtliwvB/CFZPxXqIkkuLxaHYZ
'' SIG '' 3BXrSdGSt+sMQGtxYj4AXm0VslbWe+t6gw88Q29Jgehy
'' SIG '' /RxH02zfuKBwpGWtRypfAdLPEYhQTH/1u/juxD2fsDB/
'' SIG '' MHZI2e0m7HXbXUYEQEakfCBT1rq0PrJ+37RIn2qI87gh
'' SIG '' GoUgHKvOso8EHkzzfWBvW9+EU7q55KQ/sDxkwdVnHDKb
'' SIG '' C5TNMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAA
'' SIG '' AAAAFTANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC
'' SIG '' VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
'' SIG '' B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
'' SIG '' b3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3Qg
'' SIG '' Q2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMjEw
'' SIG '' OTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYD
'' SIG '' VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
'' SIG '' A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
'' SIG '' IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
'' SIG '' VGltZS1TdGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcN
'' SIG '' AQEBBQADggIPADCCAgoCggIBAOThpkzntHIhC3miy9ck
'' SIG '' eb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az
'' SIG '' /1xPx2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhg
'' SIG '' fWpSg0S3po5GawcU88V29YZQ3MFEyHFcUTE3oAo4bo3t
'' SIG '' 1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOt
'' SIG '' gFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k
'' SIG '' 45GPsjksUZzpcGkNyjYtcI4xyDUoveO0hyTD4MmPfrVU
'' SIG '' j9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXAhjBc
'' SIG '' TyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09/SDP
'' SIG '' c31BmkZ1zcRfNN0Sidb9pSB9fvzZnkXftnIv231fgLrb
'' SIG '' qn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSCD/AQ8rdH
'' SIG '' GO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxCaC4Q6oRR
'' SIG '' RuLRvWoYWmEBc8pnol7XKHYC4jMYctenIPDC+hIK12Nv
'' SIG '' DMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh8zYGNRiER9vc
'' SIG '' G9H9stQcxWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUX
'' SIG '' k8A8FdsaN8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q
'' SIG '' 4i6tAgMBAAGjggHdMIIB2TASBgkrBgEEAYI3FQEEBQID
'' SIG '' AQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1
'' SIG '' Kc8Q/y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacb
'' SIG '' UzUZ6XIwXAYDVR0gBFUwUzBRBgwrBgEEAYI3TIN9AQEw
'' SIG '' QTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3Nv
'' SIG '' ZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRt
'' SIG '' MBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQBgjcU
'' SIG '' AgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNV
'' SIG '' HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJc
'' SIG '' YmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0
'' SIG '' dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3By
'' SIG '' b2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNy
'' SIG '' bDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0
'' SIG '' dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMv
'' SIG '' TWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqG
'' SIG '' SIb3DQEBCwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8
'' SIG '' qW/qXBS2Pk5HZHixBpOXPTEztTnXwnE2P9pkbHzQdTlt
'' SIG '' uw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJW
'' SIG '' AAOwBb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVt
'' SIG '' I1TkeFN1JFe53Z/zjj3G82jfZfakVqr3lbYoVSfQJL1A
'' SIG '' oL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ
'' SIG '' 5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKp
'' SIG '' W99Jo3QMvOyRgNI95ko+ZjtPu4b6MhrZlvSP9pEB9s7G
'' SIG '' dP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgssU5H
'' SIG '' LcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QBjloZ
'' SIG '' kWsNn6Qo3GcZKCS6OEuabvshVGtqRRFHqfG3rsjoiV5P
'' SIG '' ndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p/cvBQUl+
'' SIG '' fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue1
'' SIG '' 0CgaiQuPNtq6TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAn
'' SIG '' Qj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784cETRkPHIqzqK
'' SIG '' Oghif9lwY1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGC
'' SIG '' A1kwggJBAgEBMIIBAaGB2aSB1jCB0zELMAkGA1UEBhMC
'' SIG '' VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
'' SIG '' B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
'' SIG '' b3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxh
'' SIG '' bmQgT3BlcmF0aW9ucyBMaW1pdGVkMScwJQYDVQQLEx5u
'' SIG '' U2hpZWxkIFRTUyBFU046MkExQS0wNUUwLUQ5NDcxJTAj
'' SIG '' BgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZp
'' SIG '' Y2WiIwoBATAHBgUrDgMCGgMVAKrOVo1ju81QCpiHHcIa
'' SIG '' oGb8qelGoIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAg
'' SIG '' UENBIDIwMTAwDQYJKoZIhvcNAQELBQACBQDrs1rLMCIY
'' SIG '' DzIwMjUwNDIzMTIyNTQ3WhgPMjAyNTA0MjQxMjI1NDda
'' SIG '' MHcwPQYKKwYBBAGEWQoEATEvMC0wCgIFAOuzWssCAQAw
'' SIG '' CgIBAAICBBgCAf8wBwIBAAICE9wwCgIFAOu0rEsCAQAw
'' SIG '' NgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAK
'' SIG '' MAgCAQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0B
'' SIG '' AQsFAAOCAQEAk/OBlkS9NwCYQWvrqWalb2Vys/FRBZez
'' SIG '' 98LIhuZHGPXx8Ky769hS4Bn+5voJzMQcu4GwWyq3O3vG
'' SIG '' Bovpbb7UngpzlV2espxIxkaz5qaEP7bPTyWGzEIjYp7Y
'' SIG '' He0UJ/+PXntewCfwKlREJyYl/mGu7/l2UOr+DEZWoaJe
'' SIG '' AyWtNeAFWU8MyLUz9N6Q1C1XK1AFZYeNxh7FncB5UbQ9
'' SIG '' RnEgFvEuxKy0XXRDMpSsuRV3MZw9Li2wMJZq6TPsEvUd
'' SIG '' lEQW8t0gWxQxxmweTwmSCyBs6s5uKJgVbeLaLu0wwKHC
'' SIG '' FFsK62QGSoCQIebwkBke9LbN92EsL2GjEsLBpsM05kwx
'' SIG '' XzGCBA0wggQJAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMw
'' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
'' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
'' SIG '' b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w
'' SIG '' IFBDQSAyMDEwAhMzAAAB+R9njXWrpPGxAAEAAAH5MA0G
'' SIG '' CWCGSAFlAwQCAQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYL
'' SIG '' KoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIMFdYgs2
'' SIG '' IxIyqu6DdthgaxWc9spMn+aNM9xiABoZyRBpMIH6Bgsq
'' SIG '' hkiG9w0BCRACLzGB6jCB5zCB5DCBvQQgOSOMyB7wjftk
'' SIG '' +ukVDiwma1BFXaCpSpfFXgjuUmxi2BAwgZgwgYCkfjB8
'' SIG '' MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
'' SIG '' bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
'' SIG '' cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNy
'' SIG '' b3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAfkf
'' SIG '' Z411q6TxsQABAAAB+TAiBCCV81uhW5pCnLov5Z5VY5uw
'' SIG '' 0WRsBl6cK9+I2kFLrM+vhzANBgkqhkiG9w0BAQsFAASC
'' SIG '' AgBGn5to9yoa3ssSg60JuCUl7DOqWnHUI+caPQzgSDYU
'' SIG '' eq+P4HwqiI174gimzrLTpYYfdUwkWH2H4aA1Lz6ZBUzT
'' SIG '' zI/VJPGoldf6TYzt46X0kFBjRjsTg3PkwLElqMZdGTjO
'' SIG '' uDWsX1G5TLzSNYvjrKrUCN/gMyP0+YQX4uanwRm6lLG+
'' SIG '' N7vlpx8hz5VdDDeRcNAyuzqsFYR/B8dkt0QmjwE2FZp3
'' SIG '' KmMv02898wg5R4QDwvvjKoIY10VxA7A1FP7ySq7zWo4F
'' SIG '' hpK2WOnZOBmNCUHDt6zOJJ/Ms4tYVb7G4kGnc6mteap5
'' SIG '' lCpkfymDsyeaPP6PD1iJzxh8oghh/8ax6rqv3v/YKjs2
'' SIG '' amujjYF2XqCUhoKd5g+mcKID3c4t/TxbbtgFf3R+ODF+
'' SIG '' A2k7BFR/p6QEvIdArMyJ24f4CnuZyQOOO8lPlJ3r/FcQ
'' SIG '' udQzvr2rAynPFffBCyDbWhLcrx3ryCqmK+H8VEfhAitf
'' SIG '' BEbhdfTvqXEdwpvDYG513m6rM4Gze7QSbGPzeOVRKAMA
'' SIG '' JPE8np9jUdJ0OYdPsqGY6A3LttKmHCK4POpyH62dkBov
'' SIG '' kVoaajcTM5ycP02RZ6pK/YgGQbxIy8ZjsKX6tUFT4E0f
'' SIG '' iO3ywDvDStaM3AWfJTg/JlF07vF+dETCHLyiq0p2Amzh
'' SIG '' 2sTTB6K5EUvKhgqXUzbXxcUvEg==
'' SIG '' End signature block
