{"version":3,"sources":["lazysizes.js"],"names":["window","factory","lazySizes","document","getElementsByClassName","lazysizes","lazySizesConfig","docElem","documentElement","Date","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","addEventListener","setTimeout","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","forEach","Array","prototype","hasClass","ele","cls","RegExp","test","addClass","setAttribute","trim","removeClass","reg","replace","addRemoveLoadEvents","dom","fn","add","action","evt","triggerEvent","elem","name","detail","noBubbles","noCancelable","event","createEvent","instance","initEvent","dispatchEvent","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","elements","getCSS","style","getComputedStyle","getWidth","parent","width","offsetWidth","minSize","_lazysizesWidth","parentNode","rAF","firstFns","secondFns","fns","run","runFns","length","waiting","running","shift","rafBatch","queue","apply","this","arguments","push","hidden","_lsFlush","rAFIt","simple","that","args","debounce","func","timeout","timestamp","later","last","now","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","srcAttr","srcsetAttr","sizesAttr","customMedia","init","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazysizesConfig","loader","regImg","regIframe","supportScroll","navigator","userAgent","currentExpand","isLoading","lowRuns","resetPreloading","e","target","isNestedVisible","elemExpand","outerRect","visible","body","eLtop","eLbottom","eLleft","eLright","offsetParent","getBoundingClientRect","left","right","top","bottom","checkElements","eLlen","i","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","lazyloadElems","preloadExpand","expand","clientHeight","clientWidth","defaultExpand","_lazyRace","eLvW","innerWidth","elvH","innerHeight","isCompleted","unveilElement","preloadElems","preloadAfterLoad","lastTime","gDelay","rICTimeout","idleCallback","throttledCheckElements","isPriority","delay","switchLoadingClass","rafSwitchLoadingClass","rafedSwitchLoadingClass","handleSources","source","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","resetPreloadingTimer","call","getElementsByTagName","contentWindow","location","changeIframeSrc","complete","naturalWidth","autoSizer","updateElem","onload","started","afterScroll","_","MutationObserver","observe","childList","subtree","attributes","setInterval","readyState","checkElems","unveil","sizeElement","sources","len","dataAttr","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","cfg","uP","aC","rC","hC","fire","gW","module","exports"],"mappings":"CAAC,SAASA,EAAQC,GACd,IAAIC,EAKE,SAAWF,EAAQG,GACrB,aAEA,IAAIA,EAASC,uBAAwB,OAErC,IAAIC,EAAWC,EAEXC,EAAUJ,EAASK,gBAEnBC,EAAOT,EAAOS,KAEdC,EAAiBV,EAAOW,mBAExBC,EAAoB,mBAEpBC,EAAgB,eAEhBC,EAAmBd,EAAOY,GAE1BG,EAAaf,EAAOe,WAEpBC,EAAwBhB,EAAOgB,uBAAyBD,EAExDE,EAAsBjB,EAAOiB,oBAE7BC,EAAa,aAEbC,EAAa,CAAC,OAAQ,QAAS,eAAgB,eAE/CC,EAAgB,GAEhBC,EAAUC,MAAMC,UAAUF,QAE1BG,EAAW,SAASC,EAAKC,GAIzB,OAHIN,EAAcM,KACdN,EAAcM,GAAO,IAAIC,OAAO,UAAUD,EAAI,YAE3CN,EAAcM,GAAKE,KAAKH,EAAIZ,GAAe,UAAY,KAAOO,EAAcM,IAGnFG,EAAW,SAASJ,EAAKC,GACpBF,EAASC,EAAKC,IACfD,EAAIK,aAAa,SAAUL,EAAIZ,GAAe,UAAY,IAAIkB,OAAS,IAAML,IAIjFM,EAAc,SAASP,EAAKC,GAC5B,IAAIO,GACCA,EAAMT,EAASC,EAAIC,KACpBD,EAAIK,aAAa,SAAUL,EAAIZ,GAAe,UAAY,IAAIqB,QAAQD,EAAK,OAI/EE,EAAsB,SAASC,EAAKC,EAAIC,GACxC,IAAIC,EAASD,EAAM1B,EAAoB,sBACpC0B,GACCH,EAAoBC,EAAKC,GAE7BlB,EAAWE,QAAQ,SAASmB,GACxBJ,EAAIG,GAAQC,EAAKH,MAIrBI,EAAe,SAASC,EAAMC,EAAMC,EAAQC,EAAWC,GACvD,IAAIC,EAAQ5C,EAAS6C,YAAY,SAajC,OAXIJ,IACAA,EAAS,IAGbA,EAAOK,SAAW5C,EAElB0C,EAAMG,UAAUP,GAAOE,GAAYC,GAEnCC,EAAMH,OAASA,EAEfF,EAAKS,cAAcJ,GACZA,GAGPK,EAAiB,SAAUC,EAAIC,GAC/B,IAAIC,GACC7C,IAAoB6C,EAAYvD,EAAOwD,aAAelD,EAAgBmD,KACpEH,GAAQA,EAAKI,MAAQL,EAAGxC,GAAe,WACtCwC,EAAGvB,aAAa,SAAUwB,EAAKI,KAEnCH,EAAS,CAACI,YAAY,EAAMC,SAAU,CAACP,MACjCC,GAAQA,EAAKI,MACnBL,EAAGK,IAAMJ,EAAKI,MAIlBG,EAAS,SAAUnB,EAAMoB,GACzB,OAAQC,iBAAiBrB,EAAM,OAAS,IAAIoB,IAG5CE,EAAW,SAAStB,EAAMuB,EAAQC,GAGlC,IAFAA,EAAQA,GAASxB,EAAKyB,YAEhBD,EAAQ5D,EAAgB8D,SAAWH,IAAWvB,EAAK2B,iBACrDH,EAASD,EAAOE,YAChBF,EAASA,EAAOK,WAGpB,OAAOJ,GAGPK,GAEIC,EAAW,GACXC,EAAY,GACZC,EAAMF,EAENG,EAAM,WACN,IAAIC,EAASF,EAOb,IALAA,EAAMF,EAASK,OAASJ,EAAYD,EAGpCM,IADAC,GAAU,GAGJH,EAAOC,QACTD,EAAOI,OAAPJ,GAGJG,GAAU,GAGVE,EAAW,SAAS5C,EAAI6C,GACrBH,IAAYG,EACX7C,EAAG8C,MAAMC,KAAMC,YAEfX,EAAIY,KAAKjD,GAELyC,IACAA,GAAU,GACT3E,EAASoF,OAASxE,EAAaC,GAAuB2D,MAKnEM,EAASO,SAAWb,EAEbM,GAGPQ,EAAQ,SAASpD,EAAIqD,GACrB,OAAOA,EACH,WACInB,EAAIlC,IAER,WACI,IAAIsD,EAAOP,KACPQ,EAAOP,UACXd,EAAI,WACAlC,EAAG8C,MAAMQ,EAAMC,OAyD3BC,EAAW,SAASC,GACpB,IAAIC,EAASC,EAETrB,EAAM,WACNoB,EAAU,KACVD,KAEAG,EAAQ,WACR,IAAIC,EAAOzF,EAAK0F,MAAQH,EAEpBE,EARG,GASHnF,EAAWkF,EATR,GASsBC,IAExBjF,GAAuB0D,GAAKA,IAIrC,OAAO,WACHqB,EAAYvF,EAAK0F,MAEZJ,IACDA,EAAUhF,EAAWkF,EAnBlB,OA3GL,IACFlB,EAASD,EACTN,EACAC,EACAC,EAEAC,EAeAM,GA8GR,WACI,IAAImB,EAEAC,EAAoB,CACpBC,UAAW,WACXC,YAAa,aACbC,aAAc,cACdC,aAAc,cACdC,WAAY,YAEZC,eAAgB,gBAChBC,QAAS,WACTC,WAAY,cACZC,UAAW,aAEX1C,QAAS,GACT2C,YAAa,GACbC,MAAM,EACNC,UAAW,IACXC,KAAM,GACNC,SAAU,EACVC,YAAY,EACZC,WAAY,EACZC,cAAe,KAKnB,IAAIlB,KAFJ9F,EAAkBN,EAAOM,iBAAmBN,EAAOuH,iBAAmB,GAE1DlB,EACHD,KAAQ9F,IACTA,EAAgB8F,GAAQC,EAAkBD,IAIlDpG,EAAOM,gBAAkBA,EAEzBS,EAAW,WACJT,EAAgB0G,MACfA,MAtCZ,GA2CA,IAAIQ,GAOIC,GAAS,SACTC,GAAY,YAEZC,GAAiB,aAAc3H,IAAa,eAAe4B,KAAKgG,UAAUC,WAG1EC,GAAgB,EAEhBC,GAAY,EACZC,IAAW,EAEXC,GAAkB,SAASC,GAC3BH,KACGG,GAAKA,EAAEC,QACNhG,EAAoB+F,EAAEC,OAAQF,MAG9BC,GAAKH,GAAY,IAAMG,EAAEC,UACzBJ,GAAY,IAIhBK,GAAkB,SAAS1F,EAAM2F,GACjC,IAAIC,EACArE,EAASvB,EACT6F,EAAiD,UAAvC1E,EAAO1D,EAASqI,KAAM,eAAuE,UAAzC3E,EAAOnB,EAAK4B,WAAY,eAA2D,UAA9BT,EAAOnB,EAAM,cAOpI,IALA+F,GAASJ,EACTK,GAAYL,EACZM,GAAUN,EACVO,GAAWP,EAELE,IAAYtE,EAASA,EAAO4E,eAAiB5E,GAAU9D,EAASqI,MAAQvE,GAAU1D,IACpFgI,EAA8C,GAAlC1E,EAAOI,EAAQ,YAAc,KAEG,WAA9BJ,EAAOI,EAAQ,cACzBqE,EAAYrE,EAAO6E,wBACnBP,EAAUK,EAAUN,EAAUS,MAC1BJ,EAASL,EAAUU,OACnBN,EAAWJ,EAAUW,IAAM,GAC3BR,EAAQH,EAAUY,OAAS,GAKvC,OAAOX,GAGPY,GAAgB,WAChB,IAAIC,EAAOC,EAAGC,EAAMC,EAAcC,EAAiBnB,EAAYoB,EAAoBC,EAAeC,EAE9FC,EAAgBvJ,EAAUuD,SAE9B,IAAIuD,EAAW7G,EAAgB6G,WAAaY,GAAY,IAAMqB,EAAQQ,EAAc/E,QAAQ,CAExFwE,EAAI,EAEJrB,KAEoB,MAAjB6B,KACM,WAAYvJ,IACbA,EAAgBwJ,OAAgC,IAAvBvJ,EAAQwJ,cAA4C,IAAtBxJ,EAAQyJ,YAAoB,IAAM,KAG7FC,EAAgB3J,EAAgBwJ,OAChCD,GAAgBI,EAAgB3J,EAAgB2G,WAGjDa,GAAgB+B,IAAiB9B,GAAY,GAAe,EAAVC,IAA0B,EAAXb,IAAiBhH,EAASoF,QAC1FuC,GAAgB+B,GAChB7B,GAAU,GAEVF,GADiB,EAAXX,GAA0B,EAAVa,IAAeD,GAAY,EACjCkC,EAnET,EAwEX,KAAMZ,EAAID,EAAOC,IAEb,GAAIO,EAAcP,KAAMO,EAAcP,GAAGa,UAEzC,GAAIvC,GAeJ,IAbK+B,EAAgBE,EAAcP,GAAGxI,GAAe,kBAAqBwH,EAA6B,EAAhBqB,KACnFrB,EAAaP,IAGd6B,IAAoBtB,IACnB8B,EAAOC,WAAc/B,EAAanB,GAClCmD,EAAOC,YAAcjC,EACrBoB,GAAmC,EAAdpB,EACrBsB,EAAkBtB,GAGtBiB,EAAOM,EAAcP,GAAGP,yBAEnBJ,EAAWY,EAAKJ,SAAWO,IAC3BhB,EAAQa,EAAKL,MAAQoB,IACrBzB,EAAUU,EAAKN,QAAUS,EAAqBvC,KAC9CyB,EAASW,EAAKP,OAASoB,IACvBzB,GAAYE,GAAWD,GAAUF,KACjCnI,EAAgB8G,YAAwD,UAA1CvD,EAAO+F,EAAcP,GAAI,iBACtDkB,GAAexC,GAAY,IAAM2B,IAAkBvC,EAAW,GAAKa,GAAU,IAAOI,GAAgBwB,EAAcP,GAAIhB,KAGxH,GAFAmC,GAAcZ,EAAcP,IAC5BG,GAAkB,EACH,EAAZzB,GAAe,WACXyB,GAAmBe,IAAgBhB,GAC1CxB,GAAY,GAAKC,GAAU,GAAgB,EAAXb,IAC/BsD,EAAa,IAAMnK,EAAgBoK,oBACnCD,EAAa,KAAQf,IAAmBhB,GAAYE,GAAWD,GAAUF,GAAwE,QAA9DmB,EAAcP,GAAGxI,GAAeP,EAAgBwG,eACpIyC,EAAekB,EAAa,IAAMb,EAAcP,SA7BjCmB,GAAcZ,EAAcP,IAiChDE,IAAiBC,GAChBgB,GAAcjB,KAlPNlH,GAuPkB8G,GArPlCwB,GAAW,EACXC,GAAStK,EAAgBgH,cACzBuD,GAAavK,EAAgB+G,WAC7B1C,GAAM,WACNI,IAAU,EACV4F,GAAWlK,EAAK0F,MAChB9D,MAEAyI,GAAe7J,GAAoC,GAAb4J,GACtC,WACI5J,EAAoB0D,GAAK,CAACoB,QAAS8E,KAEhCA,KAAevK,EAAgB+G,aAC9BwD,GAAavK,EAAgB+G,aAGrC5B,EAAM,WACF1E,EAAW4D,MACZ,GAmOHoG,GAhOG,SAASC,GACZ,IAAIC,GAEAD,GAA4B,IAAfA,KACbH,GAAa,IAGd9F,KAIHA,IAAW,GAEXkG,EAAQL,IAAUnK,EAAK0F,MAAQwE,KAEpB,IACPM,EAAQ,GAGTD,GAAcC,EAAQ,EACrBH,KAEA/J,EAAW+J,GAAcG,KA4M7BC,GAAqB,SAAShD,GAC9BrG,EAASqG,EAAEC,OAAQ7H,EAAgBiG,aACnCvE,EAAYkG,EAAEC,OAAQ7H,EAAgBkG,cACtCrE,EAAoB+F,EAAEC,OAAQgD,IAC9B1I,EAAayF,EAAEC,OAAQ,eAEvBiD,GAA0B3F,EAAMyF,IAChCC,GAAwB,SAASjD,GACjCkD,GAAwB,CAACjD,OAAQD,EAAEC,UAWnCkD,GAAgB,SAASC,GACzB,IAAIvE,EAEAwE,EAAeD,EAAOzK,GAAeP,EAAgBuG,aAEpDE,EAAczG,EAAgByG,YAAYuE,EAAOzK,GAAe,eAAiByK,EAAOzK,GAAe,YACxGyK,EAAOxJ,aAAa,QAASiF,GAG9BwE,GACCD,EAAOxJ,aAAa,SAAUyJ,IAIlCC,GAAa/F,EAAM,SAAU/C,EAAME,EAAQ6I,EAAQC,EAAOC,GAC1D,IAAIjI,EAAKkI,EAAQ3H,EAAQ4H,EAAW9I,EAAO+I,GAEtC/I,EAAQN,EAAaC,EAAM,mBAAoBE,IAASmJ,mBAEtDL,IACID,EACC5J,EAASa,EAAMpC,EAAgBqG,gBAE/BjE,EAAKZ,aAAa,QAAS4J,IAInCE,EAASlJ,EAAK7B,GAAeP,EAAgBuG,YAC7CnD,EAAMhB,EAAK7B,GAAeP,EAAgBsG,SAEvC+E,IACC1H,EAASvB,EAAK4B,WACduH,EAAY5H,GAAU/C,EAAWU,KAAKqC,EAAO+H,UAAY,KAG7DF,EAAYlJ,EAAOkJ,WAAe,QAASpJ,IAAUkJ,GAAUlI,GAAOmI,GAEtE9I,EAAQ,CAACoF,OAAQzF,GAEdoJ,IACC3J,EAAoBO,EAAMuF,IAAiB,GAC3CgE,aAAaC,GACbA,EAAuBnL,EAAWkH,GAAiB,MAEnDpG,EAASa,EAAMpC,EAAgBkG,cAC/BrE,EAAoBO,EAAMyI,IAAuB,IAGlDU,GACCxK,EAAQ8K,KAAKlI,EAAOmI,qBAAqB,UAAWf,IAGrDO,EACClJ,EAAKZ,aAAa,SAAU8J,GACtBlI,IAAQmI,IACXnE,GAAU9F,KAAKc,EAAKsJ,UA/Db,SAAStJ,EAAMgB,GACjC,IACIhB,EAAK2J,cAAcC,SAASpK,QAAQwB,GACtC,MAAMwE,GACJxF,EAAKgB,IAAMA,GA4DH6I,CAAgB7J,EAAMgB,GAEtBhB,EAAKgB,IAAMA,GAIhBiI,IAAUC,GAAUC,IACnBzI,EAAeV,EAAM,CAACgB,IAAKA,KAIhChB,EAAKwH,kBACGxH,EAAKwH,UAEhBlI,EAAYU,EAAMpC,EAAgBgG,WAElC/B,EAAI,aACKuH,GAAcpJ,EAAK8J,UAAgC,EAApB9J,EAAK+J,gBAClCX,EACC7D,GAAgBlF,GAEhBgF,KAEJmD,GAAmBnI,MAExB,KAGHyH,GAAgB,SAAU9H,GAC1B,IAAIE,EAEA+I,EAAQlE,GAAO7F,KAAKc,EAAKsJ,UAGzBN,EAAQC,IAAUjJ,EAAK7B,GAAeP,EAAgBwG,YAAcpE,EAAK7B,GAAe,UACxF4K,EAAkB,QAATC,IAERD,GAAWlB,IAAgBoB,IAAUjJ,EAAK7B,GAAe,SAAU6B,EAAKkJ,QAAYlJ,EAAK8J,UAAahL,EAASkB,EAAMpC,EAAgBoG,cAAelF,EAASkB,EAAMpC,EAAgBgG,cAExL1D,EAASH,EAAaC,EAAM,kBAAkBE,OAE3C6I,GACCiB,EAAUC,WAAWjK,GAAM,EAAMA,EAAKyB,aAG1CzB,EAAKwH,WAAY,EACjBnC,KAEAyD,GAAW9I,EAAME,EAAQ6I,EAAQC,EAAOC,KAGxCiB,GAAS,WACT,IAAGrC,EACH,GAAG9J,EAAK0F,MAAQ0G,EAAU,IACtB9L,EAAW6L,GAAQ,SADvB,CAIA,IAAIE,EAAcjH,EAAS,WACvBvF,EAAgB6G,SAAW,EAC3B4D,OAGJR,GAAc,EAEdjK,EAAgB6G,SAAW,EAE3B4D,KAEAjK,EAAiB,SAAU,WACQ,GAA5BR,EAAgB6G,WACf7G,EAAgB6G,SAAW,GAE/B2F,MACD,KAGA,CACHC,EAAG,WACCF,EAAUpM,EAAK0F,MAEf9F,EAAUuD,SAAWzD,EAASC,uBAAuBE,EAAgBgG,WACrEmE,EAAetK,EAASC,uBAAuBE,EAAgBgG,UAAY,IAAMhG,EAAgBmG,cACjGS,GAAO5G,EAAgB4G,KAEvBpG,EAAiB,SAAUiK,IAAwB,GAEnDjK,EAAiB,SAAUiK,IAAwB,GAEhD/K,EAAOgN,iBACN,IAAIA,iBAAkBjC,IAAyBkC,QAAS1M,EAAS,CAAC2M,WAAW,EAAMC,SAAS,EAAMC,YAAY,KAE9G7M,EAAQK,GAAmB,kBAAmBmK,IAAwB,GACtExK,EAAQK,GAAmB,kBAAmBmK,IAAwB,GACtEsC,YAAYtC,GAAwB,MAGxCjK,EAAiB,aAAciK,IAAwB,GAGvD,CAAC,QAAS,YAAa,QAAS,OAAQ,gBAAiB,eAAgB,sBAAsB1J,QAAQ,SAASsB,GAC5GxC,EAASS,GAAmB+B,EAAMoI,IAAwB,KAG1D,QAAQnJ,KAAKzB,EAASmN,YACtBV,MAEA9L,EAAiB,OAAQ8L,IACzBzM,EAASS,GAAmB,mBAAoBmK,IAChDhK,EAAW6L,GAAQ,MAGpBvM,EAAUuD,SAASiB,QAClBsE,KACA5E,EAAIiB,YAEJuF,MAGRwC,WAAYxC,GACZyC,OAAQhD,KAKZkC,GAGIe,EAAchI,EAAM,SAAS/C,EAAMuB,EAAQlB,EAAOmB,GAClD,IAAIwJ,EAASrE,EAAGsE,EAMhB,GALAjL,EAAK2B,gBAAkBH,EACvBA,GAAS,KAETxB,EAAKZ,aAAa,QAASoC,GAExBhD,EAAWU,KAAKqC,EAAO+H,UAAY,IAElC,IADA0B,EAAUzJ,EAAOmI,qBAAqB,UAClC/C,EAAI,EAAGsE,EAAMD,EAAQ7I,OAAQwE,EAAIsE,EAAKtE,IACtCqE,EAAQrE,GAAGvH,aAAa,QAASoC,GAIrCnB,EAAMH,OAAOgL,UACbxK,EAAeV,EAAMK,EAAMH,UAG/BiL,EAAiB,SAAUnL,EAAMkL,EAAU1J,GAC3C,IAAInB,EACAkB,EAASvB,EAAK4B,WAEfL,IACCC,EAAQF,EAAStB,EAAMuB,EAAQC,IAC/BnB,EAAQN,EAAaC,EAAM,kBAAmB,CAACwB,MAAOA,EAAO0J,WAAYA,KAE/D7B,mBACN7H,EAAQnB,EAAMH,OAAOsB,QAETA,IAAUxB,EAAK2B,iBACvBoJ,EAAY/K,EAAMuB,EAAQlB,EAAOmB,KAkB7C4J,EAA+BjI,EAZT,WACtB,IAAIwD,EACAsE,EAAMI,EAAelJ,OACzB,GAAG8I,EAGC,IAFAtE,EAAI,EAEEA,EAAIsE,EAAKtE,IACXwE,EAAeE,EAAe1E,MAOnC,CACH0D,EAAG,WACCgB,EAAiB5N,EAASC,uBAAuBE,EAAgBqG,gBACjE7F,EAAiB,SAAUgN,IAE/BP,WAAYO,EACZnB,WAAYkB,IAIhB7G,EAAO,WACHA,EAAKqC,IACLrC,EAAKqC,GAAI,EACTqD,EAAUK,IACVvF,EAAOuF,MAnEC,IACRgB,EAEAN,EAkBAI,EA8BAC,EA3XK,IACLrD,EAAcF,EAAa2B,EAAsB/E,EAAU0F,EAE3D1C,EAAME,EAAM5B,EAAOE,EAAQC,EAASF,EAEpCuB,EAAeJ,GAAe3C,GA7Hd7E,GAChB0C,GACA4F,GACAC,GACAC,GACAlG,GAKAmG,GAqHArD,GACAC,GAEAC,GAGAG,GAEAC,GACAC,GAEAC,GAWAG,GA0BAe,GAwEA4B,GAEAG,GAMAE,GACAD,GAYAE,GAcAG,GAsEAhB,GAuBAoC,GA8JR,OAdAvM,EAAY,CACR2N,IAAK1N,EACLoM,UAAWA,EACXlF,OAAQA,EACRR,KAAMA,EACNiH,GAAI7K,EACJ8K,GAAIrM,EACJsM,GAAInM,EACJoM,GAAI5M,EACJ6M,KAAM5L,EACN6L,GAAItK,EACJO,IAAKA,GAxrBGtE,CAAQD,EAAQA,EAAOG,UACvCH,EAAOE,UAAYA,EACC,iBAAVqO,QAAsBA,OAAOC,UACnCD,OAAOC,QAAUtO,GAJzB,CAMEF","file":"../lazysizes.min.js","sourcesContent":["(function(window, factory) {\n var lazySizes = factory(window, window.document);\n window.lazySizes = lazySizes;\n if(typeof module == 'object' && module.exports){\n module.exports = lazySizes;\n }\n}(window, function l(window, document) {\n 'use strict';\n /*jshint eqnull:true */\n if(!document.getElementsByClassName){return;}\n\n var lazysizes, lazySizesConfig;\n\n var docElem = document.documentElement;\n\n var Date = window.Date;\n\n var supportPicture = window.HTMLPictureElement;\n\n var _addEventListener = 'addEventListener';\n\n var _getAttribute = 'getAttribute';\n\n var addEventListener = window[_addEventListener];\n\n var setTimeout = window.setTimeout;\n\n var requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n var requestIdleCallback = window.requestIdleCallback;\n\n var regPicture = /^picture$/i;\n\n var loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n var regClassCache = {};\n\n var forEach = Array.prototype.forEach;\n\n var hasClass = function(ele, cls) {\n if(!regClassCache[cls]){\n regClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n }\n return regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n };\n\n var addClass = function(ele, cls) {\n if (!hasClass(ele, cls)){\n ele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n }\n };\n\n var removeClass = function(ele, cls) {\n var reg;\n if ((reg = hasClass(ele,cls))) {\n ele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n }\n };\n\n var addRemoveLoadEvents = function(dom, fn, add){\n var action = add ? _addEventListener : 'removeEventListener';\n if(add){\n addRemoveLoadEvents(dom, fn);\n }\n loadEvents.forEach(function(evt){\n dom[action](evt, fn);\n });\n };\n\n var triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n var event = document.createEvent('Event');\n\n if(!detail){\n detail = {};\n }\n\n detail.instance = lazysizes;\n\n event.initEvent(name, !noBubbles, !noCancelable);\n\n event.detail = detail;\n\n elem.dispatchEvent(event);\n return event;\n };\n\n var updatePolyfill = function (el, full){\n var polyfill;\n if( !supportPicture && ( polyfill = (window.picturefill || lazySizesConfig.pf) ) ){\n if(full && full.src && !el[_getAttribute]('srcset')){\n el.setAttribute('srcset', full.src);\n }\n polyfill({reevaluate: true, elements: [el]});\n } else if(full && full.src){\n el.src = full.src;\n }\n };\n\n var getCSS = function (elem, style){\n return (getComputedStyle(elem, null) || {})[style];\n };\n\n var getWidth = function(elem, parent, width){\n width = width || elem.offsetWidth;\n\n while(width < lazySizesConfig.minSize && parent && !elem._lazysizesWidth){\n width = parent.offsetWidth;\n parent = parent.parentNode;\n }\n\n return width;\n };\n\n var rAF = (function(){\n var running, waiting;\n var firstFns = [];\n var secondFns = [];\n var fns = firstFns;\n\n var run = function(){\n var runFns = fns;\n\n fns = firstFns.length ? secondFns : firstFns;\n\n running = true;\n waiting = false;\n\n while(runFns.length){\n runFns.shift()();\n }\n\n running = false;\n };\n\n var rafBatch = function(fn, queue){\n if(running && !queue){\n fn.apply(this, arguments);\n } else {\n fns.push(fn);\n\n if(!waiting){\n waiting = true;\n (document.hidden ? setTimeout : requestAnimationFrame)(run);\n }\n }\n };\n\n rafBatch._lsFlush = run;\n\n return rafBatch;\n })();\n\n var rAFIt = function(fn, simple){\n return simple ?\n function() {\n rAF(fn);\n } :\n function(){\n var that = this;\n var args = arguments;\n rAF(function(){\n fn.apply(that, args);\n });\n }\n ;\n };\n\n var throttle = function(fn){\n var running;\n var lastTime = 0;\n var gDelay = lazySizesConfig.throttleDelay;\n var rICTimeout = lazySizesConfig.ricTimeout;\n var run = function(){\n running = false;\n lastTime = Date.now();\n fn();\n };\n var idleCallback = requestIdleCallback && rICTimeout > 49 ?\n function(){\n requestIdleCallback(run, {timeout: rICTimeout});\n\n if(rICTimeout !== lazySizesConfig.ricTimeout){\n rICTimeout = lazySizesConfig.ricTimeout;\n }\n } :\n rAFIt(function(){\n setTimeout(run);\n }, true)\n ;\n\n return function(isPriority){\n var delay;\n\n if((isPriority = isPriority === true)){\n rICTimeout = 33;\n }\n\n if(running){\n return;\n }\n\n running = true;\n\n delay = gDelay - (Date.now() - lastTime);\n\n if(delay < 0){\n delay = 0;\n }\n\n if(isPriority || delay < 9){\n idleCallback();\n } else {\n setTimeout(idleCallback, delay);\n }\n };\n };\n\n //based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n var debounce = function(func) {\n var timeout, timestamp;\n var wait = 99;\n var run = function(){\n timeout = null;\n func();\n };\n var later = function() {\n var last = Date.now() - timestamp;\n\n if (last < wait) {\n setTimeout(later, wait - last);\n } else {\n (requestIdleCallback || run)(run);\n }\n };\n\n return function() {\n timestamp = Date.now();\n\n if (!timeout) {\n timeout = setTimeout(later, wait);\n }\n };\n };\n\n (function(){\n var prop;\n\n var lazySizesDefaults = {\n lazyClass: 'lazyload',\n loadedClass: 'lazyloaded',\n loadingClass: 'lazyloading',\n preloadClass: 'lazypreload',\n errorClass: 'lazyerror',\n //strictClass: 'lazystrict',\n autosizesClass: 'lazyautosizes',\n srcAttr: 'data-src',\n srcsetAttr: 'data-srcset',\n sizesAttr: 'data-sizes',\n //preloadAfterLoad: false,\n minSize: 40,\n customMedia: {},\n init: true,\n expFactor: 1.5,\n hFac: 0.8,\n loadMode: 2,\n loadHidden: true,\n ricTimeout: 0,\n throttleDelay: 125,\n };\n\n lazySizesConfig = window.lazySizesConfig || window.lazysizesConfig || {};\n\n for(prop in lazySizesDefaults){\n if(!(prop in lazySizesConfig)){\n lazySizesConfig[prop] = lazySizesDefaults[prop];\n }\n }\n\n window.lazySizesConfig = lazySizesConfig;\n\n setTimeout(function(){\n if(lazySizesConfig.init){\n init();\n }\n });\n })();\n\n var loader = (function(){\n var preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n var eLvW, elvH, eLtop, eLleft, eLright, eLbottom;\n\n var defaultExpand, preloadExpand, hFac;\n\n var regImg = /^img$/i;\n var regIframe = /^iframe$/i;\n\n var supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n var shrinkExpand = 0;\n var currentExpand = 0;\n\n var isLoading = 0;\n var lowRuns = -1;\n\n var resetPreloading = function(e){\n isLoading--;\n if(e && e.target){\n addRemoveLoadEvents(e.target, resetPreloading);\n }\n\n if(!e || isLoading < 0 || !e.target){\n isLoading = 0;\n }\n };\n\n var isNestedVisible = function(elem, elemExpand){\n var outerRect;\n var parent = elem;\n var visible = getCSS(document.body, 'visibility') == 'hidden' || (getCSS(elem.parentNode, 'visibility') != 'hidden' && getCSS(elem, 'visibility') != 'hidden');\n\n eLtop -= elemExpand;\n eLbottom += elemExpand;\n eLleft -= elemExpand;\n eLright += elemExpand;\n\n while(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n visible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n if(visible && getCSS(parent, 'overflow') != 'visible'){\n outerRect = parent.getBoundingClientRect();\n visible = eLright > outerRect.left &&\n eLleft < outerRect.right &&\n eLbottom > outerRect.top - 1 &&\n eLtop < outerRect.bottom + 1\n ;\n }\n }\n\n return visible;\n };\n\n var checkElements = function() {\n var eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal, beforeExpandVal;\n\n var lazyloadElems = lazysizes.elements;\n\n if((loadMode = lazySizesConfig.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n i = 0;\n\n lowRuns++;\n\n if(preloadExpand == null){\n if(!('expand' in lazySizesConfig)){\n lazySizesConfig.expand = docElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370;\n }\n\n defaultExpand = lazySizesConfig.expand;\n preloadExpand = defaultExpand * lazySizesConfig.expFactor;\n }\n\n if(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n currentExpand = preloadExpand;\n lowRuns = 0;\n } else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n currentExpand = defaultExpand;\n } else {\n currentExpand = shrinkExpand;\n }\n\n for(; i < eLlen; i++){\n\n if(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n if(!supportScroll){unveilElement(lazyloadElems[i]);continue;}\n\n if(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n elemExpand = currentExpand;\n }\n\n if(beforeExpandVal !== elemExpand){\n eLvW = innerWidth + (elemExpand * hFac);\n elvH = innerHeight + elemExpand;\n elemNegativeExpand = elemExpand * -1;\n beforeExpandVal = elemExpand;\n }\n\n rect = lazyloadElems[i].getBoundingClientRect();\n\n if ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n (eLtop = rect.top) <= elvH &&\n (eLright = rect.right) >= elemNegativeExpand * hFac &&\n (eLleft = rect.left) <= eLvW &&\n (eLbottom || eLright || eLleft || eLtop) &&\n (lazySizesConfig.loadHidden || getCSS(lazyloadElems[i], 'visibility') != 'hidden') &&\n ((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n unveilElement(lazyloadElems[i]);\n loadedSomething = true;\n if(isLoading > 9){break;}\n } else if(!loadedSomething && isCompleted && !autoLoadElem &&\n isLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n (preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&\n (preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) != 'auto')))){\n autoLoadElem = preloadElems[0] || lazyloadElems[i];\n }\n }\n\n if(autoLoadElem && !loadedSomething){\n unveilElement(autoLoadElem);\n }\n }\n };\n\n var throttledCheckElements = throttle(checkElements);\n\n var switchLoadingClass = function(e){\n addClass(e.target, lazySizesConfig.loadedClass);\n removeClass(e.target, lazySizesConfig.loadingClass);\n addRemoveLoadEvents(e.target, rafSwitchLoadingClass);\n triggerEvent(e.target, 'lazyloaded');\n };\n var rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n var rafSwitchLoadingClass = function(e){\n rafedSwitchLoadingClass({target: e.target});\n };\n\n var changeIframeSrc = function(elem, src){\n try {\n elem.contentWindow.location.replace(src);\n } catch(e){\n elem.src = src;\n }\n };\n\n var handleSources = function(source){\n var customMedia;\n\n var sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);\n\n if( (customMedia = lazySizesConfig.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n source.setAttribute('media', customMedia);\n }\n\n if(sourceSrcset){\n source.setAttribute('srcset', sourceSrcset);\n }\n };\n\n var lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n var src, srcset, parent, isPicture, event, firesLoad;\n\n if(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n if(sizes){\n if(isAuto){\n addClass(elem, lazySizesConfig.autosizesClass);\n } else {\n elem.setAttribute('sizes', sizes);\n }\n }\n\n srcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);\n src = elem[_getAttribute](lazySizesConfig.srcAttr);\n\n if(isImg) {\n parent = elem.parentNode;\n isPicture = parent && regPicture.test(parent.nodeName || '');\n }\n\n firesLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n event = {target: elem};\n\n if(firesLoad){\n addRemoveLoadEvents(elem, resetPreloading, true);\n clearTimeout(resetPreloadingTimer);\n resetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\n addClass(elem, lazySizesConfig.loadingClass);\n addRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n }\n\n if(isPicture){\n forEach.call(parent.getElementsByTagName('source'), handleSources);\n }\n\n if(srcset){\n elem.setAttribute('srcset', srcset);\n } else if(src && !isPicture){\n if(regIframe.test(elem.nodeName)){\n changeIframeSrc(elem, src);\n } else {\n elem.src = src;\n }\n }\n\n if(isImg && (srcset || isPicture)){\n updatePolyfill(elem, {src: src});\n }\n }\n\n if(elem._lazyRace){\n delete elem._lazyRace;\n }\n removeClass(elem, lazySizesConfig.lazyClass);\n\n rAF(function(){\n if( !firesLoad || (elem.complete && elem.naturalWidth > 1)){\n if(firesLoad){\n resetPreloading(event);\n } else {\n isLoading--;\n }\n switchLoadingClass(event);\n }\n }, true);\n });\n\n var unveilElement = function (elem){\n var detail;\n\n var isImg = regImg.test(elem.nodeName);\n\n //allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n var sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute]('sizes'));\n var isAuto = sizes == 'auto';\n\n if( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass) && hasClass(elem, lazySizesConfig.lazyClass)){return;}\n\n detail = triggerEvent(elem, 'lazyunveilread').detail;\n\n if(isAuto){\n autoSizer.updateElem(elem, true, elem.offsetWidth);\n }\n\n elem._lazyRace = true;\n isLoading++;\n\n lazyUnveil(elem, detail, isAuto, sizes, isImg);\n };\n\n var onload = function(){\n if(isCompleted){return;}\n if(Date.now() - started < 999){\n setTimeout(onload, 999);\n return;\n }\n var afterScroll = debounce(function(){\n lazySizesConfig.loadMode = 3;\n throttledCheckElements();\n });\n\n isCompleted = true;\n\n lazySizesConfig.loadMode = 3;\n\n throttledCheckElements();\n\n addEventListener('scroll', function(){\n if(lazySizesConfig.loadMode == 3){\n lazySizesConfig.loadMode = 2;\n }\n afterScroll();\n }, true);\n };\n\n return {\n _: function(){\n started = Date.now();\n\n lazysizes.elements = document.getElementsByClassName(lazySizesConfig.lazyClass);\n preloadElems = document.getElementsByClassName(lazySizesConfig.lazyClass + ' ' + lazySizesConfig.preloadClass);\n hFac = lazySizesConfig.hFac;\n\n addEventListener('scroll', throttledCheckElements, true);\n\n addEventListener('resize', throttledCheckElements, true);\n\n if(window.MutationObserver){\n new MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n } else {\n docElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n docElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n setInterval(throttledCheckElements, 999);\n }\n\n addEventListener('hashchange', throttledCheckElements, true);\n\n //, 'fullscreenchange'\n ['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend', 'webkitAnimationEnd'].forEach(function(name){\n document[_addEventListener](name, throttledCheckElements, true);\n });\n\n if((/d$|^c/.test(document.readyState))){\n onload();\n } else {\n addEventListener('load', onload);\n document[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n setTimeout(onload, 20000);\n }\n\n if(lazysizes.elements.length){\n checkElements();\n rAF._lsFlush();\n } else {\n throttledCheckElements();\n }\n },\n checkElems: throttledCheckElements,\n unveil: unveilElement\n };\n })();\n\n\n var autoSizer = (function(){\n var autosizesElems;\n\n var sizeElement = rAFIt(function(elem, parent, event, width){\n var sources, i, len;\n elem._lazysizesWidth = width;\n width += 'px';\n\n elem.setAttribute('sizes', width);\n\n if(regPicture.test(parent.nodeName || '')){\n sources = parent.getElementsByTagName('source');\n for(i = 0, len = sources.length; i < len; i++){\n sources[i].setAttribute('sizes', width);\n }\n }\n\n if(!event.detail.dataAttr){\n updatePolyfill(elem, event.detail);\n }\n });\n var getSizeElement = function (elem, dataAttr, width){\n var event;\n var parent = elem.parentNode;\n\n if(parent){\n width = getWidth(elem, parent, width);\n event = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n if(!event.defaultPrevented){\n width = event.detail.width;\n\n if(width && width !== elem._lazysizesWidth){\n sizeElement(elem, parent, event, width);\n }\n }\n }\n };\n\n var updateElementsSizes = function(){\n var i;\n var len = autosizesElems.length;\n if(len){\n i = 0;\n\n for(; i < len; i++){\n getSizeElement(autosizesElems[i]);\n }\n }\n };\n\n var debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n return {\n _: function(){\n autosizesElems = document.getElementsByClassName(lazySizesConfig.autosizesClass);\n addEventListener('resize', debouncedUpdateElementsSizes);\n },\n checkElems: debouncedUpdateElementsSizes,\n updateElem: getSizeElement\n };\n })();\n\n var init = function(){\n if(!init.i){\n init.i = true;\n autoSizer._();\n loader._();\n }\n };\n\n lazysizes = {\n cfg: lazySizesConfig,\n autoSizer: autoSizer,\n loader: loader,\n init: init,\n uP: updatePolyfill,\n aC: addClass,\n rC: removeClass,\n hC: hasClass,\n fire: triggerEvent,\n gW: getWidth,\n rAF: rAF,\n };\n\n return lazysizes;\n }\n));"]}