'On Error Resume Next Dim FSO, sSPFile, PercentageComplete, sProgressValue Dim SPPercentage, LPPercentage, Drivepath, RootPath Dim printersCaptured Dim printersRestored Dim networkSharesCaptured Dim networkSharesRestored Dim OldPCName Dim scanStateExitCode Dim loadStateExitCode Dim USMTTaskname Set FSO = CreateObject("Scripting.FileSystemObject") Const ForReading = 1 USMTTaskname = "Run USMT" FindPath() On Error Resume Next MBToTransfer(DrivePath & "\USMTcapture.prg") SPPercentComplete(DrivePath & "\USMTcapture.prg") LPPercentComplete(DrivePath & "\Loadstateprogress.log") 'LPPercentComplete(DrivePath & "\Loadstateprogress.prg") printersCaptured = GetPrinetrsCount() networkSharesCaptured = GetNetworkShareCount() 'printersRestored = GetPrinetrsCount(DrivePath & "\PrintersRestored.xml") 'networkSharesRestored = GetNetworkShareCount(DrivePath & "\PrintersRestored.xml") GetOldPCComputerName(RootPath & "\OldPCName.txt") GetRestoreProcessExitCode() GetScanProcessExitCode(DrivePath & "\OSDSetupWizardOldPC.log") WriteTSVariables() '|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 'Functions & Subroutines '|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Function MBToTransfer(sSPFile) Dim oFile, strContents, arrWords Dim strWord, sTrim Set oFile = FSO.OpenTextFile(sSPFile, ForReading) strContents = oFile.ReadAll oFile.Close arrWords = Split(strContents, vbCr) For Each strWord in arrWords If InStr(strWord, "totalSizeInMBToTransfer") Then 'Wscript.echo strWord sTrim = instrrev(strWord, "," ) 'Wscript.echo sTrim sProgressValue = Right(strWord,Len(strWord) -sTrim) 'Wscript.echo sProgressValue End IF Next End Function Function SPPercentComplete(sFile) Dim oFile, strContents, arrWords Set oFile = FSO.OpenTextFile(sFile, ForReading) strContents = oFile.ReadAll oFile.Close arrWords = Split(strContents, vbCr) dim arrCount 'as int arrCount = Ubound(arrWords) -1 dim strSeq ' as string strSeq = "totalPercentageCompleted" dim i ' as int ' loop thru backwards to find sequence for i = arrCount to 0 step -1 dim pos ' as int pos = Instr( arrWords(i), strSeq ) if pos > 0 then ' ex: 15 Jan 2011, 20:46:21 -08:00, 00:04:48, totalPercentageCompleted, 48 dim tmpResult ' as string tmpResult = Right ( arrWords(i), pos -1) PercentageComplete = Right (tmpResult, 3) SPPercentage = PercentageComplete 'Wscript.echo SPPercentage exit for end if Next End Function Function LPPercentComplete(sFile) Dim oFile, strContents, arrWords Set oFile = FSO.OpenTextFile(sFile, ForReading) ' check if file exists if FSO.FileExists(sFile) = False Then Set PathEnv = CreateObject("Microsoft.SMS.TSEnvironment") PathEnv("OSDLoadStateLogExists") = "False" Exit Function End If strContents = oFile.ReadAll oFile.Close arrWords = Split(strContents, vbCr) dim arrCount 'as int arrCount = Ubound(arrWords) -1 dim strSeq ' as string strSeq = "totalPercentageCompleted" dim i ' as int ' loop thru backwards to find sequence for i = arrCount to 0 step -1 dim pos ' as int pos = Instr( arrWords(i), strSeq ) if pos > 0 then ' ex: 15 Jan 2011, 20:46:21 -08:00, 00:04:48, totalPercentageCompleted, 48 dim tmpResult ' as string tmpResult = Right ( arrWords(i), pos -1) PercentageComplete = Right (tmpResult, 3) LPPercentage = PercentageComplete 'Wscript.echo LPPercentage exit for end if Next End Function Function GetPrinetrsCount() Dim objXMLDoc, Root, NodeList Set objXMLDoc = CreateObject("Microsoft.XMLDOM") objXMLDoc.async = False Dim sFile sFile = DrivePath & "\PrinterList.xml" ' check if file exists if FSO.FileExists(sFile) = False Then sFile = RootPath & "\PrinterList.xml" if FSO.FileExists(sFile) = False Then Set PathEnv = CreateObject("Microsoft.SMS.TSEnvironment") PathEnv("OSDGetPrintersLogExists") = "False" Exit Function End If End If If objXMLDoc.load(sFile) Then Set Root = objXMLDoc.documentElement Set NodeList = Root.getElementsByTagName("Printer") ' wscript.echo NodeList.length GetPrinetrsCount = NodeList.length Else wscript.echo "Failed to load" End If Set objXMLDoc = Nothing End Function Function GetNetworkShareCount() Dim objXMLDoc, Root, NodeList Set objXMLDoc = CreateObject("Microsoft.XMLDOM") objXMLDoc.async = False Dim sFile sFile = DrivePath & "\PrinterList.xml" ' check if file exists if FSO.FileExists(sFile) = False Then sFile = RootPath & "\PrinterList.xml" if FSO.FileExists(sFile) = False Then Set PathEnv = CreateObject("Microsoft.SMS.TSEnvironment") PathEnv("OSDGetPrintersLogExists") = "False" Exit Function End If End If If objXMLDoc.load(sFile) Then Set Root = objXMLDoc.documentElement Set NodeList = Root.getElementsByTagName("NetworkShare") ' wscript.echo NodeList.length GetNetworkShareCount = NodeList.length Else wscript.echo "Failed to load" End If Set objXMLDoc = Nothing End Function Function GetOldPCComputerName(sFile) Dim oFile, strContents, arrWords Set oFile = FSO.OpenTextFile(sFile, ForReading) 'strContents = oFile.ReadAll OldPCName = oFile.ReadLine oFile.Close End Function Function GetRestoreProcessExitCode() Dim smsFile Dim oFile, strContents, arrLines, eachLine Dim strWord, sTrim Dim oFolder Dim logFileName ''For each file that starts witj smsts*.log Dim foundExitCode foundExitCode = False set oFolder = FSO.GetFolder(DrivePath) For Each smsFile In oFolder.Files If (foundExitCode = False) Then ' Skip if exit code already found If ( UCase (Left (smsFile.Name, 5)) = "SMSTS" ) Then ' read only smsts files logFileName = DrivePath & "\" & smsFile.Name 'smsFile = DrivePath & "\SMSTS.log" Set oFile = FSO.OpenTextFile(logFileName, ForReading) strContents = oFile.ReadAll oFile.Close arrLines = Split(strContents, vbCr) For Each eachLine in arrLines If (foundExitCode = False) Then ' If InStr(eachLine, "LoadState return code:") Then foundExitCode = True sColon = instr(eachLine, ":" ) sTrim = instr(eachLine, "]" ) loadStateExitCode = Mid(eachLine,sColon+1 , sTrim-1-sColon ) ' Wscript.echo loadStateExitCode End If End If Next End If End If Next If (foundExitCode = False) Then loadStateExitCode = 0 End If End Function Function GetScanProcessExitCode(smsFile) Dim oFile, strContents, arrLines, eachLine Dim strWord, sTrim Dim foundExitCode Set oFile = FSO.OpenTextFile(smsFile, ForReading,,true) foundExitCode = False strContents = oFile.ReadAll oFile.Close Dim sANSIFileName Dim oANSIFile sANSIFileName = DrivePath & "\OSDRefreshWizardANSI.log" 'OpenTextFile(destination, forwriting, createnew, open as Ascii) Set oANSIFile = FSO.OpenTextFile(sANSIFileName, 2, True, False) oANSIFile.Write strContents oANSIFile.Close Set oANSIFile = Nothing Set oANSIFile = FSO.OpenTextFile(sANSIFileName, 1, , False) strContents = oANSIFile.ReadAll oANSIFile.Close Set oANSIFile = Nothing If FSO.FileExists(sANSIFileName) Then FSO.DeleteFile sANSIFileName ' Wscript.echo "File deleted" End If arrLines = Split(strContents, vbCr) For Each eachLine in arrLines If (InStr(eachLine, USMTTaskname) > 0) Then If (InStr(eachLine, "exit code =")) Then foundExitCode = True sTrim = instr(eachLine, "exit code =" ) ' USMT log line from Wizard log: ' 18:18:58.906 02-15-2011 1 TaskManager Finished running task 'Run USMT'. Status = 'Error', exit code =26, task return code = 0 scanStateExitCode = Trim( Mid (eachLine, sTrim+11, Instr(sTrim,eachLine,",")-(sTrim+11) ) ) 'Wscript.echo "Scan process Exit code :" & scanStateExitCode End IF End IF Next ' If (foundExitCode = False) Then ' scanStateExitCode = 0 ' End If End Function Sub WriteTSVariables() dim Env dim UserStateLocal dim UserStateNetwork dim UserStateUSB dim osd: set Env = CreateObject("Microsoft.SMS.TSEnvironment") ' Set a variable in the Operating System Deployment environment. Env("OSDDataMigrationToTransfer") = sProgressValue Env("OSDDataMigrationScanned") = SPPercentage 'If loadstateExitCode is '0' then set loadtstate percentage to 100 'as loadstate.exe is not logging 100% in its Loadprogress log eventhough it completed succesfully If (loadStateExitCode = 0 ) Then LPPercentage = "100" End IF Env("OSDDataMigrationRestored") = LPPercentage Env("OSDNumberOfPrintersCaptured") = printersCaptured Env("OSDNumberOfNetworkSharesCaptured") = networkSharesCaptured ' Env("OSDNumberOfPrintersRestored") = printersRestored ' Env("OSDNumberOfNetworkSharesRestored") = networkSharesRestored Env("OSDOldComputerName") = OldPCName 'OSDDataSourceDrive If ( Env("OSDHardLinks") = "TRUE") Then Env("OSDDataTransferType") = "Local" ElseIf Env("SMSConnectNetworkFolderPath") <> "" Then Env("OSDDataTransferType") = "Network" ElseIf Env("OSDDataSourceDrive") <> "" Then Env ("OSDDataTransferType") = "USB" Else Env ("OSDDataTransferType") = "False" End If Env("OSDCaptureProcessExitCode") = scanStateExitCode Env("OSDRestoreProcessExitCode") = loadStateExitCode End Sub Sub FindPath() Dim PathEnv Set PathEnv = CreateObject("Microsoft.SMS.TSEnvironment") ' You can query the environment to get an existing USB path variable. 'DrivePath = PathEnv("OSDStateStorePath") & "\" & PathEnv("OSDDataSourceDirectory") 'LogsPath = PathEnv("_SMSTSLogPath") DrivePath = PathEnv("OSDStateStorePath") & "\SCCMLogs" RootPath = PathEnv("OSDStateStorePath") 'wscript.echo DrivePath End Sub '' SIG '' Begin signature block '' SIG '' MIIaWgYJKoZIhvcNAQcCoIIaSzCCGkcCAQExCzAJBgUr '' SIG '' DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB '' SIG '' gjcCAR4wJAIBAQQQTvApFpkntU2P5azhDxfrqwIBAAIB '' SIG '' AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFFaxvnpuW8HZ '' SIG '' 8tA6Jsv8VrUFbpHgoIIVNjCCBKkwggORoAMCAQICEzMA '' SIG '' AACIWQ48UR/iamcAAQAAAIgwDQYJKoZIhvcNAQEFBQAw '' SIG '' eTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 '' SIG '' b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p '' SIG '' Y3Jvc29mdCBDb3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWlj '' SIG '' cm9zb2Z0IENvZGUgU2lnbmluZyBQQ0EwHhcNMTIwNzI2 '' SIG '' MjA1MDQxWhcNMTMxMDI2MjA1MDQxWjCBgzELMAkGA1UE '' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV '' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD '' SIG '' b3Jwb3JhdGlvbjENMAsGA1UECxMETU9QUjEeMBwGA1UE '' SIG '' AxMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMIIBIjANBgkq '' SIG '' hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs3R00II8h6ea '' SIG '' 1I6yBEKAlyUu5EHOk2M2XxPytHiYgMYofsyKE+89N4w7 '' SIG '' CaDYFMVcXtipHX8BwbOYG1B37P7qfEXPf+EhDsWEyp8P '' SIG '' a7MJOLd0xFcevvBIqHla3w6bHJqovMhStQxpj4TOcVV7 '' SIG '' /wkgv0B3NyEwdFuV33fLoOXBchIGPfLIVWyvwftqFifI '' SIG '' 9bNh49nOGw8e9OTNTDRsPkcR5wIrXxR6BAf11z2L22d9 '' SIG '' Vz41622NAUCNGoeW4g93TIm6OJz7jgKR2yIP5dA2qbg3 '' SIG '' RdAq/JaNwWBxM6WIsfbCBDCHW8PXL7J5EdiLZWKiihFm '' SIG '' XX5/BXpzih96heXNKBDRPQIDAQABo4IBHTCCARkwEwYD '' SIG '' VR0lBAwwCgYIKwYBBQUHAwMwHQYDVR0OBBYEFCZbPltd '' SIG '' ll/i93eIf15FU1ioLlu4MA4GA1UdDwEB/wQEAwIHgDAf '' SIG '' BgNVHSMEGDAWgBTLEejK0rQWWAHJNy4zFha5TJoKHzBW '' SIG '' BgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jv '' SIG '' c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNDb2RT '' SIG '' aWdQQ0FfMDgtMzEtMjAxMC5jcmwwWgYIKwYBBQUHAQEE '' SIG '' TjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jv '' SIG '' c29mdC5jb20vcGtpL2NlcnRzL01pY0NvZFNpZ1BDQV8w '' SIG '' OC0zMS0yMDEwLmNydDANBgkqhkiG9w0BAQUFAAOCAQEA '' SIG '' D95ASYiR0TE3o0Q4abJqK9SR+2iFrli7HgyPVvqZ18qX '' SIG '' J0zohY55aSzkvZY/5XBml5UwZSmtxsqs9Q95qGe/afQP '' SIG '' l+MKD7/ulnYpsiLQM8b/i0mtrrL9vyXq7ydQwOsZ+Bpk '' SIG '' aqDhF1mv8c/sgaiJ6LHSFAbjam10UmTalpQqXGlrH+0F '' SIG '' mRrc6GWqiBsVlRrTpFGW/VWV+GONnxQMsZ5/SgT/w2at '' SIG '' Cq+upN5j+vDqw7Oy64fbxTittnPSeGTq7CFbazvWRCL0 '' SIG '' gVKlK0MpiwyhKnGCQsurG37Upaet9973RprOQznoKlPt '' SIG '' z0Dkd4hCv0cW4KU2au+nGo06PTME9iUgIzCCBLowggOi '' SIG '' oAMCAQICCmECkkoAAAAAACAwDQYJKoZIhvcNAQEFBQAw '' SIG '' dzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 '' SIG '' b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p '' SIG '' Y3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWlj '' SIG '' cm9zb2Z0IFRpbWUtU3RhbXAgUENBMB4XDTEyMDEwOTIy '' SIG '' MjU1OVoXDTEzMDQwOTIyMjU1OVowgbMxCzAJBgNVBAYT '' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH '' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y '' SIG '' cG9yYXRpb24xDTALBgNVBAsTBE1PUFIxJzAlBgNVBAsT '' SIG '' Hm5DaXBoZXIgRFNFIEVTTjpCOEVDLTMwQTQtNzE0NDEl '' SIG '' MCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy '' SIG '' dmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC '' SIG '' ggEBAM1jw/eitUfZ+TmUU6xrj6Z5OCH00W49FTgWwXMs '' SIG '' mY/74Dxb4aJMi7Kri7TySse5k1DRJvWHU7B6dfNHDxcr '' SIG '' Zyxk62DnSozgi17EVmk3OioEXRcByL+pt9PJq6ORqIHj '' SIG '' Py232OTEeAB5Oc/9x2TiIxJ4ngx2J0mPmqwOdOMGVVVJ '' SIG '' yO2hfHBFYX6ycRYe4cFBudLSMulSJPM2UATX3W88SdUL '' SIG '' 1HZA/GVlE36VUTrV/7iap1drSxXlN1gf3AANxa7q34FH '' SIG '' +fBSrubPWqzgFEqmcZSA+v2wIzBg6YNgrA4kHv8R8uel '' SIG '' VWKV7p9/ninWzUsKdoPwQwTfBkkg8lNaRLBRejkCAwEA '' SIG '' AaOCAQkwggEFMB0GA1UdDgQWBBTNGaxhTZRnK/avlHVZ '' SIG '' 2/BYAIOhOjAfBgNVHSMEGDAWgBQjNPjZUkZwCu1A+3b7 '' SIG '' syuwwzWzDzBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v '' SIG '' Y3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0 '' SIG '' cy9NaWNyb3NvZnRUaW1lU3RhbXBQQ0EuY3JsMFgGCCsG '' SIG '' AQUFBwEBBEwwSjBIBggrBgEFBQcwAoY8aHR0cDovL3d3 '' SIG '' dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNyb3Nv '' SIG '' ZnRUaW1lU3RhbXBQQ0EuY3J0MBMGA1UdJQQMMAoGCCsG '' SIG '' AQUFBwMIMA0GCSqGSIb3DQEBBQUAA4IBAQBRHNbfNh3c '' SIG '' gLwCp8aZ3xbIkAZpFZoyufNkENKK82IpG3mPymCps13E '' SIG '' 5BYtNYxEm/H0XGGkQa6ai7pQ0Wp5arNijJ1NUVALqY7U '' SIG '' v6IQwEfVTnVSiR4/lmqPLkAUBnLuP3BZkl2F7YOZ+oKE '' SIG '' nuQDASETqyfWzHFJ5dod/288CU7VjWboDMl/7jEUAjdf '' SIG '' e2nsiT5FfyVE5x8a1sUaw0rk4fGEmOdP+amYpxhG7IRs '' SIG '' 7KkDCv18elIdnGukqA+YkqSSeFwreON9ssfZtnB931tz '' SIG '' U7+q1GZQS/DJO5WF5cFKZZ0lWFC7IFSReTobB1xqVyiv '' SIG '' Mcef58Md7kf9J9d/z3TcZcU/MIIFvDCCA6SgAwIBAgIK '' SIG '' YTMmGgAAAAAAMTANBgkqhkiG9w0BAQUFADBfMRMwEQYK '' SIG '' CZImiZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJ '' SIG '' bWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNyb3NvZnQgUm9v '' SIG '' dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTAwODMx '' SIG '' MjIxOTMyWhcNMjAwODMxMjIyOTMyWjB5MQswCQYDVQQG '' SIG '' EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE '' SIG '' BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv '' SIG '' cnBvcmF0aW9uMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29k '' SIG '' ZSBTaWduaW5nIFBDQTCCASIwDQYJKoZIhvcNAQEBBQAD '' SIG '' ggEPADCCAQoCggEBALJyWVwZMGS/HZpgICBCmXZTbD4b '' SIG '' 1m/My/Hqa/6XFhDg3zp0gxq3L6Ay7P/ewkJOI9VyANs1 '' SIG '' VwqJyq4gSfTwaKxNS42lvXlLcZtHB9r9Jd+ddYjPqnNE '' SIG '' f9eB2/O98jakyVxF3K+tPeAoaJcap6Vyc1bxF5Tk/TWU '' SIG '' cqDWdl8ed0WDhTgW0HNbBbpnUo2lsmkv2hkL/pJ0KeJ2 '' SIG '' L1TdFDBZ+NKNYv3LyV9GMVC5JxPkQDDPcikQKCLHN049 '' SIG '' oDI9kM2hOAaFXE5WgigqBTK3S9dPY+fSLWLxRT3nrAgA '' SIG '' 9kahntFbjCZT6HqqSvJGzzc8OJ60d1ylF56NyxGPVjzB '' SIG '' rAlfA9MCAwEAAaOCAV4wggFaMA8GA1UdEwEB/wQFMAMB '' SIG '' Af8wHQYDVR0OBBYEFMsR6MrStBZYAck3LjMWFrlMmgof '' SIG '' MAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEEBQIDAQAB '' SIG '' MCMGCSsGAQQBgjcVAgQWBBT90TFO0yaKleGYYDuoMW+m '' SIG '' PLzYLTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAf '' SIG '' BgNVHSMEGDAWgBQOrIJgQFYnl+UlE/wq4QpTlVnkpDBQ '' SIG '' BgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jv '' SIG '' c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9taWNyb3Nv '' SIG '' ZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEESDBGMEQG '' SIG '' CCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5j '' SIG '' b20vcGtpL2NlcnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNy '' SIG '' dDANBgkqhkiG9w0BAQUFAAOCAgEAWTk+fyZGr+tvQLEy '' SIG '' tWrrDi9uqEn361917Uw7LddDrQv+y+ktMaMjzHxQmIAh '' SIG '' Xaw9L0y6oqhWnONwu7i0+Hm1SXL3PupBf8rhDBdpy6Wc '' SIG '' IC36C1DEVs0t40rSvHDnqA2iA6VW4LiKS1fylUKc8fPv '' SIG '' 7uOGHzQ8uFaa8FMjhSqkghyT4pQHHfLiTviMocroE6WR '' SIG '' Tsgb0o9ylSpxbZsa+BzwU9ZnzCL/XB3Nooy9J7J5Y1ZE '' SIG '' olHN+emjWFbdmwJFRC9f9Nqu1IIybvyklRPk62nnqaIs '' SIG '' vsgrEA5ljpnb9aL6EiYJZTiU8XofSrvR4Vbo0HiWGFzJ '' SIG '' NRZf3ZMdSY4tvq00RBzuEBUaAF3dNVshzpjHCe6FDoxP '' SIG '' bQ4TTj18KUicctHzbMrB7HCjV5JXfZSNoBtIA1r3z6Nn '' SIG '' CnSlNu0tLxfI5nI3EvRvsTxngvlSso0zFmUeDordEN5k '' SIG '' 9G/ORtTTF+l5xAS00/ss3x+KnqwK+xMnQK3k+eGpf0a7 '' SIG '' B2BHZWBATrBC7E7ts3Z52Ao0CW0cgDEf4g5U3eWh++VH '' SIG '' EK1kmP9QFi58vwUheuKVQSdpw5OPlcmN2Jshrg1cnPCi '' SIG '' roZogwxqLbt2awAdlq3yFnv2FoMkuYjPaqhHMS+a3ONx '' SIG '' PdcAfmJH0c6IybgY+g5yjcGjPa8CQGr/aZuW4hCoELQ3 '' SIG '' UAjWwz0wggYHMIID76ADAgECAgphFmg0AAAAAAAcMA0G '' SIG '' CSqGSIb3DQEBBQUAMF8xEzARBgoJkiaJk/IsZAEZFgNj '' SIG '' b20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTAr '' SIG '' BgNVBAMTJE1pY3Jvc29mdCBSb290IENlcnRpZmljYXRl '' SIG '' IEF1dGhvcml0eTAeFw0wNzA0MDMxMjUzMDlaFw0yMTA0 '' SIG '' MDMxMzAzMDlaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQI '' SIG '' EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w '' SIG '' HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf '' SIG '' BgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQTCC '' SIG '' ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ+h '' SIG '' bLHf20iSKnxrLhnhveLjxZlRI1Ctzt0YTiQP7tGn0Uyt '' SIG '' dDAgEesH1VSVFUmUG0KSrphcMCbaAGvoe73siQcP9w4E '' SIG '' mPCJzB/LMySHnfL0Zxws/HvniB3q506jocEjU8qN+kXP '' SIG '' CdBer9CwQgSi+aZsk2fXKNxGU7CG0OUoRi4nrIZPVVIM '' SIG '' 5AMs+2qQkDBuh/NZMJ36ftaXs+ghl3740hPzCLdTbVK0 '' SIG '' RZCfSABKR2YRJylmqJfk0waBSqL5hKcRRxQJgp+E7VV4 '' SIG '' /gGaHVAIhQAQMEbtt94jRrvELVSfrx54QTF3zJvfO4OT '' SIG '' oWECtR0Nsfz3m7IBziJLVP/5BcPCIAsCAwEAAaOCAasw '' SIG '' ggGnMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCM0 '' SIG '' +NlSRnAK7UD7dvuzK7DDNbMPMAsGA1UdDwQEAwIBhjAQ '' SIG '' BgkrBgEEAYI3FQEEAwIBADCBmAYDVR0jBIGQMIGNgBQO '' SIG '' rIJgQFYnl+UlE/wq4QpTlVnkpKFjpGEwXzETMBEGCgmS '' SIG '' JomT8ixkARkWA2NvbTEZMBcGCgmSJomT8ixkARkWCW1p '' SIG '' Y3Jvc29mdDEtMCsGA1UEAxMkTWljcm9zb2Z0IFJvb3Qg '' SIG '' Q2VydGlmaWNhdGUgQXV0aG9yaXR5ghB5rRahSqClrUxz '' SIG '' WPQHEy5lMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9j '' SIG '' cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz '' SIG '' L21pY3Jvc29mdHJvb3RjZXJ0LmNybDBUBggrBgEFBQcB '' SIG '' AQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly93d3cubWlj '' SIG '' cm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljcm9zb2Z0Um9v '' SIG '' dENlcnQuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0G '' SIG '' CSqGSIb3DQEBBQUAA4ICAQAQl4rDXANENt3ptK132855 '' SIG '' UU0BsS50cVttDBOrzr57j7gu1BKijG1iuFcCy04gE1CZ '' SIG '' 3XpA4le7r1iaHOEdAYasu3jyi9DsOwHu4r6PCgXIjUji '' SIG '' 8FMV3U+rkuTnjWrVgMHmlPIGL4UD6ZEqJCJw+/b85HiZ '' SIG '' Lg33B+JwvBhOnY5rCnKVuKE5nGctxVEO6mJcPxaYiyA/ '' SIG '' 4gcaMvnMMUp2MT0rcgvI6nA9/4UKE9/CCmGO8Ne4F+tO '' SIG '' i3/FNSteo7/rvH0LQnvUU3Ih7jDKu3hlXFsBFwoUDtLa '' SIG '' FJj1PLlmWLMtL+f5hYbMUVbonXCUbKw5TNT2eb+qGHpi '' SIG '' Ke+imyk0BncaYsk9Hm0fgvALxyy7z0Oz5fnsfbXjpKh0 '' SIG '' NbhOxXEjEiZ2CzxSjHFaRkMUvLOzsE1nyJ9C/4B5IYCe '' SIG '' FTBm6EISXhrIniIh0EPpK+m79EjMLNTYMoBMJipIJF9a '' SIG '' 6lbvpt6Znco6b72BJ3QGEe52Ib+bgsEnVLaxaj2JoXZh '' SIG '' tG6hE6a/qkfwEm/9ijJssv7fUciMI8lmvZ0dhxJkAj0t '' SIG '' r1mPuOQh5bWwymO0eFQF1EEuUKyUsKV4q7OglnUa2ZKH '' SIG '' E3UiLzKoCG6gW4wlv6DvhMoh1useT8ma7kng9wFlb4kL '' SIG '' fchpyOZu6qeXzjEp/w7FW1zYTRuh2Povnj8uVRZryROj '' SIG '' /TGCBJAwggSMAgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMw '' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt '' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp '' SIG '' b24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25p '' SIG '' bmcgUENBAhMzAAAAiFkOPFEf4mpnAAEAAACIMAkGBSsO '' SIG '' AwIaBQCggbIwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcC '' SIG '' AQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUw '' SIG '' IwYJKoZIhvcNAQkEMRYEFDCb68aYvJXTJk85te1S+jtL '' SIG '' p6R3MFIGCisGAQQBgjcCAQwxRDBCoCSAIgBNAEQAVAAg '' SIG '' AFUARABJAHYAMwAgAFQAbwBvAGwAawBpAHShGoAYaHR0 '' SIG '' cDovL3d3dy5taWNyb3NvZnQuY29tMA0GCSqGSIb3DQEB '' SIG '' AQUABIIBAC2wt4LWetaiN5s5taPNIuONv/wy/ALEOHOl '' SIG '' WeuIpfFOvB0FroigolElIoXt5yS0/HURqddV2/XaRGtp '' SIG '' 4ArfLvig8dH4f45GqZGqJY47yLZ8DcbTM6a/rRY8mULM '' SIG '' lIkoga+kyGIYCKzakA8BhjQhnUMEKxij2XcIjR9O94Je '' SIG '' EcsdwrVMpawBQGBABytnryDRPfMx5Yma0k7QTZKHLpsh '' SIG '' WZTE2vZsQcXpv1HgROTdu6q5vmvUrBQNe15WagmJcRyB '' SIG '' 3H4S18KXgwrX+GtXwnS1DFBpr1/KQy64jirPGxxZUgLv '' SIG '' jRkyw8WJzcmr2hto/b0tlSJM8RdTV4QkIXa4zKpaO8Ch '' SIG '' ggIfMIICGwYJKoZIhvcNAQkGMYICDDCCAggCAQEwgYUw '' SIG '' dzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 '' SIG '' b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p '' SIG '' Y3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWlj '' SIG '' cm9zb2Z0IFRpbWUtU3RhbXAgUENBAgphApJKAAAAAAAg '' SIG '' MAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZI '' SIG '' hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMjA4MzAxOTU3 '' SIG '' MDJaMCMGCSqGSIb3DQEJBDEWBBQSsdjxpnzU2D5eVlFt '' SIG '' THUnRymRgzANBgkqhkiG9w0BAQUFAASCAQBm0kyC9w3a '' SIG '' ZP0pl4LoFNeXiaLocsnzlxwVi5kAPrz02kJhezNjxWsM '' SIG '' oLKvnVYGnEFPNE2yPI7XPDJCfTjqSzyBCFs1AkhPnA0v '' SIG '' 9Pl3TGn8aR7thx2sAvD9kNtEr1lmWtqlK8ZnAPPmRIXk '' SIG '' czEIyns4hkA1+CMTnbP1h2VKE/ZkoOx05mmQ6bOyQaEL '' SIG '' WXMc31LPXPND2k43gQ7WMg5jheUQgKj7sjpIzEt52jOc '' SIG '' x6eGHOGZc58h0ORRLxRbz3K7bnWt3SrN06O97n0G0sWy '' SIG '' fiShI4SClvWn7WRqBqKIWisJctT6T9Y7pHFQx0d2G2qs '' SIG '' nttbeH2riP6tcsV6pD631Sbd '' SIG '' End signature block