@ 2014-04-18T12:28:12Z <?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
die();
/** @var CBitrixCatalogSmartFilter $this */
/** @var array $arParams */
/** @var array $arResult */
/** @global CUser $USER */
global $USER;
/** @global CMain $APPLICATION */
global $APPLICATION;
if (!CModule::IncludeModule("iblock")) {
ShowError(GetMessage("CC_BCF_MODULE_NOT_INSTALLED"));
return;
}
$FILTER_NAME = (string) $arParams["FILTER_NAME"];
if ($this->StartResultCache(false, ($arParams["CACHE_GROUPS"] ? $USER->GetGroups() : false))) {
$arResult["COMBO"] = array();
$arResult["PRICES"] = CIBlockPriceTools::GetCatalogPrices($arParams["IBLOCK_ID"], $arParams["PRICE_CODE"]);
$arResult["ITEMS"] = $this->getResultItems();
$propertyEmptyValuesCombination = array();
foreach ($arResult["ITEMS"] as $PID => $arItem)
$propertyEmptyValuesCombination[$arItem["ID"]] = array();
if (!empty($arResult["ITEMS"])) {
$arElementFilter = array(
"IBLOCK_ID" => $this->IBLOCK_ID,
"SUBSECTION" => $this->SECTION_ID,
"ACTIVE_DATE" => "Y",
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "Y",
);
$arElements = array();
$rsElements = CIBlockElement::GetPropertyValues($this->IBLOCK_ID, $arElementFilter);
while ($arElement = $rsElements->Fetch())
$arElements[$arElement["IBLOCK_ELEMENT_ID"]] = $arElement;
if (!empty($arElements) && $this->SKU_IBLOCK_ID && $this->SKU_PROPERTY_COUNT > 0) {
$arSkuFilter = array(
"IBLOCK_ID" => $this->SKU_IBLOCK_ID,
"ACTIVE_DATE" => "Y",
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "Y",
"=PROPERTY_" . $this->SKU_PROPERTY_ID => array_keys($arElements),
);
$rsElements = CIBlockElement::GetPropertyValues($this->SKU_IBLOCK_ID, $arSkuFilter);
while ($arSku = $rsElements->Fetch()) {
foreach ($arResult["ITEMS"] as $PID => $arItem) {
if (isset($arSku[$PID]) && $arSku[$this->SKU_PROPERTY_ID] > 0)
$arElements[$arSku[$this->SKU_PROPERTY_ID]][$PID][] = $arSku[$PID];
}
}
}
foreach ($arElements as $arElement) {
$propertyValues = $propertyEmptyValuesCombination;
foreach ($arResult["ITEMS"] as $PID => $arItem) {
if (is_array($arElement[$PID])) {
foreach ($arElement[$PID] as $value) {
$key = $this->fillItemValues($arResult["ITEMS"][$PID], $value);
$propertyValues[$PID][$key] = $arResult["ITEMS"][$PID]["VALUES"][$key]["VALUE"];
}
} elseif ($arElement[$PID] !== false) {
$key = $this->fillItemValues($arResult["ITEMS"][$PID], $arElement[$PID]);
$propertyValues[$PID][$key] = $arResult["ITEMS"][$PID]["VALUES"][$key]["VALUE"];
}
}
$propertyValuesCombination = array();
$this->ArrayMultiply($propertyValuesCombination, $propertyValues);
foreach ($propertyValuesCombination as $propertyValues)
$arResult["COMBO"][md5(serialize($propertyValues))] = $propertyValues;
}
$arSelect = array("ID", "IBLOCK_ID");
foreach ($arResult["PRICES"] as &$value) {
$arSelect[] = $value["SELECT"];
$arFilter["CATALOG_SHOP_QUANTITY_" . $value["ID"]] = 1;
}
$rsElements = CIBlockElement::GetList(array(), $arElementFilter, false, false, $arSelect);
$arResult["GOODS"] = array();
while ($arElement = $rsElements->Fetch()) {
$arResult["GOODS"][] = $arElement;
foreach ($arResult["PRICES"] as $NAME => $arPrice)
if (isset($arResult["ITEMS"][$NAME]))
$this->fillItemPrices($arResult["ITEMS"][$NAME], $arElement);
}
if (isset($arSkuFilter)) {
$rsElements = CIBlockElement::GetList(array(), $arSkuFilter, false, false, $arSelect);
while ($arSku = $rsElements->Fetch()) {
foreach ($arResult["PRICES"] as $NAME => $arPrice)
if (isset($arResult["ITEMS"][$NAME]))
$this->fillItemPrices($arResult["ITEMS"][$NAME], $arSku);
}
}
foreach ($arResult["ITEMS"] as $PID => $arItem)
uasort($arResult["ITEMS"][$PID]["VALUES"], array($this, "_sort"));
}
$this->EndResultCache();
}
/* Handle checked for checkboxes and html control value for numbers */
if (isset($_REQUEST["ajax"]) && $_REQUEST["ajax"] === "y")
$_CHECK = &$_REQUEST;
elseif (isset($_REQUEST["del_filter"]))
$_CHECK = array();
elseif (isset($_GET["set_filter"]))
$_CHECK = &$_GET;
elseif ($arParams["SAVE_IN_SESSION"] && isset($_SESSION[$FILTER_NAME][$this->SECTION_ID]))
$_CHECK = $_SESSION[$FILTER_NAME][$this->SECTION_ID];
else
$_CHECK = array();
$arProps = array();
$minPrice = null;
$maxPrice = null;
/* Set state of the html controls depending on filter values */
foreach ($arResult["ITEMS"] as $PID => $arItem) {
foreach ($arItem["VALUES"] as $key => $ar) {
if (isset($_CHECK[$ar["CONTROL_NAME"]])) {
$arProps[$arItem["CODE"]]["CODE"] = $arItem["CODE"];
$arProps[$arItem["CODE"]]["PROPERTY_TYPE"] = $arItem["PROPERTY_TYPE"];
if ($arItem["PROPERTY_TYPE"] == "N" || isset($arItem["PRICE"]))
$arResult["ITEMS"][$PID]["VALUES"][$key]["HTML_VALUE"] = htmlspecialcharsbx($_CHECK[$ar["CONTROL_NAME"]]);
elseif ($_CHECK[$ar["CONTROL_NAME"]] == $ar["HTML_VALUE"]) {
$arResult["ITEMS"][$PID]["VALUES"][$key]["CHECKED"] = true;
if ($arItem["PROPERTY_TYPE"] == "S")
$arProps[$arItem["CODE"]]["VALUES"][] = $arResult["ITEMS"][$PID]["VALUES"][$key]["VALUE"];
elseif ($arItem["PROPERTY_TYPE"] == "L") {
$property_enums = CIBlockPropertyEnum::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $this->IBLOCK_ID, "PROPERTY_ID" => $PID));
$value = null;
while ($enum_fields = $property_enums->GetNext()) {
if ($enum_fields["VALUE"] == $arResult["ITEMS"][$PID]["VALUES"][$key]["VALUE"])
$value = $enum_fields["ID"];
}
$arProps[$arItem["CODE"]]["VALUES"] = $value;
} elseif ($arItem["PROPERTY_TYPE"] == "E") {
$arProps[$arItem["CODE"]]["VALUES"] = $key;
}
}
}
}
}
/* Handle disabled for checkboxes (TODO: handle number type) */
foreach ($arResult["ITEMS"] as $PID => $arItem) {
$combo = $arResult["COMBO"];
/* filter all possible property values combinations */
$this->filterCombinations($combo, $arResult["ITEMS"], $PID);
$combo = $this->combineCombinations($combo);
foreach ($arItem["VALUES"] as $key => $ar) {
if ($arItem["PROPERTY_TYPE"] != "N" && !isset($arItem["PRICE"])) {
if (!is_array($combo[$PID]) || !in_array($ar["VALUE"], $combo[$PID]))
$arResult["ITEMS"][$PID]["VALUES"][$key]["DISABLED"] = true;
}
}
}
/* Make iblock filter */
global ${$FILTER_NAME};
if (!is_array(${$FILTER_NAME}))
${$FILTER_NAME} = array();
if ($this->SKU_PROPERTY_COUNT > 0) {
//This will force to use catalog.section offers price filter
if (!isset(${$FILTER_NAME}["OFFERS"]))
${$FILTER_NAME}["OFFERS"] = array();
}
foreach ($arResult["ITEMS"] as $PID => $arItem) {
if ($arItem["CODE"] == "BASE") {
$minPrice = (float)$arItem["VALUES"]["MIN"]["HTML_VALUE"];
$maxPrice = (float)$arItem["VALUES"]["MAX"]["HTML_VALUE"];
}
if (isset($arItem["PRICE"])) {
if (strlen($arItem["VALUES"]["MIN"]["HTML_VALUE"]) && strlen($arItem["VALUES"]["MAX"]["HTML_VALUE"]))
${$FILTER_NAME}["><CATALOG_PRICE_" . $arItem["ID"]] = array($arItem["VALUES"]["MIN"]["HTML_VALUE"], $arItem["VALUES"]["MAX"]["HTML_VALUE"]);
elseif (strlen($arItem["VALUES"]["MIN"]["HTML_VALUE"]))
${$FILTER_NAME}[">=CATALOG_PRICE_" . $arItem["ID"]] = $arItem["VALUES"]["MIN"]["HTML_VALUE"];
elseif (strlen($arItem["VALUES"]["MAX"]["HTML_VALUE"]))
${$FILTER_NAME}["<=CATALOG_PRICE_" . $arItem["ID"]] = $arItem["VALUES"]["MAX"]["HTML_VALUE"];
}
elseif ($arItem["PROPERTY_TYPE"] == "N") {
if ($arItem["IBLOCK_ID"] == $this->SKU_IBLOCK_ID)
$filter = &${$FILTER_NAME}["OFFERS"];
else
$filter = &${$FILTER_NAME};
if (strlen($arItem["VALUES"]["MIN"]["HTML_VALUE"]) && strlen($arItem["VALUES"]["MAX"]["HTML_VALUE"]))
$filter["><PROPERTY_" . $PID] = array($arItem["VALUES"]["MIN"]["HTML_VALUE"], $arItem["VALUES"]["MAX"]["HTML_VALUE"]);
elseif (strlen($arItem["VALUES"]["MIN"]["HTML_VALUE"]))
$filter[">=PROPERTY_" . $PID] = $arItem["VALUES"]["MIN"]["HTML_VALUE"];
elseif (strlen($arItem["VALUES"]["MAX"]["HTML_VALUE"]))
$filter["<=PROPERTY_" . $PID] = $arItem["VALUES"]["MAX"]["HTML_VALUE"];
}
else {
if ($arItem["IBLOCK_ID"] == $this->SKU_IBLOCK_ID)
$filter = &${$FILTER_NAME}["OFFERS"];
else
$filter = &${$FILTER_NAME};
foreach ($arItem["VALUES"] as $key => $ar) {
if ($ar["CHECKED"]) {
$filterKey = "=PROPERTY_" . $PID;
if (!array_key_exists($filterKey, $filter))
$filter[$filterKey] = array(htmlspecialcharsback($key));
else
$filter[$filterKey][] = htmlspecialcharsback($key);
}
}
}
}
$arResult["PROPS"] = $arProps;
foreach ($arResult["ITEMS"] as $PID => $arItem) {
$arPrices=array();
if ($minPrice>0 && $maxPrice>0) $arPrices=array("LOGIC" => "OR",array("LOCIG"=>"AND",">=PROPERTY_DISCOUNT_PRICE"=>$minPrice, "<=PROPERTY_DISCOUNT_PRICE"=>$maxPrice),array("LOCIG"=>"AND", ">=CATALOG_PRICE_1"=>$minPrice, "<=CATALOG_PRICE_1"=>$maxPrice)); else
if ($minPrice>0 && $maxPrice==0) $arPrices=array("LOGIC" => "OR",array("LOCIG"=>"AND",">=PROPERTY_DISCOUNT_PRICE"=>$minPrice),array("LOCIG"=>"AND", ">=CATALOG_PRICE_1"=>$minPrice)); else
if ($minPrice==0 && $maxPrice>0) $arPrices=array("LOGIC" => "OR",array("LOCIG"=>"AND","<=PROPERTY_DISCOUNT_PRICE"=>$maxPrice),array("LOCIG"=>"AND", "<=CATALOG_PRICE_1"=>$maxPrice));
//$arProps[$arItem["CODE"]] = array("CODE" => $arItem["CODE"]);
foreach ($arItem["VALUES"] as $key => $ar) {
$arElementFilter = array(
"IBLOCK_ID" => $this->IBLOCK_ID,
"SUBSECTION" => $this->SECTION_ID,
"ACTIVE_DATE" => "Y",
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "Y",
$arPrices
);
unset($arElementFilter["PROPERTY_" . $arResult["ITEMS"][$PID]["CODE"]]);
foreach ($arProps as $prop) {
if ($prop["PROPERTY_TYPE"] == "S" || $prop["PROPERTY_TYPE"] == "L" || $prop["PROPERTY_TYPE"] == "E")
$arElementFilter["PROPERTY_" . $prop["CODE"]] = $prop["VALUES"];
}
if ($arResult["ITEMS"][$PID]["PROPERTY_TYPE"] == "S")
$arElementFilter["PROPERTY_" . $arItem["CODE"]] = $arResult["ITEMS"][$PID]["VALUES"][$key]["VALUE"];
elseif ($arResult["ITEMS"][$PID]["PROPERTY_TYPE"] == "L") {
$property_enums = CIBlockPropertyEnum::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $this->IBLOCK_ID, "PROPERTY_ID" => $PID));
$value = null;
while ($enum_fields = $property_enums->GetNext()) {
if ($enum_fields["VALUE"] == $arResult["ITEMS"][$PID]["VALUES"][$key]["VALUE"])
$value = $enum_fields["ID"];
}
if (in_array($arResult["ITEMS"][$PID]["CODE"], array("NEWPRODUCT", "SALELEADER", "SALES"))) {
unset($arElementFilter["PROPERTY_NEWPRODUCT"]);
unset($arElementFilter["PROPERTY_SALELEADER"]);
unset($arElementFilter["PROPERTY_SALES"]);
}
$arElementFilter["PROPERTY_" . $arResult["ITEMS"][$PID]["CODE"]] = $value;
} elseif ($arResult["ITEMS"][$PID]["PROPERTY_TYPE"] == "E")
$arElementFilter["PROPERTY_" . $arItem["CODE"]] = [$key];
$rsElements = CIBlockElement::GetList(array(), $arElementFilter, array(), false);
$arResult["ITEMS"][$PID]["VALUES"][$key]["ELEMENTS"] = $rsElements;
}
}
/* Save to session if needed */
if ($arParams["SAVE_IN_SESSION"]) {
$_SESSION[$FILTER_NAME][$this->SECTION_ID] = array();
foreach ($arResult["ITEMS"] as $PID => $arItem) {
foreach ($arItem["VALUES"] as $key => $ar) {
if (isset($_CHECK[$ar["CONTROL_NAME"]])) {
if ($arItem["PROPERTY_TYPE"] == "N" || isset($arItem["PRICE"]))
$_SESSION[$FILTER_NAME][$this->SECTION_ID][$ar["CONTROL_NAME"]] = $_CHECK[$ar["CONTROL_NAME"]];
elseif ($_CHECK[$ar["CONTROL_NAME"]] == $ar["HTML_VALUE"])
$_SESSION[$FILTER_NAME][$this->SECTION_ID][$ar["CONTROL_NAME"]] = $_CHECK[$ar["CONTROL_NAME"]];
}
}
}
}
$pageURL = $APPLICATION->GetCurPageParam();
$paramsToDelete = array("set_filter", "del_filter", "ajax", "bxajaxid", "AJAX_CALL");
foreach ($arResult["ITEMS"] as $PID => $arItem) {
foreach ($arItem["VALUES"] as $key => $ar)
$paramsToDelete[] = $ar["CONTROL_NAME"];
}
$clearURL = CHTTP::urlDeleteParams($pageURL, $paramsToDelete, array("delete_system_params" => true));
if (isset($_REQUEST["ajax"]) && $_REQUEST["ajax"] === "y") {
$arFilter = $this->makeFilter($FILTER_NAME);
$arResult["ELEMENT_COUNT"] = CIBlockElement::GetList(array(), $arFilter, array(), false);
$paramsToAdd = array(
"set_filter" => "y",
);
foreach ($arResult["ITEMS"] as $PID => $arItem) {
foreach ($arItem["VALUES"] as $key => $ar) {
if (isset($_CHECK[$ar["CONTROL_NAME"]])) {
if ($arItem["PROPERTY_TYPE"] == "N" || isset($arItem["PRICE"]))
$paramsToAdd[$ar["CONTROL_NAME"]] = $_CHECK[$ar["CONTROL_NAME"]];
elseif ($_CHECK[$ar["CONTROL_NAME"]] == $ar["HTML_VALUE"])
$paramsToAdd[$ar["CONTROL_NAME"]] = $_CHECK[$ar["CONTROL_NAME"]];
}
}
}
$arResult["FILTER_URL"] = htmlspecialcharsbx(CHTTP::urlAddParams($clearURL, $paramsToAdd, array(
"skip_empty" => true,
"encode" => true,
)));
if (isset($_GET["bxajaxid"])) {
$arResult["COMPONENT_CONTAINER_ID"] = htmlspecialcharsbx("comp_" . $_GET["bxajaxid"]);
if ($arParams["INSTANT_RELOAD"])
$arResult["INSTANT_RELOAD"] = true;
}
$arResult["FILTER_AJAX_URL"] = htmlspecialcharsbx(CHTTP::urlAddParams($clearURL, $paramsToAdd + array(
"AJAX_CALL" => "Y",
"bxajaxid" => $_GET["bxajaxid"],
), array(
"skip_empty" => true,
"encode" => true,
)));
}
$arInputNames = array();
foreach ($arResult["ITEMS"] as $PID => $arItem) {
foreach ($arItem["VALUES"] as $key => $ar)
$arInputNames[$ar["CONTROL_NAME"]] = true;
}
$arInputNames["set_filter"] = true;
$arInputNames["del_filter"] = true;
$arSkip = array(
"AUTH_FORM" => true,
"TYPE" => true,
"USER_LOGIN" => true,
"USER_CHECKWORD" => true,
"USER_PASSWORD" => true,
"USER_CONFIRM_PASSWORD" => true,
"USER_EMAIL" => true,
"captcha_word" => true,
"captcha_sid" => true,
"login" => true,
"Login" => true,
"backurl" => true,
"ajax" => true,
);
$arResult["FORM_ACTION"] = $clearURL;
$arResult["HIDDEN"] = array();
foreach (array_merge($_GET, $_POST) as $key => $value) {
if (
!array_key_exists($key, $arInputNames) && !array_key_exists($key, $arSkip) && !is_array($value)
) {
$arResult["HIDDEN"][] = array(
"CONTROL_ID" => htmlspecialcharsbx($key),
"CONTROL_NAME" => htmlspecialcharsbx($key),
"HTML_VALUE" => htmlspecialcharsbx($value),
);
}
}
if (isset($_REQUEST["ajax"]) && $_REQUEST["ajax"] === "y") {
$this->IncludeComponentTemplate("ajax");
require_once($_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php");
die();
}
else
$this->IncludeComponentTemplate();
?>
?>
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.009 0.006 18.30 8.3.5 0.015 0.005 22.04 8.3.4 0.013 0.003 18.96 8.3.3 0.004 0.011 19.35 8.3.2 0.005 0.003 20.58 8.3.1 0.003 0.005 22.02 8.3.0 0.004 0.004 22.43 8.2.18 0.016 0.000 16.63 8.2.17 0.009 0.006 22.96 8.2.16 0.010 0.010 20.93 8.2.15 0.003 0.006 24.18 8.2.14 0.008 0.000 24.66 8.2.13 0.004 0.004 26.16 8.2.12 0.005 0.003 17.88 8.2.11 0.006 0.003 22.16 8.2.10 0.000 0.012 18.28 8.2.9 0.000 0.008 19.48 8.2.8 0.006 0.003 18.05 8.2.7 0.011 0.000 17.88 8.2.6 0.006 0.003 18.28 8.2.5 0.003 0.006 18.07 8.2.4 0.004 0.004 18.61 8.2.3 0.004 0.004 18.38 8.2.2 0.005 0.003 17.89 8.2.1 0.009 0.000 17.95 8.2.0 0.005 0.003 17.91 8.1.28 0.007 0.007 25.92 8.1.27 0.012 0.003 22.44 8.1.26 0.004 0.004 26.35 8.1.25 0.003 0.005 28.09 8.1.24 0.008 0.000 23.88 8.1.23 0.007 0.004 19.25 8.1.22 0.003 0.005 17.93 8.1.21 0.000 0.008 18.77 8.1.20 0.003 0.007 17.47 8.1.19 0.004 0.004 17.66 8.1.18 0.006 0.003 18.10 8.1.17 0.009 0.000 18.89 8.1.16 0.003 0.009 22.23 8.1.15 0.006 0.003 18.91 8.1.14 0.000 0.008 17.68 8.1.13 0.003 0.005 18.06 8.1.12 0.003 0.007 17.74 8.1.11 0.003 0.005 17.57 8.1.10 0.004 0.004 17.71 8.1.9 0.006 0.003 17.66 8.1.8 0.004 0.004 17.66 8.1.7 0.004 0.004 17.67 8.1.6 0.007 0.003 17.73 8.1.5 0.000 0.008 17.78 8.1.4 0.000 0.008 17.71 8.1.3 0.000 0.009 17.91 8.1.2 0.000 0.009 17.89 8.1.1 0.000 0.008 17.71 8.1.0 0.004 0.004 17.68 8.0.30 0.004 0.004 18.77 8.0.29 0.005 0.003 17.41 8.0.28 0.004 0.004 18.63 8.0.27 0.000 0.007 17.46 8.0.26 0.000 0.007 17.16 8.0.25 0.007 0.000 17.29 8.0.24 0.003 0.006 17.13 8.0.23 0.007 0.000 17.08 8.0.22 0.008 0.000 17.15 8.0.21 0.005 0.003 17.06 8.0.20 0.006 0.003 17.14 8.0.19 0.000 0.007 17.20 8.0.18 0.000 0.009 17.18 8.0.17 0.000 0.008 17.10 8.0.16 0.003 0.005 17.25 8.0.15 0.006 0.003 17.02 8.0.14 0.004 0.004 17.04 8.0.13 0.003 0.003 13.61 8.0.12 0.000 0.008 17.05 8.0.11 0.005 0.003 17.18 8.0.10 0.000 0.011 17.13 8.0.9 0.003 0.005 17.06 8.0.8 0.003 0.014 17.12 8.0.7 0.003 0.006 17.01 8.0.6 0.003 0.005 17.10 8.0.5 0.003 0.005 17.02 8.0.3 0.011 0.010 17.49 8.0.2 0.007 0.014 17.44 8.0.1 0.000 0.008 17.11 8.0.0 0.013 0.008 17.03 7.4.33 0.003 0.003 15.02 7.4.32 0.003 0.003 16.76 7.4.30 0.004 0.004 16.69 7.4.29 0.002 0.005 16.79 7.4.28 0.004 0.004 16.65 7.4.27 0.000 0.007 16.85 7.4.26 0.007 0.000 16.66 7.4.25 0.008 0.000 16.71 7.4.24 0.002 0.006 16.78 7.4.23 0.007 0.000 16.73 7.4.22 0.006 0.012 16.95 7.4.21 0.005 0.010 16.74 7.4.20 0.005 0.003 16.89 7.4.19 0.000 0.007 16.71 7.4.16 0.009 0.013 16.75 7.4.15 0.012 0.006 17.40 7.4.14 0.009 0.010 17.86 7.4.13 0.012 0.012 16.78 7.4.12 0.013 0.004 16.89 7.4.11 0.033 0.015 16.78 7.4.10 0.014 0.006 16.74 7.4.9 0.009 0.015 16.80 7.4.8 0.013 0.010 19.39 7.4.7 0.010 0.011 16.57 7.4.6 0.003 0.013 16.72 7.4.5 0.009 0.000 16.79 7.4.4 0.006 0.013 22.77 7.4.3 0.011 0.007 16.89 7.4.0 0.005 0.012 15.14 7.3.33 0.005 0.000 13.25 7.3.32 0.000 0.005 13.34 7.3.31 0.007 0.000 16.42 7.3.30 0.004 0.004 16.40 7.3.29 0.009 0.009 16.56 7.3.28 0.009 0.010 16.50 7.3.27 0.003 0.014 17.40 7.3.26 0.014 0.003 16.54 7.3.25 0.011 0.007 16.68 7.3.24 0.015 0.006 16.57 7.3.23 0.003 0.014 16.66 7.3.21 0.006 0.012 16.40 7.3.20 0.007 0.010 19.39 7.3.19 0.006 0.012 16.80 7.3.18 0.010 0.007 16.63 7.3.17 0.006 0.011 16.83 7.3.16 0.005 0.010 16.63 7.3.12 0.010 0.008 15.13 7.3.11 0.011 0.007 14.70 7.3.10 0.009 0.006 15.17 7.3.9 0.004 0.011 14.77 7.3.8 0.011 0.003 15.03 7.3.7 0.007 0.007 14.92 7.3.6 0.003 0.013 14.96 7.3.5 0.010 0.003 14.89 7.3.4 0.007 0.004 15.05 7.3.3 0.000 0.011 14.89 7.3.2 0.011 0.004 16.64 7.3.1 0.000 0.016 16.63 7.3.0 0.006 0.012 16.56 7.2.33 0.007 0.012 16.80 7.2.32 0.004 0.015 16.69 7.2.31 0.009 0.015 16.94 7.2.30 0.007 0.010 17.00 7.2.29 0.007 0.014 16.72 7.2.25 0.007 0.013 15.31 7.2.24 0.009 0.013 15.14 7.2.23 0.006 0.006 15.39 7.2.22 0.013 0.003 15.00 7.2.21 0.003 0.014 15.13 7.2.20 0.006 0.009 14.84 7.2.19 0.010 0.007 14.88 7.2.18 0.012 0.003 15.25 7.2.17 0.006 0.009 15.18 7.2.6 0.009 0.006 16.84 7.2.0 0.004 0.011 19.54 7.1.33 0.003 0.010 15.93 7.1.32 0.006 0.009 15.49 7.1.31 0.000 0.010 15.68 7.1.30 0.005 0.005 15.32 7.1.29 0.007 0.010 15.62 7.1.28 0.009 0.006 15.77 7.1.27 0.009 0.009 15.50 7.1.26 0.004 0.012 15.49 7.1.20 0.010 0.004 15.73 7.1.10 0.003 0.006 17.75 7.1.7 0.007 0.007 16.78 7.1.6 0.007 0.020 19.82 7.1.5 0.008 0.003 16.95 7.1.0 0.007 0.073 22.31 7.0.20 0.008 0.004 16.41 7.0.14 0.003 0.073 22.10 7.0.10 0.003 0.067 20.24 7.0.9 0.033 0.060 20.19 7.0.8 0.013 0.080 20.17 7.0.7 0.020 0.080 20.41 7.0.6 0.027 0.063 20.34 7.0.5 0.040 0.073 20.61 7.0.4 0.007 0.050 20.08 7.0.3 0.007 0.083 20.01 7.0.2 0.007 0.083 20.20 7.0.1 0.010 0.073 20.06 7.0.0 0.017 0.073 20.13 5.6.28 0.000 0.073 20.97 5.6.25 0.007 0.043 20.65 5.6.24 0.010 0.083 20.78 5.6.23 0.003 0.077 20.81 5.6.22 0.003 0.050 20.72 5.6.21 0.007 0.077 20.71 5.6.20 0.010 0.063 21.12 5.6.19 0.010 0.083 21.23 5.6.18 0.010 0.080 21.18 5.6.17 0.007 0.087 21.19 5.6.16 0.000 0.087 21.23 5.6.15 0.003 0.043 21.22 5.6.14 0.007 0.050 21.09 5.6.13 0.007 0.073 21.09 5.6.12 0.013 0.043 21.13 5.6.11 0.017 0.063 21.27 5.6.10 0.000 0.083 21.18 5.6.9 0.007 0.090 21.18 5.6.8 0.013 0.073 20.59 5.6.7 0.010 0.053 20.64 5.6.6 0.003 0.080 20.58 5.6.5 0.007 0.070 20.64 5.6.4 0.007 0.077 20.52 5.6.3 0.013 0.077 20.64 5.6.2 0.000 0.090 20.63 5.6.1 0.007 0.077 20.57 5.6.0 0.003 0.053 20.60 5.5.38 0.007 0.077 20.54 5.5.37 0.007 0.067 20.55 5.5.36 0.010 0.047 20.69 5.5.35 0.007 0.047 20.61 5.5.34 0.007 0.077 20.88 5.5.33 0.017 0.073 20.99 5.5.32 0.007 0.083 21.04 5.5.31 0.013 0.080 21.02 5.5.30 0.010 0.067 21.04 5.5.29 0.017 0.037 20.90 5.5.28 0.003 0.087 20.79 5.5.27 0.010 0.070 21.06 5.5.26 0.007 0.087 20.95 5.5.25 0.017 0.070 20.85 5.5.24 0.007 0.080 20.32 5.5.23 0.003 0.083 20.26 5.5.22 0.010 0.047 20.34 5.5.21 0.010 0.070 20.14 5.5.20 0.007 0.073 20.39 5.5.19 0.000 0.057 20.39 5.5.18 0.013 0.077 20.33 5.5.16 0.010 0.077 20.14 5.5.15 0.017 0.070 20.38 5.5.14 0.017 0.063 20.38 5.5.13 0.007 0.067 20.23 5.5.12 0.017 0.067 20.30 5.5.11 0.003 0.047 20.25 5.5.10 0.003 0.073 20.27 5.5.9 0.003 0.043 20.33 5.5.8 0.003 0.040 20.09 5.5.7 0.003 0.040 20.07 5.5.6 0.000 0.040 20.31 5.5.5 0.007 0.037 20.21 5.5.4 0.007 0.037 20.25 5.5.3 0.003 0.043 20.20 5.5.2 0.007 0.043 20.20 5.5.1 0.003 0.043 20.11 5.5.0 0.003 0.040 20.18 5.4.45 0.007 0.043 19.36 5.4.44 0.007 0.067 19.46 5.4.43 0.003 0.080 19.35 5.4.42 0.007 0.053 19.25 5.4.41 0.003 0.060 19.17 5.4.40 0.003 0.067 19.13 5.4.39 0.007 0.043 19.20 5.4.38 0.013 0.047 19.04 5.4.37 0.007 0.083 19.03 5.4.36 0.003 0.070 19.14 5.4.35 0.013 0.063 19.20 5.4.34 0.010 0.077 19.09 5.4.32 0.007 0.050 18.98 5.4.31 0.000 0.083 19.04 5.4.30 0.010 0.073 19.23 5.4.29 0.003 0.060 19.23 5.4.28 0.003 0.083 19.20 5.4.27 0.000 0.077 19.13 5.4.26 0.010 0.067 18.98 5.4.25 0.007 0.037 19.25 5.4.24 0.007 0.040 19.22 5.4.23 0.007 0.033 19.23 5.4.22 0.003 0.047 19.13 5.4.21 0.000 0.043 19.03 5.4.20 0.007 0.033 19.11 5.4.19 0.000 0.040 18.86 5.4.18 0.007 0.037 19.22 5.4.17 0.010 0.033 18.86 5.4.16 0.003 0.037 19.11 5.4.15 0.000 0.047 19.13 5.4.14 0.007 0.053 16.46 5.4.13 0.007 0.033 16.44 5.4.12 0.007 0.037 16.44 5.4.11 0.003 0.037 16.36 5.4.10 0.003 0.037 16.48 5.4.9 0.000 0.033 16.34 5.4.8 0.000 0.043 16.55 5.4.7 0.007 0.030 16.53 5.4.6 0.010 0.030 16.27 5.4.5 0.007 0.033 16.38 5.4.4 0.007 0.027 16.41 5.4.3 0.007 0.033 16.54 5.4.2 0.007 0.033 16.54 5.4.1 0.000 0.037 16.36 5.4.0 0.010 0.037 15.84 5.3.29 0.000 0.080 14.64 5.3.28 0.007 0.040 14.72 5.3.27 0.000 0.040 14.71 5.3.26 0.003 0.063 14.73 5.3.25 0.000 0.040 14.70 5.3.24 0.000 0.040 14.73 5.3.23 0.003 0.057 14.71 5.3.22 0.003 0.053 14.68 5.3.21 0.000 0.037 14.55 5.3.20 0.003 0.043 14.70 5.3.19 0.000 0.043 14.70 5.3.18 0.007 0.037 14.55 5.3.17 0.007 0.033 14.52 5.3.16 0.003 0.030 14.69 5.3.15 0.003 0.030 14.65 5.3.14 0.003 0.040 14.66 5.3.13 0.000 0.037 14.53 5.3.12 0.000 0.033 14.68 5.3.11 0.003 0.033 14.67 5.3.10 0.003 0.040 14.16 5.3.9 0.003 0.037 13.97 5.3.8 0.000 0.040 14.14 5.3.7 0.000 0.040 14.13 5.3.6 0.020 0.020 14.12 5.3.5 0.007 0.033 13.86 5.3.4 0.003 0.037 14.06 5.3.3 0.007 0.030 14.00 5.3.2 0.007 0.030 13.78 5.3.1 0.003 0.027 13.77 5.3.0 0.000 0.063 13.73
preferences:dark mode live preview
50.3 ms | 401 KiB | 5 Q