<?php
use AMPforWP\AMPVendor\AMP_Content;
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
/* This file will contain all the Extra FEATURES.
0.9. AMP Design Manager Files
	1. Add Home REL canonical
	2. Custom Design
	3. Custom Style files
	4. Custom Header files
		4.1 Custom Meta-Author files
		4.2 Custom Meta-Taxonomy files
		4.5 Added hook to add more layout.
	5. Customize with Width of the site
	6. Add required Javascripts for extra AMP features
		6.1 Adding Analytics Scripts
	7. Footer for AMP Pages
	8. Add Main tag as a Wrapper ( removed in 0.8.9 )
	9. Advertisement code
	10. Analytics Area
		10.1  Analytics Support added for Google Analytics
		10.2  Analytics Support added for segment.com
		10.3  Analytics Support added for Piwik
		10.4  Analytics Support added for quantcast
		10.5  Analytics Support added for comscore
		10.6  Analytics Support added for Effective Measure
		10.7  Analytics Support added for StatCounter
		10.8  Analytics Support added for Histats Analytics
		10.9  Analytics Support added for Yandex Metrika
		10.10 Analytics Support added for Chartbeat Analytics
		10.11 Analytics Support added for Alexa Metrics
	11. Strip unwanted codes and tags from the_content
	12. Add Logo URL in the structured metadata
	13. Add Custom Placeholder Image for Structured Data.
	14. Adds a meta box to the post editing screen for AMP on-off on specific pages.
	15. Disable New Relic's extra script that its adds in AMP pages.
	16. Remove Unwanted Scripts
	17. Archives Canonical in AMP version
	18. Custom Canonical for Homepage
	19. Remove Canonical tags
	20. Remove the default Google font for performance ( removed in 0.8.9 )
	21. Remove Schema data from All In One Schema.org Rich Snippets Plugin
	22. Removing author links from comments Issue #180
	23. The analytics tag appears more than once in the document. This will soon be an error
	24. Seperate Sticky Single Social Icons
	25. Yoast meta Support
	26. Extending Title Tagand De-Hooking the Standard one from AMP
    27. Fixing the defer tag issue [Finally!]
    28. Properly removes AMP if turned off from Post panel
    29. Remove analytics code if Already added by Glue or Yoast SEO
    30. TagDiv menu issue removed
    31. removing scripts added by cleantalk
    32. various lazy loading plugins Support
    33. Google tag manager support added
    34. social share boost compatibility Ticket #387
	35. Disqus Comments Support
	36. remove photon support in AMP
	37. compatibility with wp-html-compression
	38. #529 editable archives
  	39. #560 Header and Footer Editable html enabled script area
  	40. Meta Robots
  	41. Rewrite URL only on save #511
	42. registeing AMP sidebars
	43. custom actions for widgets output
	44. auto adding /amp for the menu
	45. search,frontpage,homepage structured data
	46. search search search everywhere #615
	47. social js properly adding when required
	48. Remove all unwanted scripts on search pages
	49. Properly adding ad Script the AMP way
	50. Properly adding noditification Scritps the AMP way
	51. Adding Digg Digg compatibility with AMP
	52. Adding a generalized sanitizer function for purifiying normal html to amp-html
	53. Removed AMP-WooCommerce Code and added it in AMP-WooCommerce #929
	54. Change the default values of post meta for AMP pages.
	55. Call Now Button Feature added
	56. Multi Translation Feature #540
	57. Adding Updated date at in the Content
	58. YouTube Shortcode compatablity with AMP #557
	59. Comment Button URL
	60. Remove Category Layout modification code added by TagDiv #842 and #796
	61. Add Gist Support
	62. Adding Meta viewport via hook instead of direct #878
	63. Frontpage Comments #682 
	64. PageBuilder  
	65. Remove Filters code added through Class by other plugins
	66. Make AMP compatible with Squirrly SEO
	69. Post Pagination #834 #857
	70. Hide AMP by specific Categories #872
	71. Alt tag for thumbnails #1013 and For Post ID in Body tag #1006
	72. Blacklist Sanitizer Added back #1024
	73. View AMP Site below View Site In Dashboard #1076
	74. Featured Image check from Custom Fields 
	75. Dev Mode in AMP
	76. Body Class for AMP pages
	77. AMP Blog Details
	78. Saved Custom Post Types for AMP in Options for Structured Data
	79. Favicon for AMP
	80. Mobile Preview styling
	81. Duplicate Featured Image Support
	82. Grab Featured Image from The Content
	83. Advance Analytics(Google Analytics)
	84. Inline Related Posts
	85. Caption for Gallery Images
	86. minify the content of pages
	87. Post Thumbnail
	88. Author Details
	89. Facebook Pixel
	90. Set Header last modified information
	91. Comment Author Gravatar URL
	92. View AMP in Admin Bar
	93. added AMP url purifire for amphtml
	94. OneSignal Push Notifications
	95. Modify menu link attributes for SiteNavigationElement Schema Markup #1229 #1345
	96. ampforwp_is_front_page() ampforwp_is_home() and ampforwp_is_blog is created
	97. Change the format of the post date on Loops #1384 
	98. Create Dynamic url of amp according to the permalink structure #1318
	99. Merriweather Font Management
	100. Flags compatibility in Menu
	101. Function for Logo attributes 
	102. SD Feature Image Guidlines #2838
*/
// AMP Components	
// AMP LOGO
add_amp_theme_support('AMP-logo');
// AMP Loop
add_amp_theme_support('AMP-loop');
// GDPR
if(ampforwp_get_setting('amp-gdpr-compliance-switch')) {
    add_amp_theme_support('AMP-gdpr');
}
// Menu
add_amp_theme_support('AMP-menu');
// Adding AMP-related things to the main theme
	global $redux_builder_amp;

	// 0.9. AMP Design Manager Files
	require AMPFORWP_PLUGIN_DIR  .'templates/design-manager.php';
	// Custom Frontpage items
 	require AMPFORWP_PLUGIN_DIR  .'templates/frontpage-elements.php';
 	require AMPFORWP_PLUGIN_DIR . '/classes/class-ampforwp-youtube-embed.php' ;
 	// Custom Post Types
 	require AMPFORWP_PLUGIN_DIR  .'templates/ampforwp-custom-post-type.php';
	 if ((true == ampforwp_get_setting('ampforwp-infinite-scroll-single')) && (true == ampforwp_get_setting('ampforwp-infinite-scroll') || true == ampforwp_get_setting('ampforwp-wcp-infinite-scroll') ) ) {
 		require AMPFORWP_PLUGIN_DIR  .'templates/ampforwp-infinite-scroll-select-post-meta.php';
	 }
 	// TODO: Update this function 
 	function ampforwp_include_customizer_files(){
 		global $redux_builder_amp;
 		$amp_plugin_data;
		$amp_plugin_activation_check; 

		include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
		$amp_plugin_activation_check = is_plugin_active( 'amp/amp.php' );
		if ( isset ($redux_builder_amp['amp-design-selector']) && 4 != $redux_builder_amp['amp-design-selector'] ) {
			return require AMPFORWP_PLUGIN_DIR  .'templates/customizer/customizer.php' ;
		}
 	} 
 	ampforwp_include_customizer_files();
//0.

define('AMPFORWP_COMMENTS_PER_PAGE',  ampforwp_define_comments_number() );
	// Define number of comments
	function ampforwp_define_comments_number(){
		global $redux_builder_amp;
		$number_of_comments = '';
		if(isset($redux_builder_amp['ampforwp-number-of-comments'])){
			$number_of_comments = $redux_builder_amp['ampforwp-number-of-comments'];
		}
		return $number_of_comments;
	}
	
	// 1. Add Home REL canonical
	// Add AMP rel-canonical for home and archive pages

	add_action('amp_init','ampforwp_allow_homepage');
	function ampforwp_allow_homepage() {
		add_action( 'wp', 'ampforwp_add_endpoint_actions' );
	}


	function ampforwp_add_endpoint_actions() {

		$ampforwp_is_amp_endpoint = ampforwp_is_amp_endpoint();

		if ( $ampforwp_is_amp_endpoint ) {
			AMPforWP\AMPVendor\amp_prepare_render();
		} else {
			add_action( 'wp_head', 'ampforwp_home_archive_rel_canonical', 1 );
		}

		$cpage_var = get_query_var('cpage');

		if ( $cpage_var >= 1) : 
			remove_action( 'wp_head', 'ampforwp_home_archive_rel_canonical', 1 );
		endif;			
	}

	function ampforwp_amphtml_generator(){
		global $redux_builder_amp;
		global $wp, $post;
		$post_id = '';
		$endpoint_check = false;
		$endpoint_check = ampforwp_get_setting('amp-core-end-point');
	    if( is_attachment() ) {
        return;
	    }
	    if(get_query_var('paged') && true == ampforwp_get_setting('amp-paginated-pages-indexing')) {
		    return;
		}
	    if( is_home() && is_front_page() && !ampforwp_get_setting('ampforwp-homepage-on-off-support') ) {
        return;
	    }
	    if( is_front_page() && ! ampforwp_get_setting('ampforwp-homepage-on-off-support') ) {
        return;
	    }

	     // HIDE/SHOW TAG AND CATEGORY #4326
	  if(is_tag() || is_category() || is_tax()){
		$amp_queried_object = get_queried_object();
		if (is_object($amp_queried_object) && property_exists($amp_queried_object, 'term_id'))
		{
			$term_id = $amp_queried_object->term_id;
			$tax_status = ampforwp_get_taxonomy_meta($term_id,'status');
			if($tax_status==false){
				 return;
			}
		}else{
			return;
		} 
          
      }else if(is_single()){
          $tax_status = ampforwp_get_taxonomy_meta('','post_status');
          if($tax_status==false){
            return;
          }
      }

	     // Skip this condition for woocommerce product archive and shop pages.
	     if( function_exists('amp_woocommerce_pro_add_woocommerce_support') && (function_exists('is_product_category') && !is_product_category()) && (function_exists('is_product_tag') && !is_product_tag()) && (function_exists('is_shop') && !is_shop() ) ){
		    	if( is_archive() && ( !ampforwp_get_setting('ampforwp-archive-support') || ( is_category() && !ampforwp_get_setting('ampforwp-archive-support-cat') ) || ( is_tag() && !ampforwp_get_setting('ampforwp-archive-support-tag') ))){
					return;
				}	
	    }

	  // When amp woocommerce pro plugin is not active.
      if ( is_archive() && !function_exists('amp_woocommerce_pro_add_woocommerce_support') ) {
	    	if(!ampforwp_get_setting('ampforwp-archive-support')){
				return;
			}
	    	if( is_category() && !ampforwp_get_setting('ampforwp-archive-support-cat') ){
	    		return;
	    	}
	    	if( is_tag() && !ampforwp_get_setting('ampforwp-archive-support-tag') ){
	    		return;
	    	}
	    }
		// #1192 Password Protected posts exclusion
		if(post_password_required( $post )){
				return;
			}
		// #2018 404 exclusion
		if(is_404()){
			return;
		}
		// #1443 AMP should be skip on the check out page  
		if(class_exists( 'WooCommerce' )){
		      if(function_exists('is_checkout') && is_checkout()){
		        return;
		      }
		      if(function_exists('is_account_page') && is_account_page()){
		        return;
		      }
		    }
		// Search results on/off option #3786
		    if(is_search() && 0 == ampforwp_get_setting('amp-redirection-search')){
		     	return;
		    }
		if(function_exists('yith_wishlist_constructor')){
			$class = get_body_class();
			if(in_array("woocommerce-wishlist", $class)){
				return;
			} 
		}    
		// #872 no-amphtml if selected as hide from settings
		if ( is_category_amp_disabled() ) {
			return;
		}
      	if ( is_page() && false == ampforwp_get_setting('amp-on-off-for-all-pages') && ! is_home() && ! is_front_page() ) {
			return;
		}
		if ( is_home() && ! ampforwp_is_blog() && !ampforwp_get_setting('ampforwp-homepage-on-off-support') ) {
			return;
		}
		if(is_author()){
			$amp_auth_url = ampforwp_get_author_page_url();
			return esc_url_raw($amp_auth_url);
		}
		if (!ampforwp_is_home() && !ampforwp_is_front_page() && !ampforwp_is_blog() && !is_category() && !is_tag() && !is_singular( array('page', 'attachment', 'post')) && !function_exists('amp_woocommerce_pro_add_woocommerce_support')){
			global $post_type;
			if (empty(ampforwp_get_setting('ampforwp-custom-type'))) {
				return;
			}
		}
		$page_for_posts = intval(get_option( 'page_for_posts' ));
		$post_id = ampforwp_get_the_ID();
		if ( ampforwp_is_blog() && ! ampforwp_get_setting('amp-on-off-for-all-pages') && ($page_for_posts != $post_id ) ) {
			return;
		}
			$query_arg_array = $wp->query_vars;
			if( in_array( "cpage" , $query_arg_array ) ) {
				if( is_front_page() &&  $wp->query_vars['cpage'] >= '2' ) {
				 return;
			 }
			 if( is_singular() &&  $wp->query_vars['cpage'] >= '2' ) {
				 return;
			 }
			}

	    if ( is_home() || is_front_page() || is_archive() ){
	        global $wp;
	        $current_archive_url = home_url( $wp->request );
	        // If its custom permalink with /index.php/ #3279
	        if ( is_archive() && false !== strpos($wp->matched_rule, 'index.php') && false === strpos($current_archive_url, 'index.php') ) {
				$current_archive_url = home_url( 'index.php/' . $wp->request );
			}
	        $amp_url = trailingslashit($current_archive_url);
	        if ($endpoint_check && (is_tax() || is_post_type_archive())) {
	        	$amp_url =  ampforwp_url_controller($amp_url);	
	        }
	    } else {
	      $amp_url = AMPforWP\AMPVendor\amp_get_permalink( get_queried_object_id() );
	    }
        global $post;
        if ( is_singular() ) {
        	$post_id = get_the_ID();
        	
        }
        if ( ampforwp_is_blog() ) {
        	$post_id = ampforwp_get_blog_details('id');
        }
        $ampforwp_amp_post_on_off_meta = get_post_meta( $post_id,'ampforwp-amp-on-off',true);
        if ( ( is_singular() || ampforwp_is_blog() ) && $ampforwp_amp_post_on_off_meta === 'hide-amp' ) {
          //dont Echo anything
        } else {
			$supported_types = ampforwp_get_all_post_types();
			if(isset($supported_types['web-story'])){
		    	$supported_types['web-story'] = '';
		    }
			$supported_types = apply_filters('get_amp_supported_post_types',$supported_types);

			$type = get_post_type();
			if(is_home() || is_front_page()){
		      if( ampforwp_get_setting('ampforwp-homepage-on-off-support') == 1 
		          && ampforwp_get_setting('amp-on-off-for-all-posts') == 0 
		          && ampforwp_get_setting('amp-on-off-for-all-pages') == 0 ){

                  $supported_types['post'] = 'post';
      			}
		    }
			$supported_amp_post_types = in_array( $type , $supported_types );

			$query_arg_array = $wp->query_vars;
			if( array_key_exists( 'paged' , $query_arg_array ) ) {
				if ( (is_home() || is_archive()) && $wp->query_vars['paged'] >= '2' ) {
					$new_url 		=  home_url('/');
					// If its custom permalink with /index.php/ #3537
					if ( (is_home() || is_archive()) && false !== strpos($wp->matched_rule, 'index.php') && false === strpos( home_url( $wp->request ), 'index.php') ) {
						$new_url = home_url( 'index.php' );
						$o_url = home_url();
						$new_url = str_replace($o_url, $new_url, $amp_url);
						$new_url = user_trailingslashit($new_url);
						$amp_url = $new_url;
					}
					$category_path 	= $wp->request;
					if ( null != $category_path && true != $endpoint_check) {
						$explode_path  	= explode("/",$category_path);
						$inserted 		= array(AMPFORWP_AMP_QUERY_VAR);
						array_splice( $explode_path, -2, 0, $inserted );
						$impode_url = implode('/', $explode_path);
						$amp_url = $new_url . $impode_url ;
					}
				}
				if( is_search() && $wp->query_vars['paged'] >= '2' ) {
					$current_search_url =trailingslashit(get_home_url()) . $wp->request .'/'."?amp=1&s=".get_search_query();
				}
			}
			if (!$endpoint_check) {
	        	$amp_url = user_trailingslashit($amp_url);
	        }

			if( is_search() ) {
				$current_search_url =trailingslashit(get_home_url())."?amp=1&s=".get_search_query();
				$amp_url = untrailingslashit($current_search_url);
			}
			// URL Purifier
			if(!ampforwp_get_setting('amp-core-end-point') && !ampforwp_get_setting('ampforwp-amp-takeover')){
				$amp_url = ampforwp_url_purifier($amp_url);
			}
			if(true == ampforwp_get_setting('amp-core-end-point') && (!is_home() && !is_front_page() && !is_archive())){
				$amp_url = add_query_arg( 'amp', '', get_the_permalink() );
			}	
	       

	        if( $supported_amp_post_types || ampforwp_is_front_page() ) {
	        	if(true == ampforwp_get_setting('amp-core-end-point')){
		        	if( class_exists('SitePress') ){
				        if( get_option('permalink_structure') ){
				            global $sitepress_settings, $wp;
				            $wpml_lang_checker = false;
				            if($sitepress_settings[ 'language_negotiation_type' ] == 3){
				            	$amp_url = esc_url($amp_url);
					            $active_langs = $sitepress_settings['active_languages'];
					            foreach ($active_langs as $active_lang) {
					                if (preg_match('/\?lang='.$active_lang.'/', $amp_url)){
					                    $amp_url = preg_replace('/&#038;amp=1/', '', $amp_url);
					                    $amp_url = preg_replace('/#038;amp/', '', $amp_url);
					                    $amp_url = str_replace('?lang='.$active_lang, '?amp=1', $amp_url);
					                    $amp_url = add_query_arg( 'lang',$active_lang, $amp_url);
					                }
					            }
				            }
				        }
				    }
				}	
				if (is_category() && class_exists('WPSEO_Options') && method_exists('WPSEO_Options', 'get') && WPSEO_Options::get( 'stripcategorybase' ) == true && false == ampforwp_get_setting('ampforwp-category-base-removel-link')) {
					return;
				}
				if (is_category() && class_exists('RankMath') && RankMath\Helper::get_settings( 'general.strip_category_base' ) == true && false == ampforwp_get_setting('ampforwp-category-base-removel-link')) {
					return;
				}	
				if (is_preview()) {
					$amp_url = preg_replace('/(.*?)&(.*?)/', '$1&amp&$2', $amp_url);
				}	
				if(ampforwp_get_setting('amp-core-end-point') && ampforwp_get_setting('ampforwp-amp-takeover') && is_singular()){
					 $amp_url = get_the_permalink();
				}else if(ampforwp_get_setting('amp-core-end-point') && (ampforwp_is_home() || ampforwp_is_front_page() || ampforwp_is_blog() || is_category() || is_tag() || is_front_page())){
					 $amp_url = ampforwp_url_controller($amp_url);
				}
				$amp_url = apply_filters('ampforwp_modify_rel_canonical',$amp_url);
				return esc_url_raw($amp_url);
			}
		}
		return;
	}

	// AMPHTML when using custom page and then creating a blog page
	add_action('amp_init','ampforwp_allow_homepage_as_blog');
	function ampforwp_allow_homepage_as_blog() {
		if(function_exists('mfn_opts_setup')){
			remove_action( 'pre_get_posts', 'mfn_search' );
		}
		add_action( 'wp', 'ampforwp_static_blog' , 11 );
	}
	function ampforwp_static_blog(){
		global $page;
		$modify_canonical = ampforwp_is_front_page();
		$get_front_page_reading_settings  = get_option('page_on_front');
		// Homepage support on   
    	$get_amp_homepage_support        =  ampforwp_get_setting('ampforwp-homepage-on-off-support');
 		if ( 'page' == get_option( 'show_on_front') && is_front_page() && $get_front_page_reading_settings && $get_amp_homepage_support ){
			$modify_canonical = true;
		}
		if ( true == $modify_canonical && $page >= 2 && is_page() && false == ampforwp_get_setting('amp-core-end-point') ) {
			add_filter('ampforwp_modify_rel_canonical','ampforwp_modify_amphtml_static_blog');
		}
	}

	function ampforwp_modify_amphtml_static_blog($amp_url) {
		$explode_url = $amp_endpoint = $offset = "";

		$explode_url 	= explode('/', $amp_url);
		$explode_url 	= array_flip($explode_url);
		unset($explode_url[AMPFORWP_AMP_QUERY_VAR]); 
		$explode_url 	= array_flip($explode_url);
		$amp_endpoint 	= array(AMPFORWP_AMP_QUERY_VAR);
		$offset 		= count($explode_url) - 2; 
		array_splice( $explode_url, $offset, 0, $amp_endpoint );
		$amp_url 		= implode('/', $explode_url);
		return $amp_url;
	}

	function ampforwp_home_archive_rel_canonical() {

		$amp_url = "";

		$amp_url = ampforwp_amphtml_generator();

		if ( $amp_url ) {
			printf('<link rel="amphtml" href="%s" />', esc_url($amp_url));
			if(false==ampforwp_get_setting('hide-amp-version-from-source')){
				printf('<meta name="generator" content="%s %s"/>', esc_html__( 'AMP for WP', 'accelerated-mobile-pages' ), esc_attr(AMPFORWP_VERSION) );
			}
		}

	} //end of ampforwp_home_archive_rel_canonical()

	// Remove default wordpress rel canonical
	add_filter('amp_frontend_show_canonical','ampforwp_remove_default_canonical');
	if (! function_exists('ampforwp_remove_default_canonical') ) {
		function ampforwp_remove_default_canonical() {
			return false;
		}
	}

	// 2. Custom Design

	// Add Homepage AMP file code
	add_filter( 'amp_post_template_file', 'ampforwp_custom_template', 10, 3 );
	function ampforwp_custom_template( $file, $type, $post ) {
        global $redux_builder_amp;
	   	// Custom Homepage and Archive file
		$slug = array();
		$current_url_in_pieces = array();
		$ampforwp_custom_post_page  =  ampforwp_custom_post_page();
		        
    	if ( 'single' === $type ) {
	        // Homepage and FrontPage
	        if ( is_home() || ( true == $redux_builder_amp['ampforwp-amp-takeover'] && is_front_page() ) ) {

	        	$file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-'. ampforwp_design_selector() .'/index.php';
			}
            if ( ampforwp_is_blog() ) {
			 	$file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-'. ampforwp_design_selector() .'/index.php';
            }
        
          $mob_pres_link = false;
		  if(function_exists('ampforwp_mobile_redirect_preseve_link')){
		    $mob_pres_link = ampforwp_mobile_redirect_preseve_link();
		  }
          if ( ampforwp_is_front_page() || ( (true == ampforwp_get_setting('ampforwp-amp-takeover') || $mob_pres_link == true) && is_front_page() && ampforwp_get_setting('amp-frontpage-select-option')) ) {
		            $file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-'. ampforwp_design_selector() .'/frontpage.php';
	         }

	        // Archive Pages
	        if ( is_archive() && $redux_builder_amp['ampforwp-archive-support'] && 'single' === $type )  {

	            $file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-'. ampforwp_design_selector() .'/archive.php';
	        }
			// Search pages
	      	if ( is_search() )  {
	            $file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-'. ampforwp_design_selector() .'/search.php';
	        }
	        // 404 Pages #2042        	
	        if ( is_404() && 'single' === $type )  {
	        	add_filter('ampforwp_modify_rel_url','ampforwp_404_canonical');
	            $file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-'. ampforwp_design_selector() .'/404.php';
	        }
		}

		// Polylang compatibility
		// For Frontpage
		if ( 'single' === $type && ampforwp_polylang_front_page() && true == $redux_builder_amp['amp-frontpage-select-option'] ) {
			$file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-'. ampforwp_design_selector() .'/frontpage.php';
		}
	    return $file;
	}

add_filter('amp_post_template_dir','ampforwp_new_dir');
function ampforwp_new_dir( $dir ) {
		global $redux_builder_amp;
		if ( isset($redux_builder_amp['amp-design-selector']) && ( 1 == $redux_builder_amp['amp-design-selector'] || 2 == $redux_builder_amp['amp-design-selector'] || 3 == $redux_builder_amp['amp-design-selector'] ) ) {
			$dir = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-'. ampforwp_design_selector();
		}
		else {
			$dir = AMPFORWP_CUSTOM_THEME;
		}
		return $dir;
}

	//3.5
	add_filter( 'amp_post_template_file', 'ampforwp_empty_filter', 10, 3 );
	function ampforwp_empty_filter( $file, $type, $post ) {
		if ( 'empty-filter' === $type ) {
			$file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/empty-filter.php';
		}
		return $file;
	}

	// 4. Custom Header files
	add_filter( 'amp_post_template_file', 'ampforwp_custom_header', 10, 3 );
	function ampforwp_custom_header( $file, $type, $post ) {
		if ( 'header-bar' === $type ) {
			$file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-'. ampforwp_design_selector() .'/header-bar.php';
		}
		return $file;
	}

	// 4.1 Custom Meta-Author files
	add_filter( 'amp_post_template_file', 'ampforwp_set_custom_meta_author', 10, 3 );
	function ampforwp_set_custom_meta_author( $file, $type, $post ) {
		if ( 'meta-author' === $type ) {
			$file = AMPFORWP_PLUGIN_DIR . '/templates/design-manager/empty-filter.php';
		}
		return $file;
	}
	// 4.2 Custom Meta-Taxonomy files
	add_filter( 'amp_post_template_file', 'ampforwp_set_custom_meta_taxonomy', 10, 3 );
	function ampforwp_set_custom_meta_taxonomy( $file, $type, $post ) {
		if ( 'meta-taxonomy' === $type ) {
			$file = AMPFORWP_PLUGIN_DIR . 'templates/design-manager/empty-filter.php';
		}
		return $file;
	}

	// 5.  Customize with Width of the site
	add_filter( 'amp_content_max_width', 'ampforwp_change_content_width' );
	function ampforwp_change_content_width( $content_max_width ) {
		return 1000;
	}
 
	// 6. Add required Javascripts for extra AMP features
		// Code updated and added the JS proper way #336 
	add_filter('amp_post_template_data','ampforwp_add_amp_social_share_script', 20);
	function ampforwp_add_amp_social_share_script( $data ){
		global $redux_builder_amp;
		$social_check = $social_check_page = false;
		if ( is_page() && isset($redux_builder_amp['ampforwp-page-social']) && $redux_builder_amp['ampforwp-page-social'] )	{
			$social_check_page = true;
		}		
		if ( 4 == ampforwp_get_setting('amp-design-selector') ) {
			$social_check = true;
		}
		if ( '4' !== ampforwp_get_setting('amp-design-selector') && defined('AMPFORWP_DM_SOCIAL_CHECK') && 'true' === AMPFORWP_DM_SOCIAL_CHECK ) {
			$social_check = true;
		}
		if( ampforwp_get_setting('enable-single-social-icons') == true || defined('AMPFORWP_DM_SOCIAL_CHECK') && AMPFORWP_DM_SOCIAL_CHECK === 'true' )  {
				if( (is_singular() || $social_check_page ) &&  is_socialshare_or_socialsticky_enabled_in_ampforwp() ) {
					if ( empty( $data['amp_component_scripts']['amp-social-share'] ) ) {
						$data['amp_component_scripts']['amp-social-share'] = 'https://cdn.ampproject.org/v0/amp-social-share-0.1.js';
					}
				}
			}

		// Facebook Like Script
		$fb_like = false;
	    $isBBPress = (function_exists('is_bbpress') ? is_bbpress() : false );
	    if ( true == ampforwp_get_setting('ampforwp-facebook-like-button') ){
	     if ( is_single() && ( true == ampforwp_get_setting('enable-single-social-icons') || (true == ampforwp_get_setting('ampforwp-social-share') && $social_check) ) && !checkAMPforPageBuilderStatus(ampforwp_get_the_ID()) && !$isBBPress) {
	        $fb_like = true;    
	      }
	      if ( is_page() && ( true == ampforwp_get_setting('ampforwp-page-sticky-social') || ( $social_check_page && !checkAMPforPageBuilderStatus(ampforwp_get_the_ID()) ) ) ) {
	        $fb_like = true;
	      }
	      if ( true == ampforwp_get_setting('enable-single-social-icons') && checkAMPforPageBuilderStatus(ampforwp_get_the_ID()) && is_singular()) {
	        $fb_like = true;
	      }
	    }
	    if ( true == $fb_like ) {
	      if(empty($data['amp_component_scripts']['amp-facebook-like'])){
	        $data['amp_component_scripts']['amp-facebook-like'] = 'https://cdn.ampproject.org/v0/amp-facebook-like-0.1.js';
	      }      
	    }
		return $data;
	}	

	add_filter( 'amp_post_template_data', 'ampforwp_add_amp_related_scripts', 20 );
	function ampforwp_add_amp_related_scripts( $data ) {
		global $redux_builder_amp;
		// Adding Sidebar Script
		if ( isset($redux_builder_amp['ampforwp-amp-menu']) && $redux_builder_amp['ampforwp-amp-menu'] && 4 != $redux_builder_amp['amp-design-selector'] ) { 
			if ( empty( $data['amp_component_scripts']['amp-sidebar'] ) ) {
				$data['amp_component_scripts']['amp-sidebar'] = 'https://cdn.ampproject.org/v0/amp-sidebar-0.1.js';
			}
		}
		return $data;
	}

	// 8. Add Main tag as a Wrapper
	// Removed this code after moving to design manager

	// 9. Advertisement code
		// Moved to ads-functions.php		 
	// 10. Analytics Area
		// Moved to analytics-functions.php
	// 11. Strip unwanted codes and tags from the_content
		add_action( 'pre_amp_render_post','ampforwp_strip_invalid_content');
		function ampforwp_strip_invalid_content() {
			add_filter( 'the_content', 'ampforwp_the_content_filter', 2 );
		}
		function ampforwp_the_content_filter( $content ) {
				 $content = preg_replace('/property=[^>]*/', '', $content);
				 $content = preg_replace('/vocab=[^>]*/', '', $content);
				 $content = preg_replace('/noshade=[^>]*/', '', $content);
				 $content = preg_replace('/contenteditable=[^>]*/', '', $content);
				 $content = preg_replace('/non-refundable=[^>]*/', '', $content);
				 $content = preg_replace('/security=[^>]*/', '', $content);
				 $content = preg_replace('/deposit=[^>]*/', '', $content);
				 $content = preg_replace('/nowrap="nowrap"/', '', $content);
				 $content = preg_replace('#<comments-count.*?>(.*?)</comments-count>#i', '', $content);
				 $content = preg_replace('#<badge.*?>(.*?)</badge>#i', '', $content);
				 $content = preg_replace('#<plusone.*?>(.*?)</plusone>#i', '', $content);
				 $content = preg_replace('#<col.*?>#i', '', $content);
				 //Removed because class is being removed from table #2699
				 $content = preg_replace('/href="javascript:void*/', ' ', $content);
				 // Convert the Wistia embed into URL to build amp-wistia-player and remove unnecesarry wistia code
				 /* phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript */
				 $content = preg_replace('/<script src="(https?).*(\/\/fast|support)(\.wistia\.com\/)(embed\/medias\/)([0-9|\w]+)(.*?)<\/script>/', "$1:$2$3$4$5\n", $content);
				 $content = preg_replace('/<div class="wistia_responsive_padding" (.*?)>/', "", $content);
				 $content = preg_replace('/<div class="wistia_responsive_wrapper" (.*?)>/', "", $content);
				 $content = preg_replace('/<div class="wistia_embed (.*?)>/', "", $content);
				 $content = preg_replace('/<div class="wistia_swatch" (.*?)>/', "", $content);
				 // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
				 $content = preg_replace('/<img(.*?)src="https:\/\/fast.wistia.com\/embed\/(.*?)"(.*?)\/>/', "", $content);
				 
				 $content = preg_replace('/<script[^>]*>.*?<\/script>/i', '', $content);
				 //for removing attributes within html tags
				 $content = preg_replace('/(<[^>]+) onclick=".*?"/', '$1', $content);
				 // Remove alt attribute from the div tag #2093 
				 $content = preg_replace('/<div(.*?) alt=".*?"(.*?)/', '<div $1', $content);
				 $content = preg_replace('/(<[^>]+) ref=".*?"/', '$1', $content);
				 $content = preg_replace('/(<[^>]+) imap=".*?"/', '$1', $content);
				 $content = preg_replace('/(<[^>]+) spellcheck/', '$1', $content);
				 $content = preg_replace('/<font(.*?)>(.*?)<\/font>/', '$2', $content);
				 $content = preg_replace('/<script[^>]*>.*?<\/script>/i', '', $content);
				/// simpy add more elements to simply strip tag but not the content as so
				/// Array ("p","font");
				$tags_to_strip = Array("thrive_headline","type","place","state","city" );
				$tags_to_strip = apply_filters('ampforwp_strip_bad_tags', $tags_to_strip);
				foreach ($tags_to_strip as $tag)
				{
				   $content = preg_replace("/<\\/?" . $tag . "(.|\\s)*?>/",'',$content);
				}
				// regex on steroids from here on
				 $content = preg_replace('/<like\s(.*?)>(.*)<\/like>/i', '', $content);
				 $content = preg_replace('/<g:plusone\s(.*?)>(.*)<\/g:plusone>/i', '', $content);
				 $content = preg_replace('/imageanchor="1"/i', '', $content);
				 $content = preg_replace('/<plusone\s(.*?)>(.*?)<\/plusone>/', '', $content);
				 $content = preg_replace('/xml:lang=[^>]*/', '', $content);
				// Removing the type attribute from the <ul> (Improved after 0.9.63)
				 $content = preg_replace('/<ul(.*?)\btype=".*?"(.*?)/','<ul $1',$content);
				 //Convert the Twitter embed into url for better sanitization #1010
				  $content = preg_replace("/<blockquote(\s)class=\"twitter-(.*?)\"[^>](.*?)<a href=\"(https:\/\/twitter.com\/([a-zA-Z0-9_]{1,20})\/status\/)(.*?)\">(.*?)<\/blockquote>/si", "\n$4$6", $content);
				  // Convert the Soundcloud embed into URL to build amp-soundcloud
				  $content = preg_replace('/<iframe .*(https?).*(\/\/api\.soundcloud\.com\/tracks\/)([0-9]+)(.*)<\/iframe>/', "$1:$2$3", $content);
				  // for readability attibute in div tag
				  $content = preg_replace('/readability=[^>]*/', '', $content);
				  // removing sl-processed attribute
				  $content = preg_replace('/(<[^>]+) sl-processed=".*?"/', '$1', $content);
				  // ga-on
				  $content = preg_replace('/(<[^>]+) ga-on=".*?"/', '$1', $content);
				  // ga-event-category
				  $content = preg_replace('/(<[^>]+) ga-event-category=".*?"/', '$1', $content);
				   // aria-current
				  $content = preg_replace('/(<[^>]+) aria-current=".*?"/', '$1', $content);

				  // Gallery Break fix 
				  $content = preg_replace('/[^\[]\[gallery(.*?)ids=(.*?)\]/', '</p>[gallery$1ids=$2]</p>', $content);
				  // value attribute from anchor tag #2262
				  $content = preg_replace('/<a(.*?)(value=".*?")(.*?)>/', '<a$1$3>', $content);
				  //Compatibility with Cloudflare stream. #3230
				  $content = preg_replace('/<stream[^>]* src="(.*?)"><\/stream>/', '<amp-iframe width="175" height="100" sandbox="allow-scripts allow-same-origin" layout="responsive" allowfullscreen src="https://iframe.cloudflarestream.com/$1"></amp-iframe>', $content);
				  //Compatibility with amp-connatix-player #3524
				  $content = preg_replace('/<script id="(.*?)">(.*?)playerId:\s\'(.*?)\'(.*?)mediaId:\s\'(.*?)\'(.*?)<\/script>/s', '<amp-connatix-player data-player-id="$3" data-media-id = "$5" layout="responsive" width="16" height="9"></amp-connatix-player>', $content);
				  // Fixed CSS syntax error when redgifs iframe is embedded # 4422
				   if(preg_match("/<div\s+style='(.*?)\)'><iframe(.*?)redgifs\.com(.*?)<\/iframe>/", $content)){
				  	  $content = preg_replace("/<div\s+style='(.*?)\)'><iframe(.*?)redgifs\.com(.*?)<\/iframe>/", "<div style='$1'><iframe$2redgifs.com$3</iframe>", $content);
				   }

				return $content;
		}

	// TODO: Remove this function if it's not in use
	// 11.1 Strip unwanted codes and tags from wp_footer for better compatibility with Plugins
		if ( ! is_customize_preview() && ! ampforwp_is_non_amp("non_amp_check_convert") ) {
			add_action( 'pre_amp_render_post','ampforwp_strip_invalid_content_footer');
		}
		function ampforwp_strip_invalid_content_footer() {
			add_filter( 'wp_footer', 'ampforwp_the_content_filter_footer', 1 );
		}
		function ampforwp_the_content_filter_footer( $content ) {
            remove_all_actions('wp_footer');
				return $content;
		}

	// 12. Add Logo URL in the structured metadata
	// Moved to structured-data-functions.php

	// 13. Add Custom Placeholder Image for Structured Data.
	// if there is no image in the post, then use this image to validate Structured Data.
	// Moved to structured-data-functions.php

// 14. Adds a meta box to the post editing screen for AMP on-off on specific pages.
/**
 * Adds a meta box to the post editing screen for AMP on-off on specific pages
*/
function ampforwp_title_custom_meta() {
    global $redux_builder_amp;
    global $post_id;
    $post_types = ampforwp_get_all_post_types();

    if ( $post_types && (ampforwp_role_based_access_options() == true && ( current_user_can('edit_posts') || current_user_can('edit_pages') ) ) ) { // If there are any custom public post types.

        foreach ( $post_types  as $post_type ) {

          if( $post_type == 'amp-cta' || $post_type == 'amp-optin' ) {
							continue;
          }
          // Posts
	      if( ampforwp_get_setting('amp-on-off-for-all-posts') && $post_type == 'post' ) {
	        add_meta_box( 'ampforwp_title_meta', esc_html__( 'Show AMP for Current Post?','accelerated-mobile-pages' ), 'ampforwp_title_callback', 'post','side' );      
	      }
	      // Pages
          $frontpage_id = ampforwp_get_the_ID();
          $page_for_posts = intval(get_option( 'page_for_posts' ));
          if( ampforwp_get_setting('amp-on-off-for-all-pages') && $post_type == 'page' || ( true == ampforwp_get_setting('amp-frontpage-select-option') && $post_id == $frontpage_id ) || ($post_id == $page_for_posts)) {
              add_meta_box( 'ampforwp_title_meta', esc_html__( 'Show AMP for Current Page?' ,'accelerated-mobile-pages'), 'ampforwp_title_callback','page','side' );
          }
          // Custom Post Types
          if( $post_type !== 'page' && $post_type !== 'post' ) {
            add_meta_box( 'ampforwp_title_meta', esc_html__( 'Show AMP for Current Page?','accelerated-mobile-pages' ), 'ampforwp_title_callback', $post_type,'side' );          
          }
          
          }

        }
    }

add_action( 'add_meta_boxes', 'ampforwp_title_custom_meta' );

/**
 * Outputs the content of the meta box for AMP on-off on specific pages
 */
function ampforwp_title_callback( $post ) {
	global $redux_builder_amp;
    wp_nonce_field( basename( __FILE__ ), 'ampforwp_title_nonce' );
    $ampforwp_stored_meta = get_post_meta( $post->ID );
    $hide_show = '';
    if(isset($ampforwp_stored_meta['ampforwp-amp-on-off'])){
    	$hide_show = $ampforwp_stored_meta['ampforwp-amp-on-off'];
    }else{
    	$hide_show = ampforwp_get_setting('amp-pages-meta-default');
    }
    if(!isset($ampforwp_stored_meta['ampforwp-amp-on-off'])){
    	$ampforwp_stored_meta['ampforwp-amp-on-off'][0] = 'default';
    }
    $preview_query_args = array();
	$preview_link = $list_of_posts = $skip_this_post = '';
	$preview_query_args = array(AMPFORWP_AMP_QUERY_VAR => 1);
	$preview_link = get_preview_post_link($post, $preview_query_args );
	$exclude_post_value = array();
	if ( ampforwp_posts_to_remove() && $post->post_type == 'post' ) {
		$ampforwp_stored_meta['ampforwp-amp-on-off'][0] = 'hide-amp';
	}
	$exclude_post_value = ampforwp_exclude_posts();
	// if hide-amp is selected, add it in the $exclude_post_value
	if ( 'hide-amp' == ( isset($ampforwp_stored_meta['ampforwp-amp-on-off'][0]) && $ampforwp_stored_meta['ampforwp-amp-on-off'][0] ) && 'page' != $post->post_type ) {
		if ( ! in_array($post->ID, $exclude_post_value) ) {
			$exclude_post_value[] = $post->ID;
			set_transient('ampforwp_exclude_post_transient', $exclude_post_value);
		} 
	}
	if ( ( 'default' == ( isset($ampforwp_stored_meta['ampforwp-amp-on-off'][0]) && $ampforwp_stored_meta['ampforwp-amp-on-off'][0] ) || !isset($ampforwp_stored_meta['ampforwp-amp-on-off'][0]) ) && 'page' != $post->post_type ) {
		if ( in_array($post->ID, $exclude_post_value) ) {
			$exclude_post_value = array_flip($exclude_post_value);
			unset($exclude_post_value[$post->ID] );
			$exclude_post_value = array_flip($exclude_post_value);
			set_transient('ampforwp_exclude_post_transient', $exclude_post_value);
		} 
	}
	if ($post->post_type == 'page' && ampforwp_get_setting('amp-pages-meta-default') == 'hide' && ($hide_show=='hide' || $hide_show=='hide-amp')) {
		$ampforwp_stored_meta['ampforwp-amp-on-off'][0] = 'hide-amp';
	}?>
    <p>
        <div class="prfx-row-content">
            <label class="meta-radio-two" for="ampforwp-on-off-meta-radio-one">
                <input type="radio" name="ampforwp-amp-on-off" id="ampforwp-on-off-meta-radio-one" value="default"  checked="checked" <?php if ( isset ( $ampforwp_stored_meta['ampforwp-amp-on-off'] ) ) checked( $ampforwp_stored_meta['ampforwp-amp-on-off'][0], 'default' ); ?>>
                <?php esc_html_e( 'Show', 'accelerated-mobile-pages' )?>
            </label>
            <label class="meta-radio-two" for="ampforwp-on-off-meta-radio-two">
                <input type="radio" name="ampforwp-amp-on-off" id="ampforwp-on-off-meta-radio-two" value="hide-amp" <?php if ( isset ( $ampforwp_stored_meta['ampforwp-amp-on-off'] ) ) checked( $ampforwp_stored_meta['ampforwp-amp-on-off'][0], 'hide-amp' ); ?>>
                <?php esc_html_e( 'Hide', 'accelerated-mobile-pages' )?>
            </label>
             <?php
             if($post->post_status == 'publish') {
	             add_thickbox(); ?>
	             <div class="ampforwp-preview-button-container"> 
					<input alt="#TB_inline?height=1135&amp;width=718&amp;inlineId=ampforwp_preview" title="AMP Mobile Preview" class="thickbox ampforwp-preview-button preview button amp-preview-button" type="button" value="Preview AMP" />  
				 </div>
			<?php } ?>   
        </div>
    </p>
    <!-- AMP Preview --> 
    <div id="ampforwp_preview" style="display:none">
	 	<div id="ampforwp-preview-format">
	        <div class="row">
	            <div class="col-sm-12 margin-top-bottom text-center">
	            	<div class="ampforwp-preview-phone-frame-wrapper">
	                    <div class="ampforwp-preview-phone-frame">
	                        <div class="ampforwp-preview-container" id="amp-preview-iframe" data-src="<?php echo esc_url($preview_link); ?>">
	                        </div> 
	                    </div>
	                </div>
	            </div>
	        </div>
    	</div>
	</div>   
<?php 
	if ( get_option('page_on_front') == $post->ID && false == $redux_builder_amp['amp-frontpage-select-option'] ) {
		echo sprintf(('<p class="afp"><b> %s </b> <a class="" target= "_blank" href="%s">%s</a></p>'), esc_html__('We have detected that you have not setup the FrontPage for AMP,','accelerated-mobile-pages'),esc_url(admin_url("admin.php?page=amp_options&tabid=opt-text-subsection#redux_builder_amp-ampforwp-homepage-on-off-support")),esc_html__('Click here to setup','accelerated-mobile-pages'));
	}
	if ( true == $redux_builder_amp['amp-frontpage-select-option'] && $post->ID == $redux_builder_amp['amp-frontpage-select-option-pages'] ) {
		echo sprintf('<p>%s</p>', esc_html__('AMP FrontPage', 'accelerated-mobile-pages' ));
	}
}

/**
 * Adds a meta box to the post editing screen for Mobile Redirection on-off on specific pages
 */ 

function ampforwp_mobile_redirection() {
  	global $redux_builder_amp;
    $post_types = ampforwp_get_all_post_types();

    if ( $post_types && ampforwp_role_based_access_options() == true ) { // If there are any custom public post types.

        foreach ( $post_types  as $post_type ) {

	        if( $post_type == 'amp-cta' || $post_type == 'amp-optin' ) {
				continue;
	        }
	         // Posts
	         if( ampforwp_get_setting('amp-on-off-for-all-posts') && $post_type == 'post' ) {
	        	if ( ampforwp_get_setting('amp-mobile-redirection') ) {
	        		add_meta_box( 'ampforwp_title_meta_redir', esc_html__( 'Mobile Redirection for Current Page?','accelerated-mobile-pages' ), 'ampforwp_title_callback_redirection', 'post','side' );
	        	}
	        }
	        // Pages
          	if( ampforwp_get_setting('amp-on-off-for-all-pages') && $post_type == 'page' ) {
	          	if ( ampforwp_get_setting('amp-mobile-redirection') ) {
		          	add_meta_box( 'ampforwp_title_meta_redir', esc_html__( 'Mobile Redirection for Current Page?' ,'accelerated-mobile-pages'), 'ampforwp_title_callback_redirection','page','side' );
	               }
	            }
	          // Custom Post Types
	         if( $post_type !== 'page' && $post_type !== 'post' ) {
	        	if (ampforwp_get_setting('amp-mobile-redirection') ) {
	        		add_meta_box( 'ampforwp_title_meta_redir', esc_html__( 'Mobile Redirection for Current Page?','accelerated-mobile-pages' ), 'ampforwp_title_callback_redirection', $post_type,'side' );
	        		}
	        	}
          	}

        }
    }

add_action( 'add_meta_boxes', 'ampforwp_mobile_redirection' );

/**
 * Outputs the content of the meta box for Mobile Redirection on-off on specific pages
 */
function ampforwp_title_callback_redirection( $post ) {
    wp_nonce_field( basename( __FILE__ ), 'ampforwp_title_nonce' );
    $ampforwp_redirection_stored_meta = get_post_meta( $post->ID );?>
    <p>
        <div class="prfx-row-content">
            <label for="meta-redirection-radio-one">
                <input type="radio" name="ampforwp-redirection-on-off" id="meta-redirection-radio-one" value="enable"  checked="checked" <?php if ( isset ( $ampforwp_redirection_stored_meta['ampforwp-redirection-on-off'] ) ) checked( $ampforwp_redirection_stored_meta['ampforwp-redirection-on-off'][0], 'enable' ); ?>>
                <?php esc_html_e( 'Enable', 'accelerated-mobile-pages' )?>
            </label>
            <label for="meta-redirection-radio-two">
                <input type="radio" name="ampforwp-redirection-on-off" id="meta-redirection-radio-two" value="disable" <?php if ( isset ( $ampforwp_redirection_stored_meta['ampforwp-redirection-on-off'] ) ) checked( $ampforwp_redirection_stored_meta['ampforwp-redirection-on-off'][0], 'disable' ); ?>>
                <?php esc_html_e( 'Disable', 'accelerated-mobile-pages' )?>
            </label>
        </div>
    </p>

    <?php
}

function ampforwp_meta_redirection_status(){
	global $post;
	$ampforwp_redirection_post_on_off_meta = '';

	if ( (! is_404() && ampforwp_is_search_has_results() )  && (is_singular() ||  ampforwp_is_front_page()) ) {
		$ampforwp_redirection_post_on_off_meta = get_post_meta( $post->ID,'ampforwp-redirection-on-off',true);
	}

	if ( empty( $ampforwp_redirection_post_on_off_meta ) ) {
		$ampforwp_redirection_post_on_off_meta = 'enable';
	}
	$ampforwp_redirection_post_on_off_meta = apply_filters('ampforwp_disable_mobile_redirection', $ampforwp_redirection_post_on_off_meta);
	return $ampforwp_redirection_post_on_off_meta;

}

// Added the check to see if any search results exists
function ampforwp_is_search_has_results() {
    return 0 != $GLOBALS['wp_query']->found_posts;
}

/**
 * Saves the custom meta input for AMP on-off on specific pages
 */
function ampforwp_title_meta_save( $post_id ) {
	if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') ) {
         return ;
    }
	$ampforwp_amp_status = '';
    // Checks save status
    $is_autosave = wp_is_post_autosave( $post_id );
    $is_revision = wp_is_post_revision( $post_id );
	/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
    $is_valid_nonce = ( isset( $_POST[ 'ampforwp_title_nonce' ] ) && wp_verify_nonce( $_POST[ 'ampforwp_title_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false';
	/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
    $is_valid_nonce_ia = ( isset( $_POST[ 'ampforwp_ia_nonce' ] ) && wp_verify_nonce( $_POST[ 'ampforwp_ia_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false';

    // Exits script depending on save status
    if ( $is_autosave || $is_revision || !$is_valid_nonce || !$is_valid_nonce_ia) {
        return;
    }
	
    // Checks for radio buttons and saves if needed
    if( isset( $_POST[ 'ampforwp-amp-on-off' ] ) ) {
		/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
        $ampforwp_amp_status = sanitize_text_field( $_POST[ 'ampforwp-amp-on-off' ] );
        update_post_meta( $post_id, 'ampforwp-amp-on-off', $ampforwp_amp_status );
    }
    if( isset( $_POST[ 'ampforwp-ia-on-off' ] ) ) {
		/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
        $ampforwp_amp_status = sanitize_text_field( $_POST[ 'ampforwp-ia-on-off' ] );
        update_post_meta( $post_id, 'ampforwp-ia-on-off', $ampforwp_amp_status );
    }
     if( isset( $_POST[ 'ampforwp-redirection-on-off' ] ) ) {
		/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
        $ampforwp_redirection_status = sanitize_text_field( $_POST[ 'ampforwp-redirection-on-off' ] );
        update_post_meta( $post_id, 'ampforwp-redirection-on-off', $ampforwp_redirection_status );
    }
	if( isset( $_POST[ 'ampforwp_filtered_post_ids' ] ) ) {
		/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized	 */
		$recent_posts = $_POST[ 'ampforwp_filtered_post_ids' ];
		update_post_meta( $post_id, 'ampforwp_filtered_post_ids', $recent_posts );
	}
}
add_action( 'save_post', 'ampforwp_title_meta_save' );

// 15. Disable New Relic's extra script that its adds in AMP pages.
add_action( 'amp_post_template_data', 'ampforwp_disable_new_relic_scripts' );
if ( ! function_exists('ampforwp_disable_new_relic_scripts') ) {
		function ampforwp_disable_new_relic_scripts( $data ) {
			if ( ! function_exists( 'newrelic_disable_autorum' ) ) {
				return $data;
			}
			if ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) {
				newrelic_disable_autorum();
			}
			return $data;
		}
}
// TODO: Remove this function if its not in use
// 16. Remove Unwanted Scripts
if ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) {
	add_action( 'wp_enqueue_scripts', 'ampforwp_remove_unwanted_scripts',20 );
}
function ampforwp_remove_unwanted_scripts() {
  wp_dequeue_script('jquery');
}
// Remove Print Scripts and styles
function ampforwp_remove_print_scripts() {
	if ( ampforwp_is_amp_endpoint() ) {
	    function ampforwp_remove_all_scripts() {
	        global $wp_scripts;
	        $wp_scripts->queue = array();
	    }
	    add_action('wp_print_scripts', 'ampforwp_remove_all_scripts', 100);
	    function ampforwp_remove_all_styles() {
	        global $wp_styles;
	        $wp_styles->queue = array();
	    }
	    add_action('wp_print_styles', 'ampforwp_remove_all_styles', 100);

			// Remove Print Emoji for Nextgen Gallery support
			remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
			remove_action( 'wp_print_styles', 'print_emoji_styles' );
	}
}
// TODO: Remove this function if its not in use
// add_action( 'template_redirect', 'ampforwp_remove_print_scripts' );

// 19. Remove Canonical tags
function ampforwp_amp_remove_actions() {
    if ( is_home() || is_front_page() || is_archive() || is_search() ) {
        remove_action( 'amp_post_template_head', 'AMPforWP\\AMPVendor\\amp_post_template_add_canonical' );
    }
}
add_action( 'amp_post_template_head', 'ampforwp_amp_remove_actions', 9 );

// 21. Remove Schema data from All In One Schema.org Rich Snippets Plugin 
add_action( 'pre_amp_render_post', 'ampforwp_remove_schema_data' );
function ampforwp_remove_schema_data() {
	$amp_custom_content_enable = '';
	remove_filter('the_content','display_rich_snippet');
    	// Ultimate Social Media PLUS Compatiblity Added
	remove_filter('the_content','sfsi_plus_beforaftereposts');
	remove_filter('the_content','sfsi_plus_beforeafterblogposts');

	$amp_custom_content_enable = get_post_meta( ampforwp_get_the_ID() , 'ampforwp_custom_content_editor_checkbox', true);
	// Thrive Content Builder
	if ($amp_custom_content_enable == 'yes') {
		remove_filter( 'the_content', 'tve_editor_content', 10 );
	}

	// Removed GTranslate Flags from AMP pages #819
	remove_filter('wp_nav_menu_items', 'gtranslate_menu_item', 10, 2);

	// Remove elements of WP Like Button plugin #841
	remove_filter('the_content', 'fb_like_button');
	remove_filter('the_excerpt', 'fb_like_button');

	// Compatibility issue with the rocket lazy load  #907
    remove_filter( 'the_content' , 'rocket_lazyload_images', PHP_INT_MAX );
    remove_filter( 'the_content', 'rocket_lazyload_iframes', PHP_INT_MAX );
	add_filter( 'do_rocket_lazyload', '__return_false' );

	// Compatibility with the CIARO theme #4220
	if(defined('CAIRO_THEME_VERSION')){
		remove_filter( 'amp_post_template_file', 'amp_set_custom_template');
	}

	// Remove Popups and other elements added by Slider-in Plugin
	define('WDSI_BOX_RENDERED', true, false); // when third argument is true, getting Deprecated debug warning in php 7.3.2
	
	// Remove Filters added by third party plugin through class
	if ( function_exists('ampforwp_remove_filters_for_class')) {
		//Remove Disallowed 'like' tag from facebook Like button by Ultimate Facebook
		ampforwp_remove_filters_for_class( 'the_content', 'Wdfb_UniversalWorker', 'inject_facebook_button', 10 );
		//Removing the Monarch social share icons from AMP
		ampforwp_remove_filters_for_class( 'the_content', 'ET_Monarch', 'display_inline', 10 );
		ampforwp_remove_filters_for_class( 'the_content', 'ET_Monarch', 'display_media', 9999 );
		//Compatibility with wordpress twitter bootstrap #525
		ampforwp_remove_filters_for_class( 'the_content', 'ICWP_WPTB_CssProcessor_V1', 'run', 10 );
		//Perfect SEO url + Yoast SEO Compatibility #982
		ampforwp_remove_filters_for_class( 'wpseo_canonical', 'PSU', 'canonical', 10 );
		// SmartMag Compatibility 
		ampforwp_remove_filters_for_class( 'amp_post_template_dir', 'Bunyad_Theme_Amp', 'template_dir', 10 );
		ampforwp_remove_filters_for_class( 'amp_post_template_data', 'Bunyad_Theme_Amp', 'setup_data', 10 );
		// Remove Jannah Image Lazy Load #2224
		ampforwp_remove_filters_for_class( 'wp_get_attachment_image_attributes', 'TIELABS_FILTERS', 'lazyload_image_attributes', 8 );
		// Social Share by Supsystic Compatibility #1509
		ampforwp_remove_filters_for_class( 'the_content', 'SocialSharing_Projects_Handler', 'applyContentCallback', 10 );
		ampforwp_remove_filters_for_class( 'amp_post_template_head', 'SocialSharing_Projects_Handler', 'addedStylesForAMP', 10 );
		// Remove JPG, PNG Compression and Optimization Plugin Lazy Load #2322
		ampforwp_remove_filters_for_class( 'the_content', 'Wp_Image_compression', 'filter_images', 200 );
		// Remove Publisher theme menu in amp #2672
		ampforwp_remove_filters_for_class( 'wp_nav_menu_args', 'BF_Menus', 'walker_front', 10 );
		// Removing Smush Pro Lazy Load plugin #2990
		ampforwp_remove_filters_for_class( 'the_content', 'WP_Smush_Lazy_Load', 'set_lazy_load_attributes', 100 );
		ampforwp_remove_filters_for_class( 'post_thumbnail_html', 'WP_Smush_Lazy_Load', 'set_lazy_load_attributes', 100 );
		// Removing A3 Lazy Load plugin #2872
		ampforwp_remove_filters_for_class( 'the_content', 'A3_Lazy_Load', 'filter_content_images', 100 );
		//optimole plugin images get removed in AMP #3073
		ampforwp_remove_filters_for_class( 'optml_content_url', 'Optml_Url_Replacer', 'build_image_url', 1, 2 );
		//Removed style tag appending before Html tag for themify pagebuilder #3376 
		ampforwp_remove_filters_for_class( 'the_content', 'Themify_Builder', 'builder_show_on_front', 11 );
		ampforwp_remove_filters_for_class( 'the_content', 'Themify_Builder', 'builder_clear_static_content', 1 );
		if(defined('EZOIC__PLUGIN_NAME')){
			ampforwp_remove_filters_for_class( 'shutdown', 'Ezoic_Namespace\Ezoic_Integration_Public', 'ez_buffer_end', 0 );
		}	
		if (class_exists('AddWidgetAfterContent')) {
			ampforwp_remove_filters_for_class( 'the_content', 'AddWidgetAfterContent', 'insert_after_content', 10 );
		}
		// Yoast Schema Compatibility #3332
		if( ampforwp_get_setting('ampforwp-seo-selection') != "yoast"){
			ampforwp_remove_filters_for_class( 'amp_post_template_head', 'WPSEO_Schema', 'json_ld', 9 );
		}
		//SiteOrigin Page builder compatibilty with AMP Frontpage
		if ( ampforwp_is_front_page() ) {
				ampforwp_remove_filters_for_class( 'the_content', 'SiteOrigin_Panels', 'generate_post_content', 10 );
		}
		//Addition HTTP added in canonical from Yoast SEO Multilingual #4970
		if (class_exists('WPML_WPSEO_Filters')) {
			ampforwp_remove_filters_for_class( 'wpseo_canonical', 'WPML_WPSEO_Filters', 'canonical_filter', 10 );
		}
		//SiteOrigin Page builder compatibilty
		//Neglect SOPB If Custom AMP Editor is checked
	      if ( $amp_custom_content_enable === 'yes') {
				ampforwp_remove_filters_for_class( 'the_content', 'SiteOrigin_Panels', 'generate_post_content', 10 );
				ampforwp_remove_filters_for_class( 'the_content', 'Elementor\Frontend', 'apply_builder_in_content', 9 );
			}
			if(class_exists('Wppr_Public')){
				remove_action('amp_post_template_css', array('Wppr_Public', 'amp_styles')); 
				remove_action('wppr_review_option_rating_css', array('Wppr_Public', 'amp_width_support')); 
			}
			if (class_exists('WPSEO_Video_Embed')) {
		 		ampforwp_remove_filters_for_class( 'render_block', 'WPSEO_Video_Embed', 'replace_youtube_block_html', 10 );
			}		
	}
	//Removing the WPTouch Pro social share links from AMP
		remove_filter( 'the_content', 'foundation_handle_share_links_bottom', 100 );
	//Removing the space added by the Google adsense #967
		remove_filter( 'the_content', 'ga_strikable_add_optimized_adsense_code');
	//Removing Social Media Share Buttons & Social Sharing Icons #1135
		remove_filter('the_content', 'sfsi_social_buttons_below');
	// Removing WordPress Social Share Buttons #1272
    	remove_filter ('the_content', 'FTGSB');
    // Jannah Theme Lazy Load Compatibility
    	remove_filter( 'wp_get_attachment_image_attributes', 'jannah_lazyload_image_attributes', 8, 3 );
    // Goodlife Theme Lazy Load Compatibility
    	remove_filter( 'post_thumbnail_html', 'thb_src_attribute', 10, 3 );
    // MediaAce lazy load compatibility
    	remove_filter( 'wp_get_attachment_image_attributes', 'mace_lazy_load_attachment', 10, 3);
		remove_filter( 'the_content', 'mace_lazy_load_content_image' );
	// SEO Post Content Links compatibility
	if ( class_exists('cl_core') ) {
		remove_action('the_content', array( 'cl_core', 'getPost' ) );
	}
	// Theia Post Slider compatibility
	if ( class_exists('TpsContent') ) {
		remove_action('the_post', 'TpsContent::the_post', 999999);
	}
	// Jarida Theme Compatibility #1842
	remove_filter( 'option_posts_per_page', 'tie_option_posts_per_page' );

	// IWappPress Compatibility #1876 #1864
	remove_action('loop_start', 'iWappPress_remove_post_date');

	// Facebook Button by BestWebSoft Compatibility #1740
	remove_filter( 'the_content', 'fcbkbttn_display_button' );
	
	// Click Mag compatibility #2796
	remove_filter( 'amp_post_template_file', 'mvp_amp_set_custom_template', 10, 3 );
	remove_action('amp_post_template_head','mvp_amp_google_font');

	// Digg Digg Compatibility
    remove_filter('the_excerpt', 'dd_hook_wp_content');
    remove_filter('the_content', 'dd_hook_wp_content');

	// Removing Voux theme's lazyloading #2263
	remove_filter( 'the_content', 'thb_lazy_images_filter', 200 );
	remove_filter( 'wp_get_attachment_image_attributes', 'thb_lazy_low_quality', 10, 3 );
	//Custom Frontpage not working when we select the option to display blog in enfold theme #2943
	remove_filter('pre_option_page_for_posts', 'avia_page_for_posts_filter');
		// WP Rocket #3062
	if ( function_exists('rocket_init') ) {
		global $wp_filter;
		remove_filter( 'wp_resource_hints', 'rocket_dns_prefetch', 10, 2 );
		add_filter( 'do_rocket_lazyload', '__return_false' );
		unset( $wp_filter['rocket_buffer'] );
		// this filter is documented in inc/front/protocol.php.
		$do_rocket_protocol_rewrite = apply_filters( 'do_rocket_protocol_rewrite', false );
 		if ( function_exists('get_rocket_option') && ( get_rocket_option( 'do_cloudflare', 0 ) && get_rocket_option( 'cloudflare_protocol_rewrite', 0 ) || $do_rocket_protocol_rewrite ) ) {
			remove_filter( 'rocket_buffer', 'rocket_protocol_rewrite', PHP_INT_MAX );
			remove_filter( 'wp_calculate_image_srcset', 'rocket_protocol_rewrite_srcset', PHP_INT_MAX );
		}
	}
	//remove filter for Impreza theme lazyload feature 
	remove_filter( 'the_content', 'us_filter_content_for_lazy_load', 99, 1 );

	if( function_exists('rehub_framework_register_scripts')){
		remove_filter("ampforwp_template_locate", "rhampforwp_update_template_folder");
		remove_filter('amp_post_template_file', 'rehub_amp_delete_custom_title_section',11,3);
	}
	
	// Publisher theme lazy load #3063
	if( class_exists('Publisher') ){
		remove_filter( 'post_thumbnail_html', 'publisher_lazy_loading_img_tags', 6 );
		remove_filter( 'the_content', 'publisher_lazy_loading_img_tags', 6 );
	}
	if(ampforwp_get_setting('ampforwp-seo-yoast-schema') == false && ampforwp_get_setting('ampforwp-seo-selection') == 'yoast'){
		if( class_exists('WPSEO_Schema') ){
			add_filter('wpseo_json_ld_output', 'ampforwp_remove_yoast_json', 10, 1);
		}
	}
}
function ampforwp_remove_yoast_json($data){
    $data = array();
    return $data;
}	
// 22. Removing author links from comments Issue #180
if( ! function_exists( 'ampforwp_disable_comment_author_links' ) ) {
	function ampforwp_disable_comment_author_links( $author_link ){
		$ampforwp_is_amp_endpoint = ampforwp_is_amp_endpoint();
		if ( $ampforwp_is_amp_endpoint ) {
			return wp_strip_all_tags( $author_link );
		} else {
			return $author_link;
		}
	}
	add_filter( 'get_comment_author_link', 'ampforwp_disable_comment_author_links' );
}

// 23. The analytics tag appears more than once in the document. This will soon be an error
remove_action( 'amp_post_template_head', 'quads_amp_add_amp_ad_js');

// 24. Seperate Sticky Single Social Icons
// TO DO: we can directly call social-icons.php instead of below code
add_action('amp_post_template_footer','ampforwp_sticky_social_icons');
function ampforwp_sticky_social_icons(){
	global $redux_builder_amp;
	// Social share in AMP 
	$amp_permalink = $facebook_app_id = $amp_permalink_fb_messenger = "";
	$facebook_app_id = ampforwp_get_setting('amp-facebook-app-id-messenger');
	if ( ampforwp_get_setting('ampforwp-social-share-amp')  ) {
		$amp_permalink = ampforwp_url_controller(get_the_permalink());
	} else{
		$amp_permalink = get_the_permalink();
	}
	if($facebook_app_id){
		$amp_permalink_fb_messenger = untrailingslashit($amp_permalink). '&app_id='. $facebook_app_id;
	}
	if( (ampforwp_get_setting('enable-single-social-icons') == true && is_single()) || (is_page() && true == $redux_builder_amp['ampforwp-page-sticky-social']))  { 
		$image = '';
		if ( ampforwp_has_post_thumbnail( ) ){
			$image = ampforwp_get_post_thumbnail( 'url', 'full' );
		}
		$permalink = '';
		if(false == ampforwp_get_setting('enable-single-twitter-share-link')){
			$permalink = wp_get_shortlink();
		}
		else
			$permalink = $amp_permalink;
		?>
			<div class="s_so">
			<?php if ( true == ampforwp_get_setting('ampforwp-facebook-like-button') && false == ampforwp_get_setting('ampforwp-facebook-like-data-action')) {
			$facebook_like_url = '';
			$facebook_like_url = $amp_permalink;
			if ( $facebook_like_url ) { ?>
				<amp-facebook-like width=90 height=18
				 	layout="fixed"
				 	data-size="large"
				    data-layout="button_count"
				    <?php ampforwp_rel_attributes_social_links(); ?>
				    data-href="<?php echo esc_url($facebook_like_url); ?>">
				</amp-facebook-like>
			<?php }
			}elseif ( true == ampforwp_get_setting('ampforwp-facebook-like-button') && true == ampforwp_get_setting('ampforwp-facebook-like-data-action')){
			$fblikewidth = ampforwp_get_setting('ampforwp-facebook-like-width');
				if(empty($fblikewidth)){
					$fblikewidth = "140";
				}
			?>
			<amp-facebook-like <?php echo "width=". esc_attr($fblikewidth) ."" ?> height=18 style="margin-bottom:-18px;"
				layout="fixed"
				data-size="large"
				data-action="recommend"
				data-layout="button_count" <?php ampforwp_rel_attributes_social_links(); ?>
				data-href="<?php echo esc_url(get_the_permalink());?>">
			</amp-facebook-like><?php } ?> 
				<?php if($redux_builder_amp['enable-single-facebook-share'] == true)  { ?>
			    	<amp-social-share type="facebook" data-param-app_id="<?php echo esc_attr($redux_builder_amp['amp-facebook-app-id']); ?>" width="50" height="28"></amp-social-share>
			    <a title="facebook share" class="s_fb" target="_blank" <?php ampforwp_rel_attributes_social_links(); ?> href="https://www.facebook.com/sharer.php?u=<?php echo esc_url($amp_permalink); ?>"></a>	
			  	<?php } ?>
			  	<?php if(true == ampforwp_get_setting('enable-single-facebook-share-messenger')  && $amp_permalink_fb_messenger!=''){?>
			<a title="facebook share messenger"  <?php ampforwp_rel_attributes_social_links(); ?> target="_blank" href="fb-messenger://share/?link=<?php echo esc_url($amp_permalink_fb_messenger); ?>">
				<div class="a-so-i a-so-facebookmessenger">
					<amp-img src="<?php echo esc_url(AMPFORWP_IMAGE_DIR . '/messenger.png') ?>" width="20" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if(ampforwp_get_setting('enable-single-twitter-share') == true)  {
	    $data_param_data = ampforwp_get_setting('enable-single-twitter-share-handle');
	    $data_param_data = str_replace('@', '', $data_param_data);?>
	          <amp-social-share type="twitter"
	                            width="50"
	                            height="28"
	                            aria-label="twitter"
	                            <?php ampforwp_rel_attributes_social_links(); ?>
	                            data-param-url=""
                        		data-param-text="TITLE <?php echo esc_url($permalink).' '.esc_attr(ampforwp_translation( $redux_builder_amp['amp-translator-via-text'], 'via' )).' '.esc_attr($data_param_data) ?>"
	          ></amp-social-share>
			  	<?php } ?>
			  	<?php if($redux_builder_amp['enable-single-email-share'] == true)  { ?>
			    	<amp-social-share type="email"      width="50" height="28" aria-label="email" <?php ampforwp_rel_attributes_social_links(); ?>></amp-social-share>
			  	<?php } ?>
			  	<?php if($redux_builder_amp['enable-single-pinterest-share'] == true)  { ?>
			    	<amp-social-share type="pinterest"  width="50" height="28" aria-label="pinterest" <?php ampforwp_rel_attributes_social_links(); ?> data-param-media = "<?php echo esc_url($image); ?>"></amp-social-share>
			  	<?php } ?>
			  	<?php if($redux_builder_amp['enable-single-linkedin-share'] == true)  { ?>
			    	<amp-social-share type="linkedin" width="50" height="28" aria-label="linkedin" <?php ampforwp_rel_attributes_social_links(); ?>></amp-social-share>
			  	<?php } ?>
		  	<?php if(ampforwp_get_setting('enable-single-whatsapp-share') == true)  { ?>
			<a title="whatsapp share" <?php ampforwp_rel_attributes_social_links(); ?> href="https://api.whatsapp.com/send?text=<?php echo esc_attr(htmlspecialchars(get_the_title()))."&nbsp;".esc_url($amp_permalink);?>">
			<div class="a-so-i">
			    <amp-img src="data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgOTAgOTAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggaWQ9IldoYXRzQXBwIiBkPSJNOTAsNDMuODQxYzAsMjQuMjEzLTE5Ljc3OSw0My44NDEtNDQuMTgyLDQzLjg0MWMtNy43NDcsMC0xNS4wMjUtMS45OC0yMS4zNTctNS40NTVMMCw5MGw3Ljk3NS0yMy41MjIgICBjLTQuMDIzLTYuNjA2LTYuMzQtMTQuMzU0LTYuMzQtMjIuNjM3QzEuNjM1LDE5LjYyOCwyMS40MTYsMCw0NS44MTgsMEM3MC4yMjMsMCw5MCwxOS42MjgsOTAsNDMuODQxeiBNNDUuODE4LDYuOTgyICAgYy0yMC40ODQsMC0zNy4xNDYsMTYuNTM1LTM3LjE0NiwzNi44NTljMCw4LjA2NSwyLjYyOSwxNS41MzQsNy4wNzYsMjEuNjFMMTEuMTA3LDc5LjE0bDE0LjI3NS00LjUzNyAgIGM1Ljg2NSwzLjg1MSwxMi44OTEsNi4wOTcsMjAuNDM3LDYuMDk3YzIwLjQ4MSwwLDM3LjE0Ni0xNi41MzMsMzcuMTQ2LTM2Ljg1N1M2Ni4zMDEsNi45ODIsNDUuODE4LDYuOTgyeiBNNjguMTI5LDUzLjkzOCAgIGMtMC4yNzMtMC40NDctMC45OTQtMC43MTctMi4wNzYtMS4yNTRjLTEuMDg0LTAuNTM3LTYuNDEtMy4xMzgtNy40LTMuNDk1Yy0wLjk5My0wLjM1OC0xLjcxNy0wLjUzOC0yLjQzOCwwLjUzNyAgIGMtMC43MjEsMS4wNzYtMi43OTcsMy40OTUtMy40Myw0LjIxMmMtMC42MzIsMC43MTktMS4yNjMsMC44MDktMi4zNDcsMC4yNzFjLTEuMDgyLTAuNTM3LTQuNTcxLTEuNjczLTguNzA4LTUuMzMzICAgYy0zLjIxOS0yLjg0OC01LjM5My02LjM2NC02LjAyNS03LjQ0MWMtMC42MzEtMS4wNzUtMC4wNjYtMS42NTYsMC40NzUtMi4xOTFjMC40ODgtMC40ODIsMS4wODQtMS4yNTUsMS42MjUtMS44ODIgICBjMC41NDMtMC42MjgsMC43MjMtMS4wNzUsMS4wODItMS43OTNjMC4zNjMtMC43MTcsMC4xODItMS4zNDQtMC4wOS0xLjg4M2MtMC4yNy0wLjUzNy0yLjQzOC01LjgyNS0zLjM0LTcuOTc3ICAgYy0wLjkwMi0yLjE1LTEuODAzLTEuNzkyLTIuNDM2LTEuNzkyYy0wLjYzMSwwLTEuMzU0LTAuMDktMi4wNzYtMC4wOWMtMC43MjIsMC0xLjg5NiwwLjI2OS0yLjg4OSwxLjM0NCAgIGMtMC45OTIsMS4wNzYtMy43ODksMy42NzYtMy43ODksOC45NjNjMCw1LjI4OCwzLjg3OSwxMC4zOTcsNC40MjIsMTEuMTEzYzAuNTQxLDAuNzE2LDcuNDksMTEuOTIsMTguNSwxNi4yMjMgICBDNTguMiw2NS43NzEsNTguMiw2NC4zMzYsNjAuMTg2LDY0LjE1NmMxLjk4NC0wLjE3OSw2LjQwNi0yLjU5OSw3LjMxMi01LjEwN0M2OC4zOTgsNTYuNTM3LDY4LjM5OCw1NC4zODYsNjguMTI5LDUzLjkzOHoiIGZpbGw9IiNGRkZGRkYiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K" width="50" height="20" alt="whatsapp" />
			    </div>
				</a>
	        <?php } ?>
		  	<?php if(ampforwp_get_setting('enable-single-whatsapp-group-share') == true)  { ?>
			<a title="whatsapp group" <?php ampforwp_rel_attributes_social_links(); ?> href="<?php echo esc_url(ampforwp_get_setting('whatsapp-group-link'))?>">
			<div class="a-so-i">
			    <amp-img src="data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgOTAgOTAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggaWQ9IldoYXRzQXBwIiBkPSJNOTAsNDMuODQxYzAsMjQuMjEzLTE5Ljc3OSw0My44NDEtNDQuMTgyLDQzLjg0MWMtNy43NDcsMC0xNS4wMjUtMS45OC0yMS4zNTctNS40NTVMMCw5MGw3Ljk3NS0yMy41MjIgICBjLTQuMDIzLTYuNjA2LTYuMzQtMTQuMzU0LTYuMzQtMjIuNjM3QzEuNjM1LDE5LjYyOCwyMS40MTYsMCw0NS44MTgsMEM3MC4yMjMsMCw5MCwxOS42MjgsOTAsNDMuODQxeiBNNDUuODE4LDYuOTgyICAgYy0yMC40ODQsMC0zNy4xNDYsMTYuNTM1LTM3LjE0NiwzNi44NTljMCw4LjA2NSwyLjYyOSwxNS41MzQsNy4wNzYsMjEuNjFMMTEuMTA3LDc5LjE0bDE0LjI3NS00LjUzNyAgIGM1Ljg2NSwzLjg1MSwxMi44OTEsNi4wOTcsMjAuNDM3LDYuMDk3YzIwLjQ4MSwwLDM3LjE0Ni0xNi41MzMsMzcuMTQ2LTM2Ljg1N1M2Ni4zMDEsNi45ODIsNDUuODE4LDYuOTgyeiBNNjguMTI5LDUzLjkzOCAgIGMtMC4yNzMtMC40NDctMC45OTQtMC43MTctMi4wNzYtMS4yNTRjLTEuMDg0LTAuNTM3LTYuNDEtMy4xMzgtNy40LTMuNDk1Yy0wLjk5My0wLjM1OC0xLjcxNy0wLjUzOC0yLjQzOCwwLjUzNyAgIGMtMC43MjEsMS4wNzYtMi43OTcsMy40OTUtMy40Myw0LjIxMmMtMC42MzIsMC43MTktMS4yNjMsMC44MDktMi4zNDcsMC4yNzFjLTEuMDgyLTAuNTM3LTQuNTcxLTEuNjczLTguNzA4LTUuMzMzICAgYy0zLjIxOS0yLjg0OC01LjM5My02LjM2NC02LjAyNS03LjQ0MWMtMC42MzEtMS4wNzUtMC4wNjYtMS42NTYsMC40NzUtMi4xOTFjMC40ODgtMC40ODIsMS4wODQtMS4yNTUsMS42MjUtMS44ODIgICBjMC41NDMtMC42MjgsMC43MjMtMS4wNzUsMS4wODItMS43OTNjMC4zNjMtMC43MTcsMC4xODItMS4zNDQtMC4wOS0xLjg4M2MtMC4yNy0wLjUzNy0yLjQzOC01LjgyNS0zLjM0LTcuOTc3ICAgYy0wLjkwMi0yLjE1LTEuODAzLTEuNzkyLTIuNDM2LTEuNzkyYy0wLjYzMSwwLTEuMzU0LTAuMDktMi4wNzYtMC4wOWMtMC43MjIsMC0xLjg5NiwwLjI2OS0yLjg4OSwxLjM0NCAgIGMtMC45OTIsMS4wNzYtMy43ODksMy42NzYtMy43ODksOC45NjNjMCw1LjI4OCwzLjg3OSwxMC4zOTcsNC40MjIsMTEuMTEzYzAuNTQxLDAuNzE2LDcuNDksMTEuOTIsMTguNSwxNi4yMjMgICBDNTguMiw2NS43NzEsNTguMiw2NC4zMzYsNjAuMTg2LDY0LjE1NmMxLjk4NC0wLjE3OSw2LjQwNi0yLjU5OSw3LjMxMi01LjEwN0M2OC4zOTgsNTYuNTM3LDY4LjM5OCw1NC4zODYsNjguMTI5LDUzLjkzOHoiIGZpbGw9IiNGRkZGRkYiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K" width="50" height="20" alt="whatsapp" />
			    </div>
				</a>
	        <?php } ?>
        <?php if(ampforwp_get_setting('enable-single-line-share') == true)  { 
				$line_share = 'http://line.me/R/msg/text/';
				$line_amp_permalink = add_query_arg($amp_permalink,'', $line_share );
	        ?>
			<a title="line share" <?php ampforwp_rel_attributes_social_links(); ?> href="<?php echo esc_url($line_amp_permalink); ?>">
				<div class="a-so-i custom-amp-socialsharing-line">
					<amp-img src="data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI5Ni41MjggMjk2LjUyOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjk2LjUyOCAyOTYuNTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCI+CjxnPgoJPHBhdGggZD0iTTI5NS44MzgsMTE1LjM0N2wwLjAwMy0wLjAwMWwtMC4wOTItMC43NmMtMC4wMDEtMC4wMTMtMC4wMDItMC4wMjMtMC4wMDQtMC4wMzZjLTAuMDAxLTAuMDExLTAuMDAyLTAuMDIxLTAuMDA0LTAuMDMyICAgbC0wLjM0NC0yLjg1OGMtMC4wNjktMC41NzQtMC4xNDgtMS4yMjgtMC4yMzgtMS45NzRsLTAuMDcyLTAuNTk0bC0wLjE0NywwLjAxOGMtMy42MTctMjAuNTcxLTEzLjU1My00MC4wOTMtMjguOTQyLTU2Ljc2MiAgIGMtMTUuMzE3LTE2LjU4OS0zNS4yMTctMjkuNjg3LTU3LjU0OC0zNy44NzhjLTE5LjEzMy03LjAxOC0zOS40MzQtMTAuNTc3LTYwLjMzNy0xMC41NzdjLTI4LjIyLDAtNTUuNjI3LDYuNjM3LTc5LjI1NywxOS4xOTMgICBDMjMuMjg5LDQ3LjI5Ny0zLjU4NSw5MS43OTksMC4zODcsMTM2LjQ2MWMyLjA1NiwyMy4xMTEsMTEuMTEsNDUuMTEsMjYuMTg0LDYzLjYyMWMxNC4xODgsMTcuNDIzLDMzLjM4MSwzMS40ODMsNTUuNTAzLDQwLjY2ICAgYzEzLjYwMiw1LjY0MiwyNy4wNTEsOC4zMDEsNDEuMjkxLDExLjExNmwxLjY2NywwLjMzYzMuOTIxLDAuNzc2LDQuOTc1LDEuODQyLDUuMjQ3LDIuMjY0YzAuNTAzLDAuNzg0LDAuMjQsMi4zMjksMC4wMzgsMy4xOCAgIGMtMC4xODYsMC43ODUtMC4zNzgsMS41NjgtMC41NywyLjM1MmMtMS41MjksNi4yMzUtMy4xMSwxMi42ODMtMS44NjgsMTkuNzkyYzEuNDI4LDguMTcyLDYuNTMxLDEyLjg1OSwxNC4wMDEsMTIuODYgICBjMC4wMDEsMCwwLjAwMSwwLDAuMDAyLDBjOC4wMzUsMCwxNy4xOC01LjM5LDIzLjIzMS04Ljk1NmwwLjgwOC0wLjQ3NWMxNC40MzYtOC40NzgsMjguMDM2LTE4LjA0MSwzOC4yNzEtMjUuNDI1ICAgYzIyLjM5Ny0xNi4xNTksNDcuNzgzLTM0LjQ3NSw2Ni44MTUtNTguMTdDMjkwLjE3MiwxNzUuNzQ1LDI5OS4yLDE0NS4wNzgsMjk1LjgzOCwxMTUuMzQ3eiBNOTIuMzQzLDE2MC41NjFINjYuNzYxICAgYy0zLjg2NiwwLTctMy4xMzQtNy03Vjk5Ljg2NWMwLTMuODY2LDMuMTM0LTcsNy03YzMuODY2LDAsNywzLjEzNCw3LDd2NDYuNjk2aDE4LjU4MWMzLjg2NiwwLDcsMy4xMzQsNyw3ICAgQzk5LjM0MywxNTcuNDI3LDk2LjIwOSwxNjAuNTYxLDkyLjM0MywxNjAuNTYxeiBNMTE5LjAzLDE1My4zNzFjMCwzLjg2Ni0zLjEzNCw3LTcsN2MtMy44NjYsMC03LTMuMTM0LTctN1Y5OS42NzUgICBjMC0zLjg2NiwzLjEzNC03LDctN2MzLjg2NiwwLDcsMy4xMzQsNyw3VjE1My4zNzF6IE0xODIuMzA0LDE1My4zNzFjMCwzLjAzMy0xLjk1Myw1LjcyMS00LjgzOCw2LjY1OCAgIGMtMC43MTIsMC4yMzEtMS40NDEsMC4zNDMtMi4xNjEsMC4zNDNjLTIuMTk5LDAtNC4zMjMtMS4wMzktNS42NjYtMi44ODhsLTI1LjIwNy0zNC43MTd2MzAuNjA1YzAsMy44NjYtMy4xMzQsNy03LDcgICBjLTMuODY2LDAtNy0zLjEzNC03LTd2LTUyLjE2YzAtMy4wMzMsMS45NTMtNS43MjEsNC44MzgtNi42NThjMi44ODYtMC45MzYsNi4wNDUsMC4wOSw3LjgyNywyLjU0NWwyNS4yMDcsMzQuNzE3Vjk5LjY3NSAgIGMwLTMuODY2LDMuMTM0LTcsNy03YzMuODY2LDAsNywzLjEzNCw3LDdWMTUzLjM3MXogTTIzMy4zMTEsMTU5LjI2OWgtMzQuNjQ1Yy0zLjg2NiwwLTctMy4xMzQtNy03di0yNi44NDdWOTguNTczICAgYzAtMy44NjYsMy4xMzQtNyw3LTdoMzMuNTdjMy44NjYsMCw3LDMuMTM0LDcsN3MtMy4xMzQsNy03LDdoLTI2LjU3djEyLjg0OWgyMS41NjJjMy44NjYsMCw3LDMuMTM0LDcsN2MwLDMuODY2LTMuMTM0LDctNyw3ICAgaC0yMS41NjJ2MTIuODQ3aDI3LjY0NWMzLjg2NiwwLDcsMy4xMzQsNyw3UzIzNy4xNzcsMTU5LjI2OSwyMzMuMzExLDE1OS4yNjl6IiBmaWxsPSIjRkZGRkZGIi8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==" width="50" height="20"  alt="line" />
				</div>
			</a>
		<?php } ?>
		<?php if(ampforwp_get_setting('enable-single-vk-share') == true)  { ?>
			<a title="vkontakte share" <?php ampforwp_rel_attributes_social_links(); ?> href="http://vk.com/share.php?url=<?php echo esc_url($amp_permalink); ?>" target="_blank">
				<div class="a-so-i a-so-vk"> 
					<amp-img src="data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAzMDQuMzYgMzA0LjM2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDQuMzYgMzA0LjM2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij4KPGcgaWQ9IlhNTElEXzFfIj4KCTxwYXRoIGlkPSJYTUxJRF84MDdfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7IiBkPSJNMjYxLjk0NSwxNzUuNTc2YzEwLjA5Niw5Ljg1NywyMC43NTIsMTkuMTMxLDI5LjgwNywyOS45ODIgICBjNCw0LjgyMiw3Ljc4Nyw5Ljc5OCwxMC42ODQsMTUuMzk0YzQuMTA1LDcuOTU1LDAuMzg3LDE2LjcwOS02Ljc0NiwxNy4xODRsLTQ0LjM0LTAuMDJjLTExLjQzNiwwLjk0OS0yMC41NTktMy42NTUtMjguMjMtMTEuNDc0ICAgYy02LjEzOS02LjI1My0xMS44MjQtMTIuOTA4LTE3LjcyNy0xOS4zNzJjLTIuNDItMi42NDItNC45NTMtNS4xMjgtNy45NzktNy4wOTNjLTYuMDUzLTMuOTI5LTExLjMwNy0yLjcyNi0xNC43NjYsMy41ODcgICBjLTMuNTIzLDYuNDIxLTQuMzIyLDEzLjUzMS00LjY2OCwyMC42ODdjLTAuNDc1LDEwLjQ0MS0zLjYzMSwxMy4xODYtMTQuMTE5LDEzLjY2NGMtMjIuNDE0LDEuMDU3LTQzLjY4Ni0yLjMzNC02My40NDctMTMuNjQxICAgYy0xNy40MjItOS45NjgtMzAuOTMyLTI0LjA0LTQyLjY5MS0zOS45NzFDMzQuODI4LDE1My40ODIsMTcuMjk1LDExOS4zOTUsMS41MzcsODQuMzUzQy0yLjAxLDc2LjQ1OCwwLjU4NCw3Mi4yMiw5LjI5NSw3Mi4wNyAgIGMxNC40NjUtMC4yODEsMjguOTI4LTAuMjYxLDQzLjQxLTAuMDJjNS44NzksMC4wODYsOS43NzEsMy40NTgsMTIuMDQxLDkuMDEyYzcuODI2LDE5LjI0MywxNy40MDIsMzcuNTUxLDI5LjQyMiw1NC41MjEgICBjMy4yMDEsNC41MTgsNi40NjUsOS4wMzYsMTEuMTEzLDEyLjIxNmM1LjE0MiwzLjUyMSw5LjA1NywyLjM1NCwxMS40NzYtMy4zNzRjMS41MzUtMy42MzIsMi4yMDctNy41NDQsMi41NTMtMTEuNDM0ICAgYzEuMTQ2LTEzLjM4MywxLjI5Ny0yNi43NDMtMC43MTMtNDAuMDc5Yy0xLjIzNC04LjMyMy01LjkyMi0xMy43MTEtMTQuMjI3LTE1LjI4NmMtNC4yMzgtMC44MDMtMy42MDctMi4zOC0xLjU1NS00Ljc5OSAgIGMzLjU2NC00LjE3Miw2LjkxNi02Ljc2OSwxMy41OTgtNi43NjloNTAuMTExYzcuODg5LDEuNTU3LDkuNjQxLDUuMTAxLDEwLjcyMSwxMy4wMzlsMC4wNDMsNTUuNjYzICAgYy0wLjA4NiwzLjA3MywxLjUzNSwxMi4xOTIsNy4wNywxNC4yMjZjNC40MywxLjQ0OCw3LjM1LTIuMDk2LDEwLjAwOC00LjkwNWMxMS45OTgtMTIuNzM0LDIwLjU2MS0yNy43ODMsMjguMjExLTQzLjM2NiAgIGMzLjM5NS02Ljg1Miw2LjMxNC0xMy45NjgsOS4xNDMtMjEuMDc4YzIuMDk2LTUuMjc2LDUuMzg1LTcuODcyLDExLjMyOC03Ljc1N2w0OC4yMjksMC4wNDNjMS40MywwLDIuODc3LDAuMDIxLDQuMjYyLDAuMjU4ICAgYzguMTI3LDEuMzg1LDEwLjM1NCw0Ljg4MSw3Ljg0NCwxMi44MTdjLTMuOTU1LDEyLjQ1MS0xMS42NSwyMi44MjctMTkuMTc0LDMzLjI1MWMtOC4wNDMsMTEuMTI5LTE2LjY0NSwyMS44NzctMjQuNjIxLDMzLjA3MiAgIEMyNTIuMjYsMTYxLjU0NCwyNTIuODQyLDE2Ni42OTcsMjYxLjk0NSwxNzUuNTc2TDI2MS45NDUsMTc1LjU3NnogTTI2MS45NDUsMTc1LjU3NiIgZmlsbD0iI0ZGRkZGRiIvPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if(ampforwp_get_setting('enable-single-odnoklassniki-share')){
			        $feature_img = '';
	               if (ampforwp_has_post_thumbnail() ){
					$feature_img = ampforwp_get_post_thumbnail( 'url', 'medium' );
					} 
		       ?>
			<a title="odnoklassniki share" <?php esc_html(ampforwp_rel_attributes_social_links()); ?> href="https://connect.ok.ru/offer?url=<?php echo esc_url($amp_permalink); ?>&title=<?php echo esc_attr(htmlspecialchars(get_the_title())); ?>&imageUrl=<?php echo esc_url($feature_img); ?>" target="_blank">
				<div class="a-so-i a-so-odnoklassniki"> 
					<amp-img src="data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDk1LjQ4MSA5NS40ODEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDk1LjQ4MSA5NS40ODE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNNDMuMDQxLDY3LjI1NGMtNy40MDItMC43NzItMTQuMDc2LTIuNTk1LTE5Ljc5LTcuMDY0Yy0wLjcwOS0wLjU1Ni0xLjQ0MS0xLjA5Mi0yLjA4OC0xLjcxMyAgICBjLTIuNTAxLTIuNDAyLTIuNzUzLTUuMTUzLTAuNzc0LTcuOTg4YzEuNjkzLTIuNDI2LDQuNTM1LTMuMDc1LDcuNDg5LTEuNjgyYzAuNTcyLDAuMjcsMS4xMTcsMC42MDcsMS42MzksMC45NjkgICAgYzEwLjY0OSw3LjMxNywyNS4yNzgsNy41MTksMzUuOTY3LDAuMzI5YzEuMDU5LTAuODEyLDIuMTkxLTEuNDc0LDMuNTAzLTEuODEyYzIuNTUxLTAuNjU1LDQuOTMsMC4yODIsNi4yOTksMi41MTQgICAgYzEuNTY0LDIuNTQ5LDEuNTQ0LDUuMDM3LTAuMzgzLDcuMDE2Yy0yLjk1NiwzLjAzNC02LjUxMSw1LjIyOS0xMC40NjEsNi43NjFjLTMuNzM1LDEuNDQ4LTcuODI2LDIuMTc3LTExLjg3NSwyLjY2MSAgICBjMC42MTEsMC42NjUsMC44OTksMC45OTIsMS4yODEsMS4zNzZjNS40OTgsNS41MjQsMTEuMDIsMTEuMDI1LDE2LjUsMTYuNTY2YzEuODY3LDEuODg4LDIuMjU3LDQuMjI5LDEuMjI5LDYuNDI1ICAgIGMtMS4xMjQsMi40LTMuNjQsMy45NzktNi4xMDcsMy44MWMtMS41NjMtMC4xMDgtMi43ODItMC44ODYtMy44NjUtMS45NzdjLTQuMTQ5LTQuMTc1LTguMzc2LTguMjczLTEyLjQ0MS0xMi41MjcgICAgYy0xLjE4My0xLjIzNy0xLjc1Mi0xLjAwMy0yLjc5NiwwLjA3MWMtNC4xNzQsNC4yOTctOC40MTYsOC41MjgtMTIuNjgzLDEyLjczNWMtMS45MTYsMS44ODktNC4xOTYsMi4yMjktNi40MTgsMS4xNSAgICBjLTIuMzYyLTEuMTQ1LTMuODY1LTMuNTU2LTMuNzQ5LTUuOTc5YzAuMDgtMS42MzksMC44ODYtMi44OTEsMi4wMTEtNC4wMTRjNS40NDEtNS40MzMsMTAuODY3LTEwLjg4LDE2LjI5NS0xNi4zMjIgICAgQzQyLjE4Myw2OC4xOTcsNDIuNTE4LDY3LjgxMyw0My4wNDEsNjcuMjU0eiIgZmlsbD0iI0ZGRkZGRiIvPgoJCTxwYXRoIGQ9Ik00Ny41NSw0OC4zMjljLTEzLjIwNS0wLjA0NS0yNC4wMzMtMTAuOTkyLTIzLjk1Ni0yNC4yMThDMjMuNjcsMTAuNzM5LDM0LjUwNS0wLjAzNyw0Ny44NCwwICAgIGMxMy4zNjIsMC4wMzYsMjQuMDg3LDEwLjk2NywyNC4wMiwyNC40NzhDNzEuNzkyLDM3LjY3Nyw2MC44ODksNDguMzc1LDQ3LjU1LDQ4LjMyOXogTTU5LjU1MSwyNC4xNDMgICAgYy0wLjAyMy02LjU2Ny01LjI1My0xMS43OTUtMTEuODA3LTExLjgwMWMtNi42MDktMC4wMDctMTEuODg2LDUuMzE2LTExLjgzNSwxMS45NDNjMC4wNDksNi41NDIsNS4zMjQsMTEuNzMzLDExLjg5NiwxMS43MDkgICAgQzU0LjM1NywzNS45NzEsNTkuNTczLDMwLjcwOSw1OS41NTEsMjQuMTQzeiIgZmlsbD0iI0ZGRkZGRiIvPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if ( true == $redux_builder_amp['enable-single-reddit-share'] ) { ?>
			<a title="reddit share" <?php ampforwp_rel_attributes_social_links(); ?> href="https://reddit.com/submit?url=<?php echo esc_url($amp_permalink); ?>&title=<?php echo esc_attr(get_the_title()); ?>" target="_blank">
				<div class="a-so-i a-so-reddit"> 
					<amp-img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDQ5IDUxMiIgZmlsbD0iI2ZmZmZmZiIgPjxwYXRoIGQ9Ik00NDkgMjUxYzAgMjAtMTEgMzctMjcgNDUgMSA1IDEgOSAxIDE0IDAgNzYtODkgMTM4LTE5OSAxMzhTMjYgMzg3IDI2IDMxMWMwLTUgMC0xMCAxLTE1LTE2LTgtMjctMjUtMjctNDUgMC0yOCAyMy01MCA1MC01MCAxMyAwIDI0IDUgMzMgMTMgMzMtMjMgNzktMzkgMTI5LTQxaDJsMzEtMTAzIDkwIDE4YzgtMTQgMjItMjQgMzktMjRoMWMyNSAwIDQ0IDIwIDQ0IDQ1cy0xOSA0NS00NCA0NWgtMWMtMjMgMC00Mi0xNy00NC00MGwtNjctMTQtMjIgNzRjNDkgMyA5MyAxNyAxMjUgNDAgOS04IDIxLTEzIDM0LTEzIDI3IDAgNDkgMjIgNDkgNTB6TTM0IDI3MWM1LTE1IDE1LTI5IDI5LTQxLTQtMy05LTUtMTUtNS0xNCAwLTI1IDExLTI1IDI1IDAgOSA0IDE3IDExIDIxem0zMjQtMTYyYzAgOSA3IDE3IDE2IDE3czE3LTggMTctMTctOC0xNy0xNy0xNy0xNiA4LTE2IDE3ek0xMjcgMjg4YzAgMTggMTQgMzIgMzIgMzJzMzItMTQgMzItMzItMTQtMzEtMzItMzEtMzIgMTMtMzIgMzF6bTk3IDExMmM0OCAwIDc3LTI5IDc4LTMwbC0xMy0xMnMtMjUgMjQtNjUgMjRjLTQxIDAtNjQtMjQtNjQtMjRsLTEzIDEyYzEgMSAyOSAzMCA3NyAzMHptNjctODBjMTggMCAzMi0xNCAzMi0zMnMtMTQtMzEtMzItMzEtMzIgMTMtMzIgMzEgMTQgMzIgMzIgMzJ6bTEyNC00OGM3LTUgMTEtMTMgMTEtMjIgMC0xNC0xMS0yNS0yNS0yNS02IDAtMTEgMi0xNSA1IDE0IDEyIDI0IDI3IDI5IDQyeiI+PC9wYXRoPjwvc3ZnPg==" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if ( true == $redux_builder_amp['enable-single-tumblr-share'] ) { ?>
			<a title="tumblr share" <?php ampforwp_rel_attributes_social_links(); ?> href="https://www.tumblr.com/widgets/share/tool?canonicalUrl=<?php echo esc_url($amp_permalink); ?>&title=<?php echo esc_attr(get_the_title()); ?>&caption=<?php echo esc_attr(get_the_excerpt()); ?>" target="_blank">
				<div class="a-so-i a-so-tumblr"> 
					<amp-img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNjQgNjQiIGZpbGw9IiNmZmZmZmYiID48cGF0aCBkPSJNMzYuMDAyIDI4djE0LjYzNmMwIDMuNzE0LS4wNDggNS44NTMuMzQ2IDYuOTA2LjM5IDEuMDQ3IDEuMzcgMi4xMzQgMi40MzcgMi43NjMgMS40MTguODUgMy4wMzQgMS4yNzMgNC44NTcgMS4yNzMgMy4yNCAwIDUuMTU1LS40MjggOC4zNi0yLjUzNHY5LjYyYy0yLjczMiAxLjI4Ni01LjExOCAyLjAzOC03LjMzNCAyLjU2LTIuMjIuNTE0LTQuNjE2Ljc3NC03LjE5Ljc3NC0yLjkyOCAwLTQuNjU1LS4zNjgtNi45MDItMS4xMDMtMi4yNDctLjc0Mi00LjE2Ni0xLjgtNS43NS0zLjE2LTEuNTkyLTEuMzctMi42OS0yLjgyNC0zLjMwNC00LjM2M3MtLjkyLTMuNzc2LS45Mi02LjcwM1YyNi4yMjRoLTguNTl2LTkuMDYzYzIuNTE0LS44MTUgNS4zMjQtMS45ODcgNy4xMTItMy41MSAxLjc5Ny0xLjUyNyAzLjIzNS0zLjM1NiA0LjMyLTUuNDk2QzI0LjUzIDYuMDIyIDI1LjI3NiAzLjMgMjUuNjgzIDBoMTAuMzJ2MTZINTJ2MTJIMzYuMDA0eiI+PC9wYXRoPjwvc3ZnPg==" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if ( true == $redux_builder_amp['enable-single-telegram-share'] ) { ?>
			<a title="telegram share" <?php ampforwp_rel_attributes_social_links(); ?> href="https://telegram.me/share/url?url=<?php echo esc_url($amp_permalink); ?>&text=<?php echo esc_attr(get_the_title()); ?>" target="_blank">
				<div class="a-so-i a-so-telegram"> 
			    	<amp-img src="data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ1NS43MzEgNDU1LjczMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDU1LjczMSA0NTUuNzMxOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij4KPGc+Cgk8cmVjdCB4PSIwIiB5PSIwIiBzdHlsZT0iZmlsbDojNjFBOERFOyIgd2lkdGg9IjQ1NS43MzEiIGhlaWdodD0iNDU1LjczMSIvPgoJPHBhdGggc3R5bGU9ImZpbGw6I0ZGRkZGRjsiIGQ9Ik0zNTguODQ0LDEwMC42TDU0LjA5MSwyMTkuMzU5Yy05Ljg3MSwzLjg0Ny05LjI3MywxOC4wMTIsMC44ODgsMjEuMDEybDc3LjQ0MSwyMi44NjhsMjguOTAxLDkxLjcwNiAgIGMzLjAxOSw5LjU3OSwxNS4xNTgsMTIuNDgzLDIyLjE4NSw1LjMwOGw0MC4wMzktNDAuODgybDc4LjU2LDU3LjY2NWM5LjYxNCw3LjA1NywyMy4zMDYsMS44MTQsMjUuNzQ3LTkuODU5bDUyLjAzMS0yNDguNzYgICBDMzgyLjQzMSwxMDYuMjMyLDM3MC40NDMsOTYuMDgsMzU4Ljg0NCwxMDAuNnogTTMyMC42MzYsMTU1LjgwNkwxNzkuMDgsMjgwLjk4NGMtMS40MTEsMS4yNDgtMi4zMDksMi45NzUtMi41MTksNC44NDcgICBsLTUuNDUsNDguNDQ4Yy0wLjE3OCwxLjU4LTIuMzg5LDEuNzg5LTIuODYxLDAuMjcxbC0yMi40MjMtNzIuMjUzYy0xLjAyNy0zLjMwOCwwLjMxMi02Ljg5MiwzLjI1NS04LjcxN2wxNjcuMTYzLTEwMy42NzYgICBDMzIwLjA4OSwxNDcuNTE4LDMyNC4wMjUsMTUyLjgxLDMyMC42MzYsMTU1LjgwNnoiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K" width="50" height="20" />

				</div>
			</a>
		<?php } ?>
		<?php if ( true == $redux_builder_amp['enable-single-stumbleupon-share'] ) { ?>
			<a title="stumbleupon share" <?php ampforwp_rel_attributes_social_links(); ?> href="http://www.stumbleupon.com/submit?url=<?php echo esc_url($amp_permalink); ?>&title=<?php echo esc_attr(get_the_title()); ?>" target="_blank">
				<div class="a-so-i a-so-stumbleupon"> 
					<amp-img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNjcwLjIyMzMgNjAxLjA4NjkiIGZpbGw9IiNmZmZmZmYiID48cGF0aCBkPSJNMCA0MzcuMjQ3di05Mi42NzJoMTE0LjY4OHY5MS42NjRjMCA5LjU2NyAzLjQwOCAxNy44MjMgMTAuMjQgMjQuODNzMTUuMTg0IDEwLjQ5NyAyNS4wODggMTAuNDk3IDE4LjMzNi0zLjQyNCAyNS4zNDQtMTAuMjRjNy4wMDgtNi44NDggMTAuNDk2LTE1LjIgMTAuNDk2LTI1LjA4OFYyMTkuNjQ2YzAtMzkuOTM1IDE0Ljc1Mi03My45ODQgNDQuMjg4LTEwMi4xNDQgMjkuNTM2LTI4LjE2IDY0LjYwOC00Mi4yNCAxMDUuMjE2LTQyLjI0IDQwLjYwOCAwIDc1LjY4IDE0LjE2IDEwNS4yMTYgNDIuNDk2IDI5LjUyIDI4LjMzNSA0NC4zMDUgNjIuNjQgNDQuMzA1IDEwMi45MXY0Ny4xMDRsLTY4LjYyMyAyMC40OC00NS41Ny0yMS41MDN2LTQwLjk2YzAtOS45MDMtMy40MDctMTguMjU2LTEwLjI1NS0yNS4wODgtNi44MTYtNi44MzItMTUuMTgzLTEwLjI0LTI1LjA3Mi0xMC4yNC05LjkwMyAwLTE4LjMzNiAzLjQwOC0yNS4zNDQgMTAuMjRzLTEwLjQ5NiAxNS4xODUtMTAuNDk2IDI1LjA5djIxMy41MDNjMCA0MC45NzYtMTQuNjcyIDc1Ljg3Mi00NC4wMzIgMTA0LjcyLTI5LjM0NCAyOC44NDgtNjQuNTEyIDQzLjI0OC0xMDUuNDcyIDQzLjI0OC00MS4zMSAwLTc2LjY0LTE0LjU5Mi0xMDUuOTg0LTQzLjc3NkMxNC42ODggNTE0LjMwMy4wMDIgNDc4Ljg4LjAwMiA0MzcuMjQ3em0zNzAuNjg4IDEuNTM2di05My42OTVsNDUuNTY4IDIxLjUyIDY4LjYyNC0yMC40OTd2OTQuMjI2YzAgOS45MDMgMy40MDggMTguMzM2IDEwLjIyNCAyNS4zNDQgNi44NDcgNy4wMDcgMTUuMiAxMC40OTYgMjUuMDg3IDEwLjQ5NiA5LjkwNiAwIDE4LjI3NC0zLjUwNCAyNS4wOS0xMC40OTYgNi44MTYtNi45OTMgMTAuMjU1LTE1LjQ0IDEwLjI1NS0yNS4zNDR2LTk1Ljc0NGgxMTQuNjg4djkyLjY3MmMwIDQxLjI5NS0xNC41OSA3Ni42NC00My43NzYgMTA1Ljk4My0yOS4xODQgMjkuMzYtNjQuNDMyIDQ0LjAzMi0xMDUuNzI4IDQ0LjAzMnMtNzYuNjI1LTE0LjQ5Ny0xMDUuOTg1LTQzLjUyYy0yOS4zNi0yOS4wNC00NC4wNDgtNjQuMDE3LTQ0LjA0OC0xMDQuOTc4eiI+PC9wYXRoPjwvc3ZnPg==" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if ( true == $redux_builder_amp['enable-single-wechat-share'] ) { ?>
			<a title="wechat share" <?php ampforwp_rel_attributes_social_links(); ?> href="http://api.addthis.com/oexchange/0.8/forward/wechat/offer?url=<?php echo esc_url($amp_permalink); ?>" target="_blank">
				<div class="a-so-i a-so-wechat"> 
					<amp-img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjA0OCAxODk2LjA4MzMiIGZpbGw9IiNmZmZmZmYiID48cGF0aCBkPSJNNTgwIDQ2MXEwLTQxLTI1LTY2dC02Ni0yNXEtNDMgMC03NiAyNS41VDM4MCA0NjFxMCAzOSAzMyA2NC41dDc2IDI1LjVxNDEgMCA2Ni0yNC41dDI1LTY1LjV6bTc0MyA1MDdxMC0yOC0yNS41LTUwdC02NS41LTIycS0yNyAwLTQ5LjUgMjIuNVQxMTYwIDk2OHEwIDI4IDIyLjUgNTAuNXQ0OS41IDIyLjVxNDAgMCA2NS41LTIydDI1LjUtNTF6bS0yMzYtNTA3cTAtNDEtMjQuNS02NlQ5OTcgMzcwcS00MyAwLTc2IDI1LjVUODg4IDQ2MXEwIDM5IDMzIDY0LjV0NzYgMjUuNXE0MSAwIDY1LjUtMjQuNVQxMDg3IDQ2MXptNjM1IDUwN3EwLTI4LTI2LTUwdC02NS0yMnEtMjcgMC00OS41IDIyLjVUMTU1OSA5NjhxMCAyOCAyMi41IDUwLjV0NDkuNSAyMi41cTM5IDAgNjUtMjJ0MjYtNTF6bS0yNjYtMzk3cS0zMS00LTcwLTQtMTY5IDAtMzExIDc3VDg1MS41IDg1Mi41IDc3MCAxMTQwcTAgNzggMjMgMTUyLTM1IDMtNjggMy0yNiAwLTUwLTEuNXQtNTUtNi41LTQ0LjUtNy01NC41LTEwLjUtNTAtMTAuNWwtMjUzIDEyNyA3Mi0yMThRMCA5NjUgMCA2NzhxMC0xNjkgOTcuNS0zMTF0MjY0LTIyMy41VDcyNSA2MnExNzYgMCAzMzIuNSA2NnQyNjIgMTgyLjVUMTQ1NiA1NzF6bTU5MiA1NjFxMCAxMTctNjguNSAyMjMuNVQxNzk0IDE1NDlsNTUgMTgxLTE5OS0xMDlxLTE1MCAzNy0yMTggMzctMTY5IDAtMzExLTcwLjVUODk3LjUgMTM5NiA4MTYgMTEzMnQ4MS41LTI2NFQxMTIxIDY3Ni41dDMxMS03MC41cTE2MSAwIDMwMyA3MC41dDIyNy41IDE5MlQyMDQ4IDExMzJ6Ij48L3BhdGg+PC9zdmc+" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if ( true == $redux_builder_amp['enable-single-viber-share'] ) { ?>
			<a title="viber share" <?php ampforwp_rel_attributes_social_links(); ?> href="viber://forward?text=<?php echo esc_url($amp_permalink); ?>" target="_blank">
				<div class="a-so-i a-so-viber"> 
					<amp-img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAyNiAxMjM0IiBmaWxsPSIjZmZmZmZmIiA+PHBhdGggZD0iTTkwNCA3OTRxLTY5IDYxLTIwMCA4Ny41VDQzNCA4OTdsLTE3NiAxMzJWODY0cS04Ny0yNy0xMzYtNzAtNTgtNTEtOTAtMTQ2LjV0LTMyLTE5NSAzMi0xOTUgOTAuNS0xNDcgMTY3LjUtNzlUNTEzIDR0MjIzIDI3LjUgMTY3LjUgNzkgOTAuNSAxNDcgMzIgMTk1LTMyIDE5NVQ5MDQgNzk0ek02MzkgNTQ5bDY1IDExcS04LTEyMC05Mi41LTIwNVQ0MDcgMjYybDExIDY1cTg2IDExIDE0OCA3M3Q3MyAxNDl6TTQyOSAzOTRsMTIgNzJxNDAgMjAgNTkgNTlsNzIgMTJxLTEyLTUzLTUxLTkxLjVUNDI5IDM5NHptLTEwNyA1OXYtNjRxMC0xNy0xMi41LTM0VDI4MyAzMzAuNXQtMjEtMS41bC00NiA0N3EtMzkgMzktMTEuNSAxMjEuNXQxMDUgMTYwIDE2MCAxMDVUNTkwIDc1MWw0Ny00N3E3LTYtLjUtMjAuNVQ2MTIgNjU3dC0zNC0xMmgtNjRsLTM3IDMycS00NC0xMi0xMDkuNS03Ny41VDI5MCA0ODl6bTY0LTMyMGwxMCA2NXExMDAgMiAxODUgNTIuNXQxMzUgMTM1VDc2OSA1NzBsNjUgMTFxMC05MS0zNS41LTE3NFQ3MDMgMjY0dC0xNDMtOTUuNVQzODYgMTMzeiI+PC9wYXRoPjwvc3ZnPg==" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if ( true == $redux_builder_amp['enable-single-hatena-bookmarks'] ) { ?>
			<a title="hatena share" <?php ampforwp_rel_attributes_social_links(); ?> href="http://b.hatena.ne.jp/entry/<?php echo esc_url($amp_permalink); ?>" target="_blank">
				<div class="a-so-i a-so-hatena"> 
					<amp-img src="data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3e%3cpath d='M 64 96 L 64 416 L 212 416 C 252 416 292 404 308 368 C 328 332 320 276 284 252 C 272 244 260 240 248 236 C 276 232 300 212 300 184 C 304 156 296 120 268 108 C 236 96 192 96 160 96 L 64 96 z M 364 96 L 364 308 L 444 308 L 444 96 L 364 96 z M 144 156 C 144 156 188 156 200 160 C 224 168 224 208 196 212 C 188 216 144 216 144 216 L 144 156 z M 144 280 C 144 280 188 280 208 284 C 232 288 240 312 228 332 C 220 348 204 348 188 348 L 144 348 L 144 280 z M 404 328 A 44 44 0 0 0 360 372 A 44 44 0 0 0 404 416 A 44 44 0 0 0 448 372 A 44 44 0 0 0 404 328 z' style='fill:%23ffffff'/%3e%3c/svg%3e" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if ( true == $redux_builder_amp['enable-single-pocket-share'] ) { ?>
			<a title="pocket share" <?php ampforwp_rel_attributes_social_links(); ?> href="https://getpocket.com/save?url=<?php echo esc_url($amp_permalink); ?>" target="_blank">
				<div class="a-so-i a-so-pocket"> 
					<amp-img src="data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='2500' height='2251' viewBox='75.247 261.708 445.529 401.074'%3e%3cpath fill='%23EF4056' d='M114.219 261.708c-24.275 1.582-38.972 15.44-38.972 40.088v147.611c0 119.893 119.242 214.114 222.393 213.37 115.986-.837 223.137-98.779 223.137-213.37V301.796c0-24.741-15.626-38.693-40.088-40.088h-366.47zm93.943 120.079L297.64 466.8l89.571-85.013c40.088-16.835 57.574 28.927 41.111 42.321L311.685 535.443c-3.813 3.628-24.183 3.628-27.996 0L167.051 424.107c-15.72-14.789 4.743-61.295 41.111-42.32z'/%3e%3c/svg%3e" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if(true == ampforwp_get_setting('enable-single-mewe-share'))  {?>
			<a title="mewe share" <?php ampforwp_rel_attributes_social_links(); ?> href="https://mewe.com/share?link=<?php echo esc_url($amp_permalink); ?>">
				<div class="a-so-i custom-amp-socialsharing-mewe">
					<amp-img src="<?php echo esc_url(AMPFORWP_IMAGE_DIR . '/favicon-mewe.svg') ?>" width="50" height="20" />
				</div>
			</a>
		<?php } ?>
		<?php if ( true == ampforwp_get_setting('enable-single-flipboard-share') ) { ?>
			<a title="flipboard share" <?php ampforwp_rel_attributes_social_links(); ?> href="https://share.flipboard.com/bookmarklet/popout?v=<?php echo esc_html(get_the_title(ampforwp_get_the_ID())); ?>&url=<?php echo urlencode(esc_url($amp_permalink)); ?>" target="_blank">
				<div class="a-so-i custom-amp-socialsharing-flipboard">
					<amp-img src="<?php echo esc_url(AMPFORWP_IMAGE_DIR . '/flipboard.png') ?>" width="15" height="15" />
				</div>
			</a>
		<?php } ?>	
	</div> 
	<?php }
}

//	25. Yoast meta Support 
add_action('pre_amp_render_post','ampforwp_add_proper_post_meta');
function ampforwp_add_proper_post_meta(){
	if ( class_exists('WPSEO_Options') ) {
		add_action( 'amp_post_template_head', 'ampforwp_custom_yoast_meta_homepage' );
		// Homepage/Frontpage/Blog
		add_action('pre_amp_render_post','ampforwp_yoast_the_excerpt',33);
		if(is_home()){
			// Title
			add_filter('wpseo_opengraph_title', 'ampforwp_yoast_opengraph_title');
			add_filter('wpseo_twitter_title', 'ampforwp_yoast_twitter_title');
			// Description
			add_filter('wpseo_opengraph_desc', 'ampforwp_yoast_opengraph_desc');
			add_filter('wpseo_twitter_description', 'ampforwp_yoast_twitter_desc');
			// og url
			add_filter('wpseo_opengraph_url', 'ampforwp_custom_og_url_homepage');		
			// This is causing the 2nd debug issue reported in #740
			if ( !class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration')) {
				add_action('wpseo_twitter', 'ampforwp_custom_twitter_image_homepage');
			}
			add_action('wpseo_add_opengraph_images', 'ampforwp_custom_og_image_homepage');
		}
	}
}
function ampforwp_yoast_the_excerpt(){
	if(!checkAMPforPageBuilderStatus(ampforwp_get_the_ID())){
		add_filter('get_the_excerpt','ampforwp_yoast_excerpt',9);
	}
}
function ampforwp_yoast_excerpt($desc){
	 if(ampforwp_is_front_page() && empty($desc)){
	 	$get_meta_excerpt = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_metadesc', true);
	 	if(isset($get_meta_excerpt)){
	 		$desc = $get_meta_excerpt;
	 	}
	 	if ( ! is_string( $desc ) || ( is_string( $desc ) && $desc === '' ) ) {
	 		$post_content = get_post(ampforwp_get_the_ID())->post_content;
	 		$desc = wp_trim_words( strip_shortcodes( $post_content ) , 15 );
	 	}
	 }
	return $desc;
}
function ampforwp_custom_yoast_meta_homepage(){
	if ( 'yoast' == ampforwp_get_setting('ampforwp-seo-selection') && ampforwp_get_setting('ampforwp-seo-yoast-meta') && !class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration')) {
				if ( class_exists('WPSEO_Options')) {
					if( method_exists('WPSEO_Options', 'get_option')){
						$options = WPSEO_Options::get_option( 'wpseo_social' );
						if ( $options['twitter'] === true ) {
							WPSEO_Twitter::get_instance();
						}
						if ( $options['opengraph'] === true ) {
							$GLOBALS['wpseo_og'] = new WPSEO_OpenGraph;
						}
					}
				}
				do_action( 'wpseo_opengraph' );
	}
}

// Title
function ampforwp_yoast_opengraph_title($title){
	$new_title = ampforwp_yoast_social_title('og');
	if(!empty($new_title)){
		$title = $new_title;
	}
	return $title;
}
function ampforwp_yoast_twitter_title($title){
	$new_title = ampforwp_yoast_social_title('twitter');
	if(!empty($new_title)){
		$title = $new_title;
	}
	return $title;
}

function ampforwp_yoast_social_title($type) {
	//Added the opengraph for frontpage in AMP #2454
	if(ampforwp_is_front_page() || ampforwp_is_blog() ){
		$title = $page_id = $post = '';
		$page_id = ampforwp_get_the_ID();
		if( 'og' == $type ) {
			$title = WPSEO_Meta::get_value( 'opengraph-title', $page_id );
		}
		if( 'twitter' == $type ) {
			$title = WPSEO_Meta::get_value('twitter-title',$page_id );
		}
		if (empty($title) ){
			$title .= get_post_meta($page_id, '_yoast_wpseo_title', true);
			$title = wpseo_replace_vars( $title,$post );
		}
		if (empty($title) ){
			$title = get_the_title($page_id);
		}
		return esc_attr($title);
	}
	return  esc_attr( get_bloginfo( 'name' ) );
}
// Description
function ampforwp_yoast_opengraph_desc($desc){
	if ( ampforwp_yoast_social_desc('og') ){
		$desc = ampforwp_yoast_social_desc('og');
	}
	return $desc;
}
function ampforwp_yoast_twitter_desc($desc){
	if ( ampforwp_yoast_social_desc('twitter') ){
		$desc = ampforwp_yoast_social_desc('twitter');
	}
	return $desc;
}
function ampforwp_yoast_social_desc($type) {
	if(ampforwp_is_front_page() || ampforwp_is_blog()){
		$desc = $page_id = '';
		$page_id = ampforwp_get_the_ID();
		if ( 'og' == $type ) {
			$desc = trim( WPSEO_Meta::get_value( 'opengraph-description', $page_id ) );
		}
		if ( 'twitter' == $type ) {
			$desc = trim( WPSEO_Meta::get_value( 'twitter-description', $page_id ) );
		}
		if (empty($desc) ){
	 		$desc = get_post_meta($page_id, '_yoast_wpseo_metadesc', true); 
	 	}
		if (empty($desc)){
			$desc = wp_trim_words(get_post_field('post_content', $page_id), 26);
		}
		return esc_attr($desc);			
	}	
	return  esc_attr( get_bloginfo( 'description' ) );
}
function ampforwp_custom_og_url_homepage() {
	return esc_url( get_bloginfo( 'url' ) );
}
function ampforwp_custom_twitter_image_homepage(){
	$twitter = $WPSEO_get = '';
	$WPSEO_Options = WPSEO_Options::get_instance();
 	if( method_exists($WPSEO_Options, 'get') ){
		$WPSEO_get = WPSEO_Options::get( 'twitter_site', '' );
	}
	if ( ampforwp_get_the_ID() ) {
		$post_id = ampforwp_get_the_ID();
		$post = get_post($post_id);
		// twitter:image
		$img = WPSEO_Meta::get_value('twitter-image', $post_id );
		if ( $img !== '' ) {
			$metatag_key = apply_filters( 'wpseo_twitter_metatag_key', 'name' );
			$name = 'image';
			$value = $img;
			// Output meta.
			echo '<meta ', esc_attr( $metatag_key ), '="twitter:', esc_attr( $name ), '" content="', esc_url($value), '" />', "\n";
		}
		// twitter:creator
		$twitter = ltrim( trim( get_the_author_meta( 'twitter', $post->post_author ) ), '@' );
		$twitter = apply_filters( 'wpseo_twitter_creator_account', $twitter );
	}
	if ( is_string( $twitter ) && $twitter !== '' ) {
		echo '<meta ', esc_attr( 'name' ), '="twitter:', esc_attr( 'creator' ), '" content="','@' . esc_attr($twitter), '" />', "\n";
	}
	elseif ( $WPSEO_get !== '' && is_string( $WPSEO_get ) ) {
		echo '<meta ', esc_attr( 'name' ), '="twitter:', esc_attr( 'creator'), '" content="', '@' . esc_attr(WPSEO_Options::get( 'twitter_site' )), '" />', "\n";
	}
}
function ampforwp_custom_og_image_homepage() {
	if ( class_exists('WPSEO_Options') ) {
		global $wpseo_og;
		$post_id = ampforwp_get_frontpage_id();
		$image_url = WPSEO_Meta::get_value( 'opengraph-image', $post_id );
		$image_id = WPSEO_Meta::get_value( 'opengraph-image-id', $post_id );
		$image = wp_get_attachment_image_src($image_id,'full');
		$image_tags = array();
		if(is_array($image)){
			$image_tags = array(
				'width'     => esc_attr(isset($image[1]) ? $image[1] : '750'),
				'height'    => esc_attr(isset($image[2]) ? $image[2] : '500'),
			);
		}else{
			$image_tags = array(
				'width'     => '750',
				'height'    => '500',
			);
		}

		if ( method_exists($wpseo_og, 'og_tag') ) {
			$wpseo_og->og_tag( 'og:image', esc_url( $image_url ) );
			foreach ( $image_tags as $key => $value ) {
				if ( ! empty( $value ) ) {
					$wpseo_og->og_tag( 'og:image:' . $key, $value );
				}
			}
		}
	}
}


/**
 * PR by Sybre Waaijer:
 * @link https://github.com/ahmedkaludi/accelerated-mobile-pages/pull/761
 *
 * @since version 0.9.48 :
 *   1. Removes unused code.
 *   2. Cleaned up code.
 *   3. Keeps legacy action in place.
 *   4. No longer replaces the title tag.
 *   5. Instead, filters the title tag.
 *   6. Therefore, it works with all SEO plugins.
 *   7. Removed direct Yoast SEO compat -- It's no longer needed.
 *   8. Removed unwanted spaces.
 *   9. Improved performance.
 *   10. Improved security.
 *   11. Added support for CPT and attachment pages.
 */
//26. Extending Title Tagand De-Hooking the Standard one from AMP
add_action( 'pre_amp_render_post', 'ampforwp_remove_title_tags');
function ampforwp_remove_title_tags() {
	return ampforwp_replace_title_tags();
}
function ampforwp_replace_title_tags() {

	add_filter( 'pre_get_document_title', 'ampforwp_add_custom_title_tag', 20 );
	add_filter( 'wp_title', 'ampforwp_add_custom_title_tag', 10, 3 );

	if(class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration') && !ampforwp_is_home() &&  !ampforwp_is_front_page()  && !ampforwp_is_blog()  ){
		remove_filter( 'pre_get_document_title', 'ampforwp_add_custom_title_tag', 20 );
	    remove_filter( 'wp_title', 'ampforwp_add_custom_title_tag', 10, 3 );
	}
	// For Custom homepage
	if(class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration') && ampforwp_is_home() && !ampforwp_is_front_page() ){
		remove_filter( 'pre_get_document_title', 'ampforwp_add_custom_title_tag', 20 );
	    remove_filter( 'wp_title', 'ampforwp_add_custom_title_tag', 10, 3 );
	}

	function ampforwp_add_custom_title_tag( $title = '', $sep = '', $seplocation = '' ) {
		global $redux_builder_amp, $post;
		$site_title = '';
		$genesis_title = '';
		if ( ampforwp_is_front_page() ) {
			$post_id = ampforwp_get_frontpage_id();
			$post = get_post($post_id);
		}
		if ( ampforwp_is_blog() ) {
	 		$post_id = ampforwp_get_blog_details('id');
	 		$post = get_post($post_id);
	 	}
		if ( !$post ) {
			return;
		}
		$post_id = $post->ID;

		//* We can filter this later if needed:
		$sep = ' | ';
		if( class_exists('WPSEO_Options') && method_exists('WPSEO_Options', 'get') && 'yoast' == ampforwp_get_setting('ampforwp-seo-selection') && !class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration')) { 
			$separator = WPSEO_Options::get( 'separator' );
			$seperator_options = WPSEO_Option_Titles::get_instance()->get_separator_options();
			// This should always be set, but just to be sure.
			if ( isset( $seperator_options[ $separator ] ) ) {
				// Set the new replacement.
				$sep = $seperator_options[ $separator ];
			}
		}
		if( defined( 'RANK_MATH_FILE' ) && class_exists('RankMath\\Helper') && 'rank_math' == ampforwp_get_setting('ampforwp-seo-selection') ) {
			$sep = RankMath\Helper::get_settings( 'titles.title_separator' );
			$sep = ' '.htmlentities( $sep, ENT_COMPAT, 'UTF-8', false ).' ';
		}
		$sep = apply_filters('ampforwp_title_seperator_type', $sep);

		if ( is_singular() ) {
			$title = ! empty( $post->post_title ) ? $post->post_title : $title;
			$site_title = $title . $sep . get_option( 'blogname' );
		} elseif ( is_archive() && $redux_builder_amp['ampforwp-archive-support'] ) {
			$site_title = wp_strip_all_tags( get_the_archive_title( '' ) . $sep . get_bloginfo( 'name' ) );
		}

		if ( is_home() ) {
			// Custom frontpage
			$site_title = get_bloginfo( 'name' ) . $sep . get_option( 'blogdescription' );

			if ( ampforwp_is_front_page() ) {
				//WPML Static Front Page Support for title and description with Yoast #1143
				include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
				if ( is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' ) ) {
				 	$ID = get_option( 'page_on_front' );
				}
				else {
					$ID = ampforwp_get_frontpage_id();
				}
				$site_title = get_the_title( $ID ) .' '. $sep .' '. get_option( 'blogname' );				
			}
			// // Blog page 
			// if ( ampforwp_is_blog() ) {
			// 	$ID = ampforwp_get_blog_details('id');
			// 	$site_title = get_the_title( $ID ) . $sep . get_option( 'blogname' );
			// }
		}

		if ( is_search() ) {
			$site_title = $redux_builder_amp['amp-translator-search-text'] . ' ' . get_search_query();
		}

		// Yoast SEO Title compatibility #2871
		if( class_exists('WPSEO_Frontend') && ('yoast' || 1) == ampforwp_get_setting('ampforwp-seo-selection') ) {
			$yoast_title = $WPSEO_Frontend = $yoast_instance = '';

			if ( class_exists('Yoast\WP\SEO\Presentations\Indexable_Presentation') ) {
				$yoast_instance = new \Yoast\WP\SEO\Presentations\Indexable_Presentation();
			}
			
			if ( !class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration')) {
				$WPSEO_Frontend = WPSEO_Frontend::get_instance();
				$yoast_title = $WPSEO_Frontend->title($site_title);
				if ( ampforwp_is_home() ) {
					$yoast_title = $WPSEO_Frontend->get_title_from_options( 'title-home-wpseo' );
				}
				// For Blog pages and with Blog sub pages for example: site.com/blog/amp/page/3/
				if (ampforwp_is_blog()) {
					$yoast_title = $WPSEO_Frontend->get_content_title();	
				}
			}
			// Custom Front Page Title From Yoast SEO #1163
			if ( ampforwp_is_front_page() || ampforwp_is_blog() && class_exists('Yoast\WP\SEO\Presentations\Indexable_Presentation')) {
				$yoast_title = get_post_meta(ampforwp_get_the_ID(), '_yoast_wpseo_title', true);
				$yoast_title = wpseo_replace_vars( $yoast_title,$post );
				// Get info for custom front page, blog page and blog post paginated pages for v14+ #4574
				if ( class_exists('Ampforwp_Yoast_Data') ){
					$yoast_data = new Ampforwp_Yoast_Data;
					$context = $yoast_data->get_context_for_post_id(ampforwp_get_the_ID());	
				}
				if (isset($context->title)) {
					$yoast_title = $context->title;
				}
			}
		 	if ( $yoast_title ) {
		 		$site_title = apply_filters( 'wpseo_title', $yoast_title, $yoast_instance  );
		 	}
		}

		//Genesis #1013
		if(function_exists('genesis_theme_support') && 'genesis' == ampforwp_get_setting('ampforwp-seo-selection') ){
			if(is_home() && is_front_page() && !$redux_builder_amp['amp-frontpage-select-option']){
				// Determine the doctitle.
			$genesis_title = genesis_get_seo_option( 'home_doctitle' ) ? genesis_get_seo_option( 'home_doctitle' ) : get_bloginfo( 'name' );

			// Append site description, if necessary.
			$genesis_title = genesis_get_seo_option( 'append_description_home' ) ? $genesis_title . " $sep " . get_bloginfo( 'description' ) : $genesis_title;
			}
			elseif ( is_home() && get_option( 'page_for_posts' ) && get_queried_object_id() ) 
			{ 
				$post_id = get_option( 'page_for_posts' );
				if ( null !== $post_id || is_singular() ) {
					if ( genesis_get_custom_field( '_genesis_title', $post_id ) ) {
						$genesis_title = genesis_get_custom_field( '_genesis_title', $post_id );
					}
				}
			}
			elseif( is_home() && get_option( 'page_on_front' ) && $redux_builder_amp['amp-frontpage-select-option'] ){
				$post_id = get_option('page_on_front');
					if ( null !== $post_id || is_singular() ) {
						if ( genesis_get_custom_field( '_genesis_title', $post_id ) ) {
							$genesis_title = genesis_get_custom_field( '_genesis_title', $post_id );
						}
					}
			}
			elseif ( is_archive() ) {
				if ( is_category() || is_tag() || is_tax() ) {
					$term       = get_queried_object();
					$title_meta = get_term_meta( $term->term_id, 'doctitle', true );
					$genesis_title      = ! empty( $title_meta ) ? $title_meta : $title;
				}

				if ( is_author() ) {
					$user_title = get_the_author_meta( 'doctitle', (int) get_query_var( 'author' ) );
					$genesis_title      = $user_title ? $user_title : $title;
				}

				if ( is_post_type_archive() && genesis_has_post_type_archive_support() ) {
					$genesis_title = genesis_get_cpt_option( 'doctitle' ) ? genesis_get_cpt_option( 'doctitle' ) : $title;
				}

			}
			else {
				//$genesis_title = genesis_default_title( $title );
				// genesis_default_title has been depreciated, let's do it with another method #2050
				$genesis_title = genesis_get_custom_field( '_genesis_title' );
			}
			if( $genesis_title ){
				$site_title = $genesis_title;
			}
		}
		// SEOPress #1589
		if ( is_plugin_active('wp-seopress/seopress.php') && 'seopress' == ampforwp_get_setting('ampforwp-seo-selection') ) {
			$seopress_title = ampforwp_get_seopress_title();
			$seopress_title = ampforwp_seopress_title_sanitize($seopress_title);
			if ( $seopress_title ) {
				$site_title = $seopress_title;
			}
		}
		// All in One SEO #2816
	   	if ( class_exists('All_in_One_SEO_Pack') && ampforwp_is_front_page()){
	        $aiseop_title = '';
	        $aiseop_title = get_post_meta( $post_id, '_aioseop_title', true );
	        if ( !empty($aiseop_title) ) {
	          $site_title = $aiseop_title;
	        }
	        add_filter('aioseop_title', '__return_false');
	    }
	    if(class_exists('All_in_One_SEO_Pack') && ampforwp_is_home()){
	        global $aioseop_options;
	        if(!empty($aioseop_options['aiosp_home_title'])){
	        	$aiseop_title = $aioseop_options['aiosp_home_title'];
	        }
	        if ( !empty($aiseop_title) ) {
	           $site_title = $aiseop_title;
	        }
	        add_filter('aioseop_title', '__return_false');
	     }
		// Title From Rank Math SEO #2701 & #3358
		if ( defined( 'RANK_MATH_FILE' ) && 'rank_math' == ampforwp_get_setting('ampforwp-seo-selection') ) {
			$rank_math_title = '';
			$post_id = ampforwp_get_the_ID();
		 	if( ampforwp_is_home() || ampforwp_is_blog() ) {
		 		$rank_math_title = RankMath\Paper\Paper::get_from_options( 'homepage_title' );
		 	}
		 	if ( ampforwp_is_front_page() || is_singular() || ampforwp_is_blog() ) {
		 		$rank_math_title = RankMath\Post::get_meta( 'title', $post_id );
		 		if(empty($rank_math_title)){
		 			$rank_math_title = RankMath\Paper\Paper::get()->get_title();
		 		}
		 	}
		 	if ( is_archive() ) {
		 		$object = get_queried_object();
		 		if( !empty($object->taxonomy) ){
					$rank_math_title = RankMath\Term::get_meta( 'title', $object, $object->taxonomy );
		 		}
				if ( '' == $rank_math_title && !empty($object->taxonomy) ) {
					$rank_math_title = RankMath\Paper\Paper::get_from_options( "tax_{$object->taxonomy}_title", $object );
				}
		 	}
		 	if ( $rank_math_title ) {
		 		$site_title = $rank_math_title;
		 	}
		}
		//Bridge Qode SEO Compatibility #2538
		if ( function_exists('qode_wp_title') && 'bridge' == ampforwp_get_setting('ampforwp-seo-selection')){
			$site_title = get_post_meta($post_id, "qode_seo_title", true);
		}
		// The SEO Framework Compatibility #2670
		if ( function_exists( 'the_seo_framework' ) && 'seo_framework' == ampforwp_get_setting('ampforwp-seo-selection')  ) {
			$tsf_title = $ampforwp_tsf = '';
			$ampforwp_tsf 	= \the_seo_framework();
			$tsf_title 		= $ampforwp_tsf->get_title();
			if ( $tsf_title ) {
				$site_title = $tsf_title;
			}
		}
		if (class_exists('WPSEO_Frontend') && $sep == 'sc-dash') {
			return esc_html( convert_chars( trim( $site_title ) ) );
		}
		return esc_html( convert_chars( wptexturize( trim( $site_title ) ) ) );
	}
}
// Get SEOPress Title #1589
function ampforwp_get_seopress_title(){
	$seopress_title = $seopress_options = '';
	$post_id = ampforwp_get_the_ID();
	$post = get_post($post_id);
	$seopress_get_current_cpt = get_post_type($post);
	$seopress_options = get_option("seopress_titles_option_name");
	if ( get_post_meta($post_id,'_seopress_titles_title',true) ) {
		$seopress_title = get_post_meta($post_id,'_seopress_titles_title',true);
	}
	elseif ( isset($seopress_options['seopress_titles_single_titles'][$seopress_get_current_cpt]['title'])) {
		$seopress_title = $seopress_options['seopress_titles_single_titles'][$seopress_get_current_cpt]['title'];
		$seopress_title = ampforwp_seopress_title_sanitize($seopress_title);
	}
	if ( ampforwp_is_home() || ampforwp_is_blog() ) {
		$seopress_titles_template_variables_array = array('%%sitetitle%%','%%tagline%%');
		$seopress_titles_template_replace_array = array( get_bloginfo('name'), get_bloginfo('description') );
		$seopress_title = $seopress_options['seopress_titles_home_site_title'];
		$seopress_title = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_title);
	}
	if ( is_archive() ) {
		$seopress_title = get_term_meta(get_queried_object()->{'term_id'},'_seopress_titles_title',true);
	}
	if ( $seopress_title ) {
		return $seopress_title;
	}
}
// Sanitize SEOPress Title #1589
function ampforwp_seopress_title_sanitize($title){
	global $post;
	$seopress_titles_template_variables_array = array(
		'%%sep%%',
		'%%sitetitle%%',
		'%%sitename%%',
		'%%tagline%%',
		'%%post_title%%',
		'%%post_excerpt%%',
		'%%post_date%%',
		'%%post_modified_date%%',
		'%%post_author%%',
		'%%post_category%%',
		'%%post_tag%%',
		'%%_category_title%%',
		'%%_category_description%%',
		'%%tag_title%%',
		'%%tag_description%%',
		'%%term_title%%',
		'%%term_description%%',
		'%%search_keywords%%',
		'%%current_pagination%%',
		'%%cpt_plural%%',
		'%%archive_title%%',
		'%%archive_date%%',
		'%%archive_date_day%%',
		'%%archive_date_month%%',
		'%%archive_date_year%%',
		'%%wc_single_cat%%',
		'%%wc_single_tag%%',
		'%%wc_single_short_desc%%',
		'%%wc_single_price%%',
		'%%wc_single_price_exc_tax%%',
		'%%currentday%%',
		'%%currentmonth%%',
		'%%currentyear%%',
		'%%currentdate%%',
		'%%currenttime%%',
	);
	$sep = '';
	$seopress_excerpt ='';
	$seopress_excerpt_length = 50;
	$seopress_excerpt_length = apply_filters('seopress_excerpt_length',$seopress_excerpt_length);
	if ($seopress_excerpt !='') {
		$seopress_get_the_excerpt = wp_trim_words(esc_attr(stripslashes_deep(wp_filter_nohtml_kses(strip_shortcodes($seopress_excerpt)))), $seopress_excerpt_length);
	} elseif ($post !='') {
		if (get_post_field('post_content', $post->ID) !='') {
			$seopress_get_the_excerpt = wp_trim_words(esc_attr(stripslashes_deep(wp_filter_nohtml_kses(strip_shortcodes(get_post_field('post_content', $post->ID))))), $seopress_excerpt_length);
		} else {
			$seopress_get_the_excerpt = null;
		}
	} else {
		$seopress_get_the_excerpt = null;
	}
	$seopress_paged = '';
	if (get_query_var('paged') >='1') {
		$seopress_paged = get_query_var('paged');
	}
	$seopress_titles_sep_option = get_option("seopress_titles_option_name");
	if (isset($seopress_titles_sep_option['seopress_titles_sep']) ) {
		$sep = $seopress_titles_sep_option['seopress_titles_sep'];
	} else {
		$sep = '-';
	}
	$the_author_meta ='';
	if(is_single() || is_author()){
		$the_author_meta = get_the_author_meta('display_name', $post->post_author);
	}

	$post_category ='';
	if (is_single() && has_category()) {
		$post_category_array = get_the_terms(get_the_id(), 'category');
		$post_category = $post_category_array[0]->name;
	}

	$post_tag ='';
	if (is_single() && has_tag()) {
		$post_tag_array = get_the_terms(get_the_id(), 'post_tag');
		$post_tag = $post_tag_array[0]->name;
	}

	$get_search_query ='';
	if (get_search_query() !='') {
		$get_search_query = '"'.get_search_query().'"';
	}
	
	$get_search_query = apply_filters('seopress_get_search_query', $get_search_query);

	if ($seopress_excerpt !='') {
		$seopress_get_the_excerpt = wp_trim_words(esc_attr(stripslashes_deep(wp_filter_nohtml_kses(strip_shortcodes($seopress_excerpt)))), $seopress_excerpt_length);
	} elseif ($post !='') {
		if (get_post_field('post_content', $post->ID) !='') {
			$seopress_get_the_excerpt = wp_trim_words(esc_attr(stripslashes_deep(wp_filter_nohtml_kses(strip_shortcodes(get_post_field('post_content', $post->ID))))), $seopress_excerpt_length);
		} else {
			$seopress_get_the_excerpt = null;
		}
	} else {
		$seopress_get_the_excerpt = null;
	}
	
	$woo_single_cat_html ='';
	$woo_single_tag_html ='';
	$woo_single_price ='';
	$woo_single_price_exc_tax ='';
	if ( class_exists('WooCommerce') ) {
		if (is_product()) {
			//Woo Cat product
			$woo_single_cats = get_the_terms( $post->ID, 'product_cat' );
	                         
			if ( $woo_single_cats && ! is_wp_error( $woo_single_cats ) ) {
			 
			    $woo_single_cat = array();
			 
			    foreach ( $woo_single_cats as $term ) {
			        $woo_single_cat[] = $term->name;
			    }
	                         
			    $woo_single_cat_html = stripslashes_deep(wp_filter_nohtml_kses(join( ", ", $woo_single_cat )));
			}

			//Woo Tag product
			$woo_single_tags = get_the_terms( $post->ID, 'product_tag' );
	                         
			if ( $woo_single_tags && ! is_wp_error( $woo_single_tags ) ) {
			 
			    $woo_single_tag = array();
			 
			    foreach ( $woo_single_tags as $term ) {
			        $woo_single_tag[] = $term->name;
			    }

			    $woo_single_tag_html = stripslashes_deep(wp_filter_nohtml_kses(join( ", ", $woo_single_tag )));
			}

			//Woo Price
			$product = wc_get_product($post->ID);
			$woo_single_price = wc_get_price_including_tax( $product );

			//Woo Price tax excluded
			$product = wc_get_product($post->ID);
			$woo_single_price_exc_tax = wc_get_price_excluding_tax( $product );
		}
	}
	$seopress_titles_template_replace_array = array(
		$sep,
		get_bloginfo('name'),
		get_bloginfo('name'),
		get_bloginfo('description'),
		the_title_attribute('echo=0'),
		$seopress_get_the_excerpt,
		get_the_date(),
		get_the_modified_date(),
		$the_author_meta,
		$post_category,
		$post_tag,
		single_cat_title('', false),
		wp_trim_words(stripslashes_deep(wp_filter_nohtml_kses(category_description())),$seopress_excerpt_length),
		single_tag_title('', false),
		wp_trim_words(stripslashes_deep(wp_filter_nohtml_kses(tag_description())),$seopress_excerpt_length),
		single_term_title('', false),
		wp_trim_words(stripslashes_deep(wp_filter_nohtml_kses(term_description())),$seopress_excerpt_length),
		$get_search_query,
		$seopress_paged,
		post_type_archive_title('', false),
		get_the_archive_title(),
		get_the_archive_title(),
		esc_attr(get_query_var('day')),
		esc_attr(get_query_var('monthnum')),
		esc_attr(get_query_var('year')),
		$woo_single_cat_html,
		$woo_single_tag_html,
		$seopress_get_the_excerpt,
		$woo_single_price,
		$woo_single_price_exc_tax,
		date_i18n('j'),
		date_i18n('F'),
		gmdate('Y'),
		date_i18n( get_option( 'date_format' )),
		current_time(get_option( 'time_format' )),
	);
	$seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $title);
	return $seopress_titles_title_template;
}
// Squirrly SEO Compatibility #3421
add_filter('sq_current_post', 'ampforwp_sq_current_post');
function ampforwp_sq_current_post($post){
	if ( 'squirrly' == ampforwp_get_setting('ampforwp-seo-selection') && ampforwp_is_amp_endpoint() && ( ampforwp_is_front_page() || ampforwp_is_blog() ) ){
		$post = get_post(ampforwp_get_the_ID());
	}
	return $post;
}
function ampforwp_modify_archive_title( $title ) {
    if ( is_category() ) {
        $title = single_cat_title( '', false );
    } elseif ( is_tag() ) {
        $title = single_tag_title( '', false );
    } elseif ( is_author() ) {
		if(!get_the_author() && function_exists('get_the_coauthor_meta'))
		{
			$title = '<span class="vcard">' . ampforwp_get_coauthor_meta('display_name') . '</span>';
		}
		else{
			$title = '<span class="vcard">' . get_the_author() . '</span>';
		}
       
    } elseif ( is_post_type_archive() ) {
        $title = post_type_archive_title( '', false );
    } elseif ( is_tax() ) {
        $title = single_term_title( '', false );
    }  
    return $title;
}
add_action( 'pre_amp_render_post', 'ampforwp_modify_archive_title_in_amp');
function ampforwp_modify_archive_title_in_amp() {
	add_filter( 'get_the_archive_title', 'ampforwp_modify_archive_title' );
} 
// 27. Clean the Defer issue
// Moved to functions.php

// 28. Properly removes AMP if turned off from Post panel
add_filter( 'amp_skip_post', 'ampforwp_skip_amp_post', 10, 3 );
function ampforwp_skip_amp_post( $skip, $post_id, $post ) {
	$ampforwp_amp_post_on_off_meta = get_post_meta( $post->ID , 'ampforwp-amp-on-off' , true );
	if( $ampforwp_amp_post_on_off_meta === 'hide-amp' ) {
		$skip = true;
	}
    return $skip;
}

//30. TagDiv menu issue removed
	add_action('init','ampforwp_remove_tagdiv_mobile_menu');
	function ampforwp_remove_tagdiv_mobile_menu() {
		if( class_exists( 'Mobile_Detect' )) {
			remove_action('option_stylesheet', array('td_mobile_theme', 'mobile'));
		}
	}

//31. removing scripts added by cleantalk and 
 	//	#525 WordPress Twitter Bootstrap CSS
add_action('amp_init','ampforwp_remove_js_script_cleantalk');
function ampforwp_remove_js_script_cleantalk() {
	$current_url = '';
	$amp_check =  '';
  /* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized	 */
	$current_url = $_SERVER['REQUEST_URI'];
	$current_url = explode('/', $current_url);
	$current_url = array_filter($current_url);
	$amp_check = in_array('amp', $current_url);
	if ( true === $amp_check ) {
		ampforwp_remove_filters_for_class( 'wp_loaded', 'ICWP_WPTB_CssProcessor', 'onWpLoaded', 0 );
	}

	remove_action('wp_loaded', 'ct_add_nocache_script', 1);

}

//32. various lazy loading plugins Support
add_filter( 'amp_init', 'ampforwp_lazy_loading_plugins_compatibility' );
function ampforwp_lazy_loading_plugins_compatibility() {

    // Disable HTTP protocol removing on script, link, img, srcset and form tags.
    remove_filter( 'rocket_buffer', '__rocket_protocol_rewrite', PHP_INT_MAX );
    remove_filter( 'wp_calculate_image_srcset', '__rocket_protocol_rewrite_srcset', PHP_INT_MAX );
    if(function_exists('magplus_after_setup')){
    	$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH),'/' );
		if( function_exists('ampforwp_is_amp_inURL') && ampforwp_is_amp_inURL($url_path)) {
    		remove_action( 'template_redirect', 'magplus_pagination_redirect' );
    	}
    }
    //Lazy Load XT
	global $lazyloadxt;
	remove_filter( 'the_content', array( $lazyloadxt, 'filter_html' ) );
	remove_filter( 'widget_text', array( $lazyloadxt, 'filter_html' ) );
	remove_filter( 'post_thumbnail_html', array( $lazyloadxt, 'filter_html' ) );
	remove_filter( 'get_avatar', array( $lazyloadxt, 'filter_html' ) );
}

//Removing bj loading for amp
function ampforwp_remove_bj_load() {
 	if ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) {
 		add_filter( 'bjll/enabled', '__return_false' );
 	}
}
add_action( 'bjll/compat', 'ampforwp_remove_bj_load' );

add_action('wp','ampforwp_remove_wp_actions',9);
function ampforwp_remove_wp_actions(){
	//Disable Crazy Lazy for AMP #751
	if( ampforwp_is_amp_endpoint() ){
		remove_action( 'wp', array( 'CrazyLazy', 'instance' ) );
	}
	// Removing Marfeel plugin which was blocking internal pages of AMP #2423
	remove_action('wp', 'render_marfeel_amp_content' );
}
//33. Google tag manager support added
// Moved to analytics-functions.php

//34. social share boost compatibility Ticket #387
function social_sharing_removal_code() {
    remove_filter('the_content','ssb_in_content');
}
add_action('amp_init','social_sharing_removal_code', 9);


//35. Disqus Comments Support 
add_action('ampforwp_post_after_design_elements','ampforwp_add_disqus_support');
function ampforwp_add_disqus_support() {
	global $redux_builder_amp;
	$width = $height = 420;
	$layout = "";
	$layout = 'responsive';
	$display_comments_on = "";
	$display_comments_on = ampforwp_get_comments_status();
	if ( isset($redux_builder_amp['ampforwp-disqus-layout']) && 'fixed' == $redux_builder_amp['ampforwp-disqus-layout'] ) {
		$layout = 'fixed';
	}
    $height = ampforwp_get_setting('ampforwp-disqus-height');
	if ( $redux_builder_amp['ampforwp-disqus-comments-support'] && 4 != $redux_builder_amp['amp-design-selector'] && $display_comments_on ) {
		if( $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
			global $post; $post_slug = rawurlencode($post->post_name);

			$disqus_script_host_url = "https://ampforwp.appspot.com/?api=". AMPFORWP_DISQUS_URL;

			if( $redux_builder_amp['ampforwp-disqus-host-position'] == 0 ) {
				$disqus_script_host_url = esc_url( $redux_builder_amp['ampforwp-disqus-host-file'] );
			}

			$disqus_url = $disqus_script_host_url.'?disqus_title='.$post_slug.'&url='.rawurlencode(get_permalink()).'&disqus_name='. esc_url( $redux_builder_amp['ampforwp-disqus-comments-name'] ) ."/embed.js"  ;
			?>
			<section class="amp-wp-content post-comments amp-wp-article-content amp-disqus-comments" id="comments">
				<amp-iframe
					height=<?php echo esc_attr($height) ?>
					width=<?php echo esc_attr($width) ?>
					layout="<?php echo esc_attr($layout) ?>"
					sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"
					resizable
					frameborder="0"
					src="<?php echo esc_url($disqus_url) ?>" title="<?php echo esc_html__('Disqus Comments','accelerated-mobile-pages'); ?>">
					<div overflow tabindex="0" role="button" aria-label="Read more"><?php echo esc_html__('Disqus Comments Loading...','accelerated-mobile-pages') ?></div>
				</amp-iframe>
			</section>
		<?php
		}
	}
}

add_filter( 'amp_post_template_data', 'ampforwp_add_disqus_scripts' );
function ampforwp_add_disqus_scripts( $data ) {
	global $redux_builder_amp;
	if ( isset($redux_builder_amp['ampforwp-disqus-comments-support']) && $redux_builder_amp['ampforwp-disqus-comments-support'] && is_singular() ) {
		if( isset($redux_builder_amp['ampforwp-disqus-comments-name']) && $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
			if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
				$data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
			}
		}
	}
	// remove direction attribute from the AMP HTMl #541
	unset( $data['html_tag_attributes']['dir'] );
	return $data;
}

// Facebook Comments Support #825

add_action('ampforwp_post_after_design_elements','ampforwp_facebook_comments_support');
function ampforwp_facebook_comments_support() {
	global $redux_builder_amp;
	if ( 4 != $redux_builder_amp['amp-design-selector'] ) {
		//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo ampforwp_facebook_comments_markup();
	}
}
function ampforwp_facebook_comments_markup() {

	global $redux_builder_amp;
	$facebook_comments_markup = $lang = $locale = '';
	$lang = ampforwp_get_setting('ampforwp-fb-comments-lang');
	$display_comments_on = "";
	$display_comments_on = ampforwp_get_comments_status();
	if ( isset($redux_builder_amp['ampforwp-facebook-comments-support']) && $redux_builder_amp['ampforwp-facebook-comments-support'] && $display_comments_on ) { 

		$facebook_comments_markup = '<section class="amp-wp-content post-comments amp-wp-article-content amp-facebook-comments" id="comments">';
		if(true == ampforwp_get_setting('ampforwp-facebook-comments-title')){
			$facebook_comments_markup .= '<h5>'. esc_html(ampforwp_translation(ampforwp_get_setting('ampforwp-facebook-comments-title'), 'Leave a Comment')) .'</h5>';
		}
		$facebook_comments_markup .= '<amp-facebook-comments width=486 height=357
	    	layout="responsive" '.'data-locale = "'.esc_attr($lang).'"'.' data-numposts=';
		$facebook_comments_markup .= '"'. esc_attr($redux_builder_amp['ampforwp-number-of-fb-no-of-comments']). '"';
	    if(ampforwp_get_data_consent()){		
	    	$facebook_comments_markup .= ' data-block-on-consent ';
	    }
		$facebook_comments_markup .= 'data-href=" ' . esc_url(get_permalink()) . '"';
	    $facebook_comments_markup .= '></amp-facebook-comments> </section>';

		return $facebook_comments_markup;
	}
}

add_filter( 'amp_post_template_data', 'ampforwp_add_fbcomments_scripts' );
function ampforwp_add_fbcomments_scripts( $data ) {

	global $redux_builder_amp;
	$facebook_comments_check = "";
	$facebook_comments_check = ampforwp_facebook_comments_markup();

	if ( $facebook_comments_check && $redux_builder_amp['ampforwp-facebook-comments-support'] && ( is_singular() || ampforwp_is_front_page() ) && ( ampforwp_design_selector() == 1 || ampforwp_design_selector() == 2 || ampforwp_design_selector() == 3 )) {
			if ( empty( $data['amp_component_scripts']['amp-facebook-comments'] ) ) {
				$data['amp_component_scripts']['amp-facebook-comments'] = 'https://cdn.ampproject.org/v0/amp-facebook-comments-0.1.js';
			}
		}
		return $data;
	}

//37. compatibility with wp-html-compression
function ampforwp_copat_wp_html_compression() {
	remove_action('template_redirect', 'wp_html_compression_start', -1);
	remove_action('get_header', 'wp_html_compression_start');
	
	if( class_exists('BunnyCDN') ){
		$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH),'/' );
		if( function_exists('ampforwp_is_amp_inURL') && ampforwp_is_amp_inURL($url_path)) {
			//Remove Action to remove CDN URL from BunnyCDN Plugin
			remove_action("template_redirect", "doRewrite");
		}
	}
}
add_action('amp_init','ampforwp_copat_wp_html_compression');

//38. Extra Design Specific Features
add_action('pre_amp_render_post','ampforwp_add_extra_functions',12);
function ampforwp_add_extra_functions() {
	global $redux_builder_amp;
	if ( isset($redux_builder_amp['amp-design-selector']) && $redux_builder_amp['amp-design-selector'] == 3 ) {
		require AMPFORWP_PLUGIN_DIR . '/templates/design-manager/design-3/functions.php';
	}
}

//38. #529 editable archives
add_filter( 'get_the_archive_title', 'ampforwp_editable_archvies_title' );
function ampforwp_editable_archvies_title($title) {
	global $redux_builder_amp;
	$ampforwp_is_amp_endpoint = ampforwp_is_amp_endpoint();

	if ( $ampforwp_is_amp_endpoint){
	    if ( is_category() ) {
	            $title = single_cat_title( ampforwp_translation($redux_builder_amp['amp-translator-archive-cat-text'], 'Category (archive title)').' ', false );
	        } elseif ( is_tag() ) {
	            $title = single_tag_title( ampforwp_translation($redux_builder_amp['amp-translator-archive-tag-text'], 'Tag (archive title)').' ', false );
	        }
    }
    return $title;
}

//39. #560 Header and Footer Editable html enabled script area
add_action('amp_post_template_footer','ampforwp_footer_html_output',11);
function ampforwp_footer_html_output() {
  if(true == ampforwp_get_setting('ampforwp-footer-top')){
  	amp_back_to_top_link();
  }
  if( ampforwp_get_setting('amp-footer-text-area-for-html') ) {
	//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
    echo ampforwp_get_setting('amp-footer-text-area-for-html') ;
  }

  if (ampforwp_get_setting('amp-inmobi-notice-switch')) {
		$id = ampforwp_get_setting('amp-inmobi-id');
  	 $hashcode = ampforwp_get_setting('amp-inmobi-hashcode');
  	 $country = ampforwp_get_setting('amp-inmobi-publishercountrycode');
  	 $privacy = ampforwp_get_setting('amp-inmobi-privacy-mode');
  	 $lang = ampforwp_get_setting('amp-inmobi-lang');
  	 if (empty($privacy)) {
  	 	$privacy = ["GDPR"];
  	 }else{
		$exp = explode(',',$privacy);
		$pri_arr = array();
		for ($i=0; $i < count($exp); $i++) { 
			$pr ='"'.$exp[$i].'"';
			$pri_arr[] = $pr;
		}
		$privacy = $pri_arr;
	 }
  	 if (empty($lang)) {
  	 	$lang = 'en';
  	 }
	if (!empty($id) && !empty($hashcode) && !empty($country) ) {?>
<amp-consent id="inmobi" layout="nodisplay">
  <script type="application/json">
    {
      "consentInstanceId": "inmobi",
      "checkConsentHref": "https://api.cmp.inmobi.com/amp/check-consent",
      "consentRequired": "remote",
      "promptUISrc": "https://cmp.inmobi.com/tcfv2/amp.html",
      "clientConfig": {
        "coreConfig": {
          "vendorPurposeLegitimateInterestIds": [
            2,
            7,
            8,
            10,
            9,
            11
          ],
          "publisherPurposeIds": [],
          "publisherSpecialPurposesIds": [],
          "publisherFeaturesIds": [],
          "stacks": [
            1,
            42
          ],
          "publisherLIRestrictionIds": [],
          "inmobiAccountId": "<?php echo esc_attr( $id )?>",
          "vendorSpecialPurposesIds": [
            1,
            2
          ],
          "initScreenBodyTextOption": 1,
          "publisherConsentRestrictionIds": [],
          "vendorPurposeIds": [2,4,6,7,9,10,1,3,5,8,11],
          "totalVendors": 1420,
          "lang_": "en",
          "privacyMode": [<?php echo implode( ',', $privacy);?>],
          "publisherPurposeLegitimateInterestIds": [],
          "hashCode": "<?php echo esc_attr($hashcode)?>",
          "vendorSpecialFeaturesIds": [
            1,
            2
          ],
          "displayUi": "always",
          "publisherSpecialFeaturesIds": [],
          "googleEnabled": false,
          "vendorListUpdateFreq": 30,
          "publisherCountryCode": "<?php echo esc_attr( $country );?>",
          "vendorFeaturesIds": [
            1,
            2,
            3
          ],
          "gvlVersion": 3
        },
        "coreUiLabels": {},
        "theme": {},
        "tagVersion": "V3"
      }
    }
  </script>
</amp-consent>
<?php
	}
}
  //Quantcast Support #4951
  if (ampforwp_get_setting('amp-quantcast-notice-switch')) {
  	 $id = $hashcode = $country = $name = '';
  	 $id = ampforwp_get_setting('amp-quantcast-id');
  	 $hashcode = ampforwp_get_setting('amp-quantcast-hashcode');
  	 $country = ampforwp_get_setting('amp-quantcast-publishercountrycode');
  	 $name = ampforwp_get_setting('amp-quantcast-publishername');
  	 $privacy = ampforwp_get_setting('amp-quantcast-privacy-mode');
  	 $lang = ampforwp_get_setting('amp-quantcast-lang');
  	 if (empty($privacy)) {
  	 	$privacy = 'GDPR';
  	 }
  	 if (empty($lang)) {
  	 	$lang = 'en';
  	 }

  	if (!empty($id) && !empty($hashcode) && !empty($country) && !empty($name) ) {?>
	<amp-consent id="quantcast" layout="nodisplay">
    	<script type="application/json">
       	{
		   "consentInstanceId": "quantcast",
           "checkConsentHref": "https://apis.quantcast.mgr.consensu.org/amp/check-consent",
           "consentRequired": "remote",
           "promptUISrc": "https://quantcast.mgr.consensu.org/tcfv2/amp.html",
           "clientConfig": {
               "coreConfig": {
                   "quantcastAccountId": "<?php echo esc_html($id); ?>",
                   "privacyMode": ["<?php echo esc_html($privacy); ?>"],
                   "hashCode": "<?php echo esc_html($hashcode); ?>",
                   "publisherCountryCode": "<?php echo esc_html($country); ?>",
                   "publisherName": "<?php echo esc_html($name); ?>",
                   "vendorPurposeIds": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                   "vendorFeaturesIds": [1, 2, 3],
                   "vendorPurposeLegitimateInterestIds": [2, 3, 4, 5, 6, 7, 8, 9, 10],
                   "vendorSpecialFeaturesIds": [1, 2],
                   "vendorSpecialPurposesIds": [1, 2],
                   "googleEnabled": false,
                   "lang_": "<?php echo esc_html($lang); ?>",
                   "displayUi": "always",
                   "publisherConsentRestrictionIds": [],
                   "publisherLIRestrictionIds": [],
                   "publisherPurposeIds": [],
                   "publisherPurposeLegitimateInterestIds": [],
                   "publisherSpecialPurposesIds": [],
                   "publisherFeaturesIds": [],
                   "publisherSpecialFeaturesIds": [],
                   "stacks": [1, 42],
                   "vendorListUpdateFreq": 30
                }
            }
        }
   	   </script>
<!-- PRIVACY BUTTON LOWER RIGHT -->
       <div id="postPromptUI">
           <button role="button" on="tap:quantcast.prompt()">
               <svg style="height:20px">
                   <g fill="none">
                       <g fill="#FFF">
                           <path
                               d="M16 10L15 9C15 9 15 8 15 8L16 7C16 7 16 6 16 6 16 
5 15 4 14 3 14 2 13 2 13 3L12 3C12 3 11 3 11 2L11 1C11 1 10 0 10 0 9 0 7 0 6 0 6 0 
5 1 5 1L5 2C5 3 4 3 4 3L3 3C3 2 2 2 2 3 1 4 0 5 0 6 0 6 0 7 0 7L1 8C1 8 1 9 1 9L0 
10C0 10 0 11 0 11 0 12 1 13 2 14 2 15 3 15 3 14L4 14C4 14 5 14 5 15L5 16C5 16 6 17 
6 17 7 17 9 17 10 17 10 17 11 16 11 16L11 15C11 14 12 14 12 14L13 14C13 15 14 15 14 
14 15 13 16 12 16 11 16 11 16 10 16 10ZM13 13L12 13C11 13 11 13 9 14L9 16C9 16 7 16 7
 16L7 14C5 14 5 13 4 13L3 13C2 13 1 12 1 11L3 10C2 9 2 8 3 7L1 6C1 5 2 4 3 4L4 4C5 4 5 
3 7 3L7 1C7 1 9 1 9 1L9 3C11 3 11 4 12 4L13 4C14 4 15 5 15 6L13 7C14 8 14 9 13 10L15 
11C15 12 14 13 13 13ZM8 5C6 5 5 7 5 9 5 10 6 12 8 12 10 12 11 10 11 9 11 7 10 5 8 5ZM8
 11C7 11 6 10 6 9 6 7 7 6 8 6 9 6 10 7 10 9 10 10 9 11 8 11Z" />
                       </g>
                   </g>
               </svg>
               PRIVACY
           </button>
       </div>
	</amp-consent>
	<amp-geo layout="nodisplay">
	  <script type="application/json">
	    {
	      "ISOCountryGroups": {
	         "<?php echo esc_html($country); ?>": ["<?php echo esc_html($country); ?>"]
	      }
	    }
	   </script>
 	</amp-geo>
<?php } }
}

add_filter( 'amp_post_template_data', 'ampforwp_global_head_scripts');
function ampforwp_global_head_scripts($data){
   $content = $data['post_amp_content'];
   $script_slug = '';
   $script_url = '';
   if( ampforwp_get_setting('amp-header-text-area-for-html') ) {
      $allscripts = ampforwp_get_setting('amp-header-text-area-for-html');
	  /* phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript */
      preg_match_all('/<script(.*?)custom-element=\"(.*?)\"(.*?)src=\"(.*?)\"(.*?)><\/script>/', $allscripts, $matches);
      $script_slug = $matches[2];
      $script_url = $matches[4];
      if($matches){
         foreach ($script_slug as $key => $slug) {
            if(preg_match('/<\/'.$slug.'>/', $content)){
               if ( empty( $data['amp_component_scripts'][$slug] ) ) {
                  $data['amp_component_scripts'][$slug]  = $script_url[$key];
               }
            }
         }
      }
   }
   return $data;
}

add_action('amp_post_template_head','ampforwp_header_html_output',11);
function ampforwp_header_html_output() {
 	if( ampforwp_get_setting('ampforwp-seo-custom-additional-meta') ){
		//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo strip_tags( ampforwp_get_setting('ampforwp-seo-custom-additional-meta'), '<link><meta>' );
	}
  if( ampforwp_get_setting('amp-header-text-area-for-html') ) {
  		$allhtml = ampforwp_get_setting('amp-header-text-area-for-html');
		/* phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript */
  		$allhtml = preg_replace('/<script(.*?)custom-element=\"(.*?)\"(.*?)src=\"(.*?)\"(.*?)><\/script>/','', $allhtml);
		//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	  	echo $allhtml;
  	}
  $mob_pres_link = false;
	if(function_exists('ampforwp_mobile_redirect_preseve_link')){
	   $mob_pres_link = ampforwp_mobile_redirect_preseve_link();
	}	
}

add_filter('amp_post_template_data','ampforwp_set_body_content_script', 20);
function ampforwp_set_body_content_script($data){
	if( ampforwp_get_setting('amp-body-text-area') || ampforwp_get_setting('amp-footer-text-area-for-html') ) {
		$head_content =  ampforwp_get_setting('amp-header-text-area-for-html');
    	preg_match_all('/"amp-(.*?)"/', $head_content, $matches1);
    	$body_content =  ampforwp_get_setting('amp-body-text-area');
    	preg_match_all('/<\/amp-(.*?)>/', $body_content, $matches);
    	if(ampforwp_get_setting('amp-footer-text-area-for-html') ) {
	    	$footer_content =  ampforwp_get_setting('amp-footer-text-area-for-html');
	    	preg_match_all('/<\/amp-(.*?)>/', $footer_content, $matches);
	    }
    	if(isset($matches[1][0])){
    		$amp_comp = $matches[1];
    		for($i=0;$i<count($amp_comp);$i++){
    			$comp = $amp_comp[$i];
    			if($comp!='img'){
    				$script_ver = 'latest';
					if($comp == 'auto-ads' || $comp == 'ad'){
						$script_ver = '0.1';
					}
    				$component_url = "https://cdn.ampproject.org/v0/amp-".esc_attr($comp)."-".esc_attr($script_ver).".js";
    				if(isset($matches[1][0])){
    					$thtml = $matches1[1];
    					if(!in_array($comp, $thtml)){
    						$data['amp_component_scripts']["amp-".esc_attr($comp)] = esc_url($component_url);
    					}else{
    						$data['amp_component_scripts']["amp-".esc_attr($comp)] = esc_url($component_url);
    					}
    				} else{
    					$data['amp_component_scripts']["amp-".esc_attr($comp)] = esc_url($component_url); 
    				}   
    			}
    		}
    	}
    	
    }
    return $data;
}

//40. Meta Robots
add_action('amp_post_template_head' , 'ampforwp_talking_to_robots');
function ampforwp_talking_to_robots() {

  global $redux_builder_amp;
  global $wp;
  $meta_content = "";
  $talk_to_robots=false;

  //author archives  index/noindex
  if( is_author() && !$redux_builder_amp['ampforwp-robots-archive-author-pages'] ) {
	$talk_to_robots = true;
  }

  //date archives index/noindex
  if( is_date() && !$redux_builder_amp['ampforwp-robots-archive-date-pages'] ) {
    $talk_to_robots = true;
  }

  //Search pages noindexing by default
  if( is_search() ) {
    $talk_to_robots = true;
  }

  //categorys index/noindex
  if( is_category()  && !$redux_builder_amp['ampforwp-robots-archive-category-pages'] ) {
    $talk_to_robots = true;
  }

  //categorys index/noindex
  if( is_tag() && !$redux_builder_amp['ampforwp-robots-archive-tag-pages'] ) {
    $talk_to_robots = true;
  }

  if( is_archive() || is_home() ) {
    if ( get_query_var( 'paged' ) ) {
          $paged = get_query_var('paged');
      } elseif ( get_query_var( 'page' ) ) {
          $paged = get_query_var('page');
      } else {
          $paged = 1;
      }
      //sitewide archives sub pages index/noindex  ie page 2 onwards
      if( $paged >= 2 && !$redux_builder_amp['ampforwp-robots-archive-sub-pages-sitewide'] ) {
      	$talk_to_robots = true;
      }
    }

	$query_array = $wp->query_vars;
	if( array_key_exists( 'page' , $query_array ) ) {
		$page = $wp->query_vars['page'];
		if ( $redux_builder_amp['amp-frontpage-select-option'] && $page >= '2') {
			$talk_to_robots = true;
		}
	}

  if( $talk_to_robots ) {
  	$meta_content = "noindex,noarchive";
  }
  // Genesis
  if ( function_exists('genesis_get_robots_meta_content') && 'genesis' == ampforwp_get_setting('ampforwp-seo-selection') ) {
  	$meta_content = genesis_get_robots_meta_content();
  }
  // All in One SEO #1720
  if ( class_exists('All_in_One_SEO_Pack') ) {
  	$aios_class = $page = $opts = $aios_meta = $aiosp_noindex = $aiosp_nofollow = '';
  	$noindex       = 'index';
	$nofollow      = 'follow';
  	$aios_class = new All_in_One_SEO_Pack();
  	if (is_object($aios_class) && property_exists($aios_class,'get_page_number')) {
  		$page       = $aios_class->get_page_number();
	}
	if (is_object($aios_class) && property_exists($aios_class,'get_current_options')) {
		$opts = $aios_class->get_current_options( array(), 'aiosp' );
	}
	if (is_object($aios_class) && property_exists($aios_class,'get_robots_meta')) {
  		$aios_meta = $aios_class->get_robots_meta();
 	} 
  	if ( ( is_category() && ! empty( $aioseop_options['aiosp_category_noindex'] ) ) || ( ! is_category() && is_archive() && ! is_tag() && ! is_tax() || ( is_tag() && ! empty( $aioseop_options['aiosp_tags_noindex'] ) ) || ( is_search() && ! empty( $aioseop_options['aiosp_search_noindex'] ) )
		) ){
			$noindex = 'noindex';
		} elseif ( is_single() || is_page() || $aios_class->is_static_posts_page() || is_attachment() || is_category() || is_tag() || is_tax() || ( $page > 1 ) ) {
			$post_type = get_post_type();
			if ( ! empty( $opts ) ) {
				$aiosp_noindex  = htmlspecialchars( stripslashes( $opts['aiosp_noindex'] ) );
				$aiosp_nofollow = htmlspecialchars( stripslashes( $opts['aiosp_nofollow'] ) );
			}
			if ( $aiosp_noindex || $aiosp_nofollow || ! empty( $aioseop_options['aiosp_cpostnoindex'] )
				 || ! empty( $aioseop_options['aiosp_cpostnofollow'] ) || ! empty( $aioseop_options['aiosp_paginated_noindex'] ) || ! empty( $aioseop_options['aiosp_paginated_nofollow'] )
			) {
				if ( ( $aiosp_noindex == 'on' ) || ( ( ! empty( $aioseop_options['aiosp_paginated_noindex'] ) ) && $page > 1 ) ||
					 ( ( $aiosp_noindex == '' ) && ( ! empty( $aioseop_options['aiosp_cpostnoindex'] ) ) && in_array( $post_type, $aioseop_options['aiosp_cpostnoindex'] ) )
				) {
					$noindex = 'noindex';
				}
				if ( ( $aiosp_nofollow == 'on' ) || ( ( ! empty( $aioseop_options['aiosp_paginated_nofollow'] ) ) && $page > 1 ) ||
					 ( ( $aiosp_nofollow == '' ) && ( ! empty( $aioseop_options['aiosp_cpostnofollow'] ) ) && in_array( $post_type, $aioseop_options['aiosp_cpostnofollow'] ) )
				) {
					$nofollow = 'nofollow';
				}
			}
		}
		if ( is_singular() && is_object($aios_class) && property_exists($aios_class,'is_password_protected') && $aios_class->is_password_protected() && apply_filters( 'aiosp_noindex_password_posts', false ) ) {
			$noindex = 'noindex';
		}

		$robots_meta = $noindex . ',' . $nofollow;
		if ( $robots_meta == 'index,follow' ) {
			$robots_meta = '';
		}

	  	if ( !empty($robots_meta) ) {
	  		$meta_content = $robots_meta;
	  	}
  	}
  	// Meta Robots Tag From Yoast #1563
  	if ( class_exists('WPSEO_Frontend') && 'yoast' == ampforwp_get_setting('ampforwp-seo-selection') && is_singular() && !class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration')) {
		$class_instance = '';
	    $class_instance = WPSEO_Frontend::get_instance();
	    // robots() will return and print the meta robots tag
	    $class_instance->robots();
	    // Empty the above meta content to avoid duplicate meta robot tags
	    $meta_content = '';
	}
	$meta_content = apply_filters('ampforwp_robots_meta', $meta_content);
	if ( isset($redux_builder_amp['amp-inspection-tool']) && true == $redux_builder_amp['amp-inspection-tool'] ) {
			$talk_to_robots = $meta_content = '';
	}
	if ( $meta_content ) {
	  	if ( ( is_archive() && $talk_to_robots ) || is_singular() || is_home() ) {	
	  		echo '<meta name="robots" content="' . esc_attr($meta_content) . '"/>';
	  	}
	}

}

// 41. Rewrite URL only on save #511
function ampforwp_auto_flush_on_save($redux_builder_amp) {
	if ( $redux_builder_amp['amp-on-off-for-all-pages'] == 1 || $redux_builder_amp['ampforwp-archive-support'] == 1 || $redux_builder_amp['fb-instant-article-switch'] == 1 ) {
		global $wp_rewrite;
		$wp_rewrite->flush_rules();
	}
	$options = $new_options = array();
	if ( is_array(ampforwp_get_setting('hide-amp-categories')) && !is_array(ampforwp_get_setting('hide-amp-categories2'))) {
		$options = array_keys(array_filter($redux_builder_amp['hide-amp-categories'] ) );
		foreach ($options as $option ) {
			$new_options[] = $option;
		}
	    $redux_builder_amp['hide-amp-categories2'] = $new_options;
		$redux_builder_amp['hide-amp-categories'] = '';
	    update_option('redux_builder_amp',$redux_builder_amp);
	 }
}
add_action("redux/options/redux_builder_amp/saved",'ampforwp_auto_flush_on_save', 10, 1);

// 42. registeing AMP sidebars
add_action('init', 'ampforwp_add_widget_support');
function ampforwp_add_widget_support() {
	if (function_exists('register_sidebar')) {
		global $redux_builder_amp;

		register_sidebar(array(
			'name' => 'AMP Above Loop [HomePage]',
			'id'   => 'ampforwp-above-loop',
			'description'   => 'This Widget will be display on AMP HomePage Above the loop ',
			'before_widget' => '',
			'after_widget'  => '',
			'before_title'  => '<h4>',
			'after_title'   => '</h4>'
		));

		register_sidebar(array(
			'name' => 'AMP Below Loop [HomePage]',
			'id'   => 'ampforwp-below-loop',
			'description'   => 'This Widget will be display on AMP HomePage Below the loop',
			'before_widget' => '',
			'after_widget'  => '',
			'before_title'  => '<h4>',
			'after_title'   => '</h4>'
		));

		register_sidebar(array(
			'name' 			=> 'AMP Below the Header [Site Wide]',
			'id'   			=> 'ampforwp-below-header',
			'description'   => 'This Widget will be display after the header bar',
			'before_widget' => '',
			'after_widget'  => '',
			'before_title'  => '<h4><span>',
			'after_title'   => '</h4></span>'
		));

		register_sidebar(array(
			'name' 			=> 'AMP Above the Footer [Site Wide]',
			'id'   			=> 'ampforwp-above-footer',
			'description'   => 'This Widget display Above the Footer',
			'before_widget' => '',
			'after_widget'  => '',
			'before_title'  => '<h4><span>',
			'after_title'   => '</h4></span>'
		));

	if ( function_exists('ampforwp_custom_theme_files_register') ) {
    $desc = "<b>Update: <a target='_blank' href='https://ampforwp.com/tutorials/article/amp-page-builder-installation/'>Introducing PageBuilder 2.0</a></b><br />Drag and Drop the AMP Modules in this Widget Area and then assign this widget area to a page <a href=http://ampforwp.com/tutorials/page-builder>(Need Help?)</a>";
    $placeholder = 'PLACEHOLDER';
			register_sidebar(array(
				'name' 			=> 'Page Builder (AMP) [Legacy]',
				'id'   			=> 'layout-builder',
                'description' => $placeholder,
				'before_widget' => '',
				'after_widget'  => '',
				'before_title'  => '<h4>',
				'after_title'   => '</h4>' 
			));
            
        add_action( 'widgets_admin_page', function() use ( $desc, $placeholder ) {
            add_filter( 'esc_html', function( $safe_text, $text ) use ( $desc, $placeholder ) {

                if ( $text !== $placeholder )
                    return $safe_text;

                remove_filter( current_filter(), __FUNCTION__ );

                return $desc;
            }, 10, 2 );
        });
            
		}

	}
}

// 43. custom actions for widgets output
add_action( 'ampforwp_home_above_loop' , 'ampforwp_output_widget_content_above_loop' );
add_action( 'ampforwp_frontpage_above_loop' , 'ampforwp_output_widget_content_above_loop' );
function ampforwp_output_widget_content_above_loop() {
	$sanitized_sidebar = "";
	$sidebar_output = "";
	$sanitized_sidebar = ampforwp_sidebar_content_sanitizer('ampforwp-above-loop');	
    if ( $sanitized_sidebar) {
		$sidebar_output = $sanitized_sidebar->get_amp_content();
		$sidebar_output = apply_filters('ampforwp_modify_sidebars_content',do_shortcode($sidebar_output)); 
	}
      if ( $sidebar_output ) { ?>
	   	<div class="cntr">
	   		<div class="amp-wp-content widget-wrapper amp_widget_above_loop">
	   			<div class="f-w">
			  		<?php echo do_shortcode($sidebar_output); ?>
					<div class="cb"></div>
				</div>
	  		</div>
	  	</div> 
	<?php }
}

add_action( 'ampforwp_home_below_loop' , 'ampforwp_output_widget_content_below_loop' );
add_action( 'ampforwp_frontpage_below_loop' , 'ampforwp_output_widget_content_below_loop' );
function ampforwp_output_widget_content_below_loop() {
    $sanitized_sidebar = "";
	$sidebar_output = "";
	$sanitized_sidebar = ampforwp_sidebar_content_sanitizer('ampforwp-below-loop');	
 if ( $sanitized_sidebar) {
		$sidebar_output = $sanitized_sidebar->get_amp_content();
		$sidebar_output = apply_filters('ampforwp_modify_sidebars_content',do_shortcode($sidebar_output)); 
	}
    if ( $sidebar_output ) { ?>
	   	<div class="amp-wp-content widget-wrapper">
		   		<div class="amp_widget_below_loop f-w">
		  			<?php echo do_shortcode($sidebar_output); ?> 
		  		</div>
	  	</div> 
	<?php } 
}

add_action( 'ampforwp_after_header' , 'ampforwp_output_widget_content_below_the_header' );
add_action('below_the_header_design_1','ampforwp_output_widget_content_below_the_header');
function ampforwp_output_widget_content_below_the_header() {
	 $sanitized_sidebar = "";
	 $sidebar_output = "";
	 $sanitized_sidebar = ampforwp_sidebar_content_sanitizer('ampforwp-below-header');
     if ( $sanitized_sidebar) {
		$sidebar_output = $sanitized_sidebar->get_amp_content(); 
		$sidebar_output = apply_filters('ampforwp_modify_sidebars_content',do_shortcode($sidebar_output));
	}
	if ( $sidebar_output ) { ?>
	   	<div class="amp-wp-content widget-wrapper">
	   		<div class="cntr">
			   	<div class="amp_widget_below_the_header f-w">
			  		<?php echo do_shortcode($sidebar_output); ?> 
			 	</div>
			</div>
	  	</div> 
	<?php }
}

add_action( 'amp_post_template_above_footer' , 'ampforwp_output_widget_content_above_the_footer' );
function ampforwp_output_widget_content_above_the_footer() {
	$sanitized_sidebar = "";
	$sidebar_output = "";
	$sanitized_sidebar = ampforwp_sidebar_content_sanitizer('ampforwp-above-footer');
	if ( $sanitized_sidebar) {
		$sidebar_output = $sanitized_sidebar->get_amp_content();
		$sidebar_output = apply_filters('ampforwp_modify_sidebars_content',do_shortcode($sidebar_output));
	}
	if ( $sidebar_output ) { ?>
	   	<div class="amp-wp-content widget-wrapper">
	   		<div class="cntr">
				<div class="amp_widget_above_the_footer f-w">
					<?php echo do_shortcode($sidebar_output); ?> 
				</div>
			</div>
		</div>
	<?php }
}
// Filter the sidebars content to make it work properly with carousels
add_filter('ampforwp_modify_sidebars_content','ampforwp_sidebars_carousel_content');
function ampforwp_sidebars_carousel_content($content){
	$content = str_replace(array(':openbrack:',':closebrack:'), array('[',']'), $content);
	return $content;
}
// Sidebar Content Sanitizer
function ampforwp_sidebar_content_sanitizer($sidebar){
  global $redux_builder_amp;
  $sanitized_sidebar     	= "";
  $non_sanitized_sidebar   	= "";
  $sidebar_data 			= array();
  $blacklist_array	 		= array();
  // Remove some blacklist tags from sidebars only when search,archives and categories widgets are active #2835
  if ( is_active_widget(false,false,'search') || is_active_widget(false,false,'archives') || is_active_widget(false,false,'categories') ) {
  	$blacklist_array['non-content'] = 'non-content';
  }
  ob_start();
  dynamic_sidebar( $sidebar );
  $non_sanitized_sidebar = ob_get_contents();
  ob_end_clean();
  
  if ( $non_sanitized_sidebar ) {
	  $sanitized_sidebar = new AMPforWP_Content( $non_sanitized_sidebar,
	    apply_filters( 'amp_content_embed_handlers', array(
	    	  'AMP_Reddit_Embed_Handler' => array(),
	          'AMP_Twitter_Embed_Handler' => array(),
	          'AMP_YouTube_Embed_Handler' => array(),
	          'AMP_DailyMotion_Embed_Handler' => array(),
			  'AMP_Vimeo_Embed_Handler' => array(),
			  'AMP_SoundCloud_Embed_Handler' => array(),
	          'AMP_Instagram_Embed_Handler' => array(),
	          'AMP_Vine_Embed_Handler' => array(),
	          'AMP_Facebook_Embed_Handler' => array(),
	          'AMP_Pinterest_Embed_Handler' => array(),
	          'AMP_Gallery_Embed_Handler' => array(),
	    ) ),
	    apply_filters(  'amp_sidebar_sanitizers', array(
	           'AMP_Style_Sanitizer' => array(),
	           'AMP_Blacklist_Sanitizer' => $blacklist_array,
	           'AMP_Img_Sanitizer' => array(),
	           'AMP_Video_Sanitizer' => array(),
	           'AMP_Audio_Sanitizer' => array(),
	           'AMP_Playbuzz_Sanitizer' => array(),
	           'AMP_Iframe_Sanitizer' => array(
	             'add_placeholder' => true,
	           ),
	           'AMP_Tag_And_Attribute_Sanitizer' => array(), 
	    )  ), array('non-content'=>'non-content')
	  );
  }
  if ( is_active_widget(false,false,'search') && $sanitized_sidebar) {
  	// Allow some blacklisted tags #1400
	add_filter('ampforwp_modify_sidebars_content','ampforwp_modified_search_sidebar');
  }
  return $sanitized_sidebar;
}

function ampforwp_modified_search_sidebar( $content ) {
	global $redux_builder_amp;
	$mob_pres_link = false;
  if(function_exists('ampforwp_mobile_redirect_preseve_link')){
    $mob_pres_link = ampforwp_mobile_redirect_preseve_link();
  }
	$mob_pres_link = false;
	  if(function_exists('ampforwp_mobile_redirect_preseve_link')){
	    $mob_pres_link = ampforwp_mobile_redirect_preseve_link();
	  }
	$dom = '';
	$dom = AMP_DOM_Utils::get_dom_from_content($content);
	$nodes = $dom->getElementsByTagName( 'form' );
	$num_nodes = $nodes->length;
	if ( 0 !== $num_nodes ) {
		for ( $i = 0; $i < $nodes->length; ++$i ) {
			$element = $nodes->item( $i );
			if (ampforwp_get_setting('ampforwp-amp-takeover') == false && $mob_pres_link == false ) {
				$amp_query_variable = 'amp';
				$amp_query_variable_val = '1';
			}
			if ( ! $element->hasAttribute('action-xhr') ){
				$action_url = $element->getAttribute('action');
				$action_url = preg_replace('#^http?:#', '', $action_url);
				$element->setAttribute('action', $action_url);
			}
			$element->setAttribute('target', '_top');
			$input_nodes = $element->getElementsByTagName('input');
			if ( 0 !== $input_nodes->length ) {
				for ( $i = 0; $i < $input_nodes->length; ++$i ) {
					$input_node = $input_nodes->item( $i );
					if ( 'submit' !== $input_node->getAttribute('type') ) {
						$input_submit = $dom->createElement('input');
						$input_submit->setAttribute('type', 'submit');
						$input_submit->setAttribute('class', 'search-submit');
					}
				}
				if ( $input_submit ) {
					$element->appendChild($input_submit);
				}
			}
		}
	}
	// Remove http/https from Audio and Video URLs #1400
	$video_nodes = $dom->getElementsByTagName( 'amp-video' );
	$num_nodes = $video_nodes->length;
	if ( 0 !== $num_nodes ) {
		for ( $i = 0; $i < $video_nodes->length; ++$i ) {
			$element = $video_nodes->item( $i );
			$source = $element->childNodes->item(0);
			$source->setAttribute('src',preg_replace('#^http?:#', '', $source->getAttribute('src') ));
			$source = $element->childNodes->item(1);
			if($source)
				$source->setAttribute('src',preg_replace('#^http?:#', '', $source->getAttribute('src') ));
		}
	}
	$audio = $dom->getElementsByTagName( 'amp-audio' );
	$num_nodes = $audio->length;
	if ( 0 !== $num_nodes ) {
		for ( $i = 0; $i < $audio->length; ++$i ) {
			$element = $audio->item( $i );
			$source = $element->childNodes->item(0);
			$source->setAttribute('src',preg_replace('#^http?:#', '', $source->getAttribute('src') ));
			$source = $element->childNodes->item(1);
			$source->setAttribute('src',preg_replace('#^http?:#', '', $source->getAttribute('src') ));
		}
	}
	$content = AMP_DOM_Utils::get_content_from_dom($dom);
	return $content;
}

function ampforwp_sidebar_blacklist_tags($tags) {
	$form  = array_search('form', $tags);
	$input = array_search('input', $tags);
	$label = array_search('label', $tags);
	$textarea = array_search('textarea', $tags);
	$select = array_search('select', $tags);
	$option = array_search('option', $tags);
	if ( $input ) {
		unset($tags[$input]);
	}
	if ( $label ) {
		unset($tags[$label]);		
	}
	if ( $textarea ) { unset($tags[$textarea]); }
	if ( $select ) { unset($tags[$select]); }
	if ( $option ) { unset($tags[$option]); }
	return $tags;
}
// Sidebar Scripts	
add_filter( 'amp_post_template_data', 'ampforwp_add_sidebar_data', 85 );
function ampforwp_add_sidebar_data( $data ) {
	$sanitized_data_above_loop 	 	= '';
	$sanitized_data_below_loop 	 	= '';
	$sanitized_data_below_header 	= '';
	$sanitized_data_above_footer 	= '';
	$sanitized_data_swift_sidebar 	= '';
	$sanitized_data_swift_footer  	= '';
	// Get the Data
	$sanitized_data_above_loop 	 = ampforwp_sidebar_content_sanitizer('ampforwp-above-loop');
	$sanitized_data_below_loop 	 = ampforwp_sidebar_content_sanitizer('ampforwp-below-loop');
	$sanitized_data_below_header = ampforwp_sidebar_content_sanitizer('ampforwp-below-header');
	$sanitized_data_above_footer = ampforwp_sidebar_content_sanitizer('ampforwp-above-footer');
	$sanitized_data_swift_sidebar = ampforwp_sidebar_content_sanitizer('swift-sidebar');
	$sanitized_data_swift_footer = ampforwp_sidebar_content_sanitizer('swift-footer-widget-area');

	if ( $sanitized_data_above_loop ) {
		// Add Scripts
		if ( $sanitized_data_above_loop->get_amp_scripts() ) {
			foreach ($sanitized_data_above_loop->get_amp_scripts() as $key => $value ) {
				if( empty( $data['amp_component_scripts'][$key] ) ){
					$data['amp_component_scripts'][$key]  = $value;
				}
			}
		}
		// Form script #1400
		$dom = AMP_DOM_Utils::get_dom_from_content($sanitized_data_above_loop->get_amp_content());
		if ( 0 !== $dom->getElementsByTagName( 'form' )->length ) {
			if( empty( $data['amp_component_scripts']['amp-form'] ) ){
					$data['amp_component_scripts']['amp-form']  = 'https://cdn.ampproject.org/v0/amp-form-0.1.js';
			} 
		}
		// Add Styles
		if ( $sanitized_data_above_loop->get_amp_styles() ) {
			foreach ($sanitized_data_above_loop->get_amp_styles() as $key => $value ) {
				if( empty( $data['post_amp_styles'][$key] ) ){
					$data['post_amp_styles'][$key]  = $value;
				}
			}
		}
	}
	if ( $sanitized_data_below_loop ) {
		// Add Scripts
		if ( $sanitized_data_below_loop->get_amp_scripts() ) {
			foreach ($sanitized_data_below_loop->get_amp_scripts() as $key => $value ) {
				if( empty( $data['amp_component_scripts'][$key] ) ){
					$data['amp_component_scripts'][$key]  = $value;
				}
			}
		}
		// Form script #1400
		$dom = AMP_DOM_Utils::get_dom_from_content($sanitized_data_below_loop->get_amp_content());
		if ( 0 !== $dom->getElementsByTagName( 'form' )->length ) {
			if( empty( $data['amp_component_scripts']['amp-form'] ) ){
					$data['amp_component_scripts']['amp-form']  = 'https://cdn.ampproject.org/v0/amp-form-0.1.js';
			} 
		}
		// Add Styles
		if ( $sanitized_data_below_loop->get_amp_styles() ) {
			foreach ($sanitized_data_below_loop->get_amp_styles() as $key => $value ) {
				if( empty( $data['post_amp_styles'][$key] ) ){
					$data['post_amp_styles'][$key]  = $value;
				}
			}
		}
	}
	if ( $sanitized_data_below_header ) {
		// Add Scripts
		if ( $sanitized_data_below_header->get_amp_scripts() ) {
			foreach ($sanitized_data_below_header->get_amp_scripts() as $key => $value ) {
				if( empty( $data['amp_component_scripts'][$key] ) ){
					$data['amp_component_scripts'][$key]  = $value;
				}
			}
		}
		// Form script #1400
		$dom = AMP_DOM_Utils::get_dom_from_content($sanitized_data_below_header->get_amp_content());
		if ( 0 !== $dom->getElementsByTagName( 'form' )->length ) {
			if( empty( $data['amp_component_scripts']['amp-form'] ) ){
					$data['amp_component_scripts']['amp-form']  = 'https://cdn.ampproject.org/v0/amp-form-0.1.js';
			} 
		}
		// Add Styles
		if ( $sanitized_data_below_header->get_amp_styles() ) {
			foreach ($sanitized_data_below_header->get_amp_styles() as $key => $value ) {
				if( empty( $data['post_amp_styles'][$key] ) ){
					$data['post_amp_styles'][$key]  = $value;
				}
			}
		}
	}
	if ( $sanitized_data_above_footer ) {		
		// Add Scripts
		if ( $sanitized_data_above_footer->get_amp_scripts() ) {
			foreach ($sanitized_data_above_footer->get_amp_scripts() as $key => $value ) {
				if( empty( $data['amp_component_scripts'][$key] ) ){
					$data['amp_component_scripts'][$key]  = $value;
				}
			}
		}
		// Form script #1400
		$dom = AMP_DOM_Utils::get_dom_from_content($sanitized_data_above_footer->get_amp_content());
		if ( 0 !== $dom->getElementsByTagName( 'form' )->length ) {
			if( empty( $data['amp_component_scripts']['amp-form'] ) ){
					$data['amp_component_scripts']['amp-form']  = 'https://cdn.ampproject.org/v0/amp-form-0.1.js';
			} 
		}
		// Add Styles
		if ( $sanitized_data_above_footer->get_amp_styles() ) {
			foreach ($sanitized_data_above_footer->get_amp_styles() as $key => $value ) {
				if( empty( $data['post_amp_styles'][$key] ) ){
					$data['post_amp_styles'][$key]  = $value;
				}
			}
		}
	}
	if ( $sanitized_data_swift_sidebar ) {		
		// Add Scripts
		if ( $sanitized_data_swift_sidebar->get_amp_scripts() ) {
			foreach ($sanitized_data_swift_sidebar->get_amp_scripts() as $key => $value ) {
				if( empty( $data['amp_component_scripts'][$key] ) ){
					$data['amp_component_scripts'][$key]  = $value;
				}
			}
		}
		// Form script #1400
		$dom = AMP_DOM_Utils::get_dom_from_content($sanitized_data_swift_sidebar->get_amp_content());
		if ( 0 !== $dom->getElementsByTagName( 'form' )->length ) {
			if( empty( $data['amp_component_scripts']['amp-form'] ) ){
					$data['amp_component_scripts']['amp-form']  = 'https://cdn.ampproject.org/v0/amp-form-0.1.js';
			} 
		}
		// Add Styles
		if ( $sanitized_data_swift_sidebar->get_amp_styles() ) {
			foreach ($sanitized_data_swift_sidebar->get_amp_styles() as $key => $value ) {
				if( empty( $data['post_amp_styles'][$key] ) ){
					$data['post_amp_styles'][$key]  = $value;
				}
			}
		}
	}
	if ( $sanitized_data_swift_footer ) {		
		// Add Scripts
		if ( $sanitized_data_swift_footer->get_amp_scripts() ) {
			foreach ($sanitized_data_swift_footer->get_amp_scripts() as $key => $value ) {
				if( empty( $data['amp_component_scripts'][$key] ) ){
					$data['amp_component_scripts'][$key]  = $value;
				}
			}
		}
		// Form script #1400
		$dom = AMP_DOM_Utils::get_dom_from_content($sanitized_data_swift_footer->get_amp_content());
		if ( 0 !== $dom->getElementsByTagName( 'form' )->length ) {
			if( empty( $data['amp_component_scripts']['amp-form'] ) ){
					$data['amp_component_scripts']['amp-form']  = 'https://cdn.ampproject.org/v0/amp-form-0.1.js';
			} 
		}
		// Add Styles
		if ( $sanitized_data_swift_footer->get_amp_styles() ) {
			foreach ($sanitized_data_swift_footer->get_amp_styles() as $key => $value ) {
				if( empty( $data['post_amp_styles'][$key] ) ){
					$data['post_amp_styles'][$key]  = $value;
				}
			}
		}
	}
	return $data; 
}
// 44. auto adding /amp for the menu
add_action('amp_init','ampforwp_auto_add_amp_menu_link_insert');
function ampforwp_auto_add_amp_menu_link_insert() {
	add_action( 'pre_amp_render_post', 'ampforwp_auto_add_amp_in_link_check', 99 );
}

function ampforwp_auto_add_amp_in_link_check() {
	$ampforwp_is_amp_endpoint = ampforwp_is_amp_endpoint();
	$add_amp_menu = get_transient('ampforwp_auto_add_amp_in_menu_link');
	if ( false == $add_amp_menu || ( 'on' && 0 == ampforwp_get_setting('ampforwp-auto-amp-menu-link') ) ) {
		delete_transient('ampforwp_header_menu');
		delete_transient('ampforwp_footer_menu');
		set_transient('ampforwp_auto_add_amp_in_menu_link', 'off');
	}
	if ( $ampforwp_is_amp_endpoint && ampforwp_get_setting('ampforwp-auto-amp-menu-link') == 1 ) {
		if( 'off' == $add_amp_menu ) {
			delete_transient('ampforwp_header_menu');
			delete_transient('ampforwp_footer_menu');
			set_transient('ampforwp_auto_add_amp_in_menu_link', 'on');
		}
		add_filter( 'nav_menu_link_attributes', 'ampforwp_auto_add_amp_in_menu_link', 10, 3 );
	}
}

function ampforwp_auto_add_amp_in_menu_link( $atts, $item, $args ) {
	if($item->type=='post_type' && !in_array($item->object, ampforwp_get_all_post_types()) ){
		return $atts;
	}
	if($item->type=='taxonomy' && !in_array($item->object, ampforwp_get_all_post_types()) ){
		return $atts;
	}
	$mob_pres_link = false;
	if(function_exists('ampforwp_mobile_redirect_preseve_link')){
	  $mob_pres_link = ampforwp_mobile_redirect_preseve_link();
	}
	if(ampforwp_get_setting('ampforwp-amp-takeover') || $mob_pres_link == true){
		return $atts;
	}
	$url = $atts['href'];
	if($url){
		$is_external = ampforwp_isexternal($url);
	}
	if($is_external){
		return $atts;
	}
  	if(ampforwp_get_setting('amp-core-end-point') == 1 ){
	    $atts['href'] = user_trailingslashit(trailingslashit( $atts['href'] ) );
		$atts['href'] = add_query_arg(AMPFORWP_AMP_QUERY_VAR,'1', $atts['href']);
	}
  	else{
  		if(false === strpos($atts['href'], "#")){
     		$atts['href'] = user_trailingslashit(trailingslashit( $atts['href'] ) . AMPFORWP_AMP_QUERY_VAR);
     	}   
    }
    
    $atts = apply_filters('ampforwp_auto_add_amp_menu_url',$atts);

	return $atts;
}

// 45. searchpage, frontpage, homepage structured data
// Moved to structured-data-functions.php

// 46. search search search everywhere #615
require 'search-functions.php';

// 47. social js properly adding when required
if( !function_exists( 'is_socialshare_or_socialsticky_enabled_in_ampforwp' ) ) {
	function is_socialshare_or_socialsticky_enabled_in_ampforwp() {
		global $redux_builder_amp;
		if(  $redux_builder_amp['enable-single-facebook-share'] ||
				 $redux_builder_amp['enable-single-twitter-share']  ||
				 $redux_builder_amp['enable-single-email-share'] ||
				 $redux_builder_amp['enable-single-pinterest-share']  ||
				 $redux_builder_amp['enable-single-linkedin-share'] )  {
					return true;
				}
			return false;
	}
}

// 48. Remove all unwanted scripts on search pages
add_filter( 'amp_post_template_data', 'ampforwp_remove_scripts_search_page' );
function ampforwp_remove_scripts_search_page( $data ) {
	if( is_search() ) {
		// Remove all unwanted scripts on search pages
		unset( $data['amp_component_scripts']);
	}
	return $data;
}

// 49. Properly adding ad Script the AMP way
// Moved to ads-functions.php

// internal function for checing if social profiles have been set
if( !function_exists('ampforwp_checking_any_social_profiles') ) {
	function ampforwp_checking_any_social_profiles() {
		global $redux_builder_amp;
		if(
			$redux_builder_amp['enable-single-twittter-profile'] 	 ||
			$redux_builder_amp['enable-single-facebook-profile'] 	 ||
			$redux_builder_amp['enable-single-pintrest-profile'] 	 ||
			$redux_builder_amp['enable-single-google-plus-profile']	 ||
			$redux_builder_amp['enable-single-linkdin-profile'] 	 ||
			$redux_builder_amp['enable-single-youtube-profile'] 	 ||
			$redux_builder_amp['enable-single-instagram-profile'] 	 ||
			$redux_builder_amp['enable-single-VKontakte-profile'] 	 ||
			$redux_builder_amp['enable-single-reddit-profile'] 		 ||
			$redux_builder_amp['enable-single-snapchat-profile'] 	 ||
			$redux_builder_amp['enable-single-Tumblr-profile']
	 	) {
			return true;
		}
		return false;
	}
}

// 50. Properly adding noditification Scritps the AMP way
// Moved to notice-bar-functions.php

//52. Adding a generalized sanitizer function for purifiying normal html to amp-html
function ampforwp_content_sanitizer( $content ) {
	global $post;
	$amp_custom_post_content_input = $content;
	if ( !empty( $amp_custom_post_content_input ) ) {
		$amp_custom_content = new AMPFORWP_Content( $amp_custom_post_content_input,
				apply_filters( 'amp_content_embed_handlers', array(
					    'AMP_Reddit_Embed_Handler' => array(),
						'AMP_Twitter_Embed_Handler' => array(),
						'AMP_YouTube_Embed_Handler' => array(),
						'AMP_Instagram_Embed_Handler' => array(),
						'AMP_Vine_Embed_Handler' => array(),
						'AMP_Facebook_Embed_Handler' => array(),
						'AMP_Gallery_Embed_Handler' => array(),
						'AMP_Tiktok_Embed_Handler'=>array(),
				) ),
				apply_filters(  'amp_content_sanitizers', array(
						 'AMP_Style_Sanitizer' => array(),
						 'AMP_Blacklist_Sanitizer' => array(),
						 'AMP_Img_Sanitizer' => array(),
						 'AMP_Video_Sanitizer' => array(),
						 'AMP_Audio_Sanitizer' => array(),
						 'AMP_Iframe_Sanitizer' => array(
							 'add_placeholder' => true,
						 ),
				),$post  )
		);

		if ( $amp_custom_content ) {
			global $data;
			$data = (array) $data;
			$data['amp_component_scripts'] 	= $amp_custom_content->get_amp_scripts();
			$data['post_amp_styles'] 		= $amp_custom_content->get_amp_styles();
			return $amp_custom_content->get_amp_content();
		}
		return '';
	}
}


//53. Removed AMP-WooCommerce Code and added it in AMP-WooCommerce #929
// Adding the styling for AMP Woocommerce latest Products(AMP-WooCommerce Widgets)
add_action('amp_post_template_css','amp_latest_products_styling',PHP_INT_MAX);
function amp_latest_products_styling() { 
	if ( class_exists( 'woocommerce' ) ) { ?>
		.ampforwp_wc_shortcode{margin-top: 0;padding:0;display:inline-block;width: 100%;}
		.ampforwp_wc_shortcode li{position: relative;width:29%; font-size:12px; line-height: 1; float: left;list-style-type: none;margin:2%;}
		.ampforwp_wc_shortcode .onsale{position: absolute;top: 0;right: 0;background: #ddd;padding: 7px;font-size: 12px;}
		.single-post .ampforwp_wc_shortcode li amp-img{margin:0}
		.ampforwp-wc-title{margin: 8px 0px 10px 0px;font-size: 13px;}
		.ampforwp-wc-price{color:#444}
		.wc_widgettitle{text-align:center;margin-bottom: 0px;}
		.ampforwp-wc-price, .ampforwp_wc_star_rating{float:left;margin-right: 10px;}
	<?php }
}

// 54. Change the default values of post meta for AMP pages. #746
add_action('admin_head','ampforwp_change_default_amp_page_meta');
function ampforwp_change_default_amp_page_meta() {
	if ( ! current_user_can('manage_options') ) {
         return ;
    }
	global $redux_builder_amp;
	$check_meta 		= get_option('ampforwp_default_pages_to');
	$checker			= 'show';
	$control			= $redux_builder_amp['amp-pages-meta-default'];
	$meta_value_to_upate = 'default';

	if ( $control  === 'hide' ) {
		$checker				= 'hide';
		$meta_value_to_upate 	= 'hide-amp';
	}

	// Check and Run only if the value has been changed, else return
	if ( $check_meta === $checker ) {
		return;
	}
	// Get all the pages and update the post meta
	$pages = get_pages(array());
	foreach($pages as $page){
	    update_post_meta($page->ID,'ampforwp-amp-on-off', $meta_value_to_upate);
	}
	// Update the option as the process has been done and update an option
	update_option('ampforwp_default_pages_to', $checker);
	return ;
}


// Adding the meta="description" from yoast or from the content
add_action('amp_post_template_head','ampforwp_meta_description');
function ampforwp_meta_description() {
	global $redux_builder_amp;
	if ( false == ampforwp_get_setting('ampforwp-seo-meta-desc') || ('rank_math' == ampforwp_get_setting('ampforwp-seo-selection') && is_singular() )) {
		return;
	}
	if (function_exists('aioseo_pro_just_activated') && 'aioseo' == ampforwp_get_setting('ampforwp-seo-selection') ) {
		return;
	}
	$desc = ampforwp_generate_meta_desc();
	if ( $desc && !class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration')) {
		echo '<meta name="description" content="'. esc_attr( convert_chars( stripslashes( $desc ) ) )  .'"/>';
		}else if(class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration')){
		$yoast_desc = addslashes( wp_strip_all_tags( WPSEO_Meta::get_value('metadesc', ampforwp_get_the_ID() ) ) );
		$yoast_desc_meta = get_option( 'wpseo_titles' );
		if(isset($yoast_desc_meta['metadesc-page'])){
			$yoast_desc_meta = $yoast_desc_meta['metadesc-page'];
		}
		if(empty($yoast_desc)){
			$yoast_desc = $yoast_desc_meta;
		}
		if ($yoast_desc && ampforwp_is_front_page()) {
			echo '<meta name="description" content="'. esc_attr( convert_chars( stripslashes( $yoast_desc ) ) )  .'"/>';
		}
		elseif ($desc && ampforwp_is_home() && 'page' == get_option( 'show_on_front') && empty(get_option( 'page_for_posts')) ){
			echo '<meta name="description" content="'. esc_attr( convert_chars( stripslashes( $desc ) ) )  .'"/>';
		}
	}
}
// All in One Seo Compatibility #1557
if(defined( 'AIOSEO_VERSION' ) && version_compare(AIOSEO_VERSION,'4.0.0', '<')){
	add_filter('aioseop_amp_description', '__return_false');
}
// 55. Call Now Button Feature added
add_action('ampforwp_call_button','ampforwp_call_button_html_output');
function ampforwp_call_button_html_output(){
	global $redux_builder_amp;
	if ( $redux_builder_amp['ampforwp-callnow-button'] ) { ?>
		<div class="callnow">
			<a href="tel:<?php echo esc_attr($redux_builder_amp['enable-amp-call-numberfield']); ?>"></a>
		</div> <?php
  }
}

// 56. Multi Translation Feature #540
// Moved to functions.php

// 57. Adding Updated date at in the Content
add_action('ampforwp_after_post_content','ampforwp_add_modified_date');
function ampforwp_add_modified_date($post_object){
	global $redux_builder_amp;
	if ( is_single() && $redux_builder_amp['post-modified-date'] == true && ( ! checkAMPforPageBuilderStatus( get_the_ID() ) ) ) { ?>
		<div class="ampforwp-last-modified-date">
			<p> <?php
				$date_notice_type = ampforwp_get_setting('ampforwp-post-date-notice-type');
				if( $date_notice_type == "modified" && $post_object->get( 'post_modified_timestamp' ) !== $post_object->get( 'post_publish_timestamp' ) ){
					$date_notice_text = ampforwp_get_setting('amp-translator-modified-date-text');
					
					$date = $post_object->get( 'post_modified_timestamp' );
					echo esc_html(
						sprintf(
							/* translators: %s: date */
							 ampforwp_translation( $date_notice_text ,'This article was last modified on ' ) . ' %s ',
							date_i18n( get_option( 'date_format' ) , $date )
						)
					);
				 if(true == ampforwp_get_setting('ampforwp-post-date-notice-time')){
					//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
						echo get_the_modified_time();
					}
				}elseif($date_notice_type == "published"){
					$date_notice_text = ampforwp_get_setting('amp-translator-published-date-text');
					$date = $post_object->get( 'post_publish_timestamp' );
					echo esc_html(
						sprintf(
							/* translators: %s: date */
							 ampforwp_translation( $date_notice_text ,'This article was last modified on ' ) . ' %s ',
							date_i18n( get_option( 'date_format' ) , $date )
						)
					);
					if(true == ampforwp_get_setting('ampforwp-post-date-notice-time')){
						/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
						echo get_the_time();
					}
				}
			?>
			</p>
		</div> <?php
	}
}

// 58. YouTube Shortcode compatablity with AMP #557 #971

add_filter('amp_content_embed_handlers','ampforwp_youtube_shortcode_embedder');
function ampforwp_youtube_shortcode_embedder($data){
	 unset($data['AMP_YouTube_Embed_Handler']);
	 $data[ 'AMPforWP_YouTube_Embed_Handler' ] = array();
	return $data;
}
if ( ! function_exists( 'ampforwp_youtube_shortcode') ) {

	function ampforwp_youtube_shortcode( $params, $old_format_support = false ) {
		$str = '';
		$parsed_url = array();
		$youtube_url = 'https://www.youtube.com/watch?v=';
		if(isset( $params['id']) ){
			$parsed_url = parse_url( $params['id'] );
		}
		$server = 'www.youtube.com';

		if ( in_array( $server, $parsed_url ) === false ) {
			if(isset($params['id']) && $params['id']){
			$new_url  = $youtube_url .  $params['id'] ;
			$params['id'] = $new_url;
			}
		}
		if ( $old_format_support && isset( $params[0] ) ) {
			$str = ltrim( $params[0], '=' );
		} elseif ( is_array( $params ) ) {
			foreach ( array_keys( $params ) as $key ) {
			  if ( ! is_numeric( $key ) ) {
			    $str = $key . '=' . $params[ $key ];
			  }
			}
		}
	  return str_replace( array( '&amp;', '&#038;' ), '&', $str );
	}
}
// Add extra params in amp-youtube
add_filter('amp_youtube_params', 'ampforwp_youtube_modified_params');
if( ! function_exists(' ampforwp_youtube_modified_params ') ){
	function ampforwp_youtube_modified_params($amp_youtube){
		$check = '';
		$param = '';
		// Check for extra params
		$check = preg_match('/(.*?)&(.*)/', $amp_youtube['data-videoid']);
		if(1 === $check){
			// Grab the extra param
			$param = preg_replace('/(.*?)&(.*)/', '$2', $amp_youtube['data-videoid']);
			// Parse the string into variables
			parse_str($param, $query_args);
			// Check for rel param
			if(isset($query_args['rel'])){
				// Add the rel param in amp-youtube's data-param
				$amp_youtube['data-param-rel'] = $query_args['rel'];
			}
			// Remove that param from URL
			$amp_youtube['data-videoid'] = preg_replace('/&(.*)/', '', $amp_youtube['data-videoid']);
			// Plyr Plugin Compatibility #1505
			if ( class_exists('Plyr') ) {
				$amp_youtube['data-param-rel'] 		= 0;
				$amp_youtube['data-param-autoplay'] = 0;
				$amp_youtube['data-param-showinfo'] = 0;
			}
		}
		return $amp_youtube;
	}
}
// 59. Comment Button URL
function ampforwp_comment_button_url(){
	global $redux_builder_amp;
	$button_url = "";
	if(ampforwp_get_setting('amp-mobile-redirection')==1){
		$button_url = add_query_arg( array( 'nonamp' => '1' ), get_permalink() );
		$button_url = $button_url. '#commentform';
	}
	elseif ( ampforwp_get_setting('ampforwp-amp-takeover') ) {
  		$button_url = user_trailingslashit(get_the_permalink()).'#comments';
  	}
  	else{
  		$button_url = get_permalink(). '#commentform';
  	}
  	return esc_url( apply_filters( 'ampforwp_comment_button_url', $button_url ) );
}

// 60. Remove Category Layout modification code added by TagDiv #842 and #796
// #1683
add_action('pre_amp_render_post', 'ampforwp_remove_tagdiv_category_layout');
function ampforwp_remove_tagdiv_category_layout(){
	if ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) {
		remove_action('pre_get_posts', 'td_modify_main_query_for_category_page',9);
	}
}

// 61. Add Gist Support
add_shortcode('amp-gist', 'ampforwp_gist_shortcode_generator');
function ampforwp_gist_shortcode_generator($atts) {
   extract(shortcode_atts(array(
   	  'id'     =>'' ,
      'layout' => 'fixed-height',
      'height' => 200,      
   ), $atts));  
   if ( empty ( $height ) ) {
   		$height = '250';
   }
   // adding sanitization for gist id 
   $sanitized_id = preg_replace('/[^a-z0-9\-]/', '', $atts['id']);
   if($sanitized_id){
	return '<amp-gist data-gistid='. esc_attr($sanitized_id) .' 
  		layout="fixed-height"
  		height="'. esc_attr($height) .'">
  		</amp-gist>';
   }
}

// Code updated and added the JS proper way #336
add_filter('amp_post_template_data','ampforwp_add_amp_gist_script', 100);
function ampforwp_add_amp_gist_script( $data ){
	global $redux_builder_amp;
	$content = "";
    
	$content =   $data['post'];
    if( $content ){
        $content = $content->post_content;
        
        if( is_single() ) {
            if( has_shortcode( $content, 'amp-gist' ) ){ 
                if ( empty( $data['amp_component_scripts']['amp-gist'] ) ) {
                    $data['amp_component_scripts']['amp-gist'] = 'https://cdn.ampproject.org/v0/amp-gist-0.1.js';
                }
            }
        }
    }
		 
	return $data;
}


// 62. Adding Meta viewport via hook instead of direct #878 
add_action( 'amp_post_template_head','ampforwp_add_meta_viewport', 9);
function ampforwp_add_meta_viewport() {
	$output = '';
	$output = '<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=2,user-scalable=yes">
	';
	if (ampforwp_get_setting('ampforwp-meta-viewport') == false) {
		$output = '<meta name="viewport" content="width=device-width">';
	}
	if(!class_exists( 'AMPforWP_Mobile_Detect') && !ampforwp_get_setting('amp-mobile-redirection')){
		ampforwp_require_file( AMPFORWP_PLUGIN_DIR.'/includes/vendor/Mobile_Detect.php ');
	}
	if(class_exists('AMPforWP_Mobile_Detect')){
		$mobile_detect = new AMPforWP_Mobile_Detect;
	    $isMobile = $mobile_detect->isMobile();
	    $isTablet = $mobile_detect->isTablet();
	    if( $isMobile || $isTablet ){
	    	$output = '<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,user-scalable=yes">';
	    }
	}
	global $is_safari; 
	if ($is_safari) {
		$output .= '<meta name="referrer" content="no-referrer-when-downgrade">';
	}
	//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	echo apply_filters('ampforwp_modify_meta_viewport_filter',$output);
	
}

// 63. Frontpage Comments #682 
function ampforwp_frontpage_comments() {
	global $redux_builder_amp;
	$data = get_option( 'ampforwp_design',array());
	$enable_comments = false;
	$post_id = "";

	$post_id = ampforwp_get_frontpage_id();	

	if (empty($data)) {
	 	$data['elements'] = "meta_info:1,title:1,featured_image:1,content:1,meta_taxonomy:1,social_icons:1,comments:1,related_posts:1";
	}
	if( isset( $data['elements'] ) || ! empty( $data['elements'] ) ){
		$options = explode( ',', $data['elements'] );
	};
	if ($options): foreach ($options as $key=>$value) {
		switch ($value) {
			case 'comments:1':
				$enable_comments = true;
			break;
		}
	} endif;
	if ( $enable_comments ) { ?>
		<div class="ampforwp-comment-wrapper">
			<?php
			$comment_button_url = "";
			$postID = '';
			// Gather comments for a Front from post id
			$postID = ampforwp_get_frontpage_id();
			$comment_order = get_option( 'comment_order' );
			$comments = get_comments(array(
					'post_id' => $postID,
					'order' => esc_attr($comment_order),
					'status' => 'approve' //Change this to the type of comments to be displayed
			));
			$comment_button_url = get_permalink( $post_id );
			$comment_button_url = apply_filters('ampforwp_frontpage_comments_url',$comment_button_url );
			if ( $comments ) { ?>
				<div class="amp-wp-content comments_list cmts_list">
				    <h3><?php global $redux_builder_amp; echo esc_html(ampforwp_translation($redux_builder_amp['amp-translator-view-comments-text'] , 'View Comments' ))?></h3>
				    <ul>
				    <?php
						$page = (get_query_var('page')) ? get_query_var('page') : 1;
						$total_comments = get_comments( array(
							'orderby' 	=> 'post_date' ,
							'order' 	=> 'DESC',
							'post_id'	=> $postID,
							'status' 	=> 'approve',
							'parent'	=>0 )
						);
						$pages = ceil(count($total_comments)/AMPFORWP_COMMENTS_PER_PAGE);
					    $pagination_args = array(
							'base'         =>  @add_query_arg('page','%#%'),
							'format'       => '?page=%#%',
							'total'        => $pages,
							'current'      => $page,
							'show_all'     => False,
							'end_size'     => 1,
							'mid_size'     => 2,
							'prev_next'    => True,
							'prev_text'    => ampforwp_translation($redux_builder_amp['amp-translator-previous-text'], 'Previous'),
							'next_text'    => ampforwp_translation( $redux_builder_amp['amp-translator-next-text'], 'Next'),
							'type'         => 'plain'
						);

						// Display the list of comments
						function ampforwp_custom_translated_comment($comment, $args, $depth){
							$GLOBALS['comment'] = $comment;
							global $redux_builder_amp; ?>
							<li id="li-comment-<?php esc_attr(comment_ID()) ?>"
							<?php comment_class(); ?> >
								<article id="comment-<?php esc_attr(comment_ID()); ?>" class="cmt-body">
									<footer class="cmt-meta">
										<div class="cmt-author vcard">
											<?php
											printf('<b class="fn">%s</b> <span class="says">'.esc_html(ampforwp_translation(ampforwp_get_setting('amp-translator-says-text'),'says')).':</span>', get_comment_author_link()) ?>
										</div>
										<!-- .comment-author -->
										<div class="cmt-metadata">
											<a href="<?php echo esc_url(untrailingslashit( htmlspecialchars( get_comment_link( $comment->comment_ID ) ) )) ?>">
												<?php 
												 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
												 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
												printf( esc_html(ampforwp_translation( ('%1$s '. ampforwp_translation($redux_builder_amp['amp-translator-at-text'],'at').' %2$s'), '%1$s at %2$s')) , get_comment_date(),  get_comment_time())?>
											</a>
											<?php edit_comment_link( esc_html(ampforwp_translation( $redux_builder_amp['amp-translator-Edit-text'], 'Edit' )  )) ?>
										</div>
										<!-- .comment-metadata -->
									</footer>
										<!-- .comment-meta -->
									<div class="cmt-content">
				                        <?php
				                          // $pattern = "~[^a-zA-Z0-9_ !@#$%^&*();\\\/|<>\"'+.,:?=-]~";
				                          $emoji_content = get_comment_text();
				                          // $emoji_free_comments = preg_replace($pattern,'',$emoji_content);
				                          $emoji_content = wpautop( $emoji_content );
					                      $sanitizer = new AMPFORWP_Content( $emoji_content, array(), apply_filters( 'ampforwp_content_sanitizers', array( 'AMP_Img_Sanitizer' => array(),
					                      'AMP_Video_Sanitizer' => array() ) ) );
					                      $sanitized_comment_content = $sanitizer->get_amp_content();
										  //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped	
					                      echo make_clickable( $sanitized_comment_content );//amphtml content, no kses
				                           ?>
									</div>
										<!-- .comment-content -->
								</article>
							 <!-- .comment-body -->
							</li>
						<!-- #comment-## -->
							<?php
						}// end of ampforwp_custom_translated_comment()
						wp_list_comments( array(
						  'per_page' 			=> AMPFORWP_COMMENTS_PER_PAGE, //Allow comment pagination
						  'page'              	=> $page,
						  'style' 				=> 'li',
						  'type'				=> 'comment',
						  'max_depth'   		=> 5,
						  'avatar_size'			=> 0,
							'callback'				=> 'ampforwp_custom_translated_comment',
						  'reverse_top_level' 	=> false //Show the latest comments at the top of the list
						), $comments);
						//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
						echo paginate_links( $pagination_args );?>
				    </ul>
				</div>
				<?php 
				
			} 
			if ( comments_open($postID) ) {
				$comment_button_url = add_query_arg( array( 'nonamp' => '1' ),  $comment_button_url );?>
				<div class="cmt-button-wrapper">
				    <a href="<?php echo esc_url( $comment_button_url ) . '#commentform' ?>" rel="nofollow"><?php  echo esc_html(ampforwp_translation( $redux_builder_amp['amp-translator-leave-a-comment-text'], 'Leave a Comment'  )); ?></a>
				</div><?php
				}?>
		</div> <?php
	} 
}

// 64. PageBuilder 
add_action('pre_amp_render_post','ampforwp_apply_layout_builder_on_pages',20);
function ampforwp_apply_layout_builder_on_pages($post_id) {
	global $redux_builder_amp;
	$sidebar_check = null;
	if ( ampforwp_is_front_page() ) {
		$post_id = ampforwp_get_frontpage_id();
	}

	if ( function_exists('ampforwp_custom_theme_files_register') ) {
		if ( is_page() ) {
			$sidebar_check = get_post_meta( $post_id,'ampforwp_custom_sidebar_select',true); 
		}
		// Add Styling Builder Elements
		add_action('amp_post_template_css', 'ampforwp_pagebuilder_styling', 20);

		if ( 'layout-builder' == $sidebar_check ) {
			// Removed Titles for Pagebuilder elements
			remove_filter( 'ampforwp_design_elements', 'ampforwp_add_element_the_title' );
			remove_action('ampforwp_design_2_frontpage_title','ampforwp_design_2_frontpage_title');
			remove_action('ampforwp_design_2_frontpage_title','ampforwp_design_2_frontpage_title');
		}
	}	
}

function ampforwp_remove_post_elements($elements) {
	$elements =  array('empty-filter');
	return $elements ;
}

function ampforwp_pagebuilder_styling() { ?>
.amp_cb_module{font-size:14px;line-height:1.5;margin-top:30px;margin-bottom:10px;padding:0 20px;}
.amp_cb_module h4{margin:17px 0 6px 0;}
.amp_cb_module p{margin: 8px 0px 10px 0px;}
.amp_cb_blurb{text-align: center} 
.amp_cb_blurb amp-img{margin:0 auto;}
.flex-grid {display:flex;justify-content: space-between;}
.amp_module_title{text-align: center;font-size: 14px;margin-bottom: 12px;padding-bottom: 4px;text-transform: uppercase;letter-spacing: 1px;border-bottom: 1px solid #f1f1f1;}
.clmn {flex: 1;padding: 5px}
.amp_cb_btn{margin-top: 20px;text-align: center;margin-bottom: 30px;}
.amp_cb_btn a{background: #f92c8b;color: #fff;font-size: 14px;padding: 9px 20px;border-radius: 3px;box-shadow: 1px 1px 4px #ccc;margin:6px;}
.amp_cb_btn .m_btn{font-size: 16px; padding: 10px 20px;}
.amp_cb_btn .l_btn{font-size: 18px; padding: 15px 48px;font-weight:bold;}
@media (max-width: 430px) { .flex-grid {display: block;} }
<?php }


// Add the scripts and style in header
function ampforwp_generate_pagebuilder_data() {
  $sanitized_sidebar     	= "";
  $non_sanitized_sidebar   	= "";
  $sidebar_data 			= array();
    
  ob_start();
	  dynamic_sidebar( 'layout-builder' );
	  $non_sanitized_sidebar = ob_get_contents();
  ob_end_clean();

  $sanitized_sidebar = new AMPFORWP_Content( $non_sanitized_sidebar,
    apply_filters( 'amp_content_embed_handlers', array(
    	  'AMP_Reddit_Embed_Handler' => array(),
          'AMP_Twitter_Embed_Handler' => array(),
          'AMP_YouTube_Embed_Handler' => array(),
          'AMP_Instagram_Embed_Handler' => array(),
          'AMP_Vine_Embed_Handler' => array(),
          'AMP_Facebook_Embed_Handler' => array(),
          'AMP_Gallery_Embed_Handler' => array(),
		  'AMP_Tiktok_Embed_Handler'=>array(),
    ) ),
    apply_filters(  'amp_content_sanitizers', array(
           'AMP_Style_Sanitizer' => array(),
           'AMP_Blacklist_Sanitizer' => array(),
           'AMP_Img_Sanitizer' => array(),
           'AMP_Video_Sanitizer' => array(),
           'AMP_Audio_Sanitizer' => array(),
           'AMP_Iframe_Sanitizer' => array(
             'add_placeholder' => true,
           ),
    )  )
  );

  $sidebar_data['content'] 	= $sanitized_sidebar->get_amp_content();
  $sidebar_data['script'] 	= $sanitized_sidebar->get_amp_scripts();
  $sidebar_data['style'] 	= $sanitized_sidebar->get_amp_styles();
  
  return $sidebar_data;
}

function ampforwp_builder_checker() {
	global $post, $redux_builder_amp;
	$pagebuilder_check 	= '';
	$post_id 			= '';
	$is_legacy_enabled 	= '';
	$is_legacy_enabled  = function_exists('ampforwp_custom_theme_files_register');
	if ( $post ) {
		$post_id = $post->ID;
	}
	if ( ampforwp_is_front_page() ) {
		$post_id = ampforwp_get_frontpage_id();
	}
	if ( $post_id && $is_legacy_enabled ) {
		$pagebuilder_check = get_post_meta( $post_id,'ampforwp_custom_sidebar_select',true); 
	}
	if ( $pagebuilder_check === 'layout-builder' ) {
		return ampforwp_generate_pagebuilder_data(); 
	}
	return;
}

add_filter( 'amp_post_template_data', 'ampforwp_add_pagebuilder_data' );
function ampforwp_add_pagebuilder_data( $data ) {
	$sanitized_data = '';
	$sanitized_data = ampforwp_builder_checker();

	if ( $sanitized_data ) {
		$data[ 'post_amp_content' ] 		= $sanitized_data['content'];
		$data[ 'amp_component_scripts' ] 	= $sanitized_data['script'];
		$data[ 'post_amp_styles' ] 			= $sanitized_data['style'];
	}
	
	return $data; 
}

/**
 * 65. Remove Filters code added through Class by other plugins
 *
 * Allow to remove method for an hook when, it's a class method used and class don't have variable, but you know the class name :)
 * Code from https://github.com/herewithme/wp-filters-extras 
 */
function ampforwp_remove_filters_for_class( $hook_name = '', $class_name ='', $method_name = '', $priority = 0 ) {
	global $wp_filter;
	// Take only filters on right hook name and priority
	if ( !isset($wp_filter[$hook_name][$priority]) || !is_array($wp_filter[$hook_name][$priority]) )
		return false;
	// Loop on filters registered
	foreach( (array) $wp_filter[$hook_name][$priority] as $unique_id => $filter_array ) {
		// Test if filter is an array ! (always for class/method)
		if ( isset($filter_array['function']) && is_array($filter_array['function']) ) {
			// Test if object is a class, class and method is equal to param !
			if ( is_object($filter_array['function'][0]) && get_class($filter_array['function'][0]) && get_class($filter_array['function'][0]) == $class_name && $filter_array['function'][1] == $method_name ) {
			    // Test for WordPress >= 4.7 WP_Hook class (https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/)
			    if( is_a( $wp_filter[$hook_name], 'WP_Hook' ) ) {
			        unset( $wp_filter[$hook_name]->callbacks[$priority][$unique_id] );
			    }
			    else {
				    unset($wp_filter[$hook_name][$priority][$unique_id]);
			    }
			}
		}
	}
	return false;
}

// BuddyPress Compatibility
add_action('amp_init','ampforwp_allow_homepage_bp');
function ampforwp_allow_homepage_bp() {
	add_action( 'wp', 'ampforwp_remove_rel_on_bp' );
}
function ampforwp_remove_rel_on_bp(){	
		if(function_exists('bp_is_activity_component')||function_exists('bp_is_members_component')||function_exists('bp_is_groups_component'))
		{
			if(bp_is_activity_component()|| bp_is_members_component() || bp_is_groups_component()){
				remove_action( 'wp_head', 'amp_frontend_add_canonical');
				remove_action( 'wp_head', 'ampforwp_home_archive_rel_canonical', 1 ); 
			}
		}
		// Removing AMP from WPForo Forums Pages #592
		if(class_exists('wpForo')){
			global $wpdb,$wpforo;
			$foid = ampforwp_get_the_ID();
			$fid = $wpforo->pageid;
			if($foid==$fid){
				remove_action( 'wp_head', 'amp_frontend_add_canonical');
				remove_action( 'wp_head', 'ampforwp_home_archive_rel_canonical', 1 );
			}

		}	
}

// 66. Make AMP compatible with Squirrly SEO
add_action('pre_amp_render_post','ampforwp_remove_sq_seo');
function ampforwp_remove_sq_seo() {
	$ampforwp_sq_google_analytics =  '';
	$ampforwp_sq_amp_analytics    =  '';

	if ( class_exists( 'SQ_Tools' ) ) {
		$ampforwp_sq_google_analytics = SQ_Tools::$options['sq_google_analytics'];
		$ampforwp_sq_amp_analytics    = SQ_Tools::$options['sq_auto_amp'];
	} 

	if ( $ampforwp_sq_google_analytics && $ampforwp_sq_amp_analytics ) {
		remove_action('amp_post_template_head','ampforwp_register_analytics_script', 20);
	}
}

//67 View Non AMP
function ampforwp_view_nonamp(){
	global $redux_builder_amp, $post, $wp;
  	$nofollow = $page = $amp_url = $non_amp_url = '';
   	if( true == ampforwp_get_setting('ampforwp-nofollow-view-nonamp') ){
   		$nofollow = 'rel=nofollow';
   	}
	$amp_url = ampforwp_amphtml_generator();
	$amp_url = explode('/', $amp_url);
	$amp_url = array_flip($amp_url);
	$endpoint = AMPFORWP_AMP_QUERY_VAR;
	if (ampforwp_get_setting('amp-core-end-point')) {
		 $endpoint = '?'. $endpoint;
	}
	unset($amp_url[$endpoint]);
	$non_amp_url = array_flip($amp_url);
	$non_amp_url = implode('/', $non_amp_url);
	$query_arg_array 	= $wp->query_vars;
	
	if( array_key_exists( "page" , $query_arg_array  ) ) {
		$page = $wp->query_vars['page'];
	}
	if ( $page >= '2') { 
		$non_amp_url = trailingslashit( $non_amp_url  . '?page=' . $page);
	} 

	if ( ampforwp_get_setting('amp-mobile-redirection')==true && ampforwp_get_setting('amp-mob-redirection-pres-link')==false) {
		$non_amp_url = user_trailingslashit($non_amp_url);
		$non_amp_url = add_query_arg('nonamp','1',$non_amp_url);
	}
	else
		$mob_pres_link = false;
		if(function_exists('ampforwp_mobile_redirect_preseve_link')){
		  $mob_pres_link = ampforwp_mobile_redirect_preseve_link();
		}
		$non_amp_url = user_trailingslashit($non_amp_url);
   	if ( true == ampforwp_get_setting('ampforwp-amp-takeover') || $mob_pres_link == true) {
   		$non_amp_url = '';
   	}
   	$permalink = get_option('permalink_structure');
   	if(strpos($permalink, '/%year%/%monthnum%/%day%/%postname%/') !== false){
    	$non_amp_url = get_permalink(ampforwp_get_the_ID());
	}
	if ( $non_amp_url ) { ?><a class="view-non-amp" href="<?php echo esc_url(apply_filters('ampforwp_view_nonamp_url', $non_amp_url) ) ?>" <?php echo esc_attr($nofollow); ?> title="<?php /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */  echo ampforwp_get_setting('amp-translator-non-amp-page-text') ?>"><?php if(function_exists('pll__')){
		//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo pll__(esc_html( ampforwp_get_setting('amp-translator-non-amp-page-text')));
		}else{echo esc_html( ampforwp_get_setting('amp-translator-non-amp-page-text'));}?></a> <?php }
}

 //68. Facebook Instant Articles
add_action('init', 'ampforwp_fb_instant_article_feed_generator');
 
function ampforwp_fb_instant_article_feed_generator() {
	if( ampforwp_get_setting('fb-instant-article-switch') ) {	
		add_feed('instant_articles', 'ampforwp_fb_instant_article_feed_function');
		add_action( 'ampforwp_fbia_head', 'ampforwp_fbia_meta_tags' );
		require AMPFORWP_PLUGIN_DIR . '/templates/instant-articles/instant-article-sanitizer.php';
	}
}

function ampforwp_fb_instant_article_feed_function() {
	add_filter('pre_option_rss_use_excerpt', '__return_zero');
	load_template( AMPFORWP_PLUGIN_DIR . '/feeds/instant-article-feed.php' );
}

if ( ! function_exists('ampforwp_fbia_meta_tags') ) {
	function ampforwp_fbia_meta_tags(){
		global $redux_builder_amp;
		// undefined index fb-instant-page-id #2610
		$fb_page_id = '';
		$fb_page_id = ampforwp_get_setting('fb-instant-page-id');
		// Page ID meta Tag
		if( $fb_page_id ) { ?>		
			<meta property="fb:pages" content="<?php echo esc_attr( $fb_page_id ); ?>" />
		<?php }
		// undefined index fb-instant-page-id ends here #2610
		$post = get_post();
		// If there's no current post, return
		if ( ! $post ) {
			return;
		}
		$url = get_permalink();
		$url = add_query_arg( 'ia_markup', '1', $url );
		// ia markup meta tag
		if( ampforwp_get_setting('fb-instant-crawler-ingestion') ) { ?>
			<meta property="ia:markup_url" content="<?php echo esc_url( $url ); ?>" />	
		<?php }
	}
}

// 69. Post Pagination #834 #857
function ampforwp_post_pagination( $args = '' ) {

	wp_reset_postdata();
	global $page, $numpages, $multipage, $more, $redux_builder_amp;
	if ( ampforwp_is_front_page() ) {
		$id = ampforwp_get_frontpage_id();
		$content_post = get_post($id);
		$content = $content_post->post_content;
		$checker = preg_match('/<!--nextpage-->/', $content);
		if ( 1 === $checker ) {
			$multipage = $more = 1;
			$ampforwp_new_content = explode('<!--nextpage-->', $content);
			$queried_var = get_query_var('paged');
			if ( $queried_var > 1 ) {
		      $page = $queried_var;
		    }
			$numpages = count($ampforwp_new_content);
		}	
		}else{
		$amp_current_post_id =ampforwp_get_the_ID();
		$amp_custom_content_enable = get_post_meta( $amp_current_post_id , 'ampforwp_custom_content_editor_checkbox', true);
		if($amp_custom_content_enable=='yes'){
			$content 	= get_post_meta ( $amp_current_post_id, 'ampforwp_custom_content_editor', true );
			$content 	= html_entity_decode($content);
			$checker = preg_match('/<!--nextpage-->/', $content);
			if ( 1 === $checker ) {
				$multipage = $more = 1;
				$ampforwp_new_content = explode('<!--nextpage-->', $content);
				$queried_var = get_query_var('paged');
				if ( $queried_var > 1 ) {
			      $page = $queried_var;
			    }
				$numpages = count($ampforwp_new_content);
			}
			}else if(ampforwp_get_setting('ampforwp-pagination-link-type')==true && is_singular() && !checkAMPforPageBuilderStatus(ampforwp_get_the_ID())){
			$id = ampforwp_get_the_ID();
			$content = get_post_field( 'post_content', $id);
			if ($content) {
				$sanitizer_obj = new AMPFORWP_Content( $content,
              apply_filters( 'amp_content_embed_handlers', array(
          				    'AMP_Reddit_Embed_Handler'     => array(),
                      		'AMP_Twitter_Embed_Handler'     => array(),
          				    'AMP_YouTube_Embed_Handler'     => array(),
                  			'AMP_DailyMotion_Embed_Handler' => array(),
                  			'AMP_Vimeo_Embed_Handler'       => array(),
                  			'AMP_SoundCloud_Embed_Handler'  => array(),
          				    'AMP_Instagram_Embed_Handler'   => array(),
          				    'AMP_Vine_Embed_Handler'        => array(),
          				    'AMP_Facebook_Embed_Handler'    => array(),
                  			'AMP_Pinterest_Embed_Handler'   => array(),
          				    'AMP_Gallery_Embed_Handler'     => array(),
                      		'AMP_Playlist_Embed_Handler'    => array(),
							  'AMP_Tiktok_Embed_Handler'=>array(),
             		 ) ),
              apply_filters(  'amp_content_sanitizers', array(
          				    'AMP_Style_Sanitizer'     => array(),
          				    'AMP_Blacklist_Sanitizer' => array(),
          				    'AMP_Img_Sanitizer'       => array(),
          				    'AMP_Video_Sanitizer'     => array(),
          				    'AMP_Audio_Sanitizer'     => array(),
                  			'AMP_Playbuzz_Sanitizer'  => array(),
          				    'AMP_Iframe_Sanitizer'    => array(
          					       'add_placeholder' => true,
          				    ),
              		)  ) );
			$content =  $sanitizer_obj->get_amp_content();
			$checker = preg_match('/<!--nextpage-->/', $content);
			if ( 1 === $checker ) {
				$multipage = $more = 1;
				$ampforwp_new_content = explode('<!--nextpage-->', $content);
				$queried_var = get_query_var('paged');
				if ( $queried_var > 1 ) {
			      $page = $queried_var;
			    }
				$numpages = count($ampforwp_new_content);
			}
			}
			
		}
	}
	$defaults = array(
		'before'           => '<div class="ampforwp_post_pagination" ><p>' . '<span>' .  ampforwp_translation($redux_builder_amp['amp-translator-page-text'], 'Page') . ':</span>',
		'after'            => '</p></div>',
		'link_before'      => '',
		'link_after'       => '',
		'next_or_number'   => 'number',
		'separator'        => ' ',
		'nextpagelink'     => ampforwp_translation($redux_builder_amp['amp-translator-next-text'], 'Next'),
		'previouspagelink' => ampforwp_translation($redux_builder_amp['amp-translator-previous-text'], 'Previous'),
		'pagelink'         => '%',
		'echo'             => 1
	);

	$params = wp_parse_args( $args, $defaults );

	/**
	 * Filters the arguments used in retrieving page links for paginated posts.
	 * @param array $params An array of arguments for page links for paginated posts.
	 */
	$r = apply_filters( 'ampforwp_post_pagination_args', $params );
	if ( isset($redux_builder_amp['ampforwp-pagination-select']) && 2 == $redux_builder_amp['ampforwp-pagination-select'] ) {
		$r['next_or_number'] = 'next';
		$r['before'] = '<div class="ampforwp_post_pagination" ><p>';
		$r['after'] = '</p></div>';
	}
	$output = '';
	if ( $multipage ) {
		if ( 'number' == $r['next_or_number'] ) {
			$output .= $r['before'];
			for ( $i = 1; $i <= $numpages; $i++ ) {
				$link = $r['link_before'] . str_replace( '%', '<span>'.$i.'</span>', $r['pagelink'] ) . $r['link_after'];
				if ( $i != $page || ! $more && 1 == $page ) {
					$link = ampforwp_post_paginated_link_generator( $i ) . $link . '</a>';
				}
				/**
				 * Filters the HTML output of individual page number links.
				 * @param string $link The page number HTML output.
				 * @param int    $i    Page number for paginated posts' page links.
				 */
				$link = apply_filters( 'ampforwp_post_pagination_link', $link, $i );

				// Use the custom links separator beginning with the second link.
				$output .= ( 1 === $i ) ? ' ' : $r['separator'];
				$output .= $link;
			}
			$output .= $r['after'];
		} elseif ( $more ) {
			$output .= $r['before'];
			$prev = $page - 1;
			if ( $prev > 0 ) {
				$link = ampforwp_post_paginated_link_generator( $prev ) . $r['link_before'] . $r['previouspagelink'] . $r['link_after'] . '</a>';
				$output .= apply_filters( 'ampforwp_post_pagination_link', $link, $prev );
			}
			$output .= $r['separator'];
			$text = $page . ' of ' . $numpages;
			$output .= apply_filters( 'ampforwp_post_pagination_page', $text, $page, $numpages);
			$next = $page + 1;
			if ( $next <= $numpages ) {
				$output .= $r['separator'];
				$link = ampforwp_post_paginated_link_generator( $next ) . $r['link_before'] . $r['nextpagelink'] . $r['link_after'] . '</a>';
				$output .= apply_filters( 'ampforwp_post_pagination_link', $link, $next );
			}
			$output .= $r['after'];
		}
	}

	/**
	 * Filters the HTML output of page links for paginated posts.
	 * @param string $output HTML output of paginated posts' page links.
	 * @param array  $args   An array of arguments.
	 */
	$html = apply_filters( 'ampforwp_post_pagination', $output, $args );
	if($redux_builder_amp['amp-pagination']) {
		if ( $r['echo'] ) {
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo $html;
		}
		return $html;
	}	

}

/**
 * Helper function for ampforwp_post_pagination().
 * @access private
 *
 * @global WP_Rewrite $wp_rewrite
 *
 * @param int $i Page number.
 * @return string Link.
 */
function ampforwp_post_paginated_link_generator( $i ) {
	global $wp_rewrite;
	$post = get_post();
	if ( ampforwp_is_front_page() ) {
		$id = ampforwp_get_frontpage_id();
		$post = get_post($id);
	}
	$query_args = array();
	if ( 1 == $i ) {
		$url = get_permalink();
		if(ampforwp_is_front_page()){
			$url = get_home_url();
		}
	} else {
		if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) ) {
			$url = add_query_arg( 'page', $i, get_permalink() );
			if(ampforwp_is_front_page()){
				$url = add_query_arg( 'page', $i, get_home_url() );
			}
		}
		elseif ( ampforwp_is_front_page() )
			$url = trailingslashit(get_home_url()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $i, 'single_paged');
		else
			$url = trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged');
	}

	if ( is_preview() ) {
		// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
		if ( ( 'draft' !== $post->post_status ) && isset( $_GET['preview_id'], $_GET['preview_nonce'] ) ) {
			// phpcs:ignore WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
			$query_args['preview_id'] = wp_unslash( $_GET['preview_id'] );
			// phpcs:ignore WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
			$query_args['preview_nonce'] = wp_unslash( $_GET['preview_nonce'] );
		}

		$url = get_preview_post_link( $post, $query_args, $url );

	}
	$mob_pres_link = false;
	if(function_exists('ampforwp_mobile_redirect_preseve_link')){
	    $mob_pres_link = ampforwp_mobile_redirect_preseve_link();
	}
	if ( false == ampforwp_get_setting('ampforwp-amp-takeover') && $mob_pres_link == false) {
		if(ampforwp_get_setting('ampforwp-pagination-link-type')==true && is_singular() && !checkAMPforPageBuilderStatus(ampforwp_get_the_ID())){
		 $url = ampforwp_url_controller($url);
		}else{
		 $url = add_query_arg(AMPFORWP_AMP_QUERY_VAR,'1',$url);
		}
	}
	return '<a href="' . esc_url( $url ) . '">';
}
// Modify the content to make Pagination work on Pages and FrontPage #2253
add_filter('ampforwp_modify_the_content','ampforwp_post_paginated_content');
function ampforwp_post_paginated_content($content){
	//Embed pinterest images to the amp #4361
	if(preg_match('/<a(.*?)data-pin-do="embedPin"(.*?)href="(.*?)"><\/a>/', $content)){
 		$content = preg_replace('/<a(.*?)data-pin-do="embedPin"(.*?)href="(.*?)"><\/a>/', '<amp-pinterest width="250" height="500" data-do="embedPin" data-url="$3"></amp-pinterest>', $content);
	}
	if ( is_singular() || ampforwp_is_front_page() ){
		global $redux_builder_amp, $page, $multipage;
		$ampforwp_new_content = $ampforwp_the_content = $checker = '';
		if(ampforwp_get_setting('ampforwp-pagination-link-type')==true && is_singular() && !checkAMPforPageBuilderStatus(ampforwp_get_the_ID())){
			if (get_query_var('paged') > 1) {
				$id = ampforwp_get_the_ID();
				$content = get_post_field( 'post_content', $id);
			}
		  if ($content) {
		  	$sanitizer_obj = new AMPFORWP_Content( $content,
              apply_filters( 'amp_content_embed_handlers', array(
          				    'AMP_Reddit_Embed_Handler'     => array(),
                      		'AMP_Twitter_Embed_Handler'     => array(),
          				    'AMP_YouTube_Embed_Handler'     => array(),
                  			'AMP_DailyMotion_Embed_Handler' => array(),
                  			'AMP_Vimeo_Embed_Handler'       => array(),
                  			'AMP_SoundCloud_Embed_Handler'  => array(),
          				    'AMP_Instagram_Embed_Handler'   => array(),
          				    'AMP_Vine_Embed_Handler'        => array(),
          				    'AMP_Facebook_Embed_Handler'    => array(),
                  			'AMP_Pinterest_Embed_Handler'   => array(),
          				    'AMP_Gallery_Embed_Handler'     => array(),
                      		'AMP_Playlist_Embed_Handler'    => array(),
							  'AMP_Tiktok_Embed_Handler'=>array(),
             		 ) ),
              apply_filters(  'amp_content_sanitizers', array(
          				    'AMP_Style_Sanitizer'     => array(),
          				    'AMP_Blacklist_Sanitizer' => array(),
          				    'AMP_Img_Sanitizer'       => array(),
          				    'AMP_Video_Sanitizer'     => array(),
          				    'AMP_Audio_Sanitizer'     => array(),
                  			'AMP_Playbuzz_Sanitizer'  => array(),
          				    'AMP_Iframe_Sanitizer'    => array(
          					       'add_placeholder' => true,
          				    ),
              		)  ) );
			$content =  $sanitizer_obj->get_amp_content();
		  $queried_var = get_query_var('paged');
		  $con = explode("<!--nextpage-->", $content);
		  if($queried_var>=2){
		  	 if(isset($con[$queried_var-1])){
		  	 	$content = $con[$queried_var-1];
		  	 }
		  }
		}
		$ampforwp_the_content = $content;
		$checker = preg_match('/<!--nextpage-->/', $ampforwp_the_content);
		if ( 1 === $checker && true == ampforwp_get_setting('amp-pagination') ) {
			$multipage = 1;		
			$ampforwp_new_content = explode('<!--nextpage-->', $ampforwp_the_content);
		    $queried_var = get_query_var('page');
		    if ( ampforwp_is_front_page() ) {
		    	$queried_var = get_query_var('paged');
		    }
		    if ( $queried_var > 1 ) {
		      $queried_var = $queried_var -1   ;
		    }
		    else {
		    	 $queried_var = 0;
		    }
		    return $ampforwp_new_content[$queried_var];
		}
		else {
			return $ampforwp_the_content;
		}
		  }	  
	}
	return $content;
}

add_filter('ampforwp_modify_rel_canonical','ampforwp_modify_rel_amphtml_paginated_post');
function ampforwp_modify_rel_amphtml_paginated_post($url) {
	if(is_single()){
			$post_paginated_page='';
			$post_paginated_page = get_query_var('page');
			$permalink_structure = '';
			$permalink_structure = get_option('permalink_structure');
			if($post_paginated_page){
				$url = get_permalink();
				if('' == $permalink_structure){
					$new_url = add_query_arg('page',$post_paginated_page,$url);
				}
				else{
					$new_url = trailingslashit($url) . user_trailingslashit($post_paginated_page);
				}

				if(ampforwp_get_setting('ampforwp-pagination-link-type')==true ){
		 			$new_url = ampforwp_url_controller($new_url);
				}else{
					$new_url = add_query_arg(AMPFORWP_AMP_QUERY_VAR,'1',$new_url);
				}
				return $new_url;
			}
		} 
	return $url;
}

add_action('amp_post_template_head','ampforwp_modify_rel_canonical_paginated_post',9);
function ampforwp_modify_rel_canonical_paginated_post(){
		if(is_single()){
			$post_paginated_page='';
			$post_paginated_page = get_query_var('page');
			if($post_paginated_page && !class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration')){
				remove_action( 'amp_post_template_head', 'AMPforWP\\AMPVendor\\amp_post_template_add_canonical' );
				add_action('amp_post_template_head','ampforwp_rel_canonical_paginated_post');
			}
		}
}
function ampforwp_rel_canonical_paginated_post(){
		$post_paginated_page='';
		$new_canonical_url = '';
		$permalink_structure = '';
		$permalink_structure = get_option('permalink_structure');
		global $post;
	    $current_post_id = $post->ID;
	    $new_canonical_url = get_permalink($current_post_id);
	    $new_canonical_url = trailingslashit($new_canonical_url);
		$post_paginated_page = get_query_var('page');
		if($post_paginated_page){
			if('' == $permalink_structure){
				$new_canonical_url = add_query_arg('page',$post_paginated_page,$new_canonical_url);
			}
			else{
				$new_canonical_url = $new_canonical_url.$post_paginated_page;
			}
			?>
			<link rel="canonical" href="<?php echo esc_url($new_canonical_url) ?>/" /><?php  } 
}
add_action('ampforwp_after_post_content','ampforwp_post_pagination');

// Generating Canonical Url for Yoast no index pages.
add_filter( 'wpseo_robots_array', 'ampforwp_yoast_no_index_condition_check',20,2);
function ampforwp_yoast_no_index_condition_check($robots,$object){
	global $yoast_data;
	if($robots['index'] == 'noindex'){
	  $yoast_data['canonical'] = $object->model->permalink;
	  add_action( 'amp_post_template_head', 'ampforwp_generate_yoast_no_index_canonical_url' );
	}
	return $robots;
}

function ampforwp_generate_yoast_no_index_canonical_url(){
   global $yoast_data;
	if(isset($yoast_data['canonical'])){ 
		$canonical_url = $yoast_data['canonical'];
			if(ampforwp_is_home() || ampforwp_is_front_page()){
				   $canonical_url = user_trailingslashit(get_home_url());
			} ?>
	   <link rel="canonical" href="<?php echo esc_url($canonical_url) ?>"/>
	<?php }
 }

//  Modified Homepage wrong canonical url generated by yoast
add_action('pre_amp_render_post','ampforwp_modify_yoast_amp_homepage_canonical');
function ampforwp_modify_yoast_amp_homepage_canonical(){
 add_filter('wpseo_canonical','ampforwp_modify_yoast_homepage_canonical_url',20);
}

 function ampforwp_modify_yoast_homepage_canonical_url($canonical_url){
	if(ampforwp_is_home() || ampforwp_is_front_page()){
	  $canonical_url = user_trailingslashit(get_home_url());
	} 
  return esc_url($canonical_url);
 }

// 70. Hide AMP by specific Categories & Tags #872
function ampforwp_posts_to_remove () {
	if(is_category()){
		if(ampforwp_get_setting('ampforwp-archive-support-cat')==false){
			return false;
		}
	}
	if(is_tag()){
		if(ampforwp_get_setting('ampforwp-archive-support-tag')==false){
			return false;
		}
	}
	if(ampforwp_get_setting('hide-amp-categories2')){
		if ( has_category(array_filter(ampforwp_get_setting('hide-amp-categories2'))) ) {
			return true;
		}
	}
	if( ampforwp_get_setting('hide-amp-tags-bulk-option2') )	{
		if ( has_tag(array_filter(ampforwp_get_setting('hide-amp-tags-bulk-option2') )) ) {
			return true;
		}
	}
    return false;
}

// Excluded Categories 
if ( ! function_exists('ampforwp_exclude_archive') ) {
	function ampforwp_exclude_archive($archive = 'cat'){
		global $redux_builder_amp;
		$exclude = array();
		// Categories
		if ( is_array(ampforwp_get_setting('hide-amp-categories2')) && 'cat' == $archive ) {
			$exclude = array_values(array_filter(ampforwp_get_setting('hide-amp-categories2') ) );
			return $exclude;
		}
		// Tags
		if ( is_array(ampforwp_get_setting('hide-amp-tags-bulk-option2')) && 'tag' == $archive ) {
			$exclude = array_values(array_filter(ampforwp_get_setting('hide-amp-tags-bulk-option2')));
			return $exclude;
		}
	}
}

add_filter( 'amp_skip_post', 'ampforwp_cat_specific_skip_amp_post', 10, 3 );
function ampforwp_cat_specific_skip_amp_post( $skip, $post_id, $post ) {
	$skip_this_post = '';
	$skip_this_post = ampforwp_posts_to_remove();
	$skip_this_post = apply_filters( 'ampforwp_skip_category', $skip_this_post );
	wp_reset_postdata();
	if ( $skip_this_post ) {
	  $skip = true;
	  remove_action( 'wp_head', 'ampforwp_home_archive_rel_canonical', 1 );
	  // #999 Disable mobile redirection
	  remove_action( 'template_redirect', 'ampforwp_page_template_redirect', 30 );
	}	
	return $skip;
}

// Exclude Posts from Loops based on Hide AMP Bulk Cats and Tags #2375
add_filter('ampforwp_query_args', 'ampforwp_exclude_archive_args');
function ampforwp_exclude_archive_args( $args ) {
	global $redux_builder_amp;
	if ( ampforwp_exclude_archive() ) {
		$args['category__not_in'] = ampforwp_exclude_archive();
	}
	if ( ampforwp_exclude_archive('tag') ) {
		$args['tag__not_in'] = ampforwp_exclude_archive('tag');
	}
	return $args;
}

add_action('pre_amp_render_post', 'ampforwp_home_archive_canonical_setter');
function ampforwp_home_archive_canonical_setter(){
	add_action('amp_post_template_head','ampforwp_rel_canonical_home_archive');

	// Remove the canonical from the homepage if the Yoast 14 and above version is available
		// Except for the homepage
	if( class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration') ) {
		// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
		if ( ampforwp_is_home() && 'page' == get_option( 'show_on_front') && empty(get_option( 'page_for_posts')) && !isset($_GET['lang'])) {
			return ;
		}
		// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
		if(ampforwp_is_front_page() && 'page' == get_option( 'show_on_front') && empty(get_option( 'page_for_posts')) && !isset($_GET['lang']) && !ampforwp_get_setting('ampforwp-amp-takeover')){
			return ;
		}
		if(is_search()){
			return;
		}
		if(is_tax()){
			return;
		}
		remove_action('amp_post_template_head','ampforwp_rel_canonical_home_archive');
		if(function_exists('wpseo_premium_init') && ! is_singular() ){
			add_action( 'amp_post_template_head', 'AMPforWP\\AMPVendor\\amp_post_template_add_canonical' );
		}
	}
}

function ampforwp_rel_canonical_home_archive(){
	if (function_exists('aioseo') && ((aioseo()->pro && (version_compare(AIOSEO_VERSION,'4.2.6')>=0)) || (!aioseo()->pro && (version_compare(AIOSEO_VERSION,'4.2.4')>0)))) {
	   return;
	}
	global $redux_builder_amp;
	global $wp;
	$current_archive_url 	= '';
	$amp_url				= '';
	$remove					= '';
	$query_arg_array 		= '';
	$page                   = '' ;
	if ( is_home() || is_front_page() || (is_archive() && ampforwp_get_setting('ampforwp-archive-support')) )	{
		$current_archive_url = home_url( $wp->request );
		$amp_url 	= trailingslashit($current_archive_url);
		$amp_url = explode('/', $amp_url);
		$amp_url = array_flip($amp_url);
		if(isset($amp_url['amp'])){
			unset($amp_url['amp']);
		}
		$amp_url = array_flip($amp_url);
		$amp_url  = implode('/', $amp_url);	
	  	$query_arg_array = $wp->query_vars;
	  	if( array_key_exists( "page" , $query_arg_array  ) ) {
		   $page = $wp->query_vars['page'];
	  	}
	  	if ( $page >= '2') { 
			$amp_url = trailingslashit( $amp_url  . '?page=' . $page);
		} ?>
		<link rel="canonical" href="<?php 
		//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo user_trailingslashit( esc_url( apply_filters('ampforwp_modify_rel_url', $amp_url ) ) ) ?>">
	<?php }

	if(is_search()){
		$paged = get_query_var( 'paged' );
		$current_search_url = trailingslashit(get_home_url())."?s=".get_search_query();
		$amp_url = untrailingslashit($current_search_url);
		if ($paged > 1 ) {
			global $wp;
			$current_archive_url 	= home_url( $wp->request );
			$amp_url 				= trailingslashit($current_archive_url);
			$remove 				= '/'. AMPFORWP_AMP_QUERY_VAR;
			$amp_url				= str_replace($remove, '', $amp_url) ;
			$amp_url 				= $amp_url ."?s=".get_search_query();
		} 
		?>
		<link rel="canonical" href="<?php 
		//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo untrailingslashit( esc_url( apply_filters('ampforwp_modify_rel_url', $amp_url) ) ); ?>">
	<?php
	}
				
}

// 71. Alt tag for thumbnails #1013
function ampforwp_thumbnail_alt(){
	$thumb_id = '';
	$thumb_alt = '';
	$thumb_id = get_post_thumbnail_id();
	$thumb_alt = get_post_meta( $thumb_id, '_wp_attachment_image_alt', true) ;
	if($thumb_alt){
		echo ' alt="' . esc_attr($thumb_alt) . '" ';
	}
}

// 72. Blacklist Sanitizer Added back #1024
add_filter('amp_content_sanitizers', 'ampforwp_add_blacklist_sanitizer');
function ampforwp_add_blacklist_sanitizer($data){
	// Blacklist Sanitizer Added back until we find a better solution to replace it 
	$data['AMP_Blacklist_Sanitizer']  = array();
	return $data;
}

//Compatibility with WP User Avatar #975
function ampforwp_get_wp_user_avatar($object='',$type=''){
	include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
			if(class_exists('WP_User_Avatar_Functions') && defined('PPRESS_VERSION_NUMBER') && version_compare(PPRESS_VERSION_NUMBER,'3.0', '<')){
				$user_avatar_url = '';
				$user_avatar_url = get_wp_user_avatar_src($object);
				return $user_avatar_url;
			}
}
add_filter('get_amp_supported_post_types','ampforwp_supported_post_types');
function ampforwp_supported_post_types($supported_types){
global $redux_builder_amp;
	include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
				if( is_plugin_active( 'amp-custom-post-type/amp-custom-post-type.php' ) ) {					
					if ( isset($redux_builder_amp['ampforwp-custom-type']) && $redux_builder_amp['ampforwp-custom-type'] ) {
						foreach($redux_builder_amp['ampforwp-custom-type'] as $custom_post){
							$supported_types[] = $custom_post;
						}
					}
				}	
				if( is_plugin_active( 'amp-woocommerce/amp-woocommerce.php' ) ) {
					if( !in_array("product", $supported_types) ){
						$supported_types[]= 'product';
					}
				}
	return $supported_types;
}
// is_category_amp_disabled #872 & #2549
function is_category_amp_disabled(){
	if(is_archive() && ampforwp_get_setting('ampforwp-archive-support') ){
		if(is_tag() && is_array(ampforwp_get_setting('hide-amp-tags-bulk-option2') ) )	{
			if ( in_array(get_query_var( 'tag_id' ), ampforwp_get_setting('hide-amp-tags-bulk-option2')) ){
				return true;
			}
		}//tags check area closed
		if ( is_category() && is_array(ampforwp_get_setting('hide-amp-categories2')) ) {
			if ( in_array(get_query_var( 'cat' ), ampforwp_get_setting('hide-amp-categories2') ) ){
				return true;
			}
		}
	}
	return false;
}

// 73. View AMP Site below View Site In Dashboard #1076
add_action( 'admin_bar_menu', 'ampforwp_visit_amp_in_admin_bar',999 );
function ampforwp_visit_amp_in_admin_bar($admin_bar) {
	global $redux_builder_amp;
	if ( ampforwp_get_setting('ampforwp-homepage-on-off-support') && false == ampforwp_get_setting('ampforwp-amp-takeover') ) {
		$args = array(
		    'parent' => 'site-name',
		    'id'     => 'view-amp',
		    'title'  => 'Visit AMP',
		    'href'   => ampforwp_url_controller( get_home_url() ),
		    'meta' => array('target' => '_blank')
		);
		$admin_bar->add_node( $args );
	}       
}

// Things to be added in the Body Tag #1064
add_action('ampforwp_body_beginning','ampforwp_body_beginning_html_output',11);
function ampforwp_body_beginning_html_output(){

  	if( ampforwp_get_setting('amp-body-text-area') ) {
		//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
    	echo ampforwp_get_setting('amp-body-text-area') ;
  }
}

add_filter('get_amp_supported_post_types','is_amp_post_support_enabled');
function is_amp_post_support_enabled($supportedTypes){
	global $redux_builder_amp;
	if( isset( $redux_builder_amp['amp-on-off-for-all-posts'] ) ) {
		if($redux_builder_amp['amp-on-off-for-all-posts']!='1'){
			$index = array_search('post',$supportedTypes);
			unset($supportedTypes[$index]);
		}elseif($redux_builder_amp['amp-on-off-for-all-posts']==1){
			$supportedTypes[] = 'post';
			$supportedTypes = array_unique($supportedTypes);
		}
	}
	return $supportedTypes;
}

// 74. Featured Image check from Custom Fields
// Moved to functions.php

function ampforwp_cf_featured_image_src($param=""){
global $redux_builder_amp, $post;
	if($redux_builder_amp['ampforwp-custom-fields-featured-image-switch']){
		$post_id 				= '';
		$custom_fields 			= '';
		$featured_image_field 	= '';
		$output 				= '';
		$custom_fields_name 	= array();
		$post_id 				= get_the_ID();
		$custom_fields 			= get_post_custom($post_id);
		foreach ($custom_fields as $key => $value) {
			$custom_fields_name[] = $key;	 
		}
		$featured_image_field = $redux_builder_amp['ampforwp-custom-fields-featured-image'];
		if(in_array($featured_image_field, $custom_fields_name)){
			$amp_img_src = $custom_fields[$featured_image_field][0];
      $image = @getimagesize($amp_img_src);	
			if(empty($image) || $image==false){
				$img_id  	 = attachment_url_to_postid($amp_img_src);
				$imageDetail = wp_get_attachment_image_src( $img_id , 'full');
				$image[0] 	 = $imageDetail[1];
				$image[1] 	 = $imageDetail[2];
			}
			switch ($param) {
				case 'url':
					$output = $amp_img_src;
					break;
				case 'width':
					$output = $image[0];
					break;
				case 'height':
					$output = $image[1];
						break;	
				default:
					$output = $amp_img_src;
					break;
			}
			return $output;
		}
	}
}

// 75. Dev Mode in AMP
add_action('amp_init','ampforwp_dev_mode');
function ampforwp_dev_mode(){
	global $redux_builder_amp;
	if(isset($redux_builder_amp['ampforwp-development-mode']) && $redux_builder_amp['ampforwp-development-mode']){
		add_action( 'wp', 'ampforwp_dev_mode_remove_amphtml' );		
		add_action( 'amp_post_template_head', 'ampforwp_dev_mode_add_noindex' );		
	}
}
// Remove amphtml from non-AMP
function ampforwp_dev_mode_remove_amphtml(){
	remove_action( 'wp_head', 'ampforwp_home_archive_rel_canonical', 1 );
}
// Add noindex,nofollow in the AMP
if ( ! function_exists('ampforwp_dev_mode_add_noindex') ) {
	function ampforwp_dev_mode_add_noindex() {
		global $redux_builder_amp;
		if ( isset( $redux_builder_amp['amp-inspection-tool'] ) && false == $redux_builder_amp['amp-inspection-tool'] ){ 
			echo '<meta name="robots" content="noindex,nofollow"/>';
		}
	}
}
 
// 76. Body Class for AMP pages
if (! function_exists( 'ampforwp_body_class' ) ) {
	function ampforwp_body_class( $class = '' ) {
	    // Separates classes with a single space, collates classes for body element
	    echo 'class="' . esc_attr(join( ' ', ampforwp_get_body_class( $class ) )) . '"';
	}
}

if (! function_exists( 'ampforwp_get_body_class' ) ) {
	function ampforwp_get_body_class( $class = '' ){
		global $wp_query, $redux_builder_amp, $post;
	 
	    $classes = array();
		$post_id = '';
		$post_type = '';

		$classes[] = 'body';

		if ( is_singular() ) {
			$post_id = $post->ID;
			$classes[] = 'single-post';
		}

		if ( ampforwp_is_front_page() ) {
	    	$post_id = ampforwp_get_frontpage_id();
		}

		if ( ampforwp_is_front_page() ) {
			$classes[] = 'amp-frontpage';
		}

		if(true == ampforwp_get_setting('amp-rtl-select-option')){
			$classes[] = 'rtl';
		}
	    $classes[] = $post_id;

	    if ( $post_id ) {
	    	$classes[] = 'post-id-' . $post_id;
	    	$classes[] = 'singular-' . $post_id;
	    }

	    if ( is_page() ) {
	    	$classes[] = 'amp-single-page';
	    }
	    
 
		if ( is_post_type_archive() ) {
			$post_type = get_queried_object();
			$classes[] = 'type-'. $post_type->rewrite['slug'];
		}
 
		if ( is_archive() ) {
			$page_id 	= get_queried_object_id();
			$classes[] 	= 'archives_body archive-'. $page_id;
		}

		if ( ! empty( $class ) ) {
		    if ( !is_array( $class ) )
		        $class = preg_split( '#\s+#', $class );
		    $classes = array_merge( $classes, $class );
		} else {
		    // Ensure that we always coerce class to being an array.
		    $class = array();
		}
		if(is_tax()){
			$term = get_queried_object();
			if ( isset( $term->term_id ) ) {
				$term_class = sanitize_html_class( $term->slug, $term->term_id );
				if ( is_numeric( $term_class ) || ! trim( $term_class, '-' ) ) {
					$term_class = $term->term_id;
				}
				$classes[] = 'tax-' . sanitize_html_class( $term->taxonomy );
				$classes[] = 'term-' . $term_class;
				$classes[] = 'term-' . $term->term_id;
			}
		}else{
			$classes[] = get_post_type();
		}
		$classes[] = AMPFORWP_VERSION;
		$classes = array_map( 'esc_attr', $classes );
	    $classes = apply_filters( 'ampforwp_body_class', $classes, $class );
	 
	    return array_unique( $classes );
	}

}

// Fallback for ticket #1006
function ampforwp_the_body_class(){ return ;}

// 77. AMP Blog Details
// Moved to functions.php

// 78. Saved Custom Post Types for AMP in Options for Structured Data
add_action("redux/options/redux_builder_amp/saved",'ampforwp_save_custom_post_types_sd', 10, 1);
if(! function_exists('ampforwp_save_custom_post_types_sd') ) {
	function ampforwp_save_custom_post_types_sd( $redux_builder_amp ){
		global $redux_builder_amp;
		$post_types 		= array();
		$saved_custom_posts = array();
		$count_current_pt 	= "";
		$count_saved_pt 	= "";
		$array_1 			= "";
		$array_2 			= "";

		$saved_custom_posts = get_option('ampforwp_custom_post_types');
		$post_types = ampforwp_get_all_post_types();

		
		if (empty($post_types)) {
			$post_types = array();
		}

		if (empty($saved_custom_posts)) {
			update_option('ampforwp_custom_post_types',  $post_types, false);
		}
 		if ( empty( $saved_custom_posts ) ) {
			$saved_custom_posts = array();
 		}

 		$count_current_pt = count( $post_types );
		$count_saved_pt =  count( $saved_custom_posts );

		if ( $count_current_pt > $count_saved_pt) {
			
			$array_1 = $post_types;
			$array_2 = $saved_custom_posts;
		} else {
			$array_1 = $saved_custom_posts;
			$array_2 = $post_types;
		}

		if( array_diff( $array_1, $array_2 ) ){	
			update_option('ampforwp_custom_post_types',  $post_types, false);
		}

	}
}

// 79. Favicon for AMP
add_action('amp_post_template_head','wp_site_icon');

// 81. Duplicate Featured Image Support
add_filter('ampforwp_allow_featured_image', 'ampforwp_enable_post_and_featured_image');
function ampforwp_enable_post_and_featured_image($show_image){
	global $redux_builder_amp;

	if ( isset($redux_builder_amp['ampforwp-duplicate-featured-image']) && $redux_builder_amp['ampforwp-duplicate-featured-image'] == 1  ) {
		$show_image = true;	 
	}

	return $show_image; 
}

// 82. Grab Featured Image from The Content
function ampforwp_get_featured_image_from_content( $featured_image = "", $size="") {
	if(get_the_post_thumbnail_url()){
		return;
	}
	global $post, $posts;
	$image_url = $image_width = $image_height = $output = $matches = $output_fig = $amp_html_sanitizer = $amp_html = $image_html = $featured_image_output = $matches_fig = $figure = $output_fig_image = $matches_fig_img = '';
	ob_start();
	ob_end_clean();
	// Match all the images from the content
	if(is_object($post)){
		// phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
		$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*.+width=[\'"]([^\'"]+)[\'"].*.+height=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);

		// Match all the figure tags from the content
		$output_fig = preg_match_all('/\[caption.+id=[\'"]([^\'"]+).*]/i', $post->post_content, $matches_fig);
		if ( $output_fig && $matches_fig[0][0] ) {
			// phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
			$output_fig_image = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*.+width=[\'"]([^\'"]+)[\'"].*.+height=[\'"]([^\'"]+)[\'"].*>(.*)\[/i', $matches_fig[0][0], $matches_fig_img);
			// Check if the first image is inside the figure and it got caption
			if ( $matches_fig_img[1][0] == $matches[1][0] && $matches_fig_img[4][0]) {
				$figure = true;
			}
		}
	}
	//Grab the First Image
	if ((is_array($matches) && $matches[0]) || $output==0 ) {
		if($output==1){
			$image_url 		= $matches[1][0];
			$image_html 	= $matches[0][0];
			$image_width 	= $matches[2][0];
			$image_height 	= $matches[3][0];
		}
		if($output==0 && is_object($post) && isset($post->post_content)){
			// phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
			if(preg_match('/<figure\sclass="(.*?)">(<img\ssrc="(.*?)"(.*?)>)<\/figure>/', $post->post_content, $fm)){
				if(isset( $fm[2])){
					$dom = new DOMDocument();
					// phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
					preg_match('/<img\ssrc="(.*?)"(.*?)>/', $fm[2],$fmatch);
					if(isset($fmatch[0])){
						$image_html = $fmatch[0];
					    $dom->loadHTML($image_html);
					    $x = new DOMXPath($dom);
					    foreach($x->query("//img") as $node){   
					        $node->setAttribute("width","1366");
					        $node->setAttribute("height","600");
					    }
					    $image_html = $dom->saveHtml();
						// phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
					    preg_match_all('/<img\ssrc="(.*?)">/', $image_html, $fimg);
					    if(isset($fimg[0][0])){
					       $image_html ='<figure class="'.esc_attr($fm[1]).'">'.$fimg[0][0].'</figure>';
						   if(isset($fmatch[1])){
							    $image_url 		= $fmatch[1];
								$image_width 	= 1366;
								$image_height 	= 600;
							}
					    }
					}
				}
				}else{
					// phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
				preg_match_all('/<img(.*?)src=[\'"]([^\'"]+)[\'"].*.>/i', $post->post_content, $matches);
				if(isset($matches[2][0])){
					$image_html 	= $matches[0][0];
					$image_url 		= $matches[2][0];
					$image_width 	= 1366;
					$image_height 	= 600;
				}
			}
		}
		// Sanitize it
		$amp_html_sanitizer = new AMPFORWP_Content( $image_html, array(), apply_filters( 'ampforwp_content_sanitizers', array( 'AMP_Img_Sanitizer' => array(), 'AMP_Style_Sanitizer' => array() ) ) );
	    $amp_html =  $amp_html_sanitizer->get_amp_content();
	    // If its figure then add the figcaption inside the figure
	    if ( $figure ) {
	   		$amp_html = $amp_html . '<figcaption class="wp-caption-text">' . esc_attr($matches_fig_img[4][0]) . '</figcaption>';
	   	}
	    // Filter to remove that image from the content
	    add_filter('ampforwp_modify_the_content','featured_image_content_filter');
	
		if ( isset( $size ) && '' !== $size) {
			$image_id = attachment_url_to_postid( $image_url );
			if ($image_id) {
				$image_array = wp_get_attachment_image_src($image_id, $size, true);
				$image_url = $image_array[0];
				$image_width = $image_array[1];
				$image_height = $image_array[2]; 
			}
		}
	}
	switch ($featured_image) {
			case 'image':
				$featured_image_output = $amp_html;
			break;
			case 'url':
				$featured_image_output = $image_url;
			break;
			case 'width':
				$featured_image_output = $image_width;
			break;
			case 'height':
				$featured_image_output = $image_height;
			break;
			default:
				$featured_image_output = $amp_html;
			break;
		}	
	return $featured_image_output;
}
// Remove 1st image from the content if Featured image from the content option is enabled
if( ! function_exists( 'featured_image_content_filter' ) ){
	function featured_image_content_filter($content){
		global $redux_builder_amp;
		$featured_image = "";
		$featured_image = ampforwp_get_featured_image_from_content('url');
		if( $featured_image && false == $redux_builder_amp['ampforwp-duplicate-featured-image']){
			// Change the src to use it in the pattern
			$featured_image = str_replace('/', '\/', $featured_image);
			// Remove the figure (due to caption)
			$content = preg_replace('/<figure(.*)src="'.$featured_image.'"(.*?)<\/figure>/', '', $content);
			// Remove the amp-img 
		  if(false == has_post_thumbnail()){
			$content = preg_replace('/<amp-img(.*)src="'.$featured_image.'"(.*?)<\/amp-img>/', '', $content);
		  }
		}
	return $content;
	}
}



// 84. Inline Related Posts

function ampforwp_inline_related_posts(){
	global $post, $redux_builder_amp;
		$string_number_of_related_posts = $redux_builder_amp['ampforwp-number-of-inline-related-posts'];		
		$int_number_of_related_posts = round(abs(floatval($string_number_of_related_posts)));

		// declaring this variable here to prevent debug errors
		$args = null;
		$orderby = 'ID';
		if( isset( $redux_builder_amp['ampforwp-inline-related-posts-order'] ) && $redux_builder_amp['ampforwp-inline-related-posts-order'] ){
			$orderby = 'rand';
		}

		// Custom Post types 
       if( $current_post_type = get_post_type( $post )) {
                // The query arguments
       		//#1263
       		if($current_post_type != 'page'){
				
                $args = array(
                    'posts_per_page'=> $int_number_of_related_posts,
                    'order' => 'DESC',
                    'orderby' => $orderby,
                    'post_type' => $current_post_type,
                    'no_found_rows'  => true,
					/* phpcs:ignore WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_post__not_in */
                    'post__not_in' => array( $post->ID )

                );  
            } 			
		}//end of block for custom Post types

		if($redux_builder_amp['ampforwp-inline-related-posts-type']==2){
		    $categories = get_the_category($post->ID);
					if ($categories) {
							$category_ids = array();
							foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
							
							$args=array(
							    'category__in' => $category_ids,
								/* phpcs:ignore WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_post__not_in */
							    'post__not_in' => array($post->ID),
							    'posts_per_page'=> $int_number_of_related_posts,
							    'ignore_sticky_posts'=>1,
								'has_password' => false ,
								'post_status'=> 'publish',
								'no_found_rows'  => true,
								'orderby'    => $orderby
							);
						}
			} //end of block for categories
			//code block for tags
		 if($redux_builder_amp['ampforwp-inline-related-posts-type']==1) {
					$ampforwp_tags = get_the_tags($post->ID);
						if ($ampforwp_tags) {
										$tag_ids = array();
										foreach($ampforwp_tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
										
										$args=array(
										   'tag__in' => $tag_ids,
										   /* phpcs:ignore WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_post__not_in */
										    'post__not_in' => array($post->ID),
										    'posts_per_page'=> $int_number_of_related_posts,
										    'ignore_sticky_posts'=>1,
											'has_password' => false ,
											'post_status'=> 'publish',
											'no_found_rows' 	  => true,
											'orderby'    => $orderby
										);
					}
			}//end of block for tags
			if(true == ampforwp_get_setting('ampforwp-in-content-related-posts-days-switch')){
            $date_range = strtotime ( '-' . ampforwp_get_setting('ampforwp-in-content-related-posts-days-text') .' day' );
            $args['date_query'] = array(
                                    array(
                                        'after' => array(
                                            'year'  => gmdate( 'Y', esc_html( $date_range ) ),
                                            'month' => gmdate( 'm', esc_html( $date_range ) ),
                                            'day'   => gmdate( 'd', esc_html( $date_range )),
                                            ),
                                        )
                                    );  
            } 
            $args = apply_filters('ampforwp_inlne_related_posts_query_args', $args);
            $inline_related_posts = '';
			$my_query = new wp_query( $args );
					if( $my_query->have_posts() ) {
				$inline_related_posts_img = '';
				$inline_related_posts = '<div class="amp-wp-content relatedpost">
						    <div class="rp">
							<span class="related-title">'.esc_html(ampforwp_translation( ampforwp_get_setting('amp-translator-incontent-related-text'), 'Related Post' )).'</span>
							<ol class="clearfix">';			
				    while( $my_query->have_posts() ) {
					    $my_query->the_post();
						$related_post_permalink = get_permalink();
						$related_post_permalink = trailingslashit($related_post_permalink);
						$related_post_permalink = ampforwp_url_controller( $related_post_permalink );
						$related_post_permalink = ampforwp_modify_url_utm_params($related_post_permalink);
						if ( ampforwp_has_post_thumbnail() ) {
							$title_class = 'has_related_thumbnail';
						} else {
							$title_class = 'no_related_thumbnail'; 
						}
						$inline_related_posts .= '<li class="'.esc_attr($title_class).'">';
						if ( true == $redux_builder_amp['ampforwp-single-related-posts-image'] ) {
                            $inline_related_posts .= '<a href="'.esc_url( $related_post_permalink ).'" rel="bookmark" title="'.esc_attr(get_the_title()).'">';
			          
			           		$thumb_url_2 = ampforwp_get_post_thumbnail('url');
			            
							if ( ampforwp_has_post_thumbnail() ) {
								if( 4 == $redux_builder_amp['amp-design-selector'] ){
									$r_width = 220;
									$r_height = 134;
									if(function_exists('ampforwp_get_retina_image_settings')){
										$ret_config = ampforwp_get_retina_image_settings($r_width,$r_height);
										$r_width  = intval($ret_config['width']);
										$r_height = intval($ret_config['height']);
									}
									$thumb_url_2 = ampforwp_aq_resize( $thumb_url_2, $r_width , $r_height , true, false, true );
									$inline_related_posts_img  = '<amp-img src="'.esc_url( $thumb_url_2[0] ).'" width="' . esc_attr($thumb_url_2[1]) . '" height="' . esc_attr($thumb_url_2[2]) . '" layout="responsive"></amp-img>';
									if(!isset($thumb_url_2[0]) && is_null($thumb_url_2[0]) || wp_check_filetype(ampforwp_get_post_thumbnail('url') == 'svg')){
										$thumb_url = ampforwp_get_post_thumbnail('url');
										$inline_related_posts_img = '<amp-img src="'.esc_url( $thumb_url ).'" width="' . esc_attr(220) . '" height="' . esc_attr(134) . '" layout="responsive"></amp-img>';
									}
								}
								else{
									$r_width = 150;
									$r_height = 150;
									if(function_exists('ampforwp_get_retina_image_settings')){
										$ret_config = ampforwp_get_retina_image_settings($r_width,$r_height);
										$r_width = intval($ret_config['width']);
										$r_height = intval($ret_config['height']);
									}
									$thumb_url_2 = ampforwp_aq_resize( $thumb_url_2, $r_width , $r_height , true, false,true );
									$thumb_url 		= $thumb_url_2[0];
									$thumb_width 	= $thumb_url_2[1];
									$thumb_height 	= $thumb_url_2[2];
									$inline_related_posts_img = '<amp-img src="'.esc_url( $thumb_url ).'" width="'.esc_attr($thumb_width).'" height="'.esc_attr($thumb_height).'" layout="responsive" ></amp-img>';
									if(!isset($thumb_url_2[0]) && is_null($thumb_url_2[0]) || wp_check_filetype(ampforwp_get_post_thumbnail('url') == 'svg')){
										$thumb_url = ampforwp_get_post_thumbnail('url');
										$inline_related_posts_img = '<amp-img src="'.esc_url( $thumb_url ).'" width="' . esc_attr(150) . '" height="' . esc_attr(150) . '" layout="responsive"></amp-img>';
									}
								}
								$inline_related_posts_img = apply_filters("ampforwp_modify_inline_rp_loop_image",$inline_related_posts_img);
								$inline_related_posts .= $inline_related_posts_img;
							} 
							$inline_related_posts .='</a>';
						}
						$inline_related_posts .='<div class="related_link">';
						$inline_related_posts .='<a href="'.esc_url( $related_post_permalink ).'">'.get_the_title().'</a>';
	                    if(ampforwp_get_setting('ampforwp-incontent-related-posts-excerpt')==1){
	                       if( has_excerpt() ){
	                       $content ='<p>'.get_the_excerpt().'</p>';
	                       }else{
	                       $content ='<p>'.get_the_content().'</p>';
	                       }
	                       $inline_related_posts .= '<p>'. wp_trim_words( strip_shortcodes( $content ) , 15 ).'</p>';
	                        }
            			   $inline_related_posts .= '</div>
       			 	</li>';									
					}					     
				$inline_related_posts .= '</ol>
						    </div>
						</div>';
					}
	      wp_reset_postdata();
	      return $inline_related_posts;
//related posts code ends here
}

add_action('pre_amp_render_post','ampforwp_add_inline_related_posts');
function ampforwp_add_inline_related_posts(){
	global $redux_builder_amp;
	if( isset($redux_builder_amp['ampforwp-inline-related-posts']) && $redux_builder_amp['ampforwp-inline-related-posts'] == 1 && is_single() && ampforwp_inline_related_posts() ){
		if( isset($redux_builder_amp['ampforwp-inline-related-posts-display-type']) && $redux_builder_amp['ampforwp-inline-related-posts-display-type']=='middle' ){
			add_filter('ampforwp_modify_the_content','ampforwp_generate_inline_related_posts');
		}else{
			add_filter('ampforwp_modify_the_content','ampforwp_generate_inline_related_posts_by_paragraph');
		}
		
	}
}
function ampforwp_generate_inline_related_posts($content){
	global $post;
		
	$break_point = '</p>';
	$content_parts = explode($break_point, $content);
	array_walk($content_parts, function(&$value, $key) {
		 	$value = trim($value);
			if( !empty($value) && (strpos($value, "<p>")!==false || strpos($value, "<blockquote>")!==false)){
			         $value .= '</p>';
			         $value .= '</blockquote>';
			}
		}
	);
	if(count($content_parts)>1){
		$no_of_parts = count($content_parts);
		$half_index = floor($no_of_parts / 2);
		$half_content = array_chunk($content_parts, $half_index);
		
		$html ='<div class="ampforwp-inline-related-post">'.ampforwp_inline_related_posts().'</div>';
		$half_content[0][] = $html;
		$final_content ='';
		foreach ($half_content as $key => $value) {
			$final_content .= implode("", $value);
		}
		$content = $final_content;
	}
	return $content;
}

function  ampforwp_generate_inline_related_posts_by_paragraph($content){
	global $redux_builder_amp;
	$total_count = '';
	$int_number_of_paragraphs = (integer) ampforwp_get_setting('ampforwp-related-posts-after-number-of-paragraphs'); 

	if(isset($int_number_of_paragraphs) && $int_number_of_paragraphs!=''){
		if($int_number_of_paragraphs == 0){
			$content = '<div class="ampforwp-inline-related-post">'.ampforwp_inline_related_posts().'</div>'.$content;
		}else{
			$total_count = explode("</p>", $content);
    		$total_count = count($total_count); // call count() only once, it's faster
    		if($total_count < $int_number_of_paragraphs){
    			$content = $content.'<div class="ampforwp-inline-related-post">'.ampforwp_inline_related_posts().'</div>';
    		}else{
    			$content = preg_replace_callback('#(<p>.*?</p>)#', 'ampforwp_add_related_post_after_paragraph', $content);
    		}
			
		}
	}else{
		$content = $content.'<div class="ampforwp-inline-related-post">'.ampforwp_inline_related_posts().'</div>';
	}
	
	return $content;
}

function ampforwp_add_related_post_after_paragraph($matches)
{
	global $redux_builder_amp;
	static $count = 0;
	$ret = '';
	$int_number_of_paragraphs = (integer) ampforwp_get_setting('ampforwp-related-posts-after-number-of-paragraphs');
	
  		$ret = $matches[1];

	  	if (++$count == $int_number_of_paragraphs){
	  		$ret .= '<div class="ampforwp-inline-related-post">'.ampforwp_inline_related_posts().'</div>';

	  	}
    
  return $ret;
}

// 85. Caption for Gallery Images
// Add extra key=>value pair into the attachment array
add_filter('amp_gallery_image_params','ampforwp_gallery_new_params', 10, 2);
function ampforwp_gallery_new_params($urls, $attachment_id ){
	$img_caption = $captext = '';
	$new_urls 	 = $caption = array();
	if(isset($urls['caption']) && $urls['caption'] ){
		$img_caption = $urls['caption'];
	}
	$captext = $img_caption;
	if($captext==""){
		$captext = get_post( $attachment_id)->post_excerpt;
	}
	if($captext){
		// Append only when caption is present
		$caption = array('caption'=>$captext);
		$new_urls = array_merge($urls,$caption);
		return $new_urls;
	}
	else{
		//If there's No caption
		return $urls;	
	}
}

if( !function_exists( 'ampforwp_carousel_class_magic' ) ){
	function ampforwp_carousel_class_magic($content){
		$content = str_replace(array(':openbrack:',':closebrack:'), array('[',']'), $content);
	return $content;
	}
}
// 86. minify the content of pages
// Moved to performance-functions.php

// 87. Post Thumbnail
// Checker for Post Thumbnail
if( !function_exists('ampforwp_has_post_thumbnail')){
	function ampforwp_has_post_thumbnail(){
		global $post, $redux_builder_amp;
		if(class_exists('Bunyad') && Bunyad::posts()->meta('featured_video') ){
 			return true;
		}elseif(function_exists('has_post_video') && has_post_video($post->ID)){
			return true;
		}elseif(has_post_thumbnail()){
			return true;
		}
		elseif(ampforwp_is_custom_field_featured_image() && ampforwp_cf_featured_image_src()){
			return true;
		}
		elseif(isset($redux_builder_amp['ampforwp-featured-image-from-content']) && $redux_builder_amp['ampforwp-featured-image-from-content'] == true){
			if( ampforwp_get_featured_image_from_content() || ampforwp_get_featured_image_from_content('url') ){				
				return true;
			}
		}
		else
			return false;
	}
}
// Get Post Thumbnail URL
if( !function_exists('ampforwp_get_post_thumbnail')){
	function ampforwp_get_post_thumbnail($param="", $size=""){
		global $post, $redux_builder_amp;
		$thumb_url 		= '';
		$thumb_width 	= '';
		$thumb_height 	= '';
		$output 		= '';
		if ( has_post_thumbnail()) {
			if( empty($size) ) {
				$size = 'medium';
			} 
			$thumb_id 			= get_post_thumbnail_id();
			$thumb_url_array 	= wp_get_attachment_image_src($thumb_id, $size , true);
			$thumb_url 			= $thumb_url_array[0];
			$thumb_width 		= $thumb_url_array[1];
			$thumb_height 		= $thumb_url_array[2];
			$thumb_alt = '';
			$thumb_alt = get_post_meta ( $thumb_id, '_wp_attachment_image_alt', true );
		}
		if(ampforwp_is_custom_field_featured_image() && ampforwp_cf_featured_image_src()){
			$thumb_url 		= ampforwp_cf_featured_image_src();
			$thumb_width 	= ampforwp_cf_featured_image_src('width');
			$thumb_height 	= ampforwp_cf_featured_image_src('height');
		}
		if( true == $redux_builder_amp['ampforwp-featured-image-from-content'] && ampforwp_get_featured_image_from_content('url') ){
			$thumb_url 		= ampforwp_get_featured_image_from_content('url', $size);
			$thumb_width 	= ampforwp_get_featured_image_from_content('width', $size);
			$thumb_height 	= ampforwp_get_featured_image_from_content('height', $size);
		}
		switch ($param) {
			case 'url':
				$output = $thumb_url;
				break;
			case 'width':
				$output = $thumb_width;
				break;
			case 'height':
				$output = $thumb_height;
				break;	
			case 'alt':
				$output = $thumb_alt;
				break;	
			default:
				$output = $thumb_url;
				break;
		}
		return $output;
	}	
}

// 88. Author Details
// Author Page URL
if( ! function_exists( 'ampforwp_get_author_page_url' ) ){
	function ampforwp_get_author_page_url(){
		global $redux_builder_amp, $post;
		$author_id = '';
		$author_page_url = '';
		$author_id = get_the_author_meta( 'ID' );
		$author_page_url = get_author_posts_url( $author_id );
		// If Archive support is enabled
		if(  isset($redux_builder_amp['ampforwp-archive-support'] ) && $redux_builder_amp['ampforwp-archive-support'] ){
    		$author_page_url = ampforwp_url_controller( $author_page_url  );
    	}
		return $author_page_url;
	}
}
// Author Meta
if( ! function_exists( 'ampforwp_get_author_details' ) ){
	function ampforwp_get_author_details( $post_author , $params='' ){
		global $redux_builder_amp, $post;
		$post_author_url = '';
		$post_author_name = '';
		$post_author_name = $post_author->display_name;
		$post_author_url = ampforwp_get_author_page_url();
		$and_text = '';
		$and_text = ampforwp_translation($redux_builder_amp['amp-translator-and-text'], 'and' );
		if ( function_exists('coauthors') ) { 
			$post_author_name = coauthors($and_text,$and_text,null,null,false);
		}
		if ( function_exists('coauthors_posts_links') ) {
			$post_author_url = coauthors_posts_links($and_text,$and_text,null,null,false);
		}
		switch ($params) {
			case 'meta-info':
				if( isset($redux_builder_amp['ampforwp-author-page-url']) && $redux_builder_amp['ampforwp-author-page-url'] ) {
					if ( function_exists('coauthors_posts_links') ) {
						return '<span class="amp-wp-author author vcard">'. $post_author_url .'</span>';
					}
					return	'<span class="amp-wp-author author vcard"><a href="'.esc_url($post_author_url).'"  title="'.esc_html( $post_author_name ).'" >'.esc_html( $post_author_name ).'</a></span>';
 				}
				else { 
					return '<span class="amp-wp-author author vcard">' .esc_html( $post_author_name ).'</span>';
				 } 
				break;

			case 'meta-taxonomy':
				if( isset($redux_builder_amp['ampforwp-author-page-url']) && $redux_builder_amp['ampforwp-author-page-url'] ) { 
					if ( function_exists('coauthors_posts_links') ) {
						return	$post_author_url;
					}
	                return	'<a href="' . esc_url($post_author_url) . ' "><strong>' . esc_html( $post_author_name ) . '</strong></a>: '; 
	                 }
                	else{ 
                		return '<strong> ' . esc_html( $post_author_name) . '</strong>: ';
                	}
				break;
		}
	}
}

// 89. Facebook Pixel
// Moved to analytics-functions.php

// 91. Comment Author Gravatar URL
if( ! function_exists('ampforwp_get_comments_gravatar') ){
	function ampforwp_get_comments_gravatar( $comment ) {
		global $redux_builder_amp;
		if(isset($redux_builder_amp['ampforwp-display-avatar']) && $redux_builder_amp['ampforwp-display-avatar']==0){
			return '';
		}
		if (class_exists('FV_Gravatar_Cache')) {
			$options = get_option('fv_gravatar_cache');
			$size = !empty($options['size']) ? $options['size'] : '96';
			$email_hash = md5(strtolower(trim($comment->comment_author_email)));
			$upload_dir = wp_upload_dir(); 
			$cache_dir = $upload_dir['basedir'] . '/fv-gravatar-cache/';
			$cache_url = $upload_dir['baseurl'] . '/fv-gravatar-cache/';

			
			$cached_avatar_path = $cache_dir . $email_hash . 'x' . $size . '.png';
			$default_avatar_url = $cache_url . 'mystery' . esc_html($size) . '.png';

			if (file_exists($cached_avatar_path)) {
				$avatar_url = $cache_url . $email_hash . 'x' . $size . '.png';
			} else {
				$avatar_url = $default_avatar_url;
			}
			return $avatar_url;
		}

		$gravatar_exists = ampforwp_gravatar_checker($comment->comment_author_email);
		if(class_exists('SimpleUserAvatar_Public')){
			 $id_or_email = strtolower(trim($comment->comment_author_email));
			$avatar = get_avatar_url($comment, apply_filters('ampforwp_get_comments_gravatar', '60'), '');
			$avatar  = ampforwp_simple_user_avatar_compatibility($avatar,$id_or_email);
			return $avatar;
		}
		if (null !== ampforwp_get_wp_user_avatar($comment, 'comment')) {
			return ampforwp_get_wp_user_avatar($comment, 'comment');
		} elseif ($gravatar_exists) {
			return get_avatar_url($comment, apply_filters('ampforwp_get_comments_gravatar', '60'), '');
		} else {
			return apply_filters('ampforwp_get_comments_gravatar', '');
		}
	}
}
function ampforwp_simple_user_avatar_compatibility($avatar,$id_or_email){
		$user = get_user_by('email', $id_or_email);
		$user_id = (int)$user->ID;
		$attachment_id = get_user_meta($user_id, SUA_USER_META_KEY, true);
		if (empty($attachment_id) || !is_numeric($attachment_id)) {
		  return $avatar;
		}
		$attachment_src = wp_get_attachment_image_src($attachment_id, 'medium');
		if ($attachment_src !== false && !empty($attachment_src)) {
		  $avatar = $attachment_src[0];
		}
		return $avatar;
}
// Gravatar Checker
if ( ! function_exists('ampforwp_gravatar_checker') ) {
	function ampforwp_gravatar_checker( $email ) {
		$uri = "";
		// Craft a potential url and test its headers
		$hash = md5(strtolower(trim($email)));
		$gravatar_server = 0;
		if ( $hash ) {
			$gravatar_server = hexdec( $hash[0] ) % 3;
		} else {
			$gravatar_server = wp_rand( 0, 2 );
		}
		if ( is_ssl() ) {
			$uri = 'https://secure.gravatar.com/avatar/' . $hash;
		} else {
			$uri = sprintf( 'http://%d.gravatar.com/avatar/%s', $gravatar_server, $hash );
		}
		if($uri){
		$response = wp_remote_get(esc_url_raw($uri));
 		$response_code = wp_remote_retrieve_response_code($response);
 		}
		//If its 404
		if ($response_code!=200) {
		 	$has_valid_avatar = FALSE;
		}else {
		 	$has_valid_avatar = TRUE;
	 	}
		return $has_valid_avatar;
	}
}
function ampfowp_add_extra_css(){
    echo '<style>
    #wp-admin-bar-ampforwp-view-amp a{
    background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjMxNHB4IiBoZWlnaHQ9IjMxNXB4IiB2aWV3Qm94PSIwIDAgMzE0IDMxNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNDEgKDM1MzI2KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5TaGFwZTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSIjODI4NzhjIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSIyNjA3MSIgZmlsbD0iIzgyODc4YyI+CiAgICAgICAgICAgIDxnIGlkPSJDYXBhXzEiPgogICAgICAgICAgICAgICAgPGcgaWQ9Il94MzJfNDAuX1Bvd2VyIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTU3LjAwNywwIEM3MC4yOTIsMCAwLDcwLjI5MiAwLDE1Ny4wMDcgQzAsMjQzLjcxNSA3MC4yOTIsMzE0LjAxNCAxNTcuMDA3LDMxNC4wMTQgQzI0My43MTYsMzE0LjAxNCAzMTQuMDE0LDI0My43MTUgMzE0LjAxNCwxNTcuMDA3IEMzMTQuMDE0LDcwLjI5MiAyNDMuNzE2LDAgMTU3LjAwNywwIFogTTE1Ny4wMDcsMjgyLjYxMiBDODcuNjM0LDI4Mi42MTIgMzEuNDAyLDIyNi4zNzIgMzEuNDAyLDE1Ny4wMDcgQzMxLjQwMiw4Ny42MzQgODcuNjM0LDMxLjQwMiAxNTcuMDA3LDMxLjQwMiBDMjI2LjM3MSwzMS40MDIgMjgyLjYxMSw4Ny42MzQgMjgyLjYxMSwxNTcuMDA3IEMyODIuNjEyLDIyNi4zNzIgMjI2LjM3MiwyODIuNjEyIDE1Ny4wMDcsMjgyLjYxMiBaIE0yMDQuMTExLDE0MS4zNjggTDE2My40NzksMTQxLjUzMyBDMTU5LjEzOSwxNDEuNTUzIDE1Ny41NDQsMTM4LjYyMyAxNTkuOTA1LDEzNC45NzkgTDIwMy4zOTcsNjguMTA5IEMyMDguMTI2LDYwLjg0MSAyMDYuOTg0LDU5LjkyMiAyMDAuODYxLDY2LjA1MyBMMTA1LjMwNSwxNjEuNiBDOTkuMTcyLDE2Ny43MzIgMTAxLjIzMiwxNzIuNjc2IDEwOS45MDYsMTcyLjY0MSBMMTQyLjY3OSwxNzIuNTA4IEMxNTEuMzQ3LDE3Mi40NzIgMTU0LjU1MiwxNzguMzM1IDE0OS44MjQsMTg1LjYwNSBMMTA2LjMzNCwyNTIuNDc3IEMxMDMuOTcyLDI1Ni4xMTIgMTA0LjU0MiwyNTYuNTgxIDEwNy42MiwyNTMuNTI3IEwxNzUuOTE1LDE4NS43MTcgQzE3OC45ODgsMTgyLjY1OSAxODMuOTUsMTc3LjY4NiAxODYuOTgzLDE3NC41OTYgTDIwOC43ODgsMTUyLjQ4NSBDMjE0Ljg3NSwxNDYuMzE3IDIxMi43NzUsMTQxLjMzIDIwNC4xMTEsMTQxLjM2OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) !important;
    background-size: 18px !important;
    background-repeat: no-repeat !important;
 		background-position: 4px 7px !important;
 		text-indent: -99999px;
 		width: 12px;
}</style>';
}
if ( is_user_logged_in() ) {
	add_action('wp_head', 'ampfowp_add_extra_css');
}	
// 92. View AMP in Admin Bar
add_action( 'wp_before_admin_bar_render', 'ampforwp_view_amp_admin_bar' ); 
if( ! function_exists( 'ampforwp_view_amp_admin_bar' ) ) {
	function ampforwp_view_amp_admin_bar( ) {
		global $wp_admin_bar, $post, $wp_post_types, $redux_builder_amp;
		$post_type_title = $current_url = '';
		$supported_amp_post_types = array();
		
		// Get all post types supported by AMP
		$supported_amp_post_types = ampforwp_get_all_post_types();
		$current_access = false;
		// Check for Admin
		if ( is_admin() ) {
			$current_screen = get_current_screen();
			$current_access = ('post' == $current_screen->base && 'add' != $current_screen->action);
		}elseif(is_user_logged_in()){
			$current_user = wp_get_current_user();
			$current_access = current_user_can('edit_posts',$current_user );
		}
			// Check for Screen base, user ability to read and visibility
			if ($current_access && (isset($post->ID) && $post->ID && current_user_can('read_post', $post->ID ))
				&& ( isset ( $wp_post_types[ $post->post_type ]->public ) && $wp_post_types[$post->post_type]->public )
				&& ( isset ( $wp_post_types[ $post->post_type ]->show_in_admin_bar ) && $wp_post_types[$post->post_type]->show_in_admin_bar ) ) {
				// Check if current post type is AMPed or not
				if( $supported_amp_post_types && in_array($post->post_type, $supported_amp_post_types) ){
					// If AMP on Posts or Pages is off then do nothing
					if($post->post_type == 'post' && !ampforwp_get_setting('amp-on-off-for-all-posts') || $post->post_type == 'page' && !ampforwp_get_setting('amp-on-off-for-all-pages')) {
						return;
					}
					if( is_archive() && is_category() ){
						if(!ampforwp_get_setting('ampforwp-archive-support') || !ampforwp_get_setting('ampforwp-archive-support-cat') ){
							return ;
						}
					}elseif( is_archive() && is_tag() ){
						if(!ampforwp_get_setting('ampforwp-archive-support') || !ampforwp_get_setting('ampforwp-archive-support-tag') ){
							return ;
						}
					}elseif( is_archive() && is_tax()){
						$taxonomies = ampforwp_get_setting('ampforwp-custom-taxonomies');
						if(empty($taxonomies)){
							return ;
						}else{
							$term_id = get_queried_object()->term_id;
							$termObj = get_term( $term_id);
							if( in_array($termObj->taxonomy, $taxonomies)){
							}else{
								return ;
							}
						}
					}

					if( is_archive() && is_category()){
						$term_id = get_queried_object()->term_id;
						$termObj = get_term( $term_id);
						$taxonomy_objects = get_object_taxonomies( 'post', 'objects' );
						$post_type_title = $taxonomy_objects[$termObj->taxonomy]->labels->singular_name;
						if(ampforwp_get_setting('ampforwp-archive-support') == true && ampforwp_get_setting('ampforwp-archive-support-cat') == true){
							$current_url = get_term_link($term_id);
						}
					}elseif( is_archive() && is_tag()){
						$term_id = get_queried_object()->term_id;
						$termObj = get_term( $term_id);
						$taxonomy_objects = get_object_taxonomies( 'post', 'objects' );
						$post_type_title = $taxonomy_objects[$termObj->taxonomy]->labels->singular_name;
						if(ampforwp_get_setting('ampforwp-archive-support') == true && ampforwp_get_setting('ampforwp-archive-support-tag') == true){
							$current_url = get_term_link($term_id);
						}
					}elseif(is_archive() && is_tax()){
						$term_id = get_queried_object()->term_id;
						$termObj = get_term( $term_id);
						$taxonomy_objects = get_taxonomy( $termObj->taxonomy );
						$post_type_title = $taxonomy_objects->labels->singular_name;
						$current_url = get_term_link($term_id);
					}else{
						$post_type_title = ucfirst($post->post_type);
						$current_url = get_permalink( $post->ID );
						if(is_home()){
							$current_url = home_url();
						}
					}
					 if (is_preview()) {
						$current_url = $current_url .'&amp=1&preview=true';
						$wp_admin_bar->add_node(array(
						'id'    => 'ampforwp-view-amp',
						'title' => 'View ' . esc_html($post_type_title) . ' (AMP)' ,
						'href'  => esc_url($current_url)
						));
					}else{
						$wp_admin_bar->add_node(array(
						'id'    => 'ampforwp-view-amp',
						'title' => 'View ' . esc_html($post_type_title) . ' (AMP)' ,
						'href'  => ampforwp_url_controller($current_url)
					));
					}
				}
		}
	}
}

// 94. OneSignal Push Notifications
// Moved to push-notification-functions.php

// 95. Modify menu link attributes for SiteNavigationElement Schema Markup #1229 #1345
add_filter( 'nav_menu_link_attributes', 'ampforwp_nav_menu_link_attributes', 10, 3 );
if( ! function_exists( 'ampforwp_nav_menu_link_attributes' ) ) {
	function ampforwp_nav_menu_link_attributes( $atts, $item, $args ) {
		if ( function_exists('ampforwp_is_amp_endpoint') && ampforwp_is_amp_endpoint() ) {
	    // Manipulate link attributes
	    	$atts['itemprop'] = "url";
	    }
	    return $atts;
	}
}

// 96. ampforwp_is_front_page() ampforwp_is_home() and ampforwp_is_blog is created
// Moved to functions.php

// 97. Change the format of the post date on Loops #1384
add_filter('ampforwp_modify_post_date', 'ampforwp_full_post_date_loops');
if( ! function_exists( 'ampforwp_full_post_date_loops' ) ){
	function ampforwp_full_post_date_loops($full_date){
	global $redux_builder_amp;
	if( is_home() || is_archive() ){
		if( 2 == $redux_builder_amp['ampforwp-post-date-format'] ){	
			$full_date =  get_the_date();
			if( 2 == $redux_builder_amp['ampforwp-post-date-global'] ){
				$full_date =  get_the_modified_date();
			}
		}
		if( 1 == $redux_builder_amp['ampforwp-post-date-format'] ){
			$time = ampforwp_get_the_time();
			$date = human_time_diff( $time, current_time('timestamp') );
			if( $redux_builder_amp['ampforwp-post-date-format-text'] ){
				$full_date = $redux_builder_amp['ampforwp-post-date-format-text'];
				// Change the % days into the actual number of days
				$full_date = str_replace('% days', $date, $full_date);
				$full_date = str_replace('ago', ampforwp_translation( $redux_builder_amp['amp-translator-ago-date-text'],'ago'), $full_date);
			}
		}
	}
	if(is_single() && 1 == $redux_builder_amp['ampforwp-post-date-format']){
		$time = ampforwp_get_the_time();
		$date 		= human_time_diff( $time, current_time('timestamp') );
		$full_date 	= human_time_diff( $time, current_time('timestamp') ) .' '. ampforwp_translation( $redux_builder_amp['amp-translator-ago-date-text'],'ago');
		if( $redux_builder_amp['ampforwp-post-date-format-text'] ){
			$full_date = $redux_builder_amp['ampforwp-post-date-format-text'];
			// Change the % days into the actual number of days
			$full_date = str_replace('% days', $date, $full_date);
			$full_date = str_replace('ago', ampforwp_translation( $redux_builder_amp['amp-translator-ago-date-text'],'ago'), $full_date);
		}
	}
	return $full_date;
	}
}
if(!function_exists('ampforwp_get_the_time')){
	function ampforwp_get_the_time(){
		$time = get_the_time('U', get_the_ID());
		if( 2 == ampforwp_get_setting('ampforwp-post-date-global') ){
			$time = get_the_modified_time('U', get_the_ID() );
		}
		if(defined('ECWD_VERSION')){
			global $ecwd_options;
			$tz = $ecwd_options['time_zone'];
			$ewwetz = new DateTime( get_the_time('c', get_the_ID()) );
			if( 2 == ampforwp_get_setting('ampforwp-post-date-global') ){
				$ewwetz = new DateTime( get_the_modified_time('c', get_the_ID()) );
			}
			$ewwetz->setTimezone(new DateTimeZone($tz));
			$time = $ewwetz->format('U');
		}
		return $time;
    }
}
// 99. Merriweather Font Management
add_filter( 'amp_post_template_data', 'ampforwp_merriweather_font_management' );
function ampforwp_merriweather_font_management( $data ) {
	if ( 1 != ampforwp_get_setting('amp-design-selector') || ( false == ampforwp_get_setting('ampforwp-d1-font') && 1 == ampforwp_get_setting('amp-design-selector') ) ) {
		unset($data['font_urls']['merriweather']);
	}
	return $data;
}

// 100. Flags compatibility in Menu
add_filter('ampforwp_menu_content','ampforwp_modify_menu_content');
if( ! function_exists(' ampforwp_modify_menu_content ') ){
	function ampforwp_modify_menu_content($menu){
		
		// Return $menu If tagDiv Composer plugin is active 
		if(function_exists('tdc_error_handler')){
			return $menu;
		}
		
		$dom 		= '';
		$nodes 		= '';
		$num_nodes 	= '';
		if( !empty( $menu ) && preg_match('/<img\s+[^>]*src\s*=\s*"[^"]*"[^>]*>/i', $menu)){
			// Create a new document
			$dom = new DOMDocument();
			if( function_exists( 'mb_convert_encoding' ) ){
				$menu = @mb_convert_encoding($menu, 'HTML-ENTITIES', 'UTF-8');			
			}
			else{
				$menu =  preg_replace( '/&[^amp|#038].*?;/', 'x', $menu ); // multi-byte characters converted to X
			}

			// To Suppress Warnings
			libxml_use_internal_errors(true);

			$dom->loadHTML($menu);

			libxml_use_internal_errors(false);

			// get all the img's
			$nodes 		= $dom->getElementsByTagName( 'img' );
			$num_nodes 	= $nodes->length;
			for ( $i = $num_nodes - 1; $i >= 0; $i-- ) {
				$node 	= $nodes->item( $i );
				// Set The Width and Height if there in none
				if ( '' === $node->getAttribute( 'width' ) ) {
					$node->setAttribute('width', 15);
				}
				if( '' === $node->getAttribute( 'height' ) ){
					$node->setAttribute('height', 15);
				}
			}
			$menu = $dom->saveHTML();
		}
		return $menu;
	}
}
/*
 * Fetches the logo data 
 * More details about the fix https://github.com/ahmedkaludi/accelerated-mobile-pages/pull/2317
 * Props to: https://github.com/saucal for suggesting the fix.
*/

function ampforwp_default_logo_data() {
	global $redux_builder_amp, $ampwforwp_default_logo_data;

	if( $ampwforwp_default_logo_data ) {
		return $ampwforwp_default_logo_data;
	}

	$logo_id		= '';
	$image 			= array();
	$value 			= '';
	$logo_alt		= '';

	$logo_id = get_theme_mod( 'custom_logo' );
	if(isset($redux_builder_amp['opt-media']['id']) && empty( $logo_id ) ) {
		$logo_id = (integer) $redux_builder_amp['opt-media']['id'];
	}

	if( empty( $logo_id ) ) {
		return false;
	}

	if( ! wp_attachment_is( 'image', $logo_id ) || ampforwp_get_setting('opt-media','url') ) {
		$logo_url = ampforwp_get_setting('opt-media','url');
		$image[0] = ampforwp_get_setting('opt-media','width');
		$image[1] = ampforwp_get_setting('opt-media','height');
		if(empty($image)){
			$image = @getimagesize( $logo_url );
		}
		if ( empty($image[0]) || empty($image[1]) ) {
			$image[0] = '190';
			$image[1] = '36';
		}
	} else {
		$imageDetail = wp_get_attachment_image_src( $logo_id , 'full');
		$logo_url = $imageDetail[0];
		$image[0] = $imageDetail[1];
		$image[1] = $imageDetail[2];
		if ( 0 === $image[1] ) {
			$image[0] = '190';
			$image[1] = '36';
		}
	}

	$logo_alt = get_post_meta( $logo_id, '_wp_attachment_image_alt', true);

	$ampwforwp_default_logo_data = array(
		'logo_id' => $logo_id,
		'logo_url' => $logo_url,
		'logo_alt' => $logo_alt,
		'logo_size' => $image
	);
	return $ampwforwp_default_logo_data;
}

// 101. Function for Logo attributes
function ampforwp_default_logo($param=""){
	global $redux_builder_amp;
	$value 		= '';
	$data 		= ampforwp_default_logo_data();
	if( ! $data ) {
		if($param!="width" && $param!="height"){
			return $value;
		}
	}

	switch ($param) {
		case 'url':
				$value = $data['logo_url'];
			break;
		case 'width':
			if (true == ampforwp_get_setting('ampforwp-custom-logo-dimensions') && 'prescribed' ==ampforwp_get_setting('ampforwp-custom-logo-dimensions-options')) {
				$value = trim(ampforwp_get_setting('opt-media-width'));
				if($value==""){
					$value = 190;
				}
			}
			else 
				$value = '';
				if(isset($data['logo_size'][0])){
					$value = $data['logo_size'][0];
				}
			if($value==""){
					$value = 190;
				}
			break;
		case 'height':
			if (true == ampforwp_get_setting('ampforwp-custom-logo-dimensions') && 'prescribed' == ampforwp_get_setting('ampforwp-custom-logo-dimensions-options')) {
				$value = trim(ampforwp_get_setting('opt-media-height'));
				if($value==""){
					$value = 36;
				}
			}
			else
				$value = '';
				if(isset($data['logo_size'][1])){
					$value = $data['logo_size'][1];
				}
				if($value==""){
					$value = 36;
				}
			break;
		case 'alt':
			if(isset($data['logo_alt'][0])){
				$value = $data['logo_alt'];
			}
			else
				$value = get_bloginfo('name');
			break;	
		default:
			$value = $data['logo_url'];
			break;
	}

	return $value;
} 
// Envira Lazy Load compatibility
add_filter('envira_gallery_pre_data', 'ampforwp_envira_lazy_load');
if( ! function_exists(' ampforwp_envira_lazy_load ') ){
	function ampforwp_envira_lazy_load($data){
	if( function_exists('ampforwp_is_amp_endpoint') && ampforwp_is_amp_endpoint() ){
		if(function_exists('envira_get_config')){
			$checker = envira_get_config( 'lazy_loading', $data);
			if( 1 === $checker){
				$data['config']['lazy_loading'] = 0;
			}
		}
	}	
	return $data;
	}
}	

#1581 Instagram Sanitizer 

add_filter( 'amp_content_sanitizers', 'ampforwp_instagram_sanitizer', 10, 1 );

function ampforwp_instagram_sanitizer( $sanitizer_classes ) {
  require_once( AMPFORWP_PLUGIN_DIR. 'classes/class-ampforwp-instagram-sanitizer.php' );
  $sanitizer_classes[ 'AMPFORWP_Instagram_Embed_Sanitizer' ] = array(); 
  return $sanitizer_classes;
}

// Allowed Tags
if ( ! function_exists('ampforwp_allowed_tags') ) {
	function ampforwp_allowed_tags() {
		$allowed_tags = '';
		$allowed_tags = wp_kses_allowed_html('post');
		$allowed_tags['a']['itemprop'] = true;
      	$allowed_tags['span']['itemprop'] = true;

      	return $allowed_tags;
	}
}

// List of Subpages/Childpages on Pages
add_action('ampforwp_after_post_content', 'ampforwp_list_subpages');
if ( ! function_exists('ampforwp_list_subpages') ) {
	function ampforwp_list_subpages() {
		if (class_exists('AddWidgetAfterContent')) {
			$sanitized_output = '';
			$sanitized_output = ampforwp_sidebar_content_sanitizer('add-widget-after-content');
			if ( $sanitized_output) {
				$sanitized_output = $sanitized_output->get_amp_content();?>
				<div class="amp-add-widget-after-content">
					<?php echo do_shortcode($sanitized_output); ?> 
				</div>
			<?php }
		}
		global $post, $redux_builder_amp;
		if ( is_page() && true == $redux_builder_amp['ampforwp_subpages_list'] ) {
			$pages = '';
			$pages = wp_list_pages( array( 
							'echo' => 0,
							'child_of' => $post->ID,
							'title_li' => '', 
			) );
			$pages = preg_replace('/href="(.*?)"/', 'href="$1/amp/"', $pages);
			echo wp_kses($pages, ampforwp_allowed_tags());
		}
	}
}

// Disable wptextturize #1458
add_action('init','ampforwp_wptexturize_disabler');
if ( ! function_exists('ampforwp_wptexturize_disabler') ) {
	function ampforwp_wptexturize_disabler(){
		global $redux_builder_amp;
		if ( isset($redux_builder_amp['ampforwp-wptexturize']) && true == $redux_builder_amp['ampforwp-wptexturize'] ) {
			remove_filter('the_content', 'wptexturize');
			remove_filter('the_title', 'wptexturize');
		}
	}
}

// amp-vimeo proper video id for 3 parameter url
add_filter('amp_vimeo_parse_url','amp_vimeo_parse_url_video_id');
function amp_vimeo_parse_url_video_id($tok){
	  if (in_array("ondemand", $tok) && sizeof($tok)==3){		 
		$tok = '';
		return $tok;
	  }
	  if(sizeof($tok)==3){
       return $tok[1];
      }else{
        return end($tok);
      }
}

// Cart Page URL
if( ! function_exists( 'ampforwp_wc_cart_page_url' ) ){
	function ampforwp_wc_cart_page_url(){
		if(function_exists('amp_woocommerce_pro_add_woocommerce_support') && (function_exists('wc_get_cart_url') || function_exists('get_cart_url'))){
		    global $woocommerce;
		    $cart_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : $woocommerce->cart->get_cart_url();
		    $cart_url = ampforwp_url_controller($cart_url);
		    return $cart_url;
	 	}
	 	else
	 		return '#'; 
	}
}

// Add Google Font support
add_action('amp_post_template_css', 'ampforwp_google_fonts_generator');
if ( ! function_exists( 'ampforwp_google_fonts_generator' ) ) {
  function ampforwp_google_fonts_generator() {
    global $redux_builder_amp;
    if( 1!=ampforwp_get_setting('ampforwp-google-font-switch') || true == ampforwp_get_setting('amp_google_font_restrict')){
    	return;
    }	
	if(isset($redux_builder_amp['google_current_font_data'])){
		$font_data = json_decode(stripslashes($redux_builder_amp['google_current_font_data']));
	}

    $font_weight = "";
    $font_output = "";
    $font_type = "";
    if(isset( $redux_builder_amp['amp_font_type'])){
    	$font_type = $redux_builder_amp['amp_font_type'];
    }

    if ( $font_type && ampforwp_get_setting('amp_font_selector') != 'Segoe UI') {
	    foreach ($font_type as $key => $value) {
			// Font Weight generator
			$font_weight = (int) $value;
			$font_weight =  ( $font_weight != 0 ? $font_weight : 400 );

			// Font Stlye Generator
			$font_style = preg_replace('/\d+/u', '', $value);
			$font_style = ( $font_style == 'italic' ? 'italic' : 'normal' );

			// Local Generator
			// Font Weight 
			$font_local_weight = '';

			if ( $font_weight === 100 ) {
				$font_local_weight = 'Thin';
			}

			if ( $font_weight === 200 ) {
				$font_local_weight = 'Ultra Light';
			}

			if ( $font_weight === 300 ) {
				$font_local_weight = 'Light';
			}

			if ( $font_weight === 400 ) {
				$font_local_weight = 'Regular';
			}

			if ( $font_weight === 500 ) {
				$font_local_weight = 'Medium';
			}

			if ( $font_weight === 600 ) {
				$font_local_weight = 'SemiBold';
			}

			if ( $font_weight === 700 ) {
				$font_local_weight = 'Bold';
			}

			if ( $font_weight === 800 ) {
				$font_local_weight = 'ExtraBold';
			}

			if ( $font_weight === 900 ) {
				$font_local_weight = 'Black';
			}

	      	// Font Style 
	     	$font_local_type = '';
	      	if ('italic' === $font_style) {
	        	$font_local_type = 'Italic';
	      	}

	        $font_output .= "@font-face {  ";
	        $font_output .= "font-family: " . $redux_builder_amp['amp_font_selector']. ';' ;
	        $font_output .= "font-display: optional;";
	        $font_output .= "font-style: " . $font_style . ';';
	        $font_output .= "font-weight: " . $font_weight . ';' ;
	        $font_output .= "src: local('". $redux_builder_amp['amp_font_selector']." ".$font_local_weight." ".$font_local_type."'), local('". $redux_builder_amp['amp_font_selector']."-".$font_local_weight.$font_local_type."'), url(" .str_replace("http://", "https://", $font_data->files->$value) . ');' ;
	        $font_output .= "}";
	    }
    }

    //for Single content Font Family
    if(ampforwp_get_setting('content-font-family-enable') && (is_singular() || (ampforwp_get_setting('amp-design-selector')!=4) ) ){
    	if(ampforwp_get_setting('google_current_font_data_content_single')){
			$font_data = json_decode(stripslashes(ampforwp_get_setting('google_current_font_data_content_single')));
		}
    	$font_output .= "\n";
	    if( ampforwp_get_setting('amp_font_type_content_single') ){
	    	$font_type = ampforwp_get_setting('amp_font_type_content_single');
	    }
	    if ( $font_type && ampforwp_get_setting('amp_font_selector_content_single') != 'Segoe UI') {
		    foreach ($font_type as $key => $value) {
				// Font Weight generator
				$font_weight = (int) $value;
				$font_weight =  ( $font_weight != 0 ? $font_weight : 400 );
				// Font Stlye Generator
				$font_style = preg_replace('/\d+/u', '', $value);
				$font_style = ( $font_style == 'italic' ? 'italic' : 'normal' );
				// Local Generator
				// Font Weight 
				$font_local_weight = '';
				if ( $font_weight === 100 ) {
					$font_local_weight = 'Thin';
				}
				if ( $font_weight === 200 ) {
					$font_local_weight = 'Ultra Light';
				}
				if ( $font_weight === 300 ) {
					$font_local_weight = 'Light';
				}
				if ( $font_weight === 400 ) {
					$font_local_weight = 'Regular';
				}
				if ( $font_weight === 500 ) {
					$font_local_weight = 'Medium';
				}
				if ( $font_weight === 600 ) {
					$font_local_weight = 'SemiBold';
				}
				if ( $font_weight === 700 ) {
					$font_local_weight = 'Bold';
				}
				if ( $font_weight === 800 ) {
					$font_local_weight = 'ExtraBold';
				}
				if ( $font_weight === 900 ) {
					$font_local_weight = 'Black';
				}
		      	// Font Style 
		     	$font_local_type = '';
		      	if ('italic' === $font_style) {
		        	$font_local_type = 'Italic';
		      	}
		        $font_output .= "@font-face {  ";
		        $font_output .= "font-family: " . esc_attr(ampforwp_get_setting('amp_font_selector_content_single')). ';' ;
		        if (ampforwp_get_setting('ampforwp_font_display') == 'optional') {
		        	$font_output .= "font-display: optional".';';
		        }else{
		        	$font_output .= "font-display: swap".';';
		        }
		        $font_output .= "font-style: " . esc_attr($font_style) . ';';
		        $font_output .= "font-weight: " . esc_attr($font_weight) . ';' ;
		        $font_output .= "src: local('". esc_attr(ampforwp_get_setting('amp_font_selector_content_single'))." ".esc_attr($font_local_weight)." ".esc_attr($font_local_type)."'), local('". esc_attr(ampforwp_get_setting('amp_font_selector_content_single'))."-".esc_attr($font_local_weight).$font_local_type."'), url(" .esc_url(str_replace("http://", "https://", $font_data->files->$value)) . ');' ;
		        $font_output .= "}";
		    }
	    }
	}
//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
    echo $font_output; // escaped above
  }
}

function swifttheme_footer_widgets_init() {
	register_sidebar( array(
	        'name' => esc_html__( 'AMP Widget Below Header', 'accelerated-mobile-pages' ),
	        'id' => 'ampforwp-below-header',
	        'description' => esc_html__( 'This Widget will be display on Below Header area', 'accelerated-mobile-pages' ),
	        'class'=>'w-bl',
	        'before_widget' => '<div class="w-bl">',
	        'after_widget' => '</div>',
	        'before_title' => '<h4>',
	        'after_title' => '</h4>',
	    ) );
	register_sidebar( array(
	        'name' => esc_html__( 'AMP Widget Above Loop', 'accelerated-mobile-pages' ),
	        'id' => 'ampforwp-above-loop',
	        'description' => esc_html__( 'This Widget will be display on Above Loop area', 'accelerated-mobile-pages' ),
	        'class'=>'w-bl',
	        'before_widget' => '<div class="w-bl">',
	        'after_widget' => '</div>',
	        'before_title' => '<h4>',
	        'after_title' => '</h4>',
	    ) );
	register_sidebar( array(
	        'name' => esc_html__( 'AMP Widget Below loop', 'accelerated-mobile-pages' ),
	        'id' => 'ampforwp-below-loop',
	        'description' => esc_html__( 'This Widget will be display on Below loop area', 'accelerated-mobile-pages' ),
	        'class'=>'w-bl',
	        'before_widget' => '<div class="w-bl">',
	        'after_widget' => '</div>',
	        'before_title' => '<h4>',
	        'after_title' => '</h4>',
	    ) );
	register_sidebar( array(
	        'name' => esc_html__( 'AMP Widget Above Footer', 'accelerated-mobile-pages' ),
	        'id' => 'ampforwp-above-footer',
	        'description' => esc_html__( 'This Widget will be display on Above Footer area', 'accelerated-mobile-pages' ),
	        'class'=>'w-bl',
	        'before_widget' => '<div class="w-bl">',
	        'after_widget' => '</div>',
	        'before_title' => '<h4>',
	        'after_title' => '</h4>',
	    ) );
 	if(ampforwp_design_selector()==4 || ampforwp_design_selector()==3 || ampforwp_design_selector()==2 || ampforwp_design_selector()==1){
	    register_sidebar( array(
	        'name' => esc_html__( 'AMP Footer', 'accelerated-mobile-pages' ),
	        'id' => 'swift-footer-widget-area',
	        'description' => esc_html__( 'The Footer widget area', 'accelerated-mobile-pages' ),
	        'class'=>'w-bl',
	        'before_widget' => '<div class="w-bl">',
	        'after_widget' => '</div>',
	        'before_title' => '<h4>',
	        'after_title' => '</h4>',
	    ) );
	    if(true == ampforwp_get_setting('gnrl-sidebar')){
	    register_sidebar( array(
	        'name' => esc_html__( 'AMP Sidebar', 'accelerated-mobile-pages' ),
	        'id' => 'swift-sidebar',
	        'description' => esc_html__( 'The Swift Sidebar', 'accelerated-mobile-pages' ),
	        'class'=>'amp-sidebar',
	        'before_widget' => '<div class="amp-sidebar">',
	        'after_widget' => '</div>',
	        'before_title' => '<h4>',
	        'after_title' => '</h4>',
	    ) );
	    }
	}
}
add_action( 'init', 'swifttheme_footer_widgets_init' );

// AMP Takeover
function ampforwp_is_non_amp( $type="" ) {
	global $redux_builder_amp;
	$non_amp = false;
	$ampforwp_amp_post_on_off_meta = $post_id = '';
	$post_id = get_the_ID();
	if ( ampforwp_is_front_page() ) {
		$post_id = ampforwp_get_frontpage_id();
	}
	if ( false !== get_query_var( 'amp', false ) ) {
		return false;
	}
	$mob_pres_link = ampforwp_mobile_redirect_preseve_link();
	if (""===$type  && (ampforwp_get_setting('ampforwp-amp-takeover') || $mob_pres_link == true) ) {
		$non_amp = true;

		
		// Check for Posts
		if ( is_single() && false == ampforwp_get_setting('amp-on-off-for-all-posts') ) {
			return false;
		}
		// Archives
		if ( is_archive() && false == ampforwp_get_setting('ampforwp-archive-support') ) {
			return false;
		}
		// Pages
		if ( is_page() && false == ampforwp_get_setting('amp-on-off-for-all-pages') ) {
			return false;
		}
		//Blogpage
		$page_for_posts = intval(get_option( 'page_for_posts' ));
		if ( $page_for_posts == ampforwp_get_the_ID() ) {
			return true;
		}
		// Homepage
		if ( is_home() && false == ampforwp_get_setting('ampforwp-homepage-on-off-support') ) {
			return false;
		}
		// Search #2681
		if ( is_search() && ( (4 == ampforwp_get_setting('amp-design-selector') && false == ampforwp_get_setting('amp-swift-search-feature') )  ) ){
			return false;
		}
		//Removed AMP Takeover when custom 404 Page is selected in enfold theme #4723
		if ( function_exists('avia_preload_screen') && !empty(avia_get_option('error404_page')) && is_404() ) {
			return false;
		}
		// Enabling AMP Takeover only when selected in Custom Post Type
		$supported_types_for_takeover = array();
	    $supported_types_for_takeover = ampforwp_get_all_post_types();
	    if( $supported_types_for_takeover ){
	            $current_type = get_post_type(get_the_ID());
	            if( $current_type==false){
	            	$non_amp = true;
	            }else{
		            if(!in_array($current_type, $supported_types_for_takeover) && !is_404() && !is_search()){ 
		              return ;
		            }
		        }
	    }
		if ( is_front_page() && false == ampforwp_get_setting('ampforwp-homepage-on-off-support') ) {
			return false;
		}
		if ( is_feed() ) {
			return false;
		}
		if(get_query_var( 'robots' )){
      		return; 
    	}
    	if ( function_exists('is_embed') && is_embed() ){
            return;
        }
		if(is_search() && 0 == ampforwp_get_setting('amp-redirection-search')){
		    return false;
		}
	}elseif(	(
				ampforwp_get_setting('amp-design-selector') == 4)
				&&
				(
			 true == ampforwp_get_setting('ampforwp-amp-convert-to-wp') 
				) 
				|| 
				(
					'non_amp_check_convert' === $type
					&& true == ampforwp_get_setting('ampforwp-amp-convert-to-wp') 
				) ) {
		$non_amp = true;

	}
	// Convert AMP to WP issues fixed #2493
	//Blogposts
	if ( is_home()  && ampforwp_get_setting('ampforwp-homepage-on-off-support') == false ) {
      return;
    }
    // Pages
    
	if ( is_page() && false == ampforwp_get_setting('amp-on-off-for-all-pages') ) {
		return;
	}
	if ( is_singular() || ampforwp_is_front_page() || ampforwp_is_blog() ) {
		$ampforwp_amp_post_on_off_meta = get_post_meta( $post_id,'ampforwp-amp-on-off',true);
		if($ampforwp_amp_post_on_off_meta == 'hide-amp'){
			return false;	
		}
	}
// Removing the AMP on login register etc of Theme My Login plugin	
    
	if (function_exists('tml_register_default_actions')){
        $tml_pages = tml_get_actions();
        $pages = array();
        if ( isset($tml_pages) && $tml_pages ) {
          foreach ($tml_pages as $page) {
            $pages[] = $page->get_slug();
          }
      }
      if(in_array(get_query_var('action'), $pages) ){
        return false;
      }
   }
	return $non_amp;
}
function ampforwp_mobile_redirect_preseve_link(){
	$redirectToAMP = false;
	if(ampforwp_get_setting('amp-mobile-redirection') == true && ampforwp_get_setting('amp-mob-redirection-pres-link') == true){
		require_once AMPFORWP_PLUGIN_DIR.'/includes/vendor/Mobile_Detect.php';
		$mobile_detect = new AMPforWP_Mobile_Detect;
	    $isMobile = $mobile_detect->isMobile();
	    $isTablet = $mobile_detect->isTablet();
	    $isTabletUserAction = ampforwp_get_setting('amp-tablet-redirection');
	    if( $isMobile && $isTabletUserAction && $isTablet ){ //Only For tablet
	      $redirectToAMP = true;
	    }else if($isMobile && !$isTablet){ // Only for mobile
	      $redirectToAMP = true;
	    }
	}
	return $redirectToAMP;
}
// Remove wpautop from specific posts which contain amp-components
add_action('pre_amp_render_post','ampforwp_custom_wpautop');
function ampforwp_custom_wpautop(){
	if ( is_single() ) {
		if ( get_post_meta(get_the_ID(), 'ampforwp-wpautop', true) == 'false') {
			remove_filter('the_content', 'wpautop');
		}
	}
	if(function_exists('ubermenu_get_nav_menu_args')){
    	add_filter( 'ubermenu_nav_menu_args' ,'ampforwp_modify_ubermenu_nav_menu_args' , 10,2);
    }
}
function ampforwp_modify_ubermenu_nav_menu_args($args , $config_id){
	$args['menu_class'] = 'amp-menu  '.$args['menu_class'];
    return $args;
}
// Backward Compatibility for AMP Preview #1529
if ( ! function_exists('get_preview_post_link') ) { 
function get_preview_post_link( $post = null, $query_args = array(), $preview_link = '' ) {
	$post = get_post( $post );
	if ( ! $post ) {
		return;
	}

	$post_type_object = get_post_type_object( $post->post_type );
	if ( is_post_type_viewable( $post_type_object ) ) {
		if ( ! $preview_link ) {
			$preview_link = set_url_scheme( get_permalink( $post ) );
		}

		$query_args['preview'] = 'true';
		$preview_link = add_query_arg( $query_args, $preview_link );
	}
	return apply_filters( 'preview_post_link', $preview_link, $post );
}
}

// Homepage Loop Modifier #1701
add_filter('ampforwp_query_args','ampforwp_homepage_loop');
function ampforwp_homepage_loop( $args ) {
	global $redux_builder_amp;
	if ( is_home() ) {
		$post_type = 'post';
		// Check if Custom Post Type is selected
		if ('' != ampforwp_get_setting('ampforwp-homepage-loop-type') ) {
			$post_type = ampforwp_get_setting('ampforwp-homepage-loop-type');
		}
		$args['post_type'] = $post_type;
		// Exclude Categories if any selected
		if ('' != ampforwp_get_setting('ampforwp-homepage-loop-cats') ) {
			$args['category__not_in'] = ampforwp_get_setting('ampforwp-homepage-loop-cats');
		}
	}
	if(function_exists('ampforwp_is_home') && ampforwp_is_home() && isset($redux_builder_amp['amp-no-of-posts-home-page'])){
		$args['posts_per_page'] = $redux_builder_amp['amp-no-of-posts-home-page'];
	}
	if(function_exists('is_category') && is_category() && isset($redux_builder_amp['amp-no-of-posts-cat-page'])){
		$args['posts_per_archive_page'] = $redux_builder_amp['amp-no-of-posts-cat-page'];
	}
	return $args; 
}

//To modify number of posts #5503
add_filter( 'pre_get_posts', 'ampforwp_modify_no_of_posts' );
function ampforwp_modify_no_of_posts( $query ) {
	global $redux_builder_amp;
	$amp_q_ck = is_object($query) ? $query->query : '';
	if(isset($amp_q_ck['amp']) && $amp_q_ck['amp'] == 1){
		if(function_exists('ampforwp_is_home') && ampforwp_is_home() && isset($redux_builder_amp['amp-no-of-posts-home-page'])){
	  	$query->set( 'posts_per_page', $redux_builder_amp['amp-no-of-posts-home-page']);
		}
		if(function_exists('is_category') && is_category() && isset($redux_builder_amp['amp-no-of-posts-cat-page'])){
	  	$query->set( 'posts_per_page', $redux_builder_amp['amp-no-of-posts-cat-page']);
		}
	}
}

// To get correct comments count #1662
add_filter('get_comments_number', 'ampforwp_comment_count', 0);
function ampforwp_comment_count( $count ) {
	
	/* TODO: Allowed memory size exhausted #1865	 
		get_comments() was trying to access by Id and because the ID is not present on amp frontpages. It is getting exhausted. Need to recreate issue and validate the hypothesis
	*/

	if ( ! is_admin() && function_exists('ampforwp_is_amp_endpoint') && ampforwp_is_amp_endpoint() && is_single() ) {
		global $id;
		$get_comments = get_comments('status=approve&post_id=' . $id); 	 
 		$comments_by_type = separate_comments($get_comments); 
		return count($comments_by_type['comment']);
	} 
	else {
		return $count;
	}
}
// Glue underline css compatibility #1743 #1932
add_action('amp_post_template_css', 'ampforwp_glue_css_comp', PHP_INT_MAX );
if ( ! function_exists('ampforwp_glue_css_comp') ) {
	function ampforwp_glue_css_comp() {
		global $redux_builder_amp; 
		if (class_exists('YoastSEO_AMP_Frontend') ) { ?>
			a {text-decoration:none;}
			html {background:none;}
		<?php }
		 if ( isset($redux_builder_amp['ampforwp-underline-content-links']) && $redux_builder_amp['ampforwp-underline-content-links'] ) { ?>
			.the_content a {text-decoration:underline;}
		<?php }
	}
}

// Filter for Frontpage id
add_filter('ampforwp_modify_frontpage_id', 'ampforwp_modified_frontpage_id');
if( ! function_exists('ampforwp_modified_frontpage_id') ) {
	function ampforwp_modified_frontpage_id($page_id){
		include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
		// WPML Compatibility #1111
	 	if( is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' )){
		 	$page_id = get_option('page_on_front');	
	 	}
	 	// Polylang Compatibility #1779
	 	elseif( ampforwp_polylang_front_page() ){
	 		$frontpage_id = get_option('page_on_front');
	 		if($frontpage_id){
		 		$page_id = pll_get_post($frontpage_id);
		 	}	
	 	}
	 return $page_id;
	}
}

// AMP to WP Theme Ads
add_filter('ampforwp_modify_ads', 'ampforwp_nonamp_ads',10, 5);
if ( ! function_exists('ampforwp_nonamp_ads') ) {
	function ampforwp_nonamp_ads($output, $width, $height, $client_id, $data_slot) {
		if ( ampforwp_is_non_amp('non_amp_check_convert') ) {
			/* phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript */
			$output = '	<div class="add-wrapper" style="text-align:center;"><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
							</script>
							<ins class="adsbygoogle" style="display:inline-block;width:'.esc_attr($width).';height:'.esc_attr($height).'" data-ad-client="'.esc_attr($client_id).'" data-ad-slot="'.esc_attr($data_slot).'">
							</ins>
							<script>
								(adsbygoogle = window.adsbygoogle || []).push({});
							</script>
						</div>';
		}
	return $output;
	}
}
//AMP to WP Theme Analytics
add_action('wp_footer','ampforwp_nonamp_analytics');
if ( ! function_exists('ampforwp_nonamp_analytics') ) {
	function ampforwp_nonamp_analytics() {
		global $redux_builder_amp;
		$ga_account = $redux_builder_amp['ga-feild'];
		if ( ampforwp_is_non_amp("non_amp_check_convert") ) {
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo "	
		<script>
		(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
		(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
		m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
		})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

		ga('create', '$ga_account', 'auto');
		ga('send', 'pageview');
		</script>";
		}
	}
}
// Coauthors Compatibility #1895
add_filter('coauthors_posts_link', 'ampforwp_coauthors_links');
function ampforwp_coauthors_links($args){
	global $redux_builder_amp;
	if ( function_exists('ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() && true == $redux_builder_amp['ampforwp-archive-support']) {
		$args['href'] = ampforwp_url_controller($args['href']);
	}
	return $args;
}

//remove anchor from the image when lightbox option is enabled #2695
add_action('pre_amp_render_post','ampforwp_remove_ahref_lightbox');
function ampforwp_remove_ahref_lightbox(){	
	if(true == ampforwp_get_setting('ampforwp-amp-img-lightbox') ){
		add_filter( 'the_content', 'ampforwp_remove_ahref_lightbox_in_amp' );
		add_filter('tablepress_table_render_data','amforwp_remove_tp_image_href');
	}
}
function ampforwp_remove_ahref_lightbox_in_amp( $content ) {
	/* phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage */
	preg_match_all('/(<a(.*?)href=\"(.*?)\"(.*?)>(.*?)<img(.*?)src=\"(.*?)\"(.*?)(.*?)[^>]*>)/', $content, $matches);
	if( count($matches[3])){
		for( $i=0;$i<count($matches[3]);$i++){
			$href_url = $matches[3][$i];
			if (!empty($href_url)) {
				$href_url = explode('/', $href_url);
				$href_url = end($href_url);
				$href_url = pathinfo($href_url, PATHINFO_FILENAME);
			}
			if($matches[3][$i] == $matches[7][$i] || (!empty($href_url) && strpos($matches[7][$i], $href_url) !== false)){
				$href = $matches[3][$i];
				$src = $matches[7][$i];
				$href_src = str_replace( '/', '\/', esc_url($href));
				$image_src = str_replace( '/', '\/', esc_url($src));
				/* phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage */
				$content = preg_replace('/<a(.*?)href=\"'.$href_src.'\"(.*?)>(<img(.*?)src=\"'.$image_src.'\"(.*?)[^>]*>)<\/a>/i', '$3', $content);	

			}
		}
	}
	return $content;
}
function amforwp_remove_tp_image_href( $orig_table){
	$tablepressData = array();
	$j = 0;
	foreach ($orig_table['data'] as $cols) {
		for($i=0;$i< count($cols);$i++){
			$tablepressData[$j][$i] = preg_replace("/<a[^>]+\>(<img[^>]+\>)<\/a>/i",'$1', $cols[$i]);
		}
		$j++;	
	}
	$orig_table['data'] = $tablepressData;
	return $orig_table;
}
// amp-image-lightbox #1892
if ( ! function_exists('ampforwp_amp_img_lightbox') ) {
	function ampforwp_amp_img_lightbox(){ 
		echo '<amp-image-lightbox id="amp-img-lightbox" layout="nodisplay"></amp-image-lightbox>';
	}
}
// New Image attributes for amp-image-lightbox #1892
add_filter('amp_img_attributes', 'ampforwp_img_new_attrs');
function ampforwp_img_new_attrs($attributes) {
	global $redux_builder_amp;
	if ( ampforwp_get_setting('ampforwp-amp-img-lightbox') ) {	
		$attributes['on'] = 'tap:amp-img-lightbox';
		$attributes['role'] = 'button';
		$attributes['tabindex'] = '0';
	}
	return $attributes;
}
// Facebook Comments script for AMP2WP
add_action('ampforwp_body_beginning', 'ampforwp_amp2wp_fb');
if ( ! function_exists('ampforwp_amp2wp_fb') ) {
	function ampforwp_amp2wp_fb(){
		global $redux_builder_amp;
		if( ampforwp_is_non_amp() && isset($redux_builder_amp['ampforwp-amp-convert-to-wp']) && $redux_builder_amp['ampforwp-amp-convert-to-wp'] && ($redux_builder_amp['ampforwp-facebook-comments-support'] || $redux_builder_amp['ampforwp-facebook-like-button']) ) {
			echo '<div id="fb-root"></div>
					<script>(function(d, s, id) {
		  				var js, fjs = d.getElementsByTagName(s)[0];
		  				if (d.getElementById(id)) return;
		  				js = d.createElement(s); js.id = id;
		  				js.src = "https://connect.facebook.net/en_GB/sdk.js#xfbml=1&version=v2.12";
		  				fjs.parentNode.insertBefore(js, fjs);
					}(document, "script", "facebook-jssdk"));</script>';
		}
	}
}

// Removing AMPHTML Added by Facebook's Instant Article's Plugin #2043
add_action( 'wp', 'ampforwp_remove_instant_articles_amp_markup' );
function ampforwp_remove_instant_articles_amp_markup(){
	
	if(class_exists('Instant_Articles_AMP_Markup')){
		remove_action( 'wp_head', array('Instant_Articles_AMP_Markup', 'inject_link_rel') );
	}
	// #1696
	  if(function_exists('ampforwp_is_amp_endpoint') && ampforwp_is_amp_endpoint()){
	    if(class_exists('SQ_Classes_ObjController')){
		    $SQ_Classes_ObjController = new SQ_Classes_ObjController();
		    $sq_analytics_class_obj = $SQ_Classes_ObjController::getClass('SQ_Models_Services_Analytics');
		}
	  }
}
// #2042 
function ampforwp_404_canonical(){
	global $wp;
	return home_url( $wp->request );
}
// #2001 removing unused JS from the Paginated Posts
add_filter('ampforwp_post_content_filter', 'ampforwp_paginated_post_content');

function ampforwp_paginated_post_content($content){
	global $numpages;
	if(is_singular()){
		if ( get_query_var( 'paged' ) ) {
			$paged = get_query_var('paged');
		} elseif ( get_query_var( 'page' ) ) {
		  	$paged = get_query_var('page');
		} else {
		  	$paged = 1;
		}
	    if( $numpages >= 2 && true == ampforwp_get_setting('amp-pagination') ){
	      	return get_the_content();
	    }
	}

    return $content;
}

// GDPR Compliancy #2040
// Moved to notice-bar-functions.php

// Thrive Leads Compatibility #2067
add_filter('thrive_leads_skip_request', 'ampforwp_skip_thrive_leads');
if ( ! function_exists('ampforwp_skip_thrive_leads') ) {
	function ampforwp_skip_thrive_leads($skip) {
		// Skip thrive leads on AMP
		if ( function_exists('ampforwp_is_amp_endpoint') && ampforwp_is_amp_endpoint() ) {
			return true;
		}

		return $skip;
	}
}

// Re-save permalink once the post value changed in Redading Settings #2190

add_action( 'update_option', 'ampforwp_resave_permalink', 10, 3 );
function ampforwp_resave_permalink( $option, $old_value, $value ){
 	if('posts_per_page' === $option){
 		if($old_value != $value){
 			delete_transient( 'ampforwp_current_version_check' );
 		}
 	}
}

// Canonical From Yoast #2118 and All in One SEO #1720 and Rank Math #2701
function ampforwp_generate_canonical(){
	global $redux_builder_amp;
	$canonical = '';
	$canonical = $WPSEO_Frontend = $All_in_One_SEO_Pack = $opts = '';
	if ( 'yoast' == ampforwp_get_setting('ampforwp-seo-selection') && true == ampforwp_get_setting('ampforwp-seo-yoast-canonical') && class_exists('WPSEO_Frontend') && !class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration')) {
		$WPSEO_Frontend = WPSEO_Frontend::get_instance();
		$canonical = $WPSEO_Frontend->canonical(false);
	}
	elseif ( 'aioseo' == ampforwp_get_setting('ampforwp-seo-selection') && true == ampforwp_get_setting('ampforwp-seo-aioseo-canonical') && class_exists('All_in_One_SEO_Pack') ) {
		$All_in_One_SEO_Pack = new All_in_One_SEO_Pack();
		$opts = $All_in_One_SEO_Pack->get_current_options( array(), 'aiosp' );
		$canonical = $opts['aiosp_custom_link'];
	}
	elseif ( defined( 'RANK_MATH_FILE' ) && 'rank_math' == ampforwp_get_setting('ampforwp-seo-selection') && ampforwp_get_setting( 'ampforwp-seo-rank_math-canonical' ) ) {
		$canonical = \RankMath\Paper\Paper::get()->get_canonical();
	}
	return $canonical;
}
add_filter('amp_post_template_data', 'ampforwp_modified_canonical', 85);
function ampforwp_modified_canonical( $data ) {
	$canonical = '';
	$canonical = ampforwp_generate_canonical();
	if ( !empty($canonical) ) {
		$data['canonical_url'] = $canonical;
	}
	return $data;
}
if(class_exists('WPSEO_Frontend') && 'yoast' == ampforwp_get_setting('ampforwp-seo-selection') && true == ampforwp_get_setting('ampforwp-seo-yoast-canonical') && !class_exists('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration') ){
	add_filter('ampforwp_modify_rel_url','ampforwp_yoast_canonical');
}
function ampforwp_yoast_canonical($canonical){
	if(ampforwp_is_front_page()){
		$canonical = ampforwp_generate_canonical();
	}
	return $canonical;
}
// #2220 Remove Space Shortcode by Pro Theme from THEMCO
add_action('pre_amp_render_post','ampforwp_remove_space_shortcodes');
function ampforwp_remove_space_shortcodes(){
	add_filter('the_content','ampforwp_remove_pro_theme_space_shortcodes');
}

function ampforwp_remove_pro_theme_space_shortcodes($content){
	if(has_shortcode( $content, 'gap' )){
		remove_shortcode( 'gap' );
		// to remove the useless shortcode from the AMP Content
		add_shortcode( 'gap', 'ampforwp_return_no_gap' );
	}
	return $content;
}

function ampforwp_return_no_gap(){
	return;
}

/*
	#2229 Function to check the option for comments to display on post, page or both.
 */
function ampforwp_get_comments_status(){
	global $redux_builder_amp;
	$display_comments_on = "";
	if ( false == ampforwp_get_setting('ampforwp-display-on-pages') && true == ampforwp_get_setting('ampforwp-display-on-posts')  ) {
		$display_comments_on =  is_single();
	}
	if ( true == ampforwp_get_setting('ampforwp-display-on-pages') && false == ampforwp_get_setting('ampforwp-display-on-posts') ) {
		$display_comments_on =  is_page();
	}
	if ( true == ampforwp_get_setting('ampforwp-display-on-pages') && true == ampforwp_get_setting('ampforwp-display-on-posts')) {
		$display_comments_on =  is_singular();
		if ( ampforwp_is_front_page() ) {
			$display_comments_on =  ampforwp_is_front_page();
		}
	}
	$display_comments_on = apply_filters('ampforwp_comments_visibility', $display_comments_on);
	//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	return $display_comments_on;
}

// Vuukle Comments Support #2075

add_action('ampforwp_post_after_design_elements','ampforwp_vuukle_comments_support');
function ampforwp_vuukle_comments_support() {
	global $redux_builder_amp;
	if ( true == ampforwp_get_setting('ampforwp-vuukle-comments-support') && comments_open() && ampforwp_get_setting('amp-design-selector') != 4) {
		/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
		echo ampforwp_vuukle_comments_markup();
	}
}
function ampforwp_vuukle_comments_markup() {
	global $redux_builder_amp,$post;
	$apiKey = $locale = '';
	$tag_name ='';
	$img = get_the_post_thumbnail_url();
	$tags = get_the_tags($post->ID);
	if( isset($redux_builder_amp['ampforwp-vuukle-comments-apiKey']) && $redux_builder_amp['ampforwp-vuukle-comments-apiKey'] !== ""){
		$apiKey = $redux_builder_amp['ampforwp-vuukle-comments-apiKey'];
	}
	$display_comments_on = false;
	$display_comments_on = ampforwp_get_comments_status();
	$siteUrl = trim(site_url(), '/');  
	if (!preg_match('#^http(s)?://#', $siteUrl)) {
	    $siteUrl = 'http://' . $siteUrl;
	}
	if($img ==  false){
		$img = plugins_url('accelerated-mobile-pages/images/150x150.png');
	}  
   	if($tags){
  		foreach($tags as $individual_tag) {
 				$tag_name = $individual_tag->name;
			}
   	}
	$urlParts = parse_url($siteUrl);
	$siteUrl = preg_replace('/^www\./', '', $urlParts['host']);// remove www
	$srcUrl = 'https://cdn.vuukle.com/amp.html?';
	$srcUrl = add_query_arg('url' ,get_permalink(), $srcUrl);
	$srcUrl = add_query_arg('host' ,$siteUrl, $srcUrl);
	$srcUrl = add_query_arg('id' , $post->ID, $srcUrl);
	if(!empty($apiKey)){
		$srcUrl = add_query_arg('apiKey' , $apiKey, $srcUrl);
	}  
	$srcUrl = add_query_arg('title' , urlencode($post->post_title), $srcUrl);
	$srcUrl = add_query_arg('img' , esc_url($img), $srcUrl);
	$srcUrl = add_query_arg('tags' , urlencode($tag_name), $srcUrl);  
	if(ampforwp_get_setting('ampforwp-vuukle-comments-emoji')==false){
		$srcUrl = add_query_arg('emotes' , 'false', $srcUrl);
	}
	$consent = '';
	if(ampforwp_get_data_consent()){
		$consent = 'data-block-on-consent ';
	}
	$vuukle_html ='';
	if ( $display_comments_on ) {
		$vuukle_html .= '<amp-iframe width="600" height="350" '.esc_attr($consent).'layout="responsive" sandbox="allow-scripts allow-same-origin allow-modals allow-popups allow-forms" resizable frameborder="0" src="'.esc_url($srcUrl).'">

			<div overflow tabindex="0" role="button" aria-label="Show comments" class="afwp-vuukle-support">Show comments</div></amp-iframe>';
	}
	return $vuukle_html;
}
add_filter( 'amp_post_template_data', 'ampforwp_add_vuukle_scripts' );
function ampforwp_add_vuukle_scripts( $data ) {
	global $redux_builder_amp;
	$display_comments_on = "";
	$display_comments_on = ampforwp_get_comments_status();
	if ( ampforwp_get_setting('ampforwp-vuukle-comments-support') && $display_comments_on) {
			if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
				$data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
			}
			if (ampforwp_get_setting('ampforwp-vuukle-Ads-before-comments') && empty( $data['amp_component_scripts']['amp-ad'] ) ) {
				$data['amp_component_scripts']['amp-ad'] = 'https://cdn.ampproject.org/v0/amp-ad-0.1.js';
			}
	}
	return $data;
}
//spotim #2076
add_action('ampforwp_post_after_design_elements','ampforwp_spotim_comments_support');
function ampforwp_spotim_comments_support() {
	global $redux_builder_amp;
	if ( 4 != $redux_builder_amp['amp-design-selector']
		 && isset($redux_builder_amp['ampforwp-spotim-comments-support'])
		 && $redux_builder_amp['ampforwp-spotim-comments-support']==1
		) {
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo ampforwp_spotim_comments_markup();
	}
}
function ampforwp_spotim_comments_markup() {
	global $post;
	$display_comments_on = false;
	$display_comments_on = ampforwp_get_comments_status();
	if (! $display_comments_on ) {
		return '';
	}
	$spotId ='';
	if( true == ampforwp_get_setting('ampforwp-spotim-comments-apiKey') && ampforwp_get_setting('ampforwp-spotim-comments-apiKey') !== ""){
		$spotId = ampforwp_get_setting('ampforwp-spotim-comments-apiKey');
	}
	$srcUrl = 'https://amp.spot.im/production.html?spot_im_highlight_immediate=true';
	$srcUrl = add_query_arg('spotId' ,$spotId, $srcUrl);
	$srcUrl = add_query_arg('postId' , $post->ID, $srcUrl);
	$spotim_html = '<amp-iframe width="375" height="815" resizable sandbox="allow-scripts allow-same-origin allow-popups allow-top-navigation" layout="responsive"
	  frameborder="0" src="'.esc_url($srcUrl).'">
	  <amp-img placeholder height="815" layout="fill" src="//amp.spot.im/loader.png"></amp-img>
	  <div overflow class="spot-im-amp-overflow" tabindex="0" role="button" aria-label="Read more">Load more...</div>
	</amp-iframe>';
	return $spotim_html;
}
//spotim script
add_filter( 'amp_post_template_data', 'ampforwp_add_spotim_scripts' );
function ampforwp_add_spotim_scripts( $data ) {
	global $redux_builder_amp;
	$display_comments_on = "";
	$display_comments_on = ampforwp_get_comments_status();
	if ( isset($redux_builder_amp['amp-design-selector']) && 4 != $redux_builder_amp['amp-design-selector']
		 && isset($redux_builder_amp['ampforwp-spotim-comments-support'])
		 && $redux_builder_amp['ampforwp-spotim-comments-support']
		 && $display_comments_on  && comments_open() 
		) {
			if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
				$data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
			}
	}
	return $data;
}
//spotim css
add_action('amp_post_template_css','ampforwp_spotim_vuukle_styling',60);
function ampforwp_spotim_vuukle_styling(){
	global $redux_builder_amp;
	$display_comments_on = "";
	$display_comments_on = ampforwp_get_comments_status();
	if ( isset($redux_builder_amp['ampforwp-spotim-comments-support'])
	 	&& $redux_builder_amp['ampforwp-spotim-comments-support']
	 	&& $display_comments_on  && comments_open() ) {
		?>.spot-im-amp-overflow {
	    background: white;
	    font-size: 15px;
	    padding: 15px 0;
	    text-align: center;
	    font-family: Helvetica, Arial, sans-serif;
	    color: #307fe2;
	  }<?php
	}
	if ( isset($redux_builder_amp['ampforwp-vuukle-comments-support'])
	 	&& $redux_builder_amp['ampforwp-vuukle-comments-support']
	 	&& $display_comments_on  && comments_open() ) { ?>
		.afwp-vuukle-support{
			display: block;text-align: center;background: #1f87e5;color: #fff;border-radius: 4px;
		} <?php 
	}
	?>
	<?php

}


function ampforwp_check_excerpt(){
	global $redux_builder_amp;
 
	$value = '';
	$value =  ( isset( $redux_builder_amp['excerpt-option'] ) &&  $redux_builder_amp['excerpt-option'] ) ;
	if ( null === $value ) {
		$value = '1';
	}
 
	return $value;
}

// Back to top 
add_action( 'ampforwp_body_beginning' ,'ampforwp_back_to_top_markup');
function ampforwp_back_to_top_markup(){
	if(true == ampforwp_get_setting('ampforwp-footer-top')){
		echo '<div id="backtotop"></div>';
	}
}

// rel="next" & rel="prev" pagination meta tags #2343
add_action( 'amp_post_template_head', 'ampforwp_rel_next_prev' );	

function ampforwp_rel_next_prev(){
    global $paged;
    if(ampforwp_is_front_page()){
    	return ;
    }
    if ( get_previous_posts_link() ) { ?>
        <link rel="prev" href="<?php echo esc_url(get_pagenum_link( $paged - 1 )); ?>" /><?php
    }
    if ( get_next_posts_link() ) { ?>
        <link rel="next" href="<?php echo esc_url(get_pagenum_link( $paged + 1 )); ?>" /><?php
    }
}

// Content Sneak Peek #2246
add_action('pre_amp_render_post', 'ampforwp_content_sneak_peek');
if ( ! function_exists('ampforwp_content_sneak_peek') ) {
	function ampforwp_content_sneak_peek() {
		global $redux_builder_amp;
		if ( ampforwp_get_setting('content-sneak-peek') && is_single() && 'post' == get_post_type() ) {		
			add_filter('ampforwp_modify_the_content', 'ampforwp_sneak_peek_content_modifier');
			add_action('amp_post_template_css','ampforwp_sneak_peek_css');
			add_filter('ampforwp_post_template_data','ampforwp_sneak_peek_scripts');
		}

	}
}
// Content Sneak Peek content
function ampforwp_sneak_peek_content_modifier($content){
	
	if ( strlen($content) >= 3000 ) {
		$content = '<div class="fd-h" data-amp-bind-class="contentVisible ? \'show\' : \'fd-h\'">' . $content . '</div>';
		$content = $content . '<div id="fader" class="content-fader" data-amp-bind-class="contentVisible ? \'content-fader hide\' : \'content-fader\'"></div>';
		$content = $content . '<div class="fd-b-c" data-amp-bind-class="contentVisible ? \'fd-b-c hide\' : \'fd-b-c\'"><button class="fd-b" data-amp-bind-text="contentVisible ? \'\' : \''.ampforwp_translation(ampforwp_get_setting('content-sneak-peek-btn-text'), 'Show Full Article').'\'" on="tap:AMP.setState({contentVisible: !contentVisible})">'.ampforwp_translation(ampforwp_get_setting('content-sneak-peek-btn-text'), 'Show Full Article').'</button></div>';
	}
	return $content;
}
// Content Sneak Peek Scripts css
function ampforwp_sneak_peek_css(){
	global $redux_builder_amp;
	$height = $txt_color = $btn_color = '';
	$height = ampforwp_get_setting('content-sneak-peek-height');
	$btn_color = $redux_builder_amp['content-sneak-peek-btn-color']['color'];
	$txt_color = $redux_builder_amp['content-sneak-peek-txt-color']['color'];?>
	.fd-h{height: <?php echo esc_attr($height); ?>;overflow: hidden;position: relative;}
    .fd-b-c{text-align: center;margin: 0px 0px 30px 0px;}
    .fd-b-c .fd-b:hover{cursor:pointer;}
    .fd-b-c .fd-b {border:none;border-radius: 5px;color: <?php 
	//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	echo ampforwp_sanitize_color($txt_color); ?>;font-size: 16px;font-weight: 700;padding: 12px 32px 12px 32px;background-color: <?php 
	//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	echo ampforwp_sanitize_color($btn_color); ?>;
    }
    .fd-h:after {
	    content: "";
	    display: inline-block;
	    position: absolute;
	    background: linear-gradient(to bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);
	    width:100%;
	    bottom: 0;
	    top:auto;
	    height:230px;
	}
<?php }
// Content Sneak Peek Scripts
function ampforwp_sneak_peek_scripts($data) {
	if ( empty( $data['amp_component_scripts']['amp-bind'] ) ) {
		$data['amp_component_scripts']['amp-bind'] = 'https://cdn.ampproject.org/v0/amp-bind-0.1.js';
	}
	return $data;
}

// #1575 Thrive Content Support
add_action('amp_init','ampforwp_thrive_architect_content');
function ampforwp_thrive_architect_content(){
	if(function_exists('tve_wp_action') && !function_exists('et_setup_theme')){
		if(checkAMPforPageBuilderStatus(ampforwp_get_the_ID())){
			add_filter( 'ampforwp_modify_the_content','ampforwp_thrive_content');
		}
	}
	$url_path = parse_url(add_query_arg(array()), PHP_URL_PATH);
	if($url_path=="" || $url_path==null){
		$url_path = $url_path.'/';
	}
	$url_path = trim($url_path,'/' );
    if ( function_exists( 'ampforwp_is_amp_inURL' ) && ampforwp_is_amp_inURL($url_path)  ) {
		//#3254 Remove action for Woodmart theme lazyload feature 
		remove_action( 'init', 'woodmart_lazy_loading_init', 120 );
	}
}


function ampforwp_thrive_content($content){
	$post_id = "";
	if ( ampforwp_is_front_page() ){
		$post_id = ampforwp_get_frontpage_id();
		$content = get_post_field( 'post_content', $post_id ); 
	}

	$sanitizer_obj = new AMPFORWP_Content( $content,
									array(), 
									apply_filters( 'ampforwp_content_sanitizers', 
										array( 'AMP_Img_Sanitizer' => array(), 
											'AMP_Blacklist_Sanitizer' => array(),
											'AMP_Style_Sanitizer' => array(), 
											'AMP_Video_Sanitizer' => array(),
					 						'AMP_Audio_Sanitizer' => array(),
					 						'AMP_Iframe_Sanitizer' => array(
												 'add_placeholder' => true,
											 ),
										) 
									) 
								);
				$content =  $sanitizer_obj->get_amp_content();
	return $content;
}
// Instant Articles Meta Box
add_action( 'add_meta_boxes', 'ampforwp_ia_meta_box' );
if ( ! function_exists('ampforwp_ia_meta_box') ) {
	function ampforwp_ia_meta_box() {
		global $post;
	    
		    if( ampforwp_get_setting('fb-instant-article-switch') && $post->post_type == 'post' ) {
		    	add_meta_box( 'ampforwp_ia_meta', esc_html__( 'Show Instant Article for Current Post?','accelerated-mobile-pages' ), 'ampforwp_ia_meta_callback', 'post','side' );      
		    }
    }
}
// Callback function for Instant Articles Meta Box.
function ampforwp_ia_meta_callback( $post ) {
	global $redux_builder_amp;
    wp_nonce_field( basename( __FILE__ ), 'ampforwp_ia_nonce' );
    $ampforwp_stored_meta = get_post_meta( ampforwp_get_the_ID() );
	if ( ! empty($ampforwp_stored_meta['ampforwp-ia-on-off']) && ! empty($ampforwp_stored_meta['ampforwp-ia-on-off'][0]) && $ampforwp_stored_meta['ampforwp-ia-on-off'][0] == 'hide-ia') {
		$exclude_post_value = get_option('ampforwp_ia_exclude_post');
		if ( $exclude_post_value == null ) {
			$exclude_post_value[] = 0;
		}
		if ( $exclude_post_value ) {
			if ( ! in_array( ampforwp_get_the_ID(), $exclude_post_value ) ) {
				$exclude_post_value[] = ampforwp_get_the_ID();
				update_option('ampforwp_ia_exclude_post', $exclude_post_value, false);
			}
		}
	} else {
		$exclude_post_value = get_option('ampforwp_ia_exclude_post');
		if ( $exclude_post_value == null ) {
			$exclude_post_value[] = 0;
		}
		if ( $exclude_post_value ) {
			if ( in_array( ampforwp_get_the_ID(), $exclude_post_value ) ) {
				$exclude_ids = array_diff($exclude_post_value, array(ampforwp_get_the_ID()) );
				update_option('ampforwp_ia_exclude_post', $exclude_ids, false);
			}
		}

	} 
	$ampforwp_current_ia_value='hide-ia';
	if(ampforwp_role_based_access_options()==true){
		$ampforwp_current_ia_value='default';	
	}
	if ( ! empty($ampforwp_stored_meta['ampforwp-ia-on-off']) && ! empty($ampforwp_stored_meta['ampforwp-ia-on-off'][0])){
		$ampforwp_current_ia_value= $ampforwp_stored_meta['ampforwp-ia-on-off'][0];
	}
	?>
    <p>
        <div class="prfx-row-content">
            <label class="meta-radio-two" for="ampforwp-ia-on-off-meta-radio-one">
                <input type="radio" name="ampforwp-ia-on-off" id="ampforwp-ia-on-off-meta-radio-one" value="default"   <?php checked( $ampforwp_current_ia_value, 'default' ); ?>>
                <?php esc_html_e( 'Enable', 'accelerated-mobile-pages' )?>
            </label>
            <label class="meta-radio-two" for="ampforwp-ia-on-off-meta-radio-two">
                <input type="radio" name="ampforwp-ia-on-off" id="ampforwp-ia-on-off-meta-radio-two" value="hide-ia"  <?php checked( $ampforwp_current_ia_value, 'hide-ia' ); ?>>
                <?php esc_html_e( 'Disable', 'accelerated-mobile-pages' )?>
            </label> 
        </div>
    </p>
<?php }

// Total Plus compatibility #2511
add_action('current_screen', 'ampforwp_totalplus_comp_admin');
function ampforwp_totalplus_comp_admin() {
	$screen = get_current_screen();
	if ( 'toplevel_page_amp_options' == $screen->base ) {
		remove_action('admin_enqueue_scripts', 'total_plus_admin_scripts', 100);
		// Save option is not showing with a basix theme #3366
		if(function_exists('addPanelCSS')){
			remove_action( 'admin_enqueue_scripts', 'addPanelCSS');
		}
	}
}
// uploading the images with SVG format #2431
function ampforwp_upload_svg($file_types){
$new_filetypes = array();
$new_filetypes['svg'] = 'image/svg+xml';
$file_types = array_merge($file_types, $new_filetypes );
return $file_types;
}
add_action('upload_mimes', 'ampforwp_upload_svg');

// Ajax functions
add_action( 'wp_ajax_ampforwp_categories', 'ampforwp_ajax_cats' );
function ampforwp_ajax_cats(){
	$return = array();
	/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
	if( isset( $_GET[ 'security' ] ) && isset($_GET[ 'security' ]['security']) && wp_verify_nonce($_GET[ 'security' ]['security'],'ampforwp-verify-request') ){
		/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
		$categories = get_categories(array('search'=> esc_html($_GET['q']),'number'=>500,'hide_empty' => 0));
		$categories_array = array();
		if ( $categories ) :
			foreach ($categories as $cat ) {
					$return[] = array($cat->cat_ID,$cat->name);// array( Cat ID, Cat Name )
			}
		endif;
	}
	wp_send_json( $return );
}
add_action( 'wp_ajax_ampforwp_tags', 'ampforwp_ajax_tags' );
function ampforwp_ajax_tags(){
	$return = array();
	/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
	if( isset( $_GET[ 'security' ] ) && isset($_GET[ 'security' ]['security']) && wp_verify_nonce($_GET[ 'security' ]['security'],'ampforwp-verify-request') ){
		/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
		$tags = get_tags(array('search'=> esc_html($_GET['q']),'number'=>500));
		if ( $tags ) :
			foreach ($tags as $tag ) {
					$return[] = array($tag->term_id,$tag->name);// array( Tag ID, tag Name )
			}
		endif;
	}
	wp_send_json( $return );
} 
add_filter( 'amp_post_template_data', 'ampforwp_backtotop' );
function ampforwp_backtotop( $data ) {
	global $redux_builder_amp;
	if(true == ampforwp_get_setting('ampforwp-footer-top')){
		$dom = AMP_DOM_Utils::get_dom_from_content($data['post_amp_content']);
		if ( 0 !== $dom->getElementsByTagName( 'amp-position-observer' )->length ) {
			if ( empty( $data['amp_component_scripts']['amp-position-observer'] ) ) {
				$data['amp_component_scripts']['amp-position-observer'] = 'https://cdn.ampproject.org/v0/amp-position-observer-0.1.js';
			}
		}
		if ( 0 !== $dom->getElementsByTagName( 'amp-animation' )->length ) {
			if ( empty( $data['amp_component_scripts']['amp-animation'] ) ) {
				$data['amp_component_scripts']['amp-animation'] = 'https://cdn.ampproject.org/v0/amp-animation-0.1.js';
			}
		}
			
	}
	return $data;
} 

// Jannah Theme Subtitle Support #2732 
add_action('ampforwp_below_the_title','ampforwp_jannah_subtitle');
function ampforwp_jannah_subtitle(){
	if (function_exists('jannah_theme_name') && function_exists('tie_get_postdata')){?>
		<h2 class="amp-wp-content"><?php echo esc_html(tie_get_postdata( 'tie_post_sub_title' ))?></h2>
	<?php
	} 
}

// SD Feature Image Guidlines #2838
add_filter( 'amp_post_template_metadata', 'ampforwp_sd_feature_image_guidlines', 22, 1 );
if ( ! function_exists('ampforwp_sd_feature_image_guidlines') ) {
	function ampforwp_sd_feature_image_guidlines($metadata){
		if ( isset($metadata['image']['width']) && $metadata['image']['width'] <= 1200  ){
			$image_width = 1280;
			$image_height = 720;
			$image = ampforwp_aq_resize( $metadata['image']['url'], $image_width, $image_height, true, false, true );
			$image_url = isset( $image[0] ) ? $image[0] : ''; 
			$metadata['image']['url'] = $image_url;
			$metadata['image']['width'] = $image_width;
			$metadata['image']['height'] = $image_height;
		}
		return $metadata;
	}
}
// Gutenberg Modules CSS #2707
if(ampforwp_get_setting('ampforwp_css_tree_shaking') == true && ampforwp_is_gutenberg_active()){
add_action('amp_post_template_css', 'ampforwp_gutenberg_css');
}
if ( ! function_exists('ampforwp_gutenberg_css') ) {
	function ampforwp_gutenberg_css(){
		$color_data =   get_theme_support('editor-color-palette');
		$background = '#32373c';
		if(isset($color_data[0]) && isset($color_data[0][0]) && isset($color_data[0][0]['color'])){
				$background = $color_data[0][0]['color'];
		}
		?>
		.wp-block-button { color: #fff}
		.wp-block-button a {background-color: <?php 
		//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo ampforwp_sanitize_color($background);?>;border-radius: 28px;color: inherit;display: inline-block;padding: 12px 24px;}
		.wp-block-cover{position:relative;background-color: #000;background-size: cover;background-position: center center;min-height: 430px;width: 100%;margin: 1.5em 0 1.5em 0;display: flex;justify-content: center;align-items: center;overflow: hidden;}
		.wp-block-cover-text{color: #fff;font-size: 2em;line-height: 1.25;z-index: 1;}
		.wp-block-cover-image.has-background-dim::before, .wp-block-cover.has-background-dim::before {content: "";position: absolute;top: 0;left: 0;bottom: 0;right: 0;background-color: inherit;opacity: .5;z-index: 1;} <?php
		if ( $color_data ) {
			foreach ($color_data[0] as $key ) { ?>
				.has-<?php echo esc_attr($key['slug']);?>-color { color: <?php 
				//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				echo ampforwp_sanitize_color($key['color']);?>;} .has-<?php 
				//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				echo esc_attr($key['slug']);?>-background-color { background-color: <?php 
				//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				echo ampforwp_sanitize_color($key['color']);?> }
				 <?php 
				}
			}
		}
} 
// Subtitles Plugin Support #2853
add_action('ampforwp_below_the_title','ampforwp_subtitles_support');
if ( ! function_exists('ampforwp_subtitles_support') ) {
function ampforwp_subtitles_support(){
if (class_exists('Subtitles')){
	$post_id = get_the_ID();
	if(ampforwp_is_front_page()){
		$post_id = ampforwp_get_frontpage_id();
	}	
	// exit if no post id is available.
	if (empty($post_id)){
		return;
	}
	$subtitle = "";
	$subtitle = get_post_meta( $post_id, Subtitles::SUBTITLE_META_KEY, true );
	?>
	<h2 class="amp-wp-content"><?php echo esc_html($subtitle) ?></h2>
<?php
} 
}
}

// AMPforWP Global Sanitizer
add_action('pre_amp_render_post','ampforwp_comments_sanitizer', 15);
function ampforwp_comments_sanitizer(){
	global $ampforwp_data;
	$comments_scripts = array();
	$comments = $postID = $comment_text = '';
	$postID = get_the_ID();
	if ( ampforwp_is_front_page() ) {
		$postID = ampforwp_get_frontpage_id();
	}
	if ( ampforwp_get_comments_status() && true == ampforwp_get_setting('wordpress-comments-support') ) {
		$comment_order = get_option( 'comment_order' );
		$comments = get_comments(array(
				'post_id' => $postID,
				'order' => esc_attr($comment_order),
				'status' => 'approve' //Change this to the type of comments to be displayed
		) );
		foreach ($comments as $comment) {
			$comment_data = get_comment( $comment->comment_ID );
			$comment_text =	$comment_data->comment_content;
			$comment_text = wpautop( $comment_text );
	    	$sanitizer = new AMPforWP_Content( $comment_text, apply_filters( 'amp_content_embed_handlers', array(
	    		  'AMP_Reddit_Embed_Handler' => array(),
		          'AMP_Twitter_Embed_Handler' => array(),
		          'AMP_YouTube_Embed_Handler' => array(),
		          'AMP_DailyMotion_Embed_Handler' => array(),
				  'AMP_Vimeo_Embed_Handler' => array(),
				  'AMP_SoundCloud_Embed_Handler' => array(),
		          'AMP_Instagram_Embed_Handler' => array(),
		          'AMP_Vine_Embed_Handler' => array(),
		          'AMP_Facebook_Embed_Handler' => array(),
		          'AMP_Pinterest_Embed_Handler' => array(),
		          'AMP_Gallery_Embed_Handler' => array(),
				  'AMP_Tiktok_Embed_Handler'=>array(),
		    ) ),  apply_filters(  'amp_sidebar_sanitizers', array(
		           'AMP_Style_Sanitizer' => array(),
		           'AMP_Blacklist_Sanitizer' => array(),
		           'AMP_Img_Sanitizer' => array(),
		           'AMP_Video_Sanitizer' => array(),
		           'AMP_Audio_Sanitizer' => array(),
		           'AMP_Playbuzz_Sanitizer' => array(),
		           'AMP_Iframe_Sanitizer' => array(
		             'add_placeholder' => true,
		           ),
		    )  ) );
		    if ( $sanitizer ) {
		    	$sanitizer_scripts = $sanitizer->get_amp_scripts();
		    	if ( $sanitizer_scripts ){
		    		$comments_scripts = array_merge($comments_scripts, $sanitizer_scripts);
		    	}
		    }
		}
		if ( $comments_scripts ) {
			$ampforwp_data['comments']['scripts'] = $comments_scripts;
		}
	}
}
// AMPforWP Global Scripts
add_filter('amp_post_template_data','ampforwp_add_global_scripts');
function ampforwp_add_global_scripts($data){
    global $ampforwp_data;
    $comments_scripts = array();
    // Add Comments Scripts #2827
    if ( $comments_scripts ) {
	  $comments_scripts = $ampforwp_data['comments']['scripts'];
	}
    if ( !empty($comments_scripts) ) {
        foreach ($comments_scripts as $key => $value ) {
            if( empty( $data['amp_component_scripts'][$key] ) ){
                $data['amp_component_scripts'][$key]  = $value;
            }
        }
    }
    // AddThis Support #3068   
	if ( ampforwp_get_setting('enable-add-this-option') && ( is_single() || (is_page() && ampforwp_get_setting('ampforwp-page-social') ) ) && !ampforwp_woocommerce_conditional_check() && !checkAMPforPageBuilderStatus(ampforwp_get_the_ID()) && ( ampforwp_get_setting('addthis-floating-share') == true || ampforwp_get_setting('addthis-inline-share') == true))  {
 		if ( empty( $data['amp_component_scripts']['amp-addthis'] ) ) {
			$data['amp_component_scripts']['amp-addthis'] = 'https://cdn.ampproject.org/v0/amp-addthis-0.1.js';
		}
	}
	// Featured video SmartMag theme Compatibility #2559:
	if( function_exists('get_the_post_video') || class_exists('Bunyad') ) {
		if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
			$data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
		}
	}
	//Appearance option for Related Posts #1545
	if (  true == ampforwp_get_setting('ampforwp-single-related-posts-switch') && ampforwp_get_setting('rp_design_type') == '3') {
		if ( empty( $data['amp_component_scripts']['amp-carousel'] ) ) {
			$data['amp_component_scripts']['amp-carousel'] = 'https://cdn.ampproject.org/v0/amp-carousel-0.2.js';
		}
	}
    return $data;
}	
if ( ! function_exists('ampforwp_get_weglot_url') ) {
	function ampforwp_get_weglot_url(){
		$url = weglot_get_full_url_no_language();
		$current_lang = weglot_get_current_and_original_language();
		$original_lang = $current_lang['original'];
		$current_lang = $current_lang['current'];
		if($current_lang == $original_lang ){
			return $url;
		 }else{
			$url = trailingslashit($url) . $current_lang;
			return esc_url(user_trailingslashit($url));
		}
		
	}
}
// Rank Math SEO Compatibility #2701
// og tags and Schema
add_action('amp_post_template_head','ampforwp_rank_math');
if ( ! function_exists('ampforwp_rank_math') ) {
	function ampforwp_rank_math(){		
		// Early Bail if Rank Math is not selected in SEO Plugin Integration.
		if ( 'rank_math' !== ampforwp_get_setting('ampforwp-seo-selection') ) {
			return;
		}

		// Remove Canonical & Title Tag added by the Rank Math plugin.
		remove_all_actions( 'rank_math/head', 20 );
		remove_all_actions( 'rank_math/head', 1 );

		// Remove meta tags added by the Rank Math plugin.
		if ( ! ampforwp_get_setting( 'ampforwp-seo-rank_math-meta' ) ) {
			$json_ld_data = isset( $wp_filter['rank_math/json_ld'] ) ? $wp_filter['rank_math/json_ld'] : '';
			remove_all_actions( 'rank_math/opengraph/facebook' );
			remove_all_actions( 'rank_math/opengraph/twitter' );
			add_filter( 'rank_math/frontend/robots', function() {
				return [];
			});
		}else if(ampforwp_is_front_page()){
			add_filter( 'rank_math/frontend/robots', function() {
				return [];
			});
		}
		// Remove ld+json data added by the Rank math plugin.
		if ( ! ampforwp_get_setting( 'ampforwp-seo-rank_math-schema' ) ) {
			remove_all_actions( 'rank_math/json_ld' );
		}
		if(class_exists('RankMath') && true == ampforwp_get_setting('ampforwp-amp-takeover') && ( ampforwp_is_home() || ampforwp_is_front_page())){
			$google = RankMath\Helper::get_settings( 'general.google_verify' );
			$bing = RankMath\Helper::get_settings( 'general.bing_verify' );
			$baidu = RankMath\Helper::get_settings( 'general.baidu_verify' );
			$alexa = RankMath\Helper::get_settings( 'general.alexa_verify' );
			$yandex = RankMath\Helper::get_settings( 'general.yandex_verify' );
			$pinterest = RankMath\Helper::get_settings( 'general.pinterest_verify' );
			$norton = RankMath\Helper::get_settings( 'general.norton_verify' );
			if(!empty($google)){?>
				<meta name="google-site-verification" content='<?php echo esc_html($google) ?>'/>
			<?php }
			if(!empty($bing)){?>
				<meta name="msvalidate.01" content='<?php echo esc_html($bing) ?>'/>
			<?php }
			if(!empty($baidu)){?>
				<meta name="baidu-site-verification" content='<?php echo esc_html($baidu) ?>'/>
			<?php }
			if(!empty($alexa)){?>
				<meta name="alexaVerifyID" content='<?php echo esc_html($alexa) ?>'/>
			<?php }
			if(!empty($yandex)){?>
				<meta name="yandex-verification" content='<?php echo esc_html($yandex) ?>'/>
			<?php }
			if(!empty($pinterest)){?>
				<meta name="p:domain_verify" content='<?php echo esc_html($pinterest) ?>'/>
			<?php }
			if(!empty($norton)){?>
				<meta name="norton-safeweb-site-verification" content='<?php echo esc_html($norton) ?>'/>
			<?php }
		}	
		do_action( 'rank_math/head' );
	}
}
#1160 Embedly Sanitizer 
add_filter( 'amp_content_sanitizers', 'ampforwp_embedly_sanitizer', 10, 1 );
function ampforwp_embedly_sanitizer( $sanitizer_classes ) {
	if ( class_exists('WP_Embedly') ) {
  		require_once( AMPFORWP_PLUGIN_DIR. 'classes/class-ampforwp-embedly-sanitizer.php' );
  		$sanitizer_classes[ 'AMPforWP_Embedly_Sanitizer' ] = array();
  	}
	return $sanitizer_classes;
}
add_filter('ampforwp_is_amp_endpoint_takeover', "ampforwp_bulktool_takeover");
if (! function_exists('ampforwp_bulktool_takeover') ) {
function ampforwp_bulktool_takeover($data){
	$mob_pres_link = false;
  	if(function_exists('ampforwp_mobile_redirect_preseve_link')){
   	   $mob_pres_link = ampforwp_mobile_redirect_preseve_link();
 	}
	if ( true == ampforwp_get_setting('ampforwp-amp-takeover') || true == ampforwp_get_setting('ampforwp-amp-convert-to-wp') || $mob_pres_link == true) {
		$bulk_option = ampforwp_get_setting('amp-pages-meta-default');
		$ampforwp_stored_meta = get_post_meta( ampforwp_get_the_ID(),'ampforwp-amp-on-off',true);
		if(is_page() && $bulk_option == "hide" && !isset($ampforwp_stored_meta)){
			remove_action( 'wp_head', 'ampforwp_home_archive_rel_canonical', 1 );
			return false; 
		}
	}
	return $data;
}
}

add_filter('ampforwp_is_amp_endpoint_takeover','ampforwp_disable_takovr_elementor_preview');
function ampforwp_disable_takovr_elementor_preview($data){
	if ( did_action( 'elementor/loaded' ) ) {
		if( \Elementor\Plugin::$instance->preview->is_preview_mode() ){
			return false;
		}else{
			return $data;
		}
	}
	return $data;
}

// Multiple Images #2259
// Moved to structured-data-functions.php

// schema.org/SiteNavigationElement missing from menus #1229 & #2952
// Moved to structured-data-functions.php

// WP Subtitle Support #2831
add_action('ampforwp_below_the_title','ampforwp_wpsubtitle_support');
if (! function_exists('ampforwp_wpsubtitle_support') ) {
function ampforwp_wpsubtitle_support(){
 	if(class_exists('WPSubtitle')){?>
	<h2 class="amp-wp-content"><?php the_subtitle(); ?></h2>
<?php 
}
}
}

// Fallbacks for Vendor AMP #2287
// Class AMP_Base_Sanitizer
if ( ! class_exists('AMP_Base_Sanitizer') && class_exists('AMPforWP\\AMPVendor\\AMP_Base_Sanitizer') ) {
	abstract class AMP_Base_Sanitizer extends AMPforWP\AMPVendor\AMP_Base_Sanitizer
	{

	}
}
// Class AMP_Base_Embed_Handler
if ( ! class_exists('AMP_Base_Embed_Handler') && class_exists('AMPforWP\\AMPVendor\\AMP_Base_Embed_Handler') ) {
	abstract class AMP_Base_Embed_Handler extends AMPforWP\AMPVendor\AMP_Base_Embed_Handler
	{
 	}
}
// Class AMP_HTML_Utils
if ( ! class_exists('AMP_HTML_Utils') && class_exists('AMPforWP\\AMPVendor\\AMP_HTML_Utils') ) {
	class AMP_HTML_Utils extends AMPforWP\AMPVendor\AMP_HTML_Utils{}
}
// Class AMP_DOM_Utils
if ( ! class_exists('AMP_DOM_Utils') && class_exists('AMPforWP\\AMPVendor\\AMP_DOM_Utils') ) {
	class AMP_DOM_Utils extends AMPforWP\AMPVendor\AMP_DOM_Utils{}
}
// Function is_amp_endpoint
add_action('pre_amp_render_post', 'ampforwp_is_amp_endpoint_old');
if ( !function_exists('ampforwp_is_amp_endpoint_old') ) {
	function ampforwp_is_amp_endpoint_old(){
		if ( !function_exists('amp_activate') && ! function_exists('is_amp_endpoint') ){
			function is_amp_endpoint(){
				return ampforwp_is_amp_endpoint();
			}
		}
		// Class AMP_Post_Template
		if ( ! class_exists('AMP_Post_Template') && class_exists('AMPforWP\\AMPVendor\\AMP_Post_Template') ) {
			class AMP_Post_Template extends AMPforWP\AMPVendor\AMP_Post_Template{}
		}
	}
}
// End Fallbacks for Vendor AMP

// ampforwp_post_template_data filter #2287
add_filter('amp_post_template_data', 'ampforwp_post_template_data');
function ampforwp_post_template_data( $data ) {
	// Run through our filter 
	$data = apply_filters('ampforwp_post_template_data', $data );
	return $data;
} 

if(false==ampforwp_get_setting('hide-amp-version-from-source')){
	add_action('amp_meta','ampforwp_generator');
	if ( ! function_exists('ampforwp_generator') ) {
	function ampforwp_generator(){
		if(true == ampforwp_get_setting('ampforwp-amp-convert-to-wp')){
		?>
		<meta name="generator" content="AMP for WP <?php echo esc_attr(AMPFORWP_VERSION)?>" />
	<?php } 
		}
	} 
}

// #2497 Ivory Search Compatibility Added
add_filter('ampforwp_menu_content','ampforwp_modify_ivory_search');
if( ! function_exists(' ampforwp_modify_ivory_search ') ){
	function ampforwp_modify_ivory_search($menu){
		
		if(!class_exists('Ivory_Search')){
			return $menu;
		}
		
		$dom 		= '';
		$nodes 		= '';
		$num_nodes 	= '';
		if( !empty( $menu ) ){
			// Create a new document
			$dom = new DOMDocument();
			if( function_exists( 'mb_convert_encoding' ) ){
				$menu = mb_convert_encoding($menu, 'HTML-ENTITIES', 'UTF-8');			
			}
			else{
				$menu =  preg_replace( '/&.*?;/', 'x', $menu ); // multi-byte characters converted to X
			}
			// To Suppress Warnings
			libxml_use_internal_errors(true);
			$dom->loadHTML($menu);
			libxml_use_internal_errors(false);
			// get all the forms
			$nodes 		= $dom->getElementsByTagName( 'form' );
			$num_nodes 	= $nodes->length;
			for ( $i = $num_nodes - 1; $i >= 0; $i-- ) {
				$node 	= $nodes->item( $i );
				// Set The Width and Height if there in none
				if ( '' === $node->getAttribute( 'target' ) ) {
					$node->setAttribute('target', '_top');
				}
				if ( $node->getAttribute('action')){
					$action_url = '';
					$action_url = $node->getAttribute('action');
					$action_url = preg_replace('#^http?:#', '', $action_url);
					$node->setAttribute('action', $action_url);
				}
			}
			$menu = $dom->saveHTML();
		}
		return $menu;
	}
} 
add_action('amp_post_template_css','ampforwp_ivory_search_css');
function ampforwp_ivory_search_css(){
	if(class_exists('Ivory_Search')){?>
		svg.icon.icon-search {
		    display: none;
		}
		input.search-field {
		    display: inline-block;
		}
		svg.search-icon {
		    display: none;
		}
<?php } }
// Font Awesome Icons added for Swift
add_action('amp_post_template_head', 'ampforwp_fontawesome_canonical_link');
function ampforwp_fontawesome_canonical_link(){ 
  if ( ampforwp_get_setting('ampforwp_font_icon') == 'fontawesome-icons' ){ /* phpcs:ignore 	WordPress.WP.EnqueuedResources.NonEnqueuedStylesheet,PluginCheck.CodeAnalysis.Offloading.OffloadedContent */ ?><link rel="preconnect dns-prefetch" href="//use.fontawesome.com" crossorigin>
		<?php /* phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedStylesheet,PluginCheck.CodeAnalysis.Offloading.OffloadedContent */?><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
        <?php }
    }
add_action('amp_post_template_head', 'ampforwp_set_dns_preload_urls');
function ampforwp_set_dns_preload_urls(){
	// Open graph tag is not loading from the SEO framework #4399
	if (function_exists('the_seo_framework') && 'seo_framework' == ampforwp_get_setting('ampforwp-seo-selection')) {
		$og_tsf = \the_seo_framework();
		if($og_tsf){
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo $og_tsf->og_image();
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo $og_tsf->og_locale();
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo $og_tsf->og_type();
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo $og_tsf->og_title();
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo $og_tsf->og_image();
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo $og_tsf->og_description();
			//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo $og_tsf->og_sitename();
		}
	}

	$prefetch = ampforwp_get_setting('amp-prefetch-options');
	$data_arr = array();
	if(is_array($prefetch)){
	    foreach ( $prefetch as $k => $value ) {
	    	if(is_array($value)){
		        foreach ($value as $tk => $tval) {
		            $temp_arr = array();
		            $temp_arr['name'][] = $k;
		            $temp_arr['type'][] = $tk;
		            foreach ($tval as $ck => $cval) {
		                $temp_arr['value'][] = $cval;
		            }
		            $data_arr[] = $temp_arr; 
		        }
		    }
	    }
	    if(isset($data_arr[0]) && !empty($data_arr)){
	        $val_count = count($data_arr[0]['value']);
	        for($i=0;$i<$val_count;$i++){
	            for($j=0;$j<count($data_arr);$j++){
	                if(isset($data_arr[$j]['value'][$i])){
	            		$key 	= $data_arr[$j]['value'][$i];
	            	}
	                if(isset($data_arr[$j+1])){
	               	 	$key 	= $data_arr[$j]['value'][$i];
	               	if(isset($data_arr[$j]['value'][$i])){
	               	 	$value 	= $data_arr[$j+1]['value'][$i];
	               	}
	               	$type = ''; 
	               	if (preg_match('/(\.jpg|\.png|\.webp)$/', $value)) {
	               		$type = 'as="image"';
	               	}
	               	 	if($value!=""){
	               	 		?>
	               	 		<link rel="<?php echo esc_attr($key)?>" <?php 
							//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
							echo $type; // XXS ok, escaped above ?> href="<?php echo esc_url($value);?>" crossorigin>
	               	 		<?php
	               	 	}
	               	}
	            }
	        }
	    }
	}
}
// Yoast BreadCrumbs #1473
add_action('pre_amp_render_post', 'ampforwp_yoast_breadcrumbs');
if ( ! function_exists('ampforwp_yoast_breadcrumbs') ) {
	function ampforwp_yoast_breadcrumbs(){
		if ( ampforwp_get_setting('ampforwp-yoast-bread-crumb') ) {
			// Remove the separator of Yoast
			add_filter('wpseo_breadcrumb_separator','ampforwp_yoast_breadcrumbs_sep');
			function ampforwp_yoast_breadcrumbs_sep($sep) {
				$sep = '';
				return $sep;
			}
			// Remove xmlns:v to avoid validation error
			add_filter('wpseo_breadcrumb_output','ampforwp_yoast_breadcrumbs_modified_output');
			function ampforwp_yoast_breadcrumbs_modified_output($output){
				$output = str_replace('xmlns:v="http://rdf.data-vocabulary.org/#"', '', $output);
				return $output;
			}
			// Change the wrapper to div
			add_filter('wpseo_breadcrumb_output_wrapper', 'ampforwp_yoast_breadcrumbs_wrapper');
			function ampforwp_yoast_breadcrumbs_wrapper($wrap) {
				$wrap = 'div';
				return $wrap;
			}
			// Add the Breadcrumbs class to wrapper
			add_filter('wpseo_breadcrumb_output_class','ampforwp_yoast_breadcrumbs_wrapper_class');
			function ampforwp_yoast_breadcrumbs_wrapper_class($class) {
				$class = 'breadcrumbs';
				return $class;
			}
		}
	}
}
function ampforwp_yoast_breadcrumbs_output(){
	if ( class_exists('WPSEO_Options') && method_exists('WPSEO_Options', 'get') ){
		$breadcrumb = '';
		if ( true == ampforwp_get_setting('ampforwp-yoast-bread-crumb') && true === WPSEO_Options::get( 'breadcrumbs-enable' ) && function_exists('yoast_breadcrumb')) {
			$breadcrumb = yoast_breadcrumb('','', false);
			if( true == ampforwp_get_setting('convert-internal-nonamplinks-to-amp') && preg_match('/<a\s+href="(.*?)">(.*?)<\/a>/', $breadcrumb)){
			   $breadcrumb = preg_replace('/<a\s+href="(.*?)\/">(.*?)<\/a>/', '<a href="$1/'.user_trailingslashit(AMPFORWP_AMP_QUERY_VAR).'">$2</a>', $breadcrumb);
		     }
			return $breadcrumb;
		}
	}
}

// Slide Anything compatibility #2891
add_filter('amp_content_embed_handlers','ampforwp_slide_anything_embed');
function ampforwp_slide_anything_embed($data) {
	if ( function_exists('cpt_slider_plugin_activation') ) {
		require_once( AMPFORWP_PLUGIN_DIR. 'classes/class-ampforwp-slide-anything-embed.php' );
		$data['AMPFORWP_Slide_Anything_Embed_Handler'] = array();
	}
	return $data;
}

// Revolution Slider compatibility #1464
add_action('pre_amp_render_post', 'ampforwp_initialise_rev_slider');
if ( ! function_exists('ampforwp_initialise_rev_slider') ) {
	function ampforwp_initialise_rev_slider(){
		if ( class_exists('RevSliderOutput') ){
			require AMPFORWP_PLUGIN_DIR .'/classes/class-ampforwp-rev-slider.php';
		}
	}
}
add_filter('amp_content_embed_handlers','ampforwp_rev_slider_embed');
function ampforwp_rev_slider_embed($data) {
	if ( class_exists('RevSliderOutput') ){
		$data['AMP_Rev_Slider_Embed_Handler'] = array();
	}
	return $data;
}
// Photo Gallery by 10Web Compatibility #1811
add_action('pre_amp_render_post', 'ampforwp_initialise_photo_gallery');
if ( ! function_exists('ampforwp_initialise_photo_gallery') ) {
	function ampforwp_initialise_photo_gallery(){
		if ( class_exists('BWG') ) {
			require AMPFORWP_PLUGIN_DIR .'/classes/class-ampforwp-photo-gallery-embed.php';
		}
	}
}
add_filter('amp_content_embed_handlers','ampforwp_photo_gallery_embed');
function ampforwp_photo_gallery_embed($data) {
	if ( class_exists('BWG') ) {
		$data['AMPforWP_Photo_Gallery_Embed_Handler'] = array();
	}
	return $data;
}
function ampforwp_rel_attributes_social_links(){ 
	$rel_attributes = array(); 
	if (true == ampforwp_get_setting('ampforwp-social-no-follow')) {
    	$rel_attributes[] = 'nofollow';
	}
	if (true == ampforwp_get_setting('ampforwp-social-no-referrer')) {
    	$rel_attributes[] = 'noreferrer';
	}
	if (true == ampforwp_get_setting('ampforwp-social-no-opener')) {
    	$rel_attributes[] = 'noopener';
	}
	$rel_attributes = apply_filters('ampforwp_rel_attributes_social_links', $rel_attributes);
	$rel_attributes = array_map('esc_attr', $rel_attributes);
	if ( $rel_attributes ) {
		/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
		echo 'rel="' . implode(" ",$rel_attributes).'" ';
	}
	return;
}
// Fallback added
function ampforwp_nofollow_social_links(){
	ampforwp_rel_attributes_social_links();
	return ;
}

function ampforwp_nofollow_notification(){
	if(true == ampforwp_get_setting('ampforwp-notifications-nofollow')){
		echo 'rel=nofollow';
		return;
	}
	return false;
}
// Featured Video SmartMag theme Compatibility CSS #2559
add_action('amp_post_template_css', 'ampforwp_featured_video_plus_css');
function ampforwp_featured_video_plus_css(){ 
	if( function_exists('get_the_post_video') ) {?>
		.fvp-onload{display:none}
<?php }
	if(class_exists('Bunyad')){ ?>
		.amp-featured-image amp-iframe, .amp-wp-article-featured-image amp-iframe { margin:auto; height:100%; }
		.f_vid { background: #000; }
<?php }
}
function ampforwp_webp_featured_image() {
	$post_id = ampforwp_get_the_ID();

	if ( ! has_post_thumbnail( $post_id )) {
		return false;
	}

	$thumb_id = get_post_thumbnail_id($post_id);
	$image_size = apply_filters( 'ampforwp_featured_image', 'full' ); 
	$image = wp_get_attachment_image_src( $thumb_id, $image_size );
		if( $image ) {	
			if(empty($image[1])){
			$image[1] = 750;
			}
			if(empty($image[2])){
			$image[2] = 500;
			}
		$thumb_alt = get_post_meta( $thumb_id, '_wp_attachment_image_alt', true);
			if($thumb_alt){
				$alt = $thumb_alt;
			}
			else{
				$alt = get_the_title( $post_id );
			}
			$alt = convert_chars( stripslashes( $alt ) );
		$image_output = "<amp-img src='".esc_url($image[0])."' width='".esc_attr($image[1])."' height='".esc_attr($image[2])."' layout='responsive' alt='".esc_attr($alt)."' ></amp-img>";?>
			<?php 
			if(1 == ampforwp_get_setting('amp-design-selector') || 2 == ampforwp_get_setting('amp-design-selector') || 3 == ampforwp_get_setting('amp-design-selector')){?>
			<figure class="amp-wp-article-featured-image">	
				<?php /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ echo $image_output; // escaped above
			?>
			</figure>
		<?php }
	}
}

// Keep the default WordPress form for AMP #3000
add_filter('get_search_form', 'ampforwp_search_form');
if ( ! function_exists('ampforwp_search_form') ) {
	function ampforwp_search_form($form){
		if ( ampforwp_is_amp_endpoint() ) {
		$placeholder = ampforwp_translation(ampforwp_get_setting('ampforwp-search-placeholder'), 'Type Here' );
		if (function_exists('pll__')) {
			$placeholder = pll__(esc_html( ampforwp_get_setting('ampforwp-search-placeholder')));
		}
		$widgetlabel = ampforwp_translation(ampforwp_get_setting('ampforwp-search-widget-label'), 'Search for:' );	
			$form = '<form role="search" method="get" id="searchform" class="search-form" action="' . esc_url( home_url( '/' ) ) . '" target="_top">
					<label>
						<span class="screen-reader-text">' . esc_html( $widgetlabel) . '</span>
						<input type="text" value="" placeholder="' . esc_html( $placeholder) . '" name="s" class="search-field">
					</label>
					<input type="text" placeholder="' . esc_html( $placeholder ) . '" value="1" name="amp" class="hide" id="ampforwp_search_query_item">
				</form>';
		}
		return $form;
	}
}

//Saving all taxonomies in Transient
add_action('init','ampforwp_generate_taxonomies_transient');
function ampforwp_generate_taxonomies_transient(){
	$taxonomies = get_transient('ampforwp_get_taxonomies');
	$tax_arr = array();
	$args = array(
		  		'public'   => true,
		  		'_builtin' => false,  
		); 
	$output = 'objects'; // or objects
	$operator = 'and'; // 'and' or 'or'
	$alltaxonomies = get_taxonomies( $args, $output, $operator );
	if  ($alltaxonomies) {
		foreach ($alltaxonomies as $taxKey => $taxVal) {
			$tax_arr[$taxVal->name] = $taxVal->labels->singular_name;
		}
	}
	if ( false == $taxonomies ) {
		set_transient('ampforwp_get_taxonomies',$tax_arr);
	}else{
		if(count($tax_arr) > count($taxonomies)){
			$result = array_diff_assoc($tax_arr,$taxonomies);
		}elseif( count($taxonomies) > count($tax_arr)){
			$result = array_diff_assoc($taxonomies,$tax_arr);
		}
		if( !empty($result)){
			delete_transient('ampforwp_get_taxonomies');
		}
	}
	return $taxonomies;
}

// Include Opengraph.php #3261
add_action('pre_amp_render_post', 'ampforwp_include_opengraph');
if ( ! function_exists('ampforwp_include_opengraph') ) {
  function ampforwp_include_opengraph(){
    if ( true == ampforwp_get_setting('ampforwp-seo-og-meta-tags') && '' == ampforwp_get_setting('ampforwp-seo-selection') ) {
      require_once AMPFORWP_PLUGIN_DIR."includes/features/opengraph.php";
    }
  }
}

add_action('wp_ajax_ampforwp_import_file_from_file','ampforwp_import_settings_from_file');
function ampforwp_import_settings_from_file(){
	/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
	if ( wp_verify_nonce( $_POST['security'], 'ampforwp_import_file' ) && current_user_can( 'manage_options' ) ) {
		if(isset($_FILES["file"]["tmp_name"])){
			/* phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents,	WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
			$content = file_get_contents($_FILES["file"]["tmp_name"]);
			if ( ! empty ( $content ) ) {
				$imported_options = json_decode( $content, true );
			}
			$plugin_options = get_option('redux_builder_amp');
			if ( ! empty ( $imported_options ) && is_array( $imported_options ) && isset ( $imported_options['redux-backup'] ) && $imported_options['redux-backup'] == '1' ) {
				/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
				echo $content;
			}
		}
	}
}

add_filter('ampforwp_loop_image_update','ampforwp_recentpost_link_to_nonamp');
function ampforwp_recentpost_link_to_nonamp($image_link_data){
	if( true == ampforwp_get_setting('ampforwp-recentpost-posts-link') ){
		$image_link_data['image_link'] = get_permalink();
	}else{
		$image_link_data['image_link'] = ampforwp_url_controller( get_permalink() ) ;
	}
	return $image_link_data;
}
#3596 link to nonamp option on title for recent posts
add_filter('ampforwp_loop_permalink_update','ampforwp_recentpost_title_link_to_nonamp');
function ampforwp_recentpost_title_link_to_nonamp($title_link){
	if( true == ampforwp_get_setting('ampforwp-recentpost-posts-link') ){
		$title_link  = get_permalink();
	}else{
		$title_link  = ampforwp_url_controller( get_permalink() ) ;
	}
	return $title_link;
}

// Post Meta Revisions #3548 -- start here --
add_filter( '_wp_post_revision_field_amp_page_builder', 'ampforwp_meta_revi_pb_field', 22, 2 );
add_action( 'save_post',                   'ampforwp_meta_revi_save_post', 10, 2 );
add_action( 'wp_restore_post_revision',    'ampforwp_meta_restore_revision', 10, 2 );
add_filter( '_wp_post_revision_fields',    'ampforwp_meta_revi_fields' );
// Displaying the meta field on the revisions screen
function ampforwp_meta_revi_fields( $fields ) {
	$fields['post_title'] = 'Title';
	$fields['post_content'] = 'Content';
	$fields['post_excerpt'] = 'Excerpt';
	$fields['amp-page-builder'] = 'AMP Page Builder';
	return $fields;
}
// Displaying the meta field on the revisions screen
function ampforwp_meta_revi_pb_field( $value, $field ) {
	global $revision;
	return get_metadata( 'post', $revision->ID, $field, true );
}
// Reverting to the correct revision of the meta field when a post is reverted
function ampforwp_meta_restore_revision( $post_id, $revision_id ) {
	if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') ) {
		return;
	}
	$post     = get_post( $post_id );
	$revision = get_post( $revision_id );
	$meta     = get_metadata( 'post', $revision->ID, 'amp-page-builder', true );
	if ( false === $meta ) {
		delete_post_meta( $post_id, 'amp-page-builder' );
	}
	else{
		update_post_meta( $post_id, 'amp-page-builder', $meta );
	}
}
// Storing a revision of the meta field when a post is saved
function ampforwp_meta_revi_save_post( $post_id, $post ) {
	if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') ) {
		return;
	}
	if ( $parent_id = wp_is_post_revision( $post_id ) ) {
		$parent = get_post( $parent_id );
		$pb_meta = get_post_meta( $parent->ID, 'amp-page-builder', true );
		if ( false !== $pb_meta ){
			add_metadata( 'post', $post_id, 'amp-page-builder', $pb_meta );
		}
	}
}
// Post Meta Revisions #3548 -- end here --


// FOR ADMIN MENU BAR
add_action( 'pre_amp_render_post', 'ampforwp_front_admin_menu_bar' );
function ampforwp_front_admin_menu_bar(){
	if( is_user_logged_in() ){
		$pref = get_user_option( "show_admin_bar_front", get_current_user_id() );
		if($pref==="true"){
			if(class_exists('QM_Plugin') && class_exists('QM_Dispatchers') && ampforwp_get_setting('ampforwp-query-monitor')){
				$dis = QM_Dispatchers::get( 'html' );
				if(is_object($dis) && $dis->did_footer==false){
					$dis->did_footer = true;
					add_action( 'amp_post_template_head', 'ampforwp_query_monitor_script'  );
					add_action( 'amp_post_template_head',  'ampforwp_manual_qm_script', 11 );
				}
			}
			add_action("ampforwp_admin_menu_bar_front", function(){
				add_action('wp_before_admin_bar_render','ampforwp_add_admin_menu_front');
		    	wp_admin_bar_render();
			});
			add_action( 'admin_bar_init', 'ampforwp_init_admin_bar');
			add_action( 'wp_before_admin_bar_render','ampforwp_remove_before_admin_bar_redner',9);
			add_action( 'admin_bar_menu',  'ampforwp_remove_admin_menu_front',999);
			add_action('amp_post_template_css', 'ampforwp_head_css'); 
			
		}
	}
}
function ampforwp_remove_before_admin_bar_redner(){
	remove_action( 'wp_before_admin_bar_render', 'wp_customize_support_script' );
}
function ampforwp_init_admin_bar(){
	remove_action( 'wp_head', '_admin_bar_bump_cb' );
 	remove_action( 'wp_head', 'wp_admin_bar_header' );
}
global $wp_filesystem;
function ampforwp_head_css(){
		global  $ampforwpTemplate, $redux_builder_amp, $wp_filesystem;
		$css = "";
		if( is_user_logged_in() ){
			$pref = get_user_option( "show_admin_bar_front", get_current_user_id() );
			if($pref==="true"){
				require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php';
		    	require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-direct.php';
			 	$wp_filesystem = new WP_Filesystem_Direct( array() );
				if(ampforwp_get_setting('ampforwp_css_tree_shaking')==1){
					if(ampforwp_is_home()){
						$tscss = "home";
					}elseif(ampforwp_is_blog()){
						$tscss = "blog";
					}elseif(ampforwp_is_front_page()){
						$tscss = "post-".ampforwp_get_frontpage_id();
					}elseif(is_singular()){
						$tscss = "post-".ampforwp_get_the_ID();
					}elseif(is_archive()){
	                    $page_id = get_queried_object_id();
	                    $tscss = "archive-".intval($page_id);
	                }
					$tscss = $tscss.'-admin';
					$upload_dir = wp_upload_dir(); 
			        $ts_file = esc_attr($upload_dir['basedir']) . '/' . 'ampforwp-tree-shaking/_transient_'.esc_attr($tscss).".css";
			        if(file_exists($ts_file)){
			        	 $css = $wp_filesystem->get_contents($ts_file);
			        	 if(preg_match("/#wpadminbar/", $css)==0){
			        	 	$user_dirname = $upload_dir['basedir'] . '/' . 'ampforwp-tree-shaking';
			        	   if(file_exists($user_dirname)){
					            $files = glob($user_dirname . '/*');
					            foreach($files as $file){
					                if(is_file($file) && strpos($file, '_transient')!==false ){
					                    wp_delete_file( $file );
					                }
					            }
					        }
					    }
			        }
		   		}
				$css = $wp_filesystem->get_contents(AMPFORWP_PLUGIN_DIR."/templates/template-mode/admin-bar.css");
				$incurl = includes_url();
				$incurl = trailingslashit($incurl) .'fonts/dashicons.ttf?50db0456fde2a241f005968eede3f987';
				$css.='@font-face{font-family:dashicons;src:url('.$incurl.'/fonts/dashicons.ttf?50db0456fde2a241f005968eede3f987) format("truetype");
				font-weight:400;font-style:normal}
				#wp-admin-bar-my-account .avatar{float:right;margin-top:7px;margin-left:5px;height:18px;width:18px;border:1px solid #82878c}#wp-admin-bar-wpseo-notifications .yoast-issue-counter{float:right}@media(max-width:782px){#wpadminbar~header #headerwrap{top:46px}}';
				if(ampforwp_get_setting('amp-design-selector')!=3){
					$css.='#wpadminbar~header{margin-top:32px}@media(max-width:782px){#wpadminbar~header{margin-top:46px}}';
				}else{
					$css.='#wpadminbar~header #headerwrap{top:32px}@media(max-width:782px){#wpadminbar~header #headerwrap{margin-top:46px}}';
				}
				/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
				echo ampforwp_css_sanitizer($css);
			}
		}
	}
	function ampforwp_css_sanitizer($css){
		$css = preg_replace( '/\s*!important/', '', $css, -1, $important_count );
		$css = preg_replace( '/overflow(-[xy])?\s*:\s*(auto|scroll)\s*;?\s*/', '', $css, -1, $overlow_count );
            $css = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $css);
        $css = str_replace(array (chr(10), ' {', '{ ', ' }', '} ', '( ', ' )', ' :', ': ', ' ;', '; ', ' ,', ', ', ';}', '::-' ), array('', '{', '{', '}', '}', '(', ')', ':', ':', ';', ';', ',', ', ', '}', ' ::-'), $css);
		return $css;
	}
	function ampforwp_get_remote_content($src){
		if($src){
			$arg = array( "sslverify" => false, "timeout" => 60 ) ;
			$response = wp_remote_get( $src, $arg );
	        if ( wp_remote_retrieve_response_code($response) == 200 && is_array( $response ) ) {
	          $header = wp_remote_retrieve_headers($response); // array of http header lines
	          $contentData =  wp_remote_retrieve_body($response); // use the content
	          return $contentData;
	        }
		}else{
			/* phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents */
			return $contentData = file_get_contents( $src );
		}
	    return '';
	}
	function ampforwp_add_admin_menu_front(){
		global $wp_admin_bar;
		$dom = new DOMDocument();
		$my_account = $wp_admin_bar->get_node('my-account');
		$title = '';
		if(is_object($my_account)){
		 	$title = ampforwp_content_sanitizer($my_account->title);
		}
		$wp_admin_bar->add_menu( array(
	        'id'        => 'my-account',
	        'title'      => $title
		) );
		$user_info = $wp_admin_bar->get_node('user-info');
		if(is_object($user_info)){
			$title = $user_info->title;
		}
		if($title){
			// To Suppress Warnings
       		libxml_use_internal_errors(true);
			$dom->loadHTML($title);
			libxml_use_internal_errors(false);
			$anchors = $dom -> getElementsByTagName('img'); 
			$src="";
			foreach($anchors as $im){
				$src = $im->getAttribute('src'); 
			}
			$authname = get_the_author_meta('nickname');
			$title = '<span style="background: url('.esc_url($src).');background-repeat: no-repeat;height: 64px;position: absolute;width: 100px;top: 13px;left: -70px;" class="display-name"></span><span class="display-name">'.esc_html($authname).'<span>';
			$wp_admin_bar->add_menu( array(
			        'id'        => 'user-info',
			        'title'      => $title
			  ) );
			if(class_exists('WPSEO_Options')){
				$wp_admin_bar->add_menu( array(
				        'id'        => 'wpseo-menu',
				        'title'      => "SEO"
				) );
			}
			$wp_admin_bar->remove_menu( 'ampforwp-view-amp' );
			if(function_exists('autoptimize_autoload')){
				$wp_admin_bar->remove_menu( 'autoptimize' );
			}
			if (is_preview()) {
				$url = get_preview_post_link();
				$wp_admin_bar->add_node(array(
					'id'    => 'ampforwp-view-non-amp',
					'title' => 'View Non-AMP',
					'href'  => esc_url($url)
					));
			} 
			else{
				$url = ampforwp_get_non_amp_url();
				$wp_admin_bar->add_node(array(
					'id'    => 'ampforwp-view-non-amp',
					'title' => 'View Non-AMP' ,
					'href'  =>  esc_url($url)
				));
			} 
		}
	}
	
	function ampforwp_remove_admin_menu_front($wp){
		$node_arr = ['search','admin-bar-likes-widget'];
		for($i=0;$i<count($node_arr);$i++){
			$wp->remove_node($node_arr[$i]);
		}
	}
	function ampforwp_manual_qm_script() {
		wp_print_scripts( array(
			'query-monitor',
		) );
		wp_print_styles( array(
			'query-monitor',
		) );
	}
	function ampforwp_query_monitor_script() {
		global $wp_locale;
		$qm = plugins_url();
		$deps = array(
				'jquery',
			);

			if ( defined( 'QM_NO_JQUERY' ) && QM_NO_JQUERY ) {
				$deps = array();
			}

			$css = 'query-monitor';
			if ( method_exists( 'Dark_Mode', 'is_using_dark_mode' ) && is_user_logged_in() ) {
				if ( Dark_Mode::is_using_dark_mode() ) {
					$css .= '-dark';
				}
			} elseif ( defined( 'QM_DARK_MODE' ) && QM_DARK_MODE ) {
				$css .= '-dark';
			}

			wp_enqueue_style(
				'query-monitor',
				esc_attr($qm)."/query-monitor/assets/{$css}.css",
				array( 'dashicons' ),
				AMPFORWP_VERSION
			);
			wp_enqueue_script(
				'query-monitor',
				esc_attr($qm).'/query-monitor/assets/query-monitor.js',
				$deps,
				AMPFORWP_VERSION,
				false
			);
			wp_localize_script(
				'query-monitor',
				'qm_number_format',
				$wp_locale->number_format
			);
			wp_localize_script(
				'query-monitor',
				'qm_l10n',
				array(
					'ajax_error' => esc_html__( 'PHP Errors in Ajax Response', 'accelerated-mobile-pages' ),
					'ajaxurl'    => admin_url( 'admin-ajax.php' ),
					'auth_nonce' => array(
						'on'         => wp_create_nonce( 'qm-auth-on' ),
						'off'        => wp_create_nonce( 'qm-auth-off' ),
						'editor-set' => wp_create_nonce( 'qm-editor-set' ),
					),
				)
			);
	}
	function ampforwp_get_non_amp_url(){
		global $post, $wp;
	  	$nofollow = $page = $amp_url = $non_amp_url = '';
	   	if( true == ampforwp_get_setting('ampforwp-nofollow-view-nonamp') ){
	   		$nofollow = 'rel=nofollow';
	   	}
		$amp_url = untrailingslashit( home_url( $wp->request ) );
		$amp_url = explode('/', $amp_url);
		$amp_url = array_flip($amp_url);
		unset($amp_url[AMPFORWP_AMP_QUERY_VAR]);
		$non_amp_url = array_flip($amp_url);
		$non_amp_url = implode('/', $non_amp_url);
		$query_arg_array 	= $wp->query_vars;
		
		if( array_key_exists( "page" , $query_arg_array  ) ) {
			$page = $wp->query_vars['page'];
		}
		if ( $page >= '2') { 
			$non_amp_url = trailingslashit( $non_amp_url  . '?page=' . $page);
		} 
		if ( ampforwp_get_setting('amp-mobile-redirection') == true && ampforwp_get_setting('amp-mob-redirection-pres-link') == false) {
			$non_amp_url = add_query_arg('nonamp','1',$non_amp_url);
		}
		else
			$non_amp_url = user_trailingslashit($non_amp_url);
	   	$mob_pres_link = false;
	  	if(function_exists('ampforwp_mobile_redirect_preseve_link')){
	    	$mob_pres_link = ampforwp_mobile_redirect_preseve_link();
	  	}
	   	if ( true == ampforwp_get_setting('ampforwp-amp-takeover') || $mob_pres_link == true) {
	   		$non_amp_url = '';
	   	}
		if ( $non_amp_url ) {
			return apply_filters('ampforwp_view_nonamp_url', $non_amp_url);
		}
}
add_action( 'wp_ajax_ampforwp_set_option_panel_view', 'ampforwp_set_option_panel_view' );
function ampforwp_set_option_panel_view(){
	if(!is_admin() && !current_user_can('manage_options')){
		return ;
	}
	/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
	if(!wp_verify_nonce($_POST['verify_nonce'],'ampforwp-verify-request') ){
		echo wp_json_encode(array('status'=>403,'message'=>esc_html__('user request is not allowed','accelerated-mobile-pages'))) ;
		die;
	}
	/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated */
	$opt_type = intval($_POST['option_type']);
	if($opt_type==1 || $opt_type==2){
		$opt = get_option("ampforwp_option_panel_view_type");
		if($opt){
			update_option("ampforwp_option_panel_view_type", $opt_type, false);
		}else{
			add_option("ampforwp_option_panel_view_type", $opt_type);
		}
	}
}
add_action('admin_head', 'ampforwp_remove_admin_help');
if(!function_exists('ampforwp_remove_admin_help')){
	function ampforwp_remove_admin_help(){
		if(!is_admin() && !current_user_can('manage_options')){
			return ;
		}
		$screen = get_current_screen();
		if ( 'toplevel_page_amp_options' == $screen->base ) {
			$screen->remove_help_tabs();
		}
	}
}

if(!function_exists('ampforwp_sassy_icon_style')){
	function ampforwp_sassy_icon_style(){
		global $wp_filesystem;
		$css = get_transient('ampforwp_sassy_css');
		if($css == false){
			if(!is_object($wp_filesystem)){
				require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php';
    			require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-direct.php';
    			$wp_filesystem = new WP_Filesystem_Direct( array() );
    		}
			$css = $wp_filesystem->get_contents(AMPFORWP_PLUGIN_DIR."/includes/sassy-style.css");
			set_transient('ampforwp_sassy_css', $css);
		}
		/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
		echo ampforwp_css_sanitizer($css);
	}
}	
if(function_exists('heateor_sss_run')){
	add_action('amp_post_template_css', 'ampforwp_sassy_icon_style'); 
}	
function ampforwp_nofollow_cta_header_link(){
	if(true == ampforwp_get_setting('ampforwp-header-cta-link-nofollow')){	
		echo 'rel=nofollow';
		return;
	}
	return false;
}	

// Generating canonical url when FlexMLS plugin is active.
if(class_exists('flexmlsConnectPageSearchResults')){
   add_action('pre_amp_render_post','ampforwp_flexmls_canonical');
}
function ampforwp_flexmls_canonical(){
   add_filter('wpseo_canonical','ampforwp_flexmls_generate_canonical_url',99,2);
}

function ampforwp_flexmls_generate_canonical_url($canonical,$object){
   $canonical = $object->model->permalink;
   return esc_url($canonical);
}
// Font Selector
if( ! function_exists('ampforwp_font_selector') ) {
	function ampforwp_font_selector( $container ) {
		global $redux_builder_amp;
		$fontFamily = '';
		if(1==ampforwp_get_setting('ampforwp-google-font-switch')){
			return sanitize_text_field($fontFamily);
		}
		if(empty($container)) {
			$container = 'body';
		}
		if ( 'content' == $container && ampforwp_get_setting('amp_font_selector_content_single') && 1 != ampforwp_get_setting('amp_font_selector_content_single') ) {
			$fontFamily = "font-family: '".ampforwp_get_setting('amp_font_selector_content_single')."';"; 
		}
		if ( 'body' == $container && ampforwp_get_setting('amp_font_selector') && 1 != ampforwp_get_setting('amp_font_selector') ) {
			$fontFamily = "font-family: '".ampforwp_get_setting('amp_font_selector')."'";
		}
		return sanitize_text_field($fontFamily);
	}
}
if(class_exists('WPSEO_Options')){
	add_filter('ampforwp_the_content_last_filter','ampforwp_remove_duplicate_canonical',25);
}
function ampforwp_remove_duplicate_canonical($content){
	if( class_exists( 'DOMDocument' ) && ! empty( $content ) && is_string( $content ) ){
		$comp_dom = new DOMDocument();
		@$comp_dom->loadHTML($content);
		$xpath = new DOMXPath( $comp_dom );
	    $count = 0;
	    $nodes = $xpath->query('//link[@rel="canonical"]');
	    $con = '';
	    foreach ($nodes as $node) {
	    	$count++;
	    }
	    if($count>1){
	    	 if(preg_match("/<link\b[^>]*?\brel=[\'\"]canonical[\'\"][^>]*>/", $content, $matches, PREG_OFFSET_CAPTURE)){
			    $content = preg_replace("/<link\b[^>]*?\brel=[\'\"]canonical[\'\"][^>]*>/", "", $content);
			    $content = substr_replace($content, $matches[0][0], $matches[0][1], 0);
			}
	    }
  }
	return $content;
}
// Font URL controller
if ( ! function_exists('ampforwp_font_url') ) {
	function ampforwp_font_url($font_url){
		return apply_filters('ampforwp_font_url', $font_url);
	}
}
//Need to add full short pixel plugin compatibility #3782
if(class_exists('ShortPixelAPI')){
	add_filter( 'ampforwp_the_content_last_filter','ampforwp_short_pixel_cdn');
}
function ampforwp_short_pixel_cdn($content){
	$api_url = get_option('spai_settings_api_url');
	$compress_level = get_option('spai_settings_compress_level');
	if('0'== $compress_level){
		$compress_level = '+q_lossless';
	}
	if('1'== $compress_level){
		$compress_level = '+q_lossy';
	}
	if('2'== $compress_level){
		$compress_level = '+q_glossy';
	}
	$compress_level .= '+ret_img+to_webp/';
	if(!empty($api_url)){
		$content = preg_replace('/<amp-img(.*?)src="([^"]*)"(.*?)width="([^"]*)" height="([^"]*)"([^>]*)>/','<amp-img$1 src="'.$api_url.'/w_$4'.$compress_level.'$2"$3 width="$4" height="$5"$6>',$content);
	}
	return $content;
}
if(ampforwp_get_setting('ampforwp_css_tree_shaking') == true && ampforwp_is_gutenberg_active()){
	add_action('amp_post_template_css','ampforwp_gutenberg_block_styles');
}
if(!function_exists('ampforwp_gutenberg_block_styles')){
	function ampforwp_gutenberg_block_styles(){
		$gutenberg_styles = $block_css = '';
		ob_start();
		wp_print_styles('wp-block-library');
		$block_css .= ob_get_contents();
	    ob_end_clean();
	    preg_match("/href='(.*?)'/", $block_css, $matches);
	    $style_path = explode('?', $matches[1]);
	    $gutenberg_styles = get_transient('ampforwp_gutenberg_styles');
	    if($gutenberg_styles == false){
	    $response = wp_remote_get( $style_path[0] );
	    if( is_array( $response ) && ! is_wp_error( $response ) ){
		   		set_transient('ampforwp_gutenberg_styles', $response['body'], 24 * HOUR_IN_SECONDS );
			}
	    }
		/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
	    echo ampforwp_css_sanitizer($gutenberg_styles);
	}
}

function ampforwp_is_gutenberg_active() {
	$gutenberg    = false;
	$block_editor = false;
	$use_block_editor = '';
	if ( has_filter( 'replace_editor', 'gutenberg_init' ) ) {
		$gutenberg = true;
	}
	if ( version_compare( $GLOBALS['wp_version'], '5.0-beta', '>' ) ) {
		$block_editor = true;
	}
	if ( ! $gutenberg && ! $block_editor ) {
		return false;
	}
	if ( !class_exists('Classic_Editor') ) {
		return true;
	}
	$use_block_editor = ( get_option( 'classic-editor-replace' ) === 'no-replace' );
	return $use_block_editor;
}

add_filter( 'amp_post_template_data', 'ampforwp_pblayout_head_scripts');
$pb_remove_script = array();
function ampforwp_pblayout_head_scripts($data){
   $postId = ampforwp_get_the_ID();
   $ampforwp_pagebuilder_enable = get_post_meta($postId,'ampforwp_page_builder_enable', true);
   if(isset($ampforwp_pagebuilder_enable) && $ampforwp_pagebuilder_enable=="yes"){
      $previousData = get_post_meta($postId,'amp-page-builder');
      $previousData = isset($previousData[0])? $previousData[0]: null;
      $previousData = (str_replace("'", "&apos;", $previousData));
      $totalRows = 1;
      $totalmodules = 1;
      if(!empty($previousData)){
         $jsonData = json_decode($previousData,true);
         if(isset($jsonData['rows']) && count($jsonData['rows'])>0){
            $totalRows = $jsonData['totalrows'];
            $totalmodules = $jsonData['totalmodules'];
            $previousData = wp_json_encode($jsonData);
         }else{
            $jsonData['rows'] = array();
            $jsonData['totalrows']=1;
            $jsonData['totalmodules'] = 1;
            $previousData = wp_json_encode($jsonData);
         }
      }
      $jarr = json_decode($previousData);
      if(isset($jarr->settingdata->scripts_data)){
         $script_data = $jarr->settingdata->scripts_data;
         $content = $data['post_amp_content'];
         $script_slug = '';
         $allscripts = $script_data;
		 /* phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript */
         preg_match_all('/<script(.*?)custom-element=\"(.*?)\"(.*?)src=\"(.*?)\"(.*?)><\/script>/', $allscripts, $matches);
         if($matches){
         	if(isset($matches[2])){
         		$script_slug = $matches[2];
	            foreach ($script_slug as $key => $slug) {
	               if(!preg_match('/'.$slug.'/', $content)){
	                  global $pb_remove_script;
	                  $pb_remove_script[]= esc_attr($slug);
	               }
	            }
	        }
            add_filter( 'ampforwp_the_content_last_filter','ampforwp_remove_unused_pb_amp_script',12);
         }
      }
   }
   return $data;
}
function ampforwp_remove_unused_pb_amp_script($data){
   global $pb_remove_script;
   for($i=0;$i<count($pb_remove_script);$i++){
      $data = preg_replace('/<script(.*?)custom-element=\"'.esc_attr($pb_remove_script[$i]).'\"(.*?)src=\"(.*?)\"(.*?)><\/script>/', '', $data);
   }
   return $data;                 
}

if(class_exists('RankMath')){
	add_filter('ampforwp_modify_the_content','ampforwp_rank_math_nofollow_to_external_link');
}
function ampforwp_rank_math_nofollow_to_external_link($content){
	$rank_math_external_link = RankMath\Helper::get_settings( 'general.nofollow_external_links' );
	if($rank_math_external_link){
		preg_match_all('/<a href="(.*?)">(.*?)<\/a>/', $content, $matches);
		for($i=0;$i<count($matches[1]);$i++){
			$url = $matches[1][$i];
			$is_external = ampforwp_isexternal($url);
			if($is_external){
				$url = esc_url($url);
				$url = str_replace("/", "\/", $url);
				$content = preg_replace('/(<a href="'.$url.'.*")/', '$1 rel="nofollow"', $content);
			}
		}
	}
	return $content;
}

if(class_exists('transposh_plugin')){
	add_action('amp_post_template_css','ampforwp_transposh_plugin_rtl_css');
}
if(!function_exists('ampforwp_transposh_plugin_rtl_css')){
	function ampforwp_transposh_plugin_rtl_css() {
    	 $rtl_lang_arr = array('ar', 'he', 'fa', 'ur', 'yi');
		 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
    	 if(isset($_GET['lang'])){
			// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
	 		if(in_array(esc_attr($_GET['lang']), $rtl_lang_arr)){
	 			if(ampforwp_get_setting('header-position-type') == '1'){?>
					.tg:checked + .hamb-mnu > .m-ctr {
					    margin-right: 0%;
					}
					.m-ctr{
					    margin-right: -100%;
					    float: left;
					}
					<?php } if(ampforwp_get_setting('header-position-type') == '2'){?>
					.tg:checked + .hamb-mnu > .m-ctr {
					    margin-right: calc(100% - <?php echo esc_html(ampforwp_get_setting('header-overlay-width'))?>);
					}
					.m-ctr{
					    margin-right: 100%;
					    float: right;
					}
					<?php }
	 		}
    	}
    }
}


add_filter('ampforwp_the_content_last_filter','ampforwp_remove_unwanted_code',10);
function ampforwp_remove_unwanted_code($content){
// Mediavine validation issue with form and amp-consent #4206
	if(preg_match('/<amp-consent id="mv-consent" layout="nodisplay">(.*?)<\/amp-consent>/s', $content)){
		$content = preg_replace('/<amp-consent id="mv-consent" layout="nodisplay">(.*?)<\/amp-consent>/s', '', $content);
	}
	if(preg_match('/<form class="mv-create-print-form">(.*?)<\/form>/s', $content)){
		$content = preg_replace('/<form class="mv-create-print-form">(.*?)<\/form>/s', '', $content);
	}
	// close #4206
	// Ticket #4539
	if(function_exists('orbital_setup')){
	    if(preg_match('/<script>function orbital_expand_navbar(.*?)<\/script>/', $content)){
	        $content = preg_replace('/<script>function orbital_expand_navbar(.*?)<\/script>/', '', $content);
	    }
	}
	//https://github.com/ahmedkaludi/accelerated-mobile-pages/issues/5643
	//Afterpay Gateway for WooCommerce plugin is causing issue in Amp Validator
	if(preg_match('/<square-placement(.*)<\/square-placement>/', $content)){
		$content = preg_replace('/<square-placement(.*)<\/square-placement>/', '', $content);
	}
	if(preg_match('/<comentario-comments(.*)<\/comentario-comments>/', $content)){
		$content = preg_replace('/<comentario-comments(.*)<\/comentario-comments>/', '', $content);
	}
	if(empty($content)){
		return $content;
	}
  
	if(preg_match('/<a(.*?)\slabel\s(.*?)>/', $content)){
		$content = preg_replace_callback('/<a\b[^>]*>/i', function ($matches) {
			// Only match standalone 'label' attribute, not 'aria-label' or other attributes containing 'label'
			return preg_replace('/(?<!aria-)\blabel\s*=\s*"[^"]*"/i', '', $matches[0]);
		}, $content);
	}
	return $content;
}
add_filter( 'amp_post_template_css', 'ampforwp_add_penci_block_css' );
function ampforwp_add_penci_block_css() {
	if(function_exists('penci_soledad_theme_setup')){
?>
.penci-biggrid-wrapper{margin-bottom:20px}.penci-clearfix{clear:both}.penci-homepage-title.pcalign-center{text-align:center}.penci-border-arrow{position:relative;line-height:1.3;margin-left:5px;margin-right:5px;margin-top:5px}.penci-homepage-title{margin-bottom:30px;text-align:center;clear:both;background:0 0}.penci-border-arrow .inner-arrow{border:1px solid #313131;background:#fff;position:relative;display:block;text-transform:uppercase;padding:8px 12px 7px;z-index:3;font-size:14px}.penci-biggrid-inner{overflow:hidden;display:block}.penci-bgstyle-1 .penci-dflex{margin-left:-10px;margin-right:-10px;width:calc(100% + 20px)}.penci-dflex{display:-webkit-flex;-webkit-flex-flow:row wrap;align-items:flex-start}.penci-bgstyle-1 .penci-dflex .penci-bgitem{padding:0 10px;margin-bottom:20px}.penci-bgmain{display:flex;flex-direction:column;position:relative}.pcbg-thumb,.penci-bgitin{position:relative;overflow:hidden}.pcbg-bgoverlay,.pcbg-bgoverlaytext,.pcbg-cbgoverlap,.pcbg-content{position:absolute;left:0;right:0;top:0;bottom:0;width:100%;height:100%;display:block}.pcbg-content-flex{display:flex;height:100%;width:100%;z-index:1;align-items:flex-end}.penci-biggrid-wrapper .pcbg-content-inner{z-index:5}.elementor *,.elementor :after,.elementor :before{box-sizing:border-box}.pcbg-content-inner{padding:20px;position:relative;z-index:1;display:block;width:100%}.pcbg-content-inner .cat>a.penci-cat-name,.pcbg-content-inner .cat>a.penci-cat-name:hover,.penci-bgrid-content-on .pcbg-content-inner .pcbg-title,.penci-bgrid-content-on .pcbg-content-inner .pcbg-title a,.penci-bgrid-content-on .pcbg-content-inner .pcbg-title a:hover,.penci-bgrid-content-on .pcbg-meta,.penci-bgrid-content-on .pcbg-meta span,.penci-bgrid-content-on .pcbg-meta span a{color:#fff}.penci-biggrid-data .pcbg-content-inner .pcbg-title,.penci-biggrid-data .pcbg-content-inner .pcbg-title a,.penci-biggrid-data .pcbg-content-inner .pcbg-title a:hover{letter-spacing:0;text-decoration:none;margin:0}.grid-post-box-meta a,.grid-post-box-meta span,.penci-biggrid-data .pcbg-content-inner .pcbg-title a{font-size:inherit}.post-entry .cat>a.penci-cat-name,.post-entry .grid-mixed .mixed-detail a,.post-entry .grid-post-box-meta a,.post-entry .header-standard .author-post span a,.post-entry .header-standard h2 a,.post-entry .item-related a,.post-entry .overlay-author a,.post-entry .overlay-header-box .overlay-title a,.post-entry .penci-featured-cat-seemore a,.post-entry .penci-grid li .item h2 a,.post-entry .penci-magazine-title a,.post-entry .penci-masonry .item-masonry h2 a,.post-entry .penci-post-box-meta .penci-box-meta a,.post-entry .penci-readmore-btn a{text-decoration:none}.cat>a.penci-cat-name:last-child{margin-right:0;padding:0}.cat>a.penci-cat-name:first-child{margin-left:0}.post-entry a:hover,.wpb_text_column a:hover{text-decoration:underline}.cat>a.penci-cat-name{font-size:13px;color:var(--pcaccent-cl);line-height:1.2;margin:0 15px 5px 0;padding-right:10px;display:inline-block;vertical-align:top;background:0 0;transition:.3s;-webkit-transition:.3s;-moz-transition:.3s;font-weight:400;position:relative;text-decoration:none}.penci-smalllist{display:block;width:100%;clear:both;--pcsl-hgap:20px;--pcsl-bgap:20px;--pcsl-between:20px;--pcsl-dwidth:15%;overflow:hidden}.pcsl-inner,.swiper.pcsl-inner{margin-left:calc(var(--pcsl-hgap) * -1 / 2);margin-right:calc(var(--pcsl-hgap) * -1 / 2);width:calc(100% + var(--pcsl-hgap));display:flex;flex-flow:row wrap;align-items:flex-start}.pcsl-inner .pcsl-item{padding:0 calc(var(--pcsl-hgap)/ 2);width:100%;margin-bottom:var(--pcsl-bgap)}.pcsl-col-3 .pcsl-item,.penci-grid-col-3 .penci-dflex .penci-bgitem{flex:0 0 33.33333%}.pcsl-inner .pcsl-iteminer{display:-webkit-flex;display:-ms-flexbox;-ms-flex-flow:row wrap;flex-flow:row wrap;align-items:flex-start}.pcsl-inner .pcsl-thumb{width:32%;order:2;transition:opacity .3s;position:relative}.pcsl-imgpos-left .pcsl-content{padding-right:0}.pcsl-inner .pcsl-content{width:68%;padding:0 var(--pcsl-between);order:3}.pcsl-inner .pcsl-content .pcsl-title{font-size:16px;color:var(--pcheading-cl);font-family:var(--pchead-font);font-weight:var(--pchead-wei);line-height:1.4;display:block}.pcsl-inner .pcsl-content .pcsl-title a{font-size:inherit;color:inherit;font-family:inherit;font-weight:inherit;text-decoration:none}.pcsl-inner .grid-post-box-meta,.post-entry .pcsl-inner .grid-post-box-meta{margin-top:8px;line-height:1.3;font-size:14px}.grid-post-box-meta span{color:#888}
<?php
	}
}
add_filter('ampforwp_the_content_last_filter','ampforwp_penci_widget_block_support',10);
function ampforwp_penci_widget_block_support($content){
	if(function_exists('penci_soledad_theme_setup')){
		$pattern = '/<a\s+([^>]*?)data-bgset="([^"]+)"([^>]*?)>/i';
		$replacement = function($matches) {
			$a_tag_start = $matches[0]; 
			$data_bgset = $matches[2];  
			$width = '60';
			$height = '40';
			$amp_img_tag = '<amp-img src="' . esc_url( $data_bgset ) . '" width="' . esc_attr( $width ) . '" height="' . esc_attr( $height ) . '" layout="responsive"></amp-img>';

			return preg_replace('/<a.*?>/', '<a>', $a_tag_start) . $amp_img_tag;
		};
		$content = preg_replace_callback($pattern, $replacement, $content); 
		$pattern = '/<div\s+([^>]*?)data-bgset="([^"]+)"([^>]*?)>/i';
		$replacement = function($matches) {
			$a_tag_start = $matches[0]; 
			$data_bgset = $matches[2];  
			$width = '600';
			$height = '400';
			$amp_img_tag = '<amp-img src="' . esc_url( $data_bgset ) . '" width="' . esc_attr( $width ) . '" height="' . esc_attr( $height ) . '" layout="responsive"></amp-img>';
			return preg_replace('/<a.*?>/', '<a>', $a_tag_start) . $amp_img_tag;
		};
		
		$content = preg_replace_callback($pattern, $replacement, $content); 
		return $content;
	}
	return $content;
}
add_filter('ampforwp_the_content_last_filter','ampforwp_include_required_scripts',12);
function ampforwp_include_required_scripts($content){
	$allscripts = $is_script = '';
	$comp_to_remove_arr = array();
	preg_match_all('/<\/amp-(.*?)>/', $content, $matches);
	if(isset($matches[1][0])){
		$amp_comp = $matches[1];
		$comp_to_remove_json = get_transient('ampforwp_amp_exclude_custom_element');
		$comp_to_include_json = get_transient('ampforwp_amp_included_custom_element');
		if($comp_to_remove_json){
			$comp_to_remove_arr = json_decode($comp_to_remove_json, true);
		}
		$comp_to_include_arr = array();
		if($comp_to_include_json){
			$comp_to_include_arr = json_decode($comp_to_include_json, true);
		}
		$comp = '';
		for($i=0;$i<count($amp_comp);$i++){
			$comp = $amp_comp[$i];
			if(!preg_match('/story/', $comp)){
				$script_ver = 'latest';
				if($comp == 'auto-ads' || $comp == 'ad'){
					$script_ver = '0.1';
				}
				if($comp=='state' || $comp=='img'){
					$comp = 'bind';
				}
				if($comp == 'img'){
					$comp_url = "https://cdn.ampproject.org/v0/amp-bind-latest.js";
				}else{
					$comp_url = 'https://cdn.ampproject.org/v0/amp-'.esc_attr($comp).'-'.esc_attr($script_ver).'.js';
				}
				$is_script = false;
				$check_comp = 'amp-'.esc_attr($comp);
				if(!in_array($comp, $comp_to_remove_arr) && !in_array($comp, $comp_to_include_arr) ){
					$ce_valid_scripts = ampforwp_valid_amp_componet_script();
					$is_script = in_array($check_comp, $ce_valid_scripts);
					if($comp=='state'){
						$is_script = true;
					}
					if($comp=='embed'){
						$is_script = false;
					}
					if($is_script==false){
						if ( ini_get( 'allow_url_fopen' ) ) {
							$headers = get_headers($comp_url);
							if(isset($headers[0])){
								$is_script = stripos($headers[0], "200 OK") ? TRUE : FALSE;
							}
						}
					}
					if($is_script){
						$comp_to_include_arr[] = $comp;
						$inc_json = wp_json_encode($comp_to_include_arr);
						set_transient('ampforwp_amp_included_custom_element',$inc_json, 30 * DAY_IN_SECONDS);
					}else{
						$comp_to_remove_arr[] = $comp;
						$ex_json = wp_json_encode($comp_to_remove_arr);
						set_transient('ampforwp_amp_exclude_custom_element',$ex_json, 30 * DAY_IN_SECONDS);
					}
				}
				$comp_to_include_arr = apply_filters('ampforwp_amp_custom_element_to_include',$comp_to_include_arr);
				if(in_array($comp, $comp_to_include_arr) && $comp_url != ''){
					if(!preg_match('/<script(\s|\sasync\s)custom-element="amp-'.esc_attr($comp).'"(.*?)>(.*?)<\/script>/s', $content, $matches)){
						$script_tag = '<head><script custom-element="amp-'.esc_attr($comp).'" src="'.esc_url($comp_url).'" async></script>';
						$content =  str_replace('<head>', $script_tag, $content);
					}
				}
			}
		}
	}
	if (empty($content)) {
		return '';
	}
	$comp_dom = new DOMDocument();
	@$comp_dom->loadHTML($content);
	$xpath       = new DOMXPath( $comp_dom );
	$elements = $xpath->query("*/script[@custom-element]");
	$component_arr = array();
	$elements_arr = array();
    if (!is_null($elements)) {
	  foreach ($elements as $element) {
	    $component_arr[]= $element->getAttribute('custom-element');
	    $elements_arr[] = $comp_dom->saveHTML($element);
	  }
	}
	if (!is_null($elements)) {
		if(!empty($component_arr)){
			$excl_arr = array('amp-bind','amp-access','amp-analytics','amp-access-laterpay','amp-access-poool','amp-dynamic-css-classes','amp-fx-collection','amp-inputmask','amp-lightbox-gallery','amp-inputmask','amp-mustache','amp-subscriptions-google','amp-subscriptions','amp-video-docking','amp-story');
			$inc_elem_arr = array();
			for($r=0;$r<count($comp_to_remove_arr);$r++){
				$inc_elem_arr[] = 'amp-'.$comp_to_remove_arr[$r];
			}
			for($i=0;$i<count($component_arr);$i++){
				if(isset($component_arr[$i])){
					$component = $component_arr[$i];
					if(!in_array($component,$excl_arr)){
						if(!preg_match("/<\/$component>/",  $content) && !$is_script){
							$remove_comp = $elements_arr[$i];
							$content = str_replace($remove_comp, '', $content);
						}else if(in_array($component, $inc_elem_arr )){
							for($rc=0;$rc<count($inc_elem_arr);$rc++){
								$rcomp = $inc_elem_arr[$rc];
								if(preg_match('/<script(\s|\sasync\s)custom-element="'.esc_attr($rcomp).'"(.*?)>(.*?)<\/script>/s', $content,$rmc)){
									if(isset($rmc[0])){
										$remove_comp = $rmc[0];
										$content = str_replace($remove_comp, '', $content);
									}
								}
							}
						}
					}
					// REMOVING DUPLICATE SCRIPT.
					$count_elem = array_count_values($component_arr)[$component];
					if($count_elem>1){
						$content = preg_replace('/<script(\s|\sasync\s)custom-element="'.esc_attr($component).'"(.*?)>(.*?)<\/script>/s','',$content,1,$component_arr[$i]);
					}
				}
			}
		}
	}
	//OTHER COMPONENT CHECK 
	$other_comp_arr = array('amp-mustache'=>'amp-mustache','amp-embed'=>'amp-ad','form'=>'amp-form','amp-access'=>'amp-access','amp-fx'=>'amp-fx-collection');
	if (preg_match('/<amp-carousel(.*?)lightbox(.*?)>/', $content)) {
		 $other_comp_arr['amp-carousel'] = 'amp-lightbox-gallery';
	}
	foreach ($other_comp_arr as $key => $value) {
		$ocomp = $value;
		$celem = 'element';
		if($ocomp=='amp-mustache'){
			$celem = 'template';
		}
		if(preg_match('/(type|template|id)="('.$ocomp.')"/', $content) || preg_match("/<\/$key>/",  $content) || preg_match("/amp-fx/",  $content)){
			if(!preg_match('/<script(\s|\sasync\s)custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'"(.*?)>(.*?)<\/script>/s', $content)){
				$o_comp_url = 'https://cdn.ampproject.org/v0/'.esc_attr($ocomp).'-'.esc_attr($script_ver).'.js';
				$script_tag = '<head><script custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'" src="'.esc_url($o_comp_url).'" async></script>';
				$content =  str_replace('<head>', $script_tag, $content);
			}
		}
	}

	$amp_video = $xpath->query("//amp-video");
	foreach($amp_video as $node) {
		if($node->hasAttribute('dock')){
			if(ampforwp_get_setting('ampforwp-amp-video-docking') || ampforwp_get_setting('amp-theme-video-docking')){
				$celem = 'element';
				$ocomp = 'amp-video-docking';
				if(!preg_match('/<script(\s|\sasync\s)custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'"(.*?)>(.*?)<\/script>/s', $content)){
					$o_comp_url = 'https://cdn.ampproject.org/v0/'.esc_attr($ocomp).'-'.esc_attr($script_ver).'.js';
					$script_tag = '<head><script custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'" src="'.esc_url($o_comp_url).'" async></script>';
					$content =  str_replace('<head>', $script_tag, $content);
				}
			}else{
				if(preg_match('/<amp-video(.*?) dock|dock=">/', $content)){
					$content = preg_replace('/<amp-video(.*?) dock|dock=">/','<amp-video $1>', $content);
				}
			}
		}
	}

	$amp_video_iframe = $xpath->query("//amp-video-iframe");
	foreach($amp_video_iframe as $node) {
		if($node->hasAttribute('dock')){
			if(ampforwp_get_setting('ampforwp-amp-video-docking') || ampforwp_get_setting('amp-theme-video-docking')){
				$celem = 'element';
				$ocomp = 'amp-video-docking';
				if(!preg_match('/<script(\s|\sasync\s)custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'"(.*?)>(.*?)<\/script>/s', $content)){
					$o_comp_url = 'https://cdn.ampproject.org/v0/'.esc_attr($ocomp).'-'.esc_attr($script_ver).'.js';
					$script_tag = '<head><script custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'" src="'.esc_url($o_comp_url).'" async></script>';
					$content =  str_replace('<head>', $script_tag, $content);
				}
			}else{
				if(preg_match('/<amp-video-iframe(.*?) (dock|dock=")>/', $content)){
					$content = preg_replace('/<amp-video-iframe(.*?) (dock|dock=")>/','<amp-video-iframe $1>', $content);
				}
			}
		}
	}

	$amp_youtube = $xpath->query("//amp-youtube");
	foreach($amp_youtube as $node) {
		if($node->hasAttribute('dock')){
			if(ampforwp_get_setting('ampforwp-amp-video-docking') || ampforwp_get_setting('amp-theme-video-docking')){
				$celem = 'element';
				$ocomp = 'amp-video-docking';
				if(!preg_match('/<script(\s|\sasync\s)custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'"(.*?)>(.*?)<\/script>/s', $content)){
					$o_comp_url = 'https://cdn.ampproject.org/v0/'.esc_attr($ocomp).'-'.esc_attr($script_ver).'.js';
					$script_tag = '<head><script custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'" src="'.esc_url($o_comp_url).'" async></script>';
					$content =  str_replace('<head>', $script_tag, $content);
				}
			}else{
				if(preg_match('/<amp-youtube(.*?) dock|dock=">/', $content)){
					$content = preg_replace('/<amp-youtube(.*?) dock|dock=">/','<amp-youtube $1>', $content);
				}
			}
		}
	}

	$amp_brid_player = $xpath->query("//amp-brid-player");
	foreach($amp_brid_player as $node) {
		if($node->hasAttribute('dock')){
			if(ampforwp_get_setting('ampforwp-amp-video-docking') || ampforwp_get_setting('amp-theme-video-docking')){
				$celem = 'element';
				$ocomp = 'amp-video-docking';
				if(!preg_match('/<script(\s|\sasync\s)custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'"(.*?)>(.*?)<\/script>/s', $content)){
					$o_comp_url = 'https://cdn.ampproject.org/v0/'.esc_attr($ocomp).'-'.esc_attr($script_ver).'.js';
					$script_tag = '<head><script custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'" src="'.esc_url($o_comp_url).'" async></script>';
					$content =  str_replace('<head>', $script_tag, $content);
				}
			}else{
				if(preg_match('/<amp-brid-player(.*?) dock|dock=">/', $content)){
					$content = preg_replace('/<amp-brid-player(.*?) dock|dock=">/','<amp-brid-player $1>', $content);
				}
			}
		}
	}
	$amp_brightcove = $xpath->query("//amp-brightcove");
	foreach($amp_brightcove as $node) {
		if($node->hasAttribute('dock')){
			if(ampforwp_get_setting('ampforwp-amp-video-docking') || ampforwp_get_setting('amp-theme-video-docking')){
				$celem = 'element';
				$ocomp = 'amp-video-docking';
				if(!preg_match('/<script(\s|\sasync\s)custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'"(.*?)>(.*?)<\/script>/s', $content)){
					$o_comp_url = 'https://cdn.ampproject.org/v0/'.esc_attr($ocomp).'-'.esc_attr($script_ver).'.js';
					/* phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript */
					$script_tag = '<head><script custom-'.esc_attr($celem).'="'.esc_attr($ocomp).'" src="'.esc_url($o_comp_url).'" async></script>';
					$content =  str_replace('<head>', $script_tag, $content);
				}
			}else{
				if(preg_match('/<amp-brightcove(.*?) dock|dock=">/', $content)){
					$content = preg_replace('/<amp-brightcove(.*?) dock|dock=">/','<amp-brightcove $1>', $content);
				}
			}
		}
	}
	$allscripts = apply_filters( 'ampforwp_modify_scripts', $allscripts);
	// Scripts added from Options panel should have higher priority #4064
	if( $allscripts || (ampforwp_get_setting('amp-header-text-area-for-html') && ampforwp_get_setting('amp-header-text-area-for-html')!="")) {
	   $allscripts .= ampforwp_get_setting('amp-header-text-area-for-html');
	   /* phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript */
      preg_match_all('/<script(.*?)custom-element=\"(.*?)\"(.*?)src=\"(.*?)\"(.*?)>(.*?)<\/script>/s', $allscripts, $rep);
      if($rep){
		  	if(isset($rep[2]) && isset($rep[4])){
		      	$script_slug = $rep[2];
		      	$script_url = $rep[4];
		      	for($s=0;$s<count($script_slug);$s++){
		      		$slug = $script_slug[$s];
		      		$surl = $script_url[$s];
		      		if(preg_match('/amp/', $slug) && preg_match('/https/', $surl)){
			         	if(preg_match('/<script(.*?)custom-element=\"'.esc_attr($slug).'\"(.*?)src=\"(.*?)\"(.*?)>(.*?)<\/script>/', $content, $conmatch)){
			         		if(isset($conmatch[3]) && $conmatch[3]!=""){
			         			$rep_url = $conmatch[3];
			         			if(preg_match('/https/', $rep_url)){
									$content = str_replace($rep_url, $surl, $content);
			         			}
			         		}
			         	}
			         }
		        }
		    }
      	}
   	}
	return $content;
}	
if(!function_exists('ampforwp_get_retina_image_settings')){
	function ampforwp_get_retina_image_settings($width,$height){
		$data['width'] 	= intval($width);
		$data['height'] = intval($height);
		if ( 1 == ampforwp_get_setting('ampforwp-retina-images') ) {
			$resolution = 2;
			if (ampforwp_get_setting('ampforwp-retina-images-res')) {
				$resolution = ampforwp_get_setting('ampforwp-retina-images-res');
			}
			$width = $width * $resolution;
			$height = $height * $resolution;
			$data['width'] 	= intval($width);
			$data['height'] = intval($height);
		}
		return $data;
	}
}

if(!function_exists('ampforwp_add_fallback_element')){
	function ampforwp_add_fallback_element($content='',$tag=''){
		preg_match_all('/<'.$tag.' (.*?)<\/'.$tag.'>/', $content, $matches);
		if(!empty($matches) && false == ampforwp_get_setting('ampforwp-amp-convert-to-wp')){
			if(isset($matches[0])){
				$con = "";
				for($i=0;$i<count($matches[0]);$i++){
					$match = $matches[0][$i];
					$m_content = $matches[1][$i];
					$m_content = ampforwp_imagify_webp_compatibility($m_content);
					$m_content = ampforwp_ewww_webp_compatibility($m_content);
					$m_content = ampforwp_webp_express_compatibility($m_content);
					$m_content = ampforwp_litespeed_webp_compatibility($m_content);
					$m1_content = ampforwp_set_default_fallback_image($matches[1][$i]);
					preg_match_all('/src="(.*?)"/', $m1_content,$fimgsrc);
					preg_match_all('/width="(.*?)"/', $m1_content,$fimgwidth);
					preg_match_all('/height="(.*?)"/', $m1_content,$fimgheight);
					preg_match_all('/alt="(.*?)"/', $m1_content,$fimgalt);
					if((isset($fimgsrc[1][0]) && preg_match_all('/http/', $fimgsrc[1][0],$fbi)) && isset($fimgwidth[1][0]) && isset($fimgheight[1][0])){
					$data['src'] 	= $fimgsrc[1][0];
					$data['width'] 	= $fimgwidth[1][0];
					$data['height'] = $fimgheight[1][0];
					if(isset($fimgalt[1][0])){
						$data['alt'] 	= $fimgalt[1][0];
					}else{
						$data['alt'] 	= '';
					}
					$fallback_data = apply_filters('ampforwp_fallback_image_params',$data);
					$fsrc 	= $fallback_data['src'];
					$fwidth = $fallback_data['width'];
					$fheight= $fallback_data['height'];
					$falt 	= $fallback_data['alt'];
					$ssrc = $fimgsrc[0][0];
					$swidth = $fimgwidth[0][0];
					$sheight = $fimgheight[0][0];
					$salt = '';
					if(isset($fimgalt[0][0])){
						$salt = $fimgalt[0][0];
					}
					$src_rep = 'src="'.esc_url($fsrc).'"';
					$width_rep = 'width="'.intval($fwidth).'"';
					$height_rep = 'height="'.intval($fheight).'"';
					$alt_rep = 'alt="'.esc_attr($falt).'"';
					$m1_content = str_replace($ssrc, $src_rep, $m1_content);
					$m1_content = str_replace($swidth, $width_rep, $m1_content);
					$m1_content = str_replace($sheight, $height_rep, $m1_content);
					$m1_content = str_replace($salt, $alt_rep, $m1_content);
					if(function_exists('rocket_activation')){
						$m1_content = preg_replace('/srcset="(.*?)"/', '', $m1_content);
					}
					if(has_action('penci_loop_product_image')){
						$fallback_img = "<amp-img data-hero ".$m_content."</amp-img>";
					}else{
						$fallback_img = "<amp-img data-hero ".$m_content."<amp-img fallback data-hero ".$m1_content."</amp-img></amp-img>";//$m_content, $m1_content escaped above.
					}
					$content = str_replace("$match", $fallback_img, $content);
				}
				}
			}
		}
		return $content;
	}
}


// added fix for youtube video not displaying on AMP using Elementor #5322
add_filter('ampforwp_modify_the_content','amp_youtube_the_content');

function amp_youtube_the_content($content){
	/* Check if youtube embed plugin is active
	This is the solution for facade mode issue
	if facade mode is enabled in embed youtube plugin then video was not working so this is the 
	solution for that issue
	*/
	if(is_plugin_active('youtube-embed-plus/youtube.php')){
		$youtube_all_opts = get_option('youtubeprefs_alloptions');
		if(!empty($youtube_all_opts) && isset($youtube_all_opts['facade_mode'])){
			if($youtube_all_opts['facade_mode'] == 1){
				preg_match_all('#<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\">(.*?)<\/figure>#is', $content, $video_matches);
				if(!empty($video_matches) && is_array($video_matches)){
					foreach ($video_matches as $vmkey => $vmvalue) {
						if(is_array($vmvalue)){
							foreach ($vmvalue as $vmkey1 => $vmvalue1) {
								if(!empty($vmvalue1)){
									$dochtml = new DOMDocument();
									$dochtml->loadHTML($vmvalue1);
									$div_tags = $dochtml->getElementsByTagName('div');
									if(!empty($div_tags)){
										foreach($div_tags as $div_tag) {
											$facade_src = $div_tag->getAttribute('data-facadesrc');
											if(!empty($facade_src)){
												$get_id = get_video_id_from_url($facade_src);
												$content_html = '<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
					<amp-iframe width="800" height="450" src="'.$facade_src.'" class="__youtube_prefs__  epyt-is-override  no-lazyload amp-wp-enforced-sizes" sandbox="allow-scripts allow-same-origin allow-popups allow-forms allow-top-navigation" sizes="(min-width: 800px) 800px, 100vw"><div placeholder="" class="amp-wp-iframe-placeholder"></div></amp-iframe>
					</div></figure>';
													$content = str_replace($vmvalue1, $content_html, $content);
											} // facade_src if end
										} // div_tags foreach end
									} // div_tags if end 
								} // vmvalue1 if end
							} // vmvalue foreach end
						} // vmvalue if end
					} // video_matches foreach end
				} // video_matches if end
			} // facade_mode if end
		} // youtube_all_opts if end
	} // is_plugin_active if end


	// checking is Elementor is installed and activated
	if ( did_action( 'elementor/loaded' ) ) {
			preg_match_all('/<div\s+class="(.*?)elementor-widget-video"(.*?)data-settings=\'(.*?)\'\sdata-widget_type="video.default">/', $content, $matches);
				foreach($matches[3] as $video){
					$video_attr = json_decode($video);
					$get_url = $video_attr->youtube_url;
					$get_id = get_video_id_from_url($get_url);
					if(ampforwp_get_setting('ampforwp-amp-video-lightbox')==true)
					{
						$content_html=preg_replace('/<div\s+class="(.*?)elementor-widget-video"(.*?)data-settings=\'(.*?)\'\sdata-widget_type="video.default">/','<amp-lightbox id="open-video'.esc_attr($get_id).'" layout="nodisplay">
						<div class="amp-lightbox-video" on="tap:open-video'.esc_attr($get_id).'.close,btn-play'.esc_attr($get_id).'.show" role="button" tabindex=0 aria-label="Close Video">
						<a title="close" class="lb-x" href="#" on="tap:open-video'.esc_attr($get_id).'.close,btn-play'.esc_attr($get_id).'.show" role="button" tabindex=0></a>
						<div class="amp-video-box"><amp-youtube data-videoid="'.esc_attr($get_id).'" layout="responsive" width="480" height="270"></amp-youtube></div></div></amp-lightbox>
						<div class="amp-video-img" id="btn-play'.esc_attr($get_id).'" on="tap:video.show, video.play, btn-play'.esc_attr($get_id).'.hide,open-video'.esc_attr($get_id).'" role="button"  aria-label="Play Video">
						<amp-img alt="Video" src="http://i3.ytimg.com/vi/'.esc_attr($get_id).'/hqdefault.jpg" width="480" height="270" layout="responsive"></amp-img>
						<div class="amp-video-play-on-image"></div>
						</div>', $content);
			
					}
					else
					{
						$content_html = preg_replace('/<div\s+class="(.*?)elementor-widget-video"(.*?)data-settings=\'(.*?)\'\sdata-widget_type="video.default">/','<amp-youtube 
						data-videoid="'.esc_attr($get_id).'" 
						layout="responsive"
						width="480" height="270"></amp-youtube>', $content);
						}
					return $content_html;
				}
	}
	return $content;
}

 function get_video_id_from_url( $url ) {
	$short_url_host = 'youtu.be';
	$video_id = false;
	$parsed_url = parse_url( $url );
	
	if(!isset($parsed_url['host'])){
		$parsed_url['host'] = '';
	}
	if ($short_url_host === substr( $parsed_url['host'], -strlen($short_url_host ) ) ) {
		// youtu.be/{id}
		$parts = explode( '/', $parsed_url['path'] );
		if ( ! empty( $parts ) ) {
			$video_id = $parts[1];
		}
	} else {
		// ?v={id} or ?list={id}
		if(isset($parsed_url['query'])){
		  parse_str( $parsed_url['query'], $query_args );
		}
		
		if ( isset( $query_args['v'] ) ) {
			if ( false !== strpos( $query_args['v'], '?' ) ) {
				$video_id = strtok( $query_args['v'], '?' );
			}
			else{
				$video_id = $query_args['v'];
			}
		}
	}

	if ( empty( $video_id ) ) {
		// /(v|e|embed)/{id}
		$parts = explode( '/', $parsed_url['path'] );

		if ( in_array( $parts[1], array( 'v', 'e', 'embed' ) ) ) {
			$video_id = $parts[2];
		}
	}

	return $video_id;
}

if(!function_exists('ampforwp_imagify_webp_compatibility')){
	function ampforwp_imagify_webp_compatibility($content){
		if(function_exists('_imagify_init')){
			preg_match_all('/src="(.*?)"/', $content,$src);
			$imageify_opt = get_option( 'imagify_settings' );
			$convert_to_webp = false;
			if(isset($imageify_opt['convert_to_webp'])){
				$convert_to_webp = $imageify_opt['convert_to_webp'];
			}
			$display_webp = false;
			if(isset($imageify_opt['display_webp'])){
				$display_webp = $imageify_opt['display_webp'];
			}
			if($convert_to_webp && $display_webp){
				$img_url = esc_url($src[1][0]);
				if(!preg_match('/\.webp/', $img_url)){
					$rep_url = esc_url($src[1][0]).".webp";
					if(preg_match('/http(.*)\/wp-content\/uploads/', $rep_url)){
						$upload_dir = wp_upload_dir()['basedir'];
						$img_file = preg_replace('/http(.*)\/wp-content\/uploads/', $upload_dir, $rep_url);
						if(file_exists($img_file)){
							$content = str_replace($img_url, $rep_url, $content);
						}
					}
				}
			}
		}
		$content = str_replace('.webp.webp','.webp',$content);
		return $content;
	}
}
if(!function_exists('ampforwp_set_default_fallback_image')){
	function ampforwp_set_default_fallback_image($content){
		if(!function_exists('_imagify_init') && !function_exists('ewww_image_optimizer_webp_initialize') && !has_action('penci_loop_product_image')){
			preg_match_all('/src="(.*?)"/', $content,$cc); // need to check extenstion for fallback.
			if(isset($cc[1][0])){
				$img = $cc[1][0];
				$defaul_fallback_img = ampforwp_get_setting('ampforwp_default_fallback_image');
				if(isset($defaul_fallback_img['url']) && $defaul_fallback_img['url']!=''){
					$defaul_fallback_img = esc_url($defaul_fallback_img['url']);
					$content = str_replace($img, $defaul_fallback_img, $content); // need to change fallback extenstion.
				}
			}

		}
		return $content;
	}
}
if(!function_exists('ampforwp_ewww_webp_compatibility')){
function ampforwp_ewww_webp_compatibility($content){
		if(defined( 'EWWW_IO_CLOUD_PLUGIN' )){
			preg_match_all('/src="(.*?)"/', $content,$src);
			if(isset($src[1][0])){
				$img_url = esc_url($src[1][0]);
				if(!preg_match('/\.webp/', $img_url)){
					$rep_url = esc_url($src[1][0]).".webp";
					if(preg_match('/http(.*)\/wp-content\/uploads/', $rep_url)){
						$upload_dir = wp_upload_dir()['basedir'];
						$img_file = preg_replace('/http(.*)\/wp-content\/uploads/', $upload_dir, $rep_url);
						if(file_exists($img_file)){
							$content = str_replace($img_url, $rep_url, $content);
						}
					}
				}
			}
		}
		$content = str_replace('.webp.webp','.webp',$content);
		return $content;
	}
} 

if(!function_exists('ampforwp_check_image_existance')){
	function ampforwp_check_image_existance($image){
		if(preg_match('/wp-content\/uploads/', $image)){
			$img_arr = explode('wp-content', $image);
			if(!empty($img_arr) && isset($img_arr[1])){
				$img = WP_CONTENT_DIR.$img_arr[1];
				if(!file_exists($img)){
					if(preg_match('/\d+x\d+/', $image,$ma)){
						$t_sizes = explode('x', $ma[0]);
						$width = $t_sizes[0];
						$height = $t_sizes[1];
						$image = preg_replace('/-\d+x\d+/','', $image);
						$resize = ampforwp_aq_resize( $image, $width , $height , true, false, true );
						if(isset($resize[0])){
							$image = $resize[0];
						}
					}
				}
			}
		}
		return $image;
	}
}

if (function_exists('themify_builder_activate')) {
	add_filter('ampforwp_modify_the_content','ampforwp_themify_compatibility');
}
function ampforwp_themify_compatibility($content){
	$get_data =  get_post_meta(ampforwp_get_the_ID(),'_themify_builder_settings_json',true);
	if($get_data){
		$decode = json_decode($get_data,true);
		$cols = '';
		for($i=0;$i<count($decode);$i++){
		if(isset($decode[$i]['cols'])){
			$cols = $decode[$i]['cols'];
		}
		for($j=0;$j<count($cols);$j++){
			if (isset($cols[$j]['modules'])) {
			$modules = $cols[$j]['modules'];
			for($k=0;$k<count($modules);$k++){
				foreach ($modules as $key => $value) {
					foreach ($value['mod_settings'] as $key => $val) {
						$content.=$val;
					}
				}
			}
			}
	    }
		}
	}
	return $content;
}

add_action( 'wp_ajax_ampforwp_referesh_related_post', 'ampforwp_referesh_related_post' );
function ampforwp_referesh_related_post() {
	global $wpdb;

	if (
		! isset($_POST['verify_nonce']) ||
		! wp_verify_nonce($_POST['verify_nonce'], 'ampforwp_refresh_related_poost')
	) {
		wp_send_json(array('status' => 403, 'message' => esc_html__('User request is not allowed', 'accelerated-mobile-pages')));
	}

	// Clear transient cache
	delete_option( '_ampforwp_get_post_percent' );

	// Fetch up to 30 published posts without the meta key
	$post_ids = $wpdb->get_col("
		SELECT p.ID
		FROM {$wpdb->posts} p
		LEFT JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id AND pm.meta_key = 'ampforwp-amp-on-off'
		WHERE pm.post_id IS NULL
		AND p.post_status = 'publish'
		AND p.post_type = 'post'
		ORDER BY p.ID ASC
		LIMIT 30
	");

	// Bulk insert default meta value
	if (!empty($post_ids)) {
		$values = array();
		foreach ($post_ids as $post_id) {
			$values[] = $wpdb->prepare("(%d, %s, %s)", $post_id, 'ampforwp-amp-on-off', 'default');
		}
		$values_sql = implode(',', $values);
		$wpdb->query("INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value) VALUES $values_sql");
	}

	// Return updated percent
	$data['response'] = ampforwp_get_post_percent();
	wp_send_json($data);
}


// HIDE/SHOW TAG AND CATEGORY #4326
function ampforwp_save_taxonomy_meta($term_id){
	/* phpcs:ignore WordPress.Security.NonceVerification.Missing */
	if(isset($_POST['amp_taxonomy'])){
		/* phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
		$cat_status = sanitize_text_field($_POST['amp_taxonomy']);
		/* phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
		$hide_tax = sanitize_text_field($_POST['hide_tax']);
		add_term_meta($term_id, 'amp_taxonomy', $cat_status );
		add_term_meta( $term_id,'amp_hide_tax', $hide_tax);
	}
}
function ampforwp_update_taxonomy_meta($term_id, $term_id1){
	/* phpcs:ignore WordPress.Security.NonceVerification.Missing */
	if(isset($_POST['amp_taxonomy'])){
		/* phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
		$cat_status = sanitize_text_field($_POST['amp_taxonomy']);
		/* phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
		$hide_tax = sanitize_text_field($_POST['hide_tax']);
		update_term_meta( $term_id,'amp_taxonomy', $cat_status);
		update_term_meta( $term_id,'amp_hide_tax', $hide_tax);
	}
}
/* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
if ( isset( $_REQUEST['taxonomy'] )) {
	/* phpcs:ignore WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
	$taxonomy = $_REQUEST['taxonomy'];
	add_action('edited_'.esc_attr($taxonomy), 'ampforwp_update_taxonomy_meta',10,2);
	add_action('create_'.esc_attr($taxonomy), 'ampforwp_save_taxonomy_meta', 10);
	add_action('edited_'.esc_attr($taxonomy), 'ampforwp_update_taxonomy_meta',10,2);
	add_action('create_'.esc_attr($taxonomy), 'ampforwp_save_taxonomy_meta', 10);
	add_action (esc_attr($taxonomy).'_edit_form_fields', 'ampforwp_extra_category_fields');
	add_action (esc_attr($taxonomy).'_add_form_fields', 'ampforwp_extra_category_fields');
}
function ampforwp_extra_category_fields( $tag ) {
	$label = 'Category';
	if(is_object($tag)){
		if($tag->taxonomy=="post_tag"){
			$label = 'Tag';
		}else if($tag->taxonomy!='category'){
			$label = $tag->taxonomy;
		}
	}else{
		if($tag=='post_tag'){
			$label = 'Tag';
		}
	}
?>
<tr class="form-field">
	<?php if(!isset($tag->term_id)){?>
	<th scope="row" valign="top"></th>
	<td>
		<div class="form-field term-parent-wrap">
			<label for="show_amp_taxonomy">AMP</label>
			<select name="amp_taxonomy" id="show_amp_taxonomy" class="postform">
				<option class="level-0" value="show">Show</option>
				<option class="level-0" value="hide">Hide</option>
			</select>
			<p>You can enable or disable AMP on this category. <a href="https://ampforwp.com/tutorials/article/how-to-show-hide-the-amp-from-the-categories-or-product-pages-or-any-custom-taxonomy-in-amp/" target="_blank">Learn More</a>.</p>
		</div>
		<div id="amp-show-hide-tax" class="mrtop-10" style="display: none">
			<div class="hide-show-amp-tax">
				<input type="radio" value="hide-cat" name="hide_tax" checked=""> 
				<strong><?php echo esc_attr($label);?>:</strong>
				Hide from <?php echo esc_attr($label);?> Archive Page.
			</div>
			<div class="mrtop-10 hide-show-amp-tax">
				<input type="radio" value="hide-tax-post" name="hide_tax"> 
				<strong><?php echo esc_attr($label);?> & Posts: </strong>
				 Hide from <?php echo esc_attr($label);?> Archive Page and all it's posts
			</div>
		</div>
		<br>
	</td>
	<?php }else{
		$term_data = ampforwp_get_taxonomy_meta($tag->term_id);
		$visible = '';
		$visible_status = '';
		if(isset($term_data['visible']) && !empty($term_data['visible'])){
			$visible = $term_data['visible'][0];
			$visible_status = $term_data['visible_status'][0];
		}
	?>
		<th scope="row"><label for="show_amp_taxonomy">AMP</label></th>
		<td>
			<select name="amp_taxonomy" id="show_amp_taxonomy" class="postform">
				<option class="level-0" value="show" <?php if($visible=='show'){ echo "selected"; }?>>Show</option>
				<option class="level-0" value="hide" <?php if($visible=='hide'){ echo "selected";} ?>>Hide</option>
			</select><br />
			<span class="description">You can enable or disable AMP on this category. <a href="https://ampforwp.com/tutorials/article/how-to-show-hide-the-amp-from-the-categories-or-product-pages-or-any-custom-taxonomy-in-amp/" target="_blank">Learn More</a>.</span>
			<div id="amp-show-hide-tax" <?php if($visible=='show' || $visible==''){?>style="display: none;"<?php }?> class="edit_hide_tax mrtop-10">
				<div class="hide-show-amp-tax">
				<input type="radio" value="hide-cat" name="hide_tax" <?php if($visible_status=='hide-cat' || $visible_status==''){?> checked <?php }?>> 
				<strong><?php echo esc_attr($label);?>:</strong>
				Hide from <?php echo esc_attr($label);?> Archive Page.
				</div>
				<div class="mrtop-10 hide-show-amp-tax">
					<input type="radio" value="hide-tax-post" name="hide_tax"  <?php if($visible_status=='hide-tax-post'){?> checked <?php }?>> 
					<strong><?php echo esc_attr($label);?> & Posts: </strong>
				 	Hide from <?php echo esc_attr($label);?> Archive Page and all it's posts
				 </div>
			</div>
		</td>
	<?php }?>
</tr>
<?php
}
//4710 Added support to load featured image for lazy load option of Dues theme.
if(function_exists('wpg_lazyload_image_attributes')){
   add_action('wp','ampforwp_dues_theme_load_featured_image');
}
function ampforwp_dues_theme_load_featured_image(){
	if(ampforwp_is_amp_endpoint()){
     remove_filter( 'wp_get_attachment_image_attributes', 'wpg_lazyload_image_attributes', 8, 3 );
	}
}
if(function_exists('rocket_activation')){
	add_filter("ampforwp_the_content_last_filter",'ampforwp_wp_rocket_compatibility',25);
}
function ampforwp_wp_rocket_compatibility($content){  
    $cdn_url = get_option('wp_rocket_settings');
    if($cdn_url['cdn'] == 1){ 
    	$img_cdn_url = '';
    	$cnds_arr = array();
        if(!empty($cdn_url['cdn_zone']) && !empty($cdn_url['cdn_cnames'])){
	        foreach ($cdn_url['cdn_zone'] as $key => $element) { 
	        	if(isset($cdn_url['cdn_cnames'][$key]) && $cdn_url['cdn_cnames'][$key]!=''){
	        		$cnds_arr[$element] = $cdn_url['cdn_cnames'][$key];
	        	}
	        } 
	    }
	    if(isset($cnds_arr['images'])){
	    	$img_cdn_url = $cnds_arr['images'];
	    	$img_cdn_url = apply_filters( 'ampforwp_modify_wp_rocket_cdn_url', $img_cdn_url );
	    }else if(isset($cnds_arr['all'])){
	    	$img_cdn_url = $cnds_arr['all'];
	    }
	    if($img_cdn_url!=''){
	    	$parse_url = parse_url($img_cdn_url);
			if(!isset($parse_url['scheme'])){
			     if(!preg_match('/\/\//', $img_cdn_url)){
			     	$img_cdn_url = '//'.$img_cdn_url;
			     }
			}
	    	$comp_dom = new DOMDocument();
			@$comp_dom->loadHTML($content);
			$xpath = new DOMXPath( $comp_dom );
		    $nodes = $xpath->query('//amp-img[@src]');
		    $home_url = home_url();
		    foreach ($nodes as $node) {
		    	$url = $node->getAttribute('src');
		    	$srcset = $node->getAttribute('srcset');
		    	$is_external = ampforwp_isexternal($url);
				if(!$is_external && !$node->hasAttribute('fallback')){
					$img_src = str_replace($home_url, $img_cdn_url, $url);
					$content = str_replace($url, $img_src, $content);
					$srcset_arr = explode(",", $srcset);
					for($i=0;$i<count($srcset_arr);$i++){
						$original = $srcset_arr[$i];
						$new      = str_replace($home_url, $img_cdn_url, $original);
						if(preg_match('/'.preg_quote($original,'/').'/', $content)){
							$content  = preg_replace('/'.preg_quote($original,'/').'/', $new, $content);
						}
					}
				}
		    }
		}
	}
  	return $content;  
}
// Adding Mobile theme color meta data in header
if(true == ampforwp_get_setting('mobile-theme-color')){
add_action( 'amp_post_template_head', 'ampforwp_mobile_theme_color');
}
function ampforwp_mobile_theme_color(){
		$content_code = ampforwp_get_setting('mobile-theme-color-picker','color');
		if(empty($content_code)){
			$content_code = '#ffffff';  
		}
		?>
		<meta name="theme-color" content="<?php /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ echo ampforwp_sanitize_color($content_code); ?>"/>
		<?php
}

if(function_exists('herald_theme_setup')){
	add_filter('the_content', 'ampforwp_herald_popup_media_in_content', 100, 1 );
	add_filter('bbp_get_topic_content','herald_popup_media_in_content'); 
	add_filter('bbp_get_reply_content','herald_popup_media_in_content');
}
function ampforwp_herald_popup_media_in_content( $content ) {
	if(ampforwp_is_amp_endpoint()){
		if (function_exists('herald_get_option') && herald_get_option( 'on_single_img_popup' ) ) {
			if(preg_match("/<a class=\"herald-popup-img\" href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")><img(.*?)<\/a>/i", $content,$matches)){
				$content = preg_replace( "/<a class=\"herald-popup-img\" href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")><img(.*?)<\/a>/i", '<img on="tap:amp-img-lightbox" role="button" tabindex="0" $5', $content );
			}
		}
	}
	return  $content;
}
// Added TravelTour theme page builder content support.#4540 
function ampforwp_gdlr_core_page_builder_content($content){  
	ob_start();
	do_action('gdlr_core_print_page_builder');
	$content_gdlr = ob_get_contents();
	ob_end_clean();
	if ( $content_gdlr ) {
		$content = $content . $content_gdlr ;
	}
	return $content;  
}
add_filter('wpseo_robots', 'ampforwp_yoast_home_robots');
function ampforwp_yoast_home_robots($string) {
    if (ampforwp_is_home() || ampforwp_is_front_page() && method_exists('WPSEO_Meta', 'get_value') && '1' == WPSEO_Meta::get_value( 'meta-robots-noindex', get_option( 'page_for_posts' )) && '0' == WPSEO_Meta::get_value( 'meta-robots-noindex', ampforwp_get_the_ID())) {
        $string= "index";
    }
    return $string;
}
//Fallback added
if( function_exists('fifu_activate') && !function_exists( 'fifu_amp_url' ) ) {
	function fifu_amp_url($url, $width, $height) {
		$size = get_post_meta(ampforwp_get_the_ID(), 'fifu_image_dimension');
	    if (!empty($size)) {
	        $size = explode(';', $size[0]);
	        $width = $size[0];
	        $height = $size[1];
	    }
	    return array(0 => $url, 1 => $width, 2 => $height);
	}
}
add_filter('ampforwp_post_template_data','ampforwp_amp_bind_script');	
function ampforwp_amp_bind_script($data) {
	if ( empty( $data['amp_component_scripts']['amp-bind'] ) ) {	
		$data['amp_component_scripts']['amp-bind'] = 'https://cdn.ampproject.org/v0/amp-bind-latest.js';
	}	
	return $data;
}
add_filter('ampforwp_post_template_data','ampforwp_amp_story_player_script',12);
function ampforwp_amp_story_player_script($data) {	
	if ( isset($data['post'])) {
		$post_content = $data['post']->post_content;
		if ( (preg_match('/<amp-story-player(.*?)<\/amp-story-player>/s', $post_content) || preg_match('/web-stories/', $post_content )) && empty( $data['amp_component_scripts']['amp-story-player'] ) ) {		
			$data['amp_component_scripts']['amp-story-player'] = 'https://cdn.ampproject.org/v0/amp-story-player-latest.js';	
		}
	}	
	return $data;	
} 

if(!function_exists('ampforwp_video_lightbox')){
	function ampforwp_video_lightbox($content){
		$video_tags_arr = array('amp-youtube');
        add_action('amp_post_template_css','ampforwp_video_lightbox_css',30);
		for($i=0;$i<count($video_tags_arr);$i++){
			$tag = $video_tags_arr[$i];
			preg_match_all('/<'.$tag.' (.*?)<\/'.$tag.'>/', $content, $matches);
			if(!empty($matches)){
				if(isset($matches[0])){
					$con = "";
					for($i=0;$i<count($matches[0]);$i++){
						$match = $matches[0][$i];
						$dom   = AMP_DOM_Utils::get_dom_from_content($match);
	                    $nodes = $dom->getElementsByTagName( 'amp-youtube' );
	                    $video_id ='';
	                    $width  = 800;
	                    $height = 450;
	                    foreach ($nodes as $key => $node) {
	                    	$video_id = $node->getAttribute('data-videoid');
	                    	$width 	=$node->getAttribute('width');
	                        $height =$node->getAttribute('height');
	                    }

						$amp_light_box = '<amp-lightbox id="open-video'.esc_attr($video_id).'" layout="nodisplay">
						<div class="amp-lightbox-video" on="tap:open-video'.esc_attr($video_id).'.close,btn-play'.esc_attr($video_id).'.show" role="button" tabindex="'.$i.'" aria-label="Close Video">
						<div class="amp-video-box">'.$match.'</div>
						</div>
						</amp-lightbox>
						<div class="amp-video-img" id="btn-play'.esc_attr($video_id).'" on="tap:video.show, video.play, btn-play'.esc_attr($video_id).'.hide,open-video'.esc_attr($video_id).'" role="button" tabindex="'.$i.'" aria-label="Play Video">
						<amp-img alt="Video" src="http://i3.ytimg.com/vi/'.esc_attr($video_id).'/hqdefault.jpg" width="'.esc_attr($width).'" height="'.esc_attr($height).'" layout="responsive"></amp-img>
						<div class="amp-video-play-on-image"></div>
						</div>';
						$content = str_replace("$match", $amp_light_box, $content);
					}
				}
			}
		}
		return $content;
	}
}

function ampforwp_video_lightbox_css(){
	echo '.amp-video-box,.amp-video-img{width:100%;margin:0 auto;text-align:center}
.amp-lightbox-video{background:rgba(0,0,0,.8);width:100%;height:100%;position:absolute;display:flex;align-items:center;justify-content:center}
.amp-video-box{max-width:800px}
.amp-video-img{max-width:600px;position:relative}
.amp-lightbox-video .lb-x { top: 100px; right: 5%; }
.amp-video-play-on-image{cursor:pointer;margin:auto;width:56px;height:56px;-webkit-border-radius:50%;border-radius:50%;background-color:rgba(0,0,0,.2);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAY1BMVEVHcEz///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////80LMUcAAAAIHRSTlMA1d4MSXeg9glf6yEq4hfnnr7Z8qm5U/3Jm1pwFJcmBYTgJ9QAAAIjSURBVGje7VnJdoMwDFSMHVMSQljCklX//5U99NQHGEm22gtz9tPAWNYKsGPHDiou1h3rpvDD4Iumvjp7SWg86yeDM5ipz5KYt53HFfjORn+8KzEI88iizLe4icLlUvtfFZJQ3kXmTzWScTsJPr9FBtovpvn8iExMrJu4jMjGyHh67xIFMOSLOFcoQnUmfr/QPmL1JulfohiGcA/5iBEYt33piFG4br4vjMTGizu1sQRt2FlrjMZNVSBExEBszaoUBOW6JzlMArf6A0XIOzyZoMgkPwDnA5nhsWz/E4wRnBxhVuoTDBMAkGVarma6TQKyTN3iFfttAqJMg1/y1B4JBFSZ+gWCiUZAk+m1QGCIBCSZmoVEhlQCkkxPppP+JiDIZNlxiFmYOXaqnEX2sEwTO9XMq6egTPXsfMMlCMt0mB0v2ARBmYrZYS8gCMjkZ2cHCcG6TMPfE6hLpH7J6m6a+KHN67urdqhQD3bq4Vo94ainTP2kn7RssbqFF7a5buk4dP9T/Ib9KEH5Dg/lBkS/hVJvAiEvU9gPtLFwT0HQh1r9m/IoQX8YEj+t2JwCX+PsT7ojtWH8EIaCJmIo+FQeaxJHs9LBbPkGIt4ilQxjxi8ajj+BgZztra8P8MBcUAi2LCdGXJKsWADgTozeppeuoXJXEPKXfM0FANnDaC7qtlaNbfyq8Uep/rXQYDUvm0M6XKyb6sPPuvdwm5x9wo4dO6j4BoilN6H4pmTiAAAAAElFTkSuQmCC);background-position:center;-webkit-background-size:48px 48px;background-size:48px 48px;position:absolute;top:0;bottom:0;left:0;right:0}';
}

if (class_exists('WPSEO_Options')) {
	add_filter('yoast_seo_development_mode','ampforwp_yoast_seo_development');
	add_filter('wpseo_debug_json_data','ampforwp_remove_homepage_breadcrumb');
}

function ampforwp_yoast_seo_development($dev){
	$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH),'/' );
	if (ampforwp_get_setting('ampforwp-seo-selection') == 'yoast' && ampforwp_get_setting('ampforwp-seo-yoast-schema') && ampforwp_is_home() && function_exists('ampforwp_is_amp_inURL') && ampforwp_is_amp_inURL($url_path)) {
		$dev = true;
	}
	return $dev;
}	
function ampforwp_remove_homepage_breadcrumb($data){
	$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH),'/' );
	if (ampforwp_get_setting('ampforwp-seo-selection') == 'yoast' && ampforwp_get_setting('ampforwp-seo-yoast-schema') && ampforwp_is_home() && function_exists('ampforwp_is_amp_inURL') && ampforwp_is_amp_inURL($url_path)) {
		if (isset($data["@graph"][2]["breadcrumb"])) {
			unset($data["@graph"][2]["breadcrumb"]);
		}
		if(array_key_exists(3, $data["@graph"])) {
			if (!empty($data["@graph"][3]["@type"]) && $data["@graph"][3]["@type"] == 'BreadcrumbList') {
				unset($data["@graph"][3]);
			}
		}
	}
	return $data;
}
//Twitter title #2744
function ampforwp_sanitize_twitter_title($post_title){
	$post_title = html_entity_decode( $post_title, ENT_QUOTES, 'UTF-8' );
    $post_title = rawurlencode( $post_title );
    $post_title = esc_html( $post_title );
    return $post_title;
}
if (function_exists('i2_pros_cons_setup')) {
	add_action('amp_post_template_css','ampforwp_i2prosandcons');
}
function ampforwp_i2prosandcons(){
		$options = get_option( 'i2_pros_and_cons');
		$prosHeadingBackground = $options['pros_heading_background'];
		$consHeadingBackground = $options['cons_heading_background'];
		$prosBackground = $options['pros_background'];
		$consBackground = $options['cons_background'];
		$headingFontSize = $options['heading_font_size'];
		$sectionFontSize = $options['body_font_size'];
		$headingColor = $options['heading_color'];
		$sectionColor = $options['body_color'];?>
		.i2-pros-cons-main-wrapper .i2-pros-cons-wrapper {
		    display: table;
		    width: 100%;
		}
		.i2-pros-cons-main-wrapper .i2-pros-cons-wrapper .i2-pros, .i2-pros-cons-main-wrapper .i2-pros-cons-wrapper .i2-cons {
		    display: table-cell;
		    width: 50%;
		    margin-bottom: 15px;
		    position: relative;
		}
		.i2-pros-cons-main-wrapper .i2-pros-cons-wrapper .i2-pros .i2-pros-title, .i2-pros-cons-main-wrapper .i2-pros-cons-wrapper .i2-pros .i2-cons-title, .i2-pros-cons-main-wrapper .i2-pros-cons-wrapper .i2-cons .i2-pros-title, .i2-pros-cons-main-wrapper .i2-pros-cons-wrapper .i2-cons .i2-cons-title {
		    padding: 5px 15px 5px;
		    margin: 0px;
		    display: block;
		}
		.i2-pros-cons-wrapper .i2-pros-title {
		    background-color:<?php /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ echo ampforwp_sanitize_color($prosHeadingBackground); ?>;
		    font-size:<?php echo esc_html($headingFontSize); ?>px;
		}
		.i2-pros-cons-wrapper .i2-cons-title, .i2-pros-cons-wrapper .i2-pros-title {
		    color: #ffffff!important;
		    font-size:<?php echo esc_html($headingFontSize); ?>px;
		}
		.i2-pros {
		    background-color: <?php /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ echo ampforwp_sanitize_color($prosBackground); ?>;
		}
		.i2-cons{
			background-color: <?php /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ echo ampforwp_sanitize_color($consBackground); ?>;
		}
		.i2-pros-cons-wrapper ul li{
			font-size:<?php echo esc_html($sectionFontSize); ?>px;
		}
		.artl-cnt ul li:before {
		    content: "\e315";
		    display: inline-block;
		    width: 0;
		    background: #333;
		    position: absolute;
		    top: 0px;
		    left: 0px;
		    font-family: 'icomoon';
		}
		.i2-pros-cons-wrapper .i2-cons-title {
		    background-color: <?php /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ echo ampforwp_sanitize_color($consHeadingBackground); ?>;
		}
		.i2-pros-cons-wrapper .i2-pros, .i2-pros-cons-wrapper .i2-cons{
		    color: <?php /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ echo ampforwp_sanitize_color($sectionColor); ?>;
		}
		.i2-pros-cons-wrapper .i2-cons-title, .i2-pros-cons-wrapper .i2-pros-title {
		    color: <?php /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ echo ampforwp_sanitize_color($headingColor); ?>;
		}
<?php }
function ampforwp_modify_url_utm_params($url){
	if(true == ampforwp_get_setting('ampforwp-related-post-utm-tracking-switch') && !empty(ampforwp_get_setting('ampforwp-related-posts-utm-tracking'))){
		$modify_url = ampforwp_get_setting('ampforwp-related-posts-utm-tracking');
		$modify_url = apply_filters('ampforwp_modify_related_post_url', $modify_url);
		$url = add_query_arg($modify_url, '' , $url);
		return esc_url_raw($url);
	}							
	return esc_url_raw($url);
}
if(true == ampforwp_get_setting('ampforwp-recent-post-utm-tracking-switch') && !empty(ampforwp_get_setting('ampforwp-recent-posts-utm-tracking'))){
	add_filter('ampforwp_loop_permalink_update','ampforwp_recent_posts_utm_tracking');
}
function ampforwp_recent_posts_utm_tracking($recent_post_permalink){
	if(is_single()){
		$modify_url = ampforwp_get_setting('ampforwp-recent-posts-utm-tracking');
		$modify_url = apply_filters('ampforwp_modify_recent_post_url', $modify_url);
		$recent_post_permalink = add_query_arg($modify_url, '' , $recent_post_permalink);
		return esc_url_raw($recent_post_permalink);
	}
	return esc_url_raw($recent_post_permalink);
}
if(ampforwp_get_setting('ampforwp-facebook-comments-support')){
    add_action('amp_post_template_head','ampforwp_facebook_moderation_tool');
}
function ampforwp_facebook_moderation_tool(){
	$facebook_app_id = ampforwp_get_setting('ampforwp-fb-moderation-app-id');
	if($facebook_app_id!=''){
?>
	<meta property="fb:app_id" content="<?php echo esc_attr($facebook_app_id);?>" />
<?php
	}
	$facebook_admin_id = ampforwp_get_setting('ampforwp-fb-moderation-admin-id');
	if($facebook_admin_id!=''){
		$ids = explode(",", $facebook_admin_id);
		for($i=0;$i<count($ids);$i++){
			$id = $ids[$i];
			if($id!=''){
?>
	<meta property="fb:admins" content="<?php echo esc_attr($id);?>"/>
<?php
			}
		}
	}
}

//Schema Pro FAQ block compatibility #4956
add_filter('ampforwp_modify_the_content','ampforwp_schema_pro_faq_block');
function ampforwp_schema_pro_faq_block($content_buffer){
	if (!function_exists('on_bsf_aiosrs_pro_activate')) {
		return $content_buffer;
	}
	preg_match_all('/<div class="wp-block-wpsp-faq(.*?)class="wpsp-question">(.*?)<\/(.*?)>(.*?)class="wpsp-faq-content"><span><p>(.*?)<\/p>/', $content_buffer, $matches);
	if(is_array($matches)){
		$schema  = array();
		$schema['@context'] = 'https://schema.org';
		$schema['type']     = 'FAQPage';
		for($i=0;$i<count($matches[2]);$i++){
		 	$questions = $matches[2];
		 	$answers = $matches[5];
		 	foreach ( $questions as $key => $question ) {
				$schema['mainEntity'][ $key ]['@type'] = 'Question';
				$schema['mainEntity'][ $key ]['name']  = $question;
			}
			foreach ( $answers as $key => $answer ) {
				$schema['mainEntity'][ $key ]['acceptedAnswer']['@type'] = 'Answer';
				$schema['mainEntity'][ $key ]['acceptedAnswer']['text']  = $answer;
			}
		}
		$schema = '<script type="application/ld+json">'.wp_json_encode( $schema, JSON_UNESCAPED_UNICODE ).'</script>';
		$content_buffer = preg_replace('/(<div class="wp-block-wpsp-faq\s(.*?)<\/div>)/s', ''.$schema.'$1', $content_buffer);
	} 
	return $content_buffer;
}

function ampforwp_get_gitty_image_embed( $html, $url, $attr, $post_ID ) {
	global $getty_img_content;
	$getty_img_content[] = $html;
	return $html; 
}

if( ! function_exists('ampforwp_getty_image_compatibility') ){
function ampforwp_getty_image_compatibility($content){
	global $getty_img_content;
	if(is_array($getty_img_content)){
		if(preg_match_all('/<a id="(.*?)"\sclass="gie-single(.*?)">Embed from Getty Images<\/a>/', $content, $matches)){
			if(isset($matches[0])){
				for($i=0;$i<count($matches[0]);$i++){
					$full_content = $matches[0][$i];
					$img_id = $matches[1][$i];
					if(isset($getty_img_content[$i])){
						if(preg_match('/gie\.widgets\.load\({id:\'(.*?)\',sig:\'(.*?)\',w:\'(.*?)\',h:\'(.*?)\',items:\'(.*?)\'/',$getty_img_content[$i],$match)){
							if(isset($match[1]) && isset($match[2]) && isset($match[3]) && isset($match[4]) && isset($match[5])){
								$image_id = $match[1];
								$image_key = $match[2];
								$width = $match[3];
								$height = $match[4];
								$img_emb_id = $match[5];
								$iframe = '<iframe src="//embed.gettyimages.com/embed/'.esc_attr($img_emb_id).'?et='.esc_attr($image_id).'&amp;tld=com&sig='.esc_attr($image_key).'&caption=false&ver=2" scrolling="no" frameborder="0" width="'.esc_attr($width).'" height="'.esc_attr($height).'"></iframe>';
								$description 	= get_the_archive_description();
								$sanitizer = new AMPFORWP_Content( $iframe, array(), 
										apply_filters( 'ampforwp_content_sanitizers',
											array( 
												'AMP_Style_Sanitizer' 		=> array(),
												'AMP_Blacklist_Sanitizer' 	=> array(),
												'AMP_Img_Sanitizer' 		=> array(),
												'AMP_Video_Sanitizer' 		=> array(),
												'AMP_Audio_Sanitizer' 		=> array(),
												'AMP_Iframe_Sanitizer' 		=> array(
													'add_placeholder' 		=> true,
												)
											) ) );
								$iframe_content = $sanitizer->get_amp_content();
								$content = str_replace($full_content, $iframe_content, $content );
								}
							}
						}
					}
				}
			}
		}
		return $content;
	}
}

if(function_exists('vp_pfui_admin_init') && function_exists('penci_setup')){
	add_action('ampforwp_before_post_content','ampforwp_pennews_audio_embed');
}
function ampforwp_pennews_audio_embed(){
	$audio = get_post_meta(ampforwp_get_the_ID(), '_format_audio_embed', true); 
	if(empty($audio)){
		return;
	}
	$audio = preg_replace('/<iframe(.*?)width="(.*?)%"(.*?)<\/iframe>/', '<iframe$1width="1000"$3</iframe>', $audio);
	$audio_str = substr( $audio, -4 );
	$html ='<div class="audio-iframe">';
	if ( wp_oembed_get( $audio ) ) {
		$html .= wp_oembed_get( $audio );
	}elseif( $audio_str == '.mp3' ) {
		$html .= do_shortcode('[audio src="'. esc_url( $audio ) .'"]');
	}else{
		$html .= do_shortcode( $audio );
	}
	$html .= '</div>';
	$sanitizer = new AMPFORWP_Content( $html, array(), 
		apply_filters( 'ampforwp_content_sanitizers',
			array( 
				'AMP_Audio_Sanitizer' 		=> array(),
				'AMP_Iframe_Sanitizer' 		=> array(
					'add_placeholder' 		=> true,
				)
			) ) );
	$sanitized_html = $sanitizer->get_amp_content();
	/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
	echo $sanitized_html;
}

if(function_exists('penci_soledad_theme_setup')){
	add_action('ampforwp_before_post_content','ampforwp_penci_format_video_embed');
	add_filter('ampforwp_modify_featured_image','ampforwp_penci_remove_featured_image');
}

//Show Video
function ampforwp_penci_format_video_embed($content){
	$penci_video = get_post_meta( get_the_ID(), '_format_video_embed', true );
	if(!empty($penci_video) && $penci_video != ''){
		$video_id = '';
		$penci_video = 'https://www.youtube.com/watch?v=pMFEDv9Chlw';
		$video_html = '<div class="amp fluid-width-video-wrapper">';
		if(strpos($penci_video, 'youtu') !== false){
			if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $penci_video, $match)){
				$video_id = $match[1];
				$video_html .= '<amp-youtube width="480" height="270" layout="responsive" data-videoid="'.$video_id.'" loop autoplay></amp-youtube>';
			}
		}elseif(strpos($penci_video, 'vimeo')){
			if (preg_match('%^https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)(?:[?]?.*)$%im', $penci_video, $regs)){
	            $video_id = $regs[3];
	            $video_html .= '<amp-vimeo data-videoid="'.$video_id.'" layout="responsive" width="16" height="9" loop autoplay></amp-vimeo>';
	        }
	  }else{
			$video_html .= '<amp-video width="480" height="270" src="'.$penci_video.'" layout="responsive" loop autoplay>
				<div fallback>
					<p>Your browser doesn\'t support HTML5 video.</p>
				</div>
				<source type="video/mp4" src="'.$penci_video.'>
			</amp-video>';
		}
		$video_html .= '</div>';
		/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
		echo $video_html;
	}
}

//Remove Image if video is present.
function ampforwp_penci_remove_featured_image($amp_html){
	$penci_video = get_post_meta( get_the_ID(), '_format_video_embed', true );
	if(!empty($penci_video) && $penci_video != ''){
		$amp_html = false;
	}	
	return $amp_html;
}	

//Alignment issue with Gutenberg image block #4997
add_filter('ampforwp_modify_the_content','ampforwp_wp_block_cover_image');
function ampforwp_wp_block_cover_image($content_buffer){
	if(ampforwp_get_setting('ampforwp_css_tree_shaking') && ampforwp_is_gutenberg_active()){
		preg_match_all('/<amp-img(.*?)class="wp-block-cover__image-background(.*?)"(.*?)src="(.*?)"(.*?)<\/amp-img>/', $content_buffer, $matches);
		if(is_array($matches) && isset($matches[4][0])){
			$img_url = $matches[4][0];
				if (!empty($img_url)) {
					$content_buffer = preg_replace('/<div(.*?)class="wp-block-cover(.*?)"><amp-img(.*?)<\/amp-img>/', '<div$1style="background-image:url('.$img_url.');" class="wp-block-cover$2"><amp-img$3</amp-img>', $content_buffer); 
					$content_buffer = preg_replace('/<amp-img(.*?)class="wp-block-cover__image-background(.*?)"(.*?)src="(.*?)"(.*?)<\/amp-img>/', '', $content_buffer);
					return $content_buffer;
				}
		} 
	}
	return $content_buffer;
}
 function ampforwp_mobile_redirection_js() {
 	$url_to_redirect = ampforwp_amphtml_generator();?>
    <script>
		if(screen.width<769){
        	window.location = "<?php echo esc_url($url_to_redirect); ?>";
        }
    	</script>
<?php }
function ampforwp_webp_express_compatibility($content){
	if(function_exists('webp_express_process_post')){
		preg_match_all('/src="(.*?)"/', $content,$src);
		if(isset($src[1][0])){
			$img_url = esc_url($src[1][0]);
			if(preg_match('/m\.media-amazon/', $img_url)){
				return $content;
			}
			if(!preg_match('/\.webp/', $img_url)){
				$config = \WebPExpress\Config::loadConfigAndFix();
				if($config['destination-folder'] == 'mingled'){
					$img_url_webp = $img_url;
				}else{
					$img_url_webp = preg_replace('/http(.*?)\/wp-content(.*?)/', 'http$1/wp-content/webp-express/webp-images$2', $img_url);
					if($config['destination-structure'] == 'doc-root'){
						$img_url_webp = preg_replace('/http(.*?)\/wp-content(.*?)/', 'http$1/wp-content/webp-express/webp-images/doc-root/wp-content$2', $img_url);
					}
				}
				if(!preg_match('/\.webp/', $img_url)){	
					$img_url_webp = esc_url($img_url_webp).".webp";
			 		$content = str_replace($img_url, $img_url_webp, $content); 
				}
			}
	 	}
	}	
	return $content;
}
add_action('amp_post_template_css','ampforwp_set_local_font',33);
if(!function_exists('ampforwp_set_local_font')){
	function ampforwp_set_local_font(){
		if(ampforwp_get_setting('ampforwp-local-font-switch') && ampforwp_get_setting('ampforwp-local-font-upload','url')!=""){
			$upload_dir   = wp_upload_dir();
	        $user_dirname = $upload_dir['basedir'] . '/' . 'ampforwp-local-fonts';
	        if ( file_exists( $user_dirname ) ) {
	        		$font_name = '';
	            $files = glob( $user_dirname . '/*' );
	            $font_css =  '@font-face {';
	            $i = 0;
	            foreach ( $files as $file ) {
	               	$fonts = explode("/", $file);
	               	$font_name = end($fonts);
					$ext = end(explode(".", $font_name));
					if($ext!='zip'){
						$font_arr = explode('-', $font_name);
		                $font_family = $font_arr[0];
		               	if($i==0){
		               		$font_css .= "font-family: '".esc_attr(ucfirst($font_family))."'; font-style: normal; font-weight: 400;";
		               	}
		               	$font_path =  $upload_dir['baseurl'].'/'.'ampforwp-local-fonts/'.$font_name;
		               	if($ext=='eot'){
		               		$font_css .= "src: url('".esc_url($font_path)."'); src: url('".esc_url($font_path)."?#iefix') format('embedded-opentype'),";
		               	}else if($ext=='svg'){
		               		$font_css .= "src: url('".esc_url($font_path)."?#".esc_attr(ucfirst($font_family))."') format('svg'),";
		               	}else if($ext=='ttf'){
		               		$font_css .= "src: url('".esc_url($font_path)."') format('truetype'),";
		               	}else{
		               		$font_css .= "src: url('".esc_url($font_path)."') format('".esc_attr($ext)."'),";
		               	}
		               	$i++;
					}
	            }
	            $font_css .= '}';
	            if(!empty($font_family) && $font_family != ''){
	            	$font_css .= "body, .cntn-wrp {font-family: '".esc_attr(ucfirst($font_family))."'}";
	            }
				/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
	            echo $font_css;
	        }
		}
	}
}

function ampforwp_year_shortcode() {
  $year = gmdate('Y');
  return $year;
}
add_shortcode('ampforwp_current_year', 'ampforwp_year_shortcode');

function ampforwp_litespeed_webp_compatibility($content){
	if(class_exists( 'WP_Offload_Media_Autoloader')){
		return $content;
	}
	if(function_exists( 'run_litespeed_cache' )){
		preg_match_all('/src="(.*?)"/', $content,$src);
		if(isset($src[1][0])){
			$img_url = esc_url($src[1][0]);
			if(!preg_match('/\.webp/', $img_url)){	
				$rep_url = esc_url($src[1][0]).".webp";
				if(preg_match('/http(.*)\/wp-content\/uploads/', $rep_url)){
					$upload_dir = wp_upload_dir()['basedir'];
					$img_file = preg_replace('/http(.*)\/wp-content\/uploads/', $upload_dir, $rep_url);
					if(file_exists($img_file)){
						$content = str_replace($img_url, $rep_url, $content);
					}
				}
			}
		}
	}
	$content = str_replace('.webp.webp','.webp',$content);
	return $content;
}

if (ampforwp_get_setting('amp-core-end-point') && function_exists('get_rocket_cache_query_string') ) {
	add_filter('rocket_cache_query_strings', 'ampforwp_rocket_cache_query_string');
}

function ampforwp_rocket_cache_query_string($query_strings){
	array_push($query_strings,"amp"); 
	return $query_strings;
}


function ampforwp_publisher_desk_ads_insert( $ads, $content ) {
    if ( ! is_array( $ads ) ) {
        return $content;
    }

    $closing_p = '</p>';
    $paragraphs = explode( $closing_p, $content );

    foreach ($paragraphs as $index => $paragraph) {
        if ( trim( $paragraph ) ) {
            $paragraphs[$index]  .= $closing_p;
        }

        $n = $index + 1;
        if ( isset( $ads[ $n ] ) ) {
            $paragraphs[$index] .= $ads[ $n ];
        }
    }

    return implode( '', $paragraphs );
}

add_filter( 'ampforwp_modify_the_content', 'ampforwp_publisher_desk_ads' );
function ampforwp_publisher_desk_ads( $content ) {
	if (!ampforwp_get_setting('ampforwp-ads-publisherdesk')) {
		return $content;
	}
	$pub_id = $url = '';
	$pub_id = ampforwp_get_setting('ampforwp-publisherdesk-id');
	if (!empty($pub_id)) {
		$url = 'https://cdn.tpdads.com/json/amp-tags/'.esc_html($pub_id).'.json';
	}
    
		$data_api = wp_remote_get($url);
		if (is_array($data_api) && !empty($data_api['body'])) {
				$json_data_api = json_decode( $data_api['body'] );
				
		    $addList = array();
		    if(!empty($json_data_api->customHTMLAboveContentAd)){
		    	$content = $json_data_api->customHTMLAboveContentAd[0]." ".$content;
		    }
		   
		    if(!empty($json_data_api->customHTMLBelowContentAd)){
		    	$content .= $json_data_api->customHTMLBelowContentAd[0];
		    }
		    if ( is_single() && !empty($pub_id) && !empty($json_data_api) ) {
		      if(isset($json_data_api->inContentPlacementMethod) && $json_data_api->inContentPlacementMethod=='Auto'){
		       
		        $addList[3] = $json_data_api->customHTMLInContentAds[0];
		        $addList[6] = $json_data_api->customHTMLInContentAds[1];
		        $addList[9] = $json_data_api->customHTMLInContentAds[2];
		      } 
		      else{
		      	if( isset( $json_data_api->afterParagraphNumbers ) && $json_data_api->afterParagraphNumbers ) { 
		      		for ($i=0; $i < count($json_data_api->afterParagraphNumbers); $i++) { 
			      	 $addList[$json_data_api->afterParagraphNumbers[$i]] = $json_data_api->customHTMLInContentAds[$i];
			      	}
		      	}
		      	
		      }
		         $content = ampforwp_publisher_desk_ads_insert( $addList, $content );
				 
				 if ( isset( $json_data_api->stickyCustomHTMLAd[0] ) ) {

					$content .= $json_data_api->stickyCustomHTMLAd[0];

				 }
		         
		    	 $content = preg_replace('/json="/', 'json=\"' , $content);
		    	 $content = preg_replace('/rtc-config="/', 'rtc-config=\"' , $content);
		    }
		  }
    return $content;
}

// #5274 AMP Take over conflict with WPML
add_filter('ampforwp_is_amp_endpoint_takeover', 'ampforwp_wpml_takeover_compatibility');
function ampforwp_wpml_takeover_compatibility($return) {
	/* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
  if (is_user_logged_in() && !empty($_GET['wpml-app'])) {
  	return false;
  }
  return $return;
};

if(class_exists('SuperRelatedPosts')){
	add_action('amp_post_template_css', 'ampforwp_super_related_posts_style'); 
}
function ampforwp_super_related_posts_style(){
	global $wp_filesystem;
	$css = get_transient('ampforwp_super_related_posts');
	if($css == false){
		if(!is_object($wp_filesystem)){
			require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php';
    		require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-direct.php';
    		$wp_filesystem = new WP_Filesystem_Direct( array() );
    	}
		$css = $wp_filesystem->get_contents(AMPFORWP_PLUGIN_DIR."/includes/super-related-posts.css");
		set_transient('ampforwp_super_related_posts', $css);
	}
	/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
	echo ampforwp_css_sanitizer($css);
}	

if( function_exists('ampforwp_get_setting') && true == ampforwp_get_setting('amp-core-end-point') && class_exists('RankMath') && RankMath\Helper::get_settings( 'general.wc_remove_product_base' ) ){
  add_filter( 'ampforwp_is_amp_endpoint', 'ampforwp_rankmath_endpoint_fix', 20, 1);
}
function ampforwp_rankmath_endpoint_fix($flag){
	/* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
  if(isset($_GET['amp'])){
    return false;
  }
}
add_filter('wp_handle_upload_prefilter', 'ampforwp_sanitize_svg_upload');

/**
 * Sanitize SVG files before upload.
 *
 * This function checks if the uploaded file is an SVG. If it is, it sanitizes the SVG file by removing
 * script tags, event handlers, foreignObject elements, and other XSS vectors. Users with the
 * 'unfiltered_html' capability can upload unfiltered SVG files.
 *
 * @param array $file An array of file information. 
 * @return array The modified file information array with sanitized SVG file path.
 */
function ampforwp_sanitize_svg_upload( $file ) {
	// Check both MIME type and file extension to catch SVG files
	$is_svg = false;
	if ( isset( $file['type'] ) && 'image/svg+xml' === $file['type'] ) {
		$is_svg = true;
	} elseif ( isset( $file['name'] ) && preg_match( '/\.svg$/i', $file['name'] ) ) {
		// Fallback: check file extension if MIME type is not set correctly
		$is_svg = true;
	}
	
	if ( $is_svg ) {
		// Allow filtering to skip sanitization for specific users/roles
		// By default, sanitize all SVG uploads regardless of user capabilities
		// Site owners can use this filter to bypass sanitization for trusted users
		$skip_sanitization = apply_filters( 'ampforwp_skip_svg_sanitization', false, $file );
		
		if ( $skip_sanitization ) {
			return $file;
		}
		
		$file['tmp_name'] = ampforwp_sanitize_svg_file( $file['tmp_name'] );
	}
	return $file;
}


/**
 * Sanitize SVG file by removing script tags, event handlers, foreignObject elements, and other XSS vectors.
 *
 * @param string $file_path The path to the SVG file.
 * @return string The path to the sanitized SVG file.
 */
function ampforwp_sanitize_svg_file( $file_path ) {
    global $wp_filesystem;

    if ( ! function_exists( 'WP_Filesystem' ) ) {
        require_once ABSPATH . 'wp-admin/includes/file.php';
    }

    WP_Filesystem();

    $svg_content = $wp_filesystem->get_contents( $file_path );

    if ( empty( $svg_content ) ) {
        return $file_path;
    }

    // Use DOMDocument for proper XML parsing if available
    if ( class_exists( 'DOMDocument' ) ) {
        libxml_use_internal_errors( true );
        $dom = new DOMDocument();
        $dom->formatOutput = false;
        $dom->preserveWhiteSpace = true;
        
        // Load SVG with UTF-8 encoding
        // Disable entity loading to prevent XXE attacks (PHP < 8.0)
        if ( function_exists( 'libxml_disable_entity_loader' ) ) {
            $old_value = libxml_disable_entity_loader( true );
        }
        $success = @$dom->loadXML( $svg_content, LIBXML_NOBLANKS );
        if ( function_exists( 'libxml_disable_entity_loader' ) && isset( $old_value ) ) {
            libxml_disable_entity_loader( $old_value );
        }
        
        if ( $success ) {
            $xpath = new DOMXPath( $dom );
            
            // Register SVG namespace
            $xpath->registerNamespace( 'svg', 'http://www.w3.org/2000/svg' );
            
            // Remove script tags (try both namespaced and non-namespaced)
            $scripts = $xpath->query( '//svg:script | //script' );
            foreach ( $scripts as $script ) {
                if ( $script->parentNode ) {
                    $script->parentNode->removeChild( $script );
                }
            }
            
            // Remove foreignObject elements (can contain HTML/JS)
            $foreign_objects = $xpath->query( '//svg:foreignObject | //foreignObject' );
            foreach ( $foreign_objects as $foreign_object ) {
                if ( $foreign_object->parentNode ) {
                    $foreign_object->parentNode->removeChild( $foreign_object );
                }
            }
            
            // Remove event handler attributes (on* attributes)
            // Query all elements (both namespaced and non-namespaced)
            $all_elements = $xpath->query( '//*' );
            foreach ( $all_elements as $element ) {
                if ( $element->hasAttributes() ) {
                    $attributes_to_remove = array();
                    // Create a snapshot of attributes to iterate over (since we'll be modifying the list)
                    $attr_list = array();
                    foreach ( $element->attributes as $attr ) {
                        $attr_list[] = $attr;
                    }
                    
                    // Check each attribute
                    foreach ( $attr_list as $attr ) {
                        // Get both local name and full name to handle namespaced attributes
                        $attr_local_name = strtolower( $attr->localName ? $attr->localName : $attr->nodeName );
                        $attr_node_name = strtolower( $attr->nodeName );
                        
                        // Remove event handlers (on* attributes) - check both local name and full name
                        // Also check for common event handler patterns
                        if ( preg_match( '/^on[a-z]+/i', $attr_local_name ) || 
                             preg_match( '/^on[a-z]+/i', $attr_node_name ) ||
                             strpos( $attr_local_name, 'on' ) === 0 ||
                             strpos( $attr_node_name, 'on' ) === 0 ) {
                            $attributes_to_remove[] = $attr->nodeName;
                        }
                    }
                    
                    // Remove the identified event handler attributes
                    foreach ( $attributes_to_remove as $attr_name ) {
                        // Try removing by both the full name and local name
                        if ( $element->hasAttribute( $attr_name ) ) {
                            $element->removeAttribute( $attr_name );
                        }
                        // Also try removing by local name if different
                        $local_name = strpos( $attr_name, ':' ) !== false ? substr( $attr_name, strpos( $attr_name, ':' ) + 1 ) : $attr_name;
                        if ( $local_name !== $attr_name && $element->hasAttribute( $local_name ) ) {
                            $element->removeAttribute( $local_name );
                        }
                    }
                }
            }
            
            $sanitized_svg = $dom->saveXML();
            libxml_clear_errors();
            
            // Additional safety pass: use regex to catch any event handlers that DOMDocument might have missed
            // This provides defense in depth
            $sanitized_svg = ampforwp_sanitize_svg_fallback( $sanitized_svg );
        } else {
            // Fallback to regex if DOMDocument fails
            $sanitized_svg = ampforwp_sanitize_svg_fallback( $svg_content );
        }
    } else {
        // Fallback to regex if DOMDocument is not available
        $sanitized_svg = ampforwp_sanitize_svg_fallback( $svg_content );
    }

    $wp_filesystem->put_contents( $file_path, $sanitized_svg, FS_CHMOD_FILE );

    return $file_path;
}

/**
 * Fallback SVG sanitization using regex when DOMDocument is not available.
 *
 * @param string $svg_content The SVG content to sanitize.
 * @return string The sanitized SVG content.
 */
function ampforwp_sanitize_svg_fallback( $svg_content ) {
    // Remove script tags and their content
    $sanitized_svg = preg_replace( '/<script\b[^>]*>(.*?)<\/script>/is', '', $svg_content );
    
    // Remove foreignObject elements
    $sanitized_svg = preg_replace( '/<foreignObject\b[^>]*>.*?<\/foreignObject>/is', '', $sanitized_svg );
    
    // Remove event handler attributes (on* attributes) - comprehensive approach
    // List of common event handlers to explicitly remove
    $event_handlers = array(
        'onabort', 'onblur', 'oncanplay', 'oncanplaythrough', 'onchange', 'onclick', 'oncontextmenu',
        'oncuechange', 'ondblclick', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover',
        'ondragstart', 'ondrop', 'ondurationchange', 'onemptied', 'onended', 'onerror', 'onfocus',
        'oninput', 'oninvalid', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onloadeddata',
        'onloadedmetadata', 'onloadstart', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove',
        'onmouseover', 'onmouseout', 'onmouseup', 'onpause', 'onplay', 'onplaying', 'onprogress',
        'onratechange', 'onreset', 'onresize', 'onscroll', 'onseeked', 'onseeking', 'onselect',
        'onshow', 'onstalled', 'onsubmit', 'onsuspend', 'ontimeupdate', 'ontoggle', 'onvolumechange',
        'onwaiting', 'onwheel', 'onbegin', 'onend', 'onrepeat'
    );
    
    // Remove each event handler with various quote styles and formats
    foreach ( $event_handlers as $handler ) {
        // Pattern 1: handler="value" with double quotes (multiline, dotall)
        $sanitized_svg = preg_replace( '/\s+' . preg_quote( $handler, '/' ) . '\s*=\s*"[^"]*"/is', '', $sanitized_svg );
        // Pattern 2: handler='value' with single quotes
        $sanitized_svg = preg_replace( '/\s+' . preg_quote( $handler, '/' ) . '\s*=\s*\'[^\']*\'/is', '', $sanitized_svg );
        // Pattern 3: handler=value without quotes
        $sanitized_svg = preg_replace( '/\s+' . preg_quote( $handler, '/' ) . '\s*=\s*[^\s>\/"\'=]+/i', '', $sanitized_svg );
        // Pattern 4: handler at start of line or after > (no leading whitespace requirement)
        $sanitized_svg = preg_replace( '/(\s|>|^)' . preg_quote( $handler, '/' ) . '\s*=\s*"[^"]*"/i', '$1', $sanitized_svg );
        $sanitized_svg = preg_replace( '/(\s|>|^)' . preg_quote( $handler, '/' ) . '\s*=\s*\'[^\']*\'/i', '$1', $sanitized_svg );
    }
    
    // Also remove any remaining on* attributes using generic pattern (catch-all)
    // Match on[letters]="..." with double quotes
    $sanitized_svg = preg_replace( '/\s+on[a-z]+\s*=\s*"[^"]*"/is', '', $sanitized_svg );
    // Match on[letters]='...' with single quotes
    $sanitized_svg = preg_replace( '/\s+on[a-z]+\s*=\s*\'[^\']*\'/is', '', $sanitized_svg );
    // Match on[letters]=value without quotes
    $sanitized_svg = preg_replace( '/\s+on[a-z]+\s*=\s*[^\s>\/"\'=]+/i', '', $sanitized_svg );
    // Final catch-all without leading whitespace requirement
    $sanitized_svg = preg_replace( '/on[a-z]+\s*=\s*"[^"]*"/is', '', $sanitized_svg );
    $sanitized_svg = preg_replace( '/on[a-z]+\s*=\s*\'[^\']*\'/is', '', $sanitized_svg );
    $sanitized_svg = preg_replace( '/on[a-z]+\s*=\s*[^\s>\/"\'=]+/i', '', $sanitized_svg );
    
    // Apply patterns multiple times to catch any edge cases (defense in depth)
    $previous_svg = '';
    $iterations = 0;
    while ( $previous_svg !== $sanitized_svg && $iterations < 5 ) {
        $previous_svg = $sanitized_svg;
        // Re-apply the generic patterns
        $sanitized_svg = preg_replace( '/\s+on[a-z]+\s*=\s*"[^"]*"/is', '', $sanitized_svg );
        $sanitized_svg = preg_replace( '/\s+on[a-z]+\s*=\s*\'[^\']*\'/is', '', $sanitized_svg );
        $sanitized_svg = preg_replace( '/on[a-z]+\s*=\s*"[^"]*"/is', '', $sanitized_svg );
        $sanitized_svg = preg_replace( '/on[a-z]+\s*=\s*\'[^\']*\'/is', '', $sanitized_svg );
        $iterations++;
    }
    
    return $sanitized_svg;
}

// Also sanitize existing SVG files when they are edited/updated
add_filter( 'wp_handle_upload', 'ampforwp_sanitize_existing_svg_on_update', 10, 2 );
function ampforwp_sanitize_existing_svg_on_update( $upload, $context ) {
    // Check if this is an SVG file
    if ( isset( $upload['type'] ) && 'image/svg+xml' === $upload['type'] ) {
        // Allow filtering to skip sanitization
        $skip_sanitization = apply_filters( 'ampforwp_skip_svg_sanitization', false, $upload );
        
        if ( ! $skip_sanitization && isset( $upload['file'] ) && file_exists( $upload['file'] ) ) {
            // Sanitize the uploaded file
            ampforwp_sanitize_svg_file( $upload['file'] );
        }
    }
    return $upload;
}

if(defined('JNEWS_THEME_CLASS')){
	add_action('ampforwp_post_subtitle','ampforwp_post_subtitle');
}
function ampforwp_post_subtitle($location='left'){
	if(ampforwp_get_the_ID()){
		$post_id = ampforwp_get_the_ID();
		$post_subtitle = get_post_meta( $post_id,'post_subtitle',true);
		if($post_subtitle!=""){
			echo '<h2 class="amp-wp-sub-title '.esc_attr($location).'">'.esc_attr($post_subtitle).'</h2>';
		}
	}
}

add_action('wp_ajax_ampforwp_search_infinite_scroll_post','ampforwp_search_infinite_scroll_post');
add_action('wp_ajax_nopriv_ampforwp_search_infinite_scroll_post','ampforwp_search_infinite_scroll_post');
function ampforwp_search_infinite_scroll_post(){
	/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized,WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
    if( isset( $_POST[ 'security' ] ) && wp_verify_nonce( $_POST[ 'security' ],'ampforwp_filtered_post_nounce') ){
		/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
		$this_id = sanitize_text_field($_POST[ 'this_id' ]);
		/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
		$search = sanitize_text_field($_POST[ 'search' ]);
		$exclude_id[] = $this_id;
		/* phpcs:ignore WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_post__not_in */
		$args = array("post_type" => "post", "s" => $search,"post__not_in"=>$exclude_id);
		$query = get_posts( $args );
		$post_data = array();
		if($query){
			foreach ($query as $key => $value) {
				$post_data[] = $value; 
			}
		}
		echo wp_json_encode($post_data);
	}
	die;
}

add_action('wp_ajax_ampforwp_infinite_scroll_post_ajax','ampforwp_infinite_scroll_post_ajax');
add_action('wp_ajax_nopriv_ampforwp_infinite_scroll_post_ajax','ampforwp_infinite_scroll_post_ajax');
function ampforwp_infinite_scroll_post_ajax(){
	/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
	if( isset( $_GET[ 'security' ] ) && isset($_GET[ 'security' ]['security']) && wp_verify_nonce($_GET[ 'security' ]['security'],'ampforwp-verify-request') ){
		/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated,WordPress.Security.ValidatedSanitizedInput.MissingUnslash */
		$search = sanitize_text_field($_GET[ 'q' ]);
		$args = array("post_type" => "post", "s" => $search);
		$query = get_posts( $args );
		if ( $query ) :
			foreach ($query as $value ) {
					$return[] = array($value->ID,$value->post_title);// array( Cat ID, Cat Name )
			}
		endif;
		wp_send_json( $return );
	}
	die;
}
function ampforwp_append_avif_to_img_srcset( $sources, $size_array, $image_src, $image_meta, $attachment_id ) {
		// Exclude AVIF from AMP: duplicate width/pixel density in srcset fails AMP validation.
		if ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) {
			return $sources;
		}
		if ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) {
			return $sources;
		}

		$format = get_imagify_option( 'optimization_format' );
		$display_nextgen = get_imagify_option( 'display_nextgen' );
		
		if($format==='avif' && $display_nextgen){
			$upload_dir = wp_upload_dir();
			$base_url = $upload_dir['baseurl'];
			$file = get_attached_file( $attachment_id );
			$filename = basename( $file );

			// Get the base name without extension
			$base_name = preg_replace('/\.[^.]+$/', '', $filename);
			$upload_path = trailingslashit( dirname( wp_get_attachment_url( $attachment_id ) ) );
			foreach ( $sources as $width => $data ) {
				// Replace the .png or .jpg with .avif
				$avif_url = preg_replace('/\.(png|jpg|jpeg)$/i', '.avif', $data['url']);
				
				// Add AVIF format version (same descriptor and value)
				$sources[ $width . '-avif' ] = [
					'url'        => $avif_url,
					'descriptor' => 'w',
					'value'      => $width,
				];
			}
		}
	return $sources;
}
if( function_exists('get_imagify_option')){
	add_filter( 'wp_calculate_image_srcset', 'ampforwp_append_avif_to_img_srcset', 10, 5 );
}

/**
 * Remove duplicate AVIF entries from amp-img srcset to satisfy AMP validation
 * (multiple candidates with same width/pixel density are invalid).
 * Only removes AVIF when a non-AVIF candidate exists for the same descriptor,
 * so "only AVIF" srcsets are left intact.
 */
if ( ! function_exists( 'ampforwp_sanitize_amp_img_srcset_remove_avif' ) ) {
	function ampforwp_sanitize_amp_img_srcset_remove_avif( $content ) {
		if ( ! is_string( $content ) ) {
			return $content;
		}
		if ( ! ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() )
			&& ! ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) ) {
			return $content;
		}
		$result = preg_replace_callback(
			'/<amp-img([^>]*\ssrcset=["\'])([^"\']*)(["\'][^>]*)>/i',
			function ( $m ) {
				if ( ! is_array( $m ) || ! isset( $m[1], $m[2], $m[3] ) ) {
					return isset( $m[0] ) ? $m[0] : '';
				}
				try {
					$prefix = $m[1];
					$srcset = $m[2];
					$suffix = $m[3];
					$parts  = array_map( 'trim', explode( ',', $srcset ) );
					$kept   = array();
					$by_descriptor = array();
					foreach ( $parts as $part ) {
						if ( $part === '' ) {
							continue;
						}
						if ( preg_match( '/^(\S+)\s+(\d+w|\d+(?:\.\d+)?x)$/', $part, $match ) && isset( $match[1], $match[2] ) ) {
							$url        = $match[1];
							$descriptor = $match[2];
							$is_avif    = (bool) preg_match( '/\.avif(\?|$)/i', $url );
							if ( ! isset( $by_descriptor[ $descriptor ] ) ) {
								$by_descriptor[ $descriptor ] = array();
							}
							$by_descriptor[ $descriptor ][] = array( 'part' => $part, 'is_avif' => $is_avif );
						} else {
							$kept[] = $part;
						}
					}
					foreach ( $by_descriptor as $candidates ) {
						if ( ! is_array( $candidates ) ) {
							continue;
						}
						$has_non_avif = false;
						foreach ( $candidates as $c ) {
							if ( is_array( $c ) && isset( $c['is_avif'] ) && ! $c['is_avif'] ) {
								$has_non_avif = true;
								break;
							}
						}
						foreach ( $candidates as $c ) {
							if ( ! is_array( $c ) || ! isset( $c['part'] ) ) {
								continue;
							}
							if ( $has_non_avif && ! empty( $c['is_avif'] ) ) {
								continue;
							}
							$kept[] = $c['part'];
						}
					}
					$new_srcset = implode( ', ', $kept );
					return '<amp-img' . $prefix . $new_srcset . $suffix . '>';
				} catch ( \Exception $e ) {
					return isset( $m[0] ) ? $m[0] : ( '<amp-img' . $m[1] . $m[2] . $m[3] . '>' );
				}
			},
			$content
		);
		return ( null !== $result ) ? $result : $content;
	}
}
add_filter( 'ampforwp_the_content_last_filter', 'ampforwp_sanitize_amp_img_srcset_remove_avif', 5 );

add_filter('ampforwp_the_content_last_filter', 'ampforwp_fix_broken_amp_carousel', 20);

function ampforwp_fix_broken_amp_carousel($content) {
    // Check if AMP is active (using AMPforWP or similar AMP plugin)
    if (!function_exists('is_amp_endpoint') || !is_amp_endpoint()) {
        return $content;
    }

    // Define the regex pattern to match the carousel with dynamic ID and gallery items
    $pattern = '/<amp-carousel[^>]*id="carousel-with-carousel-preview-[0-9]+"[^>]*>.*?(<div class="ampforwp-gallery-item amp-carousel-container">.*?)<\/amp-carousel>(.*?)<amp-image-lightbox[^>]*id="gallery-lightbox"[^>]*>.*?<\/amp-image-lightbox>/s';

    // Process the content if the pattern is found
    if (preg_match($pattern, $content, $matches)) {
        $gallery_items = $matches[1];
        $after_carousel = $matches[2];

        // Extract individual images
        preg_match_all('/<amp-img src="([^"]+)" width="(\d+)" height="(\d+)"[^>]*>.*?<\/amp-img>/', $gallery_items, $image_matches);

        // Generate a unique ID for the new carousel
        $new_carousel_id = 'carousel-with-preview-' . wp_generate_uuid4();

        // Build the new carousel
        $new_carousel = sprintf('<amp-carousel id="%s" width="600" height="480" type="slides" layout="responsive" loop autoplay controls>', esc_attr($new_carousel_id));
        for ($i = 0; $i < count($image_matches[0]); $i++) {
            $src = $image_matches[1][$i];
            $width = $image_matches[2][$i];
            $height = $image_matches[3][$i];
            $new_carousel .= sprintf(
                '<amp-img src="%s" width="%s" height="%s" layout="fill" on="tap:gallery-lightbox" role="button" tabindex="%d"></amp-img>',
                esc_url($src), esc_attr($width), esc_attr($height), $i
            );
        }
        $new_carousel .= '</amp-carousel>';

        // Preserve content after the carousel (e.g., bookmarks)
        $new_content = $new_carousel . $after_carousel;

        // Replace the old carousel and its lightbox with the new content
        $content = preg_replace($pattern, $new_content, $content);
    }

    return $content;
}