-
-
Save lwwcas/6a37655fa026f75917797626c0ff9daa to your computer and use it in GitHub Desktop.
amp-ad-network-smartadserver-impl-01.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; | |
(self.AMP = self.AMP || []).push({ | |
m: 0, | |
v: "2203101844000", | |
n: "amp-ad", | |
ev: "0.1", | |
l: !0, | |
f: function(t, e) { | |
! function() { | |
function e(t, e) { | |
(null == e || e > t.length) && (e = t.length); | |
for (var r = 0, n = new Array(e); r < e; r++) n[r] = t[r]; | |
return n | |
} | |
function r(t, r) { | |
var n = "undefined" != typeof Symbol && t[Symbol.iterator] || t["@@iterator"]; | |
if (n) return (n = n.call(t)).next.bind(n); | |
if (Array.isArray(t) || (n = function(t, r) { | |
if (t) { | |
if ("string" == typeof t) return e(t, r); | |
var n = Object.prototype.toString.call(t).slice(8, -1); | |
return "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? e(t, r) : void 0 | |
} | |
}(t)) || r && t && "number" == typeof t.length) { | |
n && (t = n); | |
var i = 0; | |
return function() { | |
return i >= t.length ? { | |
done: !0 | |
} : { | |
done: !1, | |
value: t[i++] | |
} | |
} | |
} | |
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") | |
} | |
var n; | |
function i() { | |
return n || (n = Promise.resolve(void 0)) | |
} | |
var a = function() { | |
var t = this; | |
this.promise = new Promise((function(e, r) { | |
t.resolve = e, t.reject = r | |
})) | |
}; | |
function s(t, e) { | |
return (s = Object.setPrototypeOf || function(t, e) { | |
return t.__proto__ = e, t | |
})(t, e) | |
} | |
function o(t, e) { | |
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); | |
t.prototype = Object.create(e && e.prototype, { | |
constructor: { | |
value: t, | |
writable: !0, | |
configurable: !0 | |
} | |
}), e && s(t, e) | |
} | |
function c(t) { | |
return (c = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) { | |
return t.__proto__ || Object.getPrototypeOf(t) | |
})(t) | |
} | |
function p(t) { | |
return (p = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { | |
return typeof t | |
} : function(t) { | |
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t | |
})(t) | |
} | |
function d(t, e) { | |
if (e && ("object" === p(e) || "function" == typeof e)) return e; | |
if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); | |
return function(t) { | |
if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); | |
return t | |
}(t) | |
} | |
function u(t) { | |
var e = function() { | |
if ("undefined" == typeof Reflect || !Reflect.construct) return !1; | |
if (Reflect.construct.sham) return !1; | |
if ("function" == typeof Proxy) return !0; | |
try { | |
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), !0 | |
} catch (t) { | |
return !1 | |
} | |
}(); | |
return function() { | |
var r, n = c(t); | |
if (e) { | |
var i = c(this).constructor; | |
r = Reflect.construct(n, arguments, i) | |
} else r = n.apply(this, arguments); | |
return d(this, r) | |
} | |
} | |
var m, h = Object.prototype, | |
l = h.hasOwnProperty; | |
function f(t) { | |
var e = Object.create(null); | |
return t && Object.assign(e, t), e | |
} | |
function v(t, e) { | |
return l.call(t, e) | |
} | |
h.toString; | |
var g = Array.isArray; | |
function b(t) { | |
return JSON.parse(t) | |
} | |
function j(t, e) { | |
try { | |
return b(t) | |
} catch (t) { | |
return null == e || e(t), null | |
} | |
} | |
var y, w = JSON.parse('{"_ping_":{"renderStartImplemented":true,"clientIdScope":"_PING_","consentHandlingOverride":true},"1wo":{},"24smi":{"prefetch":"https://jsn.24smi.net/smi.js","preconnect":"https://data.24smi.net"},"a8":{"prefetch":"https://statics.a8.net/amp/ad.js","renderStartImplemented":true},"a9":{"prefetch":"https://z-na.amazon-adsystem.com/widgets/onejs?MarketPlace=US"},"accesstrade":{"prefetch":"https://h.accesstrade.net/js/amp/amp.js"},"adagio":{"prefetch":"https://js-ssl.neodatagroup.com/adagio_amp.js","preconnect":["https://ad-aws-it.neodatagroup.com","https://tracker.neodatagroup.com"],"renderStartImplemented":true},"adblade":{"prefetch":"https://web.adblade.com/js/ads/async/show.js","preconnect":["https://staticd.cdn.adblade.com","https://static.adblade.com"],"renderStartImplemented":true},"adbutler":{"prefetch":"https://servedbyadbutler.com/app.js"},"adform":{},"adfox":{"prefetch":"https://yandex.ru/ads/system/context.js","preconnect":["https://yastatic.net/"],"renderStartImplemented":true},"adgeneration":{"prefetch":"https://i.socdm.com/sdk/js/adg-script-loader.js"},"adglare":{"renderStartImplemented":true},"adhese":{"renderStartImplemented":true},"adincube":{"renderStartImplemented":true},"adition":{},"adman":{},"admanmedia":{"renderStartImplemented":true},"admixer":{"renderStartImplemented":true,"preconnect":["https://inv-nets.admixer.net","https://cdn.admixer.net"]},"adnuntius":{"prefetch":"https://cdn.adnuntius.com/adn.js","renderStartImplemented":true},"adocean":{"consentHandlingOverride":true},"adop":{},"adpicker":{"renderStartImplemented":true},"adplugg":{"prefetch":"https://www.adplugg.com/serve/js/ad.js","renderStartImplemented":true},"adpon":{"prefetch":"https://ad.adpon.jp/amp.js","clientIdScope":"AMP_ECID_ADPON"},"adpushup":{"prefetch":"https://securepubads.g.doubleclick.net/tag/js/gpt.js","preconnect":"https://cdn.adpushup.com"},"adreactor":{},"ads2bid":{"renderStartImplemented":true},"adsensor":{"prefetch":"https://wfpscripts.webspectator.com/amp/adsensor-amp.js","clientIdScope":"amp_ecid_adensor","renderStartImplemented":true},"adservsolutions":{},"adskeeper":{"renderStartImplemented":true,"preconnect":["https://jsc.adskeeper.com","https://servicer.adskeeper.com","https://s-img.adskeeper.com"]},"adsloom":{"clientIdScope":"AMP_ECID_ADSLOOM"},"adsnative":{"prefetch":"https://static.adsnative.com/static/js/render.v1.js","preconnect":"https://api.adsnative.com"},"adspeed":{"preconnect":"https://g.adspeed.net","renderStartImplemented":true},"adspirit":{},"adstir":{"prefetch":"https://js.ad-stir.com/js/adstir_async.js","preconnect":"https://ad.ad-stir.com"},"adstyle":{"prefetch":"https://widgets.ad.style/amp.js","preconnect":["https://w.ad.style"]},"adtech":{"prefetch":"https://s.aolcdn.com/os/ads/adsWrapper3.js","preconnect":["https://mads.at.atwola.com","https://aka-cdn.adtechus.com"]},"adtelligent":{"preconnect":["https://s.adtelligent.com"],"renderStartImplemented":true},"adthrive":{"prefetch":["https://www.googletagservices.com/tag/js/gpt.js"],"preconnect":["https://partner.googleadservices.com","https://securepubads.g.doubleclick.net","https://tpc.googlesyndication.com"],"renderStartImplemented":true},"adunity":{"preconnect":["https://content.adunity.com"],"renderStartImplemented":true},"aduptech":{"prefetch":"https://s.d.adup-tech.com/jsapi","preconnect":["https://d.adup-tech.com","https://m.adup-tech.com","https://v.adup-tech.com"],"renderStartImplemented":true,"consentHandlingOverride":true},"adventive":{"preconnect":["https://ads.adventive.com","https://amp.adventivedev.com"],"renderStartImplemented":true},"adverline":{"prefetch":"https://ads.adverline.com/richmedias/amp.js","preconnect":["https://adnext.fr"],"renderStartImplemented":true},"adverticum":{},"advertserve":{"renderStartImplemented":true},"adyoulike":{"consentHandlingOverride":true,"prefetch":"https://fo-static.omnitagjs.com/amp.js","renderStartImplemented":true},"adzerk":{},"affiliateb":{"prefetch":"https://track.affiliate-b.com/amp/a.js","renderStartImplemented":true},"aja":{"prefetch":["https://cdn.as.amanad.adtdp.com/sdk/asot-amp.js","https://cdn.as.amanad.adtdp.com/sdk/asot-v2.js"],"preconnect":["https://ad.as.amanad.adtdp.com"]},"appvador":{"prefetch":["https://cdn.apvdr.com/js/VastAdUnit.min.js","https://cdn.apvdr.com/js/VideoAd.min.js","https://cdn.apvdr.com/js/VideoAd3PAS.min.js","https://cdn.apvdr.com/js/VideoAdAutoPlay.min.js","https://cdn.apvdr.com/js/VideoAdNative.min.js"],"renderStartImplemented":true},"amoad":{"prefetch":["https://j.amoad.com/js/a.js","https://j.amoad.com/js/n.js"],"preconnect":["https://d.amoad.com","https://i.amoad.com","https://m.amoad.com","https://v.amoad.com"]},"amplified":{"preconnect":"https://srv.clickfuse.com","renderStartImplemented":true},"andbeyond":{"prefetch":"https://securepubads.g.doubleclick.net/tag/js/gpt.js","preconnect":"https://cdn.andbeyond.media"},"aniview":{"renderStartImplemented":true},"anyclip":{"prefetch":"https://player.anyclip.com/anyclip-widget/lre-widget/prod/v1/src/lre.js","preconnect":["https://trafficmanager.anyclip.com","https://lreprx-server.anyclip.com"],"renderStartImplemented":true},"appnexus":{"prefetch":"https://acdn.adnxs.com/ast/ast.js","preconnect":"https://ib.adnxs.com","renderStartImplemented":true},"atomx":{"prefetch":"https://s.ato.mx/p.js"},"avantisvideo":{"renderStartImplemented":true},"beaverads":{"renderStartImplemented":true},"beopinion":{"prefetch":"https://widget.beop.io/sdk.js","preconnect":["https://t.beop.io","https://s.beop.io","https://data.beop.io"],"renderStartImplemented":true},"bidtellect":{},"blade":{"prefetch":"https://sdk.streamrail.com/blade/sr.blade.js","renderStartImplemented":true},"brainy":{},"bringhub":{"renderStartImplemented":true,"preconnect":["https://static.bh-cdn.com","https://core-api.bringhub.io"]},"broadbandy":{"renderStartImplemented":true},"broadstreetads":{"prefetch":"https://cdn.broadstreetads.com/init-2.min.js","renderStartImplemented":true},"byplay":{},"caajainfeed":{"prefetch":["https://cdn.amanad.adtdp.com/sdk/ajaamp.js"],"preconnect":["https://ad.amanad.adtdp.com"]},"capirs":{"renderStartImplemented":true},"caprofitx":{"prefetch":["https://cdn.caprofitx.com/pfx.min.js","https://cdn.caprofitx.com/tags/amp/profitx_amp.js"],"preconnect":"https://ad.caprofitx.adtdp.com"},"cedato":{"renderStartImplemented":true},"chargeads":{},"colombia":{"prefetch":"https://static.clmbtech.com/ad/commons/js/colombia-amp.js"},"colombiafeed":{"prefetch":"https://static.clmbtech.com/c1e/static/themes/js/colombiafeed-amp.js"},"conative":{"renderStartImplemented":true},"connatix":{"renderStartImplemented":true},"contentad":{},"criteo":{"prefetch":"https://static.criteo.net/js/ld/publishertag.js","preconnect":"https://cas.criteo.com"},"csa":{"prefetch":"https://www.google.com/adsense/search/ads.js"},"dable":{"preconnect":["https://static.dable.io","https://api.dable.io","https://images.dable.io"],"renderStartImplemented":true},"dex":{"renderStartImplemented":true},"digiteka":{"renderStartImplemented":true},"directadvert":{"renderStartImplemented":true},"distroscale":{"preconnect":["https://c.jsrdn.com","https://s.jsrdn.com","https://i.jsrdn.com"],"renderStartImplemented":true},"dotandads":{"prefetch":"https://amp.ad.dotandad.com/dotandadsAmp.js","preconnect":"https://bal.ad.dotandad.com"},"dynad":{"preconnect":["https://t.dynad.net","https://tm.jsuol.com.br"]},"eadv":{"renderStartImplemented":true,"clientIdScope":"AMP_ECID_EADV","prefetch":["https://www.eadv.it/track/esr.min.js","https://www.eadv.it/track/ead.min.js"]},"empower":{"prefetch":"https://cdn.empower.net/sdk/amp-ad.min.js","renderStartImplemented":true},"engageya":{},"epeex":{},"eplanning":{"prefetch":"https://us.img.e-planning.net/layers/epl-amp.js"},"exco":{"renderStartImplemented":true},"ezoic":{"prefetch":["https://www.googletagservices.com/tag/js/gpt.js","https://g.ezoic.net/ezoic/ampad.js"],"clientIdScope":"AMP_ECID_EZOIC","consentHandlingOverride":true,"renderStartImplemented":true},"f1e":{"prefetch":"https://img.ak.impact-ad.jp/util/f1e_amp.min.js"},"f1h":{"preconnect":"https://img.ak.impact-ad.jp","renderStartImplemented":true},"fake":{},"fake-delayed":{"renderStartImplemented":true},"feedad":{"clientIdScope":"__fa_amp","prefetch":"https://web.feedad.com/sdk/feedad-async.js","renderStartImplemented":true,"fullWidthHeightRatio":1.7777777777777777,"consentHandlingOverride":true},"felmat":{"prefetch":"https://t.felmat.net/js/fmamp.js","renderStartImplemented":true},"finative":{},"firstimpression":{"prefetch":"https://ecdn.firstimpression.io/static/js/fiamp.js","preconnect":"https://cdn.firstimpression.io","renderStartImplemented":true,"consentHandlingOverride":true},"flite":{},"fluct":{"prefetch":["https://pdn.adingo.jp/p.js"],"preconnect":["https://cdn-fluct.sh.adingo.jp","https://sh.adingo.jp","https://i.adingo.jp"]},"forkmedia":{"renderStartImplemented":true},"freewheel":{"prefetch":"https://cdn.stickyadstv.com/prime-time/fw-amp.min.js","renderStartImplemented":true},"fusion":{"prefetch":"https://assets.adtomafusion.net/fusion/latest/fusion-amp.min.js"},"gecko":{},"genieessp":{"prefetch":"https://js.gsspcln.jp/l/amp.js"},"giraff":{"renderStartImplemented":true},"glomex":{"prefetch":"https://player.glomex.com/integration/1/amp-embed.js"},"gmossp":{"prefetch":"https://cdn.gmossp-sp.jp/ads/amp.js"},"gumgum":{"prefetch":"https://js.gumgum.com/slot.js","renderStartImplemented":true},"holder":{"prefetch":"https://i.holder.com.ua/js2/holder/ajax/ampv1.js","preconnect":"https://h.holder.com.ua","renderStartImplemented":true},"ibillboard":{},"idealmedia":{"renderStartImplemented":true,"preconnect":["https://jsc.idealmedia.io","https://servicer.idealmedia.io","https://s-img.idealmedia.io/"]},"imedia":{"prefetch":"https://i.imedia.cz/js/im3.js","renderStartImplemented":true},"imobile":{"prefetch":"https://spamp.i-mobile.co.jp/script/amp.js","preconnect":"https://spad.i-mobile.co.jp"},"imonomy":{"renderStartImplemented":true},"improvedigital":{},"industrybrains":{"prefetch":"https://web.industrybrains.com/js/ads/async/show.js","preconnect":["https://staticd.cdn.industrybrains.com","https://static.industrybrains.com"],"renderStartImplemented":true},"inmobi":{"prefetch":"https://cf.cdn.inmobi.com/ad/inmobi.secure.js","renderStartImplemented":true},"innity":{"prefetch":"https://cdn.innity.net/admanager.js","preconnect":"https://as.innity.com","renderStartImplemented":true},"insticator":{"preconnect":"https://d3lcz8vpax4lo2.cloudfront.net","renderStartImplemented":true},"insurads":{"prefetch":"https://securepubads.g.doubleclick.net/tag/js/gpt.js","preconnect":["https://tpc.googlesyndication.com","https://adservice.google.com","https://cdn.insurads.com","https://services.insurads.com","https://messaging.insurads.com"],"renderStartImplemented":true,"consentHandlingOverride":true},"invibes":{"prefetch":"https://k.r66net.com/GetAmpLink","renderStartImplemented":true,"consentHandlingOverride":true},"iprom":{"prefetch":"https://cdn.ipromcloud.com/ipromNS.js"},"ix":{"prefetch":["https://js-sec.indexww.com/apl/amp.js"],"preconnect":"https://as-sec.casalemedia.com","renderStartImplemented":true},"jubna":{},"kargo":{},"ketshwa":{},"kiosked":{"renderStartImplemented":true},"jixie":{"prefetch":["https://scripts.jixie.media/jxamp.min.js"],"clientIdScope":"__jxamp","clientIdCookieName":"_jx","renderStartImplemented":true},"kixer":{"prefetch":"https://cdn.kixer.com/ad/load.js","renderStartImplemented":true},"kuadio":{},"lentainform":{"renderStartImplemented":true,"preconnect":["https://jsc.lentainform.com","https://servicer.lentainform.com","https://s-img.lentainform.com"]},"ligatus":{"prefetch":"https://ssl.ligatus.com/render/ligrend.js","renderStartImplemented":true},"lockerdome":{"prefetch":"https://cdn2.lockerdomecdn.com/_js/amp.js","renderStartImplemented":true},"logly":{"preconnect":["https://l.logly.co.jp","https://cdn.logly.co.jp"],"renderStartImplemented":true},"loka":{"prefetch":"https://loka-cdn.akamaized.net/scene/amp.js","preconnect":["https://scene-front.lokaplatform.com","https://loka-materials.akamaized.net"],"renderStartImplemented":true},"luckyads":{"renderStartImplemented":true},"macaw":{"renderStartImplemented":true},"mads":{"prefetch":"https://eu2.madsone.com/js/tags.js"},"mantis-display":{"prefetch":"https://assets.mantisadnetwork.com/mantodea.min.js","preconnect":["https://mantodea.mantisadnetwork.com","https://res.cloudinary.com","https://resize.mantisadnetwork.com"]},"marfeel":{"prefetch":"https://securepubads.g.doubleclick.net/tag/js/gpt.js","preconnect":["https://live.mrf.io","https://tpc.googlesyndication.com","https://fastlane.rubiconproject.com","https://htlb.casalemedia.com","https://prg.smartadserver.com","https://ib.adnxs.com","https://bidder.criteo.com","https://marfeel-d.openx.net","https://ice.360yield.com","https://mbid.marfeelrev.com","https://adservice.google.com"],"consentHandlingOverride":true},"mantis-recommend":{"prefetch":"https://assets.mantisadnetwork.com/recommend.min.js","preconnect":["https://mantodea.mantisadnetwork.com","https://resize.mantisadnetwork.com"]},"mediaad":{},"medianet":{"preconnect":"https://contextual.media.net","renderStartImplemented":true},"mediavine":{"prefetch":"https://amp.mediavine.com/wrapper.min.js","preconnect":["https://partner.googleadservices.com","https://securepubads.g.doubleclick.net","https://tpc.googlesyndication.com"],"renderStartImplemented":true,"consentHandlingOverride":true},"medyanet":{"renderStartImplemented":true},"meg":{"renderStartImplemented":true},"mgid":{"renderStartImplemented":true,"preconnect":["https://jsc.mgid.com","https://servicer.mgid.com","https://s-img.mgid.com"]},"microad":{"prefetch":"https://j.microad.net/js/camp.js","preconnect":["https://s-rtb.send.microad.jp","https://s-rtb.send.microadinc.com","https://cache.send.microad.jp","https://cache.send.microadinc.com","https://deb.send.microad.jp"]},"miximedia":{"renderStartImplemented":true},"mixpo":{"prefetch":"https://cdn.mixpo.com/js/loader.js","preconnect":["https://player1.mixpo.com","https://player2.mixpo.com"]},"monetizer101":{"renderStartImplemented":true},"mox":{"prefetch":["https://ad.mox.tv/js/amp.min.js","https://ad.mox.tv/mox/mwayss_invocation.min.js"],"renderStartImplemented":true},"my6sense":{"renderStartImplemented":true},"myfinance":{"preconnect":["https://a.myfidevs.io","https://static.myfinance.com","https://www.myfinance.com"],"renderStartImplemented":true,"clientIdScope":"AMP_ECID_GOOGLE"},"myoffrz":{"renderStartImplemented":true},"mytarget":{"prefetch":"https://ad.mail.ru/static/ads-async.js","renderStartImplemented":true},"myua":{"renderStartImplemented":true},"mywidget":{"preconnect":"https://likemore-fe.go.mail.ru","prefetch":"https://likemore-go.imgsmail.ru/widget_amp.js","renderStartImplemented":true},"nativeroll":{"prefetch":"https://cdn01.nativeroll.tv/js/seedr-player.min.js"},"nativery":{"preconnect":"https://cdn.nativery.com"},"nativo":{"prefetch":"https://s.ntv.io/serve/load.js"},"navegg":{"renderStartImplemented":true},"nend":{"prefetch":"https://js1.nend.net/js/amp.js","preconnect":["https://output.nend.net","https://img1.nend.net"]},"netletix":{"preconnect":["https://call.netzathleten-media.de"],"renderStartImplemented":true},"noddus":{"prefetch":"https://noddus.com/amp_loader.js","renderStartImplemented":true},"nokta":{"prefetch":"https://static.virgul.com/theme/mockups/noktaamp/ampjs.js","renderStartImplemented":true},"nws":{},"oblivki":{"renderStartImplemented":true},"onead":{"prefetch":"https://ad-specs.guoshipartners.com/static/js/onead-amp.min.js","renderStartImplemented":true},"onnetwork":{"renderStartImplemented":true},"openadstream":{},"openx":{"prefetch":"https://www.googletagservices.com/tag/js/gpt.js","preconnect":["https://partner.googleadservices.com","https://securepubads.g.doubleclick.net","https://tpc.googlesyndication.com"],"renderStartImplemented":true},"opinary":{"renderStartImplemented":true},"outbrain":{"renderStartImplemented":true,"prefetch":"https://widgets.outbrain.com/widgetAMP/outbrainAMP.min.js","preconnect":["https://odb.outbrain.com"],"consentHandlingOverride":true},"pixels":{"prefetch":"https://cdn.adsfactor.net/amp/pixels-amp.min.js","clientIdCookieName":"__AF","renderStartImplemented":true},"playstream":{"prefetch":"https://app.playstream.media/js/amp.js","renderStartImplemented":true},"plista":{},"polymorphicads":{"prefetch":"https://www.polymorphicads.jp/js/amp.js","preconnect":["https://img.polymorphicads.jp","https://ad.polymorphicads.jp"],"renderStartImplemented":true},"popin":{"renderStartImplemented":true},"postquare":{},"ppstudio":{"renderStartImplemented":true},"pressboard":{"renderStartImplemented":true},"promoteiq":{},"pubexchange":{},"pubguru":{"renderStartImplemented":true},"pubmatic":{"prefetch":"https://ads.pubmatic.com/AdServer/js/amp.js"},"pubmine":{"prefetch":["https://s.pubmine.com/head.js"],"preconnect":"https://delivery.g.switchadhub.com","renderStartImplemented":true},"puffnetwork":{"prefetch":"https://static.puffnetwork.com/amp_ad.js","renderStartImplemented":true},"pulse":{"prefetch":"https://static.pulse.mail.ru/pulse-widget-amp.js","renderStartImplemented":true},"pulsepoint":{"prefetch":"https://ads.contextweb.com/TagPublish/getjs.static.js","preconnect":"https://tag.contextweb.com"},"purch":{"prefetch":"https://ramp.purch.com/serve/creative_amp.js","renderStartImplemented":true},"quoraad":{"prefetch":"https://a.quora.com/amp_ad.js","preconnect":"https://ampad.quora.com","renderStartImplemented":true},"rakutenunifiedads":{"prefetch":"https://s-cdn.rmp.rakuten.co.jp/js/amp.js","renderStartImplemented":true},"rbinfox":{"renderStartImplemented":true},"rcmwidget":{"prefetch":"https://rcmjs.rambler.ru/static/rcmw/rcmw-amp.js","renderStartImplemented":true},"readmo":{"renderStartImplemented":true},"realclick":{"renderStartImplemented":true},"recomad":{"renderStartImplemented":true},"recreativ":{"prefetch":"https://go.rcvlink.com/static/amp.js","renderStartImplemented":true},"relap":{"renderStartImplemented":true},"relappro":{"prefetch":"https://cdn.relappro.com/adservices/amp/relappro.amp.min.js","preconnect":"https://tags.relappro.com","renderStartImplemented":true},"remixd":{"preconnect":"https://tags.remixd.com","renderStartImplemented":true},"revcontent":{"prefetch":"https://labs-cdn.revcontent.com/build/amphtml/revcontent.amp.min.js","preconnect":["https://trends.revcontent.com","https://cdn.revcontent.com","https://img.revcontent.com"],"renderStartImplemented":true},"revjet":{"prefetch":"https://cdn.revjet.com/~cdn/JS/03/amp.js","renderStartImplemented":true},"rfp":{"prefetch":"https://js.rfp.fout.jp/rfp-amp.js","preconnect":"https://ad.rfp.fout.jp","renderStartImplemented":true},"rnetplus":{},"rubicon":{},"runative":{"prefetch":"https://cdn.run-syndicate.com/sdk/v1/n.js","renderStartImplemented":true},"sabavision":{"renderStartImplemented":true},"sas":{"renderStartImplemented":true},"seedingalliance":{},"seedtag":{"prefetch":"https://config.seedtag.com/omid/bridge/bridge.js","preconnect":["https://s.seedtag.com"],"consentHandlingOverride":true,"renderStartImplemented":true},"sekindo":{"renderStartImplemented":true},"sharethrough":{"renderStartImplemented":true},"shemedia":{"prefetch":["https://securepubads.g.doubleclick.net/tag/js/gpt.js","https://ads.shemedia.com/static/amp.js"],"preconnect":["https://partner.googleadservices.com","https://tpc.googlesyndication.com","https://ads.blogherads.com"],"renderStartImplemented":true},"sklik":{"prefetch":"https://c.imedia.cz/js/amp.js"},"slimcutmedia":{"preconnect":["https://sb.freeskreen.com","https://static.freeskreen.com","https://video.freeskreen.com"],"renderStartImplemented":true},"smartads":{"prefetch":"https://smart-ads.biz/amp.js"},"smartadserver":{"prefetch":"https://ec-ns.sascdn.com/diff/js/amp.v0.js","preconnect":"https://static.sascdn.com","renderStartImplemented":true},"smartclip":{"prefetch":"https://cdn.smartclip.net/amp/amp.v0.js","preconnect":"https://des.smartclip.net","renderStartImplemented":true},"smi2":{"renderStartImplemented":true},"smilewanted":{"prefetch":"https://prebid.smilewanted.com/amp/amp.js","preconnect":"https://static.smilewanted.com","renderStartImplemented":true},"sogouad":{"prefetch":"https://theta.sogoucdn.com/wap/js/aw.js","renderStartImplemented":true},"sortable":{"prefetch":"https://www.googletagservices.com/tag/js/gpt.js","preconnect":["https://tags-cdn.deployads.com","https://partner.googleadservices.com","https://securepubads.g.doubleclick.net","https://tpc.googlesyndication.com"],"renderStartImplemented":true},"sona":{"renderStartImplemented":true},"sovrn":{"prefetch":"https://ap.lijit.com/www/sovrn_amp/sovrn_ads.js"},"speakol":{"renderStartImplemented":true},"spotx":{"preconnect":"https://js.spotx.tv","renderStartImplemented":true},"springAds":{"preconnect":["https://ib.adnxs.com"],"renderStartImplemented":true},"ssp":{"prefetch":"https://ssp.imedia.cz/static/js/ssp.js","renderStartImplemented":true,"consentHandlingOverride":true},"strossle":{"preconnect":["https://amp.spklw.com","https://widgets.sprinklecontent.com","https://images.sprinklecontent.com"]},"sunmedia":{"prefetch":"https://vod.addevweb.com/sunmedia/amp/ads/sunmedia.js","preconnect":"https://static.addevweb.com","renderStartImplemented":true},"svknative":{"renderStartImplemented":true,"prefetch":"https://widget.svk-native.ru/js/embed.js"},"swoop":{"prefetch":"https://www.swoop-amp.com/amp.js","preconnect":["https://www.swpsvc.com","https://client.swpcld.com"],"renderStartImplemented":true},"taboola":{},"tagon":{"prefetch":"https://js.tagon.co/tagon-amp.min.js"},"tail":{"renderStartImplemented":true},"tcsemotion":{"prefetch":"https://ads.tcsemotion.com/www/delivery/amphb.js","renderStartImplemented":true},"teads":{"prefetch":"https://a.teads.tv/media/format/v3/teads-format.min.js","preconnect":["https://cdn2.teads.tv","https://t.teads.tv","https://r.teads.tv"],"consentHandlingOverride":true},"temedya":{"prefetch":["https://widget.cdn.vidyome.com/builds/loader-amp.js","https://vidyome-com.cdn.vidyome.com/vidyome/builds/widgets.js"],"renderStartImplemented":true},"torimochi":{"renderStartImplemented":true},"tracdelight":{"prefetch":"https://scripts.tracdelight.io/amp.js","renderStartImplemented":true},"trafficstars":{"prefetch":"https://cdn.tsyndicate.com/sdk/v1/master.spot.js","renderStartImplemented":true},"triplelift":{},"trugaze":{"clientIdScope":"__tg_amp","renderStartImplemented":true},"uas":{"prefetch":"https://ads.pubmatic.com/AdServer/js/phoenix.js"},"ucfunnel":{"renderStartImplemented":true},"uzou":{"preconnect":["https://speee-ad.akamaized.net"],"renderStartImplemented":true},"unruly":{"prefetch":"https://video.unrulymedia.com/native/native-loader.js","renderStartImplemented":true},"valuecommerce":{"prefetch":"https://amp.valuecommerce.com/amp_bridge.js","preconnect":["https://ad.jp.ap.valuecommerce.com"],"renderStartImplemented":true},"vdoai":{"prefetch":"https://a.vdo.ai/core/dependencies_amp/vdo.min.js","renderStartImplemented":true},"videointelligence":{"preconnect":"https://s.vi-serve.com","renderStartImplemented":true},"videonow":{"renderStartImplemented":true},"viralize":{"renderStartImplemented":true},"vlyby":{"prefetch":"https://cdn.vlyby.com/amp/qad/qad-outer2.js"},"vmfive":{"prefetch":"https://man.vm5apis.com/dist/adn-web-sdk.js","preconnect":["https://vawpro.vm5apis.com","https://vahfront.vm5apis.com"],"renderStartImplemented":true},"webediads":{"prefetch":"https://eu1.wbdds.com/amp.min.js","preconnect":["https://goutee.top","https://mediaathay.org.uk"],"renderStartImplemented":true},"weborama-display":{"prefetch":["https://cstatic.weborama.fr/js/advertiserv2/adperf_launch_1.0.0_scrambled.js","https://cstatic.weborama.fr/js/advertiserv2/adperf_core_1.0.0_scrambled.js"]},"whopainfeed":{"prefetch":"https://widget.infeed.com.ar/widget/widget-amp.js"},"widespace":{},"wisteria":{"renderStartImplemented":true},"wpmedia":{"prefetch":"https://std.wpcdn.pl/wpjslib/wpjslib-amp.js","preconnect":["https://www.wp.pl","https://v.wpimg.pl"],"renderStartImplemented":true},"wunderkind":{"preconnect":["https://tag.wknd.ai","https://api.bounceexchange.com"],"renderStartImplemented":true,"fullWidthHeightRatio":1.3333333333333333},"xlift":{"prefetch":"https://cdn.x-lift.jp/resources/common/xlift_amp.js","renderStartImplemented":true},"yahoo":{"prefetch":"https://s.yimg.com/aaq/ampad/display.js","preconnect":"https://us.adserver.yahoo.com"},"yahoofedads":{"renderStartImplemented":true},"yahoojp":{"prefetch":["https://s.yimg.jp/images/listing/tool/yads/ydn/amp/amp.js","https://yads.c.yimg.jp/js/yads.js"],"preconnect":"https://yads.yahoo.co.jp"},"yahoonativeads":{"renderStartImplemented":true},"yandex":{"prefetch":"https://yandex.ru/ads/system/context.js","preconnect":["https://yastatic.net/"],"renderStartImplemented":true},"yektanet":{"preconnect":["https://cdn.yektanet.com","https://cg-sc.yektanet.com","https://native.yektanet.com","https://nfetch.yektanet.net","https://rfetch.yektanet.net","https://scrapper.yektanet.com","https://ua.yektanet.com","https://bfetch.yektanet.com","https://mostatil.cdn.yektanet.com"],"renderStartImplemented":true},"yengo":{"renderStartImplemented":true},"yieldbot":{"prefetch":["https://cdn.yldbt.com/js/yieldbot.intent.amp.js","https://msg.yldbt.com/js/ybmsg.html"],"preconnect":"https://i.yldbt.com"},"yieldmo":{"prefetch":"https://static.yieldmo.com/ym.1.js","preconnect":["https://s.yieldmo.com","https://ads.yieldmo.com"],"renderStartImplemented":true},"yieldone":{"prefetch":"https://img.ak.impact-ad.jp/ic/pone/commonjs/yone-amp.js"},"yieldpro":{"preconnect":"https://creatives.yieldpro.eu","renderStartImplemented":true},"zedo":{"prefetch":"https://ss3.zedo.com/gecko/tag/Gecko.amp.min.js","renderStartImplemented":true},"zen":{"prefetch":"https://zen.yandex.ru/widget-loader","preconnect":["https://yastatic.net/"],"renderStartImplemented":true},"zergnet":{},"zucks":{"preconnect":["https://j.zucks.net.zimg.jp","https://sh.zucks.net","https://k.zucks.net","https://static.zucks.net.zimg.jp"]},"baidu":{"prefetch":"https://dup.baidustatic.com/js/dm.js","renderStartImplemented":true},"sulvo":{}}'); | |
function I(t) { | |
return 1 == (null == t ? void 0 : t.nodeType) | |
} | |
function S(t, e, r, n, i, a, s, o, c, p, d) { | |
return t | |
} | |
function k(t) { | |
return (t.ownerDocument || t).defaultView | |
} | |
function x(t, e) { | |
return t.replace(/^|,/g, "$&".concat(e, " ")) | |
} | |
function _(t) { | |
S(/^[\w-]+$/.test(t)) | |
} | |
function O(t) { | |
var e; | |
null === (e = t.parentElement) || void 0 === e || e.removeChild(t) | |
} | |
function A(t) { | |
return t.parent && t.parent != t | |
} | |
var P = self.AMP_CONFIG || {}, | |
E = ("string" == typeof P.thirdPartyFrameRegex ? new RegExp(P.thirdPartyFrameRegex) : P.thirdPartyFrameRegex) || /^d-\d+\.ampproject\.net$/, | |
M = ("string" == typeof P.cdnProxyRegex ? new RegExp(P.cdnProxyRegex) : P.cdnProxyRegex) || /^https:\/\/([a-zA-Z0-9_-]+\.)?cdn\.ampproject\.org$/; | |
function z(t) { | |
if (!self.document || !self.document.head) return null; | |
if (self.location && M.test(self.location.origin)) return null; | |
var e = self.document.head.querySelector('meta[name="'.concat(t, '"]')); | |
return e && e.getAttribute("content") || null | |
} | |
var R = { | |
thirdParty: P.thirdPartyUrl || "https://3p.ampproject.net", | |
thirdPartyFrameHost: P.thirdPartyFrameHost || "ampproject.net", | |
thirdPartyFrameRegex: E, | |
cdn: P.cdnUrl || z("runtime-host") || "https://cdn.ampproject.org", | |
cdnProxyRegex: M, | |
localhostRegex: /^https?:\/\/localhost(:\d+)?$/, | |
errorReporting: P.errorReportingUrl || "https://us-central1-amp-error-reporting.cloudfunctions.net/r", | |
betaErrorReporting: P.betaErrorReportingUrl || "https://us-central1-amp-error-reporting.cloudfunctions.net/r-beta", | |
localDev: P.localDev || !1, | |
trustedViewerHosts: [/(^|\.)google\.(com?|[a-z]{2}|com?\.[a-z]{2}|cat)$/, /(^|\.)gmail\.(com|dev)$/], | |
geoApi: P.geoApiUrl || z("amp-geo-api") | |
}, | |
N = /(?:^[#?]?|&)([^=&]+)(?:=([^&]*))?/g; | |
function T(t) { | |
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ""; | |
try { | |
return decodeURIComponent(t) | |
} catch (t) { | |
return e | |
} | |
} | |
function C(t) { | |
var e, r = f(); | |
if (!t) return r; | |
for (; e = N.exec(t);) { | |
var n = T(e[1], e[1]), | |
i = e[2] ? T(e[2].replace(/\+/g, " "), e[2]) : ""; | |
r[n] = i | |
} | |
return r | |
} | |
function D(t) { | |
var e = (t || self).location; | |
return C(e.originalHash || e.hash) | |
} | |
var H = ""; | |
function F(t) { | |
var e = t || self; | |
return e.__AMP_MODE ? e.__AMP_MODE : e.__AMP_MODE = function(t) { | |
return { | |
localDev: !1, | |
development: G(t, D(t)), | |
esm: !1, | |
test: !1, | |
rtvVersion: L(t) | |
} | |
}(e) | |
} | |
function L(t) { | |
var e; | |
return H || (H = (null === (e = t.AMP_CONFIG) || void 0 === e ? void 0 : e.v) || "01".concat("2203101844000")), H | |
} | |
function G(t, e) { | |
var r = e || D(t); | |
return ["1", "actions", "amp", "amp4ads", "amp4email"].includes(r.development) || !!t.AMP_DEV_MODE | |
} | |
function U(t, e, r) { | |
return e in t ? Object.defineProperty(t, e, { | |
value: r, | |
enumerable: !0, | |
configurable: !0, | |
writable: !0 | |
}) : t[e] = r, t | |
} | |
function V(t) { | |
var e = Object.getOwnPropertyDescriptor(t, "message"); | |
if (null != e && e.writable) return t; | |
var r = t.message, | |
n = t.stack, | |
i = new Error(r); | |
for (var a in t) i[a] = t[a]; | |
return i.stack = n, i | |
} | |
function W(t) { | |
for (var e, n = null, i = "", a = r(arguments, !0); !(e = a()).done;) { | |
var s = e.value; | |
s instanceof Error && !n ? n = V(s) : (i && (i += " "), i += s) | |
} | |
return n ? i && (n.message = i + ": " + n.message) : n = new Error(i), n | |
} | |
function q(t) { | |
var e, r; | |
null === (e = (r = self).__AMP_REPORT_ERROR) || void 0 === e || e.call(r, t) | |
} | |
self.__AMP_LOG = self.__AMP_LOG || { | |
user: null, | |
dev: null, | |
userForEmbed: null | |
}; | |
var B = self.__AMP_LOG; | |
function Y(t, e) { | |
throw new Error("failed to call initLogConstructor") | |
} | |
function $(t) { | |
return B.user || (B.user = J()), | |
function(t, e) { | |
return e && e.ownerDocument.defaultView != t | |
}(B.user.win, t) ? B.userForEmbed || (B.userForEmbed = J()) : B.user | |
} | |
function J(t) { | |
return Y() | |
} | |
function X() { | |
return B.dev || (B.dev = Y()) | |
} | |
function K(t, e, r, n, i, a, s, o, c, p, d) { | |
return t | |
} | |
function Z(t, e, r, n, i, a, s, o, c, p, d) { | |
return $().assert(t, e, r, n, i, a, s, o, c, p, d) | |
} | |
function Q(t, e) { | |
return at(t = function(t) { | |
return t.__AMP_TOP || (t.__AMP_TOP = t) | |
}(t), e) | |
} | |
function tt(t, e) { | |
return at(it(nt(t)), e) | |
} | |
function et(t, e) { | |
return function(t, e) { | |
var r = st(t, e); | |
if (r) return r; | |
var n, i, s, o, c = ot(t); | |
return c[e] = (i = (n = new a).promise, s = n.reject, o = n.resolve, i.catch((function() {})), { | |
obj: null, | |
promise: i, | |
resolve: o, | |
reject: s, | |
context: null, | |
ctor: null | |
}), c[e].promise | |
}(it(t), e) | |
} | |
function rt(t, e) { | |
return st(it(t), e) | |
} | |
function nt(t) { | |
return t.nodeType ? (e = k(t), Q(e, "ampdoc")).getAmpDoc(t) : t; | |
var e | |
} | |
function it(t) { | |
var e = nt(t); | |
return e.isSingleDoc() ? e.win : e | |
} | |
function at(t, e) { | |
K(ct(t, e)); | |
var r = ot(t)[e]; | |
return r.obj || (K(r.ctor), K(r.context), r.obj = new r.ctor(r.context), K(r.obj), r.context = null, r.resolve && r.resolve(r.obj)), r.obj | |
} | |
function st(t, e) { | |
var r = ot(t)[e]; | |
return r ? r.promise ? r.promise : (at(t, e), r.promise = Promise.resolve(r.obj)) : null | |
} | |
function ot(t) { | |
var e = t.__AMP_SERVICES; | |
return e || (e = t.__AMP_SERVICES = {}), e | |
} | |
function ct(t, e) { | |
var r = t.__AMP_SERVICES && t.__AMP_SERVICES[e]; | |
return !(!r || !r.ctor) | |
} | |
function pt(t, e, r, n) { | |
var i = rt(t, e); | |
if (i) return i; | |
var a = nt(t); | |
return a.whenExtensionsKnown().then((function() { | |
var t = a.getExtensionVersion(r); | |
return t ? Q(a.win, "extensions").waitForExtension(r, t) : null | |
})).then((function(r) { | |
return r ? n ? rt(t, e) : et(t, e) : null | |
})) | |
} | |
var dt, ut, mt, ht = function(t) { | |
return Q(t, "ampdoc") | |
}, | |
lt = function(t) { | |
return pt(t, "amp-analytics-instrumentation", "amp-analytics") | |
}, | |
ft = function(t) { | |
return tt(t, "documentInfo").get() | |
}, | |
vt = function(t) { | |
return at(t, "timer") | |
}, | |
gt = function(t) { | |
return pt(t, "consentPolicyManager", "amp-consent") | |
}, | |
bt = function(t) { | |
return tt(t, "viewport") | |
}, | |
jt = "image_stacked", | |
yt = "image_sidebyside", | |
wt = "mobile_banner_image_sidebyside", | |
It = "pub_control_image_stacked", | |
St = "pub_control_image_sidebyside", | |
kt = "pub_control_image_card_stacked", | |
xt = "pub_control_image_card_sidebyside", | |
_t = "pub_control_text", | |
Ot = "pub_control_text_card", | |
At = "data-matched-content-ui-type", | |
Pt = "data-matched-content-columns-num", | |
Et = "data-matched-content-rows-num", | |
Mt = (U(dt = {}, jt, 1 / 1.91), U(dt, yt, 1 / 3.82), U(dt, wt, 1 / 3.82), U(dt, It, 1 / 1.91), U(dt, St, 1 / 3.82), U(dt, kt, 1 / 1.91), U(dt, xt, 1 / 3.74), U(dt, _t, 0), U(dt, Ot, 0), dt), | |
zt = (U(ut = {}, jt, 80), U(ut, yt, 0), U(ut, wt, 0), U(ut, It, 80), U(ut, St, 0), U(ut, kt, 85), U(ut, xt, 0), U(ut, _t, 80), U(ut, Ot, 80), ut), | |
Rt = (U(mt = {}, It, 100), U(mt, St, 200), U(mt, kt, 150), U(mt, xt, 250), U(mt, _t, 100), U(mt, Ot, 150), mt), | |
Nt = "pub_control_", | |
Tt = '\n data-matched-content-rows-num="4,2"\ndata-matched-content-columns-num="1,6"\ndata-matched-content-ui-type="image_stacked,image_card_sidebyside"'; | |
function Ct(t) { | |
return t >= 1200 ? { | |
width: 1200, | |
height: 600 | |
} : t >= 850 ? { | |
width: t, | |
height: Math.floor(.5 * t) | |
} : t >= 550 ? { | |
width: t, | |
height: Math.floor(.6 * t) | |
} : t >= 468 ? { | |
width: t, | |
height: Math.floor(.7 * t) | |
} : { | |
width: t, | |
height: Math.floor(3.44 * t) | |
} | |
} | |
function Dt(t, e) { | |
return t * Mt[e] + zt[e] | |
} | |
function Ht(t, e) { | |
return (t - 8 * e - 8) / e | |
} | |
function Ft(t, e) { | |
return Math.floor(t * e + 8 * e + 8) | |
} | |
function Lt(t) { | |
return "fixed" == t || "fixed-height" == t || "responsive" == t || "fill" == t || "flex-item" == t || "fluid" == t || "intrinsic" == t | |
} | |
function Gt(t) { | |
var e, r = parseFloat(t); | |
return "number" == typeof(e = r) && isFinite(e) ? r : void 0 | |
} | |
function Ut(t, e, r, n) { | |
return { | |
left: t, | |
top: e, | |
width: r, | |
height: n, | |
bottom: e + n, | |
right: t + r, | |
x: t, | |
y: e | |
} | |
} | |
function Vt(t, e, r) { | |
return 0 == e && 0 == r || 0 == t.width && 0 == t.height ? t : Ut(t.left + e, t.top + r, t.width, t.height) | |
} | |
function Wt(t, e) { | |
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, | |
n = r.needsRootBounds, | |
i = r.rootMargin, | |
a = r.threshold, | |
s = A(e) && (n || i) ? e.document : void 0; | |
return new e.IntersectionObserver(t, { | |
threshold: a, | |
root: s, | |
rootMargin: i | |
}) | |
} | |
var qt, Bt = new WeakMap, | |
Yt = new WeakMap; | |
function $t(t) { | |
for (var e = new Set, r = t.length - 1; r >= 0; r--) { | |
var n = t[r], | |
i = n.target; | |
if (!e.has(i)) { | |
e.add(i); | |
var a = Yt.get(i); | |
if (a) | |
for (var s = 0; s < a.length; s++)(0, a[s])(n) | |
} | |
} | |
} | |
function Jt(t) { | |
return { | |
"time": t.time, | |
"rootBounds": Xt(t.rootBounds), | |
"boundingClientRect": Xt(t.boundingClientRect), | |
"intersectionRect": Xt(t.intersectionRect), | |
"intersectionRatio": t.intersectionRatio | |
} | |
} | |
function Xt(t) { | |
return null === t ? null : function(t) { | |
return Ut(Number(t.left), Number(t.top), Number(t.width), Number(t.height)) | |
}(t) | |
} | |
var Kt, Zt = ["Webkit", "webkit", "Moz", "moz", "ms", "O", "o"], | |
Qt = { | |
"getPropertyPriority": function() { | |
return "" | |
}, | |
"getPropertyValue": function() { | |
return "" | |
} | |
}; | |
function te(t, e, r, n, i) { | |
var a = function(t, e, r) { | |
if (e.startsWith("--")) return e; | |
qt || (qt = f()); | |
var n = qt[e]; | |
if (!n || r) { | |
if (n = e, void 0 === t[e]) { | |
var i = function(t) { | |
return t.charAt(0).toUpperCase() + t.slice(1) | |
}(e), | |
a = function(t, e) { | |
for (var r = 0; r < Zt.length; r++) { | |
var n = Zt[r] + e; | |
if (void 0 !== t[n]) return n | |
} | |
return "" | |
}(t, i); | |
void 0 !== t[a] && (n = a) | |
} | |
r || (qt[e] = n) | |
} | |
return n | |
}(t.style, e, i); | |
if (a) { | |
var s, o = n ? r + n : r; | |
t.style.setProperty((s = a.replace(/[A-Z]/g, (function(t) { | |
return "-" + t.toLowerCase() | |
})), Zt.some((function(t) { | |
return s.startsWith(t + "-") | |
})) ? "-".concat(s) : s), o) | |
} | |
} | |
function ee(t, e) { | |
for (var r in e) te(t, r, e[r]) | |
} | |
function re(t, e) { | |
return t.getComputedStyle(e) || Qt | |
} | |
function ne(t) { | |
return t.data | |
} | |
var ie = "__AMP__AD_CONTAINER", | |
ae = { | |
"AMP-FX-FLYING-CARPET": !0, | |
"AMP-LIGHTBOX": !0, | |
"AMP-STICKY-AD": !0, | |
"AMP-LIGHTBOX-GALLERY": !0 | |
}; | |
function se(t, e) { | |
var r = re(e, t).position; | |
return "fixed" == r || "sticky" == r | |
} | |
function oe(t) { | |
if (void 0 === t[ie]) { | |
for (var e = t.parentElement; e && "BODY" != e.tagName;) { | |
if (ae[e.tagName]) return t[ie] = e.tagName; | |
e = e.parentElement | |
} | |
t[ie] = null | |
} | |
return t[ie] | |
} | |
var ce = "amp-ad-ui", | |
pe = { | |
TOP: "top", | |
BOTTOM: "bottom", | |
LEFT: "left", | |
RIGHT: "right", | |
BOTTOM_RIGHT: "bottom-right" | |
}, | |
de = "sticky", | |
ue = function() { | |
function t(t) { | |
if (this.FG = t, this.Gn = t.element, this.xd = t.win.document, this.idt = null, this.adt = null, this.Gn.hasAttribute(de) && (this.Gn.getAttribute(de) || $().error(ce, 'amp-ad sticky is deprecating empty attribute value, please use <amp-ad sticky="bottom" instead'), this.adt = this.Gn.getAttribute(de) || pe.BOTTOM_RIGHT, this.Gn.setAttribute(de, this.adt), Object.values(pe).includes(this.adt) || ($().error(ce, "Invalid sticky ad type: ".concat(this.adt)), this.adt = null)), this.sdt = !1, this.odt = void 0, this.Qw = [], this.Gn.hasAttribute("data-ad-container-id")) { | |
var e = this.Gn.getAttribute("data-ad-container-id"), | |
r = this.xd.getElementById(e); | |
r && "AMP-LAYOUT" == r.tagName && r.contains(this.Gn) && (this.idt = r) | |
} | |
if (!t.getFallback()) { | |
var n = this.cdt("fallback"); | |
n && this.FG.element.appendChild(n) | |
} | |
} | |
var e = t.prototype; | |
return e.applyNoContentUI = function() { | |
var t, e, r, n, i = this; | |
"AMP-STICKY-AD" !== oe(this.Gn) ? "AMP-FX-FLYING-CARPET" !== oe(this.Gn) ? (this.idt ? (r = (n = this.Gn.getAmpDoc(), tt(n, "mutator")).attemptCollapse(this.idt)).then((function() {})) : r = this.FG.attemptCollapse(), r.catch((function() { | |
i.FG.mutateElement((function() { | |
i.FG.togglePlaceholder(!1), i.FG.toggleFallback(!0) | |
})) | |
}))) : (t = this.Gn, _(e = "amp-fx-flying-carpet"), e = e.toUpperCase(), function(t, r) { | |
for (var n = [], i = t.parentElement; i; i = i.parentElement) i.tagName == e && n.push(i); | |
return n | |
}(t))[0].getImpl().then((function(t) { | |
var e = t.getChildren(); | |
1 === e.length && e[0] === i.Gn && i.FG.collapse() | |
})) : this.FG.collapse() | |
}, e.applyUnlayoutUI = function() { | |
var t = this; | |
this.FG.mutateElement((function() { | |
t.FG.toggleFallback(!1) | |
})) | |
}, e.cdt = function(t) { | |
if ("AMP-EMBED" == this.Gn.tagName) return null; | |
var e = this.xd.createElement("div"); | |
e.setAttribute(t, ""); | |
var r = this.xd.createElement("div"); | |
return r.classList.add("i-amphtml-ad-default-holder"), r.setAttribute("data-ad-holder-text", "Ad"), e.appendChild(r), e | |
}, e.validateStickyAd = function() { | |
Z(this.xd.querySelectorAll("amp-sticky-ad.i-amphtml-built, amp-ad[sticky].i-amphtml-built").length <= 1, "At most one sticky ad can be loaded per page") | |
}, e.isStickyAd = function() { | |
return null !== this.adt | |
}, e.maybeInitStickyAd = function() { | |
var t = this; | |
if (this.isStickyAd()) { | |
var e = this.Gn.getAmpDoc(); | |
te(this.Gn, "visibility", "visible"), this.adt == pe.TOP && (this.odt = bt(e).onScroll((function() { | |
var r = e.win.scrollY; | |
te(t.Gn, "visibility", r > 50 ? "visible" : "hidden") | |
})), this.Qw.push(this.odt)), bt(e).addToFixedLayer(this.Gn, !0), this.adjustPadding(), this.sdt || (this.cee(), this.sdt = !0) | |
} | |
}, e.getScrollPromiseForStickyAd = function() { | |
var t = this; | |
return this.isStickyAd() ? new Promise((function(e) { | |
var r = bt(t.Gn.getAmpDoc()).onScroll((function() { | |
e(), r() | |
})) | |
})) : Promise.resolve(null) | |
}, e.adjustPadding = function() { | |
if (this.adt == pe.BOTTOM || this.adt == pe.BOTTOM_RIGHT) { | |
var t = this.Gn.offsetHeight; | |
bt(this.Gn.getAmpDoc()).updatePaddingBottom(t) | |
} | |
}, e.pdt = function() { | |
var t, e = this; | |
(t = this.FG.win, Q(t, "vsync")).mutate((function() { | |
var t = bt(e.Gn.getAmpDoc()); | |
t.removeFromFixedLayer(e.element), O(e.Gn), t.updatePaddingBottom(0) | |
})), this.odt && this.odt() | |
}, e.cee = function() { | |
var t, e, r, n, i, a, s, o, c, p, d = (t = this.Gn.ownerDocument, e = { | |
"aria-label": this.Gn.getAttribute("data-close-button-aria-label") || "Close this ad" | |
}, function(t, e) { | |
for (var r in e) t.setAttribute(r, e[r]); | |
return t | |
}(t.createElement("button"), e)); | |
this.Qw.push((r = d, n = "click", i = this.pdt.bind(this), a = void 0, s = r, o = i, c = function(t) { | |
try { | |
return o(t) | |
} catch (t) { | |
var e, r; | |
throw null === (e = (r = self).__AMP_REPORT_ERROR) || void 0 === e || e.call(r, t), t | |
} | |
}, p = function() { | |
if (void 0 !== Kt) return Kt; | |
Kt = !1; | |
try { | |
var t = { | |
get capture() { | |
return Kt = !0, !1 | |
} | |
}; | |
self.addEventListener("test-options", null, t), self.removeEventListener("test-options", null, t) | |
} catch (t) {} | |
return Kt | |
}(), s.addEventListener(n, c, !!p && a), function() { | |
null == s || s.removeEventListener(n, c, !!p && a), o = null, s = null, c = null | |
})), d.classList.add("amp-ad-close-button"), this.Gn.appendChild(d) | |
}, e.updateSize = function(t, e, r, n, i) { | |
var a, s, o = this; | |
t = parseInt(t, 10), isNaN(t) || (a = Math.max(this.Gn.offsetHeight + t - r, t)), e = parseInt(e, 10), isNaN(e) || (s = Math.max(this.Gn.offsetWidth + e - n, e)); | |
var c = { | |
success: !0, | |
newWidth: s, | |
newHeight: a | |
}; | |
if (!a && !s) return Promise.reject(new Error("undefined width and height")); | |
if ("AMP-STICKY-AD" == oe(this.Gn)) return c.success = !1, Promise.resolve(c); | |
if (this.isStickyAd()) { | |
var p = this.FG.getViewport(); | |
if (t * e > .2 * p.getHeight() * p.getWidth() || a > .5 * p.getHeight()) return c.success = !1, Promise.resolve(c) | |
} | |
return this.FG.attemptChangeSize(a, s, i).then((function() { | |
return o.Le(o.Gn.querySelector("iframe"), t, e), c | |
}), (function() { | |
return c.success = !1, c | |
})) | |
}, e.Le = function(t, e, r) { | |
ee(t, { | |
"height": "".concat(e, "px"), | |
"width": "".concat(r, "px") | |
}) | |
}, e.cleanup = function() { | |
this.Qw.forEach((function(t) { | |
return t() | |
})), this.Qw.length = 0 | |
}, t | |
}(); | |
t.AmpAdUIHandler = ue; | |
var me = function() { | |
function t() {} | |
return t.generate = function(t) { | |
return function(t) { | |
for (var e = t.length, r = 5381, n = 0; n < e; n++) r = 33 * r ^ t.charCodeAt(n); | |
return String(r >>> 0) | |
}(function(t) { | |
for (var e = [], r = 0; I(t) && r < 25;) { | |
var n = ""; | |
t.id && (n = "/".concat(t.id)); | |
var i = t.nodeName.toLowerCase(); | |
e.push("".concat(i).concat(n).concat(he(t))), r++, t = t.parentElement | |
} | |
return e.join() | |
}(t)) | |
}, t | |
}(); | |
function he(t) { | |
for (var e = t.nodeName, r = 0, n = 0, i = t.previousElementSibling; i && n < 25 && r < 100;) i.nodeName == e && n++, r++, i = i.previousElementSibling; | |
return n < 25 && r < 100 ? ".".concat(n) : "" | |
} | |
function le(t, e) { | |
var r = Object.keys(t); | |
if (Object.getOwnPropertySymbols) { | |
var n = Object.getOwnPropertySymbols(t); | |
e && (n = n.filter((function(e) { | |
return Object.getOwnPropertyDescriptor(t, e).enumerable | |
}))), r.push.apply(r, n) | |
} | |
return r | |
} | |
function fe(t) { | |
for (var e = 1; e < arguments.length; e++) { | |
var r = null != arguments[e] ? arguments[e] : {}; | |
e % 2 ? le(Object(r), !0).forEach((function(e) { | |
U(t, e, r[e]) | |
})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(r)) : le(Object(r)).forEach((function(e) { | |
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(r, e)) | |
})) | |
} | |
return t | |
} | |
var ve = "__AMP__EXPERIMENT_TOGGLES"; | |
function ge(t) { | |
var e, n, i, a, s; | |
if (t[ve]) return t[ve]; | |
t[ve] = f(); | |
var o = t[ve]; | |
S(o); | |
var c = fe(fe({}, null !== (e = t.AMP_CONFIG) && void 0 !== e ? e : {}), null !== (n = t.AMP_EXP) && void 0 !== n ? n : b((null === (i = t.__AMP_EXP) || void 0 === i ? void 0 : i.textContent) || "{}")); | |
for (var p in c) { | |
var d = c[p]; | |
"number" == typeof d && d >= 0 && d <= 1 && (o[p] = Math.random() < d) | |
} | |
var u = null === (a = t.AMP_CONFIG) || void 0 === a ? void 0 : a["allow-doc-opt-in"]; | |
if (g(u) && u.length) { | |
var m = t.document.head.querySelector('meta[name="amp-experiments-opt-in"]'); | |
if (m) | |
for (var h, l, v = r((null === (h = m.getAttribute("content")) || void 0 === h ? void 0 : h.split(",")) || [], !0); !(l = v()).done;) { | |
var j = l.value; | |
u.includes(j) && (o[j] = !0) | |
} | |
} | |
Object.assign(o, function(t) { | |
var e, n = ""; | |
try { | |
var i; | |
"localStorage" in t && (n = null !== (i = t.localStorage.getItem("amp-experiment-toggles")) && void 0 !== i ? i : "") | |
} catch (t) { | |
X().warn("EXPERIMENTS", "Failed to retrieve experiments from localStorage.") | |
} | |
for (var a, s = (null === (e = n) || void 0 === e ? void 0 : e.split(/\s*,\s*/g)) || [], o = f(), c = r(s, !0); !(a = c()).done;) { | |
var p = a.value; | |
p && ("-" == p[0] ? o[p.substr(1)] = !1 : o[p] = !0) | |
} | |
return o | |
}(t)); | |
var y = null === (s = t.AMP_CONFIG) || void 0 === s ? void 0 : s["allow-url-opt-in"]; | |
if (g(y) && y.length) | |
for (var w, I = C(t.location.originalHash || t.location.hash), k = r(y, !0); !(w = k()).done;) { | |
var x = w.value, | |
_ = I["e-".concat(x)]; | |
"1" == _ && (o[x] = !0), "0" == _ && (o[x] = !1) | |
} | |
return o | |
} | |
var be = /^https:\/\/([a-zA-Z0-9_-]+\.)?cdn\.ampproject\.org((\/.*)|($))+/, | |
je = "position"; | |
function ye(t) { | |
return "string" == typeof t && t.startsWith("amp-") && -1 != t.indexOf("{") | |
} | |
var we = "ini-load", | |
Ie = ["script", "style"], | |
Se = ["amp-accordion", "amp-app-banner", "amp-carousel", "amp-fit-text", "amp-form", "amp-selector", "amp-sidebar"], | |
ke = ["action", "alt", "class", "disabled", "height", "href", "id", "name", "placeholder", "readonly", "src", "tabindex", "title", "type", "value", "width"]; | |
function xe(t) { | |
var e = t.tagName.toLowerCase(); | |
return e.startsWith("amp-") ? !(!Se.includes(e) || !t.textContent) : !(Ie.includes(e) || !t.textContent) | |
} | |
function _e(t, e, r) { | |
r.push("<".concat(t.tagName.toLowerCase())), e.forEach((function(e) { | |
t.hasAttribute(e) && r.push(" ".concat(e, '="').concat(t.getAttribute(e), '"')) | |
})), r.push(">") | |
} | |
var Oe, Ae, Pe = function() { | |
function t(t) { | |
this.Wt = t, this.Kt = 0, this.Qt = 0, this.Xt = f() | |
} | |
var e = t.prototype; | |
return e.has = function(t) { | |
return !!this.Xt[t] | |
}, e.get = function(t) { | |
var e = this.Xt[t]; | |
if (e) return e.access = ++this.Qt, e.payload | |
}, e.put = function(t, e) { | |
this.has(t) || this.Kt++, this.Xt[t] = { | |
payload: e, | |
access: this.Qt | |
}, this.Yt() | |
}, e.Yt = function() { | |
if (!(this.Kt <= this.Wt)) { | |
var t, e = this.Xt, | |
r = this.Qt + 1; | |
for (var n in e) { | |
var i = e[n].access; | |
i < r && (r = i, t = n) | |
} | |
void 0 !== t && (delete e[t], this.Kt--) | |
} | |
}, t | |
}(); | |
function Ee(t, e) { | |
return Oe || (Oe = self.document.createElement("a"), Ae = self.__AMP_URL_CACHE || (self.__AMP_URL_CACHE = new Pe(100))), | |
function(t, e, r) { | |
if (r && r.has(e)) return r.get(e); | |
t.href = e, t.protocol || (t.href = t.href); | |
var n, i = { | |
href: t.href, | |
protocol: t.protocol, | |
host: t.host, | |
hostname: t.hostname, | |
port: "0" == t.port ? "" : t.port, | |
pathname: t.pathname, | |
search: t.search, | |
hash: t.hash, | |
origin: null | |
}; | |
"/" !== i.pathname[0] && (i.pathname = "/" + i.pathname), ("http:" == i.protocol && 80 == i.port || "https:" == i.protocol && 443 == i.port) && (i.port = "", i.host = i.hostname), n = t.origin && "null" != t.origin ? t.origin : "data:" != i.protocol && i.host ? i.protocol + "//" + i.host : i.href, i.origin = n; | |
var a = i; | |
return r && r.put(e, a), a | |
}(Oe, t, e ? null : Ae) | |
} | |
function Me(t, e, r, n) { | |
return function(t, e, r) { | |
if (!e) return t; | |
var n = t.split("#", 2), | |
i = n[0].split("?", 2); | |
return i[0] + (i[1] ? r ? "?".concat(e, "&").concat(i[1]) : "?".concat(i[1], "&").concat(e) : "?".concat(e)) + (n[1] ? "#".concat(n[1]) : "") | |
}(t, function(t, e) { | |
return "".concat(encodeURIComponent(t), "=").concat(encodeURIComponent(e)) | |
}(e, r), n) | |
} | |
function ze(t) { | |
return "https:" == (t = function(t) { | |
return "string" == typeof t ? Ee(t) : t | |
}(t)).protocol || "localhost" == t.hostname || "127.0.0.1" == t.hostname || (r = ".localhost", (n = (e = t.hostname).length - r.length) >= 0 && e.indexOf(r, n) == n); | |
var e, r, n | |
} | |
new Set(["c", "v", "a", "ad"]); | |
var Re = "unlisten"; | |
function Ne(t, e, r) { | |
var n = function(t, e) { | |
var r = t.listeningFors; | |
return !r && e && (r = t.listeningFors = Object.create(null)), r || null | |
}(t, r); | |
if (!n) return n; | |
var i = n[e]; | |
return !i && r && (i = n[e] = []), i || null | |
} | |
function Te(t, e) { | |
for (var r = e; r && r != r.parent; r = r.parent) | |
if (r == t) return !0; | |
return !1 | |
} | |
function Ce(t) { | |
for (var e = { | |
"sentinel": Re | |
}, r = t.length - 1; r >= 0; r--) { | |
var n = t[r]; | |
if (!n.frame.contentWindow) { | |
t.splice(r, 1); | |
var i = n.events; | |
for (var a in i) i[a].splice(0, 1 / 0).forEach((function(t) { | |
t(e) | |
})) | |
} | |
} | |
} | |
function De(t, e, r, n, i, a) { | |
K(t.src), K(!t.parentNode), K(r); | |
var s = t.ownerDocument.defaultView; | |
! function(t) { | |
t.listeningFors || t.addEventListener("message", (function(e) { | |
if (ne(e)) { | |
var r = function(t) { | |
return "string" == typeof t && (t = "{" == t.charAt(0) ? j(t, (function(t) { | |
X().warn("IFRAME-HELPER", "Postmessage could not be parsed. Is it in a valid JSON format?", t) | |
})) || null : ye(t) ? function(t) { | |
if (!ye(t)) return null; | |
var e = t.indexOf("{"); | |
return S(-1 != e), j(t.substr(e), (function(e) { | |
! function(t) { | |
var e = W.apply(null, arguments); | |
setTimeout((function() { | |
throw q(e), e | |
})) | |
}(new Error("MESSAGING: Failed to parse message: ".concat(t, "\n").concat(e.message))) | |
})) | |
}(t) : null), t | |
}(ne(e)); | |
if (r && r.sentinel) { | |
var n = function(t, e, r, n) { | |
var i, a = Ne(t, e); | |
if (!a) return a; | |
for (var s = 0; s < a.length; s++) { | |
var o = a[s], | |
c = o.frame.contentWindow; | |
if (c) { | |
if (n == c || Te(c, n)) { | |
i = o; | |
break | |
} | |
} else setTimeout(Ce, 0, a) | |
} | |
return i ? i.events : null | |
}(t, r.sentinel, e.origin, e.source); | |
if (n) { | |
var i = n[r.type]; | |
if (i) { | |
i = i.slice(); | |
for (var a = 0; a < i.length; a++)(0, i[a])(r, e.source, e.origin, e) | |
} | |
} | |
} | |
} | |
})) | |
}(s); | |
var o, c = function(t, e, r) { | |
for (var n, i = Ne(t, Le(e, r), !0), a = 0; a < i.length; a++) { | |
var s = i[a]; | |
if (s.frame === e) { | |
n = s; | |
break | |
} | |
} | |
return n || (n = { | |
frame: e, | |
events: Object.create(null) | |
}, i.push(n)), n.events | |
}(s, t, n), | |
p = Ee(t.src).origin, | |
d = c[e] || (c[e] = []), | |
u = function(e, n, s, c) { | |
if ("amp" == e.sentinel) { | |
if (n != t.contentWindow) return; | |
if (p != s && ("null" != s || !a)) return | |
}(i || n == t.contentWindow) && (e.sentinel != Re ? r(e, n, s, c) : o()) | |
}; | |
return d.push(u), o = function() { | |
if (u) { | |
var t = d.indexOf(u); | |
t > -1 && d.splice(t, 1), u = null, d = null, r = null | |
} | |
} | |
} | |
function He(t, e, r) { | |
var n = []; | |
return "string" == typeof e && (e = [e]), new Promise((function(i) { | |
for (var a = 0; a < e.length; a++) { | |
var s = e[a], | |
o = De(t, s, (function(t, e, r, a) { | |
for (var s = 0; s < n.length; s++) n[s](); | |
i({ | |
data: t, | |
source: e, | |
origin: r, | |
event: a | |
}) | |
}), r); | |
n.push(o) | |
} | |
})) | |
} | |
function Fe(t, e, r, n, i) { | |
if (t.contentWindow) { | |
n.type = r, n.sentinel = Le(t, i); | |
var a = n; | |
i && (a = "amp-" + JSON.stringify(n)); | |
for (var s = 0; s < e.length; s++) { | |
var o = e[s]; | |
o.win.postMessage(a, o.origin) | |
} | |
} | |
} | |
function Le(t, e) { | |
return e ? t.getAttribute("data-amp-3p-sentinel") : "amp" | |
} | |
var Ge = function() { | |
function t(t, e, r, n) { | |
var i = this; | |
this.lb = t, this.Pb = r, this.Ib = [], this.Mb = De(this.lb, e, (function(t, e, r) { | |
i.Ib.some((function(t) { | |
return t.win == e | |
})) || i.Ib.push({ | |
win: e, | |
origin: r | |
}), n(t, e, r) | |
}), this.Pb, this.Pb) | |
} | |
var e = t.prototype; | |
return e.send = function(t, e) { | |
(function(t, e) { | |
for (var r = [], n = 0, i = 0; i < t.length; i++) { | |
var a = t[i]; | |
a.win.parent ? (n < i && (t[n] = a), n++) : r.push(a) | |
} | |
n < t.length && (t.length = n) | |
})(this.Ib), Fe(this.lb, this.Ib, t, e, this.Pb) | |
}, e.destroy = function() { | |
this.Mb(), this.Ib.length = 0 | |
}, t | |
}(), | |
Ue = function() { | |
function t(t, e) { | |
var r = this; | |
this.Rb = t, this.Po = vt(t.win), this.Ab = null, this.ddt = null, this.sh = !1, this.udt = [], this.mdt = 0, this.hdt = this.ldt.bind(this), this.fdt = new Ge(e, "send-intersections", !0, (function() { | |
return r.vdt() | |
})), this.gdt = null | |
} | |
var e = t.prototype; | |
return e.fire = function() { | |
this.ddt && (this.ddt.unobserve(this.Rb.element), this.ddt.observe(this.Rb.element)) | |
}, e.bdt = function() { | |
this.gdt && (this.gdt(), this.gdt = null) | |
}, e.vdt = function() { | |
var t = this; | |
this.Ab || (this.Ab = new IntersectionObserver((function(e) { | |
var r = e[e.length - 1]; | |
t.jdt(r) | |
})), this.Ab.observe(this.Rb.element)), this.ddt || (this.ddt = new IntersectionObserver((function(e) { | |
var r = e[e.length - 1]; | |
t.ydt(r) | |
}))), this.fire() | |
}, e.jdt = function(t) { | |
var e = 0 != t.intersectionRatio; | |
if (this.sh != e) | |
if (this.sh = e, this.ydt(t), e) { | |
var r = this.fire.bind(this), | |
n = this.Rb.getViewport().onScroll(r), | |
i = this.Rb.getViewport().onChanged(r); | |
this.gdt = function() { | |
n(), i() | |
} | |
} else this.bdt() | |
}, e.ydt = function(t) { | |
var e = Jt(t); | |
null === e.rootBounds && (e.rootBounds = this.Rb.getViewport().getRect()), this.udt.length > 0 && this.udt[this.udt.length - 1].time == e.time || (this.udt.push(e), this.mdt || (this.ldt(), this.mdt = this.Po.delay(this.hdt, 100))) | |
}, e.ldt = function() { | |
this.mdt = 0, this.udt.length && (this.fdt.send("intersection", { | |
"changes": this.udt | |
}), this.udt.length = 0) | |
}, e.destroy = function() { | |
this.Ab && (this.Ab.disconnect(), this.Ab = null), this.ddt && (this.ddt.disconnect(), this.ddt = null), this.Po.cancel(this.mdt), this.bdt(), this.fdt.destroy() | |
}, t | |
}(), | |
Ve = !1, | |
We = self.__AMP_ERRORS || []; | |
self.__AMP_ERRORS = We; | |
var qe = function() { | |
function t(t) { | |
this.t = t.win, this.FG = t, this.Gn = t.element, this.wdt = t.uiHandler, this.iframe = null, this.Idt = 0, this.Sdt = null, this.kdt = null, this.xdt = null, this._dt = !1, this.Qw = [], this.bh = bt(this.FG.getAmpDoc()), this.sh = !1, this.Odt = !1 | |
} | |
var e = t.prototype; | |
return e.init = function(t, e, r) { | |
var n = this; | |
K(!this.iframe), this.iframe = t, this.iframe.setAttribute("scrolling", "no"), this.wdt.isStickyAd() || this.iframe.classList.add("i-amphtml-fill-content"); | |
var i, s = vt(this.FG.win); | |
this.Sdt = new Ue(this.FG, this.iframe), this.kdt = new Ge(this.iframe, "send-embed-state", !0, (function() { | |
return n.Adt(n.sh) | |
})), (ge(this.t)["inabox-position-api"] || /^adsense$/i.test(this.Gn.getAttribute("type")) && !(function(t) { | |
return t.crypto && (t.crypto.subtle || t.crypto.webkitSubtle) | |
}(i = this.t) && function(t) { | |
return be.test(t.location.origin) | |
}(i))) && (this.xdt = new Ge(this.iframe, "send-positions", !0, (function() { | |
n.Yr(), n.Pdt() | |
}))), He(this.iframe, "entity-id", !0).then((function(t) { | |
n.Gn.creativeId = t.data.id | |
})), this.Edt("get-html", (function(t) { | |
var e = t.selector, | |
r = t.attributes, | |
i = ""; | |
return n.Gn.hasAttribute("data-html-access-allowed") && (i = function(t, e, r) { | |
var n = t.document.querySelector(e), | |
i = []; | |
return n && function(t, e, r) { | |
for (var n = [t], i = e.filter((function(t) { | |
return ke.includes(t) | |
})); n.length > 0;) { | |
var a = n.pop(); | |
if ("string" == typeof a) r.push(a); | |
else if (a.nodeType === Node.TEXT_NODE) { | |
var s; | |
r.push(null !== (s = a.textContent) && void 0 !== s ? s : "") | |
} else if (I(a) && xe(a)) { | |
_e(a, i, r), n.push("</".concat(a.tagName.toLowerCase(), ">")); | |
for (var o = a.lastChild; o; o = o.previousSibling) n.push(o) | |
} | |
} | |
}(n, r, i), i.join("").replace(/\s{2,}/g, " ") | |
}(n.FG.win, e, r)), Promise.resolve(i) | |
})), this.Edt("get-consent-state", (function() { | |
return n.FG.getConsentState().then((function(t) { | |
return { | |
consentState: t | |
} | |
})) | |
})), this.Qw.push(De(this.iframe, "embed-size", (function(t, e, r, i) { | |
t.hasOverflow && (n.Gn.warnOnMissingOverflow = !1), Date.now() - n.Idt >= 500 ? n.y5(t.id, t.height, t.width, e, r, i) : n.Mdt(!1, t.id, t.width, t.height, e, r) | |
}), !0, !0)), this.Qw.push(this.FG.getAmpDoc().onVisibilityChanged((function() { | |
n.Adt(n.sh) | |
}))), this.Qw.push(De(this.iframe, "user-error-in-iframe", (function(t) { | |
n.zdt(t.message, 1 == t.expected) | |
}), !0, !0)); | |
var o = this.FG.loadPromise(this.iframe).then((function() { | |
return n.iframe && (n.iframe.readyState = "complete"), s.promise(10) | |
})), | |
c = new a, | |
p = c.promise, | |
d = c.resolve, | |
u = new a, | |
m = u.promise, | |
h = u.resolve; | |
return this.FG.config && this.FG.config.renderStartImplemented ? He(this.iframe, ["render-start", "no-content"], !0).then((function(t) { | |
"render-start" == t.data.type ? (n.Rdt(t), d()) : (n.Ndt(), h()) | |
})) : (He(this.iframe, "bootstrap-loaded", !0).then((function() { | |
d() | |
})), He(this.iframe, "no-content", !0).then((function() { | |
n.Ndt(), h() | |
}))), He(this.iframe, we, !0).then((function() { | |
n.FG.signals().signal(we) | |
})), this.Gn.appendChild(this.iframe), e && !r ? (this.FG.renderStarted(), d()) : te(this.iframe, "visibility", "hidden"), (e && r ? p : Promise.race([p, o, s.promise(1e4)])).then((function() { | |
n.FG.renderStarted(), n.iframe && te(n.iframe, "visibility", "") | |
})), Promise.race([o, m]) | |
}, e.Edt = function(t, e) { | |
var r = this; | |
this.Qw.push(De(this.iframe, t, (function(n, i, a) { | |
if (r.iframe) { | |
var s = n.messageId, | |
o = n.payload; | |
e(o).then((function(e) { | |
var n = {}; | |
n.messageId = s, n.content = e, Fe(r.iframe, [{ | |
win: i, | |
origin: a | |
}], t + "-result", n, !0) | |
})) | |
} | |
}), !0, !1)) | |
}, e.Rdt = function(t) { | |
var e = ne(t); | |
this.y5(void 0, e.height, e.width, t.source, t.origin, t.event) | |
}, e.freeXOriginIframe = function(t) { | |
this.Hn(), t || this.iframe && (O(this.iframe), this.iframe = null) | |
}, e.Ndt = function() { | |
this.iframe && (this.freeXOriginIframe(this.iframe.name.indexOf("_master") >= 0), this.wdt.applyNoContentUI()) | |
}, e.Hn = function() { | |
this.Qw.forEach((function(t) { | |
return t() | |
})), this.Qw.length = 0, this.kdt && (this.kdt.destroy(), this.kdt = null), this.xdt && (this.xdt.destroy(), this.xdt = null), this.Sdt && (this.Sdt.destroy(), this.Sdt = null) | |
}, e.y5 = function(t, e, r, n, i, a) { | |
var s = this; | |
this.FG.getVsync().mutate((function() { | |
if (s.iframe) { | |
var o = s.iframe.offsetHeight, | |
c = s.iframe.offsetWidth; | |
s.wdt.updateSize(e, r, o, c, a).then((function(e) { | |
e.success ? s.Idt = 0 : s.Idt = Date.now(), s.wdt.adjustPadding(), s.Mdt(e.success, t, e.newWidth, e.newHeight, n, i) | |
}), (function() {})) | |
} | |
})) | |
}, e.Mdt = function(t, e, r, n, i, a) { | |
this.iframe && Fe(this.iframe, [{ | |
win: i, | |
origin: a | |
}], t ? "embed-size-changed" : "embed-size-denied", { | |
"id": e, | |
"requestedWidth": r, | |
"requestedHeight": n | |
}, !0) | |
}, e.Adt = function(t) { | |
this.kdt && this.kdt.send("embed-state", { | |
"inViewport": t, | |
"pageHidden": !this.FG.getAmpDoc().isVisible() | |
}) | |
}, e.Tdt = function() { | |
var t = this; | |
return this.bh.getClientRectAsync(this.iframe).then((function(e) { | |
return K(e), { | |
"targetRect": e, | |
"viewportRect": t.bh.getRect() | |
} | |
})) | |
}, e.Yr = function() { | |
var t = this; | |
this.Odt || (this.Odt = !0, this.Tdt().then((function(e) { | |
t.Odt = !1, t.xdt.send(je, e) | |
}))) | |
}, e.Pdt = function() { | |
var t = this; | |
this._dt || (this._dt = !0, this.Qw.push(this.bh.onScroll(function(t, e, r) { | |
var n = 0, | |
i = null; | |
function a(r) { | |
i = null, n = t.setTimeout(s, 100), e.apply(null, r) | |
} | |
function s() { | |
n = 0, i && a(i) | |
} | |
return function() { | |
for (var t = arguments.length, e = new Array(t), r = 0; r < t; r++) e[r] = arguments[r]; | |
n ? i = e : a(e) | |
} | |
}(this.t, (function() { | |
t.Tdt().then((function(e) { | |
t.xdt.send(je, e) | |
})) | |
})))), this.Qw.push(this.bh.onResize((function() { | |
t.Tdt().then((function(e) { | |
t.xdt.send(je, e) | |
})) | |
})))) | |
}, e.viewportCallback = function(t) { | |
this.sh = t, this.Adt(t) | |
}, e.onLayoutMeasure = function() { | |
this.Sdt && this.Sdt.fire() | |
}, e.zdt = function(t, e) { | |
if ("string" == typeof t) | |
if (e) X().expectedError("amp-ad-xorigin-iframe", t); | |
else { | |
var r = new Error(t); | |
r.name = "3pError", | |
function(t, e) { | |
if (ht(e).isSingleDoc()) { | |
var r = { | |
"errorName": t.name, | |
"errorMessage": t.message | |
}; | |
! function(t, e) { | |
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, | |
n = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]; | |
lt(t).then((function(i) { | |
i && i.triggerEventForTarget(t, e, r, n) | |
})) | |
}(function(t) { | |
var e = ht(t).getSingleDoc().getRootNode(); | |
return e.documentElement || e.body || e | |
}(e), "user-error", r, !1) | |
} | |
}(r, this.FG.win) | |
} | |
}, t | |
}(); | |
t.AmpAdXOriginIframeHandler = qe; | |
var Be = null, | |
Ye = null; | |
function $e(t, e, r, n) { | |
var i = Date.now(), | |
a = e.getAttribute("width"), | |
s = e.getAttribute("height"); | |
(n = n || {}).width = Gt(a), n.height = Gt(s), e.getAttribute("title") && (n.title = e.getAttribute("title")); | |
var o = t.location.href; | |
"about:srcdoc" == o && (o = t.parent.location.href); | |
var c, p, d, u, m = nt(e), | |
h = ft(e), | |
l = (u = e, tt(u, "viewer")).getUnconfirmedReferrerUrl(), | |
f = function(t) { | |
for (var e = t.ownerDocument.body, r = 0, n = 0, i = t; i && i != e; i = i.offsetParent) r += i.offsetLeft, n += i.offsetTop; | |
var a = t.offsetHeight; | |
return Ut(r, n, t.offsetWidth, a) | |
}(e); | |
n._context = { | |
"ampcontextVersion": "2203101844000", | |
"ampcontextFilepath": "".concat(R.thirdParty, "/").concat("2203101844000", "/ampcontext-v0.js"), | |
"sourceUrl": h.sourceUrl, | |
"referrer": l, | |
"canonicalUrl": h.canonicalUrl, | |
"pageViewId": h.pageViewId, | |
"location": { | |
"href": o | |
}, | |
"startTime": i, | |
"tagName": e.tagName, | |
"mode": { | |
localDev: !1, | |
development: F(d).development, | |
esm: F(d).esm, | |
test: !1, | |
rtvVersion: F(d).rtvVersion | |
}, | |
"canary": (c = t, !(null === (p = c.AMP_CONFIG) || void 0 === p || !p.canary)), | |
"hidden": !m.isVisible(), | |
"initialLayoutRect": f ? { | |
"left": f.left, | |
"top": f.top, | |
"width": f.width, | |
"height": f.height | |
} : null, | |
"domFingerprint": me.generate(e), | |
"experimentToggles": ge(t), | |
"sentinel": r | |
}; | |
var v = e.getAttribute("src"); | |
return v && (n.src = v), n | |
} | |
var Je = {}; | |
function Xe(t, e, r, n) { | |
var i = r || e.getAttribute("type"); | |
Z(i, "Attribute type required for <amp-ad>: %s", e); | |
var a = function(t) { | |
for (var e = 0, r = t; r && r != r.parent; r = r.parent) e++; | |
return String(e) + "-" + Qe(t) | |
}(t), | |
s = {}; | |
return function(t, e) { | |
var r = t.dataset; | |
for (var n in r) n.startsWith("vars") || (e[n] = r[n]); | |
var i = t.getAttribute("json"); | |
if (i) { | |
var a = j(i); | |
if (void 0 === a) throw $().createError("Error parsing JSON in json attribute in element %s", t); | |
for (var s in a) e[s] = a[s] | |
} | |
}(e, s), (s = $e(t, e, a, s)).type = i, Object.assign(s._context, n), s | |
} | |
function Ke(t) { | |
return "".concat(R.thirdParty, "/").concat("2203101844000", "/vendor/").concat(t).concat(".js") | |
} | |
function Ze(t, e, r) { | |
return function(t, e, r) { | |
var n = e.getMetaByName("amp-3p-iframe-src"); | |
if (!n) return null; | |
var i = function(t, e) { | |
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "source"; | |
return Z(null != t, "%s %s must be available", e, r), Z(ze(t) || /^\/\//.test(t), '%s %s must start with "https://" or "//" or be relative and served from either https or from localhost. Invalid value: %s', e, r, t), t | |
}(n, 'meta[name="amp-3p-iframe-src"]'); | |
Z(-1 == i.indexOf("?"), "3p iframe url must not include query string %s in element %s.", i, n); | |
var a = Ee(i); | |
return Z("localhost" == a.hostname && !r || a.origin != Ee(t.location.href).origin, "3p iframe url must not be on the same origin as the current document %s (%s) in element %s. See https://github.com/ampproject/amphtml/blob/main/docs/spec/amp-iframe-origin-policy.md for details.", i, a.origin, n), "".concat(i, "?").concat("2203101844000") | |
}(t, e, r) || function(t, e) { | |
return t.__AMP_DEFAULT_BOOTSTRAP_SUBDOMAIN = t.__AMP_DEFAULT_BOOTSTRAP_SUBDOMAIN || "d-" + Qe(t), "https://" + t.__AMP_DEFAULT_BOOTSTRAP_SUBDOMAIN + ".".concat(R.thirdPartyFrameHost, "/").concat("2203101844000", "/") + "".concat("frame", ".html") | |
}(t) | |
} | |
function Qe(t) { | |
var e; | |
if (t.crypto && t.crypto.getRandomValues) { | |
var r = new Uint32Array(2); | |
t.crypto.getRandomValues(r), e = String(r[0]) + r[1] | |
} else e = String(t.Math.random()).substr(2) + "0"; | |
return e | |
} | |
function tr(t) { | |
if (t.sandbox && t.sandbox.supports) { | |
for (var e = ["allow-top-navigation-by-user-activation", "allow-popups-to-escape-sandbox"], r = 0; r < e.length; r++) { | |
var n = e[r]; | |
if (!t.sandbox.supports(n)) return void X().info("3p-frame", "Iframe doesn't support %s", n) | |
} | |
t.sandbox = e.join(" ") + " " + ["allow-forms", "allow-modals", "allow-pointer-lock", "allow-popups", "allow-same-origin", "allow-scripts"].join(" ") | |
} | |
} | |
var er = function() { | |
function t() { | |
this.es = [] | |
} | |
var e, r = t.prototype; | |
return r.peek = function() { | |
var t = this.length; | |
return t ? this.es[t - 1].item : null | |
}, r.enqueue = function(t, e) { | |
if (isNaN(e)) throw new Error("Priority must not be NaN."); | |
var r = this.ss(e); | |
this.es.splice(r, 0, { | |
item: t, | |
priority: e | |
}) | |
}, r.ss = function(t) { | |
for (var e = -1, r = 0, n = this.length; r <= n && (e = Math.floor((r + n) / 2)) !== this.length;) | |
if (this.es[e].priority < t) r = e + 1; | |
else { | |
if (!(e > 0 && this.es[e - 1].priority >= t)) break; | |
n = e - 1 | |
} return e | |
}, r.forEach = function(t) { | |
for (var e = this.length; e--;) t(this.es[e].item) | |
}, r.dequeue = function() { | |
var t = this.es.pop(); | |
return t ? t.item : null | |
}, (e = [{ | |
key: "length", | |
get: function() { | |
return this.es.length | |
} | |
}]) && function(t, e) { | |
for (var r = 0; r < e.length; r++) { | |
var n = e[r]; | |
n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n) | |
} | |
}(t.prototype, e), t | |
}(), | |
rr = "CHUNK", | |
nr = /nochunking=1/.test(self.location.hash), | |
ir = i(); | |
var ar = "not_run", | |
sr = function() { | |
function t(t) { | |
this.state = ar, this.us = t | |
} | |
var e = t.prototype; | |
return e.hs = function(t) { | |
if ("run" != this.state) { | |
this.state = "run"; | |
try { | |
this.us(t) | |
} catch (t) { | |
throw this.cs(t), t | |
} | |
} | |
}, e.fs = function() { | |
return this.us.displayName || this.us.name | |
}, e.cs = function(t) {}, e.ls = function() { | |
return !1 | |
}, e.vs = function() { | |
return !1 | |
}, t | |
}(), | |
or = function(t) { | |
o(r, t); | |
var e = u(r); | |
function r(t, r, n) { | |
var i; | |
return (i = e.call(this, t)).ds = n, i | |
} | |
var n = r.prototype; | |
return n.cs = function(t) { | |
var e; | |
K((e = self.document).defaultView), Ve || (Ve = !0, function(t) { | |
ee(t.body, { | |
opacity: 1, | |
visibility: "visible", | |
"animation": "none" | |
}) | |
}(e)) | |
}, n.ls = function() { | |
return this.ps() | |
}, n.vs = function() { | |
return this.ds.bs | |
}, n.ps = function() { | |
return this.ds.ampdoc.isVisible() | |
}, r | |
}(sr), | |
cr = function() { | |
function t(t) { | |
var e, r = this; | |
this.ampdoc = t, this.t = t.win, this.gs = new er, this.ys = this.ws.bind(this), this.As = 0, this.Es = !(!this.t.navigator.scheduling || !this.t.navigator.scheduling.isInputPending), this.xs = !1, this.os = this.t.document.documentElement.hasAttribute("i-amphtml-no-boilerplate"), this.t.addEventListener("message", (function(t) { | |
"amp-macro-task" == ne(t) && r.ws(null) | |
})), this.bs = !1, (e = t, et(e, "viewer")).then((function() { | |
r.bs = !0 | |
})), t.onVisibilityChanged((function() { | |
t.isVisible() && r.Os() | |
})) | |
} | |
var e = t.prototype; | |
return e.run = function(t, e) { | |
var r = new sr(t); | |
this.Ts(r, e) | |
}, e.runForStartup = function(t) { | |
var e = new or(t, this.t, this); | |
this.Ts(e, Number.POSITIVE_INFINITY) | |
}, e.Ts = function(t, e) { | |
this.gs.enqueue(t, e), this.Os() | |
}, e.Is = function(t) { | |
for (var e = this.gs.peek(); e && e.state !== ar;) this.gs.dequeue(), e = this.gs.peek(); | |
return e && t && this.gs.dequeue(), e | |
}, e.ws = function(t) { | |
var e, r = this, | |
n = this.Is(!0); | |
if (!n) return this.xs = !1, this.As = 0, !1; | |
try { | |
e = Date.now(), n.hs(t) | |
} finally { | |
ir.then().then().then().then().then().then().then().then().then((function() { | |
r.xs = !1, r.As += Date.now() - e, X().fine(rr, n.fs(), "Chunk duration", Date.now() - e, r.As), r.Os() | |
})) | |
} | |
return !0 | |
}, e.Ps = function(t) { | |
var e = this; | |
if (this.os && (this.Es ? this.t.navigator.scheduling.isInputPending() : this.As > 5)) return this.As = 0, void this.Ss(); | |
ir.then((function() { | |
e.ys(t) | |
})) | |
}, e.Os = function() { | |
if (!this.xs) { | |
var t = this.Is(); | |
if (t) return t.ls() ? (this.xs = !0, void this.Ps(null)) : void(t.vs() && this.t.requestIdleCallback ? (e = this.t, r = 2e3, n = this.ys, i = Date.now(), e.requestIdleCallback((function t(a) { | |
if (a.timeRemaining() < 15) { | |
var s = r - (Date.now() - i); | |
s <= 0 || a.didTimeout ? (X().fine(rr, "Timed out", r, a.didTimeout), n(a)) : (X().fine(rr, "Rescheduling with", s, a.timeRemaining()), e.requestIdleCallback(t, { | |
timeout: s | |
})) | |
} else X().fine(rr, "Running idle callback with ", 15), n(a) | |
}), { | |
timeout: r | |
})) : this.Ss()) | |
} | |
var e, r, n, i | |
}, e.Ss = function() { | |
this.t.postMessage("amp-macro-task", "*") | |
}, t | |
}(), | |
pr = "amp-ad-3p-impl", | |
dr = function(t) { | |
o(r, t); | |
var e = u(r); | |
function r(t) { | |
var r; | |
return (r = e.call(this, t)).lb = null, r.config = null, r.uiHandler = null, r.H8 = null, r.kb = null, r.V4 = null, r.Cdt = !1, r.Ddt = null, r.gdt = null, r.Qw = [], r.Ab = null, r.ft = void 0, r.zi = null, r.wM = void 0, r.Hdt = !1, r.Fdt = !1, r.vg = null, r | |
} | |
var n = r.prototype; | |
return n.getLayoutPriority = function() { | |
return this.element.getAmpDoc().isSingleDoc() ? 2 : 1 | |
}, n.renderOutsideViewport = function() { | |
if (this.win["3pla"]) return !1; | |
var e = function(t) { | |
var e = t.getAttribute("data-loading-strategy"); | |
if (null == e) return null; | |
if ("prefer-viewability-over-views" == e || "" == e) return 1.25; | |
var r = "Value of data-loading-strategy should be a float number in range of [0, 3], but got " + e, | |
n = $().assertNumber(parseFloat(e), r); | |
return Z(n >= 0 && n <= 3, r), n | |
}(this.element); | |
return null !== e ? e : t.prototype.renderOutsideViewport.call(this) | |
}, n.isLayoutSupported = function(t) { | |
return Lt(t) | |
}, n.getResource = function() { | |
return this.element.getResources().getResourceForElement(this.element) | |
}, n.getConsentPolicy = function() { | |
var e = this.element.getAttribute("type"), | |
r = w[e]; | |
return r && r.consentHandlingOverride ? null : t.prototype.getConsentPolicy.call(this) | |
}, n.buildCallback = function() { | |
var t = this; | |
this.wM = this.element.getAttribute("type"); | |
var e = Math.round(this.getResource().getUpgradeDelayMs()); | |
if (X().info(pr, "upgradeDelay ".concat(this.wM, ": ").concat(e)), this.kb = this.getPlaceholder(), this.V4 = this.getFallback(), this.config = w[this.wM], Z(this.config, 'Type "'.concat(this.wM, '" is not supported in amp-ad')), this.uiHandler = new ue(this), this.uiHandler.validateStickyAd(), this.uiHandler.getScrollPromiseForStickyAd().then((function() { | |
return t.uiHandler.maybeInitStickyAd() | |
})), this.uiHandler.isStickyAd() && function(t, e, r) { | |
if (nr) ir.then(e); | |
else { | |
var n = function(t) { | |
return e = "chunk", r = cr, | |
function(t, e, r, n, i, a) { | |
var s = ot(t), | |
o = s[r]; | |
o || (o = s[r] = { | |
obj: null, | |
promise: null, | |
resolve: null, | |
reject: null, | |
context: null, | |
ctor: null, | |
sharedInstance: !1 | |
}), o.ctor || (o.ctor = n, o.context = e, o.sharedInstance = !1, o.resolve && at(t, r)) | |
}(it(n = nt(t)), n, e, r), tt(t, "chunk"); | |
var e, r, n | |
}(t); | |
n.run(e, r) | |
} | |
}(this.element, (function() { | |
return t.layoutCallback() | |
}), 10), this.Fdt = this.Ldt(), this.Fdt) return this.Gdt() | |
}, n.Ldt = function() { | |
return !!this.element.hasAttribute("data-full-width") && (Z("100vw" == this.element.getAttribute("width"), 'Ad units with data-full-width must have width="100vw".'), Z(!!this.config.fullWidthHeightRatio, "Ad network does not support full width ads."), X().info(pr, "#${this.getResource().getId()} Full width requested"), !0) | |
}, n.preconnectCallback = function(t) { | |
var e = this, | |
r = Q(this.win, "preconnect"); | |
! function(t, e, r, n) { | |
var i = Ze(t, r); | |
n.preload(r, i, "document"), n.preload(r, Ke(e), "script") | |
}(this.win, this.wM, this.getAmpDoc(), r), "string" == typeof this.config.prefetch ? r.preload(this.getAmpDoc(), this.config.prefetch, "script") : this.config.prefetch && this.config.prefetch.forEach((function(t) { | |
r.preload(e.getAmpDoc(), t, "script") | |
})), "string" == typeof this.config.preconnect ? r.url(this.getAmpDoc(), this.config.preconnect, t) : this.config.preconnect && this.config.preconnect.forEach((function(n) { | |
r.url(e.getAmpDoc(), n, t) | |
})); | |
var n = this.element.getAttribute("src"); | |
n && r.url(this.getAmpDoc(), n) | |
}, n.onLayoutMeasure = function() { | |
var t = this; | |
if (this.Cdt = ! function(t, e) { | |
var r = !1, | |
n = 0, | |
i = t; | |
do { | |
ae[i.tagName] ? (n++, r = !1) : se(i, e) && (r = !0), i = i.parentElement | |
} while (i && "BODY" != i.tagName); | |
return !r && n <= 1 | |
}(this.element, this.win), void 0 === this.ft && (this.ft = oe(this.element)), this.Udt(), this.H8 && this.H8.onLayoutMeasure(), this.Fdt && !this.Hdt) { | |
this.Hdt = !0; | |
var e = this.getLayoutBox(); | |
this.getVsync().run({ | |
measure: function(e) { | |
e.direction = re(t.win, t.element).direction | |
}, | |
mutate: function(r) { | |
"rtl" == r.direction ? te(t.element, "marginRight", e.left, "px") : te(t.element, "marginLeft", -e.left, "px") | |
} | |
}, { | |
direction: "" | |
}) | |
} | |
}, n.Udt = function() { | |
if (this.H8 && this.H8.iframe) { | |
var t = this.getViewport().getLayoutRect(this.H8.iframe), | |
e = this.getLayoutBox(); | |
this.Ddt = Vt(t, -e.left, -e.top) | |
} | |
}, n.getIntersectionElementLayoutBox = function() { | |
if (!this.H8 || !this.H8.iframe) return t.prototype.getIntersectionElementLayoutBox.call(this); | |
var e = this.getLayoutBox(); | |
return this.Ddt || this.Udt(), Vt(K(this.Ddt), e.left, e.top) | |
}, n.layoutCallback = function() { | |
var e = this; | |
if (this.zi) return this.zi; | |
Z(!this.Cdt || this.uiHandler.isStickyAd(), "<amp-ad> is not allowed to be placed in elements with position:fixed: %s unless it has sticky attribute", this.element); | |
var r, n, s, o, c, p, d, u, m, h = this.getConsentState(), | |
l = t.prototype.getConsentPolicy.call(this), | |
f = l ? function(t) { | |
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "default"; | |
return gt(t).then((function(t) { | |
return t ? t.getConsentStringInfo(e) : null | |
})) | |
}(this.element, l) : Promise.resolve(null), | |
v = l ? function(t) { | |
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "default"; | |
return gt(t).then((function(t) { | |
return t ? t.getConsentMetadataInfo(e) : null | |
})) | |
}(this.element, l) : Promise.resolve(null), | |
g = l ? (r = this.element, n = l, gt(r).then((function(t) { | |
return t ? t.getMergedSharedData(n) : null | |
}))) : Promise.resolve(null), | |
b = ft(this.element).pageViewId64; | |
return this.zi = Promise.all([(s = this, m = w[s.element.getAttribute("type")], m && m.clientIdScope ? (o = s.getAmpDoc(), c = m.clientIdScope, p = m.clientIdCookieName, isNaN(void 0), d = (u = o, et(u, "cid")).then((function(t) { | |
if (t) return t.get({ | |
scope: c, | |
createCookieIfNotPresent: !0, | |
cookieName: p | |
}, Promise.resolve(void 0)).catch((function(t) { | |
X().error("AD-CID", t) | |
})) | |
})), vt(o.win).timeoutPromise(1e3, d, "cid timeout").catch((function(t) { | |
X().warn("AD-CID", t) | |
}))) : i()), h, g, f, v, b]).then((function(t) { | |
var r = { | |
"clientId": t[0] || null, | |
"container": e.ft, | |
"initialConsentState": t[1], | |
"consentSharedData": t[2], | |
"initialConsentValue": t[3], | |
"initialConsentMetadata": t[4], | |
"pageViewId64": t[5] | |
}, | |
n = e.element.getIntersectionChangeEntry(), | |
i = function(t, e, r, n) { | |
var i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : {}, | |
a = i.allowFullscreen, | |
s = void 0 !== a && a, | |
o = i.initialIntersection; | |
K(void 0 === e.isConnected || !0 === e.isConnected); | |
var c = Xe(t, e, r, n); | |
o && (c._context.initialIntersection = o); | |
var p = t.document.createElement("iframe"); | |
Je[c.type] || (Je[c.type] = 0), Je[c.type] += 1; | |
var d = e.getAmpDoc(), | |
u = Ze(t, d), | |
m = Ee(u).hostname, | |
h = JSON.stringify({ | |
"host": m, | |
"bootstrap": Ke(c.type), | |
"type": c.type, | |
"count": Je[c.type], | |
"attributes": c | |
}); | |
return p.src = u, p.ampLocation = Ee(u), p.name = h, c.width && (p.width = c.width), c.height && (p.height = c.height), c.title && (p.title = c.title), s && p.setAttribute("allowfullscreen", "true"), p.setAttribute("scrolling", "no"), te(p, "border", "none"), p.onload = function() { | |
this.readyState = "complete" | |
}, p.setAttribute("allow", "sync-xhr 'none';"), ["facebook"].includes(r) || tr(p), p.setAttribute("data-amp-3p-sentinel", c._context.sentinel), p | |
}(k(e.element), e.element, e.wM, r, { | |
initialIntersection: Jt(n) | |
}); | |
return i.title = e.element.title || "Advertisement", e.H8 = new qe(e), e.H8.init(i) | |
})).then((function() { | |
e.vg = function(t, e, r) { | |
var n = k(t), | |
i = Bt.get(n); | |
i || Bt.set(n, i = Wt($t, n)); | |
var a = Yt.get(t); | |
return a || (a = [], Yt.set(t, a)), a.push(e), i.observe(t), | |
function() { | |
! function(t, e) { | |
var r, n, i, a = Yt.get(t); | |
if (a && (n = e, -1 != (i = (r = a).indexOf(n)) && (r.splice(i, 1), 1) && !a.length)) { | |
var s = k(t), | |
o = Bt.get(s); | |
null == o || o.unobserve(t), Yt.delete(t) | |
} | |
}(t, e) | |
} | |
}(e.element, (function(t) { | |
var r = t.isIntersecting; | |
return e.pg(r) | |
})) | |
})), | |
function(t, e) { | |
if (void 0 === t["3pla"] && (t["3pla"] = 0), t["3pla"]++, !Be) { | |
var r = new a; | |
Be = r.promise, Ye = r.resolve | |
} | |
vt(t).timeoutPromise(1e3, e).catch((function() {})).then((function() { | |
--t["3pla"] || (Ye(), Be = null, Ye = null) | |
})) | |
}(this.win, this.zi), this.zi | |
}, n.pg = function(t) { | |
this.H8 && this.H8.viewportCallback(t) | |
}, n.unlayoutOnPause = function() { | |
return !0 | |
}, n.unlayoutCallback = function() { | |
var t; | |
return this.Qw.forEach((function(t) { | |
return t() | |
})), this.Qw.length = 0, null === (t = this.vg) || void 0 === t || t.call(this), this.vg = null, this.zi = null, this.uiHandler.applyUnlayoutUI(), this.H8 && (this.H8.freeXOriginIframe(), this.H8 = null), this.uiHandler && this.uiHandler.cleanup(), !0 | |
}, n.getConsentState = function() { | |
var e = t.prototype.getConsentPolicy.call(this); | |
return e ? function(t) { | |
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "default"; | |
return gt(t).then((function(t) { | |
return t ? t.whenPolicyResolved(e) : null | |
})) | |
}(this.element, e) : Promise.resolve(null) | |
}, n.Gdt = function() { | |
var t = this.getViewport().getSize(), | |
e = Math.min(500, t.height), | |
r = t.width, | |
n = this.Vdt(r, e); | |
return this.attemptChangeSize(n, r).then((function() { | |
X().info(pr, "Size change accepted: ".concat(r, "x").concat(n)) | |
}), (function() { | |
X().info(pr, "Size change rejected: ".concat(r, "x").concat(n)) | |
})) | |
}, n.Vdt = function(t, e) { | |
return "mcrspv" === this.element.getAttribute("data-auto-format") ? (r = t, (i = (a = { | |
numberOfRows: (n = this.element).getAttribute(Et), | |
numberOfColumns: n.getAttribute(Pt), | |
layoutType: n.getAttribute(At) | |
}).numberOfRows || a.numberOfColumns || a.layoutType ? function(t, e) { | |
var r, n = function(t) { | |
var e = 0; | |
if (t.layoutType && e++, t.numberOfColumns && e++, t.numberOfRows && e++, e < 3) return { | |
validationError: "Tags ".concat(At, ", ").concat(Pt, " and ").concat(Et, " should be set together.") | |
}; | |
var r = t.layoutType.split(","), | |
n = t.numberOfRows.split(","), | |
i = t.numberOfColumns.split(","); | |
if (r.length !== n.length || r.length !== i.length) return { | |
validationError: "Lengths of parameters ".concat(At, ", ").concat(Pt, " and ").concat(Et, " must match. Example: ").concat(Tt) | |
}; | |
if (r.length > 2) return { | |
validationError: "The parameter length of attribute ".concat(At, ", ").concat(Pt, " and ").concat(Et, " is too long. At most 2 parameters for each ") + "attribute are needed: one for mobile and one for desktop, while " + "you are providing ".concat(r.length, " parameters. Example: ").concat(Tt, ".") | |
}; | |
for (var a = [], s = [], o = 0; o < r.length; o++) { | |
var c = Number(n[o]); | |
if (isNaN(c) || 0 === c) return { | |
validationError: "Wrong value '".concat(n[o], "' for ").concat(Et, ".") | |
}; | |
a.push(c); | |
var p = Number(i[o]); | |
if (isNaN(p) || 0 === p) return { | |
validationError: "Wrong value '".concat(i[o], "' for ").concat(Pt, ".") | |
}; | |
s.push(p) | |
} | |
return { | |
numberOfRows: a, | |
numberOfColumns: s, | |
layoutTypes: r | |
} | |
}(e); | |
if (n.validationError) return { | |
slotWidth: 0, | |
slotHeight: 0, | |
numberOfColumns: 0, | |
numberOfRows: 0, | |
layoutType: jt, | |
validationError: n.validationError | |
}; | |
r = 2 === n.layoutTypes.length && t >= 468 ? 1 : 0; | |
var i = function(t) { | |
return 0 === t.indexOf(Nt) ? t : Nt + t | |
}(n.layoutTypes[r]), | |
a = function(t, e, r) { | |
for (var n = Rt[r], i = e; t / i < n && i > 1;) i--; | |
return i | |
}(t, n.numberOfColumns[r], i), | |
s = n.numberOfRows[r], | |
o = function(t, e, r, n) { | |
var i = Ft(Dt(Ht(t, e), n), r); | |
return t > 1500 ? { | |
width: 0, | |
height: 0, | |
sizeError: "Calculated slot width is too large: " + t | |
} : i > 1500 ? { | |
width: 0, | |
height: 0, | |
sizeError: "Calculated slot height is too large: " + i | |
} : { | |
width: t, | |
height: i | |
} | |
}(t, a, s, i); | |
return o.sizeError ? { | |
slotWidth: 0, | |
slotHeight: 0, | |
numberOfColumns: 0, | |
numberOfRows: 0, | |
layoutType: i, | |
validationError: o.sizeError | |
} : { | |
slotWidth: o.width, | |
slotHeight: o.height, | |
numberOfColumns: a, | |
numberOfRows: s, | |
layoutType: i | |
} | |
}(r, a) : function(t, e) { | |
if (t < 468) { | |
if (e) { | |
var r = function(t, e, r, n) { | |
var i = Ht(t, 1); | |
return { | |
width: t, | |
height: Math.floor(i / 1.91 + 70) + Ft(Dt(i, "mobile_banner_image_sidebyside"), 11) | |
} | |
}(t); | |
return { | |
slotWidth: r.width, | |
slotHeight: r.height, | |
numberOfColumns: 1, | |
numberOfRows: 12, | |
layoutType: "mobile_banner_image_sidebyside" | |
} | |
} | |
var n = Ct(t); | |
return { | |
slotWidth: n.width, | |
slotHeight: n.height, | |
numberOfColumns: 1, | |
numberOfRows: 13, | |
layoutType: yt | |
} | |
} | |
var i = Ct(t); | |
return { | |
slotWidth: i.width, | |
slotHeight: i.height, | |
numberOfColumns: 4, | |
numberOfRows: 2, | |
layoutType: jt | |
} | |
}(r, r <= 468)).validationError ? ($().error("AMP-AD", i.validationError), 0) : (n.setAttribute(Et, i.numberOfRows), n.setAttribute(Pt, i.numberOfColumns), n.setAttribute(At, i.layoutType), i.slotHeight)) : (s = Math.round(t / this.config.fullWidthHeightRatio), S(100 <= (o = e)), Math.min(Math.max(s, 100), o)); | |
var r, n, i, a, s, o | |
}, r | |
}(t.BaseElement), | |
ur = {}, | |
mr = null, | |
hr = function(t) { | |
o(r, t); | |
var e = u(r); | |
function r(t) { | |
var r; | |
return (r = e.call(this, t)).pi = null, r.Wdt = null, r.uiHandler = null, r | |
} | |
var n = r.prototype; | |
return n.getLayoutPriority = function() { | |
return 0 | |
}, n.isLayoutSupported = function(t) { | |
return Lt(t) | |
}, n.buildCallback = function() { | |
this.pi = this.element.getAttribute("data-url"), this.Wdt = this.element.getAttribute("data-slot"), Z(null === this.Wdt || this.Wdt.match(/^[0-9a-z]+$/), "custom ad slot should be alphanumeric: " + this.Wdt); | |
var t, e, r = (t = this.element, ct(e = it(nt(t)), "url") ? at(e, "url") : null); | |
Z(this.pi && r.isSecure(this.pi), "custom ad url must be an HTTPS URL"), this.uiHandler = new ue(this) | |
}, n.layoutCallback = function() { | |
var t, e = this, | |
r = this.qdt(), | |
n = ur[r] || (t = this.win, Q(t, "xhr")).fetchJson(r).then((function(t) { | |
return t.json() | |
})); | |
return null !== this.Wdt && (ur[r] = n), n.then((function(t) { | |
var r, n = t; | |
if (null !== e.Wdt && (n = v(t, e.Wdt) ? t[e.Wdt] : null), n && "object" == p(n)) { | |
n = e.Bdt(n), e.renderStarted(); | |
try { | |
(r = e.element, tt(r, "templates")).findAndRenderTemplate(e.element, n).then((function(t) { | |
! function(t) { | |
for (; t.firstChild;) t.removeChild(t.firstChild) | |
}(e.element), e.element.appendChild(t), e.signals().signal(we) | |
})) | |
} catch (t) { | |
e.uiHandler.applyNoContentUI() | |
} | |
} else e.uiHandler.applyNoContentUI() | |
})) | |
}, n.Bdt = function(t) { | |
if (e = this.element, _("template"), function(t, e) { | |
if (void 0 !== y ? y : y = function(t) { | |
try { | |
var e = t.ownerDocument, | |
r = e.createElement("div"), | |
n = e.createElement("div"); | |
return r.appendChild(n), r.querySelector(":scope div") === n | |
} catch (t) { | |
return !1 | |
} | |
}(t)) return t.querySelector(x(e, ":scope")); | |
var r = function(t, e) { | |
var r = t.classList, | |
n = "i-amphtml-scoped"; | |
r.add(n); | |
var i = x(e, ".".concat(n)), | |
a = t.querySelectorAll(i); | |
return r.remove(n), a | |
}(t, e)[0]; | |
return void 0 === r ? null : r | |
}(e, "> ".concat("template"))) return t; | |
var e; | |
if (Z(t.templateId, "TemplateId not specified"), Z(t.data && "object" == p(t.data), "Template data not specified"), this.element.setAttribute("template", t.templateId), t.vars && "object" == p(t.vars)) | |
for (var r = t.vars, n = Object.keys(r), i = 0; i < n.length; i++) { | |
var a = "data-vars-" + n[i]; | |
try { | |
this.element.setAttribute(a, r[n[i]]) | |
} catch (t) { | |
this.user().error("amp-ad-custom", "Fail to set attribute: ", t) | |
} | |
} | |
return t.data | |
}, n.unlayoutCallback = function() { | |
return this.uiHandler.applyUnlayoutUI(), !0 | |
}, n.qdt = function() { | |
if (null === this.Wdt) return Z(this.pi); | |
if (null === mr) { | |
mr = {}; | |
for (var t = {}, e = (o = this.element, "BODY", o.closest ? o.closest("BODY") : function(t, e, r) { | |
var n; | |
for (n = t; n && void 0 !== n; n = n.parentElement) | |
if (e(n)) return n; | |
return null | |
}(o, (function(t) { | |
return function(t, e) { | |
var r = t.matches || t.webkitMatchesSelector || t.mozMatchesSelector || t.msMatchesSelector || t.oMatchesSelector; | |
return !!r && r.call(t, "BODY") | |
}(t) | |
}))).querySelectorAll("amp-ad[type=custom]"), r = 0; r < e.length; r++) { | |
var n = e[r], | |
i = n.getAttribute("data-url"), | |
a = n.getAttribute("data-slot"); | |
null !== a && (i in t || (t[i] = []), t[i].push(encodeURIComponent(a))) | |
} | |
for (var s in t) mr[s] = Me(s, "ampslots", t[s].join(",")) | |
} | |
var o; | |
return mr[this.pi] | |
}, r | |
}(t.BaseElement), | |
lr = function(t) { | |
o(r, t); | |
var e = u(r); | |
function r() { | |
return e.apply(this, arguments) | |
} | |
var n = r.prototype; | |
return n.isLayoutSupported = function(t) { | |
return !0 | |
}, n.upgradeCallback = function() { | |
var t, e = this, | |
r = (m || (m = f({ | |
"adsense": function() { | |
return !0 | |
}, | |
"adzerk": function() { | |
return !0 | |
}, | |
"dianomi": function() { | |
return !0 | |
}, | |
"doubleclick": function() { | |
return !0 | |
}, | |
"fake": function() { | |
return !0 | |
}, | |
"nws": function() { | |
return !0 | |
}, | |
"smartadserver": function() { | |
return !0 | |
}, | |
"valueimpression": function() { | |
return !0 | |
} | |
})), m), | |
n = this.element.getAttribute("data-consent-notification-id"), | |
a = n ? (t = this.element, function(t, e, r, n) { | |
return pt(t, "userNotificationManager", r, void 0).then((function(t) { | |
return function(t, e, r) { | |
return Z(t, "Service %s was requested to be provided through %s, but %s is not loaded in the current page. To fix this problem load the JavaScript file for %s in this page.", "userNotificationManager", r, r, r) | |
}(t, 0, r) | |
})) | |
}(t, 0, "amp-user-notification")).then((function(t) { | |
return t.get(n) | |
})) : i(), | |
s = this.element.getAttribute("type"); | |
return a.then((function() { | |
var t = "custom" === s; | |
if (Z(t || v(w, s) || v(r, s), 'Unknown ad type "'.concat(s, '"')), t) return new hr(e.element); | |
e.win.ampAdSlotIdCounter = e.win.ampAdSlotIdCounter || 0; | |
var n = e.win.ampAdSlotIdCounter++; | |
return new Promise((function(t) { | |
e.getVsync().mutate((function() { | |
e.element.setAttribute("data-amp-slot-index", n); | |
var i = e.element.getAmpDoc().getMetaByName("amp-3p-iframe-src"); | |
if (!r[s] || !r[s](e.win, e.element, i)) return t(new dr(e.element)); | |
var a, o = function(t) { | |
return "amp-ad-network-".concat(t, "-impl") | |
}(s); | |
e.element.setAttribute("data-a4a-upgrade-type", o), t((a = e.win, Q(a, "extensions")).loadElementClass(o).then((function(t) { | |
return new t(e.element) | |
})).catch((function(t) { | |
var r = e.element.tagName; | |
return e.user().error(r, "Unable to load ad implementation for type ", s, ", falling back to 3p, error: ", t), new dr(e.element) | |
}))) | |
})) | |
})) | |
})) | |
}, r | |
}(t.BaseElement); | |
t.registerElement("amp-ad", lr, 'amp-ad iframe,amp-embed iframe{border:0!important;margin:0!important;padding:0!important;position:relative}.i-amphtml-ad-default-holder{position:absolute;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background-color:hsla(0,0%,78%,0.05)}.i-amphtml-ad-default-holder:after{content:"Ad";content:attr(data-ad-holder-text);background-color:transparent;border-radius:2px;color:#696969;font-size:10px;line-height:1;font-family:Arial,sans-serif;padding:3px 4px 1px;border:1px solid #696969}amp-ad[sticky]{visibility:hidden;-ms-flex-align:center;align-items:center}amp-ad[type=adsense],amp-ad[type=doubleclick]{direction:ltr}amp-ad[data-a4a-upgrade-type=amp-ad-network-adsense-impl]>iframe,amp-ad[data-a4a-upgrade-type=amp-ad-network-doubleclick-impl]>iframe{min-height:0;min-width:0}amp-ad[data-a4a-upgrade-type=amp-ad-network-doubleclick-impl][height=fluid]>iframe{height:100%!important;width:100%!important;position:relative}amp-ad[data-a4a-upgrade-type=amp-ad-network-doubleclick-impl][height=fluid]{width:100%!important}amp-ad .amp-ad-close-button{position:absolute;width:28px;height:28px;right:0;background-image:url(\'data:image/svg+xml;charset=utf-8,<svg width="13" height="13" viewBox="341 8 13 13" xmlns="http://www.w3.org/2000/svg"><path fill="%234F4F4F" d="M354 9.31 352.69 8l-5.19 5.19L342.31 8 341 9.31l5.19 5.19-5.19 5.19 1.31 1.31 5.19-5.19 5.19 5.19 1.31-1.31-5.19-5.19z" fill-rule="evenodd"/></svg>\');background-size:13px 13px;background-position:9px;background-color:#fff;background-repeat:no-repeat;box-shadow:0 -1px 1px 0 rgba(0,0,0,0.2);border:none;border-radius:12px 0 0 0}amp-ad .amp-ad-close-button:before{position:absolute;content:"";top:-20px;right:0;left:-20px;bottom:0}amp-ad[sticky=bottom-right] .amp-ad-close-button,amp-ad[sticky=bottom] .amp-ad-close-button,amp-ad[sticky=left] .amp-ad-close-button,amp-ad[sticky=right] .amp-ad-close-button{top:-28px}amp-ad[sticky=top] .amp-ad-close-button{transform:rotate(270deg);bottom:-28px}amp-ad[sticky=left] .amp-ad-close-button{transform:rotate(90deg);left:0}[dir=rtl] amp-ad .amp-ad-close-button{right:auto;left:0;border-top-left-radius:0;border-top-right-radius:12px;background-position:6px}[dir=rtl] amp-ad .amp-ad-close-button:before{right:-20px;left:0}amp-ad[sticky]{z-index:2147483647;position:fixed;overflow:visible!important;box-shadow:0 0 5px 0 rgba(0,0,0,0.2)!important;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}amp-ad[sticky=top]{padding-bottom:5px;top:0}amp-ad[sticky=bottom],amp-ad[sticky=top]{width:100%!important;max-height:20%!important;background:#fff}amp-ad[sticky=bottom]{max-width:100%;padding-bottom:env(safe-area-inset-bottom,0px);bottom:0;padding-top:4px}amp-ad[sticky=bottom-right]{bottom:0;right:0}amp-ad[sticky=left],amp-ad[sticky=right]{background:#fff}amp-ad[sticky=left] iframe,amp-ad[sticky=right] iframe{max-width:120px!important}amp-ad[sticky=left]{left:0}amp-ad[sticky=right]{right:0}@media (max-width:1024px){amp-ad[sticky=left],amp-ad[sticky=right]{display:none!important}}\n/*# sourceURL=/extensions/amp-ad/0.1/amp-ad.css*/'), t.registerElement("amp-embed", lr) | |
}(); | |
/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */ | |
} | |
}); | |
//# sourceMappingURL=amp-ad-0.1.js.map |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment