_satellite.pushAsyncScript(function(event, target, $variables){
    // Cookie setter and getter functions
  // We only want to count daily unique ad blocks
  function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
    var expires = 'expires=' + d.toUTCString();
    var domain = document.domain;
    document.cookie = cname + '=' + cvalue + '; ' + expires + ';domain=' + domain + ';' + 'path=/';
  }

  /**
   * ## getCookie
   *
   *@param {String} cname The cookie to retrieve.
   *@returns {String} The value of the cookie or empty string.
  */
  function getCookie(cname) {
    var match = document.cookie.match('(^|;)\\s*' + cname + '\\s*=\\s*([^;]+)');
    return match ? match.pop() : '';
  }

  /**
   * ## browserCheck
   *
   *@returns {String} The simplified user agent.
  */
  function browserCheck() {
    var N = navigator.appName;
    var ua = navigator.userAgent;
    var tem = ua.match(/version\/([\.\d]+)/i);
    var M = ua.match(/(opera|chrome|safari|firefox|msie|trident)\/?\s*(\.?\d+(\.\d+)*)/i);
    if (M && tem !== null) {
      M[2] = tem[1];
    }
    M = M ? [M[1], M[2]] : [N, navigator.appVersion, '-?'];
    return M.toString();
  }



  /**
   * ## getSiteCode
   * Get the correct 3 character site code.
   *
   *@returns {String} The 3 character site code for this site, or FIX  so we know to fix it..
  */
  function getSiteCode() {
    var arr = [
      ['allure.com', 'alr'],
      ['architecturaldigest.com', 'arc'],
      ['arstechnica.com', 'ars'],
      ['bonappetit.com', 'bon'],
      ['brides.com', 'brd'],
      ['cntraveler.com', 'cnt'],
      ['details.com', 'dtl'],
      ['epicurious.com', 'epi'],
      ['glamour.com', 'gla'],
      ['golfdigest.com', 'glf'],
      ['gq.com', 'gq'],
      ['newyorker.com', 'tny'],
      ['pitchfork.com', 'p4k'],
      ['self.com', 'slf'],
      ['style.com', 'stl'],
      ['teenvogue.com', 'tvg'],
      ['thescene.com', 'sn'],
      ['vanityfair.com', 'vfr'],
      ['vogue.com', 'vge'],
      ['wired.com', 'wrd'],
      ['wmagazine.com', 'wmg'],
      ['localhost', 'LOC'],
      ['.', 'FIX'],
      ['', 'FILE']
    ].filter(siteFind);
    return arr[0][1];
  }

  /**
   * ## filterSite
   * Used to filter the site array to a single matching site.
   *
   *@returns {Boolean} Do we have a match?
  */
  function siteFind(i) {
    var str = i[0];
    return document.location.hostname.indexOf(str) !== -1;
  }

  /**
   * ## track
   * build the parameters of the tracking pixel URL
   *
   *@param {String} blockString The string signifying if this pages blocked status and if it was a first view.
   *@returns {XHRF} A request for a tracking pixel.
  */
  function track(blockString) {
  }

  /**
   * ## trackETF
   * Setup the blocked status string and send a tracking request.
   *
   *@param {Boolean} blocked Is their an adBlocker?
   *@param {Boolean} newVisit Is this the first visit?
   *@returns {XHRF} A request for a tracking pixel.
  */
  function trackETF(blocked, newVisit) {
    var _blocked = 'blocked';
    var not = blocked ? '' : 'not_';
    var pageview = newVisit ? '' : '_pageview';
    var ext = /iPhone|iPad/i.test(navigator.userAgent) ? '/iOS' : '';
    _blocked = not + _blocked + pageview + ext;
    track(_blocked);
  }
  /**
   * ## SparrowTrack
   * Setup the blocked status string and send a tracking request.
   *
   *@param {Str} event 
   *@param {Int} value
   *@returns {XHRF} A request for a tracking pixel.
  */
  function SparrowTrack(event, value) {
    var pix = new Image();
    pix.src = 'http://capture.condenastdigital.com/track?' + '_o=' + getSiteCode() + '&_c=adblock_dtm&_t=' + event + '&_v=' + (value || 1) + '&rand=' + Math.round(Math.random()*10000000000000000);
    window.setTimeout(function () { pix = null; }, 1000);
  }

  var newVisit;
  // Set a BlockerSniffer cookie to ensure that we only count 1 detection event per user per day
  var host = document.location.host.split('.');
  var blockerCookie = 'BlockerSniffer_' + host[host.length - 2];
  if (getCookie(blockerCookie).length) {
    newVisit = false;
  } else {
    setCookie(blockerCookie, 1, 1);
    newVisit = true;
  }

/*
 * BlockAdBlock 3.2.1
 * Copyright (c) 2015 Valentin Allaire <valentin.allaire@sitexw.fr>
 * Released under the MIT license
 * https://github.com/sitexw/BlockAdBlock
 */

(function(window) {
	var BlockAdBlock = function(options) {
		this._options = {
			checkOnLoad:		false,
			resetOnEnd:			false,
			loopCheckTime:		50,
			loopMaxNumber:		5,
			baitClass:			'pub_300x250 pub_300x250m pub_728x90 text-ad textAd text_ad text_ads text-ads text-ad-links',
			baitStyle:			'width: 1px !important; height: 1px !important; position: absolute !important; left: -10000px !important; top: -1000px !important;',
			debug:				false
		};
		this._var = {
			version:			'3.2.1',
			bait:				null,
			checking:			false,
			loop:				null,
			loopNumber:			0,
			event:				{ detected: [], notDetected: [] }
		};
		if(options !== undefined) {
			this.setOption(options);
		}
		var self = this;
		var eventCallback = function() {
			setTimeout(function() {
				if(self._options.checkOnLoad === true) {
					if(self._options.debug === true) {
						self._log('onload->eventCallback', 'A check loading is launched');
					}
					if(self._var.bait === null) {
						self._creatBait();
					}
					setTimeout(function() {
						self.check();
					}, 1);
				}
			}, 1);
		};
		if(window.addEventListener !== undefined) {
			window.addEventListener('load', eventCallback, false);
		} else {
			window.attachEvent('onload', eventCallback);
		}
	};
	BlockAdBlock.prototype._options = null;
	BlockAdBlock.prototype._var = null;
	BlockAdBlock.prototype._bait = null;
	
	BlockAdBlock.prototype._log = function(method, message) {
		console.log('[BlockAdBlock]['+method+'] '+message);
	};
	
	BlockAdBlock.prototype.setOption = function(options, value) {
		if(value !== undefined) {
			var key = options;
			options = {};
			options[key] = value;
		}
		for(var option in options) {
			this._options[option] = options[option];
			if(this._options.debug === true) {
				this._log('setOption', 'The option "'+option+'" he was assigned to "'+options[option]+'"');
			}
		}
		return this;
	};
	
	BlockAdBlock.prototype._creatBait = function() {
		var bait = document.createElement('div');
			bait.setAttribute('class', this._options.baitClass);
			bait.setAttribute('style', this._options.baitStyle);
		this._var.bait = window.document.body.appendChild(bait);
		
		this._var.bait.offsetParent;
		this._var.bait.offsetHeight;
		this._var.bait.offsetLeft;
		this._var.bait.offsetTop;
		this._var.bait.offsetWidth;
		this._var.bait.clientHeight;
		this._var.bait.clientWidth;
		
		if(this._options.debug === true) {
			this._log('_creatBait', 'Bait has been created');
		}
	};
	BlockAdBlock.prototype._destroyBait = function() {
		window.document.body.removeChild(this._var.bait);
		this._var.bait = null;
		
		if(this._options.debug === true) {
			this._log('_destroyBait', 'Bait has been removed');
		}
	};
	
	BlockAdBlock.prototype.check = function(loop) {
		if(loop === undefined) {
			loop = true;
		}
		
		if(this._options.debug === true) {
			this._log('check', 'An audit was requested '+(loop===true?'with a':'without')+' loop');
		}
		
		if(this._var.checking === true) {
			if(this._options.debug === true) {
				this._log('check', 'A check was canceled because there is already an ongoing');
			}
			return false;
		}
		this._var.checking = true;
		
		if(this._var.bait === null) {
			this._creatBait();
		}
		
		var self = this;
		this._var.loopNumber = 0;
		if(loop === true) {
			this._var.loop = setInterval(function() {
				self._checkBait(loop);
			}, this._options.loopCheckTime);
		}
		setTimeout(function() {
			self._checkBait(loop);
		}, 1);
		if(this._options.debug === true) {
			this._log('check', 'A check is in progress ...');
		}
		
		return true;
	};
	BlockAdBlock.prototype._checkBait = function(loop) {
		var detected = false;
		
		if(this._var.bait === null) {
			this._creatBait();
		}
		
		if(window.document.body.getAttribute('abp') !== null
		|| this._var.bait.offsetParent === null
		|| this._var.bait.offsetHeight == 0
		|| this._var.bait.offsetLeft == 0
		|| this._var.bait.offsetTop == 0
		|| this._var.bait.offsetWidth == 0
		|| this._var.bait.clientHeight == 0
		|| this._var.bait.clientWidth == 0) {
			detected = true;
		}
		if(window.getComputedStyle !== undefined) {
			var baitTemp = window.getComputedStyle(this._var.bait, null);
			if(baitTemp && (baitTemp.getPropertyValue('display') == 'none' || baitTemp.getPropertyValue('visibility') == 'hidden')) {
				detected = true;
			}
		}
		
		if(this._options.debug === true) {
			this._log('_checkBait', 'A check ('+(this._var.loopNumber+1)+'/'+this._options.loopMaxNumber+' ~'+(1+this._var.loopNumber*this._options.loopCheckTime)+'ms) was conducted and detection is '+(detected===true?'positive':'negative'));
		}
		
		if(loop === true) {
			this._var.loopNumber++;
			if(this._var.loopNumber >= this._options.loopMaxNumber) {
				this._stopLoop();
			}
		}
		
		if(detected === true) {
			this._stopLoop();
			this._destroyBait();
			this.emitEvent(true);
			if(loop === true) {
				this._var.checking = false;
			}
		} else if(this._var.loop === null || loop === false) {
			this._destroyBait();
			this.emitEvent(false);
			if(loop === true) {
				this._var.checking = false;
			}
		}
	};
	BlockAdBlock.prototype._stopLoop = function(detected) {
		clearInterval(this._var.loop);
		this._var.loop = null;
		this._var.loopNumber = 0;
		
		if(this._options.debug === true) {
			this._log('_stopLoop', 'A loop has been stopped');
		}
	};
	
	BlockAdBlock.prototype.emitEvent = function(detected) {
		if(this._options.debug === true) {
			this._log('emitEvent', 'An event with a '+(detected===true?'positive':'negative')+' detection was called');
		}
		
		var fns = this._var.event[(detected===true?'detected':'notDetected')];
		for(var i in fns) {
			if(this._options.debug === true) {
				this._log('emitEvent', 'Call function '+(parseInt(i)+1)+'/'+fns.length);
			}
			if(fns.hasOwnProperty(i)) {
				fns[i]();
			}
		}
		if(this._options.resetOnEnd === true) {
			this.clearEvent();
		}
		return this;
	};
	BlockAdBlock.prototype.clearEvent = function() {
		this._var.event.detected = [];
		this._var.event.notDetected = [];
		
		if(this._options.debug === true) {
			this._log('clearEvent', 'The event list has been cleared');
		}
	};
	
	BlockAdBlock.prototype.on = function(detected, fn) {
		this._var.event[(detected===true?'detected':'notDetected')].push(fn);
		if(this._options.debug === true) {
			this._log('on', 'A type of event "'+(detected===true?'detected':'notDetected')+'" was added');
		}
		
		return this;
	};
	BlockAdBlock.prototype.onDetected = function(fn) {
		return this.on(true, fn);
	};
	BlockAdBlock.prototype.onNotDetected = function(fn) {
		return this.on(false, fn);
	};
	
	window.BlockAdBlock = BlockAdBlock;
	
	if(window.blockAdBlock === undefined) {
		window.blockAdBlock = new BlockAdBlock({
			checkOnLoad: true,
			resetOnEnd: true,
			debug: false
		});
	}
})(window);


// Function called if AdBlock is not detected
function adBlockNotDetected() {

    SparrowTrack('notBlocked', 1);
      if (getCookie('AdCv') === '' && getCookie('AdHt') === '1') {
        setCookie('AdCv', 1, 365);
        if (typeof _satellite !== 'undefined') {
            _satellite.track('adBlockWhitelist');
        }
        SparrowTrack('adBlockWhitelist', 1);
        window.optimizely = window.optimizely || [];
        window.optimizely.push(['trackEvent', 'blockerConversion']);
        
      }
      if (newVisit) {
        trackETF(false, true);
        trackETF(false, false);
      } else {
        trackETF(false, false);
      }   
}
// Function called if AdBlock is detected
function adBlockDetected() {
    
    setCookie('AdHt', 1, 365);
    
    if (typeof _satellite !== 'undefined') {
      _satellite.track('adBlock');
    }
    
    SparrowTrack('adBlock', 1);
    
    if (newVisit) {
      trackETF(true, true);
      trackETF(true, false);

    } else {
      trackETF(true, false);
    }
    
    if (getCookie('AdCv')==='1') {
      if (typeof _satellite !== 'undefined') {
        _satellite.track('adBlockReversion');
      }
      SparrowTrack('adBlockReversion', 1);
      window.optimizely = window.optimizely || [];
      window.optimizely.push(['trackEvent', 'blockerReversion']);
      setCookie('AdCv', '',-16425);
    }
    
    // activate paywall ab tests here
    // window.optimizely = window.optimizely || [];
	// window.optimizely.push(["activate", 4057871150]);
}

// Recommended audit because AdBlock lock the file 'blockadblock.js' 
// If the file is not called, the variable does not exist 'blockAdBlock'
// This means that AdBlock is present
if(typeof blockAdBlock === 'undefined') {
    adBlockDetected();
} else {
    blockAdBlock.onDetected(adBlockDetected);
    blockAdBlock.onNotDetected(adBlockNotDetected);
}
});
