{"version":3,"file":"cxense.jobat.min.js","sources":["../../src/helpers/createScript.js","../../src/helpers/logger.js","../../src/helpers/segmentSyncs.js","../../src/helpers/Storage.js","../../src/helpers/sha256.js","../../src/helpers/getCachedSegments.js","../../src/helpers/addUserIds.js","../../src/setup.js","../../src/helpers/getValue.js","../../src/helpers/addExternalIds.js","../../src/helpers/cookieSyncs.js","../../src/helpers/getSegments.js","../../src/helpers/getLangIdFromUrl.js","../../src/helpers/asyncAddUserId.js"],"sourcesContent":["const createScript = src =>\n new Promise((resolve, reject) => {\n const id = 'cx';\n\n if (typeof document === 'undefined' || document.getElementById(id)) {\n resolve();\n } else {\n const scriptTag = document.createElement('script');\n const node = document.getElementsByTagName('script')[0];\n scriptTag.src = src;\n scriptTag.id = id;\n scriptTag.onload = resolve;\n scriptTag.onerror = reject;\n scriptTag.async = true;\n node.parentNode.insertBefore(scriptTag, node);\n }\n });\n\nexport default createScript;\n","/* global process */\n\n/**\n * Simple console.log function for not production builds\n *\n */\nconst log = (...args) => {\n if (process.env.NODE_ENV !== 'production') {\n const stack = String(new Error().stack).split('\\n');\n let column = '';\n let lineNumber = '';\n if (stack.length >= 2) {\n const matches = stack[2].match(/(\\d+):(\\d+)\\)?$/);\n if (matches && matches.length >= 3) {\n lineNumber = matches[1];\n column = matches[2];\n }\n }\n\n const limit = 150;\n\n if (args[0].length > limit) {\n args[0] = `${args[0].substring(0, limit)}...`;\n }\n\n /* eslint-disable no-console */\n console.log(\n '%cCxense',\n 'display: inline-block; color: #fff; background: #3bc388; padding: 1px 4px; border-radius: 3px;',\n ...args,\n `L: ${lineNumber}, C: ${column}`\n );\n /* eslint-enable no-console */\n }\n};\n\nexport default log;\n","import log from './logger';\nimport getCachedSegments from './getCachedSegments';\n\nconst segmentSyncs = dmps => {\n // TODO: check if we could enrich the dmp object instead\n // and get the segment directly instead of storage\n // but with he callqueue, not sure if they are retrieved\n // before the cX.sync\n const _appNexusS2s = (id, seg) => {\n if (seg.length > 0) {\n const el = document.createElement('img');\n const prefix = 'cxsegment_';\n const keyvalues = [];\n keyvalues.push(`add_Code=${prefix}${seg.join(`,${prefix}`)}`);\n keyvalues.push(`member=${id}`);\n\n el.setAttribute('src', `//ib.adnxs.com/seg?${keyvalues.join('&')}`);\n el.setAttribute('width', '1');\n el.setAttribute('height', '1');\n el.style.width = '1px';\n el.style.height = '1px';\n if (document.body) document.body.appendChild(el);\n // const url = `//ib.adnxs.com/seg?${keyvalues.join('&')}`;\n // fetch(url)\n // .then(log(response))\n }\n };\n\n const _facebook = (id, seg) => {\n let syncAttempts = 1;\n\n try {\n // fbq ignores long arrays\n const chunk = 80;\n let i = 0;\n\n for (i; i < seg.length; i += chunk) {\n window.fbq('trackSingleCustom', id, 'CxSegments', {\n segmentIds: seg.slice(i, i + chunk),\n });\n }\n } catch (err) {\n if (syncAttempts <= 4) {\n setTimeout(() => {\n _facebook(id, seg);\n }, 200);\n log(`Waiting on Facebook pixel, try: ${syncAttempts} of 4`);\n syncAttempts += 1;\n } else {\n // continue without fbq sync\n }\n }\n };\n dmps.forEach(dmp => {\n dmp.segments.forEach(segment => {\n if (segment.syncs) {\n segment.syncs.forEach(sync => {\n switch (sync.partner) {\n case 'appnexus':\n _appNexusS2s(\n sync.customerId,\n getCachedSegments(segment.name, segment.type)\n );\n break;\n case 'facebook':\n _facebook(\n sync.customerId,\n getCachedSegments(segment.name, segment.type)\n );\n break;\n default:\n }\n log(\n `add segmentsync for ${sync.partner} (${sync.customerId}) with ${\n segment.name\n } to queue`\n );\n });\n }\n });\n });\n};\n\nexport default segmentSyncs;\n","import log from './logger';\n\n/**\n * This class sets, gets and deletes entries\n * in localStorage and sessionStorage.\n */\n\nclass Storage {\n static set = (key, value, type) => {\n if (type === 'localStorage') {\n if (window.localStorage && window.localStorage.setItem) {\n try {\n window.localStorage.setItem(key, value);\n log(`set ${key}=${value} to local storage`);\n } catch (err) {\n log(`unable to set ${key} to local storage`);\n log(err);\n }\n }\n } else if (type === 'sessionStorage') {\n if (window.sessionStorage && window.sessionStorage.setItem) {\n try {\n window.sessionStorage.setItem(key, value);\n log(`set ${key}=${value} to session storage`);\n } catch (err) {\n log(`unable to set ${key} to session storage`);\n log(err);\n }\n }\n }\n\n return null;\n };\n static get = (key, type) => {\n let value;\n if (type === 'localStorage') {\n if (window.localStorage && window.localStorage.getItem) {\n try {\n value = window.localStorage.getItem(key);\n log(`get ${key}=${value} from local storage`);\n } catch (err) {\n log(`unable to get ${key} from local storage`);\n log(err);\n }\n }\n } else if (type === 'sessionStorage') {\n if (window.sessionStorage && window.sessionStorage.setItem) {\n try {\n value = window.sessionStorage.getItem(key);\n log(`get ${key}=${value} from session storage`);\n } catch (err) {\n log(`unable to get ${key} from session storage`);\n log(err);\n }\n }\n }\n\n return value;\n };\n static del = (key, type) => {\n if (type === 'localStorage') {\n if (window.localStorage && window.localStorage.removeItem) {\n try {\n window.localStorage.removeItem(key);\n log(`delete ${key} from local storage`);\n } catch (err) {\n log(`unable to delete ${key} from local storage`);\n log(err);\n }\n }\n } else if (type === 'sessionStorage') {\n if (window.sessionStorage && window.sessionStorage.removeItem) {\n try {\n window.sessionStorage.removeItem(key);\n log(`delete ${key} from session storage`);\n } catch (err) {\n log(`unable to delete ${key} from session storage`);\n log(err);\n }\n }\n }\n\n return null;\n };\n}\n\nexport default Storage;\n","/* eslint-disable no-multi-assign */\n/* eslint-disable no-bitwise */\nconst sha256 = ascii => {\n const rightRotate = (value, amount) =>\n (value >>> amount) | (value << (32 - amount));\n\n const mathPow = Math.pow;\n const maxWord = mathPow(2, 32);\n const lengthProperty = 'length';\n let i; // Used as a counter across the whole file\n let j; // Used as a counter across the whole file\n let result = '';\n\n const words = [];\n const asciiBitLength = ascii[lengthProperty] * 8;\n\n //* caching results is optional - remove/add slash from front of this line to toggle\n // Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes\n // (we actually calculate the first 64, but extra values are just ignored)\n let hash = (sha256.h = sha256.h || []);\n // Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes\n const k = (sha256.k = sha256.k || []);\n let primeCounter = k[lengthProperty];\n\n /* /\n\tvar hash = [], k = [];\n\tvar primeCounter = 0;\n\t//*/\n\n const isComposite = {};\n for (let candidate = 2; primeCounter < 64; candidate += 1) {\n if (!isComposite[candidate]) {\n for (i = 0; i < 313; i += candidate) {\n isComposite[i] = candidate;\n }\n hash[primeCounter] = (mathPow(candidate, 0.5) * maxWord) | 0;\n k[primeCounter] = (mathPow(candidate, 1 / 3) * maxWord) | 0;\n primeCounter += 1;\n }\n }\n\n ascii += '\\x80'; // Append Ƈ' bit (plus zero padding)\n while (ascii[lengthProperty] % 64 - 56) ascii += '\\x00'; // More zero padding\n for (i = 0; i < ascii[lengthProperty]; i += 1) {\n j = ascii.charCodeAt(i);\n if (j >> 8) return; // ASCII check: only accept characters in range 0-255\n words[i >> 2] |= j << (((3 - i) % 4) * 8);\n }\n words[words[lengthProperty]] = (asciiBitLength / maxWord) | 0;\n words[words[lengthProperty]] = asciiBitLength;\n\n // process each chunk\n for (j = 0; j < words[lengthProperty]; ) {\n const w = words.slice(j, (j += 16)); // The message is expanded into 64 words as part of the iteration\n const oldHash = hash;\n // This is now the undefinedworking hash\", often labelled as variables a...g\n // (we have to truncate as well, otherwise extra entries at the end accumulate\n hash = hash.slice(0, 8);\n\n for (i = 0; i < 64; i += 1) {\n // eslint-disable-next-line no-unused-vars\n const i2 = i + j;\n // Expand the message into 64 words\n // Used below if\n const w15 = w[i - 15];\n const w2 = w[i - 2];\n\n // Iterate\n const a = hash[0];\n const e = hash[4];\n const temp1 =\n hash[7] +\n (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) + // S1\n ((e & hash[5]) ^ (~e & hash[6])) + // ch\n k[i] +\n // Expand the message schedule if needed\n (w[i] =\n i < 16\n ? w[i]\n : (w[i - 16] +\n (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3)) + // s0\n w[i - 7] +\n (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10))) | // s1\n 0);\n // This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble\n const temp2 =\n (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) + // S0\n ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2])); // maj\n\n hash = [(temp1 + temp2) | 0].concat(hash); // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice()\n hash[4] = (hash[4] + temp1) | 0;\n }\n\n for (i = 0; i < 8; i += 1) {\n hash[i] = (hash[i] + oldHash[i]) | 0;\n }\n }\n\n for (i = 0; i < 8; i += 1) {\n for (j = 3; j + 1; j -= 1) {\n const b = (hash[i] >> (j * 8)) & 255;\n result += (b < 16 ? 0 : '') + b.toString(16);\n }\n }\n // eslint-disable-next-line consistent-return\n return result;\n};\n\nexport default sha256;\n","import Storage from './Storage';\nimport log from './logger';\n\nconst getCachedSegments = (name, type) => {\n // becomes redundant when sending them from enriched object\n // example: DMP[0].parsedSegments\n let segmentIds = [];\n\n const rawSegmentIds = Storage.get(name, type);\n rawSegmentIds\n ? (segmentIds = segmentIds.concat(JSON.parse(rawSegmentIds)))\n : log(`segment key ${name} not found in ${type}`);\n\n return segmentIds;\n};\n\nexport default getCachedSegments;\n","import getValue from './getValue';\nimport sha256 from './sha256';\nimport log from './logger';\n\nconst addUserIds = dmps => {\n if (!dmps) dmps = [];\n let parsedId = {};\n let parsedIds = [];\n\n const clean = str => {\n // @see https://docs.piano.io/event-data/\n const len = 64;\n\n str = str.replace(/[^A-Za-z0-9 =@+\\-_.|]/g, '');\n str = str.substring(0, len);\n\n return str;\n };\n\n if (dmps.length) {\n dmps.forEach(dmp => {\n dmp.ids.forEach(id => {\n parsedId = getValue(id);\n if (parsedId.value) {\n parsedId = {\n ...parsedId,\n value: id.hash ? sha256(parsedId.value) : clean(parsedId.value),\n prefix: id.prefix ? id.prefix : dmp.prefix,\n };\n parsedIds.push(parsedId);\n }\n });\n dmp.parsedIds = parsedIds;\n parsedIds = [];\n });\n } else {\n log('Warning: no DMP defined, configuring empty one');\n }\n\n return dmps;\n};\nexport default addUserIds;\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/no-nesting */\n/* eslint-disable radix */\nimport createScript from './helpers/createScript';\nimport getAllKeyValues from './helpers/getAllKeyValues';\nimport getLangIdFromUrl from './helpers/getLangIdFromUrl';\nimport getRegioFromCookie from './helpers/getRegioFromCookie';\nimport funnelEvents from './adapters/funnelEvents';\nimport Storage from './helpers/Storage';\nimport addUserIds from './helpers/addUserIds';\nimport asyncAddUserId from './helpers/asyncAddUserId';\nimport log from './helpers/logger';\nimport addExternalIds from './helpers/addExternalIds';\nimport getSegments from './helpers/getSegments';\nimport videoEvents from './adapters/videoEvents';\nimport cookieSyncs from './helpers/cookieSyncs';\nimport segmentSyncs from './helpers/segmentSyncs';\n\nconst dmps = addUserIds(DMP);\n// temp async hack\nconst idPromise = asyncAddUserId(dmps);\nconst cXContext = { dmp: undefined, loaded: false, resolveTrigger: undefined };\nconst triggerPromise = new Promise(resolve => {\n cXContext.resolveTrigger = resolve;\n});\nconst persist = PERSIST;\nconst cached = persist\n ? parseInt(Storage.get(persist.cache.name, persist.cache.type))\n : 0;\nconst cxjs = CONVERSION\n ? 'https://cdn.cxense.com/cx.cce.js'\n : 'https://cdn.cxense.com/cx.js';\nconst siteid = getLangIdFromUrl(CXENSE_SITE_ID);\n\n// init cx.js\nwindow.cX = window.cX || CXINIT;\ncreateScript(cxjs);\nwindow.cX.shouldPoll = false;\nwindow.cX.callQueue = window.cX.callQueue || [];\nif (CONVERSION) {\n window.cX.CCE = window.cX.CCE || {};\n window.cX.CCE.callQueue = window.cX.CCE.callQueue || [];\n}\n\nconst fire = (dmp, event) => {\n let location = window.location.href;\n\n // Single Page Application\n if (event) {\n window.cX.callQueue.push(['initializePage']);\n log('initializePage');\n // this is for goplay app\n if (event.detail) {\n location = event.detail.url;\n }\n }\n\n // setSiteId\n window.cX.callQueue.push(['setSiteId', siteid]);\n\n addExternalIds(dmp);\n\n if (CUSTOM) {\n // setCustomParameters\n const cp = getAllKeyValues(CUSTOM);\n if (cp) {\n window.cX.callQueue.push(['setCustomParameters', cp]);\n }\n }\n\n // async actions which require the cX to be ready\n window.cX.callQueue.push([\n 'invoke',\n () => {\n // start invoke\n // query string parameters to fetch from the URL\n if (URLARGS) {\n const urlArgs = window.cX.parseUrlArgs();\n const allowed = URLARGS;\n\n const cp = Object.keys(urlArgs)\n .filter(key => allowed.includes(key))\n .reduce((obj, key) => {\n obj[key] = urlArgs[key];\n return obj;\n }, {});\n\n window.cX.setCustomParameters(cp);\n }\n // end invoke\n },\n ]);\n\n // next 3 adapters use a default pqid from MH\n if (MH_SHOP)\n // webshop events\n funnelEvents();\n\n if (MH_REGIO) {\n // regio box on popular MH titles\n const pc = getRegioFromCookie();\n if (pc) {\n window.cX.callQueue.push([\n 'setUserProfileParameters',\n { regiobox: [pc] },\n ]);\n }\n }\n\n // stuff that needs to be stored so it can be reused in adserving\n // TODO: DMP is a dependency of PERSIST, should be merged in 1 object\n if (PERSIST) {\n if (!cached) {\n cookieSyncs(SYNC);\n segmentSyncs(dmp);\n }\n\n window.cX.callQueue.push([\n 'invoke',\n () => {\n // register userid in localStorage\n const uid = window.cX.getUserId();\n Storage.set(persist.user.name, uid, persist.user.type);\n getSegments(dmp);\n },\n ]);\n // use cache flag to perform some actions only once per session\n Storage.set(persist.cache.name, 1, persist.cache.type);\n }\n\n // Send Page View Event\n if (window.location.pathname.match(FILTER)) {\n const options = {\n location,\n referrer: document.referrer,\n useAutoRefreshCheck: false,\n };\n CONVERSION\n ? window.cX.CCE.callQueue.push(['sendPageViewEvent', options])\n : window.cX.callQueue.push(['sendPageViewEvent', options]);\n }\n\n // Run CCE widget\n if (CONVERSION) {\n window.cX.CCE.callQueue.push(['run', CONVERSION]);\n }\n};\n\nidPromise\n .then(dmp => {\n cXContext.dmp = dmp;\n if (TRIGGER) {\n const trigger = TRIGGER;\n triggerPromise.then(() => {\n cXContext.loaded = true;\n fire(dmp);\n });\n // tell website this library is ready\n document.dispatchEvent(new CustomEvent(trigger.out));\n log(`sending '${trigger.out}' event`);\n }\n if (!TRIGGER || TRIGGER.hybrid) {\n log(`fire`);\n fire(dmp, false);\n }\n // SBS video events\n if (VIDEO) {\n videoEvents();\n }\n return false;\n })\n .catch();\n\n// run on content reload\nif (TRIGGER) {\n const trigger = TRIGGER;\n\n const cb = () => {\n if (cXContext.loaded) {\n fire(cXContext.dmp);\n } else {\n cXContext.resolveTrigger();\n }\n };\n // run this script as a pageview\n document.addEventListener(trigger.in, cb);\n log(`listen to '${trigger.in}' for fire`);\n\n // this is for logouts\n const clear = () => {\n Storage.del(persist.cache.name);\n log(`heard '${trigger.clear}' and cleared cache`);\n };\n // requested by Androme\n const close = () => {\n document.removeEventListener(trigger.in, cb);\n document.removeEventListener(trigger.clear, clear);\n document.removeEventListener(trigger.close, close);\n log(`heard '${trigger.close}' and deafened`);\n };\n if (trigger.clear) {\n document.addEventListener(trigger.clear, clear);\n log(`listen to '${trigger.clear}' for cache clear`);\n }\n if (trigger.close) {\n document.addEventListener(trigger.close, close);\n log(`listen to '${trigger.close}' for cleanup`);\n }\n}\n","import log from './logger';\nimport Storage from './Storage';\n\nconst getValue = obj => {\n let split;\n let value = null;\n let key = obj.name;\n switch (obj.type) {\n case 'object':\n split = obj.name.split('.');\n key = split[split.length - 1];\n value = window[split[0]];\n split.forEach((val, index) => {\n if (index > 0) {\n try {\n value = value[split[index]];\n } catch (err) {\n log(err);\n }\n }\n });\n break;\n case 'localStorage':\n value = Storage.get(obj.name, 'localStorage');\n break;\n case 'cookie':\n if (document.cookie && obj.name) {\n const name = `${obj.name}=`;\n const decodedCookie = decodeURIComponent(document.cookie);\n const ca = decodedCookie.split(';');\n for (let i = 0; i < ca.length; i += 1) {\n let c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) === 0) {\n value = c.substring(name.length, c.length);\n }\n }\n }\n break;\n case 'url':\n value = document.location.search;\n if (value) {\n value = value.match(`[\\\\?&]${obj.name}=([^\\\\?&]+)`);\n value ? (value = value[1]) : (value = null);\n }\n break;\n case 'dataAttribute':\n try {\n const script = document.querySelector(`script[${obj.name}]`);\n value = script && script.getAttribute(obj.name);\n } catch (err) {\n log(err);\n }\n break;\n case 'static':\n split = obj.name.split(':');\n if (split.length > 1) {\n key = split[0];\n value = split[1];\n }\n break;\n default:\n // do nothing\n }\n\n // we are allready logging in the Storage class\n if (obj.type !== 'localStorage') {\n log(`get ${obj.name}=${value} from ${obj.type}`);\n }\n\n return { key, value };\n};\n\nexport default getValue;\n","import log from './logger';\n\nconst addExternalIds = dmps => {\n dmps.forEach(dmp => {\n // Check and assign default values if necessary\n if (!dmp.prefix) {\n log('ERROR: dmp.prefix is not defined'); // TODO make actual console log error\n }\n\n if (dmp.parsedIds) {\n dmp.parsedIds.forEach(pid => {\n window.cX.callQueue.push([\n 'addExternalId',\n { id: pid.value, type: pid.prefix },\n ]);\n log(`add externalId ${pid.value} on ${pid.prefix}`);\n });\n }\n });\n};\n\nexport default addExternalIds;\n","import log from './logger';\n\nconst cookieSyncs = ssps => {\n ssps.forEach(ssp => {\n window.cX.callQueue.push(['sync', ssp]);\n log(`add cookiesync for ${ssp.partner ? ssp.partner : ssp} to queue`);\n });\n};\n\nexport default cookieSyncs;\n","import Storage from './Storage';\nimport log from './logger';\nimport sha256 from './sha256';\n\n// syncronous function because we should be called from 'invoke' callqueue\nconst getSegments = dmps => {\n dmps.forEach(dmp => {\n let identities = [];\n\n dmp.parsedIds.forEach(pid => {\n identities.push({\n id: pid.hash ? sha256(pid.value) : pid.value,\n type: pid.prefix,\n });\n });\n\n dmp.segments.forEach(segment => {\n window.cX.getUserSegmentIds(\n {\n persistedQueryId: segment.queryid,\n callback: userSegmentIds => {\n Storage.set(\n segment.name,\n JSON.stringify(userSegmentIds),\n segment.type\n );\n },\n },\n identities.length ? { identities } : {}\n );\n log(`stored ${segment.name} with identity ${JSON.stringify(identities)}`);\n identities = [];\n });\n });\n};\n\nexport default getSegments;\n","const getLangIdFromUrl = langIds => {\n if (typeof langIds !== 'object') {\n return langIds;\n }\n\n const url = document.location.href;\n // we only look up the lang codes in the URL from the settings file\n const langs = Object.keys(langIds).join('|');\n // template literal: /(\\/|=)(fr|nl|en)(\\/|#|\\.|\\?|$)/g\n // works on \"https://www.mediahuis.be/fr/detailpage\" or \"https://fr.mediahuis.be\"\n const regex = new RegExp(`(/|=)(${langs})(/|#|\\\\.|\\\\?|$)`, 'gi');\n const result = regex.exec(url);\n\n return result ? langIds[result[2]] : langIds[Object.keys(langIds)[0]];\n};\n\nexport default getLangIdFromUrl;\n","import log from './logger';\n\nconst asyncAddUserId = dmp => {\n let newDmp;\n if (\n dmp &&\n dmp.length &&\n dmp[0].ids &&\n dmp[0].ids[0] &&\n dmp[0].ids[0].type &&\n dmp[0].ids[0].type === 'auth0'\n ) {\n try {\n const auth0SdkId = window.__NEXT_DATA__.runtimeConfig.AUTH0_CLIENT_ID;\n newDmp = window.CIAM.getUserInfo(auth0SdkId)\n .then(result => {\n dmp[0].parsedIds.push({ key: 'auth0', value: result.sub });\n return dmp;\n })\n .catch(error => {\n log('Auth0-SDK Error: ', error);\n });\n } catch (error) {\n log(error);\n }\n } else {\n newDmp = Promise.resolve(dmp);\n }\n return newDmp;\n};\nexport default asyncAddUserId;\n"],"names":["log","segmentSyncs","dmps","_facebook","id","seg","i","length","window","fbq","segmentIds","slice","err","setTimeout","forEach","dmp","segments","segment","syncs","sync","partner","customerId","getCachedSegments","name","type","el","document","createElement","keyvalues","push","prefix","join","setAttribute","style","width","height","body","appendChild","Storage","sha256","key","value","localStorage","setItem","sessionStorage","getItem","removeItem","ascii","j","rightRotate","amount","mathPow","Math","pow","maxWord","lengthProperty","result","words","asciiBitLength","hash","h","k","primeCounter","isComposite","candidate","charCodeAt","w","oldHash","w15","w2","a","e","temp1","concat","b","toString","rawSegmentIds","get","JSON","parse","parsedId","parsedIds","ids","obj","split","val","index","cookie","ca","decodeURIComponent","c","charAt","substring","indexOf","location","search","match","script","querySelector","getAttribute","replace","fire","event","href","cX","callQueue","detail","url","siteid","pid","cached","ssp","uid","getUserId","set","persist","user","identities","getUserSegmentIds","persistedQueryId","queryid","callback","userSegmentIds","stringify","cache","pathname","options","referrer","useAutoRefreshCheck","langIds","src","idPromise","auth0SdkId","__NEXT_DATA__","runtimeConfig","AUTH0_CLIENT_ID","newDmp","CIAM","getUserInfo","then","sub","catch","error","Promise","resolve","parseInt","langs","Object","keys","RegExp","exec","reject","scriptTag","node","getElementById","getElementsByTagName","onload","onerror","async","parentNode","insertBefore","shouldPoll"],"mappings":"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"}