UNPKG

@schibstedspain/ast

Version:

The AppNexus Seller Tag (AST) is a lightweight JavaScript SDK that runs in the header or body of a web page in a user's browser and allows publishers to conduct auctions directly from the page. AST consolidates all ad slots on a page to be auctioned and s

3 lines 83.2 kB
/* AST v0.16.0 Updated : 2018-05-22 */ !function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){n(1),n(8),n(15),n(20),n(13),n(11),n(5),n(23),n(17),n(19),n(7),n(10),n(12),n(24),n(9),n(16),n(18),n(14),n(21),n(6),n(2),n(3),e.exports=n(25)},function(e,t,n){function r(e){var t=i(e.uuid);if(this.targetId=t.targetId,e.nobid)return this.nobid=!0,this.tagId=e.tag_id,this.auctionId=e.auction_id,this;e.ads&&e.ads.length>1;var n=e.ads[0];this.adType=n.ad_type,this.buyerMemberId=n.buyer_member_id,this.tagId=e.tag_id,this.auctionId=e.auction_id,this.source=n.content_source,this.cpm=n.cpm,this.creativeId=n.creative_id;var r,o,l=a(t);if(s.isArray(l)&&l[0]&&(r=l[0].height,o=l[0].width),n.rtb&&n.rtb.banner)this.banner={width:n.rtb.banner.width,height:n.rtb.banner.height,content:n.rtb.banner.content,trackers:n.rtb.trackers},r=n.rtb.banner.height,o=n.rtb.banner.width;else if(n.rtb&&n.rtb.video){var c=n.rtb.video;this.video={duration:c.duration_ms,playbackMethods:c.playback_methods,frameworks:c.frameworks,content:c.content,trackers:n.rtb.trackers}}else if(n.rtb&&n.rtb[u.MEDIA_TYPE.NATIVE]){var g=n.rtb[u.MEDIA_TYPE.NATIVE];if(this[u.MEDIA_TYPE.NATIVE]={type:g.type,title:g.title,body:g.desc,desc2:g.desc2,fullText:g.full_text,icon:g.icon,image:g.main_img,cta:g.ctatext,sponsoredBy:g.sponsored,impressionTrackers:g.impression_trackers,clickTrackers:g.link.click_trackers,clickUrl:g.link.url,clickFallbackUrl:g.link.fallback_url,javascriptTrackers:g.javascript_trackers,video:g.video,privacyLink:g.privacy_link,rating:g.rating,displayUrl:g.displayurl,likes:g.likes,downloads:g.downloads,price:g.price,salePrice:g.saleprice,phone:g.phone,address:g.address},n.viewability&&n.viewability.config){var f=n.viewability.config;"string"==typeof this.targetId&&(f=f.replace("%native_dom_id%",this.targetId)),d.createIframe({strategy:"WithContent",data:f})}}this.height=r,this.width=o}function a(e){var t=[];return s.isEmpty(e.sizes)||(t=o.getSizes(e.sizes)),t}function i(e){var t={};return s._each(apntag.requests.tags,function(n){e===n.uuid&&(t=n)}),t}var o=n(2),s=n(3),d=n(7),u=n(4),l={},c=function(e){return new r(e)};t.getAdObj=function(e){if(!e||!e.uuid)return{};if(l[e.uuid])return l[e.uuid];try{var t=c(e);return l[e.uuid]=t,t}catch(n){s.logError("adManager.getAdObj: Error trying to instantiate new adObj: "+n.message)}},t.checkAdAvailable=function(e){var t=apntag.requests.tags[e],n=t&&t.adResponse,r=t&&t.utCalled&&!t.showTagCalled&&n&&this.getAdObj(n);return{getAd:function(e){return r&&!n.nobid&&e.resolve(r)||r&&n.nobid&&e.reject(r)}}},t.getAdErrorObj=function(e,t,n,r){return{code:r,errMessage:e||n.message,exception:n,targetId:t}}},function(e,t,n){function r(e,t,n){var r={};return apntag.debug&&!i.isEmpty(t)&&(r.enabled=!0,e&&(r.member_id=Number(e)),t&&(r.dongle=String(t)),n&&(r.bidder_id=Number(n)),r.debug_timeout=1e3),apntag.test&&(r.test=apntag.test),r}function a(e){var t=[];return i._each(e,function(e,n){if(i.isArray(e)){var r=[];i._each(e,function(e){e=i.getValueString("keywords."+n,e),e&&r.push(e)}),e=r}else{if(e=i.getValueString("keywords."+n,e),!i.isStr(e))return;e=[e]}var a={key:n,value:e};t.push(a)}),t}var i=n(3),o=n(4),s=n(5),d=n(6),u=o.TYPE.STRING,l=o.TYPE.NUM,c=o.TYPE.BOOL,g=t,f=o.DEBUG.AST_DONGLE,p=o.DEBUG.AST_TOOLKIT,m=o.DEBUG.AST_TEST,h=o.DEBUG.AST_DEBUG_MEMBER,v=o.DEBUG.AST_DEBUG_BIDDER,y=function(e){var t={},n=e.site;return i.isEmpty(n)||i.isEmpty(n.id)||(t.id=n.id),t},b=function(e){var t={},n=e.app;return i.isEmpty(n)||i.isEmpty(n.appid)||(t.appid=n.appid),t},E=function(e){var t={},n=e.device;if(!i.isEmpty(n)){i.isEmpty(n.useragent)||(t.useragent=n.useragent),i.isEmpty(n.geo)||(t.geo=n.geo),i.isEmpty(n.ip)||(t.ip=n.ip),i.isEmpty(n.deviceType)||(t.devicetype=n.deviceType),i.isEmpty(n.make)||(t.make=n.make),i.isEmpty(n.model)||(t.model=n.model),i.isEmpty(n.os)||(t.os=n.os),i.isEmpty(n.osVersion)||(t.os_version=n.osVersion),i.isEmpty(n.carrier)||(t.carrier=n.carrier);var r=i.getValueAsType("device.connectionType",n.connectionType,l);t.connectiontype=r,i.isEmpty(n.mcc)||(t.mcc=n.mcc),i.isEmpty(n.mnc)||(t.mnc=n.mnc),i.isEmpty(n.lmt)||(t.lmt=n.lmt),i.isEmpty(n.deviceId)||(t.device_id=n.deviceId);var a=i.getValueAsType("device.devTime",n.devTime,l);t.devtime=a}return t};g.createPageUser=function(e){var t={};if(!i.isEmpty(e)){e.externalUid&&i.isStr(e.externalUid)&&(t.external_uid=e.externalUid),i.isEmpty(e.segments)||(t.segments=e.segments);var n=i.getValueAsType("user.age",e.age,l);t.age=n;var r=i.getValueAsType("user.gender",e.gender,l);t.gender=r;var a=i.getValueAsType("user.language",e.language,u);t.language=a;var o=i.getValueAsType("user.dnt",e.dnt,c);t.dnt=o}return t},g.createTag=function(e){var t={};if(e.uuid=i.getUUID(),!i.isEmpty(e.sizes)){var n=this.getSizes(e.sizes);i.isEmpty(n)||(t.sizes=n,t.primary_size=n[0])}if(!i.isEmpty(e.privateSizes)){var r=this.getSizes(e.privateSizes);i.isEmpty(r)||(t.private_sizes=r)}if(e.supplyType&&i.isStr(e.supplyType)&&(t.supply_type=e.supplyType),e.pubClick&&i.isStr(e.pubClick)&&(t.pubclick={url:e.pubClick}),e.pubClickEnc&&i.isStr(e.pubClickEnc)&&(t.pubclickenc={url:e.pubClickEnc}),e.reserve&&(i.isNumber(e.reserve)||i.isArray(e.reserve))&&(t.reserve=e.reserve),e.extInvCode&&i.isStr(e.extInvCode)&&(t.ext_inv_code=e.extInvCode),t.uuid=e.uuid,e.tagId&&(t.id=e.tagId),e.formats&&(t.formats=e.formats),e.position&&("above"===e.position?t.position=1:"below"===e.position?t.position=2:t.position=0),e.invCode&&(t.code=e.invCode),e.prebid&&(t.prebid=e.prebid),e.externalImpId&&(t.external_imp_id=e.externalImpId),e.allowSmallerSizes===!0?t.allow_smaller_sizes=!0:t.allow_smaller_sizes=!1,e.disablePsa===!0&&(t.disable_psa=!0),e.allowedFormats&&(t.ad_types=e.allowedFormats),!i.isEmpty(e.video)){var o=e.video,s={};o.id&&(s.id=o.id),i.isEmpty(o.mimes)||(s.mimes=o.mimes),o.maxDuration&&(s.maxduration=o.maxDuration),o.minDuration&&(s.minduration=o.minDuration),o.startDelay&&(s.startdelay=o.startDelay),o.skippable&&(s.skippable=o.skippable),o.skipOffset&&(s.skipoffset=o.skipOffset),i.isEmpty(o.playbackMethod)||(s.playback_method=o.playbackMethod),i.isEmpty(o.frameworks)||(s.frameworks=o.frameworks),t.video=s}if(!i.isEmpty(e["native"])){var d=e["native"],u={};d.renderer_id&&(u.renderer_id=d.renderer_id),d.placement_type&&(u.placement_type=d.placement_type);var l={};d.id&&(l.id=d.id),d.title&&(l.title=d.title),d.body&&(l.description=d.body),d.sponsoredBy&&(l.sponsored_by=d.sponsoredBy),d.image&&(l.main_image=d.image,i.isEmpty(l.main_image.sizes)&&(l.main_image.sizes=[{}])),d.icon&&(l.icon=d.icon,i.isEmpty(l.icon.sizes)&&(l.icon.sizes=[{}])),d.cta&&(l.ctatext=d.cta),d.video&&(l.video={required:d.video.required||!1,min_duration:d.video.minDuration||0,max_duration:d.video.maxDuration}),d.privacySupported&&(l.privacy_supported=!0),l&&(u.layouts=[l]),t.ad_types=t.ad_types||[],t.ad_types.indexOf("native")===-1&&t.ad_types.push("native"),t["native"]=u}if(!i.isEmpty(e.keywords)){var c=a(e.keywords);t.keywords=c}if(e.forceCreativeId){var g=Number(e.forceCreativeId);isNaN(g)?i.logError("Force Creative must be a number"):(t.force_creative_id=g,i.logMessage("Force Creative in use for targetId: "+e.targetId))}return e.nobidIfUnsold&&(t.nobid_if_unsold=!0),e.trafficSourceCode&&(t.traffic_source_code=e.trafficSourceCode.toString()),e.customPubLog&&(i.isStr(e.customPubLog)?t.custom_pub_log=e.customPubLog:i.logError("customPubLog must be a string")),t},g.getSizes=function(e){var t=[],n={};if(i.isArray(e)&&2===e.length&&!i.isArray(e[0]))n.width=parseInt(e[0],10),n.height=parseInt(e[1],10),t.push(n);else if("object"==typeof e)for(var r=0;r<e.length;r++){var a=e[r];n={},n.width=parseInt(a[0],10),n.height=parseInt(a[1],10),t.push(n)}return t},g.buildRequestJsonByMemberId=function(e,t,n){var o={};e.disablePsa&&i._each(e.tags,function(e){e.disablePsa=!0}),e.gdpr_consent&&(o.gdpr_consent=e.gdpr_consent);var u=[],l=0;i._each(e.tags,function(e){if(!e.utCalled&&e.member===t){var n=g.createTag(e);e.utCalled=!0,e.tagNumber=l,l++,u.push(n)}}),s.build(e.tags,u,n),o.tags=u,o.uuid=i.getUUID(),o.member_id=t,o.sdk={source:"ast",version:"0.16.0"};var c=null;i.isEmpty(e.keywords)?i.isEmpty(e.targetingParams)||(c=a(e.targetingParams),o.keywords=c):(c=a(e.keywords),o.keywords=c),i.isEmpty(e.user)||(o.user=this.createPageUser(e.user)),i.isEmpty(e.device)||(o.device=E(e)),i.isEmpty(e.app)||(o.app=b(e)),i.isEmpty(e.site)||(o.site=y(e)),e.publisherId&&(o.publisher_id=e.publisherId),o.tags=u;var w=i.getParameterByName(f),I=d.ls&&d.ls.getItem(f),T=w||I;T&&""!==T&&(apntag.dongle=T);var _=i.getParameterByName(p);(_&&""!==_&&T&&""!==T||!i.isEmpty(e.toolkit))&&(o.toolkit={enabled:!0,dongle:T||e.toolkit.dongle});var A=i.getParameterByName(h);A&&""!==A&&(apntag.debug_member=A);var O=i.getParameterByName(v);O&&""!==O&&(apntag.debug_bidder=O);var S="TRUE"===i.getParameterByName(m).toUpperCase();if(S&&""!==S&&(apntag.test=S),apntag.test||apntag.debug&&!i.isEmpty(apntag.dongle)){var x="";apntag.debug_member&&(x=apntag.debug_member);var k=r(x,apntag.dongle,apntag.debug_bidder);o.debug=k}return o}},function(e,t,n){function r(){return!(typeof $sf===f||!$sf.ext)&&!!$sf.ext.debug}var a=n(4),i=a.TYPE.ARRAY,o=a.TYPE.STRING,s=a.TYPE.FUNC,d=a.TYPE.NUM,u=a.TYPE.OBJ,l=Object.prototype.hasOwnProperty,c=!1,g=a.DEBUG.DEBUG_MODE,f=a.OBJECT_TYPE.UNDEFINED,p=a.CONTENT_SOURCE.RTB,m=a.CONTENT_SOURCE.CSM,h=a.CONTENT_SOURCE.SSM,v=null;try{v="object"==typeof console.info?console.info:console.info.bind(window.console)}catch(y){}t.addEventHandler=function(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r):e.attachEvent&&e.attachEvent("on"+t,n)},t.removeEventHandler=function(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r):e.detachEvent&&e.detachEvent("on"+t,n)},t.isA=function(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"},t.isObj=function(e){return this.isA(e,u)},t.isFn=function(e){return this.isA(e,s)},t.isStr=function(e){return this.isA(e,o)},t.isArray=function(e){return this.isA(e,i)},t.isNumber=function(e){return this.isA(e,d)},t.isEmpty=function(e){if(!e)return!0;if(this.isArray(e)||this.isStr(e))return 0===e.length;for(var t in e)if(l.call(e,t))return!1;return!0},t.logMessage=function(e){if(this.debugTurnedOn()&&b()){var t=E(),n=r()?"SAFEFRAME MESSAGE: ":"MESSAGE: ";console.log(t+n+e)}},t.logWarn=function(e){if(this.debugTurnedOn()&&b()){var t=E(),n=r()?"SAFEFRAME WARN: ":"WARN: ";console.warn?console.warn(t+n+e):console.log(t+n+e)}},t.logError=function(e,t){if(this.debugTurnedOn()&&b()){var n=t||"GENERAL_ERROR",a=E(),i=r()?"SAFEFRAME ":"";console.error?console.error(a+i+n+": "+e):console.log(a+i+n+": "+e)}},t.logTimestamp=function(e){this.debugTurnedOn()&&b()&&console.timeStamp&&console.timeStamp(e)},t.logInfo=function(e,t){if(this.debugTurnedOn()&&b()){var n=E();if(v){t&&0!==t.length||(t="");var a=r()?"SAFEFRAME INFO: ":"INFO: ";v(n+a+e+(""===t?"":" : params : "),t)}}},t.loadScript=function(e,t,n){var r=e.document,a=r.createElement("script");a.type="text/javascript",a.async=!0,n&&"function"==typeof n&&(a.readyState?a.onreadystatechange=function(){"loaded"!==a.readyState&&"complete"!==a.readyState||(a.onreadystatechange=null,n())}:a.onload=function(){n()}),a.src=t;var i=r.getElementsByTagName("head");return i=i.length?i:r.getElementsByTagName("body"),i.length&&(i=i[0],i.insertBefore(a,i.firstChild)),a},t.getUUID=function(){var e=(new Date).getTime(),t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===t?n:3&n|8).toString(16)});return t},t.loadPixelUrl=function(e,t,n){var r;if(n="anx_"+n+(new Date).getTime(),e&&t){r=new Image,r.id=n,r.src=t,r.height=0,r.width=0,r.style.display="none",r.onload=function(){try{this.parentNode.removeChild(this)}catch(e){}};try{e.insertBefore(r,e.firstChild)}catch(a){this.logError("Error logging impression for tag: "+n+" :"+a.message)}}},t._each=function(e,t){if(!this.isEmpty(e)){if(this.isFn(e.forEach))return e.forEach(t);var n=0,r=e.length;if(r>0)for(;n<r;n++)t(e[n],n,e);else for(n in e)l.call(e,n)&&t(e[n],n,e)}},t.contains=function(e,t){if(this.isEmpty(e))return!1;for(var n=e.length;n--;)if(e[n]===t)return!0;return!1};var b=function(){return window.console&&window.console.log};t.debugTurnedOn=function(){return!!r()||(this.getWindow().apntag=this.getWindow().apntag||{},apntag&&apntag.debug===!1&&c===!1&&(apntag.debug="TRUE"===this.getParameterByName(g).toUpperCase(),c=!0),!(!apntag||!apntag.debug))},t.stringContains=function(e,t){return!!e&&e.indexOf(t)!==-1},t.getSearchQuery=function(){try{return window.top.location.search}catch(e){try{return window.location.search}catch(e){return""}}},t.getParameterByName=function(e,t){var n="[\\?&]"+e+"=([^&#]*)",r=new RegExp(n),a=r.exec(t||this.getSearchQuery());return null===a?"":decodeURIComponent(a[1].replace(/\+/g," "))},t.hasOwn=function(e,t){return e.hasOwnProperty?e.hasOwnProperty(t):typeof e[t]!==f&&e.constructor.prototype[t]!==e[t]};var E=function(){var e=new Date,t="["+e.getHours()+":"+e.getMinutes()+":"+e.getSeconds()+":"+e.getMilliseconds()+"] ";return t};t.getTargetArrayforRefresh=function(e){var t=[];return this.isArray(e)?t=e:this.isStr(e)&&t.push(e),t},t._map=function(e,t){if(this.isEmpty(e))return[];if(this.isFn(e.map))return e.map(t);var n=[];return this._each(e,function(r,a){n.push(t(r,a,e))}),n},t.getValueString=function(e,t,n){return void 0===t||null===t?n:this.isStr(t)?t:this.isNumber(t)?t.toString():void this.logWarn("Unsuported type for param: "+e+" required type: String")},t.getValueAsType=function(e,t,n,r){return void 0===t||null===t?r:this.isA(t,n)?t:(this.logWarn("Unsuported type for param: "+e+" required type: "+n),n===d&&(t=Number(t)),isNaN(t)?r:t)},t.getWindow=function(){return window},t.getAdObjFromAdsArray=function(e){if(e&&e.length>0){if(e[0][p])return e[0][p];if(e[0][m])return e[0][m];if(e[0][h])return e[0][h]}},t.cloneAsObject=function(e){if(null===e||!(e instanceof Object))return e;var t=e instanceof Array?[]:{};for(var n in e)t[n]=this.cloneAsObject(e[n]);return t},t.getCdnOrigin=function(){return this.getWindow().document.location.protocol+"//"+a.EXTERNAL_LIB.CDN_ORIGIN},t.values=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t},t.runOnce=function(e,t){var n;if(this.isFn(e))return function(){return e&&(n=e.apply(t||this,arguments),e=null),n}}},function(e,t){e.exports={PREFIX:{UT_IFRAME:"utif_",UT_DIV:"div_utif_"},LOG:{WARN:"WARN"},DEBUG:{DEBUG_MODE:"ast_debug",AST_DONGLE:"ast_dongle",AST_DEBUG_MEMBER:"ast_debug_member",AST_DEBUG_BIDDER:"ast_debug_bidder",AST_TEST:"ast_test",AST_TOOLKIT:"ast_toolkit",AST_OVERRIDE:{BASE:"ast_override_",DIV:"div",INDEX:"index",TAG_ID:"tag_id",INV_CODE:"inv_code",PUBLISHER_ID:"publisher_id"}},OBJECT_TYPE:{UNDEFINED:"undefined",OBJECT:"object",STRING:"string",NUMBER:"number"},BROWSER_TYPE:{IE:"msie",OPERA:"opera"},RENDERER_EVENTS:{LOADED:"loaded",IMPRESSION:"impression"},ENDPOINT:{UT_BASE:"/ut/v3",IMPBUS:"ib.adnxs.com",UT_PREBID:"/ut/v3/prebid"},UT_RESPONSE_PROP:{MEDIA_TYPE:"media_type",CREATIVE_ID:"creative_id",AD_TYPE:"ad_type",BANNER:"banner",VIDEO:"video",CONTENT:"content",UUID:"uuid"},MEDIA_TYPE:{BANNER:"banner",NATIVE:"native",VIDEO:"video"},AD:{CREATIVE_ID:"creative_id",NOTIFY:"notify_url",NOAD:"no_ad_url",IMP_URLS:"impression_urls",TRACKERS:"trackers"},CONTENT_SOURCE:{RTB:"rtb",CSM:"csm",SSM:"ssm"},AD_TYPE:{BANNER:"banner",NATIVE:"native",VIDEO:"video"},EXTERNAL_LIB:{VIDEO_MEDIATION_JS:"//acdn.adnxs.com/video/astMediation/AstMediationManager.js",BANNER_MEDIATION_JS:"//acdn.adnxs.com/mediation/v2/mediation.js",SAFE_FRAME_URL:"//acdn.adnxs.com/ast/safeframe/1-0-0/html/safeframe-v2.html",CDN_ORIGIN:"acdn.adnxs.com"},EVENTS:{REQUEST:"adRequested",AVAILABLE:"adAvailable",LOADED:"adLoaded",REQUEST_FAIL:"adRequestFailure",NO_BID:"adNoBid",DEFAULT:"adDefault",ERROR:"adError",COLLAPSE:"adCollapse",BAD_REQUEST:"adBadRequest"},TYPE:{ARRAY:"Array",STRING:"String",FUNC:"Function",NUM:"Number",OBJ:"Object",BOOL:"Boolean"},SAFEFRAME:{DEFAULT_ZINDEX:3e3,STATUS:{READY:"ready",NOTIFY_EXPANDED:"expanded",NOTIFY_COLLAPSED:"collapsed",NOTIFY_ERROR:"error",FOCUS_CHANGE:"focus-change",GEOM_UPDATE:"geom-update"}},EXPAND_OPTIONS:{CREATIVE:"creative"}}},function(e,t,n){function r(e){return o.getParameterByName(e,d.queryString)}function a(e,t){var n=null;return o._each(t,function(t){t.uuid===e.uuid&&(n=t.targetId)}),n}function i(e,t,n){var r=Number(t);if(isNaN(r))o.logError("Force Creative must be a number");else{e[y]=r,apntag.test=!0;var i=a(e,n);o.logMessage("Force Creative in use for targetId: "+i)}}var o=n(3),s=n(4),d=t,u=[],l=s.DEBUG.AST_OVERRIDE,c=l.BASE,g=c+l.DIV,f=c+l.INDEX,p=c+l.TAG_ID,m=c+l.INV_CODE,h=",",v=":",y="force_creative_id";d.queryString=void 0,d.build=function(e,t,n){if(o.stringContains(d.queryString||o.getSearchQuery(),c)){var a,s,l,y,b,E;if(!o.isEmpty(r(f)))for(u=r(f).split(h),a=0;a<u.length;a++){b=u[a].split(v);var w=Number(b[0]);if(isNaN(w)||void 0===t[w])o.logError("Invalid ast_override value for index : "+w);else{E=null;var I=null;for(y=0;y<n.length;y++)y===w&&(I=n[y].uuid);for(l=0;l<t.length;l++)t[l].uuid===I&&i(t[l],b[1],e)}}if(!o.isEmpty(r(g)))for(u=r(g).split(h),a=0;a<u.length;a++){b=u[a].split(v);var T=null,_=Object.keys(e);for(l=0;l<_.length;l++)b[0]===_[l]&&(T=e[_[l]].uuid);if(T)for(s=0;s<t.length;s++)t[s].uuid===T&&i(t[s],b[1],e);else o.logError("Invalid ast_override value for target div id : "+b[0])}if(!o.isEmpty(r(p)))for(u=r(p).split(h),a=0;a<u.length;a++){b=u[a].split(v);var A=!1;for(s=0;s<t.length;s++)E=t[s],E.id===Number(b[0])&&(i(E,b[1],e),A=!0);A||o.logError("Invalid ast_override value for tag id : "+b[0])}if(!o.isEmpty(r(m)))for(u=r(m).split(h),a=0;a<u.length;a++){b=u[a].split(v);var O=!1;for(s=0;s<t.length;s++)E=t[s],E.code===b[0]&&(i(E,b[1],e),O=!0);O||o.logError("Invalid ast_override value for invCode : "+b[0])}return t}}},function(e,t,n){var r=n(3),a=t;try{a.ls=window.localStorage}catch(i){r.logWarn("localStorage not available for current browser")}},function(e,t,n){function r(e,t){i(e),e.contentWindow.document.open(),e.contentWindow.document.write(t),e.contentWindow.document.close()}function a(e,t){e.src=t.src,e.id=t.id,i(e)}function i(e){var t=g.getWindow(),n=t.document.getElementsByTagName("body");n.length&&n[0].appendChild(e)}function o(e){var t=e.targetId,n="";if(e.isMediated)n=e.ad.mediatedContent,g.logMessage("Invoking mediation for displaying banner ad: "+t);else if(e.adResponse&&1===e.adResponse.ads.length){var r=g.getAdObjFromAdsArray(e.adResponse.ads);n=r[f][p]}return d(t,n,e.alwaysUseXDomainIframe||e.enableSafeFrame)}function s(e,t){return t?"":'window.onerror = function(e) {\n if(window.parent && window.parent.apntag) {\n window.parent.apntag.recordErrorEvent(e,"'+e+'");\n return true;\n }\n };'}function d(e,t,n){var r=s(e,n);return'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>\n <script>inDapIF=true;\n apntag_targetId = "'+e+'";\n '+r+'\n </script></head>\n <body>\n <script>\n document.body.id = "'+e+'";\n </script>\n '+t+"\n </body></html>"}function u(e){return e.replace("/&/g","&amp;").replace("/</g","&lt;").replace("/>/g","&gt;").replace('/"/g',"&quot;").replace("/'/g","&#39;")}var l=n(4),c=t,g=n(3),f=l.UT_RESPONSE_PROP.BANNER,p=l.UT_RESPONSE_PROP.CONTENT,m="https:"===g.getWindow().document.location.protocol?"https:":"http:";c.getIframe=function(e){var t,n=h(e),r=g.getWindow();if(t=null!==r.document.getElementById(n)?r.document.getElementById(n):r.document.createElement("iframe"),t.id=n,e.alwaysUseXDomainIframe||e.enableSafeFrame){g.logMessage("targetId: "+e.targetId+" is using safeFrame. Loading this ad into sandboxed iframe");var a;e.isMediated?a=apntag.getAdMarkup(e.targetId,e.uuid):(a=o(e),a=u(a),a=""+a);var i={targetId:e.targetId,ad:a,host:r.location.protocol+"//"+r.location.host,geom:e.geom,debug:g.debugTurnedOn(),hasFocus:document.hasFocus(),hostSfSupport:e.safeframe,isMediated:e.isMediated};e.safeframe.meta&&(i.meta=e.safeframe.meta),t.name=JSON.stringify(i),e.safeframe.sandbox&&(t.sandbox="allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts")}else t.name=n;return t.setAttribute("height",e.initialHeight),t.setAttribute("width",e.initialWidth),t.tabIndex="-1",t.width=e.initialWidth+"px",t.height=e.initialHeight+"px",t.border="0",t.hspace="0",t.vspace="0",t.marginWidth="0",t.marginHeight="0",t.style.border="0",t.scrolling="no",t.frameBorder="0",t},c.loadIeIframe=function(e,t){if(t.alwaysUseXDomainIframe||t.enableSafeFrame)e.src=m+l.EXTERNAL_LIB.SAFE_FRAME_URL;else{var n="";n=o(t);try{e.contentWindow.contents=n}catch(r){e.src="javascript:document.write('<script>document.domain=\""+document.domain+"\"</script>')",e.contentWindow.contents=n}var a,i=document.getElementsByTagName("base");i.length&&(a=i.target,i[0].target="_self"),e.src='javascript:window["contents"];',i.length&&(i[0].target=a)}},c.loadIframe=function(e,t){if(t.alwaysUseXDomainIframe||t.enableSafeFrame)e.src=m+l.EXTERNAL_LIB.SAFE_FRAME_URL;else{var n="",r=v(e);n=o(t),r.open("text/html","replace"),r.write(n),r.close()}},c.createIframe=function(e){var t=e.strategy,n=e.data,i=g.getWindow(),o=i.document.createElement("iframe");o.width=0,o.height=0,o.border="0",o.hspace="0",o.vspace="0",o.tabIndex="-1",o.marginWidth="0",o.marginHeight="0",o.style.border="0",o.scrolling="no",o.frameBorder="0","WithContent"===t&&r(o,n),"WithAttributes"===t&&a(o,n)};var h=function(e){return l.PREFIX.UT_IFRAME+e.targetId+"_"+g.getUUID()},v=function(e){var t;try{t=e.contentWindow?e.contentWindow.document:e.contentDocument.document?e.contentDocument.document:e.contentDocument}catch(n){g.logError("Error getting iframe document: "+n)}return t}},function(e,t,n){function r(e){e?(I=T.stringContains(e,"http")?e:("https:"===pe.document.location.protocol?"https:":"http:")+"//"+e,T.logMessage("Setting endpoint to: "+I)):T.logError("Cannot set an empty endpoint")}function a(e){return T.logMessage("getTag called for tag "+e),Ue(e)?e&&X[e]?X[e]:void 0:void T.logError("the "+e+" tag is not defined.",A.LOG.WARN)}function i(e){var t="defaultKey";return e.targetId&&(t=e.targetId),t}function o(e,t){T.logMessage("showTag called for "+e),Y[e]=!0;var n=Ue(e);if(n){var r=ve.requests.tags[e];if(r.showTagCalled=!0,r.curWindow=t,r.displayed)return void T.logWarn("Attempting to display ad that is already displayed, will not render this ad again: "+e);ve.requests.utCalled?r.adResponse?(p(r),ve.requests.hasLeft&&Fe()):ve.requests.checkDisplay=!0:T.logWarn(e+" : showTag() called before ad request was made. This placement might not display if a subsequent loadTags() call is not made")}else T.logMessage("the "+e+" tag was loaded before the ad placement was available.",A.LOG.WARN)}function s(e,t,n,r,a){T._each(V[t],function(t){d(e,t,n,r,a)})}function d(e,t,n,r,a){0===n&&(e="Failure to contact endpoint. This can be caused by invalid CORS headers or failure of server to respond.");var i,o=ve.requests.tags[t];o&&(i=k.getAdObj(o.adResponse));var s=k.getAdErrorObj(e,t,a,n);_.emit(r,t,s,i)}function u(e,t,n){T.logMessage("renderAd is called"),T._each(ve.requests.tags,function(e){e.uuid===t&&(e.adResponse=n,n.ad&&n.ad.ad_type===ee&&(e.ad={mediatedContent:n.ad.rtb.banner.content},e.initialHeight=n.ad.rtb.banner.height,e.initialWidth=n.ad.rtb.banner.width),p(e))})}function l(){}function c(e,t){var n=null;if(ve.requests.cbCalled=!0,typeof e===ue||null===e||e.error){var r="malformed response from ad server";e&&e.error&&(r=e.error),T.logError("Error response from impbus: "+r);var a={};try{a=JSON.parse(t)}catch(i){}return void T._each(ve.requests.tags,function(e,t){var n=k.getAdErrorObj(r,t,void 0,200);if(e)var i=k.getAdObj(e.adResponse);T._each(a.tags,function(r){r.uuid===e.uuid&&_.emit(A.EVENTS.BAD_REQUEST,t,n,i)})})}e.debug&&e.debug.debug_info&&S.load(e.debug.debug_info),e.toolkit&&e.toolkit.enabled&&S.loadToolkit(e.tags),T._each(e.tags,function(e){if(e.error)return void T._each(ve.requests.tags,function(t){if(t.uuid===e.uuid){var n="There was an exception from targetId:"+t.targetId+" this usually means there is a setup error on the tag (invalid ID etc)";T.logError(n,e.error);var r=k.getAdErrorObj(n,t.targetId,void 0,200);_.emit(A.EVENTS.BAD_REQUEST,t.targetId,r)}});if(e.ads&&e.ads.length&&e.ads[0].ad_type===Z){var t=g(e);if(!t)return void T.logError("required native assets missing from response")}var r=e.ads,a=O.checkIfMediatedResponse(r);a?T._each(ve.requests.tags,function(t,a){if(t.uuid===e.uuid){t.utCalled=!0,t.isMediated=!0;var i=O.getMediationType(r),o=O.getMediationOptions(ve.requests.tags,e);if(i===te)n=k.getAdObj(e),_.emit(A.EVENTS.AVAILABLE,a,n),O.callMediationFramework(i,e,o,u);else{var s=O.getContentForBannerMediation(t.targetId,e);e.ad={ad_type:ee},t.ad={mediatedContent:s},f(t,e,a)}}}):T._each(ve.requests.tags,function(t,n){f(t,e,n)})}),ve.requests.checkDisplay&&Fe()}function g(e){var t,n={};T._each(Q,function(n){n.uuid===e.uuid&&(t=n)}),t&&(n=t["native"]);var r=[];T._each(n,function(e,t){e.required===!0&&r.push(t)});var a=k.getAdObj(e),i=[];T._each(a["native"],function(e,t){T.isEmpty(e)||i.push(t)});var o=i.length>0;return T._each(r,function(e){o=o&&i.indexOf(e)>-1}),o}function f(e,t,n){var r;e.uuid===t.uuid&&(t.nobid===!0?(T.logMessage("No bid for targetId:"+e.targetId),r=k.getAdObj(t),_.emit(A.EVENTS.NO_BID,n,r)):(e.adResponse=t,e.utCalled=!0,r=k.getAdObj(t),_.emit(A.EVENTS.AVAILABLE,n,r),e.prebid||e.displayed||p(e)))}function p(e){var t,n,r,a,i=pe,o=e.adResponse;if(e.adResponse&&e.adResponse.ads){var s=T.getAdObjFromAdsArray(e.adResponse.ads);if(s.banner){var d=e.initCollapsed,u=d&&d.expandBy&&T.values(fe).indexOf(d.expandBy)>=0;d&&!u&&T.logWarn("TagID "+e.tagId+" initCollapsed is set but expandBy is not recognized, initial size will not be collapsed"),e.initialHeight=u?0:s.banner.height,e.initialWidth=u?0:s.banner.width}}if(r=O.getAdObjByMediation(e),null===r||typeof r.error!==ue)return void y(o);if(typeof o!==ue&&e.showTagCalled){if(o&&r.renderer_url&&r.renderer_id){var l=r.renderer_id,c=O.getContentSourceForMediation(r);if(typeof c===ue)return void T.logError("No Content Source Found");if(r[r.ad_type]=c,L[l]){var g=L[l];T.isFn(g)||T.isObj(g)?(v(e),O.copyAdObjforMediation(e),N.invokeRendererRenderAd(g,e,m),e.displayed=!0,a=k.getAdObj(e.adResponse),_.emit(A.EVENTS.LOADED,e.targetId,a),T.logTimestamp("The "+e.targetId+" ad is loaded.")):(W[l]=typeof W[l]===ue?[]:W[l],W[l].push(e))}else T.loadScript(pe,r.renderer_url),W[l]=typeof W[l]===ue?[]:W[l],W[l].push(e),L[l]=!0}else if(r[$]===Z)T.logMessage("Render for the following ad should be handled outside of ast.js :"+e.tagId),e.displayed=!0,a=k.getAdObj(e.adResponse),_.emit(A.EVENTS.LOADED,e.targetId,a),T.logTimestamp("The "+e.targetId+" ad is loaded.");else{if(r[$]===te)return void T.logWarn("Response has no renderer for video");if(r[$]===ee){if(!e.isMediated){var f=r[ie][ne];if(T.isEmpty(f)||typeof f!==le)return void T.logError("Response has no banner object");if(!T.hasOwn(f,re))return void T.logError("Response has no banner content");if(!T.hasOwn(f,"width"))return void T.logError("Response has no banner width");if(!T.hasOwn(f,"height"))return void T.logError("Response has no banner height")}var p;T.hasOwn(J,e.targetId)&&(p=J[e.targetId]);var h;if(e.alwaysUseXDomainIframe||e.enableSafeFrame){me(),h=i.document.getElementById(e.targetId);var b=h.style.height,E=h.style.width;h.style.height=e.initialHeight,h.style.width=e.initialWidth,h.style.height=b,h.style.width=E}var w=T.cloneAsObject(K);T.hasOwn(e.safeframe,"expansionByPush")&&(w.expansionByPush=e.safeframe.expansionByPush),T.hasOwn(e.safeframe,"expansionByOverlay")&&(w.expansionByOverlay=e.safeframe.expansionByOverlay),T.hasOwn(e.safeframe,"sandbox")&&(w.sandbox=e.safeframe.sandbox),T.hasOwn(e.safeframe,"meta")&&(w.meta=e.safeframe.meta),e.safeframe=w,n=Oe(e),(e.alwaysUseXDomainIframe||e.enableSafeFrame)&&(n.style.height=e.initialHeight+"px",n.style.width=e.initialWidth+"px",n.style.display="block",h.appendChild(n),e.geom=M.geomInit(e.targetId,n)),t=R.getIframe(e);var I=P.getInstance(),S={};if(S.iframe=t,S.originalWidth=e.initialWidth,S.originalHeight=e.initialHeight,I.add(e.targetId,S),J[e.targetId]=t,typeof p!==ue&&i.document.getElementById(p.id)?n.replaceChild(t,p):n.appendChild(t),e.displayed=!0,i.document.body)try{Se(e,n,t)}catch(x){T.logError("Error rendering ad: "+x.message)}else T.logError("Error rendering ad: window.document.body is undefined")}else T.logError("Error rendering ad: unknown type")}j.push(e.targetId)}}function m(e,t){var n=h(e),r=k.getAdObj(n.adResponse);T.logMessage("handling event for DOM ID: "+r.targetId+" eventType : "+t),t=t===A.RENDERER_EVENTS.LOADED?"adLoaded":t,t===A.EVENTS.LOADED?_.emit(A.EVENTS.LOADED,r.targetId,r):_.emit(t,r.targetId)}function h(e){var t={};return T._each(ve.requests.tags,function(n){e!==n.uuid&&e!==n.targetId||(t=n)}),t}function v(e){if(!e||!e.isMediated){var t=O.getAdObjByMediation(e);T.loadPixelUrl(pe.document.body,t[ae],t[ce])}}function y(e){T.loadPixelUrl(pe.document.body,e[oe],e.uuid)}function b(e,t){for(var n=e[ie][de][0][se],r=0;r<n.length;r++)T.loadPixelUrl(t.parentElement,n[r],e[ce])}function E(){K.expansionByPush=!1,K.expansionByOverlay=!0,K.readCookie=!1,K.writeCookie=!1,K.sandbox=!1}function w(e,t){var n=!1,r=e;if(2===arguments.length?(r=pe.apntag.requests.tags[t],e.sizes&&r.sizeMapping?n=!0:e.sizeMapping&&!r.sizeMapping&&(n=!0)):(t=e.targetId,e.sizes&&e.sizeMapping&&(n=!0)),n)return T.logError("sizes and sizeMapping both cannot be defined for targetId: "+t),!1;if(e.sizeMapping){var a=B.mapSizes(e);if(""===a)return"";e.sizes=a}return!0}n(9),n(10);var I,T=n(3),_=n(11),A=n(4),O=n(12),S=n(13),x=n(2),k=n(1),N=n(14),R=n(7),C=n(15),D=n(16),M=n(17),P=n(18),q=n(20),B=n(21),U=n(22),F=n(23),L={},W={},j=[],z=[],V={},H=0,G=0,Y={},J={},X={},Q=[],K={},$=A.UT_RESPONSE_PROP.AD_TYPE,Z=A.AD_TYPE.NATIVE,ee=A.AD_TYPE.BANNER,te=A.AD_TYPE.VIDEO,ne=A.UT_RESPONSE_PROP.BANNER,re=A.UT_RESPONSE_PROP.CONTENT,ae=A.AD.NOTIFY,ie=A.CONTENT_SOURCE.RTB,oe=A.AD.NOAD,se=A.AD.IMP_URLS,de=A.AD.TRACKERS,ue=A.OBJECT_TYPE.UNDEFINED,le=A.OBJECT_TYPE.OBJECT,ce=A.AD.CREATIVE_ID,ge=A.OBJECT_TYPE.NUMBER,fe=A.EXPAND_OPTIONS,pe=T.getWindow();D.attach(pe,"message",D.handleMessage),E();var me=T.runOnce(F.attachSfHandlers);F.initIphoneHandlers();try{console.info?console.info("AST library loaded: 0.16.0"):console.log("AST library loaded: 0.16.0")}catch(he){}pe.apntag=typeof pe.apntag!==ue?pe.apntag:{};var ve=pe.apntag;ve.anq=ve.anq||[],ve.debug=ve.debug||!1,ve.dongle=ve.dongle||void 0,ve.test=ve.test||!1,ve.loaded=!0,ve.requests=ve.requests||{},ve.requests.keywords=ve.requests.keywords||{},r(A.ENDPOINT.IMPBUS),ve.requests.tagsOnPageCount=ve.requests.tagsOnPageCount||H,ve.requests.waitOnTagsCount=ve.requests.waitOnTagsCount||G,ve.requests.showTagDefinedMap=ve.requests.showTagDefinedMap||Y,ve.highlightAd=function(e){if(T.logInfo("Invoking apntag.highlightAd",arguments),e){var t=J[e];t&&(t.style.border="3px solid #e67300")}},ve.anq.push=function(e){e.call()},ve.setEndpoint=function(e){T.logInfo("Invoking apntag.setEndpoint",arguments),r(e)},ve.setPageOpts=function(e){T.logInfo("Invoking apntag.setPageOpts",arguments),e&&(e.member&&(ve.requests.member=e.member),e.targetingParams&&(ve.requests.targetingParams=e.targetingParams,T.logWarn("targetingParams will be deprecated soon. Please use keywords instead")),e.keywords&&(ve.requests.keywords=e.keywords),e.user&&(ve.requests.user=e.user),e.app&&(ve.requests.app=e.app),e.device&&(ve.requests.device=e.device),e.site&&(ve.requests.site=e.site),e.disablePsa&&(ve.requests.disablePsa=!0),ve.requests.enableSafeFrame=!1,e.enableSafeFrame&&(me(),ve.requests.enableSafeFrame=!0),e.publisherId&&(ve.requests.publisherId=e.publisherId),e.consentManagement&&(ve.requests.consentManagement=e.consentManagement))},ve.defineTag=function(e){ T.logInfo("Invoking apntag.defineTag",arguments);var t=xe(e);if(Q.push(t),X[t.targetId])return X[t.targetId];var n={targetId:t.targetId,on:t.on,off:t.off,modifyTag:t.modifyTag,setKeywords:t.setKeywords};return X[t.targetId]=n,n},ve.getAdWrap=function(e){return T.logInfo("Invoking apntag.getAdWrap",arguments),Ue(e)?e&&ve.requests.tags&&ve.requests.tags[e]&&ve.requests.tags[e].adWrap?ve.requests.tags[e].adWrap:void 0:void T.logError("the "+e+" tag is not defined.",A.LOG.WARN)},ve.setSizes=function(e,t){return T.logInfo("Invoking apntag.setSizes",arguments),arguments.length<2&&(t=e,e=this.targetId),Ue(e)?void(ve.requests.tags[e].sizes=t):void T.logError("the "+e+" tag is not defined.",A.LOG.WARN)},ve.modifyTag=function(e,t){T.logInfo("Invoking apntag.modifyTag",arguments);var n={};return arguments.length<2&&(t=e,e=this.targetId),Ue(e)?((t.sizes||t.sizeMapping)&&w(t,e),T._each(ve.requests.tags[e],function(e,t){n[t]=e}),T._each(t,function(e,t){n[t]=e}),void(ve.requests.tags[e]=n)):void T.logError("the "+e+" tag is not defined.",A.LOG.WARN)},ve.setKeywords=function(e,t){T.logInfo("Invoking apntag.setKeywords",arguments);var n={};return arguments.length<2&&(t=e,e=this.targetId),Ue(e)?(T._each(ve.requests.tags[e],function(e,t){n[t]=e}),n.keywords=n.keywords||{},T._each(t,function(e,t){T.hasOwn(n.keywords,t)?T.isArray(n.keywords[t])?n.keywords[t]=n.keywords[t].concat(e):n.keywords[t]=[n.keywords[t]].concat(e):n.keywords[t]=e}),void(ve.requests.tags[e]=n)):void T.logError("the "+e+" tag is not defined.",A.LOG.WARN)},ve.onEvent=function(e,t,n){if(T.logInfo("Invoking apntag.onEvent",arguments),2===arguments.length&&"function"==typeof t&&typeof this.targetId===ue)n=t,t="*";else if(arguments.length<3&&(n=t,t=this.targetId,!Ue(t)))return void T.logError("the "+t+" tag is not defined.",A.LOG.WARN);_.on(e,t,n)},ve.offEvent=function(e,t,n){if(T.logInfo("Invoking apntag.offEvent",arguments),1===arguments.length&&typeof this.targetId===ue)t="*";else if(arguments.length<2&&(t=this.targetId,!Ue(t)))return void T.logError("the "+t+" tag is not defined.",A.LOG.WARN);if(T.isArray(e))for(var r=0;r<e.length;r++)_.off(e[r],t,n);else _.off(e,t,n)},ve.loadTags=function(){T.logInfo("Invoking apntag.loadTags",arguments),Ce()},ve.refresh=function(e){T.logInfo("Invoking apntag.refresh",arguments),ke(e)},ve.resizeAd=function(e,t){T.logInfo("Invoking apntag.resizeAd",arguments);var n=0,r=0;T.isArray(t)&&2===t.length?(r=t[0],n=t[1]):T.logError("resizeAd must be invoked with a (targetId,[width, height])");var i=J[e];if(!i)return void T.logError("Failed to find target for resizeAd : "+e);var o=a(e),s=Ae(o),d=pe.document.getElementById(s);return d?(d.style.height=n,d.style.width=r,i.height=n+"px",i.width=r+"px",i.height=n,i.width=r,void T.logMessage("ResizeAd successful for targetId: "+e)):void T.logError("Failed to find target for resizeAd: "+e)},ve.enableCookieSet=function(){U.enable()},ve.collapseAd=function(e,t,n){T.logInfo("Invoking apntag.collapseAd",arguments);var r,i=0,o=0,s=a(e);if(!s)return void T.logError("CollapseAd failed to find targetId : "+e);r=Ae(s),typeof t===ge&&(i=t),typeof n===ge&&(o=n);var d=pe.document.getElementById(r);if(null===d)return void T.logError("CollapseAd failed to find ad div : "+e);ve.resizeAd(e,[o,i]),d.style.height=i,d.style.width=o,d.style.display="none";var u=ve.requests.tags[e],l=k.getAdObj(u.adResponse);_.emit(A.EVENTS.COLLAPSE,e,l)},ve.showTag=function(e,t){T.logInfo("Invoking apntag.showTag",arguments),t=t||pe,o(e,t)},ve.setPageTargeting=function(e,t){T.logInfo("Invoking apntag.setPageTargeting",arguments),ve.requests.targetingParams&&e&&t&&(ve.requests.targetingParams[e]=t)},ve.getPageTargeting=function(e){if(T.logInfo("Invoking apntag.getPageTargeting",arguments),ve.requests.targetingParams&&e)return ve.requests.targetingParams[e]},ve.clearPageTargeting=function(e){T.logInfo("Invoking apntag.clearPageTargeting",arguments),ve.requests.targetingParams&&e&&delete ve.requests.targetingParams[e]},ve.enableDebug=function(){ve.debug=!0,T.logInfo("Invoking apntag.enableDebug",arguments)},ve.disableDebug=function(){T.logInfo("Invoking apntag.disableDebug",arguments),ve.debug=!1},ve.notify=function(e,t,n){if(!e)return void T.logError("apntag.notify must be called with `messageType`");var r=N.createNotifyObj(e,t,n);z.push(r),T._each(L,function(e){N.invokeNotify(z,e)})},ve.registerRenderer=function(e,t){T.logInfo("Invoking apntag.registerRenderer",arguments),e&&(T.isFn(t)||T.isObj(t))?(L[e]=t,N.invokeNotify(z,t),W[e]&&T._each(W[e],function(t){t.displayed||(v(t),O.copyAdObjforMediation(t),N.invokeRendererRenderAd(L[e],t,m),t.displayed=!0)})):T.logError("ast.js","registerRenderer must be called with (id, cbFn)")},ve.getAstVersion=function(){return T.logInfo("Invoking apntag.getAstVersion"),"0.16.0"},ve.recordErrorEvent=function(e,t){T.logInfo("Invoking apntag.recordErrorEvent",arguments);var n=ve.requests.tags[t],r=k.getAdObj(n.adResponse),a=k.getAdErrorObj(e.message,t,e,200);_.emit(A.EVENTS.ERROR,t,a,r)};var ye=function(e){T._each(ve.requests.tags,function(e){e.utCalled||_.emit(A.EVENTS.REQUEST,e.targetId)}),T.logTimestamp("Ad is requested for member "+e)};ve.clearRequest=function(){T.logInfo("Invoking apntag.clearRequest",arguments),ve.requests={},ve.requests.tags={},Y={},P.getInstance().resetInstance(),J={}},ve.handleCb=function(e,t){T.logInfo("Invoking apntag.handleCb",arguments);try{c(e,t)}catch(n){var r=n.message?n.message:n;T.logError("Internal AST error : "+r);var a=l(e);s(r,a,200,A.EVENTS.BAD_REQUEST,n)}},ve.emitEvent=function(e,t,n){T.logInfo("Invoking apntag.emitEvent",arguments),m(e,t,n)},ve.getAdMarkup=function(e,t){if(ve.requests.tags&&ve.requests.tags[e]){var n=ve.requests.tags[e];if(n.uuid===t)return n.adResponse.ads}},ve.setSafeFrameConfig=function(e){T.hasOwn(e,"allowExpansionByPush")&&(K.expansionByPush=e.allowExpansionByPush),T.hasOwn(e,"allowExpansionByOverlay")&&(K.expansionByOverlay=e.allowExpansionByOverlay),T.hasOwn(e,"sandbox")&&(K.sandbox=e.sandbox),T.hasOwn(e,"meta")&&(K.meta=e.meta)},ve.fireImpressionTrackers=function(e){if(!e.impressionTrackersFired){e.impressionTrackersFired=!0,T.logInfo("Firing impression trackers for",e.tagId);var t=e["native"]&&e["native"].impressionTrackers;t&&t.length&&t.forEach(function(e){T.loadPixelUrl(pe.document.body,e)});var n=e["native"]&&e["native"].javaScriptTrackers;n&&R.createIframe({strategy:"WithContent",data:n})}},ve.attachClickTrackers=function(e,t){var n=document.getElementById(t);return n?(T.logInfo("Attaching click track handler to",t),void T.addEventHandler(n,"click",function(){var t=e["native"]&&e["native"].clickTrackers;t&&t.length&&(T.logInfo("Firing click trackers for",e.tagId),t.forEach(function(e){T.loadPixelUrl(pe.document.body,e)}))})):void T.logError("HTML element with id "+t+" not found, click trackers not attached")},ve.checkAdAvailable=function(e){return k.checkAdAvailable(e)};var be=function(){for(var e=0;e<ve.anq.length;e++)typeof ve.anq[e].called===ue&&(ve.anq[e].call(),ve.anq[e].called=!0)},Ee=function(e,t){var n=!0;return T._each(t,function(t){T.isEmpty(e[t])&&(T.logError("Tag has missing paramater: "+t),n=!1)}),n},we=function(e){var t=["utUrlEncoded"];if(Ee(e,t)){var n=decodeURIComponent(e.utUrlEncoded),r=null,a=new XMLHttpRequest;return a.open("GET",n,!1),a.withCredentials="true",a.send(null),T.logTimestamp("Ad is requested"),200===a.status?r=a.responseText:T.logError("Error request ut URL"),r}},Ie=function(e,t){var n=e.data,r=!0,a=new XMLHttpRequest;a.onload=function(){var e=null;if(200===a.status)try{e=JSON.parse(a.responseText),ve.handleCb(e,n)}catch(r){T.logError("failed to parse ad response from impbus: "+r.message),s(r.message,t,a.status,A.EVENTS.REQUEST_FAIL,r)}else T.logError(a.status+" : "+a.statusText),s(a.statusText,t,a.status,A.EVENTS.REQUEST_FAIL)},a.onerror=function(n){var r=n.target.status,a="Error contacting impbus endpoint: "+e.url+" http response code:"+r;s(a,t,r,A.EVENTS.REQUEST_FAIL)},a.open("POST",e.url,r),a.setRequestHeader("Content-Type","text/plain"),a.withCredentials=!0;try{a.send(n),ve.requests.utCalled=!0}catch(i){T.logError("Error making POST request: "+i),qe(e,t)}},Te=function(e){var t={},n=_e();return t.url=n,t.data=JSON.stringify(e),t},_e=function(){var e=!1;return T._each(ve.requests.tags,function(t){t.prebid&&(e=!0)}),e?I+A.ENDPOINT.UT_PREBID:I+A.ENDPOINT.UT_BASE},Ae=function(e){return A.PREFIX.UT_DIV+e.targetId},Oe=function(e){var t,n=Ae(e),r=e.curWindow||pe;return t=r.document.getElementById(n)?r.document.getElementById(n):r.document.createElement("div"),t.style.display="none",t.id=n,t},Se=function(e,t,n){var r=C.getBrowserType(),a=e.curWindow||pe,i=a.document.getElementById(e.targetId);if(i){e.alwaysUseXDomainIframe||e.enableSafeFrame||(i.appendChild(t),t.style.display="inline"),e.utDivId=t.id,e.utiframeId=n.id,r===A.BROWSER_TYPE.IE||r===A.BROWSER_TYPE.OPERA?R.loadIeIframe(n,e):R.loadIframe(n,e);var o=e.adResponse.ads?e.adResponse.ads[0]:e.adResponse.ad;if("undefined"==typeof o)return void T.logWarn("No ad found in response, nothing to display.");(!e.isMediated||e.adResponse.ad&&"rtb"===e.adResponse.ad.content_source)&&(b(o,n),T.logMessage("Win notification sent for ad tag: "+e.targetId));var s=O.getContentSourceForMediation(o),d=Number(i.style.width.replace(/[^\d\.\-]/g,""));!isNaN(d)&&d>s.width&&("center"===e.promoAlignment?i.setAttribute("align","center"):i.setAttribute("align","left")),T.logMessage("The "+e.targetId+" ad is loaded."),T.logTimestamp("The "+e.targetId+" ad is loaded.");var u=k.getAdObj(e.adResponse);_.emit(A.EVENTS.LOADED,e.targetId,u)}else T.logWarn("No div element found for display ad. This ad will not show. Div id: "+e.targetId)},xe=function(e){if(e.rid&&(ve.requests.keywords.rid=e.rid),e.provider_id&&(ve.requests.keywords.provider_id=e.provider_id),e.debug&&(ve.debug=e.debug),e.astToolkit&&e.astDongle&&(ve.requests.toolkit={enabled:!0,dongle:e.astDongle}),e.size)return void T.logError("Size is deprecated, please use sizes instead.");if(e.member||(e.member=ve.requests.member),e.member||(e.member="none"),!(e.tagId||e.invCode&&e.member))return void T.logError("tagId or (invCode & memberId) should be defined for targetId: "+e.targetId);if(!e.sizeMapping||w(e))try{var t=e.targetId,n=Pe(e,t);return T.logMessage("defineTag called for: "+t),ve.requests&&ve.requests.utCalled===!0&&!ve.requests.tags[t].utCalled&&T.logMessage("A placement was loaded after ut call was started. These ad calls will not be coordinated"),n}catch(r){T.logError("buildAdTagContainer: "+r.message)}},ke=function(e){ve.requests.utCalled=!1,ve.requests.hasLeft=!1,ve.requests.cbCalled=!1,ve.requests.errorReported=!1;var t=T.getTargetArrayforRefresh(e),n=Re(t);T._each(n,function(e,t){T._each(j,function(e){if(t===e){var n=pe.document,r=n.getElementById(e);if(!r)return;for(;r.hasChildNodes();)r.removeChild(r.firstChild)}})}),T._each(n,function(e){e.utCalled=!1,e.displayed=!1});try{Ce()}catch(r){T.logError("refreshTags "+r.message)}},Ne=function(){ke(this.targetId)},Re=function(e){var t={};return 0===e.length?ve.requests.tags:(T._each(ve.requests.tags,function(n,r){for(var a=0;a<e.length;a++)e[a]===r&&(t[r]=n)}),t)},Ce=function(){q.performLookup(ve.requests,De)},De=function(){T._each(V,function(e,t){if("none"===t)Me(t);else{var n=Number(t);isNaN(n)?T.logError("Invalid value for member"):Me(n)}})},Me=function(e){ye(e);var t=x.buildRequestJsonByMemberId(ve.requests,e,Q),n=Te(t);return T.isEmpty(t.tags)?void T.logWarn("ast.loadTagsByMemberId: no defined tags at this point so no /UT request will be made"):void("withCredentials"in new XMLHttpRequest?Ie(n,e):qe(n,e))},Pe=function(e,t){var n=e.member;return ve.requests=ve.requests||{},ve.requests.tags=ve.requests.tags||{},ve.requests.utCalled=ve.requests.utCalled||!1,ve.requests.hasLeft=ve.requests.hasLeft||!1,ve.requests.cbCalled=ve.requests.cbCalled||!1,ve.requests.enableSafeFrame&&(e.enableSafeFrame=!0),e.safeframe=T.cloneAsObject(K)||{},T.hasOwn(e,"safeframeConfig")&&(T.hasOwn(e.safeframeConfig,"allowExpansionByPush")&&(e.safeframe.expansionByPush=e.safeframeConfig.allowExpansionByPush),T.hasOwn(e.safeframeConfig,"allowExpansionByOverlay")&&(e.safeframe.expansionByOverlay=e.safeframeConfig.allowExpansionByOverlay),T.hasOwn(e.safeframeConfig,"sandbox")&&(e.safeframe.sandbox=e.safeframeConfig.sandbox),T.hasOwn(e.safeframeConfig,"meta")&&(e.safeframe.meta=e.safeframeConfig.meta)),ve.requests.tags[t]=e,ve.requests.tags[t].utCalled=ve.requests.tags[t].utCalled||!1,ve.requests.tags[t].showTagCalled=ve.requests.tags[t].showTagCalled||!1,ve.requests.tags[t].displayed=ve.requests.tags[t].displayed||!1,ve.requests.tags[t].on=ve.onEvent||void 0,ve.requests.tags[t].off=ve.offEvent||void 0,ve.requests.tags[t].setSizes=ve.setSizes||void 0,ve.requests.tags[t].modifyTag=ve.modifyTag||void 0,ve.requests.tags[t].setKeywords=ve.setKeywords||void 0,ve.requests.tags[t].refresh=Ne||void 0,V[n]=typeof V[n]===ue?[]:V[n],V[n].push(e.targetId),Y[e.targetId]&&(ve.requests.tags[t].showTagCalled=!0),ve.requests.tags[t]},qe=function(e,t){var n=pe,r=Be(e),a=T.loadScript(n,r);ve.requests.utCalled=!0,a.onload=function(){T.logMessage("JSONP fallback used instead of POST.")},a.onerror=function(n){if(!ve.requests.errorReported){var r="Unknown script error contacting endpoint over JSONP. Endpoint: "+e.url;s(r,t,"-1",A.EVENTS.REQUEST_FAIL,n),T.logError(r)}},a.onreadystatechange=function(n){if(!("loaded"!==a.readyState&&"complete"!==a.readyState||ve.requests.cbCalled||ve.requests.errorReported)){ve.requests.errorReported=!0;var r="Unknown network error contacting endpoint over JSONP. Endpoint: "+e.url;s(r,t,"-1",A.EVENTS.REQUEST_FAIL,n),T.logError(r)}}},Be=function(e){var t=e.url+(e.url.indexOf("?")+1?"&":"?")+"cb=apntag.handleCb&q="+encodeURI(e.data);return t},Ue=function(e){ve.requests.tags=ve.requests.tags||{};var t=!0,n=ve.requests.tags[e];return typeof n===ue&&(t=!1),t},Fe=function(){ve.requests.hasLeft=!1,T._each(ve.requests.tags,function(e,t){e.displayed||e.prebid||e.isMediated||(T.logWarn(t+" is not displayed.",A.LOG.WARN),ve.requests.hasLeft=!0)}),ve.requests.hasLeft||T.logMessage("all Tags are displayed.")},Le=function(e){function t(){n||(n=!0,e())}var n=!1;if(document.addEventListener)document.addEventListener("DOMContentLoaded",t,!1);else if(document.attachEvent){var r;try{r=null!==window.frameElement}catch(a){}if(document.documentElement.doScroll&&!r){var i=function(){if(!n)try{document.documentElement.doScroll("left"),t()}catch(e){setTimeout(i,10)}};i()}document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&t()})}if(window.addEventListener)window.addEventListener("load",t,!1);else if(window.attachEvent)window.attachEvent("onload",t);else{var o=window.onload;window.onload=function(){o&&o(),t()}}};T.logTimestamp("AST library loaded"),be(),ve.requests.checkDisplay||Le(Fe),"function"==typeof window.define&&window.define.amd&&window.define("appnexusAst",[],function(){return window.apntag}),window.apn_testonly={};var We=window.apn_testonly;We.getPageTargetingParams=function(){return ve.requests.targetingParams},We.getEvents=function(){return _.get()},We.getEvent=function(e,t){var n,r=_.get();return T._each(r[e],function(e){null!==e[t]&&void 0!==e[t]&&(n=e[t])}),n},We.buildPostRequestParams=function(e){return Te(e)},We.getContentSourceForMediation=function(e){return O.getContentSourceForMediation(e)},We.getRequestTagsforRefresh=function(e){return Re(e)},We.getTag=function(e){return T.logMessage("getTag called for tag "+e),Ue(e)?e&&ve.requests.tags&&ve.requests.tags[e]?ve.requests.tags[e]:void 0:void T.logError("the "+e+" tag is not defined.",A.LOG.WARN)},We.getEndPoint=function(){return _e()},We.getKeyForSyncTags=function(e){return i(e)},We.getAllRequest=function(){return ve.requests},We.getJSONPUrl=function(e){return Be(e)},We.getInternalTagArr=function(){return Q},We.makeGetRequest=function(e){return we(e)},We.doSizeMapping=function(e,t){return typeof t===ue?w(e):w(e,t)}},function(e,t){Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var n;if(null===this)throw new TypeError('"this" is null or not defined');var r=Object(this),a=r.length>>>0;if(0===a)return-1;var i=+t||0;if(Math.abs(i)===1/0&&(i=0),i>=a)return-1;for(n=Math.max(i>=0?i:a-Math.abs(i),0);n<a;){if(n in r&&r[n]===e)return n;n++}return-1})},function(e,t){"object"!=typeof JSON&&(JSON={}),function(){"use strict";function e(e){return e<10?"0"+e:e}function t(){return this.valueOf()}function n(e){return a.lastIndex=0,a.test(e)?'"'+e.replace(a,function(e){var t=s[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function r(e,t){var a,s,u,l,c,g=i,f=t[e];switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(e)),"function"==typeof d&&(f=d.call(t,e,f)),typeof f){case"string":return n(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(i+=o,c=[],"[object Array]"===Object.prototype.toString.apply(f)){for(l=f.length,a=0;a<l;a+=1)c[a]=r(a,f)||"null";return u=0===c.length?"[]":i?"[\n"+i+c.join(",\n"+i)+"\n"+g+"]":"["+c.join(",")+"]",i=g,u}if(d&&"object"==typeof d)for(l=d.length,a=0;a<l;a+=1)"string"==typeof d[a]&&(s=d[a],u=r(s,f),u&&c.push(n(s)+(i?": ":":")+u));else for(s in f)Object.prototype.hasOwnProperty.call(f,s)&&(u=r(s,f),u&&c.push(n(s)+(i?": ":":")+u));return u=0===c.length?"{}":i?"{\n"+i+c.join(",\n"+i)+"\n"+g+"}":"{"+c.join(",")+"}",i=g,u}}var a=/[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+e(this.getUTCMonth()+1)+"-"+e(this.getUTCDate())+"T"+e(this.getUTCHours())+":"+e(this.getUTCMinutes())+":"+e(this.getUTCSeconds())+"Z":null},Boolean.prototype.toJSON=t,Number.prototype.toJSON=t,String.prototype.toJSON=t);var i,o,s,d;"function"!=typeof JSO