3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * Omni functions and definitions. * * @link https://codex.wordpress.org/Functions_File_Explained * * @package omni */ if ( ! function_exists( 'omni_setup' ) ) : /** * Sets up theme defaults and registers support for various WordPress features. * * Note that this function is hooked into the after_setup_theme hook, which * runs before the init hook. The init hook is too late for some features, such * as indicating support for post thumbnails. */ function omni_setup() { /* * Make theme available for translation. * Translations can be filed in the /languages/ directory. * If you're building a theme based on omni, use a find and replace * to change 'omni' to the name of your theme in all the template files */ load_theme_textdomain( 'omni', get_template_directory() . '/languages' ); // Add default posts and comments RSS feed links to head. add_theme_support( 'automatic-feed-links' ); /* * Let WordPress manage the document title. * By adding theme support, we declare that this theme does not use a * hard-coded <title> tag in the document head, and expect WordPress to * provide it for us. */ add_theme_support( 'title-tag' ); /* * Enable support for Post Thumbnails on posts and pages. * * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/ */ add_theme_support( 'post-thumbnails' ); // This theme uses wp_nav_menu() in one location. register_nav_menus( array( 'main-menu' => esc_html__( 'Main Menu', 'omni' ), 'footer-menu' => esc_html__( 'Footer Menu', 'omni' ), ) ); /* * Switch default core markup for search form, comment form, and comments * to output valid HTML5. */ add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', ) ); /* * Enable support for Post Formats. * See https://developer.wordpress.org/themes/functionality/post-formats/ */ add_theme_support( 'post-formats', array( 'quote', 'audio', 'image', 'video', 'gallery', ) ); // Set up the WordPress core custom background feature. add_theme_support( 'custom-background', apply_filters( 'omni_custom_background_args', array( 'default-color' => 'FFFFFF', 'default-image' => '', ) ) ); add_editor_style( get_stylesheet_directory_uri() . '/css/editor.css' ); } endif; add_action( 'after_setup_theme', 'omni_setup' ); /** * Set the content width in pixels, based on the theme's design and stylesheet. * * Priority 0 to make it available to lower priority callbacks. * * @global int $content_width */ if ( ! isset( $content_width ) ) { $content_width = 750; } add_action( 'switch_theme', 'omni_enforce_image_size_options' ); /** * Change image sizes for blog on theme activation. */ function omni_enforce_image_size_options() { update_option( 'thumbnail_crop', 0 ); update_option( 'medium_size_w', 750 ); update_option( 'medium_size_h', 465 ); update_option( 'large_size_w', 1140 ); update_option( 'large_size_h', 450 ); } /** * Register widget area. * * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar */ function omni_widgets_init() { register_sidebar( array( 'name' => esc_html__( 'Sidebar', 'omni' ), 'id' => 'primary', 'description' => '', 'before_widget' => '<div id="%1$s" class="widget-entry clearfix %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3><!-- end widget-title -->', ) ); $footer = '<div id="%1$s" class="widget'; $footer .= ' col-sm-6 col-md-' . reactor_get_widget_columns( 'footer' ); $footer .= ' %2$s">'; register_sidebar( array( 'name' => esc_html__( 'Footer Sidebar', 'omni' ), 'id' => 'footer', 'description' => '', 'before_widget' => $footer, 'after_widget' => '</div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3><!-- end widget-title -->', ) ); } add_action( 'widgets_init', 'omni_widgets_init' ); /** * Enqueue scripts and styles. */ function omni_scripts() { if ( ! is_admin() ) { wp_enqueue_style( 'bootstrap-css', get_template_directory_uri() . '/css/bootstrap.min.css' ); wp_enqueue_style( 'devices', get_template_directory_uri() . '/css/devices.min.css' ); wp_enqueue_style( 'swiper-slider-css', get_template_directory_uri() . '/css/idangerous.swiper.css' ); wp_enqueue_style( 'style', get_stylesheet_uri() ); wp_enqueue_style( 'animate-css', get_template_directory_uri() . '/css/animate.css' ); // TODO: Load 1 font awesome for all modules / plugins. wp_enqueue_style( 'font-awesome', get_template_directory_uri() . '/css/font-awesome.min.css' ); wp_enqueue_script( 'bootstrap-js', get_template_directory_uri() . '/js/bootstrap.min.js', array('jquery'), '', true ); wp_enqueue_script( 'global-js', get_template_directory_uri() . '/js/global.js', array('jquery'), '', true ); wp_enqueue_script( 'idangerous-swiper', get_template_directory_uri() . '/js/idangerous.swiper.min.js', array('jquery'), '', true ); wp_enqueue_script( 'wow-animation', get_template_directory_uri() . '/js/wow.min.js', array('jquery'), '', true ); wp_enqueue_script( 'sharrre-js', get_template_directory_uri() . '/js/jquery.sharrre.min.js', array('jquery'), '', true ); wp_enqueue_script( 'ajax-subscription', get_template_directory_uri() . '/js/subscription.js', array('jquery'), '', true ); } if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } // Custom Google fonts for heading. $custom_font_heading = cs_get_customize_option( 'heading_typography_use_custom' ); $custom_font_settings_heading = cs_get_customize_option( 'heading_typography_custom_font' ); if ( isset( $custom_font_heading ) && ( true === $custom_font_heading ) && isset( $custom_font_settings_heading ) && ! ( empty( $custom_font_settings_heading ) ) ) { $typography_selected_styles = 'latin,greek,greek-ext,vietnamese,cyrillic-ext,latin-ext,cyrillic'; $enqueue_fonts = $custom_font_settings_heading . '&subset=' . $typography_selected_styles; wp_enqueue_style( 'crum-heading-google-fonts', esc_url( add_query_arg( 'family', ( $enqueue_fonts ), 'https://fonts.googleapis.com/css' ) ), array(), null ); } // Custom Google fonts for body. $custom_font_body = cs_get_customize_option( 'body_typography_use_custom' ); $custom_font_settings_body = cs_get_customize_option( 'body_typography_custom_font' ); if ( isset( $custom_font_body ) && ( true === $custom_font_body ) && isset( $custom_font_settings_body ) && ! ( empty( $custom_font_settings_body ) ) ) { $typography_selected_styles = 'latin,greek,greek-ext,vietnamese,cyrillic-ext,latin-ext,cyrillic'; $enqueue_fonts = $custom_font_settings_body . '&subset=' . $typography_selected_styles; wp_enqueue_style( 'crum-body-google-fonts', esc_url( add_query_arg( 'family', ( $enqueue_fonts ), 'https://fonts.googleapis.com/css' ) ), array(), null ); } } add_action( 'wp_enqueue_scripts', 'omni_scripts' ); /** * Disable unused framework components. */ define( 'CS_ACTIVE_FRAMEWORK', false ); /** * Disable unused framework components. */ define( 'CS_ACTIVE_SHORTCODE', false ); /** * Customizer additions. */ require get_template_directory() . '/inc/customizer.php'; /** * Custom template tags for this theme. */ require get_template_directory() . '/inc/template-tags.php'; /** * Custom functions that act independently of the theme templates. */ require get_template_directory() . '/inc/extras.php'; /** * Customizer additions. */ require_once get_template_directory() . '/inc/cs-framework/cs-framework.php'; /** * Load Jetpack compatibility file. */ require get_template_directory() . '/inc/jetpack.php'; /* * admin scripts */ add_action( 'admin_enqueue_scripts', 'crum_register_admin_scripts' ); add_action( 'admin_enqueue_scripts', 'crum_enqueue_admin_scripts' ); /** * Register Theme JS /CSS for wp admin. */ function crum_register_admin_scripts() { wp_register_script( 'crumina-admin-area-scripts', get_template_directory_uri() . '/js/admin-scripts.js', array(), false, true ); } /** * Include Theme JS /CSS in wp admin. */ function crum_enqueue_admin_scripts() { wp_enqueue_script( 'crumina-admin-area-scripts' ); wp_enqueue_media(); wp_enqueue_style( 'crum-fonts-admin', crum_fonts_url(), array(), '1.0.0' ); } /** * Require theme extensions */ // TGM. require_once get_template_directory() . '/inc/plugins/tgm-config.php'; // Custom colors. require_once get_template_directory() . '/inc/extensions/styles.php'; // Updater. require_once get_template_directory() . '/inc/extensions/omni-update.php'; if( ! function_exists( 'update_my_theme' ) ){ function update_my_theme() { $theme_purchase_code = cs_get_customize_option('theme_purchase_code'); $theme_access_token = cs_get_customize_option('theme_access_token'); if( class_exists( 'WPES_Envato_Theme_Update' ) ){ new WPES_Envato_Theme_Update( basename( get_template_directory() ) , $theme_purchase_code , $theme_access_token , false ); } } add_action( 'init' , 'update_my_theme' ); } // Ttheme thumb. if ( ! function_exists( 'crum_theme_thumb' ) ) : /** * Dynamic Resize Images. * * @param string $url url of image. * @param int $width Width for resized image. * @param int $height Height for resized image. * @param bool $crop Crop image. * @param string $align Align for image crop. * * @return string */ function crum_theme_thumb( $url, $width, $height = 0, $crop, $align = '' ) { require_once get_template_directory() . '/inc/extensions/mr-image-resize.php'; if ( extension_loaded( 'gd' ) ) { return mr_image_resize( $url, $width, $height, $crop, $align, false ); } else { return $url; } } endif; if ( ! ( function_exists( 'crum_thousands_convert' ) ) ) { /** * Convert big nubers to smaller. * * @param int $amount Input number to convert. * * @return string */ function crum_thousands_convert( $amount ) { $k_meter = 1000; $k100_meter = 100000; if ( ( $amount > $k_meter ) && ( $amount < $k100_meter ) ) { $amount = round( $amount / $k_meter, 1 ) . 'k'; } elseif ( $amount > $k100_meter ) { $amount = round( $amount / $k_meter, 0 ) . 'k'; } else { return $amount; } return $amount; } } if ( ! function_exists( 'crum_main_menu' ) ) { /** * Init Theme main menu. */ function crum_main_menu() { $page_meta = get_post_meta( get_the_ID(), 'custom_sidebar_options', true ); $defaults = array( 'theme_location' => 'main-menu', 'container' => false, 'depth' => 5, 'echo' => true, 'fallback_cb' => 'crum_menu_fallback', 'menu_class' => false, 'walker' => new Crum_Nav_Menu_Walker(), ); if ( isset( $page_meta['meta-page-menu'] ) && ! ( 'default' === $page_meta['meta-page-menu'] ) && ! ( '' === $page_meta['meta-page-menu'] ) ) { $defaults['menu'] = $page_meta['meta-page-menu']; } wp_nav_menu( $defaults ); } } if ( ! function_exists( 'crum_footer_menu' ) ) { /** * Init Theme main menu. */ function crum_footer_menu() { $defaults = array( 'theme_location' => 'footer-menu', 'container' => false, 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', 'depth' => 1, 'echo' => true, 'menu_class' => 'footer-linck', ); wp_nav_menu( $defaults ); } } require_once get_template_directory() . '/inc/extensions/walkers.php'; //tinyMCE shortcodes require get_template_directory() . '/inc/shortcodes/tinyMCE-shortcodes.php'; /** * Display social networks icons. * * @param bool|true $display_icon Show soc network pictogramm. */ function crum_do_socnetworks( $display_icon = true ) { $soc_networks_array = array( 'fa fa-facebook' => esc_html__( 'Facebook', 'omni' ), 'fa fa-google' => esc_html__( 'Google', 'omni' ), 'fa fa-twitter' => esc_html__( 'Twitter', 'omni' ), 'fa fa-instagram' => esc_html__( 'Instagram', 'omni' ), 'fa fa-xing' => esc_html__( 'Xing', 'omni' ), 'fa fa-lastfm' => esc_html__( 'LastFM', 'omni' ), 'fa fa-dribbble' => esc_html__( 'Dribble', 'omni' ), 'fa fa-vk' => esc_html__( 'Vkontakte', 'omni' ), 'fa fa-youtube' => esc_html__( 'Youtube', 'omni' ), 'fa fa-windows' => esc_html__( 'Microsoft', 'omni' ), 'fa fa-deviantart' => esc_html__( 'Deviantart', 'omni' ), 'fa fa-linkedin' => esc_html__( 'LinkedIN', 'omni' ), 'fa fa-pinterest' => esc_html__( 'Pinterest', 'omni' ), 'fa fa-wordpress' => esc_html__( 'Wordpress', 'omni' ), 'fa fa-behance' => esc_html__( 'Behance', 'omni' ), 'fa fa-flickr' => esc_html__( 'Flickr', 'omni' ), 'fa fa-rss' => esc_html__( 'RSS', 'omni' ), ); $output = ''; foreach ( $soc_networks_array as $icon => $soc_network ) { $soc_network_link = cs_get_customize_option( 'soc_' . str_replace( 'fa fa-', '', $icon ) ); if ( isset( $soc_network_link ) && ! empty( $soc_network_link ) ) { $output .= '<a href="' . esc_url( $soc_network_link ) . '" title="' . esc_attr( $soc_network ) . '">'; $output .= '<i class="' . esc_attr( $icon ) . '"></i>'; $output .= '</a>'; } } echo $output; // WPCS: XSS OK. } /** * Add tags to allowedtags filter */ add_action( 'init', function () { global $allowedtags; $allowedtags['i'] = array( 'class' => array(), ); $allowedtags['img'] = array( 'src' => array(), 'alt' => array(), 'width' => array(), 'height' => array(), 'class' => array(), ); $allowedtags['iframe'] = array( 'src' => array(), 'height' => array(), 'width' => array(), ); $allowedtags['span'] = array( 'class' => array(), ); } ); /** * Register Fonts. */ function crum_fonts_url() { $font_url = ''; /* Translators: If there are characters in your language that are not supported by chosen font(s), translate this to 'off'. Do not translate into your own language. */ if ( 'off' !== _x( 'on', 'Google font: on or off', 'omni' ) ) { $font_url = add_query_arg( 'family', urlencode( 'Crimson Text:400,700italic,700,600italic,600,400italic|PT Sans:400,700,400italic,700italic&subset=cyrillic,cyrillic-ext' ), 'https://fonts.googleapis.com/css' ); } return $font_url; } // Load VC if not already active. if ( function_exists( 'vc_set_as_theme' ) ) { vc_set_as_theme( $disable_updater = true ); } function crum_list_categories_count( $output ) { $output = str_replace( '(', '<span>(', $output ); $output = str_replace( ')', ')</span>', $output ); return $output; } add_filter( 'wp_list_categories', 'crum_list_categories_count' ); add_filter( 'get_archives_link', 'crum_archives_count' ); function crum_archives_count( $links ) { $links = str_replace( '&nbsp;', '', $links ); $links = str_replace( '(', '<span>(', $links ); $links = str_replace( ')', ')</span>', $links ); return $links; } /** * Count Widgets. * Count the number of widgets to add dynamic column class. * * @param string $sidebar_id id of sidebar. * * @since 1.0.0 * @return int */ function reactor_get_widget_columns( $sidebar_id ) { $columns = apply_filters( 'reactor_columns', 12 ); $the_sidebars = wp_get_sidebars_widgets(); if ( ! isset( $the_sidebars[ $sidebar_id ] ) ) { return esc_html__( 'Invalid sidebar ID', 'omni' ); } $num = count( $the_sidebars[ $sidebar_id ] ); switch ( $num ) { case 1 : $num = $columns; break; case 2 : $num = $columns / 2; break; case 3 : $num = $columns / 3; break; case 4 : $num = $columns / 4; break; case 5 : $num = $columns / 5; break; case 6 : $num = $columns / 6; break; case 7 : $num = $columns / 7; break; case 8 : $num = $columns / 8; break; } $num = floor( $num ); return $num; }

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.70.0070.01118.50
8.3.60.0090.00616.88
8.3.50.0130.00621.33
8.3.40.0120.00618.86
8.3.30.0060.00918.95
8.3.20.0040.00420.41
8.3.10.0080.00022.06
8.3.00.0040.00423.53
8.2.190.0100.00716.85
8.2.180.0090.01218.41
8.2.170.0000.01622.96
8.2.160.0030.01120.63
8.2.150.0050.00325.66
8.2.140.0080.00024.66
8.2.130.0040.00419.71
8.2.120.0050.00326.35
8.2.110.0070.00321.00
8.2.100.0060.00618.30
8.2.90.0000.00819.48
8.2.80.0030.00518.05
8.2.70.0030.00617.59
8.2.60.0040.00418.18
8.2.50.0050.00318.07
8.2.40.0050.00220.73
8.2.30.0050.00520.71
8.2.20.0040.00417.82
8.2.10.0040.00418.32
8.2.00.0000.00818.17
8.1.280.0120.00325.92
8.1.270.0030.00623.97
8.1.260.0040.00428.09
8.1.250.0080.00028.09
8.1.240.0060.00322.50
8.1.230.0070.00419.45
8.1.220.0030.00617.89
8.1.210.0000.00918.77
8.1.200.0000.01017.60
8.1.190.0000.00817.47
8.1.180.0040.00418.10
8.1.170.0060.00318.96
8.1.160.0070.00020.82
8.1.150.0000.00819.09
8.1.140.0080.00019.62
8.1.130.0060.00317.79
8.1.120.0020.00517.50
8.1.110.0090.00017.62
8.1.100.0080.00017.59
8.1.90.0020.00517.65
8.1.80.0000.00817.50
8.1.70.0000.00717.46
8.1.60.0040.00417.76
8.1.50.0000.00817.57
8.1.40.0040.00417.65
8.1.30.0050.00317.70
8.1.20.0040.00417.80
8.1.10.0000.00917.61
8.1.00.0030.00517.63
8.0.300.0080.00018.77
8.0.290.0080.00017.00
8.0.280.0000.00718.71
8.0.270.0040.00417.43
8.0.260.0000.00717.53
8.0.250.0070.00017.23
8.0.240.0000.00817.12
8.0.230.0050.00317.20
8.0.220.0050.00217.19
8.0.210.0050.00317.05
8.0.200.0030.00317.09
8.0.190.0030.00617.21
8.0.180.0040.00417.10
8.0.170.0030.00517.18
8.0.160.0000.00717.16
8.0.150.0000.00817.04
8.0.140.0070.00017.14
8.0.130.0000.00613.71
8.0.120.0070.00317.09
8.0.110.0040.00417.23
8.0.100.0000.00817.22
8.0.90.0030.00617.15
8.0.80.0110.00717.16
8.0.70.0050.00317.17
8.0.60.0030.00517.19
8.0.50.0000.00817.23
8.0.30.0100.00817.31
8.0.20.0100.00917.41
8.0.10.0000.00717.21
8.0.00.0150.00717.09
7.4.330.0000.00516.67
7.4.320.0070.00016.78
7.4.300.0000.00616.62
7.4.290.0040.00416.74
7.4.280.0050.00616.73
7.4.270.0070.00016.66
7.4.260.0060.00316.63
7.4.250.0050.00316.74
7.4.240.0040.00416.65
7.4.230.0040.00416.74
7.4.220.0100.01616.75
7.4.210.0110.01016.76
7.4.200.0000.00716.64
7.4.160.0070.01016.59
7.4.150.0120.00817.40
7.4.140.0100.00717.86
7.4.130.0070.01216.76
7.4.120.0120.00716.67
7.4.110.0030.01416.86
7.4.100.0060.01116.74
7.4.90.0070.01116.69
7.4.80.0170.00719.39
7.4.70.0140.00716.70
7.4.60.0060.01116.62
7.4.50.0150.00416.47
7.4.40.0140.00716.49
7.4.30.0130.01016.64
7.4.00.0040.01215.08
7.3.330.0000.00613.34
7.3.320.0030.00313.43
7.3.310.0040.00416.48
7.3.300.0000.00716.46
7.3.290.0040.00416.52
7.3.280.0040.01316.47
7.3.270.0170.00617.40
7.3.260.0040.02116.43
7.3.250.0100.00916.62
7.3.240.0120.00716.66
7.3.230.0170.00016.53
7.3.210.0070.01016.80
7.3.200.0120.00719.39
7.3.190.0120.00616.71
7.3.180.0090.01316.64
7.3.170.0100.00616.85
7.3.160.0140.00316.82
7.3.120.0050.01214.98
7.3.110.0050.00915.03
7.3.100.0080.00515.14
7.3.90.0050.00714.96
7.3.80.0060.00915.10
7.3.70.0070.00814.86
7.3.60.0030.01014.84
7.3.50.0020.01114.95
7.3.40.0070.00514.90
7.3.30.0060.00615.02
7.3.20.0060.00716.58
7.3.10.0030.00916.61
7.3.00.0070.00516.61
7.2.330.0090.00916.48
7.2.320.0060.01216.76
7.2.310.0220.00316.39
7.2.300.0120.00616.53
7.2.290.0140.00416.49
7.2.250.0070.01115.06
7.2.240.0070.01314.98
7.2.230.0070.00515.13
7.2.220.0060.00615.00
7.2.210.0040.00914.90
7.2.200.0040.01215.10
7.2.190.0070.00314.89
7.2.180.0000.01314.95
7.2.170.0030.01314.92
7.2.60.0040.01216.91
7.2.00.0270.00219.17
7.1.330.0070.00715.53
7.1.320.0030.00915.69
7.1.310.0020.00815.55
7.1.300.0020.01215.75
7.1.290.0030.00815.67
7.1.280.0050.00615.72
7.1.270.0050.00715.73
7.1.260.0080.00615.61
7.1.200.0000.01015.54
7.1.100.0000.01417.96
7.1.70.0100.00316.97
7.1.60.0000.02319.21
7.1.50.0040.01116.93
7.1.00.0030.07322.52
7.0.200.0050.00216.83
7.0.100.0100.08020.18
7.0.90.0370.08720.04
7.0.80.0300.07020.18
7.0.70.0370.09020.19
7.0.60.0100.08720.11
7.0.50.0330.08320.54
7.0.40.0070.04020.10
7.0.30.0030.05720.05
7.0.20.0030.04320.09
7.0.10.0100.03720.10
7.0.00.0000.04720.15
5.6.280.0070.04720.90
5.6.250.0070.08320.90
5.6.240.0100.08320.63
5.6.230.0030.08720.80
5.6.220.0070.08320.61
5.6.210.0030.05320.72
5.6.200.0030.05321.15
5.6.190.0030.04721.30
5.6.180.0000.06021.15
5.6.170.0130.04021.23
5.6.160.0030.04321.19
5.6.150.0030.04021.23
5.6.140.0100.03721.12
5.6.130.0030.04321.07
5.6.120.0070.04021.08
5.6.110.0070.04021.13
5.6.100.0070.04321.14
5.6.90.0000.05721.12
5.6.80.0070.03320.46
5.6.70.0030.04020.68
5.6.60.0070.03320.52
5.6.50.0030.04320.68
5.6.40.0030.04320.59
5.6.30.0030.04020.56
5.6.20.0030.04020.45
5.6.10.0000.04320.46
5.6.00.0070.03720.53
5.5.380.0030.04320.57
5.5.370.0100.05020.52
5.5.360.0070.08320.46
5.5.350.0130.07720.45
5.5.340.0200.07721.00
5.5.330.0130.04320.91
5.5.320.0100.04320.92
5.5.310.0070.04320.76
5.5.300.0000.04321.00
5.5.290.0000.04320.85
5.5.280.0070.03720.88
5.5.270.0030.05020.96
5.5.260.0100.04721.01
5.5.250.0030.04320.86
5.5.240.0030.04020.38
5.5.230.0070.03720.21
5.5.220.0070.05320.27
5.5.210.0000.04320.41
5.5.200.0070.03320.35
5.5.190.0030.03720.22
5.5.180.0000.04320.33
5.5.160.0030.04020.39
5.5.150.0030.04020.10
5.5.140.0070.03720.22
5.5.130.0000.04020.24
5.5.120.0030.03720.39
5.5.110.0070.03720.26
5.5.100.0100.03320.22
5.5.90.0000.04020.07
5.5.80.0000.04020.23
5.5.70.0030.04020.21
5.5.60.0070.03320.13
5.5.50.0030.04020.17
5.5.40.0030.03720.21
5.5.30.0030.03720.21
5.5.20.0030.04020.26
5.5.10.0030.04020.22
5.5.00.0030.04020.21

preferences:
45.07 ms | 401 KiB | 5 Q