3v4l.org

run code in 300+ PHP versions simultaneously
<?php class FirePHP { /** * Gets singleton instance of FirePHP * * @param boolean $AutoCreate * @return FirePHP */ public static function getInstance($AutoCreate=false) { if($AutoCreate===true && !self::$instance) { self::init(); } return self::$instance; } /** * Creates FirePHP object and stores it for singleton access * * @return FirePHP */ public static function init() { return self::$instance = new self(); } /** * Enable and disable logging to Firebug * * @param boolean $Enabled TRUE to enable, FALSE to disable * @return void */ public function setEnabled($Enabled) { $this->enabled = $Enabled; } /** * Check if logging is enabled * * @return boolean TRUE if enabled */ public function getEnabled() { return $this->enabled; } /** * Specify a filter to be used when encoding an object * * Filters are used to exclude object members. * * @param string $Class The class name of the object * @param array $Filter An array or members to exclude * @return void */ public function setObjectFilter($Class, $Filter) { $this->objectFilters[$Class] = $Filter; } /** * Register FirePHP as your error handler * * Will throw exceptions for each php error. */ public function registerErrorHandler() { //NOTE: The following errors will not be caught by this error handler: // E_ERROR, E_PARSE, E_CORE_ERROR, // E_CORE_WARNING, E_COMPILE_ERROR, // E_COMPILE_WARNING, E_STRICT set_error_handler(array($this,'errorHandler')); } /** * FirePHP's error handler * * Throws exception for each php error that will occur. * * @param int $errno * @param string $errstr * @param string $errfile * @param int $errline * @param array $errcontext */ public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) { // Don't throw exception if error reporting is switched off if (error_reporting() == 0) { return; } // Only throw exceptions for errors we are asking for if (error_reporting() & $errno) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } } /** * Register FirePHP as your exception handler */ public function registerExceptionHandler() { set_exception_handler(array($this,'exceptionHandler')); } /** * FirePHP's exception handler * * Logs all exceptions to your firebug console and then stops the script. * * @param Exception $Exception * @throws Exception */ function exceptionHandler($Exception) { $this->fb($Exception); } /** * Set custom processor url for FirePHP * * @param string $URL */ public function setProcessorUrl($URL) { $this->setHeader('X-FirePHP-ProcessorURL', $URL); } /** * Set custom renderer url for FirePHP * * @param string $URL */ public function setRendererUrl($URL) { $this->setHeader('X-FirePHP-RendererURL', $URL); } /** * Start a group for following messages * * @param string $Name * @return true * @throws Exception */ public function group($Name) { return $this->fb(null, $Name, FirePHP::GROUP_START); } /** * Ends a group you have started before * * @return true * @throws Exception */ public function groupEnd() { return $this->fb(null, null, FirePHP::GROUP_END); } /** * Log object with label to firebug console * * @see FirePHP::LOG * @param mixes $Object * @param string $Label * @return true * @throws Exception */ public function log($Object, $Label=null) { return $this->fb($Object, $Label, FirePHP::LOG); } /** * Log object with label to firebug console * * @see FirePHP::INFO * @param mixes $Object * @param string $Label * @return true * @throws Exception */ public function info($Object, $Label=null) { return $this->fb($Object, $Label, FirePHP::INFO); } /** * Log object with label to firebug console * * @see FirePHP::WARN * @param mixes $Object * @param string $Label * @return true * @throws Exception */ public function warn($Object, $Label=null) { return $this->fb($Object, $Label, FirePHP::WARN); } /** * Log object with label to firebug console * * @see FirePHP::ERROR * @param mixes $Object * @param string $Label * @return true * @throws Exception */ public function error($Object, $Label=null) { return $this->fb($Object, $Label, FirePHP::ERROR); } /** * Dumps key and variable to firebug server panel * * @see FirePHP::DUMP * @param string $Key * @param mixed $Variable * @return true * @throws Exception */ public function dump($Key, $Variable) { return $this->fb($Variable, $Key, FirePHP::DUMP); } /** * Log a trace in the firebug console * * @see FirePHP::TRACE * @param string $Label * @return true * @throws Exception */ public function trace($Label) { return $this->fb($Label, FirePHP::TRACE); } public function table($Label, $Table) { return $this->fb($Table, $Label, FirePHP::TABLE); } public function detectClientExtension() { /* Check if FirePHP is installed on client */ if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) || !version_compare($m[1][0],'0.0.6','>=')) { return false; } return true; } public function fb($Object) { if(!$this->enabled) { return false; } if (headers_sent($filename, $linenum)) { throw $this->newException('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.'); } $Type = null; $Label = null; if(func_num_args()==1) { } else if(func_num_args()==2) { switch(func_get_arg(1)) { case self::LOG: case self::INFO: case self::WARN: case self::ERROR: case self::DUMP: case self::TRACE: case self::EXCEPTION: case self::TABLE: case self::GROUP_START: case self::GROUP_END: $Type = func_get_arg(1); break; default: $Label = func_get_arg(1); break; } } else if(func_num_args()==3) { $Type = func_get_arg(2); $Label = func_get_arg(1); } else { throw $this->newException('Wrong number of arguments to fb() function!'); } if(!$this->detectClientExtension()) { return false; } $meta = array(); $skipFinalObjectEncode = false; if($Object instanceof Exception) { $meta['file'] = $this->_escapeTraceFile($Object->getFile()); $meta['line'] = $Object->getLine(); $trace = $Object->getTrace(); if($Object instanceof ErrorException && isset($trace[0]['function']) && $trace[0]['function']=='errorHandler' && isset($trace[0]['class']) && $trace[0]['class']=='FirePHP') { $severity = false; switch($Object->getSeverity()) { case E_WARNING: $severity = 'E_WARNING'; break; case E_NOTICE: $severity = 'E_NOTICE'; break; case E_USER_ERROR: $severity = 'E_USER_ERROR'; break; case E_USER_WARNING: $severity = 'E_USER_WARNING'; break; case E_USER_NOTICE: $severity = 'E_USER_NOTICE'; break; case E_STRICT: $severity = 'E_STRICT'; break; case E_RECOVERABLE_ERROR: $severity = 'E_RECOVERABLE_ERROR'; break; case E_DEPRECATED: $severity = 'E_DEPRECATED'; break; case E_USER_DEPRECATED: $severity = 'E_USER_DEPRECATED'; break; } $Object = array('Class'=>get_class($Object), 'Message'=>$severity.': '.$Object->getMessage(), 'File'=>$this->_escapeTraceFile($Object->getFile()), 'Line'=>$Object->getLine(), 'Type'=>'trigger', 'Trace'=>$this->_escapeTrace(array_splice($trace,2))); $skipFinalObjectEncode = true; } else { $Object = array('Class'=>get_class($Object), 'Message'=>$Object->getMessage(), 'File'=>$this->_escapeTraceFile($Object->getFile()), 'Line'=>$Object->getLine(), 'Type'=>'throw', 'Trace'=>$this->_escapeTrace($trace)); $skipFinalObjectEncode = true; } $Type = self::EXCEPTION; } else if($Type==self::TRACE) { $trace = debug_backtrace(); if(!$trace) return false; for( $i=0 ; $i<sizeof($trace) ; $i++ ) { if(isset($trace[$i]['class']) && isset($trace[$i]['file']) && ($trace[$i]['class']=='FirePHP' || $trace[$i]['class']=='FB') && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ } else if(isset($trace[$i]['class']) && isset($trace[$i+1]['file']) && $trace[$i]['class']=='FirePHP' && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { /* Skip fb() */ } else if($trace[$i]['function']=='fb' || $trace[$i]['function']=='trace' || $trace[$i]['function']=='send') { $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'', 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'', 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'', 'Message'=>$trace[$i]['args'][0], 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'', 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'', 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'', 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1))); $skipFinalObjectEncode = true; $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; break; } } } else if($Type==self::TABLE) { if(isset($Object[0]) && is_string($Object[0])) { $Object[1] = $this->encodeTable($Object[1]); } else { $Object = $this->encodeTable($Object); } $skipFinalObjectEncode = true; } else { if($Type===null) { $Type = self::LOG; } } if($this->options['includeLineNumbers']) { if(!isset($meta['file']) || !isset($meta['line'])) { $trace = debug_backtrace(); for( $i=0 ; $trace && $i<sizeof($trace) ; $i++ ) { if(isset($trace[$i]['class']) && isset($trace[$i]['file']) && ($trace[$i]['class']=='FirePHP' || $trace[$i]['class']=='FB') && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ } else if(isset($trace[$i]['class']) && isset($trace[$i+1]['file']) && $trace[$i]['class']=='FirePHP' && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { /* Skip fb() */ } else if(isset($trace[$i]['file']) && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') { /* Skip FB::fb() */ } else { $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; break; } } } } else { unset($meta['file']); unset($meta['line']); } $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2'); $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.self::VERSION); $structure_index = 1; if($Type==self::DUMP) { $structure_index = 2; $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1'); } else { $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'); } if($Type==self::DUMP) { $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}'; } else { $msg_meta = array('Type'=>$Type); if($Label!==null) { $msg_meta['Label'] = $Label; } if(isset($meta['file'])) { $msg_meta['File'] = $meta['file']; } if(isset($meta['line'])) { $msg_meta['Line'] = $meta['line']; } $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']'; } $parts = explode("\n",chunk_split($msg, 5000, "\n")); for( $i=0 ; $i<count($parts) ; $i++) { $part = $parts[$i]; if ($part) { if(count($parts)>2) { // Message needs to be split into multiple parts $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, (($i==0)?strlen($msg):'') . '|' . $part . '|' . (($i<count($parts)-2)?'\\':'')); } else { $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, strlen($part) . '|' . $part . '|'); } $this->messageIndex++; if ($this->messageIndex > 99999) { throw new Exception('Maximum number (99,999) of messages reached!'); } } } $this->setHeader('X-Wf-1-Index',$this->messageIndex-1); return true; } protected function _standardizePath($Path) { } protected function _escapeTrace($Trace) { if(!$Trace) return $Trace; for( $i=0 ; $i<sizeof($Trace) ; $i++ ) { if(isset($Trace[$i]['file'])) { $Trace[$i]['file'] = $this->_escapeTraceFile($Trace[$i]['file']); } if(isset($Trace[$i]['args'])) { $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']); } } return $Trace; } protected function _escapeTraceFile($File) { /* Check if we have a windows filepath */ if(strpos($File,'\\')) { /* First strip down to single \ */ $file = preg_replace('/\\\\+/','\\',$File); return $file; } return $File; } protected function setHeader($Name, $Value) { return header($Name.': '.$Value); } protected function getUserAgent() { if(!isset($_SERVER['HTTP_USER_AGENT'])) return false; return $_SERVER['HTTP_USER_AGENT']; } } function ciao() { $out = '<pre>'; $args = func_get_args(); if(!empty($args)) { // var_export() causes fatal errors on recursion... ob_start(); ini_set('xdebug.var_display_max_depth', 4); var_dump($args); $out .= ob_get_contents()."\n\n"; ob_end_clean(); } $out .= get_backtrace(1); die($out); } class A { function B() { while (ob_get_level() > 1) ob_end_flush(); // store possible trailing content $content = ob_get_clean(); // start an output buffer which cannot be flushed (3rd parameter is false) // callback function get all output and corrects Content-Length header ob_start(function($buffer) { ciao($buffer); }, 0, false); } } $a = new A; $a->B();

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.3.60.0150.00618.55
8.3.50.0150.00921.15
8.3.40.0070.01118.86
8.3.30.0040.01119.27
8.3.20.0050.00320.46
8.3.10.0080.00022.09
8.3.00.0030.00622.37
8.2.180.0120.00916.88
8.2.170.0040.01122.96
8.2.160.0110.00419.30
8.2.150.0060.00324.18
8.2.140.0080.00024.66
8.2.130.0090.00626.16
8.2.120.0050.00319.77
8.2.110.0050.00522.07
8.2.100.0090.00319.64
8.2.90.0000.00819.46
8.2.80.0030.00618.05
8.2.70.0070.00317.75
8.2.60.0060.00318.18
8.2.50.0040.00418.07
8.2.40.0000.00918.41
8.2.30.0030.00618.17
8.2.20.0030.00517.93
8.2.10.0000.00818.04
8.2.00.0030.00517.96
8.1.280.0140.00425.92
8.1.270.0060.00320.25
8.1.260.0000.00826.35
8.1.250.0000.00828.09
8.1.240.0030.00623.83
8.1.230.0080.00319.39
8.1.220.0030.00517.80
8.1.210.0030.00618.77
8.1.200.0030.00617.73
8.1.190.0080.00017.77
8.1.180.0040.00419.12
8.1.170.0040.00418.84
8.1.160.0040.00422.25
8.1.150.0040.00418.88
8.1.140.0000.00817.55
8.1.130.0040.00418.05
8.1.120.0050.00317.73
8.1.110.0000.00817.64
8.1.100.0080.00017.55
8.1.90.0040.00417.67
8.1.80.0000.00717.68
8.1.70.0040.00417.61
8.1.60.0030.00517.83
8.1.50.0040.00417.75
8.1.40.0080.00017.73
8.1.30.0000.00817.79
8.1.20.0040.00417.84
8.1.10.0050.00317.72
8.1.00.0000.00917.68
8.0.300.0040.00418.77
8.0.290.0050.00317.30
8.0.280.0040.00418.67
8.0.270.0000.00717.44
8.0.260.0030.00317.18
8.0.250.0030.00517.16
8.0.240.0040.00417.24
8.0.230.0000.00717.23
8.0.220.0000.00717.13
8.0.210.0000.00817.25
8.0.200.0020.00517.31
8.0.190.0000.00817.26
8.0.180.0030.00517.24
8.0.170.0000.00817.21
8.0.160.0030.00517.16
8.0.150.0080.00017.00
8.0.140.0000.00817.11
8.0.130.0030.00313.69
8.0.120.0080.00017.10
8.0.110.0000.00817.07
8.0.100.0050.00317.21
8.0.90.0000.00817.04
8.0.80.0120.00417.16
8.0.70.0040.00417.03
8.0.60.0040.00417.19
8.0.50.0000.00817.05
8.0.30.0130.00917.27
8.0.20.0110.00917.51
8.0.10.0000.00817.29
8.0.00.0090.01417.08
7.4.330.0020.00215.21
7.4.320.0000.00716.66
7.4.300.0030.00316.82
7.4.290.0060.00616.73
7.4.280.0000.00916.64
7.4.270.0040.00416.74
7.4.260.0040.00416.79
7.4.250.0050.00316.71
7.4.240.0020.00616.83
7.4.230.0030.00516.91
7.4.220.0130.01616.69
7.4.210.0090.00816.81
7.4.200.0040.00416.58
7.4.190.0040.00416.83
7.4.160.0180.00416.80
7.4.150.0090.00917.40
7.4.140.0090.01217.86
7.4.130.0110.00816.82
7.4.120.0080.01016.79
7.4.110.0120.00616.74
7.4.100.0030.01516.86
7.4.90.0140.00416.63
7.4.80.0090.01619.39
7.4.70.0060.01316.70
7.4.60.0100.01016.74
7.4.50.0030.00616.77
7.4.40.0090.00922.77
7.4.30.0070.01016.93
7.4.10.0040.01415.32
7.4.00.0060.01215.09
7.3.330.0030.00313.45
7.3.320.0030.00313.59
7.3.310.0030.00316.61
7.3.300.0040.00416.54
7.3.290.0000.01416.57
7.3.280.0070.01016.59
7.3.270.0140.00317.40
7.3.260.0110.00716.57
7.3.250.0080.01016.62
7.3.240.0030.01616.89
7.3.230.0120.00616.73
7.3.210.0080.00816.70
7.3.200.0090.00919.39
7.3.190.0070.01316.78
7.3.180.0030.01816.65
7.3.170.0120.00816.59
7.3.160.0090.00616.51
7.3.130.0090.00914.95
7.3.120.0040.01315.14
7.3.110.0080.01015.09
7.3.100.0070.01014.98
7.3.90.0070.00815.20
7.3.80.0060.01015.05
7.3.70.0030.01014.99
7.3.60.0070.00715.03
7.3.50.0080.00715.00
7.3.40.0050.01014.80
7.3.30.0070.00615.04
7.3.20.0030.00716.70
7.3.10.0050.00916.67
7.3.00.0040.00816.67
7.2.330.0110.00717.02
7.2.320.0110.01416.84
7.2.310.0060.01916.91
7.2.300.0030.01416.81
7.2.290.0140.00316.53
7.2.260.0100.00714.89
7.2.250.0040.01315.31
7.2.240.0090.01015.26
7.2.230.0020.01215.36
7.2.220.0030.01215.04
7.2.210.0070.00915.14
7.2.200.0060.00815.12
7.2.190.0040.01215.24
7.2.180.0020.01015.41
7.2.170.0030.01115.31
7.2.160.0040.01114.99
7.2.150.0070.00416.62
7.2.140.0070.01116.82
7.2.130.0130.00316.99
7.2.120.0070.01116.77
7.2.110.0040.00816.90
7.2.100.0080.00816.85
7.2.90.0100.00016.97
7.2.80.0030.00816.93
7.2.70.0080.00617.08
7.2.60.0070.01016.92
7.2.50.0120.00316.70
7.2.40.0070.00317.11
7.2.30.0000.01417.11
7.2.20.0030.00817.11
7.2.10.0040.01116.85
7.2.00.0080.00518.18
7.1.330.0040.00915.74
7.1.320.0050.01015.76
7.1.310.0060.00815.71
7.1.300.0040.01115.62
7.1.290.0040.00915.55
7.1.280.0060.00815.64
7.1.270.0050.00915.65
7.1.260.0040.00615.74
7.1.250.0060.00915.62
7.1.240.0040.00915.77
7.1.230.0070.01015.61
7.1.220.0060.01015.48
7.1.210.0070.00715.46
7.1.200.0030.01115.72
7.1.190.0110.00715.88
7.1.180.0000.01115.78
7.1.170.0040.01115.45
7.1.160.0040.01115.63
7.1.150.0030.01015.74
7.1.140.0000.01315.88
7.1.130.0070.01015.47
7.1.120.0070.00715.77
7.1.110.0030.01215.78
7.1.100.0050.00816.76
7.1.90.0060.00615.81
7.1.80.0100.00315.88
7.1.70.0080.00516.36
7.1.60.0050.01417.81
7.1.50.0070.01316.38
7.1.40.0000.01615.74
7.1.30.0090.00615.81
7.1.20.0000.01515.78
7.1.10.0070.00715.80
7.1.00.0030.02219.09
7.0.330.0030.01315.55
7.0.320.0040.01215.23
7.0.310.0070.00715.57
7.0.300.0030.00615.30
7.0.290.0060.00915.07
7.0.280.0030.01015.18
7.0.270.0100.00615.38
7.0.260.0060.00315.39
7.0.250.0060.00615.45
7.0.240.0050.00515.46
7.0.230.0030.01015.36
7.0.220.0060.00615.25
7.0.210.0070.00715.15
7.0.200.0070.00516.07
7.0.190.0000.01415.44
7.0.180.0000.01215.09
7.0.170.0040.00715.42
7.0.160.0080.00415.51
7.0.150.0080.00815.21
7.0.140.0000.04518.74
7.0.130.0090.00315.55
7.0.120.0030.00715.46
7.0.110.0040.01115.43
7.0.100.0070.04618.58
7.0.90.0030.04718.52
7.0.80.0000.03518.67
7.0.70.0060.02818.61
7.0.60.0080.03218.48
7.0.50.0050.03918.89
7.0.40.0100.03716.80
7.0.30.0060.04316.83
7.0.20.0100.02916.74
7.0.10.0050.04016.83
7.0.00.0100.03016.80
5.6.400.0100.00314.58
5.6.390.0050.00514.19
5.6.380.0000.01714.36
5.6.370.0110.00714.53
5.6.360.0000.01414.53
5.6.350.0100.00714.25
5.6.340.0030.01314.27
5.6.330.0030.00614.57
5.6.320.0040.01114.38
5.6.310.0030.00914.61
5.6.300.0070.00414.71
5.6.290.0070.01014.32
5.6.280.0040.04217.77
5.6.270.0000.01314.53
5.6.260.0030.01014.41
5.6.250.0030.04217.61
5.6.240.0040.02817.71
5.6.230.0070.04517.68
5.6.220.0050.04817.54
5.6.210.0070.03917.52
5.6.200.0100.04517.80
5.6.190.0050.03117.82
5.6.180.0140.03517.98
5.6.170.0060.04617.75
5.6.160.0120.03717.78
5.6.150.0050.02817.90
5.6.140.0080.04217.95
5.6.130.0040.03017.71
5.6.120.0070.04717.68
5.6.110.0070.02517.88
5.6.100.0120.03317.84
5.6.90.0030.04917.68
5.6.80.0050.04517.44
5.6.70.0110.03517.41
5.6.60.0100.04417.49
5.6.50.0100.04017.44
5.6.40.0070.04417.34
5.6.30.0060.04317.42
5.6.20.0070.04317.39
5.6.10.0100.03117.53
5.6.00.0050.04817.37
5.5.380.0050.04517.39
5.5.370.0110.03817.35
5.5.360.0070.04417.47
5.5.350.0050.04517.38
5.5.340.0060.04317.60
5.5.330.0060.03617.75
5.5.320.0080.03817.70
5.5.310.0110.04317.69
5.5.300.0130.03617.61
5.5.290.0020.02917.62
5.5.280.0100.04017.58
5.5.270.0060.02617.77
5.5.260.0040.04417.70
5.5.250.0080.04317.60
5.5.240.0030.03817.22
5.5.230.0060.04317.33
5.5.220.0120.03817.24
5.5.210.0050.04817.31
5.5.200.0050.04717.36
5.5.190.0050.04317.23
5.5.180.0030.03117.36
5.5.170.0030.01314.19
5.5.160.0070.03817.37
5.5.150.0040.03217.39
5.5.140.0100.03917.23
5.5.130.0060.04217.35
5.5.120.0090.03617.33
5.5.110.0080.04117.37
5.5.100.0090.04517.08
5.5.90.0110.04117.13
5.5.80.0080.04517.33
5.5.70.0120.04217.29
5.5.60.0090.04417.25
5.5.50.0070.04217.29
5.5.40.0030.04817.11
5.5.30.0100.04117.05
5.5.20.0080.02717.23
5.5.10.0090.02717.11
5.5.00.0030.04717.01
5.4.450.0030.03715.54
5.4.440.0070.04215.47
5.4.430.0050.04215.54
5.4.420.0070.02615.53
5.4.410.0100.02515.57
5.4.400.0100.03715.46
5.4.390.0050.02815.38
5.4.380.0080.04015.46
5.4.370.0030.04215.28
5.4.360.0020.04115.36
5.4.350.0080.03715.41
5.4.340.0070.03915.40
5.4.330.0080.00311.66
5.4.320.0030.03015.42
5.4.310.0030.04815.30
5.4.300.0030.03915.37
5.4.290.0070.02515.28
5.4.280.0030.02915.41
5.4.270.0070.02315.37
5.4.260.0100.03515.40
5.4.250.0080.04615.27
5.4.240.0150.03315.28
5.4.230.0050.04015.36
5.4.220.0020.04515.41
5.4.210.0030.02615.29
5.4.200.0110.03415.28
5.4.190.0090.03915.40
5.4.180.0130.03515.45
5.4.170.0070.04115.28
5.4.160.0070.03115.40
5.4.150.0090.02415.32
5.4.140.0100.03013.98
5.4.130.0060.02414.06
5.4.120.0100.02314.09
5.4.110.0030.04714.07
5.4.100.0050.03814.13
5.4.90.0080.02814.13
5.4.80.0070.03414.12
5.4.70.0070.03914.03
5.4.60.0060.04014.09
5.4.50.0060.04114.03
5.4.40.0020.04114.11
5.4.30.0040.04214.00
5.4.20.0060.01914.04
5.4.10.0060.03614.05
5.4.00.0030.04113.72
5.3.290.0000.08714.96
5.3.280.0070.05014.81
5.3.270.0070.04314.86
5.3.260.0130.06314.82
5.3.250.0070.07314.86
5.3.240.0100.07014.85
5.3.230.0070.06014.85
5.3.220.0070.03714.79
5.3.210.0100.07314.73
5.3.200.0070.07714.69
5.3.190.0100.07714.72
5.3.180.0070.07314.79
5.3.170.0130.06714.78
5.3.160.0000.05714.77
5.3.150.0070.07014.82
5.3.140.0030.05014.85
5.3.130.0100.04314.67
5.3.120.0100.07014.80
5.3.110.0030.08014.88
5.3.100.0030.07314.37
5.3.90.0100.07314.24
5.3.80.0070.05714.09
5.3.70.0030.04014.28
5.3.60.0000.05314.17
5.3.50.0030.04314.07
5.3.40.0070.07714.16
5.3.30.0030.05014.10
5.3.20.0030.05713.79
5.3.10.0100.04013.94
5.3.00.0030.04713.84

preferences:
49.27 ms | 401 KiB | 5 Q