Skip to content

Instantly share code, notes, and snippets.

@colinhicks
Created December 4, 2013 21:56
Show Gist options
  • Save colinhicks/7796315 to your computer and use it in GitHub Desktop.
Save colinhicks/7796315 to your computer and use it in GitHub Desktop.

Revisions

  1. colinhicks created this gist Dec 4, 2013.
    1,641 changes: 1,641 additions & 0 deletions obr.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,1641 @@
    window.OB_releaseVer = "131699";
    OBR = window.OBR || {};
    OBR.i = OBR.i || [];
    OBR.na = OBR.na || {};
    window.OBR$ = function(d) {
    return document.getElementById(d)
    };
    OBR.c = OBR.c || function() {
    var d = {}, a = {
    F: function() {
    return d
    },
    j: function(a) {
    d.S = a;
    d.la = [];
    d.startTime = (new Date).getTime()
    },
    startTime: function() {
    return d.startTime
    },
    log: function(a) {
    var e = ((new Date).getTime() - d.startTime) / 1E3;
    1E3 > d.la.length && d.la.push(e + " >" + a)
    console.log(a);
    },
    printLog: function() {
    if (d.S.b.cf) window.console.log(d.la.join("\n"));
    else {
    var a = d.S.a.Aa();
    a && (a.innerHTML = d.la.join("<br>"), a.style.display = "block")
    }
    return d.la.join("\n")
    }
    };
    a.j(OBR);
    return a
    }();
    OBR.printLog = OBR.c.printLog;
    OBR.o = function() {
    this.C = []
    };
    OBR.o.prototype.add = function(d, a) {
    var c;
    "string" === typeof d && "function" === typeof a && (c = {}, c.name = d, c.ue = a, this.C.push(c))
    };
    OBR.o.prototype.Bb = function(d) {
    var a, c;
    OBR.c.log("remove event :" + d);
    a = 0;
    for (c = this.C.length; a < c; a += 1)
    if (this.C[a] && this.C[a].name && this.C[a].name === d) try {
    this.C.splice(a, 1)
    } catch (e) {
    OBR.c.log("rm evnt err: " + e)
    }
    };
    OBR.o.prototype.k = function(d, a, c) {
    var e, b, g, f;
    a = a || [];
    c = !! c;
    OBR.c.log("event fire:" + d);
    e = 0;
    for (b = this.C.length; e < b; e += 1)
    if (g = this.C[e].name || "", f = this.C[e].ue, g === d) try {
    f.apply(this, a)
    } catch (k) {
    OBR.c.log("fire evnt *" + d + "* error: " + k)
    }!0 === c && this.Bb(d)
    };
    OBR.o.prototype.N = function() {
    this.C = []
    };
    OBR.a = OBR.a || function() {
    var d = {}, a = {}, c = document,
    e = OBR;
    a.F = function() {
    d.S = e;
    return d
    };
    a.j = function(b) {
    e = b
    };
    a.$ = function() {
    return function() {}
    };
    a.Se = function() {
    var b = window.jQuery;
    return void 0 !== b ? !(/1\.(0|1|2|3|4)\.(0|1)/.test(b.fn.jquery) || /^1\.1/.test(b.fn.jquery) || /^1\.2/.test(b.fn.jquery) || /^1\.3/.test(b.fn.jquery)) : !1
    };
    a.U = function(b) {
    return null === b || isNaN(b) ? null : e.n("outbrain_widget_" + b)
    };
    a.Aa = function() {
    return e.n("ob_holder")
    };
    a.nb = function() {
    if (!e.n(e.b.Ia)) {
    var b = e.a.createElement("iframe",
    e.b.Ia),
    g = b.style;
    g.display = "none";
    g.width = "1px";
    g.height = "1px";
    b.src = "about:blank";
    (g = a.Aa()) || (g = a.ic());
    e.a.mb(b, g)
    }
    };
    a.ic = function() {
    if (c.body) return c.body;
    var b;
    b = e.a.za("", "", "body", !0);
    return 0 >= b.length ? c.lastChild : b[0]
    };
    a.createElement = function(b, a, f) {
    b = c.createElement(b);
    "string" === typeof a && b.setAttribute("id", a);
    "string" === typeof f && (b.style.cssText = f);
    return b
    };
    a.lb = function(b) {
    if (e.b.Nd === e.b.Nb) try {
    document.createStyleSheet().cssText = b
    } catch (a) {} else {
    var f = c.createElement("style"),
    d = c.body ? "string" === typeof c.body.style.WebkitAppearance : !1;
    f.type = "text/css";
    c.getElementsByTagName("head")[0].appendChild(f);
    f[d ? "innerText" : "innerHTML"] = b
    }
    };
    a.B = function(b, a) {
    var f = c.createElement("script");
    f.type = e.b.uf;
    f.src = b;
    f.async = !! a;
    f.defer = !1;
    return f
    };
    a.Zg = function(b, a) {
    var f = e.a.createElement("link", b);
    f.setAttribute("rel", "stylesheet");
    f.setAttribute("type", e.b.ee);
    a && f.setAttribute("href", a);
    return f
    };
    a.Wd = function(b) {
    var a = e.n("ob_iframe");
    a && (a.src = b)
    };
    a.Qc = function() {
    var b;
    b = isNaN(b) ?
    1E5 : b;
    return Math.floor(Math.random() * b)
    };
    a.eg = function(b, a, f) {
    return b.replace(a, f)
    };
    a.Ie = function(b, a) {
    var f = [];
    f.push('<body onload="');
    f.push("var js = document.createElement('script');");
    f.push("js.src = '" + b + "';");
    "number" === typeof a && f.push("js.onerror = function(){ top.OBR.extern.errorInjectionHandler(" + a + ") };");
    f.push("var d = document;d.getElementsByTagName('head')[0].appendChild(js);\">");
    f.push("<script type='text/javascript'>");
    f.push("window.OBR={extern:{}};");
    f.push("OBR.extern.returnedHtmlData=function(json,idx){(top.OBR.extern.returnedHtmlData)&& top.OBR.extern.returnedHtmlData(json,idx); };");
    f.push("OBR.extern.returnedIrdData=function(json,idx){(top.OBR.extern.returnedIrdData)&& top.OBR.extern.returnedIrdData (json,idx);};");
    f.push("OBR.extern.returnedJsonData=function(json,idx){(top.OBR.extern.returnedJsonData)&& top.OBR.extern.returnedJsonData(json,idx);};");
    f.push("OBR.extern.returnedError=function(json){(top.OBR.extern.returnedError)&& top.OBR.extern.returnedError(json);};");
    f.push("window.outbrain={};");
    f.push("outbrain.returnedIrdJsonData=function(json,idx){(top.outbrain.returnedIrdJsonData) && top.outbrain.returnedIrdJsonData(json,idx); };");
    f.push("outbrain.returnedJsonData =function(json,idx){(top.outbrain.returnedJsonData) && top.outbrain.returnedJsonData(json,idx); };");
    f.push("outbrain.returnedError=function(json){(top.outbrain.returnedError) && top.outbrain.returnedError(json);};");
    f.push("\x3c/script>");
    f.push("</body>");
    return f.join("")
    };
    a.He = function() {
    var b;
    if (b = OBR.n("objsonpp"))
    if (a.hf()) a.V(b.parentNode) && b.parentNode.removeChild(b);
    else return OBR.n("objsonpp");
    b = document.createElement("iframe");
    b.id = "objsonpp";
    b.lg && (b.lg =
    "seamless");
    (b.frameElement || b).style.cssText = "width: 0; height: 0; border: 0";
    b.src = "javascript:false";
    document.body.appendChild(b);
    return b
    };
    a.Ze = function(b) {
    var g = a.He(),
    g = g.contentWindow || g.contentDocument;
    g.document && (g = g.document);
    g.open().write(b);
    g.close()
    };
    a.H = function(b) {
    var a = e.b.ie,
    f, c;
    c = a.getElementsByTagName("head");
    try {
    c && 0 < c.length ? c[0].insertBefore(b, c[0].firstChild) : (f = a.getElementsByTagName("script"), f[0].insertBefore(b, f[0].firstChild))
    } catch (d) {
    e.c.log("Err insertToHead:" + d)
    }
    };
    a.bf = function(b, g) {
    var f = a.Ie(g, b);
    a.qb(f) || a.Ze(f)
    };
    a.bh = function(b) {
    b = b || OBR;
    return "function" !== typeof b.o ? (OBR.c.log("namespace.EventManager not function"), null) : new b.o
    };
    a.L = function(b) {
    return encodeURIComponent(b)
    };
    a.V = function(b) {
    return null !== b
    };
    a.qf = function() {
    var b, g, f, c, d;
    b = document.getElementsByTagName("div");
    g = b.length;
    d = e.b.ad;
    for (f = 0; f < g; f += 1)
    if (c = b[f].getAttribute(d), a.qb(c)) return !0;
    return !1
    };
    a.pf = function(b) {
    var g;
    if (a.pb(b)) return !1;
    g = b.hb().recMode || "";
    b = b.hb().dynamicWidgetLayout ||
    "";
    return "1" !== (e.b.jg[g] || "") && "1" !== (e.b.kg[b] || "") || !a.qf() ? !1 : !0
    };
    a.pb = function(b) {
    return "undefined" === typeof b || null === b
    };
    a.qb = function(b) {
    return a.pb(b) || "" === b
    };
    a.za = function(b, g, f, e) {
    var d, l, m, p, n;
    l = [];
    e = !! e;
    d = a.qb(d) ? !0 : !1;
    f = c.getElementsByTagName(f || "*");
    m = 0;
    for (p = f.length; m < p; m += 1) n = "class" === b ? f[m].className : f[m].getAttribute(b), null !== n && (!1 === d && (n = n.toLowerCase(), g = g.toLowerCase()), (n = "" === b ? !0 : e ? -1 < n.indexOf(g) : n === g) && l.push(f[m]));
    return l
    };
    a.dg = function(b) {
    var a = window;
    a.detachEvent ?
    a.detachEvent("onscroll", b) : a.removeEventListener && a.removeEventListener("scroll", b, !1)
    };
    a.u = function(b, a, f) {
    b.attachEvent ? b.attachEvent("on" + a, function() {
    f.call(b)
    }) : b.addEventListener && b.addEventListener(a, f, !1)
    };
    a.mb = function(b, a) {
    try {
    a.appendChild(b)
    } catch (f) {
    e.c.log("fail insert into Dom:" + f)
    }
    };
    a.Pa = function(b) {
    b = e.n(b);
    !a.pb(b) && a.V(b.parentNode) && b.parentNode.removeChild(b)
    };
    a.insertBefore = function(b, a) {
    return a.parentNode.insertBefore(b, a)
    };
    a.isArray = function(b) {
    return b instanceof Array ? !0 : "[object Array]" === Object.prototype.toString.call(b)
    };
    a.Sa = function(b, a) {
    var f = /htt(p|ps)?:\/\/127\.0\.0\.1(:\d\d\d\d)?$/i;
    return /htt(p|ps)?:\/\/([\w\-]*|[\w\-]*\.[\w\-]*)\.outbrain\.com(:\d\d\d\d)?$/i.test(b) || f.test(b) ? b : a
    };
    a.Mg = function(b) {
    b = b.replace(/^(\s*)/g, "");
    var a = c.createElement("div");
    a.innerHTML = b;
    return a.childNodes
    };
    a.D = function(b, a) {
    return b ? b.getAttribute(a) : null
    };
    a.A = function(b, a, f) {
    b && b.setAttribute(a, f)
    };
    a.Fd = function(b) {
    b && (b.className += " ob_clicked")
    };
    a.O = function(b, a) {
    b =
    b.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var f, c;
    try {
    return f = RegExp("[\\?&]" + b + "=([^&#]*)", "i"), c = f.exec(window.location.href), null === c ? a : c[1]
    } catch (e) {
    return a
    }
    };
    a.$d = function(b) {
    "string" === typeof b && 0 < b.indexOf("#") && (b = b.substr(0, b.lastIndexOf("#")));
    return b
    };
    a.Wb = function(b) {
    var a = e.b.Z + "/strip_default.png";
    b.src !== a && (b.alt = "", b.title = "", b.src = a)
    };
    a.me = function() {
    var b = null,
    a, f, e = null;
    if ("string" === typeof window.OB_MP_feed) b = window.OB_MP_feed;
    else if ((a = c.getElementsByTagName("head")) &&
    0 < a.length)
    for (f = a[0].getElementsByTagName("link"), a = 0; a < f.length; a += 1)
    if (e = f[a], null !== e.type && ("application/rss+xml" === e.type || "application/atom+xml" === e.type) && null !== e.href && "" !== e.href) {
    b = e.href;
    break
    }
    return b
    };
    a.pc = function(b) {
    var a = null;
    b.currentStyle ? a = b.currentStyle.color : window.getComputedStyle && (a = document.defaultView.getComputedStyle(b, null).getPropertyValue("color"));
    return a
    };
    a.pg = function() {
    var b = a.Aa(),
    c, f;
    a.V(b) && (c = e.a.createElement("span", "ob_a"), a.insertBefore(c, b), c.innerHTML =
    ".", f = a.pc(c), a.Pa("ob_a"), c = e.a.createElement("a", "ob_a"), c.setAttribute("href", "void(0)"), c.innerHTML = ".", a.insertBefore(c, b), b = a.pc(c), a.Pa("ob_a"), f = "rgb(0, 0, 0)" === f || "#000000" === f ? "#555" : f, a.lb(".ob-tcolor{color:" + f + "} .ob-lcolor{color:" + b + "} .ob-bgtcolor{background-color:" + f + "} .item-link-container:hover .ob-tcolor{border-color:" + f + "}"))
    };
    a.Ee = function() {
    var b = a.nc("property", "og:url", "meta", "content");
    null === b && (b = a.nc("rel", "canonical", "link", "href"));
    null === b && (b = window.location.href);
    return b
    };
    a.nc = function(b, c, f, e) {
    var d = null;
    b = a.za(b, c, f, !1);
    null !== b && 0 < b.length && (d = b[0].getAttribute(e));
    return d
    };
    a.Xd = function(b) {
    var c, f, d;
    f = e.i[b].l("tracking", !1);
    c = e.b.Ka;
    b = e.i[b].l("comScoreEnabled", !0);
    d = e.b.Xb;
    !1 === f && (!1 === c && !0 === b && !1 === d) && (a.nb(), c = e.n(e.b.Ia)) && (c.src = e.b.Z + "/" + e.b.Oa + "3rd/comScore/comScore.htm", e.b.Xb = !0)
    };
    a.Qe = function() {
    var b = a.gb(8),
    c = "";
    "string" === typeof window.name && ("" === window.name || -1 < window.name.indexOf("frame")) ? (window.name = b, c = window.name) : c = "string" ===
    typeof window.name && "" !== window.name ? window.name : b;
    return c
    };
    a.gb = function(b) {
    var a, f;
    a = [];
    b = "number" === typeof b ? b : 8;
    for (f = 0; f < b; f += 1) a.push("0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".charAt(Math.floor(61 * Math.random())));
    return a.join("")
    };
    a.Ca = function(b) {
    for (var a in e.na)
    if (e.na[a].h === b) return e.na[a];
    return null
    };
    a.rc = function(b) {
    var a, f;
    f = e.i;
    for (a = 0; a < f.length; a += 1)
    if (f[a].ja() === b) return f[a];
    return null
    };
    a.mf = function(b) {
    for (var a in b)
    if (b.hasOwnProperty(a)) return !1;
    return !0
    };
    a.aa = function(b, a) {
    return "function" !== typeof b ? null : "undefined" === typeof a ? b() : b(a)
    };
    a.hf = function() {
    return "Microsoft Internet Explorer" == navigator.appName
    };
    a.fe = function(b, a) {
    return b * a
    };
    a.lc = function(b) {
    if (!b || "" === b) return [];
    b = b.replace("", "").replace("http://", "").replace("https://", "").replace("www.", "").replace("www2.", "").split("/");
    b.pop();
    return 0 < b.length ? b : []
    };
    a.Be = function(b, c) {
    var f = a.lc(b),
    e = [],
    d = "";
    if (c >= f.length) d = f.join(".");
    else {
    e[0] = f[0];
    for (d = 1; d <= c; d += 1) e[d] = f[d];
    d =
    e.join(".")
    }
    return d
    };
    a.Me = function() {
    return "http" + ("https:" === c.location.protocol ? "s" : "")
    };
    a.Ke = function() {
    var b, e;
    b = c.getElementById("widgetVersionSync");
    null === b && (b = a.createElement("iframe", "widgetVersionSync"), e = a.createElement("div", null, "display:none; height:0px; width:0px; border:none;"), e.appendChild(b), a.ic().appendChild(e));
    return b
    };
    a.Rg = function(b) {
    var c;
    c = window.OB_releaseVer;
    isNaN(c) || (isNaN(b) || c >= b) || (b = a.Me() + "://widgets.outbrain.com/external/sync/outbrainjs.html?needToBeVer=" + b.toString(),
    c = a.Ke(), c.src = b)
    };
    a.Kd = function(b) {
    b = b.l("widgetVersionSync", 1);
    isNaN(b) || "" === b || (b = parseInt(b, 10) || 1, a.Rg(b))
    };
    a.Le = function(b, c) {
    var f = b.parentNode;
    return f ? f.tagName.toLowerCase() == c ? f : a.Le(f, c) : !1
    };
    a.j(OBR);
    return a
    }();
    OBR.M = function(d, a, c, e, b, g, f, k, h) {
    var l, m;
    l = this;
    m = 0;
    h = "function" === typeof h ? h : OBR.a.fe;
    l.start = function() {
    var p;
    m += 1;
    OBR.a.aa(d, m) ? OBR.a.aa(a, m) : (p = OBR.a.aa(k, m)) ? OBR.a.aa(e, m) : (p = m === g && 1E3 !== g) ? OBR.a.aa(e, m) : (OBR.a.aa(c, m), p = f ? h(m, b) : b, setTimeout(function() {
    l.start()
    }, p))
    };
    l.start()
    };
    OBR.ac = OBR.ac || {
    ef: function() {
    return "complete" === document.readyState
    }
    };
    OBR.oe = function() {
    var d = {}, a = [];
    d.add = function(c) {
    a.push(c)
    };
    d.top = function() {
    return 0 < a.length ? a.shift() : null
    };
    d.Zd = function() {
    a = []
    };
    return d
    };
    OBR.b = OBR.b || function() {
    var d = {}, a = {}, c = OBR,
    e;
    a.yd = "opera";
    a.Nb = "msie";
    a.sd = "firefox";
    a.rd = "chrome";
    a.Bd = "safari";
    a.vd = "mozilla";
    a.Yg = "boolean";
    a.rh = "string";
    a.ih = "object";
    a.sh = "undefined";
    a.Ia = "ob_iframe";
    a.vc = !0;
    a.Oc = 0;
    a.Ib = "outbrain_widget_";
    a.uf = "text/javascript";
    a.ee = "text/css";
    a.ie = document;
    a.zc = "undefined" !== typeof document.createElement("script").async;
    a.pd = c.a.Qe();
    a.bg = document.referrer;
    a.ag = c.a.L(document.referrer);
    a.wf = document.location.href;
    a.gh = c.a.L(a.wf);
    a.wa = !1;
    a.Jd = navigator.userAgent.toLowerCase();
    a.mh = navigator.platform.toLowerCase();
    e = a.Jd;
    a.Nd = /opera/.test(e) ? a.yd : /msie/.test(e) ? a.Nb : /firefox/.test(e) ? a.sd : /chrome/.test(e) ? a.rd : /safari/.test(e) ? a.Bd : a.vd;
    a.Ka = !! /(iphone|ipod|symbian|android|windows ce|blackberry|palm|ipad)/.test(e);
    a.kf = 0;
    a.jf = function() {
    return void 0 === window.XMLHttpRequest && void 0 !== ActiveXObject
    };
    a.Wf = window.OB_platformType || null;
    a.Ma = "number" === typeof a.Wf;
    a.bd = null;
    a.cc = null;
    a.Lg = function() {
    a.Ma && (a.bd && a.cc) && (a.bd(), a.cc())
    };
    a.sa = "string" === typeof window.OB_releaseVer ?
    window.OB_releaseVer : "0";
    a.Df = !0 === window.OB_disable_odbl;
    e = ("https:" === document.location.protocol ? "https" : "http") + "://";
    a.Td = "/blogutils/ExcludeRec.action?bocr=";
    a.jh = "html";
    a.Ue = c.a.Sa(c.a.O("wiodb", e + "hpr.outbrain.com"), e + "hpr.outbrain.com");
    a.xb = c.a.Sa(c.a.O("wiodb", e + "odb.outbrain.com"), e + "odb.outbrain.com");
    a.Ud = "http://storage.outbrain.com/";
    a.Z = c.a.Sa(c.a.O("wihost", e + "widgets.outbrain.com"), e + "widgets.outbrain.com");
    a.Rf = c.a.Sa(c.a.O("wiout", e + "outbrain.com"), e + "outbrain.com");
    a.Nc = e + "log.outbrain.com/";
    a.Oa = "nanoWidget/";
    a.Sf = a.Ma ? "NANOWDGTLT13" : "NANOWDGT01";
    a.Af = a.Z + "/" + a.Oa + a.sa + (a.Ma ? "/moduleLT" : "/module");
    a.zf = a.Z + "/" + a.Oa + "3rd";
    a.cf = "object" === typeof window.console;
    a.hd = c.a.$d(c.a.me());
    a.gd = null === a.hd ? "" : c.a.L(a.hd);
    a.Xb = !1;
    a.Ef = "true" === c.a.O("obdraft", !1) ? "&obDraft=true" : "";
    a.Ed = !1 !== c.a.O("obAbtest", !1) ? "&obAbtest=" + c.a.O("obAbtest", "") : "";
    a.ed = function(b) {
    a.Ja = a.Ja || b;
    return a.Ja
    };
    a.Ja = a.ed("true" === c.a.O("advanceLoader", "false").toLowerCase());
    a.Fc = 0;
    a.ma = null;
    a.ad = "data-obscrollable";
    a.jg = {
    touch_strip: "1"
    };
    a.kg = {
    "touch-strip": "1"
    };
    a.F = function() {
    d.S = c;
    return d
    };
    return a
    }();
    OBR.d = OBR.d || function() {
    var d = {}, a, c = {};
    d.j = function(c, b) {
    a = c;
    d.$f(b)
    };
    d.f = {
    Wa: "POPUPDESCRIPTION",
    ua: "WIDGETSTATISTICS",
    ta: "WHATIS",
    Va: "FLYTHROUGH",
    Za: "VIDEOPLUGIN",
    fa: "POSCUL",
    Xa: "SCROLL",
    Ya: "SCROLLEXTERNAL",
    Ob: "RECINIFRAME"
    };
    d.Ad = function(a, b) {
    var c = {
    $g: a,
    url: b,
    version: -1,
    state: 0,
    $a: null,
    Yb: this,
    Pb: null,
    Yd: function() {
    if (2 === c.state) c.Dc();
    else if (0 === c.state) {
    var b = OBR.a.B(c.url, !0);
    c.state = 1;
    OBR.a.H(b)
    }
    },
    Dc: function() {
    c.state = 2;
    "function" === typeof c.$a && c.$a.call(c.Yb, c.Pb)
    }
    };
    return c
    };
    d.$f = function(c) {
    function b(b) {
    return a.b.Af +
    "/" + b
    }

    function g(b, a) {
    c[b] || (c[b] = new d.Ad(b, a))
    }
    g(d.f.Wa, b("popupDescription.js"));
    g(d.f.ua, b("widgetStatistics.js"));
    g(d.f.ta, b("whatis.js"));
    g(d.f.Va, b("flyThrough.js"));
    g(d.f.Za, b("videoPlugin.js"));
    g(d.f.fa, b("positionCalculation.js"));
    g(d.f.Ob, b("recInIframe.js"));
    g(d.f.Xa, b("scroll.js"));
    g(d.f.Ya, a.b.zf + "/scroll/scrollExternal.js")
    };
    d.Fe = function(a) {
    return c[a]
    };
    d.w = function(a, b, c, f) {
    if (a = d.Fe(a)) a.$a = b || OBR.a.$(), a.Yb = c, a.Pb = f, a.Yd()
    };
    d.oc = function(a) {
    return c[a].state
    };
    d.Q = function(e) {
    "-1" !==
    a.b.sa && c[e].Dc()
    };
    d.j(OBR, c);
    return d
    }();
    OBR.j = OBR.j || void 0;
    OBR.n = function(d) {
    return document.getElementById(d)
    };
    OBR.I = OBR.I || function() {
    var d = {}, a = {}, c, e;
    a.j = function(b) {
    c = b = b || OBR;
    d.oa = new c.o;
    e = !1
    };
    a.F = function() {
    return d
    };
    d.af = function() {
    var b, a;
    b = c.a.createElement("iframe", "ob_ping");
    b.setAttribute("id", "ob_ping");
    b.style.border = "0px";
    b.style.width = "0px";
    b.style.height = "0px";
    b.setAttribute("src", c.b.xb + "/utils/ping.html?r=" + c.a.Qc());
    c.a.u(b, "load", function() {
    c.c.log("ping returned");
    c.b.Oc = 2;
    d.oa.k("success");
    c.I.Wc()
    });
    a = c.a.Aa();
    null !== a && (c.c.log("ping inserted"), c.a.mb(b, a))
    };
    d.Vf = function() {
    c.c.log("ping Wait");
    new c.M(function() {
    return 2 === c.b.Oc
    }, function() {}, c.a.$(), function() {
    d.oa.k("fail");
    c.I.Wc()
    }, 50, 200, !1)
    };
    a.Wc = function() {
    c.a.Pa("ob_ping")
    };
    a.Of = function(b) {
    d.oa.add("success", b)
    };
    a.Nf = function(b) {
    d.oa.add("fail", b)
    };
    a.nf = function() {
    return e
    };
    a.fd = function() {
    e = !0
    };
    a.Uf = function() {
    d.af();
    d.Vf()
    };
    a.t = function() {
    d.oa.N()
    };
    a.j(OBR);
    return a
    }();
    OBR.ba = OBR.ba || function() {
    var d, a = {}, c = {}, e;
    a.j = function(b) {
    d = b = b || OBR;
    e = new d.o
    };
    a.F = function() {
    return c
    };
    c.bb = function(b) {
    var a, c;
    a = 0;
    for (c = b.length; a < c; a += 1) d.a.A(b[a], "data-ob-mark", "true"), e.k("find", [b[a]])
    };
    c.hc = function() {
    return d.a.za("class", "OUTBRAIN", "div", !0)
    };
    c.Ae = function(b) {
    var a, c, e = [],
    h = [];
    a = 0;
    for (c = b.length; a < c; a += 1)
    if ("string" === typeof b[a].containerId)
    if (d.n(b[a].containerId)) {
    var l = d.n(b[a].containerId);
    "string" === typeof b[a].widgetId && d.a.A(l, "data-widget-id", b[a].widgetId);
    "string" === typeof b[a].permalink && d.a.A(l, "data-src", b[a].permalink);
    "boolean" === typeof b[a].advanceLoader && d.a.A(l, "data-advance-loader", b[a].advanceLoader);
    "boolean" === typeof b[a].dynLoad && d.a.A(l, "data-dynLoad", b[a].dynLoad);
    "string" === typeof b[a].widgetType && d.a.A(l, "data-widget-type", b[a].widgetType);
    "string" === typeof b[a].timeout && d.a.A(l, "data-timeout", b[a].timeout);
    "string" === typeof b[a].fbk && d.a.A(l, "data-fbk", b[a].fbk);
    h.push(l)
    } else e.push(b[a]);
    window.OB_elements = e;
    return h
    };
    c.Je = function() {
    var b =
    [];
    "object" === typeof window.OB_elements && 0 < window.OB_elements.length && (b = window.OB_elements);
    return b
    };
    c.Ge = function() {
    var b = [],
    a = c.hc(),
    f, e;
    f = 0;
    for (e = a.length; f < e; f += 1) {
    var h = d.a.D(a[f], "data-ob-mark");
    null !== h && "true" === h || !a[f] || b.push(a[f])
    }
    f = c.Je();
    if (0 < f.length)
    for (d.c.log("Array of elements found!"), a = c.Ae(f), f = 0, e = a.length; f < e; f += 1) b.push(a[f]);
    return b
    };
    a.Xg = function(b) {
    c.ec(b)
    };
    c.ec = function(b) {
    if (void 0 === b) {
    var a = !1;
    d.c.log("searching for containers");
    new d.M(function() {
    return a
    }, d.a.$(),
    function() {
    a = d.ac.ef();
    var b = c.Ge();
    a && d.c.log("checking:(" + a + ")");
    0 < b.length && c.bb(b)
    }, e.k("stopSearch"), 50, 1E3, !1)
    } else 0 < (b.length || 0) && c.bb(b)
    };
    a.eh = function() {
    return 0 < c.hc().length
    };
    a.Hf = function(b) {
    e.add("find", b)
    };
    a.lh = function(b) {
    e.add("stopSearch", b)
    };
    a.dc = function() {
    c.ec()
    };
    a.pe = function(b) {
    var a = [],
    f, e;
    d.q.Xe();
    f = 0;
    for (e = d.i.length; f < e; f += 1) {
    var h = d.a.U(f);
    null !== h && ("string" === typeof b && d.a.A(h, "data-src", b), d.a.A(h, "data-ob-mark", "false"), a.push(h))
    }
    0 < a.length && (d.i = [], c.bb(a))
    };
    a.t =
    function() {
    e.N();
    d.i = []
    };
    a.j(OBR);
    return a
    }();
    OBR.q = OBR.q || function() {
    var d = {}, a = {}, c;
    a.j = function(a) {
    c = a = a || OBR;
    d.zb = new c.oe;
    d.wb = new c.o;
    d.La = !1
    };
    d.we = function(a) {
    var b;
    b = a.Pe();
    var d, f = c.a.eg;
    b = b && "hp" === b ? c.b.Ue + "/utils/get?url=$LNK$SRC&settings=$SET&recs=$REC&widgetJSId=$WID&key=$KEY&idx=$IDX&version=$VER&ref=$REF&apv=$APV&sig=$SIG&format=$FRT&rand=$RND$DRFT$ABTEST" : c.b.xb + "/utils/get?url=$LNK$SRC&settings=$SET&recs=$REC&widgetJSId=$WID&key=$KEY&idx=$IDX&version=$VER&ref=$REF&apv=$APV&sig=$SIG&format=$FRT&rand=$RND$DRFT$ABTEST";
    d = a.ja();
    b = f(b + ("" !== d && null !== d ? "&fbk=" + d : ""), "$LNK", c.a.L(a.ca()));
    b = f(b, "$SRC", 0 < c.b.gd.length ? "&srcUrl=" + c.b.gd : "");
    b = f(b, "$IDX", a.h);
    b = f(b, "$SET", !0);
    b = f(b, "$REC", !0);
    b = f(b, "$KEY", c.b.Sf);
    b = f(b, "$WID", a.v());
    b = f(b, "$VER", c.b.sa);
    b = f(b, "$REF", c.b.ag);
    b = f(b, "$SIG", c.b.pd);
    b = f(b, "$APV", c.b.wa);
    b = f(b, "$FRT", a.Ce());
    b = f(b, "$RND", c.a.Qc());
    b = f(b, "$DRFT", c.b.Ef);
    return b = f(b, "$ABTEST", c.b.Ed)
    };
    d.kb = function(a, b, g) {
    g = c.b.Ja && g;
    var f = b.h;
    b.s.yg();
    g ? c.a.bf(f, a) : (g = c.a.B(a, !0), "" !== b.ja() && c.a.u(g, "error", function() {
    OBR.extern.errorInjectionHandler(f)
    }),
    c.a.H(g));
    d.wb.k("onOdbFire_" + f + "_" + b.v(), [b], !0);
    c.c.log("fire this src " + a)
    };
    d.zg = function(a) {
    c.b.zc && setTimeout(function() {
    d.Vc(a.h, a.v())
    }, 1E4)
    };
    d.Vc = function(a, b) {
    c.a.Pa("ob_odbCall_" + a + b)
    };
    a.k = function() {
    if (!0 !== d.La && !0 === c.I.nf()) {
    d.La = !0;
    var a = d.zb.top(),
    b;
    a ? (c.c.log("fire odb for " + a.ca()), b = d.we(a), d.kb(b, a, !0), d.zg(a)) : d.La = !1
    }
    };
    a.Lf = function(a, b) {
    d.wb.add("onOdbFire_" + a.h + "_" + a.v(), b)
    };
    a.Gb = function(a, b) {
    d.La = !1;
    d.Vc(a, b)
    };
    a.og = function(a) {
    !0 === a && (OBR.b.wa = a)
    };
    a.Xe = function() {
    OBR.b.wa = !1
    };
    a.Tc = function(e) {
    d.zb.add(e);
    c.c.log("register odb for " + e.ca());
    a.k()
    };
    a.Od = function(c) {
    a.Gb(c.h, c.v());
    a.k()
    };
    a.t = function() {
    d.zb.Zd();
    d.wb.N()
    };
    a.F = function() {
    d.S = c;
    return d
    };
    a.j(OBR);
    return a
    }();
    OBR.g = OBR.g || function() {
    function d() {
    c.c.log("ping fail")
    }

    function a() {
    c.c.log("ping success");
    c.I.fd();
    c.display.Gf(b.Id);
    c.q.k()
    }
    var c, e = {}, b = {}, g;
    b.tb = "manualDataReady";
    b.sb = "manualClickReady";
    e.j = function(b) {
    c = b = b || OBR;
    g = new c.o
    };
    e.F = function() {
    return b
    };
    b.Id = function(a) {
    c.c.log("rec " + a + " was rendered");
    var e = c.i[a];
    e.Y(!0);
    e.s.Bg();
    0 === a && c.a.pg();
    b.sf(e) && b.ng(e);
    c.a.Kd(e);
    c.display.$e(e)
    };
    b.Ne = function(b) {
    return Math.floor(Math.random() * b) + 1
    };
    b.sf = function(a) {
    var e = c.b.Ka,
    d = a.l("tracking", !1);
    if (!a.l("widgetStatistics", !1) || e || d) return !1;
    a = a.l("wsSampling", 0);
    return 0 === a ? !0 : b.Ne(a) === a
    };
    b.ng = function(b) {
    2 === c.d.oc(c.d.f.ua) && 2 === c.d.oc(c.d.f.fa) ? c.p.Rb(b.h) : c.d.w(c.d.f.fa, function() {
    c.d.w(c.d.f.ua, function() {
    c.p.Rb(b.h)
    }, this)
    }, this)
    };
    b.Qg = function(a) {
    c.c.log("widget was found");
    a = c.Ua.Hd(a);
    0 === a.h && b.Pd();
    !0 === a.ff() ? c.c.log("Dynamic loader - stop odb!") : c.q.Tc(a)
    };
    e.Jc = function(a, d) {
    var h = "NA",
    l = a && a.response ? a.response : null,
    m;
    if (m = c.a.Ca(d))
    if (g.k("onmManualOdbReturned_" + d, [l,
    d
    ]), m.W()) return;
    l && (l.request && l.request.widgetJsId) && (h = l.request.widgetJsId);
    c.q.Gb(d, h);
    m && (l && l.documents) && (m.Y(!0), e.gc(b.tb, d, h, a));
    c.q.k()
    };
    e.Mf = function(b, a) {
    g.add("onmManualOdbReturned_" + b, a)
    };
    e.gc = function(b, a, c, e) {
    b = b + a + c;
    g.k(b, [e.response.documents, a]);
    g.Bb(b)
    };
    e.Gc = function(a, d) {
    if (null !== a) {
    var h = 0,
    l = a.permalink,
    m = a.widgetId,
    p = a.widgetType,
    n = a.fbk,
    q = a.timeout;
    l && "string" === typeof l && (m && "string" === typeof m) && (c.c.log("manual Odb call"), h = e.xf(l), e.Na(b.tb + h + m, d), l = c.Ua.Zb(h, l, m, !1,
    p, n, q, !0), l.vg(), c.na[h] = l, g.k("onmManualOdbCall", [l, b.tb]), c.I.fd(), c.q.Tc(l))
    }
    };
    e.Na = function(b, a) {
    g.add(b, a)
    };
    e.Qf = function(b) {
    g.add("onmManualOdbCall", b)
    };
    e.xf = function(b) {
    var a = 0,
    e = c.b;
    null === e.ma && (e.ma = 0 < c.i.length ? c.i[0].ca() : null);
    e.ma === b ? a = e.Fc + 1 : e.ma = b;
    return e.Fc = a
    };
    e.Ec = function(a, e) {
    var d = OBR.n(c.b.Ia);
    c.a.V(d) && c.a.V(d.parentNode) && d.parentNode.removeChild(d);
    c.a.nb();
    "function" === typeof e && g.add(b.sb, e);
    if (null !== a && (d = a.link) && "string" === typeof d) {
    c.c.log("manual Click");
    if (null !==
    d.match(/http:\/\/.+outbrain.com/i)) c.a.Wd(d + "&noRedirect=true");
    else throw "Wrong redirect link: " + d;
    g.k(b.sb);
    g.Bb(b.sb)
    }
    };
    b.rf = function(a) {
    return b.yc(a) || a.l("stopWidget", !1)
    };
    b.yc = function(b) {
    return b.l("stopRater", !1)
    };
    b.Pd = function() {
    c.I.Of(a);
    c.I.Nf(d);
    c.b.Df || c.b.zc ? (c.c.log("async - no ping"), a()) : c.I.Uf()
    };
    e.yb = function(a, d) {
    var h, l;
    OBR.c.log("HTML returned");
    (h = c.i[d]) ? (h.s.xg(), h.W() || (h.setData(a), l = h.v(), b.rf(h) || b.tf(h.Ba()) || (c.q.og(a.response.settings.apv), e.of(h) ? e.ea(d) : e.Re(h),
    l && g.k("odbRtn_" + l, [h]))), e.se(h)) : c.c.log("odbHtmlReturned : Widget not found")
    };
    b.tf = function(b) {
    var a = !1;
    null !== b.match(/(<\/?met|<\/?scr)/i) && (a = !0, c.c.log("SECURITY"));
    return a
    };
    e.se = function(a) {
    b.yc(a) || (c.q.Gb(a.h, a.v()), c.q.k())
    };
    e.of = function(b) {
    var a = !0;
    if (b.Cc() || b.wc()) a = !1;
    return a
    };
    e.Re = function(b) {
    var a = b.h;
    b.Cc() ? c.d.w(c.d.f.Za, function() {
    c.Ta.de(a)
    }, this) : b.wc() && c.display.Ye(b)
    };
    e.ea = function(b) {
    c.display.ea(c.i[b]);
    c.c.log("HTML - Render");
    e.Xf(b)
    };
    e.Xf = function(b) {
    c.a.Xd(b)
    };
    e.Rc =
    function(b, a) {
    c.a.Fd(a);
    var e = c.a.D(a, "data-redirect");
    null !== e && (a.href = e);
    return !0
    };
    e.Sc = function(b) {
    c.p && c.p.Mc();
    c.ba.pe(b);
    return !0
    };
    e.t = function() {
    g.N()
    };
    e.Zc = function() {
    //debugger;
    c.ba.Hf(b.Qg);
    c.b.Ma ? c.b.Lg() : c.ba.dc()
    };
    e.Sd = function(b, a, e) {
    if (confirm("Removing this recommendation will remove it permanently for this section and will refresh the recommendations.\n Are you sure you want to remove this recommendation?")) {
    var d = "https://my.outbrain.com/manage/";
    c.c.log("isAd = " + e + " type = " + typeof e);
    d = !1 === e ? d + ("add-zapped-document?publisherId=" + a + "&docUrl=" + c.a.L(b)) : d + ("add-rule?publisherId=" + a + "&ruleValue=" + c.a.L(b) + "&ruleType=" + e);
    b = c.a.B(d, !0);
    c.a.H(b)
    }
    };
    e.Rd = function(b) {
    confirm("Removing this recommendation will remove it permanently for this section and will refresh the recommendations.\n Are you sure you want to remove this recommendation?") && (b = c.a.B(c.b.xb + c.b.Td + b + "&index=1&templateIndex=1&sig=" + c.b.pd, !0), c.a.H(b))
    };
    e.ig = function(b) {
    b && (b.ob_exclude_resp && b.ob_exclude_resp.code && 1 !==
    b.ob_exclude_resp.code) && e.Sc()
    };
    e.Uc = function(b, a) {
    if (a && "function" === typeof a) {
    var e = "odbRtn_" + b;
    g.add(e, a);
    var d = c.Jb.sc(b);
    d && d.df() && g.k(e, [d])
    }
    };
    e.xe = function(b) {
    return (b = c.Jb.sc(b)) ? b.G("tcr", -1) : null
    };
    e.hg = function() {
    c.ba.dc()
    };
    e.N = function() {
    c.p && c.p.Mc();
    c.display.t();
    c.q.t();
    c.I.t();
    this.t();
    c.ba.t();
    c.ha && c.ha.t();
    c.b.wa = !1
    };
    e.cg = function() {
    this.N();
    this.Zc()
    };
    e.j(OBR);
    return e
    }();
    OBR.display = OBR.display || function() {
    var d, a = {}, c;
    a.j = function(a) {
    d = a = a || OBR;
    c = new d.o
    };
    a.tc = function(a, b) {
    var c = d.a.Mg(a),
    f = d.a.U(b.h);
    f && (c && 0 < c.length) && (f.innerHTML = "", d.a.mb(c[0], f), d.c.log("element inserted"))
    };
    a.kh = function(a) {
    c.add("beforeRender", a)
    };
    a.Gf = function(a) {
    c.add("afterRender", a)
    };
    a.$e = function(a) {
    d.a.pf(a) && OBR.d.w(OBR.d.f.Xa, function(b) {
    OBR.scroll.yf(b)
    }, this, a)
    };
    a.Ye = function(c) {
    OBR.d.w(OBR.d.f.fa, d.a.$(), this);
    OBR.d.w(OBR.d.f.Va, function() {
    a.te(c)
    }, this)
    };
    a.te = function(e) {
    a.tc(OBR.ya.Ve(e),
    e);
    OBR.ya.j();
    c.k("afterRender", [e.h])
    };
    a.ea = function(e) {
    d.c.log("HTML - render widget with " + e.Ba());
    a.tc(e.Ba(), e);
    e.Y(!0);
    c.k("afterRender", [e.h])
    };
    a.t = function() {
    c.N()
    };
    a.j(OBR);
    return a
    }();
    OBR.md = OBR.md || function(d) {
    var a = {}, c = {}, e = {}, b = "",
    g = null,
    f = null,
    k = !1,
    h = 0,
    l = "html",
    m = !1,
    p = 4E3,
    n = "nano",
    q = !1,
    s = !1,
    r = {}, t = new OBR.o;
    a.Wg = 0;
    a.Vg = 1E3;
    a.Ug = 2;
    a.h = d;
    a.xa = "";
    a.tg = function(b, a) {
    t.add("onInjectError_" + b.h, a)
    };
    a.re = function(b) {
    t.k("onInjectError_" + b, [b], !0)
    };
    a.s = {
    Lc: -1,
    Kc: -1,
    Yc: -1,
    Ea: function() {
    var b = [];
    b.push(a.s.Lc);
    b.push(a.s.Kc);
    b.push(a.s.Yc);
    return b
    },
    yg: function() {
    a.s.Lc = (new Date).getTime()
    },
    xg: function() {
    a.s.Kc = (new Date).getTime()
    },
    Bg: function() {
    a.s.Yc = (new Date).getTime()
    }
    };
    a.ne = {
    slow: 7E3,
    normal: 5E3,
    fast: 3E3,
    qa: 5
    };
    a.setData = function(a) {
    a && a.response && (a = a.response, a.request && (e = a.request), a.settings && (c = a.settings), a.html && (b = a.html), m = !0)
    };
    a.hb = function() {
    return c
    };
    a.l = function(b, a) {
    var e;
    e = c[b];
    return "undefined" !== typeof e && null !== e ? e : a
    };
    a.G = function(b, a) {
    var c = e[b];
    return c ? c : a
    };
    a.Ba = function() {
    return b
    };
    a.v = function() {
    return g
    };
    a.Gg = function(b) {
    g = "string" === typeof b ? b : "NA"
    };
    a.vg = function() {
    l = "japi"
    };
    a.Ce = function() {
    return l
    };
    a.oh = function(b) {
    h = b
    };
    a.ah = function() {
    return h
    };
    a.ca = function() {
    return f
    };
    a.Ag = function(b) {
    f = b
    };
    a.ff = function() {
    return k
    };
    a.rg = function(b) {
    k = "true" === b || !0 === b
    };
    a.wc = function() {
    return "flyThrough" === a.l("displayMode", "")
    };
    a.Cc = function() {
    return "video" === a.l("displayMode", "")
    };
    a.fh = function() {
    return "recInIframe" === a.l("displayMode", "")
    };
    a.df = function() {
    return m
    };
    a.Pe = function() {
    return n
    };
    a.Hg = function(b) {
    "string" === typeof b && (n = b.toLowerCase())
    };
    a.Eg = function(b) {
    "string" === typeof b && "" !== b && (a.xa = b)
    };
    a.gf = function() {
    return !isNaN(parseInt(a.xa, 10))
    };
    a.ja = function() {
    var b;
    b = parseInt(a.xa, 10);
    return a.gf() && "number" === typeof b && 0 <= b && 10 > b ? OBR.a.Be(f, b) : a.xa
    };
    a.W = function() {
    return q
    };
    a.Y = function(b) {
    "boolean" === typeof b && (q = b)
    };
    a.dh = function() {
    return "hp" === n
    };
    a.m = function() {
    return r
    };
    a.sg = function() {
    var b = {
    timeout: 0,
    pa: null,
    ab: 0,
    Ub: !1,
    Ff: !1,
    Na: "",
    Ha: !1,
    Eb: !1,
    Ab: !1,
    va: !1,
    od: "NA",
    reason: 0,
    ob: !0
    };
    "object" === typeof b && (r = b)
    };
    a.lf = function() {
    return s
    };
    a.mc = function() {
    return p
    };
    a.ug = function(b) {
    p = a.ne[b] || 6E3
    };
    a.wg = function(b) {
    "boolean" === typeof b && (s =
    b)
    };
    return a
    };
    OBR.Ua = OBR.Ua || function() {
    var d = OBR,
    a = {}, c = new d.o;
    a.Zb = function(a, b, g, f, k, h, l, m) {
    a = new d.md(a);
    a.Ag(b);
    a.Gg(g);
    a.rg(f);
    a.Hg(k);
    a.Eg(h);
    a.ug(l);
    "boolean" === typeof m && a.wg(m);
    c.k("onWidgetCreate", [a]);
    return a
    };
    a.Hd = function(c) {
    var b = d.a.D(c, "data-src"),
    g = d.a.D(c, "data-widget-id"),
    f = d.a.D(c, "data-widget-type"),
    k = d.a.D(c, "data-timeout"),
    h = d.a.D(c, "data-fbk"),
    l = d.a.D(c, "data-advance-loader"),
    m = d.a.D(c, "data-dynLoad");
    d.a.A(c, "data-dynLoad", "");
    d.b.ed("true" === (l || "").toLowerCase());
    null === b && (b = d.a.Ee());
    l = 0 === d.i.length && d.b.ma === b ? 1 : d.i.length;
    b = a.Zb(l, b, g, m, f, h, k, !1);
    d.i[l] = b;
    0 === l && (g = d.a.createElement("div", "ob_holder"), g.style.display = "none", d.a.insertBefore(g, c), d.a.nb());
    c.id = d.b.Ib + l;
    return b
    };
    a.Pf = function(a) {
    c.add("onWidgetCreate", a)
    };
    return a
    }();
    OBR.Jb = OBR.Jb || function() {
    var d = OBR;
    return {
    sc: function(a) {
    var c, e, b;
    if (d.i)
    for (e = d.i.length, c = 0; c < e; c += 1)
    if ((b = d.i[c]) && b.v() === a) return b;
    return null
    }
    }
    }();
    OBR.ha = OBR.ha || function() {
    var d = {}, a = OBR,
    c = {}, e = new a.o;
    c.ke = function(b) {
    b.sg();
    "" !== b.ja() && (b.tg(b, function() {
    d.Te(b.h)
    }), OBR.q.Lf(b, function() {
    c.Fg(b)
    }), OBR.g.Uc(b.v(), d.Kf))
    };
    c.Fg = function(b) {
    var a;
    a = b.m();
    a.timeout = b.mc();
    a.Ha || (a.pa = setTimeout(function() {
    c.Vd(b)
    }, a.timeout))
    };
    d.Kf = function(b) {
    var a = b.m();
    a.Ff = !0;
    b.l("ispartialrecs", !1) && (clearTimeout(a.pa), a.reason = 3, a.Ab = !0, c.eb(b))
    };
    d.If = function(b, d) {
    var f;
    b && (b.settings && !0 === b.settings.ispartialrecs) && (f = a.a.Ca(d), clearTimeout(f.m().pa),
    c.Xc(f))
    };
    c.Jf = function(b, c) {
    b.m().Na = c;
    a.g.Mf(b.h, d.If)
    };
    a.Ua.Pf(c.ke);
    a.g.Qf(c.Jf);
    d.Tb = function(b, d) {
    var f, e, h;
    b && b.response && (f = b.response, OBR.c.log("Cdn response returned"), (e = c.qc(d)) ? (a.q.Od(e), h = e.m(), h.rb = b, f.request && (h.od = f.request.widgetJsId || "NA"), h.Ub = (new Date).getTime(), h.Ha && !h.va ? (h.Ha = !1, c.jb(e)) : h.Eb && !h.va ? (h.Eb = !1, c.jb(e)) : h.Ab && !h.va && (h.Ab = !1, c.jb(e))) : a.c.log("Editorial Widget : Widget not found"))
    };
    c.jb = function(b) {
    var a = b.m();
    a.va = !0;
    c.Xc(b);
    d.ud(b);
    clearTimeout(b.m().pa);
    a.reason = 0;
    a.ob = !0
    };
    c.qc = function(b) {
    var c = a.i[b];
    return c ? c : a.a.Ca(b)
    };
    c.rc = function(b) {
    return (b = a.a.rc(b)) ? b : a.a.Ca("fbk")
    };
    c.Vd = function(b) {
    var a = b.m();
    b.W() || (a.reason = 1, a.Eb = !0, c.eb(b))
    };
    c.Xc = function(b) {
    var c = b.m();
    b.W() && !b.l("ispartialrecs", !1) ? c.ob = !1 : (b.lf() ? a.g.gc(c.Na, b.h, c.od, c.rb) : (b.setData(c.rb), OBR.g.ea(b.h)), b.Y(!0))
    };
    d.ud = function(b) {
    var c, d, e;
    d = b.m();
    a.a.mf(b.hb()) && b.setData(d.rb);
    e = "" !== b.ca() ? a.a.L(b.ca()) : window.location.href;
    c = b.l("irdfb", "");
    "" !== c && (c += "&reason=" + d.reason ||
    "", c = c + ("&url=" + e || "") + ("&at=" + (b.m().Ub - b.m().ab) || ""), c += "&to=" + b.mc() || "", c += "&ir=" + (d.ob ? 1 : 0) || "", b = OBR.a.B(c, !1), OBR.a.H(b))
    };
    c.eb = function(b) {
    if (0 === b.m().ab) {
    var d = c.ve(b);
    c.kb(d, b);
    a.c.log("CDN call: cdnCall")
    }
    };
    c.ve = function(b) {
    var c;
    c = a.b.Ud;
    b = b.ja() + "_" + b.v() + "_" + b.h;
    return c + b
    };
    d.Te = function(b) {
    b = c.qc(b);
    var a;
    b && (a = b.m(), clearTimeout(a.pa), a.Ha = !0, a.reason = 2, c.eb(b))
    };
    c.kb = function(b, c) {
    var d = a.a.B(b, !1);
    c.m().ab = (new Date).getTime();
    a.a.H(d);
    a.c.log("fire this src " + b)
    };
    d.t = function() {
    e.N()
    };
    d.F = function() {
    return c
    };
    return d
    }();
    OBR.extern = OBR.extern || function() {
    var d = OBR;
    return {
    getStat: function() {
    d.p.$c()
    },
    showDescription: function(a, c) {
    d.d.w(OBR.d.f.Wa, function() {
    OBR.Pc.vf(a, c)
    }, this)
    },
    returnedHtmlData: function(a, c) {
    d.g.yb(a, c)
    },
    returnedIrdData: function(a, c) {
    d.ha.Tb(a, c)
    },
    returnedJsonData: function(a, c) {
    d.g.Jc(a, c)
    },
    returnedError: function(a) {
    OBR.c.log("Call made using extern class");
    d.c.log("Callback error" + a)
    },
    callRecs: function(a, c) {
    OBR.c.log("Call made using extern class");
    d.g.Gc(a, c)
    },
    callClick: function(a, c) {
    OBR.c.log("Call made using extern class");
    d.g.Ec(a, c)
    },
    callWhatIs: function(a, c, d, b, g, f) {
    OBR.d.w(OBR.d.f.ta, function() {
    OBR.Hb.Sb(a, c, d, b, g, f)
    }, this);
    return !1
    },
    recClicked: function(a, c) {
    OBR.c.log("Call made using extern class");
    d.g.Rc(a, c)
    },
    imageError: function(a) {
    OBR.c.log("Call made using extern class");
    d.a.Wb(a)
    },
    showRecInIframe: function(a, c, e, b, g) {
    d.d.w(d.d.f.Ob, function() {
    d.nh.ph(a, c, e, b, g)
    }, this)
    },
    errorInjectionHandler: function(a) {
    OBR.i[a].re(a)
    },
    reloadWidget: function() {
    OBR.c.log("reload widget");
    d.g.cg()
    },
    researchWidget: function() {
    OBR.c.log("research widget");
    d.g.hg()
    },
    cancelRecommendation: function(a) {
    OBR.c.log("cancel recommendation with bocr " + a);
    d.g.Rd(a)
    },
    cancelRecs: function(a, c, e) {
    OBR.c.log("cancel recommendation by doc url " + a + " publisher id = " + c + " isAd = " + e);
    d.g.Sd(a, c, e)
    },
    refreshWidget: function(a) {
    OBR.c.log("refresh widget");
    d.g.Sc(a)
    },
    getCountOfRecs: function(a) {
    return d.g.xe(a)
    },
    onOdbReturn: function(a, c) {
    d.g.Uc(a, c)
    },
    closeCard: function() {
    d.ya.ae()
    },
    closeModal: function() {
    try {
    d.modal.hideModal()
    } catch (a) {}
    },
    scrollLoad: function() {
    try {
    OBR.d.Q(OBR.d.f.Ya)
    } catch (a) {}
    }
    }
    }();
    window.outbrain = window.outbrain || {};
    window.outbrain.returnedHtmlData = function(d, a) {
    OBR.g.yb(d, a)
    };
    window.outbrain.returnedIrdJsonData = function(d, a) {
    OBR.ha.Tb(d, a)
    };
    window.outbrain.returnedJsonData = function(d, a) {
    OBR.g.Jc(d, a)
    };
    window.outbrain.returnedError = function(d) {
    OBR.c.log("Callback error" + d)
    };
    window.outbrain.callRecs = function(d, a) {
    OBR.g.Gc(d, a)
    };
    window.outbrain.callClick = function(d, a) {
    OBR.g.Ec(d, a)
    };
    window.outbrain.callWhatIs = function(d, a, c, e, b, g) {
    OBR.d.w(OBR.d.f.ta, function() {
    OBR.Hb.Sb(d, a, c, e, b, g)
    }, this)
    };
    window.outbrain.recClicked = function(d, a) {
    OBR.g.Rc(d, a)
    };
    window.outbrain.imageError = function(d) {
    OBR.a.Wb(d)
    };
    window.outbrain.closeModal = function() {
    try {
    OBR.modal.hideModal()
    } catch (d) {}
    };
    window.outbrain_rater = window.outbrain_rater || {};
    window.outbrain_rater.returnedHtmlData = function(d, a) {
    OBR.g.yb(d, a)
    };
    window.outbrain_rater.returnedCancelOdbData = function(d) {
    OBR.g.ig(d)
    };
    !0 === OBR.b.vc && (OBR.c.log("Widget Start!"), OBR.b.vc = !1, "boolean" === typeof window.OB_PASSIVE_MODE && !0 === window.OB_PASSIVE_MODE ? OBR.c.log("passive") : OBR.g.Zc());