prebid.js 9.6.0 → 9.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +1 -1
  2. package/.github/codeql/codeql-config.yml +3 -0
  3. package/.github/codeql/queries/deviceMemory.ql +14 -0
  4. package/.github/codeql/queries/hardwareConcurrency.ql +14 -0
  5. package/.github/codeql/queries/prebid.qll +36 -0
  6. package/.github/codeql/queries/qlpack.yml +8 -0
  7. package/.github/release-drafter.yml +4 -0
  8. package/.github/workflows/jscpd.yml +1 -1
  9. package/README.md +4 -4
  10. package/dist/33acrossAnalyticsAdapter.js +1 -1
  11. package/dist/33acrossBidAdapter.js +1 -1
  12. package/dist/33acrossIdSystem.js +1 -1
  13. package/dist/BTBidAdapter.js +1 -1
  14. package/dist/adagioAnalyticsAdapter.js +1 -1
  15. package/dist/adagioBidAdapter.js +1 -1
  16. package/dist/adagioUtils.js +1 -1
  17. package/dist/addefendBidAdapter.js +1 -1
  18. package/dist/adgenerationBidAdapter.js +1 -1
  19. package/dist/adlooxRtdProvider.js +1 -1
  20. package/dist/admixerBidAdapter.js +1 -1
  21. package/dist/adqueryBidAdapter.js +1 -1
  22. package/dist/adrelevantisBidAdapter.js +1 -1
  23. package/dist/adstirBidAdapter.js +1 -1
  24. package/dist/adtrgtmeBidAdapter.js +1 -1
  25. package/dist/adxcgAnalyticsAdapter.js +1 -1
  26. package/dist/adxcgBidAdapter.js +1 -1
  27. package/dist/adyoulikeBidAdapter.js +1 -1
  28. package/dist/agmaAnalyticsAdapter.js +1 -1
  29. package/dist/ajaBidAdapter.js +1 -1
  30. package/dist/amxBidAdapter.js +1 -1
  31. package/dist/amxIdSystem.js +1 -1
  32. package/dist/appierAnalyticsAdapter.js +1 -1
  33. package/dist/appnexusBidAdapter.js +1 -1
  34. package/dist/asoBidAdapter.js +1 -1
  35. package/dist/axonixBidAdapter.js +1 -1
  36. package/dist/bidglassBidAdapter.js +1 -1
  37. package/dist/big-richmediaBidAdapter.js +1 -1
  38. package/dist/bridBidAdapter.js +1 -1
  39. package/dist/bridgewellBidAdapter.js +1 -1
  40. package/dist/brightMountainMediaBidAdapter.js +1 -1
  41. package/dist/carodaBidAdapter.js +1 -1
  42. package/dist/ccxBidAdapter.js +1 -1
  43. package/dist/chtnwBidAdapter.js +1 -1
  44. package/dist/chunk-core.js +1 -1
  45. package/dist/cleanmedianetBidAdapter.js +1 -1
  46. package/dist/concertBidAdapter.js +1 -1
  47. package/dist/connectadBidAdapter.js +1 -1
  48. package/dist/connectionInfo.js +1 -0
  49. package/dist/consumableBidAdapter.js +1 -1
  50. package/dist/contxtfulRtdProvider.js +1 -1
  51. package/dist/conversantAnalyticsAdapter.js +1 -1
  52. package/dist/conversantBidAdapter.js +1 -1
  53. package/dist/craftBidAdapter.js +1 -1
  54. package/dist/criteoBidAdapter.js +1 -1
  55. package/dist/cwireBidAdapter.js +1 -1
  56. package/dist/dailymotionBidAdapter.js +1 -1
  57. package/dist/dependencies.json +16 -3
  58. package/dist/discoveryBidAdapter.js +1 -1
  59. package/dist/docereeAdManagerBidAdapter.js +1 -1
  60. package/dist/dspxBidAdapter.js +1 -1
  61. package/dist/dxkultureBidAdapter.js +1 -1
  62. package/dist/eightPodAnalyticsAdapter.js +1 -1
  63. package/dist/eplanningBidAdapter.js +1 -1
  64. package/dist/euidIdSystem.js +1 -1
  65. package/dist/exadsBidAdapter.js +1 -1
  66. package/dist/feedadBidAdapter.js +1 -1
  67. package/dist/finativeBidAdapter.js +1 -1
  68. package/dist/freewheel-sspBidAdapter.js +1 -1
  69. package/dist/gamoshiBidAdapter.js +1 -1
  70. package/dist/gmosspBidAdapter.js +1 -1
  71. package/dist/goldbachBidAdapter.js +1 -1
  72. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  73. package/dist/greenbidsRtdProvider.js +1 -1
  74. package/dist/gridBidAdapter.js +1 -1
  75. package/dist/gumgumBidAdapter.js +1 -1
  76. package/dist/h12mediaBidAdapter.js +1 -1
  77. package/dist/hypelabBidAdapter.js +1 -1
  78. package/dist/id5AnalyticsAdapter.js +1 -1
  79. package/dist/id5IdSystem.js +1 -1
  80. package/dist/idImportLibrary.js +1 -1
  81. package/dist/imdsBidAdapter.js +1 -1
  82. package/dist/improvedigitalBidAdapter.js +1 -1
  83. package/dist/insticatorBidAdapter.js +1 -1
  84. package/dist/intentIqAnalyticsAdapter.js +1 -1
  85. package/dist/ixBidAdapter.js +1 -1
  86. package/dist/jixieBidAdapter.js +1 -1
  87. package/dist/justpremiumBidAdapter.js +1 -1
  88. package/dist/kargoBidAdapter.js +1 -1
  89. package/dist/kimberliteBidAdapter.js +1 -1
  90. package/dist/konduitAnalyticsAdapter.js +1 -1
  91. package/dist/kueezBidAdapter.js +1 -1
  92. package/dist/lassoBidAdapter.js +1 -1
  93. package/dist/lifestreetBidAdapter.js +1 -1
  94. package/dist/liveIntentIdSystem.js +1 -1
  95. package/dist/logicadBidAdapter.js +1 -1
  96. package/dist/loglyliftBidAdapter.js +1 -1
  97. package/dist/luceadBidAdapter.js +1 -1
  98. package/dist/mabidderBidAdapter.js +1 -1
  99. package/dist/magniteAnalyticsAdapter.js +1 -1
  100. package/dist/malltvAnalyticsAdapter.js +1 -1
  101. package/dist/marsmediaBidAdapter.js +1 -1
  102. package/dist/mediafuseBidAdapter.js +1 -1
  103. package/dist/mediagoBidAdapter.js +1 -1
  104. package/dist/medianetAnalyticsAdapter.js +1 -1
  105. package/dist/medianetBidAdapter.js +1 -1
  106. package/dist/mediasquareBidAdapter.js +1 -1
  107. package/dist/mgidBidAdapter.js +1 -1
  108. package/dist/mgidUtils.js +1 -0
  109. package/dist/mgidXBidAdapter.js +1 -1
  110. package/dist/missenaBidAdapter.js +1 -1
  111. package/dist/mobianRtdProvider.js +1 -1
  112. package/dist/navigatorData.js +1 -0
  113. package/dist/nexx360BidAdapter.js +1 -1
  114. package/dist/nobidAnalyticsAdapter.js +1 -1
  115. package/dist/nobidBidAdapter.js +1 -1
  116. package/dist/not-for-prod/prebid.js +176 -170
  117. package/dist/oguryBidAdapter.js +1 -1
  118. package/dist/omsBidAdapter.js +1 -1
  119. package/dist/onetagBidAdapter.js +1 -1
  120. package/dist/ooloAnalyticsAdapter.js +1 -1
  121. package/dist/openxBidAdapter.js +1 -1
  122. package/dist/optidigitalBidAdapter.js +1 -1
  123. package/dist/orbidderBidAdapter.js +1 -1
  124. package/dist/ortbConverter.js +1 -1
  125. package/dist/outbrainBidAdapter.js +1 -1
  126. package/dist/ownadxBidAdapter.js +1 -0
  127. package/dist/pixfutureBidAdapter.js +1 -1
  128. package/dist/prismaBidAdapter.js +1 -1
  129. package/dist/publinkIdSystem.js +1 -1
  130. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  131. package/dist/pubmaticBidAdapter.js +1 -1
  132. package/dist/pubriseBidAdapter.js +1 -0
  133. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  134. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  135. package/dist/pubxaiRtdProvider.js +1 -1
  136. package/dist/pxyzBidAdapter.js +1 -1
  137. package/dist/quantcastBidAdapter.js +1 -1
  138. package/dist/readpeakBidAdapter.js +1 -1
  139. package/dist/redtramBidAdapter.js +1 -1
  140. package/dist/relaidoBidAdapter.js +1 -1
  141. package/dist/retailspotBidAdapter.js +1 -1
  142. package/dist/rhythmoneBidAdapter.js +1 -1
  143. package/dist/riseUtils.js +1 -1
  144. package/dist/rubiconBidAdapter.js +1 -1
  145. package/dist/seedingAllianceBidAdapter.js +1 -1
  146. package/dist/seedtagBidAdapter.js +1 -1
  147. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  148. package/dist/sharethroughBidAdapter.js +1 -1
  149. package/dist/smaatoBidAdapter.js +1 -1
  150. package/dist/smartadserverBidAdapter.js +1 -1
  151. package/dist/smarthubBidAdapter.js +1 -1
  152. package/dist/smartxBidAdapter.js +1 -1
  153. package/dist/smilewantedBidAdapter.js +1 -1
  154. package/dist/snigelBidAdapter.js +1 -1
  155. package/dist/sonobiBidAdapter.js +1 -1
  156. package/dist/sovrnBidAdapter.js +1 -1
  157. package/dist/sspBCBidAdapter.js +1 -1
  158. package/dist/stvBidAdapter.js +1 -1
  159. package/dist/sublimeBidAdapter.js +1 -1
  160. package/dist/taboolaBidAdapter.js +1 -1
  161. package/dist/tappxBidAdapter.js +1 -1
  162. package/dist/targetVideoBidAdapter.js +1 -1
  163. package/dist/teadsBidAdapter.js +1 -1
  164. package/dist/terceptAnalyticsAdapter.js +1 -1
  165. package/dist/themoneytizerBidAdapter.js +1 -1
  166. package/dist/trionBidAdapter.js +1 -1
  167. package/dist/tripleliftBidAdapter.js +1 -1
  168. package/dist/ttdBidAdapter.js +1 -1
  169. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  170. package/dist/uid2IdSystem.js +1 -1
  171. package/dist/underdogmediaBidAdapter.js +1 -1
  172. package/dist/undertoneBidAdapter.js +1 -1
  173. package/dist/unrulyBidAdapter.js +1 -1
  174. package/dist/userId.js +1 -1
  175. package/dist/viantOrtbBidAdapter.js +1 -1
  176. package/dist/vidazooUtils.js +1 -1
  177. package/dist/videobyteBidAdapter.js +1 -1
  178. package/dist/visxBidAdapter.js +1 -1
  179. package/dist/vuukleBidAdapter.js +1 -1
  180. package/dist/widespaceBidAdapter.js +1 -1
  181. package/dist/winrBidAdapter.js +1 -1
  182. package/dist/wurflRtdProvider.js +1 -0
  183. package/dist/yahooAdsBidAdapter.js +1 -1
  184. package/dist/yieldmoBidAdapter.js +1 -1
  185. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  186. package/integrationExamples/gpt/wurflRtdProvider_example.html +106 -0
  187. package/libraries/connectionInfo/connectionUtils.js +33 -0
  188. package/libraries/mgidUtils/mgidUtils.js +73 -0
  189. package/{src/fpd/navigator.js → libraries/navigatorData/navigatorData.js} +1 -1
  190. package/libraries/ortbConverter/processors/video.js +2 -24
  191. package/libraries/riseUtils/index.js +2 -1
  192. package/libraries/vidazooUtils/bidderUtils.js +16 -0
  193. package/modules/.submodules.json +3 -1
  194. package/modules/51DegreesRtdProvider.md +11 -7
  195. package/modules/adagioBidAdapter.js +10 -50
  196. package/modules/admixerBidAdapter.js +12 -5
  197. package/modules/appnexusBidAdapter.js +1 -1
  198. package/modules/ccxBidAdapter.js +6 -2
  199. package/modules/cleanmedianetBidAdapter.js +1 -1
  200. package/modules/contxtfulRtdProvider.js +15 -12
  201. package/modules/cwireBidAdapter.js +13 -9
  202. package/modules/cwireBidAdapter.md +29 -10
  203. package/modules/dailymotionBidAdapter.js +20 -1
  204. package/modules/dailymotionBidAdapter.md +11 -7
  205. package/modules/discoveryBidAdapter.js +1 -1
  206. package/modules/docereeAdManagerBidAdapter.js +9 -12
  207. package/modules/eightPodAnalyticsAdapter.js +13 -1
  208. package/modules/gamoshiBidAdapter.js +1 -1
  209. package/modules/greenbidsAnalyticsAdapter.js +7 -4
  210. package/modules/greenbidsRtdProvider.js +15 -5
  211. package/modules/id5IdSystem.js +14 -93
  212. package/modules/idImportLibrary.js +14 -6
  213. package/modules/ixBidAdapter.js +0 -1
  214. package/modules/mediagoBidAdapter.js +4 -4
  215. package/modules/mgidBidAdapter.js +30 -109
  216. package/modules/mgidXBidAdapter.js +2 -66
  217. package/modules/mobianRtdProvider.js +28 -14
  218. package/modules/omsBidAdapter.js +1 -1
  219. package/modules/ownadxBidAdapter.js +99 -0
  220. package/modules/prismaBidAdapter.js +1 -27
  221. package/modules/pubmaticBidAdapter.js +2 -1
  222. package/modules/pubriseBidAdapter.js +19 -0
  223. package/modules/pubriseBidAdapter.md +79 -0
  224. package/modules/pubxaiAnalyticsAdapter.js +9 -4
  225. package/modules/pubxaiRtdProvider.js +38 -18
  226. package/modules/pubxaiRtdProvider.md +2 -2
  227. package/modules/redtramBidAdapter.js +2 -6
  228. package/modules/rubiconBidAdapter.js +3 -3
  229. package/modules/sharethroughBidAdapter.js +5 -0
  230. package/modules/smarthubBidAdapter.js +2 -0
  231. package/modules/teadsBidAdapter.js +4 -3
  232. package/modules/ttdBidAdapter.js +14 -32
  233. package/modules/undertoneBidAdapter.js +1 -19
  234. package/modules/userId/index.js +1 -1
  235. package/modules/viantOrtbBidAdapter.js +1 -1
  236. package/modules/wurflRtdProvider.js +213 -0
  237. package/modules/wurflRtdProvider.md +67 -0
  238. package/package.json +1 -1
  239. package/src/adloader.js +1 -0
  240. package/src/prebid.js +2 -1
  241. package/src/utils/focusTimeout.js +17 -6
  242. package/src/utils/ttlCollection.js +1 -1
  243. package/src/utils.js +28 -0
  244. package/src/video.js +78 -1
  245. package/test/spec/modules/adagioBidAdapter_spec.js +0 -1
  246. package/test/spec/modules/admixerBidAdapter_spec.js +2 -2
  247. package/test/spec/modules/appnexusBidAdapter_spec.js +0 -33
  248. package/test/spec/modules/ccxBidAdapter_spec.js +81 -0
  249. package/test/spec/modules/cleanmedianetBidAdapter_spec.js +1 -1
  250. package/test/spec/modules/contxtfulRtdProvider_spec.js +19 -19
  251. package/test/spec/modules/dailymotionBidAdapter_spec.js +62 -12
  252. package/test/spec/modules/discoveryBidAdapter_spec.js +1 -1
  253. package/test/spec/modules/docereeAdManagerBidAdapter_spec.js +1 -0
  254. package/test/spec/modules/gamoshiBidAdapter_spec.js +1 -1
  255. package/test/spec/modules/id5IdSystem_spec.js +25 -98
  256. package/test/spec/modules/idImportLibrary_spec.js +14 -0
  257. package/test/spec/modules/ixBidAdapter_spec.js +8 -1
  258. package/test/spec/modules/mobianRtdProvider_spec.js +46 -43
  259. package/test/spec/modules/openxBidAdapter_spec.js +1 -1
  260. package/test/spec/modules/ownadxBidAdapter_spec.js +103 -0
  261. package/test/spec/modules/pubmaticBidAdapter_spec.js +18 -0
  262. package/test/spec/modules/pubriseBidAdapter_spec.js +514 -0
  263. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +9 -4
  264. package/test/spec/modules/pubxaiRtdProvider_spec.js +37 -5
  265. package/test/spec/modules/rubiconBidAdapter_spec.js +10 -0
  266. package/test/spec/modules/sharethroughBidAdapter_spec.js +35 -0
  267. package/test/spec/modules/trafficgateBidAdapter_spec.js +1 -1
  268. package/test/spec/modules/ttdBidAdapter_spec.js +10 -1
  269. package/test/spec/modules/viantOrtbBidAdapter_spec.js +1 -1
  270. package/test/spec/modules/vidazooBidAdapter_spec.js +12 -4
  271. package/test/spec/modules/wurflRtdProvider_spec.js +324 -0
  272. package/test/spec/ortbConverter/userId_spec.js +23 -2
  273. package/test/spec/unit/utils/focusTimeout_spec.js +33 -6
  274. package/test/spec/video_spec.js +103 -1
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[28731],{14975:(e,t,i)=>{var r=i(7873),a=i(57377),s=i(71371),n=i(91069),d=i(70433),o=i(43272),p=i(95789),c=i(82621);const m="9.6.0",u=300,l="USD",b=["admixer.net","adserver.org","adtelligent.com","akamai.com","amxdt.net","audigent.com","britepool.com","criteo.com","crwdcntrl.net","deepintent.com","epsilon.com","hcn.health","id5-sync.com","idx.lat","intentiq.com","intimatemerger.com","liveintent.com","liveramp.com","mediawallahscript.com","merkleinc.com","netid.de","neustar.biz","nextroll.com","novatiq.com","pubcid.org","quantcast.com","tapad.com","uidapi.com","yahoo.com","zeotap.com"];function v(e,t){const i=e.bidder||e.bidderCode;return o.$W.getConfig(`${i}.${t}`)}function g(e){return{w:parseInt(e[0]),h:parseInt(e[1])}}function y(e){return(0,n.isArray)(e)&&2===e.length&&!(0,n.isArray)(e[0])?[g(e)]:e.map(g)}function f(e){return(0,n.isArray)((0,d.A)(e,"userIdAsEids"))?e.userIdAsEids.filter((e=>-1!==b.indexOf(e.source))):[]}function h(e){return(0,d.A)(e,"params.bidOverride.imp.secure")||"https:"===document.location.protocol?1:0}function A(e){let t;return(0,d.A)(e,"params.pubId")?t=!0:(0,d.A)(e,"params.dcn")&&(0,d.A)(e,"params.pos")&&(t=!1),t}function x(e){let t=v(e,"mode");return t=t?t.toLowerCase():void 0,void 0===t||t===s.D4?s.D4:t===s.G_?s.G_:"all"===t?"*":void 0}function O(e){const t=x(e),i={currency:(0,d.A)(e,"params.bidOverride.cur")||l,mediaType:t,size:"*"};return!!(0,n.isFn)(e.getFloor)&&e.getFloor(i)}function T(e,t,i,r){const a={...r};for(const r in i)switch(e){case"string":-1!==t.indexOf(r)&&(0,n.isStr)(i[r])&&(a[r]=i[r]);break;case"number":-1!==t.indexOf(r)&&(0,n.isNumber)(i[r])&&(a[r]=i[r]);break;case"array":-1!==t.indexOf(r)&&(0,n.isArray)(i[r])&&(a[r]=i[r]);break;case"object":-1!==t.indexOf(r)&&(0,n.isPlainObject)(i[r])&&(a[r]=i[r]);break;case"objectAllKeys":(0,n.isPlainObject)(i)&&(a[r]=i[r])}return a}function j(e){const t=v(e,"ttl");return k(t||(0,d.A)(e,"params.ttl"))}function k(e){return(0,n.isNumber)(e)&&e>0&&e<3600?e:u}function w(e){return(0,n.isStr)(e)&&e.length>0}function I(e,t){if(e){let i={id:(0,n.generateUUID)(),cur:[O(e).currency||(0,d.A)(t,"params.bidOverride.cur")||l],imp:[],site:{page:(0,d.A)(e,"refererInfo.page")},device:{dnt:0,ua:navigator.userAgent,ip:(0,d.A)(t,"params.bidOverride.device.ip")||(0,d.A)(t,"params.ext.ip")||void 0,w:window.screen.width,h:window.screen.height},regs:{ext:{us_privacy:e.uspConsent?e.uspConsent:"",gdpr:e.gdprConsent&&e.gdprConsent.gdprApplies?1:0,gpp:e.gppConsent?e.gppConsent.gppString:"",gpp_sid:e.gppConsent?e.gppConsent.applicableSections:[]}},source:{ext:{hb:1,adapterver:"1.1.0",prebidver:m,integration:{name:"prebid.js",ver:m}},fd:1},user:{ext:{consent:e.gdprConsent&&e.gdprConsent.gdprApplies?e.gdprConsent.consentString:"",eids:f(t)}}};!0===A(t)?(i.site.publisher={id:t.params.pubId},((0,d.A)(t,"params.bidOverride.site.id")||(0,d.A)(t,"params.siteId"))&&(i.site.id=(0,d.A)(t,"params.bidOverride.site.id")||t.params.siteId)):i.site.id=t.params.dcn,e.ortb2?.regs?.gpp&&(i.regs.ext.gpp=e.ortb2.regs.gpp,i.regs.ext.gpp_sid=e.ortb2.regs.gpp_sid),e.ortb2&&(i=function(e,t){const i=t.ortb2,r=(0,d.A)(i,"site")||void 0,a=(0,d.A)(r,"content")||void 0,s=(0,d.A)(r,"publisher")||void 0,o=(0,d.A)(r,"content.data")||void 0,p=(0,d.A)(i,"app.content")||void 0,c=(0,d.A)(i,"app.content.data")||void 0,m=(0,d.A)(i,"user")||void 0;if(r&&(0,n.isPlainObject)(r)){const t=["name","domain","page","ref","keywords","search"],i=["cat","sectioncat","pagecat"],a=["ext"];e.site=T("string",t,r,e.site),e.site=T("array",i,r,e.site),e.site=T("object",a,r,e.site)}if(s&&(0,n.isPlainObject)(s)){const t=["ext"];e.site.publisher=T("object",t,s,e.site.publisher)}if(a&&(0,n.isPlainObject)(a)){const t=["id","title","series","season","genre","contentrating","language"],i=["episode","prodq","context","livestream","len"],r=["cat"],s=["ext"];e.site.content=T("string",t,a,e.site.content),e.site.content=T("number",i,a,e.site.content),e.site.content=T("array",r,a,e.site.content),e.site.content=T("object",s,a,e.site.content),o&&(0,n.isArray)(o)&&o.every((t=>{let i={};const r=["segment"],a=["ext"];i=T("string",["id","name"],t,i),i=T("array",r,t,i),i=T("object",a,t,i),e.site.content.data=[],e.site.content.data.push(i)}))}p&&(0,n.isPlainObject)(p)&&c&&(0,n.isArray)(c)&&c.every((t=>{let i={};const r=["segment"],a=["ext"];i=T("string",["id","name"],t,i),i=T("array",r,t,i),i=T("object",a,t,i),e.app={content:{data:[]}},e.app.content.data.push(i)}));if(m&&(0,n.isPlainObject)(m)){const t=["id","buyeruid","gender","keywords","customdata"],i=["yob"],r=["data"],a=["ext"];e.user=T("string",t,m,e.user),e.user=T("number",i,m,e.user),e.user=T("array",r,m,e.user),e.user.ext=T("object",a,m,e.user.ext)}return e}(i,t));const r=(0,d.A)(t,"schain.nodes");return(0,n.isArray)(r)&&r.length>0&&(i.source.ext.schain=t.schain,i.source.ext.schain.nodes[0].rid=i.id),i}}function C(e,t){const i=x(e);if(t&&e){const r={id:e.bidId,secure:h(e),bidfloor:O(e).floor||(0,d.A)(e,"params.bidOverride.imp.bidfloor")};if(!e.mediaTypes.banner||void 0!==i&&i!==s.D4&&"*"!==i||(r.banner={mimes:e.mediaTypes.banner.mimes||["text/html","text/javascript","application/javascript","image/jpg"],format:y(e.sizes)},e.mediaTypes.banner.pos&&(r.banner.pos=e.mediaTypes.banner.pos)),e.mediaTypes.video&&(i===s.G_||"*"===i)){const t=y(e.mediaTypes.video.playerSize);r.video={mimes:(0,d.A)(e,"params.bidOverride.imp.video.mimes")||e.mediaTypes.video.mimes||["video/mp4","application/javascript"],w:(0,d.A)(e,"params.bidOverride.imp.video.w")||t[0].w,h:(0,d.A)(e,"params.bidOverride.imp.video.h")||t[0].h,maxbitrate:(0,d.A)(e,"params.bidOverride.imp.video.maxbitrate")||e.mediaTypes.video.maxbitrate||void 0,maxduration:(0,d.A)(e,"params.bidOverride.imp.video.maxduration")||e.mediaTypes.video.maxduration||void 0,minduration:(0,d.A)(e,"params.bidOverride.imp.video.minduration")||e.mediaTypes.video.minduration||void 0,api:(0,d.A)(e,"params.bidOverride.imp.video.api")||e.mediaTypes.video.api||[2],delivery:(0,d.A)(e,"params.bidOverride.imp.video.delivery")||e.mediaTypes.video.delivery||void 0,pos:(0,d.A)(e,"params.bidOverride.imp.video.pos")||e.mediaTypes.video.pos||void 0,playbackmethod:(0,d.A)(e,"params.bidOverride.imp.video.playbackmethod")||e.mediaTypes.video.playbackmethod||void 0,placement:(0,d.A)(e,"params.bidOverride.imp.video.placement")||e.mediaTypes.video.placement||void 0,plcmt:(0,d.A)(e,"params.bidOverride.imp.video.plcmt")||e.mediaTypes.video.plcmt||void 0,linearity:(0,d.A)(e,"params.bidOverride.imp.video.linearity")||e.mediaTypes.video.linearity||1,protocols:(0,d.A)(e,"params.bidOverride.imp.video.protocols")||e.mediaTypes.video.protocols||[2,5],startdelay:(0,d.A)(e,"params.bidOverride.imp.video.startdelay")||e.mediaTypes.video.startdelay||0,rewarded:(0,d.A)(e,"params.bidOverride.imp.video.rewarded")||void 0}}if(r.ext={dfp_ad_unit_code:e.adUnitCode},(0,d.A)(e,"params.kvp")&&(0,n.isPlainObject)(e.params.kvp)){r.ext.kvs={};for(const t in e.params.kvp)if((0,n.isStr)(e.params.kvp[t])||(0,n.isNumber)(e.params.kvp[t]))r.ext.kvs[t]=e.params.kvp[t];else if((0,n.isArray)(e.params.kvp[t])){const i=e.params.kvp[t];(i.every((e=>(0,n.isStr)(e)))||i.every((e=>(0,n.isNumber)(e))))&&(r.ext.kvs[t]=e.params.kvp[t])}}(0,d.A)(e,"ortb2Imp.ext.data")&&(0,n.isPlainObject)(e.ortb2Imp.ext.data)&&(r.ext.data=e.ortb2Imp.ext.data),(0,d.A)(e,"ortb2Imp.instl")&&(0,n.isNumber)(e.ortb2Imp.instl)&&1===e.ortb2Imp.instl&&(r.instl=e.ortb2Imp.instl),!1===A(e)?(r.tagid=e.params.pos,r.ext.pos=e.params.pos):(0,d.A)(e,"params.placementId")&&(r.tagid=e.params.placementId),t.imp.push(r)}}function _(e){let{payload:t,requestOptions:i,bidderRequest:r}=e;const a=A(r),o=v(r,"endpoint");let p=o||"https://c2shb.pubgw.yahoo.com/bidRequest";if(!0===a&&(p=o||"https://c2shb.pubgw.yahoo.com/admax/bid/partners/PBJS"),!0===(0,d.A)(r,"params.testing.e2etest"))if((0,n.logInfo)("Adapter e2etest mode is active"),i.withCredentials=!1,!0===a)t.site.id="1234567";else{const e=x(r);t.site.id="8a969516017a7a396ec539d97f540011",t.imp.forEach((t=>{if(t.ext.e2eTestMode=!0,e===s.D4)t.tagid="8a969978017a7aaabab4ab0bc01a0009";else if(e===s.G_)t.tagid="8a96958a017a7a57ac375d50c0c700cc";else{const e=r.bidderCode;(0,n.logWarn)(`e2etest mode does not support ${e}.mode="all". \n Please specify either "banner" or "video"`),(0,n.logWarn)(`Adapter e2etest mode: Please make sure your adUnit matches the ${e}.mode video or banner`)}}))}return{url:p,method:"POST",data:t,options:i,bidderRequest:r}}const S={code:"yahooAds",gvlid:25,aliases:[{code:"yahoossp",gvlid:25},{code:"yahooAdvertising",gvlid:25}],supportedMediaTypes:[s.D4,s.G_],isBidRequestValid:function(e){const t=e.params;return!0===(0,d.A)(t,"testing.e2etest")||(!(!(0,n.isPlainObject)(t)||!(w(t.pubId)||w(t.dcn)&&w(t.pos)))||((0,n.logWarn)("Bidder params missing or incorrect, please pass object with either: dcn & pos OR pubId"),!1))},buildRequests:function(e,t){if((0,n.isEmpty)(e)||(0,n.isEmpty)(t))return void(0,n.logWarn)('buildRequests called with either empty "validBidRequests" or "bidderRequest"');const i={contentType:"application/json",customHeaders:{"x-openrtb-version":"2.5"}};i.withCredentials=(0,c.C)(t.gdprConsent);const r=function(e){const t=x(e[0]);let i=[];return t===s.D4?i=e.filter((e=>Object.keys(e.mediaTypes).some((e=>e===s.D4)))):t===s.G_?i=e.filter((e=>Object.keys(e.mediaTypes).some((e=>e===s.G_)))):"*"===t&&(i=e.filter((e=>Object.keys(e.mediaTypes).some((e=>e===s.D4||e===s.G_))))),i}(e);if(!0===v(t,"singleRequestMode")){const e=I(t,r[0]);return r.forEach((t=>{C(t,e)})),[_({payload:e,requestOptions:i,bidderRequest:t})]}return r.map((e=>{const r=I(t,e);return C(e,r),_({payload:r,requestOptions:i,bidderRequest:e})}))},interpretResponse:function(e,t){let{bidderRequest:i}=t;const r=[];if(!e.body||!Array.isArray(e.body.seatbid))return r;return e.body.seatbid.forEach((e=>{let t;try{t=e.bid[0]}catch(e){return r}let a=t.ext&&t.ext.encp?t.ext.encp:t.price,o={adId:(0,d.A)(t,"adId")?t.adId:t.impid||t.crid,requestId:t.impid,cpm:a,width:t.w,height:t.h,creativeId:t.crid||0,currency:t.cur||l,dealId:t.dealid?t.dealid:null,netRevenue:!0,ttl:j(i),meta:{advertiserDomains:t.adomain}};const c=function(e){const t=e.adm;return-1!==t.indexOf("o2playerSettings")||-1!==t.indexOf("YAHOO.VideoPlatform.VideoPlayer")||-1!==t.indexOf("AdPlacement")?s.D4:-1!==t.indexOf("VAST")?s.G_:void 0}(t);c===s.D4?(o.mediaType=s.D4,o.ad=t.adm,o.meta.mediaType=s.D4):c===s.G_&&(o.mediaType=s.G_,o.meta.mediaType=s.G_,o.vastXml=t.adm,t.nurl&&(o.vastUrl=t.nurl)),"outstream"!==(0,d.A)(i,"mediaTypes.video.context")||i.renderer||(o.renderer=function(e,t){const i=p.A4.install({url:"https://s.yimg.com/kp/prebid-outstream-renderer/renderer.js",loaded:!1,adUnitCode:e.adUnitCode});try{i.setRender((function(t){setTimeout((function(){o2PlayerRender(t)}),(0,d.A)(e,"params.testing.renderer.setTimeout")||700)}))}catch(e){(0,n.logWarn)("Renderer error: setRender() failed",e)}return i}(i)||void 0),r.push(o)})),r},getUserSyncs:function(e,t,i,r,a){const s=!(0,n.isEmpty)(t)&&t[0].body;if(s&&s.ext&&s.ext.pixels){const t=function(e,t){let i=/(img|iframe)[\s\S]*?src\s*=\s*("|')(.*?)\2/gi,r=/\w*(?=\s)/,a=/src=("|')(.*?)\1/,s=[];if(t){let n=t.match(i);n&&n.forEach((t=>{let i=t.match(r)[0],n=t.match(a)[2];if(i&&n){let t="img"===i.toLowerCase()?"image":"iframe";if(!e.iframeEnabled&&"iframe"===t||!e.pixelEnabled&&"image"===t)return;s.push({type:t,url:n})}}))}return s}(e,s.ext.pixels);return t.forEach((e=>{e.url=function(e,t){const i={gdpr_consent:t.gdpr?t.gdpr.consentString:"",gdpr:t.gdpr&&t.gdpr.gdprApplies?"1":"0",us_privacy:t.uspConsent?t.uspConsent:"",gpp:t.gpp?t.gpp.gppString:"",gpp_sid:t.gpp&&Array.isArray(t.gpp.applicableSections)?t.gpp.applicableSections.join(","):""},r=new URL(e),a=r.searchParams;for(const[e,t]of Object.entries(i))a.set(e,t);return r.search=a.toString(),r.toString()}(e.url,{gpp:a,gdpr:i,uspConsent:r})})),t}return[]}};(0,a.a$)(S),(0,r.E)("yahooAdsBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return t=14975,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[28731],{14975:(e,t,i)=>{var r=i(7873),a=i(57377),s=i(71371),n=i(91069),d=i(70433),o=i(43272),p=i(95789),c=i(82621);const m="9.8.0",u=300,l="USD",b=["admixer.net","adserver.org","adtelligent.com","akamai.com","amxdt.net","audigent.com","britepool.com","criteo.com","crwdcntrl.net","deepintent.com","epsilon.com","hcn.health","id5-sync.com","idx.lat","intentiq.com","intimatemerger.com","liveintent.com","liveramp.com","mediawallahscript.com","merkleinc.com","netid.de","neustar.biz","nextroll.com","novatiq.com","pubcid.org","quantcast.com","tapad.com","uidapi.com","yahoo.com","zeotap.com"];function v(e,t){const i=e.bidder||e.bidderCode;return o.$W.getConfig(`${i}.${t}`)}function g(e){return{w:parseInt(e[0]),h:parseInt(e[1])}}function y(e){return(0,n.isArray)(e)&&2===e.length&&!(0,n.isArray)(e[0])?[g(e)]:e.map(g)}function f(e){return(0,n.isArray)((0,d.A)(e,"userIdAsEids"))?e.userIdAsEids.filter((e=>-1!==b.indexOf(e.source))):[]}function h(e){return(0,d.A)(e,"params.bidOverride.imp.secure")||"https:"===document.location.protocol?1:0}function A(e){let t;return(0,d.A)(e,"params.pubId")?t=!0:(0,d.A)(e,"params.dcn")&&(0,d.A)(e,"params.pos")&&(t=!1),t}function x(e){let t=v(e,"mode");return t=t?t.toLowerCase():void 0,void 0===t||t===s.D4?s.D4:t===s.G_?s.G_:"all"===t?"*":void 0}function O(e){const t=x(e),i={currency:(0,d.A)(e,"params.bidOverride.cur")||l,mediaType:t,size:"*"};return!!(0,n.isFn)(e.getFloor)&&e.getFloor(i)}function T(e,t,i,r){const a={...r};for(const r in i)switch(e){case"string":-1!==t.indexOf(r)&&(0,n.isStr)(i[r])&&(a[r]=i[r]);break;case"number":-1!==t.indexOf(r)&&(0,n.isNumber)(i[r])&&(a[r]=i[r]);break;case"array":-1!==t.indexOf(r)&&(0,n.isArray)(i[r])&&(a[r]=i[r]);break;case"object":-1!==t.indexOf(r)&&(0,n.isPlainObject)(i[r])&&(a[r]=i[r]);break;case"objectAllKeys":(0,n.isPlainObject)(i)&&(a[r]=i[r])}return a}function j(e){const t=v(e,"ttl");return k(t||(0,d.A)(e,"params.ttl"))}function k(e){return(0,n.isNumber)(e)&&e>0&&e<3600?e:u}function w(e){return(0,n.isStr)(e)&&e.length>0}function I(e,t){if(e){let i={id:(0,n.generateUUID)(),cur:[O(e).currency||(0,d.A)(t,"params.bidOverride.cur")||l],imp:[],site:{page:(0,d.A)(e,"refererInfo.page")},device:{dnt:0,ua:navigator.userAgent,ip:(0,d.A)(t,"params.bidOverride.device.ip")||(0,d.A)(t,"params.ext.ip")||void 0,w:window.screen.width,h:window.screen.height},regs:{ext:{us_privacy:e.uspConsent?e.uspConsent:"",gdpr:e.gdprConsent&&e.gdprConsent.gdprApplies?1:0,gpp:e.gppConsent?e.gppConsent.gppString:"",gpp_sid:e.gppConsent?e.gppConsent.applicableSections:[]}},source:{ext:{hb:1,adapterver:"1.1.0",prebidver:m,integration:{name:"prebid.js",ver:m}},fd:1},user:{ext:{consent:e.gdprConsent&&e.gdprConsent.gdprApplies?e.gdprConsent.consentString:"",eids:f(t)}}};!0===A(t)?(i.site.publisher={id:t.params.pubId},((0,d.A)(t,"params.bidOverride.site.id")||(0,d.A)(t,"params.siteId"))&&(i.site.id=(0,d.A)(t,"params.bidOverride.site.id")||t.params.siteId)):i.site.id=t.params.dcn,e.ortb2?.regs?.gpp&&(i.regs.ext.gpp=e.ortb2.regs.gpp,i.regs.ext.gpp_sid=e.ortb2.regs.gpp_sid),e.ortb2&&(i=function(e,t){const i=t.ortb2,r=(0,d.A)(i,"site")||void 0,a=(0,d.A)(r,"content")||void 0,s=(0,d.A)(r,"publisher")||void 0,o=(0,d.A)(r,"content.data")||void 0,p=(0,d.A)(i,"app.content")||void 0,c=(0,d.A)(i,"app.content.data")||void 0,m=(0,d.A)(i,"user")||void 0;if(r&&(0,n.isPlainObject)(r)){const t=["name","domain","page","ref","keywords","search"],i=["cat","sectioncat","pagecat"],a=["ext"];e.site=T("string",t,r,e.site),e.site=T("array",i,r,e.site),e.site=T("object",a,r,e.site)}if(s&&(0,n.isPlainObject)(s)){const t=["ext"];e.site.publisher=T("object",t,s,e.site.publisher)}if(a&&(0,n.isPlainObject)(a)){const t=["id","title","series","season","genre","contentrating","language"],i=["episode","prodq","context","livestream","len"],r=["cat"],s=["ext"];e.site.content=T("string",t,a,e.site.content),e.site.content=T("number",i,a,e.site.content),e.site.content=T("array",r,a,e.site.content),e.site.content=T("object",s,a,e.site.content),o&&(0,n.isArray)(o)&&o.every((t=>{let i={};const r=["segment"],a=["ext"];i=T("string",["id","name"],t,i),i=T("array",r,t,i),i=T("object",a,t,i),e.site.content.data=[],e.site.content.data.push(i)}))}p&&(0,n.isPlainObject)(p)&&c&&(0,n.isArray)(c)&&c.every((t=>{let i={};const r=["segment"],a=["ext"];i=T("string",["id","name"],t,i),i=T("array",r,t,i),i=T("object",a,t,i),e.app={content:{data:[]}},e.app.content.data.push(i)}));if(m&&(0,n.isPlainObject)(m)){const t=["id","buyeruid","gender","keywords","customdata"],i=["yob"],r=["data"],a=["ext"];e.user=T("string",t,m,e.user),e.user=T("number",i,m,e.user),e.user=T("array",r,m,e.user),e.user.ext=T("object",a,m,e.user.ext)}return e}(i,t));const r=(0,d.A)(t,"schain.nodes");return(0,n.isArray)(r)&&r.length>0&&(i.source.ext.schain=t.schain,i.source.ext.schain.nodes[0].rid=i.id),i}}function C(e,t){const i=x(e);if(t&&e){const r={id:e.bidId,secure:h(e),bidfloor:O(e).floor||(0,d.A)(e,"params.bidOverride.imp.bidfloor")};if(!e.mediaTypes.banner||void 0!==i&&i!==s.D4&&"*"!==i||(r.banner={mimes:e.mediaTypes.banner.mimes||["text/html","text/javascript","application/javascript","image/jpg"],format:y(e.sizes)},e.mediaTypes.banner.pos&&(r.banner.pos=e.mediaTypes.banner.pos)),e.mediaTypes.video&&(i===s.G_||"*"===i)){const t=y(e.mediaTypes.video.playerSize);r.video={mimes:(0,d.A)(e,"params.bidOverride.imp.video.mimes")||e.mediaTypes.video.mimes||["video/mp4","application/javascript"],w:(0,d.A)(e,"params.bidOverride.imp.video.w")||t[0].w,h:(0,d.A)(e,"params.bidOverride.imp.video.h")||t[0].h,maxbitrate:(0,d.A)(e,"params.bidOverride.imp.video.maxbitrate")||e.mediaTypes.video.maxbitrate||void 0,maxduration:(0,d.A)(e,"params.bidOverride.imp.video.maxduration")||e.mediaTypes.video.maxduration||void 0,minduration:(0,d.A)(e,"params.bidOverride.imp.video.minduration")||e.mediaTypes.video.minduration||void 0,api:(0,d.A)(e,"params.bidOverride.imp.video.api")||e.mediaTypes.video.api||[2],delivery:(0,d.A)(e,"params.bidOverride.imp.video.delivery")||e.mediaTypes.video.delivery||void 0,pos:(0,d.A)(e,"params.bidOverride.imp.video.pos")||e.mediaTypes.video.pos||void 0,playbackmethod:(0,d.A)(e,"params.bidOverride.imp.video.playbackmethod")||e.mediaTypes.video.playbackmethod||void 0,placement:(0,d.A)(e,"params.bidOverride.imp.video.placement")||e.mediaTypes.video.placement||void 0,plcmt:(0,d.A)(e,"params.bidOverride.imp.video.plcmt")||e.mediaTypes.video.plcmt||void 0,linearity:(0,d.A)(e,"params.bidOverride.imp.video.linearity")||e.mediaTypes.video.linearity||1,protocols:(0,d.A)(e,"params.bidOverride.imp.video.protocols")||e.mediaTypes.video.protocols||[2,5],startdelay:(0,d.A)(e,"params.bidOverride.imp.video.startdelay")||e.mediaTypes.video.startdelay||0,rewarded:(0,d.A)(e,"params.bidOverride.imp.video.rewarded")||void 0}}if(r.ext={dfp_ad_unit_code:e.adUnitCode},(0,d.A)(e,"params.kvp")&&(0,n.isPlainObject)(e.params.kvp)){r.ext.kvs={};for(const t in e.params.kvp)if((0,n.isStr)(e.params.kvp[t])||(0,n.isNumber)(e.params.kvp[t]))r.ext.kvs[t]=e.params.kvp[t];else if((0,n.isArray)(e.params.kvp[t])){const i=e.params.kvp[t];(i.every((e=>(0,n.isStr)(e)))||i.every((e=>(0,n.isNumber)(e))))&&(r.ext.kvs[t]=e.params.kvp[t])}}(0,d.A)(e,"ortb2Imp.ext.data")&&(0,n.isPlainObject)(e.ortb2Imp.ext.data)&&(r.ext.data=e.ortb2Imp.ext.data),(0,d.A)(e,"ortb2Imp.instl")&&(0,n.isNumber)(e.ortb2Imp.instl)&&1===e.ortb2Imp.instl&&(r.instl=e.ortb2Imp.instl),!1===A(e)?(r.tagid=e.params.pos,r.ext.pos=e.params.pos):(0,d.A)(e,"params.placementId")&&(r.tagid=e.params.placementId),t.imp.push(r)}}function _(e){let{payload:t,requestOptions:i,bidderRequest:r}=e;const a=A(r),o=v(r,"endpoint");let p=o||"https://c2shb.pubgw.yahoo.com/bidRequest";if(!0===a&&(p=o||"https://c2shb.pubgw.yahoo.com/admax/bid/partners/PBJS"),!0===(0,d.A)(r,"params.testing.e2etest"))if((0,n.logInfo)("Adapter e2etest mode is active"),i.withCredentials=!1,!0===a)t.site.id="1234567";else{const e=x(r);t.site.id="8a969516017a7a396ec539d97f540011",t.imp.forEach((t=>{if(t.ext.e2eTestMode=!0,e===s.D4)t.tagid="8a969978017a7aaabab4ab0bc01a0009";else if(e===s.G_)t.tagid="8a96958a017a7a57ac375d50c0c700cc";else{const e=r.bidderCode;(0,n.logWarn)(`e2etest mode does not support ${e}.mode="all". \n Please specify either "banner" or "video"`),(0,n.logWarn)(`Adapter e2etest mode: Please make sure your adUnit matches the ${e}.mode video or banner`)}}))}return{url:p,method:"POST",data:t,options:i,bidderRequest:r}}const S={code:"yahooAds",gvlid:25,aliases:[{code:"yahoossp",gvlid:25},{code:"yahooAdvertising",gvlid:25}],supportedMediaTypes:[s.D4,s.G_],isBidRequestValid:function(e){const t=e.params;return!0===(0,d.A)(t,"testing.e2etest")||(!(!(0,n.isPlainObject)(t)||!(w(t.pubId)||w(t.dcn)&&w(t.pos)))||((0,n.logWarn)("Bidder params missing or incorrect, please pass object with either: dcn & pos OR pubId"),!1))},buildRequests:function(e,t){if((0,n.isEmpty)(e)||(0,n.isEmpty)(t))return void(0,n.logWarn)('buildRequests called with either empty "validBidRequests" or "bidderRequest"');const i={contentType:"application/json",customHeaders:{"x-openrtb-version":"2.5"}};i.withCredentials=(0,c.C)(t.gdprConsent);const r=function(e){const t=x(e[0]);let i=[];return t===s.D4?i=e.filter((e=>Object.keys(e.mediaTypes).some((e=>e===s.D4)))):t===s.G_?i=e.filter((e=>Object.keys(e.mediaTypes).some((e=>e===s.G_)))):"*"===t&&(i=e.filter((e=>Object.keys(e.mediaTypes).some((e=>e===s.D4||e===s.G_))))),i}(e);if(!0===v(t,"singleRequestMode")){const e=I(t,r[0]);return r.forEach((t=>{C(t,e)})),[_({payload:e,requestOptions:i,bidderRequest:t})]}return r.map((e=>{const r=I(t,e);return C(e,r),_({payload:r,requestOptions:i,bidderRequest:e})}))},interpretResponse:function(e,t){let{bidderRequest:i}=t;const r=[];if(!e.body||!Array.isArray(e.body.seatbid))return r;return e.body.seatbid.forEach((e=>{let t;try{t=e.bid[0]}catch(e){return r}let a=t.ext&&t.ext.encp?t.ext.encp:t.price,o={adId:(0,d.A)(t,"adId")?t.adId:t.impid||t.crid,requestId:t.impid,cpm:a,width:t.w,height:t.h,creativeId:t.crid||0,currency:t.cur||l,dealId:t.dealid?t.dealid:null,netRevenue:!0,ttl:j(i),meta:{advertiserDomains:t.adomain}};const c=function(e){const t=e.adm;return-1!==t.indexOf("o2playerSettings")||-1!==t.indexOf("YAHOO.VideoPlatform.VideoPlayer")||-1!==t.indexOf("AdPlacement")?s.D4:-1!==t.indexOf("VAST")?s.G_:void 0}(t);c===s.D4?(o.mediaType=s.D4,o.ad=t.adm,o.meta.mediaType=s.D4):c===s.G_&&(o.mediaType=s.G_,o.meta.mediaType=s.G_,o.vastXml=t.adm,t.nurl&&(o.vastUrl=t.nurl)),"outstream"!==(0,d.A)(i,"mediaTypes.video.context")||i.renderer||(o.renderer=function(e,t){const i=p.A4.install({url:"https://s.yimg.com/kp/prebid-outstream-renderer/renderer.js",loaded:!1,adUnitCode:e.adUnitCode});try{i.setRender((function(t){setTimeout((function(){o2PlayerRender(t)}),(0,d.A)(e,"params.testing.renderer.setTimeout")||700)}))}catch(e){(0,n.logWarn)("Renderer error: setRender() failed",e)}return i}(i)||void 0),r.push(o)})),r},getUserSyncs:function(e,t,i,r,a){const s=!(0,n.isEmpty)(t)&&t[0].body;if(s&&s.ext&&s.ext.pixels){const t=function(e,t){let i=/(img|iframe)[\s\S]*?src\s*=\s*("|')(.*?)\2/gi,r=/\w*(?=\s)/,a=/src=("|')(.*?)\1/,s=[];if(t){let n=t.match(i);n&&n.forEach((t=>{let i=t.match(r)[0],n=t.match(a)[2];if(i&&n){let t="img"===i.toLowerCase()?"image":"iframe";if(!e.iframeEnabled&&"iframe"===t||!e.pixelEnabled&&"image"===t)return;s.push({type:t,url:n})}}))}return s}(e,s.ext.pixels);return t.forEach((e=>{e.url=function(e,t){const i={gdpr_consent:t.gdpr?t.gdpr.consentString:"",gdpr:t.gdpr&&t.gdpr.gdprApplies?"1":"0",us_privacy:t.uspConsent?t.uspConsent:"",gpp:t.gpp?t.gpp.gppString:"",gpp_sid:t.gpp&&Array.isArray(t.gpp.applicableSections)?t.gpp.applicableSections.join(","):""},r=new URL(e),a=r.searchParams;for(const[e,t]of Object.entries(i))a.set(e,t);return r.search=a.toString(),r.toString()}(e.url,{gpp:a,gdpr:i,uspConsent:r})})),t}return[]}};(0,a.a$)(S),(0,r.E)("yahooAdsBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return t=14975,e(e.s=t);var t}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[69380],{64668:(e,t,r)=>{var i=r(7873),n=r(91069),o=r(70433),s=r(63172),a=r(71371),d=r(57377),p=r(95789),c=r(15901);const u="USD",m=300,l=!0,f="https://prebid-outstream.yieldmo.com/bundle.js",g=["mimes","startdelay","placement","plcmt","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],y=["name","domain","cat","keywords"],b=(0,n.getWindowTop)(),h=2,v=0,A=["description","title","pr","page_url"],x={code:"yieldmo",supportedMediaTypes:[a.D4,a.G_],gvlid:173,isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(I(e)||w(e))&&function(e){if(!w(e))return!0;const t=(e,t,r)=>{let i=`"${e}" is required`;throw r&&(i+=" when "+r),new Error(i)},r=(e,t,r)=>{throw r=r?", expected: "+r:"",t=JSON.stringify(t),new Error(`"${e}"=${t} is invalid${r}`)},i=e=>void 0!==e,s=(t,r,i,n)=>{if(0===t.indexOf("video")){const s="params."+t,a="mediaTypes."+t,d=(0,o.A)(e,s),p=(0,o.A)(e,a),c=r(d),u=r(p);return c?d:u||(c?u||i(a,p,n):i(s,d,n),d||p)}{const s=(0,o.A)(e,t);return r(s)||i(t,s,n),s}};try{return s("video.context",(e=>!(0,n.isEmpty)(e)),t),s("params.placementId",(e=>!(0,n.isEmpty)(e)),t),s("video.playerSize",(e=>(0,n.isArrayOfNums)(e,2)||(0,n.isArray)(e)&&e.every((e=>(0,n.isArrayOfNums)(e,2)))),r,"array of 2 integers, ex: [640,480] or [[640,480]]"),s("video.mimes",(e=>i(e)),t),s("video.mimes",(e=>(0,n.isArray)(e)&&e.every((e=>(0,n.isStr)(e)))),r,'array of strings, ex: ["video/mp4"]'),s("video.protocols",(e=>i(e)),t),s("video.api",(e=>i(e)),t),s("video.api",(e=>(0,n.isArrayOfNums)(e)&&e.every((e=>e>=1&&e<=6))),r,"array of numbers, ex: [2,3]"),s("video.playbackmethod",(e=>!i(e)||(0,n.isArrayOfNums)(e)),r,"array of integers, ex: [2,6]"),s("video.maxduration",(e=>i(e)),t),s("video.maxduration",(e=>(0,n.isInteger)(e)),r),s("video.minduration",(e=>!i(e)||(0,n.isNumber)(e)),r),s("video.skippable",(e=>!i(e)||(0,n.isBoolean)(e)),r),s("video.skipafter",(e=>!i(e)||(0,n.isNumber)(e)),r),s("video.pos",(e=>!i(e)||(0,n.isNumber)(e)),r),s("params.badv",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["ford.com","pepsi.com"]'),s("params.bcat",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,n.logError)(e.message),!1}}(e))},buildRequests:function(e,t){const r=function(e){return!!e.refererInfo?.referer?.includes("pb_force_a")}(t),i=N("/exchange/prebid",r),d=N("/exchange/prebidvideo",r),p=e.filter((e=>I(e))),u=e.filter((e=>w(e)));let m=[];const l=function(e){if((0,o.A)(e,"userIdAsEids"))return e.userIdAsEids||[]}(e[0])||[],f=function(e){const t=(0,o.A)(e,"ortb2.user.data")||[],r=t.filter((e=>{const t=e.ext?.segtax;return t>=600&&t<=609}))[0];if(r){return{taxonomy:r.ext.segtax,classifier:r.ext.segclass,topics:Object.values(r.segment).map((e=>Number(e)))}}return null}(t),y=function(e){const t=(0,o.A)(e,"ortb2.device.ext.cdep")||null;return t}(t);if(p.length>0){let e={pbav:"9.6.0",p:[],page_url:t.refererInfo.page,bust:(new Date).getTime().toString(),dnt:"1"===window.doNotTrack||"1"===window.navigator.doNotTrack||!1,description:_(),tmax:t.timeout||400,userConsent:JSON.stringify({gdprApplies:(0,o.A)(t,"gdprConsent.gdprApplies")||"",cmp:(0,o.A)(t,"gdprConsent.consentString")||"",gpp:(0,o.A)(t,"gppConsent.gppString")||"",gpp_sid:(0,o.A)(t,"gppConsent.applicableSections")||[]}),us_privacy:(0,o.A)(t,"uspConsent")||""};f&&(e.topics=JSON.stringify(f));const r=k(t);r&&(e.gpc=r),y&&(e.cdep=y),function(){try{if((0,n.getWindowTop)().location.href)return!0}catch(e){return!1}}()&&(e.pr=b.document&&b.document.referrer||"",e.scrd=b.devicePixelRatio||0,e.title=b.document.title||"",e.w=b.innerWidth,e.h=b.innerHeight);const s=window.navigator.maxTouchPoints;s&&(e.mtp=s),p.forEach((t=>{e.p.push(function(e){const t=(0,o.A)(e,"ortb2Imp.ext.gpid")||(0,o.A)(e,"ortb2Imp.ext.data.pbadslot"),r={placement_id:e.adUnitCode,callback_id:e.bidId,sizes:e.mediaTypes.banner.sizes};if(e.params){e.params.placementId&&(r.ym_placement_id=e.params.placementId);const t=T(e,a.D4);t&&(r.bidFloor=t)}t&&(r.gpid=t);const i=(0,o.A)(e,"ortb2Imp.ext.tid");i&&(r.tid=i);e.auctionId&&(r.auctionId=e.auctionId);return JSON.stringify(r)}(t));const r=S(t,"pubcid");r?e.pubcid=r:t.crumbs&&t.crumbs.pubcid&&(e.pubcid=t.crumbs.pubcid);const i=S(t,"tdid");i&&(e.tdid=i);const n=S(t,"criteoId");n&&(e.cri_prebid=n),t.schain&&(e.schain=JSON.stringify(t.schain)),(0,o.A)(t,"params.lr_env")&&(e.ats_envelope=t.params.lr_env)})),e.p="["+e.p.toString()+"]",l.length&&(e.eids=JSON.stringify(l));let d=`${i}?${(0,n.parseQueryStringParameters)(e)}`.length-8e3;if(d>0)for(let t=0;t<A.length&&(d=E(d,e,A[t]),!(d<=0));t++);m.push({method:"GET",url:i,data:e})}if(u.length>0){const e=function(e,t){const r=e[0].schain;let i={id:e[0].bidderRequestId,tmax:t.timeout||400,at:1,imp:e.map((e=>function(e){const t=(0,o.A)(e,"ortb2Imp.ext.gpid")||(0,o.A)(e,"ortb2Imp.ext.data.pbadslot"),r=function(e){const t=(0,o.A)(e,"mediaTypes.video.playerSize");if((0,n.isArrayOfNums)(t,2))return t;if((0,n.isArray)(t)&&(0,n.isArrayOfNums)(t[0],2))return t[0];return null}(e),i={id:e.bidId,tagid:e.adUnitCode,bidfloor:T(e,a.G_),ext:{placement_id:e.params.placementId,tid:(0,o.A)(e,"ortb2Imp.ext.tid")},video:{w:r[0],h:r[1],linearity:1}},s=(0,o.A)(e,"mediaTypes.video",{});Object.keys(s).filter((e=>(0,c.mK)(g,e))).forEach((e=>i.video[e]=s[e]));const d=(0,o.A)(e,"params.video",{});Object.keys(d).filter((e=>(0,c.mK)(g,e))).forEach((e=>i.video[e]=d[e])),i.video.skippable&&(i.video.skip=1,delete i.video.skippable);1===i.video.plcmt&&1===i.video.placement||(i.video.startdelay=v,i.video.playbackmethod=[h]);t&&(i.ext.gpid=t);return i}(e))),site:O(e[0],t),device:(0,o.A)(t,"ortb2.device"),badv:e[0].params.badv||[],bcat:(0,o.A)(t,"bcat")||e[0].params.bcat||[],ext:{prebid:"9.6.0"},ats_envelope:e[0].params.lr_env};r&&(i.schain=r);const d=k(t);d&&(0,s.J)(i,"regs.ext.gpc",d);e[0].auctionId&&(i.auctionId=e[0].auctionId);return function(e,t){const r=t.gdprConsent,i=(0,o.A)(t,"gppConsent.gppString"),n=(0,o.A)(t,"gppConsent.applicableSections");i?(0,s.J)(e,"regs.ext.gpp",i):((0,s.J)(e,"regs.ext.gdpr",r&&r.gdprApplies?1:0),(0,s.J)(e,"user.ext.consent",r&&r.consentString?r.consentString:""));n&&n.length>0&&(0,s.J)(e,"regs.ext.gpp_sid",n);const a=(0,o.A)(t,"uspConsent");!i&&a&&(0,s.J)(e,"regs.ext.us_privacy",a)}(i,t),i}(u,t);f&&(e.topics=f),l.length&&(0,s.J)(e,"user.ext.eids",l),m.push({method:"POST",url:d,data:e})}return m},interpretResponse:function(e,t){let r=[];const i=e.body;if(i.length>0&&i.forEach((e=>{e.cpm>0&&r.push(function(e){return{dealId:e.publisherDealId,requestId:e.callback_id,cpm:e.cpm,width:e.width,height:e.height,creativeId:e.creative_id,currency:u,netRevenue:l,ttl:300,ad:e.ad,meta:{advertiserDomains:e.adomain||[],mediaType:a.D4}}}(e))})),i.seatbid){i.seatbid.reduce(((e,t)=>e.concat(t.bid)),[]).forEach((e=>r.push(function(e,t){const r=(0,c.I6)((0,o.A)(t,"data.imp")||[],(t=>t.id===e.impid));let i={dealId:e.dealid,requestId:r.id,cpm:e.price,width:r.video.w,height:r.video.h,creativeId:e.crid||e.adid,currency:u,netRevenue:l,mediaType:a.G_,ttl:m,vastXml:e.adm,meta:{advertiserDomains:e.adomain||[],mediaType:a.G_}};if(r.video.plcmt&&1!==r.video.plcmt){const e=p.A4.install({url:f,config:{width:i.width,height:i.height,vastTimeout:15e3,maxAllowedVastTagRedirects:5,allowVpaid:!0,autoPlay:!0,preload:!0,mute:!0},id:r.tagid,loaded:!1});e.setRender((function(e){e.renderer.push((()=>{const{id:t,config:r}=e.renderer;window.YMoutstreamPlayer(e,t,r)}))})),i.renderer=e}return i}(e,t))))}return r},getUserSyncs:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const n=[],o="&gdpr="+(r.gdprApplies?1:0),s=`&gdpr_consent=${encodeURIComponent(r.consentString||"")}`,a=`https://ads.yieldmo.com/pbcas?${`us_privacy=${encodeURIComponent(i)}`}${o}${s}`;return e.iframeEnabled?n.push({type:"iframe",url:a+"&type=iframe"}):e.pixelEnabled&&n.push({type:"image",url:a+"&type=image"}),n}};function I(e){return!!(0,o.A)(e,"mediaTypes.banner")}function w(e){return!!(0,o.A)(e,"mediaTypes.video")}function _(){return document.querySelector('meta[name="description"]')&&document.querySelector('meta[name="description"]').getAttribute("content")||""}function S(e,t){return"object"==typeof(0,o.A)(e,"userId")?e.userId[t]:void 0}function k(e){return(0,o.A)(e,"ortb2.regs.ext.gpc")}function T(e,t){let r={};return"function"==typeof e.getFloor&&(r=e.getFloor({currency:u,mediaType:t,size:"*"})),r.floor||e.params.bidfloor||e.params.bidFloor||0}function O(e,t){let r={};const i=(0,n.parseUrl)((0,o.A)(t,"refererInfo.page"));(0,n.isEmpty)(i)||(r.page=`${i.protocol}://${i.hostname}${i.pathname}`),t.refererInfo?.ref&&(r.ref=t.refererInfo.ref);const s=document.getElementsByTagName("meta").keywords;s&&s.content&&(r.keywords=s.content);const a=(0,o.A)(e,"params.site");return a&&Object.keys(a).filter((e=>(0,c.mK)(y,e))).forEach((e=>r[e]=a[e])),r}function E(e,t,r){if(t[r].length>e)return t[r]=t[r].substring(0,t[r].length-e),0;const i=e-t[r].length;return t[r]="",i}function N(e,t){return`${t?"https://ads-stg.yieldmo.com":"https://ads.yieldmo.com"}${e}`}(0,d.a$)(x),(0,i.E)("yieldmoBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return t=64668,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[69380],{64668:(e,t,r)=>{var i=r(7873),n=r(91069),o=r(70433),s=r(63172),a=r(71371),d=r(57377),p=r(95789),c=r(15901);const u="USD",m=300,l=!0,f="https://prebid-outstream.yieldmo.com/bundle.js",g=["mimes","startdelay","placement","plcmt","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],y=["name","domain","cat","keywords"],b=(0,n.getWindowTop)(),h=2,v=0,A=["description","title","pr","page_url"],x={code:"yieldmo",supportedMediaTypes:[a.D4,a.G_],gvlid:173,isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(I(e)||w(e))&&function(e){if(!w(e))return!0;const t=(e,t,r)=>{let i=`"${e}" is required`;throw r&&(i+=" when "+r),new Error(i)},r=(e,t,r)=>{throw r=r?", expected: "+r:"",t=JSON.stringify(t),new Error(`"${e}"=${t} is invalid${r}`)},i=e=>void 0!==e,s=(t,r,i,n)=>{if(0===t.indexOf("video")){const s="params."+t,a="mediaTypes."+t,d=(0,o.A)(e,s),p=(0,o.A)(e,a),c=r(d),u=r(p);return c?d:u||(c?u||i(a,p,n):i(s,d,n),d||p)}{const s=(0,o.A)(e,t);return r(s)||i(t,s,n),s}};try{return s("video.context",(e=>!(0,n.isEmpty)(e)),t),s("params.placementId",(e=>!(0,n.isEmpty)(e)),t),s("video.playerSize",(e=>(0,n.isArrayOfNums)(e,2)||(0,n.isArray)(e)&&e.every((e=>(0,n.isArrayOfNums)(e,2)))),r,"array of 2 integers, ex: [640,480] or [[640,480]]"),s("video.mimes",(e=>i(e)),t),s("video.mimes",(e=>(0,n.isArray)(e)&&e.every((e=>(0,n.isStr)(e)))),r,'array of strings, ex: ["video/mp4"]'),s("video.protocols",(e=>i(e)),t),s("video.api",(e=>i(e)),t),s("video.api",(e=>(0,n.isArrayOfNums)(e)&&e.every((e=>e>=1&&e<=6))),r,"array of numbers, ex: [2,3]"),s("video.playbackmethod",(e=>!i(e)||(0,n.isArrayOfNums)(e)),r,"array of integers, ex: [2,6]"),s("video.maxduration",(e=>i(e)),t),s("video.maxduration",(e=>(0,n.isInteger)(e)),r),s("video.minduration",(e=>!i(e)||(0,n.isNumber)(e)),r),s("video.skippable",(e=>!i(e)||(0,n.isBoolean)(e)),r),s("video.skipafter",(e=>!i(e)||(0,n.isNumber)(e)),r),s("video.pos",(e=>!i(e)||(0,n.isNumber)(e)),r),s("params.badv",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["ford.com","pepsi.com"]'),s("params.bcat",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,n.logError)(e.message),!1}}(e))},buildRequests:function(e,t){const r=function(e){return!!e.refererInfo?.referer?.includes("pb_force_a")}(t),i=N("/exchange/prebid",r),d=N("/exchange/prebidvideo",r),p=e.filter((e=>I(e))),u=e.filter((e=>w(e)));let m=[];const l=function(e){if((0,o.A)(e,"userIdAsEids"))return e.userIdAsEids||[]}(e[0])||[],f=function(e){const t=(0,o.A)(e,"ortb2.user.data")||[],r=t.filter((e=>{const t=e.ext?.segtax;return t>=600&&t<=609}))[0];if(r){return{taxonomy:r.ext.segtax,classifier:r.ext.segclass,topics:Object.values(r.segment).map((e=>Number(e)))}}return null}(t),y=function(e){const t=(0,o.A)(e,"ortb2.device.ext.cdep")||null;return t}(t);if(p.length>0){let e={pbav:"9.8.0",p:[],page_url:t.refererInfo.page,bust:(new Date).getTime().toString(),dnt:"1"===window.doNotTrack||"1"===window.navigator.doNotTrack||!1,description:_(),tmax:t.timeout||400,userConsent:JSON.stringify({gdprApplies:(0,o.A)(t,"gdprConsent.gdprApplies")||"",cmp:(0,o.A)(t,"gdprConsent.consentString")||"",gpp:(0,o.A)(t,"gppConsent.gppString")||"",gpp_sid:(0,o.A)(t,"gppConsent.applicableSections")||[]}),us_privacy:(0,o.A)(t,"uspConsent")||""};f&&(e.topics=JSON.stringify(f));const r=k(t);r&&(e.gpc=r),y&&(e.cdep=y),function(){try{if((0,n.getWindowTop)().location.href)return!0}catch(e){return!1}}()&&(e.pr=b.document&&b.document.referrer||"",e.scrd=b.devicePixelRatio||0,e.title=b.document.title||"",e.w=b.innerWidth,e.h=b.innerHeight);const s=window.navigator.maxTouchPoints;s&&(e.mtp=s),p.forEach((t=>{e.p.push(function(e){const t=(0,o.A)(e,"ortb2Imp.ext.gpid")||(0,o.A)(e,"ortb2Imp.ext.data.pbadslot"),r={placement_id:e.adUnitCode,callback_id:e.bidId,sizes:e.mediaTypes.banner.sizes};if(e.params){e.params.placementId&&(r.ym_placement_id=e.params.placementId);const t=T(e,a.D4);t&&(r.bidFloor=t)}t&&(r.gpid=t);const i=(0,o.A)(e,"ortb2Imp.ext.tid");i&&(r.tid=i);e.auctionId&&(r.auctionId=e.auctionId);return JSON.stringify(r)}(t));const r=S(t,"pubcid");r?e.pubcid=r:t.crumbs&&t.crumbs.pubcid&&(e.pubcid=t.crumbs.pubcid);const i=S(t,"tdid");i&&(e.tdid=i);const n=S(t,"criteoId");n&&(e.cri_prebid=n),t.schain&&(e.schain=JSON.stringify(t.schain)),(0,o.A)(t,"params.lr_env")&&(e.ats_envelope=t.params.lr_env)})),e.p="["+e.p.toString()+"]",l.length&&(e.eids=JSON.stringify(l));let d=`${i}?${(0,n.parseQueryStringParameters)(e)}`.length-8e3;if(d>0)for(let t=0;t<A.length&&(d=E(d,e,A[t]),!(d<=0));t++);m.push({method:"GET",url:i,data:e})}if(u.length>0){const e=function(e,t){const r=e[0].schain;let i={id:e[0].bidderRequestId,tmax:t.timeout||400,at:1,imp:e.map((e=>function(e){const t=(0,o.A)(e,"ortb2Imp.ext.gpid")||(0,o.A)(e,"ortb2Imp.ext.data.pbadslot"),r=function(e){const t=(0,o.A)(e,"mediaTypes.video.playerSize");if((0,n.isArrayOfNums)(t,2))return t;if((0,n.isArray)(t)&&(0,n.isArrayOfNums)(t[0],2))return t[0];return null}(e),i={id:e.bidId,tagid:e.adUnitCode,bidfloor:T(e,a.G_),ext:{placement_id:e.params.placementId,tid:(0,o.A)(e,"ortb2Imp.ext.tid")},video:{w:r[0],h:r[1],linearity:1}},s=(0,o.A)(e,"mediaTypes.video",{});Object.keys(s).filter((e=>(0,c.mK)(g,e))).forEach((e=>i.video[e]=s[e]));const d=(0,o.A)(e,"params.video",{});Object.keys(d).filter((e=>(0,c.mK)(g,e))).forEach((e=>i.video[e]=d[e])),i.video.skippable&&(i.video.skip=1,delete i.video.skippable);1===i.video.plcmt&&1===i.video.placement||(i.video.startdelay=v,i.video.playbackmethod=[h]);t&&(i.ext.gpid=t);return i}(e))),site:O(e[0],t),device:(0,o.A)(t,"ortb2.device"),badv:e[0].params.badv||[],bcat:(0,o.A)(t,"bcat")||e[0].params.bcat||[],ext:{prebid:"9.8.0"},ats_envelope:e[0].params.lr_env};r&&(i.schain=r);const d=k(t);d&&(0,s.J)(i,"regs.ext.gpc",d);e[0].auctionId&&(i.auctionId=e[0].auctionId);return function(e,t){const r=t.gdprConsent,i=(0,o.A)(t,"gppConsent.gppString"),n=(0,o.A)(t,"gppConsent.applicableSections");i?(0,s.J)(e,"regs.ext.gpp",i):((0,s.J)(e,"regs.ext.gdpr",r&&r.gdprApplies?1:0),(0,s.J)(e,"user.ext.consent",r&&r.consentString?r.consentString:""));n&&n.length>0&&(0,s.J)(e,"regs.ext.gpp_sid",n);const a=(0,o.A)(t,"uspConsent");!i&&a&&(0,s.J)(e,"regs.ext.us_privacy",a)}(i,t),i}(u,t);f&&(e.topics=f),l.length&&(0,s.J)(e,"user.ext.eids",l),m.push({method:"POST",url:d,data:e})}return m},interpretResponse:function(e,t){let r=[];const i=e.body;if(i.length>0&&i.forEach((e=>{e.cpm>0&&r.push(function(e){return{dealId:e.publisherDealId,requestId:e.callback_id,cpm:e.cpm,width:e.width,height:e.height,creativeId:e.creative_id,currency:u,netRevenue:l,ttl:300,ad:e.ad,meta:{advertiserDomains:e.adomain||[],mediaType:a.D4}}}(e))})),i.seatbid){i.seatbid.reduce(((e,t)=>e.concat(t.bid)),[]).forEach((e=>r.push(function(e,t){const r=(0,c.I6)((0,o.A)(t,"data.imp")||[],(t=>t.id===e.impid));let i={dealId:e.dealid,requestId:r.id,cpm:e.price,width:r.video.w,height:r.video.h,creativeId:e.crid||e.adid,currency:u,netRevenue:l,mediaType:a.G_,ttl:m,vastXml:e.adm,meta:{advertiserDomains:e.adomain||[],mediaType:a.G_}};if(r.video.plcmt&&1!==r.video.plcmt){const e=p.A4.install({url:f,config:{width:i.width,height:i.height,vastTimeout:15e3,maxAllowedVastTagRedirects:5,allowVpaid:!0,autoPlay:!0,preload:!0,mute:!0},id:r.tagid,loaded:!1});e.setRender((function(e){e.renderer.push((()=>{const{id:t,config:r}=e.renderer;window.YMoutstreamPlayer(e,t,r)}))})),i.renderer=e}return i}(e,t))))}return r},getUserSyncs:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const n=[],o="&gdpr="+(r.gdprApplies?1:0),s=`&gdpr_consent=${encodeURIComponent(r.consentString||"")}`,a=`https://ads.yieldmo.com/pbcas?${`us_privacy=${encodeURIComponent(i)}`}${o}${s}`;return e.iframeEnabled?n.push({type:"iframe",url:a+"&type=iframe"}):e.pixelEnabled&&n.push({type:"image",url:a+"&type=image"}),n}};function I(e){return!!(0,o.A)(e,"mediaTypes.banner")}function w(e){return!!(0,o.A)(e,"mediaTypes.video")}function _(){return document.querySelector('meta[name="description"]')&&document.querySelector('meta[name="description"]').getAttribute("content")||""}function S(e,t){return"object"==typeof(0,o.A)(e,"userId")?e.userId[t]:void 0}function k(e){return(0,o.A)(e,"ortb2.regs.ext.gpc")}function T(e,t){let r={};return"function"==typeof e.getFloor&&(r=e.getFloor({currency:u,mediaType:t,size:"*"})),r.floor||e.params.bidfloor||e.params.bidFloor||0}function O(e,t){let r={};const i=(0,n.parseUrl)((0,o.A)(t,"refererInfo.page"));(0,n.isEmpty)(i)||(r.page=`${i.protocol}://${i.hostname}${i.pathname}`),t.refererInfo?.ref&&(r.ref=t.refererInfo.ref);const s=document.getElementsByTagName("meta").keywords;s&&s.content&&(r.keywords=s.content);const a=(0,o.A)(e,"params.site");return a&&Object.keys(a).filter((e=>(0,c.mK)(y,e))).forEach((e=>r[e]=a[e])),r}function E(e,t,r){if(t[r].length>e)return t[r]=t[r].substring(0,t[r].length-e),0;const i=e-t[r].length;return t[r]="",i}function N(e,t){return`${t?"https://ads-stg.yieldmo.com":"https://ads.yieldmo.com"}${e}`}(0,d.a$)(x),(0,i.E)("yieldmoBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return t=64668,e(e.s=t);var t}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[38743],{98059:(e,t,n)=>{var s=n(7873),i=n(91069),d=n(68044),a=n(88910),o=n(78969),r=n(11445),c=n(97779),g=n(67314);const l={},p={},b={},u={};u[o.qY.BID_ADJUSTMENT]=!0,u[o.qY.BIDDER_DONE]=!0,u[o.qY.AUCTION_END]=!0;let v="",f="https://pool.tsukiji.iponweb.net/hba",I="";function S(e,t){e.adUnitCode&&t[e.adUnitCode]&&(e.adUnitName=t[e.adUnitCode]),(0,i.isArray)(e.adUnits)&&e.adUnits.forEach((e=>{e.code&&t[e.code]&&(e.name=t[e.code])})),(0,i.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((e=>t[e]))),["bids","bidderRequests","bidsReceived","noBids"].forEach((n=>{!function(e,t){(0,i.isArray)(e)&&e.forEach((e=>{S(e,t)}))}(e[n],t)}))}const y=Object.assign((0,a.Ay)({analyticsType:"endpoint"}),{getUrl:()=>f,track(e){let{eventType:t,args:n={}}=e;if(t===o.qY.BID_REQUESTED){const e=`${n.bidderCode}_${n.auctionId}`;l[e]=(0,i.deepClone)(n),l[e].bids=[],n.bids.forEach((e=>{p[`${e.bidId}_${e.auctionId}`]=e}))}if(t===o.qY.BID_TIMEOUT&&(0,i.isArray)(n)){const e=y.eventsStorage,s={};n.forEach((n=>{const i=`${n.bidId}_${n.auctionId}`,d=`${n.bidder}_${n.auctionId}`;e[n.auctionId]||(e[n.auctionId]={events:[]}),(l[d]||s[n.bidder])&&p[i]&&(s[n.bidder]||(s[n.bidder]=l[d],e[n.auctionId].events.push({eventType:t,params:s[n.bidder]}),delete l[d]),s[n.bidder].bids.push(p[i]),delete p[i])}))}else if(v=n.auctionId||v,v){const e=y.eventsStorage;e[v]||(e[v]={events:[]});const s=n.refererInfo&&n.refererInfo.page;s&&b[v]!==s&&(b[v]=s);const i=Object.assign({},n);if(delete i.ad,i.bidsReceived&&(i.bidsReceived=i.bidsReceived.map((e=>{const t=Object.assign({},e);return delete t.ad,t}))),u[t]||e[v].events.push({eventType:t,params:i}),t===o.qY.AUCTION_END||t===o.qY.BID_WON){if(i.adServerTargeting=c.iS.getAllTargeting(g.n.getAdUnitCodes(),g.n.getBidsReceived()),y.eventsStorage[v]&&y.eventsStorage[v].events.length){y.eventsStorage[v].page={url:b[v]},y.eventsStorage[v].pubId=I,y.eventsStorage[v].wrapper_version="9.6.0";const e=function(){if(window.googletag&&window.googletag.pubads){const e=googletag.pubads();if(e&&e.getSlots){const t=e.getSlots();if(t&&t.length){const e={};return t.forEach((t=>{const n=t.getSlotElementId(),s=(t.getAdUnitPath()||"").split("/").pop();e[n]=s})),e}}}}();e&&y.eventsStorage[v].events.forEach((t=>{S(t.params,e)}))}y.sendStat(y.eventsStorage[v],v)}}},sendStat(e,t){e&&e.events&&e.events.length&&(delete y.eventsStorage[t],(0,d.RD)(f,{success:function(){},error:function(){}},JSON.stringify(e),{method:"POST"}))}});y.eventsStorage={},y.originEnableAnalytics=y.enableAnalytics,y.enableAnalytics=function(e){const t=e&&e.options;t&&("string"==typeof t.url&&(f=t.url),t.pubId&&(I=t.pubId.toString())),y.originEnableAnalytics(e)},r.Ay.registerAnalyticsAdapter({adapter:y,code:"yieldone"});(0,s.E)("yieldoneAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return t=98059,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[38743],{98059:(e,t,n)=>{var s=n(7873),i=n(91069),d=n(68044),a=n(88910),o=n(78969),r=n(11445),c=n(97779),g=n(67314);const l={},p={},b={},u={};u[o.qY.BID_ADJUSTMENT]=!0,u[o.qY.BIDDER_DONE]=!0,u[o.qY.AUCTION_END]=!0;let v="",f="https://pool.tsukiji.iponweb.net/hba",I="";function S(e,t){e.adUnitCode&&t[e.adUnitCode]&&(e.adUnitName=t[e.adUnitCode]),(0,i.isArray)(e.adUnits)&&e.adUnits.forEach((e=>{e.code&&t[e.code]&&(e.name=t[e.code])})),(0,i.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((e=>t[e]))),["bids","bidderRequests","bidsReceived","noBids"].forEach((n=>{!function(e,t){(0,i.isArray)(e)&&e.forEach((e=>{S(e,t)}))}(e[n],t)}))}const y=Object.assign((0,a.Ay)({analyticsType:"endpoint"}),{getUrl:()=>f,track(e){let{eventType:t,args:n={}}=e;if(t===o.qY.BID_REQUESTED){const e=`${n.bidderCode}_${n.auctionId}`;l[e]=(0,i.deepClone)(n),l[e].bids=[],n.bids.forEach((e=>{p[`${e.bidId}_${e.auctionId}`]=e}))}if(t===o.qY.BID_TIMEOUT&&(0,i.isArray)(n)){const e=y.eventsStorage,s={};n.forEach((n=>{const i=`${n.bidId}_${n.auctionId}`,d=`${n.bidder}_${n.auctionId}`;e[n.auctionId]||(e[n.auctionId]={events:[]}),(l[d]||s[n.bidder])&&p[i]&&(s[n.bidder]||(s[n.bidder]=l[d],e[n.auctionId].events.push({eventType:t,params:s[n.bidder]}),delete l[d]),s[n.bidder].bids.push(p[i]),delete p[i])}))}else if(v=n.auctionId||v,v){const e=y.eventsStorage;e[v]||(e[v]={events:[]});const s=n.refererInfo&&n.refererInfo.page;s&&b[v]!==s&&(b[v]=s);const i=Object.assign({},n);if(delete i.ad,i.bidsReceived&&(i.bidsReceived=i.bidsReceived.map((e=>{const t=Object.assign({},e);return delete t.ad,t}))),u[t]||e[v].events.push({eventType:t,params:i}),t===o.qY.AUCTION_END||t===o.qY.BID_WON){if(i.adServerTargeting=c.iS.getAllTargeting(g.n.getAdUnitCodes(),g.n.getBidsReceived()),y.eventsStorage[v]&&y.eventsStorage[v].events.length){y.eventsStorage[v].page={url:b[v]},y.eventsStorage[v].pubId=I,y.eventsStorage[v].wrapper_version="9.8.0";const e=function(){if(window.googletag&&window.googletag.pubads){const e=googletag.pubads();if(e&&e.getSlots){const t=e.getSlots();if(t&&t.length){const e={};return t.forEach((t=>{const n=t.getSlotElementId(),s=(t.getAdUnitPath()||"").split("/").pop();e[n]=s})),e}}}}();e&&y.eventsStorage[v].events.forEach((t=>{S(t.params,e)}))}y.sendStat(y.eventsStorage[v],v)}}},sendStat(e,t){e&&e.events&&e.events.length&&(delete y.eventsStorage[t],(0,d.RD)(f,{success:function(){},error:function(){}},JSON.stringify(e),{method:"POST"}))}});y.eventsStorage={},y.originEnableAnalytics=y.enableAnalytics,y.enableAnalytics=function(e){const t=e&&e.options;t&&("string"==typeof t.url&&(f=t.url),t.pubId&&(I=t.pubId.toString())),y.originEnableAnalytics(e)},r.Ay.registerAnalyticsAdapter({adapter:y,code:"yieldone"});(0,s.E)("yieldoneAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return t=98059,e(e.s=t);var t}));e.O()}]);
@@ -0,0 +1,106 @@
1
+ <html>
2
+
3
+ <head>
4
+ <meta http-equiv="delegate-ch" content="sec-ch-ua https://prebid.wurflcloud.com; sec-ch-ua-bitness https://prebid.wurflcloud.com; sec-ch-ua-arch https://prebid.wurflcloud.com; sec-ch-ua-model https://prebid.wurflcloud.com; sec-ch-ua-platform https://prebid.wurflcloud.com; sec-ch-ua-platform-version https://prebid.wurflcloud.com; sec-ch-ua-full-version https://prebid.wurflcloud.com; sec-ch-ua-full-version-list https://prebid.wurflcloud.com; sec-ch-ua-mobile https://prebid.wurflcloud.com">
5
+ <script async src="../../build/dev/prebid.js"></script>
6
+ <script async src="https://www.googletagservices.com/tag/js/gpt.js"></script>
7
+ <script>
8
+ var FAILSAFE_TIMEOUT = 3300;
9
+ var PREBID_TIMEOUT = 2000;
10
+
11
+ var adUnits = [
12
+ {
13
+ code: 'div-gpt-ad-1460505748561-0',
14
+ mediaTypes: {
15
+ banner: {
16
+ sizes: [[300, 250]],
17
+ }
18
+ },
19
+ sizes: [
20
+ [300, 250],
21
+ [728, 90]
22
+ ],
23
+ bids: [
24
+ {
25
+ bidder: 'appnexus',
26
+ params: {
27
+ placementId: 13144370
28
+ }
29
+ },
30
+ ]
31
+
32
+ }];
33
+
34
+ var pbjs = pbjs || {};
35
+ pbjs.que = pbjs.que || [];
36
+ </script>
37
+
38
+ <script>
39
+ var googletag = googletag || {};
40
+ googletag.cmd = googletag.cmd || [];
41
+ googletag.cmd.push(function () {
42
+ googletag.pubads().disableInitialLoad();
43
+ });
44
+
45
+ pbjs.que.push(function () {
46
+ // configure the WURFL RTD module
47
+ pbjs.setConfig({
48
+ debug: true, // enabled for testing purposes
49
+ realTimeData: {
50
+ auctionDelay: 2000,
51
+ dataProviders: [
52
+ // WURFL RTD module configuration
53
+ {
54
+ name: 'wurfl',
55
+ waitForIt: true
56
+ },
57
+ ]
58
+ }
59
+ });
60
+
61
+ pbjs.addAdUnits(adUnits);
62
+
63
+ pbjs.requestBids({
64
+ bidsBackHandler: sendAdserverRequest,
65
+ timeout: PREBID_TIMEOUT
66
+ });
67
+ });
68
+
69
+ function sendAdserverRequest() {
70
+ if (pbjs.adserverRequestSent) return;
71
+ pbjs.adserverRequestSent = true;
72
+ googletag.cmd.push(function () {
73
+ pbjs.que.push(function () {
74
+ pbjs.setTargetingForGPTAsync();
75
+ googletag.pubads().refresh();
76
+ });
77
+ });
78
+ }
79
+
80
+ setTimeout(function () {
81
+ sendAdserverRequest();
82
+ }, FAILSAFE_TIMEOUT);
83
+
84
+ </script>
85
+
86
+ <script>
87
+ googletag.cmd.push(function () {
88
+ googletag.defineSlot('/19968336/header-bid-tag-0', [[300, 250], [300, 600]], 'div-gpt-ad-1460505748561-0').addService(googletag.pubads());
89
+
90
+ googletag.pubads().enableSingleRequest();
91
+ googletag.enableServices();
92
+ });
93
+ </script>
94
+ </head>
95
+
96
+ <body>
97
+ <h2>Prebid.js Test</h2>
98
+ <h5>Div-1</h5>
99
+ <div id='div-gpt-ad-1460505748561-0'>
100
+ <script type='text/javascript'>
101
+ googletag.cmd.push(function () { googletag.display('div-gpt-ad-1460505748561-0'); });
102
+ </script>
103
+ </div>
104
+ </body>
105
+
106
+ </html>
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Returns the type of connection.
3
+ *
4
+ * @returns {number} - Type of connection.
5
+ */
6
+ export function getConnectionType() {
7
+ const connection = navigator.connection || navigator.webkitConnection;
8
+ if (!connection) {
9
+ return 0;
10
+ }
11
+ switch (connection.type) {
12
+ case 'ethernet':
13
+ return 1;
14
+ case 'wifi':
15
+ return 2;
16
+ case 'wimax':
17
+ return 6;
18
+ default:
19
+ switch (connection.effectiveType) {
20
+ case 'slow-2g':
21
+ case '2g':
22
+ return 4;
23
+ case '3g':
24
+ return 5;
25
+ case '4g':
26
+ return 6;
27
+ case '5g':
28
+ return 7;
29
+ default:
30
+ return connection.type == 'cellular' ? 3 : 0;
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,73 @@
1
+ import {
2
+ isPlainObject,
3
+ isArray,
4
+ isStr,
5
+ isNumber,
6
+ } from '../../src/utils.js';
7
+ import { config } from '../../src/config.js';
8
+ import { USERSYNC_DEFAULT_CONFIG } from '../../src/userSync.js';
9
+
10
+ const PIXEL_SYNC_URL = 'https://cm.mgid.com/i.gif';
11
+ const IFRAME_SYNC_URL = 'https://cm.mgid.com/i.html';
12
+
13
+ export function getUserSyncs(syncOptions, serverResponses, gdprConsent, uspConsent, gppConsent) {
14
+ const spb = isPlainObject(config.getConfig('userSync')) &&
15
+ isNumber(config.getConfig('userSync').syncsPerBidder)
16
+ ? config.getConfig('userSync').syncsPerBidder : USERSYNC_DEFAULT_CONFIG.syncsPerBidder;
17
+
18
+ if (spb > 0 && isPlainObject(syncOptions) && (syncOptions.iframeEnabled || syncOptions.pixelEnabled)) {
19
+ let pixels = [];
20
+ if (serverResponses &&
21
+ isArray(serverResponses) &&
22
+ serverResponses.length > 0 &&
23
+ isPlainObject(serverResponses[0].body) &&
24
+ isPlainObject(serverResponses[0].body.ext) &&
25
+ isArray(serverResponses[0].body.ext.cm) &&
26
+ serverResponses[0].body.ext.cm.length > 0) {
27
+ pixels = serverResponses[0].body.ext.cm;
28
+ }
29
+
30
+ const syncs = [];
31
+ const query = [];
32
+ query.push('cbuster={cbuster}');
33
+ query.push('gdpr_consent=' + encodeURIComponent(isPlainObject(gdprConsent) && isStr(gdprConsent?.consentString) ? gdprConsent.consentString : ''));
34
+ if (isPlainObject(gdprConsent) && typeof gdprConsent?.gdprApplies === 'boolean' && gdprConsent.gdprApplies) {
35
+ query.push('gdpr=1');
36
+ } else {
37
+ query.push('gdpr=0');
38
+ }
39
+ if (isPlainObject(uspConsent) && uspConsent?.consentString) {
40
+ query.push(`us_privacy=${encodeURIComponent(uspConsent?.consentString)}`);
41
+ }
42
+ if (isPlainObject(gppConsent) && gppConsent?.gppString) {
43
+ query.push(`gppString=${encodeURIComponent(gppConsent?.gppString)}`);
44
+ }
45
+ if (config.getConfig('coppa')) {
46
+ query.push('coppa=1')
47
+ }
48
+ const q = query.join('&')
49
+ if (syncOptions.iframeEnabled) {
50
+ syncs.push({
51
+ type: 'iframe',
52
+ url: IFRAME_SYNC_URL + '?' + q.replace('{cbuster}', Math.round(new Date().getTime()))
53
+ });
54
+ } else if (syncOptions.pixelEnabled) {
55
+ if (pixels.length === 0) {
56
+ for (let i = 0; i < spb; i++) {
57
+ syncs.push({
58
+ type: 'image',
59
+ url: PIXEL_SYNC_URL + '?' + q.replace('{cbuster}', Math.round(new Date().getTime())) // randomly selects partner if sync required
60
+ });
61
+ }
62
+ } else {
63
+ for (let i = 0; i < spb && i < pixels.length; i++) {
64
+ syncs.push({
65
+ type: 'image',
66
+ url: pixels[i] + (pixels[i].indexOf('?') > 0 ? '&' : '?') + q.replace('{cbuster}', Math.round(new Date().getTime()))
67
+ });
68
+ }
69
+ }
70
+ }
71
+ return syncs;
72
+ }
73
+ }
@@ -26,4 +26,4 @@ export function getDM(win = window) {
26
26
  dm = undefined;
27
27
  }
28
28
  return dm;
29
- };
29
+ }
@@ -1,30 +1,7 @@
1
1
  import {deepAccess, isEmpty, logWarn, mergeDeep, sizesToSizeTuples, sizeTupleToRtbSize} from '../../../src/utils.js';
2
2
  import {VIDEO} from '../../../src/mediaTypes.js';
3
3
 
4
- // parameters that share the same name & semantics between pbjs adUnits and imp.video
5
- const ORTB_VIDEO_PARAMS = new Set([
6
- 'pos',
7
- 'placement',
8
- 'plcmt',
9
- 'api',
10
- 'mimes',
11
- 'protocols',
12
- 'playbackmethod',
13
- 'minduration',
14
- 'maxduration',
15
- 'w',
16
- 'h',
17
- 'startdelay',
18
- 'placement',
19
- 'linearity',
20
- 'skip',
21
- 'skipmin',
22
- 'skipafter',
23
- 'minbitrate',
24
- 'maxbitrate',
25
- 'delivery',
26
- 'playbackend'
27
- ]);
4
+ import {ORTB_VIDEO_PARAMS} from '../../../src/video.js';
28
5
 
29
6
  export function fillVideoImp(imp, bidRequest, context) {
30
7
  if (context.mediaType && context.mediaType !== VIDEO) return;
@@ -32,6 +9,7 @@ export function fillVideoImp(imp, bidRequest, context) {
32
9
  const videoParams = deepAccess(bidRequest, 'mediaTypes.video');
33
10
  if (!isEmpty(videoParams)) {
34
11
  const video = Object.fromEntries(
12
+ // Parameters that share the same name & semantics between pbjs adUnits and imp.video
35
13
  Object.entries(videoParams)
36
14
  .filter(([name]) => ORTB_VIDEO_PARAMS.has(name))
37
15
  );
@@ -123,7 +123,7 @@ export function generateBidParameters(bid, bidderRequest) {
123
123
  sizes: sizesArray,
124
124
  floorPrice: Math.max(getFloor(bid, mediaType), params.floorPrice),
125
125
  bidId: getBidIdParameter('bidId', bid),
126
- loop: getBidIdParameter('bidderRequestsCount', bid),
126
+ loop: bid.bidderRequestsCount || 0,
127
127
  bidderRequestId: getBidIdParameter('bidderRequestId', bid),
128
128
  transactionId: bid.ortb2Imp?.ext?.tid || '',
129
129
  coppa: 0,
@@ -324,6 +324,7 @@ export function generateGeneralParams(generalObject, bidderRequest, adapterVersi
324
324
  if (bidderRequest && bidderRequest.refererInfo) {
325
325
  generalParams.referrer = deepAccess(bidderRequest, 'refererInfo.ref');
326
326
  generalParams.page_url = deepAccess(bidderRequest, 'refererInfo.page') || deepAccess(window, 'location.href');
327
+ generalParams.site_domain = deepAccess(bidderRequest, 'refererInfo.domain') || deepAccess(window, 'location.hostname');
327
328
  }
328
329
 
329
330
  return generalParams;
@@ -324,6 +324,22 @@ export function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidder
324
324
  }
325
325
  }
326
326
 
327
+ const api = deepAccess(mediaTypes, 'video.api', []);
328
+ if (api.includes(7)) {
329
+ const sourceExt = deepAccess(bidderRequest, 'ortb2.source.ext');
330
+ if (sourceExt?.omidpv) {
331
+ data.omidpv = sourceExt.omidpv;
332
+ }
333
+ if (sourceExt?.omidpn) {
334
+ data.omidpn = sourceExt.omidpn;
335
+ }
336
+ }
337
+
338
+ const dsa = deepAccess(bidderRequest, 'ortb2.regs.ext.dsa');
339
+ if (dsa) {
340
+ data.dsa = dsa;
341
+ }
342
+
327
343
  _each(ext, (value, key) => {
328
344
  data['ext.' + key] = value;
329
345
  });
@@ -87,6 +87,7 @@
87
87
  "jwplayerRtdProvider",
88
88
  "medianetRtdProvider",
89
89
  "mgidRtdProvider",
90
+ "mobianRtdProvider",
90
91
  "neuwoRtdProvider",
91
92
  "oneKeyRtdProvider",
92
93
  "optimeraRtdProvider",
@@ -99,7 +100,8 @@
99
100
  "sirdataRtdProvider",
100
101
  "symitriDapRtdProvider",
101
102
  "timeoutRtdProvider",
102
- "weboramaRtdProvider"
103
+ "weboramaRtdProvider",
104
+ "wurflRtdProvider"
103
105
  ],
104
106
  "fpdModule": [
105
107
  "validationFpdModule",
@@ -35,7 +35,9 @@ gulp build --modules="rtdModule,51DegreesRtdProvider,appnexusBidAdapter,..."
35
35
  ### Prerequisites
36
36
 
37
37
  #### Resource Key
38
- In order to use the module please first obtain a Resource Key using the [Configurator tool](https://configure.51degrees.com/tWrhNfY6) - choose the following properties:
38
+
39
+ In order to use the module please first obtain a Resource Key using the [Configurator tool](https://configure.51degrees.com/HNZ75HT1) - choose the following properties:
40
+
39
41
  * DeviceId
40
42
  * DeviceType
41
43
  * HardwareVendor
@@ -45,11 +47,13 @@ In order to use the module please first obtain a Resource Key using the [Configu
45
47
  * PlatformVersion
46
48
  * ScreenPixelsHeight
47
49
  * ScreenPixelsWidth
50
+ * ScreenPixelsPhysicalHeight
51
+ * ScreenPixelsPhysicalWidth
48
52
  * ScreenInchesHeight
49
53
  * ScreenInchesWidth
50
- * PixelRatio (optional)
54
+ * PixelRatio
51
55
 
52
- PixelRatio is desirable, but it's a paid property requiring a paid license. Free API service is limited. Please check [51Degrees pricing](https://51degrees.com/pricing) to choose a plan that suits your needs.
56
+ The Cloud API is **free** to integrate and use. To increase limits please check [51Degrees pricing](https://51degrees.com/pricing).
53
57
 
54
58
  #### User Agent Client Hint (UA-CH) Permissions
55
59
 
@@ -89,20 +93,20 @@ In summary we recommend using `Delegate-CH` http-equiv as the preferred method o
89
93
 
90
94
  ### Configuration
91
95
 
92
- This module is configured as part of the `realTimeData.dataProviders`
96
+ This module is configured as part of the `realTimeData.dataProviders`. We recommend setting `auctionDelay` to at least 250 ms and make sure `waitForIt` is set to `true` for the `51Degrees` RTD provider.
93
97
 
94
98
  ```javascript
95
99
  pbjs.setConfig({
96
- debug: true, // turn on for testing, remove in production
100
+ debug: false, // turn on for testing, remove in production
97
101
  realTimeData: {
98
- auctionDelay: 1000, // should be set lower in production use
102
+ auctionDelay: 250,
99
103
  dataProviders: [
100
104
  {
101
105
  name: '51Degrees',
102
106
  waitForIt: true, // should be true, otherwise the auctionDelay will be ignored
103
107
  params: {
104
- // Get your resource key from https://configure.51degrees.com/tWrhNfY6 to connect to cloud.51degrees.com
105
108
  resourceKey: '<YOUR_RESOURCE_KEY>',
109
+ // Get your resource key from https://configure.51degrees.com/HNZ75HT1
106
110
  // alternatively, you can use the on-premise version of the 51Degrees service and connect to your chosen end point
107
111
  // onPremiseJSUrl: 'https://localhost/51Degrees.core.js'
108
112
  },
@@ -8,9 +8,7 @@ import {
8
8
  getDNT,
9
9
  getWindowSelf,
10
10
  isArray,
11
- isArrayOfNums,
12
11
  isFn,
13
- isInteger,
14
12
  isNumber,
15
13
  isStr,
16
14
  logError,
@@ -18,7 +16,7 @@ import {
18
16
  logWarn,
19
17
  } from '../src/utils.js';
20
18
  import { getRefererInfo, parseDomain } from '../src/refererDetection.js';
21
- import { OUTSTREAM } from '../src/video.js';
19
+ import { OUTSTREAM, validateOrtbVideoFields } from '../src/video.js';
22
20
  import { Renderer } from '../src/Renderer.js';
23
21
  import { _ADAGIO } from '../libraries/adagioUtils/adagioUtils.js';
24
22
  import { config } from '../src/config.js';
@@ -40,39 +38,6 @@ export const BB_RENDERER_URL = `https://${BB_PUBLICATION}.bbvms.com/r/$RENDERER.
40
38
 
41
39
  const CURRENCY = 'USD';
42
40
 
43
- // This provide a whitelist and a basic validation of OpenRTB 2.5 options used by the Adagio SSP.
44
- // Accept all options but 'protocol', 'companionad', 'companiontype', 'ext'
45
- // https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf
46
- export const ORTB_VIDEO_PARAMS = {
47
- 'mimes': (value) => Array.isArray(value) && value.length > 0 && value.every(v => typeof v === 'string'),
48
- 'minduration': (value) => isInteger(value),
49
- 'maxduration': (value) => isInteger(value),
50
- 'protocols': (value) => isArrayOfNums(value),
51
- 'w': (value) => isInteger(value),
52
- 'h': (value) => isInteger(value),
53
- 'startdelay': (value) => isInteger(value),
54
- 'placement': (value) => {
55
- logWarn(LOG_PREFIX, 'The OpenRTB video param `placement` is deprecated and should not be used anymore.');
56
- return isInteger(value)
57
- },
58
- 'plcmt': (value) => isInteger(value),
59
- 'linearity': (value) => isInteger(value),
60
- 'skip': (value) => [1, 0].includes(value),
61
- 'skipmin': (value) => isInteger(value),
62
- 'skipafter': (value) => isInteger(value),
63
- 'sequence': (value) => isInteger(value),
64
- 'battr': (value) => isArrayOfNums(value),
65
- 'maxextended': (value) => isInteger(value),
66
- 'minbitrate': (value) => isInteger(value),
67
- 'maxbitrate': (value) => isInteger(value),
68
- 'boxingallowed': (value) => isInteger(value),
69
- 'playbackmethod': (value) => isArrayOfNums(value),
70
- 'playbackend': (value) => isInteger(value),
71
- 'delivery': (value) => isArrayOfNums(value),
72
- 'pos': (value) => isInteger(value),
73
- 'api': (value) => isArrayOfNums(value)
74
- };
75
-
76
41
  /**
77
42
  * Returns the window.ADAGIO global object used to store Adagio data.
78
43
  * This object is created in window.top if possible, otherwise in window.self.
@@ -186,6 +151,12 @@ function _getEids(bidRequest) {
186
151
  }
187
152
  }
188
153
 
154
+ /**
155
+ * Merge and compute video params set at mediaTypes and bidder params level
156
+ *
157
+ * @param {object} bidRequest - copy of the original bidRequest object.
158
+ * @returns {void}
159
+ */
189
160
  function _buildVideoBidRequest(bidRequest) {
190
161
  const videoAdUnitParams = deepAccess(bidRequest, 'mediaTypes.video', {});
191
162
  const videoBidderParams = deepAccess(bidRequest, 'params.video', {});
@@ -206,22 +177,11 @@ function _buildVideoBidRequest(bidRequest) {
206
177
  };
207
178
 
208
179
  if (videoParams.context && videoParams.context === OUTSTREAM) {
209
- bidRequest.mediaTypes.video.playerName = getPlayerName(bidRequest);
180
+ videoParams.playerName = getPlayerName(bidRequest);
210
181
  }
211
182
 
212
- // Only whitelisted OpenRTB options need to be validated.
213
- // Other options will still remain in the `mediaTypes.video` object
214
- // sent in the ad-request, but will be ignored by the SSP.
215
- Object.keys(ORTB_VIDEO_PARAMS).forEach(paramName => {
216
- if (videoParams.hasOwnProperty(paramName)) {
217
- if (ORTB_VIDEO_PARAMS[paramName](videoParams[paramName])) {
218
- bidRequest.mediaTypes.video[paramName] = videoParams[paramName];
219
- } else {
220
- delete bidRequest.mediaTypes.video[paramName];
221
- logWarn(`${LOG_PREFIX} The OpenRTB video param ${paramName} has been skipped due to misformating. Please refer to OpenRTB 2.5 spec.`);
222
- }
223
- }
224
- });
183
+ bidRequest.mediaTypes.video = videoParams;
184
+ validateOrtbVideoFields(bidRequest);
225
185
  }
226
186
 
227
187
  function _parseNativeBidResponse(bid) {