-
-
Save braiam/88c3cf7e00d6fd0514b4eb02b2c1322b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<meta http-equiv="cache-control" content="no-cache"> | |
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT"> | |
<meta http-equiv="pragma" content="no-cache"> | |
</head> | |
<body style="margin:0"> | |
<script type="text/javascript"> | |
<!-- | |
var __IntegralASDiagnosticCall = function() {}; | |
try { | |
var __IntegralASConfig = { | |
jsDoSplit: "false", | |
cocaPuffsPath: "", | |
debug: "false", | |
killPhrases: "", | |
jsDiag: 'false', | |
version: '0', | |
mtCell: 10, | |
sp_imp_maxLength: 2000, | |
sp_imp_jload_maxLength: 2000, | |
sp_imp_jsInfo_minLength: 0, | |
mtSample: 5, | |
cookieDomain: 'sc.iasds01.com/dtc', | |
trackMouse: "true", | |
exchList: { | |
'e1': 'nqzryq', | |
'e2': 'tbbtyrnqf.t.qbhoyrpyvpx', | |
'e3': 'ehovpbacebwrpg', | |
'e4': 'chozngvp', | |
'e5': 'bcrak', | |
'e6': 'nqoevgr.pbz', | |
'e7': 'tynz.pbz', | |
'e8': 'lvryqznantre.pbz', | |
'e9': 'yvwvg', | |
'e10': 'nqakf', | |
'p11': 'ghea.pbz', | |
'p12': 'zngugnt', | |
'p13': 'vaivgrzrqvn', | |
'p14': 'qngnkh', | |
'n15': 'zrqvn6qrterrf', | |
'n16': 'dhnagfreir', | |
'n17': 'esvuho.arg', | |
'a18': 'napubeserr', | |
'a19': 'eff2frnepu', | |
'a20': 'mgfgngvp.pbz', | |
'n21': 'ovq.npr.nqiregvfvat', | |
'e22': 'wnfba', | |
'v23': 'fcbgkpqa', | |
'v24': 'ogeyy', | |
'v25': 'yvirenvy', | |
'v26': 'nqncgi', | |
'v27': 'nqnc.gi', | |
'n29': 'qbzqrk.pbz', | |
'n30': 'ernyih.arg', | |
'd31': 'cvengronl', | |
'd32': 'cebklonl', | |
'd33': 'onlcebkl', | |
'd34': 'cvengrcebkl', | |
'd35': 'cebklcvengr', | |
'd36': 'onlcvengr', | |
'n37': 'tjnyyrg', | |
'p39': 'j55p.arg', | |
'p40': 'c0l.pa', | |
'p41': 'vcvalbh.pbz', | |
'p42': 'c0lwferaqre' | |
}, | |
killFlash: 'true', | |
sp_cdnDomain: 'cdn.adsafeprotected.com', | |
protocol: 'https', | |
jsref: "http:\/\/stackoverflow.com\/questions\/39944781\/visual-studio-setup-failed\/39944947", | |
asid: "3c4272b6-8e34-11e6-8fcc-0025904ea2d8", | |
allowViewability: "true", | |
jsFeatures: "mousetrack,viewabilityready,consecutive,cachebust:0,forcecocoa:0,rattie,exch,recordalternate:0,cocoapuffs,usedtdomain,nextcocoa:100,bapiDiag,cookie,postDts:0,videotwoseconds,getPl,decodePl,resolution,usetpl,tpiLookupURL,hundredpct,jloadDiag:0,blur:0,sendclogs,zeroPing,idMap,offscreen,everySecond:1,sdkdetection,moreAdTalkCalls,slid,fm2:1,largeAd,nextcocoaie:100,usevh,fxdet,mmsb:100,bigmon:0,chromeNativeIO:100,oddet:100,ios:0,ancestor:100,avmm:100,avgrn:100,useScreenLocationInfoAdaptor:100,swapids:100,pIntervals:10,firewall_cdn_domain,usesca:0", | |
adsafeDomain: "adsafeprotected.com:80", | |
minimizeCalls: "false", | |
adWidth: "300", | |
adHeight: "250", | |
forceAppend: "false", | |
_onInViewMRC15: __IntegralASConfig && __IntegralASConfig.onInViewMRC15, | |
_onAPIResult: __IntegralASConfig && __IntegralASConfig.onAPIResult, | |
_onMeasurable: __IntegralASConfig && __IntegralASConfig.onMeasurable, | |
_onSuspicious: __IntegralASConfig && __IntegralASConfig.onSuspicious, | |
_onInViewMRC: __IntegralASConfig && __IntegralASConfig.onInViewMRC, | |
_onInViewFull: __IntegralASConfig && __IntegralASConfig.onInViewFull, | |
_onInViewMRC5: __IntegralASConfig && __IntegralASConfig.onInViewMRC5, | |
reqquery: "", | |
mode: "rjsi", | |
requrl: "https:\/\/fw.adsafeprotected.com\/mon", | |
dtBaseURL: "https:\/\/dt.adsafeprotected.com\/dt?advEntityId=65472", | |
adsafeSrc: "https:\/\/fw.adsafeprotected.com\/rfw\/ad.atdmt.com\/65472\/10865004\/d\/a.html;p=11087208769628;cod=1;idfa=;idfa_lat=;aaid=;aaid_lat=;cache=1476025155332?click=https%3A%2F%2Fengine.adzerk.net%2Fr%3Fe%3DeyJhdiI6NDM3LCJhdCI6NSwiYnQiOjAsImNtIjo0ODczOTQsImNoIjoxMTc4LCJjayI6e30sImNyIjoxNzAyNTQyLCJkaSI6IjNiZDgzNWIyNjkzOTQzMDBiODBjMzAwNjZiMjY1ODk5IiwiZG0iOjEsImZjIjoyMDIyNjAwLCJmbCI6MjM2ODYzMywiaXAiOiIxNDguMTAxLjIzMS4yMzMiLCJrdyI6InZpc3VhbC1zdHVkaW8seDg2LHdpbmRvd3MtMTAseC11c2VyLXJlZ2lzdGVyZWQseC0xNTAwcGx1cy1yZXAiLCJtayI6InZpc3VhbC1zdHVkaW8iLCJudyI6MjIsInBjIjo2LjYsImVjIjo2LjYsInByIjo4MjE5OSwicnQiOjIsInJmIjoiaHR0cDovL2NoYXQuc3RhY2tvdmVyZmxvdy5jb20vcm9vbXMvNDE1NzAvc28tY2xvc2Utdm90ZS1yZXZpZXdlcnMiLCJzdCI6ODI3NywidWsiOiJ1ZTEtNDlmYzU0MmIwODcyNDExMGIxOGQ2NGVlYjI3OTA0OWMiLCJ6biI6NDUsInRzIjoxNDc2MDI1MTU1MzMzLCJiZiI6dHJ1ZSwicG4iOiJhZHplcms3MDk1NjE2OTkiLCJ1ciI6bnVsbH0%26s%3DFznTTw6e8UZQkignHDresWHKLNk%26url=", | |
tpiLookupURL: "", | |
getTpl: "false", | |
use100v: false, | |
useBapiCallback: "", | |
useViewabilityNotification: "", | |
scriptUrl: "https://fw.adsafeprotected.com/rjsi/ad.atdmt.com/65472/10865004/d/a.html;p=11087208769628;cod=1;idfa=;idfa_lat=;aaid=;aaid_lat=;cache=1476025155332?cl", | |
accountForSadImps: '', | |
sendCookie: 'true', | |
cookieBaseURL: 'sc.iasds01.com/dtc?advEntityId=65472', | |
fwMonitoring: 'false', | |
doNothing: false, | |
mn: "app15dal", | |
mobOrTab: false, | |
mobFwUrl: "", | |
videoId: '' | |
}; | |
if (__IntegralASConfig.jsFeatures.indexOf('asidJsDiagnostic') !== -1) { | |
var fakeErr = { | |
message: __IntegralASConfig.asid | |
}; | |
__IntegralASDiagnosticCall('asid', fakeErr); | |
} | |
__IntegralASConfig.birthdate = new Date().getTime(); | |
__IntegralASConfig.useFIF = (!!window.__IntegralASUseFIF) && __IntegralASConfig.mode === 'jload'; | |
__IntegralASConfig.contextNode = (function() { | |
if (__IntegralASConfig.useFIF) { | |
return window.frameElement; // Early exit if using FIF | |
} | |
var tempScript, | |
embedded = window != top, | |
scripts = document.getElementsByTagName('script'), | |
result = scripts[scripts.length - 1], | |
scriptIndex = scripts.length, | |
useDocWrite = 'jss,jsi,jspix'.indexOf(__IntegralASConfig.mode) !== -1, | |
scriptUrl = __IntegralASConfig.scriptUrl; | |
try { | |
while (--scriptIndex >= 0) { | |
tempScript = scripts[scriptIndex]; | |
if (tempScript.src && tempScript.src.indexOf(scriptUrl) === 0 && tempScript.getAttribute('data-ias-script-tag') === null) { | |
result = tempScript; | |
tempScript.setAttribute('data-ias-script-tag', 'found'); | |
break; | |
} | |
} | |
if (scriptIndex === 0 && useDocWrite && !embedded) { | |
document.write('<span id="s' + __IntegralASConfig.asid + '"/>'); | |
result = document.getElementById('s' + __IntegralASConfig.asid).parentNode; | |
} | |
} catch (e) {} | |
return result; | |
}()); | |
} catch (err) { | |
__IntegralASConfig = {}; | |
__IntegralASDiagnosticCall('bootstrapper', err); | |
} | |
__IntegralASConfig.initialize = function(p, u, B) { | |
var l, Db = function() { | |
l = new X; | |
var a; | |
l.provide("mobileApp", function() { | |
return a = a || new va(b) | |
}); | |
var b = l.provide("features", wa()), | |
c = xa(), | |
d = ya(c), | |
e = new za(l), | |
h = function() { | |
var a = new Aa(n.getWindow(), new J), | |
c = new Ba(n.getWindow()), | |
b = new Ca(n.getWindow(), c, p.mode), | |
d = new Da(a, new J), | |
e = new Ea(n.getWindow(), new J), | |
c = new Fa(n.getWindow(), c, p.mode), | |
a = new Ga(a, e, new J), | |
b = (new Ha([{ | |
environment: b, | |
measurementStrategy: d | |
}, { | |
environment: c, | |
measurementStrategy: a | |
}])).resolve(), | |
d = new Ia(b); | |
return new Ja(b, d) | |
}(); | |
b.on("swapids") && (p.oid = p.asid, p.asid = d.unq); | |
var k, r, t, q, m = Ka(), | |
x = La(), | |
w = Ma(b), | |
A = Na(), | |
z = Oa(l), | |
D = l.provide("mPage", Pa()), | |
G = Qa(), | |
H = Ra(G, n), | |
F = Sa(), | |
C = Ta(), | |
L = Ua(c, C), | |
C = l.provide("browser", Va()), | |
ma = l.provide("intersectionWatcher", Wa(n.getDoc().body)); | |
l.provide("ieXDomainViewability", Xa(C)); | |
l.provide("iframe", Ya(C)); | |
var u = Za(C), | |
v = l.provide("video", s.isVideo() && !s.isAvid() ? $a(p.videoId, b, F) : {}); | |
ab(bb.build()); | |
var y = cb(c, u, b), | |
B = db(y, c, D), | |
M = eb(z), | |
E = fb(y, c, b, d, e, C, F, A), | |
A = gb(), | |
N = hb(c, b, l, z), | |
z = ib(L, E, c, d, e), | |
U = jb(L, E), | |
N = kb(N, b, h.isImmediate()), | |
O = lb(h, C, E, c, b, u, l, d, e, M, D, B, F, v), | |
D = mb(L, c, b, d, N, e, C, O), | |
d = nb(C, d, O), | |
F = ob(), | |
L = pb(), | |
u = qb(), | |
v = rb(), | |
B = sb(), | |
M = tb(), | |
N = ub(), | |
R = vb(), | |
I = wb(); | |
E.setViewabilityMod(O); | |
var S; | |
if (! function() { | |
var a = !1, | |
b, d; | |
try { | |
f.isDef(p) && f.isDef(p.killPhrases) && "" !== p.killPhrases && (b = p.adsafeSrc ? p.adsafeSrc : p.requrl + p.reqquery, d = p.killPhrases.split(","), f(d).each(function(c, e) { | |
e = decodeURIComponent(d[c]).replace(/^\s+|\s+$/g, ""); - 1 !== b.search(e) && (a = !0) | |
})), p.doNothing && | |
(a = !0) | |
} catch (e) { | |
c.add(g.ERROR_CODES.KILL_IT) | |
} | |
return a | |
}()) { | |
if (w.isApplicable(s)) try { | |
w.start(), e.addItem(w.getFrameMap(), "fm"), b.on("fm2") && e.addItem(w.getFrameMapIncludingPeerCase(), "fm2"), b.on("idMap") && (k = w.getIdMap()) && e.addItem(k, "idMap") | |
} catch (Q) { | |
c.add(g.ERROR_CODES.ADTALK_GENERAL) | |
} | |
k = xb(); | |
k.isApplicable() && k.start(); | |
G.isApplicable(C, b, s) && G.start(); | |
var P; | |
try { | |
ma.isApplicable(C, b, s) && ma.start(); | |
"true" !== p.minimizeCalls && O.init(); | |
b.on("mousetrack") && (q = yb(y, e), q.init()); | |
P = H.detectTopURL(); | |
b.on("exch") && | |
(r = zb(c, e), r.parse(P)); | |
if (b.on("getPl") && navigator && navigator.plugins) { | |
t = Ab(navigator.plugins); | |
var Y = t.hash(); | |
e.addItem({ | |
output: Y.join(".") | |
}, "pl", { | |
type: g.DT_CODES.ADTALK | |
}); | |
if (b.on("decodePl") && Y.length) { | |
var Z = t.decode(Y); | |
e.addItem({ | |
output: Z.join(".") | |
}, "pd", { | |
type: g.DT_CODES.ADTALK | |
}) | |
} | |
} | |
b.bootstrapOn("use100v") && Bb(); | |
A.isApplicable(b) && (A.start(), l.trigger("sendCookie")) | |
} catch (ca) { | |
c.add(g.ERROR_CODES.IMPRESSION_LEADUP) | |
} | |
try { | |
D.send(P) | |
} catch ($) { | |
__IntegralASDiagnosticCall("impsend", $, p) | |
} | |
try { | |
d.isApplicable(b) && | |
d.start(), b.bootstrapOn("getTpl") && b.on("usetpl") && z.init(), p.tpiLookupURL && U.init(p.tpiLookupURL), Cb(b), "true" !== p.minimizeCalls && (S = (new Date).getTime(), n.execAtEndOfThread(function() { | |
n.execAtEndOfThread(function() { | |
try { | |
var a = { | |
output: (new Date).getTime() - S | |
}; | |
e.addItem(a, "sinceFw", { | |
type: g.DT_CODES.ADTALK | |
}); | |
f.isDef(O.readyFired()) && e.addItem({ | |
output: O.readyFired() | |
}, "readyFired", { | |
type: g.DT_CODES.ADTALK | |
}); | |
w.isApplicable(s) && w.sendAdTalkCall() | |
} catch (b) { | |
c.add(g.ERROR_CODES.ADTALK_DELAY) | |
} | |
}) | |
})), h && h.start(), | |
F.isApplicable(b, C) && F.start(C), L.isApplicable(b, C) && L.start(), B.isApplicable(b, C) && B.start(), M.isApplicable(b, C) && M.start(), u.isApplicable(b) && u.start(), v.isApplicable(b, C) && v.start(), R.isApplicable(b) && R.start(), I.start({ | |
sca: "usesca" | |
}, b), G.isStarted() && G.sendOriginList(), m.isApplicable(b) && (m.start(), x.start(), x.addFieldTypes(["im"]), K.recordBlockingTime(), K.setupOnLoadTracking(), K.setupBrowserDelayTracking()), N.isApplicable(b) && N.start() | |
} catch (T) { | |
c.add(g.ERROR_CODES.POST_IMPRESSION) | |
} | |
} | |
}, | |
f = function(a) { | |
var b = | |
function(b) { | |
var d = null === a, | |
d = "object" === typeof a && !d, | |
e = !c() && d; | |
return b ? d : e | |
}, | |
c = function() { | |
return a instanceof Array | |
}, | |
d = function(c, b) { | |
if (a.length === +a.length) | |
for (var d = 0, e = a.length; d < e; ++d) c(d, a[d]); | |
else | |
for (d in a)(a.hasOwnProperty(d) || b) && c(d, a[d]) | |
}, | |
e = function(a, c) { | |
var b = []; | |
d(function(d, e) { | |
var k = a(d, e); | |
if (void 0 !== k || c) b[b.length] = k | |
}); | |
return b | |
}, | |
h = function(a, c) { | |
c = c || ","; | |
var b = []; | |
d(function(c, d) { | |
var e = a(c, d); | |
f.isDef(e) && b.push(e) | |
}); | |
return b.join(c) | |
}, | |
k = function(a, c, b) { | |
for (var d in c) f.isDef(c[d]) && | |
(b || c.hasOwnProperty(d)) && (a[d] = c[d]); | |
return a | |
}, | |
r = function(a) { | |
var c = {}; | |
d(function(d, e) { | |
var h = a(d, e); | |
b(h) && k(c, h) | |
}); | |
return c | |
}, | |
t = function(a) { | |
var c = []; | |
d(function(a) { | |
c.push(a) | |
}, a); | |
return c | |
}; | |
return { | |
each: d, | |
isObj: b, | |
isArray: c, | |
isEmpty: function(a) { | |
return 0 === t(a).length | |
}, | |
invert: function() { | |
return r(function(a, c) { | |
var b = {}; | |
b[c] = a; | |
return b | |
}) | |
}, | |
mapToObj: r, | |
map: e, | |
keys: t, | |
toParams: function(a) { | |
return h(function(a, c) { | |
return "string" === typeof a && -1 !== a.indexOf("NULL") ? c : a + ":" + c | |
}, a) | |
}, | |
stringify: h, | |
toION: function(d, k) { | |
var h, | |
t = "[", | |
r = "]"; | |
k = k || 0; | |
d = d || {}; | |
if (4 < ++k) return "object"; | |
if (!b(!0) || a.hasOwnProperty("toString")) return "" + a; | |
c() ? h = e(function(a, c) { | |
return f(c).toION(d, k) | |
}) : (t = "{", r = "}", h = e(function(a, c) { | |
var b = "string" === typeof a && -1 !== a.indexOf("NULL"), | |
e = f(c).toION(d, k); | |
return b ? e : (d[a] || a) + ":" + e | |
})); | |
return t + h.join(",") + r | |
}, | |
compareTo: function(a) { | |
var c = !1; | |
d(function(b, d) { | |
a[b] !== d && (c || (c = {}), c[b] = d) | |
}); | |
return c | |
}, | |
mixin: function(c, b) { | |
return k(a, c, b) | |
}, | |
find: function(a) { | |
var c; | |
d(function(b, d) { | |
a(b, d) && (c = d) | |
}); | |
return c | |
}, | |
findFirst: function(a) { | |
var c, | |
b; | |
d(function(d, e) { | |
!b && a(d, e) && (c = e, b = !0) | |
}); | |
return c | |
}, | |
asStrings: function() { | |
var a = {}; | |
d(function(c, b) { | |
a[c] = "" + b | |
}); | |
return a | |
}, | |
selectProperties: function(c) { | |
var b = {}; | |
f(c).each(function(c, d) { | |
f.isDef(a[d]) && (b[d] = a[d]) | |
}); | |
return b | |
}, | |
filter: function(a, c) { | |
return e(function(c, b) { | |
var d; | |
if (f.isUndef(a) || f.resolve(a, c, b)) d = b; | |
return d | |
}, c) | |
}, | |
toArray: function() { | |
return e(function(a, c) { | |
return c | |
}) | |
}, | |
JSONStringify: function() { | |
var c, b, d = !1; | |
u.Prototype && u.Prototype.Version && -1 === u.Prototype.Version.indexOf("1.7") && (d = !0); | |
d && | |
(b = Array.prototype.toJSON, delete Array.prototype.toJSON); | |
c = JSON.stringify(a); | |
d && (Array.prototype.toJSON = b); | |
return c | |
} | |
} | |
}; | |
f.toBase = function(a, b) { | |
var c, d = 0 > a, | |
e = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""), | |
h = []; | |
a = d ? -a : a; | |
do c = a % b, h.push(e[c]), a = (a - c) / b; while (0 < a); | |
h = h.reverse().join(""); | |
return d ? "-" + h : h | |
}; | |
f.isDef = function(a) { | |
return "undefined" !== typeof a | |
}; | |
f.isUndef = function(a) { | |
return !f.isDef(a) | |
}; | |
f.isBool = function(a) { | |
return "boolean" === typeof a | |
}; | |
f.noop = function() {}; | |
f.identity = function(a) { | |
return a | |
}; | |
f.isFunction = function(a) { | |
return "function" === typeof a | |
}; | |
f.isStr = function(a) { | |
return "string" === typeof a | |
}; | |
f.useIfDef = function(a) { | |
return f.isDef(a) ? a : !1 | |
}; | |
f.stringifyTriState = function(a) { | |
return !0 === a ? 1 : !1 === a ? 0 : "na" | |
}; | |
f.resolve = function(a) { | |
var b = f(arguments).toArray(); | |
b.shift(); | |
return f.isFunction(a) ? a.apply({}, b) : a | |
}; | |
f.flatJSONParse = function(a) { | |
var b, c, d, e = /"(\w+)":(\d+|(?:"([^"]*)"))/g, | |
h = {}; | |
for (d = e.exec(a); d;) b = d[1], c = d[3], d = d[2], h[b] = c || +d, d = e.exec(a); | |
return h | |
}; | |
f.debounce = function(a, b) { | |
var c; | |
return function() { | |
var d = | |
this, | |
e = arguments; | |
clearTimeout(c); | |
c = setTimeout(function() { | |
c = null; | |
a.apply(d, e) | |
}, b) | |
} | |
}; | |
f.last = function(a) { | |
return a[a.length - 1] | |
}; | |
f.collapseArgsIntoHash = function(a, b) { | |
var c = {}; | |
b ? c[a] = b : c = a; | |
return c | |
}; | |
var Bb = function() { | |
var a, b, c = !1, | |
d = l.request("mPage"), | |
e = function() { | |
!c && b && a && !d.isHidden() && (c = !0, l.trigger("sendDt", g.DT_CODES.LARGE_BILLABLE)) | |
}; | |
l.on("primaryadfound", function(c) { | |
a = c.getDims().area() >= g.MRC_LARGE_AD_SIZE; | |
e() | |
}); | |
l.on("impressionsent", function() { | |
b = !0; | |
e() | |
}); | |
d.onHiddenChange(e) | |
}, | |
Na = function() { | |
var a = [], | |
b = {}, | |
c = { | |
percentInView: "piv", | |
sl: "vs", | |
reason: "r", | |
width: "w", | |
height: "h" | |
}; | |
l.on("newScreenEvent", function(d) { | |
d = f(d).selectProperties(f(c).keys()); | |
d = f(d).asStrings(); | |
var e = f(d).compareTo(b); | |
e && (e.t = s.getTagTime(), a.push(e)); | |
f(b).mixin(d) | |
}); | |
return { | |
toString: function() { | |
return f(a).toION(c) | |
} | |
} | |
}, | |
Eb = function(a, b, c, d, e, h, k) { | |
var r; | |
(function() { | |
var h = c.getRounded(), | |
f = h.width - 5, | |
m = h.height - 5, | |
g = 0.5 * h.width + 1, | |
h = 0.5 * h.height + 1; | |
r = [new a(b, f, m, e, k, d), new a(b, f, 5, e, k, d), new a(b, 5, m, e, k, d), new a(b, 5, 5, e, k, d), new a(b, g, h, | |
e, k, d)] | |
})(); | |
return { | |
getNumInView: function() { | |
var a = [], | |
c = 0; | |
f(r).each(function(c, b) { | |
var d = b.isInView() ? 1 : 0; | |
a.push(d) | |
}); | |
h.addItem({ | |
output: a.join(".") | |
}, "pvs"); | |
f(a).each(function(a, b) { | |
c += b | |
}); | |
return c | |
}, | |
getPctInView: function(a) { | |
return 5 === a ? 100 : 3 <= a ? 51 : 0 | |
}, | |
isReady: function() { | |
var a = !0; | |
f(r).each(function(c, b) { | |
b.isNotReadyToReport() && (a = !1) | |
}); | |
return a | |
}, | |
remove: function() { | |
f(r).each(function(a, c) { | |
try { | |
c.remove() | |
} catch (b) {} | |
}) | |
} | |
} | |
}, | |
Fb = function(a, b, c, d, e, h, k, r) { | |
var t = e.on("nextcocoa") ? na : oa, | |
q = new a(t, B.body, b, d, e, k, r), | |
m, x, w = 0; | |
c = c || f.noop; | |
m = setInterval(function() { | |
q.isReady() && !x ? (x = !0, c(), clearInterval(m)) : (5 === ++w || x) && clearInterval(m) | |
}, 50); | |
return { | |
checkViewable: function() { | |
var a = q.isReady(), | |
b = q.getNumInView(), | |
b = q.getPctInView(b), | |
d = h.calcInitialViewState(b, !0); | |
a && !x && (x = !0, c()); | |
return { | |
str: a ? d : g.NA, | |
pct: a ? b : -1 | |
} | |
}, | |
removePixels: function() { | |
q.remove() | |
} | |
} | |
}, | |
ca = function(a, b, c, d, e, h) { | |
var k, r, t = b.getRounded(), | |
q = [], | |
m = !1, | |
x = 0, | |
w = d.on("largeAd") && b.isMrcLarge() && !s.isVideo() ? Gb(t) : Hb(t), | |
l = function() { | |
var a; | |
if (!m) | |
for (m = !0, a = 0; a < q.length; a++) | |
if (q[a].isNotReadyToReport()) { | |
m = !1; | |
break | |
} | |
return m | |
}, | |
z = function() { | |
var a = 0; | |
f(q).each(function(c, b) { | |
b.isInView() && (a += 1) | |
}); | |
return w.getPctInView(a) | |
}; | |
(function() { | |
var c = w.get(); | |
f(c).each(function(c, b) { | |
var k = new a(B.body, b.x, b.y, d, e, h); | |
k.weight = b.weight; | |
q.push(k) | |
}) | |
})(); | |
c = c || f.noop; | |
k = setInterval(function() { | |
l() && !r ? (r = !0, c(), clearInterval(k)) : (5 === ++x || r) && clearInterval(k) | |
}, 50); | |
return { | |
checkViewable: function() { | |
var a = l(), | |
e; | |
a && (e = d.on("largeAd") && b.isMrcLarge() ? 30 : 50, e = z() >= e ? g.IN_VIEW : g.OUT_OF_VIEW); | |
a && !r && (r = !0, c()); | |
return { | |
str: a ? e : g.NA, | |
pct: a ? | |
z() : -1 | |
} | |
}, | |
removePixels: function() { | |
f(q).each(function(a, c) { | |
try { | |
c.remove() | |
} catch (b) {} | |
}) | |
} | |
} | |
}, | |
X = function() { | |
var a = new Ib, | |
b = new J; | |
return f(a).mixin(b) | |
}, | |
J = function() { | |
var a = {}, | |
b = function(c, b) { | |
a[c] = a[c] || new da; | |
a[c].push(b) | |
}; | |
return { | |
on: function(a, d) { | |
d ? b(a, d) : f(a).each(b) | |
}, | |
trigger: function(c) { | |
var b, e = f(arguments).toArray(); | |
if (b = a[c]) e.shift(), b.run.apply({}, e) | |
} | |
} | |
}, | |
xb = function() { | |
var a = {}, | |
b = { | |
ox: 0 | |
}, | |
c = n.getWindow(), | |
d = f.isDef(c.JSON) && f.isDef(c.postMessage), | |
e = function(c) { | |
var d = c.uniqueId; | |
c = b[c.vendorKey]; | |
var e = !1; | |
f.isDef(c) && | |
1 > c && d && !a[d] && (e = !0); | |
return e | |
}, | |
h = function(a, c) { | |
if (c) return c.type = "receipt", c | |
}, | |
k = function(c, d, e) { | |
b[d.vendorKey] ++; | |
e(); | |
a[d.uniqueId] = !0; | |
r(d) && (e = "false" === d.isSampling, c = ["ext", d.vendorKey, d.dataKey].join("_"), e = { | |
encode: !0, | |
minDt: e, | |
type: e ? g.DT_CODES.EXTERNAL : g.DT_CODES.UNLOAD | |
}, l.trigger("addOutputItem", { | |
output: d.dataValue | |
}, c, e), l.trigger("addOutputItem", { | |
output: d.vendorKey | |
}, "ext_vendor", e), "false" === d.isSampling && l.trigger("sendMinDt", g.DT_CODES.EXTERNAL)) | |
}, | |
r = function(a) { | |
var c = function(a) { | |
return f.isStr(a) && | |
100 > a.length | |
}; | |
return c(a.vendorKey) && c(a.dataKey) && c(a.dataValue) | |
}; | |
return { | |
isApplicable: function() { | |
return d | |
}, | |
start: function() { | |
(new ea).listen(e, k, h) | |
} | |
} | |
}, | |
T = function(a, b, c, d) { | |
var e = l.request("browser"); | |
if (l.request("features").bootstrapOn("killFlash")) return { | |
style: {}, | |
isPlaceholder: !0 | |
}; | |
var h = function(a, c) { | |
return '<param name="' + a + '" value="' + c + '"/>' | |
}; | |
return function() { | |
var k, f, t, q = p.dtBaseURL, | |
m = p.cocaPuffsPath, | |
q = new I(q); | |
q.sub(b || "static"); | |
q.master(q.master().split(":")[0]); | |
q.path(""); | |
m && (q.master(m), q.sub("")); | |
q += a; | |
m = h("allowscriptaccess", "always"); | |
k = h("movie", q) + h("play", "true") + h("loop", "true"); | |
t = e.browserIs(g.BROWSERS.IE) || e.browserIs(g.BROWSERS.MSEDGE); | |
f = e.browserIs(g.BROWSERS.IE); | |
t && (t = d ? "window" : "transparent", k += h("wmode", t)); | |
c && (m += h("FlashVars", c)); | |
f ? (f = B.createElement("div"), t = "blag" + p.birthdate + n.random(), f.innerHTML = "<object " + ('id="' + t + '" ') + 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ' + ('type="' + g.FLASH_MIME + '" ') + ('data="' + q + '" ') + ">" + k + m + "</object>", k = f.firstChild) : (k = B.createElement("object"), | |
k.data = q, k.type = g.FLASH_MIME, k.innerHTML = m); | |
q = k; | |
q.style.position = "absolute"; | |
q.style.width = "1px"; | |
q.style.opacity = "0"; | |
q.style.height = "0px"; | |
return k | |
}() | |
}, | |
na = function(a, b, c, d, e, h, k, r) { | |
var t = h.browserIs(g.BROWSERS.IE) || h.browserIs(g.BROWSERS.MSEDGE), | |
q = "_IASflashPixelCallback" + (p.birthdate + "" + n.round(1E6 * n.random())), | |
m = !1, | |
x = !1, | |
w, A, z, D, G = function() { | |
if (w && f.isFunction(w.jsHandshake) && !m) { | |
w.style.height = "1px" === w.style.height ? "2px" : "1px"; | |
try { | |
w.confirmResize() | |
} catch (a) { | |
m = !0, l.trigger("error", g.ERROR_CODES.FLASH_API_ACCESS) | |
} | |
} | |
}, | |
H = function() { | |
if (m) return !1; | |
var a, c; | |
try { | |
(a = D || w && f.isFunction(w.jsHandshake)) && !x && (D = !0, u[q] = F, c = w.jsHandshake(q), x = !0, F(c)) | |
} catch (b) { | |
a = !1, m = !0, l.trigger("error", g.ERROR_CODES.FLASH_API_ACCESS) | |
} | |
return a | |
}, | |
F = function(a) { | |
try { | |
if (f.isUndef(a.isInView)) throw "corrupted Flash pixel message received"; | |
z = 1 === +a.isInView | |
} catch (c) { | |
l.trigger("error", g.ERROR_CODES.FLASH_API_ACCESS) | |
} | |
}, | |
C = function(a, c, b) { | |
var d = new T(t ? "/detector_4_5_IE.pix" : "/detector_4_5.pix"), | |
e = d.style; | |
d[g.IAS_DETECTOR] = "true"; | |
e.left = c + "px"; | |
e.top = | |
b + "px"; | |
d.isPlaceholder || a.appendChild(d); | |
e.height = "1px"; | |
w = d; | |
t && !d.isPlaceholder && setInterval(G, 100); | |
return d | |
}(a, b, c); | |
return { | |
isInView: function() { | |
var a; | |
if (H()) { | |
try { | |
a = z | |
} catch (c) { | |
D = !1, l.trigger("error", g.ERROR_CODES.COCOA_GONE) | |
} | |
h.browserIs("w") && void 0 !== a && (w.style.height = A ? "1px" : "2px", A = !A) | |
} | |
return H() && a | |
}, | |
isNotReadyToReport: function() { | |
return !H() | |
}, | |
createdFlash: w, | |
remove: function() { | |
C.parentNode && C.parentNode.removeChild(C) | |
} | |
} | |
}, | |
oa = function(a, b, c, d, e, h, k) { | |
var r = h.browserIs(g.BROWSERS.IE) || h.browserIs(g.BROWSERS.MSEDGE), | |
t = !1, | |
q, m, x, w, A, z = function(a, c) { | |
return '<param name="' + a + '" value="' + c + '"/>' | |
}, | |
D = function(a, c) { | |
return a + '="' + c + '" ' | |
}, | |
G = function() { | |
if (H() && !t) { | |
q.style.height = "1px" === q.style.height ? "2px" : "1px"; | |
try { | |
q.confirmResize() | |
} catch (a) { | |
t = !0, l.trigger("error", g.ERROR_CODES.FLASH_API_ACCESS) | |
} | |
} | |
}, | |
H = function() { | |
var a = !1; | |
try { | |
a = q && f.isFunction(q.jsHandshake) | |
} catch (c) {} | |
return a | |
}, | |
F = function() { | |
if (t) return !1; | |
var a; | |
try { | |
if ((a = A || H()) && !x) { | |
A = !0; | |
var c = f.flatJSONParse(q.jsHandshake()); | |
x = c.id; | |
if (f.isUndef(x)) throw "corrupted Flash pixel message received"; | |
w = 1 === +c.isInView | |
} | |
} catch (b) { | |
a = !1, t = !0, l.trigger("error", g.ERROR_CODES.FLASH_API_ACCESS) | |
} | |
return a | |
}; | |
y.addEvent(u, "message", function(a) { | |
try { | |
var c = f.flatJSONParse(a.data); | |
"IASCOCOA" === c.type && c.id === x && (w = 1 === +c.isInView) | |
} catch (b) { | |
l.trigger("error", g.ERROR_CODES.FLASH_API_ACCESS) | |
} | |
}); | |
var C = function(a, c, b) { | |
var d; | |
d = new I; | |
var e = p.cocaPuffsPath; | |
d.sub("static"); | |
d.master(d.master().split(":")[0]); | |
e && (d.master(e), d.sub("")); | |
var e = d + (r ? "/detector_4_2_IE.pix" : "/detector_4_1.pix"), | |
k = z("allowscriptaccess", "always"), | |
f = z("movie", e) + z("play", "true") + z("loop", "true"); | |
r && (f += z("wmode", "transparent")); | |
h.browserIs(g.BROWSERS.IE) ? (d = B.createElement("div"), d.innerHTML = "<object " + D("id", "blag" + p.birthdate + n.random()) + D("classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000") + D(g.IAS_DETECTOR, "true") + D("type", g.FLASH_MIME) + D("data", e) + ">" + f + k + "</object>", q = d.firstChild) : (q = B.createElement("object"), q.data = e, q.type = g.FLASH_MIME, q.innerHTML = k, q[g.IAS_DETECTOR] = "true"); | |
q.style.position = "absolute"; | |
q.style.width = "1px"; | |
q.style.opacity = | |
"0"; | |
q.style.height = "0px"; | |
d = q; | |
e = d.style; | |
e.left = c + "px"; | |
e.top = b + "px"; | |
a.appendChild(d); | |
e.height = "1px"; | |
r && setInterval(G, 100); | |
return d | |
}(a, b, c); | |
return { | |
isInView: function() { | |
var a; | |
if (F()) { | |
try { | |
a = w | |
} catch (c) { | |
A = !1, l.trigger("error", g.ERROR_CODES.COCOA_GONE) | |
} | |
h.browserIs("w") && void 0 !== a && (q.style.height = m ? "1px" : "2px", m = !m) | |
} | |
return F() && a | |
}, | |
isNotReadyToReport: function() { | |
return !F() | |
}, | |
createdFlash: q, | |
remove: function() { | |
C.parentNode && C.parentNode.removeChild(C) | |
} | |
} | |
}, | |
V = function() { | |
var a = function(c, b, e) { | |
var h = b.length, | |
k = v.isWindow(c) ? | |
c.frames : v.getChildWindowsOf(c); | |
e && e(c, b); | |
if (k.length) { | |
for (c = 0; c < k.length; c++) b[h] = c, a(k[c], b, e); | |
b.pop() | |
} | |
}, | |
b = function(c, b) { | |
try { | |
a(b || top, [0], c) | |
} catch (e) {} | |
}; | |
return { | |
traverse: b, | |
getFrames: function(a, d) { | |
var e = []; | |
b(function(a) { | |
e.push(a) | |
}, d); | |
return f(e).filter(a) | |
} | |
} | |
}, | |
da = function() { | |
var a = []; | |
return { | |
push: function(b) { | |
a[a.length] = b | |
}, | |
run: function() { | |
var b = arguments; | |
f(a).each(function(a, d) { | |
d.apply({}, b) | |
}) | |
} | |
} | |
}, | |
ka = function(a) { | |
return { | |
doEligibleJobs: function(b) { | |
var c = a[0], | |
d = c && c.time; | |
d && b >= d && (c.task(), a.shift()) | |
}, | |
getNextJob: function() { | |
return a[0] | |
} | |
} | |
}, | |
ea = function() { | |
var a = function(a, c, d, e) { | |
var h, k = f.noop, | |
r, t; | |
if (JSON && JSON.parse) try { | |
h = JSON.parse(a.data), r = a.source, c(h) && (e && (t = e(r, h)) && (k = function() { | |
(new aa(r)).send(function() { | |
return t | |
}) | |
}), d(a, h, k)) | |
} catch (q) { | |
h && l.trigger("error", g.ERROR_CODES.MESSAGE_LISTENER) | |
} | |
}; | |
return { | |
listen: function(b, c, d) { | |
y.addEvent(u, "message", function(e) { | |
a(e, b, c, d) | |
}) | |
} | |
} | |
}, | |
aa = function(a) { | |
var b = function(a) { | |
return f(a).mapToObj(function(a, c) { | |
var b; | |
f.isFunction(c) || (b = {}, b[a] = c); | |
return b | |
}) | |
}; | |
return { | |
send: function(c) { | |
if (JSON && JSON.stringify) { | |
var d = | |
f(a).isObj() ? [a] : (new V).getFrames(a); | |
f(d).each(function(a, d) { | |
var k; | |
k = f.resolve(c, d) || {}; | |
k.sentTime = n.now(); | |
k = b(k); | |
d.postMessage(f(k).JSONStringify(), "*") | |
}) | |
} | |
} | |
} | |
}, | |
Jb = function(a, b) { | |
return { | |
onAll: function(c) { | |
var d = {}; | |
f(b).each(function(e, h) { | |
a.on(h, function() { | |
d[h] = 1; | |
f(d).keys().length === b.length && (d = {}, c()) | |
}) | |
}) | |
} | |
} | |
}, | |
za = function(a) { | |
var b = 0, | |
c = {}, | |
d = function(a, c, d) { | |
if (f.isUndef(a.output)) throw Error("item with id " + c + ' must have "output" method'); | |
this.item = a; | |
this.id = c || ++b; | |
this.props = d || {}; | |
this.output = function() { | |
var c = | |
f.resolve(a.output); | |
this.props.asION && (c = f(c).toION()); | |
return c | |
} | |
}, | |
e = function(a) { | |
var b, d, e = []; | |
for (b in c) c.hasOwnProperty(b) && (d = a(b, c[b])) && e.push(d); | |
return e | |
}, | |
h = function(a, b, e) { | |
e = e || b; | |
e = "string" !== typeof e ? e : {}; | |
var h = function(a, b, e) { | |
a = new d(a, b, e); | |
c[a.id] = a | |
}; | |
f(a.output).isObj() && !e.asION ? f(a.output).each(function(a, c) { | |
h({ | |
output: c | |
}, a, e) | |
}) : h(a, b, e) | |
}; | |
a.on("addOutputItem", function(a, c, b) { | |
h(a, c, b) | |
}); | |
return { | |
addItem: h, | |
filterOutput: function(a, c) { | |
return e(function(b, d) { | |
var e = d.props, | |
h; | |
a(e) && (h = d.output(), | |
e.encode && (b = encodeURIComponent(b), h = encodeURIComponent(h)), f.isFunction(c) ? c(b, h) : c[b] = h) | |
}) | |
}, | |
iterate: e, | |
cleanup: function() { | |
e(function(a, b) { | |
b.props.flagForRemoval && delete c[a] | |
}) | |
}, | |
getItem: function(a) { | |
return c[a] | |
} | |
} | |
}, | |
Gb = function(a) { | |
var b = a.width - 5, | |
c = a.height - 5, | |
d = 0.5 * a.width + 1, | |
e = 0.5 * a.height + 1, | |
h = 0.3 * a.width + 1, | |
k = 0.7 * a.width + 1, | |
f = 0.3 * a.height + 1, | |
t = 0.7 * a.height + 2, | |
q, m = function(c, b) { | |
1 > c && (c = 1); | |
1 > b && (b = 1); | |
c > a.width && (c = 0 !== a.width ? a.width : 1); | |
b > a.height && (b = 0 !== a.height ? a.height : 1); | |
return { | |
x: n.floor(c), | |
y: n.floor(b) | |
} | |
}; | |
q = [m(b, c), m(b, 5), m(5, c), m(5, 5), m(d, e), m(h, f), m(k, f), m(h, t), m(k, t)]; | |
return { | |
get: function() { | |
return q | |
}, | |
getPctInView: function(a) { | |
var c; | |
0 === a ? c = 0 : 1 === a ? c = 10 : 2 === a ? c = 20 : 5 > a ? c = 30 : 7 > a ? c = 50 : 9 > a ? c = 70 : 9 === a && (c = 100); | |
return c | |
} | |
} | |
}, | |
Hb = function(a, b) { | |
var c = 0.5 * a.width + 1, | |
d; | |
d = [{ | |
y: n.floor(0.5 * a.height + 1), | |
x: n.floor(c) | |
}]; | |
return { | |
get: function() { | |
return d | |
}, | |
getPctInView: function(a) { | |
return 1 === a ? 50 : 0 | |
} | |
} | |
}, | |
Ib = function() { | |
var a = {}, | |
b = function(c, b) { | |
a[c] = b | |
}; | |
return { | |
request: function(c) { | |
var b, e = a[c], | |
h = f(arguments).toArray(); | |
h.shift(); | |
f.isUndef(e) || | |
(b = f.isFunction(e) ? e.apply({}, h) : e); | |
return b | |
}, | |
provide: function(c, d) { | |
d ? a[c] = d : f(c).each(b); | |
return d | |
} | |
} | |
}, | |
db = function(a, b, c) { | |
return { | |
collect: function() { | |
var b = a.find(), | |
e = b.getOutOfViewReasons(), | |
h = c.isHidden(), | |
k = E(v.calcWinDims()), | |
r = b.getDims(); | |
if (!b.hasAd() || !k.hasValidDims() || !r.hasValidDims()) return { | |
viewState: g.NA, | |
posViewState: g.NA, | |
embedded: s.embedded, | |
winDimensions: k, | |
adDimensions: r | |
}; | |
!0 === h && e.push(g.OUT_OF_VIEW_REASONS.FOCUS); | |
return { | |
winDimensions: k, | |
adDimensions: r, | |
containerDimensions: b.getContainerDims(), | |
method: b.getDetectionMethod(), | |
viewState: e.length ? g.OUT_OF_VIEW : b.getViewState(), | |
percentInView: b.getPercentInView(), | |
reason: e.join("."), | |
obstructed: f.stringifyTriState(b.isObstructed()), | |
isHidden: f.stringifyTriState(b.isHidden()), | |
tabHidden: f.stringifyTriState(h), | |
posViewState: b.getViewState(), | |
adCompCount: b.getComponentCount() | |
} | |
} | |
} | |
}, | |
Kb = function(a) { | |
a = a || f.identity; | |
var b = [], | |
c = n.now(), | |
d = function() { | |
var a = n.now(); | |
b.length && (b[b.length - 1].duration += a - c, c = a) | |
}; | |
return { | |
clear: function() { | |
d(); | |
b = [] | |
}, | |
fastForward: d, | |
get: function() { | |
return b | |
}, | |
hasAlwaysBeen: function(a) { | |
return 1 === b.length && b[0].state === a | |
}, | |
addState: function(c) { | |
var h = b[b.length - 1]; | |
c = a(c); | |
d(); | |
0 !== b.length && c === h.state || b.push({ | |
state: c, | |
duration: 0 | |
}) | |
} | |
} | |
}, | |
pa = function(a, b) { | |
var c = a || 1, | |
d = 0, | |
e = 0, | |
h, k = 0; | |
return { | |
start: function() { | |
0 === d % c && (h = n.now()) | |
}, | |
stop: function() { | |
var a = h || b; | |
0 === d % c && (k += n.now() - a, e++); | |
d++ | |
}, | |
getTime: function() { | |
return k | |
}, | |
getCount: function() { | |
return e | |
} | |
} | |
}, | |
fa = function() { | |
var a, b = 0, | |
c = 0, | |
d = new J(!0), | |
e = function() { | |
a && (b++, d.trigger(b), c > b ? n.execAtEndOfThread(e) : h()) | |
}, | |
h = function() { | |
a = !1; | |
b = 0 | |
}; | |
return { | |
onTick: function(a, b) { | |
var e = f.collapseArgsIntoHash(a, b); | |
f(e).each(function(a, b) { | |
a = parseInt(a); | |
c = a > c ? a : c | |
}); | |
d.on(e) | |
}, | |
start: function() { | |
a || (a = !0, n.execAtEndOfThread(e)) | |
}, | |
kill: h, | |
isActive: function() { | |
return a | |
} | |
} | |
}, | |
la = function(a) { | |
var b = 0, | |
c = s.getTagTime(), | |
d = 0, | |
e, h; | |
return { | |
getTotalTime: function() { | |
return d | |
}, | |
stop: function() { | |
b = 0; | |
c = s.getTagTime() | |
}, | |
mark: function() { | |
e = s.getTagTime() - c; | |
b += e; | |
b > a && (h = b - e < a, d += h ? b : e); | |
c = s.getTagTime() | |
} | |
} | |
}, | |
I = function(a, b) { | |
var c = a || p.adsafeSrc || p.requrl; | |
c && 0 !== c.indexOf("http") && | |
(c = p.protocol + "://" + c); | |
var c = /((http|https):\/\/(([^\/\.]*)\.([^\/]*)))(?:\/(.[^?]*)\??(.+)?)*/.exec(c), | |
d = c[1], | |
e = c[2], | |
h = c[3], | |
k = c[4], | |
r = c[5], | |
t = a ? c[6] : "", | |
q = b ? c[7] : "", | |
m = {}, | |
g = function(a) { | |
f.isDef(a) && (k = a); | |
return k | |
}, | |
l = function(a) { | |
f.isDef(a) && (r = a); | |
return r | |
}, | |
A = function(a, c) { | |
return a + "=" + f(c).toION() | |
}, | |
q = q ? q.replace(/&$/, "") : ""; | |
return { | |
fullDom: d, | |
hostname: h, | |
sub: g, | |
master: l, | |
setParam: function(a, c) { | |
m[a] = m[a] || {}; | |
f(c).isObj() ? f(m[a]).mixin(c) : m[a] = c | |
}, | |
path: function(a) { | |
t = a | |
}, | |
_getQsParams: function() { | |
return m | |
}, | |
toString: function() { | |
var a = | |
g() ? g() + "." : "", | |
c = t ? "/" + t : "", | |
b; | |
q || !f(m).isEmpty() ? (b = f(m).isEmpty() ? "" : f(m).stringify(A, "&"), b = "?" + q + (q && b ? "&" + b : b)) : b = ""; | |
return e + "://" + a + l() + c + b | |
} | |
} | |
}, | |
Cb = function(a) { | |
var b = function(a, b) { | |
var e; | |
b && b.id && (e = b.id.replace(/[^\w-_.\/]/g, "")); | |
return e | |
}; | |
(function() { | |
var c; | |
try { | |
if ("jload" === p.mode && a.on("slid") && s.friendly && !s.isMobileApp()) { | |
var d, e; | |
if (d = v.getOurNodeInTop()) { | |
var h = v.getAncestorNodes(d); | |
e = f(h).map(b) | |
}(c = e = e && f(e).toION()) && l.trigger("addOutputItem", { | |
output: c | |
}, "slid", { | |
type: g.DT_CODES.ADTALK | |
}) | |
} | |
} catch (k) { | |
l.trigger("error", | |
g.ERROR_CODES.AD_SLOT_ID) | |
} | |
})() | |
}, | |
Qa = function() { | |
var a, b, c = function(a, c) { | |
-1 !== c.indexOf("https") && (c += "*"); | |
return c.replace(/^https?:\/\//, "") | |
}; | |
return { | |
isApplicable: function(a, c, b) { | |
return a.hasAncestorOrigins() && c.on("ancestor") && b.xDomainIframe | |
}, | |
isStarted: function() { | |
return !!b | |
}, | |
start: function() { | |
try { | |
a = n.getWindow().location.ancestorOrigins, b = !0 | |
} catch (c) { | |
l.trigger("error", g.ERROR_CODES.ANCESTOR_ORIGINS) | |
} | |
}, | |
getMyFrameDepth: function() { | |
return a && a.length || 0 | |
}, | |
getTopDomain: function() { | |
return f.last(a) | |
}, | |
sendOriginList: function() { | |
var b; | |
b = "ao:" + (a ? f(a).map(c).reverse() : []).join(","); | |
l.trigger("addOutputItem", { | |
output: b | |
}, "tpiLookup", { | |
type: g.DT_CODES.THIRD_PARTY, | |
standalone: !0, | |
encode: !0 | |
}); | |
l.trigger("sendDt", g.DT_CODES.THIRD_PARTY) | |
} | |
} | |
}, | |
ib = function(a, b, c, d, e) { | |
var h = function(a, c, b) { | |
e.addItem({ | |
output: a + "." + c + "." + b | |
}, "ctpl") | |
}, | |
k = function(e) { | |
try { | |
b.diagnostic("c"); | |
var k = e.length, | |
q = 0, | |
m = 0; | |
h(k, 0, 0); | |
f(e).each(function(c, b) { | |
a.send(b.replace("%%CBS%%", d.getCacheBustId()), function() { | |
h(k, q, ++m) | |
}, !0); | |
h(k, ++q, m) | |
}) | |
} catch (x) { | |
c.add(g.ERROR_CODES.AT_SEND) | |
} | |
}; | |
return { | |
init: function() { | |
try { | |
var b = (new I).fullDom; | |
"/" !== b.slice(-1) && (b += "/"); | |
b += "tpl?asId=" + p.asid; | |
a.jsonp(b, k) | |
} catch (d) { | |
c.add(g.ERROR_CODES.AT_INIT) | |
} | |
} | |
} | |
}, | |
hb = function(a, b, c, d) { | |
return { | |
enabled: "true" === p.useBapiCallback, | |
callback: function(b) { | |
c.trigger("sendDiag"); | |
try { | |
"true" === p.accountForSadImps && d.measure(b), p._onAPIResult && p._onAPIResult(b) | |
} catch (h) { | |
a.add(g.ERROR_CODES.BAPI_CALLBACK), c.trigger("sendDiag", "bapiClient") | |
} | |
} | |
} | |
}, | |
Va = function() { | |
var a = g.BROWSERS, | |
b, c = function() { | |
var a = "0", | |
c = n.getWindow(), | |
b = function(a) { | |
return a.replace(/\D+/g, | |
",").match(/^,?(.+),?$/)[1].split(",").join(".") | |
}; | |
try { | |
try { | |
var d = n.getNewActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); | |
try { | |
d.AllowScriptAccess = "always" | |
} catch (e) { | |
a = "6" | |
} | |
} catch (h) {} | |
a = b(n.getNewActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")) | |
} catch (k) { | |
try { | |
c.navigator.mimeTypes[g.FLASH_MIME].enabledPlugin && (a = b((c.navigator.plugins["Shockwave Flash 2.0"] || c.navigator.plugins["Shockwave Flash"]).description)) | |
} catch (f) {} | |
} | |
return a | |
}, | |
d = function() { | |
f.isUndef(b) && (b = c()); | |
return b | |
}, | |
e = function(a) { | |
return k() === | |
a | |
}, | |
h = function() { | |
var a = n.getDoc(); | |
return a && a.documentMode ? a.documentMode : g.NA | |
}, | |
k = function() { | |
var c = "u", | |
b = n.getWindow(); | |
try { | |
f.isDef(b.opera) && f.isDef(b.opera.buildNumber) ? c = a.OPERA : f.isDef(b.mozInnerScreenY) ? c = a.GECKO : f.isDef(b.chrome) && f.isDef(b.chrome.csi) ? c = a.CHROME : f.isDef(b.msWriteProfilerMark) && f.isDef(b.crypto) ? c = a.MSEDGE : f.isDef(b.attachEvent) || f.isDef(b.msCrypto) ? c = a.IE : f.isDef(b.WebKitPoint) && (c = a.WEBKIT) | |
} catch (d) {} | |
return c | |
}, | |
r = function() { | |
var c = ["{45EA75A0-A269-11D1-B5BF-0000F8051515}", "{3AF36230-A269-11D1-B5BF-0000F8051515}", | |
"{89820200-ECBD-11CF-8B85-00AA005B4383}" | |
], | |
b = g.NA, | |
d = n.getDoc(), | |
h = d.createElement("div"); | |
if (e(a.IE)) try { | |
if ("-ms-ime-align" in d.documentElement.style) b = "11"; | |
else | |
for (h.style.behavior = "url(#default#clientcaps)", d = 0; d < c.length && !(b = h.getComponentVersion(c[d], "componentid").replace(/,/g, ".")); d++); | |
} catch (k) {} | |
return b | |
}; | |
return { | |
browserIs: e, | |
hasIntersectionObserver: function() { | |
return "function" === typeof IntersectionObserver | |
}, | |
hasFlashEnabled: function() { | |
return "0" !== d() | |
}, | |
hasAncestorOrigins: function() { | |
var a = n.getWindow().location; | |
return !(!a || !a.ancestorOrigins) | |
}, | |
getFlashVersion: d, | |
getDocumentMode: h, | |
getBrowserType: k, | |
getUserAgent: function() { | |
var a = !1, | |
c = n.getWindow(); | |
f.isDef(c.navigator) && f.isDef(c.navigator.userAgent) && (a = c.navigator.userAgent); | |
return a | |
}, | |
isOnWin7: function() { | |
return 0 < n.getWindow().navigator.userAgent.indexOf("Windows NT 6.1") | |
}, | |
isIEVersion: function(a) { | |
return 0 === r().indexOf(a) | |
}, | |
params: function() { | |
var c = k(), | |
b = d(), | |
m; | |
m = 5; | |
var x = n.getWindow(), | |
l = n.getDoc(); | |
e(a.IE) ? x.msCrypto ? m = 11 : x.atob ? m = 10 : x.addEventListener ? m = 9 : x.JSON && | |
l.querySelector ? m = 8 : x.XMLHttpRequest ? m = 7 : l.compatMode && (m = 6) : m = g.NA; | |
var x = h(), | |
l = r(), | |
A = g.NA, | |
z = n.getWindow(); | |
f.isDef(z.navigator) && f.isDef(z.navigator.appName) && (A = z.navigator.appName.toLowerCase()[0]); | |
return { | |
br: c, | |
fv: b, | |
bv: m, | |
dm: x, | |
abv: l, | |
an: A | |
} | |
} | |
} | |
}, | |
Ua = function(a, b) { | |
var c = function(a, c) { | |
var b, d, e = p.contextNode.parentNode; | |
c = c || a; | |
a = 1 < arguments.length ? a : "script"; | |
b = { | |
script: ['<script type="text/javascript" src="', '">\x3c/script>'], | |
iframe: ['<iframe width="100%" height="100%" frameborder="0" vspace="0" hspace="0" scrolling="no" marginheight="0" marginwidth="0" src="', | |
'"></iframe>' | |
], | |
img: ['<img src="', '"/>'] | |
}[a]; | |
d = b[0] + c + b[1]; | |
"true" === p.forceAppend ? "script" !== a ? (b = B.createElement("DIV"), b.innerHTML = d, e.appendChild(b.childNodes[0])) : (b = B.createElement("SCRIPT"), b.src = c, e.appendChild(b)) : B.write(d) | |
}, | |
d = function(a, c, b) { | |
var d = !b && y.getXHR2(); | |
d ? (d.open("POST", a), d.onreadystatechange = function() { | |
4 === d.readyState && 200 === d.status && c && c() | |
}, d.send()) : (b = v.createImage(), c && (b.onload = c), b.src = a) | |
}, | |
e = function(a, c) { | |
var b = B.createElement("script"); | |
b.type = "text/javascript"; | |
b.src = | |
a; | |
c && (b.onload = c); | |
f.isDef(p.contextNode.parentNode) && p.contextNode.parentNode.appendChild(b) | |
}, | |
h = function(a) { | |
f.isFunction(a) ? a({ | |
iasImpId: p.asid | |
}) : a && "string" === typeof a && d(a, void 0, !0) | |
}, | |
k = function(a, c, d, h) { | |
e(b.wrap(a, c, d, h)) | |
}; | |
l.on({ | |
addNode: c, | |
send: d, | |
exec: e, | |
notify: h, | |
jsonp: k | |
}); | |
return { | |
addNode: c, | |
send: d, | |
exec: e, | |
notify: h, | |
jsonp: k | |
} | |
}, | |
g = { | |
MRC_LARGE_AD_SIZE: 242500, | |
FLASH_MIME: "application/x-shockwave-flash", | |
IN_VIEW: "inView", | |
OUT_OF_VIEW: "outOfView", | |
PARTIAL_VIEW_PLUS: "partialViewPlus", | |
PARTIAL_VIEW_MINUS: "partialViewMinus", | |
NA: "na", | |
PIV_NA: -1, | |
DT_CODES: { | |
ADTALK: "a", | |
DIAGNOSTIC: "b", | |
PERFORMANCE: "e", | |
THIRD_PARTY: "i", | |
LARGE_BILLABLE: "l", | |
VIDEO_EVENTS: "m", | |
PING: "p", | |
FULLY_INVIEW: "pf", | |
QUARTILE_FULLY_INVIEW: "qf", | |
AVIREEN: "r", | |
SCA: "s", | |
POS_INVIEW: "t", | |
UNLOAD: "u", | |
VIEWABILITY_READY: "v", | |
VH: "vh", | |
EXTERNAL: "x" | |
}, | |
DETECTION_METHODS: { | |
AD_PLACEHOLDER: "s", | |
AD_HUNT: "a", | |
IFRAME: "i", | |
VIDEO: "v", | |
MRAID: "m", | |
AVID: "av", | |
MUTATION: "c", | |
SPECIFIED_AD: "sp" | |
}, | |
OUT_OF_VIEW_REASONS: { | |
GEOM: "l", | |
OBSTRUCTION: "o", | |
FOCUS: "f", | |
COLLAPSED: "c", | |
HIDDEN: "h", | |
VIDEO: "v" | |
}, | |
VIDEO_CHANNELS: { | |
VANS: { | |
AS3_ADAPTOR: "av3", | |
JS_ADAPTOR: "jv3" | |
}, | |
WRAPPERS: { | |
JS: "jvw" | |
} | |
}, | |
PERF_TIMELINE_TRACKER_CONFIG: { | |
VANS: { | |
TYPE: "vans", | |
COUNT: 4 | |
}, | |
WRAPPERS: { | |
JS: { | |
TYPE: "jswrapper", | |
COUNT: 15 | |
}, | |
AS: { | |
TYPE: "flwrapper", | |
COUNT: 9 | |
} | |
} | |
}, | |
ERROR_CODES: { | |
GET_AD_DIMENSIONS: "a", | |
AD_SLOT_ID: "A", | |
BAPI_CALLBACK: "b", | |
BROWSER_NOT_HTML5_COMPATIBLE: "B", | |
ADTALK_GENERAL: "c", | |
COCOA_GONE: "C", | |
GET_SCREEN_LOC_GET_DIMENSIONS: "d", | |
ADTALK_DUBIOUS: "D", | |
NO_CONTAINER: "e", | |
POST_IMPRESSION: "E", | |
ADTALK_DELAY: "f", | |
VIDEO_IN_IFRAME_DIMS_CALC: "F", | |
GREEN: "g", | |
INIT_ADS_MANAGER: "G", | |
PHONE_HOME: "h", | |
UID_GENERATION: "i", | |
IMPRESSION_URLS: "I", | |
NOT_VPAID_EVENT_OBJECT: "j", | |
JSINFO: "J", | |
KILL_IT: "k", | |
NO_RESPONSE_XML: "K", | |
LOCATION_DETAILS: "l", | |
IMPRESSION_LEADUP: "L", | |
MESSAGE_LISTENER: "m", | |
MOBILE_APP: "M", | |
AT_INIT: "N", | |
OFF_DESKTOP: "O", | |
ANCESTOR_ORIGINS: "o", | |
GET_SCREEN_LOC_PIV_CALC: "p", | |
PLUGIN_PARSING: "P", | |
NO_ORIGINAL_VAST: "q", | |
AVIREEN: "r", | |
AD_ERROR: "R", | |
GET_ELEM_STYLE: "s", | |
AT_SEND: "S", | |
ADS_MANAGER_START_AD: "t", | |
NO_COMPANION_AD_XML: "T", | |
NO_VIDEO_AD_INTERFACE: "u", | |
UNRECOGNIZED_EVENT_TYPE: "U", | |
ENVIRONMENT: "v", | |
CHECK_SCREEN_LOC: "V", | |
GET_WIN_DIMENSIONS: "w", | |
AC_WATCHER: "W", | |
EXCHANGE_PARSING: "x", | |
SCA: "X", | |
FLASH_API_ACCESS: "z" | |
}, | |
BROWSERS: { | |
WEBKIT: "w", | |
OPERA: "o", | |
GECKO: "g", | |
CHROME: "c", | |
IE: "i", | |
MSEDGE: "e" | |
}, | |
MEDIA_TYPE_CODE: "mtp", | |
MEDIA_TYPE: { | |
DISPLAY: "display", | |
DISPLAY_CODE: "d", | |
VIDEO: "video", | |
VIDEO_CODE: "v" | |
}, | |
MEASUREMENT_STRATEGY: { | |
DISPLAY: "display", | |
VIDEO: "video" | |
}, | |
IMPRESSION_EVENT: "impression", | |
AD_IDENTIFIER: "data-integralas-id", | |
IAS_DETECTOR: "iasdetector" | |
}, | |
s = function() { | |
var a = u != top, | |
b = function() { | |
var a; | |
try { | |
a = !!top.document | |
} catch (c) { | |
a = !1 | |
} | |
return a | |
}(), | |
c = function() { | |
return f.isDef(n.getWindow().avid) | |
}; | |
return { | |
embedded: a, | |
friendly: b, | |
friendlyIframe: a && b, | |
xDomainIframe: a && !b, | |
getTagTime: function() { | |
return n.now() - p.birthdate | |
}, | |
getPageTime: function() { | |
return f.isDef(u.chrome) && f.isDef(u.chrome.csi) && f.isFunction(u.chrome.csi) ? n.round(chrome.csi().pageT) : g.NA | |
}, | |
isVideo: function() { | |
var a; | |
if (!(a = -1 !== p.mode.indexOf("jsvid"))) { | |
var b; | |
a = !1; | |
if (c()) try { | |
b = n.getWindow().avid.getAvidAdSessionContext(), a = b.mediaType === g.MEDIA_TYPE.VIDEO | |
} catch (h) {} | |
} | |
return a | |
}, | |
isMobileApp: function() { | |
return f.isDef(u.mraid) | |
}, | |
isSpecifiedAd: function() { | |
var a = | |
p._cl_adpath; | |
return a && f.isStr(a) | |
}, | |
isAvid: c | |
} | |
}(), | |
y = { | |
addEvent: function(a, b, c, d) { | |
f.isDef(a.addEventListener) ? "mouseenter" === b ? a.addEventListener("mouseover", y.mouseEnter(c), d) : "mouseleave" === b ? a.addEventListener("mouseout", y.mouseEnter(c), d) : a.addEventListener(b, c, d) : f.isDef(a.attachEvent) && ("DOMContentLoaded" === b && (b = "load"), a.attachEvent("on" + b, c)) | |
}, | |
removeEvent: function(a, b, c) { | |
f.isDef(a.removeEventListener) ? ("mouseenter" === b ? (b = "mouseover", c = y.mouseEnter) : "mouseleave" === b && (b = "mouseout", c = y.mouseEnter), | |
a.removeEventListener(b, c)) : f.isDef(a.detachEvent) && a.detachEvent("on" + b, c) | |
}, | |
mouseEnter: function(a) { | |
var b = this; | |
return function(c) { | |
var d = c.relatedTarget; | |
this === d || b.isAChildOf(this, d) || a.call(this, c) | |
} | |
}, | |
isAChildOf: function(a, b) { | |
if (a === b) return !1; | |
for (; b && b !== a;) b = b.parentNode; | |
return b === a | |
}, | |
getStyle: function(a, b, c) { | |
var d = ""; | |
c = c || ""; | |
B.defaultView && B.defaultView.getComputedStyle ? d = B.defaultView.getComputedStyle(a, c).getPropertyValue(b) : a.currentStyle && (b = b.replace(/\-(\w)/g, function(a, c) { | |
return c.toUpperCase() | |
}), | |
d = a.currentStyle[b]); | |
return d | |
}, | |
getXHR2: function(a, b) { | |
var c, d; | |
f.isDef(u.XMLHttpRequest) ? (d = new XMLHttpRequest, "withCredentials" in d && (c = d)) : f.isDef(XDomainRequest) && (c = new XDomainRequest); | |
return c | |
}, | |
whenReady: function(a, b) { | |
var c = b || (s.xDomainIframe ? B : n.getTop().document), | |
d = function(a) { | |
var b = setInterval(function() { | |
c.body && (clearInterval(b), a()) | |
}, 50) | |
}, | |
e = this; | |
(function(a) { | |
var b = function() { | |
a(!0) | |
}; | |
f.isFunction(B.addEventListener) ? "complete" == c.readyState || "loaded" == c.readyState || "interactive" == c.readyState ? | |
n.execAtEndOfThread(b) : e.addEvent(c, "DOMContentLoaded", b, !1) : d(a) | |
})(a) | |
}, | |
isSandboxed: function(a) { | |
var b, c = n.getWindow(), | |
d = !1; | |
if ("sandbox" in n.getDoc().createElement("iframe")) { | |
try { | |
b = c.frameElement | |
} catch (e) {} | |
if (b) a = b.hasAttribute("sandbox"); | |
else { | |
b = !1; | |
c = n.getDoc(); | |
if (a.browserIs(g.BROWSERS.CHROME)) try { | |
c.domain = "hol@#3+~" | |
} catch (h) { | |
/Assignment is forbidden for sandboxed iframes/.test(h.message) && (b = !0) | |
} | |
a = b | |
} | |
d = a | |
} | |
return d | |
} | |
}, | |
fb = function(a, b, c, d, e, h, k, r) { | |
var t = 0, | |
q = 0, | |
m = !1, | |
x, w = {}, | |
A = [g.DT_CODES.ADTALK], | |
z = function(a, | |
b, h, r, x, A) { | |
h = h || !c.on("postDts"); | |
var z = a === g.DT_CODES.VH || a === g.DT_CODES.DIAGNOSTIC || a === g.DT_CODES.ADTALK; | |
if (d.impressionIsIdentifiable() && (z || "n" !== k.getCurrentLoc())) try { | |
var D = p.dtBaseURL, | |
s = new I(D, !0), | |
u = n.now(), | |
v = w[a]; | |
l.trigger("preSendDt", a); | |
D || (s.path("dt"), c.on("usedtdomain") && s.sub("dt")); | |
G(s, a, b); | |
x && x.field && s.setParam(x.field, x.value); | |
r || H(s, a); | |
l.trigger("send", s, function() { | |
q += 1; | |
t = n.now() - u; | |
f.isFunction(A) && A() | |
}, h); | |
a === g.DT_CODES.UNLOAD && (m = !0); | |
w[a] = f.isDef(v) ? v + 1 : 1; | |
e.cleanup() | |
} catch (y) { | |
__IntegralASDiagnosticCall("dt-" + | |
a, y), l.trigger("error", g.ERROR_CODES.PHONE_HOME) | |
} | |
}; | |
a = function(a, b) { | |
var d = { | |
bapi: "a", | |
bapiClient: "b", | |
jload: "c", | |
jss: "d", | |
jsi: "e" | |
}, | |
e = p.mode, | |
d = d[a] || d[e]; | |
c.on(b || e + "Diag") && d && z(g.DT_CODES.DIAGNOSTIC, -5, !0, !0, { | |
field: "bkp", | |
value: d | |
}) | |
}; | |
var D = function(a) { | |
var c; | |
a === g.DT_CODES.UNLOAD ? c = -1 : a === g.DT_CODES.ADTALK ? c = -2 : a === g.DT_CODES.VIEWABILITY_READY ? c = -3 : a === g.DT_CODES.VIDEO_EVENTS ? c = -4 : a === g.DT_CODES.DIAGNOSTIC ? c = -5 : a === g.DT_CODES.THIRD_PARTY ? c = -6 : a === g.DT_CODES.QUARTILE_FULLY_INVIEW ? c = -7 : a === g.DT_CODES.LARGE_BILLABLE ? | |
c = -8 : a === g.DT_CODES.AVIREEN ? c = -9 : a === g.DT_CODES.SCA && (c = -10); | |
var b = w[a]; | |
f.isDef(b) && -1 !== A.indexOf(a) && 0 !== b && (c = c + "." + b); | |
return c | |
}, | |
G = function(a, c, b) { | |
b = f.isDef(b) ? b : D(c); | |
a.setParam("asId", p.asid); | |
b = { | |
c: d.getCacheBustId(), | |
pingTime: b, | |
time: s.getTagTime(), | |
type: c | |
}; | |
e.filterOutput(function(a) { | |
var b = a.minDt && (!a.type || a.type === c); | |
b && a.oneTime && (a.flagForRemoval = !0); | |
return b | |
}, b); | |
a.setParam("tv", b) | |
}, | |
H = function(a, d) { | |
var f, m = {}; | |
e.filterOutput(function(a) { | |
return a.standalone && !a.minDt && a.type === d | |
}, function(c, b) { | |
a.setParam(c, | |
b.replace("%3A", ":")) | |
}); | |
k.fastForward(); | |
d === g.DT_CODES.VIDEO_EVENTS && (f = l.request("videoEventsString")) && (m.ve = f, m.clog = r); | |
d === g.DT_CODES.UNLOAD && (m.ndt = q); - 1 !== p.mode.indexOf("jsvid") && (m.vv = l.request("videoVersion")); | |
m.NULL1 = c.output(); | |
m.NULL2 = k.stringify(10); | |
m.em = s.embedded; | |
m.fr = s.friendly; | |
m.uf = x.useFlash() ? 1 : 0; | |
m.e = b.toString(); | |
m.tt = p.mode; | |
m.dtt = t; | |
e.filterOutput(function(a) { | |
var c = !a.standalone && !a.minDt && (!a.type || a.type === d); | |
c && a.oneTime && (a.flagForRemoval = !0); | |
return c | |
}, m); | |
a.setParam("tv", m); | |
a.setParam("br", h.getBrowserType()) | |
}; | |
l.on({ | |
sendDt: z, | |
sendMinDt: function(a, c) { | |
z(a, c, void 0, !0) | |
}, | |
sendDiag: a, | |
updateDtCount: function() { | |
q++ | |
} | |
}); | |
return { | |
send: z, | |
unload: function() { | |
m || z(g.DT_CODES.UNLOAD, -1, !0) | |
}, | |
diagnostic: a, | |
setViewabilityMod: function(a) { | |
x = a | |
} | |
} | |
}, | |
E = function(a) { | |
var b = {}, | |
c = !1, | |
d = function() { | |
var a = {}; | |
f(b).each(function(c, b) { | |
a[c] = n.round(b) | |
}); | |
return a | |
}, | |
e = function() { | |
return n.round(b.width) * n.round(b.height) | |
}; | |
(function() { | |
var c; | |
a !== u.parent && (1 !== a.nodeType ? b = a : f.isDef(a.getBoundingClientRect) && (c = v.getRect(a), | |
f(b).mixin({ | |
x: f.useIfDef(c.x) || c.scrX, | |
y: f.useIfDef(c.y) || c.scrY, | |
scrX: c.scrX, | |
scrY: c.scrY, | |
width: c.width, | |
height: c.height | |
}))) | |
})(); | |
return { | |
hasValidDims: function() { | |
var a, c = f(b).find(function(c, b) { | |
a = !0; | |
return isNaN(b) | |
}); | |
return f.isDef(a) && f.isUndef(c) | |
}, | |
toString: function() { | |
var a = d(); | |
return [a.scrX, a.scrY, a.width, a.height].join(".") | |
}, | |
getRounded: d, | |
set: function(a, c) { | |
b[a] = c | |
}, | |
isHidden: function() { | |
var b = 1 === a.nodeType ? v.nodeIsHidden(a) : 0 === a.width || 0 === a.height; | |
return c ? !1 : b | |
}, | |
treatAsPlaceholder: function() { | |
c = !0 | |
}, | |
area: e, | |
isMrcLarge: function() { | |
return e() >= g.MRC_LARGE_AD_SIZE | |
} | |
} | |
}, | |
v = { | |
nodeIsHidden: function(a) { | |
var b = this.getRect(a), | |
c = 0 !== parseInt(y.getStyle(a, "width")) && 0 === b.width, | |
b = 0 === b.width || 0 === b.height; | |
a = "hidden" === y.getStyle(a, "visibility"); | |
return c || b || a | |
}, | |
calcWinDims: function() { | |
var a, b, c; | |
try { | |
b = v.windowPosition(), c = v.windowSize(), a = { | |
scrX: n.round(b.scrX), | |
scrY: n.round(b.scrY), | |
width: n.round(c.width), | |
height: n.round(c.height) | |
} | |
} catch (d) { | |
l.trigger("error", g.ERROR_CODES.GET_WIN_DIMENSIONS), a = {} | |
} | |
return a | |
}, | |
windowSize: function() { | |
var a = {}, | |
b, c; | |
if (s.friendly) | |
if (b = top.document, c = b.documentElement, b = b.getElementsByTagName("body")[0], f.isDef(top.innerWidth)) a.width = top.innerWidth, a.height = top.innerHeight; | |
else if (f.isDef(c.clientWidth)) a.width = c.clientWidth, a.height = c.clientHeight; | |
else if (f.isDef(b.clientWidth)) a.width = b.clientWidth, a.height = b.clientHeight; | |
else throw a.width = a.height = 0, ""; | |
else f.isDef(u.outerWidth) && (a.width = u.outerWidth, a.height = u.outerHeight); | |
return a | |
}, | |
windowPosition: function() { | |
var a = 0, | |
b = 0; | |
f.isDef(u.screenX) ? (a = u.screenX, | |
b = u.screenY) : f.isDef(u.screenLeft) && (a = u.screenLeft, b = u.screenTop); | |
return { | |
scrX: a, | |
scrY: b | |
} | |
}, | |
getNodeArea: function(a) { | |
var b = -1; | |
a && (a = v.getRect(a), b = a.width * a.height); | |
return b | |
}, | |
getRect: function(a) { | |
var b = {}, | |
c = v.windowPosition(); | |
a = a.getBoundingClientRect(); | |
f.isUndef(a.x) && (b.x = a.left, b.y = a.top); | |
f.isUndef(a.width) && (b.width = a.right - a.left, b.height = a.bottom - a.top); | |
f(b).mixin(a, !0); | |
b.scrX = c.scrX + b.x; | |
b.scrY = c.scrY + b.y; | |
return b | |
}, | |
getIeDimObj: function() { | |
return B.documentElement && f.isDef(B.documentElement.clientWidth) && | |
B.documentElement || B.body | |
}, | |
getPlaceholderSpan: function() { | |
var a = B.createElement("span"); | |
f(a.style).mixin({ | |
width: "0px", | |
height: "0px", | |
display: "block", | |
overflow: "hidden", | |
visibiility: "hidden" | |
}); | |
a.innerHTML = "."; | |
return a | |
}, | |
createImage: function() { | |
return new((s.friendly ? n.getTop() : n.getWindow()).Image) | |
}, | |
appendElement: function(a, b, c) { | |
var d = n.getDoc().createElement(a); | |
b && f(b).each(function(a, c) { | |
"style" === a && "object" === typeof d.style && "function" === typeof d.style.setAttribute ? "string" === typeof c && f(c.split(";")).each(function(a, | |
c) { | |
c = c.trim(); | |
if (c.length) { | |
var b = c.split(":"); | |
2 === b.length && (d.style[b[0].trim()] = b[1].trim()) | |
} | |
}) : d.setAttribute(a, c) | |
}); | |
c = c || p.contextNode.parentNode; | |
c.appendChild(d); | |
return d | |
}, | |
tagNameIs: function(a, b) { | |
return a.tagName.toUpperCase() === b.toUpperCase() | |
}, | |
getClippedDimensions: function(a, b) { | |
var c, d, e, h = 1E4, | |
k = 1E4; | |
c = "absolute" === y.getStyle(a, "position"); | |
e = !v.tagNameIs(a, "OBJECT"); | |
if (null !== a.parentNode && !c && e && !v.tagNameIs(b, "BODY")) { | |
e = a; | |
do e = e.parentNode, c = !v.tagNameIs(e, "OBJECT"), d = "inline" !== y.getStyle(e, | |
"display"), c && d && (c = v.getRect(e), h = c.width < h ? c.width : h, k = c.height < k ? c.height : k); while (e.parentNode !== B && e !== b) | |
} | |
return { | |
width: n.round(h), | |
height: n.round(k) | |
} | |
}, | |
findChildWithLargestContent: function(a) { | |
var b = function(c) { | |
for (; c.parentNode !== a && "inline" !== y.getStyle(c.parentNode, "display");) c = c.parentNode; | |
return c | |
}, | |
c = null, | |
d = function(c) { | |
var b, d, f = null, | |
g = -1; | |
if (c.length) | |
for (b = 0, d = c.length; b < d; b++) { | |
var q = c[b], | |
m = v.getNodeArea(q), | |
l; | |
if (l = m > g) { | |
l = void 0; | |
if (l = q.parentNode === a) | |
if (l = void 0, l = "DIV" === q.nodeName) | |
if (l = void 0, | |
l = "" === q.style.backgroundImage) { | |
var w = l = void 0, | |
A = q.childNodes; | |
for (l = 0; l < A.length; l++) 1 === A[l].nodeType && (w = !0); | |
l = !w | |
} | |
l = !l | |
} | |
l && (f = q, g = m) | |
} | |
return f | |
}(function(a) { | |
var c, b, d, f, g = [], | |
m = "iframe img a object embed div".split(" "); | |
c = 0; | |
for (b = m.length; c < b; c++) { | |
var l = a.getElementsByTagName(m[c]); | |
if (l.length) | |
for (d = 0, f = l.length; d < f; d++) g.push(l[d]) | |
} | |
return g | |
}(a)); | |
d && (c = b(d)); | |
return c | |
}, | |
screenSize: function() { | |
var a = { | |
width: -1, | |
height: -1 | |
}; | |
try { | |
f.isDef(u.screen) && (a = { | |
width: u.screen.width, | |
height: u.screen.height | |
}) | |
} catch (b) {} | |
return a | |
}, | |
calcMonDims: function() { | |
var a = f(v.screenSize()).mixin({ | |
scrX: 0, | |
scrY: 0 | |
}); | |
f.isDef(screen.availLeft) && (a = { | |
scrX: u.screen.availLeft, | |
scrY: u.screen.availTop, | |
width: u.screen.availWidth, | |
height: u.screen.availHeight | |
}); | |
return a | |
}, | |
getOurIFrameInTop: function() { | |
for (var a, b = n.getTop(), c = n.getWindow(); c != b;) a = c, c = a.parent; | |
return a | |
}, | |
getOurNodeInTop: function() { | |
var a; | |
s.friendly && (a = s.embedded ? (a = v.getOurIFrameInTop()) && a.frameElement : p.contextNode); | |
return a | |
}, | |
getAncestorNodes: function(a) { | |
var b = [], | |
c = a.ownerDocument && a.ownerDocument.documentElement; | |
if (c) | |
for (; a.parentNode !== c;) b.push(a), a = a.parentNode; | |
return b | |
}, | |
getTagsNamed: function(a, b) { | |
var c, d = b || n.getDoc(); | |
try { | |
c = d.getElementsByTagName(a) | |
} catch (e) { | |
c = null | |
} | |
return c | |
}, | |
containsScriptTagWithSrc: function(a) { | |
return !!f(v.getTagsNamed("script")).findFirst(function(b, c) { | |
var d = c.src; | |
return f.isFunction(a) ? a(d) : d === a | |
}) | |
}, | |
querySelector: function(a, b) { | |
var c; | |
try { | |
c = a.querySelector(b) | |
} catch (d) { | |
c = null | |
} | |
return c | |
}, | |
nodeIsInWindow: function(a, b) { | |
return a.ownerDocument && (a.ownerDocument.defaultView || a.ownerDocument.parentWindow) === | |
b | |
}, | |
setAttributeOf: function(a, b, c) { | |
a && f.isFunction(a.setAttribute) && a.setAttribute(b, c) | |
}, | |
removeAttributeOf: function(a, b) { | |
a && f.isFunction(a.removeAttribute) && a.removeAttribute(b) | |
}, | |
getNodeName: function(a) { | |
return a && a.nodeName | |
}, | |
isWindow: function(a) { | |
var b = !1; | |
try { | |
b = a && "object" === typeof a && "setInterval" in a | |
} catch (c) { | |
b = !0 | |
} | |
return b | |
}, | |
getChildWindowsOf: function(a) { | |
var b = []; | |
(a = v.getTagsNamed("iframe", a)) && (b = f(a).map(function(a, b) { | |
return b.contentWindow | |
})); | |
return b | |
} | |
}, | |
xa = function() { | |
var a = {}, | |
b = function(c) { | |
f.isDef(a[c]) ? | |
a[c] ++ : a[c] = 1 | |
}; | |
l.on("error", function(a) { | |
a = f(a).isObj() ? a.errorCode : a; | |
b(a) | |
}); | |
return { | |
list: a, | |
add: b, | |
toString: function() { | |
var c = "", | |
b; | |
for (b in a) a.hasOwnProperty(b) && (c += b); | |
return c | |
}, | |
hasErrors: function() { | |
for (var c in a) return !0; | |
return !1 | |
} | |
} | |
}, | |
zb = function(a, b) { | |
var c = function(a) { | |
var c = []; | |
if (a && a instanceof Array) c = f(a).map(function(a, c) { | |
return c.val | |
}), c.push(p.adsafeSrc, p.requrl, p.reqquery); | |
else throw Error("Unexpected data type in ExchangeParser.getUrlList"); | |
return c | |
}; | |
return { | |
parse: function(d) { | |
try { | |
var e, h = c(d), | |
k = h && h.length && h.join("|"), | |
r = p.exchList; | |
k && (e = f(r).map(function(a, c) { | |
return 0 <= k.indexOf(Q.rot(c)) ? a : void 0 | |
}), e.length && b.addItem({ | |
output: e.join(".") | |
}, "ex", { | |
type: g.IMPRESSION_EVENT | |
})) | |
} catch (t) { | |
a.add(g.ERROR_CODES.EXCHANGE_PARSING) | |
} | |
} | |
} | |
}, | |
wa = function() { | |
var a = {}, | |
b = function(c) { | |
var b; | |
f.isUndef(a[c]) && (b = p.jsFeatures, a[c] = !1, -1 !== b.indexOf(c) && (b = RegExp(c + "(?=$|,)|" + c + ":(?!,|$)(.?\\d*(?=,|$))").exec(b))) && (b = b[1], a[c] = !b || b > 100 * n.random()); | |
return a[c] | |
}, | |
c = { | |
fc: "forcecocoa", | |
rt: "rattie", | |
cb: "cachebust", | |
np: "nextcocoa", | |
th: "tabHiddenDtCall", | |
es: "everySecond", | |
sa: "swapids" | |
}, | |
d = { | |
gm: "use100v", | |
fif: "useFIF" | |
}, | |
e = function() { | |
var b, e; | |
b = f(c).mapToObj(function(c, b) { | |
var d = {}; | |
d[c] = a[b] ? 1 : 0; | |
return d | |
}); | |
e = f(d).mapToObj(function(a, c) { | |
var b = {}; | |
b[a] = h(c) ? 1 : 0; | |
return b | |
}); | |
return f(b).mixin(e) | |
}, | |
h = function(a) { | |
a = p[a]; | |
return !0 === a || "true" === a || f.isFunction(a) | |
}; | |
f(c).each(function(a, c) { | |
b(c) | |
}); | |
return { | |
on: b, | |
bootstrapOn: h, | |
bootstrapperHas: function(a) { | |
a = f.isStr(a) ? [a] : a; | |
return f(a).map(function(a, c) { | |
if (f.isDef(p[c])) return 1 | |
}).length === a.length | |
}, | |
output: function() { | |
return f(e()).toParams() | |
} | |
} | |
}, | |
Za = function(a) { | |
var b = g.BROWSERS, | |
c = l.request("intersectionWatcher"); | |
return { | |
calcInitialViewState: function(d, e, h) { | |
var k = { | |
IN_VIEW: 65, | |
OUT_OF_VIEW: 25, | |
PARTIAL_VIEW: 30 | |
}, | |
f = { | |
IN_VIEW: 75, | |
OUT_OF_VIEW: 25, | |
PARTIAL_VIEW: 50 | |
}, | |
t = g.NA, | |
q = !s.xDomainIframe || c.isStarted() || a.browserIs(b.GECKO) || a.browserIs(b.IE); | |
h = h ? k : f; | |
if (q || e) t = d === g.PIV_NA ? g.NA : d >= h.IN_VIEW ? g.IN_VIEW : d <= h.OUT_OF_VIEW ? g.OUT_OF_VIEW : d >= h.PARTIAL_VIEW ? g.PARTIAL_VIEW_PLUS : g.PARTIAL_VIEW_MINUS; | |
return t | |
}, | |
calcPercentInView: function(a, b, h, k) { | |
var g = 0, | |
t = a; | |
c.isStarted() ? | |
g = c.getPiv() : a.hasValidDims() && !a.isHidden() && (f([b, h, k]).each(function(a, c) { | |
if (c.hasValidDims()) { | |
var b = t.getRounded(), | |
d = c.getRounded(), | |
e = Math.max(b.scrX, d.scrX), | |
h = Math.max(b.scrY, d.scrY), | |
k = Math.min(b.scrX + b.width, d.scrX + d.width), | |
b = Math.min(b.scrY + b.height, d.scrY + d.height), | |
k = k - e, | |
b = b - h; | |
t = E({ | |
scrX: e, | |
scrY: h, | |
width: 0 < k ? k : 0, | |
height: 0 < b ? b : 0 | |
}) | |
} | |
}), g = n.round(t.area() / a.area() * 100)); | |
return g | |
} | |
} | |
}, | |
ya = function(a) { | |
var b = !1; | |
return { | |
getCacheBustId: function() { | |
var a = new Date, | |
b = Date.parse("Jan 1 " + a.getFullYear()), | |
a = a.getTime() - | |
b; | |
return f.toBase(a, 62) | |
}, | |
impressionIsIdentifiable: function(a) { | |
a && (b = !0); | |
return b | |
}, | |
unq: function(a) { | |
var b = []; | |
b.push(a.slice(0, 8)); | |
b.push(a.slice(8, 12)); | |
b.push(a.slice(12, 16)); | |
b.push(a.slice(16, 20)); | |
b.push(a.slice(20)); | |
return b.join("-") | |
}(function() { | |
var c = ""; | |
try { | |
for (var b, e = u.Uint32Array && u.crypto && u.crypto.getRandomValues; 32 > c.length;) e ? (b = new Uint32Array(1), u.crypto.getRandomValues(b), c += b[0].toString(16)) : c += (16 * n.random() | 0).toString(16); | |
c = c.slice(0, 32) | |
} catch (h) { | |
a.add(g.ERROR_CODES.UID_GENERATION) | |
} | |
return c | |
}()) | |
} | |
}, | |
Ya = function(a) { | |
var b, c, d = l.request("features"), | |
e = function() { | |
var e, h, m, r, w = n.getMaxNumber(); | |
e = n.getMaxNumber(); | |
h = n.getWindow(); | |
n.getDoc(); | |
s.friendly ? (e = k(), m = e.left, r = e.top, w = e.width, e = e.height, h = v.windowPosition(), m = h.scrX + m, r = h.scrY + r) : d.on("rattie") && a.browserIs(g.BROWSERS.IE) ? (c = c || l.request("ieXDomainViewability"), b = c.determineFramePosition(), m = b.scrX, r = b.scrY) : f.isDef(h.mozInnerScreenX) && (m = n.round(h.mozInnerScreenX), r = n.round(h.mozInnerScreenY)); | |
return { | |
scrX: m, | |
scrY: r, | |
iFrameClippingWidth: w, | |
iFrameClippingHeight: e | |
} | |
}, | |
h = function() { | |
var a, b, c = v.getIeDimObj(), | |
d = n.getWindow(); | |
f.isDef(d.innerWidth) ? (a = d.innerWidth, b = d.innerHeight) : c && f.isDef(c.clientWidth) ? (a = c.clientWidth, b = c.clientHeight, 0 === a && 0 < c.offsetWidth && (a = c.offsetWidth), 0 === b && 0 < c.offsetHeight && (b = c.offsetHeight)) : d.frameElement && f.isDef(d.frameElement.clientWidth) && (a = d.frameElement.clientWidth, b = d.frameElement.clientHeight); | |
return { | |
width: a, | |
height: b | |
} | |
}, | |
k = function(a, c) { | |
a = a || n.getWindow(); | |
c = c || { | |
top: 0, | |
left: 0, | |
width: n.getMaxNumber(), | |
height: n.getMaxNumber() | |
}; | |
for (var b, | |
d = a.parent.document.getElementsByTagName("iframe"), e = !1, h = 0, f = d.length; h < f; h++) | |
if (b = d[h], b.contentWindow == a) { | |
e = !0; | |
break | |
} | |
if (e) { | |
b = v.getRect(b); | |
c.left += b.left; | |
c.top += b.top; | |
try { | |
c.width = n.min(c.width, b.width), c.height = n.min(c.height, b.height) | |
} catch (r) { | |
l.trigger("error", g.ERROR_CODES.GET_AD_DIMENSIONS) | |
} | |
a !== n.getTop() && k(a.parent, c) | |
} | |
return c | |
}, | |
r = function() { | |
var a = {}; | |
try { | |
a = f(e()).mixin(h()) | |
} catch (c) { | |
l.trigger("error", g.ERROR_CODES.GET_AD_DIMENSIONS) | |
} | |
return a | |
}; | |
return { | |
calcDims: function() { | |
return new E(r()) | |
}, | |
getClippedDims: function() { | |
var a = | |
r(); | |
return new E({ | |
scrX: a.scrX, | |
scrY: a.scrY, | |
width: a.iFrameClippingWidth, | |
height: a.iFrameClippingHeight | |
}) | |
} | |
} | |
}, | |
mb = function(a, b, c, d, e, h, k, r) { | |
var t = function(a, c) { | |
return isNaN(a) || 0 > a || "" === a ? c : a | |
}, | |
q = function(a, b) { | |
var d, e, h = [], | |
k = function(a) { | |
return -1 !== a.key.indexOf("q") || -1 !== a.key.indexOf("g") | |
}; | |
d = f(a).map(function(a, c) { | |
if (k(c)) return c | |
}); | |
e = f(a).map(function(a, c) { | |
if (!k(c)) return c | |
}); | |
f(d.concat(e)).each(function(a, d) { | |
var e; | |
e = d.val; | |
var k = d.key, | |
f; | |
f = 24 + h.join("&").length + k.length + 14; | |
f = b - f; | |
c.on("forceid") && f < e.length && | |
0 < f && (e = e.substr(0, f)); | |
if (e.length || "" === d.val || "" === d.type) e = "adsafe_url=" + e + "&adsafe_type=" + k, k = h.join("&").length, e.length + k <= b && h.push(e) | |
}); | |
return h.join("&") | |
}, | |
m = function() { | |
var a, e; | |
e = r.needsFlash() ? { | |
viewState: g.NA | |
} : r.checkScreenLoc(!0); | |
a = function(a) { | |
return ["id:" + p.asid, "c:" + d.getCacheBustId(), "sl:" + a.viewState, "em:" + s.embedded, "fr:" + s.friendly].join() | |
}(e); | |
e = function(a) { | |
var e, m = []; | |
m.push("mn:" + p.mn); | |
m.push("pt:" + function() { | |
var c = r.stringifyPingTimes(); | |
a.viewState !== g.NA && (c += a.details); | |
return c | |
}()); | |
m.push(f(k.params()).toParams()); | |
h.iterate(function(a, c) { | |
var b = !c.props || f.isUndef(c.props.type), | |
d = !c.props || c.props.type === g.IMPRESSION_EVENT; | |
(b || d) && m.push(a + ":" + c.output()) | |
}); | |
b.toString() && m.push("e:" + b.toString()); | |
m.push(c.output()); | |
m.push("uf:" + (r.useFlash() ? 1 : 0)); | |
m.push("tt:" + p.mode); | |
m.push("et:" + (n.now() - p.birthdate)); | |
c.on("swapids") ? m.push("oid:" + p.oid) : m.push("uid:" + d.unq); | |
m.push("v:16.5.6"); | |
m.push("sp:" + ("true" === p.jsDoSplit ? 1 : 0)); | |
m.push("ct:" + s.getPageTime()); | |
m.push("dtm:" + (c.on("postDts") && | |
y.getXHR2() ? "p" : "i")); | |
m.push("gtpl:" + ("true" === p.getTpl ? 1 : 0)); | |
c.on("resolution") && (m.push("wr:" + f(v.windowSize()).toArray().join(".")), m.push("sr:" + f(v.screenSize()).toArray().join("."))); | |
(e = function() { | |
var a, c, b; | |
b = Q.hashCode(p.asid) + ""; | |
c = k.params().br.toUpperCase().charCodeAt(0); - 1 === b.indexOf(c) && (a = b); | |
return a | |
}()) && m.push("mf:" + e); | |
return m | |
}(e); | |
return { | |
primary: a, | |
secondary: e | |
} | |
}, | |
x = function(a, c) { | |
var b = "adsafe_jsinfo=", | |
e = 0, | |
h = "true" === p.jsDoSplit ? 1 : 0, | |
k = function(a) { | |
if (a) return "," + a | |
}; | |
b.length + a.primary.length + | |
5 <= c && (b += k(a.primary), d.impressionIsIdentifiable(!0), f(a.secondary).each(function(a, d) { | |
b.length + d.length + 5 <= c ? b += k(d) : e += 1 | |
}), k("sp:" + h)); | |
return b += ",ov:" + e | |
}; | |
return { | |
send: function(a) { | |
var d, h, k, f, r, n; | |
d = e.baseUrl; | |
k = t(p.sp_imp_jload_maxLength, 4E3); | |
r = t(p.sp_imp_maxLength, 2E3); | |
k = c.on("bigmon") && "jload" === p.mode ? k : r; | |
r = c.on("forceid") ? t(p.sp_imp_jsInfo_minLength, 0) : 0; | |
try { | |
h = k - d.length - r, 0 < h && (d += q(a, h)) | |
} catch (s) { | |
b.add(g.ERROR_CODES.IMPRESSION_URLS) | |
} | |
d += "&" === d.slice(-1) ? "" : "&"; | |
try { | |
n = k - d.length, f = m(), d += x(f, | |
n) | |
} catch (u) { | |
b.add(g.ERROR_CODES.JSINFO), d += "adsafe_jsinfo=e:" + b.toString() | |
} | |
e.macroUrl && (d += "&" === d.slice(-1) ? "" : "&", d += e.macroUrl); | |
e.sendImpression(d); | |
l.trigger("impressionsent") | |
} | |
} | |
}, | |
jb = function(a, b) { | |
return { | |
init: function(c) { | |
a.jsonp(c, function(a) { | |
b.send(g.DT_CODES.THIRD_PARTY, void 0, !1, !0, { | |
field: "tpiLookup", | |
value: a | |
}) | |
}, !1, "callback") | |
} | |
} | |
}, | |
eb = function(a) { | |
var b = function(a, c) { | |
return { | |
time: a, | |
task: c | |
} | |
}, | |
c = function(a, c) { | |
c = c || f.noop; | |
return function(h) { | |
return f(h).map(function(h, f) { | |
var g = f / 1E3; | |
return new b(f, function() { | |
var b; | |
b = ""; | |
var h = s.isVideo() ? 2 : 1; | |
g !== h && (b += g); | |
b = p["_onInViewMRC" + b]; | |
l.trigger("sendDt", a, g); | |
c(b) | |
}) | |
}) | |
} | |
}; | |
return { | |
getJob: function(a, c) { | |
return new b(a, c) | |
}, | |
getPingJobs: c(g.DT_CODES.PING, function(c) { | |
"true" === p.useViewabilityNotification && !a.skipAsFraudulent() && c && l.trigger("notify", c) | |
}), | |
getFullyInViewPingJobs: c(g.DT_CODES.FULLY_INVIEW), | |
getPosInViewPingJobs: c(g.DT_CODES.POS_INVIEW) | |
} | |
}, | |
Ta = function() { | |
var a = function(a, b) { | |
-1 !== a.indexOf(b + "&") && (b += "&"); | |
return a.replace(b, "") | |
}, | |
b = function(a, b, e) { | |
var h = a.indexOf("?"); | |
b = b + "=" + e; | |
if (-1 === h) return a + "?" + b; | |
h++; | |
return a.slice(0, h) + b + "&" + a.slice(h) | |
}; | |
return { | |
wrap: function(c, d, e, h) { | |
var k = "__IntegralAS_" + p.asid.replace(/\-/g, "") + "_" + n.round(1E4 * Math.random()), | |
f, g, q; | |
h = h || "ias_callback"; | |
RegExp(h).test(c) && (f = RegExp("(" + h + "=)(.[^&]*)").exec(c)[0], g = f.split("=")[1], q = Q.stringToFn(g), c = a(c, f)); | |
u[k] = function(a) { | |
d(a); | |
e && q && q(a); | |
u[k] = void 0 | |
}; | |
return c = b(c, h, k) | |
} | |
} | |
}, | |
kb = function(a, b, c) { | |
var d = { | |
jss: { | |
isFW: !0, | |
nodeType: "script" | |
}, | |
rjss: { | |
isFW: !0, | |
nodeType: "script" | |
}, | |
jsi: { | |
isFW: !0, | |
nodeType: "iframe" | |
}, | |
rjsi: { | |
isFW: !0, | |
nodeType: "iframe" | |
}, | |
jload: { | |
impressionMethod: function(c) { | |
a.enabled ? l.trigger("jsonp", c, a.callback, !0) : l.trigger("send", c, function() { | |
l.trigger("sendDiag") | |
}, !b.on("postMon")) | |
} | |
}, | |
bapi: { | |
impressionMethod: function(c) { | |
l.trigger("jsonp", c, a.enabled ? a.callback : f.noop, a.enabled ? !0 : !1) | |
} | |
}, | |
jsapi: { | |
isFW: !0, | |
impressionMethod: function(c) { | |
l.trigger("jsonp", c, a.enabled ? a.callback : f.noop, a.enabled ? !0 : !1) | |
} | |
}, | |
jsvid: { | |
manualDefer: !0, | |
impressionMethod: function(c) { | |
l.on("adImpression", function() { | |
a.enabled ? l.trigger("jsonp", | |
c, a.callback, !0) : l.trigger("send", c, f.noop, !b.on("postMon")) | |
}) | |
} | |
}, | |
fwjsvid: { | |
isFW: !0, | |
manualDefer: !0, | |
impressionMethod: function(a) { | |
var c = "false" === p.fwMonitoring, | |
b = function(a) { | |
a = a.split("/"); | |
a[3] = "db2"; | |
a[4] = "video"; | |
return a.join("/") | |
}; | |
c && l.trigger("jsonp", b(a), function(a) { | |
l.trigger("videoBlockResult", a) | |
}); | |
l.on("adImpression", function(b) { | |
var d; | |
if (d = c) d = b && f.isBool(b.integral_didBlock) && 0 <= b.integral_timeToDecision; | |
d && (a = a.replace(/(adsafe_jsinfo=)([^&]*)/, "$1$2,abc:" + (b.integral_didBlock ? 1 : 0) + ",abct:" + | |
b.integral_timeToDecision)); | |
l.trigger("send", a, f.noop, !0) | |
}) | |
} | |
}, | |
jspix: { | |
nodeType: "img" | |
} | |
}; | |
return new function() { | |
var a = function(a) { | |
var b = -1 === a.indexOf("?") ? "?" : "&"; | |
return a + b | |
}, | |
b = d[p.mode], | |
k = !!b.isFW, | |
f = function(a) { | |
var b; | |
b = l.request("mobileApp").isMobileAppEnvironment() && p.mobFwUrl ? p.mobFwUrl : a ? p.adsafeSrc : p.requrl; | |
a || (b += "?" + p.reqquery); | |
return b | |
}(k), | |
g = f.indexOf("BEGIN__ADSAFE"), | |
q = -1 !== g, | |
m = q ? f.slice(g) : "", | |
a = q ? f.slice(0, g) : a(f); | |
return { | |
isFW: k, | |
baseUrl: a, | |
macroUrl: m, | |
sendImpression: function(a) { | |
var d = function() { | |
b.nodeType ? | |
l.trigger("addNode", b.nodeType, a) : b.impressionMethod(a) | |
}; | |
if (c || b.manualDefer) d(a); | |
else if (!b.manualDefer) l.on("adImpression", function() { | |
d(a) | |
}) | |
} | |
} | |
} | |
}, | |
yb = function(a, b) { | |
var c, d = p.mtCell, | |
e = p.mtSample, | |
h = 0, | |
k = 0, | |
r = [], | |
l = null, | |
q = null, | |
m, x = function(a) { | |
try { | |
var c = n.now() - l; | |
h += c; | |
y.removeEvent("mousemove", A); | |
r.push("{ht:" + h + ",mm:{" + f(m).toParams() + "}}"); | |
b.addItem({ | |
output: "{cs:" + d + ",sr:" + e + ",ec:" + r.length + ",me:[" + r.slice(-10).join(",") + "]}" | |
}, "mt", { | |
type: g.DT_CODES.UNLOAD | |
}) | |
} catch (k) {} | |
}, | |
w = function(a) { | |
try { | |
h = 0, m = {}, l = n.now(), | |
y.addEvent(c, "mousemove", A) | |
} catch (b) {} | |
}, | |
A = function(b) { | |
var h, g, r, l, t, p, A; | |
try { | |
null === q && (q = c && f.isDef(b.clientX) && f.isDef(b.clientY)); | |
if (q && 0 === k % e && (t = a.calcDims(), -1 !== t)) { | |
A = n.ceil(t.width / d); | |
var w = b.clientX, | |
x = b.clientY; | |
r = s.embedded ? w : w - t.x; | |
l = s.embedded ? x : x - t.y; | |
h = n.floor(r / d); | |
g = n.floor(l / d); | |
p = h + g * A; | |
m[p] ? m[p] ++ : m[p] = 1 | |
} | |
k++ | |
} catch (u) {} | |
}; | |
return { | |
init: function() { | |
var b = setInterval(function() { | |
try { | |
a.isAdDetected() && (c = a.getOriginatingElement(), y.addEvent(c, "mouseenter", w), y.addEvent(c, "mouseleave", x), clearInterval(b)) | |
} catch (d) {} | |
}, | |
250) | |
} | |
} | |
}, | |
n = { | |
execAtEndOfThread: function(a) { | |
setTimeout(a, 0) | |
}, | |
now: function() { | |
return (new Date).getTime() | |
}, | |
random: function() { | |
return Math.random() | |
}, | |
round: function(a) { | |
return Math.round(a) | |
}, | |
ceil: function(a) { | |
return Math.ceil(a) | |
}, | |
floor: function(a) { | |
return Math.floor(a) | |
}, | |
min: function() { | |
return Math.min.apply(null, arguments) | |
}, | |
distance: function(a, b) { | |
return Math.abs(a - b) | |
}, | |
getWindow: function() { | |
return u | |
}, | |
getMaxNumber: function() { | |
return Number.MAX_VALUE | |
}, | |
getTop: function() { | |
return top | |
}, | |
getNewActiveXObject: function(a) { | |
return new ActiveXObject(a) | |
}, | |
getDoc: function() { | |
return B | |
}, | |
getIntersectionObserver: function(a, b) { | |
return new IntersectionObserver(a, b) | |
} | |
}, | |
Pa = function() { | |
var a, b = !1, | |
c = l.request("features"), | |
d = new da, | |
e = function() { | |
var b; | |
c.on("blur") ? (b = n.getWindow(), b = s.friendly && b.top.document && (f.isFunction(b.top.document.hasFocus) || f(b.top.document.hasFocus).isObj()) && !b.top.document.hasFocus() || (f.isDef(a.prop) ? n.getDoc()[a.prop] : null)) : b = f.isDef(a.prop) ? n.getDoc()[a.prop] : null; | |
return b | |
}, | |
h = function() { | |
var b = n.getWindow(), | |
c = function() { | |
d.run(e()) | |
}; | |
y.addEvent(b, | |
"focus", c, !0); | |
y.addEvent(b, "blur", c, !0); | |
a.event && y.addEvent(n.getDoc(), a.event, c, !0) | |
}; | |
a = function() { | |
var a, b = "hidden", | |
c = "visibilitychange", | |
d = n.getDoc(); | |
f.isUndef(d.hidden) ? f(["moz", "ms", "webkit"]).each(function(e, h) { | |
var g = h + "Hidden"; | |
f.isDef(d[g]) && (b = g, c = h + c, a = !0) | |
}) : a = !0; | |
return a ? { | |
prop: b, | |
event: c | |
} : {} | |
}(); | |
return { | |
isHidden: e, | |
onHiddenChange: function(a) { | |
d.push(a); | |
b || (b = !0, h()) | |
} | |
} | |
}, | |
Ra = function(a, b) { | |
var c = function(a) { | |
for (var b in a) | |
if (a.hasOwnProperty(b)) { | |
var c = a[b]; | |
("" === c || "null" === c || "undefined" === c || null === | |
c || f.isUndef(c)) && delete a[b] | |
} | |
return a | |
}, | |
d = function(a) { | |
var b = {}, | |
c, d; | |
for (d in a) a.hasOwnProperty(d) && (c = a[d], f.isUndef(b[c]) ? b[c] = d : b[c] += d); | |
a = {}; | |
for (d in b) b.hasOwnProperty(d) && (c = b[d], a[c] = d); | |
return a | |
}; | |
return { | |
detectTopURL: function() { | |
var e, h = function() { | |
var a = {}; | |
try { | |
a.q = b.getWindow().parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.location.href | |
} catch (c) { | |
var d = c.message, | |
d = d.substring(d.lastIndexOf("<") + 1, d.lastIndexOf(">")), | |
e; | |
if (e = f.isDef(d)) { | |
var h = b.getWindow(); | |
e = !1; | |
f.isDef(h.navigator) && | |
f.isDef(h.navigator.userAgent) && (h = h.navigator.userAgent.match(/Firefox\/([\.0-9]+)/), null !== h && 2 == h.length && (h = h[1].split("."), 3 == parseInt(h[0], 10) && 6 >= parseInt(h[1], 10) && (3 == h.length ? 13 >= parseInt(h[2], 10) && (e = !0) : e = !0))) | |
} | |
e && (a.g = d) | |
} | |
return a | |
}, | |
k = {}; | |
try { | |
k.a = encodeURIComponent(top.location.href) | |
} catch (g) {} | |
try { | |
k.b = encodeURIComponent(parent.location.href) | |
} catch (l) {} | |
if (s.embedded) { | |
try { | |
k.c = encodeURIComponent(parent.document.referrer) | |
} catch (q) {} | |
try { | |
k.e = encodeURIComponent(u.document.referrer) | |
} catch (m) {} | |
} | |
try { | |
"jsi" !== | |
p.mode && (k.d = encodeURIComponent(u.location.href)) | |
} catch (n) {} | |
try { | |
k.f = encodeURIComponent(p.jsref) | |
} catch (w) {} | |
try { | |
e = h(), k.g = encodeURIComponent(e.g || ""), k.q = encodeURIComponent(e.q || ""), a.isStarted() && !e.g && 1 < a.getMyFrameDepth() && (k.g = encodeURIComponent(a.getTopDomain())) | |
} catch (A) {} | |
k = c(k); | |
k = d(k); | |
e = []; | |
for (var z in k) k.hasOwnProperty(z) && e.push({ | |
key: z, | |
val: k[z] | |
}); | |
e.sort(function(a, b) { | |
return a.val.length > b.val.length ? 1 : a.val.length < b.val.length ? -1 : 0 | |
}); | |
return e | |
} | |
} | |
}, | |
Ab = function(a) { | |
return { | |
hash: function() { | |
for (var b = | |
0, c = a.length, d = [], e; b < c; b++) e = a[b].filename.replace(/\.plugin$/, ""), e = Q.hashCode(e), e = f.toBase(e, 62).slice(-4), d.push(e); | |
return d | |
}, | |
decode: function(b) { | |
var c, d; | |
c = n.floor(n.random() * b.length); | |
d = encodeURIComponent(a[c].filename.replace(/\.plugin$/, "")); | |
return [b[c], d] | |
} | |
} | |
}, | |
Oa = function(a) { | |
var b = !1; | |
return { | |
measure: function(c) { | |
(b = 0 === c.rsa) && a.trigger("notify", p._onSuspicious) | |
}, | |
skipAsFraudulent: function() { | |
return b | |
} | |
} | |
}, | |
Sa = function() { | |
var a = [], | |
b = {}, | |
c = { | |
sl: "n", | |
gsl: "gn", | |
fsl: "fn" | |
}, | |
d = 0, | |
e, h, k = { | |
i: 0, | |
o: 0, | |
n: 0, | |
pp: 0, | |
pm: 0, | |
gpp: 0, | |
gpm: 0, | |
gi: 0, | |
go: 0, | |
gn: 0, | |
fi: 0, | |
fo: 0, | |
fn: 0 | |
}, | |
r = function(a) { | |
var b = {}, | |
c = a.winDimensions, | |
d = a.adDimensions; | |
f.isDef(c) && c.hasValidDims() && (b.wc = c); | |
f.isDef(d) && d.hasValidDims() && (b.ac = d, b.am = a.method, b.cc = a.containerDimensions); | |
f({ | |
piv: "percentInView", | |
obst: "obstructed", | |
th: "tabHidden", | |
reas: "reason", | |
cmps: "adCompCount" | |
}).each(function(c, d) { | |
var e = a[d]; | |
f.isDef(e) && (b[c] = e) | |
}); | |
c = f(b).toParams(); | |
return "" === c ? "" : "," + c | |
}, | |
t = function(a, c) { | |
var d = new Kb(c); | |
return b[a] = d | |
}, | |
q = function(a, b) { | |
return (b || "") + { | |
inView: "i", | |
outOfView: "o", | |
na: "n", | |
partialViewMinus: "pm", | |
partialViewPlus: "pp" | |
}[a] | |
}, | |
m = function() { | |
f(c).each(function(b, c) { | |
k[c] += a.length ? h - d : h | |
}); | |
d = h | |
}, | |
n = function(b) { | |
a.length && m(); | |
f(b).each(function(a, b) { | |
var d = c[a]; | |
d !== b && "n" === d && (k[b] += k.n); | |
c[a] = b | |
}); | |
a.length || m() | |
}, | |
p = function(a) { | |
var c, d = g.NA, | |
d = a.adDimensions ? a.adDimensions.getRounded() : { | |
width: d, | |
height: d | |
}; | |
c = r(a); | |
var e = { | |
sl: q(a.viewState), | |
fsl: q(a.fState || g.NA, "f"), | |
gsl: q(a.gState || g.NA, "g") | |
}; | |
h = s.getTagTime(); | |
n(e); | |
e.t = h; | |
c = f({ | |
toString: function() { | |
f(b).each(function(a, b) { | |
b.fastForward() | |
}); | |
return "{" + f(e).toParams() + this.details + this.breakdowns + "}" | |
}, | |
details: c, | |
breakdowns: { | |
piv: [], | |
as: [], | |
toString: function() { | |
var a, b = function(a, b) { | |
return b.duration + "~" + b.state | |
}; | |
a = "" + ("piv:[" + f(this.piv).stringify(b) + "]"); | |
a += ",as:[" + f(this.as).stringify(b) + "]"; | |
return ",bkn:{" + a + "}" | |
} | |
}, | |
isInView: function() { | |
return -1 !== (g.IN_VIEW + "|" + g.PARTIAL_VIEW_PLUS).indexOf(a.viewState) | |
}, | |
isFullyInView: function() { | |
var b = a.useCocoa ? a.fullPercentInView : a.percentInView; | |
return this.isInView() && 100 === b | |
} | |
}).mixin(e); | |
f(c).mixin(a); | |
c.width = | |
d.width; | |
c.height = d.height; | |
return c | |
}; | |
(function() { | |
t("piv", function(a) { | |
var b, c = a.percentInView, | |
d = [1, 25, 30, 50, 75]; | |
100 === c || 0 === c ? b = c : (f(d).each(function(a, e) { | |
f.isUndef(b) && c < e && (b = d[a - 1]) | |
}), f.isUndef(b) && (b = d[d.length - 1])); | |
return b | |
}); | |
t("as", function(a) { | |
var b = g.NA; | |
a = a.adDimensions ? a.adDimensions.getRounded() : { | |
width: b, | |
height: b | |
}; | |
return a.width + "." + a.height | |
}) | |
})(); | |
return { | |
fastForward: function() { | |
h = s.getTagTime(); | |
m() | |
}, | |
registerLocation: function(d) { | |
var h, k = !1; | |
c.sl == q(d.viewState) && a.length ? (h = new p(d), a[a.length - | |
1].details = h.details) : (h = new p(d), a.push(h), e = d.viewState, k = !0); | |
l.trigger("newScreenEvent", h); | |
f(b).each(function(b, c) { | |
-1 !== "piv|as".indexOf(b) ? (k && c.clear(), c.addState(h), a[a.length - 1].breakdowns[b] = c.get()) : c.addState(h) | |
}); | |
return h | |
}, | |
stringify: function(b) { | |
var c = ""; | |
a.length && (c = f({ | |
slTimes: "{" + f(k).toParams() + "}", | |
slEvents: "[" + a.slice(-b).join(",") + "]", | |
slEventCount: a.length | |
}).toParams()); | |
return c | |
}, | |
createViewabilityTracker: t, | |
getCurrentLoc: function() { | |
return q(e) | |
} | |
} | |
}, | |
Q = { | |
rot: function(a) { | |
return a.replace(/[a-zA-Z]/g, | |
function(a) { | |
return String.fromCharCode(("Z" >= a ? 90 : 122) >= (a = a.charCodeAt(0) + 13) ? a : a - 26) | |
}) | |
}, | |
hashCode: function(a) { | |
var b = 0, | |
c, d, e; | |
if (0 === a.length) return b; | |
c = 0; | |
for (e = a.length; c < e; c++) d = a.charCodeAt(c), b = (b << 5) - b + d, b |= 0; | |
return b | |
}, | |
stringToFn: function(a) { | |
var b, c = u, | |
d = a.split("."); | |
for (a = 0; a < d.length; a++) | |
if (b = c, c = c[d[a]], f.isUndef(c) || a === d.length - 1 && !f.isFunction(c)) return !1; | |
return function() { | |
c.apply(b, arguments) | |
} | |
}, | |
stringToProp: function(a) { | |
var b = n.getWindow(), | |
c = a.split("."); | |
for (a = 0; a < c.length && (b = b[c[a]], !f.isUndef(b)); a++); | |
return b | |
} | |
}, | |
Ma = function(a) { | |
var b, c, d, e = new X, | |
h = new V, | |
k = new Lb(e), | |
g = new Mb, | |
l = new Nb, | |
q = new Ob(e, a), | |
m = function() { | |
f.isUndef(d) && (d = new Pb(e)); | |
return d | |
}, | |
n = function() { | |
e.provide({ | |
frameCollection: function() { | |
return k | |
}, | |
adProxy: function() { | |
return l | |
}, | |
adTalkMessage: function(a) { | |
return new Qb(a, e) | |
}, | |
adTalkMessageCollection: function() { | |
return g | |
}, | |
idMapModule: m, | |
interFrameQuerySelector: function(a) { | |
return new Rb(a) | |
} | |
}) | |
}; | |
return { | |
isApplicable: function(a) { | |
return f.isDef(u.JSON) && f.isDef(u.postMessage) && !a.isAvid() | |
}, | |
start: function() { | |
n(); | |
h.traverse(k.addFrame); | |
q.startListening(); | |
q.sendToKnownFrames() | |
}, | |
sendAdTalkCall: q.sendAdTalkCall, | |
getFrameMap: function() { | |
f.isUndef(b) && (b = new qa(e)); | |
return b | |
}, | |
getFrameMapIncludingPeerCase: function() { | |
f.isUndef(c) && (c = new qa(e, !0)); | |
return c | |
}, | |
getIdMap: m | |
} | |
}, | |
Qb = function(a, b) { | |
var c, d = b.request("adProxy").myIdCard, | |
e = b.request("frameCollection").getMe().getStringifiedPosition(); | |
c = l.request("features").on("swapids") ? p.oid : p.asid; | |
var h = a || {}, | |
f = p.asid, | |
d = d.tagId, | |
r = s.embedded, | |
t = s.friendly, | |
q = p.birthdate; | |
c = c.split("-")[2]; | |
var m; | |
s.friendly ? m = "[" + g.AD_IDENTIFIER + "-" + p.asid + "]" : (m = n.getWindow(), m = m.location && m.location.href, m = 'iframe[src*="' + (m && m.replace(/^https?\:\/\//i, "")) + '"]'); | |
return { | |
messageContent: h, | |
srcAsid: f, | |
srcTagId: d, | |
srcIsEmbedded: r, | |
srcIsFriendly: t, | |
srcBirthdate: q, | |
iasCommonId: c, | |
nodeSelector: m, | |
positionStr: e, | |
version: "0.1" | |
} | |
}, | |
Mb = function() { | |
var a = {}; | |
return { | |
add: function(b, c) { | |
var d = b && b.srcAsid; | |
d && !a[d] && (a[d] = b, d !== p.asid && f.isFunction(c) && c(b)) | |
}, | |
map: function(b) { | |
return f(a).map(b) | |
}, | |
has: function(b) { | |
return a[b] | |
} | |
} | |
}, | |
Sb = | |
function(a, b, c, d) { | |
var e, h = a == u; | |
e = { | |
position: b.slice(0), | |
id: b.join("-"), | |
isMe: h, | |
isLeaf: !a.frames.length, | |
adProxies: h ? c : [], | |
selfDescription: void 0, | |
unifiedId: p.birthdate, | |
srcIsEmbedded: d ? d.srcIsEmbedded : void 0, | |
inbox: d ? [d] : [], | |
getDomObj: function() { | |
return a | |
}, | |
getStringifiedPosition: function() { | |
return f(e.position).map(function(a, b) { | |
return f.toBase(Number(b) + 1, 36) | |
}).join("") | |
}, | |
isValidForMapping: function() { | |
return e.isLeaf || e.isMe || f.isDef(e.selfDescription) | |
} | |
}; | |
var k = function(a) { | |
var b = e.adProxies; | |
a = a.adProxies; | |
var c = []; | |
b.length && a.length ? f(a).each(function(a, d) { | |
g(b, d) && c.push(d) | |
}) : c = a; | |
e.adProxies = b.concat(c) | |
}, | |
g = function(a, b) { | |
return !f(a).find(function(a, c) { | |
return c.adSafeId && c.adSafeId === b.adSafeId | |
}) | |
}, | |
l = function(a) { | |
f(e.inbox).find(function(b, c) { | |
return c.srcAsid && c.srcAsid === a.srcAsid | |
}) || e.inbox.push(a) | |
}; | |
e.addInformationFromSrc = function(a, b) { | |
k(b); | |
l(a); | |
e.srcIsEmbedded = a.srcIsEmbedded; | |
e.selfDescription = b | |
}; | |
return e | |
}, | |
Lb = function(a) { | |
var b = [], | |
c = {}, | |
d = { | |
noMe: !0 | |
}; | |
return { | |
addFrame: function(e, h, f) { | |
var g = a.request("adProxy").getAll(); | |
e = new Sb(e, h, g, f); | |
b.push(e); | |
c[e.id] = e; | |
e.isMe && (d = e); | |
return e | |
}, | |
getFrame: function(a) { | |
return c[a] | |
}, | |
list: b, | |
dictionary: c, | |
getMe: function() { | |
return d | |
} | |
} | |
}, | |
qa = function(a, b) { | |
var c = function(a, c) { | |
var f = c.adProxies, | |
g = ""; | |
if (c.isValidForMapping()) { | |
if (b) g += d(f, c.getStringifiedPosition()); | |
else { | |
var l; | |
l = "" + c.getStringifiedPosition(); | |
l += c.isMe ? "*" : ""; | |
l += f.length ? "." + f[0].tagId : ""; | |
g += l | |
} | |
return g | |
} | |
}, | |
d = function(a, b) { | |
var c = ""; | |
return c = a.length ? c + f(a).stringify(function(a, c) { | |
return b + (p.asid === c.adSafeId ? "*" : "") + "." + c.tagId | |
}, | |
"|") : c + b | |
}; | |
return { | |
output: function() { | |
var b = a.request("frameCollection"), | |
d = f(b.list).stringify(c, "|"); | |
return f.toBase(b.getMe().unifiedId, 62) + "+" + d | |
} | |
} | |
}, | |
Pb = function(a) { | |
var b = a.request("frameCollection").getMe().getStringifiedPosition(), | |
c = p.contextNode.parentNode, | |
d = a.request("interFrameQuerySelector", c), | |
e = function(a) { | |
var b = a.length; | |
return 120 < b ? a.substr(0, 120) + ".of" + b : a | |
}, | |
h = function(a) { | |
var e = !1, | |
e = !s.embedded, | |
h = "BODY" !== v.getNodeName(c) && "HEAD" !== v.getNodeName(c), | |
f; | |
if (f = a.srcIsEmbedded) { | |
f = "0.1" !== a.version; | |
var m = a.nodeSelector && -1 === a.nodeSelector.indexOf(g.AD_IDENTIFIER); | |
f = !(f ? m : !a.srcIsFriendly) | |
} | |
e && h && !f ? e = !!d.queryFor(a.nodeSelector) : (e = a.positionStr, a = a.srcIsEmbedded && s.embedded, e = 0 === b.indexOf(e) || 0 === e.indexOf(b), e = !(!a || !e)); | |
return e | |
}; | |
return { | |
output: function() { | |
var c, d = b + "*"; | |
c = a.request("adTalkMessageCollection").map(function(a, b) { | |
var c; | |
a !== p.asid && h(b) && (c = b.positionStr + "." + b.srcAsid + "." + b.transferDuration + "_" + b.srcTagId); | |
return c | |
}); | |
c.push(d); | |
c = c.join("|"); | |
return c = e(c) | |
}, | |
isCandidateForMyIdMap: h | |
} | |
}, | |
Rb = function(a) { | |
var b = new V, | |
c = function(a) { | |
var b = a, | |
c = "IFRAME" === v.getNodeName(a), | |
d = v.isWindow(a); | |
c ? b = a.contentWindow.document : d && (b = a.document); | |
return b | |
}, | |
d = function(a, b) { | |
return v.querySelector(c(a), b) | |
}, | |
e = function(c, e) { | |
var g, l, q; | |
try { | |
l = d(c, e), l || (g = b.getFrames(!0, a), f(g).findFirst(function(a, b) { | |
return q = d(b, e) | |
})) | |
} catch (m) {} | |
return l || q || null | |
}; | |
return { | |
queryFor: function(b) { | |
var c = null; | |
b && (c = e(a, b)); | |
return c | |
} | |
} | |
}, | |
Ob = function(a) { | |
var b = !1, | |
c; | |
c = l.request("features").on("swapids") ? p.oid : p.asid; | |
var d = function(a) { | |
var b = | |
c.split("-")[2]; | |
return a.hasOwnProperty("messageContent") && b === a.iasCommonId | |
}, | |
e = function() { | |
var b = a.request("frameCollection").getMe(); | |
return a.request("adTalkMessage", { | |
self: b, | |
unifiedId: b.unifiedId | |
}) | |
}, | |
h = function(a, b) { | |
a.unifiedId > b.unifiedId && (a.unifiedId = b.unifiedId) | |
}, | |
k = function(a) { | |
return n.now() - a.sentTime | |
}, | |
r = function() { | |
var c = g.DT_CODES.ADTALK; | |
a.request("frameCollection"); | |
b || (b = !0); | |
l.trigger("sendDt", c) | |
}, | |
t = function(a) { | |
return f.isUndef(a) || f.isUndef(a.selfDescription) | |
}, | |
q = function(c, d, e) { | |
var f = !1, | |
q, | |
n, p, s; | |
try { | |
q = a.request("frameCollection"), n = d.messageContent.self, h(q.getMe(), n), d.transferDuration = k(d), p = q.getFrame(n.id), a.request("adTalkMessageCollection").add(d, function() { | |
f = !0 | |
}), t(p) || f ? (p = p || q.addFrame(c.source, n.id.split("-"), d), p.addInformationFromSrc(d, n), e()) : p.addInformationFromSrc(d, n), (s = b && f && a.request("idMapModule").isCandidateForMyIdMap(d)) && r() | |
} catch (u) { | |
l.trigger("error", g.ERROR_CODES.ADTALK_DUBIOUS) | |
} | |
}; | |
return { | |
sendAdTalkCall: r, | |
sendToKnownFrames: function() { | |
(new aa).send(e) | |
}, | |
startListening: function() { | |
(new ea).listen(d, | |
q, e) | |
}, | |
validateMessage: d, | |
processMessage: q, | |
createMessage: e | |
} | |
}, | |
Tb = function(a) { | |
a = a || p; | |
var b; | |
a.reqquery ? b = a.reqquery.split(/(?:anId=|anid=|ANID=)([^&]*)/)[1] : (b = a.adsafeSrc.split("/"), b = b[5] + "-" + b[6]); | |
return { | |
tagId: b, | |
adSafeId: a.asid | |
} | |
}, | |
Nb = function() { | |
var a, b = [], | |
c = function(a) { | |
a = new Tb(a); | |
b.push(a); | |
return a | |
}; | |
a = c(); | |
return { | |
createNew: c, | |
getAll: function() { | |
return b | |
}, | |
myIdCard: a | |
} | |
}, | |
Xa = function(a) { | |
var b, c, d = !1, | |
e = n.getDoc().documentElement, | |
f = function(a) { | |
var e = !0; | |
d && (d = !1, a.stopPropagation(), a.preventDefault(), b = a.screenX - | |
a.clientX, c = a.screenY - a.clientY, e = !1); | |
return e | |
}; | |
a.browserIs(g.BROWSERS.IE) && y.addEvent(e, "click", f, !0); | |
return { | |
determineFramePosition: function() { | |
a.browserIs(g.BROWSERS.IE) && (d = !0, e.click()); | |
return { | |
scrX: b, | |
scrY: c | |
} | |
} | |
} | |
}, | |
Wa = function(a) { | |
var b = g.NA, | |
c = !1, | |
d = function(a) { | |
if (!f.isUndef(a)) { | |
var b = n.getDoc().createElement("div"); | |
f(b.style).mixin({ | |
position: "absolute", | |
width: "100%", | |
opacity: "0", | |
height: "100%", | |
zIndex: -999, | |
top: "0px", | |
left: "0px" | |
}); | |
b[g.IAS_DETECTOR] = !0; | |
a.appendChild(b); | |
return b | |
} | |
}; | |
return { | |
getPiv: function() { | |
return b | |
}, | |
isApplicable: function(a, b, c) { | |
return a.browserIs(g.BROWSERS.CHROME) && a.hasIntersectionObserver() && c.xDomainIframe && b.on("chromeNativeIO") | |
}, | |
start: function() { | |
var e = n.getIntersectionObserver(function(a) { | |
a = a.pop(); | |
b = a.intersectionRect.width * a.intersectionRect.height / (a.boundingClientRect.width * a.boundingClientRect.height) * 100 | |
}, { | |
threshold: [0, 0.01, 0.25, 0.3, 0.5, 0.75, 0.99, 1] | |
}); | |
n.execAtEndOfThread(function() { | |
b = 0 | |
}); | |
e.observe(d(a)); | |
n.execAtEndOfThread(function() { | |
l.trigger("delayedViewabilityReady") | |
}); | |
c = !0 | |
}, | |
isStarted: function() { | |
return c | |
} | |
} | |
}, | |
ub = function() { | |
return { | |
start: function() { | |
y.whenReady(function(a) { | |
l.trigger("startViewabilityLoop"); | |
l.trigger("documentIsReady") | |
}) | |
}, | |
isApplicable: function(a) { | |
return a.bootstrapOn("allowViewability") | |
} | |
} | |
}, | |
Ub = function() { | |
return { | |
start: function(a) { | |
l.on("measurable", function() { | |
a() | |
}) | |
}, | |
isApplicable: function(a, b) { | |
return !b.browserIs(g.BROWSERS.WEBKIT) | |
} | |
} | |
}, | |
Vb = function() { | |
return { | |
start: function(a) { | |
a() | |
}, | |
isApplicable: function(a) { | |
return a.isImmediatelyMeasurable() | |
} | |
} | |
}, | |
nb = function(a, b, c) { | |
var d = !1, | |
e = function() { | |
b.impressionIsIdentifiable() && | |
!d && (d = !0, l.trigger("notify", p._onMeasurable)) | |
}; | |
return { | |
start: function() { | |
var b; | |
b = [Wb(), Xb(), Vb(), Ub()]; | |
(b = f(b).findFirst(function(b, d) { | |
return d.isApplicable(c, a) | |
})) && b.start(e) | |
}, | |
isApplicable: function(a) { | |
return a.bootstrapOn("useViewabilityNotification") && f.isDef(p._onMeasurable) | |
} | |
} | |
}, | |
Xb = function() { | |
return { | |
start: function(a) { | |
Jb(l, ["adImpression", "measurable"]).onAll(function() { | |
a() | |
}) | |
}, | |
isApplicable: function(a, b) { | |
return !b.browserIs(g.BROWSERS.WEBKIT) && s.isVideo() | |
} | |
} | |
}, | |
Wb = function() { | |
return { | |
start: function(a) { | |
l.on("adImpression", | |
function() { | |
a() | |
}) | |
}, | |
isApplicable: function(a) { | |
return a.isImmediatelyMeasurable() && s.isVideo() | |
} | |
} | |
}, | |
Ca = function(a, b, c) { | |
var d = ["rjss", "jss", "jload"], | |
e = function() { | |
var a = !1, | |
c = b.getAvidContext(); | |
f.isDef(c) && (a = c.isDeferred); | |
return !a | |
}; | |
return { | |
accepts: function() { | |
var a = f.isDef(f(d).find(function(a, b) { | |
return b === c | |
})); | |
return b.accepts() && b.isMediaType(g.MEDIA_TYPE.DISPLAY) && a | |
}, | |
isImmediate: e, | |
isMediaType: b.isMediaType, | |
start: function() { | |
try { | |
var b = a.avid; | |
e() || b.addEventListener("ready", function() { | |
l.trigger("adImpression") | |
}) | |
} catch (c) {} | |
} | |
} | |
}, | |
Ba = function(a) { | |
var b = function() { | |
var b; | |
try { | |
b = a.avid.getAvidAdSessionContext() | |
} catch (d) {} | |
return b | |
}; | |
return { | |
accepts: function() { | |
return f.isDef(a.avid) | |
}, | |
isMediaType: function(a) { | |
var d, e = b(); | |
f.isDef(e) && (d = e.mediaType || g.MEDIA_TYPE.DISPLAY); | |
return a === d | |
}, | |
getAvidContext: b | |
} | |
}, | |
Aa = function(a, b) { | |
var c, d = function(a) { | |
var d, f, g; | |
try { | |
d = a.eventData.percentageInView, f = c && 95 <= d, g = { | |
windowDimensions: { | |
x: 0, | |
y: 0, | |
width: 0, | |
height: 0 | |
}, | |
adDimensions: { | |
x: 0, | |
y: 0, | |
width: 0, | |
height: 0 | |
}, | |
containerDimensions: { | |
x: 0, | |
y: 0, | |
width: 0, | |
height: 0 | |
}, | |
shouldDelegateToDomBasedViewability: f, | |
isMeasurable: 0 === d || 95 <= d, | |
isObstructed: !1, | |
isHidden: !1, | |
numberOfAdverts: 1, | |
percentageInView: d, | |
detectionMethod: "av" | |
}, b.trigger("screenLocationChanged", g) | |
} catch (l) {} | |
}; | |
return { | |
start: function() { | |
try { | |
var b = a.avid, | |
f = b.getAvidAdSessionContext().avidAdSessionType; | |
c = "display" === f || "video" === f; | |
b.addEventListener("viewability", d) | |
} catch (k) {} | |
}, | |
addScreenLocationChangedListener: function(a) { | |
b.on("screenLocationChanged", a) | |
} | |
} | |
}, | |
Fa = function(a, b, c) { | |
var d = ["jload"]; | |
return { | |
accepts: function() { | |
var a = f.isDef(f(d).find(function(a, | |
b) { | |
return b === c | |
})); | |
return b.accepts() && b.isMediaType(g.MEDIA_TYPE.VIDEO) && a | |
}, | |
isImmediate: function() { | |
return !1 | |
}, | |
isMediaType: b.isMediaType, | |
start: function() { | |
try { | |
a.avid.addEventListener("video", function(a) { | |
"AdImpression" === a.eventSubType && l.trigger("adImpression") | |
}) | |
} catch (b) {} | |
} | |
} | |
}, | |
Ea = function(a, b) { | |
var c = function(a) { | |
try { | |
b.trigger("videoPlaybackEvent", { | |
eventType: a.eventSubType, | |
eventData: a.eventData | |
}) | |
} catch (c) {} | |
}; | |
return { | |
start: function() { | |
try { | |
a.avid.addEventListener("video", c) | |
} catch (b) {} | |
}, | |
addVideoPlaybackEventListener: function(a) { | |
b.on("videoPlaybackEvent", | |
a) | |
} | |
} | |
}, | |
Da = function(a, b) { | |
var c = function(a) { | |
var c = a.percentageInView; | |
a.viewState = 50 <= c ? g.IN_VIEW : g.OUT_OF_VIEW; | |
a.outOfViewReason = 50 <= c ? "" : g.OUT_OF_VIEW_REASONS.GEOM; | |
b.trigger("measurementChanged", a) | |
}; | |
return { | |
start: function() { | |
l.trigger("addOutputItem", { | |
output: g.MEDIA_TYPE.DISPLAY_CODE | |
}, g.MEDIA_TYPE_CODE, { | |
type: g.IMPRESSION_EVENT | |
}); | |
a.addScreenLocationChangedListener(c); | |
a.start() | |
}, | |
getStrategyName: function() { | |
return g.MEASUREMENT_STRATEGY.DISPLAY | |
}, | |
addMeasurementChangedListener: function(a) { | |
b.on("measurementChanged", | |
a) | |
} | |
} | |
}, | |
Ja = function(a, b) { | |
var c = f.isDef(a) ? a.environment : void 0, | |
d = f.isDef(a) ? a.measurementStrategy : void 0, | |
e = function() { | |
return f.isDef(d) | |
}; | |
f.isDef(b) && b.start(); | |
return { | |
hasMeasurementStrategy: e, | |
getScreenLocationInfo: function(a) { | |
return b.create(a) | |
}, | |
isImmediate: function() { | |
return e() ? c.isImmediate() : !0 | |
}, | |
isMediaType: function(a) { | |
return e() ? c.isMediaType(a) : !1 | |
}, | |
start: function() { | |
e() && c.start() | |
} | |
} | |
}, | |
Ha = function(a) { | |
return { | |
resolve: function() { | |
var b = f(a).findFirst(function(a, b) { | |
return b.environment.accepts() | |
}); | |
if (f.isDef(b)) return b | |
} | |
} | |
}, | |
Ia = function(a) { | |
var b, c = !1, | |
d = !0, | |
e, h = { | |
winDimensions: E({ | |
scrX: 0, | |
scrY: 0, | |
width: 0, | |
height: 0 | |
}), | |
adDimensions: E({ | |
scrX: 0, | |
scrY: 0, | |
width: 0, | |
height: 0 | |
}), | |
containerDimensions: E({ | |
scrX: 0, | |
scrY: 0, | |
width: 0, | |
height: 0 | |
}), | |
method: g.NA, | |
viewState: g.NA, | |
percentInView: g.NA, | |
reason: "", | |
obstructed: g.NA, | |
isHidden: g.NA, | |
tabHidden: g.NA, | |
posViewState: g.NA, | |
adCompCount: 1 | |
}, | |
k = function(a) { | |
return new E({ | |
scrX: a.x, | |
scrY: a.y, | |
width: a.width, | |
height: a.height | |
}) | |
}, | |
n = function(a) { | |
e = { | |
winDimensions: k(a.windowDimensions), | |
adDimensions: k(a.adDimensions), | |
containerDimensions: k(a.containerDimensions), | |
method: a.detectionMethod || g.NA, | |
viewState: a.viewState || g.NA, | |
percentInView: f.isDef(a.percentageInView) ? a.percentageInView : g.NA, | |
reason: a.outOfViewReason || "", | |
obstructed: g.NA, | |
isHidden: g.NA, | |
tabHidden: g.NA, | |
posViewState: a.viewState || g.NA, | |
adCompCount: a.numberOfAdverts || 1, | |
shouldDelegateToDomBasedViewability: a.shouldDelegateToDomBasedViewability | |
}; | |
a.isMeasurable && (b = !0, c && (c = !1, l.trigger("delayedViewabilityReady"))) | |
}; | |
return { | |
create: function(a) { | |
var k = h; | |
d && !b && (c = !0, d = !1); | |
if (f.isDef(e)) | |
if (e.shouldDelegateToDomBasedViewability) k = | |
a, k.method = e.method; | |
else if (0 === e.percentInView || 95 <= e.percentInView) k = e; | |
return k | |
}, | |
start: function() { | |
var b; | |
f.isDef(a) && f.isDef(a.measurementStrategy) && (b = a.measurementStrategy, b.addMeasurementChangedListener(n), b.start()) | |
} | |
} | |
}, | |
Ga = function(a, b, c) { | |
var d = !1, | |
e = !1, | |
h, k, n, p, q = function() { | |
if (!f.isUndef(k)) { | |
var a = [], | |
b, l; | |
d ? (e ? (l = !1, b = 100) : (l = p, b = n), 50 > b && a.push(g.OUT_OF_VIEW_REASONS.GEOM)) : (l = !1, b = 0, a.push(g.OUT_OF_VIEW_REASONS.VIDEO)); | |
k.shouldDelegateToDomBasedViewability = l; | |
k.percentageInView = b; | |
k.viewState = 50 > | |
b ? g.OUT_OF_VIEW : g.IN_VIEW; | |
k.outOfViewReason = a.join("."); | |
h = k; | |
c.trigger("measurementChanged", h) | |
} | |
}, | |
m = function(a) { | |
k = a; | |
n = a.percentageInView; | |
p = a.shouldDelegateToDomBasedViewability; | |
q() | |
}, | |
s = function(a) { | |
a = a.eventType; | |
"AdEnteredFullscreen" === a ? e = !0 : "AdExitedFullscreen" === a ? e = !1 : -1 !== "AdStarted|AdVideoStart|AdPlaying".indexOf(a) ? d = !0 : -1 !== "AdSkipped|AdUserClose|AdPaused|AdVideoComplete|AdStopped".indexOf(a) && (d = !1); | |
q() | |
}; | |
return { | |
start: function() { | |
l.trigger("addOutputItem", { | |
output: g.MEDIA_TYPE.VIDEO_CODE | |
}, g.MEDIA_TYPE_CODE, { | |
type: g.IMPRESSION_EVENT | |
}); | |
a.addScreenLocationChangedListener(m); | |
a.start(); | |
b.addVideoPlaybackEventListener(s); | |
b.start() | |
}, | |
getStrategyName: function() { | |
return g.MEASUREMENT_STRATEGY.VIDEO | |
}, | |
addMeasurementChangedListener: function(a) { | |
c.on("measurementChanged", a) | |
} | |
} | |
}, | |
lb = function(a, b, c, d, e, h, k, l, t, q, m, x, w, A) { | |
var z, v, G, H, B, C = 0, | |
L = 0, | |
I = !1, | |
K = s.isVideo(), | |
J = k.request("mobileApp"), | |
Q = K ? 200 : 100; | |
d = p.mobOrTab; | |
var T = !d && e.on("recordalternate") && !e.bootstrapOn("killFlash"), | |
M = b.hasFlashEnabled(), | |
V = e.on("forcecocoa") && M, | |
N = | |
e.on("nextcocoa"); | |
b.getDocumentMode(); | |
var U = k.request("intersectionWatcher"), | |
U = b.browserIs(g.BROWSERS.GECKO) || b.browserIs(g.BROWSERS.IE) && e.on("rattie") || U.isApplicable(b, e, s), | |
O = s.friendlyIframe && V || s.xDomainIframe && U && V || s.xDomainIframe && !U, | |
R = !d && O && e.on("cocoapuffs") && M && !e.bootstrapOn("killFlash"), | |
W = !1, | |
S = new pa(10), | |
ja = N ? na : oa, | |
P = [K && e.on("videotwoseconds") ? 2E3 : 1E3, 5E3, 15E3]; | |
e.on("everySecond") && (P = [1E3, 2E3, 3E3, 4E3, 5E3, 6E3, 7E3, 8E3, 9E3, 1E4, 11E3, 12E3, 13E3, 14E3, 15E3]); | |
var Y = f(P).map(function(a, b) { | |
return b / | |
1E3 | |
}).join("-"), | |
Z = new la(1E3), | |
X = new ka(q.getPingJobs(P)); | |
if (e.on("hundredpct") && p.use100v) var $ = new la(1E3), | |
da = new ka(q.getFullyInViewPingJobs(P)); | |
if (e.on("tabHiddenDtCall")) var ga = new la(1E3), | |
ea = new ka(q.getPosInViewPingJobs([P[0]])); | |
var ha = function() { | |
ba(); | |
e.on("viewabilityready") && !I && (c.send(g.DT_CODES.VIEWABILITY_READY), k.trigger("measurable"), I = !0) | |
}; | |
k.on("delayedViewabilityReady", ha); | |
var ba = function(d) { | |
try { | |
S.start(); | |
var l, q, r, u, y, B; | |
if (a.hasMeasurementStrategy()) r = a.getScreenLocationInfo(x.collect()); | |
else { | |
r = x.collect(); | |
T && (r.gState = r.viewState); | |
if (J.isMobileAppEnvironment()) r.viewState = J.getViewabilityResult(), r.method = J.getDetectionMethod(), r.percentInView = J.getPercentageInView(); | |
else if (R) { | |
z = z || new ca(ja, r.adDimensions, ha, e, m, b) || {}; | |
u = z.checkViewable(); | |
e.on("hundredpct") && p.use100v && (H = H || new Fb(Eb, r.adDimensions, ha, b, e, h, t, m) || {}, y = H.checkViewable(), r.fullPercentInView = y.pct, r.useCocoa = R); | |
if (1 !== r.tabHidden || u.str === g.NA) r.viewState = u.str; | |
r.percentInView = u.pct; | |
e.on("unreliabilityDetection") && | |
M && (G = G || new ca(ja, E({ | |
height: 0, | |
width: -2E4 | |
}), f.noop, e, m, b) || {}, B = G.checkViewable(), B.str !== g.OUT_OF_VIEW && (L += 1), C += 1, t.addItem({ | |
output: L + "/" + C | |
}, "fu")) | |
} else O && (r.viewState = g.NA, r.percentInView = g.PIV_NA); | |
T && (v || d || !M || (v = R ? z : new ca(ja, r.adDimensions, f.noop, e, m, b, h)), r.fState = d || !M ? g.NA : v.checkViewable().str); | |
if (K && !s.isAvid() && (q = A.getViewStateOverride())) { | |
if (q === g.OUT_OF_VIEW) { | |
var F = r.reason ? r.reason.split(".") : []; | |
F[F.length] = g.OUT_OF_VIEW_REASONS.VIDEO; | |
r.reason = F.join(".") | |
} | |
r.viewState = q | |
} | |
} | |
l = w.registerLocation(r); | |
e.on("hundredpct") && p.use100v && (l.isFullyInView() ? ($.mark(), da.doEligibleJobs($.getTotalTime()), W || d || (c.send(g.DT_CODES.FULLY_INVIEW, 0), k.trigger("notify", p._onInViewFull), W = !0)) : $.stop()); | |
l.isInView() ? (Z.mark(), X.doEligibleJobs(Z.getTotalTime())) : Z.stop(); | |
var I = X.getNextJob(); | |
I && I.time === P[0] && e.on("tabHiddenDtCall") && (r.posViewState === g.IN_VIEW || r.posViewState === g.PARTIAL_VIEW_PLUS ? (ga.mark(), ea.doEligibleJobs(ga.getTotalTime())) : ga.stop()); | |
S.stop(); | |
var N = n.round(S.getTime() / S.getCount()); | |
t.addItem({ | |
output: N | |
}, | |
"lt", { | |
type: g.DT_CODES.UNLOAD | |
}); | |
return l | |
} catch (Q) { | |
k.trigger("error", g.ERROR_CODES.CHECK_SCREEN_LOC) | |
} | |
}, | |
ia, aa, fa = function(a) { | |
if (!aa) { | |
var b, d = !1, | |
e = function() { | |
d || (d = !0, c.send(g.DT_CODES.VIDEO_EVENTS, void 0, void 0, void 0, void 0, function() { | |
u.postMessage(JSON.stringify({ | |
id: p.videoId, | |
msg: "unloadComplete", | |
messageType: "misc" | |
}), "*") | |
})) | |
}; | |
a = function() { | |
e(); | |
if (!ia) { | |
var a = [z, H, v, G]; | |
b && clearInterval(b); | |
f(a).each(function(a, b) { | |
b && "function" === typeof b.removePixels && b.removePixels() | |
}); | |
ia = !0 | |
} | |
}; | |
l.impressionIsIdentifiable() && | |
(ba(), b = setInterval(ba, Q), ia = !1, k.on("adStopped", a), k.on("adVideoComplete", a), k.on("skipAd", a), y.addEvent(u, "beforeunload", c.unload, !1), K && !s.isAvid() && y.addEvent(u, "beforeunload", e, !1)); | |
aa = !0 | |
} | |
}; | |
return { | |
checkScreenLoc: ba, | |
init: function() { | |
B = !1; | |
k.on("startViewabilityLoop", fa); | |
k.on("documentIsReady", function() { | |
B = !0 | |
}) | |
}, | |
needsFlash: function() { | |
return O | |
}, | |
readyFired: function() { | |
return B | |
}, | |
useFlash: function() { | |
return R | |
}, | |
stringifyPingTimes: function() { | |
return Y | |
}, | |
isImmediatelyMeasurable: function() { | |
return J.isMobileAppEnvironment() ? | |
J.isMeasurable() : !R | |
} | |
} | |
}, | |
Zb = function(a, b, c, d, e) { | |
var h, k, r, t = n.getWindow(), | |
q = n.getDoc(), | |
m = g.AD_IDENTIFIER + "-" + p.asid, | |
x; | |
d = d || b.parentNode || b.parent; | |
var w = function() { | |
if (!h) | |
if (r = r || Yb(d), h = r.calcDims(b, d), c === g.DETECTION_METHODS.VIDEO && s.embedded) { | |
var a = h, | |
e = (new E(b)).getRounded(); | |
try { | |
a.set("width", e.width), a.set("height", e.height) | |
} catch (f) { | |
l.trigger("error", g.ERROR_CODES.VIDEO_IN_IFRAME_DIMS_CALC) | |
} | |
} else c === g.DETECTION_METHODS.AD_PLACEHOLDER && h.treatAsPlaceholder(); | |
return h | |
}, | |
A = function() { | |
var b, d, h, m; | |
d = | |
p.mobOrTab; | |
f.isUndef(k) && (b = !d && (s.friendly || f.isDef(u.mozInnerScreenX)) && e.on("offscreen"), h = w(), d = new E(v.calcWinDims()), b = new E(b ? v.calcMonDims() : {}), m = c === g.DETECTION_METHODS.VIDEO && s.embedded ? l.request("iframe").getClippedDims() : new E({}), k = a.calcPercentInView(h, d, b, m)); | |
return k | |
}, | |
z = function() { | |
return a.calcInitialViewState(A()) | |
}, | |
D = function() { | |
return b === u ? !1 : w().isHidden() | |
}; | |
(function() { | |
var a = b === t ? q.body : b; | |
x = s.friendlyIframe ? t.frameElement : a; | |
y.addEvent(a, "click", function() { | |
l.trigger("adComponentClicked") | |
}); | |
y.addEvent(a, "mouseover", function() { | |
l.trigger("adComponentMousedOver") | |
}) | |
})(); | |
return { | |
getAdNode: function() { | |
return b | |
}, | |
mark: function() { | |
v.setAttributeOf(x, m, "") | |
}, | |
cleanup: function() { | |
v.removeAttributeOf(x, m) | |
}, | |
isNode: function(a) { | |
return b === a | |
}, | |
isHidden: D, | |
isObstructed: function() { | |
return !1 | |
}, | |
getDims: w, | |
getPercentInView: A, | |
getLocationState: z, | |
getOnPageViewability: function() { | |
return D() ? g.OUT_OF_VIEW : z() | |
}, | |
getDetectionMethod: function() { | |
return c | |
}, | |
getContainerDims: function() { | |
return E(d) | |
}, | |
refresh: function() { | |
k = h = void 0; | |
var a, c = b.parentNode; | |
if (c) { | |
for (; b !== u && c && c !== B && !a;) a = c === d, c = c.parentNode; | |
a || (d = b.parentNode) | |
} | |
} | |
} | |
}, | |
$b = function(a, b) { | |
var c = [], | |
d = function() { | |
return c[0] && c[0].getDetectionMethod() === g.DETECTION_METHODS.AD_PLACEHOLDER | |
}, | |
e = function(e, f, h) { | |
var k = d() || 0 === c.length; | |
e = Zb(a, e, f, h, b); | |
k && f !== g.DETECTION_METHODS.AD_PLACEHOLDER && l.trigger("primaryadfound", e); | |
k && e.mark(); | |
d() && (f = c.shift(), f.cleanup()); | |
c.push(e) | |
}, | |
h = function() { | |
var a, b = !1, | |
d = 0, | |
e = 0; | |
f(c).each(function(c, f) { | |
var h; | |
h = f.getDims(); | |
h.hasValidDims() && (a = f.getPercentInView(), | |
b = a !== g.NA, h = h.area(), d += h, e += a / 100 * h) | |
}); | |
return { | |
totalArea: d, | |
totalInView: e, | |
hasMeasurement: b | |
} | |
}, | |
k = function() { | |
var a = h(); | |
return a.hasMeasurement ? n.round(a.totalInView / a.totalArea * 100) : g.PIV_NA | |
}, | |
r = function() { | |
var c = h().totalArea >= g.MRC_LARGE_AD_SIZE && b.on("largeAd") && !s.isVideo(); | |
return a.calcInitialViewState(k(), !1, c) | |
}, | |
p = function(a) { | |
var b = -1; | |
f(c).each(function(c, d) { | |
d.isNode(a) && (b = c) | |
}); | |
return b | |
}, | |
q = function(a) { | |
return function() { | |
return c[0] && c[0][a]() | |
} | |
}; | |
l.on("adComponentAdded", function(a) { | |
f(a).each(function(a, | |
b) { | |
-1 === p(b) && e(b, g.DETECTION_METHODS.MUTATION) | |
}) | |
}); | |
l.on("adComponentRemoved", function(a) { | |
f(a).each(function(a, b) { | |
var d = p(b); - 1 < d && c.splice(d, 1) | |
}) | |
}); | |
return { | |
getOriginatingNode: q("getAdNode"), | |
getDims: q("getDims"), | |
isObstructed: q("isObstructed"), | |
getDetectionMethod: q("getDetectionMethod"), | |
getContainerDims: q("getContainerDims"), | |
getViewState: r, | |
getPercentInView: k, | |
isHidden: q("isHidden"), | |
isUsingPlaceholder: d, | |
hasAd: function() { | |
return !!c.length | |
}, | |
refresh: function() { | |
f(c).each(function(a, b) { | |
b.refresh() | |
}) | |
}, | |
addAdComponent: e, | |
getOutOfViewReasons: function() { | |
var a, b = [], | |
d = c[0], | |
e = g.OUT_OF_VIEW_REASONS; | |
d && (a = r(), a !== g.OUT_OF_VIEW && a !== g.PARTIAL_VIEW_MINUS || b.push(e.GEOM), d.isHidden() && b.push(e.HIDDEN), d.isObstructed() && b.push(e.OBSTRUCTION)); | |
return b | |
}, | |
getComponentCount: function() { | |
return c.length | |
} | |
} | |
}, | |
ac = function(a) { | |
var b = !1; | |
if (!f.isUndef(u.MutationObserver)) { | |
var c = new MutationObserver(function(a) { | |
n.execAtEndOfThread(function() { | |
b && f(a).each(function(a, b) { | |
b.addedNodes.length && l.trigger("adComponentAdded", b.addedNodes); | |
b.removedNodes.length && | |
l.trigger("adComponentRemoved", b.removedNodes) | |
}) | |
}) | |
}), | |
d = function() { | |
b = !0; | |
setTimeout(function() { | |
b = !1 | |
}, 40) | |
}; | |
l.on("adComponentClicked", d); | |
l.on("adComponentMousedOver", d); | |
try { | |
c.observe(B.body, { | |
attributes: !0, | |
childList: !0, | |
characterData: !0 | |
}) | |
} catch (e) { | |
a.add(g.ERROR_CODES.AC_WATCHER) | |
} | |
} | |
}, | |
fc = function() { | |
var a; | |
a || (a = [bc(), { | |
detectionMethod: g.DETECTION_METHODS.VIDEO, | |
find: l.request("video").findAdNode, | |
isApplicable: s.isVideo | |
}, | |
cc(), dc(), ec() | |
]); | |
return f(a).findFirst(function(a, c) { | |
return c.isApplicable() | |
}) | |
}, | |
ra = function(a) { | |
var b; | |
a = v.findChildWithLargestContent(a || p.contextNode.parentNode); | |
1 < v.getNodeArea(a) && !a[g.IAS_DETECTOR] && (b = a); | |
return b | |
}, | |
dc = function() { | |
return { | |
detectionMethod: g.DETECTION_METHODS.IFRAME, | |
find: function() { | |
return u | |
}, | |
isApplicable: function() { | |
return s.embedded | |
} | |
} | |
}, | |
bc = function() { | |
var a = l.request("mobileApp"); | |
return { | |
usePlaceholder: !0, | |
detectionMethod: a.getDetectionMethod(), | |
isApplicable: a.isMobileAppEnvironment, | |
find: function() { | |
return ra(n.getDoc().body) | |
} | |
} | |
}, | |
cc = function() { | |
var a; | |
return { | |
detectionMethod: g.DETECTION_METHODS.SPECIFIED_AD, | |
isApplicable: function() { | |
return s.isSpecifiedAd() | |
}, | |
find: function() { | |
var b, c = [p.contextNode.parentNode, n.getDoc()]; | |
s.friendly && c.push(n.getTop().document); | |
f(c).each(function(c, e) { | |
var f = v.querySelector(e, p._cl_adpath); | |
!b && f && (b = f, a = b.parentNode) | |
}); | |
return b | |
}, | |
getAdContainer: function() { | |
return a | |
} | |
} | |
}, | |
ec = function() { | |
return { | |
usePlaceholder: !0, | |
detectionMethod: g.DETECTION_METHODS.AD_HUNT, | |
isApplicable: function() { | |
return !0 | |
}, | |
find: ra | |
} | |
}, | |
Yb = function(a) { | |
var b = [gc(), hc(), ic()]; | |
return f(b).findFirst(function(b, d) { | |
return d.isApplicable(a) | |
}) | |
}, | |
ic = function() { | |
return { | |
calcDims: function(a, b) { | |
var c = new E(a), | |
d = v.getClippedDimensions(a, b), | |
e = c.getRounded(); | |
c.set("height", d.height < e.height ? d.height : e.height || 1); | |
c.set("width", d.width < e.width ? d.width : e.width || 1); | |
return c | |
}, | |
isApplicable: function(a) { | |
a = s.isSpecifiedAd() && v.nodeIsInWindow(a, n.getTop()); | |
var b = !s.embedded; | |
return a || b | |
} | |
} | |
}, | |
hc = function() { | |
return { | |
calcDims: l.request("iframe").calcDims, | |
isApplicable: function() { | |
return !s.isSpecifiedAd() && s.embedded | |
} | |
} | |
}, | |
gc = function() { | |
return { | |
calcDims: function(a) { | |
var b = | |
l.request("iframe").calcDims(); | |
a = (new E(a)).getRounded(); | |
b.set("height", a.height); | |
b.set("width", a.width); | |
return b | |
}, | |
isApplicable: function(a) { | |
return s.isSpecifiedAd() && s.embedded && !v.nodeIsInWindow(a, n.getTop()) | |
} | |
} | |
}, | |
cb = function(a, b, c) { | |
var d, e = p.contextNode.parentNode, | |
f = $b(b, c); | |
ac(a); | |
return { | |
find: function() { | |
if (f.isUsingPlaceholder() || !f.hasAd()) { | |
var a, b; | |
d = d || fc(); | |
a = d.find(); | |
!a && d.usePlaceholder ? f.hasAd() || (a = v.getPlaceholderSpan(), e.insertBefore(a, p.contextNode.nextSibling), f.addAdComponent(a, g.DETECTION_METHODS.AD_PLACEHOLDER)) : | |
a && (b = d.getAdContainer && d.getAdContainer() || e, f.addAdComponent(a, d.detectionMethod, b)) | |
} else f.refresh(); | |
return f | |
}, | |
getDetectionMethod: function() {}, | |
isAdDetected: function() { | |
return !0 !== f.isUsingPlaceholder() | |
}, | |
getOriginatingElement: function() { | |
return f.getOriginatingNode() | |
}, | |
getParent: function() { | |
return e | |
} | |
} | |
}, | |
va = function(a) { | |
function b() { | |
var a = e.isSafeToInjectMraid(); | |
c = jc().resolve(a) | |
} | |
var c, d = new kc, | |
e = new lc; | |
try { | |
a.bootstrapOn("mobOrTab") && (d.detect(), d.hasDetectedMobileApp() && (e.detect(), b())) | |
} catch (h) { | |
l.trigger("error", | |
g.ERROR_CODES.MOBILE_APP) | |
} | |
return { | |
isMobileAppEnvironment: function() { | |
return d.hasDetectedMobileApp() | |
}, | |
isMeasurable: function() { | |
return f.isDef(c) && c.isMeasurable() | |
}, | |
getPercentageInView: function() { | |
var a = g.NA; | |
f.isDef(c) && c.isMeasurable() && (a = c.getPercentageInView()); | |
return a | |
}, | |
getViewabilityResult: function() { | |
var a = g.NA; | |
f.isDef(c) && c.isMeasurable() && (a = c.getViewabilityResult()); | |
return a | |
}, | |
getDetectionMethod: function() { | |
var a = g.NA; | |
f.isDef(c) && c.isViewabilitySupported() && (a = c.getDetectionMethod()); | |
return a | |
} | |
} | |
}, | |
mc = { | |
url: { | |
STRINGIFIED_METHOD: "u", | |
detect: function(a) { | |
return !!f(a).findFirst(function(a, c) { | |
return -1 !== n.getWindow().location.href.indexOf(c) | |
}) | |
} | |
}, | |
userAgent: { | |
STRINGIFIED_METHOD: "a", | |
detect: function(a) { | |
return !!f(a).findFirst(function(a, c) { | |
var d; | |
d = !1; | |
var e = n.getWindow(); | |
f.isDef(e.navigator) && f.isDef(e.navigator.userAgent) && (d = (d = e.navigator.userAgent) && -1 !== d.indexOf(c)); | |
return d | |
}) | |
} | |
}, | |
javascript: { | |
STRINGIFIED_METHOD: "j", | |
detect: function(a) { | |
return !!f(a).findFirst(function(a, c) { | |
return f.isDef(Q.stringToProp(c)) | |
}) | |
} | |
}, | |
scriptSrc: { | |
STRINGIFIED_METHOD: "s", | |
detect: function(a) { | |
return !!f(a).findFirst(function(a, c) { | |
return v.containsScriptTagWithSrc(function(a) { | |
return f.isDef(a) && -1 !== a.indexOf(c) | |
}) | |
}) | |
} | |
} | |
}, | |
sa = function() { | |
var a = function(a, c) { | |
var d, e = mc[a]; | |
e.detect(c) && (d = e.STRINGIFIED_METHOD); | |
return d | |
}; | |
return { | |
process: function(b) { | |
return f(b).map(a).join("") | |
} | |
} | |
}, | |
nc = { | |
url: "file: content: applewebdata: afma-sdk adsx.greystripe.com/openx/www/delivery/ia.php ads.mopub.com ogury.io".split(" "), | |
userAgent: ["QuantcastSDK", "afma-sdk"], | |
scriptSrc: ["file:"], | |
javascript: "ADMARVEL mopubFinishLoad InmobiObj PandoraApp mraid.sasSendMessage avid.getAvidAdSessionContext".split(" ") | |
}, | |
kc = function() { | |
var a, b = function() { | |
return void 0 !== a && "" !== a | |
}; | |
return { | |
detect: function() { | |
a = sa().process(nc); | |
b() && l.trigger("addOutputItem", { | |
output: "1" | |
}, "mapp", { | |
type: "impression" | |
}) | |
}, | |
hasDetectedMobileApp: b | |
} | |
}, | |
jc = function() { | |
return { | |
resolve: function(a) { | |
var b, c = n.getWindow(), | |
d = c.avid; | |
if (f.isDef(c.mraid) || a) b = new oc; | |
else { | |
if (f.isDef(d)) return b; | |
l.trigger("addOutputItem", { | |
output: "na" | |
}, "mi", { | |
type: "impression" | |
}) | |
} | |
return b | |
} | |
} | |
}, | |
oc = function() { | |
var a = !1, | |
b = !1, | |
c = !1, | |
d = n.getWindow(), | |
e = function() { | |
var a = d.mraid; | |
return f.isDef(a) && f.isDef(a.isViewable) | |
}, | |
h = function() { | |
return e() && c | |
}, | |
k = function() { | |
c = !0; | |
b && h() && l.trigger("delayedViewabilityReady") | |
}, | |
r = function() { | |
var c = d.mraid; | |
e() && (a = !0, "loading" === c.getState() ? (b = !0, c.addEventListener("ready", function() { | |
k() | |
})) : k()) | |
}, | |
p = function() { | |
a || (b = !0, r()) | |
}; | |
(function() { | |
var a = !0; | |
if (n.getWindow().mraid || v.containsScriptTagWithSrc("mraid.js")) a = !1; | |
l.trigger("addOutputItem", { | |
output: f.stringifyTriState(a) | |
}, | |
"mi", { | |
type: "impression" | |
}); | |
return a | |
})() ? l.trigger("exec", "mraid.js", p): r(); | |
return { | |
isViewabilitySupported: e, | |
isMeasurable: h, | |
getViewabilityResult: function() { | |
return d.mraid.isViewable() ? g.IN_VIEW : g.OUT_OF_VIEW | |
}, | |
getPercentageInView: function() { | |
return d.mraid.isViewable() ? 100 : 0 | |
}, | |
getDetectionMethod: function() { | |
return g.DETECTION_METHODS.MRAID | |
} | |
} | |
}, | |
lc = function() { | |
var a = [], | |
b = [], | |
c = function(b, c) { | |
var f, g = sa().process(c.detectionRules); | |
g && (a.push(c.STRINGIFIED_SDK + "*" + g), f = c); | |
return f | |
}; | |
return { | |
detect: function() { | |
b = f(pc).map(c); | |
0 < b.length && l.trigger("addOutputItem", { | |
output: function() { | |
return a.join(".") | |
} | |
}, "sdk", { | |
type: "impression" | |
}) | |
}, | |
isSafeToInjectMraid: function() { | |
return 1 == b.length && f.isDef(b[0].safeToInjectMraid) && b[0].safeToInjectMraid | |
} | |
} | |
}, | |
pc = [{ | |
STRINGIFIED_SDK: "adma", | |
safeToInjectMraid: !0, | |
detectionRules: { | |
javascript: ["ADMARVEL"], | |
url: ["AdMarvel"] | |
} | |
}, { | |
STRINGIFIED_SDK: "admb", | |
safeToInjectMraid: !0, | |
detectionRules: { | |
userAgent: ["afma-sdk"], | |
url: ["afma-sdk"] | |
} | |
}, { | |
STRINGIFIED_SDK: "imbi", | |
safeToInjectMraid: !0, | |
detectionRules: { | |
javascript: ["InmobiObj"] | |
} | |
}, { | |
STRINGIFIED_SDK: "mmed", | |
detectionRules: { | |
url: ["mmsdk"], | |
scriptSrc: ["mmsyscache"] | |
} | |
}, { | |
STRINGIFIED_SDK: "mopb", | |
safeToInjectMraid: !0, | |
detectionRules: { | |
javascript: ["mopubFinishLoad"], | |
url: ["ads.mopub.com"] | |
} | |
}, { | |
STRINGIFIED_SDK: "pand", | |
detectionRules: { | |
javascript: ["PandoraApp"] | |
} | |
}, { | |
STRINGIFIED_SDK: "ambe", | |
safeToInjectMraid: !0, | |
detectionRules: { | |
url: ["amobee"] | |
} | |
}, { | |
STRINGIFIED_SDK: "smat", | |
safeToInjectMraid: !0, | |
detectionRules: { | |
javascript: ["smaato_bridge"] | |
} | |
}, { | |
STRINGIFIED_SDK: "afrm", | |
safeToInjectMraid: !0, | |
detectionRules: { | |
javascript: ["Adform"] | |
} | |
}, { | |
STRINGIFIED_SDK: "vrve", | |
safeToInjectMraid: !0, | |
detectionRules: { | |
javascript: ["vrvsdk"] | |
} | |
}, { | |
STRINGIFIED_SDK: "sads", | |
detectionRules: { | |
javascript: ["mraid.sasSendMessage"] | |
} | |
}, { | |
STRINGIFIED_SDK: "ogry", | |
safeToInjectMraid: !0, | |
detectionRules: { | |
url: ["ogury.io"] | |
} | |
}, { | |
STRINGIFIED_SDK: "cnvt", | |
detectionRules: { | |
url: ["adsx.greystripe.com/openx/www/delivery/ia.php"] | |
} | |
}], | |
qc = function() { | |
return { | |
decorateContextParams: function(a, b) { | |
var c = l.request("adNode"), | |
d; | |
if (d = "adImpression" === a) d = l.request("adNode").hasAttribute("data-ias-autoplay"); | |
d && (b.ap = "false" === c.getAttribute("data-ias-autoplay") ? 0 : 1); | |
return b | |
} | |
} | |
}, | |
rc = function() { | |
return { | |
listenForResult: function() { | |
l.on("videoBlockResult", function(a) { | |
var b = l.request("adNode"), | |
c = !1, | |
d = "blockAd" + p.videoId; | |
"failed" === a.action && (c = !0); | |
if (b && f.isDef(b.blockAd)) b.blockAd(c); | |
else if (b && f.isDef(b[d])) b[d](c) | |
}) | |
} | |
} | |
}, | |
sc = function(a, b) { | |
var c = !1, | |
d = !1, | |
e, h = function() { | |
c || (c = !0, a.trigger("startViewabilityLoop"), e = b.createViewabilityTracker("mpt", function(a) { | |
return a.isFullyInView() | |
})) | |
}, | |
k = function(a) { | |
if (!f.isUndef(a)) { | |
var b = -1; | |
f.isDef(a.volume) ? b = a.volume : f.isDef(a.adVolume) && (b = a.adVolume); | |
return b | |
} | |
}, | |
l = function(a) { | |
a = k(a); | |
c || 0 !== a ? c && (d || 0 === a) && (a = { | |
isFullyInView: function() { | |
return !1 | |
} | |
}, e.addState(a)) : d = !0 | |
}; | |
return { | |
init: function() { | |
a.on({ | |
adStarted: h, | |
adVideoStart: h, | |
volumeChanged: function(a) { | |
l(a) | |
}, | |
adVideoMidpoint: function() { | |
e && e.hasAlwaysBeen(!0) && a.trigger("sendDt", g.DT_CODES.QUARTILE_FULLY_INVIEW) | |
} | |
}) | |
} | |
} | |
}, | |
tc = function(a, b) { | |
var c, d, e = l.request("videoTranslator"), | |
h = l.request("videoAutoplay"), | |
g = a.eventData; | |
d = e.translate(a.messageType); | |
g = h.decorateContextParams(d, g); | |
c = f({ | |
t: a.time - p.birthdate, | |
tp: d, | |
sl: b | |
}).mixin(g); | |
return f({ | |
indicatesPlaying: function() { | |
return -1 !== "showAd|adImpression|adVideoStart|resumeAd".indexOf(d) | |
}, | |
indicatesNotPlaying: function() { | |
return -1 !== "adVideoComplete|adStopped|stopAd|pauseAd".indexOf(d) | |
}, | |
indicatesFullscreen: function() { | |
var a = n.getWindow(); | |
return ("resizeAd" === d || "initAd" === d) && ("fullscreen" === g.viewMode || g.width === a.screen.width) | |
}, | |
indicatesNormalSize: function() { | |
return "resizeAd" === d && "normal" === g.viewMode | |
}, | |
trigger: function() { | |
l.trigger(d, | |
g) | |
}, | |
toString: function() { | |
return "{" + f(c).toParams() + "}" | |
} | |
}).mixin(c) | |
}, | |
uc = function() { | |
var a = []; | |
return { | |
registerEvent: function(b, c) { | |
var d = new tc(b, c); | |
a.push(d); | |
return d | |
}, | |
toString: function() { | |
return "{" + f({ | |
vEventCount: a.length, | |
vEvents: "[" + a.join(",") + "]" | |
}).toParams() + "}" | |
} | |
} | |
}, | |
vc = function() { | |
var a = { | |
AdPaused: "pauseAd", | |
AdVolumeChange: "volumeChanged", | |
AdPlaying: "resumeAd" | |
}; | |
return { | |
translate: function(b) { | |
var c = b.charAt(0).toLowerCase() + b.slice(1); | |
b in a && (c = a[b]); | |
return c | |
} | |
} | |
}, | |
$a = function(a, b, c) { | |
var d, e, h, k = g.OUT_OF_VIEW, | |
r = new rc, | |
t = new uc, | |
q = !1, | |
m = function(b, c) { | |
var d = c["IASid" + a], | |
e = f.isFunction(d); | |
if (e) { | |
var h = d.call(c, a); | |
q = !0; | |
f.isStr(h) && (l.provide("vc", function() { | |
return h | |
}), l.trigger("addOutputItem", { | |
output: h | |
}, "vc", { | |
type: "impression" | |
})) | |
} | |
return e | |
}, | |
s = function() { | |
d || (f([".integral-vid-" + a, "ias-ad", "object", "embed"]).findFirst(function(a, b) { | |
var c = n.getDoc().querySelectorAll(b); | |
return d = f(f(c).toArray()).findFirst(m) | |
}), d || __IntegralASDiagnosticCall("novidnode", {}, p)); | |
return d | |
}; | |
(function() { | |
var d = !1, | |
f = !1; | |
s(); | |
b.on("hundredpct") && | |
b.bootstrapOn("use100v") && (new sc(l, c)).init(); | |
y.addEvent(n.getWindow(), "message", function(b) { | |
var e = {}; | |
try { | |
e = JSON.parse(unescape(b.data)) | |
} catch (h) { | |
e = {} | |
} | |
e.id == a && (b = t.registerEvent(e, c.getCurrentLoc()), b.indicatesPlaying() ? (d = !0, k = f ? g.IN_VIEW : !1) : b.indicatesNotPlaying() ? (d = !1, k = g.OUT_OF_VIEW) : b.indicatesFullscreen() ? (f = !0, k = d ? g.IN_VIEW : g.OUT_OF_VIEW) : b.indicatesNormalSize() && (f = !1, k = d ? !1 : g.OUT_OF_VIEW), b.trigger()) | |
}); | |
l.provide({ | |
videoEventsString: t, | |
videoVersion: function() { | |
var a, b = s(); | |
try { | |
a = b.getVersion() | |
} catch (c) { | |
a = -1, l.trigger("error", g.ERROR_CODES.NO_VIDEO_AD_INTERFACE) | |
} | |
return a | |
}, | |
videoTranslator: function() { | |
return e = e || new vc | |
}, | |
videoAutoplay: function() { | |
return h = h || new qc | |
}, | |
adNode: s | |
}); | |
r.listenForResult() | |
})(); | |
return { | |
findAdNode: s, | |
getViewStateOverride: function() { | |
return k | |
}, | |
isHandshakeComplete: function() { | |
return q | |
} | |
} | |
}, | |
wc = function() { | |
return new W(g.PERF_TIMELINE_TRACKER_CONFIG.WRAPPERS.AS.TYPE, function(a, b) { | |
return a.timestamp - b.timestamp | |
}, g.PERF_TIMELINE_TRACKER_CONFIG.WRAPPERS.AS.COUNT) | |
}, | |
La = function() { | |
var a, b, c = {}, | |
d = | |
0, | |
e = function(c) { | |
if (c || a) d += 5, b.onTick(d, function() { | |
a ? e() : l.trigger("sendDt", g.DT_CODES.PERFORMANCE) | |
}), a = !1 | |
}, | |
h = function(f, h, g) { | |
c[f][h] = g; | |
b && b.isActive() || (b = new fa, d = 0, e(!0), b.start()); | |
a = !0 | |
}, | |
k = function(b) { | |
f(c).each(function(d, e) { | |
var h = c[d], | |
g = { | |
type: b, | |
oneTime: !0, | |
asION: !0 | |
}; | |
f(h).isEmpty() || (l.trigger("addOutputItem", { | |
output: h | |
}, d, g), c[d] = {}); | |
a = !1 | |
}) | |
}; | |
return { | |
start: function(a) { | |
l.on("preSendDt", function(a) { | |
k(a); | |
b.kill() | |
}); | |
l.on("addTrackerField", h) | |
}, | |
addFieldTypes: function(a) { | |
f(a).each(function(a, b) { | |
c[b] = {} | |
}) | |
} | |
} | |
}, | |
Ka = function() { | |
var a = {}, | |
b = function(b) { | |
a[b] || (a[b] = new pa(1, p.birthdate)); | |
return a[b] | |
}, | |
c = function(a) { | |
b(a).start() | |
}, | |
d = function(a) { | |
var c = b(a); | |
c.stop(); | |
l.trigger("addTrackerField", "im", a, c.getTime()) | |
}; | |
return { | |
start: function() { | |
l.on({ | |
markTime: c, | |
measureTime: d | |
}) | |
}, | |
isApplicable: function(a) { | |
return a.on("pIntervals") | |
} | |
} | |
}, | |
xc = function() { | |
return new W(g.PERF_TIMELINE_TRACKER_CONFIG.WRAPPERS.JS.TYPE, function(a, b) { | |
return a.timestamp - b.timestamp | |
}, g.PERF_TIMELINE_TRACKER_CONFIG.WRAPPERS.JS.COUNT) | |
}, | |
ab = function(a) { | |
var b = {}, | |
c = a instanceof Array && a.length; | |
c && (f(a).each(function(a, c) { | |
b[c.getType()] = c | |
}), l.on("perfCheckpoint", function(a) { | |
var c = b[a.type]; | |
if (c) try { | |
c.addPoint(a), c.isFinished() && (l.trigger("addOutputItem", { | |
output: c.toString() | |
}, "pci", { | |
minDt: !0, | |
type: g.DT_CODES.PERFORMANCE | |
}), l.trigger("sendMinDt", g.DT_CODES.PERFORMANCE)) | |
} catch (f) {} | |
})); | |
l.provide("perfActive", function() { | |
return c | |
}); | |
return { | |
isActive: c | |
} | |
}, | |
W = function(a, b, c) { | |
var d = 0, | |
e = [], | |
h = function() { | |
var a, c = {}; | |
e.sort(b); | |
f(e).each(function(b, e) { | |
a && (c[e.code] = e.timestamp - | |
a); | |
b === d && (a = e.timestamp) | |
}); | |
return c | |
}; | |
return { | |
addPoint: function(a) { | |
e.push(a) | |
}, | |
toString: function() { | |
return f(h()).toION() | |
}, | |
getType: function() { | |
return a | |
}, | |
setBaseOrdinal: function(a) { | |
d = a | |
}, | |
isFinished: function() { | |
return e.length === c | |
} | |
} | |
}, | |
bb = function() { | |
function a() {} | |
a.build = function() { | |
var a = [], | |
c = l.request("vc"), | |
d = { | |
jv3: ta, | |
av3: ta, | |
jvw: xc, | |
avw: wc | |
}; | |
c && d[c] && a.push(d[c]()); | |
return a | |
}; | |
return a | |
}(), | |
ta = function() { | |
return new W(g.PERF_TIMELINE_TRACKER_CONFIG.VANS.TYPE, function(a, b) { | |
return a.code - b.code | |
}, g.PERF_TIMELINE_TRACKER_CONFIG.VANS.COUNT) | |
}, | |
K = { | |
IDS: { | |
BLOCK_TIME: "pBlk", | |
ON_LOAD: "pLoad", | |
IN_BROWSER_DELAY: "pWait" | |
}, | |
recordBlockingTime: function() { | |
l.trigger("measureTime", K.IDS.BLOCK_TIME) | |
}, | |
setupOnLoadTracking: function() { | |
y.addEvent(u, "load", function() { | |
l.trigger("measureTime", K.IDS.ON_LOAD) | |
}) | |
}, | |
setupBrowserDelayTracking: function() { | |
var a = new fa; | |
a.onTick({ | |
4: function() { | |
l.trigger("markTime", K.IDS.IN_BROWSER_DELAY) | |
}, | |
5: function() { | |
l.trigger("measureTime", K.IDS.IN_BROWSER_DELAY) | |
} | |
}); | |
a.start() | |
} | |
}, | |
gb = function() { | |
var a = p.asid, | |
b = p.cookieBaseURL, | |
c = p.protocol, | |
d = function(a) { | |
f(a).each(function(a, | |
b) { | |
l.trigger("notify", b) | |
}) | |
}, | |
e = function() { | |
var e; | |
e = new I(c + "://" + b, !0); | |
e.setParam("asid", a); | |
e = e.toString(); | |
l.trigger("jsonp", e, d, !0); | |
l.trigger("updateDtCount") | |
}; | |
return { | |
start: function() { | |
l.on("sendCookie", e) | |
}, | |
isApplicable: function(a) { | |
return a.on("cookie") && a.bootstrapOn("sendCookie") && a.bootstrapperHas(["protocol", "cookieBaseURL", "asid"]) | |
} | |
} | |
}, | |
sb = function() { | |
var a = function() { | |
var a; | |
a = !1; | |
var b = n.getTop(); | |
if (b = b && v.querySelector(b.document, 'a[href^="http"]')) a = y.getStyle(b, "background", ":before"), a = -1 < a.indexOf("rgb(0, 255, 0)"); | |
return a | |
}, | |
b = function() { | |
try { | |
l.trigger("addOutputItem", { | |
output: f.stringifyTriState(a()) | |
}, "avgrn") | |
} catch (b) { | |
l.trigger("error", g.ERROR_CODES.GREEN) | |
} | |
}; | |
return { | |
isApplicable: function(a, b) { | |
var e = a.on("avgrn"), | |
f = !a.bootstrapOn("mobOrTab"), | |
k = b.browserIs(g.BROWSERS.CHROME); | |
return e && f && k && s.friendly | |
}, | |
start: function() { | |
try { | |
y.whenReady(b) | |
} catch (a) { | |
l.trigger("error", g.ERROR_CODES.GREEN) | |
} | |
} | |
} | |
}, | |
tb = function() { | |
var a = function(a) { | |
a = f(a).map(function(a, b) { | |
return b.x + "." + b.y | |
}); | |
a = f(a).toION(); | |
l.trigger("addOutputItem", { | |
output: a | |
}, | |
"avmm", { | |
minDt: !0, | |
type: g.DT_CODES.AVIREEN | |
}); | |
l.trigger("sendMinDt", g.DT_CODES.AVIREEN) | |
}, | |
b = function(b) { | |
var d; | |
try { | |
20 <= b.length && (d = b.slice(0, 20), a(d)) | |
} catch (e) { | |
l.trigger("error", g.ERROR_CODES.AVIREEN) | |
} | |
}; | |
return { | |
isApplicable: function(a, b) { | |
var e = a.on("avmm"), | |
f = !a.bootstrapOn("mobOrTab"), | |
k = g.BROWSERS, | |
k = b.browserIs(k.IE) || b.browserIs(k.MSEDGE); | |
return e && f && k && s.friendly | |
}, | |
start: function() { | |
try { | |
yc(400, b) | |
} catch (a) { | |
l.trigger("error", g.ERROR_CODES.AVIREEN) | |
} | |
} | |
} | |
}, | |
ob = function() { | |
var a, b = function(b, d) { | |
return function() { | |
if (a || | |
f.isFunction(b.getVersion)) { | |
var e = d.getFlashVersion(); | |
if (!a) { | |
var h = a = b.getVersion(), | |
g; | |
h && f.isFunction(h.split) && (g = (g = h.split(" ")[1]) && g.split(",").join(".")); | |
a = g || e | |
} | |
return e + "|" + a | |
} | |
return "na" | |
} | |
}; | |
return { | |
isApplicable: function(a, b) { | |
var e = !a.bootstrapOn("mobOrTab"); | |
return a.on("fxdet") && e && b.hasFlashEnabled() && !a.bootstrapOn("killFlash") && !y.isSandboxed(b) | |
}, | |
start: function(a) { | |
var d; | |
d = n.getDoc(); | |
var e = d.body || d.head || d.documentElement; | |
e ? (d = T("/PixelB.swf", "cdn"), e.appendChild(d), l.trigger("addOutputItem", { | |
output: b(d, a) | |
}, "fx")) : l.trigger("error", g.ERROR_CODES.NO_CONTAINER) | |
} | |
} | |
}, | |
Bc = function(a, b) { | |
var c, d, e, f; | |
return { | |
start: function() { | |
if (!d) { | |
var g = new I(p.sp_cdnDomain); | |
g.path(a + ".js"); | |
e = g; | |
d = zc(); | |
f = d.getMethodName(a); | |
var g = Ac, | |
l = n.getDoc(); | |
c = new g(l.body || l.head || l.documentElement) | |
} | |
c.getWindow()[f] = d.getMethod(b); | |
c.addScript(e.toString()) | |
} | |
} | |
}, | |
zc = function() { | |
var a = function(a, c, d) { | |
a === p.asid && (d.unshift(c), l.trigger.apply(null, d)) | |
}; | |
return { | |
getMethod: function(b) { | |
return function(c) { | |
var d = { | |
asid: p.asid, | |
constant: g, | |
features: b | |
}; | |
"function" === typeof c && c(a, d) | |
} | |
}, | |
getMethodName: function(a) { | |
return "register_" + a | |
} | |
} | |
}, | |
wb = function() { | |
var a, b = []; | |
return { | |
start: function(c, d) { | |
f(c).each(function(c, f) { | |
d.on(f) && (a = Bc(c, d), b.push(a), a.start()) | |
}) | |
} | |
} | |
}, | |
qb = function() { | |
var a, b = 0, | |
c = 0, | |
d = 0, | |
e = f.debounce(function() { | |
var b = n.now(), | |
e = a ? (b - a) / 1E3 : 0; | |
1 <= e && 5 >= e && d++; | |
a = b; | |
c++ | |
}, 100), | |
h = function() { | |
b++; | |
e() | |
}, | |
k = function() { | |
l.trigger("addOutputItem", { | |
output: { | |
tmm: function() { | |
return b | |
}, | |
tma: function() { | |
return c | |
}, | |
sma: function() { | |
return d | |
} | |
} | |
}, { | |
type: g.DT_CODES.UNLOAD | |
}) | |
}; | |
return { | |
start: function() { | |
k(); | |
y.addEvent(n.getTop().document, "mousemove", h) | |
}, | |
isApplicable: function(a) { | |
return a.on("mmsb") && !a.bootstrapOn("mobOrTab") && !s.xDomainIframe | |
} | |
} | |
}, | |
pb = function() { | |
var a = {}, | |
b = function(b, e) { | |
var f; | |
b[e] = function(b, d, e) { | |
e && (a[e] = { | |
x: b, | |
y: d | |
}, a.ul && a.lsr && (f = ua().getOffDesktopResult(a.ul, a.lsr), c(f))) | |
} | |
}, | |
c = function(a) { | |
try { | |
l.trigger("addOutputItem", { | |
output: a | |
}, "od") | |
} catch (b) { | |
l.trigger("error", g.ERROR_CODES.OFF_DESKTOP) | |
} | |
}; | |
return { | |
isApplicable: function(a, b) { | |
var c = a.on("oddet"), | |
f = b.hasFlashEnabled(), | |
l = b.getBrowserType() === | |
g.BROWSERS.IE, | |
n = b.isOnWin7(), | |
p = b.isIEVersion(8); | |
return !a.bootstrapOn("killFlash") && c && f && l && n && !p && !y.isSandboxed(b) | |
}, | |
start: function() { | |
try { | |
Cc().setupPixels(b), setTimeout(function() { | |
a.ul && a.lsr || c(ua().getOffDesktopResult()) | |
}, 1E4) | |
} catch (d) { | |
l.trigger("error", g.ERROR_CODES.OFF_DESKTOP) | |
} | |
} | |
} | |
}, | |
ua = function() { | |
var a = function(a) { | |
var c = g.NA; | |
return a ? { | |
x: a.x - 250, | |
y: a.y - 188 | |
} : { | |
x: c, | |
y: c | |
} | |
}; | |
return { | |
getOffDesktopResult: function(b, c) { | |
b = a(b); | |
c = a(c); | |
return f({ | |
mc: [b.x, b.y, c.x, c.y].join("|") | |
}).toION() | |
} | |
} | |
}, | |
Cc = function() { | |
var a = | |
"_postPosition_" + p.asid.replace(/-/g, ""), | |
b = function(b) { | |
var d = T("/PixelB.swf", "cdn", "name=" + b + "&jsPostFn=" + a, !0); | |
b = Dc[b]; | |
d.style.width = b.WIDTH + "px"; | |
d.style.height = b.HEIGHT + "px"; | |
d.style.position = "fixed"; | |
d.style.top = b.TOP + "px"; | |
d.style.left = b.LEFT + "px"; | |
return d | |
}; | |
return { | |
setupPixels: function(c) { | |
var d = n.getDoc(), | |
d = d.body || d.contentElement, | |
e; | |
e = n.getDoc().createElement("div"); | |
e.innerHTML = '<iframe class="IAS-pixel-frame"style="width:0px !important; height: 0px !important; border-style: hidden !important"></iframe>'; | |
e = e.firstChild; | |
d.appendChild(e); | |
d = e.contentWindow; | |
d.document.open().close(); | |
e = d.document.body; | |
var f = b("ul"), | |
g = b("lsr"); | |
e.appendChild(f); | |
e.appendChild(g); | |
c(d, a) | |
} | |
} | |
}, | |
yc = function(a, b) { | |
var c = [], | |
d = !0, | |
e = function(f) { | |
var g = n.getTop(); | |
f = f || g.event; | |
c.push({ | |
x: n.round(f.clientX), | |
y: n.round(f.clientY) | |
}); | |
d && g.setTimeout(function() { | |
y.removeEvent(g.document, "mousemove", e); | |
b(c) | |
}, a); | |
d = !1 | |
}; | |
(function() { | |
var a = n.getTop(); | |
y.addEvent(a.document, "mousemove", e) | |
})() | |
}, | |
rb = function() { | |
return { | |
start: function() { | |
var a = n.getTop().status; | |
n.getTop().status = n.getTop().status + " "; | |
n.getTop().status === a + " " && (n.getTop().status = a, l.trigger("addOutputItem", { | |
output: 1 | |
}, "sb")) | |
}, | |
isApplicable: function(a, b) { | |
return a.on("mmsb") && !a.bootstrapOn("mobOrTab") && !s.xDomainIframe && b.browserIs(g.BROWSERS.IE) | |
} | |
} | |
}, | |
vb = function() { | |
var a = v.appendElement("iframe", { | |
name: "hpif", | |
style: "display:none" | |
}), | |
b = function(b, c) { | |
a.contentWindow[b] = function() { | |
return { | |
play: function() { | |
l.trigger("addOutputItem", { | |
output: c | |
}, "vh", { | |
minDt: !0, | |
type: g.DT_CODES.VH | |
}); | |
l.trigger("sendMinDt", | |
g.DT_CODES.VH) | |
} | |
} | |
} | |
}, | |
c = function() { | |
f([{ | |
pieces: ["jwp", "la", "yer"], | |
abbr: "j" | |
}, { | |
pieces: ["flo", "wpl", "ayer"], | |
abbr: "f" | |
}]).each(function(a, c) { | |
var f = c.pieces.join(""); | |
b(f, c.abbr) | |
}) | |
}; | |
return { | |
isApplicable: function(a) { | |
var b = !a.bootstrapOn("mobOrTab"); | |
return a.on("usevh") && b | |
}, | |
start: function() { | |
var b = 5E3, | |
e = function() { | |
a.contentWindow ? c() : (b -= 100, 0 <= b && u.setTimeout(e, 100)) | |
}; | |
e() | |
} | |
} | |
}, | |
Ac = function(a) { | |
var b; | |
(function() { | |
var c; | |
b = v.appendElement("iframe", { | |
style: "width:0px !important; height: 0px !important; border: 0 !important" | |
}, | |
a); | |
c = b.contentWindow.document; | |
c.open(); | |
c.close() | |
})(); | |
return { | |
addScript: function(a) { | |
var d = b.contentWindow.document; | |
v.appendElement("script", { | |
src: a, | |
defer: "", | |
async: "" | |
}, d.body || d.head || d.documentElement) | |
}, | |
getWindow: function() { | |
return b.contentWindow | |
} | |
} | |
}, | |
Dc = { | |
ul: { | |
WIDTH: 3, | |
HEIGHT: 3, | |
TOP: -3600, | |
LEFT: -3600 | |
}, | |
lsr: { | |
WIDTH: 3, | |
HEIGHT: 3, | |
TOP: 32767, | |
LEFT: 32767 | |
} | |
}; | |
try { | |
Db() | |
} catch (Ec) { | |
__IntegralASDiagnosticCall("main", Ec, p) | |
} | |
}; | |
try { | |
(function() { | |
var p = __IntegralASConfig.useFIF ? window.parent : window; | |
__IntegralASConfig.initialize(__IntegralASConfig, p, p.document) | |
})() | |
} catch (err$$14) { | |
__IntegralASDiagnosticCall("initialize", err$$14, __IntegralASConfig) | |
}; | |
--> | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment