summaryrefslogtreecommitdiff
path: root/priv/static/packs/extra_polyfills.js.map
blob: 524bdd7e166e6910cb4f148b7ff4aef709bc718d (plain)
1
{"version":3,"sources":["webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///./node_modules/requestidlecallback/index.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/extra_polyfills.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/extra_polyfills.js"],"names":["window","IntersectionObserverEntry","prototype","Object","defineProperty","get","this","intersectionRatio","document","registry","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","target","_observationTargets","some","item","element","nodeType","Error","_registerInstance","push","entry","_monitorIntersections","_checkForIntersections","unobserve","filter","length","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","threshold","Array","isArray","sort","t","i","a","isNaN","_parseRootMargin","opt_rootMargin","margins","split","map","margin","parts","exec","value","parseFloat","unit","_monitoringIntersections","_monitoringInterval","setInterval","addEvent","_domObserver","MutationObserver","attributes","childList","characterData","subtree","clearInterval","removeEvent","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","top","bottom","left","right","width","height","forEach","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","intersectionRect","_computeTargetAndRootIntersection","newEntry","time","performance","now","boundingClientRect","rootBounds","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","display","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","root","body","documentElement","overflow","Math","max","min","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","indexOf","index","splice","targetArea","intersectionArea","Number","toFixed","callback","opt_options","fn","timeout","timer","options","bind","setTimeout","rootMargin","join","node","event","opt_useCapture","addEventListener","attachEvent","removeEventListener","detatchEvent","el","err","child","parentNode","host","assignedSlot","scheduleStart","throttleDelay","lazytimer","lazyraf","id","timestamp","check","undefined","global","requestAnimationFrame","cancelRequestAnimationFrame","clearTimeout","tasks","runAttempts","isRunning","remainingTime","minThrottle","throttle","taskStart","tasklength","IdleDeadline","timeRemaining","Date","setInactive","last","onInputorMutation","scheduleLazy","scheduleAfterRaf","runTasks","scheduleRaf","task","len","timeThreshold","shift","requestIdleCallbackShim","cancelIdleCallbackShim","requestIdleCallback","cancelIdleCallback","e","rIC","timeRemainingProto","IdleCallbackDeadline","getOwnPropertyDescriptor","configurable","call","enumerable","name","capture","passive","request","cancel","OFI","propRegex","testImg","Image","style","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","getAttribute","nativeSetAttribute","setAttribute","autoModeEnabled","setPlaceholder","img","placeholder","onImageReady","naturalWidth","fixOne","parsed","fontFamily","props","getStyle","ofi","skipTest","srcset","src","naturalHeight","descriptors","prop","set","ss","keepSrcUsable","console","warn","picturefill","pf","_","ns","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","replace","backgroundPosition","backgroundRepeat","backgroundOrigin","test","backgroundSize","fix","imgs","opts","startAutoMode","getElementsByTagName","querySelectorAll","tagName","watchMQ","getOfiImageMaybe","HTMLImageElement","String","hijackAttributes","module","exports","objectFitImages"],"mappings":";8EAQA,WACE,aAEA,GAAsB,iBAAXA,OAMX,GAAI,yBAA0BA,QAAU,8BAA+BA,QAAU,sBAAuBA,OAAOC,0BAA0BC,UAGjI,mBAAoBF,OAAOC,0BAA0BC,WACzDC,OAAOC,eAAeJ,OAAOC,0BAA0BC,UAAW,iBAAkB,CAClFG,IAAK,WACH,OAAOC,KAAKC,kBAAoB,SANxC,CAkBA,IAAIC,EAAWR,OAAOQ,SAQlBC,EAAW,GAwEfC,EAAqBR,UAAUS,iBAAmB,IAOlDD,EAAqBR,UAAUU,cAAgB,KAM/CF,EAAqBR,UAAUW,uBAAwB,EAOvDH,EAAqBR,UAAUY,QAAU,SAAUC,GAKjD,IAJ8BT,KAAKU,oBAAoBC,MAAK,SAAUC,GACpE,OAAOA,EAAKC,SAAWJ,KAGzB,CAIA,IAAMA,GAA6B,GAAnBA,EAAOK,SACrB,MAAM,IAAIC,MAAM,6BAGlBf,KAAKgB,oBAELhB,KAAKU,oBAAoBO,KAAK,CAC5BJ,QAASJ,EACTS,MAAO,OAGTlB,KAAKmB,wBAELnB,KAAKoB,2BAQPhB,EAAqBR,UAAUyB,UAAY,SAAUZ,GACnDT,KAAKU,oBAAsBV,KAAKU,oBAAoBY,QAAO,SAAUV,GACnE,OAAOA,EAAKC,SAAWJ,KAGpBT,KAAKU,oBAAoBa,SAC5BvB,KAAKwB,0BAELxB,KAAKyB,wBAQTrB,EAAqBR,UAAU8B,WAAa,WAC1C1B,KAAKU,oBAAsB,GAE3BV,KAAKwB,0BAELxB,KAAKyB,uBAUPrB,EAAqBR,UAAU+B,YAAc,WAC3C,IAAIC,EAAU5B,KAAK6B,eAAeC,QAGlC,OADA9B,KAAK6B,eAAiB,GACfD,GAaTxB,EAAqBR,UAAUmC,gBAAkB,SAAUC,GACzD,IAAIC,EAAYD,GAAiB,CAAC,GAElC,OADKE,MAAMC,QAAQF,KAAYA,EAAY,CAACA,IACrCA,EAAUG,OAAOd,QAAO,SAAUe,EAAGC,EAAGC,GAC7C,GAAgB,iBAALF,GAAiBG,MAAMH,IAAMA,EAAI,GAAKA,EAAI,EACnD,MAAM,IAAItB,MAAM,0DAGlB,OAAOsB,IAAME,EAAED,EAAI,OAgBvBlC,EAAqBR,UAAU6C,iBAAmB,SAAUC,GAC1D,IACIC,GADeD,GAAkB,OACVE,MAAM,OAAOC,KAAI,SAAUC,GACpD,IAAIC,EAAQ,wBAAwBC,KAAKF,GAEzC,IAAKC,EACH,MAAM,IAAIhC,MAAM,qDAGlB,MAAO,CACLkC,MAAOC,WAAWH,EAAM,IACxBI,KAAMJ,EAAM,OAOhB,OAHAJ,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GACnCA,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GACnCA,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GAC5BA,GASTvC,EAAqBR,UAAUuB,sBAAwB,WAChDnB,KAAKoD,2BACRpD,KAAKoD,0BAA2B,EAG5BpD,KAAKM,cACPN,KAAKqD,oBAAsBC,YAAYtD,KAAKoB,uBAAwBpB,KAAKM,gBAEzEiD,EAAS7D,OAAQ,SAAUM,KAAKoB,wBAAwB,GACxDmC,EAASrD,EAAU,SAAUF,KAAKoB,wBAAwB,GAEtDpB,KAAKO,uBAAyB,qBAAsBb,SACtDM,KAAKwD,aAAe,IAAIC,iBAAiBzD,KAAKoB,wBAE9CpB,KAAKwD,aAAahD,QAAQN,EAAU,CAClCwD,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,SAAS,QAYnBzD,EAAqBR,UAAU4B,wBAA0B,WACnDxB,KAAKoD,2BACPpD,KAAKoD,0BAA2B,EAChCU,cAAc9D,KAAKqD,qBACnBrD,KAAKqD,oBAAsB,KAC3BU,EAAYrE,OAAQ,SAAUM,KAAKoB,wBAAwB,GAC3D2C,EAAY7D,EAAU,SAAUF,KAAKoB,wBAAwB,GAEzDpB,KAAKwD,eACPxD,KAAKwD,aAAa9B,aAElB1B,KAAKwD,aAAe,QAY1BpD,EAAqBR,UAAUwB,uBAAyB,WACtD,IAAI4C,EAAchE,KAAKiE,eAEnBC,EAAWF,EAAchE,KAAKmE,eA2V3B,CACLC,IAAK,EACLC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPC,MAAO,EACPC,OAAQ,GA/VVzE,KAAKU,oBAAoBgE,SAAQ,SAAU9D,GACzC,IAAIH,EAASG,EAAKC,QACd8D,EAAaC,EAAsBnE,GAEnCoE,EAAqB7E,KAAK8E,oBAAoBrE,GAE9CsE,EAAWnE,EAAKM,MAEhB8D,EAAmBhB,GAAea,GAAsB7E,KAAKiF,kCAAkCxE,EAAQyD,GAEvGgB,EAAWtE,EAAKM,MAAQ,IAAIvB,EAA0B,CACxDwF,KAqNGzF,OAAO0F,aAAeA,YAAYC,KAAOD,YAAYC,MApNxD5E,OAAQA,EACR6E,mBAAoBX,EACpBY,WAAYrB,EACZc,iBAAkBA,IAGfD,EAEMf,GAAea,EAGpB7E,KAAKwF,qBAAqBT,EAAUG,IACtClF,KAAK6B,eAAeZ,KAAKiE,GAMvBH,GAAYA,EAASU,gBACvBzF,KAAK6B,eAAeZ,KAAKiE,GAZ3BlF,KAAK6B,eAAeZ,KAAKiE,KAe1BlF,MAECA,KAAK6B,eAAeN,QACtBvB,KAAK0F,UAAU1F,KAAK2B,cAAe3B,OAiBvCI,EAAqBR,UAAUqF,kCAAoC,SAAUxE,EAAQyD,GAEnF,GAA+C,QAA3CxE,OAAOiG,iBAAiBlF,GAAQmF,QAApC,CAMA,IALA,IAyO+BC,EAAOC,EAClC1B,EACAC,EACAC,EACAC,EACAC,EACAC,EA9OAO,EADaJ,EAAsBnE,GAEnCsF,EAASC,EAAcvF,GACvBwF,GAAS,GAELA,GAAQ,CACd,IAAIC,EAAa,KACbC,EAAyC,GAAnBJ,EAAOjF,SAAgBpB,OAAOiG,iBAAiBI,GAAU,GAEnF,GAAmC,QAA/BI,EAAoBP,QAAmB,OAiB3C,GAfIG,GAAU/F,KAAKoG,MAAQL,GAAU7F,GACnC+F,GAAS,EACTC,EAAahC,GAMT6B,GAAU7F,EAASmG,MAAQN,GAAU7F,EAASoG,iBAAmD,WAAhCH,EAAoBI,WACvFL,EAAatB,EAAsBmB,IAMnCG,IA+MyBL,EA9MgBK,EA8MTJ,EA9MqBd,EA+MvDZ,SACAC,SACAC,SACAC,SACAC,SACAC,SALAL,EAAMoC,KAAKC,IAAIZ,EAAMzB,IAAK0B,EAAM1B,KAChCC,EAASmC,KAAKE,IAAIb,EAAMxB,OAAQyB,EAAMzB,QACtCC,EAAOkC,KAAKC,IAAIZ,EAAMvB,KAAMwB,EAAMxB,MAClCC,EAAQiC,KAAKE,IAAIb,EAAMtB,MAAOuB,EAAMvB,OAEpCE,EAASJ,EAASD,IApNlBY,GAmNAR,EAAQD,EAAQD,IAEJ,GAAKG,GAAU,GAAK,CAClCL,IAAKA,EACLC,OAAQA,EACRC,KAAMA,EACNC,MAAOA,EACPC,MAAOA,EACPC,OAAQA,KA1NiB,MAGzBsB,EAASC,EAAcD,GAGzB,OAAOf,IAST5E,EAAqBR,UAAUuE,aAAe,WAC5C,IAAID,EAEJ,GAAIlE,KAAKoG,KACPlC,EAAWU,EAAsB5E,KAAKoG,UACjC,CAEL,IAAIO,EAAOzG,EAASoG,gBAChBD,EAAOnG,EAASmG,KACpBnC,EAAW,CACTE,IAAK,EACLE,KAAM,EACNC,MAAOoC,EAAKC,aAAeP,EAAKO,YAChCpC,MAAOmC,EAAKC,aAAeP,EAAKO,YAChCvC,OAAQsC,EAAKE,cAAgBR,EAAKQ,aAClCpC,OAAQkC,EAAKE,cAAgBR,EAAKQ,cAItC,OAAO7G,KAAK8G,wBAAwB5C,IAUtC9D,EAAqBR,UAAUkH,wBAA0B,SAAUC,GACjE,IAAIpE,EAAU3C,KAAKgH,kBAAkBnE,KAAI,SAAUC,EAAQR,GACzD,MAAsB,MAAfQ,EAAOK,KAAeL,EAAOG,MAAQH,EAAOG,OAASX,EAAI,EAAIyE,EAAKvC,MAAQuC,EAAKtC,QAAU,OAG9FwC,EAAU,CACZ7C,IAAK2C,EAAK3C,IAAMzB,EAAQ,GACxB4B,MAAOwC,EAAKxC,MAAQ5B,EAAQ,GAC5B0B,OAAQ0C,EAAK1C,OAAS1B,EAAQ,GAC9B2B,KAAMyC,EAAKzC,KAAO3B,EAAQ,IAI5B,OAFAsE,EAAQzC,MAAQyC,EAAQ1C,MAAQ0C,EAAQ3C,KACxC2C,EAAQxC,OAASwC,EAAQ5C,OAAS4C,EAAQ7C,IACnC6C,GAcT7G,EAAqBR,UAAU4F,qBAAuB,SAAUT,EAAUG,GAGxE,IAAIgC,EAAWnC,GAAYA,EAASU,eAAiBV,EAAS9E,mBAAqB,GAAK,EACpFkH,EAAWjC,EAASO,eAAiBP,EAASjF,mBAAqB,GAAK,EAE5E,GAAIiH,IAAaC,EAEjB,IAAK,IAAI7E,EAAI,EAAGA,EAAItC,KAAKoH,WAAW7F,OAAQe,IAAK,CAC/C,IAAIL,EAAYjC,KAAKoH,WAAW9E,GAGhC,GAAIL,GAAaiF,GAAYjF,GAAakF,GAAYlF,EAAYiF,GAAajF,EAAYkF,EACzF,OAAO,IAWb/G,EAAqBR,UAAUqE,aAAe,WAC5C,OAAQjE,KAAKoG,MAAQiB,EAAanH,EAAUF,KAAKoG,OAUnDhG,EAAqBR,UAAUkF,oBAAsB,SAAUrE,GAC7D,OAAO4G,EAAarH,KAAKoG,MAAQlG,EAAUO,IAS7CL,EAAqBR,UAAUoB,kBAAoB,WAC7Cb,EAASmH,QAAQtH,MAAQ,GAC3BG,EAASc,KAAKjB,OASlBI,EAAqBR,UAAU6B,oBAAsB,WACnD,IAAI8F,EAAQpH,EAASmH,QAAQtH,OACf,GAAVuH,GAAapH,EAASqH,OAAOD,EAAO,IAwL1C7H,OAAOU,qBAAuBA,EAC9BV,OAAOC,0BAA4BA,EA9pBnC,SAASA,EAA0BuB,GACjClB,KAAKmF,KAAOjE,EAAMiE,KAClBnF,KAAKS,OAASS,EAAMT,OACpBT,KAAKuF,WAAarE,EAAMqE,WACxBvF,KAAKsF,mBAAqBpE,EAAMoE,mBAChCtF,KAAKgF,iBAAmB9D,EAAM8D,kBAmmBvB,CACLZ,IAAK,EACLC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPC,MAAO,EACPC,OAAQ,GAxmBVzE,KAAKyF,iBAAmBvE,EAAM8D,iBAE9B,IAAIL,EAAa3E,KAAKsF,mBAClBmC,EAAa9C,EAAWH,MAAQG,EAAWF,OAC3CO,EAAmBhF,KAAKgF,iBACxB0C,EAAmB1C,EAAiBR,MAAQQ,EAAiBP,OAK/DzE,KAAKC,kBAHHwH,EAGuBE,QAAQD,EAAmBD,GAAYG,QAAQ,IAG/C5H,KAAKyF,eAAiB,EAAI,EAcvD,SAASrF,EAAqByH,EAAUC,GACtC,IAydgBC,EAAIC,EAChBC,EA1dAC,EAAUJ,GAAe,GAE7B,GAAuB,mBAAZD,EACT,MAAM,IAAI9G,MAAM,+BAGlB,GAAImH,EAAQ9B,MAAiC,GAAzB8B,EAAQ9B,KAAKtF,SAC/B,MAAM,IAAIC,MAAM,2BAIlBf,KAAKoB,wBA8cW2G,EA9cuB/H,KAAKoB,uBAAuB+G,KAAKnI,MA8cpDgI,EA9c2DhI,KAAKK,iBA+chF4H,EAAQ,KACL,WACAA,IACHA,EAAQG,YAAW,WACjBL,IACAE,EAAQ,OACPD,MAndPhI,KAAK0F,UAAYmC,EACjB7H,KAAKU,oBAAsB,GAC3BV,KAAK6B,eAAiB,GACtB7B,KAAKgH,kBAAoBhH,KAAKyC,iBAAiByF,EAAQG,YAEvDrI,KAAKoH,WAAapH,KAAK+B,gBAAgBmG,EAAQjG,WAC/CjC,KAAKoG,KAAO8B,EAAQ9B,MAAQ,KAC5BpG,KAAKqI,WAAarI,KAAKgH,kBAAkBnE,KAAI,SAAUC,GACrD,OAAOA,EAAOG,MAAQH,EAAOK,QAC5BmF,KAAK,KAwdV,SAAS/E,EAASgF,EAAMC,EAAOT,EAAIU,GACG,mBAAzBF,EAAKG,iBACdH,EAAKG,iBAAiBF,EAAOT,EAAIU,IAAkB,GACf,mBAApBF,EAAKI,aACrBJ,EAAKI,YAAY,KAAOH,EAAOT,GAanC,SAAShE,EAAYwE,EAAMC,EAAOT,EAAIU,GACG,mBAA5BF,EAAKK,oBACdL,EAAKK,oBAAoBJ,EAAOT,EAAIU,IAAkB,GACjB,mBAArBF,EAAKM,cACrBN,EAAKM,aAAa,KAAOL,EAAOT,GAmCpC,SAASnD,EAAsBkE,GAC7B,IAAI/B,EAEJ,IACEA,EAAO+B,EAAGlE,wBACV,MAAOmE,IAIT,OAAKhC,GAECA,EAAKvC,OAASuC,EAAKtC,SACvBsC,EAAO,CACL3C,IAAK2C,EAAK3C,IACVG,MAAOwC,EAAKxC,MACZF,OAAQ0C,EAAK1C,OACbC,KAAMyC,EAAKzC,KACXE,MAAOuC,EAAKxC,MAAQwC,EAAKzC,KACzBG,OAAQsC,EAAK1C,OAAS0C,EAAK3C,MAIxB2C,GAUA,CACL3C,IAAK,EACLC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPC,MAAO,EACPC,OAAQ,GAYZ,SAAS4C,EAAatB,EAAQiD,GAG5B,IAFA,IAAIT,EAAOS,EAEJT,GAAM,CACX,GAAIA,GAAQxC,EAAQ,OAAO,EAC3BwC,EAAOvC,EAAcuC,GAGvB,OAAO,EAUT,SAASvC,EAAcuC,GACrB,IAAIxC,EAASwC,EAAKU,WAElB,OAAIlD,GAA6B,IAAnBA,EAAOjF,UAAkBiF,EAAOmD,KAErCnD,EAAOmD,KAGZnD,GAAUA,EAAOoD,aAEZpD,EAAOoD,aAAaF,WAGtBlD,GApsBX,I,sBCRA,sBAEI,EAAO,QAAW,0BAAP,EAMZ,WACD,aAEA,IAAIqD,EAAeC,EAAeC,EAAWC,EA6B3BxB,EACZyB,EAAIC,EAGJC,EAhCFtD,EAAwB,oBAAV1G,OAAwBA,OAA0BiK,aAAVC,EAAsBA,EAAS5J,MAAQ,GAC7F6J,EAAwBzD,EAAK0D,6BAA+B1D,EAAKyD,uBAAyBzB,WAC1F0B,EAA8B1D,EAAK0D,6BAA+BC,aAClEC,EAAQ,GACRC,EAAc,EACdC,GAAY,EACZC,EAAgB,EAChBC,EAAc,GACdC,EAAW,IACX9C,EAAQ,EACR+C,EAAY,EACZC,EAAa,EACbC,EAAe,CACjB,iBACE,OAAO,GAGTC,cAAe,WACb,IAAIA,EAAgBN,GAAiBO,KAAKrF,MAAQiF,GAClD,OAAOG,EAAgB,EAAI,EAAIA,IAG/BE,GAMc5C,EANS,WACzBoC,EAAgB,GAChBE,EAAW,GACXD,EAAc,GAOVV,EAAQ,SAASA,IACnB,IAAIkB,EAAOF,KAAKrF,MAAQoE,EAEpBmB,EALK,GAMPpB,EAAKpB,WAAWsB,EANT,GAMuBkB,IAE9BpB,EAAK,KACLzB,MAIG,WACL0B,EAAYiB,KAAKrF,MAEZmE,IACHA,EAAKpB,WAAWsB,EAjBT,OAoCb,SAASmB,IACS,KAAZR,IACFF,EAAgB,EAChBE,EAAW,IACXD,EAAc,GAEVF,IAnBFA,IACEX,GACFO,EAA4BP,GAG1BD,GACFS,aAAaT,GAGfY,GAAY,GAYVY,MAIJH,IAGF,SAASI,IACPxB,EAAU,KACVD,EAAYlB,WAAW4C,EAAU,GAGnC,SAASC,IACP3B,EAAY,KACZO,EAAsBkB,GAGxB,SAASD,IACHZ,IAIJb,EAAgBgB,GAAYK,KAAKrF,MAAQiF,GACzClB,EAAgBsB,KAAKrF,MACrB6E,GAAY,EAERE,GAAef,EAAgBe,IACjCf,EAAgBe,GAGdf,EAAgB,EAClBC,EAAYlB,WAAW6C,EAAa5B,IAEpCA,EAAgB,EAChB4B,MAIJ,SAASD,IACP,IAAIE,EAAM5I,EAAG6I,EACTC,EAAgBjB,EAAgB,EAAI,EAAI,EAK5C,GAJAG,EAAYI,KAAKrF,MACjB6E,GAAY,EACZZ,EAAY,KAERW,EAAc,GAAKK,EAAYjB,EAAgB,GAAKD,EACtD,IAAK9G,EAAI,EAAG6I,EAAMnB,EAAMzI,OAAQe,EAAI6I,GAAOX,EAAaC,gBAAkBW,EAAe9I,IACvF4I,EAAOlB,EAAMqB,QACbd,IAEIW,GACFA,EAAKV,GAKPR,EAAMzI,OACRuJ,IAEAb,EAAc,EAIlB,SAASqB,EAAwBJ,GAI/B,OAHA3D,IACAyC,EAAM/I,KAAKiK,GACXJ,IACOvD,EAGT,SAASgE,EAAuB/B,GAC9B,IAAIjC,EAAQiC,EAAK,EAAIe,EAEjBP,EAAMzC,KACRyC,EAAMzC,GAAS,MAInB,GAAKnB,EAAKoF,qBAAwBpF,EAAKqF,mBAyBrC,IACErF,EAAKoF,qBAAoB,cAAgB,CACvCxD,QAAS,IAEX,MAAO0D,IACP,SAAWC,GACT,IAAIC,EAAoBnB,EAUxB,GARArE,EAAKoF,oBAAsB,SAAUzD,EAAIC,GACvC,OAAIA,GAAqC,iBAAnBA,EAAQA,QACrB2D,EAAI5D,EAAIC,EAAQA,SAGlB2D,EAAI5D,IAGT3B,EAAKyF,uBAAyBD,EAAqBC,qBAAqBjM,WAAY,CAGtF,KAFA6K,EAAgB5K,OAAOiM,yBAAyBF,EAAoB,oBAE7CnB,EAAcsB,eAAiBtB,EAAc1K,IAClE,OAGFF,OAAOC,eAAe8L,EAAoB,gBAAiB,CACzD3I,MAAO,WACL,OAAOwH,EAAc1K,IAAIiM,KAAKhM,OAEhCiM,YAAY,EACZF,cAAc,KAvBpB,CA0BG3F,EAAKoF,0BAvDVpF,EAAKoF,oBAAsBF,EAC3BlF,EAAKqF,mBAAqBF,EAEtBnF,EAAKlG,UAAYA,SAASwI,mBAC5BtC,EAAKsC,iBAAiB,SAAUmC,GAAmB,GACnDzE,EAAKsC,iBAAiB,SAAUmC,GAChC3K,SAASwI,iBAAiB,QAASmC,GAAmB,GACtD3K,SAASwI,iBAAiB,YAAamC,GAAmB,GAC1D,CAAC,QAAS,WAAY,aAAc,aAAanG,SAAQ,SAAUwH,GACjEhM,SAASwI,iBAAiBwD,EAAMrB,EAAmB,CACjDsB,SAAS,EACTC,SAAS,OAIThG,EAAK3C,kBACP,IAAIA,iBAAiBoH,GAAmBrK,QAAQN,SAASoG,gBAAiB,CACxE3C,WAAW,EACXE,SAAS,EACTH,YAAY,KAwCpB,MAAO,CACL2I,QAASf,EACTgB,OAAQf,KAhOU,iC,oDCCtB,IAAIgB,EAAM,6BACNC,EAAY,mDACZC,EAA2B,oBAAVC,MAAwB,CAC3CC,MAAO,CACL,kBAAmB,IAEnB,IAAID,MACJE,EAAqB,eAAgBH,EAAQE,MAC7CE,EAA0B,oBAAqBJ,EAAQE,MACvDG,EAAe,oBAAqBL,EAAQE,MAC5CI,EAAmD,iBAAvBN,EAAQO,WACpCC,EAAqBR,EAAQS,aAC7BC,EAAqBV,EAAQW,aAC7BC,GAAkB,EA0CtB,SAASC,EAAeC,EAAK/I,EAAOC,GAElC,IAAI+I,EAzCG,wEAyC6BhJ,GAAS,GAzCuC,cAyCpCC,GAAU,GAzC6C,iBA2CnGwI,EAAmBjB,KAAKuB,EAAK,SAAWC,GAC1CL,EAAmBnB,KAAKuB,EAAK,MAAOC,GAIxC,SAASC,EAAaF,EAAK1F,GAGrB0F,EAAIG,aACN7F,EAAS0F,GAETnF,WAAWqF,EAAc,IAAKF,EAAK1F,GAIvC,SAAS8F,EAAO7E,GACd,IAAI6D,EAhCN,SAAkB7D,GAKhB,IAJA,IACI8E,EADAjB,EAAQhH,iBAAiBmD,GAAI+E,WAE7BC,EAAQ,GAEgC,QAApCF,EAASpB,EAAUxJ,KAAK2J,KAC9BmB,EAAMF,EAAO,IAAMA,EAAO,GAG5B,OAAOE,EAuBKC,CAASjF,GACjBkF,EAAMlF,EAAGyD,GAIb,GAHAI,EAAM,cAAgBA,EAAM,eAAiB,QAGxCqB,EAAIT,IAAK,CAEZ,GAA4B,SAAxBZ,EAAM,cACR,OAIF,IAAKqB,EAAIC,UACTrB,IACCD,EAAM,mBAEH,OAKN,IAAKqB,EAAIT,IAAK,CACZS,EAAIT,IAAM,IAAIb,MAAM5D,EAAGtE,MAAOsE,EAAGrE,QACjCuJ,EAAIT,IAAIW,OAASjB,EAAmBjB,KAAKlD,EAAI,oBAAsBA,EAAGoF,OACtEF,EAAIT,IAAIY,IAAMlB,EAAmBjB,KAAKlD,EAAI,iBAAmBA,EAAGqF,IAGhEhB,EAAmBnB,KAAKlD,EAAI,eAAgBA,EAAGqF,KAE3CrF,EAAGoF,QACLf,EAAmBnB,KAAKlD,EAAI,kBAAmBA,EAAGoF,QAGpDZ,EAAexE,EAAIA,EAAG4E,cAAgB5E,EAAGtE,MAAOsE,EAAGsF,eAAiBtF,EAAGrE,QAEnEqE,EAAGoF,SACLpF,EAAGoF,OAAS,IAGd,KAgCJ,SAAuBpF,GACrB,IAAIuF,EAAc,CAChBtO,IAAK,SAAauO,GAChB,OAAOxF,EAAGyD,GAAKgB,IAAIe,GAAc,QAEnCC,IAAK,SAAatL,EAAOqL,GAKvB,OAJAxF,EAAGyD,GAAKgB,IAAIe,GAAc,OAASrL,EACnCkK,EAAmBnB,KAAKlD,EAAI,YAAcwF,EAAMrL,GAEhD0K,EAAO7E,GACA7F,IAGXpD,OAAOC,eAAegJ,EAAI,MAAOuF,GACjCxO,OAAOC,eAAegJ,EAAI,aAAc,CACtC/I,IAAK,WACH,OAAOsO,EAAYtO,IAAI,iBAG3BF,OAAOC,eAAegJ,EAAI,SAAU,CAClC/I,IAAK,WACH,OAAOsO,EAAYtO,IAAI,WAEzBwO,IAAK,SAAaC,GAChB,OAAOH,EAAYE,IAAIC,EAAI,aAvD3BC,CAAc3F,GACd,MAAOC,GACHrJ,OAAOgP,SACTA,QAAQC,KAAK,oCAnGrB,SAA4B7F,GAC1B,GAAIA,EAAGoF,SAAWnB,GAAsBrN,OAAOkP,YAAa,CAC1D,IAAIC,EAAKnP,OAAOkP,YAAYE,EAEvBhG,EAAG+F,EAAGE,KAAQjG,EAAG+F,EAAGE,IAAIC,QAE3BH,EAAGI,QAAQnG,EAAI,CACboG,UAAU,IAITpG,EAAG+F,EAAGE,IAAII,SAEbrG,EAAG+F,EAAGE,IAAIK,WAAY,EACtBP,EAAGI,QAAQnG,EAAI,CACboG,UAAU,KAKdpG,EAAGkE,WAAalE,EAAG+F,EAAGE,IAAII,QAAUrG,EAAGqF,KAoFzCkB,CAAmBrB,EAAIT,KACvBzE,EAAG6D,MAAM2C,gBAAkB,SAAYtB,EAAIT,IAAIP,YAAcgB,EAAIT,IAAIY,KAAKoB,QAAQ,KAAM,OAAS,KACjGzG,EAAG6D,MAAM6C,mBAAqB7C,EAAM,oBAAsB,SAC1D7D,EAAG6D,MAAM8C,iBAAmB,YAC5B3G,EAAG6D,MAAM+C,iBAAmB,cAExB,aAAaC,KAAKhD,EAAM,eAC1Bc,EAAaO,EAAIT,KAAK,WAChBS,EAAIT,IAAIG,aAAe5E,EAAGtE,OAASwJ,EAAIT,IAAIa,cAAgBtF,EAAGrE,OAChEqE,EAAG6D,MAAMiD,eAAiB,UAE1B9G,EAAG6D,MAAMiD,eAAiB,UAI9B9G,EAAG6D,MAAMiD,eAAiBjD,EAAM,cAAc4C,QAAQ,OAAQ,QAAQA,QAAQ,OAAQ,aAGxF9B,EAAaO,EAAIT,KAAK,SAAUA,GAC9BD,EAAexE,EAAIyE,EAAIG,aAAcH,EAAIa,kBAiD7C,SAASyB,EAAIC,EAAMC,GACjB,IAAIC,GAAiB3C,IAAoByC,EAIzC,GAHAC,EAAOA,GAAQ,GACfD,EAAOA,GAAQ,MAEXjD,IAA2BkD,EAAK9B,WAAanB,EAC/C,OAAO,EAII,QAATgD,EACFA,EAAO5P,SAAS+P,qBAAqB,OACZ,iBAATH,EAChBA,EAAO5P,SAASgQ,iBAAiBJ,GACtB,WAAYA,IACvBA,EAAO,CAACA,IAIV,IAAK,IAAIxN,EAAI,EAAGA,EAAIwN,EAAKvO,OAAQe,IAC/BwN,EAAKxN,GAAGiK,GAAOuD,EAAKxN,GAAGiK,IAAQ,CAC7B0B,SAAU8B,EAAK9B,UAEjBN,EAAOmC,EAAKxN,IAGV0N,IACF9P,SAASmG,KAAKqC,iBAAiB,QAAQ,SAAUgD,GACtB,QAArBA,EAAEjL,OAAO0P,SACXN,EAAInE,EAAEjL,OAAQ,CACZwN,SAAU8B,EAAK9B,cAGlB,GACHZ,GAAkB,EAClByC,EAAO,OAILC,EAAKK,SACP1Q,OAAOgJ,iBAAiB,SAAUmH,EAAI1H,KAAK,KAAM2H,EAAM,CACrD7B,SAAU8B,EAAK9B,YAKrB4B,EAAIjD,kBAAoBA,EACxBiD,EAAIhD,uBAAyBA,EA/D7B,WACE,SAASwD,EAAiBvH,EAAIoD,GAC5B,OAAOpD,EAAGyD,IAAQzD,EAAGyD,GAAKgB,MAAiB,QAATrB,GAA2B,WAATA,GAAqBpD,EAAGyD,GAAKgB,IAAMzE,EAGpF+D,IACHyD,iBAAiB1Q,UAAUsN,aAAe,SAAUhB,GAClD,OAAOe,EAAmBjB,KAAKqE,EAAiBrQ,KAAMkM,GAAOA,IAG/DoE,iBAAiB1Q,UAAUwN,aAAe,SAAUlB,EAAMjJ,GACxD,OAAOkK,EAAmBnB,KAAKqE,EAAiBrQ,KAAMkM,GAAOA,EAAMqE,OAAOtN,MAqDhFuN,GACAC,EAAOC,QAAUb,G,iCCnPjB,2CAIAc,M,iCCJA,2CAIAA","file":"extra_polyfills.js","sourcesContent":["/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n *  https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function () {\n  'use strict'; // Exit early if we're not running in a browser.\n\n  if (typeof window !== 'object') {\n    return;\n  } // Exit early if all IntersectionObserver and IntersectionObserverEntry\n  // features are natively supported.\n\n\n  if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n    // Minimal polyfill for Edge 15's lack of `isIntersecting`\n    // See: https://github.com/w3c/IntersectionObserver/issues/211\n    if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n      Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n        get: function get() {\n          return this.intersectionRatio > 0;\n        }\n      });\n    }\n\n    return;\n  }\n  /**\n   * A local reference to the document.\n   */\n\n\n  var document = window.document;\n  /**\n   * An IntersectionObserver registry. This registry exists to hold a strong\n   * reference to IntersectionObserver instances currently observing a target\n   * element. Without this registry, instances without another reference may be\n   * garbage collected.\n   */\n\n  var registry = [];\n  /**\n   * Creates the global IntersectionObserverEntry constructor.\n   * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n   * @param {Object} entry A dictionary of instance properties.\n   * @constructor\n   */\n\n  function IntersectionObserverEntry(entry) {\n    this.time = entry.time;\n    this.target = entry.target;\n    this.rootBounds = entry.rootBounds;\n    this.boundingClientRect = entry.boundingClientRect;\n    this.intersectionRect = entry.intersectionRect || getEmptyRect();\n    this.isIntersecting = !!entry.intersectionRect; // Calculates the intersection ratio.\n\n    var targetRect = this.boundingClientRect;\n    var targetArea = targetRect.width * targetRect.height;\n    var intersectionRect = this.intersectionRect;\n    var intersectionArea = intersectionRect.width * intersectionRect.height; // Sets intersection ratio.\n\n    if (targetArea) {\n      // Round the intersection ratio to avoid floating point math issues:\n      // https://github.com/w3c/IntersectionObserver/issues/324\n      this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n    } else {\n      // If area is zero and is intersecting, sets to 1, otherwise to 0\n      this.intersectionRatio = this.isIntersecting ? 1 : 0;\n    }\n  }\n  /**\n   * Creates the global IntersectionObserver constructor.\n   * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n   * @param {Function} callback The function to be invoked after intersection\n   *     changes have queued. The function is not invoked if the queue has\n   *     been emptied by calling the `takeRecords` method.\n   * @param {Object=} opt_options Optional configuration options.\n   * @constructor\n   */\n\n\n  function IntersectionObserver(callback, opt_options) {\n    var options = opt_options || {};\n\n    if (typeof callback != 'function') {\n      throw new Error('callback must be a function');\n    }\n\n    if (options.root && options.root.nodeType != 1) {\n      throw new Error('root must be an Element');\n    } // Binds and throttles `this._checkForIntersections`.\n\n\n    this._checkForIntersections = throttle(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT); // Private properties.\n\n    this._callback = callback;\n    this._observationTargets = [];\n    this._queuedEntries = [];\n    this._rootMarginValues = this._parseRootMargin(options.rootMargin); // Public properties.\n\n    this.thresholds = this._initThresholds(options.threshold);\n    this.root = options.root || null;\n    this.rootMargin = this._rootMarginValues.map(function (margin) {\n      return margin.value + margin.unit;\n    }).join(' ');\n  }\n  /**\n   * The minimum interval within which the document will be checked for\n   * intersection changes.\n   */\n\n\n  IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n  /**\n   * The frequency in which the polyfill polls for intersection changes.\n   * this can be updated on a per instance basis and must be set prior to\n   * calling `observe` on the first target.\n   */\n\n  IntersectionObserver.prototype.POLL_INTERVAL = null;\n  /**\n   * Use a mutation observer on the root element\n   * to detect intersection changes.\n   */\n\n  IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n  /**\n   * Starts observing a target element for intersection changes based on\n   * the thresholds values.\n   * @param {Element} target The DOM element to observe.\n   */\n\n  IntersectionObserver.prototype.observe = function (target) {\n    var isTargetAlreadyObserved = this._observationTargets.some(function (item) {\n      return item.element == target;\n    });\n\n    if (isTargetAlreadyObserved) {\n      return;\n    }\n\n    if (!(target && target.nodeType == 1)) {\n      throw new Error('target must be an Element');\n    }\n\n    this._registerInstance();\n\n    this._observationTargets.push({\n      element: target,\n      entry: null\n    });\n\n    this._monitorIntersections();\n\n    this._checkForIntersections();\n  };\n  /**\n   * Stops observing a target element for intersection changes.\n   * @param {Element} target The DOM element to observe.\n   */\n\n\n  IntersectionObserver.prototype.unobserve = function (target) {\n    this._observationTargets = this._observationTargets.filter(function (item) {\n      return item.element != target;\n    });\n\n    if (!this._observationTargets.length) {\n      this._unmonitorIntersections();\n\n      this._unregisterInstance();\n    }\n  };\n  /**\n   * Stops observing all target elements for intersection changes.\n   */\n\n\n  IntersectionObserver.prototype.disconnect = function () {\n    this._observationTargets = [];\n\n    this._unmonitorIntersections();\n\n    this._unregisterInstance();\n  };\n  /**\n   * Returns any queue entries that have not yet been reported to the\n   * callback and clears the queue. This can be used in conjunction with the\n   * callback to obtain the absolute most up-to-date intersection information.\n   * @return {Array} The currently queued entries.\n   */\n\n\n  IntersectionObserver.prototype.takeRecords = function () {\n    var records = this._queuedEntries.slice();\n\n    this._queuedEntries = [];\n    return records;\n  };\n  /**\n   * Accepts the threshold value from the user configuration object and\n   * returns a sorted array of unique threshold values. If a value is not\n   * between 0 and 1 and error is thrown.\n   * @private\n   * @param {Array|number=} opt_threshold An optional threshold value or\n   *     a list of threshold values, defaulting to [0].\n   * @return {Array} A sorted list of unique and valid threshold values.\n   */\n\n\n  IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\n    var threshold = opt_threshold || [0];\n    if (!Array.isArray(threshold)) threshold = [threshold];\n    return threshold.sort().filter(function (t, i, a) {\n      if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n        throw new Error('threshold must be a number between 0 and 1 inclusively');\n      }\n\n      return t !== a[i - 1];\n    });\n  };\n  /**\n   * Accepts the rootMargin value from the user configuration object\n   * and returns an array of the four margin values as an object containing\n   * the value and unit properties. If any of the values are not properly\n   * formatted or use a unit other than px or %, and error is thrown.\n   * @private\n   * @param {string=} opt_rootMargin An optional rootMargin value,\n   *     defaulting to '0px'.\n   * @return {Array<Object>} An array of margin objects with the keys\n   *     value and unit.\n   */\n\n\n  IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {\n    var marginString = opt_rootMargin || '0px';\n    var margins = marginString.split(/\\s+/).map(function (margin) {\n      var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n\n      if (!parts) {\n        throw new Error('rootMargin must be specified in pixels or percent');\n      }\n\n      return {\n        value: parseFloat(parts[1]),\n        unit: parts[2]\n      };\n    }); // Handles shorthand.\n\n    margins[1] = margins[1] || margins[0];\n    margins[2] = margins[2] || margins[0];\n    margins[3] = margins[3] || margins[1];\n    return margins;\n  };\n  /**\n   * Starts polling for intersection changes if the polling is not already\n   * happening, and if the page's visibility state is visible.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._monitorIntersections = function () {\n    if (!this._monitoringIntersections) {\n      this._monitoringIntersections = true; // If a poll interval is set, use polling instead of listening to\n      // resize and scroll events or DOM mutations.\n\n      if (this.POLL_INTERVAL) {\n        this._monitoringInterval = setInterval(this._checkForIntersections, this.POLL_INTERVAL);\n      } else {\n        addEvent(window, 'resize', this._checkForIntersections, true);\n        addEvent(document, 'scroll', this._checkForIntersections, true);\n\n        if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n          this._domObserver = new MutationObserver(this._checkForIntersections);\n\n          this._domObserver.observe(document, {\n            attributes: true,\n            childList: true,\n            characterData: true,\n            subtree: true\n          });\n        }\n      }\n    }\n  };\n  /**\n   * Stops polling for intersection changes.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._unmonitorIntersections = function () {\n    if (this._monitoringIntersections) {\n      this._monitoringIntersections = false;\n      clearInterval(this._monitoringInterval);\n      this._monitoringInterval = null;\n      removeEvent(window, 'resize', this._checkForIntersections, true);\n      removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n      if (this._domObserver) {\n        this._domObserver.disconnect();\n\n        this._domObserver = null;\n      }\n    }\n  };\n  /**\n   * Scans each observation target for intersection changes and adds them\n   * to the internal entries queue. If new entries are found, it\n   * schedules the callback to be invoked.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._checkForIntersections = function () {\n    var rootIsInDom = this._rootIsInDom();\n\n    var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n    this._observationTargets.forEach(function (item) {\n      var target = item.element;\n      var targetRect = getBoundingClientRect(target);\n\n      var rootContainsTarget = this._rootContainsTarget(target);\n\n      var oldEntry = item.entry;\n\n      var intersectionRect = rootIsInDom && rootContainsTarget && this._computeTargetAndRootIntersection(target, rootRect);\n\n      var newEntry = item.entry = new IntersectionObserverEntry({\n        time: now(),\n        target: target,\n        boundingClientRect: targetRect,\n        rootBounds: rootRect,\n        intersectionRect: intersectionRect\n      });\n\n      if (!oldEntry) {\n        this._queuedEntries.push(newEntry);\n      } else if (rootIsInDom && rootContainsTarget) {\n        // If the new entry intersection ratio has crossed any of the\n        // thresholds, add a new entry.\n        if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n          this._queuedEntries.push(newEntry);\n        }\n      } else {\n        // If the root is not in the DOM or target is not contained within\n        // root but the previous entry for this target had an intersection,\n        // add a new record indicating removal.\n        if (oldEntry && oldEntry.isIntersecting) {\n          this._queuedEntries.push(newEntry);\n        }\n      }\n    }, this);\n\n    if (this._queuedEntries.length) {\n      this._callback(this.takeRecords(), this);\n    }\n  };\n  /**\n   * Accepts a target and root rect computes the intersection between then\n   * following the algorithm in the spec.\n   * TODO(philipwalton): at this time clip-path is not considered.\n   * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n   * @param {Element} target The target DOM element\n   * @param {Object} rootRect The bounding rect of the root after being\n   *     expanded by the rootMargin value.\n   * @return {?Object} The final intersection rect object or undefined if no\n   *     intersection is found.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._computeTargetAndRootIntersection = function (target, rootRect) {\n    // If the element isn't displayed, an intersection can't happen.\n    if (window.getComputedStyle(target).display == 'none') return;\n    var targetRect = getBoundingClientRect(target);\n    var intersectionRect = targetRect;\n    var parent = getParentNode(target);\n    var atRoot = false;\n\n    while (!atRoot) {\n      var parentRect = null;\n      var parentComputedStyle = parent.nodeType == 1 ? window.getComputedStyle(parent) : {}; // If the parent isn't displayed, an intersection can't happen.\n\n      if (parentComputedStyle.display == 'none') return;\n\n      if (parent == this.root || parent == document) {\n        atRoot = true;\n        parentRect = rootRect;\n      } else {\n        // If the element has a non-visible overflow, and it's not the <body>\n        // or <html> element, update the intersection rect.\n        // Note: <body> and <html> cannot be clipped to a rect that's not also\n        // the document rect, so no need to compute a new intersection.\n        if (parent != document.body && parent != document.documentElement && parentComputedStyle.overflow != 'visible') {\n          parentRect = getBoundingClientRect(parent);\n        }\n      } // If either of the above conditionals set a new parentRect,\n      // calculate new intersection data.\n\n\n      if (parentRect) {\n        intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n        if (!intersectionRect) break;\n      }\n\n      parent = getParentNode(parent);\n    }\n\n    return intersectionRect;\n  };\n  /**\n   * Returns the root rect after being expanded by the rootMargin value.\n   * @return {Object} The expanded root rect.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._getRootRect = function () {\n    var rootRect;\n\n    if (this.root) {\n      rootRect = getBoundingClientRect(this.root);\n    } else {\n      // Use <html>/<body> instead of window since scroll bars affect size.\n      var html = document.documentElement;\n      var body = document.body;\n      rootRect = {\n        top: 0,\n        left: 0,\n        right: html.clientWidth || body.clientWidth,\n        width: html.clientWidth || body.clientWidth,\n        bottom: html.clientHeight || body.clientHeight,\n        height: html.clientHeight || body.clientHeight\n      };\n    }\n\n    return this._expandRectByRootMargin(rootRect);\n  };\n  /**\n   * Accepts a rect and expands it by the rootMargin value.\n   * @param {Object} rect The rect object to expand.\n   * @return {Object} The expanded rect.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n    var margins = this._rootMarginValues.map(function (margin, i) {\n      return margin.unit == 'px' ? margin.value : margin.value * (i % 2 ? rect.width : rect.height) / 100;\n    });\n\n    var newRect = {\n      top: rect.top - margins[0],\n      right: rect.right + margins[1],\n      bottom: rect.bottom + margins[2],\n      left: rect.left - margins[3]\n    };\n    newRect.width = newRect.right - newRect.left;\n    newRect.height = newRect.bottom - newRect.top;\n    return newRect;\n  };\n  /**\n   * Accepts an old and new entry and returns true if at least one of the\n   * threshold values has been crossed.\n   * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n   *    particular target element or null if no previous entry exists.\n   * @param {IntersectionObserverEntry} newEntry The current entry for a\n   *    particular target element.\n   * @return {boolean} Returns true if a any threshold has been crossed.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._hasCrossedThreshold = function (oldEntry, newEntry) {\n    // To make comparing easier, an entry that has a ratio of 0\n    // but does not actually intersect is given a value of -1\n    var oldRatio = oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1;\n    var newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1; // Ignore unchanged ratios\n\n    if (oldRatio === newRatio) return;\n\n    for (var i = 0; i < this.thresholds.length; i++) {\n      var threshold = this.thresholds[i]; // Return true if an entry matches a threshold or if the new ratio\n      // and the old ratio are on the opposite sides of a threshold.\n\n      if (threshold == oldRatio || threshold == newRatio || threshold < oldRatio !== threshold < newRatio) {\n        return true;\n      }\n    }\n  };\n  /**\n   * Returns whether or not the root element is an element and is in the DOM.\n   * @return {boolean} True if the root element is an element and is in the DOM.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._rootIsInDom = function () {\n    return !this.root || containsDeep(document, this.root);\n  };\n  /**\n   * Returns whether or not the target element is a child of root.\n   * @param {Element} target The target element to check.\n   * @return {boolean} True if the target element is a child of root.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._rootContainsTarget = function (target) {\n    return containsDeep(this.root || document, target);\n  };\n  /**\n   * Adds the instance to the global IntersectionObserver registry if it isn't\n   * already present.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._registerInstance = function () {\n    if (registry.indexOf(this) < 0) {\n      registry.push(this);\n    }\n  };\n  /**\n   * Removes the instance from the global IntersectionObserver registry.\n   * @private\n   */\n\n\n  IntersectionObserver.prototype._unregisterInstance = function () {\n    var index = registry.indexOf(this);\n    if (index != -1) registry.splice(index, 1);\n  };\n  /**\n   * Returns the result of the performance.now() method or null in browsers\n   * that don't support the API.\n   * @return {number} The elapsed time since the page was requested.\n   */\n\n\n  function now() {\n    return window.performance && performance.now && performance.now();\n  }\n  /**\n   * Throttles a function and delays its execution, so it's only called at most\n   * once within a given time period.\n   * @param {Function} fn The function to throttle.\n   * @param {number} timeout The amount of time that must pass before the\n   *     function can be called again.\n   * @return {Function} The throttled function.\n   */\n\n\n  function throttle(fn, timeout) {\n    var timer = null;\n    return function () {\n      if (!timer) {\n        timer = setTimeout(function () {\n          fn();\n          timer = null;\n        }, timeout);\n      }\n    };\n  }\n  /**\n   * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n   * @param {Node} node The DOM node to add the event handler to.\n   * @param {string} event The event name.\n   * @param {Function} fn The event handler to add.\n   * @param {boolean} opt_useCapture Optionally adds the even to the capture\n   *     phase. Note: this only works in modern browsers.\n   */\n\n\n  function addEvent(node, event, fn, opt_useCapture) {\n    if (typeof node.addEventListener == 'function') {\n      node.addEventListener(event, fn, opt_useCapture || false);\n    } else if (typeof node.attachEvent == 'function') {\n      node.attachEvent('on' + event, fn);\n    }\n  }\n  /**\n   * Removes a previously added event handler from a DOM node.\n   * @param {Node} node The DOM node to remove the event handler from.\n   * @param {string} event The event name.\n   * @param {Function} fn The event handler to remove.\n   * @param {boolean} opt_useCapture If the event handler was added with this\n   *     flag set to true, it should be set to true here in order to remove it.\n   */\n\n\n  function removeEvent(node, event, fn, opt_useCapture) {\n    if (typeof node.removeEventListener == 'function') {\n      node.removeEventListener(event, fn, opt_useCapture || false);\n    } else if (typeof node.detatchEvent == 'function') {\n      node.detatchEvent('on' + event, fn);\n    }\n  }\n  /**\n   * Returns the intersection between two rect objects.\n   * @param {Object} rect1 The first rect.\n   * @param {Object} rect2 The second rect.\n   * @return {?Object} The intersection rect or undefined if no intersection\n   *     is found.\n   */\n\n\n  function computeRectIntersection(rect1, rect2) {\n    var top = Math.max(rect1.top, rect2.top);\n    var bottom = Math.min(rect1.bottom, rect2.bottom);\n    var left = Math.max(rect1.left, rect2.left);\n    var right = Math.min(rect1.right, rect2.right);\n    var width = right - left;\n    var height = bottom - top;\n    return width >= 0 && height >= 0 && {\n      top: top,\n      bottom: bottom,\n      left: left,\n      right: right,\n      width: width,\n      height: height\n    };\n  }\n  /**\n   * Shims the native getBoundingClientRect for compatibility with older IE.\n   * @param {Element} el The element whose bounding rect to get.\n   * @return {Object} The (possibly shimmed) rect of the element.\n   */\n\n\n  function getBoundingClientRect(el) {\n    var rect;\n\n    try {\n      rect = el.getBoundingClientRect();\n    } catch (err) {// Ignore Windows 7 IE11 \"Unspecified error\"\n      // https://github.com/w3c/IntersectionObserver/pull/205\n    }\n\n    if (!rect) return getEmptyRect(); // Older IE\n\n    if (!(rect.width && rect.height)) {\n      rect = {\n        top: rect.top,\n        right: rect.right,\n        bottom: rect.bottom,\n        left: rect.left,\n        width: rect.right - rect.left,\n        height: rect.bottom - rect.top\n      };\n    }\n\n    return rect;\n  }\n  /**\n   * Returns an empty rect object. An empty rect is returned when an element\n   * is not in the DOM.\n   * @return {Object} The empty rect.\n   */\n\n\n  function getEmptyRect() {\n    return {\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0,\n      width: 0,\n      height: 0\n    };\n  }\n  /**\n   * Checks to see if a parent element contains a child element (including inside\n   * shadow DOM).\n   * @param {Node} parent The parent element.\n   * @param {Node} child The child element.\n   * @return {boolean} True if the parent node contains the child node.\n   */\n\n\n  function containsDeep(parent, child) {\n    var node = child;\n\n    while (node) {\n      if (node == parent) return true;\n      node = getParentNode(node);\n    }\n\n    return false;\n  }\n  /**\n   * Gets the parent node of an element or its host element if the parent node\n   * is a shadow root.\n   * @param {Node} node The node whose parent to get.\n   * @return {Node|null} The parent node or null if no parent exists.\n   */\n\n\n  function getParentNode(node) {\n    var parent = node.parentNode;\n\n    if (parent && parent.nodeType == 11 && parent.host) {\n      // If the parent is a shadow root, return the host element.\n      return parent.host;\n    }\n\n    if (parent && parent.assignedSlot) {\n      // If the parent is distributed in a <slot>, return the parent of a slot.\n      return parent.assignedSlot.parentNode;\n    }\n\n    return parent;\n  } // Exposes the constructors globally.\n\n\n  window.IntersectionObserver = IntersectionObserver;\n  window.IntersectionObserverEntry = IntersectionObserverEntry;\n})();","(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    module.exports = factory();\n  } else {\n    window.idleCallbackShim = factory();\n  }\n})(function () {\n  'use strict';\n\n  var scheduleStart, throttleDelay, lazytimer, lazyraf;\n  var root = typeof window != 'undefined' ? window : typeof global != undefined ? global : this || {};\n  var requestAnimationFrame = root.cancelRequestAnimationFrame && root.requestAnimationFrame || setTimeout;\n  var cancelRequestAnimationFrame = root.cancelRequestAnimationFrame || clearTimeout;\n  var tasks = [];\n  var runAttempts = 0;\n  var isRunning = false;\n  var remainingTime = 7;\n  var minThrottle = 35;\n  var throttle = 125;\n  var index = 0;\n  var taskStart = 0;\n  var tasklength = 0;\n  var IdleDeadline = {\n    get didTimeout() {\n      return false;\n    },\n\n    timeRemaining: function timeRemaining() {\n      var timeRemaining = remainingTime - (Date.now() - taskStart);\n      return timeRemaining < 0 ? 0 : timeRemaining;\n    }\n  };\n  var setInactive = debounce(function () {\n    remainingTime = 22;\n    throttle = 66;\n    minThrottle = 0;\n  });\n\n  function debounce(fn) {\n    var id, timestamp;\n    var wait = 99;\n\n    var check = function check() {\n      var last = Date.now() - timestamp;\n\n      if (last < wait) {\n        id = setTimeout(check, wait - last);\n      } else {\n        id = null;\n        fn();\n      }\n    };\n\n    return function () {\n      timestamp = Date.now();\n\n      if (!id) {\n        id = setTimeout(check, wait);\n      }\n    };\n  }\n\n  function abortRunning() {\n    if (isRunning) {\n      if (lazyraf) {\n        cancelRequestAnimationFrame(lazyraf);\n      }\n\n      if (lazytimer) {\n        clearTimeout(lazytimer);\n      }\n\n      isRunning = false;\n    }\n  }\n\n  function onInputorMutation() {\n    if (throttle != 125) {\n      remainingTime = 7;\n      throttle = 125;\n      minThrottle = 35;\n\n      if (isRunning) {\n        abortRunning();\n        scheduleLazy();\n      }\n    }\n\n    setInactive();\n  }\n\n  function scheduleAfterRaf() {\n    lazyraf = null;\n    lazytimer = setTimeout(runTasks, 0);\n  }\n\n  function scheduleRaf() {\n    lazytimer = null;\n    requestAnimationFrame(scheduleAfterRaf);\n  }\n\n  function scheduleLazy() {\n    if (isRunning) {\n      return;\n    }\n\n    throttleDelay = throttle - (Date.now() - taskStart);\n    scheduleStart = Date.now();\n    isRunning = true;\n\n    if (minThrottle && throttleDelay < minThrottle) {\n      throttleDelay = minThrottle;\n    }\n\n    if (throttleDelay > 9) {\n      lazytimer = setTimeout(scheduleRaf, throttleDelay);\n    } else {\n      throttleDelay = 0;\n      scheduleRaf();\n    }\n  }\n\n  function runTasks() {\n    var task, i, len;\n    var timeThreshold = remainingTime > 9 ? 9 : 1;\n    taskStart = Date.now();\n    isRunning = false;\n    lazytimer = null;\n\n    if (runAttempts > 2 || taskStart - throttleDelay - 50 < scheduleStart) {\n      for (i = 0, len = tasks.length; i < len && IdleDeadline.timeRemaining() > timeThreshold; i++) {\n        task = tasks.shift();\n        tasklength++;\n\n        if (task) {\n          task(IdleDeadline);\n        }\n      }\n    }\n\n    if (tasks.length) {\n      scheduleLazy();\n    } else {\n      runAttempts = 0;\n    }\n  }\n\n  function requestIdleCallbackShim(task) {\n    index++;\n    tasks.push(task);\n    scheduleLazy();\n    return index;\n  }\n\n  function cancelIdleCallbackShim(id) {\n    var index = id - 1 - tasklength;\n\n    if (tasks[index]) {\n      tasks[index] = null;\n    }\n  }\n\n  if (!root.requestIdleCallback || !root.cancelIdleCallback) {\n    root.requestIdleCallback = requestIdleCallbackShim;\n    root.cancelIdleCallback = cancelIdleCallbackShim;\n\n    if (root.document && document.addEventListener) {\n      root.addEventListener('scroll', onInputorMutation, true);\n      root.addEventListener('resize', onInputorMutation);\n      document.addEventListener('focus', onInputorMutation, true);\n      document.addEventListener('mouseover', onInputorMutation, true);\n      ['click', 'keypress', 'touchstart', 'mousedown'].forEach(function (name) {\n        document.addEventListener(name, onInputorMutation, {\n          capture: true,\n          passive: true\n        });\n      });\n\n      if (root.MutationObserver) {\n        new MutationObserver(onInputorMutation).observe(document.documentElement, {\n          childList: true,\n          subtree: true,\n          attributes: true\n        });\n      }\n    }\n  } else {\n    try {\n      root.requestIdleCallback(function () {}, {\n        timeout: 0\n      });\n    } catch (e) {\n      (function (rIC) {\n        var timeRemainingProto, timeRemaining;\n\n        root.requestIdleCallback = function (fn, timeout) {\n          if (timeout && typeof timeout.timeout == 'number') {\n            return rIC(fn, timeout.timeout);\n          }\n\n          return rIC(fn);\n        };\n\n        if (root.IdleCallbackDeadline && (timeRemainingProto = IdleCallbackDeadline.prototype)) {\n          timeRemaining = Object.getOwnPropertyDescriptor(timeRemainingProto, 'timeRemaining');\n\n          if (!timeRemaining || !timeRemaining.configurable || !timeRemaining.get) {\n            return;\n          }\n\n          Object.defineProperty(timeRemainingProto, 'timeRemaining', {\n            value: function value() {\n              return timeRemaining.get.call(this);\n            },\n            enumerable: true,\n            configurable: true\n          });\n        }\n      })(root.requestIdleCallback);\n    }\n  }\n\n  return {\n    request: requestIdleCallbackShim,\n    cancel: cancelIdleCallbackShim\n  };\n});","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {\n  style: {\n    'object-position': 1\n  }\n} : new Image();\nvar supportsObjectFit = ('object-fit' in testImg.style);\nvar supportsObjectPosition = ('object-position' in testImg.style);\nvar supportsOFI = ('background-size' in testImg.style);\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n  return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\";\n}\n\nfunction polyfillCurrentSrc(el) {\n  if (el.srcset && !supportsCurrentSrc && window.picturefill) {\n    var pf = window.picturefill._; // parse srcset with picturefill where currentSrc isn't available\n\n    if (!el[pf.ns] || !el[pf.ns].evaled) {\n      // force synchronous srcset parsing\n      pf.fillImg(el, {\n        reselect: true\n      });\n    }\n\n    if (!el[pf.ns].curSrc) {\n      // force picturefill to parse srcset\n      el[pf.ns].supported = false;\n      pf.fillImg(el, {\n        reselect: true\n      });\n    } // retrieve parsed currentSrc, if any\n\n\n    el.currentSrc = el[pf.ns].curSrc || el.src;\n  }\n}\n\nfunction getStyle(el) {\n  var style = getComputedStyle(el).fontFamily;\n  var parsed;\n  var props = {};\n\n  while ((parsed = propRegex.exec(style)) !== null) {\n    props[parsed[1]] = parsed[2];\n  }\n\n  return props;\n}\n\nfunction setPlaceholder(img, width, height) {\n  // Default: fill width, no height\n  var placeholder = createPlaceholder(width || 1, height || 0); // Only set placeholder if it's different\n\n  if (nativeGetAttribute.call(img, 'src') !== placeholder) {\n    nativeSetAttribute.call(img, 'src', placeholder);\n  }\n}\n\nfunction onImageReady(img, callback) {\n  // naturalWidth is only available when the image headers are loaded,\n  // this loop will poll it every 100ms.\n  if (img.naturalWidth) {\n    callback(img);\n  } else {\n    setTimeout(onImageReady, 100, img, callback);\n  }\n}\n\nfunction fixOne(el) {\n  var style = getStyle(el);\n  var ofi = el[OFI];\n  style['object-fit'] = style['object-fit'] || 'fill'; // default value\n  // Avoid running where unnecessary, unless OFI had already done its deed\n\n  if (!ofi.img) {\n    // fill is the default behavior so no action is necessary\n    if (style['object-fit'] === 'fill') {\n      return;\n    } // Where object-fit is supported and object-position isn't (Safari < 10)\n\n\n    if (!ofi.skipTest && // unless user wants to apply regardless of browser support\n    supportsObjectFit && // if browser already supports object-fit\n    !style['object-position'] // unless object-position is used\n    ) {\n        return;\n      }\n  } // keep a clone in memory while resetting the original to a blank\n\n\n  if (!ofi.img) {\n    ofi.img = new Image(el.width, el.height);\n    ofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n    ofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src; // preserve for any future cloneNode calls\n    // https://github.com/bfred-it/object-fit-images/issues/53\n\n    nativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\n    if (el.srcset) {\n      nativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n    }\n\n    setPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height); // remove srcset because it overrides src\n\n    if (el.srcset) {\n      el.srcset = '';\n    }\n\n    try {\n      keepSrcUsable(el);\n    } catch (err) {\n      if (window.console) {\n        console.warn('https://bit.ly/ofi-old-browser');\n      }\n    }\n  }\n\n  polyfillCurrentSrc(ofi.img);\n  el.style.backgroundImage = \"url(\\\"\" + (ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"') + \"\\\")\";\n  el.style.backgroundPosition = style['object-position'] || 'center';\n  el.style.backgroundRepeat = 'no-repeat';\n  el.style.backgroundOrigin = 'content-box';\n\n  if (/scale-down/.test(style['object-fit'])) {\n    onImageReady(ofi.img, function () {\n      if (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n        el.style.backgroundSize = 'contain';\n      } else {\n        el.style.backgroundSize = 'auto';\n      }\n    });\n  } else {\n    el.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n  }\n\n  onImageReady(ofi.img, function (img) {\n    setPlaceholder(el, img.naturalWidth, img.naturalHeight);\n  });\n}\n\nfunction keepSrcUsable(el) {\n  var descriptors = {\n    get: function get(prop) {\n      return el[OFI].img[prop ? prop : 'src'];\n    },\n    set: function set(value, prop) {\n      el[OFI].img[prop ? prop : 'src'] = value;\n      nativeSetAttribute.call(el, \"data-ofi-\" + prop, value); // preserve for any future cloneNode\n\n      fixOne(el);\n      return value;\n    }\n  };\n  Object.defineProperty(el, 'src', descriptors);\n  Object.defineProperty(el, 'currentSrc', {\n    get: function get() {\n      return descriptors.get('currentSrc');\n    }\n  });\n  Object.defineProperty(el, 'srcset', {\n    get: function get() {\n      return descriptors.get('srcset');\n    },\n    set: function set(ss) {\n      return descriptors.set(ss, 'srcset');\n    }\n  });\n}\n\nfunction hijackAttributes() {\n  function getOfiImageMaybe(el, name) {\n    return el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n  }\n\n  if (!supportsObjectPosition) {\n    HTMLImageElement.prototype.getAttribute = function (name) {\n      return nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n    };\n\n    HTMLImageElement.prototype.setAttribute = function (name, value) {\n      return nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n    };\n  }\n}\n\nfunction fix(imgs, opts) {\n  var startAutoMode = !autoModeEnabled && !imgs;\n  opts = opts || {};\n  imgs = imgs || 'img';\n\n  if (supportsObjectPosition && !opts.skipTest || !supportsOFI) {\n    return false;\n  } // use imgs as a selector or just select all images\n\n\n  if (imgs === 'img') {\n    imgs = document.getElementsByTagName('img');\n  } else if (typeof imgs === 'string') {\n    imgs = document.querySelectorAll(imgs);\n  } else if (!('length' in imgs)) {\n    imgs = [imgs];\n  } // apply fix to all\n\n\n  for (var i = 0; i < imgs.length; i++) {\n    imgs[i][OFI] = imgs[i][OFI] || {\n      skipTest: opts.skipTest\n    };\n    fixOne(imgs[i]);\n  }\n\n  if (startAutoMode) {\n    document.body.addEventListener('load', function (e) {\n      if (e.target.tagName === 'IMG') {\n        fix(e.target, {\n          skipTest: opts.skipTest\n        });\n      }\n    }, true);\n    autoModeEnabled = true;\n    imgs = 'img'; // reset to a generic selector for watchMQ\n  } // if requested, watch media queries for object-fit change\n\n\n  if (opts.watchMQ) {\n    window.addEventListener('resize', fix.bind(null, imgs, {\n      skipTest: opts.skipTest\n    }));\n  }\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\nhijackAttributes();\nmodule.exports = fix;","import 'intersection-observer';\nimport 'requestidlecallback';\nimport objectFitImages  from 'object-fit-images';\n\nobjectFitImages();\n","import 'intersection-observer';\nimport 'requestidlecallback';\nimport objectFitImages from 'object-fit-images';\n\nobjectFitImages();\n"],"sourceRoot":""}