' Windows Installer utility to applay a transform to an installer database
' For use with Windows Scripting Host, CScript.exe or WScript.exe
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates use of Database.ApplyTransform and MsiDatabaseApplyTransform
'
Option Explicit

' Error conditions that may be suppressed when applying transforms
Const msiTransformErrorAddExistingRow         = 1 'Adding a row that already exists. 
Const msiTransformErrorDeleteNonExistingRow   = 2 'Deleting a row that doesn't exist. 
Const msiTransformErrorAddExistingTable       = 4 'Adding a table that already exists. 
Const msiTransformErrorDeleteNonExistingTable = 8 'Deleting a table that doesn't exist. 
Const msiTransformErrorUpdateNonExistingRow  = 16 'Updating a row that doesn't exist. 
Const msiTransformErrorChangeCodePage       = 256 'Transform and database code pages do not match 

Const msiOpenDatabaseModeReadOnly     = 0
Const msiOpenDatabaseModeTransact     = 1
Const msiOpenDatabaseModeCreate       = 3

If (Wscript.Arguments.Count < 2) Then
	Wscript.Echo "Windows Installer database tranform application utility" &_
		vbNewLine & " 1st argument is the path to an installer database" &_
		vbNewLine & " 2nd argument is the path to the transform file to apply" &_
		vbNewLine & " 3rd argument is optional set of error conditions to suppress:" &_
		vbNewLine & "     1 = adding a row that already exists" &_
		vbNewLine & "     2 = deleting a row that doesn't exist" &_
		vbNewLine & "     4 = adding a table that already exists" &_
		vbNewLine & "     8 = deleting a table that doesn't exist" &_
		vbNewLine & "    16 = updating a row that doesn't exist" &_
		vbNewLine & "   256 = mismatch of database and transform codepages" &_
		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 database and apply transform
Dim database : Set database = installer.OpenDatabase(Wscript.Arguments(0), msiOpenDatabaseModeTransact) : CheckError
Dim errorConditions:errorConditions = 0
If Wscript.Arguments.Count >= 3 Then errorConditions = CLng(Wscript.Arguments(2))
Database.ApplyTransform Wscript.Arguments(1), errorConditions : CheckError
Database.Commit : CheckError

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 '' MIImTgYJKoZIhvcNAQcCoIImPzCCJjsCAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' ocXRzPIBsTOs40BugTYvo1tESbFrFB3U6AbYVQhStNmg
'' SIG '' gguBMIIFCTCCA/GgAwIBAgITMwAABXwzcc9L673fygAA
'' SIG '' AAAFfDANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
'' SIG '' aWduaW5nIFBDQSAyMDEwMB4XDTI0MDQyNDIwMjA0NloX
'' SIG '' DTI1MDQxOTIwMjA0NlowfzELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEpMCcGA1UEAxMgTWljcm9zb2Z0IFdpbmRvd3MgS2l0
'' SIG '' cyBQdWJsaXNoZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
'' SIG '' DwAwggEKAoIBAQDuXrTpeGqa9J5HOOYHUPYdqaUaLkRs
'' SIG '' zxXXZ8vW6hKNpSbkHFsB1K8mlscbD29EryD2l9f3JRnx
'' SIG '' qDEzY5dGhp8MvGO1FhuJURH5Zkpt2Dce8B05RAw9gVVI
'' SIG '' 6ODjSZFbra/wKR3b+NNOabK9eB99SCzUBmv6Kh/bYdeR
'' SIG '' oh5yjYPJIL2FEBOh1jtUq6d7zlgXdI+ajekWsLULwtwy
'' SIG '' Y5xTx9CuCzqKxFyRZTkdZTfBVJXPlUuFFyI39wp2b0KW
'' SIG '' Bg8vuIux8i9GAzTZOTsmlbd+808Y8/Mxt7z2j10IEBx3
'' SIG '' wdScRCXgOYH0b4kDbARgYA/JXZlWrEKbIomQcfjFgl3k
'' SIG '' qJs9AgMBAAGjggF9MIIBeTAfBgNVHSUEGDAWBgorBgEE
'' SIG '' AYI3CgMUBggrBgEFBQcDAzAdBgNVHQ4EFgQUjr/0Zy+p
'' SIG '' LzaM7/6H0aEaoBark5swVAYDVR0RBE0wS6RJMEcxLTAr
'' SIG '' BgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlv
'' SIG '' bnMgTGltaXRlZDEWMBQGA1UEBRMNMjI5OTAzKzUwMjIz
'' SIG '' NDAfBgNVHSMEGDAWgBTm/F97uyIAWORyTrX0IXQjMubv
'' SIG '' rDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1p
'' SIG '' Y3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWND
'' SIG '' b2RTaWdQQ0FfMjAxMC0wNy0wNi5jcmwwWgYIKwYBBQUH
'' SIG '' AQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1p
'' SIG '' Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY0NvZFNpZ1BD
'' SIG '' QV8yMDEwLTA3LTA2LmNydDAMBgNVHRMBAf8EAjAAMA0G
'' SIG '' CSqGSIb3DQEBCwUAA4IBAQC3ldMZx+mZuf+EY2cLU0CN
'' SIG '' baZL8/85vD6tWvmuwfpBlQMgcrofbyDfuveWw4HqOJht
'' SIG '' 1/UcW3dHuG/UQEzHGFPlL8ZwWonopyWGWyzELA2YQwXq
'' SIG '' RAwlFFbxLwQrAWY1QQw+X0R6mt2+3EpWd0HRusSrExZn
'' SIG '' dUxI3u0OY4KJ1ZMNeddkKR6o4BRmh8hTYhr2edYFfkYX
'' SIG '' MuhoSzCXZqexUhCgIMWuP3XiFDIuteaRlcKfuq2eV+y3
'' SIG '' bXadRbJu0TPbmsY1f4ms+an/4RSS271XGbR5R4zMKWRP
'' SIG '' hbfdU1W1R88jAf4+ziOfF0ZfLHKt25fw/X1d4xbx4Cwx
'' SIG '' o3XDRA6EyM7YMIIGcDCCBFigAwIBAgIKYQxSTAAAAAAA
'' SIG '' AzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMx
'' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
'' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
'' SIG '' dGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2Vy
'' SIG '' dGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzA2
'' SIG '' MjA0MDE3WhcNMjUwNzA2MjA1MDE3WjB+MQswCQYDVQQG
'' SIG '' EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE
'' SIG '' BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv
'' SIG '' cnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29k
'' SIG '' ZSBTaWduaW5nIFBDQSAyMDEwMIIBIjANBgkqhkiG9w0B
'' SIG '' AQEFAAOCAQ8AMIIBCgKCAQEA6Q5kUHlntcTj/QkATJ6U
'' SIG '' rPdWaOpE2M/FWE+ppXZ8bUW60zmStKQe+fllguQX0o/9
'' SIG '' RJwI6GWTzixVhL99COMuK6hBKxi3oktuSUxrFQfe0dLC
'' SIG '' iR5xlM21f0u0rwjYzIjWaxeUOpPOJj/s5v40mFfVHV1J
'' SIG '' 9rIqLtWFu1k/+JC0K4N0yiuzO0bj8EZJwRdmVMkcvR3E
'' SIG '' VWJXcvhnuSUgNN5dpqWVXqsogM3Vsp7lA7Vj07IUyMHI
'' SIG '' iiYKWX8H7P8O7YASNUwSpr5SW/Wm2uCLC0h31oVH1RC5
'' SIG '' xuiq7otqLQVcYMa0KlucIxxfReMaFB5vN8sZM4BqiU2j
'' SIG '' amZjeJPVMM+VHwIDAQABo4IB4zCCAd8wEAYJKwYBBAGC
'' SIG '' NxUBBAMCAQAwHQYDVR0OBBYEFOb8X3u7IgBY5HJOtfQh
'' SIG '' dCMy5u+sMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBB
'' SIG '' MAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8G
'' SIG '' A1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYG
'' SIG '' A1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9z
'' SIG '' b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0Nl
'' SIG '' ckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQRO
'' SIG '' MEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9z
'' SIG '' b2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIw
'' SIG '' MTAtMDYtMjMuY3J0MIGdBgNVHSAEgZUwgZIwgY8GCSsG
'' SIG '' AQQBgjcuAzCBgTA9BggrBgEFBQcCARYxaHR0cDovL3d3
'' SIG '' dy5taWNyb3NvZnQuY29tL1BLSS9kb2NzL0NQUy9kZWZh
'' SIG '' dWx0Lmh0bTBABggrBgEFBQcCAjA0HjIgHQBMAGUAZwBh
'' SIG '' AGwAXwBQAG8AbABpAGMAeQBfAFMAdABhAHQAZQBtAGUA
'' SIG '' bgB0AC4gHTANBgkqhkiG9w0BAQsFAAOCAgEAGnTvV08p
'' SIG '' e8QWhXi4UNMi/AmdrIKX+DT/KiyXlRLl5L/Pv5PI4zSp
'' SIG '' 24G43B4AvtI1b6/lf3mVd+UC1PHr2M1OHhthosJaIxrw
'' SIG '' jKhiUUVnCOM/PB6T+DCFF8g5QKbXDrMhKeWloWmMIpPM
'' SIG '' dJjnoUdD8lOswA8waX/+0iUgbW9h098H1dlyACxphnY9
'' SIG '' UdumOUjJN2FtB91TGcun1mHCv+KDqw/ga5uV1n0oUbCJ
'' SIG '' SlGkmmzItx9KGg5pqdfcwX7RSXCqtq27ckdjF/qm1qKm
'' SIG '' huyoEESbY7ayaYkGx0aGehg/6MUdIdV7+QIjLcVBy78d
'' SIG '' TMgW77Gcf/wiS0mKbhXjpn92W9FTeZGFndXS2z1zNfM8
'' SIG '' rlSyUkdqwKoTldKOEdqZZ14yjPs3hdHcdYWch8ZaV4XC
'' SIG '' v90Nj4ybLeu07s8n07VeafqkFgQBpyRnc89NT7beBVaX
'' SIG '' evfpUk30dwVPhcbYC/GO7UIJ0Q124yNWeCImNr7KsYxu
'' SIG '' qh3khdpHM2KPpMmRM19xHkCvmGXJIuhCISWKHC1g2TeJ
'' SIG '' QYkqFg/XYTyUaGBS79ZHmaCAQO4VgXc+nOBTGBpQHTiV
'' SIG '' mx5mMxMnORd4hzbOTsNfsvU9R1O24OXbC2E9KteSLM43
'' SIG '' Wj5AQjGkHxAIwlacvyRdUQKdannSF9PawZSOB3slcUSr
'' SIG '' Bmrm1MbfI5qWdcUxgholMIIaIQIBATCBlTB+MQswCQYD
'' SIG '' VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
'' SIG '' A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
'' SIG '' IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQg
'' SIG '' Q29kZSBTaWduaW5nIFBDQSAyMDEwAhMzAAAFfDNxz0vr
'' SIG '' vd/KAAAAAAV8MA0GCWCGSAFlAwQCAQUAoIHGMBkGCSqG
'' SIG '' SIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcC
'' SIG '' AQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEi
'' SIG '' BCAtCfqj2RQ4MBMohL6yaM08VY23bHcHDmDORloFMrix
'' SIG '' uDBaBgorBgEEAYI3AgEMMUwwSqAkgCIATQBpAGMAcgBv
'' SIG '' AHMAbwBmAHQAIABXAGkAbgBkAG8AdwBzoSKAIGh0dHA6
'' SIG '' Ly93d3cubWljcm9zb2Z0LmNvbS93aW5kb3dzMA0GCSqG
'' SIG '' SIb3DQEBAQUABIIBAN/CTKnVTLQLXa4v9NIzMjwGw3pK
'' SIG '' ycc6eQgjGWZop/HvjvSJTS4upHXVBfD245yxHQlnQ2zc
'' SIG '' 1S5qNAEqgjizWZQDbXkRTdmaZuJlKMX55RPI9v0YFN81
'' SIG '' CJ6gjILdxiu/U+7chHDNvr+jW9p4TcdSNbEDYv8boV08
'' SIG '' HT/YlsKB6Ss4TcyoQRxPOnqNiPCxdqCuxMzStqwRDedA
'' SIG '' zVEFiO7ufoYFO1I1IY3K4Q4Y1Fb+MWvwY/MuajvhbEtP
'' SIG '' RKiadm2A97g8g6iphR++Umkf/qFXhptkuoDk/FCm2H/X
'' SIG '' zQJMtJUjQgF4bH94oI7UMdD41jVbXsmdAeKEk7LvjQCy
'' SIG '' m+mbvDehgheXMIIXkwYKKwYBBAGCNwMDATGCF4Mwghd/
'' SIG '' BgkqhkiG9w0BBwKgghdwMIIXbAIBAzEPMA0GCWCGSAFl
'' SIG '' AwQCAQUAMIIBUgYLKoZIhvcNAQkQAQSgggFBBIIBPTCC
'' SIG '' ATkCAQEGCisGAQQBhFkKAwEwMTANBglghkgBZQMEAgEF
'' SIG '' AAQgc5xpWxnfxs7a4HveQypYIAKGYmLNK4/Ppr7cmX9B
'' SIG '' ESQCBme3pLkEkRgTMjAyNTAzMTIxMTE1MDIuMjY2WjAE
'' SIG '' gAIB9KCB0aSBzjCByzELMAkGA1UEBhMCVVMxEzARBgNV
'' SIG '' BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
'' SIG '' HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEl
'' SIG '' MCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0
'' SIG '' aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOjky
'' SIG '' MDAtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQg
'' SIG '' VGltZS1TdGFtcCBTZXJ2aWNloIIR7TCCByAwggUIoAMC
'' SIG '' AQICEzMAAAIJCAfg+VyM5lUAAQAAAgkwDQYJKoZIhvcN
'' SIG '' AQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
'' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
'' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE
'' SIG '' AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAw
'' SIG '' HhcNMjUwMTMwMTk0MjU1WhcNMjYwNDIyMTk0MjU1WjCB
'' SIG '' yzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
'' SIG '' b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p
'' SIG '' Y3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWlj
'' SIG '' cm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UE
'' SIG '' CxMeblNoaWVsZCBUU1MgRVNOOjkyMDAtMDVFMC1EOTQ3
'' SIG '' MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
'' SIG '' ZXJ2aWNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
'' SIG '' CgKCAgEAwpRKMPcuDN39Uvc9cbTRBE8Fi9bxIosNKA+0
'' SIG '' lxHb+LHT9MbFconb+iNq5hJfD2LPS3GY87FjhyO3UJES
'' SIG '' 9vBj9wl3L2NGaup1rB2NkGpgmRSxdiJUR+gR8dkZDe2U
'' SIG '' QyprOwTqOCBgUZQjJFL/Tff7cDswJKVjbDN2/wUMXMIV
'' SIG '' YLEKrUPDRD1Lokfhlea3UB1E+KY4oWU5CcK2pYs9GW2K
'' SIG '' VEx+TpIt3dwacfaoj64geoYTXxj45dDyKdtw+e/a6Vum
'' SIG '' Zj6j0/I9dil+8kmcDbsbNz2Lxf8NdxrEV5MyGyMiyhD8
'' SIG '' 4/Zc5pqxdsI771K8fQGcOxi0l5NvA59V0n+toW5BblBs
'' SIG '' DxS6dxG0aiFZgWeNsHM+ZkiCAst0LP4cIRGIVJ3ZwAYD
'' SIG '' aQ+WrwCzle7FHyaxw2V1+n/YIG4yAOo9p4UgEiKpfBeS
'' SIG '' 7CgcNET7Q7st49gj8bU5maM2yyvEzLcQ4jAoMU6X4OYm
'' SIG '' FL8oVeGqmgy8EQbKAUYTv/ocMmyp2MF8Snnjq7DsEC52
'' SIG '' jhOQZhSWFgThc93fPCwSvUEQYHRB+Qi1Ye8JIDCHofen
'' SIG '' B+fh9MRL5oOre7s7ZV19kle8XVGD8QN7441dxJFe2m0h
'' SIG '' w+Rx0GU63dxarA/1TmAAlFQT68RfpFK2Rl8WCJ2U6a2D
'' SIG '' GBKulCBtQ0+KQlT/Q3GgixiDmBCdYNMCAwEAAaOCAUkw
'' SIG '' ggFFMB0GA1UdDgQWBBRJi+jRxF045b3wL0DNtXczFpPK
'' SIG '' 0jAfBgNVHSMEGDAWgBSfpxVdAF5iXYP05dJlpxtTNRnp
'' SIG '' cjBfBgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vd3d3Lm1p
'' SIG '' Y3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQl
'' SIG '' MjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcmww
'' SIG '' bAYIKwYBBQUHAQEEYDBeMFwGCCsGAQUFBzAChlBodHRw
'' SIG '' Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRz
'' SIG '' L01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAy
'' SIG '' MDEwKDEpLmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB
'' SIG '' /wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDAN
'' SIG '' BgkqhkiG9w0BAQsFAAOCAgEAXF58bzg8JOIf421AbJxZ
'' SIG '' Rba0rgQWW+8EmX2uZSkTEzXzZZmgAuG3e1qNCOYTMbBC
'' SIG '' VMrqR8IeJA+apEWXMyHNIyAAUENcQ1AWvlk8a6f1AKgt
'' SIG '' e4oxQnj2SmFYzax3/wZo8+xWjiONZMbnkYcCzSHENoJg
'' SIG '' ag0eVuE0tobUSWMmQLO43yZmw7U3FDjIRJdTlpcfxZ73
'' SIG '' EG6LeVT82lMIk+jYnvJej2Y6ELLsYmrLkgJsSiEHbB5y
'' SIG '' eUKJKsHcql4tRWQ7RE1b213w7KH807WuHp9qn+PIcxGc
'' SIG '' FL25M+bJrfPdJ1QCu5M9nK68zd4aZ3xbn7af61y1k78T
'' SIG '' 0HH1l4hLiFHdhoO3kfELcirSQ1PPjw8BApM6GiY2xgiq
'' SIG '' sfREoBSc861zcIYV+kXPINhFP/ut5pqlnghf5CThYNni
'' SIG '' cO2rv2mxEoKtxGs8g9VZS/h2l/jARxs0Jh7bzpt0JeMF
'' SIG '' Uzd1qvF/GwkevKoheaxWrJuEcRes2o2Xkhwv6kud9+v+
'' SIG '' GjA6rFejvOkZTzwmBiTj7X9jGyju1ySXi/1EDdHN7ose
'' SIG '' UTE6OunWwE8T1BRBuT4eDx8xo1GxDuw9+S7hAYohvGK5
'' SIG '' TETpBpd3wUJfW1m4MPQiFEG8KuXE2hMZXxKTHUqMnSaJ
'' SIG '' VE0A+RCyhs9UyWoU4nXdtMJcIuQZN+lyJs7B+GLNeYl0
'' SIG '' XwIwggdxMIIFWaADAgECAhMzAAAAFcXna54Cm0mZAAAA
'' SIG '' AAAVMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBD
'' SIG '' ZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yMTA5
'' SIG '' MzAxODIyMjVaFw0zMDA5MzAxODMyMjVaMHwxCzAJBgNV
'' SIG '' BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
'' SIG '' VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
'' SIG '' Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBU
'' SIG '' aW1lLVN0YW1wIFBDQSAyMDEwMIICIjANBgkqhkiG9w0B
'' SIG '' AQEFAAOCAg8AMIICCgKCAgEA5OGmTOe0ciELeaLL1yR5
'' SIG '' vQ7VgtP97pwHB9KpbE51yMo1V/YBf2xK4OK9uT4XYDP/
'' SIG '' XE/HZveVU3Fa4n5KWv64NmeFRiMMtY0Tz3cywBAY6GB9
'' SIG '' alKDRLemjkZrBxTzxXb1hlDcwUTIcVxRMTegCjhuje3X
'' SIG '' D9gmU3w5YQJ6xKr9cmmvHaus9ja+NSZk2pg7uhp7M62A
'' SIG '' W36MEBydUv626GIl3GoPz130/o5Tz9bshVZN7928jaTj
'' SIG '' kY+yOSxRnOlwaQ3KNi1wjjHINSi947SHJMPgyY9+tVSP
'' SIG '' 3PoFVZhtaDuaRr3tpK56KTesy+uDRedGbsoy1cCGMFxP
'' SIG '' LOJiss254o2I5JasAUq7vnGpF1tnYN74kpEeHT39IM9z
'' SIG '' fUGaRnXNxF803RKJ1v2lIH1+/NmeRd+2ci/bfV+Autuq
'' SIG '' fjbsNkz2K26oElHovwUDo9Fzpk03dJQcNIIP8BDyt0cY
'' SIG '' 7afomXw/TNuvXsLz1dhzPUNOwTM5TI4CvEJoLhDqhFFG
'' SIG '' 4tG9ahhaYQFzymeiXtcodgLiMxhy16cg8ML6EgrXY28M
'' SIG '' yTZki1ugpoMhXV8wdJGUlNi5UPkLiWHzNgY1GIRH29wb
'' SIG '' 0f2y1BzFa/ZcUlFdEtsluq9QBXpsxREdcu+N+VLEhReT
'' SIG '' wDwV2xo3xwgVGD94q0W29R6HXtqPnhZyacaue7e3Pmri
'' SIG '' Lq0CAwEAAaOCAd0wggHZMBIGCSsGAQQBgjcVAQQFAgMB
'' SIG '' AAEwIwYJKwYBBAGCNxUCBBYEFCqnUv5kxJq+gpE8RjUp
'' SIG '' zxD/LwTuMB0GA1UdDgQWBBSfpxVdAF5iXYP05dJlpxtT
'' SIG '' NRnpcjBcBgNVHSAEVTBTMFEGDCsGAQQBgjdMg30BATBB
'' SIG '' MD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29m
'' SIG '' dC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0w
'' SIG '' EwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQC
'' SIG '' BAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
'' SIG '' EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxi
'' SIG '' aNE9lJBb186aGMQwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0
'' SIG '' cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJv
'' SIG '' ZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3Js
'' SIG '' MFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0
'' SIG '' cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9N
'' SIG '' aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZI
'' SIG '' hvcNAQELBQADggIBAJ1VffwqreEsH2cBMSRb4Z5yS/yp
'' SIG '' b+pcFLY+TkdkeLEGk5c9MTO1OdfCcTY/2mRsfNB1OW27
'' SIG '' DzHkwo/7bNGhlBgi7ulmZzpTTd2YurYeeNg2LpypglYA
'' SIG '' A7AFvonoaeC6Ce5732pvvinLbtg/SHUB2RjebYIM9W0j
'' SIG '' VOR4U3UkV7ndn/OOPcbzaN9l9qRWqveVtihVJ9AkvUCg
'' SIG '' vxm2EhIRXT0n4ECWOKz3+SmJw7wXsFSFQrP8DJ6LGYnn
'' SIG '' 8AtqgcKBGUIZUnWKNsIdw2FzLixre24/LAl4FOmRsqlb
'' SIG '' 30mjdAy87JGA0j3mSj5mO0+7hvoyGtmW9I/2kQH2zsZ0
'' SIG '' /fZMcm8Qq3UwxTSwethQ/gpY3UA8x1RtnWN0SCyxTkct
'' SIG '' wRQEcb9k+SS+c23Kjgm9swFXSVRk2XPXfx5bRAGOWhmR
'' SIG '' aw2fpCjcZxkoJLo4S5pu+yFUa2pFEUep8beuyOiJXk+d
'' SIG '' 0tBMdrVXVAmxaQFEfnyhYWxz/gq77EFmPWn9y8FBSX5+
'' SIG '' k77L+DvktxW/tM4+pTFRhLy/AsGConsXHRWJjXD+57XQ
'' SIG '' KBqJC4822rpM+Zv/Cuk0+CQ1ZyvgDbjmjJnW4SLq8CdC
'' SIG '' PSWU5nR0W2rRnj7tfqAxM328y+l7vzhwRNGQ8cirOoo6
'' SIG '' CGJ/2XBjU02N7oJtpQUQwXEGahC0HVUzWLOhcGbyoYID
'' SIG '' UDCCAjgCAQEwgfmhgdGkgc4wgcsxCzAJBgNVBAYTAlVT
'' SIG '' MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
'' SIG '' ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
'' SIG '' YXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNh
'' SIG '' IE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNT
'' SIG '' IEVTTjo5MjAwLTA1RTAtRDk0NzElMCMGA1UEAxMcTWlj
'' SIG '' cm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcG
'' SIG '' BSsOAwIaAxUAfO+tqz00HeyJwwkHW9ZIBSkJAkSggYMw
'' SIG '' gYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz
'' SIG '' aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
'' SIG '' ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD
'' SIG '' Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAN
'' SIG '' BgkqhkiG9w0BAQsFAAIFAOt71w4wIhgPMjAyNTAzMTIw
'' SIG '' OTQ5MDJaGA8yMDI1MDMxMzA5NDkwMlowdzA9BgorBgEE
'' SIG '' AYRZCgQBMS8wLTAKAgUA63vXDgIBADAKAgEAAgIIvAIB
'' SIG '' /zAHAgEAAgIUXzAKAgUA630ojgIBADA2BgorBgEEAYRZ
'' SIG '' CgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6Eg
'' SIG '' oQowCAIBAAIDAYagMA0GCSqGSIb3DQEBCwUAA4IBAQAe
'' SIG '' /s8tLQG2pQmNTWeqe6PAZZ3Dwkh85kx0pgojzlEqNnfE
'' SIG '' +ebM5BpCYTeb3WQ0JI1nV8zCakUHmhdiIO0ZcHOR66pE
'' SIG '' ytRDeKnc3ZeQS+zLUCs5+nNd2h8jU9vNcFjRwVAazP/7
'' SIG '' 7jnqXotFlynt35easMfeE4LKAlA7A/dbYSSyQSceSDJ4
'' SIG '' 8YvJO7W+Yv/fn2nGrF34tOEXKgjs2pXRV5gswtnSg0FV
'' SIG '' MGnjh3MABXmcXT7vofsIWB51KvIUalByR9/WQ3tp69Jh
'' SIG '' DyDfQaPmzv371nn8M+3SdHxzK0maYHSuTnCOEdzGGqgp
'' SIG '' UpDYZtmVJP/GbzvHliAIwTwzqf8ROf5PMYIEDTCCBAkC
'' SIG '' AQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
'' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
'' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE
'' SIG '' AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAC
'' SIG '' EzMAAAIJCAfg+VyM5lUAAQAAAgkwDQYJYIZIAWUDBAIB
'' SIG '' BQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRAB
'' SIG '' BDAvBgkqhkiG9w0BCQQxIgQgUoz0Q31lZhGxWQcMq4BE
'' SIG '' 00zTQaenIESSi4K6wp6H0x4wgfoGCyqGSIb3DQEJEAIv
'' SIG '' MYHqMIHnMIHkMIG9BCBoGyweyL30Ai5lDlGYY3VKivG4
'' SIG '' pHwemVVXaE4zcIUTPjCBmDCBgKR+MHwxCzAJBgNVBAYT
'' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
'' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
'' SIG '' cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1l
'' SIG '' LVN0YW1wIFBDQSAyMDEwAhMzAAACCQgH4PlcjOZVAAEA
'' SIG '' AAIJMCIEIGlkngaXSMKj9Yj6Aeng7CArthC/KUdp3Wch
'' SIG '' eOolz9Z5MA0GCSqGSIb3DQEBCwUABIICABICaH7609Mh
'' SIG '' 8ZQaHA4H8TrC0eRRriGWLx1KqDDEuNTLHbVq26mStnia
'' SIG '' WKcj4jMg4vPhXgnwjwz12ypuqzYv5gjThqWKAWa0f7kz
'' SIG '' QrsPkHIOkmK1iir0P3RDPmvB9okBTj1y3FFbLx39IMiH
'' SIG '' F8lfNV6L9DxU3JfYPyQBjHYC6rnK3/lN7tkr4CzVaxJB
'' SIG '' PJaK72P8s5bmav5rQUHjTNCKeXPdO28cuIXZIybLMiv7
'' SIG '' DIshhY0EApz7HmZSffWw8cG+IY+2TR1XCXYOEfAIgOBY
'' SIG '' JZHRdTsFaA8yzAfb9qjhHDGRX0EnuW8adxJG5pnEs4Eh
'' SIG '' 2mLuWWKrBYzP+IZFnCM7hc7Ec6yILPJb2eQtS1Udj1Za
'' SIG '' 0xuym20jnoR0dw7M7QL6ovC1cX5fwZDlV2157dD4maRc
'' SIG '' 0BmLl5DQ7uxON6lHacY7g26f7aF6SP9bxywtD7KRl27U
'' SIG '' 1C6Q3r0NN0UkD4rtJRKzwwF0VvEkeU+/j060QVuHQcyM
'' SIG '' NQumfRWlRhnBxNG5eIZHQ5/0wr05kZ9leopG/5Uk/IG2
'' SIG '' D92C7pyO57YNSOSCpgqq1sc+T0ogjui6ytYM/8L7JyVc
'' SIG '' XnGWMxiQIrsun0C1jCst9wjeXQVstUDbY+dhSDSdaxPl
'' SIG '' orvrHVleDqCmAN5G+AU6Ro7diBHJYgjnW7+GgjZQlxb2
'' SIG '' S9e5fxIe+b6o
'' SIG '' End signature block
