# Gacha Focus - pull history link finder (Windows). # # What it does, and nothing else: # 1. reads the game's own log to find where the game is installed; # 2. copies the game's web cache (webCaches//Cache/Cache_Data/data_2) # and looks for the history link the game saved when you opened the # history screen; # 3. checks the link with the game's own history API (one small page); # 4. sends it to the Gacha Focus page that is waiting for it (with the # one-time code from that page), or copies it to your clipboard. # It never changes a file of the game, needs no administrator and keeps # nothing. The link only reads your pull history and expires in about a day. # Each step shows for at least two seconds (an animation, nothing else # happens then), and once done the script closes its window after 15 seconds. # # Usage (the page builds this line for you): # $gf='genshin pt CODE'; iwr -useb https://gachafocus.com.br/ferramentas/historico.ps1 | iex $gfPreference = $ErrorActionPreference $ErrorActionPreference = 'Stop' $ProgressPreference = 'SilentlyContinue' Add-Type -AssemblyName System.Web # Windows PowerShell 5.1 may still offer only old TLS versions by default; # HoYoverse and our site need TLS 1.2. try { [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12 } catch { } $base = 'https://gachafocus.com.br' $gfArgs = @() if (Get-Variable -Name gf -ErrorAction SilentlyContinue) { $gfArgs = "$gf".Split(' ', [StringSplitOptions]::RemoveEmptyEntries) } $game = if ($gfArgs.Count -ge 1) { $gfArgs[0] } else { 'genshin' } $lang = if ($gfArgs.Count -ge 2) { $gfArgs[1] } else { 'pt' } $code = if ($gfArgs.Count -ge 3) { $gfArgs[2] } else { '' } $pt = $lang -ne 'en' $games = @{ 'genshin' = @{ Name = 'Genshin Impact'; Logs = @('miHoYo\Genshin Impact\output_log.txt', 'miHoYo\Genshin Impact\Player.log'); Data = '(GenshinImpact_Data|YuanShen_Data)'; Api = 'https://public-operation-hk4e-sg.hoyoverse.com/gacha_info/api/getGachaLog'; Type = 'gacha_type=301'; Biz = 'hk4e_global'; Screen = @('Oracao > Historico', 'Wish > History') } 'honkai-star-rail' = @{ Name = 'Honkai: Star Rail'; Logs = @('Cognosphere\Star Rail\Player.log'); Data = '(StarRail_Data)'; Api = 'https://public-operation-hkrpg-sg.hoyoverse.com/common/gacha_record/api/getGachaLog'; Type = 'gacha_type=11'; Biz = 'hkrpg_global'; Screen = @('Salto > Registro', 'Warp > Records') } 'zenless-zone-zero' = @{ Name = 'Zenless Zone Zero'; Logs = @('miHoYo\ZenlessZoneZero\Player.log'); Data = '(ZenlessZoneZero_Data)'; Api = 'https://public-operation-nap-sg.hoyoverse.com/common/gacha_record/api/getGachaLog'; Type = 'real_gacha_type=2'; Biz = 'nap_global'; Screen = @('Procurar Sinal > Historico', 'Signal Search > History') } } if (-not $games.ContainsKey($game)) { $game = 'genshin' } $g = $games[$game] function T($ptText, $enText) { if ($pt) { $ptText } else { $enText } } # --- the screen: our name, who we are, then each step under it -------------- # (the owner's ASCII art in 24-bit color, only where the console understands # it: whole in a window of 120+ columns, two of every three columns in one of # 80+, none in a narrower one, where it would break every line) try { [Console]::OutputEncoding = [Text.Encoding]::UTF8 } catch { } $E = [char]27 # The art comes as Base64 of UTF-8 text, so this file is plain ASCII however # PowerShell decodes the download; it is drawn only on a console that really # writes UTF-8 (elsewhere the blocks would print as "?"). function U($b) { [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($b)) } $utf8 = $false try { $utf8 = [Console]::OutputEncoding.CodePage -eq 65001 } catch { } $vt = $false try { $vt = [bool]$Host.UI.SupportsVirtualTerminal } catch { } $art = @( (U 'G1szODsyOzA7MjQwOzI1NW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBtbMzg7Mjs1MDsxOTQ7MjUzbeKWiBtbMzg7Mjs1MTsxOTM7MjUzbeKWhBtbMzg7Mjs1MzsxOTE7MjUybeKWiBtbMzg7Mjs1NDsxOTA7MjUybeKWgCAgICAgICAgICAgICAgICAgICAgICAgG1szODsyOzg4OzE1OTsyNTFt4paEG1szODsyOzQzOzc1OzEyMG3ilpEbWzM4OzI7OTE7MTU2OzI1MW3ilogbWzM4OzI7OTM7MTU1OzI1MW3ilogbWzM4OzI7OTQ7MTUzOzI1MW3iloQbWzM4OzI7Nzg7MTI1OzIwNW3ilpMbWzM4OzI7OTc7MTUxOzI1MG3iloQbWzM4OzI7OTg7MTQ5OzI1MG3iloQbWzBt') (U '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') (U 'G1szODsyOzA7MjQwOzI1NW0gG1szODsyOzE7MjM5OzI1NW3ilogbWzM4OzI7MzsyMzc7MjU1beKWiBtbMzg7Mjs0OzIzNjsyNTVt4paIG1szODsyOzY7MjM1OzI1NW3iloAgICAbWzM4OzI7NTsxMTA7MTIybeKWkRtbMzg7MjsxMzsyMjg7MjU0beKWiBtbMzg7MjsxNDsyMjc7MjU0beKWgCAgICAgG1szODsyOzIzOzIxOTsyNTRt4paEG1szODsyOzI0OzIxODsyNTRt4paEG1szODsyOzI2OzIxNjsyNTRt4paIG1szODsyOzIyOzE3NjsyMDht4paTG1szODsyOzI4OzIxNDsyNTRt4paMG1szODsyOzMwOzIxMjsyNTRt4paEICAbWzM4OzI7Mjg7MTcxOzIwOG3ilpMbWzM4OzI7MzY7MjA3OzI1M23ilogbWzM4OzI7Mzc7MjA2OzI1M23iloAbWzM4OzI7Mzg7MjA1OzI1M23iloAgIBtbMzg7Mjs0MzsyMDE7MjUzbeKWgBtbMzg7Mjs0NDsxOTk7MjUzbeKWiBtbMzg7MjszNzsxNjI7MjA3beKWkxtbMzg7Mjs0NzsxOTc7MjUzbeKWiCAbWzM4OzI7NTA7MTk0OzI1M23ilogbWzM4OzI7NDI7MTU4OzIwN23ilpMbWzM4OzI7MjU7OTI7MTIxbeKWkSAgIBtbMzg7Mjs1ODsxODY7MjUybeKWgBtbMzg7Mjs2MDsxODU7MjUybeKWiBtbMzg7Mjs2MTsxODQ7MjUybeKWiBtbMzg7Mjs1MTsxNDk7MjA3beKWkyAgICAgG1szODsyOzcxOzE3NDsyNTJt4paEG1szODsyOzczOzE3MzsyNTJt4paEG1szODsyOzc0OzE3MjsyNTFt4paIG1szODsyOzYyOzE0MDsyMDZt4paTG1szODsyOzc3OzE2OTsyNTFt4paMG1szODsyOzc4OzE2ODsyNTFt4paEICAgICAbWzM4OzI7NTY7MTAyOzE2MW3ilpIbWzM4OzI7ODg7MTU5OzI1MW3ilogbWzM4OzI7NDM7NzU7MTIwbeKWkRtbMzg7Mjs5MTsxNTY7MjUxbeKWjCAgIBtbMzg7Mjs5NzsxNTE7MjUwbeKWkBtbMzg7Mjs4MTsxMjI7MjA1beKWkxtbMzg7Mjs0ODs3MTsxMjBt4paRG1szODsyOzEwMTsxNDc7MjUwbeKWjCAbWzM4OzI7ODU7MTE4OzIwNW3ilpMbWzM4OzI7MTA1OzE0MzsyNTBt4paIG1szODsyOzEwNzsxNDE7MjUwbeKWgBtbMzg7MjsxMDg7MTQwOzI1MG3iloAgG1szODsyOzExMTsxMzg7MjUwbeKWgBtbMzg7MjsxMTI7MTM2OzI1MG3iloAbWzM4OzI7MTE0OzEzNTsyNTBt4paIG1szODsyOzk1OzExMDsyMDVt4paTG1szODsyOzExNzsxMzI7MjQ5beKWiCAgG1szODsyOzk5OzEwNTsyMDRt4paTG1szODsyOzEyMjsxMjc7MjQ5beKWiBtbMzg7MjsxMjQ7MTI2OzI0OW3iloAbWzM4OzI7MTI1OzEyNDsyNDlt4paAICAbWzM4OzI7MTMwOzEyMDsyNDlt4paAG1szODsyOzEzMTsxMTk7MjQ5beKWiBtbMzg7MjsxMDk7OTc7MjA0beKWkxtbMzg7MjsxMzQ7MTE3OzI0OW3iloggG1szODsyOzg3OzczOzE1OW3ilpIbWzM4OzI7MTEzOzkyOzIwNG3ilpMbWzM4OzI7MTQwOzExMTsyNDht4paIG1szODsyOzE0MTsxMTA7MjQ4beKWgCAgIBtbMzg7MjsxNDc7MTA1OzI0OG3iloQbWzM4OzI7NzE7NTA7MTE5beKWkRtbMzg7MjsxMjM7ODQ7MjAzbeKWkxtbMzg7MjsxNTE7MTAxOzI0OG3iloggIBtbMzg7MjsxNTU7OTc7MjQ4beKWiBtbMzg7MjsxNTc7OTY7MjQ4beKWiBtbMzg7MjsxNTg7OTQ7MjQ3beKWgBtbMzg7MjsxNTk7OTM7MjQ3beKWgCAbWzM4OzI7MTYyOzkwOzI0N23iloAbWzM4OzI7MTY0Ozg5OzI0N23ilogbWzM4OzI7MTM1OzcyOzIwM23ilpMbWzM4OzI7ODA7NDE7MTE5beKWkRtbMzg7MjsxNjg7ODU7MjQ3beKWjBtbMG0=') (U 'G1szODsyOzA7MjQwOzI1NW3ilpAbWzM4OzI7MTsxMTU7MTIybeKWkRtbMzg7MjsyOzE5NTsyMDlt4paTG1szODsyOzQ7MjM2OzI1NW3ilowgICAgG1szODsyOzExOzIyOTsyNTRt4paQG1szODsyOzExOzE4NzsyMDlt4paTG1szODsyOzE0OzIyNzsyNTRt4paMG1szODsyOzE2OzIyNjsyNTRt4paMIBtbMzg7MjsxOTsyMjM7MjU0beKWhBtbMzg7MjsyMDsyMjI7MjU0beKWiBtbMzg7MjsyMTsyMjA7MjU0beKWgBtbMzg7MjsyMzsyMTk7MjU0beKWgCAbWzM4OzI7MjY7MjE2OzI1NG3iloAbWzM4OzI7Mjc7MjE1OzI1NG3ilogbWzM4OzI7MjM7MTc1OzIwOG3ilpMbWzM4OzI7MTQ7MTAyOzEyMm3ilpEbWzM4OzI7MzE7MjExOzI1NG3ilowbWzM4OzI7MzM7MjEwOzI1M23ilpAbWzM4OzI7MzQ7MjA4OzI1M23ilogbWzM4OzI7MzY7MjA3OzI1M23ilowbWzM4OzI7Mzc7MjA2OzI1M23ilowgICAgG1szODsyOzQ0OzE5OTsyNTNt4paQG1szODsyOzQ2OzE5ODsyNTNt4paAG1szODsyOzIzOzk0OzEyMW3ilpEbWzM4OzI7NDg7MTk1OzI1M23ilowbWzM4OzI7NTA7MTk0OzI1M23ilogbWzM4OzI7NDI7MTU4OzIwN23ilpMbWzM4OzI7NTM7MTkxOzI1Mm3ilowgICAgG1szODsyOzYwOzE4NTsyNTJt4paQG1szODsyOzYxOzE4NDsyNTJt4paIG1szODsyOzYzOzE4MjsyNTJt4paMG1szODsyOzY0OzE4MTsyNTJt4paMIBtbMzg7Mjs2NzsxNzg7MjUybeKWhBtbMzg7Mjs2ODsxNzc7MjUybeKWiBtbMzg7Mjs3MDsxNzY7MjUybeKWgBtbMzg7Mjs3MTsxNzQ7MjUybeKWgCAbWzM4OzI7NzQ7MTcyOzI1MW3iloAbWzM4OzI7NzU7MTcwOzI1MW3ilogbWzM4OzI7NjM7MTM5OzIwNm3ilpMbWzM4OzI7Mzg7ODE7MTIxbeKWkRtbMzg7Mjs4MDsxNjY7MjUxbeKWjCAgICAbWzM4OzI7ODc7MTYwOzI1MW3ilpAbWzM4OzI7NzI7MTMwOzIwNm3ilpMbWzM4OzI7OTA7MTU3OzI1MW3ilogbWzM4OzI7OTE7MTU2OzI1MW3ilogbWzM4OzI7NTk7OTk7MTYwbeKWkhtbMzg7Mjs0NTs3NDsxMjBt4paRG1szODsyOzQ2OzczOzEyMG3ilpEgG1szODsyOzk4OzE0OTsyNTBt4paAG1szODsyOzEwMDsxNDg7MjUwbeKWgCAbWzM4OzI7MTAzOzE0NTsyNTBt4paQG1szODsyOzEwNDsxNDQ7MjUwbeKWiBtbMzg7MjsxMDU7MTQzOzI1MG3ilowbWzM4OzI7MTA3OzE0MTsyNTBt4paMICAgIBtbMzg7MjsxMTQ7MTM1OzI1MG3ilpAbWzM4OzI7OTU7MTEwOzIwNW3ilpMbWzM4OzI7NTY7NjM7MTIwbeKWkRtbMzg7MjsxMTg7MTMxOzI0OW3ilowbWzM4OzI7MTIwOzEzMDsyNDlt4paQG1szODsyOzEyMTsxMjg7MjQ5beKWiBtbMzg7MjsxMjI7MTI3OzI0OW3ilowbWzM4OzI7MTI0OzEyNjsyNDlt4paMICAgIBtbMzg7MjsxMzE7MTE5OzI0OW3ilpAbWzM4OzI7MTMyOzExODsyNDlt4paAG1szODsyOzY0OzU2OzExOW3ilpEbWzM4OzI7MTM1OzExNTsyNDlt4paMG1szODsyOzEzNzsxMTQ7MjQ4beKWiBtbMzg7MjsxMzg7MTEzOzI0OG3ilogbWzM4OzI7MTQwOzExMTsyNDht4paMG1szODsyOzE0MTsxMTA7MjQ4beKWjCAgIBtbMzg7Mjs3MDs1MDsxMTlt4paRG1szODsyOzE0ODsxMDM7MjQ4beKWkBtbMzg7MjsxMjM7ODQ7MjAzbeKWkxtbMzg7Mjs3Mjs0ODsxMTlt4paRG1szODsyOzE1Mjs5OTsyNDht4paMG1szODsyOzE1NDs5ODsyNDht4paEG1szODsyOzE1NTs5NzsyNDht4paIG1szODsyOzEyODs3ODsyMDNt4paTG1szODsyOzE1ODs5NDsyNDdt4paEICAgIBtbMzg7MjsxNjU7ODg7MjQ3beKWgBtbMzg7MjsxNjc7ODY7MjQ3beKWgBtbMG0=') (U 'G1szODsyOzA7MjQwOzI1NW3ilpAbWzM4OzI7MTsyMzk7MjU1beKWkBtbMzg7MjsyOzE5NTsyMDlt4paTG1szODsyOzQ7MjM2OzI1NW3ilowgICAbWzM4OzI7NTsxMTE7MTIybeKWkRtbMzg7Mjs5OzE4ODsyMDlt4paTG1szODsyOzEzOzIyODsyNTRt4paAG1szODsyOzc7MTA5OzEyMm3ilpEbWzM4OzI7MTY7MjI2OzI1NG3ilowbWzM4OzI7MTc7MjI0OzI1NG3ilpAbWzM4OzI7MTk7MjIzOzI1NG3ilogbWzM4OzI7MjA7MjIyOzI1NG3ilowgICAgG1szODsyOzI3OzIxNTsyNTRt4paQG1szODsyOzI4OzIxNDsyNTRt4paIG1szODsyOzMwOzIxMjsyNTRt4paMG1szODsyOzMxOzIxMTsyNTRt4paAG1szODsyOzMzOzIxMDsyNTNt4paIG1szODsyOzI4OzE3MTsyMDht4paTG1szODsyOzE3Ozk5OzEyMm3ilpEbWzM4OzI7MTg7OTk7MTIybeKWkSAgICAgICAgG1szODsyOzQxOzE1OTsyMDdt4paTG1szODsyOzUxOzE5MzsyNTNt4paAG1szODsyOzI1OzkyOzEyMW3ilpEbWzM4OzI7MjY7OTE7MTIxbeKWkSAgIBtbMzg7Mjs2MDsxODU7MjUybeKWkBtbMzg7Mjs1MDsxNTA7MjA3beKWkxtbMzg7Mjs2MzsxODI7MjUybeKWiBtbMzg7Mjs2NDsxODE7MjUybeKWjBtbMzg7Mjs2NTsxODA7MjUybeKWkBtbMzg7Mjs2NzsxNzg7MjUybeKWiBtbMzg7Mjs2ODsxNzc7MjUybeKWjCAgICAbWzM4OzI7NzU7MTcwOzI1MW3ilpAbWzM4OzI7Nzc7MTY5OzI1MW3ilogbWzM4OzI7Nzg7MTY4OzI1MW3ilowbWzM4OzI7ODA7MTY2OzI1MW3iloAgICAgG1szODsyOzQyOzc3OzEyMG3ilpEbWzM4OzI7ODg7MTU5OzI1MW3iloAbWzM4OzI7NDM7NzU7MTIwbeKWkRtbMzg7Mjs5MTsxNTY7MjUxbeKWgCAgICAgICAbWzM4OzI7MTAzOzE0NTsyNTBt4paIG1szODsyOzg1OzExODsyMDVt4paTG1szODsyOzUxOzY5OzEyMG3ilpEbWzM4OzI7NTE7Njg7MTIwbeKWkSAgICAbWzM4OzI7MTE0OzEzNTsyNTBt4paQG1szODsyOzk1OzExMDsyMDVt4paTG1szODsyOzc1Ozg1OzE2MG3ilpIbWzM4OzI7MTE4OzEzMTsyNDlt4paMG1szODsyOzEyMDsxMzA7MjQ5beKWiBtbMzg7Mjs5OTsxMDU7MjA0beKWkxtbMzg7Mjs1OTs2MTsxMjBt4paRG1szODsyOzU5OzYwOzEyMG3ilpEgICAgICAgIBtbMzg7Mjs2Njs1NTsxMTlt4paRG1szODsyOzExMzs5MjsyMDRt4paTG1szODsyOzY3OzUzOzExOW3ilpEgICAbWzM4OzI7MTQ1OzEwNjsyNDht4paQG1szODsyOzk0OzY3OzE1OW3ilpIbWzM4OzI7OTU7NjY7MTU5beKWkhtbMzg7MjsxMjM7ODQ7MjAzbeKWkxtbMzg7Mjs5Nzs2NDsxNTlt4paSG1szODsyOzE1Mjs5OTsyNDht4paMG1szODsyOzE1NDs5ODsyNDht4paAG1szODsyOzE1NTs5NzsyNDht4paAG1szODsyOzEyODs3ODsyMDNt4paTG1szODsyOzEzMDs3NzsyMDNt4paTG1szODsyOzEzMTs3NjsyMDNt4paTG1szODsyOzEwMzs1OTsxNTht4paSG1szODsyOzc4OzQzOzExOW3ilpEbWzM4OzI7MTA1OzU3OzE1OG3ilpIbWzM4OzI7MTY1Ozg4OzI0N23iloQbWzM4OzI7MTY3Ozg2OzI0N23iloQbWzBt') (U 'G1szODsyOzA7MjQwOzI1NW3ilpAbWzM4OzI7MTsyMzk7MjU1beKWiBtbMzg7MjszOzIzNzsyNTVt4paAG1szODsyOzQ7MjM2OzI1NW3ilowgICAbWzM4OzI7MTA7MjMxOzI1NW3ilpAbWzM4OzI7MTE7MjI5OzI1NG3iloQbWzM4OzI7MTM7MjI4OzI1NG3ilogbWzM4OzI7MTQ7MjI3OzI1NG3iloggG1szODsyOzE3OzIyNDsyNTRt4paQG1szODsyOzE5OzIyMzsyNTRt4paAG1szODsyOzIwOzIyMjsyNTRt4paEG1szODsyOzIxOzIyMDsyNTRt4paMICAgG1szODsyOzI3OzIxNTsyNTRt4paIG1szODsyOzI4OzIxNDsyNTRt4paAG1szODsyOzI1OzE3NDsyMDht4paTG1szODsyOzMxOzIxMTsyNTRt4paAG1szODsyOzMzOzIxMDsyNTNt4paQG1szODsyOzM0OzIwODsyNTNt4paAG1szODsyOzM2OzIwNzsyNTNt4paAG1szODsyOzM3OzIwNjsyNTNt4paMICAgIBtbMzg7Mjs0NDsxOTk7MjUzbeKWiBtbMzg7MjszNzsxNjI7MjA3beKWkxtbMzg7MjsyMzs5NDsxMjFt4paRG1szODsyOzQ4OzE5NTsyNTNt4paMG1szODsyOzUwOzE5NDsyNTNt4paEG1szODsyOzI1OzkzOzEyMW3ilpEbWzM4OzI7MjU7OTI7MTIxbeKWkRtbMzg7Mjs1NDsxOTA7MjUybeKWjCAgIBtbMzg7Mjs2MDsxODU7MjUybeKWkBtbMzg7Mjs2MTsxODQ7MjUybeKWgBtbMzg7Mjs2MzsxODI7MjUybeKWiBtbMzg7Mjs2NDsxODE7MjUybeKWjBtbMzg7Mjs2NTsxODA7MjUybeKWkBtbMzg7Mjs2NzsxNzg7MjUybeKWgBtbMzg7Mjs2ODsxNzc7MjUybeKWhBtbMzg7Mjs3MDsxNzY7MjUybeKWjCAgIBtbMzg7Mjs3NTsxNzA7MjUxbeKWiBtbMzg7Mjs3NzsxNjk7MjUxbeKWgBtbMzg7Mjs2NDsxMzg7MjA2beKWkxtbMzg7Mjs4MDsxNjY7MjUxbeKWgCAgICAbWzM4OzI7NTY7MTAyOzE2MW3ilpIbWzM4OzI7ODg7MTU5OzI1MW3ilogbWzM4OzI7NTc7MTAxOzE2MG3ilpIgICAgICAgIBtbMzg7MjsxMDM7MTQ1OzI1MG3ilpAbWzM4OzI7MTA0OzE0NDsyNTBt4paAG1szODsyOzEwNTsxNDM7MjUwbeKWgBtbMzg7MjsxMDc7MTQxOzI1MG3ilowgICAbWzM4OzI7NTQ7NjU7MTIwbeKWkRtbMzg7Mjs3Mzs4NjsxNjBt4paSG1szODsyOzk1OzExMDsyMDVt4paTG1szODsyOzExNzsxMzI7MjQ5beKWiCAbWzM4OzI7MTIwOzEzMDsyNDlt4paQG1szODsyOzEyMTsxMjg7MjQ5beKWgBtbMzg7MjsxMjI7MTI3OzI0OW3iloAbWzM4OzI7MTI0OzEyNjsyNDlt4paMICAgIBtbMzg7MjsxMzE7MTE5OzI0OW3ilogbWzM4OzI7MTA5Ozk3OzIwNG3ilpMbWzM4OzI7NjQ7NTY7MTE5beKWkRtbMzg7MjsxMzU7MTE1OzI0OW3ilowbWzM4OzI7MTM3OzExNDsyNDht4paIG1szODsyOzEzODsxMTM7MjQ4beKWgBtbMzg7MjsxNDA7MTExOzI0OG3iloggICAbWzM4OzI7MTQ1OzEwNjsyNDht4paIG1szODsyOzcwOzUwOzExOW3ilpEbWzM4OzI7OTU7NjY7MTU5beKWkhtbMzg7MjsxMjM7ODQ7MjAzbeKWkxtbMzg7MjsxNTE7MTAxOzI0OG3ilogbWzM4OzI7MTUyOzk5OzI0OG3ilowgG1szODsyOzE1NTs5NzsyNDht4paEG1szODsyOzE1Nzs5NjsyNDht4paEG1szODsyOzE1ODs5NDsyNDdt4paEICAgG1szODsyOzE2NDs4OTsyNDdt4paAG1szODsyOzc5OzQyOzExOW3ilpEbWzM4OzI7ODA7NDE7MTE5beKWkRtbMzg7MjsxNjg7ODU7MjQ3beKWjBtbMG0=') (U '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') (U 'G1szODsyOzA7MjQwOzI1NW0gIBtbMzg7MjszOzIzNzsyNTVt4paAG1szODsyOzQ7MTk0OzIwOW3ilpMbWzM4OzI7NjsyMzU7MjU1beKWkBtbMzg7Mjs3OzIzMzsyNTVt4paAG1szODsyOzk7MjMyOzI1NW3iloAgG1szODsyOzExOzIyOTsyNTRt4paIG1szODsyOzEzOzIyODsyNTRt4paAG1szODsyOzE0OzIyNzsyNTRt4paIICAgIBtbMzg7MjsyMTsyMjA7MjU0beKWgBtbMzg7MjsyMzsyMTk7MjU0beKWgBtbMzg7MjsyNDsyMTg7MjU0beKWjBtbMzg7MjsyMTsxNzc7MjA4beKWkxtbMzg7MjsyNzsyMTU7MjU0beKWgCAgICAgG1szODsyOzM2OzIwNzsyNTNt4paAG1szODsyOzM3OzIwNjsyNTNt4paAG1szODsyOzE4Ozk4OzEyMm3ilpEbWzM4OzI7MzM7MTY3OzIwOG3ilpMbWzM4OzI7NDE7MjAyOzI1M23ilpAbWzM4OzI7NDM7MjAxOzI1M23iloAgICAgICAgICAbWzM4OzI7Mjc7OTA7MTIxbeKWkRtbMzg7MjsyODs4OTsxMjFt4paRG1szODsyOzYwOzE4NTsyNTJt4paAG1szODsyOzYxOzE4NDsyNTJt4paAICAgICAbWzM4OzI7NzA7MTc2OzI1Mm3iloAbWzM4OzI7NzE7MTc0OzI1Mm3iloAbWzM4OzI7NzM7MTczOzI1Mm3ilowbWzM4OzI7NjE7MTQxOzIwNm3ilpMbWzM4OzI7NzU7MTcwOzI1MW3iloAgICAgICAgICAgICAgICAgICAgIBtbMzg7MjsxMDU7MTQzOzI1MG3iloAbWzM4OzI7MTA3OzE0MTsyNTBt4paAG1szODsyOzUyOzY3OzEyMG3ilpEbWzM4OzI7OTA7MTE0OzIwNW3ilpMbWzM4OzI7MTExOzEzODsyNTBt4paQG1szODsyOzExMjsxMzY7MjUwbeKWgCAgICAgIBtbMzg7MjsxMjI7MTI3OzI0OW3iloAbWzM4OzI7MTI0OzEyNjsyNDlt4paAG1szODsyOzYwOzYwOzEyMG3ilpEbWzM4OzI7MTA0OzEwMTsyMDRt4paTG1szODsyOzEyODsxMjI7MjQ5beKWkBtbMzg7MjsxMzA7MTIwOzI0OW3iloAgICAgIBtbMzg7MjsxMzg7MTEzOzI0OG3iloAbWzM4OzI7MTQwOzExMTsyNDht4paIG1szODsyOzE0MTsxMTA7MjQ4beKWiBtbMzg7Mjs2ODs1MjsxMTlt4paRG1szODsyOzE0NDsxMDc7MjQ4beKWkBtbMzg7Mjs5Mzs2ODsxNTlt4paSG1szODsyOzE0NzsxMDU7MjQ4beKWgBtbMzg7MjsxNDg7MTAzOzI0OG3iloAgICAgIBtbMzg7MjsxNTc7OTY7MjQ4beKWgBtbMzg7MjsxNTg7OTQ7MjQ3beKWgBtbMzg7MjsxMzE7NzY7MjAzbeKWkxtbMzg7MjsxNjE7OTI7MjQ3beKWiBtbMzg7MjsxNjI7OTA7MjQ3beKWiBtbMzg7MjsxNjQ7ODk7MjQ3beKWgBtbMzg7MjsxNjU7ODg7MjQ3beKWhBtbMzg7MjsxNjc7ODY7MjQ3beKWgBtbMG0=') (U 'G1szODsyOzA7MjQwOzI1NW0gICAgIBtbMzg7Mjs3OzIzMzsyNTVt4paEIBtbMzg7MjsxMDsyMzE7MjU1beKWhBtbMzg7MjsxMTsyMjk7MjU0beKWiBtbMzg7MjsxMzsyMjg7MjU0beKWgBtbMzg7MjsxNDsyMjc7MjU0beKWiBtbMG0=') (U 'G1szODsyOzA7MjQwOzI1NW0gICAbWzM4OzI7NDsyMzY7MjU1beKWgBtbMzg7Mjs2OzIzNTsyNTVt4paAIBtbMzg7Mjs5OzIzMjsyNTVt4paAG1szODsyOzEwOzIzMTsyNTVt4paAG1szODsyOzExOzIyOTsyNTRt4paAG1szODsyOzEzOzIyODsyNTRt4paAG1swbQ==') ) $artSmall = @( (U 'G1szODsyOzA7MjQwOzI1NW0gICAgICAgICAgICAgICAgICAgICAgIBtbMzg7Mjs1MDsxOTQ7MjUzbeKWiBtbMzg7Mjs1MTsxOTM7MjUzbeKWhBtbMzg7Mjs1NDsxOTA7MjUybeKWgCAgICAgICAgICAgICAgIBtbMzg7Mjs4ODsxNTk7MjUxbeKWhBtbMzg7Mjs0Mzs3NTsxMjBt4paRG1szODsyOzkzOzE1NTsyNTFt4paIG1szODsyOzk0OzE1MzsyNTFt4paEG1szODsyOzk3OzE1MTsyNTBt4paEG1szODsyOzk4OzE0OTsyNTBt4paEG1swbQ==') (U 'G1szODsyOzA7MjQwOzI1NW0gG1szODsyOzM7MjM3OzI1NW3iloQbWzM4OzI7NDsyMzY7MjU1beKWhBtbMzg7Mjs3OzIzMzsyNTVt4paEG1szODsyOzk7MjMyOzI1NW3ilogbWzM4OzI7MTE7MjI5OzI1NG3ilogbWzM4OzI7MTM7MjI4OzI1NG3iloggIBtbMzg7MjsyMDsyMjI7MjU0beKWiBtbMzg7MjsxODsxODE7MjA4beKWkxtbMzg7MjsyNDsyMTg7MjU0beKWgBtbMzg7MjsyNjsyMTY7MjU0beKWiBtbMzg7MjsyODsyMTQ7MjU0beKWhCAgIBtbMzg7MjszNzsyMDY7MjUzbeKWhBtbMzg7MjszODsyMDU7MjUzbeKWiBtbMzg7Mjs0MTsyMDI7MjUzbeKWhBtbMzg7MjszNTsxNjQ7MjA3beKWkxtbMzg7Mjs0NjsxOTg7MjUzbeKWhCAbWzM4OzI7NTA7MTk0OzI1M23ilogbWzM4OzI7NTE7MTkzOzI1M23ilogbWzM4OzI7NTQ7MTkwOzI1Mm3ilogbWzM4OzI7NDY7MTU1OzIwN23ilpMbWzM4OzI7NTg7MTg2OzI1Mm3iloQbWzM4OzI7NjA7MTg1OzI1Mm3iloQgICAbWzM4OzI7Njg7MTc3OzI1Mm3ilogbWzM4OzI7MzQ7ODQ7MTIxbeKWkRtbMzg7Mjs3MzsxNzM7MjUybeKWgBtbMzg7Mjs3NTsxNzA7MjUxbeKWhBtbMzg7Mjs3NzsxNjk7MjUxbeKWhCAgICAbWzM4OzI7ODg7MTU5OzI1MW3ilogbWzM4OzI7OTA7MTU3OzI1MW3iloggIBtbMzg7Mjs5NzsxNTE7MjUwbeKWiBtbMzg7Mjs5ODsxNDk7MjUwbeKWiCAgG1szODsyOzEwNTsxNDM7MjUwbeKWhBtbMzg7MjsxMDc7MTQxOzI1MG3iloQbWzM4OzI7MTEwOzEzOTsyNTBt4paIG1szODsyOzExMTsxMzg7MjUwbeKWhBtbMzg7MjsxMTQ7MTM1OzI1MG3iloQbWzM4OzI7MTE1OzEzNDsyNTBt4paEICAbWzM4OzI7MTIyOzEyNzsyNDlt4paEG1szODsyOzEyNDsxMjY7MjQ5beKWhBtbMzg7MjsxMjc7MTIzOzI0OW3ilogbWzM4OzI7MTI4OzEyMjsyNDlt4paEG1szODsyOzEzMTsxMTk7MjQ5beKWhBtbMzg7MjsxMzI7MTE4OzI0OW3iloQgIBtbMzg7MjsxNDA7MTExOzI0OG3iloQbWzM4OzI7MTQxOzExMDsyNDht4paEICAbWzM4OzI7MTQ4OzEwMzsyNDht4paEG1szODsyOzE0OTsxMDI7MjQ4beKWhCAgG1szODsyOzE1Nzs5NjsyNDht4paEG1szODsyOzE1ODs5NDsyNDdt4paEG1szODsyOzE2MTs5MjsyNDdt4paEG1szODsyOzEzMzs3NDsyMDNt4paTG1szODsyOzE2NTs4ODsyNDdt4paEG1swbQ==') (U 'G1szODsyOzA7MjQwOzI1NW0gG1szODsyOzM7MjM3OzI1NW3ilogbWzM4OzI7NDsyMzY7MjU1beKWiCAgG1szODsyOzU7MTEwOzEyMm3ilpEbWzM4OzI7MTM7MjI4OzI1NG3iloggICAgG1szODsyOzI0OzIxODsyNTRt4paEG1szODsyOzI2OzIxNjsyNTRt4paIG1szODsyOzI4OzIxNDsyNTRt4paMG1szODsyOzMwOzIxMjsyNTRt4paEIBtbMzg7MjsyODsxNzE7MjA4beKWkxtbMzg7MjszNzsyMDY7MjUzbeKWgBtbMzg7MjszODsyMDU7MjUzbeKWgCAbWzM4OzI7NDM7MjAxOzI1M23iloAbWzM4OzI7Mzc7MTYyOzIwN23ilpMbWzM4OzI7NDc7MTk3OzI1M23ilogbWzM4OzI7NTA7MTk0OzI1M23ilogbWzM4OzI7NDI7MTU4OzIwN23ilpMgIBtbMzg7Mjs1ODsxODY7MjUybeKWgBtbMzg7Mjs2MDsxODU7MjUybeKWiBtbMzg7Mjs1MTsxNDk7MjA3beKWkyAgIBtbMzg7Mjs3MTsxNzQ7MjUybeKWhBtbMzg7Mjs3MzsxNzM7MjUybeKWhBtbMzg7Mjs2MjsxNDA7MjA2beKWkxtbMzg7Mjs3NzsxNjk7MjUxbeKWjCAgICAbWzM4OzI7ODg7MTU5OzI1MW3ilogbWzM4OzI7NDM7NzU7MTIwbeKWkSAgG1szODsyOzk3OzE1MTsyNTBt4paQG1szODsyOzgxOzEyMjsyMDVt4paTG1szODsyOzEwMTsxNDc7MjUwbeKWjCAbWzM4OzI7MTA1OzE0MzsyNTBt4paIG1szODsyOzEwNzsxNDE7MjUwbeKWgCAbWzM4OzI7MTExOzEzODsyNTBt4paAG1szODsyOzExNDsxMzU7MjUwbeKWiBtbMzg7Mjs5NTsxMTA7MjA1beKWkyAgG1szODsyOzEyMjsxMjc7MjQ5beKWiBtbMzg7MjsxMjQ7MTI2OzI0OW3iloAgIBtbMzg7MjsxMzE7MTE5OzI0OW3ilogbWzM4OzI7MTA5Ozk3OzIwNG3ilpMgG1szODsyOzg3OzczOzE1OW3ilpIbWzM4OzI7MTQwOzExMTsyNDht4paIG1szODsyOzE0MTsxMTA7MjQ4beKWgCAgG1szODsyOzcxOzUwOzExOW3ilpEbWzM4OzI7MTIzOzg0OzIwM23ilpMgIBtbMzg7MjsxNTc7OTY7MjQ4beKWiBtbMzg7MjsxNTg7OTQ7MjQ3beKWgCAbWzM4OzI7MTYyOzkwOzI0N23iloAbWzM4OzI7MTM1OzcyOzIwM23ilpMbWzM4OzI7ODA7NDE7MTE5beKWkRtbMG0=') (U 'G1szODsyOzA7MjQwOzI1NW3ilpAbWzM4OzI7MjsxOTU7MjA5beKWkxtbMzg7Mjs0OzIzNjsyNTVt4paMICAbWzM4OzI7MTE7MjI5OzI1NG3ilpAbWzM4OzI7MTE7MTg3OzIwOW3ilpMbWzM4OzI7MTY7MjI2OzI1NG3ilowgG1szODsyOzIwOzIyMjsyNTRt4paIG1szODsyOzIxOzIyMDsyNTRt4paAIBtbMzg7MjsyNjsyMTY7MjU0beKWgBtbMzg7MjsyMzsxNzU7MjA4beKWkxtbMzg7MjsxNDsxMDI7MTIybeKWkRtbMzg7MjszMzsyMTA7MjUzbeKWkBtbMzg7MjszNDsyMDg7MjUzbeKWiBtbMzg7MjszNzsyMDY7MjUzbeKWjCAgIBtbMzg7Mjs0NjsxOTg7MjUzbeKWgBtbMzg7MjsyMzs5NDsxMjFt4paRG1szODsyOzUwOzE5NDsyNTNt4paIG1szODsyOzQyOzE1ODsyMDdt4paTICAgG1szODsyOzYwOzE4NTsyNTJt4paQG1szODsyOzYzOzE4MjsyNTJt4paMG1szODsyOzY0OzE4MTsyNTJt4paMG1szODsyOzY3OzE3ODsyNTJt4paEG1szODsyOzY4OzE3NzsyNTJt4paIG1szODsyOzcxOzE3NDsyNTJt4paAIBtbMzg7Mjs3NTsxNzA7MjUxbeKWiBtbMzg7Mjs2MzsxMzk7MjA2beKWkxtbMzg7Mjs4MDsxNjY7MjUxbeKWjCAgIBtbMzg7Mjs3MjsxMzA7MjA2beKWkxtbMzg7Mjs5MDsxNTc7MjUxbeKWiBtbMzg7Mjs1OTs5OTsxNjBt4paSG1szODsyOzQ1Ozc0OzEyMG3ilpEgG1szODsyOzk4OzE0OTsyNTBt4paAIBtbMzg7MjsxMDM7MTQ1OzI1MG3ilpAbWzM4OzI7MTA1OzE0MzsyNTBt4paMG1szODsyOzEwNzsxNDE7MjUwbeKWjCAgG1szODsyOzExNDsxMzU7MjUwbeKWkBtbMzg7Mjs5NTsxMTA7MjA1beKWkxtbMzg7MjsxMTg7MTMxOzI0OW3ilowbWzM4OzI7MTIwOzEzMDsyNDlt4paQG1szODsyOzEyMjsxMjc7MjQ5beKWjBtbMzg7MjsxMjQ7MTI2OzI0OW3ilowgIBtbMzg7MjsxMzE7MTE5OzI0OW3ilpAbWzM4OzI7MTMyOzExODsyNDlt4paAG1szODsyOzEzNTsxMTU7MjQ5beKWjBtbMzg7MjsxMzc7MTE0OzI0OG3ilogbWzM4OzI7MTQwOzExMTsyNDht4paMG1szODsyOzE0MTsxMTA7MjQ4beKWjCAgG1szODsyOzE0ODsxMDM7MjQ4beKWkBtbMzg7MjsxMjM7ODQ7MjAzbeKWkxtbMzg7MjsxNTI7OTk7MjQ4beKWjBtbMzg7MjsxNTQ7OTg7MjQ4beKWhBtbMzg7MjsxMjg7Nzg7MjAzbeKWkxtbMzg7MjsxNTg7OTQ7MjQ3beKWhCAgG1szODsyOzE2NTs4ODsyNDdt4paAG1szODsyOzE2Nzs4NjsyNDdt4paAG1swbQ==') (U 'G1szODsyOzA7MjQwOzI1NW3ilpAbWzM4OzI7MjsxOTU7MjA5beKWkxtbMzg7Mjs0OzIzNjsyNTVt4paMICAbWzM4OzI7OTsxODg7MjA5beKWkxtbMzg7MjsxMzsyMjg7MjU0beKWgBtbMzg7MjsxNjsyMjY7MjU0beKWjBtbMzg7MjsxNzsyMjQ7MjU0beKWkBtbMzg7MjsyMDsyMjI7MjU0beKWjCAgIBtbMzg7MjsyODsyMTQ7MjU0beKWiBtbMzg7MjszMDsyMTI7MjU0beKWjBtbMzg7MjszMzsyMTA7MjUzbeKWiBtbMzg7MjsyODsxNzE7MjA4beKWkxtbMzg7MjsxODs5OTsxMjJt4paRICAgICAbWzM4OzI7NDE7MTU5OzIwN23ilpMbWzM4OzI7NTE7MTkzOzI1M23iloAbWzM4OzI7MjY7OTE7MTIxbeKWkSAgG1szODsyOzYwOzE4NTsyNTJt4paQG1szODsyOzYzOzE4MjsyNTJt4paIG1szODsyOzY0OzE4MTsyNTJt4paMG1szODsyOzY3OzE3ODsyNTJt4paIG1szODsyOzY4OzE3NzsyNTJt4paMICAbWzM4OzI7NzU7MTcwOzI1MW3ilpAbWzM4OzI7Nzc7MTY5OzI1MW3ilogbWzM4OzI7ODA7MTY2OzI1MW3iloAgICAbWzM4OzI7ODg7MTU5OzI1MW3iloAbWzM4OzI7NDM7NzU7MTIwbeKWkSAgICAgG1szODsyOzEwMzsxNDU7MjUwbeKWiBtbMzg7Mjs1MTs2OTsxMjBt4paRG1szODsyOzUxOzY4OzEyMG3ilpEgIBtbMzg7MjsxMTQ7MTM1OzI1MG3ilpAbWzM4OzI7OTU7MTEwOzIwNW3ilpMbWzM4OzI7MTE4OzEzMTsyNDlt4paMG1szODsyOzEyMDsxMzA7MjQ5beKWiBtbMzg7Mjs1OTs2MTsxMjBt4paRG1szODsyOzU5OzYwOzEyMG3ilpEgICAgIBtbMzg7Mjs2Njs1NTsxMTlt4paRG1szODsyOzY3OzUzOzExOW3ilpEgIBtbMzg7MjsxNDU7MTA2OzI0OG3ilpAbWzM4OzI7OTU7NjY7MTU5beKWkhtbMzg7MjsxMjM7ODQ7MjAzbeKWkxtbMzg7MjsxNTI7OTk7MjQ4beKWjBtbMzg7MjsxNTQ7OTg7MjQ4beKWgBtbMzg7MjsxMjg7Nzg7MjAzbeKWkxtbMzg7MjsxMzA7Nzc7MjAzbeKWkxtbMzg7MjsxMDM7NTk7MTU4beKWkhtbMzg7Mjs3ODs0MzsxMTlt4paRG1szODsyOzE2NTs4ODsyNDdt4paEG1szODsyOzE2Nzs4NjsyNDdt4paEG1swbQ==') (U 'G1szODsyOzA7MjQwOzI1NW3ilpAbWzM4OzI7MzsyMzc7MjU1beKWgBtbMzg7Mjs0OzIzNjsyNTVt4paMICAbWzM4OzI7MTE7MjI5OzI1NG3iloQbWzM4OzI7MTM7MjI4OzI1NG3iloggG1szODsyOzE3OzIyNDsyNTRt4paQG1szODsyOzIwOzIyMjsyNTRt4paEG1szODsyOzIxOzIyMDsyNTRt4paMICAbWzM4OzI7Mjg7MjE0OzI1NG3iloAbWzM4OzI7MjU7MTc0OzIwOG3ilpMbWzM4OzI7MzM7MjEwOzI1M23ilpAbWzM4OzI7MzQ7MjA4OzI1M23iloAbWzM4OzI7Mzc7MjA2OzI1M23ilowgICAbWzM4OzI7Mzc7MTYyOzIwN23ilpMbWzM4OzI7MjM7OTQ7MTIxbeKWkRtbMzg7Mjs1MDsxOTQ7MjUzbeKWhBtbMzg7MjsyNTs5MzsxMjFt4paRG1szODsyOzU0OzE5MDsyNTJt4paMICAbWzM4OzI7NjA7MTg1OzI1Mm3ilpAbWzM4OzI7NjM7MTgyOzI1Mm3ilogbWzM4OzI7NjQ7MTgxOzI1Mm3ilowbWzM4OzI7Njc7MTc4OzI1Mm3iloAbWzM4OzI7Njg7MTc3OzI1Mm3iloQgIBtbMzg7Mjs3NTsxNzA7MjUxbeKWiBtbMzg7Mjs3NzsxNjk7MjUxbeKWgBtbMzg7Mjs4MDsxNjY7MjUxbeKWgCAgIBtbMzg7Mjs4ODsxNTk7MjUxbeKWiBtbMzg7Mjs1NzsxMDE7MTYwbeKWkiAgICAgG1szODsyOzEwMzsxNDU7MjUwbeKWkBtbMzg7MjsxMDU7MTQzOzI1MG3iloAbWzM4OzI7MTA3OzE0MTsyNTBt4paMICAbWzM4OzI7NzM7ODY7MTYwbeKWkhtbMzg7Mjs5NTsxMTA7MjA1beKWkyAbWzM4OzI7MTIwOzEzMDsyNDlt4paQG1szODsyOzEyMjsxMjc7MjQ5beKWgBtbMzg7MjsxMjQ7MTI2OzI0OW3ilowgIBtbMzg7MjsxMzE7MTE5OzI0OW3ilogbWzM4OzI7MTA5Ozk3OzIwNG3ilpMbWzM4OzI7MTM1OzExNTsyNDlt4paMG1szODsyOzEzNzsxMTQ7MjQ4beKWiBtbMzg7MjsxNDA7MTExOzI0OG3iloggIBtbMzg7MjsxNDU7MTA2OzI0OG3ilogbWzM4OzI7OTU7NjY7MTU5beKWkhtbMzg7MjsxMjM7ODQ7MjAzbeKWkxtbMzg7MjsxNTI7OTk7MjQ4beKWjCAbWzM4OzI7MTU3Ozk2OzI0OG3iloQbWzM4OzI7MTU4Ozk0OzI0N23iloQgIBtbMzg7Mjs3OTs0MjsxMTlt4paRG1szODsyOzgwOzQxOzExOW3ilpEbWzBt') (U 'G1szODsyOzA7MjQwOzI1NW3iloAbWzM4OzI7MzsyMzc7MjU1beKWhBtbMzg7Mjs0OzIzNjsyNTVt4paIG1szODsyOzc7MjMzOzI1NW3iloQbWzM4OzI7NDsxMTE7MTIybeKWkRtbMzg7MjsxMTsyMjk7MjU0beKWiBtbMzg7MjsxMzsyMjg7MjU0beKWiCAgG1szODsyOzEwOzEwNjsxMjJt4paR4paRG1szODsyOzI0OzIxODsyNTRt4paEG1szODsyOzI2OzIxNjsyNTRt4paIG1szODsyOzE0OzEwMzsxMjJt4paRG1szODsyOzMwOzIxMjsyNTRt4paAIBtbMzg7MjszNDsyMDg7MjUzbeKWiBtbMzg7MjsxODs5OTsxMjJt4paRG1szODsyOzM4OzIwNTsyNTNt4paEG1szODsyOzQxOzIwMjsyNTNt4paEG1szODsyOzQzOzIwMTsyNTNt4paIG1szODsyOzQ2OzE5ODsyNTNt4paIG1szODsyOzQ3OzE5NzsyNTNt4paAG1szODsyOzUwOzE5NDsyNTNt4paAG1szODsyOzUxOzE5MzsyNTNt4paEG1szODsyOzU0OzE5MDsyNTJt4paAICAbWzM4OzI7NjA7MTg1OzI1Mm3ilogbWzM4OzI7NTE7MTQ5OzIwN23ilpMgG1szODsyOzY3OzE3ODsyNTJt4paAG1szODsyOzMzOzg1OzEyMW3ilpEbWzM4OzI7NzE7MTc0OzI1Mm3iloQbWzM4OzI7NzM7MTczOzI1Mm3iloQbWzM4OzI7MzY7ODI7MTIxbeKWkRtbMzg7MjszNzs4MTsxMjFt4paRICAgIBtbMzg7Mjs4ODsxNTk7MjUxbeKWhBtbMzg7Mjs5MDsxNTc7MjUxbeKWiCAgICAgIBtbMzg7Mjs1MTs2OTsxMjBt4paRG1szODsyOzUxOzY4OzEyMG3ilpEbWzM4OzI7MTEwOzEzOTsyNTBt4paEG1szODsyOzExMTsxMzg7MjUwbeKWiBtbMzg7Mjs1NTs2NTsxMjBt4paRG1szODsyOzExNTsxMzQ7MjUwbeKWgCAgG1szODsyOzU5OzYxOzEyMG3ilpEbWzM4OzI7NTk7NjA7MTIwbeKWkRtbMzg7MjsxMjc7MTIzOzI0OW3iloQbWzM4OzI7MTI4OzEyMjsyNDlt4paEG1szODsyOzEzMTsxMTk7MjQ5beKWgBtbMzg7MjsxMzI7MTE4OzI0OW3iloggG1szODsyOzEzNzsxMTQ7MjQ4beKWkBtbMzg7Mjs2Nzs1MzsxMTlt4paRG1szODsyOzY4OzUzOzExOW3ilpEbWzM4OzI7MTQ0OzEwNzsyNDht4paIG1szODsyOzE0NTsxMDY7MjQ4beKWiBtbMzg7Mjs3MTs1MDsxMTlt4paRG1szODsyOzE0OTsxMDI7MjQ4beKWiCAbWzM4OzI7MTU0Ozk4OzI0OG3iloAbWzM4OzI7NzU7NDY7MTE5beKWkRtbMzg7Mjs3Njs0NTsxMTlt4paRG1szODsyOzE2MTs5MjsyNDdt4paEG1szODsyOzE2Mjs5MDsyNDdt4paEG1szODsyOzc5OzQyOzExOW3ilpEbWzM4OzI7MTY3Ozg2OzI0N23ilowbWzBt') (U 'G1szODsyOzA7MjQwOzI1NW0gG1szODsyOzM7MjM3OzI1NW3iloAbWzM4OzI7NDsxOTQ7MjA5beKWkxtbMzg7Mjs3OzIzMzsyNTVt4paAG1szODsyOzk7MjMyOzI1NW3iloAbWzM4OzI7MTE7MjI5OzI1NG3ilogbWzM4OzI7MTM7MjI4OzI1NG3iloAgICAbWzM4OzI7MjE7MjIwOzI1NG3iloAbWzM4OzI7MjQ7MjE4OzI1NG3ilowbWzM4OzI7MjE7MTc3OzIwOG3ilpMgICAgG1szODsyOzM3OzIwNjsyNTNt4paAG1szODsyOzE4Ozk4OzEyMm3ilpEbWzM4OzI7NDE7MjAyOzI1M23ilpAbWzM4OzI7NDM7MjAxOzI1M23iloAgICAgICAbWzM4OzI7Mjg7ODk7MTIxbeKWkRtbMzg7Mjs2MDsxODU7MjUybeKWgCAgICAbWzM4OzI7NzE7MTc0OzI1Mm3iloAbWzM4OzI7NzM7MTczOzI1Mm3ilowbWzM4OzI7NzU7MTcwOzI1MW3iloAgICAgICAgICAgICAgG1szODsyOzEwNTsxNDM7MjUwbeKWgBtbMzg7MjsxMDc7MTQxOzI1MG3iloAbWzM4OzI7OTA7MTE0OzIwNW3ilpMbWzM4OzI7MTExOzEzODsyNTBt4paQICAgIBtbMzg7MjsxMjI7MTI3OzI0OW3iloAbWzM4OzI7MTI0OzEyNjsyNDlt4paAG1szODsyOzEwNDsxMDE7MjA0beKWkxtbMzg7MjsxMjg7MTIyOzI0OW3ilpAgICAgG1szODsyOzE0MDsxMTE7MjQ4beKWiBtbMzg7MjsxNDE7MTEwOzI0OG3ilogbWzM4OzI7MTQ0OzEwNzsyNDht4paQG1szODsyOzkzOzY4OzE1OW3ilpIbWzM4OzI7MTQ4OzEwMzsyNDht4paAICAgG1szODsyOzE1Nzs5NjsyNDht4paAG1szODsyOzE1ODs5NDsyNDdt4paAG1szODsyOzE2MTs5MjsyNDdt4paIG1szODsyOzE2Mjs5MDsyNDdt4paIG1szODsyOzE2NTs4ODsyNDdt4paEG1szODsyOzE2Nzs4NjsyNDdt4paAG1swbQ==') (U 'G1szODsyOzA7MjQwOzI1NW0gICAbWzM4OzI7NzsyMzM7MjU1beKWhCAbWzM4OzI7MTE7MjI5OzI1NG3ilogbWzM4OzI7MTM7MjI4OzI1NG3iloAbWzBt') (U 'G1szODsyOzA7MjQwOzI1NW0gIBtbMzg7Mjs0OzIzNjsyNTVt4paAIBtbMzg7Mjs5OzIzMjsyNTVt4paAG1szODsyOzExOzIyOTsyNTRt4paAG1szODsyOzEzOzIyODsyNTRt4paAG1swbQ==') ) $canDraw = $vt -and $utf8 try { $null = [Console]::CursorTop } catch { $canDraw = $false } $wide = $false $ruleWidth = 64 try { $cols = $Host.UI.RawUI.WindowSize.Width if ($canDraw -and $cols -ge 120) { $wide = $true; $ruleWidth = 119 } elseif ($canDraw -and $cols -ge 80) { $wide = $true; $art = $artSmall } } catch { } $rule = [string]::new([char]0x2500, $ruleWidth) Write-Host '' Write-Host $rule -ForegroundColor DarkGray Write-Host ' Gacha Focus ' -ForegroundColor Yellow -NoNewline Write-Host (T 'historico de banners' 'pull history') -ForegroundColor DarkGray Write-Host $rule -ForegroundColor DarkGray Write-Host '' if ($wide) { foreach ($line in $art) { [Console]::Write("$line`n") } Write-Host '' Write-Host $rule -ForegroundColor DarkGray } Write-Host (' ' + (T 'Banners, eventos e codigos de 13 jogos gacha num lugar so.' 'Banners, events and codes of 13 gacha games in one place.')) Write-Host ' gachafocus.com.br' -ForegroundColor Cyan -NoNewline Write-Host ' - ' -ForegroundColor DarkGray -NoNewline Write-Host 'Discord: discord.gg/MsFWXSb63F' -ForegroundColor Cyan Write-Host $rule -ForegroundColor DarkGray Write-Host '' Write-Host (' ' + (T "O Gacha Focus esta importando o seu historico do $($g.Name)..." "Gacha Focus is importing your $($g.Name) history...")) -ForegroundColor Yellow Write-Host '' # A step: its work runs, then a spinner for at least two seconds, then a # check or a cross on the same line (characters every Windows console font has). $frames = @('|', '/', '-', '\') function Spin($text) { $until = (Get-Date).AddSeconds(2) $i = 0 while ((Get-Date) -lt $until) { if ($script:canDraw) { [Console]::Write("`r $($script:frames[$i % 4]) $text") } $i++ Start-Sleep -Milliseconds 100 } if ($script:canDraw) { [Console]::Write("`r" + (' ' * ($text.Length + 4)) + "`r") } } function Show-Step($text) { if ($script:canDraw) { [Console]::Write(" | $text") } } function Done($text) { Write-Host ' ' -NoNewline; Write-Host ([char]0x221A) -ForegroundColor Green -NoNewline; Write-Host " $text" } function Fail($step, $text) { if ($script:canDraw) { [Console]::Write("`r" + (' ' * ($step.Length + 4)) + "`r") } Write-Host ' ' -NoNewline; Write-Host ([char]0x00D7) -ForegroundColor Red -NoNewline; Write-Host " $step" Write-Host '' Write-Host " $text" -ForegroundColor Red Write-Host '' } # --- 1. where is the game -------------------------------------------------------- $looking = T "Procurando o $($g.Name)..." "Looking for $($g.Name)..." Show-Step $looking $low = Join-Path $env:USERPROFILE 'AppData\LocalLow' $dataDir = $null foreach ($log in $g.Logs) { $path = Join-Path $low $log if (-not (Test-Path -LiteralPath $path)) { continue } $text = Get-Content -LiteralPath $path -Raw -ErrorAction SilentlyContinue if ($text -match "([A-Za-z]:/[^\r\n]*?$($g.Data))") { $dataDir = $Matches[1]; break } } Spin $looking if (-not $dataDir) { Fail $looking (T "Nao achei o jogo. Abra o $($g.Name), entre em $($g.Screen[0]) e rode o comando de novo." "Couldn't find the game. Open $($g.Name), go to $($g.Screen[1]) and run the command again.") return } Done (T "Achei o $($g.Name)" "Found $($g.Name)") # --- 2. the newest web cache ------------------------------------------------------ $reading = T 'Lendo o cache do historico...' 'Reading the history cache...' Show-Step $reading $caches = Join-Path $dataDir 'webCaches' $cacheFile = $null if (Test-Path -LiteralPath $caches) { $newest = Get-ChildItem -LiteralPath $caches -Directory | Sort-Object LastWriteTime -Descending | Select-Object -First 1 if ($newest) { $cacheFile = Join-Path $newest.FullName 'Cache\Cache_Data\data_2' } } $links = @() if ($cacheFile -and (Test-Path -LiteralPath $cacheFile)) { $copy = Join-Path $env:TEMP ("gf_" + [Guid]::NewGuid().ToString('N')) Copy-Item -LiteralPath $cacheFile -Destination $copy $content = [IO.File]::ReadAllText($copy, [Text.Encoding]::UTF8) Remove-Item -LiteralPath $copy -Force # The cache keeps addresses glued together, split by "1/0/": cut there first, # then keep each piece that is a history link. $links = @($content -split '1/0/' | ForEach-Object { $m = [regex]::Match($_, 'https://[^\s"''<>\x00]+?authkey=[^\s"''<>\x00]+') if ($m.Success) { $m.Value } }) [array]::Reverse($links) } Spin $reading if ($links.Count -eq 0) { Fail $reading (T "Nao achei o historico. Abra $($g.Screen[0]) no jogo e rode o comando de novo." "No history found. Open $($g.Screen[1]) in the game and run the command again.") return } $unique = @($links | Select-Object -Unique) Done (T "Cache lido: $($unique.Count) link(s) de historico" "Cache read: $($unique.Count) history link(s)") # --- 3. the newest link that still works ----------------------------------------- $checking = T 'Conferindo o link com o jogo...' 'Checking the link with the game...' Show-Step $checking $link = $null $answer = $null foreach ($candidate in ($unique | Select-Object -First 12)) { $query = ($candidate -split '\?', 2)[1] if (-not $query) { continue } $query = ($query -split '#', 2)[0] $query = ($query -split '&' | Where-Object { $_ -notmatch '^(gacha_type|real_gacha_type|size|page|end_id|lang|game_biz)=' }) -join '&' $url = "$($g.Api)?$query&$($g.Type)&size=5&page=1&end_id=0&lang=en-us&game_biz=$($g.Biz)" try { $reply = Invoke-RestMethod -Uri $url -TimeoutSec 15 if ($reply.retcode -eq 0) { $link = $candidate; $answer = $reply; break } } catch { } Start-Sleep -Milliseconds 400 } Spin $checking if (-not $link) { Fail $checking (T "O link do cache expirou. Abra $($g.Screen[0]) no jogo de novo e rode o comando." "The cached link expired. Open $($g.Screen[1]) in the game again and run the command.") return } Done (T 'Link conferido com o jogo' 'Link checked with the game') # What the game answered: the account and its newest pull, for the summary. $first = $null if ($answer.data -and $answer.data.list) { $first = @($answer.data.list)[0] } $uid = if ($first) { "$($first.uid)" } else { '' } $region = "$($answer.data.region)" $server = switch -Regex ($region) { 'usa|_us$' { 'America' } 'euro|_eu$' { T 'Europa' 'Europe' } 'asia|_jp$|_sg$' { 'Asia' } 'cht|_tw$' { 'TW/HK/MO' } default { $region } } $rankWord = if ($first) { "$($first.rank_type)" + [char]0x2605 } else { '' } if ($first -and $game -eq 'zenless-zone-zero') { $rankWord = switch ("$($first.rank_type)") { '4' { 'S' } '3' { 'A' } default { 'B' } } } # --- 4. to the waiting page, or to the clipboard --------------------------------- $delivered = $false $copied = $false if ($code) { $sending = T 'Enviando para a pagina do Gacha Focus...' 'Sending to the Gacha Focus page...' Show-Step $sending $status = 0 try { $body = @{ code = $code; link = $link } | ConvertTo-Json -Compress $null = Invoke-RestMethod -Method Post -Uri "$base/api/ferramentas/historico/entrega" -ContentType 'application/json' -Body $body -TimeoutSec 20 $delivered = $true } catch { try { $status = [int]$_.Exception.Response.StatusCode } catch { } } Spin $sending if ($delivered) { Done (T 'Entregue a pagina' 'Delivered to the page') } else { $why = switch ($status) { 404 { T 'O codigo deste comando venceu ou foi trocado: use o link abaixo.' "This command's code expired or was replaced: use the link below." } 400 { T 'A pagina recusou este link (e de outro jogo?).' 'The page refused this link (is it from another game?).' } default { T 'A pagina nao respondeu.' "The page didn't answer." } } Write-Host ' ! ' -ForegroundColor Yellow -NoNewline; Write-Host $why } } if (-not $delivered) { try { Set-Clipboard -Value $link; $copied = $true; Done (T 'Link copiado' 'Link copied') } catch { } } # --- what was collected, then the countdown ---------------------------------------- $bar = [string][char]0x2502 function Row($label, $value, $color = 'Gray') { Write-Host " $bar " -ForegroundColor DarkGray -NoNewline Write-Host ('{0,-12} ' -f $label) -ForegroundColor DarkGray -NoNewline Write-Host $value -ForegroundColor $color } Write-Host '' Write-Host (' ' + [char]0x250C + [char]0x2500 + ' ') -ForegroundColor DarkGray -NoNewline Write-Host (T 'Coleta' 'Collected') -ForegroundColor Yellow -NoNewline Write-Host (' ' + [string]::new([char]0x2500, 52)) -ForegroundColor DarkGray Row (T 'Jogo' 'Game') $g.Name if ($uid) { Row 'UID' ($(if ($server) { "$uid ($server)" } else { $uid })) } if ($first) { Row (T 'Ultima' 'Latest') "$($first.name) $([char]0x00B7) $rankWord $([char]0x00B7) $("$($first.time)".Substring(0, [Math]::Min(16, "$($first.time)".Length)))" } Row 'Link' (T 'valido por cerca de 24 h' 'valid for about 24 h') if ($delivered) { Row (T 'Entrega' 'Delivery') (T 'pagina do Gacha Focus' 'Gacha Focus page') 'Green' } elseif ($copied) { Row (T 'Entrega' 'Delivery') (T 'copiado: cole no passo 3 da pagina' 'copied: paste it in step 3 of the page') } else { Row (T 'Entrega' 'Delivery') (T 'copie o link abaixo e cole no passo 3' 'copy the link below into step 3') } Write-Host (' ' + [char]0x2514 + [string]::new([char]0x2500, 61)) -ForegroundColor DarkGray Write-Host '' if (-not $delivered -and -not $copied) { Write-Host $link; Write-Host '' } if ($delivered) { Write-Host (' ' + (T 'Pronto! Volte para a pagina: o historico ja esta aparecendo la.' 'Done! Go back to the page: your history is showing up there.')) -ForegroundColor Yellow; Write-Host '' } # Nothing more needs the link (a credential) in this PowerShell session. Remove-Variable -Name link, answer, candidate, reply, body, url, query -ErrorAction SilentlyContinue $ErrorActionPreference = $gfPreference if (-not $delivered -and -not $copied) { # The link is only on the screen: the window waits for Enter instead of # closing on its own. $null = Read-Host (T ' Copie o link acima e aperte Enter para fechar esta janela' ' Copy the link above, then press Enter to close this window') } else { for ($left = 15; $left -ge 1; $left--) { $note = T "Esta janela fecha em $left s (Ctrl+C mantem aberta)" "This window closes in $left s (Ctrl+C keeps it open)" if ($canDraw) { [Console]::Write("`r $note ") } elseif ($left -eq 15) { Write-Host " $note" } Start-Sleep -Seconds 1 } } if ($canDraw) { [Console]::Write("`r" + (' ' * 60) + "`r") } # The script runs inside this PowerShell window (iwr | iex): leaving the # session closes the window, as the page promises. exit