Beranda Budaya Problem Solvers: Leadership investigation reveals costly probe, culture concerns in Culver Schools

Problem Solvers: Leadership investigation reveals costly probe, culture concerns in Culver Schools

62
0

${n}</script>`),
(t.onload = () => e(t.contentWindow.render)),
document.body.appendChild(t);
})),
e[n]
);
};
})();
},
3005: (e, t, n) => {
n.d(t, {
$T: () => a,
Ni: () => i,
OA: () => o,
RO: () => s,
fR: () => r
});
const i = 1,
r = 2,
o = 1,
s = 500;
function a(e) {
return (e ?? []).reduce((e, t) => {
let { event: n, method: i, url: r } = t;
const o = (e[n] = e[n] ?? {});
return (o[i] = o[i] ?? []).push(r), e;
}, {});
}
},
5023: (e, t, n) => {
n.d(t, { AU: () => m, Ic: () => v, kQ: () => y, on: () => h });
var i = n(1069),
r = n(8969),
o = n(6853),
s = n(3272);
const a = ‘eventHistoryTTL’;
let d = null;
const c = (0, o.H)({ monotonic: !0, ttl: () => d });
s.$W.getConfig(a, e => {
const t = d;
(e = e?.[a]),
(d = ‘number’ == typeof e ? 1e3 * e : null),
t !== d && c.refresh();
});
let l = Array.prototype.slice,
u = Array.prototype.push,
f = Object.values(r.qY);
const g = r.cA,
p = (function() {
let e = {},
t = {};
function n(e) {
return f.includes(e);
}
return (
(t.has = n),
(t.on = function(t, r, o) {
if (n(t)) {
let n = e[t] || { que: [] };
o
? ((n[o] = n[o] || { que: [] }), n[o].que.push(r))
: n.que.push(r),
(e[t] = n);
} else
i.vV(
‘Wrong event name : ‘ + t + ‘ Valid event names :’ + f
);
}),
(t.emit = function(t) {
!(function(t, n) {
i.OG(‘Emitting event for: ‘ + t);
let r = n[0] || {},
o = r[g[t]],
s = e[t] || { que: [] };
var a = Object.keys(s);
let d = [];
c.add({
eventType: t,
args: r,
id: o,
elapsedTime: i.V()
}),
o && a.includes(o) && u.apply(d, s[o].que),
u.apply(d, s.que),
(d || []).forEach(function(e) {
if (e)
try {
e.apply(null, n);
} catch (e) {
i.vV(
‘Error executing handler:’,
‘events.js’,
e,
t
);
}
});
})(t, l.call(arguments, 1));
}),
(t.off = function(t, n, r) {
let o = e[t];
i.Im(o) ||
(i.Im(o.que) && i.Im(o[r])) ||
(r && (i.Im(o[r]) || i.Im(o[r].que))) ||
(r
? (o[r].que || []).forEach(function(e) {
let t = o[r].que;
e === n && t.splice(t.indexOf(e), 1);
})
: (o.que || []).forEach(function(e) {
let t = o.que;
e === n && t.splice(t.indexOf(e), 1);
}),
(e[t] = o));
}),
(t.get = function() {
return e;
}),
(t.addEvents = function(e) {
f = f.concat(e);
}),
(t.getEvents = function() {
return c.toArray().map(e => Object.assign({}, e));
}),
t
);
})();
i.cD(p.emit.bind(p));
const {
on: h,
off: m,
get: b,
getEvents: y,
emit: v,
addEvents: E,
has: A
} = p;
},
687: (e, t, n) => {
n.d(t, { w: () => I });
var i = n(9214),
r = n(7934),
o = n(5973),
s = n(1069),
a = n(3172),
d = n(3272),
c = n(5555);
const l = [
‘architecture’,
‘bitness’,
‘model’,
‘platformVersion’,
‘fullVersionList’
],
u = [‘brands’, ‘mobile’, ‘platform’],
f = (function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: window.navigator?.userAgentData;
const t =
e && u.some(t => void 0 !== e[t])
? Object.freeze(p(1, e))
: null;
return function() {
return t;
};
})(),
g = (function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: window.navigator?.userAgentData;
const t = {},
n = new WeakMap();
return function() {
let i =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: l;
if (!n.has(i)) {
const e = Array.from(i);
e.sort(), n.set(i, e.join(‘|’));
}
const r = n.get(i);
if (!t.hasOwnProperty(r))
try {
t[r] = e
.getHighEntropyValues(i)
.then(e =>
(0, s.Im)(e) ? null : Object.freeze(p(2, e))
)
.catch(() => null);
} catch (e) {
t[r] = c.U9.resolve(null);
}
return t[r];
};
})();
function p(e, t) {
function n(e, t) {
const n = { brand: e };
return (
(0, s.O8)(t) && !(0, s.xQ)(t) && (n.version = t.split(‘.’)), n
);
}
const i = { source: e };
return (
t.platform && (i.platform = n(t.platform, t.platformVersion)),
(t.fullVersionList || t.brands) &&
(i.browsers = (t.fullVersionList || t.brands).map(e => {
let { brand: t, version: i } = e;
return n(t, i);
})),
void 0 !== t.mobile && (i.mobile = t.mobile ? 1 : 0),
[‘model’, ‘bitness’, ‘architecture’].forEach(e => {
const n = t[e];
(0, s.O8)(n) && (i[e] = n);
}),
i
);
}
var h = n(3858),
m = n(5139),
b = n(3441),
y = n(6811),
v = n(5569),
E = n(8944);
const A = {
getRefererInfo: r.EN,
findRootDomain: o.S,
getWindowTop: s.mb,
getWindowSelf: s.l4,
getHighEntropySUA: g,
getLowEntropySUA: f,
getDocument: s.YE
},
w = (0, h.i8)(‘FPD’),
I = (0, i.A_)(‘sync’, e => {
const t = [
e,
C().catch(() => null),
c.U9.resolve(
‘cookieDeprecationLabel’ in navigator &&
(0, m.io)(y.Ue, (0, b.s)(v.tp, ‘cdep’)) &&
navigator.cookieDeprecationLabel.getValue()
).catch(() => null)
];
return c.U9.all(t).then(e => {
let [t, n, i] = e;
const r = A.getRefererInfo();
if (
(Object.entries(O).forEach(e => {
let [n, i] = e;
const o = i(t, r);
o &&
Object.keys(o).length > 0 &&
(t[n] = (0, s.D9)({}, o, t[n]));
}),
n &&
(0, a.J)(
t,
‘device.sua’,
Object.assign({}, n, t.device.sua)
),
i)
) {
const e = { cdep: i };
(0, a.J)(
t,
‘device.ext’,
Object.assign({}, e, t.device.ext)
);
}
const o = A.getDocument().documentElement.lang;
o && (0, a.J)(t, ‘site.ext.data.documentLang’, o), (t = w(t));
for (let e of h.Dy)
if ((0, h.O$)(t, e)) {
t[e] = (0, s.D9)({}, R(t, r), t[e]);
break;
}
return t;
});
});
function T(e) {
try {
return e(A.getWindowTop());
} catch (t) {
return e(A.getWindowSelf());
}
}
function C() {
const e = d.$W.getConfig(‘firstPartyData.uaHints’);
return Array.isArray(e) && 0 !== e.length
? A.getHighEntropySUA(e)
: c.U9.resolve(A.getLowEntropySUA());
}
function B(e) {
return (0, s.SH)(e, Object.keys(e));
}
const O = {
site(e, t) {
if (!h.Dy.filter(e => ‘site’ !== e).some(h.O$.bind(null, e)))
return B({ page: t.page, ref: t.ref });
},
device: () =>
T(e => {
const t = (0, s.Ot)().screen.width,
n = (0, s.Ot)().screen.height,
{ width: i, height: r } = (0, E.M)(),
o = {
w: t,
h: n,
dnt: (0, s.l9)() ? 1 : 0,
ua: e.navigator.userAgent,
language: e.navigator.language.split(‘-‘).shift(),
ext: { vpw: i, vph: r }
};
return (
e.navigator?.webdriver && (0, a.J)(o, ‘ext.webdriver’, !0),
o
);
}),
regs() {
const e = {};
T(e => e.navigator.globalPrivacyControl) &&
(0, a.J)(e, ‘ext.gpc’, ‘1’);
const t = d.$W.getConfig(‘coppa’);
return ‘boolean’ == typeof t && (e.coppa = t ? 1 : 0), e;
}
};
function R(e, t) {
const n = (0, r.gR)(t.page, { noLeadingWww: !0 }),
i = T(e =>
e.document.querySelector(“meta[name=’keywords’]”)
)?.content?.replace?.(/s/g, ”);
return B({
domain: n,
keywords: i,
publisher: B({ domain: A.findRootDomain(n) })
});
}
},
3858: (e, t, n) => {
n.d(t, { Dy: () => r, O$: () => s, i8: () => o });
var i = n(1069);
const r = [‘dooh’, ‘app’, ‘site’];
function o(e) {
return function(t) {
return (
r.reduce(
(n, r) => (
s(t, r) &&
(null != n
? ((0, i.JE)(
`${e} specifies both ‘${n}’ and ‘${r}’; dropping the latter.`
),
delete t[r])
: (n = r)),
n
),
null
),
t
);
};
}
function s(e, t) {
return null != e[t] && Object.keys(e[t]).length > 0;
}
},
5973: (e, t, n) => {
n.d(t, { S: () => o });
var i = n(1069);
const r = (0, n(2938).CK)(‘fpdEnrichment’),
o = (0, i.Bj)(function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: window.location.host;
if (!r.cookiesAreEnabled()) return e;
const t = e.split(‘.’);
if (2 === t.length) return e;
let n,
o,
s = -2;
const a = `_rdc${Date.now()}`,
d = ‘writeable’;
do {
n = t.slice(s).join(‘.’);
let e = new Date((0, i.vE)() + 1e4).toUTCString();
r.setCookie(a, d, e, ‘Lax’, n, void 0);
r.getCookie(a, void 0) === d
? ((o = !1),
r.setCookie(
a,
”,
‘Thu, 01 Jan 1970 00:00:01 GMT’,
void 0,
n,
void 0
))
: ((s += -1), (o = Math.abs(s) <= t.length));
} while (o);
return n;
});
},
9214: (e, t, n) => {
n.d(t, {
A_: () => s,
Gc: () => d,
Y6: () => g,
Yn: () => c,
bz: () => f,
u2: () => p,
xG: () => u
});
var i = n(8128),
r = n.n(i),
o = n(5555);
let s = r()({ ready: r().SYNC | r().ASYNC | r().QUEUE });
const a = (0, o.v6)();
s.ready = (() => {
const e = s.ready;
return function() {
try {
return e.apply(s, arguments);
} finally {
a.resolve();
}
};
})();
const d = a.promise,
c = s.get;
const l = {};
function u(e, t) {
let { postInstallAllowed: n = !1 } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
s(
‘async’,
function(i) {
i.forEach(e => t(…e)), n && (l[e] = t);
},
e
)([]);
}
function f(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
i = 1;
i < t;
i++
)
n[i – 1] = arguments[i];
const r = l[e];
if (r) return r(…n);
c(e).before((e, t) => {
t.push(n), e(t);
});
}
function g(e, t) {
return (
Object.defineProperties(
t,
Object.fromEntries(
[‘before’, ‘after’, ‘getHooks’, ‘removeAll’].map(t => [
t,
{ get: () => e[t] }
])
)
),
t
);
}
function p(e) {
return g(e, function() {
for (
var t = arguments.length, n = new Array(t), i = 0;
i < t;
i++
)
n[i] = arguments[i];
return n.push(function() {}), e.apply(this, n);
});
}
},
1371: (e, t, n) => {
n.d(t, {
D4: () => o,
GE: () => a,
G_: () => r,
LM: () => s,
s6: () => i
});
const i = ‘native’,
r = ‘video’,
o = ‘banner’,
s = ‘adpod’,
a = [i, r, o];
},
2449: (e, t, n) => {
n.d(t, {
Bm: () => y,
IX: () => C,
Nh: () => l,
Zj: () => A,
gs: () => E,
l6: () => p,
mT: () => c,
nk: () => m,
vO: () => v,
yl: () => B
});
var i = n(1069),
r = n(6881),
o = n(8969),
s = n(9075),
a = n(6031),
d = n(3005);
const c = [],
l = Object.keys(o.x5).map(e => o.x5[e]),
u = {
image: {
ortb: {
ver: ‘1.2’,
assets: [
{
required: 1,
id: 1,
img: { type: 3, wmin: 100, hmin: 100 }
},
{ required: 1, id: 2, title: { len: 140 } },
{ required: 1, id: 3, data: { type: 1 } },
{ required: 0, id: 4, data: { type: 2 } },
{
required: 0,
id: 5,
img: { type: 1, wmin: 20, hmin: 20 }
}
]
},
image: { required: !0 },
title: { required: !0 },
sponsoredBy: { required: !0 },
clickUrl: { required: !0 },
body: { required: !1 },
icon: { required: !1 }
}
},
f = k(o.h0),
g = k(o.jO);
function p(e) {
return e.native && ‘object’ == typeof e.native;
}
function h(e) {
if (
(e &&
e.type &&
(function(e) {
if (!e || !Object.keys(u).includes(e))
return (0, i.vV)(`${e} nativeParam is not supported`), !1;
return !0;
})(e.type) &&
(e = u[e.type]),
!e || !e.ortb || b(e.ortb))
)
return e;
}
function m(e) {
e.forEach(e => {
const t = e.nativeParams || e?.mediaTypes?.native;
t && (e.nativeParams = h(t)),
e.nativeParams &&
(e.nativeOrtbRequest =
e.nativeParams.ortb ||
(function(e) {
if (!e && !(0, i.Qd)(e))
return void (0, i.vV)(
‘Native assets object is empty or not an object: ‘,
e
);
const t = { ver: ‘1.2’, assets: [] };
for (let n in e) {
if (o._B.includes(n)) continue;
if (!o.x5.hasOwnProperty(n)) {
(0, i.vV)(
`Unrecognized native asset code: ${n}. Asset will be ignored.`
);
continue;
}
if (‘privacyLink’ === n) {
t.privacy = 1;
continue;
}
const r = e[n];
let s = 0;
r.required &&
(0, i.Lm)(r.required) &&
(s = Number(r.required));
const a = { id: t.assets.length, required: s };
if (n in o.h0)
(a.data = { type: o.jO[o.h0[n]] }),
r.len && (a.data.len = r.len);
else if (‘icon’ === n || ‘image’ === n) {
if (
((a.img = {
type: ‘icon’ === n ? o.oA.ICON : o.oA.MAIN
}),
r.aspect_ratios)
)
if ((0, i.cy)(r.aspect_ratios))
if (r.aspect_ratios.length) {
const {
min_width: e,
min_height: t
} = r.aspect_ratios[0];
(0, i.Fq)(e) && (0, i.Fq)(t)
? ((a.img.wmin = e), (a.img.hmin = t))
: (0, i.vV)(
‘image.aspect_ratios min_width or min_height are invalid: ‘,
e,
t
);
const n = r.aspect_ratios
.filter(
e => e.ratio_width && e.ratio_height
)
.map(
e => `${e.ratio_width}:${e.ratio_height}`
);
n.length > 0 &&
(a.img.ext = { aspectratios: n });
} else
(0, i.vV)(
“image.aspect_ratios was passed, but it’s empty:”,
r.aspect_ratios
);
else
(0, i.vV)(
“image.aspect_ratios was passed, but it’s not a an array:”,
r.aspect_ratios
);
r.sizes &&
(2 === r.sizes.length &&
(0, i.Fq)(r.sizes[0]) &&
(0, i.Fq)(r.sizes[1])
? ((a.img.w = r.sizes[0]),
(a.img.h = r.sizes[1]),
delete a.img.hmin,
delete a.img.wmin)
: (0, i.vV)(
‘image.sizes was passed, but its value is not an array of integers:’,
r.sizes
));
} else
‘title’ === n
? (a.title = { len: r.len || 140 })
: ‘ext’ === n && ((a.ext = r), delete a.required);
t.assets.push(a);
}
return t;
})(e.nativeParams));
});
}
function b(e) {
const t = e.assets;
if (!Array.isArray(t) || 0 === t.length)
return (
(0, i.vV)(
“assets in mediaTypes.native.ortb is not an array, or it’s empty. Assets: “,
t
),
!1
);
const n = t.map(e => e.id);
return t.length !== new Set(n).size ||
n.some(e => e !== parseInt(e, 10))
? ((0, i.vV)(
“each asset object must have ‘id’ property, it must be unique and it must be an integer”
),
!1)
: e.hasOwnProperty(‘eventtrackers’) &&
!Array.isArray(e.eventtrackers)
? ((0, i.vV)(
‘ortb.eventtrackers is not an array. Eventtrackers: ‘,
e.eventtrackers
),
!1)
: t.every(e =>
(function(e) {
if (!(0, i.Qd)(e))
return (
(0, i.vV)(
‘asset must be an object. Provided asset: ‘,
e
),
!1
);
if (e.img) {
if (!(0, i.Et)(e.img.w) && !(0, i.Et)(e.img.wmin))
return (
(0, i.vV)(
“for img asset there must be ‘w’ or ‘wmin’ property”
),
!1
);
if (!(0, i.Et)(e.img.h) && !(0, i.Et)(e.img.hmin))
return (
(0, i.vV)(
“for img asset there must be ‘h’ or ‘hmin’ property”
),
!1
);
} else if (e.title) {
if (!(0, i.Et)(e.title.len))
return (
(0, i.vV)(
“for title asset there must be ‘len’ property defined”
),
!1
);
} else if (e.data) {
if (!(0, i.Et)(e.data.type))
return (
(0, i.vV)(
“for data asset ‘type’ property must be a number”
),
!1
);
} else if (
e.video &&
!(
Array.isArray(e.video.mimes) &&
Array.isArray(e.video.protocols) &&
(0, i.Et)(e.video.minduration) &&
(0, i.Et)(e.video.maxduration)
)
)
return (
(0, i.vV)(‘video asset is not properly configured’),
!1
);
return !0;
})(e)
);
}
function y(e) {
let { index: t = r.n.index } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
const n = t.getAdUnit(e);
if (!n) return !1;
let o = n.nativeOrtbRequest;
return (function(e, t) {
if (!e?.link?.url)
return (
(0, i.vV)(
“native response doesn’t have ‘link’ property. Ortb response: “,
e
),
!1
);
let n = t.assets.filter(e => 1 === e.required).map(e => e.id),
r = e.assets.map(e => e.id);
const o = n.every(e => r.includes(e));
o ||
(0, i.vV)(
`didn’t receive a bid with all required assets. Required ids: ${n}, but received ids in response: ${r}`
);
return o;
})(e.native?.ortb || S(e.native, o), o);
}
function v(e, t) {
const n = t.native.ortb || R(t.native);
return (
‘click’ === e.action
? (function(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: null,
{ fetchURL: n = i.z$ } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
if (t) {
const i = (e.assets || [])
.filter(e => e.link)
.reduce((e, t) => ((e[t.id] = t.link), e), {}),
r = e.link?.clicktrackers || [];
let o = i[t],
s = r;
o && (s = o.clicktrackers || []), s.forEach(e => n(e));
} else (e.link?.clicktrackers || []).forEach(e => n(e));
})(n, e?.assetId)
: (function(e) {
let {
runMarkup: t = e => (0, i.ro)(e),
fetchURL: n = i.z$
} =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {},
{ [d.Ni]: r = [], [d.fR]: o = [] } =
(0, d.$T)(e.eventtrackers || [])[d.OA] || {};
e.imptrackers && (r = r.concat(e.imptrackers));
r.forEach(e => n(e)),
(o = o.map(e => “)),
e.jstracker && (o = o.concat([e.jstracker]));
o.length && t(o.join(‘n’));
})(n),
e.action
);
}
function E(e, t) {
const n = t?.nativeOrtbRequest,
i = e.native?.ortb;
if (n && i) {
const t = (function(e, t) {
const n = {},
i = t?.assets || [];
(n.clickUrl = e.link?.url), (n.privacyLink = e.privacy);
for (const t of e?.assets || []) {
const e = i.find(e => t.id === e.id);
t.title
? (n.title = t.title.text)
: t.img
? (n[e?.img?.type === o.oA.MAIN ? ‘image’ : ‘icon’] = {
url: t.img.url,
width: t.img.w,
height: t.img.h
})
: t.data && (n[f[g[e?.data?.type]]] = t.data.value);
}
n.impressionTrackers = [];
let r = [];
e.imptrackers && n.impressionTrackers.push(…e.imptrackers);
for (const t of e?.eventtrackers || [])
t.event === d.OA &&
t.method === d.Ni &&
n.impressionTrackers.push(t.url),
t.event === d.OA && t.method === d.fR && r.push(t.url);
(r = r.map(e => “)),
e?.jstracker && r.push(e.jstracker);
r.length && (n.javascriptTrackers = r.join(‘n’));
return n;
})(i, n);
Object.assign(e.native, t);
}
[‘rendererUrl’, ‘adTemplate’].forEach(n => {
const i = t?.nativeParams?.[n];
i && (e.native[n] = O(i));
});
}
function A(e) {
let { index: t = r.n.index } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {},
n = {};
const i = t.getAdUnit(e),
s =
null == i?.nativeParams?.ortb &&
!1 !== i?.nativeParams?.sendTargetingKeys,
a = (function(e) {
const t = {};
e?.nativeParams?.ext &&
Object.keys(e.nativeParams.ext).forEach(e => {
t[e] = `hb_native_${e}`;
});
return { …o.x5, …t };
})(i),
d = { …e.native, …e.native.ext };
return (
delete d.ext,
Object.keys(d).forEach(t => {
const r = a[t];
let o = O(e.native[t]) || O(e?.native?.ext?.[t]);
if (‘adTemplate’ === t || !r || !o) return;
let d = i?.nativeParams?.[t]?.sendId;
if (
(‘boolean’ != typeof d &&
(d = i?.nativeParams?.ext?.[t]?.sendId),
d)
) {
o = `${r}:${e.adId}`;
}
let c = i?.nativeParams?.[t]?.sendTargetingKeys;
‘boolean’ != typeof c &&
(c = i?.nativeParams?.ext?.[t]?.sendTargetingKeys);
(‘boolean’ == typeof c ? c : s) && (n[r] = o);
}),
n
);
}
function w(e, t) {
let n =
arguments.length > 2 &&
void 0 !== arguments[2] &&
arguments[2],
i = [];
return (
Object.entries(e)
.filter(e => {
let [i, r] = e;
return (
r &&
((!1 === n && ‘ext’ === i) || null == t || t.includes(i))
);
})
.forEach(e => {
let [r, s] = e;
!1 === n && ‘ext’ === r
? i.push(…w(s, t, !0))
: (n || o.x5.hasOwnProperty(r)) &&
i.push({ key: r, value: O(s) });
}),
i
);
}
function I(e, t, n) {
let { index: d = r.n.index } =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: {};
const c = { message: ‘assetResponse’, adId: e.adId };
let l = (0, s.vd)(t).native;
return (
l
? ((c.native = Object.assign({}, l)),
(c.renderer = (0, a.kj)(t)),
(c.rendererVersion = a.xh),
null != n &&
(l.assets = l.assets.filter(e => {
let { key: t } = e;
return n.includes(t);
})))
: (l = (function(e, t, n) {
const r = {
…(0, i.SH)(e.native, [‘rendererUrl’, ‘adTemplate’]),
assets: w(e.native, n),
nativeKeys: o.x5
};
return (
e.native.ortb
? (r.ortb = e.native.ortb)
: t.mediaTypes?.native?.ortb &&
(r.ortb = S(e.native, t.nativeOrtbRequest)),
r
);
})(t, d.getAdUnit(t), n)),
Object.assign(c, l)
);
}
const T = Object.fromEntries(
Object.entries(o.x5).map(e => {
let [t, n] = e;
return [n, t];
})
);
function C(e, t) {
const n = e.assets.map(e => T[e]);
return I(e, t, n);
}
function B(e, t) {
return I(e, t, null);
}
function O(e) {
return e?.url || e;
}
function R(e) {
const t = { link: {}, eventtrackers: [] };
return (
Object.entries(e).forEach(e => {
let [n, i] = e;
switch (n) {
case ‘clickUrl’:
t.link.url = i;
break;
case ‘clickTrackers’:
t.link.clicktrackers = Array.isArray(i) ? i : [i];
break;
case ‘impressionTrackers’:
(Array.isArray(i) ? i : [i]).forEach(e => {
t.eventtrackers.push({
event: d.OA,
method: d.Ni,
url: e
});
});
break;
case ‘javascriptTrackers’:
t.jstracker = Array.isArray(i) ? i.join(”) : i;
break;
case ‘privacyLink’:
t.privacy = i;
}
}),
t
);
}
function S(e, t) {
const n = { …R(e), assets: [] };
function r(e, r) {
let o = t.assets.find(e);
null != o && ((o = (0, i.Go)(o)), r(o), n.assets.push(o));
}
return (
Object.keys(e)
.filter(t => !!e[t])
.forEach(t => {
const n = O(e[t]);
switch (t) {
case ‘title’:
r(
e => null != e.title,
e => {
e.title = { text: n };
}
);
break;
case ‘image’:
case ‘icon’:
const e = ‘image’ === t ? o.oA.MAIN : o.oA.ICON;
r(
t => null != t.img && t.img.type === e,
e => {
e.img = { url: n };
}
);
break;
default:
t in o.h0 &&
r(
e =>
null != e.data && e.data.type === o.jO[o.h0[t]],
e => {
e.data = { value: n };
}
);
}
}),
n
);
}
function k(e) {
var t = {};
for (var n in e) t[e[n]] = n;
return t;
}
},
1e3: (e, t, n) => {
n.d(t, {
Cf: () => a,
S3: () => r,
Tb: () => o,
WR: () => s,
e4: () => c,
pS: () => u,
qN: () => d,
yB: () => f,
zt: () => i
});
const i = [‘request’, ‘imp’, ‘bidResponse’, ‘response’],
[r, o, s, a] = i,
[d, c] = [‘default’, ‘pbs’],
l = new Set(i);
const { registerOrtbProcessor: u, getProcessors: f } = (function() {
const e = {};
return {
registerOrtbProcessor(t) {
let {
type: n,
name: r,
fn: o,
priority: s = 0,
dialects: a = [d]
} = t;
if (!l.has(n))
throw new Error(
`ORTB processor type must be one of: ${i.join(‘, ‘)}`
);
a.forEach(t => {
e.hasOwnProperty(t) || (e[t] = {}),
e[t].hasOwnProperty(n) || (e[t][n] = {}),
(e[t][n][r] = { priority: s, fn: o });
});
},
getProcessors: t => e[t] || {}
};
})();
},
8934: (e, t, n) => {
n.d(t, { gH: () => se });
var i = n(7873),
r = n(1069),
o = n(433),
s = n(3172),
a = n(2449),
d = n(8969),
c = n(9075),
l = n(6031);
const { REQUEST: u, RESPONSE: f, NATIVE: g, EVENT: p } = d.nl,
h = {
[u]: function(e, t, n) {
(0, c.bw)({
renderFn(t) {
e(
Object.assign(
{
message: f,
renderer: (0, l.kj)(n),
rendererVersion: l.xh
},
t
)
);
},
resizeFn: b(t.adId, n),
options: t.options,
adId: t.adId,
bidResponse: n
});
},
[p]: function(e, t, n) {
if (null == n)
return void (0, r.vV)(
`Cannot find ad ‘${t.adId}’ for x-origin event request`
);
if (n.status !== d.tl.RENDERED)
return void (0, r.JE)(
`Received x-origin event request without corresponding render request for ad ‘${n.adId}’`
);
return (0, c.Uc)(t, n);
}
};
function m() {
window.addEventListener(
‘message’,
function(e) {
!(function(e) {
var t = e.message ? ‘message’ : ‘data’,
n = {};
try {
n = JSON.parse(e[t]);
} catch (e) {
return;
}
if (n && n.adId && n.message && h.hasOwnProperty(n.message))
(0, c.$A)(n.adId, n.message === d.nl.REQUEST).then(t => {
var i, o;
h[n.message](
((i = n.adId),
(o = (function(e) {
return null == e.origin && 0 === e.ports.length
? function() {
const e =
‘Cannot post message to a frame with null origin. Please update creatives to use MessageChannel, see https://github.com/prebid/Prebid.js/issues/7870’;
throw ((0, r.vV)(e), new Error(e));
}
: e.ports.length > 0
? function(t) {
e.ports[0].postMessage(JSON.stringify(t));
}
: function(t) {
e.source.postMessage(
JSON.stringify(t),
e.origin
);
};
})(e)),
function(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
n[r – 1] = arguments[r];
return o(Object.assign({}, e, { adId: i }), …n);
}),
n,
t
);
});
})(e);
},
!1
);
}
function b(e, t) {
return function(n, i) {
!(function(e) {
let {
instl: t,
adId: n,
adUnitCode: i,
width: o,
height: s
} = e;
if (t) return;
function a(e) {
return e ? e + ‘px’ : ‘100%’;
}
function d(e) {
let t = c(n, i),
r = document.getElementById(t);
return r && r.querySelector(e);
}
function c(e, t) {
return (0, r.II)() ? l(e) : (0, r.t1)() ? u(t) : t;
}
function l(e) {
const t = window.googletag
.pubads()
.getSlots()
.find(t =>
t
.getTargetingKeys()
.find(n => t.getTargeting(n).includes(e))
);
return t ? t.getSlotElementId() : null;
}
function u(e) {
let t = window.apntag.getTag(e);
return t && t.targetId;
}
[‘div’, ‘iframe’].forEach(e => {
let t = d(e + ‘:not([style*=”display: none”])’);
if (t) {
let e = t.style;
(e.width = a(o)), (e.height = a(s));
} else
(0, r.vV)(
`Unable to locate matching page element for adUnitCode ${i}. Can’t resize it to ad’s dimensions. Please review setup.`
);
});
})({ …t, width: n, height: i, adId: e });
};
}
Object.assign(h, {
[g]: function(e, t, n) {
if (null == n)
return void (0, r.vV)(
`Cannot find ad for x-origin event request: ‘${t.adId}’`
);
switch (t.action) {
case ‘assetRequest’:
(0, c.Hh)(n, () => e((0, a.IX)(t, n)));
break;
case ‘allAssetRequest’:
(0, c.Hh)(n, () => e((0, a.yl)(t, n)));
break;
default:
(0, c.vW)(t, n, { resizeFn: b(t.adId, n) }), (0, c.Pk)(n);
}
}
});
var y = n(8230),
v = n(3272),
E = n(6881),
A = n(7779),
w = n(9214),
I = n(3597),
T = n(1580),
C = n(5555),
B = n(5569);
const O = ‘__tlpbjs_debugging__’;
function R() {
return (0, i.m)().installedModules.includes(‘debugging’);
}
function S(e) {
return new C.U9(t => {
(0, T.R)(e, B.tp, ‘debugging’, t);
});
}
function k() {
let { alreadyInstalled: e = R, script: t = S } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
n = null;
return function() {
return (
null == n &&
(n = new C.U9((n, o) => {
setTimeout(() => {
if (e()) n();
else {
const e =
‘https://cdn.jsdelivr.net/npm/prebid.js@9.50.0/dist/debugging-standalone.js’;
(0, r.OG)(
`Debugging module not installed, loading it from “${e}”…`
),
((0, i.m)()._installDebugging = !0),
t(e)
.then(() => {
(0, i.m)()._installDebugging({
DEBUG_KEY: O,
hook: w.A_,
config: v.$W,
createBid: I.O,
logger: (0, r.h0)(‘DEBUG:’)
});
})
.then(n, o);
}
});
})),
n
);
};
}
const U = (function() {
let { load: e = k(), hook: t = (0, w.Yn)(‘requestBids’) } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
n = null,
i = !1;
function r(e) {
for (
var t = arguments.length,
i = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
i[r – 1] = arguments[r];
return (n || C.U9.resolve()).then(() => e.apply(this, i));
}
function o() {
t.getHooks({ hook: r }).remove(), (i = !1);
}
return {
enable: function() {
i || ((n = e()), t.before(r, 99), (i = !0));
},
disable: o,
reset: function() {
(n = null), o();
}
};
})();
U.reset;
v.$W.getConfig(‘debugging’, function(e) {
let { debugging: t } = e;
t?.enabled ? U.enable() : U.disable();
});
var D = n(2938),
_ = n(1445),
$ = n(5023),
j = n(6894),
x = n(687),
q = n(6916),
N = n(2713),
W = n(3895);
const P = new Map([
[
‘format’,
e =>
Array.isArray(e) &&
e.length > 0 &&
e.every(e => ‘object’ == typeof e)
],
[‘w’, r.Fq],
[‘h’, r.Fq],
[‘btype’, r.Uu],
[‘battr’, r.Uu],
[‘pos’, r.Fq],
[
‘mimes’,
e =>
Array.isArray(e) &&
e.length > 0 &&
e.every(e => ‘string’ == typeof e)
],
[‘topframe’, e => [1, 0].includes(e)],
[‘expdir’, r.Uu],
[‘api’, r.Uu],
[‘id’, r.O8],
[‘vcm’, e => [1, 0].includes(e)]
]);
var V = n(1371);
function M(e, t) {
return function() {
if (document.prerendering && e()) {
const e = this,
n = Array.from(arguments);
return new Promise(i => {
document.addEventListener(
‘prerenderingchange’,
() => {
(0, r.fH)(
‘Auctions were suspended while page was prerendering’
),
i(t.apply(e, n));
},
{ once: !0 }
);
});
}
return Promise.resolve(t.apply(this, arguments));
};
}
var G = n(7377);
const F = (0, i.m)(),
{ triggerUserSyncs: H } = y.zt,
{ ADD_AD_UNITS: L, REQUEST_BIDS: z, SET_TARGETING: J } = d.qY,
Q = {
bidWon: function(e) {
if (
!E.n
.getBidsRequested()
.map(e => e.bids.map(e => e.adUnitCode))
.reduce(r.Bq)
.filter(r.hj)
.includes(e)
)
return void (0, r.vV)(
‘The “‘ + e + ‘” placement is not defined.’
);
return !0;
}
};
function K(e, t) {
let n = [];
return (
(0, r.cy)(e) &&
(t ? e.length === t : e.length > 0) &&
(e.every(e => (0, r.Uu)(e, 2))
? (n = e)
: (0, r.Uu)(e, 2) && n.push(e)),
n
);
}
function Y(e, t) {
const n = (0, o.A)(e, `ortb2Imp.${t}`),
i = (0, o.A)(e, `mediaTypes.${t}`);
if (!n && !i) return;
const a = { [V.G_]: W.Zy, [V.D4]: P }[t];
a &&
[…a].forEach(n => {
let [i, a] = n;
const d = (0, o.A)(e, `mediaTypes.${t}.${i}`),
c = (0, o.A)(e, `ortb2Imp.${t}.${i}`);
(null == d && null == c) ||
(null == d
? (0, s.J)(e, `mediaTypes.${t}.${i}`, c)
: null == c
? (0, s.J)(e, `ortb2Imp.${t}.${i}`, d)
: ((0, r.JE)(
`adUnit ${e.code}: specifies conflicting ortb2Imp.${t}.${i} and mediaTypes.${t}.${i}, the latter will be ignored`,
e
),
(0, s.J)(e, `mediaTypes.${t}.${i}`, c)));
});
}
function X(e) {
const t = (0, r.Go)(e),
n = t.mediaTypes.banner,
i = null == n.sizes ? null : K(n.sizes),
o = e.ortb2Imp?.banner?.format ?? n?.format;
let a;
if (null != o) {
(0, s.J)(t, ‘ortb2Imp.banner.format’, o), (n.format = o);
try {
a = o
.filter(t => {
let { w: n, h: i, wratio: o, hratio: s } = t;
return null != (n ?? i) && null != (o ?? s)
? ((0, r.JE)(
‘Ad unit banner.format specifies both w/h and wratio/hratio’,
e
),
!1)
: (null != n && null != i) || (null != o && null != s);
})
.map(e => {
let { w: t, h: n, wratio: i, hratio: r } = e;
return [t ?? i, n ?? r];
});
} catch (t) {
(0, r.vV)(
`Invalid format definition on ad unit ${e.code}`,
o
);
}
null == a ||
null == i ||
(0, r.bD)(i, a) ||
(0, r.JE)(
`Ad unit ${e.code} has conflicting sizes and format definitions`,
e
);
}
const d = a ?? i ?? [],
c = e.ortb2Imp?.banner?.expdir ?? n.expdir;
return (
null != c &&
((n.expdir = c), (0, s.J)(t, ‘ortb2Imp.banner.expdir’, c)),
d.length > 0
? ((n.sizes = d), (t.sizes = d))
: ((0, r.vV)(
‘Detected a mediaTypes.banner object without a proper sizes field. Please ensure the sizes are listed like: [[300, 250], …]. Removing invalid mediaTypes.banner object from request.’
),
delete t.mediaTypes.banner),
Y(t, ‘banner’),
t
);
}
function Z(e) {
const t = (0, r.Go)(e),
n = t.mediaTypes.video;
if (n.playerSize) {
let e = ‘number’ == typeof n.playerSize[0] ? 2 : 1;
const i = K(n.playerSize, e);
i.length > 0
? (2 === e &&
(0, r.fH)(
“Transforming video.playerSize from [640,480] to [[640,480]] so it’s in the proper format.”
),
(n.playerSize = i),
(t.sizes = i))
: ((0, r.vV)(
‘Detected incorrect configuration of mediaTypes.video.playerSize. Please specify only one set of dimensions in a format like: [[640, 480]]. Removing invalid mediaTypes.video.playerSize property from request.’
),
delete t.mediaTypes.video.playerSize);
}
return (0, W.aP)(t), Y(t, ‘video’), t;
}
function ee(e) {
function t(t) {
return (
(0, r.vV)(
`Error in adUnit “${e.code}”: ${t}. Removing native request from ad unit`,
e
),
delete i.mediaTypes.native,
i
);
}
function n(e) {
for (const t of [‘sendTargetingKeys’, ‘types’])
if (o.hasOwnProperty(t)) {
const n = e(t);
if (n) return n;
}
}
const i = (0, r.Go)(e),
o = i.mediaTypes.native;
if (o.ortb) {
if (
o.ortb.assets?.some(
e => !(0, r.Et)(e.id) || e.id < 0 || e.id % 1 != 0
)
)
return t(‘native asset ID must be a nonnegative integer’);
if (n(e => t(`ORTB native requests cannot specify “${e}”`)))
return i;
const e = Object.keys(d.x5).filter(e =>
d.x5[e].includes(‘hb_native_’)
),
s = Object.keys(o).filter(t => e.includes(t));
s.length > 0 &&
((0, r.vV)(
`when using native OpenRTB format, you cannot use legacy native properties. Deleting ${s} keys from request.`
),
s.forEach(e => delete i.mediaTypes.native[e]));
} else
n(
e =>
`mediaTypes.native.${e} is deprecated, consider using native ORTB instead`
);
return (
o.image &&
o.image.sizes &&
!Array.isArray(o.image.sizes) &&
((0, r.vV)(
‘Please use an array of sizes for native.image.sizes field. Removing invalid mediaTypes.native.image.sizes property from request.’
),
delete i.mediaTypes.native.image.sizes),
o.image &&
o.image.aspect_ratios &&
!Array.isArray(o.image.aspect_ratios) &&
((0, r.vV)(
‘Please use an array of sizes for native.image.aspect_ratios field. Removing invalid mediaTypes.native.image.aspect_ratios property from request.’
),
delete i.mediaTypes.native.image.aspect_ratios),
o.icon &&
o.icon.sizes &&
!Array.isArray(o.icon.sizes) &&
((0, r.vV)(
‘Please use an array of sizes for native.icon.sizes field. Removing invalid mediaTypes.native.icon.sizes property from request.’
),
delete i.mediaTypes.native.icon.sizes),
i
);
}
function te(e, t) {
let n = e?.mediaTypes?.[t]?.pos;
if (!(0, r.Et)(n) || isNaN(n) || !isFinite(n)) {
let n = `Value of property ‘pos’ on ad unit ${e.code} should be of type: Number`;
(0, r.JE)(n), delete e.mediaTypes[t].pos;
}
return e;
}
function ne(e) {
const t = t => `adUnit.code ‘${e.code}’ ${t}`,
n = e.mediaTypes,
i = e.bids;
return null == i || (0, r.cy)(i)
? null == i && null == e.ortb2Imp
? ((0, r.vV)(
t(
“has no ‘adUnit.bids’ and no ‘adUnit.ortb2Imp’. Removing adUnit from auction”
)
),
null)
: n && 0 !== Object.keys(n).length
? (null == e.ortb2Imp ||
(null != i && 0 !== i.length) ||
((e.bids = [{ bidder: null }]),
(0, r.OG)(
t(
“defines ‘adUnit.ortb2Imp’ with no ‘adUnit.bids’; it will be seen only by S2S adapters”
)
)),
e)
: ((0, r.vV)(
t(
“does not define a ‘mediaTypes’ object. This is a required field for the auction, so this adUnit has been removed.”
)
),
null)
: ((0, r.vV)(
t(
“defines ‘adUnit.bids’ that is not an array. Removing adUnit from auction”
)
),
null);
}
!(function() {
let e = null;
try {
e = window.sessionStorage;
} catch (e) {}
if (null !== e) {
let t = U,
n = null;
try {
n = e.getItem(O);
} catch (e) {}
null !== n && t.enable();
}
})(),
(F.bidderSettings = F.bidderSettings || {}),
(F.libLoaded = !0),
(F.version = ‘v9.50.0’),
(0, r.fH)(‘Prebid.js v9.50.0 loaded’),
(F.installedModules = F.installedModules || []),
(F.adUnits = F.adUnits || []),
(F.triggerUserSyncs = H);
const ie = {
validateAdUnit: ne,
validateBannerMediaType: X,
validateSizes: K
};
Object.assign(ie, { validateNativeMediaType: ee }),
Object.assign(ie, { validateVideoMediaType: Z });
const re = (0, w.A_)(
‘sync’,
function(e) {
const t = [];
return (
e.forEach(e => {
if (null == (e = ne(e))) return;
const n = e.mediaTypes;
let i, r, o;
n.banner &&
((i = X(e)),
n.banner.hasOwnProperty(‘pos’) && (i = te(i, ‘banner’))),
n.video &&
((r = Z(i || e)),
n.video.hasOwnProperty(‘pos’) && (r = te(r, ‘video’))),
n.native && (o = ee(r || i || e));
const s = Object.assign({}, i, r, o);
t.push(s);
}),
t
);
},
‘checkAdUnitSetup’
);
function oe(e) {
const t = E.n[e]().filter(e =>
E.n.getAdUnitCodes().includes(e.adUnitCode)
),
n = E.n.getLastAuctionId();
return t
.map(e => e.adUnitCode)
.filter(r.hj)
.map(e =>
t.filter(t => t.auctionId === n && t.adUnitCode === e)
)
.filter(e => e && e[0] && e[0].adUnitCode)
.map(e => ({ [e[0].adUnitCode]: { bids: e } }))
.reduce((e, t) => Object.assign(e, t), {});
}
(F.getAdserverTargetingForAdUnitCodeStr = function(e) {
if (
((0, r.fH)(
‘Invoking tlpbjs.getAdserverTargetingForAdUnitCodeStr’,
arguments
),
e)
) {
var t = F.getAdserverTargetingForAdUnitCode(e);
return (0, r.$D)(t);
}
(0, r.OG)(
‘Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode’
);
}),
(F.getHighestUnusedBidResponseForAdUnitCode = function(e) {
if (e) {
const t = E.n.getAllBidsForAdUnitCode(e).filter(A.Yl);
return t.length ? t.reduce(N.Vk) : {};
}
(0, r.OG)(
‘Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode’
);
}),
(F.getAdserverTargetingForAdUnitCode = function(e) {
return F.getAdserverTargeting(e)[e];
}),
(F.getAdserverTargeting = function(e) {
return (
(0, r.fH)(‘Invoking tlpbjs.getAdserverTargeting’, arguments),
A.iS.getAllTargeting(e)
);
}),
(F.getConsentMetadata = function() {
return (
(0, r.fH)(‘Invoking tlpbjs.getConsentMetadata’),
q.SL.getConsentMeta()
);
}),
(F.getNoBids = function() {
return (
(0, r.fH)(‘Invoking tlpbjs.getNoBids’, arguments),
oe(‘getNoBids’)
);
}),
(F.getNoBidsForAdUnitCode = function(e) {
return {
bids: E.n.getNoBids().filter(t => t.adUnitCode === e)
};
}),
(F.getBidResponses = function() {
return (
(0, r.fH)(‘Invoking tlpbjs.getBidResponses’, arguments),
oe(‘getBidsReceived’)
);
}),
(F.getBidResponsesForAdUnitCode = function(e) {
return {
bids: E.n.getBidsReceived().filter(t => t.adUnitCode === e)
};
}),
(F.setTargetingForGPTAsync = function(e, t) {
(0, r.fH)(‘Invoking tlpbjs.setTargetingForGPTAsync’, arguments),
(0, r.II)()
? A.iS.setTargetingForGPT(e, t)
: (0, r.vV)(‘window.googletag is not defined on the page’);
}),
(F.setTargetingForAst = function(e) {
(0, r.fH)(‘Invoking tlpbjs.setTargetingForAn’, arguments),
A.iS.isApntagDefined()
? (A.iS.setTargetingForAst(e),
$.Ic(J, A.iS.getAllTargeting()))
: (0, r.vV)(‘window.apntag is not defined on the page’);
}),
(F.renderAd = (0, w.A_)(‘async’, function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.renderAd’, arguments),
(0, r.OG)(‘Calling renderAd with adId :’ + t),
(0, c.BS)(e, t, n);
})),
(F.removeAdUnit = function(e) {
if (((0, r.fH)(‘Invoking tlpbjs.removeAdUnit’, arguments), !e))
return void (F.adUnits = []);
let t;
(t = (0, r.cy)(e) ? e : [e]),
t.forEach(e => {
for (let t = F.adUnits.length – 1; t >= 0; t–)
F.adUnits[t].code === e && F.adUnits.splice(t, 1);
});
}),
(F.requestBids = (function() {
const e = (0, w.A_)(
‘async’,
function() {
let {
bidsBackHandler: e,
timeout: t,
adUnits: n,
adUnitCodes: i,
labels: o,
auctionId: s,
ttlBuffer: a,
ortb2: d,
metrics: c,
defer: l
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
$.Ic(z);
const u = t || v.$W.getConfig(‘bidderTimeout’);
(0, r.fH)(‘Invoking tlpbjs.requestBids’, arguments),
null == i || Array.isArray(i) || (i = [i]),
i && i.length
? (n = n.filter(e => i.includes(e.code)))
: (i = n && n.map(e => e.code)),
(i = i.filter(r.hj));
const f = {
global: (0, r.D9)(
{},
v.$W.getAnyConfig(‘ortb2’) || {},
d || {}
),
bidder: Object.fromEntries(
Object.entries(v.$W.getBidderConfig())
.map(e => {
let [t, n] = e;
return [t, (0, r.Go)(n.ortb2)];
})
.filter(e => {
let [t, n] = e;
return null != n;
})
)
};
return (0, x.w)(C.U9.resolve(f.global)).then(
t => (
(f.global = t),
se({
bidsBackHandler: e,
timeout: u,
adUnits: n,
adUnitCodes: i,
labels: o,
auctionId: s,
ttlBuffer: a,
ortb2Fragments: f,
metrics: c,
defer: l
})
)
);
},
‘requestBids’
);
return (0, w.Y6)(
e,
M(
() => !v.$W.getConfig(‘allowPrerendering’),
function() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
n = t.adUnits || F.adUnits;
return (
(t.adUnits = (0, r.cy)(n) ? n.slice() : [n]),
(t.metrics = (0, j.K7)()),
t.metrics.checkpoint(‘requestBids’),
(t.defer = (0, C.v6)({
promiseFactory: e => new Promise(e)
})),
e.call(this, t),
t.defer.promise
);
}
)
);
})());
const se = (0, w.A_)(
‘async’,
function() {
let {
bidsBackHandler: e,
timeout: t,
adUnits: n,
ttlBuffer: i,
adUnitCodes: o,
labels: a,
auctionId: d,
ortb2Fragments: c,
metrics: l,
defer: u
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const f = (0, _.pX)(v.$W.getConfig(‘s2sConfig’) || []);
function g(t, n, i) {
if (‘function’ == typeof e)
try {
e(t, n, i);
} catch (e) {
(0, r.vV)(‘Error executing bidsBackHandler’, null, e);
}
u.resolve({ bids: t, timedOut: n, auctionId: i });
}
!(function(e) {
e.forEach(e => (0, W.V0)(e));
})(n),
(n = (0, j.BO)(l).measureTime(‘requestBids.validate’, () =>
re(n)
));
const p = {};
if (
(n.forEach(e => {
const t = Object.keys(e.mediaTypes || { banner: ‘banner’ }),
n = e.bids.map(e => e.bidder),
o = _.Ay.bidderRegistry,
s = n.filter(e => !f.has(e));
e.adUnitId = (0, r.lk)();
const a = e.ortb2Imp?.ext?.tid;
a &&
(p.hasOwnProperty(e.code)
? (0, r.JE)(
`Multiple distinct ortb2Imp.ext.tid were provided for twin ad units ‘${e.code}’`
)
: (p[e.code] = a)),
null == i ||
e.hasOwnProperty(‘ttlBuffer’) ||
(e.ttlBuffer = i),
s.forEach(n => {
const i = o[n],
s = i && i.getSpec && i.getSpec(),
a = (s && s.supportedMediaTypes) || [‘banner’];
t.some(e => a.includes(e)) ||
((0, r.JE)((0, r.bz)(e, n)),
(e.bids = e.bids.filter(e => e.bidder !== n)));
});
}),
n && 0 !== n.length)
) {
n.forEach(e => {
const t = e.ortb2Imp?.ext?.tid || p[e.code] || (0, r.lk)();
p.hasOwnProperty(e.code) || (p[e.code] = t),
(e.transactionId = t),
(0, s.J)(e, ‘ortb2Imp.ext.tid’, t);
});
const e = E.n.createAuction({
adUnits: n,
adUnitCodes: o,
callback: g,
cbTimeout: t,
labels: a,
auctionId: d,
ortb2Fragments: c,
metrics: l
});
let i = n.length;
i > 15 &&
(0, r.fH)(
`Current auction ${e.getAuctionId()} contains ${i} adUnits.`,
n
),
o.forEach(t =>
A.iS.setLatestAuctionForAdUnit(t, e.getAuctionId())
),
e.callBids();
} else
(0, r.OG)(‘No adUnits configured. No bids requested.’), g();
},
‘startAuction’
);
F.requestBids.before(function(e, t) {
function n(e) {
for (var t; (t = e.shift()); ) t();
}
n(D.s0), n(ae), e.call(this, t);
}, 49),
(F.addAdUnits = function(e) {
(0, r.fH)(‘Invoking tlpbjs.addAdUnits’, arguments),
F.adUnits.push.apply(F.adUnits, (0, r.cy)(e) ? e : [e]),
$.Ic(L);
}),
(F.onEvent = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.onEvent’, arguments),
(0, r.fp)(t)
? !n || Q[e].call(null, n)
? $.on(e, t, n)
: (0, r.vV)(
‘The id provided is not valid for event “‘ +
e +
‘” and no handler was set.’
)
: (0, r.vV)(
‘The event handler provided is not a function and was not set on event “‘ +
e +
‘”.’
);
}),
(F.offEvent = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.offEvent’, arguments),
(n && !Q[e].call(null, n)) || $.AU(e, t, n);
}),
(F.getEvents = function() {
return (0, r.fH)(‘Invoking tlpbjs.getEvents’), $.kQ();
}),
(F.registerBidAdapter = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.registerBidAdapter’, arguments);
try {
const i = n ? (0, G.xb)(n) : e();
_.Ay.registerBidAdapter(i, t);
} catch (e) {
(0, r.vV)(‘Error registering bidder adapter : ‘ + e.message);
}
}),
(F.registerAnalyticsAdapter = function(e) {
(0, r.fH)(
‘Invoking tlpbjs.registerAnalyticsAdapter’,
arguments
);
try {
_.Ay.registerAnalyticsAdapter(e);
} catch (e) {
(0, r.vV)(
‘Error registering analytics adapter : ‘ + e.message
);
}
}),
(F.createBid = function(e) {
return (
(0, r.fH)(‘Invoking tlpbjs.createBid’, arguments), (0, I.O)(e)
);
});
const ae = [],
de = (0, w.A_)(
‘async’,
function(e) {
e && !(0, r.Im)(e)
? ((0, r.fH)(‘Invoking tlpbjs.enableAnalytics for: ‘, e),
_.Ay.enableAnalytics(e))
: (0, r.vV)(
‘tlpbjs.enableAnalytics should be called with option {}’
);
},
‘enableAnalyticsCb’
);
function ce(e) {
if (‘function’ == typeof e)
try {
e.call();
} catch (e) {
(0, r.vV)(‘Error processing command :’, e.message, e.stack);
}
else
(0, r.vV)(
‘Commands written into tlpbjs.cmd.push must be wrapped in a function’
);
}
function le(e) {
e.forEach(function(e) {
if (void 0 === e.called)
try {
e.call(), (e.called = !0);
} catch (e) {
(0, r.vV)(‘Error processing command :’, ‘prebid.js’, e);
}
});
}
(F.enableAnalytics = function(e) {
ae.push(de.bind(this, e));
}),
(F.aliasBidder = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.aliasBidder’, arguments),
e && t
? _.Ay.aliasBidAdapter(e, t, n)
: (0, r.vV)(
‘bidderCode and alias must be passed as arguments’,
‘tlpbjs.aliasBidder’
);
}),
(F.aliasRegistry = _.Ay.aliasRegistry),
v.$W.getConfig(‘aliasRegistry’, e => {
‘private’ === e.aliasRegistry && delete F.aliasRegistry;
}),
(F.getAllWinningBids = function() {
return E.n.getAllWinningBids();
}),
(F.getAllPrebidWinningBids = function() {
return (
(0, r.JE)(
‘getAllPrebidWinningBids may be removed or renamed in a future version. This function returns bids that have won in prebid and have had targeting set but have not (yet?) won in the ad server. It excludes bids that have been rendered.’
),
E.n
.getBidsReceived()
.filter(e => e.status === d.tl.BID_TARGETING_SET)
);
}),
(F.getHighestCpmBids = function(e) {
return A.iS.getWinningBids(e);
}),
(F.clearAllAuctions = function() {
E.n.clearAllAuctions();
}),
(F.markWinningBidAsUsed = function(e) {
let t,
{
adId: n,
adUnitCode: i,
analytics: o = !1,
events: s = !1
} = e;
i && null == n
? (t = A.iS.getWinningBids(i))
: n
? (t = E.n.getBidsReceived().filter(e => e.adId === n))
: (0, r.JE)(
‘Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function.’
),
t.length > 0 &&
(o || s ? (0, c.n6)(t[0]) : E.n.addWinningBid(t[0]),
(0, c.qn)(t[0]));
}),
(F.getConfig = v.$W.getAnyConfig),
(F.readConfig = v.$W.readAnyConfig),
(F.mergeConfig = v.$W.mergeConfig),
(F.mergeBidderConfig = v.$W.mergeBidderConfig),
(F.setConfig = v.$W.setConfig),
(F.setBidderConfig = v.$W.setBidderConfig),
F.que.push(() => m()),
(F.processQueue = M(
() => (0, i.m)().delayPrerendering,
function() {
(F.que.push = F.cmd.push = ce),
(0, c.XO)(),
w.A_.ready(),
le(F.que),
le(F.cmd);
}
)),
(F.triggerBilling = e => {
let { adId: t, adUnitCode: n } = e;
E.n
.getAllWinningBids()
.filter(
e => e.adId === t || (null == t && e.adUnitCode === n)
)
.forEach(e => {
_.Ay.triggerBilling(e), (0, c.vB)(e);
});
});
},
7873: (e, t, n) => {
n.d(t, { E: () => s, m: () => o });
const i = window,
r = (i.tlpbjs = i.tlpbjs || {});
function o() {
return r;
}
function s(e) {
r.installedModules.push(e);
}
(r.cmd = r.cmd || []),
(r.que = r.que || []),
i === window &&
((i._pbjsGlobals = i._pbjsGlobals || []),
i._pbjsGlobals.push(‘tlpbjs’));
},
7934: (e, t, n) => {
n.d(t, { EN: () => d, gR: () => s });
var i = n(3272),
r = n(1069);
function o(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: window;
if (!e) return e;
if (/w+:///.exec(e)) return e;
let n = t.location.protocol;
try {
n = t.top.location.protocol;
} catch (e) {}
return /^///.exec(e) ? n + e : `${n}//${e}`;
}
function s(e) {
let { noLeadingWww: t = !1, noPort: n = !1 } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
try {
e = new URL(o(e));
} catch (e) {
return;
}
return (
(e = n ? e.hostname : e.host),
t && e.startsWith(‘www.’) && (e = e.substring(4)),
e
);
}
function a(e) {
try {
const t = e.querySelector(“link[rel=’canonical’]”);
if (null !== t) return t.href;
} catch (e) {}
return null;
}
const d = (function(e) {
let t,
n,
i,
r =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: window;
return r.top !== r
? e
: function() {
const o = a(r.document),
s = r.location.href;
return (
(t === o && s === n) || ((t = o), (n = s), (i = e())), i
);
};
})(
((c = window),
function() {
const e = [],
t = (function(e) {
try {
if (!e.location.ancestorOrigins) return;
return e.location.ancestorOrigins;
} catch (e) {}
})(c),
n = i.$W.getConfig(‘maxNestedIframes’);
let d,
l,
u,
f,
g = !1,
p = 0,
h = !1,
m = !1,
b = !1;
do {
const n = d,
i = m;
let o,
s = !1,
f = null;
(m = !1), (d = d ? d.parent : c);
try {
o = d.location.href || null;
} catch (e) {
s = !0;
}
if (s)
if (i) {
const e = n.context;
try {
(f = e.sourceUrl),
(l = f),
(b = !0),
(h = !0),
d === c.top && (g = !0),
e.canonicalUrl && (u = e.canonicalUrl);
} catch (e) {}
} else {
(0, r.JE)(
‘Trying to access cross domain iframe. Continuing without referrer and location’
);
try {
const e = n.document.referrer;
e && ((f = e), d === c.top && (g = !0));
} catch (e) {}
!f &&
t &&
t[p – 1] &&
((f = t[p – 1]), d === c.top && (b = !0)),
f && !h && (l = f);
}
else {
if (o && ((f = o), (l = f), (h = !1), d === c.top)) {
g = !0;
const e = a(d.document);
e && (u = e);
}
d.context && d.context.sourceUrl && (m = !0);
}
e.push(f), p++;
} while (d !== c.top && p < n);
e.reverse();
try {
f = c.top.document.referrer;
} catch (e) {}
const y = g || b ? l : null,
v = i.$W.getConfig(‘pageUrl’) || u || null;
let E = i.$W.getConfig(‘pageUrl’) || y || o(v, c);
return (
y &&
y.indexOf(‘?’) > -1 &&
-1 === E.indexOf(‘?’) &&
(E = `${E}${y.substring(y.indexOf(‘?’))}`),
{
reachedTop: g,
isAmp: h,
numIframes: p – 1,
stack: e,
topmostLocation: l || null,
location: y,
canonicalUrl: v,
page: E,
domain: s(E) || null,
ref: f || null,
legacy: {
reachedTop: g,
isAmp: h,
numIframes: p – 1,
stack: e,
referer: l || null,
canonicalUrl: v
}
}
);
})
);
var c;
},
2938: (e, t, n) => {
n.d(t, {
CK: () => b,
X0: () => g,
qk: () => f,
s0: () => p,
vM: () => m
});
var i = n(1069),
r = n(2693),
o = n(5569),
s = n(5139),
a = n(2604),
d = n(6811),
c = n(3272),
l = n(1445),
u = n(3441);
const f = ‘html5’,
g = ‘cookie’;
let p = [];
function h() {
let { moduleName: e, moduleType: t } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
{ isAllowed: n = s.io } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
function r(i, r) {
let s = e;
const f = c.$W.getCurrentBidder();
f && t === o.tW && l.Ay.aliasRegistry[f] === e && (s = f);
return i({ valid: n(d.Ue, (0, u.s)(t, s, { [a.Zw]: r })) });
}
function h(e, t, n) {
if (!n || ‘function’ != typeof n) return r(e, t);
p.push(function() {
let i = r(e, t);
n(i);
});
}
function m(e) {
const t = e.charAt(0).toUpperCase() + e.substring(1),
n = () => window[e],
r = function(t) {
return h(
function(t) {
if (t && t.valid)
try {
return !!n();
} catch (t) {
(0, i.vV)(`${e} api disabled`);
}
return !1;
},
f,
t
);
};
return {
[`has${t}`]: r,
[`${e}IsEnabled`]: e =>
h(
function(e) {
if (e && e.valid)
try {
return (
n().setItem(‘prebid.cookieTest’, ‘1’),
‘1’ === n().getItem(‘prebid.cookieTest’)
);
} catch (e) {
} finally {
try {
n().removeItem(‘prebid.cookieTest’);
} catch (e) {}
}
return !1;
},
f,
e
),
[`setDataIn${t}`]: (e, t, i) =>
h(
function(i) {
i && i.valid && r() && n().setItem(e, t);
},
f,
i
),
[`getDataFrom${t}`]: (e, t) =>
h(
function(t) {
return t && t.valid && r() ? n().getItem(e) : null;
},
f,
t
),
[`removeDataFrom${t}`]: (e, t) =>
h(
function(t) {
t && t.valid && r() && n().removeItem(e);
},
f,
t
)
};
}
return {
setCookie: function(e, t, n, i, r, o) {
return h(
function(o) {
if (o && o.valid) {
const o =
r && ” !== r
? ` ;domain=${encodeURIComponent(r)}`
: ”,
s = n && ” !== n ? ` ;expires=${n}` : ”,
a =
null != i && ‘none’ == i.toLowerCase()
? ‘; Secure’
: ”;
document.cookie = `${e}=${encodeURIComponent(
t
)}${s}; path=/${o}${i ? `; SameSite=${i}` : ”}${a}`;
}
},
g,
o
);
},
getCookie: function(e, t) {
return h(
function(t) {
if (t && t.valid) {
let t = window.document.cookie.match(
‘(^|;)\s*’ + e + ‘\s*=\s*([^;]*)\s*(;|$)’
);
return t ? decodeURIComponent(t[2]) : null;
}
return null;
},
g,
t
);
},
cookiesAreEnabled: function(e) {
return h(
function(e) {
return !(!e || !e.valid) && (0, i.GE)();
},
g,
e
);
},
…m(‘localStorage’),
…m(‘sessionStorage’),
findSimilarCookies: function(e, t) {
return h(
function(t) {
if (t && t.valid) {
const t = [];
if ((0, i.N9)()) {
const n = document.cookie.split(‘;’);
for (; n.length; ) {
const i = n.pop();
let r = i.indexOf(‘=’);
r = r < 0 ? i.length : r;
decodeURIComponent(
i.slice(0, r).replace(/^s+/, ”)
).indexOf(e) >= 0 &&
t.push(decodeURIComponent(i.slice(r + 1)));
}
}
return t;
}
},
g,
t
);
}
};
}
function m() {
let { moduleType: e, moduleName: t, bidderCode: n } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
function i() {
throw new Error(
‘Invalid invocation for getStorageManager: must set either bidderCode, or moduleType + moduleName’
);
}
return (
n
? (((e && e !== o.tW) || t) && i(), (e = o.tW), (t = n))
: (t && e) || i(),
h({ moduleType: e, moduleName: t })
);
}
function b(e) {
return h({ moduleName: e, moduleType: o.tp });
}
(0, s.qB)(d.Ue, ‘deviceAccess config’, function() {
if (!(0, i.N9)()) return { allow: !1 };
}),
(0, s.qB)(d.Ue, ‘bidderSettings.*.storageAllowed’, function(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: r.u;
if (e[a.Dk] !== o.tW) return;
let n = t.get(e[a.q7], ‘storageAllowed’);
if (n && !0 !== n) {
const t = e[a.Zw];
n = Array.isArray(n) ? n.some(e => e === t) : n === t;
} else n = !!n;
return n ? void 0 : { allow: n };
});
},
7779: (e, t, n) => {
n.d(t, { Yl: () => w, iS: () => B, uW: () => A });
var i = n(6881),
r = n(7863),
o = n(2693),
s = n(3272),
a = n(8969),
d = n(5023),
c = n(9214),
l = n(1371),
u = n(2449),
f = n(1069),
g = n(433),
p = n(2713),
h = [];
const m = 20,
b = ‘targetingControls.allowTargetingKeys’,
y = ‘targetingControls.addTargetingKeys’,
v = `Only one of “${b}” or “${y}” can be set`,
E = Object.keys(a.xS).map(e => a.xS[e]);
let A = {
isActualBid: e => e.getStatusCode() === a.XQ.GOOD,
isBidNotExpired: e =>
e.responseTimestamp + 1e3 * (0, r.cT)(e) > (0, f.vE)(),
isUnusedBid: e =>
e &&
((e.status && ![a.tl.RENDERED].includes(e.status)) || !e.status)
};
function w(e) {
return !Object.values(A).some(t => !t(e));
}
const I = (0, c.A_)(‘sync’, function(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: 0,
i =
arguments.length > 3 &&
void 0 !== arguments[3] &&
arguments[3],
r =
arguments.length > 4 && void 0 !== arguments[4]
? arguments[4]
: f.Q0;
if (!i) {
const i = [],
o = s.$W.getConfig(‘sendBidsControl.dealPrioritization’);
let a = (0, f.$z)(e, ‘adUnitCode’);
return (
Object.keys(a).forEach(e => {
let s = [],
d = (0, f.$z)(a[e], ‘bidderCode’);
Object.keys(d).forEach(e => {
s.push(d[e].reduce(t));
}),
n
? ((s = o
? s.sort(T(!0))
: s.sort((e, t) => t.cpm – e.cpm)),
i.push(…s.slice(0, n)))
: ((s = s.sort(r)), i.push(…s));
}),
i
);
}
return e;
});
function T() {
let e =
arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
return function(t, n) {
return void 0 !== t.adserverTargeting.hb_deal &&
void 0 === n.adserverTargeting.hb_deal
? -1
: void 0 === t.adserverTargeting.hb_deal &&
void 0 !== n.adserverTargeting.hb_deal
? 1
: e
? n.cpm – t.cpm
: n.adserverTargeting.hb_pb – t.adserverTargeting.hb_pb;
};
}
function C(e, t) {
return (arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: () => window.googletag.pubads().getSlots())().reduce(
(e, n) => {
const i = (0, f.fp)(t) && t(n);
return (
Object.keys(e)
.filter((0, f.fp)(i) ? i : (0, f.iC)(n))
.forEach(t => e[t].push(n)),
e
);
},
Object.fromEntries(e.map(e => [e, []]))
);
}
const B = (function(e) {
let t = {},
n = {};
function i(e) {
let t =
arguments.length > 1 &&
void 0 !== arguments[1] &&
arguments[1],
n =
arguments.length > 2 &&
void 0 !== arguments[2] &&
arguments[2];
const i = E.concat(u.Nh),
r = s.$W.getConfig(
‘targetingControls.allowSendAllBidsTargetingKeys’
),
o = r ? r.map(e => a.xS[e]) : i;
return e.reduce((e, r) => {
if (t || (n && r.dealId)) {
const t = (function(e, t) {
return t.reduce(
(t, n) => (
e.adserverTargeting[n] &&
t.push({
[`${n}_${e.bidderCode}`.substring(0, 20)]: [
e.adserverTargeting[n]
]
}),
t
),
[]
);
})(
r,
i.filter(
e =>
void 0 !== r.adserverTargeting[e] &&
(n || -1 !== o.indexOf(e))
)
);
t && e.push({ [r.adUnitCode]: t });
}
return e;
}, []);
}
function r(t) {
return ‘string’ == typeof t
? [t]
: (0, f.cy)(t)
? t
: e.getAdUnitCodes() || [];
}
function A() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: p.Bq,
i =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: void 0,
r = e.getBidsReceived().reduce((e, t) => {
const i = s.$W.getConfig(‘useBidCache’),
r = s.$W.getConfig(‘bidCacheFilterFunction’),
o = n[t.adUnitCode] === t.auctionId,
a = !(i && !o && ‘function’ == typeof r) || !!r(t);
return (
(i || o) &&
a &&
(0, g.A)(t, ‘video.context’) !== l.LM &&
w(t) &&
((t.latestTargetedAuctionId = n[t.adUnitCode]),
e.push(t)),
e
);
}, []);
return I(r, t, void 0, void 0, void 0, i);
}
function B(e, n) {
let i = t.getWinningBids(n, e),
r = O();
return (
(i = i.map(e => ({
[e.adUnitCode]: Object.keys(e.adserverTargeting)
.filter(
t =>
void 0 === e.sendStandardTargeting ||
e.sendStandardTargeting ||
-1 === r.indexOf(t)
)
.reduce((t, n) => {
const i = [e.adserverTargeting[n]],
r = { [n.substring(0, m)]: i };
if (n === a.xS.DEAL) {
const o = `${n}_${e.bidderCode}`.substring(0, m),
s = { [o]: i };
return […t, r, s];
}
return […t, r];
}, [])
}))),
i
);
}
function O() {
return e
.getStandardBidderAdServerTargeting()
.map(e => e.key)
.concat(E)
.filter(f.hj);
}
return (
(t.setLatestAuctionForAdUnit = function(e, t) {
n[e] = t;
}),
(t.resetPresetTargeting = function(e, t) {
if ((0, f.II)()) {
const n = r(e);
Object.values(C(n, t)).forEach(e => {
e.forEach(e => {
!(function(e) {
h.forEach(t => {
e.getTargeting(t) && e.clearTargeting(t);
});
})(e);
});
});
}
}),
(t.resetPresetTargetingAST = function(e) {
r(e).forEach(function(e) {
const t = window.apntag.getTag(e);
if (t && t.keywords) {
const n = Object.keys(t.keywords),
i = {};
n.forEach(e => {
h.includes(e.toLowerCase()) || (i[e] = t.keywords[e]);
}),
window.apntag.modifyTag(e, { keywords: i });
}
});
}),
(t.getAllTargeting = function(t, n, d) {
let c =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: p.Vk,
l =
arguments.length > 4 && void 0 !== arguments[4]
? arguments[4]
: f.Q0;
d ||= A(c, l);
const g = r(t),
E = s.$W.getConfig(‘enableSendAllBids’),
w = s.$W.getConfig(‘sendBidsControl.bidLimit’),
C = (E && (n || w)) || 0,
{ customKeysByUnit: R, filteredBids: S } = (function(e, t) {
const n = [],
i = {},
r = s.$W.getConfig(
‘targetingControls.alwaysIncludeDeals’
);
return (
t.forEach(t => {
const s = e.includes(t.adUnitCode),
a =
!0 === o.u.get(t.bidderCode, ‘allowZeroCpmBids’)
? t.cpm >= 0
: t.cpm > 0,
d = r && t.dealId;
s &&
(d || a) &&
(n.push(t),
Object.keys(t.adserverTargeting)
.filter(
(function() {
let e = O();
e = e.concat(u.Nh);
return function(t) {
return -1 === e.indexOf(t);
};
})()
)
.forEach(e => {
const n = e.substring(0, m),
r = i[t.adUnitCode] || {},
o = [t.adserverTargeting[e]];
r[n]
? (r[n] = r[n].concat(o).filter(f.hj))
: (r[n] = o),
(i[t.adUnitCode] = r);
}));
}),
{ filteredBids: n, customKeysByUnit: i }
);
})(g, d);
let k = (function(t, n, r) {
const o =
!1 !==
s.$W.getConfig(
‘targetingControls.allBidsCustomTargeting’
),
d = B(t, r)
.concat(
(function(e) {
const t = s.$W.getConfig(
‘targetingControls.alwaysIncludeDeals’
);
return i(e, s.$W.getConfig(‘enableSendAllBids’), t);
})(t)
)
.concat(
(function(t) {
function n(e) {
return e?.[a.iD.ADSERVER_TARGETING];
}
function i(e) {
const t = n(e);
return Object.keys(t).map(function(e) {
return (
(0, f.O8)(t[e]) &&
(t[e] = t[e].split(‘,’).map(e => e.trim())),
(0, f.cy)(t[e]) || (t[e] = [t[e]]),
{ [e]: t[e] }
);
});
}
return e
.getAdUnits()
.filter(e => t.includes(e.code) && n(e))
.reduce((e, t) => {
const n = i(t);
return n && e.push({ [t.code]: n }), e;
}, []);
})(r)
);
o &&
d.push(
…(function(e, t) {
return e.reduce((e, n) => {
const i = Object.assign({}, n),
r = t[i.adUnitCode],
o = [];
return (
r &&
Object.keys(r).forEach(e => {
e && r[e] && o.push({ [e]: r[e] });
}),
e.push({ [i.adUnitCode]: o }),
e
);
}, []);
})(t, n)
);
return (
d.forEach(e => {
!(function(e) {
Object.keys(e).forEach(t => {
e[t].forEach(e => {
const t = Object.keys(e);
-1 === h.indexOf(t[0]) && (h = t.concat(h));
});
});
})(e);
}),
d
);
})(I(S, c, C, void 0, l), R, g);
const U = Object.keys(Object.assign({}, a.Zh, a.x5));
let D = s.$W.getConfig(b);
const _ = s.$W.getConfig(y);
if (null != _ && null != D) throw new Error(v);
(D = null != _ ? U.concat(_) : D || U),
Array.isArray(D) &&
D.length > 0 &&
(k = (function(e, t) {
const n = Object.assign({}, a.xS, a.x5),
i = Object.keys(n),
r = {};
(0, f.fH)(
`allowTargetingKeys – allowed keys [ ${t
.map(e => n[e])
.join(‘, ‘)} ]`
),
e.map(e => {
const o = Object.keys(e)[0],
s = e[o].filter(e => {
const o = Object.keys(e)[0],
s =
0 ===
i.filter(e => 0 === o.indexOf(n[e]))
.length ||
t.find(e => {
const t = n[e];
return 0 === o.indexOf(t);
});
return (r[o] = !s), s;
});
e[o] = s;
});
const o = Object.keys(r).filter(e => r[e]);
return (
(0, f.fH)(
`allowTargetingKeys – removed keys [ ${o.join(
‘, ‘
)} ]`
),
e.filter(e => e[Object.keys(e)[0]].length > 0)
);
})(k, D)),
(k = (function(e) {
let t = e.map(e => ({
[Object.keys(e)[0]]: e[Object.keys(e)[0]]
.map(e => ({
[Object.keys(e)[0]]: e[Object.keys(e)[0]].join(‘,’)
}))
.reduce((e, t) => Object.assign(t, e), {})
}));
return (
(t = t.reduce(function(e, t) {
var n = Object.keys(t)[0];
return (e[n] = Object.assign({}, e[n], t[n])), e;
}, {})),
t
);
})(k));
const $ = s.$W.getConfig(
‘targetingControls.auctionKeyMaxChars’
);
return (
$ &&
((0, f.fH)(
`Detected ‘targetingControls.auctionKeyMaxChars’ was active for this auction; set with a limit of ${$} characters. Running checks on auction keys…`
),
(k = (function(e, t) {
let n = (0, f.Go)(e),
i = Object.keys(n)
.map(e => ({
adUnitCode: e,
adserverTargeting: n[e]
}))
.sort(T());
return i.reduce(function(e, i, r, o) {
let s =
((a = i.adserverTargeting),
Object.keys(a).reduce(function(e, t) {
return (
e + `${t}%3d${encodeURIComponent(a[t])}%26`
);
}, ”));
var a;
r + 1 === o.length && (s = s.slice(0, -3));
let d = i.adUnitCode,
c = s.length;
return (
c <= t
? ((t -= c),
(0, f.fH)(
`AdUnit ‘${d}’ auction keys comprised of ${c} characters. Deducted from running threshold; new limit is ${t}`,
n[d]
),
(e[d] = n[d]))
: (0, f.JE)(
`The following keys for adUnitCode ‘${d}’ exceeded the current limit of the ‘auctionKeyMaxChars’ setting.nThe key-set size was ${c}, the current allotted amount was ${t}.n`,
n[d]
),
r + 1 === o.length &&
0 === Object.keys(e).length &&
(0, f.vV)(
‘No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars). Please review setup and consider adjusting.’
),
e
);
}, {});
})(k, $))),
g.forEach(e => {
k[e] || (k[e] = {});
}),
k
);
}),
s.$W.getConfig(‘targetingControls’, function(e) {
null != (0, g.A)(e, b) &&
null != (0, g.A)(e, y) &&
(0, f.vV)(v);
}),
(t.setTargetingForGPT = (0, c.A_)(
‘sync’,
function(n, i) {
let r = t.getAllTargeting(n),
o = Object.fromEntries(h.map(e => [e, null]));
Object.entries(C(Object.keys(r), i)).forEach(e => {
let [t, n] = e;
n.length > 1 &&
(0, f.JE)(
`Multiple slots found matching: ${t}. Targeting will be set on all matching slots, which can lead to duplicate impressions if more than one are requested from GAM. To resolve this, ensure the arguments to setTargetingForGPTAsync resolve to a single slot by explicitly matching the desired slotElementID.`
),
n.forEach(e => {
Object.keys(r[t]).forEach(e => {
let n = r[t][e];
‘string’ == typeof n &&
-1 !== n.indexOf(‘,’) &&
(n = n.split(‘,’)),
(r[t][e] = n);
}),
(0, f.OG)(
`Attempting to set targeting-map for slot: ${e.getSlotElementId()} with targeting-map:`,
r[t]
),
e.updateTargetingFromMap(
Object.assign({}, o, r[t])
);
});
}),
Object.keys(r).forEach(t => {
Object.keys(r[t]).forEach(n => {
‘hb_adid’ === n &&
e.setStatusForBids(r[t][n], a.tl.BID_TARGETING_SET);
});
}),
t.targetingDone(r),
d.Ic(a.qY.SET_TARGETING, r);
},
‘setTargetingForGPT’
)),
(t.targetingDone = (0, c.A_)(
‘sync’,
function(e) {
return e;
},
‘targetingDone’
)),
(t.getWinningBids = function(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: p.Vk,
i =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: f.Q0;
const s = t || A(n, i),
a = r(e);
return s
.filter(e => a.includes(e.adUnitCode))
.filter(e =>
!0 === o.u.get(e.bidderCode, ‘allowZeroCpmBids’)
? e.cpm >= 0
: e.cpm > 0
)
.map(e => e.adUnitCode)
.filter(f.hj)
.map(e =>
s
.filter(t => (t.adUnitCode === e ? t : null))
.reduce(p.Vk)
);
}),
(t.setTargetingForAst = function(e) {
let n = t.getAllTargeting(e);
try {
t.resetPresetTargetingAST(e);
} catch (e) {
(0, f.vV)(‘unable to reset targeting for AST’ + e);
}
Object.keys(n).forEach(e =>
Object.keys(n[e]).forEach(t => {
if (
((0, f.OG)(
`Attempting to set targeting for targetId: ${e} key: ${t} value: ${n[e][t]}`
),
(0, f.O8)(n[e][t]) || (0, f.cy)(n[e][t]))
) {
let i = {},
r = /pt[0-9]/;
t.search(r) < 0
? (i[t.toUpperCase()] = n[e][t])
: (i[t] = n[e][t]),
window.apntag.setKeywords(e, i, {
overrideKeyValue: !0
});
}
})
);
}),
(t.isApntagDefined = function() {
if (window.apntag && (0, f.fp)(window.apntag.setKeywords))
return !0;
}),
t
);
})(i.n);
},
8230: (e, t, n) => {
n.d(t, { qh: () => u, zt: () => g });
var i = n(1069),
r = n(3272),
o = n(2938),
s = n(5139),
a = n(6811),
d = n(2604),
c = n(5569),
l = n(3441);
const u = {
syncEnabled: !0,
filterSettings: { image: { bidders: ‘*’, filter: ‘include’ } },
syncsPerBidder: 5,
syncDelay: 3e3,
auctionDelay: 500
};
r.$W.setDefaults({ userSync: (0, i.Go)(u) });
const f = (0, o.CK)(‘usersync’);
const g = (function(e) {
let t = {},
n = { image: [], iframe: [] },
o = new Set(),
s = {},
u = { image: !0, iframe: !1 },
f = e.config;
function g() {
if (f.syncEnabled && e.browserSupportsCookies) {
try {
!(function() {
if (!u.iframe) return;
p(n.iframe, e => {
let [t, r] = e;
(0, i.OG)(`Invoking iframe user sync for bidder: ${t}`),
(0, i.SG)(r),
(function(e, t) {
e.image = e.image.filter(e => e[0] !== t);
})(n, t);
});
})(),
(function() {
if (!u.image) return;
p(n.image, e => {
let [t, n] = e;
(0, i.OG)(
`Invoking image pixel user sync for bidder: ${t}`
),
(0, i.z$)(n);
});
})();
} catch (e) {
return (0, i.vV)(‘Error firing user syncs’, e);
}
n = { image: [], iframe: [] };
}
}
function p(e, t) {
(0, i.k4)(e).forEach(t);
}
function h(e, t) {
let n = f.filterSettings;
if (
(function(e, t) {
if (e.all && e[t])
return (
(0, i.JE)(
`Detected presence of the “filterSettings.all” and “filterSettings.${t}” in userSync config. You cannot mix “all” with “iframe/image” configs; they are mutually exclusive.`
),
!1
);
let n = e.all ? e.all : e[t],
r = e.all ? ‘all’ : t;
if (!n) return !1;
let o = n.filter,
s = n.bidders;
if (o && ‘include’ !== o && ‘exclude’ !== o)
return (
(0, i.JE)(
`UserSync “filterSettings.${r}.filter” setting ‘${o}’ is not a valid option; use either ‘include’ or ‘exclude’.`
),
!1
);
if (
‘*’ !== s &&
!(
Array.isArray(s) &&
s.length > 0 &&
s.every(e => (0, i.O8)(e) && ‘*’ !== e)
)
)
return (
(0, i.JE)(
`Detected an invalid setup in userSync “filterSettings.${r}.bidders”; use either ‘*’ (to represent all bidders) or an array of bidders.`
),
!1
);
return !0;
})(n, e)
) {
u[e] = !0;
let i = n.all ? n.all : n[e],
r = ‘*’ === i.bidders ? [t] : i.bidders;
const o = {
include: (e, t) => !e.includes(t),
exclude: (e, t) => e.includes(t)
};
return o[i.filter || ‘include’](r, t);
}
return !u[e];
}
return (
r.$W.getConfig(‘userSync’, e => {
if (e.userSync) {
let t = e.userSync.filterSettings;
(0, i.Qd)(t) &&
(t.image ||
t.all ||
(e.userSync.filterSettings.image = {
bidders: ‘*’,
filter: ‘include’
}));
}
f = Object.assign(f, e.userSync);
}),
e.regRule(a.Ml, ‘userSync config’, e => {
if (!f.syncEnabled)
return { allow: !1, reason: ‘syncs are disabled’ };
if (e[d.Dk] === c.tW) {
const n = e[d.bt],
i = e[d.iK];
if (!t.canBidderRegisterSync(n, i))
return {
allow: !1,
reason: `${n} syncs are not enabled for ${i}`
};
}
}),
(t.registerSync = (t, r, u) =>
o.has(r)
? (0, i.OG)(
`already fired syncs for “${r}”, ignoring registerSync call`
)
: f.syncEnabled && (0, i.cy)(n[t])
? r
? 0 !== f.syncsPerBidder &&
Number(s[r]) >= f.syncsPerBidder
? (0, i.JE)(`Number of user syncs exceeded for “${r}”`)
: void (
e.isAllowed(
a.Ml,
(0, l.s)(c.tW, r, { [d.bt]: t, [d.e3]: u })
) &&
(n[t].push([r, u]),
(s = (function(e, t) {
return e[t] ? (e[t] += 1) : (e[t] = 1), e;
})(s, r)))
)
: (0, i.JE)(‘Bidder is required for registering sync’)
: (0, i.JE)(`User sync type “${t}” not supported`)),
(t.bidderDone = o.add.bind(o)),
(t.syncUsers = function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: 0;
if (e) return setTimeout(g, Number(e));
g();
}),
(t.triggerUserSyncs = () => {
f.enableOverride && t.syncUsers();
}),
(t.canBidderRegisterSync = (e, t) =>
!f.filterSettings || !h(e, t)),
t
);
})(
Object.defineProperties(
{
config: r.$W.getConfig(‘userSync’),
isAllowed: s.io,
regRule: s.qB
},
{
browserSupportsCookies: {
get: function() {
return !(0, i.Vt)() && f.cookiesAreEnabled();
}
}
}
)
);
},
1069: (e, t, n) => {
n.d(t, {
$D: () => U,
$z: () => Ue,
Bg: () => Ke,
Bj: () => Qe,
Bk: () => ge,
Bq: () => he,
CA: () => K,
D4: () => me,
D9: () => Le,
Dl: () => Ge,
El: () => Ye,
Et: () => ne,
Ez: () => Y,
Fq: () => We,
GE: () => Se,
Go: () => we,
II: () => ye,
Im: () => oe,
JE: () => F,
Lm: () => re,
N9: () => Re,
O8: () => ee,
OG: () => M,
Ot: () => T,
PB: () => Je,
Q0: () => Ee,
Qd: () => ie,
SB: () => $e,
SG: () => ue,
SH: () => De,
Tz: () => fe,
U6: () => ke,
Up: () => Pe,
Uu: () => Ve,
V: () => Oe,
Vt: () => Te,
YE: () => P,
ZA: () => be,
ZK: () => Ze,
_s: () => ae,
al: () => Ie,
bD: () => He,
bL: () => k,
bz: () => Ne,
c$: () => Fe,
cD: () => w,
cf: () => j,
cy: () => te,
dp: () => J,
fH: () => G,
fp: () => Z,
gM: () => Ce,
h0: () => L,
hj: () => pe,
hw: () => Q,
iC: () => qe,
k4: () => Ae,
kK: () => _,
l4: () => N,
l9: () => je,
lk: () => S,
mM: () => C,
mb: () => q,
nT: () => Xe,
ro: () => le,
s0: () => R,
t1: () => ve,
vE: () => Be,
vV: () => H,
wD: () => _e,
xQ: () => se,
y$: () => D,
z$: () => ce
});
var i = n(3272),
r = n(5751),
o = n(8969),
s = n(5555),
a = n(7873),
d = ‘String’,
c = ‘Function’,
l = ‘Number’,
u = ‘Object’,
f = ‘Boolean’,
g = Object.prototype.toString;
let p,
h,
m = Boolean(window.console),
b = Boolean(m && window.console.log),
y = Boolean(m && window.console.info),
v = Boolean(m && window.console.warn),
E = Boolean(m && window.console.error);
const A = (0, a.m)();
function w(e) {
p = e;
}
function I() {
null != p && p(…arguments);
}
const T = (function() {
let e;
return () => (
(!h || !e || Date.now() – e > 20) &&
(C.resetWinDimensions(), (e = Date.now())),
h
);
})();
const C = {
checkCookieSupport: Se,
createTrackPixelIframeHtml: function(e) {
let t =
!(arguments.length > 1 && void 0 !== arguments[1]) ||
arguments[1],
n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: ”;
if (!e) return ”;
t && (e = encodeURI(e));
n && (n = `sandbox=”${n}”`);
return “;
},
getWindowSelf: N,
getWindowTop: q,
canAccessWindowTop: V,
getWindowLocation: W,
insertUserSyncIframe: ue,
insertElement: ae,
isFn: Z,
triggerPixel: ce,
logError: H,
logWarn: F,
logMessage: M,
logInfo: G,
parseQS: Me,
formatQS: function(e) {
return Object.keys(e)
.map(t =>
Array.isArray(e[t])
? e[t].map(e => `${t}[]=${e}`).join(‘&’)
: `${t}=${e[t]}`
)
.join(‘&’);
},
deepEqual: He,
resetWinDimensions: function() {
const e = V() ? C.getWindowTop() : C.getWindowSelf();
h = {
screen: {
width: e.screen?.width,
height: e.screen?.height,
availWidth: e.screen?.availWidth,
availHeight: e.screen?.availHeight,
colorDepth: e.screen?.colorDepth
},
innerHeight: e.innerHeight,
innerWidth: e.innerWidth,
outerWidth: e.outerWidth,
outerHeight: e.outerHeight,
visualViewport: {
height: e.visualViewport?.height,
width: e.visualViewport?.width
},
document: {
documentElement: {
clientWidth: e.document?.documentElement?.clientWidth,
clientHeight: e.document?.documentElement?.clientHeight,
scrollTop: e.document?.documentElement?.scrollTop,
scrollLeft: e.document?.documentElement?.scrollLeft
},
body: {
scrollTop: document.body?.scrollTop,
scrollLeft: document.body?.scrollLeft,
clientWidth: document.body?.clientWidth,
clientHeight: document.body?.clientHeight
}
}
};
}
};
var B,
O =
((B = 0),
function() {
return ++B;
});
function R() {
return (
O() +
Math.random()
.toString(16)
.substr(2)
);
}
function S(e) {
return e
? (
e ^
((window && window.crypto && window.crypto.getRandomValues
? crypto.getRandomValues(new Uint8Array(1))[0] % 16
: 16 * Math.random()) >>
(e / 4))
).toString(16)
: ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, S);
}
function k(e) {
let t = ”;
for (var n in e)
e.hasOwnProperty(n) &&
(t += n + ‘=’ + encodeURIComponent(e[n]) + ‘&’);
return (t = t.replace(/&$/, ”)), t;
}
function U(e) {
return e && Object.getOwnPropertyNames(e).length > 0
? Object.keys(e)
.map(t => `${t}=${encodeURIComponent(e[t])}`)
.join(‘&’)
: ”;
}
function D(e) {
return ‘string’ == typeof e
? e
.split(/s*,s*/)
.map(e => e.match(/^(d+)x(d+)$/i))
.filter(e => e)
.map(e => {
let [t, n, i] = e;
return [parseInt(n, 10), parseInt(i, 10)];
})
: Array.isArray(e)
? x(e)
? [e]
: e.filter(x)
: [];
}
function _(e) {
return D(e).map($);
}
function $(e) {
return e[0] + ‘x’ + e[1];
}
function j(e) {
return { w: e[0], h: e[1] };
}
function x(e) {
return te(e) && 2 === e.length && !isNaN(e[0]) && !isNaN(e[1]);
}
function q() {
return window.top;
}
function N() {
return window.self;
}
function W() {
return window.location;
}
function P() {
return document;
}
function V() {
try {
if (C.getWindowTop().location.href) return !0;
} catch (e) {
return !1;
}
}
function M() {
J() && b && console.log.apply(console, z(arguments, ‘MESSAGE:’));
}
function G() {
J() && y && console.info.apply(console, z(arguments, ‘INFO:’));
}
function F() {
J() && v && console.warn.apply(console, z(arguments, ‘WARNING:’)),
I(o.qY.AUCTION_DEBUG, { type: ‘WARNING’, arguments });
}
function H() {
J() && E && console.error.apply(console, z(arguments, ‘ERROR:’)),
I(o.qY.AUCTION_DEBUG, { type: ‘ERROR’, arguments });
}
function L(e) {
function t(t) {
return function() {
for (
var n = arguments.length, i = new Array(n), r = 0;
r < n;
r++
)
i[r] = arguments[r];
t(e, …i);
};
}
return {
logError: t(H),
logWarn: t(F),
logMessage: t(M),
logInfo: t(G)
};
}
function z(e, t) {
e = [].slice.call(e);
let n = i.$W.getCurrentBidder();
return (
t && e.unshift(t),
n && e.unshift(r(‘#aaa’)),
e.unshift(r(‘#3b88c3’)),
e.unshift(‘%cPrebid’ + (n ? `%c${n}` : ”)),
e
);
function r(e) {
return `display: inline-block; color: #fff; background: ${e}; padding: 1px 4px; border-radius: 3px;`;
}
}
function J() {
return !!i.$W.getConfig(‘debug’);
}
const Q = (() => {
const e = {
border: ‘0px’,
hspace: ‘0’,
vspace: ‘0’,
marginWidth: ‘0’,
marginHeight: ‘0’,
scrolling: ‘no’,
frameBorder: ‘0’,
allowtransparency: ‘true’
};
return function(t, n) {
let i =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
const r = t.createElement(‘iframe’);
return (
Object.assign(r, Object.assign({}, e, n)),
Object.assign(r.style, i),
r
);
};
})();
function K() {
return Q(
document,
{ id: R(), width: 0, height: 0, src: ‘about:blank’ },
{ display: ‘none’, height: ‘0px’, width: ‘0px’, border: ‘0px’ }
);
}
function Y(e) {
return Me(W().search)[e] || ”;
}
function X(e, t) {
return g.call(e) === ‘[object ‘ + t + ‘]’;
}
function Z(e) {
return X(e, c);
}
function ee(e) {
return X(e, d);
}
const te = Array.isArray.bind(Array);
function ne(e) {
return X(e, l);
}
function ie(e) {
return X(e, u);
}
function re(e) {
return X(e, f);
}
function oe(e) {
return (
!e ||
(te(e) || ee(e) ? !(e.length > 0) : Object.keys(e).length <= 0)
);
}
function se(e) {
return ee(e) && (!e || 0 === e.length);
}
function ae(e, t, n, i) {
let r;
(t = t || document),
(r = n
? t.getElementsByTagName(n)
: t.getElementsByTagName(‘head’));
try {
if (
((r = r.length ? r : t.getElementsByTagName(‘body’)),
r.length)
) {
r = r[0];
let t = i ? null : r.firstChild;
return r.insertBefore(e, t);
}
} catch (e) {}
}
function de(e, t) {
let n = null;
return new s.U9(i => {
const r = function() {
e.removeEventListener(‘load’, r),
e.removeEventListener(‘error’, r),
null != n && window.clearTimeout(n),
i();
};
e.addEventListener(‘load’, r),
e.addEventListener(‘error’, r),
null != t && (n = window.setTimeout(r, t));
});
}
function ce(e, t, n) {
const i = new Image();
t && C.isFn(t) && de(i, n).then(t), (i.src = e);
}
function le(e) {
if (!e) return;
const t = K();
var n;
C.insertElement(t, document, ‘body’),
(n = t.contentWindow.document).open(),
n.write(e),
n.close();
}
function ue(e, t, n) {
let i = C.createTrackPixelIframeHtml(
e,
!1,
‘allow-scripts allow-same-origin’
),
r = document.createElement(‘div’);
r.innerHTML = i;
let o = r.firstChild;
t && C.isFn(t) && de(o, n).then(t),
C.insertElement(o, document, ‘html’, !0);
}
function fe(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: encodeURI;
if (!e) return ”;
let n =

‘;
return (n += ‘

‘), n;
}
function ge(e) {
return Array.from(e.matchAll(/$({[^}]+})/g))
.map(e => e[1])
.reduce(
(e, t) => e.replace(‘$’ + encodeURIComponent(t), ‘$’ + t),
encodeURI(e)
);
}
function pe(e, t, n) {
return n.indexOf(e) === t;
}
function he(e, t) {
return e.concat(t);
}
function me(e, t) {
if (e)
return t
.flatMap(e => e.bids)
.find(t => [‘bidId’, ‘adId’, ‘bid_id’].some(n => t[n] === e));
}
function be() {
return (arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: A.adUnits
)
.map(e => e.bids.map(e => e.bidder).reduce(he, []))
.reduce(he, [])
.filter(e => void 0 !== e)
.filter(pe);
}
function ye() {
if (
window.googletag &&
Z(window.googletag.pubads) &&
Z(window.googletag.pubads().getSlots)
)
return !0;
}
function ve() {
if (window.apntag && Z(window.apntag.getTag)) return !0;
}
const Ee = (e, t) => t.cpm – e.cpm;
function Ae(e) {
let t = e.length;
for (; t > 0; ) {
let n = Math.floor(Math.random() * t);
t–;
let i = e[t];
(e[t] = e[n]), (e[n] = i);
}
return e;
}
function we(e) {
return (0, r.Q)(e) || {};
}
function Ie() {
try {
return C.getWindowSelf() !== C.getWindowTop();
} catch (e) {
return !0;
}
}
function Te() {
return /^((?!chrome|android|crios|fxios).)*safari/i.test(
navigator.userAgent
);
}
function Ce(e, t) {
if (e)
return Object.entries(t).reduce((e, t) => {
let [n, i] = t;
return e.replace(
new RegExp(‘\$\{‘ + n + ‘\}’, ‘g’),
i || ”
);
}, e);
}
function Be() {
return new Date().getTime();
}
function Oe() {
return (
(window.performance &&
window.performance.now &&
window.performance.now()) ||
0
);
}
function Re() {
return !1 !== i.$W.getConfig(‘deviceAccess’);
}
function Se() {
if (window.navigator.cookieEnabled || document.cookie.length)
return !0;
}
function ke(e, t) {
if (t < 1)
throw new Error(
`numRequiredCalls must be a positive number. Got ${t}`
);
let n = 0;
return function() {
n++, n === t && e.apply(this, arguments);
};
}
function Ue(e, t) {
return e.reduce(function(e, n) {
return (e[n[t]] = e[n[t]] || []).push(n), e;
}, {});
}
function De(e, t) {
return t
.filter(t => e[t])
.reduce((t, n) => Object.assign(t, { [n]: e[n] }), {});
}
function _e(e) {
const t = [‘banner’, ‘native’, ‘video’],
n = [‘instream’, ‘outstream’, ‘adpod’];
return (
!!Object.keys(e).every(e => t.includes(e)) &&
(!e.video || !e.video.context || n.includes(e.video.context))
);
}
function $e(e, t, n) {
return e
.filter(e => e.code === t)
.flatMap(e => e.bids)
.filter(e => e.bidder === n)
.map(e => e.params || {});
}
function je() {
return (
‘1’ === navigator.doNotTrack ||
‘1’ === window.doNotTrack ||
‘1’ === navigator.msDoNotTrack ||
‘yes’ === navigator.doNotTrack
);
}
const xe = (e, t) =>
e.getAdUnitPath() === t || e.getSlotElementId() === t;
function qe(e) {
return t => xe(e, t);
}
function Ne(e, t) {
const n = Object.keys(e.mediaTypes || { banner: ‘banner’ }).join(
‘, ‘
);
return `n ${e.code} is a ${n} ad unitn containing bidders that don’t support ${n}: ${t}.n This bidder won’t fetch demand.n `;
}
const We = Number.isInteger.bind(Number);
function Pe(e, t) {
return ‘object’ != typeof e
? {}
: t.reduce((n, i, r) => {
if (‘function’ == typeof i) return n;
let o = i,
s = i.match(/^(.+?)sass(.+?)$/i);
s && ((i = s[1]), (o = s[2]));
let a = e[i];
return (
‘function’ == typeof t[r + 1] && (a = t[r + 1](a, n)),
void 0 !== a && (n[o] = a),
n
);
}, {});
}
function Ve(e, t) {
return te(e) && (!t || e.length === t) && e.every(e => We(e));
}
function Me(e) {
return e
? e
.replace(/^?/, ”)
.split(‘&’)
.reduce((e, t) => {
let [n, i] = t.split(‘=’);
return (
/[]$/.test(n)
? ((n = n.replace(‘[]’, ”)),
(e[n] = e[n] || []),
e[n].push(i))
: (e[n] = i || ”),
e
);
}, {})
: {};
}
function Ge(e, t) {
let n = document.createElement(‘a’);
t && ‘noDecodeWholeURL’ in t && t.noDecodeWholeURL
? (n.href = e)
: (n.href = decodeURIComponent(e));
let i =
t && ‘decodeSearchAsString’ in t && t.decodeSearchAsString;
return {
href: n.href,
protocol: (n.protocol || ”).replace(/:$/, ”),
hostname: n.hostname,
port: +n.port,
pathname: n.pathname.replace(/^(?!/)/, ‘/’),
search: i ? n.search : C.parseQS(n.search || ”),
hash: (n.hash || ”).replace(/^#/, ”),
host: n.host || window.location.host
};
}
function Fe(e) {
return (
(e.protocol || ‘http’) +
‘://’ +
(e.host || e.hostname + (e.port ? `:${e.port}` : ”)) +
(e.pathname || ”) +
(e.search ? `?${C.formatQS(e.search || ”)}` : ”) +
(e.hash ? `#${e.hash}` : ”)
);
}
function He(e, t) {
let { checkTypes: n = !1 } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
if (e === t) return !0;
if (
‘object’ != typeof e ||
null === e ||
‘object’ != typeof t ||
null === t
)
return !1;
const i = Array.isArray(e),
r = Array.isArray(t);
if (i && r) {
if (e.length !== t.length) return !1;
for (let i = 0; i < e.length; i++)
if (!He(e[i], t[i], { checkTypes: n })) return !1;
return !0;
}
if (i || r) return !1;
if (n && e.constructor !== t.constructor) return !1;
const o = Object.keys(e),
s = Object.keys(t);
if (o.length !== s.length) return !1;
for (const i of o) {
if (!Object.prototype.hasOwnProperty.call(t, i)) return !1;
if (!He(e[i], t[i], { checkTypes: n })) return !1;
}
return !0;
}
function Le(e) {
for (
let t = 0;
t < (arguments.length <= 1 ? 0 : arguments.length – 1);
t++
) {
const n =
t + 1 < 1 || arguments.length <= t + 1
? void 0
: arguments[t + 1];
ie(n) && ze(e, n);
}
return e;
}
function ze(e, t) {
if (!ie(e) || !ie(t)) return;
const n = Object.keys(t);
for (let i = 0; i < n.length; i++) {
const r = n[i];
if (‘__proto__’ === r || ‘constructor’ === r) continue;
const o = t[r];
ie(o)
? (e[r] || (e[r] = {}), ze(e[r], o))
: Array.isArray(o)
? Array.isArray(e[r])
? o.forEach(t => {
e[r].some(e => He(e, t)) || e[r].push(t);
})
: (e[r] = […o])
: (e[r] = o);
}
}
function Je(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: 0,
n = function(e, t) {
if (Z(Math.imul)) return Math.imul(e, t);
var n = (4194303 & e) * (t |= 0);
return (
4290772992 & e && (n += ((4290772992 & e) * t) | 0), 0 | n
);
},
i = 3735928559 ^ t,
r = 1103547991 ^ t;
for (let t, o = 0; o < e.length; o++)
(t = e.charCodeAt(o)),
(i = n(i ^ t, 2654435761)),
(r = n(r ^ t, 1597334677));
return (
(i =
n(i ^ (i >>> 16), 2246822507) ^
n(r ^ (r >>> 13), 3266489909)),
(r =
n(r ^ (r >>> 16), 2246822507) ^
n(i ^ (i >>> 13), 3266489909)),
(4294967296 * (2097151 & r) + (i >>> 0)).toString()
);
}
function Qe(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: function(e) {
return e;
};
const n = new Map(),
i = function() {
const i = t.apply(this, arguments);
return (
n.has(i) || n.set(i, e.apply(this, arguments)), n.get(i)
);
};
return (i.clear = n.clear.bind(n)), i;
}
function Ke(e, t) {
Object.entries(t).forEach(t => {
let [n, i] = t;
return e.setAttribute(n, i);
});
}
function Ye(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: e => e,
i = 0,
r = e.length && e.length – 1;
const o = n(t);
for (; r – i > 1; ) {
const t = i + Math.round((r – i) / 2);
o > n(e[t]) ? (i = t) : (r = t);
}
for (; e.length > i && o > n(e[i]); ) i++;
return i;
}
const Xe = (function() {
let e;
return function() {
if (void 0 !== e) return e;
try {
void 0 === window.CompressionStream
? (e = !1)
: (new window.CompressionStream(‘gzip’), (e = !0));
} catch (t) {
e = !1;
}
return e;
};
})();
async function Ze(e) {
‘string’ != typeof e && (e = JSON.stringify(e));
const t = new TextEncoder().encode(e),
n = new Blob([t])
.stream()
.pipeThrough(new window.CompressionStream(‘gzip’)),
i = await new Response(n).blob(),
r = await i.arrayBuffer();
return new Uint8Array(r);
}
},
2621: (e, t, n) => {
function i(e) {
return (
!e?.gdprApplies || !0 === e?.vendorData?.purpose?.consents?.[1]
);
}
n.d(t, { C: () => i });
},
6894: (e, t, n) => {
n.d(t, { Ak: () => m, BO: () => g, K7: () => p });
var i = n(3272);
const r = ‘performanceMetrics’,
o =
window.performance && window.performance.now
? () => window.performance.now()
: () => Date.now(),
s = new WeakMap();
function a() {
let {
now: e = o,
mkNode: t = l,
mkTimer: n = c,
mkRenamer: i = e => e,
nodes: r = s
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return function() {
return (function o(s) {
let a =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: e => ({
forEach(t) {
t(e);
}
});
a = i(a);
const d =
((c = ‘timestamps’),
function(e) {
return s.dfWalk({
visit(t, n) {
const i = n[c];
if (i.hasOwnProperty(e)) return i[e];
}
});
});
var c;
function l(e, t) {
const n = a(e);
s.dfWalk({
follow: (e, t) =>
t.propagate && (!e || !e.stopPropagation),
visit(e, i) {
n.forEach(n => {
null == e
? (i.metrics[n] = t)
: (i.groups.hasOwnProperty(n) || (i.groups[n] = []),
i.groups[n].push(t));
});
}
});
}
function u(t) {
return n(e, e => l(t, e));
}
function f() {
let e = {};
return (
s.dfWalk({
visit(t, n) {
e = Object.assign(
{},
!t || t.includeGroups ? n.groups : null,
n.metrics,
e
);
}
}),
e
);
}
const g = {
startTiming: u,
measureTime: function(e, t) {
return u(e).stopAfter(t)();
},
measureHookTime: function(e, t, n) {
const i = u(e);
return n(
(function(e) {
const t = i.stopBefore(e);
return (
(t.bail = e.bail && i.stopBefore(e.bail)),
(t.stopTiming = i),
(t.untimed = e),
t
);
})(t)
);
},
checkpoint: function(t) {
s.timestamps[t] = e();
},
timeSince: function(t, n) {
const i = d(t),
r = null != i ? e() – i : null;
return null != n && l(n, r), r;
},
timeBetween: function(e, t, n) {
const i = d(e),
r = d(t),
o = null != i && null != r ? r – i : null;
return null != n && l(n, o), o;
},
setMetric: l,
getMetrics: f,
fork: function() {
let {
propagate: e = !0,
stopPropagation: n = !1,
includeGroups: i = !1
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return o(
t([
[
s,
{
propagate: e,
stopPropagation: n,
includeGroups: i
}
]
]),
a
);
},
join: function(e) {
let {
propagate: t = !0,
stopPropagation: n = !1,
includeGroups: i = !1
} =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
const o = r.get(e);
null != o &&
o.addParent(s, {
propagate: t,
stopPropagation: n,
includeGroups: i
});
},
newMetrics: function() {
return o(s.newSibling(), a);
},
renameWith: function(e) {
return o(s, e);
},
toJSON: () => f()
};
return r.set(g, s), g;
})(t([]));
};
}
function d(e, t, n) {
return function() {
t && t();
try {
return e.apply(this, arguments);
} finally {
n && n();
}
};
}
function c(e, t) {
const n = e();
let i = !1;
function r() {
i || (t(e() – n), (i = !0));
}
return (
(r.stopBefore = e => d(e, r)),
(r.stopAfter = e => d(e, null, r)),
r
);
}
function l(e) {
return {
metrics: {},
timestamps: {},
groups: {},
addParent(t, n) {
e.push([t, n]);
},
newSibling: () => l(e.slice()),
dfWalk() {
let t,
{
visit: n,
follow: i = () => !0,
visited: r = new Set(),
inEdge: o
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
if (!r.has(this)) {
if ((r.add(this), (t = n(o, this)), null != t)) return t;
for (const [s, a] of e)
if (
i(o, a) &&
((t = s.dfWalk({
visit: n,
follow: i,
visited: r,
inEdge: a
})),
null != t)
)
return t;
}
}
};
}
const u = (() => {
const e = function() {},
t = () => ({}),
n = { forEach: e },
i = () => null;
(i.stopBefore = e => e), (i.stopAfter = e => e);
const r = Object.defineProperties(
{ dfWalk: e, newSibling: () => r, addParent: e },
Object.fromEntries(
[‘metrics’, ‘timestamps’, ‘groups’].map(e => [e, { get: t }])
)
);
return a({
now: () => 0,
mkNode: () => r,
mkRenamer: () => () => n,
mkTimer: () => i,
nodes: { get: e, set: e }
})();
})();
let f = !0;
function g(e) {
return (f && e) || u;
}
i.$W.getConfig(r, e => {
f = !!e[r];
});
const p = (() => {
const e = a();
return function() {
return f ? e() : u;
};
})();
function h(e, t) {
return function(n, i) {
return function(r) {
for (
var o = arguments.length,
s = new Array(o > 1 ? o – 1 : 0),
a = 1;
a < o;
a++
)
s[a – 1] = arguments[a];
const d = this;
return g(t.apply(d, s)).measureHookTime(e + n, r, function(
e
) {
return i.call(d, e, …s);
});
};
};
}
const m = h(‘requestBids.’, e => e.metrics);
h(‘addBidResponse.’, (e, t) => t.metrics);
},
5555: (e, t, n) => {
n.d(t, { U9: () => s, cb: () => a, v6: () => d });
var i = n(43),
r = n(7873);
const o = (0, r.m)().setTimeout ?? i.w,
s = (0, r.m)().Promise ?? i.k;
function a() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: 0;
return new s(t => {
o(t, e);
});
}
function d() {
let e,
t,
{ promiseFactory: n = e => new s(e) } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
function i(e) {
return t => e(t);
}
return {
promise: n((n, i) => {
(e = n), (t = i);
}),
resolve: i(e),
reject: i(t)
};
}
},
2713: (e, t, n) => {
function i(e, t) {
return e === t ? 0 : e < t ? -1 : 1;
}
function r() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: e => e;
return (t, n) => i(e(t), e(n));
}
function o() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: i;
return (t, n) => -e(t, n) || 0;
}
function s() {
for (
var e = arguments.length, t = new Array(e), n = 0;
n < e;
n++
)
t[n] = arguments[n];
return function(e, n) {
for (const i of t) {
const t = i(e, n);
if (0 !== t) return t;
}
return 0;
};
}
function a() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: i;
return (t, n) => (e(n, t) < 0 ? n : t);
}
function d() {
return a(
o(
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: i
)
);
}
n.d(t, { Bp: () => a, Bq: () => f, NV: () => r, Vk: () => u });
const c = r(e => e.cpm),
l = r(e => e.responseTimestamp),
u = d(s(c, o(r(e => e.timeToRespond)))),
f = d(s(c, o(l)));
d(s(c, l));
},
6853: (e, t, n) => {
n.d(t, { H: () => l });
var i = n(5555),
r = n(1069);
let o = null,
s = 0,
a = [];
function d() {
document.hidden
? (o = Date.now())
: ((s += Date.now() – (o ?? 0)),
(o = null),
a.forEach(e => {
let { callback: t, startTime: n, setTimerId: i } = e;
return i(c(t, s – n)());
}),
(a = []));
}
function c(e, t) {
const n = s;
let i = setTimeout(() => {
s === n && null == o
? e()
: null != o
? a.push({
callback: e,
startTime: n,
setTimerId(e) {
i = e;
}
})
: (i = c(e, s – n)());
}, t);
return () => i;
}
function l() {
let {
startTime: e = r.vE,
ttl: t = () => null,
monotonic: n = !1,
slack: o = 5e3
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const s = new Map(),
a = [],
d = [],
l = n
? e => d.push(e)
: e =>
d.splice(
(0, r.El)(d, e, e => e.expiry),
0,
e
);
let u, f;
function g() {
if ((f && clearTimeout(f), d.length > 0)) {
const e = (0, r.vE)();
(u = Math.max(e, d[0].expiry + o)),
(f = c(() => {
const e = (0, r.vE)();
let t = 0;
for (const n of d) {
if (n.expiry > e) break;
a.forEach(e => {
try {
e(n.item);
} catch (e) {
(0, r.vV)(e);
}
}),
s.delete(n.item),
t++;
}
d.splice(0, t), (f = null), g();
}, u – e));
} else f = null;
}
function p(n) {
const r = {},
s = h;
let a;
const [d, c] = Object.entries({ start: e, delta: t }).map(e => {
let t,
[d, c] = e;
return function() {
const e = (t = {});
i.U9.resolve(c(n)).then(n => {
e === t &&
((r[d] = n),
s === h &&
null != r.start &&
null != r.delta &&
((a = r.start + r.delta),
l(p),
(null == f || u > a + o) && g()));
});
};
}),
p = {
item: n,
refresh: c,
get expiry() {
return a;
}
};
return d(), c(), p;
}
let h = {};
return {
[Symbol.iterator]: () => s.keys(),
add(e) {
!s.has(e) && s.set(e, p(e));
},
clear() {
(d.length = 0), g(), s.clear(), (h = {});
},
toArray: () => Array.from(s.keys()),
refresh() {
(d.length = 0), g();
for (const e of s.values()) e.refresh();
},
onExpiry: e => (
a.push(e),
() => {
const t = a.indexOf(e);
t >= 0 && a.splice(t, 1);
}
)
};
}
document.addEventListener(‘visibilitychange’, d);
},
3895: (e, t, n) => {
n.d(t, {
H6: () => a,
V0: () => c,
Zy: () => d,
aP: () => l,
vk: () => u
});
var i = n(1069),
r = n(3272),
o = n(9214),
s = n(6881);
const a = ‘outstream’,
d = new Map([
[
‘mimes’,
e =>
Array.isArray(e) &&
e.length > 0 &&
e.every(e => ‘string’ == typeof e)
],
[‘minduration’, i.Fq],
[‘maxduration’, i.Fq],
[‘startdelay’, i.Fq],
[‘maxseq’, i.Fq],
[‘poddur’, i.Fq],
[‘protocols’, i.Uu],
[‘w’, i.Fq],
[‘h’, i.Fq],
[‘podid’, i.O8],
[‘podseq’, i.Fq],
[‘rqddurs’, i.Uu],
[‘placement’, i.Fq],
[‘plcmt’, i.Fq],
[‘linearity’, i.Fq],
[‘skip’, e => [1, 0].includes(e)],
[‘skipmin’, i.Fq],
[‘skipafter’, i.Fq],
[‘sequence’, i.Fq],
[‘slotinpod’, i.Fq],
[‘mincpmpersec’, i.Et],
[‘battr’, i.Uu],
[‘maxextended’, i.Fq],
[‘minbitrate’, i.Fq],
[‘maxbitrate’, i.Fq],
[‘boxingallowed’, i.Fq],
[‘playbackmethod’, i.Uu],
[‘playbackend’, i.Fq],
[‘delivery’, i.Uu],
[‘pos’, i.Fq],
[‘api’, i.Uu],
[‘companiontype’, i.Uu],
[‘poddedupe’, i.Uu]
]);
function c(e) {
const t = e?.mediaTypes?.video;
null != t &&
null == t.plcmt &&
(t.context === a || [2, 3, 4].includes(t.placement)
? (t.plcmt = 4)
: t.context !== a &&
[2, 6].includes(t.playbackmethod) &&
(t.plcmt = 2));
}
function l(e, t) {
const n = e?.mediaTypes?.video;
(0, i.Qd)(n)
? null != n &&
Object.entries(n).forEach(r => {
let [o, s] = r;
if (!d.has(o)) return;
d.get(o)(s) ||
(‘function’ == typeof t
? t(o, s, e)
: (delete n[o],
(0, i.JE)(
`Invalid prop in adUnit “${e.code}”: Invalid value for mediaTypes.video.${o} ORTB property. The property has been removed.`
)));
})
: (0, i.JE)(
‘validateOrtbVideoFields: videoParams must be an object.’
);
}
function u(e) {
let { index: t = s.n.index } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
const n = t.getMediaTypes(e)?.video,
i = n && n?.context,
r = n && n?.useCacheKey,
o = t.getAdUnit(e);
return f(e, o, n, i, r);
}
const f = (0, o.A_)(
‘sync’,
function(e, t, n, o, s) {
if (n && (s || o !== a)) {
const { url: t, useLocal: n } = r.$W.getConfig(‘cache’) || {};
return t || n || !e.vastXml || e.vastUrl
? !(!e.vastUrl && !e.vastXml)
: ((0, i.vV)(
‘n This bid contains only vastXml and will not work when a prebid cache url is not specified.n Try enabling either prebid cache with tlpbjs.setConfig({ cache: {url: “…”} });n or local cache with tlpbjs.setConfig({ cache: { useLocal: true }});n ‘
),
!1);
}
return (
!(o === a && !s) ||
!!(e.renderer || (t && t.renderer) || n.renderer)
);
},
‘checkVideoBidSetup’
);
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[769],
{
8944: (t, e, n) => {
n.d(e, { M: () => i });
var c = n(1069);
function i() {
const t = (0, c.Ot)();
try {
const e =
t.innerHeight ||
t.document.documentElement.clientHeight ||
t.document.body.clientHeight ||
0;
return {
width:
t.innerWidth ||
t.document.documentElement.clientWidth ||
t.document.body.clientWidth ||
0,
height: e
};
} catch (t) {
return {};
}
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[139],
{
43: (t, e, n) => {
n.d(e, { k: () => c, w: () => r });
const s = 0,
l = 1;
class c {
#t;
#e;
constructor(t) {
if (‘function’ != typeof t)
throw new Error(‘resolver not a function’);
const e = [],
n = [];
let [c, r] = [s, l].map(
t =>
function(l) {
if (t === s && ‘function’ == typeof l?.then) l.then(c, r);
else if (!e.length)
for (e.push(t, l); n.length; ) n.shift()();
}
);
try {
t(c, r);
} catch (t) {
r(t);
}
(this.#t = e), (this.#e = n);
}
then(t, e) {
const n = this.#t;
return new this.constructor((l, c) => {
const r = () => {
let r = n[1],
[h, i] = n[0] === s ? [t, l] : [e, c];
if (‘function’ == typeof h) {
try {
r = h(r);
} catch (t) {
return void c(t);
}
i = l;
}
i(r);
};
n.length ? r() : this.#e.push(r);
});
}
catch(t) {
return this.then(null, t);
}
finally(t) {
let e;
return this.then(
n => ((e = n), t()),
n => ((e = this.constructor.reject(n)), t())
).then(() => e);
}
static #n(t, e, n) {
let s = t.length;
function l() {
e.apply(this, arguments), –s <= 0 && n && n();
}
0 === t.length && n
? n()
: t.forEach((t, e) =>
this.resolve(t).then(
t => l(!0, t, e),
t => l(!1, t, e)
)
);
}
static race(t) {
return new this((e, n) => {
this.#n(t, (t, s) => (t ? e(s) : n(s)));
});
}
static all(t) {
return new this((e, n) => {
let s = [];
this.#n(
t,
(t, e, l) => (t ? (s[l] = e) : n(e)),
() => e(s)
);
});
}
static allSettled(t) {
return new this(e => {
let n = [];
this.#n(
t,
(t, e, s) =>
(n[s] = t
? { status: ‘fulfilled’, value: e }
: { status: ‘rejected’, reason: e }),
() => e(n)
);
});
}
static resolve(t) {
return new this(e => e(t));
}
static reject(t) {
return new this((e, n) => n(t));
}
}
function r(t) {
let e =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: 0;
if (e > 0) return setTimeout(t, e);
t();
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[85],
{
4595: (e, t, n) => {
n.d(t, { G: () => s });
const s =
‘(()=>{“use strict”;window.render=function({ad:e,adUrl:t,width:n,height:i,instl:d},{mkFrame:r},s){if(!e&&!t)throw{reason:”noAd”,message:”Missing ad markup or URL”};{if(null==i){const e=s.document?.body;[e,e?.parentElement].filter((e=>null!=e?.style)).forEach((e=>e.style.height=”100%”))}const h=s.document,o={width:n??”100%”,height:i??”100%”};if(t&&!e?o.src=t:o.srcdoc=e,h.body.appendChild(r(h,o)),d&&s.frameElement){const e=s.frameElement.style;e.width=n?`${n}px`:”100vw”,e.height=i?`${i}px`:”100vh”}}}})();’;
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[109],
{
965: (t, e, n) => {
n.d(e, { c5: () => o });
var a = n(5555);
const l = 0,
c = 1,
r = 2;
function o(t) {
let {
apiName: e,
apiVersion: n,
apiArgs: o = [‘command’, ‘callback’, ‘parameter’, ‘version’],
callbackArgs: s = [‘returnValue’, ‘success’],
mode: i = l
} = t,
u =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: window;
const f = {},
d = `${e}Call`,
p = `${e}Return`;
function b(t) {
const e =
‘string’ == typeof t.data && t.data.includes(p)
? JSON.parse(t.data)
: t.data;
if (e?.[p]?.callId) {
const t = e[p];
f.hasOwnProperty(t.callId) &&
f[t.callId](…s.map(e => t[e]));
}
}
const [k, m] = (function() {
let t,
n = u,
a = !1;
for (; null != n; ) {
try {
if (‘function’ == typeof n[e]) {
(t = n), (a = !0);
break;
}
} catch (t) {}
try {
if (n.frames[`${e}Locator`]) {
t = n;
break;
}
} catch (t) {}
if (n === u.top) break;
n = n.parent;
}
return [t, a];
})();
if (!k) return;
function g(t) {
return (
(t = Object.assign({ version: n }, t)), o.map(e => [e, t[e]])
);
}
function h(t, e, n, a) {
const l = ‘function’ == typeof t;
return function(r, o) {
if ((a && a(), i !== c)) {
(null == o || o ? e : n)(l ? void 0 : r);
}
l && t.apply(this, arguments);
};
}
let v;
return (
m
? (v = function() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return new a.U9((n, a) => {
const o = k[e](
…g({
…t,
callback:
t.callback || i === r
? h(t.callback, n, a)
: void 0
}).map(t => {
let [e, n] = t;
return n;
})
);
(i === c || (null == t.callback && i === l)) && n(o);
});
})
: (u.addEventListener(‘message’, b, !1),
(v = function(t) {
let e =
arguments.length > 1 &&
void 0 !== arguments[1] &&
arguments[1];
return new a.U9((n, a) => {
const l = Math.random().toString(),
r = {
[d]: {
…Object.fromEntries(
g(t).filter(t => {
let [e] = t;
return ‘callback’ !== e;
})
),
callId: l
}
};
(f[l] = h(
t?.callback,
n,
a,
(e || null == t?.callback) &&
(() => {
delete f[l];
})
)),
k.postMessage(r, ‘*’),
i === c && n();
});
})),
Object.assign(v, {
isDirect: m,
close() {
!m && u.removeEventListener(‘message’, b);
}
})
);
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[10],
{
3806: (t, n, e) => {
e.d(n, { yq: () => c });
var o = e(6894),
a = e(1069),
s = e(7873),
i = e(5555),
r = e(2604);
function c() {
let t,
n,
e,
{
namespace: c,
displayName: l,
consentDataHandler: u,
parseConsentData: m,
getNullConsent: d,
cmpHandlers: f,
DEFAULT_CMP: g = ‘iab’,
DEFAULT_CONSENT_TIMEOUT: p = 1e4
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
function C(t) {
return `consentManagement.${c} ${t}`;
}
function D(t, n) {
return t(
Object.assign({ [`${c}Consent`]: u.getConsentData() }, n)
);
}
function h() {
return n().then(t => {
let { error: n } = t;
return { error: n, consentData: u.getConsentData() };
});
}
function T() {
null == t &&
((t = (function(t, n) {
const e = new WeakSet();
return (0, o.Ak)(t, function(t, o) {
return n()
.then(n => {
let { consentData: s, error: i } = n;
!i ||
(s && e.has(i)) ||
(e.add(i), (0, a.JE)(i.message, …(i.args || []))),
t.call(this, o);
})
.catch(n => {
(0, a.vV)(
`${n?.message} Canceling auction as per consentManagement config.`,
…(n?.args || [])
),
t.stopTiming(),
‘function’ == typeof o.bidsBackHandler
? o.bidsBackHandler()
: (0, a.vV)(‘Error executing bidsBackHandler’);
});
});
})(c, () => n())),
(0, s.m)().requestBids.before(t, 50),
r.U3.before(D),
(0, a.fH)(
`${l} consentManagement module has been activated…`
));
}
return function(o) {
if (((o = o?.[c]), !o || ‘object’ != typeof o))
return (
(0, a.JE)(
C(‘config not defined, exiting consent manager module’)
),
null != t &&
((0, s.m)()
.requestBids.getHooks({ hook: t })
.remove(),
r.U3.getHooks({ hook: D }).remove(),
(t = null)),
{}
);
let b, k;
(0, a.O8)(o.cmpApi)
? (b = o.cmpApi)
: ((b = g),
(0, a.fH)(
C(
`config did not specify cmp. Using system default setting (${g}).`
)
)),
(0, a.Et)(o.timeout)
? (k = o.timeout)
: ((k = p),
(0, a.fH)(
C(
`config did not specify timeout. Using system default setting (${p}).`
)
));
const H = (0, a.Et)(o.actionTimeout) ? o.actionTimeout : null;
let w;
‘static’ === b
? (0, a.Qd)(o.consentData)
? ((e = o.consentData),
(k = null),
(w = () => new i.U9(t => t(u.setConsentData(m(e))))))
: (0, a.vV)(
C(
“config with cmpApi: ‘static’ did not specify consentData. No consents will be available to adapters.”
)
)
: f.hasOwnProperty(b)
? (w = f[b])
: (u.setConsentData(null),
(0, a.JE)(
`${l} CMP framework (${b}) is not a supported framework. Aborting consentManagement module and resuming auction.`
),
(w = () => i.U9.resolve()));
const y = () =>
(function(t) {
let n,
{
name: e,
consentDataHandler: o,
setupCmp: a,
cmpTimeout: s,
actionTimeout: i,
getNullConsent: r
} = t;
return (
o.enable(),
new Promise((t, c) => {
let l,
u = !1;
function m(a) {
null != n && clearTimeout(n),
(n =
null != a
? setTimeout(() => {
const n =
o.getConsentData() ?? (u ? l : r()),
a =
‘timeout waiting for ‘ +
(u
? ‘user action on CMP’
: ‘CMP to load’);
o.setConsentData(n),
t({
consentData: n,
error: new Error(`${e} ${a}`)
});
}, a)
: null);
}
a(function(t) {
(l = t), u || ((u = !0), null != i && m(i));
}).then(
() => t({ consentData: o.getConsentData() }),
c
),
null != s && m(s);
})
.finally(() => {
n && clearTimeout(n);
})
.catch(t => {
throw (o.setConsentData(null), t);
})
);
})({
name: l,
consentDataHandler: u,
setupCmp: w,
cmpTimeout: k,
actionTimeout: H,
getNullConsent: d
});
return (
(n = (() => {
let t;
return function() {
return (
null == t &&
(t = y().catch(n => {
throw ((t = null), n);
})),
t
);
};
})()),
T(),
{
cmpHandler: b,
cmpTimeout: k,
actionTimeout: H,
staticConsentData: e,
loadConsentData: h,
requestBidsHook: t
}
);
};
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[618],
{
981: (e, t, i) => {
i.d(t, { m: () => h });
var r = i(9466),
d = i(1e3),
n = i(433),
a = i(1069),
s = i(5825),
b = i(1445),
o = i(3272),
p = i(3172);
var c = i(3323);
var l = i(7873);
var f = i(1371);
var u = i(3005);
const v = {
[d.S3]: {
extPrebid: {
fn: function(e, t) {
(0, p.J)(
e,
‘ext.prebid’,
(0, a.D9)(
{
auctiontimestamp: t.auctionStart,
targeting: {
includewinners: !0,
includebidderkeys: !1
}
},
e.ext?.prebid
)
),
o.$W.getConfig(‘debug’) && (e.ext.prebid.debug = !0);
}
},
extPrebidChannel: {
fn: function(e) {
(0, p.J)(
e,
‘ext.prebid.channel’,
Object.assign(
{ name: ‘pbjs’, version: (0, l.m)().version },
e.ext?.prebid?.channel
)
);
}
},
extPrebidAliases: {
fn: function(e, t, i) {
let { am: r = b.Ay } =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: {};
if (r.aliasRegistry[t.bidderCode]) {
const i = r.bidderRegistry[t.bidderCode];
if (!i || !i.getSpec().skipPbsAliasing) {
(0, p.J)(
e,
`ext.prebid.aliases.${t.bidderCode}`,
r.aliasRegistry[t.bidderCode]
);
const d =
o.$W.getConfig(`gvlMapping.${t.bidderCode}`) ||
i?.getSpec?.().gvlid;
d &&
(0, p.J)(
e,
`ext.prebid.aliasgvlids.${t.bidderCode}`,
d
);
}
}
}
}
},
[d.Tb]: {
params: { fn: c.W },
adUnitCode: {
fn: function(e, t) {
const i = t.adUnitCode;
i && (0, p.J)(e, ‘ext.prebid.adunitcode’, i);
}
}
},
[d.WR]: {
mediaType: { fn: s.o, priority: 99 },
videoCache: {
fn: function(e, t) {
if (e.mediaType === f.G_) {
let { cacheId: i, url: r } =
(0, n.A)(t, ‘ext.prebid.cache.vastXml’) || {};
if (!i || !r) {
const {
hb_uuid: e,
hb_cache_host: d,
hb_cache_path: a
} = (0, n.A)(t, ‘ext.prebid.targeting’) || {};
e &&
d &&
a &&
((i = e), (r = `https://${d}${a}?uuid=${e}`));
}
i &&
r &&
Object.assign(e, { videoCacheKey: i, vastUrl: r });
}
},
priority: -10
},
bidderCode: {
fn(e, t, i) {
(e.bidderCode = i.seatbid.seat),
(e.adapterCode =
(0, n.A)(t, ‘ext.prebid.meta.adaptercode’) ||
i.bidRequest?.bidder ||
e.bidderCode);
}
},
pbsBidId: {
fn(e, t) {
const i = (0, n.A)(t, ‘ext.prebid.bidid’);
(0, a.O8)(i) && (e.pbsBidId = i);
}
},
adserverTargeting: {
fn(e, t) {
const i = (0, n.A)(t, ‘ext.prebid.targeting’);
(0, a.Qd)(i) && (e.adserverTargeting = i);
}
},
extPrebidMeta: {
fn(e, t) {
e.meta = (0, a.D9)(
{},
(0, n.A)(t, ‘ext.prebid.meta’),
e.meta
);
}
},
pbsWinTrackers: {
fn: function(e, t) {
(e.eventtrackers = e.eventtrackers || []),
[
[t.burl, u.OA],
[t?.ext?.prebid?.events?.win, u.RO]
]
.filter(t => {
let [i, r] = t;
return (
i &&
null ==
e.eventtrackers.find(e => {
let { method: t, event: d, url: n } = e;
return d === r && t === u.Ni && n === i;
})
);
})
.forEach(t => {
let [i, r] = t;
e.eventtrackers.push({
method: u.Ni,
event: r,
url: i
});
});
}
}
},
[d.Cf]: {
serverSideStats: {
fn(e, t, i) {
Object.entries({
errors: ‘serverErrors’,
responsetimemillis: ‘serverResponseTimeMs’
}).forEach(e => {
let [r, d] = e;
const a = (0, n.A)(
t,
`ext.${r}.${i.bidderRequest.bidderCode}`
);
a &&
((i.bidderRequest[d] = a),
i.bidRequests.forEach(e => (e[d] = a)));
});
}
}
}
};
var g = i(9766);
const h = (0, a.Bj)(() => (0, r.U)((0, g.T)(), v, (0, d.yB)(d.e4)));
},
5825: (e, t, i) => {
i.d(t, { o: () => a, s: () => n });
var r = i(1371),
d = i(5561);
const n = { [r.D4]: ‘banner’, [r.s6]: ‘native’, [r.G_]: ‘video’ };
function a(e, t, i) {
let a = i.mediaType;
a ||
((a = d.X.hasOwnProperty(t.mtype)
? d.X[t.mtype]
: t.ext?.prebid?.type),
n.hasOwnProperty(a) || (a = r.D4)),
(e.mediaType = a);
}
},
3323: (e, t, i) => {
i.d(t, { W: () => d });
var r = i(3172);
function d(e, t) {
let i = t.params;
i && (0, r.J)(e, `ext.prebid.bidder.${t.bidder}`, i);
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[498],
{
9766: (e, t, r) => {
r.d(t, { T: () => f, A: () => m });
const n = new WeakMap();
var i = r(1069),
s = r(1371);
var o = r(3895);
var a = r(5561);
var d = r(1e3),
p = r(3858);
const c = {
[d.S3]: {
fpd: {
priority: 99,
fn(e, t) {
(0, i.D9)(e, t.ortb2);
}
},
onlyOneClient: { priority: -99, fn: (0, p.i8)(‘ORTB request’) },
props: {
fn(e, t) {
Object.assign(e, {
id: e.id || (0, i.lk)(),
test: e.test || 0
});
const r = parseInt(t.timeout, 10);
isNaN(r) || (e.tmax = r);
}
}
},
[d.Tb]: {
fpd: {
priority: 99,
fn(e, t) {
(0, i.D9)(e, t.ortb2Imp);
}
},
id: {
fn(e, t) {
e.id = t.bidId;
}
},
banner: {
fn: function(e, t, r) {
if (r.mediaType && r.mediaType !== s.D4) return;
const n = t?.mediaTypes?.banner;
if (n) {
const r = { topframe: !0 === (0, i.al)() ? 0 : 1 };
n.sizes &&
null == t.ortb2Imp?.banner?.format &&
(r.format = (0, i.y$)(n.sizes).map(i.cf)),
n.hasOwnProperty(‘pos’) && (r.pos = n.pos),
(e.banner = (0, i.D9)(r, e.banner));
}
}
},
pbadslot: {
fn(e) {
const t = e.ext?.data?.pbadslot;
(t && ‘string’ == typeof t) || delete e.ext?.data?.pbadslot;
}
},
secure: {
fn(e, t) {
e.secure = e.secure ?? 1;
}
}
},
[d.WR]: {
mediaType: { priority: 99, fn: a.K },
banner: {
fn: (function() {
let {
createPixel: e = e =>
(0, i.Tz)(decodeURIComponent(e), i.Bk)
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return function(t, r) {
t.mediaType === s.D4 &&
(r.adm && r.nurl
? (t.ad = e(r.nurl) + r.adm)
: r.adm
? (t.ad = r.adm)
: r.nurl && (t.adUrl = r.nurl));
};
})()
},
props: {
fn(e, t, r) {
Object.entries({
requestId: r.bidRequest?.bidId,
seatBidId: t.id,
cpm: t.price,
currency: r.ortbResponse.cur || r.currency,
width: t.w,
height: t.h,
wratio: t.wratio,
hratio: t.hratio,
dealId: t.dealid,
creative_id: t.crid,
creativeId: t.crid,
burl: t.burl,
ttl: t.exp || r.ttl,
netRevenue: r.netRevenue
})
.filter(e => {
let [t, r] = e;
return void 0 !== r;
})
.forEach(t => {
let [r, n] = t;
return (e[r] = n);
}),
e.meta || (e.meta = {}),
t.adomain && (e.meta.advertiserDomains = t.adomain),
t.ext?.dsa && (e.meta.dsa = t.ext.dsa),
t.cat &&
((e.meta.primaryCatId = t.cat[0]),
(e.meta.secondaryCatIds = t.cat.slice(1))),
t.attr && (e.meta.attr = t.attr),
t.ext?.eventtrackers &&
(e.eventtrackers = (e.eventtrackers ?? []).concat(
t.ext.eventtrackers
));
}
}
}
};
(c[d.Tb].native = {
fn: function(e, t, r) {
if (r.mediaType && r.mediaType !== s.s6) return;
let n = t.nativeOrtbRequest;
n &&
((n = Object.assign({}, r.nativeRequest, n)),
n.assets?.length
? (e.native = (0, i.D9)(
{},
{ request: JSON.stringify(n), ver: n.ver },
e.native
))
: (0, i.JE)(
‘mediaTypes.native is set, but no assets were specified. Native request skipped.’,
t
));
}
}),
(c[d.WR].native = {
fn: function(e, t) {
if (e.mediaType === s.s6) {
let r;
if (
((r =
‘string’ == typeof t.adm ? JSON.parse(t.adm) : t.adm),
!(0, i.Qd)(r) || !Array.isArray(r.assets))
)
throw new Error(
‘ORTB native response contained no assets’
);
e.native = { ortb: r };
}
}
}),
(c[d.Tb].video = {
fn: function(e, t, r) {
if (r.mediaType && r.mediaType !== s.G_) return;
const n = t?.mediaTypes?.video;
if (!(0, i.Im)(n)) {
const t = Object.fromEntries(
Object.entries(n).filter(e => {
let [t] = e;
return o.Zy.has(t);
})
);
if (n.playerSize) {
const e = (0, i.y$)(n.playerSize).map(i.cf);
e.length > 1 &&
(0, i.JE)(
‘video request specifies more than one playerSize; all but the first will be ignored’
),
Object.assign(t, e[0]);
}
e.video = (0, i.D9)(t, e.video);
}
}
}),
(c[d.WR].video = {
fn: function(e, t, r) {
e.mediaType === s.G_ &&
(r?.imp?.video?.w &&
r?.imp?.video?.h &&
([e.playerWidth, e.playerHeight] = [
r.imp.video.w,
r.imp.video.h
]),
t.adm && (e.vastXml = t.adm),
t.nurl && (e.vastUrl = t.nurl));
}
});
var u = r(9466);
function m() {
let {
context: e = {},
processors: t = f,
overrides: r = {},
imp: s,
request: o,
bidResponse: a,
response: p
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const c = new WeakMap();
function u(e, i, s, o) {
let a;
return function() {
return (
null == a &&
(a = (function() {
let a = s.bind(
this,
(function(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
if (!n.has(e)) {
const t = Object.entries(e);
t.sort((e, t) =>
(e = e[1].priority || 0) ===
(t = t[1].priority || 0)
? 0
: e > t
? -1
: 1
),
n.set(
e,
t.map(e => {
let [t, r] = e;
return [t, r.fn];
})
);
}
const r = n
.get(e)
.filter(e => {
let [r] = e;
return !t.hasOwnProperty(r) || t[r];
})
.map(function(e) {
let [r, n] = e;
return t.hasOwnProperty(r)
? t[r].bind(this, n)
: n;
});
return function() {
const e = Array.from(arguments);
r.forEach(t => {
t.apply(this, e);
});
};
})(t()[e] || {}, r[e] || {})
);
return (
i && (a = i.bind(this, a)),
function() {
try {
return a.apply(this, arguments);
} catch (e) {
o.call(this, e, …arguments);
}
}
);
})()),
a.apply(this, arguments)
);
};
}
const m = u(
d.Tb,
s,
function(e, t, r) {
const n = {};
return e(n, t, r), n;
},
function(e, t, r) {
(0,
i.vV)(
‘Error while converting bidRequest to ORTB imp; request skipped.’,
{ error: e, bidRequest: t, context: r }
);
}
),
l = u(
d.S3,
o,
function(e, t, r, n) {
const i = { imp: t };
return e(i, r, n), i;
},
function(e, t, r, n) {
throw ((0, i.vV)(‘Error while converting to ORTB request’, {
error: e,
imps: t,
bidderRequest: r,
context: n
}),
e);
}
),
b = u(
d.WR,
a,
function(e, t, r) {
const n = {};
return e(n, t, r), n;
},
function(e, t, r) {
(0,
i.vV)(
‘Error while converting ORTB seatbid.bid to bidResponse; bid skipped.’,
{ error: e, bid: t, context: r }
);
}
),
y = u(
d.Cf,
p,
function(e, t, r, n) {
const i = { bids: t };
return e(i, r, n), i;
},
function(e, t, r, n) {
throw ((0, i.vV)(
‘Error while converting from ORTB response’,
{
error: e,
bidResponses: t,
ortbResponse: r,
context: n
}
),
e);
}
);
return {
toORTB(t) {
let { bidderRequest: r, bidRequests: n, context: s = {} } = t;
n = n || r.bids;
const o = {
req: Object.assign({ bidRequests: n }, e, s),
imp: {}
};
o.req.impContext = o.imp;
const a = n
.map(t => {
const n = Object.assign(
{ bidderRequest: r, reqContext: o.req },
e,
s
),
a = m(t, n);
if (null != a) {
if (a.hasOwnProperty(‘id’))
return (
Object.assign(n, { bidRequest: t, imp: a }),
(o.imp[a.id] = n),
a
);
(0, i.vV)(
‘Converted ORTB imp does not specify an id, ignoring bid request’,
t,
a
);
}
})
.filter(Boolean),
d = l(a, r, o.req);
return (o.req.bidderRequest = r), null != d && c.set(d, o), d;
},
fromORTB(e) {
let { request: t, response: r } = e;
const n = c.get(t);
if (null == n)
throw new Error(
‘ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`’
);
function s(e) {
let r =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
return Object.assign(e, { ortbRequest: t }, r);
}
const o = Object.fromEntries(
(t.imp || []).map(e => [e.id, e])
),
a = (r.seatbid || [])
.flatMap(e =>
(e.bid || []).map(t => {
if (
o.hasOwnProperty(t.impid) &&
n.imp.hasOwnProperty(t.impid)
)
return b(
t,
s(n.imp[t.impid], {
imp: o[t.impid],
seatbid: e,
ortbResponse: r
})
);
(0, i.vV)(
‘ORTB response seatbid[].bid[].impid does not match any imp in request; ignoring bid’,
t
);
})
)
.filter(Boolean);
return y(a, r, s(n.req));
}
};
}
const f = (0, i.Bj)(() => (0, u.U)(c, (0, d.yB)(d.qN)));
},
9466: (e, t, r) => {
r.d(t, { U: () => i });
var n = r(1e3);
function i() {
for (
var e = arguments.length, t = new Array(e), r = 0;
r < e;
r++
)
t[r] = arguments[r];
const s = t.shift(),
o = t.length > 1 ? i(…t) : t[0];
return Object.fromEntries(
n.zt.map(e => [e, Object.assign({}, s[e], o[e])])
);
}
},
5561: (e, t, r) => {
r.d(t, { K: () => s, X: () => i });
var n = r(1371);
const i = { 1: n.D4, 2: n.G_, 4: n.s6 };
function s(e, t, r) {
if (e.mediaType) return;
const n = r.mediaType;
if (!n && !i.hasOwnProperty(t.mtype))
throw new Error(‘Cannot determine mediaType for response’);
e.mediaType = n || i[t.mtype];
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[225],
{
6743: (n, t, l) => {
l.d(t, { x4: () => i });
var e = l(7873),
r = l(2713);
function u(n, t, l) {
let r =
!(arguments.length > 3 && void 0 !== arguments[3]) ||
arguments[3];
if (t === l) return n;
let u = n;
try {
u = (0, e.m)().convertCurrency(n, t, l);
} catch (n) {
if (!r) throw n;
}
return u;
}
function i() {
let n =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: n => [n.cpm, n.currency],
t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: (function() {
let n =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: null,
t =
!(
arguments.length > 1 && void 0 !== arguments[1]
) || arguments[1],
l =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: u;
return function(e, r) {
return null == n && (n = r), l(e, r, n, t);
};
})();
return (0, r.NV)(l => t.apply(null, n(l)));
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[764],
{
2339: (o, n, t) => {
function e(o, n) {
return function() {
const t = document.domain.split(‘.’),
e = `_gd${Date.now()}_${n}`;
for (let n, i, s = 0; s < t.length; s++) {
const u = t.slice(s).join(‘.’);
if (
(o.setCookie(e, ‘1’, void 0, void 0, u),
(i = o.getCookie(e)),
o.setCookie(
e,
”,
‘Thu, 01 Jan 1970 00:00:01 GMT’,
void 0,
u
),
‘1’ !== i)
)
return n;
n = u;
}
};
}
t.d(n, { w: () => e });
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[81],
{
6117: (e, t, n) => {
var r = n(7873),
s = n(1069),
a = n(3172),
o = n(3272),
c = n(6916),
i = n(1e3),
p = n(687),
d = n(965),
l = n(3806);
let u,
g,
f = {};
const C = 2,
m = {
iab: function(e) {
return new Promise((t, n) => {
const r = (0, d.c5)({
apiName: ‘__tcfapi’,
apiVersion: C,
apiArgs: [‘command’, ‘version’, ‘callback’, ‘parameter’]
});
r || n(new Error(‘TCF2 CMP not found.’)),
r.isDirect
? (0, s.fH)(
‘Detected CMP API is directly accessible, calling it now…’
)
: (0, s.fH)(
‘Detected CMP is outside the current iframe where Prebid.js is located, calling it now…’
),
r({
command: ‘addEventListener’,
callback: function(r, a) {
if (
((0, s.fH)(‘Received a response from CMP’, r), a)
) {
try {
e(b(r));
} catch (e) {}
if (
!1 === r.gdprApplies ||
‘tcloaded’ === r.eventStatus ||
‘useractioncomplete’ === r.eventStatus
)
try {
c.mW.setConsentData(b(r)), t();
} catch (e) {
n(e);
}
} else
n(
Error(
‘CMP unable to register callback function. Please check CMP setup.’
)
);
}
});
});
}
};
function b(e) {
if (
(function() {
const t =
e && ‘boolean’ == typeof e.gdprApplies
? e.gdprApplies
: u,
n = e && e.tcString;
return !(
‘boolean’ == typeof t &&
(!0 !== t || (n && (0, s.O8)(n)))
);
})()
)
throw Object.assign(
new Error(
‘CMP returned unexpected value during lookup process.’
),
{ args: [e] }
);
return D(e);
}
function D(e) {
const t = {
consentString: e ? e.tcString : void 0,
vendorData: e || void 0,
gdprApplies:
e && ‘boolean’ == typeof e.gdprApplies ? e.gdprApplies : u
};
return (
e &&
e.addtlConsent &&
(0, s.O8)(e.addtlConsent) &&
(t.addtlConsent = e.addtlConsent),
(t.apiVersion = C),
t
);
}
const v = (0, l.yq)({
namespace: ‘gdpr’,
displayName: ‘TCF’,
consentDataHandler: c.mW,
cmpHandlers: m,
parseConsentData: b,
getNullConsent: () => D(null)
});
o.$W.getConfig(‘consentManagement’, e =>
(function(e) {
return (
(e = e && (e.gdpr || e.usp || e.gpp ? e.gdpr : e)),
null != e?.consentData?.getTCData &&
(e.consentData = e.consentData.getTCData),
(u = !0 === e?.defaultGdprScope),
(g = !!e?.dsaPlatform),
(f = v({ gdpr: e })),
f.loadConsentData?.()?.catch?.(() => null)
);
})(e.consentManagement)
),
p.w.before(function(e, t) {
return e(
t.then(e => {
const t = c.mW.getConsentData();
return (
t &&
(‘boolean’ == typeof t.gdprApplies &&
(0, a.J)(e, ‘regs.ext.gdpr’, t.gdprApplies ? 1 : 0),
(0, a.J)(e, ‘user.ext.consent’, t.consentString)),
g && (0, a.J)(e, ‘regs.ext.dsa.dsarequired’, 3),
e
);
})
);
}),
(0, i.pS)({
type: i.S3,
name: ‘gdprAddtlConsent’,
fn: function(e, t) {
const n = t.gdprConsent?.addtlConsent;
n &&
‘string’ == typeof n &&
(0, a.J)(
e,
‘user.ext.ConsentedProvidersSettings.consented_providers’,
n
);
}
}),
(0, r.E)(‘consentManagementTcf’);
}
},
e => {
e.O(0, [802, 109, 10, 769, 139, 85], () => {
return (t = 6117), e((e.s = t));
var t;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[662],
{
6056: (n, t, e) => {
var o = e(7873),
a = e(1069),
s = e(3172),
i = e(3272),
c = e(1445),
r = e(6916),
u = e(6894),
l = e(9214),
f = e(687),
g = e(965);
const d = ‘iab’;
let p,
m,
P = d,
v = 50,
S = !1;
const b = {
iab: function(n) {
let { onSuccess: t, onError: e } = n;
let o = (function() {
const n = {};
return {
consentDataCallback: (o, a) => {
a && o.uspString && (n.usPrivacy = o.uspString),
n.usPrivacy
? h(n, { onSuccess: t, onError: e })
: e(‘Unable to get USP consent string.’);
}
};
})();
const s = (0, g.c5)({
apiName: ‘__uspapi’,
apiVersion: 1,
apiArgs: [‘command’, ‘version’, ‘callback’]
});
if (!s) return e(‘USP CMP not found.’);
s.isDirect
? (0, a.fH)(
‘Detected USP CMP is directly accessible, calling it now…’
)
: (0, a.fH)(
‘Detected USP CMP is outside the current iframe where Prebid.js is located, calling it now…’
);
s({ command: ‘getUSPData’, callback: o.consentDataCallback }),
s({
command: ‘registerDeletion’,
callback: (n, t) =>
(null == t || t) && c.Ay.callDataDeletionRequest(n)
}).catch(n => {
(0, a.vV)(‘Error invoking CMP `registerDeletion`:’, n);
});
},
static: function(n) {
let { onSuccess: t, onError: e } = n;
h(p, { onSuccess: t, onError: e });
}
};
function D(n) {
let t = null,
e = !1;
function o(o, a) {
if (
(null != t && clearTimeout(t),
(e = !0),
r.t6.setConsentData(o),
null != n)
) {
for (
var s = arguments.length,
i = new Array(s > 2 ? s – 2 : 0),
c = 2;
c < s;
c++
)
i[c – 2] = arguments[c];
n(a, …i);
}
}
if (!b[P])
return void o(
null,
`USP framework (${P}) is not a supported framework. Aborting consentManagement module and resuming auction.`
);
const a = {
onSuccess: o,
onError: function(n) {
for (
var t = arguments.length,
e = new Array(t > 1 ? t – 1 : 0),
a = 1;
a < t;
a++
)
e[a – 1] = arguments[a];
o(
null,
`${n} Resuming auction without consent data as per consentManagement config.`,
…e
);
}
};
b[P](a),
e ||
(0 === v
? h(void 0, a)
: (t = setTimeout(
a.onError.bind(
null,
‘USPAPI workflow exceeded timeout threshold.’
),
v
)));
}
const y = (0, u.Ak)(‘usp’, function(n, t) {
var e = this;
S || U(),
D(function(o) {
if (null != o) {
for (
var s = arguments.length,
i = new Array(s > 1 ? s – 1 : 0),
c = 1;
c < s;
c++
)
i[c – 1] = arguments[c];
(0, a.JE)(o, …i);
}
n.call(e, t);
});
});
function h(n, t) {
let { onSuccess: e, onError: o } = t;
!n || !n.usPrivacy
? o(
‘USPAPI returned unexpected value during lookup process.’,
n
)
: (!(function(n) {
n && n.usPrivacy && (m = n.usPrivacy);
})(n),
e(m));
}
function U() {
let n =
arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
S ||
((0, a.fH)(
‘USPAPI consentManagement module has been activated’ +
(n
? ”
: ` using default values (api: ‘${P}’, timeout: ${v}ms)`)
),
(S = !0),
r.t6.enable()),
D();
}
i.$W.getConfig(‘consentManagement’, n =>
(function(n) {
((n = n && n.usp) && ‘object’ == typeof n) ||
(0, a.JE)(
‘consentManagement.usp config not defined, using defaults’
),
n && (0, a.O8)(n.cmpApi)
? (P = n.cmpApi)
: ((P = d),
(0, a.fH)(
`consentManagement.usp config did not specify cmpApi. Using system default setting (${d}).`
)),
n && (0, a.Et)(n.timeout)
? (v = n.timeout)
: ((v = 50),
(0, a.fH)(
‘consentManagement.usp config did not specify timeout. Using system default setting (50).’
)),
‘static’ === P &&
((0, a.Qd)(n.consentData) &&
(0, a.Qd)(n.consentData.getUSPData)
? (n.consentData.getUSPData.uspString &&
(p = {
usPrivacy: n.consentData.getUSPData.uspString
}),
(v = 0))
: (0, a.vV)(
“consentManagement config with cmpApi: ‘static’ did not specify consentData. No consents will be available to adapters.”
)),
U(!0);
})(n.consentManagement)
),
(0, l.Yn)(‘requestBids’).before(y, 50),
f.w.before(function(n, t) {
return n(
t.then(n => {
const t = r.t6.getConsentData();
return t && (0, s.J)(n, ‘regs.ext.us_privacy’, t), n;
})
);
}),
(0, o.E)(‘consentManagementUsp’);
}
},
n => {
n.O(0, [109, 802, 769, 139, 85], () => {
return (t = 6056), n((n.s = t));
var t;
});
n.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[931],
{
2843: (e, t, o) => {
var n = o(7873),
r = o(1069),
a = o(8044),
c = o(7934),
i = o(9214),
s = o(2938),
d = o(5569),
l = o(6916);
const p = ‘criteo’,
g = (0, s.vM)({ moduleType: d.fW, moduleName: p }),
u = ‘cto_bidid’,
m = ‘cto_bundle’,
b = ‘html5’,
I = ‘cookie’,
y = new Date(0).toString(),
f = new Date((0, r.vE)() + 33696e6).toString();
function S(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
const o = (0, r.Dl)(e, { noDecodeWholeURL: !0 });
return t
? `${o.hostname}`
: `${o.protocol}://${o.hostname}${o.port ? ‘:’ + o.port : ”}/`;
}
function h(e, t) {
return e?.storage?.type === b
? g.getDataFromLocalStorage(t)
: e?.storage?.type === I
? g.getCookie(t)
: g.getCookie(t) || g.getDataFromLocalStorage(t);
}
function C(e, t, o, n) {
t &&
o &&
(e?.storage?.type === b
? g.setDataInLocalStorage(t, o)
: (e?.storage?.type === I || g.setDataInLocalStorage(t, o),
v(t, o, f, n, !0)));
}
function v(e, t, o, n, r) {
const a = n.split(‘.’);
for (let n = 0; n < a.length; ++n) {
const c = a.slice(a.length – n – 1, a.length).join(‘.’);
try {
if ((g.setCookie(e, t, o, null, ‘.’ + c), r)) {
const o = g.getCookie(e);
if (o && o === t) break;
}
} catch (e) {}
}
}
function U(e, t, o) {
const n =
(void 0 === e?.storage?.type || e?.storage?.type === I) &&
g.cookiesAreEnabled(),
i =
(void 0 === e?.storage?.type || e?.storage?.type === b) &&
g.localStorageIsEnabled(),
s = S((0, c.EN)().page),
d = S(document.location.href, !0),
p = ‘undefined’ != typeof criteo_pubtag,
f = (function(e, t, o, n, r, a, c) {
let i =
‘https://gum.criteo.com/sid/json?origin=prebid’ +
(e ? ‘&topUrl=’ + encodeURIComponent(e) : ”) +
(t ? ‘&domain=’ + encodeURIComponent(t) : ”) +
(o ? ‘&bundle=’ + encodeURIComponent(o) : ”) +
(n ? ‘&info=’ + encodeURIComponent(n) : ”) +
(r ? ‘&cw=1’ : ”) +
(c ? ‘&pbt=1’ : ”) +
(a ? ‘&lsw=1’ : ”);
const s = l.t6.getConsentData();
s && (i += `&us_privacy=${encodeURIComponent(s)}`);
const d = l.mW.getConsentData();
d &&
((i =
i +
” +
(d.consentString
? ‘&gdprString=’ + encodeURIComponent(d.consentString)
: ”)),
(i = i + ‘&gdpr=’ + (!0 === d.gdprApplies ? 1 : 0)));
const p = l.ad.getConsentData();
return (
p &&
((i =
i +
” +
(p.gppString
? ‘&gpp=’ + encodeURIComponent(p.gppString)
: ”)),
(i =
i +
” +
(p.applicableSections
? ‘&gpp_sid=’ +
encodeURIComponent(p.applicableSections)
: ”))),
i
);
})(s, d, t.bundle, t.dnaBundle, n, i, p),
h = {
success: t => {
const n = JSON.parse(t);
if (
(n.pixels &&
n.pixels.forEach(t =>
(function(e, t, o) {
o.writeBundleInStorage &&
o.bundlePropertyName &&
o.storageKeyName
? (0, a.RD)(
o.pixelUrl,
{
success: n => {
if (n) {
const r = JSON.parse(n);
r &&
r[o.bundlePropertyName] &&
C(
e,
o.storageKeyName,
r[o.bundlePropertyName],
t
);
}
},
error: e => {
(0, r.vV)(
‘criteoIdSystem: unable to sync user id’,
e
);
}
},
void 0,
{ method: ‘GET’, withCredentials: !0 }
)
: (0, r.z$)(o.pixelUrl);
})(e, d, t)
),
n.acwsUrl)
) {
(‘string’ == typeof n.acwsUrl
? [n.acwsUrl]
: n.acwsUrl
).forEach(e => (0, r.z$)(e));
} else n.bundle && C(e, m, n.bundle, d);
if (n.bidId) {
C(e, u, n.bidId, d);
const t = { criteoId: n.bidId };
o(t);
} else
v((c = u), ”, y, d, !0),
g.removeDataFromLocalStorage(c),
o();
var c;
},
error: e => {
(0, r.vV)(‘criteoIdSystem: unable to sync user id’, e), o();
}
};
(0, a.RD)(f, h, void 0, {
method: ‘GET’,
contentType: ‘application/json’,
withCredentials: !0
});
}
const D = {
name: p,
gvlid: 91,
decode: e => e,
getId(e) {
let t = (function(e) {
return {
bundle: h(e, m),
dnaBundle: h(e, ‘cto_dna_bundle’),
bidId: h(e, u)
};
})(e);
return {
id: t.bidId ? { criteoId: t.bidId } : void 0,
callback: o => U(e, t, o)
};
},
eids: { criteoId: { source: ‘criteo.com’, atype: 1 } }
};
(0, i.bz)(‘userId’, D), (0, n.E)(‘criteoIdSystem’);
}
},
e => {
e.O(0, [802, 769, 139, 85], () => {
return (t = 2843), e((e.s = t));
var t;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[328],
{
1134: (e, t, n) => {
n.d(t, { Gk: () => M });
var r = n(7873),
s = n(9759),
i = n(1069),
d = n(8969),
o = n(1445),
a = n(3272),
c = n(7377),
u = n(5023);
const p = {
appnexuspsp: {
adapter: ‘prebidServer’,
enabled: !0,
endpoint: {
p1Consent: ‘https://ib.adnxs.com/openrtb2/prebid’,
noP1Consent: ‘https://ib.adnxs-simple.com/openrtb2/prebid’
},
syncEndpoint: {
p1Consent: ‘https://prebid.adnxs.com/pbs/v1/cookie_sync’,
noP1Consent:
‘https://prebid.adnxs-simple.com/pbs/v1/cookie_sync’
},
maxTimeout: 1e3
},
rubicon: {
adapter: ‘prebidServer’,
enabled: !0,
endpoint: {
p1Consent:
‘https://prebid-server.rubiconproject.com/openrtb2/auction’,
noP1Consent:
‘https://prebid-server.rubiconproject.com/openrtb2/auction’
},
syncEndpoint: {
p1Consent:
‘https://prebid-server.rubiconproject.com/cookie_sync’,
noP1Consent:
‘https://prebid-server.rubiconproject.com/cookie_sync’
},
maxTimeout: 500
},
openwrap: {
adapter: ‘prebidServer’,
enabled: !0,
endpoint: {
p1Consent:
‘https://ow.pubmatic.com/openrtb2/auction?source=pbjs’,
noP1Consent:
‘https://ow.pubmatic.com/openrtb2/auction?source=pbjs’
},
maxTimeout: 500
}
};
var l = n(8044),
b = n(9214),
f = n(2621),
g = n(9766),
m = n(3172),
h = n(3597),
C = n(981),
y = n(3323),
B = n(5825),
v = n(1e3),
R = n(6953),
q = n(3441),
E = n(5569),
x = n(5139),
O = n(6811),
S = n(6743),
I = n(2713),
j = n(433);
function T(e) {
let { global: t, bidder: n } = e;
return Object.fromEntries(
Object.entries(n).map(e => {
let [n, r] = e;
return [n, A(r, (0, i.D9)({}, t, r))];
})
);
}
function A(e, t) {
return Object.fromEntries(
Object.entries(e).map(e => {
let [n, r] = e;
const s = t[n];
return (
Array.isArray(r)
? !(0, i.bD)(r, s) && Array.isArray(s) && (r = s)
: null != r && ‘object’ == typeof r && (r = A(r, s)),
[n, r]
);
})
);
}
function P(e, t) {
let { global: n, bidder: r } = e;
const s = (function(e) {
let { eids: t, conflicts: n = new Set() } = e;
const r = [],
s = [],
i = {};
return (
t.forEach(e => {
(!1 === e.bidders ? r : s).push(e);
}),
s.forEach(e => {
let { eid: t, bidders: s } = e;
n.has(t.source)
? s.forEach(e => {
(i[e] = i[e] || []).push(t);
})
: r.push({ eid: t, bidders: s });
}),
{
global: r.map(e => {
let { eid: t } = e;
return t;
}),
permissions: r
.filter(e => {
let { bidders: t } = e;
return !1 !== t;
})
.map(e => {
let { eid: t, bidders: n } = e;
return { source: t.source, bidders: n };
}),
bidder: i
}
);
})(
(function(e) {
let { global: t, bidder: n } = e;
const r = [],
s = {},
d = new Set();
function o(e) {
let t = r.find(t => (0, i.bD)(t.eid, e));
return (
null == t &&
((t = { eid: e, bidders: new Set() }), r.push(t)),
null == s[e.source]
? (s[e.source] = t.eid)
: t.eid === e && d.add(e.source),
t
);
}
return (
R.Vx.forEach(e => {
((0, j.A)(t, e) || []).forEach(e => {
o(e).bidders = !1;
});
}),
Object.entries(n).forEach(e => {
let [t, n] = e;
R.Vx.forEach(e => {
((0, j.A)(n, e) || []).forEach(e => {
const n = o(e);
!1 !== n.bidders && n.bidders.add(t);
});
});
}),
{
eids: r.map(e => {
let { eid: t, bidders: n } = e;
return { eid: t, bidders: n && Array.from(n) };
}),
conflicts: d
}
);
})({ global: n, bidder: r })
);
function d(e) {
delete e?.user?.eids, delete e?.user?.ext?.eids;
}
return (
(n = (0, i.Go)(n)),
(r = (0, i.Go)(r)),
d(n),
Object.values(r).forEach(d),
s.global.length && (0, m.J)(n, ‘user.ext.eids’, s.global),
t?.length &&
s.permissions.forEach(
e => (e.bidders = e.bidders.filter(e => t.includes(e)))
),
s.permissions.length &&
(0, m.J)(n, ‘ext.prebid.data.eidpermissions’, s.permissions),
Object.entries(s.bidder).forEach(e => {
let [t, n] = e;
n.length && (0, m.J)(r[t], ‘user.ext.eids’, n);
}),
{ global: n, bidder: r }
);
}
function w(e, t) {
return null == e || 0 === Object.keys(e.bidder || {}).length
? e
: ((e = P(e, t)), { …e, bidder: T(e) });
}
var D = n(1371);
const U = new Set([
‘bidderCode’,
‘bidderRequestId’,
‘uniquePbsTid’,
‘bids’,
‘timeout’
]),
$ = (() => {
const e = (0, I.Bp)(
(0, S.x4)(e => [e.bidfloor, e.bidfloorcur])
);
return function(t) {
let n;
for (const r of t) {
if (null == r?.bidfloorcur || null == r?.bidfloor)
return null;
n = null == n ? r : e(n, r);
}
return n;
};
})(),
J = (0, g.A)({
processors: C.m,
context: { netRevenue: !0 },
imp(e, t, n) {
Object.assign(n, t.pbsData);
const r = e(t, n);
if (
((t.bids || []).forEach(e => {
e.ortb2Imp &&
Object.keys(e.ortb2Imp).length > 0 &&
(0, m.J)(r, `ext.prebid.imp.${e.bidder}`, e.ortb2Imp);
}),
Object.values(B.s).some(e => r[e]))
)
return (r.secure = t.ortb2Imp?.secure ?? 1), r;
},
request(e, t, n, r) {
if (t.length) {
let { s2sBidRequest: s } = r;
const i = e(t, n, r);
return (
(i.tmax = Math.floor(
s.s2sConfig.timeout ??
Math.min(
0.75 * s.requestBidsTimeout,
s.s2sConfig.maxTimeout ?? M.maxTimeout
)
)),
(i.ext.tmaxmax = i.ext.tmaxmax || s.requestBidsTimeout),
[i.app, i.dooh, i.site].forEach(e => {
e &&
!e.publisher?.id &&
(0, m.J)(e, ‘publisher.id’, s.s2sConfig.accountId);
}),
r.transmitTids ||
(0, m.J)(i, ‘ext.prebid.createtids’, !1),
i
);
}
(0, i.vV)(
‘Request to Prebid Server rejected due to invalid media type(s) in adUnit.’
);
},
bidResponse(e, t, n) {
let r = n.actualBidRequests.get(n.seatbid.seat);
null == r && (r = n.actualBidRequests.get(null)),
r &&
Object.assign(n, {
bidRequest: r,
bidderRequest: n.actualBidderRequests.find(
e => e.bidderCode === r.bidder
)
});
const s = e(t, n);
return (
(s.requestBidder = r?.bidder),
s.native?.ortb && (s.adm = s.native.ortb),
(s.requestTimestamp = n.requestTimestamp),
{
bid: Object.assign(
(0, h.O)(d.XQ.GOOD, {
src: d.RW.SRC,
bidId: r ? r.bidId || r.bid_Id : null,
transactionId: n.adUnit.transactionId,
adUnitId: n.adUnit.adUnitId,
auctionId: n.bidderRequest.auctionId
}),
s,
{
deferRendering: !!n.adUnit.deferBilling,
deferBilling: !!n.adUnit.deferBilling
}
),
adUnit: n.adUnit.code
}
);
},
overrides: {
[v.Tb]: {
id(e, t, n, r) {
t.id = r.impId;
},
params(e, t, n, r) {
const s = r.s2sBidRequest.s2sConfig.adapterOptions;
for (const e of r.actualBidRequests.values())
(0, y.W)(t, e, r, r),
s &&
s[e.bidder] &&
Object.assign(
t.ext.prebid.bidder[e.bidder],
s[e.bidder]
);
},
bidfloor(e, t, n, r) {
const s = $(
(function*() {
for (const t of r.actualBidRequests.values()) {
const n = {};
e(n, t, r), yield n;
}
})()
);
null != s && Object.assign(t, s);
},
extBidfloor(e, t, n, r) {
function s(e, t) {
null != t &&
((0, m.J)(e, ‘ext.bidfloor’, t.bidfloor),
(0, m.J)(e, ‘ext.bidfloorcur’, t.bidfloorcur));
}
const d = Array.from(r.actualBidRequests.values()).map(
n => {
const s = (0, i.Go)(t);
return e(s, n, r), s;
}
);
Object.values(D.GE).forEach(e => {
s(t[e], $(d.map(t => t[e]?.ext)));
}),
(t[D.D4]?.format || []).forEach((e, t) => {
s(e, $(d.map(e => e[D.D4].format[t]?.ext)));
});
}
},
[v.S3]: {
fpd(e, t, n, r) {
r.transmitTids && (0, m.J)(t, ‘source.tid’, n.auctionId),
(0, i.D9)(t, r.s2sBidRequest.ortb2Fragments?.global),
r.s2sBidRequest.s2sConfig.extPrebid &&
‘object’ ==
typeof r.s2sBidRequest.s2sConfig.extPrebid &&
(0, m.J)(
t,
‘ext.prebid’,
(0, i.D9)(
t.ext?.prebid || {},
r.s2sBidRequest.s2sConfig.extPrebid
)
),
r.getRedactor().ortb2(t);
const s = Object.entries(
r.s2sBidRequest.ortb2Fragments?.bidder || {}
)
.filter(e => {
let [t] = e;
const n = r.s2sBidRequest.s2sConfig.bidders;
return (
r.s2sBidRequest.s2sConfig.allowUnknownBidderCodes ||
(n && n.includes(t))
);
})
.map(e => {
let [t, n] = e;
return {
bidders: [t],
config: { ortb2: r.getRedactor(t).ortb2(n) }
};
});
s.length && (0, m.J)(t, ‘ext.prebid.bidderconfig’, s);
},
extPrebidAliases(e, t, n, r) {
r.actualBidderRequests.forEach(n => e(t, n, r));
},
sourceExtSchain(e, t, n, r) {
let s = t?.ext?.prebid?.schains || [];
const i = new Set(s.flatMap(e => e.bidders));
(s = Object.values(
s
.concat(
r.actualBidderRequests
.filter(e => !i.has(e.bidderCode))
.map(e => ({
bidders: [e.bidderCode],
schain: e?.bids?.[0]?.schain
}))
)
.filter(e => {
let { bidders: t, schain: n } = e;
return t?.length > 0 && n;
})
.reduce((e, t) => {
let { bidders: n, schain: r } = t;
const s = JSON.stringify(r);
return (
e.hasOwnProperty(s) ||
(e[s] = { bidders: new Set(), schain: r }),
n.forEach(t => e[s].bidders.add(t)),
e
);
}, {})
).map(e => {
let { bidders: t, schain: n } = e;
return { bidders: Array.from(t), schain: n };
})),
s.length && (0, m.J)(t, ‘ext.prebid.schains’, s);
}
},
[v.Cf]: {
serverSideStats(e, t, n, r) {
r.actualBidderRequests.forEach(s =>
e(t, n, { …r, bidderRequest: s, bidRequests: s.bids })
);
},
paapiConfigs(e, t, n, r) {
const s = Object.values(r.impContext).flatMap(e =>
(e.paapiConfigs || []).map(t => {
const n = e.actualBidderRequests.find(
e => e.bidderCode === t.bidder
),
r = e.actualBidRequests.get(t.bidder);
return {
adUnitCode: e.adUnit.code,
ortb2: n?.ortb2,
ortb2Imp: r?.ortb2Imp,
bidder: t.bidder,
config: t.config
};
})
);
s.length > 0 && (t.paapi = s);
}
}
}
});
var k = n(6894);
const _ = a.$W.getConfig,
V = d.RW.SRC;
let N,
W = 0;
const M = {
bidders: Object.freeze([]),
syncTimeout: 1e3,
maxBids: 1,
adapter: ‘prebidServer’,
allowUnknownBidderCodes: !1,
adapterOptions: {},
syncUrlModifier: {},
ortbNative: { eventtrackers: [{ event: 1, methods: [1, 2] }] },
maxTimeout: 1500
};
function G(e) {
if (!e) return;
e = Array.isArray(e) ? e : [e];
const t = new Set();
return e.filter(e => {
var n;
if (
((n = e),
[‘endpoint’, ‘syncEndpoint’].forEach(e => {
if ((0, i.O8)(n[e])) {
let t = n[e];
n[e] = { p1Consent: t, noP1Consent: t };
}
!(0, i.Qd)(n[e]) ||
(n[e].p1Consent && n[e].noP1Consent) ||
[‘p1Consent’, ‘noP1Consent’].forEach(t => {
n[e][t] ||
(0, i.JE)(
`s2sConfig.${e}.${t} not defined. PBS request will be skipped in some P1 scenarios.`
);
});
}),
(function(e) {
if (e.defaultVendor) {
let t = e.defaultVendor,
n = Object.keys(e);
if (!p[t])
return (
(0, i.vV)(
‘Incorrect or unavailable prebid server default vendor option: ‘ +
t
),
!1
);
Object.keys(p[t]).forEach(r => {
(M[r] !== e[r] && n.includes(r)) || (e[r] = p[t][r]);
});
} else null == e.adapter && (e.adapter = ‘prebidServer’);
return !0;
})(e) &&
(function(e) {
for (const t of [‘accountId’, ‘endpoint’])
if (null == e[t])
return (
(0, i.vV)(
t + ‘ missing in server to server config’
),
!1
);
return !0;
})(e) &&
e.enabled)
)
return (
Array.isArray(e.bidders) &&
(e.bidders = e.bidders.filter(
e => !t.has(e) && (t.add(e), !0)
)),
!0
);
(0, i.JE)(‘prebidServer: s2s config is disabled’, e);
});
}
function F(e, t, n, r, s) {
if (N.length === W) return;
W++;
let d = {};
const o = _(‘userSync.filterSettings’);
if (o) {
const { all: e, iframe: t, image: n } = o,
r = t || e,
s = n || e;
r && (d = Object.assign({ iframe: r }, d)),
s && (d = Object.assign({ image: s }, d));
}
const a = {
uuid: (0, i.lk)(),
bidders: e,
account: s.accountId,
filterSettings: d
};
let c = s.userSyncLimit;
(0, i.Et)(c) && c > 0 && (a.limit = c),
t &&
((a.gdpr = t.gdprApplies ? 1 : 0),
!1 !== t.gdprApplies && (a.gdpr_consent = t.consentString)),
n && (a.us_privacy = n),
r &&
((a.gpp_sid = r.applicableSections.join()),
(a.gpp = r.gppString)),
‘boolean’ == typeof s.coopSync && (a.coopSync = s.coopSync);
const u = JSON.stringify(a);
(0, l.RD)(
H(s.syncEndpoint, t),
e => {
try {
L((e = JSON.parse(e)).bidder_status, s);
} catch (e) {
(0, i.vV)(e);
}
},
u,
{ contentType: ‘text/plain’, withCredentials: !0 }
);
}
function L(e, t) {
if (0 === e.length) return;
const n = e.shift();
n.no_cookie
? (function(e, t, n, r, s) {
s.syncUrlModifier &&
‘function’ == typeof s.syncUrlModifier[n] &&
(t = s.syncUrlModifier[n](e, t, n));
!(function(e, t, n, r, s) {
t
? ‘image’ === e || ‘redirect’ === e
? ((0, i.OG)(
`Invoking image pixel user sync for bidder: “${n}”`
),
(0, i.z$)(t, r, s))
: ‘iframe’ === e
? ((0, i.OG)(
`Invoking iframe user sync for bidder: “${n}”`
),
(0, i.SG)(t, r, s))
: ((0, i.vV)(
`User sync type “${e}” not supported for bidder: “${n}”`
),
r())
: ((0, i.vV)(`No sync url for bidder “${n}”: ${t}`),
r());
})(e, t, n, r, s.syncTimeout);
})(
n.usersync.type,
n.usersync.url,
n.bidder,
L.bind(null, e, t),
t
)
: L(e, t);
}
function H(e, t) {
const n = (0, f.C)(t),
r = n ? e.p1Consent : e.noP1Consent;
return (
r || (0, i.JE)(‘Missing matching consent URL when gdpr=’ + n), r
);
}
function Y(e) {
let t, n, r;
return (
Array.isArray(e) &&
e.length > 0 &&
((t = e[0].gdprConsent),
(n = e[0].uspConsent),
(r = e[0].gppConsent)),
{ gdprConsent: t, uspConsent: n, gppConsent: r }
);
}
a.$W.setDefaults({ s2sConfig: M }),
_(‘s2sConfig’, e => {
let { s2sConfig: t } = e;
var n;
(n = G((n = t))).length && (N = n);
});
const z = (0, b.A_)(
‘async’,
function(e, t, n, r) {
let { onResponse: s, onError: c, onBid: p, onFledge: l } = r,
{ gdprConsent: b } = Y(t);
const f = (0, i.Go)(e.ad_units),
g = f
.map(e => e.bids.map(e => e.bidder).filter(i.hj))
.reduce(i.Bq, [])
.filter(i.hj),
m = e.metrics.measureTime(‘buildRequests’, () =>
(function(e, t, n, r) {
const s = (0, i.vE)(),
d = new Set(),
c = [],
u = (0, o.K5)(e.s2sConfig),
p = (() => {
const e = (0, R.$p)(u),
t = {};
return n =>
null == n
? e
: (t.hasOwnProperty(n) ||
(t[n] = (0, R.$p)((0, q.s)(E.tW, n))),
t[n]);
})();
(n = n.map(e => p().bidRequest(e))).forEach(e => {
const r = new Map();
(n.bids = e.bids.map(e => p(e.bidder).bidRequest(e))),
e.bids.forEach(n => {
null != n.mediaTypes &&
(0, i.JE)(
`Prebid Server adapter does not (yet) support bidder-specific mediaTypes for the same adUnit. Size mapping configuration will be ignored for adUnit: ${e.code}, bidder: ${n.bidder}`
),
r.set(n.bidder, (0, i.D4)(n.bid_id, t));
});
let s = e.code,
o = 1;
for (; d.has(s); ) o++, (s = `${e.code}-${o}`);
d.add(s),
c.push({
…e,
adUnitCode: e.code,
pbsData: {
impId: s,
actualBidRequests: r,
adUnit: e
}
});
});
const l = {
…Object.fromEntries(
Object.entries(t[0]).filter(e => {
let [t] = e;
return !U.has(t);
})
),
paapi: { enabled: t.some(e => e.paapi?.enabled) }
};
return J.toORTB({
bidderRequest: l,
bidRequests: c,
context: {
currency:
a.$W.getConfig(‘currency.adServerCurrency’) ||
‘USD’,
ttl: e.s2sConfig.defaultTtl || 60,
requestTimestamp: s,
s2sBidRequest: {
…e,
ortb2Fragments: w(e.ortb2Fragments, r)
},
requestedBidders: r,
actualBidderRequests: t,
nativeRequest: e.s2sConfig.ortbNative,
getRedactor: p,
transmitTids: (0, x.io)(O.VJ, u)
}
});
})(e, t, f, g)
),
h = {
endpointUrl: H(e.s2sConfig.endpoint, b),
requestJson: m && JSON.stringify(m),
customHeaders: e?.s2sConfig?.customHeaders ?? {}
};
if (
(u.Ic(d.qY.BEFORE_PBS_HTTP, h),
(0, i.fH)(‘BidRequest: ‘ + h),
m && h.requestJson && h.endpointUrl)
) {
const t = e.metrics.startTiming(‘net’);
n(
h.endpointUrl,
{
success: function(n) {
let r;
t();
try {
r = JSON.parse(n);
const { bids: t, paapi: s } = e.metrics.measureTime(
‘interpretResponse’,
() =>
(function(e, t) {
return J.fromORTB({ response: e, request: t });
})(r, m)
);
t.forEach(p), s && s.forEach(l);
} catch (e) {
(0, i.vV)(e);
}
!r || (r.status && r.status.includes(‘Error’))
? ((0, i.vV)(
‘error parsing response: ‘,
r ? r.status : ‘not valid JSON’
),
s(!1, g))
: s(!0, g, r);
},
error: function() {
t(), c.apply(this, arguments);
}
},
h.requestJson,
{
contentType: ‘text/plain’,
withCredentials: !0,
browsingTopics: (0, x.io)(O.DL, (0, o.K5)(e.s2sConfig)),
customHeaders: h.customHeaders
}
);
} else (0, i.vV)(‘PBS request not made. Check endpoints.’);
},
‘processPBSRequest’
);
function K(e, t) {
return e?.extPrebid?.returnallbidstatus
? t?.ext?.seatnonbid
: void 0;
}
function Q(e) {
return e?.ext?.prebid?.analytics?.tags;
}
o.Ay.registerBidAdapter(
new (function() {
const e = new s.A(‘prebidServer’);
return (
(e.callBids = function(e, t, n, r, s) {
const p = (e.metrics = (0, k.BO)(t?.[0]?.metrics)
.newMetrics()
.renameWith(t => [
`adapter.s2s.${t}`,
`adapters.s2s.${e.s2sConfig.defaultVendor}.${t}`
]));
(r = p.startTiming(‘total’).stopBefore(r)),
t.forEach(e =>
(0, k.BO)(e.metrics).join(p, {
continuePropagation: !1
})
);
let { gdprConsent: l, uspConsent: b, gppConsent: f } = Y(t);
if (Array.isArray(N)) {
if (
e.s2sConfig &&
e.s2sConfig.syncEndpoint &&
H(e.s2sConfig.syncEndpoint, l)
) {
const t =
(e.s2sConfig.extPrebid &&
e.s2sConfig.extPrebid.aliases) ??
{};
F(
e.s2sConfig.bidders
.map(e => o.Ay.aliasRegistry[e] || t[e] || e)
.filter((e, t, n) => n.indexOf(e) === t),
l,
b,
f,
e.s2sConfig
);
}
z(e, t, s, {
onResponse: function(n, s, i) {
n && t.forEach(e => u.Ic(d.qY.BIDDER_DONE, e));
const { seatNonBidData: c, atagData: g } = (function(
e,
t
) {
return { atagData: Q(t), seatNonBidData: K(e, t) };
})(e.s2sConfig, i);
if (
(c &&
u.Ic(d.qY.SEAT_NON_BID, {
seatnonbid: i.ext.seatnonbid,
auctionId: t[0].auctionId,
requestedBidders: s,
response: i,
adapterMetrics: p
}),
c || g)
) {
const e = {
seatnonbid: c,
atag: g,
auctionId: t[0].auctionId,
requestedBidders: s,
response: i,
adapterMetrics: p
};
u.Ic(d.qY.PBS_ANALYTICS, e);
}
r(!1),
(function(e, t, n, r) {
e.forEach(e => {
let s = o.Ay.getBidAdapter(e);
s &&
s.registerSyncs &&
a.$W.runWithBidder(
e,
s.registerSyncs.bind(s, [], t, n, r)
);
});
})(s, l, b, f);
},
onError(n, s) {
const { p1Consent: o = ”, noP1Consent: a = ” } =
e?.s2sConfig?.endpoint || {};
o === a
? (0, i.vV)(
`Prebid server call failed: ‘${n}’. Endpoint: “${o}”}`,
s
)
: (0, i.vV)(
`Prebid server call failed: ‘${n}’. Endpoints: p1Consent “${o}”, noP1Consent “${a}”}`,
s
),
t.forEach(e =>
u.Ic(d.qY.BIDDER_ERROR, {
error: s,
bidderRequest: e
})
),
r(s.timedOut);
},
onBid: function(t) {
let { adUnit: r, bid: s } = t;
const o = (s.metrics = e.metrics.fork().renameWith());
o.checkpoint(‘addBidResponse’),
(null != s.requestId && null != s.requestBidder) ||
e.s2sConfig.allowUnknownBidderCodes
? o.measureTime(‘addBidResponse.validate’, () =>
(0, c.fn)(r, s)
)
? n(r, s)
: n.reject(r, s, d.Tf.INVALID)
: ((0, i.JE)(
`PBS adapter received bid from unknown bidder (${s.bidder}), but ‘s2sConfig.allowUnknownBidderCodes’ is not set. Ignoring bid.`
),
n.reject(r, s, d.Tf.BIDDER_DISALLOWED));
},
onFledge: e => {
a.$W.runWithBidder(e.bidder, () => {
(0, c.JN)(
{ auctionId: t[0].auctionId, …e },
{ config: e.config }
);
});
}
});
}
}),
Object.assign(this, {
callBids: e.callBids,
setBidderCode: e.setBidderCode,
type: V
})
);
})(),
‘prebidServer’
),
(0, r.E)(‘prebidServerBidAdapter’);
}
},
e => {
e.O(0, [802, 618, 498, 225, 769, 139, 85], () => {
return (t = 1134), e((e.s = t));
var t;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[41],
{
2115: (d, e, n) => {
var t = n(7873),
s = n(9214),
i = n(1069);
const o = {
name: ‘pubProvidedId’,
gvlid: n(6916).B1,
decode(d) {
const e = d ? { pubProvidedId: d } : void 0;
return (
(0, i.fH)(
‘PubProvidedId: Decoded value ‘ + JSON.stringify(e)
),
e
);
},
getId(d) {
const e = (d && d.params) || {};
let n = [];
return (
(0, i.cy)(e.eids) && (n = n.concat(e.eids)),
‘function’ == typeof e.eidsFunction &&
(n = n.concat(e.eidsFunction())),
{ id: n }
);
}
};
(0, s.bz)(‘userId’, o), (0, t.E)(‘pubProvidedIdSystem’);
}
},
d => {
d.O(0, [802, 769, 139, 85], () => {
return (e = 2115), d((d.s = e));
var e;
});
d.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[496],
{
5862: (e, o, t) => {
var n = t(7873),
r = t(1069),
d = t(9214),
i = t(2938),
a = t(6916),
u = t(5569),
c = t(2339);
const s = (0, i.vM)({ moduleType: u.fW, moduleName: ‘sharedId’ }),
l = ‘cookie’,
m = ‘html5’,
p = ‘_pubcid_optout’,
f = ‘PublisherCommonId’;
function g(e, o) {
if (o === l) return s.getCookie(e);
if (o === m && s.hasLocalStorage()) {
const o = s.getDataFromLocalStorage(`${e}_exp`);
if (!o) return s.getDataFromLocalStorage(e);
if (new Date(o).getTime() – Date.now() > 0)
return s.getDataFromLocalStorage(e);
}
}
function b(e, o) {
return function(t, n) {
o
? v(o, e, () => {
t(n() || e);
})()
: t(e);
};
}
function v(e) {
let o =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: ”,
t = arguments.length > 2 ? arguments[2] : void 0;
if (!e) return;
const n = (0, r.Dl)(e);
n.search.id = encodeURIComponent(‘pubcid:’ + o);
const d = (0, r.c$)(n);
return function() {
(0, r.z$)(d, t);
};
}
function h() {
return !!(
(s.cookiesAreEnabled() && g(p, l)) ||
(s.hasLocalStorage() && g(p, m))
);
}
const I = {
name: ‘sharedId’,
aliasName: ‘pubCommonId’,
gvlid: a.B1,
decode(e, o) {
if (h())
return void (0, r.fH)(‘PubCommonId decode: Has opted-out’);
(0, r.fH)(‘ Decoded value PubCommonId ‘ + e);
return { pubcid: e };
},
getId: function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
o = arguments.length > 1 ? arguments[1] : void 0,
t = arguments.length > 2 ? arguments[2] : void 0;
if (h()) return void (0, r.fH)(‘PubCommonId: Has opted-out’);
if (o?.coppa)
return void (0, r.fH)(
‘PubCommonId: IDs not provided for coppa requests, exiting PubCommonId’
);
const { params: { create: n = !0, pixelUrl: d } = {} } = e;
let i = t;
if (!i) {
try {
‘object’ == typeof window[f] && (i = window[f].getId());
} catch (e) {}
i || (i = n && (0, r.N9)() ? (0, r.lk)() : void 0);
}
return { id: i, callback: b(i, d) };
},
extendId: function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
o = arguments.length > 1 ? arguments[1] : void 0,
t = arguments.length > 2 ? arguments[2] : void 0;
if (h())
return (
(0, r.fH)(‘PubCommonId: Has opted-out’), { id: void 0 }
);
if (o?.coppa)
return void (0, r.fH)(
‘PubCommonId: IDs not provided for coppa requests, exiting PubCommonId’
);
const { params: { extend: n = !1, pixelUrl: d } = {} } = e;
if (n) {
if (d) {
return { callback: v(d, t) };
}
return { id: t };
}
},
domainOverride: (0, c.w)(s, ‘sharedId’),
eids: {
pubcid(e, o) {
const t = {
source: ‘pubcid.org’,
uids: e.map(e => ({ id: e, atype: 1 }))
};
return (
null != o?.params?.inserter &&
(t.inserter = o.params.inserter),
t
);
}
}
};
(0, d.bz)(‘userId’, I), (0, n.E)(‘sharedIdSystem’);
}
},
e => {
e.O(0, [764, 802, 769, 139, 85], () => {
return (o = 5862), e((e.s = o));
var o;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[469],
{
4836: (e, t, n) => {
var r = n(7873),
o = n(3272),
s = n(5023),
i = n(1445),
a = n(8969),
c = n(9214),
u = n(1069);
const l = new Map();
function d(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: l;
const n = {};
function r(e) {
const t = JSON.stringify([
e.source?.toLowerCase(),
…Object.keys(e)
.filter(e => ![‘uids’, ‘source’].includes(e))
.sort()
.map(t => e[t])
]);
n.hasOwnProperty(t) ? n[t].uids.push(…e.uids) : (n[t] = e);
}
return (
Object.entries(e).forEach(e => {
let [n, o] = e;
o = Array.isArray(o) ? o : [o];
const s = t.get(n);
let i;
if (‘pubProvidedId’ === n) i = (0, u.Go)(o);
else if (‘function’ == typeof s)
try {
(i = s(o)),
Array.isArray(i) || (i = [i]),
i.forEach(
e =>
(e.uids = e.uids.filter(e => {
let { id: t } = e;
return (0, u.O8)(t);
}))
),
(i = i.filter(e => {
let { uids: t } = e;
return t?.length > 0;
}));
} catch (e) {
(0, u.vV)(`Could not generate EID for “${n}”`, e);
}
else
i = o.map(e =>
(function(e, t, n) {
if (n && e) {
let t = {};
t.source = (0, u.fp)(n.getSource)
? n.getSource(e)
: n.source;
const r = (0, u.fp)(n.getValue) ? n.getValue(e) : e;
if ((0, u.O8)(r)) {
const o = { id: r, atype: n.atype };
if ((0, u.fp)(n.getUidExt)) {
const t = n.getUidExt(e);
t && (o.ext = t);
}
if (
((t.uids = [o]),
n.inserter || (0, u.fp)(n.getInserter))
) {
const r = (0, u.fp)(n.getInserter)
? n.getInserter(e)
: n.inserter;
null != r && (t.inserter = r);
}
if (n.matcher || (0, u.fp)(n.getMatcher)) {
const r = (0, u.fp)(n.getMatcher)
? n.getMatcher(e)
: n.matcher;
null != r && (t.matcher = r);
}
if (
(null != n.mm && (t.mm = n.mm),
(0, u.fp)(n.getEidExt))
) {
const r = n.getEidExt(e);
r && (t.ext = r);
}
return t;
}
}
return null;
})(e, 0, s)
);
Array.isArray(i) && i.filter(e => null != e).forEach(r);
}),
Object.values(n)
);
}
function f(e) {
const t = new Map(),
n = {};
return (
Object.entries(e).forEach(e => {
let [r, o] = e;
const s = o();
if (s) {
n[r] = s.idObj[r];
let e = s.submodule.eids?.[r];
‘function’ == typeof e &&
((i = e),
(e = function() {
for (
var e = arguments.length, t = new Array(e), n = 0;
n < e;
n++
)
t[n] = arguments[n];
return i(…t, s.config);
})),
t.set(r, e);
}
var i;
}),
d(n, t)
);
}
var g = n(2938),
m = n(3172),
b = n(1692),
h = n(5555),
p = n(6894),
y = n(5973),
I = n(6916),
w = n(5569),
v = n(5139),
S = n(6811),
D = n(3441),
E = n(8230),
O = n(8934);
const k = ‘User ID’,
$ = g.X0,
j = g.qk,
A = ‘_pbjs_id_optout’,
U = (0, g.CK)(‘userId’),
T = { isAllowed: v.io };
let C,
x,
N,
L,
_,
P,
H = [],
M = [],
J = {},
q = [];
const V = (() => {
let e;
return () => (null == e && (e = (0, p.K7)()), e);
})();
function F(e) {
return V()
.fork()
.renameWith(t => [`userId.mod.${t}`, `userId.mods.${e}.${t}`]);
}
function W(e, t) {
t = t || e.storageMgr;
const n =
‘function’ == typeof e.submodule.domainOverride
? e.submodule.domainOverride()
: null,
r = e.config.storage.name;
return function(e, o, s) {
t.setCookie(r + (e || ”), o, s, ‘Lax’, n);
};
}
function G(e, t) {
const n = e.config.storage;
try {
const r = new Date(
Date.now() + 864e5 * n.expires
).toUTCString(),
o = (0, u.Qd)(t) ? JSON.stringify(t) : t;
e.enabledStorageTypes.forEach(t => {
switch (t) {
case $:
!(function(e, t, n) {
const r = e.config.storage,
o = W(e);
o(null, t, n),
o(‘_cst’, me(), n),
‘number’ == typeof r.refreshInSeconds &&
o(‘_last’, new Date().toUTCString(), n);
})(e, o, r);
break;
case j:
!(function(e, t, n) {
const r = e.config.storage,
o = e.storageMgr;
o.setDataInLocalStorage(`${r.name}_exp`, n),
o.setDataInLocalStorage(`${r.name}_cst`, me()),
o.setDataInLocalStorage(
r.name,
encodeURIComponent(t)
),
‘number’ == typeof r.refreshInSeconds &&
o.setDataInLocalStorage(
`${r.name}_last`,
new Date().toUTCString()
);
})(e, o, r);
}
});
} catch (e) {
(0, u.vV)(e);
}
}
function R(e) {
ve(e),
e.enabledStorageTypes.forEach(t => {
switch (t) {
case $:
!(function(e) {
const t = W(e, U),
n = new Date(Date.now() – 864e5).toUTCString();
[”, ‘_last’, ‘_cst’].forEach(e => {
try {
t(e, ”, n);
} catch (e) {
(0, u.vV)(e);
}
});
})(e);
break;
case j:
!(function(e) {
[”, ‘_last’, ‘_exp’, ‘_cst’].forEach(t => {
try {
U.removeDataFromLocalStorage(
e.config.storage.name + t
);
} catch (e) {
(0, u.vV)(e);
}
});
})(e);
}
});
}
function B(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: void 0;
const n = e.config.storage,
r = t ? `${n.name}_${t}` : n.name;
let o;
try {
e.enabledStorageTypes.find(t => {
switch (t) {
case $:
o = (function(e, t) {
return e.storageMgr.getCookie(t);
})(e, r);
break;
case j:
o = (function(e, t) {
const n = e.storageMgr,
r = e.config.storage,
o = n.getDataFromLocalStorage(`${r.name}_exp`);
return ” === o
? n.getDataFromLocalStorage(t)
: o && new Date(o).getTime() – Date.now() > 0
? decodeURIComponent(n.getDataFromLocalStorage(t))
: void 0;
})(e, r);
}
return !!o;
}),
‘string’ == typeof o &&
‘{‘ === o.trim().charAt(0) &&
(o = JSON.parse(o));
} catch (e) {
(0, u.vV)(e);
}
return o;
}
function Q(e, t, n) {
t = V()
.fork()
.startTiming(‘userId.callbacks.total’)
.stopBefore(t);
const r = (0, u.U6)(() => {
clearTimeout(x), t();
}, e.length);
e.forEach(function(e) {
const t = F(e.submodule.name)
.startTiming(‘callback’)
.stopBefore(r);
try {
e.callback(function(r) {
r
? (e.config.storage && G(e, r),
(e.idObj = e.submodule.decode(r, e.config)),
n.refresh(),
he(n))
: (0, u.fH)(
`${k}: ${e.submodule.name} – request id responded with an empty value`
),
t();
}, B.bind(null, e));
} catch (n) {
(0, u.vV)(`Error in userID module ‘${e.submodule.name}’:`, n),
t();
}
e.callback = void 0;
});
}
function K(e) {
return Object.fromEntries(
Object.entries(e)
.map(e => {
let [t, n] = e;
return [t, n()?.idObj?.[t]];
})
.filter(e => {
let [t, n] = e;
return null != n;
})
);
}
function Y(e, t, n) {
const r = {};
return (
e.forEach(e => {
const o = n(e),
s = (function(e) {
if (e.primaryIds) return e.primaryIds;
const t = Object.keys(e.eids ?? {});
if (t.length > 1)
throw new Error(
`ID submodule ${e.name} can provide multiple IDs, but does not specify ‘primaryIds’`
);
return t;
})(o);
t(e).forEach(t => {
const n = (r[t] = r[t] ?? []),
i = J[t]?.indexOf(o.name) ?? (s.includes(t) ? 0 : -1),
a = n.findIndex(e => {
let [t] = e;
return t < i;
});
n.splice(-1 === a ? n.length : a, 0, [i, e]);
});
}),
Object.fromEntries(
Object.entries(r).map(e => {
let [t, n] = e;
return [
t,
n.map(e => {
let [t, n] = e;
return n;
})
];
})
)
);
}
function z() {
const e = {
submodules: [],
global: {},
bidder: {},
combined: {},
refresh() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: [];
const n = new Set(t.map(e => e.submodule));
(e.submodules = e.submodules
.filter(e => !n.has(e.submodule))
.concat(t)),
(function() {
const t = Y(
e.submodules,
e => Object.keys(e.idObj ?? {}),
e => e.submodule
),
n = {},
r = {};
function o(e, t, n) {
return function() {
for (const {
allowed: r,
bidders: o,
module: s
} of n) {
if (
!T.isAllowed(
S.yl,
(0, D.s)(w.fW, s?.config?.name, { init: !1 })
)
)
continue;
const i = s.idObj?.[e];
if (null != i) {
if (r) return s;
if (t) {
const t = e =>
e
.map(e => e.module.submodule.name)
.join(‘, ‘);
return (
(0, u.JE)(
`userID modules ${t(
n
)} provide the same ID (‘${e}’); ${
s.submodule.name
} is the preferred source, but it’s configured only for some bidders, unlike ${t(
n.filter(e => null == e.bidders)
)}. Other bidders will not see the “${e}” ID.`
),
null
);
}
if (null == o) return null;
}
}
return null;
};
}
Object.entries(t).forEach(e => {
let [t, s] = e,
i = !0;
const a = new Set();
(s = s.map(e => {
let t = null;
return (
Array.isArray(e.config.bidders) &&
e.config.bidders.length > 0
? ((t = e.config.bidders),
t.forEach(e => a.add(e)))
: (i = !1),
{ module: e, bidders: t }
);
})),
i ||
(n[t] = o(
t,
!0,
s.map(e => {
let { bidders: t, module: n } = e;
return {
allowed: null == t,
bidders: t,
module: n
};
})
)),
a.forEach(e => {
(r[e] = r[e] ?? {}),
(r[e][t] = o(
t,
!1,
s.map(t => {
let { bidders: n, module: r } = t;
return {
allowed: n?.includes(e),
bidders: n,
module: r
};
})
));
});
});
const s = Object.values(r)
.concat([n])
.reduce((e, t) => Object.assign(e, t), {});
Object.assign(e, { global: n, bidder: r, combined: s });
})();
}
};
return e;
}
function X(e) {
let { adUnits: t, ortb2Fragments: n } = e;
if (
((n = n ?? { global: {}, bidder: {} }),
(function(e) {
const { global: t, bidder: n } = e,
{ global: r, bidder: o } = C,
s = f(r);
s.length > 0 &&
(0, m.J)(
t,
‘user.ext.eids’,
(t.user?.ext?.eids ?? []).concat(s)
),
Object.entries(o).forEach(e => {
let [t, r] = e;
const o = f(r);
o.length > 0 &&
(0, m.J)(
n,
`${t}.user.ext.eids`,
(n[t]?.user?.ext?.eids ?? []).concat(o)
);
});
})(n),
[t].some(e => !Array.isArray(e) || !e.length))
)
return;
const r = K(C.global),
o = n.global.user?.ext?.eids || [];
t.forEach(e => {
e.bids &&
(0, u.cy)(e.bids) &&
e.bids.forEach(e => {
const t = Object.assign({}, r, K(C.bidder[e.bidder] ?? {})),
s = o.concat(n.bidder?.[e.bidder]?.user?.ext?.eids || []);
Object.keys(t).length > 0 && (e.userId = t),
s.length > 0 && (e.userIdAsEids = s);
});
});
}
const Z = {};
let ee;
function te() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: ie() || [];
const t = _ && e.find(e => e.source === _);
if (t && ‘string’ == typeof t?.uids?.[0]?.id) {
const e = t.uids[0].id.replace(/[W_]/g, ”);
if (e.length >= 32 && e.length <= 150) return e;
(0, u.JE)(
`User ID – Googletag Publisher Provided ID for ${_} is not between 32 and 150 characters – ${e}`
);
}
}
const ne = (0, p.Ak)(‘userId’, function(e, t) {
let { mkDelay: n = h.cb, getIds: r = ge } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
h.U9.race([r().catch(() => null), n(L)]).then(() => {
X(t),
V().join((0, p.BO)(t.metrics), {
propagate: !1,
includeGroups: !0
}),
e.call(this, t);
});
}),
re = (0, p.Ak)(‘userId’, function(e, t) {
X(t), e.call(this, t);
});
function oe() {
return !!O.gH.getHooks({ hook: ne }).length;
}
function se() {
return K(C.combined);
}
function ie() {
return f(C.combined);
}
function ae(e) {
return ie().filter(t => t.source === e)[0];
}
function ce(e, t, n) {
return de().then(() => {
let r = {};
if ((0, u.fp)(n)) {
(0, u.fH)(
`${k} – Getting encrypted signal from custom function : ${n.name} & source : ${e} `
);
const t = n(e);
r[e] = t ? ue(t) : null;
} else {
const n = ae(e);
(0, u.fH)(
`${k} – Getting encrypted signal for eids :${JSON.stringify(
n
)}`
),
(0, u.Im)(n) ||
(r[n.source] = !0 === t ? ue(n) : n.uids[0].id);
}
return (
(0, u.fH)(`${k} – Fetching encrypted eids: ${r[e]}`), r[e]
);
});
}
function ue(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: 1,
n = ”;
if (1 === t)
n =
‘object’ == typeof e
? window.btoa(JSON.stringify(e))
: window.btoa(e);
return `${t}||${n}`;
}
function le() {
if (!(0, u.II)()) return;
window.googletag.secureSignalProviders =
window.googletag.secureSignalProviders || [];
const e = o.$W.getConfig(‘userSync.encryptedSignalSources’);
if (e) {
const t = e.registerDelay || 0;
setTimeout(() => {
e.sources &&
e.sources.forEach(e => {
let { source: t, encrypt: n, customFunc: r } = e;
t.forEach(e => {
window.googletag.secureSignalProviders.push({
id: e,
collectorFunction: () => ce(e, n, r)
});
});
});
}, t);
} else
(0, u.JE)(
`${k} – ESP : encryptedSignalSources config not defined under userSync Object`
);
}
function de(e) {
return ee(e).then(
() => se(),
e =>
e === Z
? Promise.resolve().then(ge)
: ((0, u.vV)(‘Error initializing userId’, e),
h.U9.reject(e))
);
}
function fe() {
let { submoduleNames: e } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
t = arguments.length > 1 ? arguments[1] : void 0;
return de({ refresh: !0, submoduleNames: e }).then(
e => (t && (0, u.fp)(t) && t(), e)
);
}
function ge() {
return de();
}
function me() {
let e = Number(I.SL.hash);
const t = [];
for (; e > 0; ) t.push(String.fromCharCode(255 & e)), (e >>>= 8);
return btoa(t.join());
}
function be(e, t) {
const n = I.SL.getConsentData();
if (e.config.storage) {
let r,
o = B(e),
s = !1;
if (‘number’ == typeof e.config.storage.refreshInSeconds) {
const t = new Date(B(e, ‘last’));
s =
t &&
Date.now() – t.getTime() >
1e3 * e.config.storage.refreshInSeconds;
}
if (
!o ||
s ||
t ||
(function(e) {
const t = B(e, ‘cst’);
return !t || t !== me();
})(e)
) {
const t = Object.assign(
{ enabledStorageTypes: e.enabledStorageTypes },
e.config
);
r = e.submodule.getId(t, n, o);
} else
‘function’ == typeof e.submodule.extendId &&
(r = e.submodule.extendId(e.config, n, o));
(0, u.Qd)(r) &&
(r.id && (G(e, r.id), (o = r.id)),
‘function’ == typeof r.callback && (e.callback = r.callback)),
o && (e.idObj = e.submodule.decode(o, e.config));
} else if (e.config.value) e.idObj = e.config.value;
else {
const t = e.submodule.getId(e.config, n);
(0, u.Qd)(t) &&
(‘function’ == typeof t.callback && (e.callback = t.callback),
t.id && (e.idObj = e.submodule.decode(t.id, e.config)));
}
}
function he(e) {
const t = f(e.combined);
if (t.length && _) {
const e = te(t);
e &&
((0, u.II)()
? window.googletag.pubads().setPublisherProvidedId(e)
: ((window.googletag = window.googletag || {}),
(window.googletag.cmd = window.googletag.cmd || []),
window.googletag.cmd.push(function() {
window.googletag.pubads().setPublisherProvidedId(e);
})));
}
}
function pe(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
return V()
.fork()
.measureTime(‘userId.init.modules’, function() {
if (!t.length) return [];
if (
(t.forEach(e => ve(e)),
!(t = t.filter(
e =>
(!e.config.storage || !!e.enabledStorageTypes.length) &&
T.isAllowed(S.yl, (0, D.s)(w.fW, e.config.name))
)).length)
)
return (0, u.JE)(`${k} – no ID module configured`), [];
const r = t.reduce(
(e, t) =>
F(t.submodule.name).measureTime(‘init’, () => {
try {
be(t, n), e.push(t);
} catch (e) {
(0, u.vV)(
`Error in userID module ‘${t.submodule.name}’:`,
e
);
}
return e;
}),
[]
);
return e.refresh(r), he(e), r;
});
}
function ye(e) {
return e?.storage?.type?.trim().split(/s*&s*/) || [];
}
function Ie(e) {
function t(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
n[r – 1] = arguments[r];
(0, u.JE)(`Invalid userSync.userId config: ${e}`, …n);
}
return Array.isArray(e)
? e.filter(e => {
if (!e?.name) return t(‘must specify “name”‘, e);
if (e.storage) {
if (!e.storage.name || !e.storage.type)
return t(
‘must specify “storage.name” and “storage.type”‘,
e
);
if (
!(function(e) {
return ye(e).every(e => we.has(e));
})(e)
)
return t(‘invalid “storage.type”‘, e);
[‘expires’, ‘refreshInSeconds’].forEach(n => {
let r = e.storage[n];
null != r &&
‘number’ != typeof r &&
((r = Number(r)),
isNaN(r)
? (t(
`storage.${n} must be a number and will be ignored`,
e
),
delete e.storage[n])
: (e.storage[n] = r));
});
}
return !0;
})
: (null != e && t(‘must be an array’, e), []);
}
const we = new Set([j, $]);
function ve(e) {
if (e.enabledStorageTypes) return;
const t = ye(e.config);
e.enabledStorageTypes = t.filter(t => {
switch (t) {
case j:
return (function(e) {
return !(
!e.storageMgr.localStorageIsEnabled() ||
(U.getDataFromLocalStorage(A) &&
((0, u.fH)(
`${k} – opt-out localStorage found, storage disabled`
),
1))
);
})(e);
case $:
return (function(e) {
return !(
!e.storageMgr.cookiesAreEnabled() ||
(U.getCookie(A) &&
((0, u.fH)(
`${k} – opt-out cookie found, storage disabled`
),
1))
);
})(e);
}
return !1;
});
}
function Se(e) {
l.clear(),
Object.entries(
Y(
e,
e => Object.keys(e.eids || {}),
e => e
)
).forEach(e => {
let [t, n] = e;
return l.set(t, n[0].eids[t]);
});
}
function De() {
Se(q);
const e = Ie(M);
if (!e.length) return;
const t = q.filter(e => !(H || []).find(t => t.name === e.name));
H.splice(0, H.length),
t
.map(t => {
const n = (e || []).find(
e =>
e.name &&
(e.name.toLowerCase() === t.name.toLowerCase() ||
(t.aliasName &&
e.name.toLowerCase() === t.aliasName.toLowerCase()))
);
return (
n && t.name !== n.name && (n.name = t.name),
n
? {
submodule: t,
config: n,
callback: void 0,
idObj: void 0,
storageMgr: (0, g.vM)({
moduleType: w.fW,
moduleName: n.name
})
}
: null
);
})
.filter(e => null !== e)
.forEach(e => H.push(e)),
H.length &&
(oe() ||
(O.gH.getHooks({ hook: re }).remove(),
O.gH.before(ne, 100),
i.Ay.callDataDeletionRequest.before(Ee),
b.Q.after(e => e(te()))),
(0, u.fH)(
`${k} – usersync config updated for ${H.length} submodules: `,
H.map(e => e.submodule.name)
));
}
function Ee(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
n[r – 1] = arguments[r];
(0, u.fH)(
‘UserID: received data deletion request; deleting all stored IDs…’
),
H.forEach(e => {
if (‘function’ == typeof e.submodule.onDataDeletionRequest)
try {
e.submodule.onDataDeletionRequest(
e.config,
e.idObj,
…n
);
} catch (t) {
(0, u.vV)(
`Error calling onDataDeletionRequest for ID submodule ${e.submodule.name}`,
t
);
}
R(e);
}),
e.apply(this, n);
}
function Oe(e) {
return function() {
return Promise.resolve(e.apply(this, arguments));
};
}
function ke(e) {
let { mkDelay: t = h.cb } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
(_ = void 0),
(H = []),
(M = []),
(C = z()),
(ee = (function() {
let { mkDelay: e = h.cb } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const t = (0, h.v6)(),
n = (0, h.v6)();
let r,
o,
i = !1;
function l(e) {
return (
(o = V().fork()),
null != r && r.reject(Z),
(r = (0, h.v6)()),
h.U9.race([e, r.promise]).finally(
o.startTiming(‘userId.total’)
)
);
}
let d = C,
f = H;
function g(e) {
return function() {
if (d === C && f === H) return e(…arguments);
};
}
function m() {
return I.SL.promise.finally(
o.startTiming(‘userId.init.consent’)
);
}
let b = l(
h.U9.all([c.Gc, t.promise])
.then(m)
.then(
g(() => {
pe(d, f);
})
)
.then(() =>
n.promise.finally(
o.startTiming(‘userId.callbacks.pending’)
)
)
.then(
g(() => {
const e = d.submodules.filter(e =>
(0, u.fp)(e.callback)
);
if (e.length) return new h.U9(t => Q(e, t, d));
})
)
);
return function() {
let {
refresh: r = !1,
submoduleNames: o = null,
ready: c = !1
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return (
c &&
!i &&
((i = !0),
t.resolve(),
L > 0
? n.resolve()
: s.on(a.qY.AUCTION_END, function t() {
s.AU(a.qY.AUCTION_END, t), e(N).then(n.resolve);
})),
r &&
i &&
(b = l(
b
.catch(() => null)
.then(m)
.then(
g(() => {
const e = pe(
d,
f.filter(
e =>
null == o || o.includes(e.submodule.name)
),
!0
).filter(e => null != e.callback);
if (e.length) return new h.U9(t => Q(e, t, d));
})
)
)),
b
);
};
})({ mkDelay: t })),
null != P && P(),
(q = []),
(P = e.getConfig(‘userSync’, e => {
const t = e.userSync;
t &&
((_ = t.ppid),
t.userIds &&
((M = t.userIds),
(N = (0, u.Et)(t.syncDelay)
? t.syncDelay
: E.qh.syncDelay),
(L = (0, u.Et)(t.auctionDelay)
? t.auctionDelay
: E.qh.auctionDelay),
De(),
(function(e, t) {
if (e) {
const n = {},
r = new Map(
t.map(e =>
e.aliasName ? [e.aliasName, e.name] : []
)
);
Object.keys(e).forEach(t => {
const o = (0, u.cy)(e[t])
? […e[t]].reverse()
: [];
n[t] = o.map(e => (r.has(e) ? r.get(e) : e));
}),
(J = n);
} else J = {};
C.refresh(), Se(t);
})(t.idPriority, q),
ee({ ready: !0 })));
})),
((0, r.m)().getUserIds = se),
((0, r.m)().getUserIdsAsEids = ie),
((0, r.m)().getEncryptedEidsForSource = Oe(ce)),
((0, r.m)().registerSignalSources = le),
((0, r.m)().refreshUserIds = Oe(fe)),
((0, r.m)().getUserIdsAsync = Oe(ge)),
((0, r.m)().getUserIdsAsEidBySource = ae),
oe() || O.gH.before(re, 100);
}
ke(o.$W),
(0, c.xG)(
‘userId’,
function(e) {
(e.findRootDomain = y.S),
(q || []).find(t => t.name === e.name) ||
(q.push(e),
I.o2.register(w.fW, e.name, e.gvlid),
De(),
ee({ refresh: !0, submoduleNames: [e.name] }));
},
{ postInstallAllowed: !0 }
),
(0, r.E)(‘userId’);
}
},
e => {
e.O(0, [802, 769, 139, 85], () => {
return (t = 4836), e((e.s = t));
var t;
});
e.O();
}
]);
})(),
tlpbjs.processQueue();

tlpbjs.config = {};
tlpbjs.config.domain = window.location.hostname.replace(‘www.’, ”);
if (account) {
tlpbjs.config.account = account;
} else {
tlpbjs.config.account = ‘tl’;
}
tlpbjs.config.debug = window.location.search.indexOf(‘tlpbjs=debug’) > -1;
tlpbjs.defineSlot = window.googletag.defineSlot;

tlpbjs.nativeRender = function(state) {
var winners = tlpbjs.getHighestCpmBids([state.divId]);
if (tlpbjs.config.debug) console.log(‘tlpbjs: winners: ‘ + winners.length);
for (var i = 0; i < winners.length; i++) {
var winningBid = winners[i];
if (winningBid && winningBid.adId) {
if (tlpbjs.config.debug)
console.log(‘tlpbjs: winning bid id: ‘ + winningBid.adId);
if (state.div) {
state.div.innerHTML = ”;
state.div.align = ‘center’;
state.div.style = ‘padding:0;margin:0;border:0pt none;’;
let iframe = document.createElement(‘iframe’);
iframe.frameBorder = 0;
iframe.setAttribute(‘marginwidth’, ‘0’);
iframe.setAttribute(‘marginheight’, ‘0’);
iframe.scrolling = ‘no’;
iframe.style =
‘overflow:hidden;display:block;border-style:none;border:0px;’;
state.div.appendChild(iframe);
var iframeDoc = iframe.contentWindow.document;
tlpbjs.renderAd(iframeDoc, winningBid.adId);
}
}
}
};

tlpbjs.tlRequestBids = function(state) {
if (state.gamSlotId) {
tlpbjs.requestBids({
adUnitCodes: [state.gamSlot.getSlotElementId()],
bidsBackHandler: function() {
tlpbjs.setTargetingForGPTAsync([state.gamSlot.getSlotElementId()]);
googletag.pubads().refresh([state.gamSlot]);
}
});
} else {
tlpbjs.requestBids({
adUnitCodes: [state.divId],
bidsBackHandler: function() {
tlpbjs.nativeRender(state);
}
});
}
};

tlpbjs.getPPID = function() {
if (localStorage) {
var permutive_id = localStorage.getItem(‘permutive-id’);
if (permutive_id) {
return permutive_id;
} else {
var teal_id = localStorage.getItem(‘teal-id’);
if (teal_id) {
return teal_id;
}
var newUUID = crypto
? crypto.randomUUID().toString()
: Math.random()
.toString()
.replace(‘0.’, ”) +
Math.random()
.toString()
.replace(‘0.’, ”);
localStorage.setItem(‘teal-id’, newUUID);
return newUUID;
}
} else {
return new crypto()
? crypto.randomUUID().toString()
: Math.random()
.toString()
.replace(‘0.’, ”) +
Math.random()
.toString()
.replace(‘0.’, ”);
}
};

tlpbjs.que.push(function() {
tlpbjs.setConfig({
s2sConfig: {
accountId: tlpbjs.config.account,
bidders: [‘teal-s2s’],
timeout: 2200,
maxTimeout: 2200,
enabled: true,
adapter: ‘prebidServer’,
endpoint: ‘https://a.bids.ws/openrtb2/auction’,
syncEndpoint: ‘https://a.bids.ws/cookie_sync’,
coopSync: true,
allowUnknownBidderCodes: true
},
ortb2: {
ext: {
prebid: {
storedrequest: {
id: tlpbjs.config.account
}
}
}
},
useBidCache: true,
bidderTimeout: 2500,
enableTIDs: true,
bidderSequence: ‘random’,
enableSendAllBids: false,
auctionOptions: {
suppressStaleRender: true
},
consentManagement: {
usp: {
cmpApi: ‘iab’,
timeout: 0
},
…(typeof __tcfapi === ‘function’ && {
gdpr: {
cmpApi: ‘iab’,
allowAuctionWithoutConsent: true,
timeout: 0,
defaultGdprScope: true
}
})
},
userSync: {
ppid: tlpbjs.config.domain,
filterSettings: {
iframe: {
bidders: ‘*’,
filter: ‘include’
}
},
userIds: [
{
name: ‘pubProvidedId’,
params: {
eids: [
{
source: tlpbjs.config.domain,
uids: [
{
id: tlpbjs.getPPID(),
atype: 1,
ext: {
stype: ‘ppuid’
}
}
]
}
]
}
},
{
name: ‘criteo’
},
{
name: ‘sharedId’,
storage: {
name: ‘_sharedID’,
type: ‘cookie’,
expires: 365
}
}
]
}
});
tlpbjs.bidderSettings = {
standard: {
adserverTargeting: [
{
key: ‘tl_bidder’,
val: function(bidResponse) {
return bidResponse.bidderCode;
}
},
{
key: ‘tl_adid’,
val: function(bidResponse) {
return bidResponse.adId;
}
},
{
key: ‘tl_pb’,
val: function(bidResponse) {
return bidResponse.pbHg;
}
},
{
key: ‘tl_size’,
val: function(bidResponse) {
return bidResponse.size;
}
},
{
key: ‘tl_source’,
val: function(bidResponse) {
return bidResponse.source;
}
},
{
key: ‘tl_format’,
val: function(bidResponse) {
return bidResponse.mediaType;
}
}
]
}
};
tlpbjs.onEvent(‘beforeRequestBids’, function(adUnits) {
adUnits.forEach(a => {
if (a.mediaTypes && a.mediaTypes.banner && a.mediaTypes.banner.sizes) {
delete a.mediaTypes.banner.sizes;
}
});
});
window.pbjs = window.pbjs || window.tlpbjs;
});

tlpbjs.renderTlDynamicAd = function(state) {
tlpbjs.que.push(function() {
if (!tlpbjs.adUnits.find(e => e.code === state.divId)) {
var new_unit = [
{
code: state.divId,
mediaTypes: {
banner: {
sizes: [[1, 1]]
}
},
ortb2Imp: {
ext: {
prebid: {
storedrequest: {
id: state.storedImp
},
…(window.location.search.indexOf(‘tl=test’) > -1 && {
storedauctionresponse: { id: ‘test-placement300x250’ }
})
}
}
},
bids: [
{
bidder: ‘teal-s2s’
}
]
}
];
tlpbjs.addAdUnits(new_unit);
}

var other_eids;
if (window.owpbjs && window.owpbjs.getUserIdsAsEids) {
other_eids = window.owpbjs.getUserIdsAsEids();
} else if (window.ihowpbjs && window.ihowpbjs.getUserIdsAsEids) {
other_eids = window.ihowpbjs.getUserIdsAsEids();
} else if (window.pbjs && window.pbjs.getUserIdsAsEids) {
other_eids = window.pbjs.getUserIdsAsEids();
}
if (other_eids && other_eids.filter) {
other_eids = other_eids.filter(
e =>
![‘criteo.com’, tlpbjs.config.domain, ‘pubcid.org’].includes(
e[‘source’]
)
);
tlpbjs.mergeConfig({
ortb2: {
user: {
ext: {
eids: other_eids
}
}
}
});
}

tlpbjs.tlRequestBids(state);
});
};

tlpbjs.initGam = function(state) {
window.googletag = window.googletag || { cmd: [] };
window.googletag.cmd.push(function() {
if (state.gamSlotId) {
state.gamSlot = window.googletag
.pubads()
.getSlots()
.find(element => element.getSlotElementId() === state.divId);
if (!state.gamSlot) {
if (state.size && Array.isArray(state.size)) {
if (!state.size.includes(1)) {
state.size = [state.size, [1, 1]];
}
} else {
state.size = [[1, 1]];
}
state.gamSlot = tlpbjs
.defineSlot(state.gamSlotId, state.size, state.divId)
.addService(googletag.pubads());
} else {
var sizes = state.gamSlot.getSizes();
if (!sizes.find(e => e[‘width’] == 1)) {
var sizeArray = [[1, 1]];
sizes.forEach(e => sizeArray.push([e[‘width’], e[‘height’]]));
state.gamSlot.defineSizeMapping(
googletag
.sizeMapping()
.addSize([0, 0], sizeArray)
.build()
);
}
}
}
});
};
}

function triggerTealReplace(account) {
window.googletag = window.googletag || { cmd: [] };
window.googletag.cmd.push(function() {
if (window.location.search.indexOf(‘tl=disable’) > -1) return;
var identifier = ‘recovered-ad-slot-‘;
var gptDefineSlot = window.googletag.defineSlot;
var adCounter = 0;

if (!window.tlpbjs || !window.tlpbjs.config)
loadTlpbjs(account ? account : ‘npg’);

function defineSlotOverride(adUnitPath, sizes, divId) {
//only pass 0,0 if parent node has recovered child already
var div = document.getElementById(divId);
var emptyParent = true;
if (
div.parentNode &&
div.parentNode.children &&
div.parentNode.children.forEach
) {
div.parentNode.children.forEach(e => {
if (e.id.startsWith(identifier)) {
emptyParent = false;
}
});
}
var slot = gptDefineSlot(adUnitPath, emptyParent ? sizes : [0, 0], divId);
runAuctionForSlot(divId, slot.getSizes());
return slot;
}
function runAuctionForSlot(divId, sizes, isRefresh) {
//check sizes – don’t render if width or height <= 2 (1×1,2×2 etc.)
var tooSmall = false;
var maxSize = [0, 0];
if (sizes && sizes[0]) {
if (Number.isInteger(sizes[0])) {
maxSize = sizes;
} else {
sizes.forEach(e => {
if (Array.isArray(e) && e[0] > maxSize[0]) {
maxSize[0] = e[0];
} else if (e.width > maxSize[0]) {
maxSize[0] = e.width;
}
if (Array.isArray(e) && e[1] > maxSize[1]) {
maxSize[1] = e[1];
} else if (e.height > maxSize[1]) {
maxSize[1] = e.height;
}
});
}
if (maxSize[0] <= 2 || maxSize[1] <= 2) {
tooSmall = true;
}
} else {
tooSmall = true;
}
var slot = document.getElementById(divId);
if (slot) {
//check to see if there is already an recovered slot in parent
var emptyParent = true;
if (
slot.parentNode &&
slot.parentNode.children &&
slot.parentNode.children.forEach
) {
slot.parentNode.children.forEach(e => {
if (e.id.startsWith(identifier)) {
emptyParent = false;
}
});
}
if (emptyParent || isRefresh) {
slot.innerHTML = ”;
if (!isRefresh) slot.id = identifier + adCounter++;
if (!tooSmall) {
var urlParams = new URLSearchParams(window.location.search);
var state = {
divId: slot.id,
div: slot,
…(urlParams.get(‘tlgamslot’) && {
gamSlotId: urlParams.get(‘tlgamslot’)
}),
size: maxSize
};

if (maxSize[0] >= 728) state.storedImp = ‘recovered728x90’;
else if (maxSize[0] <= 160) state.storedImp = ‘recovered160x600’;
else if (maxSize[1] >= 250) state.storedImp = ‘recovered300x250’;
else if (maxSize[0] >= 320) state.storedImp = ‘recovered320x100’;

if (state.storedImp) {
if (state.gamSlotId) {
if (isRefresh)
state.gamSlot = window.googletag
.pubads()
.getSlots()
.find(
element => element.getSlotElementId() === state.divId
);
else window.tlpbjs.initGam(state);
}
window.tlpbjs.renderTlDynamicAd(state);
observeSlotInView(state); //start refresh timer
}
}
}
}
}

function observeSlotInView(state) {
var observer = new IntersectionObserver(
function(entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
observer.unobserve(state.div); // Stop observing once in view
setTimeout(
() => runAuctionForSlot(state.divId, state.size, true),
30000
); // Call after 30 seconds
}
});
},
{ threshold: 0.1 }
); // Trigger when at least 10% of the slot is in view

observer.observe(state.div);
}

window.googletag.defineSlot = defineSlotOverride;
window.googletag
.pubads()
.getSlots()
.forEach(e => {
runAuctionForSlot(e.getSlotElementId(), e.getSizes());
});
});
}

circle-arrow

Play Button

Stop Button

chevron-right

chevron-left

chevron-up

search

warning

chevron-left-skinny

chevron-right-skinny

x

clock

calendar

play-button

cancel-circle

user

twitter

facebook

youtube

instagram

email

linkedin

Skip to Content

CULVER, Ore. (KTVZ) — The Culver School District has hired a new superintendent, months after a third-party investigation into former Superintendent Stefanie Garber led to her resignation.

The Problem Solvers first reported on the concerns inside the district in February. Records reviewed by KTVZ News provide a deeper look at what staff described as a long-standing culture issue — and raise questions about how the school board handled concerns before hiring outside investigators.

This particular situation dates back to last summer, when Culver School District staff brought concerns about Garber to the school board. Around that time, staff had conducted an anonymous survey on district culture. 

Culver Education Association President, Sarah Cox, presented the results to the board in June 2025 and said she would leave the findings for board members to review after the meeting.

Records show the board chose not to review the survey results, prompting a formal complaint from district Human Resources Director, Jodi Henry.

In that complaint, Henry wrote that she had received repeated concerns from staff but struggled to act because employees feared retaliation if they filed formal complaints.

“I was receiving so many complaints and I did not know how to handle them when the staff members wouldn't file a KL complaint for legitimate fear of retaliation,†Henry wrote.

Henry also wrote that staff perceived a divide in treatment between employees seen as close to Garber and those who were not.

“There is a striking difference in the application of these retaliatory behaviors depending on if you are one of her favorites, on ‘Team Stefanie' as staff refer to it, or if you're not,†Henry wrote.

In response, the school board hired Ussery Consultants to conduct a third-party investigation into Garber's conduct.

According to records, investigators interviewed 23 witnesses and reviewed 12 questions stemming from complaints over the previous two years. The report found 10 of the 12 complaints against Garber were founded.

Those findings included age discrimination, missed employee evaluations, improper disclosures, and violations of board policy and contracts.

The report also pointed to broader leadership issues, including Garber overstepping religious lines, failing to take responsibility in key incidents, and communication problems investigators said led to “low morale, mistrust, and confusion†among staff.

Two allegations — that Garber mismanaged finances and altered board minutes — were deemed unfounded.

In the report, Garber denied the allegations and submitted written responses. She described what she saw as dysfunction within the administrative team, alleging immaturity, mistrust, and a “gotcha†culture. Garber suggested internal conflict contributed to the complaint.

“There is a common theme I have witnessed and it is a high level of immaturity and insecurity,†Garber wrote. She also wrote that some staff were operating “under a ‘gotcha' lens†and undermining trust within the administrative team.

Garber also wrote, “I pray for them, it is my job to forgive them, and my nature is to help and support them.â€

Overall, the records describe a broader cultural problem inside the district. Staff reported fears that speaking up could negatively impact their jobs, their students, and their standing in the district.

Records also show the investigation cost the district more than $25,000 — an expense now drawing scrutiny as Culver School District faces budget pressure, staff furlough days, and cuts.

The cost raises questions about whether staff concerns should have been addressed earlier, whether the board should have acted sooner, and what accountability looks like going forward.

The district has now selected a new superintendent, who is set to start in July.

The school board oversaw that hiring process — the same board that chose not to review staff survey results, spent district funds on an outside investigation, and is now tasked with rebuilding trust.

KTVZ News requested interviews with both Garber and the Culver School Board. The district's attorney said one board member may be available to speak by phone.

KTVZ News has also requested an interview with the incoming superintendent.

The Problem Solvers hope to discover how the district made its decisions and how it plans to earn back trust.

You can view the executive summary from the investigation in its entirety below.

Author Profile Photo

Claire Elmer

Claire Elmer is a Multimedia Journalist with KTVZ News. Learn more about Claire here.

BE PART OF THE CONVERSATION

KTVZ is committed to providing a forum for civil and constructive conversation.

Please keep your comments respectful and relevant. You can review our Community Guidelines by clicking here

If you would like to share a story idea, please submit it here.