' Windows Installer database table import for use with Windows Scripting Host
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates the use of the Database.Import method and MsiDatabaseImport API
'
Option Explicit

Const msiOpenDatabaseModeReadOnly     = 0
Const msiOpenDatabaseModeTransact     = 1
Const msiOpenDatabaseModeCreate       = 3
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
Const TristateTrue = -1

Dim argCount:argCount = Wscript.Arguments.Count
Dim iArg:iArg = 0
If (argCount < 3) Then
	Wscript.Echo "Windows Installer database table import utility" &_
		vbNewLine & " 1st argument is the path to MSI database (installer package)" &_
		vbNewLine & " 2nd argument is the path to folder containing the imported files" &_
		vbNewLine & " Subseqent arguments are names of archive files to import" &_
		vbNewLine & " Wildcards, such as *.idt, can be used to import multiple files" &_
		vbNewLine & " Specify /c or -c anywhere before file list to create new database" &_
		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

Dim openMode:openMode = msiOpenDatabaseModeTransact
Dim databasePath:databasePath = NextArgument
Dim folder:folder = NextArgument

Dim WshShell, fileSys
Set WshShell = Wscript.CreateObject("Wscript.Shell") : CheckError
Set fileSys = CreateObject("Scripting.FileSystemObject") : CheckError

' Open database and process list of files
Dim database, table
Set database = installer.OpenDatabase(databasePath, openMode) : CheckError
While iArg < argCount
	table = NextArgument
	' Check file name for wildcard specification
	If (InStr(1,table,"*",vbTextCompare) <> 0) Or (InStr(1,table,"?",vbTextCompare) <> 0) Then
		' Obtain list of files matching wildcard specification
		Dim file, tempFilePath
		tempFilePath = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\dir.tmp"
		WshShell.Run "cmd.exe /U /c dir /b " & folder & "\" & table & ">" & tempFilePath, 0, True : CheckError
		Set file = fileSys.OpenTextFile(tempFilePath, ForReading, False, TristateTrue) : CheckError
		' Import each file in directory list
		Do While file.AtEndOfStream <> True
			table = file.ReadLine
			database.Import folder, table : CheckError
		Loop
		file.Close
		fileSys.DeleteFile(tempFilePath)
	Else
		database.Import folder, table : CheckError
	End If
Wend
database.Commit 'commit changes if no import errors
Wscript.Quit 0

Function NextArgument
	Dim arg, chFlag
	Do
		arg = Wscript.Arguments(iArg)
		iArg = iArg + 1
		chFlag = AscW(arg)
		If (chFlag = AscW("/")) Or (chFlag = AscW("-")) Then
			chFlag = UCase(Right(arg, Len(arg)-1))
			If chFlag = "C" Then 
				openMode = msiOpenDatabaseModeCreate
			Else
				Wscript.Echo "Invalid option flag:", arg : Wscript.Quit 1
			End If
		Else
			Exit Do
		End If
	Loop
	NextArgument = arg
End Function

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 '' MIIpYgYJKoZIhvcNAQcCoIIpUzCCKU8CAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' URtattTTdos4rg+Jt96T7zPQ8Pzvx4qAdD0rt5bwgTmg
'' SIG '' gg3WMIIGvTCCBKWgAwIBAgITMwAAABxIn4HfobC3dwAA
'' SIG '' AAAAHDANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UEBhMC
'' SIG '' VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
'' SIG '' B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
'' SIG '' b3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3Qg
'' SIG '' Q2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMjQw
'' SIG '' ODA4MjEzNjIzWhcNMzUwNjIzMjIwNDAxWjBfMQswCQYD
'' SIG '' VQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMTAwLgYDVQQDEydNaWNyb3NvZnQgV2luZG93
'' SIG '' cyBDb2RlIFNpZ25pbmcgUENBIDIwMjQwggIiMA0GCSqG
'' SIG '' SIb3DQEBAQUAA4ICDwAwggIKAoICAQCafWt9J8F2Ki6u
'' SIG '' 49U0/8wrbe78VPggo/uwZIn0vwdoFyhlOzlfUl0SRj9c
'' SIG '' hbOaeo6bGIuHGMxeegFdABJphI1fME9pbz1OQYTd8Fd9
'' SIG '' B6mDyGBI+T91l39JFw/X741H9RgLVxK4ifMOwCzWlRJv
'' SIG '' UbOHjwNGbGB2gm1OZAVCUA17++oWnznEIHRQgNyN82LX
'' SIG '' 819rzsMfO7gzmgrsijkWYofXN803/kywuUGC8oVTAZw1
'' SIG '' xBwzq72sPdg0siKqXYEVqbn86gxctXoFY5KF2YW/vaWf
'' SIG '' YXlMzV014TqF83sYemMwC+H5QVpvgXNYUMhEnpxLwSc5
'' SIG '' 1ftubt4e+444DFGOOPll0OLvanXQ3v1OUngGikb74m5o
'' SIG '' uM+0EaS72bJWtAj4jlBs9NA6ObH5AtBMJbEs3zN/vAPa
'' SIG '' 7MhVToFg1T87ffDiT9hKGhDqvBhPRgqDdou/+AthQsH3
'' SIG '' 9QUgkyVmTtVnK9jLXiROlMRlfooQPJzedWDyg9nWBqHs
'' SIG '' K170cwv9R6FHkr5WX9Jn/RhxLb75GyVUUaOjwX9Jnebf
'' SIG '' O1W9ZjP3yKdXsqcmsZl5IKXAcLspbDqtpElTiecAT6Gh
'' SIG '' LLCZHjHCpxLrrvvlCnQx5UtA7bGIzdEJzrnL03UrHb4c
'' SIG '' yjkoyRd11aq/X9gveOS10+a8SiB1CBAwXDWFOgSgwx+q
'' SIG '' 36SjjgkopQIDAQABo4IBRjCCAUIwDgYDVR0PAQH/BAQD
'' SIG '' AgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBQe
'' SIG '' gt8O14yz1wI0gw7aq61lua+47DAZBgkrBgEEAYI3FAIE
'' SIG '' DB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8EBTADAQH/MB8G
'' SIG '' A1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYG
'' SIG '' A1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9z
'' SIG '' b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0Nl
'' SIG '' ckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQRO
'' SIG '' MEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9z
'' SIG '' b2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIw
'' SIG '' MTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEBDAUAA4ICAQBD
'' SIG '' X/jfP7vplIw7XPW7aAOdkQXNF1Q0gTEATKsbueoVxwcL
'' SIG '' nLVFrNVwagwzCBQh7vXOmP1BfkzfBCII57owKSmJhz+H
'' SIG '' +BDNwEUppc66ReaMzicdAQORVL9Y5qXX/9mW6qbwsZcb
'' SIG '' /xtUeCo60ppqjx87OooMN2+0U24+wcSEvHziJMGFkIQd
'' SIG '' ny45YPtx0qwxjxSIaSCVlWpjCEe2u9jhqJ43X+Oa7KcK
'' SIG '' iB7sp2VOGr8va7gf0YYW8JvnzG/ATHnCGk5pKIcfxGWe
'' SIG '' RjVnDeqE2FtxtgTNwd2M51pJfbeLIT+tHzLnvtpLHRxl
'' SIG '' khPBFU3UphlHY9I61HOOpRlRSSEhd/zMXMZ5TXj9Socq
'' SIG '' /mc0+BLbPyO5rn6Wi5y2pczEdsyLoRjgFlrMHrG47Rc5
'' SIG '' FVBYA0dklvdNyNFypWzxAOqvHqRxifa6MYfOZ7BCnATV
'' SIG '' MOEnKevCgqkqRQWiosldbJHfpfFOdFjXjzG/Qc89DnwE
'' SIG '' mpfL+bEBvg1tNZDfiPkSlCGzOSOdMCY4h8pkBTQ7G6Gx
'' SIG '' cfSPeZghBD1O31Gd1U/xzlFW5Jl+5bSAv3kALuRjvH7v
'' SIG '' nHhEzMm726MVDOHWDQvj86KFMX5gtA7ikcAdtW1/fmnL
'' SIG '' iAZMSJuBHdztfcNVS6AO1DTlLie8+jUNlv/qu3J3zj5d
'' SIG '' kFS+KpYAm5VE9r5kKZZVdzCCBxEwggT5oAMCAQICEzMA
'' SIG '' AACHvIJuhaGuU6gAAAAAAIcwDQYJKoZIhvcNAQEMBQAw
'' SIG '' XzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29m
'' SIG '' dCBDb3Jwb3JhdGlvbjEwMC4GA1UEAxMnTWljcm9zb2Z0
'' SIG '' IFdpbmRvd3MgQ29kZSBTaWduaW5nIFBDQSAyMDI0MB4X
'' SIG '' DTI1MDUwODE4MjQ1NFoXDTI2MDUwNjE4MjQ1NFowdDEL
'' SIG '' MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
'' SIG '' EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
'' SIG '' c29mdCBDb3Jwb3JhdGlvbjEeMBwGA1UEAxMVTWljcm9z
'' SIG '' b2Z0IENvcnBvcmF0aW9uMIICIjANBgkqhkiG9w0BAQEF
'' SIG '' AAOCAg8AMIICCgKCAgEAtCb7zQqvXhNLC7dFnQK7CLbh
'' SIG '' GaW7kyNFtxFTEouj05GNcZ4mYbJvK7BM6/zYKu+x5Jyl
'' SIG '' fBmGDZFcYaacHaEIpYf0dChC12YttkKouIxFLDmIJAxz
'' SIG '' yG51BHEL22htUdoozpnv7hhPQ190QcfT5G4vE2HnNXdo
'' SIG '' g4cxf8aH8qGRz1E7y9j8w2nu53AI40QoRu5As6G0oZHD
'' SIG '' KVGT8mDFyragjAMeDgWHXgRejxn37eGdenK1gJkhBjAn
'' SIG '' F0OxFcVo9Vu0ebDqOE4pVkAUKfcmMrymFDm6YkMFIzWW
'' SIG '' +MAC3mOprJiaIKeywuTesGqy2E24cCSW5ZoWUCIWg/FA
'' SIG '' Abj9N9J1KH1ZBg6iusQv0RJzhCk57BPimkW/CQzgV1kr
'' SIG '' HDTEEke8G19jRfoSv0uHYOjVB869KdJNtMmPC2YNDjzn
'' SIG '' mx4OVnV1KpBRzQeApNmjk+K4bu2GImAXsH1WVxeP1xfw
'' SIG '' XppDCoJ0E6CbxSWCzD2TN7aLDdSFtDsNzct0b8EHxzxk
'' SIG '' NZEqqazpdeCRUyPQjvwmc4WW4HkQfWd3VnF7dUWKbjSA
'' SIG '' JDFpe4A00WMuIFoZIJsxNcdXM9YQPISmSLw9FZjYsKjd
'' SIG '' Rx0Qx59q8sZi4GYC4ZLYeCv4twkfsUoqbTZ2J6TJBNEa
'' SIG '' 3vPa+OTClB8rc9M9MqkrHsvwbCfUYZ076oja1wMtEwcC
'' SIG '' AwEAAaOCAa8wggGrMA4GA1UdDwEB/wQEAwIHgDAfBgNV
'' SIG '' HSUEGDAWBgorBgEEAYI3PQYBBggrBgEFBQcDAzAMBgNV
'' SIG '' HRMBAf8EAjAAMB0GA1UdDgQWBBQmBkeooj1VeFa1e/hy
'' SIG '' jZGQTX+kqDBFBgNVHREEPjA8pDowODEeMBwGA1UECxMV
'' SIG '' TWljcm9zb2Z0IENvcnBvcmF0aW9uMRYwFAYDVQQFEw0y
'' SIG '' MzA4NjUrNTA0NTgxMB8GA1UdIwQYMBaAFB6C3w7XjLPX
'' SIG '' AjSDDtqrrWW5r7jsMGoGA1UdHwRjMGEwX6BdoFuGWWh0
'' SIG '' dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3Js
'' SIG '' L01pY3Jvc29mdCUyMFdpbmRvd3MlMjBDb2RlJTIwU2ln
'' SIG '' bmluZyUyMFBDQSUyMDIwMjQuY3JsMHcGCCsGAQUFBwEB
'' SIG '' BGswaTBnBggrBgEFBQcwAoZbaHR0cDovL3d3dy5taWNy
'' SIG '' b3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQl
'' SIG '' MjBXaW5kb3dzJTIwQ29kZSUyMFNpZ25pbmclMjBQQ0El
'' SIG '' MjAyMDI0LmNydDANBgkqhkiG9w0BAQwFAAOCAgEAfsvy
'' SIG '' zZE4Anv72F4x8SK0v+9/hU7oLTDhu5f37olRcN6aC2hh
'' SIG '' rXJ+yxebPP4erKM+Ek/NkHmQN8vwA75eVV3jteZkTnBC
'' SIG '' 5BWfJG3c6l058rlqQzk05ueA19l1cMUHxSMWCagYo/Kc
'' SIG '' L5TQAea9yTgTgH3oDmndTbgqD9P2gOYYLuHIt3dIvi2g
'' SIG '' VR5tkZRzOOLItSshIPEbPYP0kD0oo8ETLQ2u07Fps+xd
'' SIG '' SfT/lFd+sjpsEOI3qReYfIRVEqwid8e7RKgNK7ostsgk
'' SIG '' 9eRXGiXZ0N7WfEUVHaAif6cbQyN2MkjCwNl2C7OKh86B
'' SIG '' f0zzzbWlg076+GvqwW1GZufKVfkteI4bZEAKDvtu+f2v
'' SIG '' hEnkUhHj/fh3XtxM9OlNTESrvronEz3w4VIIEl83GgyJ
'' SIG '' p0UuohYxK8iRh4UcmWKDKYQoy5/jwSXufJ7y/x1rj+5A
'' SIG '' jG0iTmM9YIVVP5OXIE2Kqv1dxMsyKNitDLcKFEHGcoJE
'' SIG '' 3QkVL+hLahVm8bSun8jOpmwqEYLNrSnTJfBDeZ0jEV2R
'' SIG '' K7MemxujOwYE4kj+ehf/x73S8hinwEduOzbuP9Z8YHAw
'' SIG '' WVXLwico+hZmCp70BFosW2lxZabwjL2oVBVdW/9RSpNh
'' SIG '' BeJ7TEnAo8kylF0k7fHIJlX0vBQdWJGZuyLAowZLmhlm
'' SIG '' xmQSypcC8rO8KRYarzsxghrkMIIa4AIBATB2MF8xCzAJ
'' SIG '' BgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
'' SIG '' cG9yYXRpb24xMDAuBgNVBAMTJ01pY3Jvc29mdCBXaW5k
'' SIG '' b3dzIENvZGUgU2lnbmluZyBQQ0EgMjAyNAITMwAAAIe8
'' SIG '' gm6Foa5TqAAAAAAAhzANBglghkgBZQMEAgEFAKCBqDAZ
'' SIG '' BgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAvBgkqhkiG
'' SIG '' 9w0BCQQxIgQg7eWUfGzAc/5A7zipkVLl2TNPbIlzesQq
'' SIG '' /vdNLq54wLAwWgYKKwYBBAGCNwIBDDFMMEqgJIAiAE0A
'' SIG '' aQBjAHIAbwBzAG8AZgB0ACAAVwBpAG4AZABvAHcAc6Ei
'' SIG '' gCBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vd2luZG93
'' SIG '' czANBgkqhkiG9w0BAQEFAASCAgCPYQVaSGX7yLQDrJtf
'' SIG '' W7SZxFyK4pqCO+o1Bo22eYHKSpqFMR6VDVyuaf3pdDCT
'' SIG '' xd/0t5Whyrc7IHUQdbhDnjHGtlxn9Fd+UwxmEfxyq2wM
'' SIG '' sYA6CtaAFnr7rcuCU/KC/hsHNorjDBdPcZK9OuDfDuBB
'' SIG '' LYKr7j8j1CbQBzueT0rW5xp40N3JF6B+o+JFzLGom3Oz
'' SIG '' 4Ctvp7rSujDTapPE5j8D9qqajVlA37si9Gby9PF8WCf6
'' SIG '' Ah0NwhmS3CArd1S3zeo/XiqbR+WoxMCX1mLKuZgmCO9l
'' SIG '' MsHX6y4s/+CgipyckHIm1x5GKXqbQd3FH8rTkbeh4sAz
'' SIG '' xs0pOYOj8S8JDWhUCy23T2NGHAhC/TTgTF4nbAZ8r9ju
'' SIG '' RsaaJwwVRmnafNbyJKlThBax8qgvRTa9HfheQRvhpYz1
'' SIG '' BA1ds+6GflpdQQsJ34+S6IfMHjmg6SI88rVpL/0U+8as
'' SIG '' totH3ctb+/4S5W3rUT9ynuOX7MPPWI8s8VrTFO9j2LCW
'' SIG '' NYmL/VzE20JgF25uqTQTChtTe3DMEvlrVJ7xm7nn7HV2
'' SIG '' mcfCBh0xXtvsl1Ie/vX68Dj3IjFwMo4eBmeUL0M0Mp5s
'' SIG '' gX1YoqcnoiwWf6H96krOGsaBfQAbsR+DGLF8TDmmSirK
'' SIG '' j3lZQejZxyYVlz3zQ6lnFuyyTCUWRwvgmRp+vv+1cTFd
'' SIG '' 0Ky8YqGCF5QwgheQBgorBgEEAYI3AwMBMYIXgDCCF3wG
'' SIG '' CSqGSIb3DQEHAqCCF20wghdpAgEDMQ8wDQYJYIZIAWUD
'' SIG '' BAIBBQAwggFSBgsqhkiG9w0BCRABBKCCAUEEggE9MIIB
'' SIG '' OQIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUA
'' SIG '' BCDJgEeV7Bj5g46Fz0/Dv4t9jN41iDhe99slW4vorlCG
'' SIG '' YgIGaW+uooH3GBMyMDI2MDEyNzAyMTY1Mi45MTRaMASA
'' SIG '' AgH0oIHRpIHOMIHLMQswCQYDVQQGEwJVUzETMBEGA1UE
'' SIG '' CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
'' SIG '' MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUw
'' SIG '' IwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRp
'' SIG '' b25zMScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046OTYw
'' SIG '' MC0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBU
'' SIG '' aW1lLVN0YW1wIFNlcnZpY2WgghHqMIIHIDCCBQigAwIB
'' SIG '' AgITMwAAAgTY4A4HlzJYmAABAAACBDANBgkqhkiG9w0B
'' SIG '' AQsFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz
'' SIG '' aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
'' SIG '' ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD
'' SIG '' Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAe
'' SIG '' Fw0yNTAxMzAxOTQyNDdaFw0yNjA0MjIxOTQyNDdaMIHL
'' SIG '' MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
'' SIG '' bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
'' SIG '' cm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNy
'' SIG '' b3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQL
'' SIG '' Ex5uU2hpZWxkIFRTUyBFU046OTYwMC0wNUUwLUQ5NDcx
'' SIG '' JTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNl
'' SIG '' cnZpY2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
'' SIG '' AoICAQDw3Sbcee2d66vkWGTIXhfGqqgQGxQXTnq44XlU
'' SIG '' vNzFSt7ELtO4B939jwZFX7DrRt/4fpzGNkFdGpc7EL5S
'' SIG '' 86qKYv360eXjW+fIv1lAqDD31d/p8Ai9/AZz8M95zo0r
'' SIG '' DpK2csz9WAyR9FtUDx52VOs9qP3/pgpHvgUvD8s6/3KN
'' SIG '' ITzms8QC1tJ3TMw1cRn9CZgVIYzw2iD/ZvOW0sbF/DRd
'' SIG '' gM8UdtxjFIKTXTaI/bJhsQge3TwayKQ2j85RafFFVCR5
'' SIG '' /ChapkrBQWGwNFaPzpmYN46mPiOvUxriISC9nQ/GrDXU
'' SIG '' JWzLDmchrmr2baABJevvw31UYlTlLZY6zUmjkgaRfpoz
'' SIG '' d+Glq9TY2E3Dglr6PtTEKgPu2hM6v8NiU5nTvxhDnxdm
'' SIG '' cf8UN7goeVlELXbOm7j8yw1xM9IyyQuUMWkorBaN/5r9
'' SIG '' g4lvYkMohRXEYB0tMaOPt0FmZmQMLBFpNRVnXBTa4haX
'' SIG '' vn1adKrvTz8VlfnHxkH6riA/h2AlqYWhv0YULsEcHnaD
'' SIG '' WgqA29ry+jH097MpJ/FHGHxk+d9kH2L5aJPpAYuNmMNP
'' SIG '' B7FDTPWAx7Apjr/J5MhUx0i07gV2brAZ9J9RHi+fMPbS
'' SIG '' +Qm4AonC5iOTj+dKCttVRs+jKKuO63CLwqlljvnUCmuS
'' SIG '' avOX54IXOtKcFZkfDdOZ7cE4DioP1QIDAQABo4IBSTCC
'' SIG '' AUUwHQYDVR0OBBYEFBp1dktAcGpW/Km6qm+vu4M1GaJf
'' SIG '' MB8GA1UdIwQYMBaAFJ+nFV0AXmJdg/Tl0mWnG1M1Gely
'' SIG '' MF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWlj
'' SIG '' cm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUy
'' SIG '' MFRpbWUtU3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBs
'' SIG '' BggrBgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6
'' SIG '' Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMv
'' SIG '' TWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIw
'' SIG '' MTAoMSkuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/
'' SIG '' BAwwCgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0G
'' SIG '' CSqGSIb3DQEBCwUAA4ICAQBecv6sRw2HTLMyUC1WJJ+F
'' SIG '' R+DgA9Jkv0lGsIt4y69CmOj8R63oFbhSmcdpakxqNbr8
'' SIG '' v9dyTb4RDyNqtohiiXbtrXmQK5X7y/Q++F0zMotTtTpT
'' SIG '' PvG3eltyV/LvO15mrLoNQ7W4VH58aLt030tORxs8VnAQ
'' SIG '' QF5BmQQMOua+EQgH4f1F4uF6rl3EC17JBSJ0wjHSea/n
'' SIG '' 0WYiHPR0qkz/NRAf8lSUUV0gbIMawGIjn7+RKyCr+8l1
'' SIG '' xdNkK/F0UYuX3hG0nE+9Wc0L4A/enluUN7Pa9vOV6Vi3
'' SIG '' BOJST0RY/ax7iZ45leM8kqCw7BFPcTIkWzxpjr2nCtir
'' SIG '' nkw7OBQ6FNgwIuAvYNTU7r60W421YFOL5pTsMZcNDOOs
'' SIG '' A01xv7ymCF6zknMGpRHuw0Rb2BAJC9quU7CXWbMbAJLd
'' SIG '' Z6XINKariSmCX3/MLdzcW5XOycK0QhoRNRf4WqXRshEB
'' SIG '' aY2ymJvHO48oSSY/kpuYvBS3ljAAuLN7Rp8jWS7t916p
'' SIG '' aGeE7prmrP9FJsoy1LFKmFnW+vg43ANhByuAEXq9Cay5
'' SIG '' o7K2H5NFnR5wj/SLRKwK1iyUX926i1TEviEiAh/PVyJb
'' SIG '' AD4koipig28p/6HDuiYOZ0wUkm/a5W8orIjoOdU3XsJ4
'' SIG '' i08CfNp5I73CsvB5QPYMcLpF9NO/1LvoQAw3UPdL55M5
'' SIG '' HTCCB3EwggVZoAMCAQICEzMAAAAVxedrngKbSZkAAAAA
'' SIG '' ABUwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVT
'' SIG '' MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
'' SIG '' ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
'' SIG '' YXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENl
'' SIG '' cnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkz
'' SIG '' MDE4MjIyNVoXDTMwMDkzMDE4MzIyNVowfDELMAkGA1UE
'' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
'' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
'' SIG '' b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp
'' SIG '' bWUtU3RhbXAgUENBIDIwMTAwggIiMA0GCSqGSIb3DQEB
'' SIG '' AQUAA4ICDwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9
'' SIG '' DtWC0/3unAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9c
'' SIG '' T8dm95VTcVrifkpa/rg2Z4VGIwy1jRPPdzLAEBjoYH1q
'' SIG '' UoNEt6aORmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP
'' SIG '' 2CZTfDlhAnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBb
'' SIG '' fowQHJ1S/rboYiXcag/PXfT+jlPP1uyFVk3v3byNpOOR
'' SIG '' j7I5LFGc6XBpDco2LXCOMcg1KL3jtIckw+DJj361VI/c
'' SIG '' +gVVmG1oO5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s
'' SIG '' 4mKyzbnijYjklqwBSru+cakXW2dg3viSkR4dPf0gz3N9
'' SIG '' QZpGdc3EXzTdEonW/aUgfX782Z5F37ZyL9t9X4C626p+
'' SIG '' Nuw2TPYrbqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjt
'' SIG '' p+iZfD9M269ewvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi
'' SIG '' 0b1qGFphAXPKZ6Je1yh2AuIzGHLXpyDwwvoSCtdjbwzJ
'' SIG '' NmSLW6CmgyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR
'' SIG '' /bLUHMVr9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PA
'' SIG '' PBXbGjfHCBUYP3irRbb1Hode2o+eFnJpxq57t7c+auIu
'' SIG '' rQIDAQABo4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEA
'' SIG '' ATAjBgkrBgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnP
'' SIG '' EP8vBO4wHQYDVR0OBBYEFJ+nFV0AXmJdg/Tl0mWnG1M1
'' SIG '' GelyMFwGA1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEw
'' SIG '' PwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0
'' SIG '' LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTAT
'' SIG '' BgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIE
'' SIG '' DB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0T
'' SIG '' AQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo
'' SIG '' 0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRw
'' SIG '' Oi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9k
'' SIG '' dWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmww
'' SIG '' WgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRw
'' SIG '' Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01p
'' SIG '' Y1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG
'' SIG '' 9w0BAQsFAAOCAgEAnVV9/Cqt4SwfZwExJFvhnnJL/Klv
'' SIG '' 6lwUtj5OR2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsP
'' SIG '' MeTCj/ts0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgAD
'' SIG '' sAW+iehp4LoJ7nvfam++Kctu2D9IdQHZGN5tggz1bSNU
'' SIG '' 5HhTdSRXud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/
'' SIG '' GbYSEhFdPSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefw
'' SIG '' C2qBwoEZQhlSdYo2wh3DYXMuLGt7bj8sCXgU6ZGyqVvf
'' SIG '' SaN0DLzskYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbOxnT9
'' SIG '' 9kxybxCrdTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3B
'' SIG '' FARxv2T5JL5zbcqOCb2zAVdJVGTZc9d/HltEAY5aGZFr
'' SIG '' DZ+kKNxnGSgkujhLmm77IVRrakURR6nxt67I6IleT53S
'' SIG '' 0Ex2tVdUCbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6T
'' SIG '' vsv4O+S3Fb+0zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAo
'' SIG '' GokLjzbaukz5m/8K6TT4JDVnK+ANuOaMmdbhIurwJ0I9
'' SIG '' JZTmdHRbatGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoI
'' SIG '' Yn/ZcGNTTY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggNN
'' SIG '' MIICNQIBATCB+aGB0aSBzjCByzELMAkGA1UEBhMCVVMx
'' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
'' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
'' SIG '' dGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2Eg
'' SIG '' T3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1Mg
'' SIG '' RVNOOjk2MDAtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNy
'' SIG '' b3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYF
'' SIG '' Kw4DAhoDFQC6PYHRw9+9SH+1pwy6qzVG3k9lbqCBgzCB
'' SIG '' gKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo
'' SIG '' aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
'' SIG '' ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT
'' SIG '' HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0G
'' SIG '' CSqGSIb3DQEBCwUAAgUA7SIVDTAiGA8yMDI2MDEyNjE2
'' SIG '' MzAwNVoYDzIwMjYwMTI3MTYzMDA1WjB0MDoGCisGAQQB
'' SIG '' hFkKBAExLDAqMAoCBQDtIhUNAgEAMAcCAQACAg5xMAcC
'' SIG '' AQACAhSSMAoCBQDtI2aNAgEAMDYGCisGAQQBhFkKBAIx
'' SIG '' KDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAI
'' SIG '' AgEAAgMBhqAwDQYJKoZIhvcNAQELBQADggEBAByCYGg4
'' SIG '' Mu/uKKmsXXdhwgzzlXASUEWA9juRVsHlcbBWoVRGTbao
'' SIG '' 9yhSs4M/SUNqUAANi5ZoboL0VSdPq3XceG9vndGx1BBL
'' SIG '' xD7hfcX0YYJ+YxPqHFzfiM2XerJG3OgpjfeGWD//dvKF
'' SIG '' bTQC9b2H5fIvtZhc1gRCugoWNyo6YaIHtFQLW1gSbBnG
'' SIG '' 46EUDVVHK6hbeftsCPi0l5LB2MgD7zqrtmLbJ+W6DFwB
'' SIG '' 8dBL91aFMAkqMAgWNfiBJDQusEJAu2WEne5JAu1CQXEl
'' SIG '' 90uMAkgBsqT2I6b3C3m2IqFSNY1Rr39zJ1aDqm6IvFRo
'' SIG '' b4cdHRZUY5GNFTjORnvFbdLlk2oxggQNMIIECQIBATCB
'' SIG '' kzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu
'' SIG '' Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV
'' SIG '' TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1N
'' SIG '' aWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAA
'' SIG '' AgTY4A4HlzJYmAABAAACBDANBglghkgBZQMEAgEFAKCC
'' SIG '' AUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8G
'' SIG '' CSqGSIb3DQEJBDEiBCDPzeU7Wzt6JWPYEhLS/Oa6ZHY9
'' SIG '' Nyd4om6xXFCG665f1zCB+gYLKoZIhvcNAQkQAi8xgeow
'' SIG '' gecwgeQwgb0EIPnteGX9Wwq8VdJM6mjfx1GEJsu7/6kU
'' SIG '' 6l0SS5rcebn+MIGYMIGApH4wfDELMAkGA1UEBhMCVVMx
'' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
'' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
'' SIG '' dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh
'' SIG '' bXAgUENBIDIwMTACEzMAAAIE2OAOB5cyWJgAAQAAAgQw
'' SIG '' IgQgbC22O6+9Rq6WhuMcsbRj4MUUC6GDYTA9ozgU+4W2
'' SIG '' NIgwDQYJKoZIhvcNAQELBQAEggIAGmXvnxCanOf2WrgA
'' SIG '' 0Asveah1ZayBMjVoGpY4ehLht3jiOdiMmkUr/Xa8hgMJ
'' SIG '' D+ef8MCOcogay9hxPboS56yeeiHOHSauIVs5DXGz8/gF
'' SIG '' L9Mtu8IY/ByL3QuemlpTewRk+c2RHt/aRHEIFvHTwJAv
'' SIG '' 730ltY/vCk6/iXXsFdRe7W2PwLGf2WB33sgsRHCgqQCB
'' SIG '' gn2/FXUzoUHuLzBVBTldEscWYa4fACFBqVWE1aa78g0m
'' SIG '' AY6eVOw0KsRbnqdTmCl+IqqvkqwhdIZib4K1fkEwC7TR
'' SIG '' bTi6DQ8dfyQN5pSijitS2ylKzwV/ezBpzsF8mbuVnXRZ
'' SIG '' A60vLOHuVQvfnszePjhoWxRhljuBl5q6dy9pTisG7/Hh
'' SIG '' mHBt6xgVRuGx8O4SiYFpdG3CzDKxNpoIXFLnldLit6XW
'' SIG '' iZEafVDpcqtsv3P2CSqcIYmaKMXiH+ZwsiEzrVfhKLyI
'' SIG '' RMlZEi7ZeTa6wYRj73usoVDnE1NjpElZo8Vu+Gn6XHL2
'' SIG '' RjLyQ2FS8gCn9/rPNu3tmQ8MnsC4tejqKBLjXdQ0mtVW
'' SIG '' e8K8fQeWR399WOAzTAK7VxTa6nlMaNSpRjx8xLYSWQ/g
'' SIG '' JTVIKM8zP8i6SPYCgiIct0OIgFlKRpcTK090Dz10vQZH
'' SIG '' BshtU0pPRBdWyhknM9j0wkrj+Xan5/ai/Th4zeK3DDQi
'' SIG '' ltJwyJ4=
'' SIG '' End signature block
