@ 2014-06-11T13:36:59Z <?php
namespace{
Symfony\Component\Debug\ExceptionHandler::register();
throw new Exception('foo msg');
}
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Debug{
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Debug\Exception\FlattenException;
use Symfony\Component\Debug\Exception\OutOfMemoryException;
if (!defined('ENT_SUBSTITUTE')) {
define('ENT_SUBSTITUTE', 8);
}
/**
* ExceptionHandler converts an exception to a Response object.
*
* It is mostly useful in debug mode to replace the default PHP/XDebug
* output with something prettier and more useful.
*
* As this class is mainly used during Kernel boot, where nothing is yet
* available, the Response content is always HTML.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class ExceptionHandler
{
private $debug;
private $charset;
private $handler;
private $caughtOutput = 0;
public function __construct($debug = true, $charset = 'UTF-8')
{
$this->debug = $debug;
$this->charset = $charset;
}
/**
* Registers the exception handler.
*
* @param bool $debug
*
* @return ExceptionHandler The registered exception handler
*/
public static function register($debug = true)
{
$handler = new static($debug);
set_exception_handler(array($handler, 'handle'));
return $handler;
}
/**
* Sets a user exception handler.
*
* @param callable $handler An handler that will be called on Exception
*
* @return callable|null The previous exception handler if any
*/
public function setHandler($handler)
{
if (isset($handler) && !is_callable($handler)) {
throw new \LogicException('The exception handler must be a valid PHP callable.');
}
$old = $this->handler;
$this->handler = $handler;
return $old;
}
/**
* {@inheritdoc}
*
* Sends a response for the given Exception.
*
* If you have the Symfony HttpFoundation component installed,
* this method will use it to create and send the response. If not,
* it will fallback to plain PHP functions.
*
* @see sendPhpResponse
* @see createResponse
*/
public function handle(\Exception $exception)
{
if ($exception instanceof OutOfMemoryException) {
$this->sendPhpResponse($exception);
return;
}
// To be as fail-safe as possible, the exception is first handled
// by our simple exception handler, then by the user exception handler.
// The latter takes precedence and any output from the former is cancelled,
// if and only if nothing bad happens in this handling path.
$caughtOutput = 0;
$this->caughtOutput = false;
ob_start(array($this, 'catchOutput'));
try {
if (class_exists('Symfony\Component\HttpFoundation\Response')) {
$response = $this->createResponse($exception);
$response->sendHeaders();
$response->sendContent();
} else {
$this->sendPhpResponse($exception);
}
} catch (\Exception $e) {
// Ignore this $e exception, we have to deal with $exception
}
if (false === $this->caughtOutput) {
ob_end_clean();
}
if (isset($this->caughtOutput[0])) {
ob_start(array($this, 'cleanOutput'));
echo $this->caughtOutput;
$caughtOutput = ob_get_length();
}
$this->caughtOutput = 0;
if (!empty($this->handler)) {
try {
call_user_func($this->handler, $exception);
if ($caughtOutput) {
$this->caughtOutput = $caughtOutput;
}
} catch (\Exception $e) {
if (!$caughtOutput) {
// All handlers failed. Let PHP handle that now.
throw $exception;
}
}
}
}
/**
* Sends the error associated with the given Exception as a plain PHP response.
*
* This method uses plain PHP functions like header() and echo to output
* the response.
*
* @param \Exception|FlattenException $exception An \Exception instance
*/
public function sendPhpResponse($exception)
{
echo $exception->getMessage();
return;
if (!$exception instanceof FlattenException) {
$exception = FlattenException::create($exception);
}
if (!headers_sent()) {
header(sprintf('HTTP/1.0 %s', $exception->getStatusCode()));
foreach ($exception->getHeaders() as $name => $value) {
header($name.': '.$value, false);
}
}
echo $this->decorate($this->getContent($exception), $this->getStylesheet($exception));
}
/**
* Creates the error Response associated with the given Exception.
*
* @param \Exception|FlattenException $exception An \Exception instance
*
* @return Response A Response instance
*/
public function createResponse($exception)
{
if (!$exception instanceof FlattenException) {
$exception = FlattenException::create($exception);
}
return new Response($this->decorate($this->getContent($exception), $this->getStylesheet($exception)), $exception->getStatusCode(), $exception->getHeaders());
}
/**
* Gets the HTML content associated with the given exception.
*
* @param FlattenException $exception A FlattenException instance
*
* @return string The content as a string
*/
public function getContent(FlattenException $exception)
{
switch ($exception->getStatusCode()) {
case 404:
$title = 'Sorry, the page you are looking for could not be found.';
break;
default:
$title = 'Whoops, looks like something went wrong.';
}
$content = '';
if ($this->debug) {
try {
$count = count($exception->getAllPrevious());
$total = $count + 1;
foreach ($exception->toArray() as $position => $e) {
$ind = $count - $position + 1;
$class = $this->abbrClass($e['class']);
$message = nl2br($e['message']);
$content .= sprintf(<<<EOF
<div class="block_exception clear_fix">
<h2><span>%d/%d</span> %s: %s</h2>
</div>
<div class="block">
<ol class="traces list_exception">
EOF
, $ind, $total, $class, $message);
foreach ($e['trace'] as $trace) {
$content .= ' <li>';
if ($trace['function']) {
$content .= sprintf('at %s%s%s(%s)', $this->abbrClass($trace['class']), $trace['type'], $trace['function'], $this->formatArgs($trace['args']));
}
if (isset($trace['file']) && isset($trace['line'])) {
if ($linkFormat = ini_get('xdebug.file_link_format')) {
$link = str_replace(array('%f', '%l'), array($trace['file'], $trace['line']), $linkFormat);
$content .= sprintf(' in <a href="%s" title="Go to source">%s line %s</a>', $link, $trace['file'], $trace['line']);
} else {
$content .= sprintf(' in %s line %s', $trace['file'], $trace['line']);
}
}
$content .= "</li>\n";
}
$content .= " </ol>\n</div>\n";
}
} catch (\Exception $e) {
// something nasty happened and we cannot throw an exception anymore
if ($this->debug) {
$title = sprintf('Exception thrown when handling an exception (%s: %s)', get_class($exception), $exception->getMessage());
} else {
$title = 'Whoops, looks like something went wrong.';
}
}
}
return <<<EOF
<div id="sf-resetcontent" class="sf-reset">
<h1>$title</h1>
$content
</div>
EOF;
}
/**
* Gets the stylesheet associated with the given exception.
*
* @param FlattenException $exception A FlattenException instance
*
* @return string The stylesheet as a string
*/
public function getStylesheet(FlattenException $exception)
{
return <<<EOF
.sf-reset { font: 11px Verdana, Arial, sans-serif; color: #333 }
.sf-reset .clear { clear:both; height:0; font-size:0; line-height:0; }
.sf-reset .clear_fix:after { display:block; height:0; clear:both; visibility:hidden; }
.sf-reset .clear_fix { display:inline-block; }
.sf-reset * html .clear_fix { height:1%; }
.sf-reset .clear_fix { display:block; }
.sf-reset, .sf-reset .block { margin: auto }
.sf-reset abbr { border-bottom: 1px dotted #000; cursor: help; }
.sf-reset p { font-size:14px; line-height:20px; color:#868686; padding-bottom:20px }
.sf-reset strong { font-weight:bold; }
.sf-reset a { color:#6c6159; }
.sf-reset a img { border:none; }
.sf-reset a:hover { text-decoration:underline; }
.sf-reset em { font-style:italic; }
.sf-reset h1, .sf-reset h2 { font: 20px Georgia, "Times New Roman", Times, serif }
.sf-reset h2 span { background-color: #fff; color: #333; padding: 6px; float: left; margin-right: 10px; }
.sf-reset .traces li { font-size:12px; padding: 2px 4px; list-style-type:decimal; margin-left:20px; }
.sf-reset .block { background-color:#FFFFFF; padding:10px 28px; margin-bottom:20px;
-webkit-border-bottom-right-radius: 16px;
-webkit-border-bottom-left-radius: 16px;
-moz-border-radius-bottomright: 16px;
-moz-border-radius-bottomleft: 16px;
border-bottom-right-radius: 16px;
border-bottom-left-radius: 16px;
border-bottom:1px solid #ccc;
border-right:1px solid #ccc;
border-left:1px solid #ccc;
}
.sf-reset .block_exception { background-color:#ddd; color: #333; padding:20px;
-webkit-border-top-left-radius: 16px;
-webkit-border-top-right-radius: 16px;
-moz-border-radius-topleft: 16px;
-moz-border-radius-topright: 16px;
border-top-left-radius: 16px;
border-top-right-radius: 16px;
border-top:1px solid #ccc;
border-right:1px solid #ccc;
border-left:1px solid #ccc;
overflow: hidden;
word-wrap: break-word;
}
.sf-reset li a { background:none; color:#868686; text-decoration:none; }
.sf-reset li a:hover { background:none; color:#313131; text-decoration:underline; }
.sf-reset ol { padding: 10px 0; }
.sf-reset h1 { background-color:#FFFFFF; padding: 15px 28px; margin-bottom: 20px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
border: 1px solid #ccc;
}
EOF;
}
private function decorate($content, $css)
{
return <<<EOF
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="robots" content="noindex,nofollow" />
<style>
/* Copyright (c) 2010, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html */
html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}
html { background: #eee; padding: 10px }
img { border: 0; }
#sf-resetcontent { width:970px; margin:0 auto; }
$css
</style>
</head>
<body>
$content
</body>
</html>
EOF;
}
private function abbrClass($class)
{
$parts = explode('\\', $class);
return sprintf("<abbr title=\"%s\">%s</abbr>", $class, array_pop($parts));
}
/**
* Formats an array as a string.
*
* @param array $args The argument array
*
* @return string
*/
private function formatArgs(array $args)
{
$result = array();
foreach ($args as $key => $item) {
if ('object' === $item[0]) {
$formattedValue = sprintf("<em>object</em>(%s)", $this->abbrClass($item[1]));
} elseif ('array' === $item[0]) {
$formattedValue = sprintf("<em>array</em>(%s)", is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]);
} elseif ('string' === $item[0]) {
$formattedValue = sprintf("'%s'", htmlspecialchars($item[1], ENT_QUOTES | ENT_SUBSTITUTE, $this->charset));
} elseif ('null' === $item[0]) {
$formattedValue = '<em>null</em>';
} elseif ('boolean' === $item[0]) {
$formattedValue = '<em>'.strtolower(var_export($item[1], true)).'</em>';
} elseif ('resource' === $item[0]) {
$formattedValue = '<em>resource</em>';
} else {
$formattedValue = str_replace("\n", '', var_export(htmlspecialchars((string) $item[1], ENT_QUOTES | ENT_SUBSTITUTE, $this->charset), true));
}
$result[] = is_int($key) ? $formattedValue : sprintf("'%s' => %s", $key, $formattedValue);
}
return implode(', ', $result);
}
/**
* @internal
*/
public function catchOutput($buffer)
{
$this->caughtOutput = $buffer;
return '';
}
/**
* @internal
*/
public function cleanOutput($buffer)
{
if ($this->caughtOutput) {
// use substr_replace() instead of substr() for mbstring overloading resistance
$cleanBuffer = substr_replace($buffer, '', 0, $this->caughtOutput);
if (isset($cleanBuffer[0])) {
$buffer = $cleanBuffer;
}
}
return $buffer;
}
}
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
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).
Version System time (s) User time (s) Memory (MiB) 8.3.6 0.007 0.007 16.71 8.3.5 0.003 0.009 18.27 8.3.4 0.010 0.007 18.95 8.3.3 0.013 0.003 19.34 8.3.2 0.000 0.008 20.50 8.3.1 0.004 0.004 23.48 8.3.0 0.006 0.003 19.51 8.2.18 0.008 0.008 16.50 8.2.17 0.009 0.006 22.96 8.2.16 0.008 0.012 20.69 8.2.15 0.011 0.007 24.18 8.2.14 0.003 0.006 24.66 8.2.13 0.004 0.004 26.16 8.2.12 0.008 0.000 22.31 8.2.11 0.014 0.003 20.73 8.2.10 0.007 0.004 18.16 8.2.9 0.003 0.005 19.30 8.2.8 0.005 0.003 17.97 8.2.7 0.003 0.006 17.75 8.2.6 0.003 0.006 18.15 8.2.5 0.006 0.003 18.07 8.2.4 0.003 0.006 19.92 8.2.3 0.004 0.004 18.32 8.2.2 0.000 0.008 17.86 8.2.1 0.004 0.004 18.38 8.2.0 0.006 0.003 17.93 8.1.28 0.011 0.004 25.92 8.1.27 0.005 0.003 23.79 8.1.26 0.003 0.006 26.35 8.1.25 0.005 0.003 28.09 8.1.24 0.010 0.000 22.26 8.1.23 0.011 0.000 19.04 8.1.22 0.003 0.005 17.78 8.1.21 0.004 0.004 18.77 8.1.20 0.005 0.005 17.48 8.1.19 0.005 0.003 17.35 8.1.18 0.006 0.003 18.10 8.1.17 0.003 0.006 18.77 8.1.16 0.004 0.004 22.08 8.1.15 0.003 0.007 18.75 8.1.14 0.000 0.008 17.51 8.1.13 0.000 0.007 17.90 8.1.12 0.004 0.004 17.47 8.1.11 0.004 0.004 17.48 8.1.10 0.005 0.002 17.65 8.1.9 0.000 0.007 17.61 8.1.8 0.004 0.004 17.67 8.1.7 0.007 0.000 17.52 8.1.6 0.006 0.003 17.75 8.1.5 0.003 0.006 17.66 8.1.4 0.005 0.003 17.61 8.1.3 0.006 0.003 17.69 8.1.2 0.004 0.004 17.86 8.1.1 0.003 0.005 17.71 8.1.0 0.004 0.004 17.62 8.0.30 0.004 0.004 18.77 8.0.29 0.006 0.003 16.88 8.0.28 0.000 0.007 18.67 8.0.27 0.004 0.004 17.33 8.0.26 0.007 0.000 17.45 8.0.25 0.000 0.007 17.15 8.0.24 0.005 0.002 17.05 8.0.23 0.003 0.003 17.14 8.0.22 0.004 0.004 17.09 8.0.21 0.003 0.003 17.10 8.0.20 0.003 0.003 17.22 8.0.19 0.000 0.009 17.00 8.0.18 0.004 0.004 17.15 8.0.17 0.003 0.005 17.14 8.0.16 0.005 0.002 17.02 8.0.15 0.004 0.004 17.09 8.0.14 0.000 0.008 16.95 8.0.13 0.000 0.006 13.50 8.0.12 0.003 0.005 16.96 8.0.11 0.003 0.005 17.02 8.0.10 0.000 0.008 17.16 8.0.9 0.005 0.002 17.15 8.0.8 0.010 0.010 17.05 8.0.7 0.005 0.003 17.08 8.0.6 0.000 0.008 17.10 8.0.5 0.000 0.007 17.08 8.0.3 0.013 0.006 17.46 8.0.2 0.010 0.009 17.40 8.0.1 0.000 0.008 17.08 8.0.0 0.009 0.010 17.06 7.4.33 0.003 0.003 15.15 7.4.32 0.007 0.000 16.71 7.4.30 0.006 0.000 16.70 7.4.29 0.003 0.004 16.58 7.4.28 0.006 0.003 16.77 7.4.27 0.000 0.007 16.57 7.4.26 0.004 0.004 16.65 7.4.25 0.005 0.003 16.72 7.4.24 0.000 0.007 16.63 7.4.23 0.003 0.003 16.57 7.4.22 0.017 0.010 16.59 7.4.21 0.005 0.011 16.80 7.4.20 0.004 0.004 16.59 7.4.19 0.004 0.004 16.73 7.4.16 0.010 0.010 16.66 7.4.15 0.009 0.009 17.40 7.4.14 0.006 0.014 17.86 7.4.13 0.009 0.009 16.64 7.4.12 0.014 0.006 16.73 7.4.11 0.009 0.009 16.71 7.4.10 0.007 0.011 16.77 7.4.9 0.016 0.006 16.80 7.4.8 0.007 0.011 19.39 7.4.7 0.014 0.004 16.80 7.4.6 0.007 0.011 16.82 7.4.5 0.003 0.006 16.63 7.4.4 0.016 0.006 16.78 7.4.3 0.006 0.009 16.57 7.4.0 0.011 0.007 15.20 7.3.33 0.005 0.002 13.58 7.3.32 0.007 0.000 13.59 7.3.31 0.000 0.008 16.57 7.3.30 0.000 0.008 16.46 7.3.29 0.009 0.006 16.55 7.3.28 0.011 0.008 16.58 7.3.27 0.009 0.009 17.40 7.3.26 0.009 0.009 16.78 7.3.25 0.013 0.005 16.71 7.3.24 0.006 0.012 16.82 7.3.23 0.012 0.006 16.80 7.3.21 0.008 0.008 16.68 7.3.20 0.009 0.009 19.39 7.3.19 0.009 0.012 16.66 7.3.18 0.006 0.011 16.45 7.3.17 0.003 0.017 16.70 7.3.16 0.006 0.011 16.55 7.3.12 0.004 0.015 15.02 7.3.1 0.010 0.004 16.70 7.3.0 0.011 0.005 16.42 7.2.33 0.015 0.009 17.01 7.2.32 0.009 0.009 16.80 7.2.31 0.017 0.003 16.86 7.2.30 0.011 0.007 16.92 7.2.29 0.007 0.011 16.98 7.2.13 0.008 0.009 16.79 7.2.12 0.006 0.010 16.79 7.2.11 0.013 0.007 16.76 7.2.10 0.011 0.007 16.96 7.2.9 0.013 0.002 16.87 7.2.8 0.015 0.007 16.87 7.2.7 0.018 0.008 16.90 7.2.6 0.018 0.008 16.83 7.2.5 0.022 0.009 16.84 7.2.4 0.031 0.008 17.05 7.2.3 0.033 0.007 16.63 7.2.2 0.014 0.004 16.82 7.2.1 0.037 0.005 16.78 7.2.0 0.027 0.009 16.93 7.1.25 0.010 0.008 15.74 7.1.20 0.007 0.007 15.51 7.1.10 0.006 0.006 17.96 7.1.7 0.004 0.007 16.95 7.1.6 0.003 0.023 19.46 7.1.5 0.007 0.020 16.63 7.1.0 0.003 0.073 22.45 7.0.20 0.000 0.009 16.88 7.0.14 0.000 0.077 21.97 7.0.10 0.003 0.083 20.17 7.0.9 0.007 0.077 20.14 7.0.8 0.020 0.067 20.01 7.0.7 0.017 0.070 20.03 7.0.6 0.010 0.070 20.12 7.0.5 0.007 0.070 20.49 7.0.4 0.000 0.087 20.04 7.0.3 0.010 0.080 20.15 7.0.2 0.013 0.077 19.99 7.0.1 0.007 0.080 20.19 7.0.0 0.013 0.077 20.10 5.6.28 0.003 0.077 21.21 5.6.25 0.017 0.077 20.72 5.6.24 0.003 0.083 20.78 5.6.23 0.007 0.083 20.78 5.6.22 0.007 0.047 20.82 5.6.21 0.010 0.077 20.65 5.6.20 0.013 0.073 21.18 5.6.19 0.007 0.080 21.11 5.6.18 0.010 0.037 21.11 5.6.17 0.007 0.077 21.09 5.6.16 0.007 0.077 21.12 5.6.15 0.003 0.067 21.19 5.6.14 0.017 0.070 21.22 5.6.13 0.017 0.073 21.19 5.6.12 0.003 0.060 21.16 5.6.11 0.007 0.083 21.09 5.6.10 0.010 0.077 21.25 5.6.9 0.010 0.067 21.01 5.6.8 0.010 0.077 20.58 5.6.7 0.013 0.073 20.47 5.6.6 0.017 0.057 20.48 5.6.5 0.013 0.070 20.49 5.6.4 0.003 0.057 20.44 5.6.3 0.007 0.053 20.54 5.6.2 0.003 0.083 20.52 5.6.1 0.007 0.077 20.50 5.6.0 0.007 0.083 20.61 5.5.38 0.007 0.047 20.45 5.5.37 0.013 0.070 20.46 5.5.36 0.007 0.087 20.52 5.5.35 0.003 0.090 20.50 5.5.34 0.003 0.040 20.95 5.5.33 0.000 0.043 20.89 5.5.32 0.007 0.080 20.85 5.5.31 0.003 0.060 20.98 5.5.30 0.017 0.070 20.82 5.5.29 0.010 0.073 20.89 5.5.28 0.003 0.083 21.02 5.5.27 0.010 0.083 20.97 5.5.26 0.010 0.080 21.02 5.5.25 0.007 0.083 20.78 5.5.24 0.007 0.077 20.25 5.5.23 0.010 0.077 20.35 5.5.22 0.003 0.083 20.29 5.5.21 0.007 0.080 20.33 5.5.20 0.010 0.080 20.38 5.5.19 0.000 0.083 20.32 5.5.18 0.000 0.057 20.34 5.5.16 0.013 0.063 20.20 5.5.15 0.007 0.080 20.16 5.5.14 0.003 0.087 20.08 5.5.13 0.007 0.053 20.24 5.5.12 0.010 0.073 20.27 5.5.11 0.007 0.080 20.32 5.5.10 0.007 0.067 20.19 5.5.9 0.017 0.067 20.19 5.5.8 0.010 0.073 20.15 5.5.7 0.003 0.083 20.10 5.5.6 0.007 0.077 20.18 5.5.5 0.010 0.070 20.02 5.5.4 0.003 0.057 20.14 5.5.3 0.000 0.083 20.02 5.5.2 0.007 0.080 20.08 5.5.1 0.007 0.077 20.18 5.5.0 0.003 0.080 20.15 5.4.45 0.007 0.050 19.55 5.4.44 0.010 0.083 19.37 5.4.43 0.010 0.080 19.41 5.4.42 0.007 0.083 19.55 5.4.41 0.013 0.050 19.26 5.4.40 0.010 0.070 18.89 5.4.39 0.003 0.080 19.20 5.4.38 0.010 0.073 18.91 5.4.37 0.020 0.060 18.98 5.4.36 0.010 0.070 19.12 5.4.35 0.013 0.070 19.23 5.4.34 0.007 0.080 18.89 5.4.32 0.013 0.077 19.05 5.4.31 0.013 0.073 18.93 5.4.30 0.007 0.073 19.04 5.4.29 0.010 0.073 19.16 5.4.28 0.013 0.070 19.13 5.4.27 0.010 0.073 19.06 5.4.26 0.013 0.067 19.13 5.4.25 0.000 0.047 19.22 5.4.24 0.007 0.080 19.21 5.4.23 0.010 0.050 19.09 5.4.22 0.017 0.037 19.09 5.4.21 0.013 0.073 19.13 5.4.20 0.003 0.080 18.91 5.4.19 0.010 0.070 18.89 5.4.18 0.007 0.083 18.91 5.4.17 0.013 0.043 19.13 5.4.16 0.010 0.080 19.11 5.4.15 0.003 0.070 19.07 5.4.14 0.010 0.070 16.43 5.4.13 0.007 0.077 16.27 5.4.12 0.000 0.053 16.50 5.4.11 0.017 0.043 16.60 5.4.10 0.003 0.077 16.54 5.4.9 0.003 0.077 16.41 5.4.8 0.013 0.067 16.52 5.4.7 0.003 0.073 16.56 5.4.6 0.007 0.077 16.43 5.4.5 0.007 0.067 16.47 5.4.4 0.007 0.077 16.32 5.4.3 0.013 0.040 16.42 5.4.2 0.007 0.073 16.54 5.4.1 0.013 0.077 16.42 5.4.0 0.010 0.070 15.93 5.3.29 0.007 0.063 14.79 5.3.28 0.010 0.077 14.65 5.3.27 0.007 0.077 14.73 5.3.26 0.007 0.077 14.69 5.3.25 0.010 0.073 14.77 5.3.24 0.010 0.043 14.82 5.3.23 0.000 0.080 14.75 5.3.22 0.007 0.077 14.66 5.3.21 0.007 0.077 14.73 5.3.20 0.010 0.063 14.74 5.3.19 0.000 0.063 14.61 5.3.18 0.007 0.067 14.64 5.3.17 0.003 0.080 14.70 5.3.16 0.007 0.043 14.70 5.3.15 0.007 0.067 14.73 5.3.14 0.010 0.070 14.59 5.3.13 0.007 0.077 14.72 5.3.12 0.017 0.063 14.63 5.3.11 0.013 0.073 14.80 5.3.10 0.007 0.077 14.24 5.3.9 0.010 0.060 14.25 5.3.8 0.007 0.077 14.15 5.3.7 0.000 0.077 14.24 5.3.6 0.003 0.080 14.17 5.3.5 0.007 0.070 14.04 5.3.4 0.010 0.073 13.97 5.3.3 0.003 0.077 13.94 5.3.2 0.000 0.077 13.72 5.3.1 0.013 0.060 13.74 5.3.0 0.010 0.043 13.77
preferences:dark mode live preview
37.05 ms | 400 KiB | 5 Q