@ 2015-04-26T23:42:06Z <?php
require_once dirname(__FILE__) . '/Common.php';
class Application extends Common {
const DEFAULT_TEMPLATE = 'Craigslist';
const IMAGE_WIDTH = 200;
protected $_formAction = '/Classifieds';
protected $_templateName = null;
protected $_images = array('jpeg' => 'jpeg', 'jpg' => 'jpg', 'gif' => 'gif', 'png' => 'png');
protected $_imageTpl = '<img width="%s" class="image" imgsrc="%s" />';
protected $_linkTpl = '<a target="%s" href="%s">%s</a>';
protected $_zendView = null;
protected $_moduleHelper = null;
/**
* The search text phrase.
* @var string
*/
protected $_searchText = '';
/**
* The indicator to search only the title field.
* @var boolean
*/
protected $_searchTitleOnly = false;
/**
* The indicator to match any words in search phrase.
* @var boolean
*/
protected $_searchAny = false;
/**
* The indicator to exactly match search phrase.
* @var boolean
*/
protected $_searchExact = false;
/**
* The indicator to return only items having media, images, video.
* @var boolean
*/
protected $_searchMediaOnly = false;
/**
* The indicator to return only items having video.
* @var boolean
*/
protected $_searchVideoOnly = false;
/**
* Constructor
* @param Zend_View $view (optional)
*/
public function __construct($view = null) {
$this->_zendView = $view;
if($view) {
try {
/* @var $moduleHelper Classifieds_View_Helper_Classifieds */
$moduleHelper = $view->classifieds() ;
} catch (Exception $e) {
$moduleHelper = null;
}
$this->_moduleHelper = $moduleHelper;
}
$this->_fetchRequest();
$layout = $this->getLayoutTemplate();
$path = $this->getLayoutTemplateFilePath();
$len = strlen($layout);
if(! $len || ! file_exists($path)) {
if($len) {
$msg = 'Template not found: ' . $layout;
$this->addMessage($msg);
}
$this->setLayoutTemplate($this->getDefaultLayoutTemplate());
}
}
/**
* Sorts list of items by sections.
* @param type $index
*/
public function getSection($index = 0) {
}
protected function _fetchRequest() {
$propertyDefs = array(
self::REQUEST_PARAM_ITEM_ID => array('setLayoutTemplate', $this->getLayoutTemplate()),
self::REQUEST_PARAM_SEARCH => array('setSearchText', ''),
self::REQUEST_PARAM_SEARCH_TITLE_ONLY => array('setSearchTitleOnly', 0),
self::REQUEST_PARAM_SEARCH_ANY => array('setSearchAny', 0),
self::REQUEST_PARAM_SEARCH_EXACT => array('setSearchExact', 0),
self::REQUEST_PARAM_SEARCH_MEDIA_ONLY => array('setSearchMediaOnly', 0),
self::REQUEST_PARAM_SEARCH_VIDEO_ONLY => array('setSearchVideoOnly', 0)
);
foreach($propertyDefs as $propName => $properties) {
list($method, $default) = $properties;
$reqValue = $this->_getRequestValue($propName, $default);
$this->$method($reqValue);
}
}
/**
* Returns the template name.
*
* @return string
*/
public function getLayoutTemplate() {
return $this->_templateName;
}
/**
* Sets the template name.
*
* @return Application
*/
public function setLayoutTemplate($templateName) {
$this->_templateName = $templateName;
return $this;
}
/**
* Returns the default template name.
*
* @return string
*/
public function getDefaultLayoutTemplate() {
$templates = $this->getLayoutTemplates();
$return = (is_array($templates) && count($templates)) ? reset($templates) : '';
return $return;
}
/**
* Returns layout parent path.
*
* @return string
*/
public function getLayoutPath() {
$path = $this->getDocumentRoot() . "/classifiedsTemplates";
return $path;
}
/**
* Returns list ov available templates.
*
* @return array
*/
public function getLayoutTemplates() {
$return = array(
self::DEFAULT_TEMPLATE => self::DEFAULT_TEMPLATE,
'Facebook' => 'Facebook'
);
return $return;
}
/**
* Returns the search text phrase.
*
* @return string
*
*/
public function getSearchText() {
return $this->_searchText ;
}
/**
* Sets the search text phrase.
*
* @param string $searchText
*
* @return Application
*/
public function setSearchText($searchText) {
$this->_searchText = $searchText ;
return $this ;
}
/**
* Returns the indicator to search only the title field.
*
* @return boolean
*
*/
public function getSearchTitleOnly() {
return $this->_searchTitleOnly ;
}
/**
* Sets the indicator to search only the title field.
*
* @param boolean $searchTitleOnly
*
* @return Application
*/
public function setSearchTitleOnly($searchTitleOnly) {
$this->_searchTitleOnly = $searchTitleOnly ;
return $this ;
}
/**
* Returns the indicator to match any words in search phrase.
*
* @return boolean
*
*/
public function getSearchAny() {
return $this->_searchAny ;
}
/**
* Sets the indicator to match any words in search phrase.
*
* @param boolean $searchAny
*
* @return Application
*/
public function setSearchAny($searchAny) {
$this->_searchAny = $searchAny ;
return $this ;
}
/**
* Returns the indicator to exactly match search phrase.
*
* @return boolean
*
*/
public function getSearchExact() {
return $this->_searchExact ;
}
/**
* Sets the indicator to exactly match search phrase.
*
* @param boolean $searchExact
*
* @return Application
*/
public function setSearchExact($searchExact) {
$this->_searchExact = $searchExact ;
return $this ;
}
/**
* Returns the indicator to return only items having media, images, video.
*
* @return boolean
*
*/
public function getSearchMediaOnly() {
return $this->_searchMediaOnly ;
}
/**
* Sets the indicator to return only items having media, images, video.
*
* @param boolean $searchMediaOnly
*
* @return Application
*/
public function setSearchMediaOnly($searchMediaOnly) {
$this->_searchMediaOnly = $searchMediaOnly ;
return $this ;
}
/**
* Returns the indicator to return only items having video.
*
* @return boolean
*
*/
public function getSearchVideoOnly() {
return $this->_searchVideoOnly ;
}
/**
* Sets the indicator to return only items having video.
*
* @param boolean $searchVideoOnly
*
* @return Application
*/
public function setSearchVideoOnly($searchVideoOnly) {
$this->_searchVideoOnly = $searchVideoOnly ;
return $this ;
}
public function fetchItems(array $options = array()) {
/* Option values
search Phrase for which to search.
exact Match search phrase exactly (case-insensitive) (default = match all words).
any Match any words in the search phrase (default = match all).
titleonly Search title only (default = search title, description and tags).
mediaonly Returns only records having 1 or more images.
*/
if($this->getSearchMediaOnly()) {
$options['mediaonly'] = true;
}
if($this->getSearchTitleOnly()) {
$options['titleonly'] = true;
}
$exact = false;
if($this->getSearchAny()) {
$options['any'] = true;
} elseif($this->getSearchExact()) {
$options['exact'] = $exact = true;
}
$search = $this->getSearchText();
if(strlen($search)) {
if(! $exact) {
$search = $this->_tidySearch($search);
}
$options['search'] = $search ;
}
if(! isset($options['sort'])) {
$options['sort'] = 'date';
}
$mapper = $this->getMapper();
$items = $mapper->fetch($options);
if(false === $items) {
$this->addMessage($mapper->getMessages()) ;
return false;
}
foreach($items as $key => $item) {
$mediaStats = $this->_setMediaStats($item);
if($this->getSearchVideoOnly()) {
if(! isset($mediaStats['video']) || ! count($mediaStats['video'])) {
unset($items[$key]);
}
}
}
return $items;
}
protected function _setMediaStats($item) {
$mediaStats = array();
$media = $item->getMedia();
$index = 0;
foreach((array)$media as $key => $url) {
$parts = $this->_parseUrl($url) ;
$url = urldecode($url);
$url = str_replace('"', '"', $url);
$contentType = $parts['type'];
switch($contentType) {
case 'image':
$content = sprintf($this->_imageTpl, self::IMAGE_WIDTH, $url);
break;
case 'video':
$break = 1;
// FALL THROUGH
default: // video, link, photo
$content = $contentType;
if(! isset($c[$contentType])) {
$c[$contentType] = 0;
}
else {
$content .= '(' . (++$c[$contentType] + 1). ')';
}
break;
}
$mediaStats[$contentType][] = $url;
$media[$key] = sprintf($this->_linkTpl, '_blank', $url, $content);
$index++;
}
$item->setMedia($media);
$item->setMediaStats($mediaStats);
return $mediaStats;
}
public function getMediaDisplay($item) {
$display = array();
$media = $item->getMediaStats();
if(isset($media['image']) && is_array($media['image'])) {
$display[] = 'pic (' . count($media['image']) . ')';
}
if(isset($media['video']) && is_array($media['video'])) {
$display[] = 'video (' . count($media['video']) . ')';
}
$return = implode(' ', $display) ;
return $return;
}
public function getTotalCount(array $options = array()) {
$mapper = $this->getMapper();
$recordCount = $mapper->getCount($options);
if(false === $recordCount) {
$this->addMessage($mapper->getMessages()) ;
return false;
}
return $recordCount;
}
protected function _parseUrl($url) {
$default = array(
'scheme' => '',
'host' => '',
'port' => '',
'user' => '',
'pass' => '',
'path' => '',
'query' => '',
'fragment' => '',
'extension' => '',
'type' => ''
);
$parts = parse_url($url);
if(! is_array($parts)) {
return $default;
}
$elements = array_merge($default, $parts) ;
if(strlen($elements['path'])) {
$elements['extension'] = strtolower(pathinfo($elements['path'], PATHINFO_EXTENSION));
if(isset($this->_images[$elements['extension']])) {
$elements['type'] = 'image';
}
}
if(! strlen($elements['type'])) {
$elements['type'] = 'link';
if(strlen($elements['host'])) {
$host = strtolower($elements['host']);
if(preg_match('/^www[0-9]*\.(.*)$/', $host, $matches)) {
$host = $matches[1];
}
switch($host) {
case 'vimeo.com':
case 'youtube.com':
case 'youtu.be':
case 'vevo.com':
case 'veoh.com':
case 'metacafe.com':
case 'break.com':
$elements['type'] = 'video';
break;
case 'flickr.com':
// https://www.flickr.com/explore/video/
$elements['type'] = (false !== strpos(strtolower($elements['path']), 'video')) ? 'video' : 'photo';
break;
}
}
}
return $elements;
}
protected function _tidySearch($text) {
require_once dirname(__FILE__) . '/SpellCheck.php';
$speller = new SpellCheck();
$return = $speller->tidy($text, ['replace' => true]);
return $return;
}
public function formatForHtml($script) {
if(! is_string($script) || ! strlen(trim($script))) {
return '';
}
$patterns = array(
'`((?:http|ftp|https):\/\/(?:[\w\-_]+(?:(?:\.[\w\-_]+)+))(?:[\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)`i'
=> '<a href="%s">link%s</a>',
'/(mailto[\\s]*:[\\s]*(?:[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}))/i'
=> ' <a href="%s">email</a>%s ',
'/([^:](?:[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}))/i'
=> ' <a href="mailto:%s">email</a>%s '
);
$replace = array();
$patternIndex = 0;
foreach($patterns as $pattern => $template) {
$matches = preg_split($pattern, $script, -1, PREG_SPLIT_DELIM_CAPTURE);
if(false === $matches) {
return $script;
}
$matchCount = count($matches);
if($matchCount > 1) {
// array_shift($matches);
for($index = 1; $index < $matchCount; $index += 2) {
if(0 == $patternIndex) {
$sequence = ($index > 1) ? ('-' . ($index - 1) / 2) : '' ;
}
$replace[] = sprintf($template, $matches[$index], $sequence);
$matches[$index] ='{{' . (count($replace) - 1) . '}}';
}
$script = implode('', $matches);
}
if(0 == $patternIndex) {
$sequence = '';
}
$patternIndex++;
}
if(count($replace)) {
$script = htmlentities($script);
for($index = 0; $index < count($replace); $index++) {
$script = str_replace('{{' . $index . '}}', $replace[$index], $script);
}
}
return $script;
}
public function getLayoutRelativePath() {
$path = "/classifiedsTemplates/". $this->getLayoutTemplate();
return $path;
}
public function getLayoutTemplatePath() {
$path = $this->getLayoutPath() . '/' . $this->getLayoutTemplate();
return $path;
}
public function getLayoutTemplateFilePath() {
$path = $this->getLayoutTemplatePath() . "/layoutTemplate.php";
return $path;
}
public function getDocumentRoot() {
// /home/procompu/public_html/classifiedsTemplates/Application.php
// /home/procompu/public_html/classifiedsTemplates
// /home/procompu/public_html
if(defined('DOCUMENT_ROOT')) {
$path = DOCUMENT_ROOT;
}
else {
$path = filter_input(INPUT_SERVER, 'DOCUMENT_ROOT');
}
return $path;
}
protected function _getRequestValue($paramName, $default = '') {
$value = isset($_POST[$paramName]) ? $_POST[$paramName] : null;
$return = (is_string($value) && strlen(trim($value))) ? $value : $default;
return $return;
}
public function getFormAction() {
return $this->_formAction;
}
public function setFormAction($action) {
$this->_formAction = $action;
return $this;
}
/**
*
* @return \DataMapper
*/
public function getMapper() {
if(! class_exists('DataMapper', false)) {
$file = dirname(__FILE__) . '/DataMapper.php';
require_once $file;
}
$mapper = new DataMapper();
return $mapper;
}
public function getMessagesHtml($class = 'errorlist') {
$messages = $this->getMessages();
if(! count($messages)) {
return '';
}
if(strlen($class)) {
$class = ' class ="' . $class . '"';
}
$return = "<ul{$class}><li>" . implode("</li>\n<li>", $messages) . "</li>\n</ul>";
return $return;
}
}
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.013 0.007 17.00 8.3.5 0.010 0.012 21.89 8.3.4 0.013 0.003 19.09 8.3.3 0.007 0.010 19.07 8.3.2 0.004 0.004 20.32 8.3.1 0.003 0.012 22.12 8.3.0 0.004 0.004 19.50 8.2.18 0.011 0.007 18.45 8.2.17 0.013 0.010 22.96 8.2.16 0.012 0.003 22.13 8.2.15 0.003 0.005 24.18 8.2.14 0.003 0.006 24.66 8.2.13 0.003 0.005 26.16 8.2.12 0.004 0.004 19.42 8.2.11 0.009 0.003 19.56 8.2.10 0.009 0.003 17.88 8.2.9 0.000 0.008 19.42 8.2.8 0.003 0.005 17.97 8.2.7 0.003 0.006 18.00 8.2.6 0.000 0.009 18.18 8.2.5 0.003 0.006 18.07 8.2.4 0.004 0.004 19.88 8.2.3 0.004 0.004 18.38 8.2.2 0.008 0.000 17.95 8.2.1 0.000 0.008 18.32 8.2.0 0.000 0.008 17.88 8.1.28 0.019 0.003 25.92 8.1.27 0.010 0.007 20.60 8.1.26 0.003 0.005 26.35 8.1.25 0.008 0.000 28.09 8.1.24 0.000 0.009 23.90 8.1.23 0.003 0.009 17.89 8.1.22 0.000 0.008 18.02 8.1.21 0.000 0.008 18.77 8.1.20 0.007 0.003 17.48 8.1.19 0.006 0.003 17.50 8.1.18 0.005 0.005 18.10 8.1.17 0.003 0.006 18.89 8.1.16 0.000 0.008 22.21 8.1.15 0.004 0.004 18.98 8.1.14 0.000 0.008 17.48 8.1.13 0.005 0.002 17.99 8.1.12 0.003 0.005 17.52 8.1.11 0.008 0.000 17.61 8.1.10 0.000 0.008 17.59 8.1.9 0.005 0.003 17.65 8.1.8 0.005 0.003 17.46 8.1.7 0.000 0.008 17.52 8.1.6 0.003 0.006 17.69 8.1.5 0.000 0.009 17.74 8.1.4 0.003 0.006 17.63 8.1.3 0.000 0.009 17.75 8.1.2 0.008 0.000 17.73 8.1.1 0.004 0.004 17.62 8.1.0 0.005 0.003 17.60 8.0.30 0.004 0.004 18.77 8.0.29 0.003 0.006 17.13 8.0.28 0.000 0.007 18.57 8.0.27 0.007 0.000 17.53 8.0.26 0.000 0.007 17.58 8.0.25 0.000 0.007 17.33 8.0.24 0.005 0.002 17.21 8.0.23 0.005 0.003 17.33 8.0.22 0.007 0.000 17.23 8.0.21 0.000 0.008 17.12 8.0.20 0.004 0.004 17.14 8.0.19 0.003 0.006 17.26 8.0.18 0.003 0.006 17.21 8.0.17 0.004 0.004 17.32 8.0.16 0.005 0.003 17.27 8.0.15 0.004 0.004 17.10 8.0.14 0.004 0.004 17.18 8.0.13 0.007 0.000 13.60 8.0.12 0.009 0.002 15.31 8.0.11 0.004 0.005 15.37 8.0.10 0.005 0.005 15.34 8.0.9 0.006 0.004 15.41 8.0.8 0.006 0.011 15.40 8.0.7 0.006 0.003 15.30 8.0.6 0.004 0.003 15.43 8.0.5 0.006 0.002 15.34 8.0.3 0.007 0.006 16.04 8.0.2 0.010 0.006 16.13 8.0.1 0.004 0.004 15.39 8.0.0 0.003 0.013 15.86 7.4.33 0.005 0.000 15.10 7.4.32 0.005 0.003 16.71 7.4.30 0.004 0.004 16.57 7.4.29 0.004 0.004 16.82 7.4.28 0.004 0.004 16.79 7.4.27 0.003 0.003 16.66 7.4.26 0.000 0.007 16.69 7.4.25 0.007 0.001 15.07 7.4.24 0.003 0.006 15.70 7.4.23 0.004 0.003 15.18 7.4.22 0.006 0.008 15.08 7.4.21 0.006 0.006 15.15 7.4.20 0.000 0.008 15.20 7.4.19 0.000 0.008 13.49 7.4.18 0.000 0.006 13.54 7.4.16 0.004 0.007 15.20 7.4.15 0.005 0.008 15.45 7.4.14 0.010 0.010 16.39 7.4.13 0.012 0.005 15.65 7.4.12 0.008 0.007 15.63 7.4.11 0.003 0.010 15.03 7.4.10 0.009 0.006 15.05 7.4.9 0.005 0.008 15.00 7.4.8 0.007 0.007 16.37 7.4.7 0.008 0.005 15.04 7.4.6 0.008 0.005 15.01 7.4.5 0.008 0.001 15.06 7.4.4 0.007 0.010 14.90 7.4.3 0.010 0.007 14.96 7.4.2 0.005 0.005 13.28 7.4.1 0.006 0.006 14.18 7.4.0 0.009 0.008 14.52 7.3.33 0.006 0.000 13.63 7.3.32 0.008 0.008 13.52 7.3.31 0.006 0.004 15.06 7.3.30 0.008 0.001 15.07 7.3.29 0.006 0.007 15.73 7.3.28 0.010 0.010 15.76 7.3.27 0.008 0.005 15.43 7.3.26 0.011 0.006 15.04 7.3.25 0.010 0.009 15.66 7.3.24 0.010 0.007 15.04 7.3.23 0.014 0.002 15.12 7.3.22 0.010 0.003 13.45 7.3.21 0.007 0.008 15.00 7.3.20 0.012 0.004 16.32 7.3.19 0.011 0.007 15.04 7.3.18 0.010 0.004 14.91 7.3.17 0.010 0.008 15.00 7.3.16 0.010 0.003 15.06 7.3.15 0.000 0.010 13.46 7.3.14 0.010 0.000 13.41 7.3.13 0.008 0.005 14.18 7.3.12 0.011 0.003 14.22 7.3.11 0.003 0.008 14.07 7.3.10 0.006 0.006 14.28 7.3.9 0.005 0.003 14.47 7.3.8 0.005 0.007 14.25 7.3.7 0.004 0.007 14.27 7.3.6 0.003 0.007 14.22 7.3.5 0.005 0.005 14.29 7.3.4 0.006 0.004 14.24 7.3.3 0.002 0.008 14.29 7.3.2 0.004 0.006 15.92 7.3.1 0.003 0.006 15.89 7.3.0 0.008 0.003 15.95 7.2.34 0.009 0.003 13.37 7.2.33 0.007 0.011 15.07 7.2.32 0.006 0.009 15.06 7.2.31 0.010 0.005 14.99 7.2.30 0.007 0.008 14.99 7.2.29 0.008 0.009 15.04 7.2.28 0.009 0.004 13.45 7.2.27 0.010 0.003 13.24 7.2.26 0.008 0.009 14.27 7.2.25 0.007 0.007 14.34 7.2.24 0.006 0.008 14.29 7.2.23 0.005 0.008 14.03 7.2.22 0.005 0.006 14.32 7.2.21 0.008 0.005 14.27 7.2.20 0.009 0.007 14.24 7.2.19 0.010 0.004 14.23 7.2.18 0.006 0.008 14.08 7.2.17 0.004 0.009 14.24 7.2.16 0.007 0.007 14.25 7.2.15 0.007 0.007 15.93 7.2.14 0.010 0.004 15.88 7.2.13 0.007 0.007 16.15 7.2.12 0.008 0.007 15.89 7.2.11 0.007 0.008 16.16 7.2.10 0.008 0.007 16.15 7.2.9 0.007 0.008 16.03 7.2.8 0.006 0.009 16.28 7.2.7 0.005 0.010 16.19 7.2.6 0.007 0.007 16.48 7.2.5 0.007 0.008 16.29 7.2.4 0.009 0.005 16.35 7.2.3 0.009 0.007 16.25 7.2.2 0.008 0.008 16.24 7.2.1 0.004 0.009 16.17 7.2.0 0.006 0.009 17.00 7.1.33 0.007 0.007 15.01 7.1.32 0.006 0.006 14.85 7.1.31 0.008 0.004 14.94 7.1.30 0.006 0.005 14.96 7.1.29 0.008 0.003 14.91 7.1.28 0.004 0.009 14.96 7.1.27 0.006 0.006 14.81 7.1.26 0.011 0.003 15.06 7.1.25 0.006 0.005 14.91 7.1.24 0.002 0.009 14.93 7.1.23 0.005 0.008 15.18 7.1.22 0.006 0.006 15.13 7.1.21 0.005 0.009 15.19 7.1.20 0.008 0.007 15.30 7.1.19 0.005 0.008 15.26 7.1.18 0.008 0.003 15.12 7.1.17 0.008 0.005 15.31 7.1.16 0.008 0.006 15.26 7.1.15 0.006 0.007 14.99 7.1.14 0.008 0.005 15.34 7.1.13 0.004 0.010 15.25 7.1.12 0.006 0.007 15.17 7.1.11 0.009 0.005 15.28 7.1.10 0.007 0.007 15.85 7.1.9 0.009 0.005 15.07 7.1.8 0.009 0.005 15.16 7.1.7 0.006 0.008 15.45 7.1.6 0.008 0.009 16.32 7.1.5 0.008 0.009 15.66 7.1.4 0.005 0.009 15.26 7.1.3 0.010 0.003 15.25 7.1.2 0.006 0.008 15.23 7.1.1 0.005 0.008 15.24 7.1.0 0.005 0.025 16.90 7.0.33 0.008 0.004 14.73 7.0.32 0.006 0.007 14.77 7.0.31 0.004 0.009 14.99 7.0.30 0.005 0.008 14.91 7.0.29 0.006 0.005 14.91 7.0.28 0.005 0.010 14.97 7.0.27 0.005 0.009 14.95 7.0.26 0.008 0.004 14.76 7.0.25 0.008 0.006 14.95 7.0.24 0.007 0.006 15.05 7.0.23 0.006 0.006 14.85 7.0.22 0.008 0.005 14.88 7.0.21 0.009 0.006 14.91 7.0.20 0.029 0.008 14.98 7.0.19 0.006 0.007 14.83 7.0.18 0.005 0.008 14.92 7.0.17 0.007 0.006 14.96 7.0.16 0.005 0.007 14.99 7.0.15 0.006 0.005 14.88 7.0.14 0.005 0.024 16.71 7.0.13 0.008 0.005 15.00 7.0.12 0.003 0.007 15.03 7.0.11 0.006 0.006 14.94 7.0.10 0.006 0.020 16.19 7.0.9 0.008 0.026 16.28 7.0.8 0.007 0.022 16.13 7.0.7 0.008 0.022 16.25 7.0.6 0.010 0.019 16.26 7.0.5 0.006 0.027 16.29 7.0.4 0.005 0.027 15.21 7.0.3 0.008 0.024 15.20 7.0.2 0.005 0.025 15.23 7.0.1 0.008 0.016 15.25 7.0.0 0.007 0.016 15.23 5.6.40 0.008 0.005 13.59 5.6.39 0.007 0.005 13.37 5.6.38 0.004 0.009 13.76 5.6.37 0.010 0.005 13.96 5.6.36 0.009 0.004 13.72 5.6.35 0.013 0.002 13.59 5.6.34 0.005 0.010 13.69 5.6.33 0.010 0.006 13.62 5.6.32 0.010 0.006 13.68 5.6.31 0.006 0.006 13.87 5.6.30 0.008 0.006 13.69 5.6.29 0.008 0.007 13.77 5.6.28 0.005 0.024 15.59 5.6.27 0.005 0.007 13.72 5.6.26 0.005 0.010 13.81 5.6.25 0.005 0.027 15.48 5.6.24 0.005 0.025 15.55 5.6.23 0.005 0.026 15.45 5.6.22 0.010 0.022 15.44 5.6.21 0.006 0.016 15.54 5.6.20 0.009 0.017 15.59 5.6.19 0.008 0.025 15.52 5.6.18 0.006 0.022 15.65 5.6.17 0.005 0.024 15.56 5.6.16 0.007 0.021 15.72 5.6.15 0.009 0.020 15.55 5.6.14 0.007 0.019 15.58 5.6.13 0.004 0.020 15.57 5.6.12 0.005 0.022 15.51 5.6.11 0.007 0.025 15.62 5.6.10 0.008 0.018 15.61 5.6.9 0.007 0.022 15.58 5.6.8 0.004 0.020 15.26 5.6.7 0.009 0.017 15.45 5.6.6 0.007 0.020 15.39 5.6.5 0.008 0.017 15.37 5.6.4 0.010 0.014 15.29 5.6.3 0.005 0.022 15.33 5.6.2 0.004 0.019 15.41 5.6.1 0.006 0.019 15.40 5.6.0 0.008 0.015 15.37 5.5.38 0.008 0.025 15.03 5.5.37 0.010 0.022 15.10 5.5.36 0.011 0.020 15.06 5.5.35 0.007 0.023 15.01 5.5.34 0.007 0.024 15.05 5.5.33 0.007 0.023 15.09 5.5.32 0.005 0.023 15.00 5.5.31 0.003 0.024 15.16 5.5.30 0.009 0.015 15.10 5.5.29 0.007 0.019 15.15 5.5.28 0.005 0.020 15.05 5.5.27 0.005 0.018 15.11 5.5.26 0.009 0.016 15.04 5.5.25 0.006 0.017 15.01 5.5.24 0.009 0.019 14.93 5.5.23 0.008 0.022 14.93 5.5.22 0.006 0.016 15.04 5.5.21 0.006 0.016 14.96 5.5.20 0.005 0.019 14.89 5.5.19 0.010 0.019 14.86 5.5.18 0.008 0.015 14.92 5.5.17 0.006 0.008 13.60 5.5.16 0.007 0.021 14.80 5.5.15 0.009 0.013 14.88 5.5.14 0.011 0.013 14.91 5.5.13 0.007 0.014 14.80 5.5.12 0.004 0.021 14.90 5.5.11 0.014 0.017 14.85 5.5.10 0.006 0.015 14.92 5.5.9 0.010 0.016 14.92 5.5.8 0.008 0.014 14.92 5.5.7 0.006 0.017 14.95 5.5.6 0.007 0.015 14.93 5.5.5 0.008 0.021 14.94 5.5.4 0.008 0.019 14.86 5.5.3 0.009 0.020 14.97 5.5.2 0.007 0.018 14.88 5.5.1 0.006 0.015 14.84 5.5.0 0.007 0.015 14.87 5.4.45 0.008 0.012 14.43 5.4.44 0.007 0.021 14.44 5.4.43 0.005 0.015 14.44 5.4.42 0.006 0.022 14.49 5.4.41 0.007 0.019 14.42 5.4.40 0.004 0.016 14.44 5.4.39 0.009 0.021 14.34 5.4.38 0.005 0.016 14.32 5.4.37 0.007 0.015 14.39 5.4.36 0.003 0.025 14.40 5.4.35 0.006 0.022 14.45 5.4.34 0.005 0.014 14.32 5.4.33 0.008 0.003 12.77 5.4.32 0.007 0.015 14.38 5.4.31 0.009 0.020 14.43 5.4.30 0.006 0.014 14.35 5.4.29 0.005 0.013 14.40 5.4.28 0.006 0.015 14.46 5.4.27 0.009 0.019 14.42 5.4.26 0.007 0.014 14.43 5.4.25 0.008 0.016 14.42 5.4.24 0.008 0.011 14.42 5.4.23 0.005 0.019 14.28 5.4.22 0.010 0.018 14.33 5.4.21 0.008 0.017 14.37 5.4.20 0.006 0.015 14.35 5.4.19 0.010 0.014 14.43 5.4.18 0.007 0.020 14.39 5.4.17 0.008 0.016 14.38 5.4.16 0.006 0.016 14.30 5.4.15 0.004 0.025 14.31 5.4.14 0.004 0.019 13.73 5.4.13 0.005 0.020 13.68 5.4.12 0.006 0.015 13.73 5.4.11 0.004 0.023 13.70 5.4.10 0.007 0.016 13.68 5.4.9 0.007 0.011 13.72 5.4.8 0.009 0.018 13.77 5.4.7 0.005 0.018 13.77 5.4.6 0.009 0.013 13.75 5.4.5 0.007 0.015 13.74 5.4.4 0.005 0.017 13.76 5.4.3 0.002 0.021 13.76 5.4.2 0.006 0.020 13.76 5.4.1 0.005 0.018 13.71 5.4.0 0.006 0.013 13.53
preferences:dark mode live preview
38.35 ms | 401 KiB | 5 Q