{"version":3,"sources":["webpack://_N_E/./node_modules/cloudinary-video-player/dist/cld-video-player.js"],"names":["factory","window","modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","eval","__webpack_exports__"],"mappings":"mHAAA,IAAiDA,QAS9CC,OAT8CD,QAStC,WACX,OAAgB,SAAUE,GAEhB,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAJ,EAAQG,GAAUK,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBO,EAAIT,EAGxBE,EAAoBQ,EAAIT,EAGxBC,EAAoBS,EAAI,SAASP,EAASQ,EAAMC,GAC3CX,EAAoBY,EAAEV,EAASQ,IAClCG,OAAOC,eAAeZ,EAASQ,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEX,EAAoBiB,EAAI,SAASf,GACX,qBAAXgB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeZ,EAASgB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeZ,EAAS,aAAc,CAAEkB,OAAO,KAQvDpB,EAAoBqB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQpB,EAAoBoB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAzB,EAAoBiB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOpB,EAAoBS,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRxB,EAAoB4B,EAAI,SAASzB,GAChC,IAAIQ,EAASR,GAAUA,EAAOoB,WAC7B,WAAwB,OAAOpB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBS,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRX,EAAoBY,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG9B,EAAoBiC,EAAI,GAIjBjC,EAAoBA,EAAoBkC,EAAI,cAnF7C,CAsFN,CAEJ,kEAKA,SAAU/B,OAAQD,SAExBiC,KAAK,0aAIC,sDAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,qqCAIC,oDAKA,SAAUhC,OAAQD,SAExBiC,KAAK,gsBAIC,qDAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,+1BAIC,0DAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,2iBAIC,qEAKA,SAAUhC,OAAQD,SAExBiC,KAAK,omBAIC,2DAKA,SAAUhC,OAAQD,SAExBiC,KAAK,ggBAIC,8DAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,ywHAIC,kEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,89RAIC,2DAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,wxEAIC,8EAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,gpSAIC,+DAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,6sTAIC,iFAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,szdAIC,2EAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,yiEAIC,sEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,4xFAIC,+EAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,0hDAIC,0EAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,2tPAIC,mEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,mzmDAIC,mGAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,y7CAIC,sGAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,quCAIC,wFAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,qrBAIC,uFAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,k0BAIC,0FAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,4yMAIC,2FAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,mxCAIC,gGAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,uzCAIC,+EAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,g0DAIC,0EAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,8uCAIC,kEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,ucAIC,qEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,6ZAIC,uEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,0qBAIC,mEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,qUAIC,yEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,w0EAIC,oFAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,o2DAIC,4EAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,4rBAIC,sEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,4sBAIC,oEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,0aAIC,qEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,wzBAIC,kEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,2cAIC,8EAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,2gDAIC,sEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,yqCAIC,mEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,yz+CAIC,4EAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,2rCAIC,6DAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,8kEAIC,wDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,w9UAIC,yDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,qsHAIC,kDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,ghTAIC,sDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,gzSAIC,qEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,wzCAIC,wDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,s9lBAIC,uDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,qsDAIC,uDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,k8CAIC,uDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,qknBAIC,uDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,wmJAIC,wDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,63EAIC,uDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,23FAIC,kDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+5GAIC,mDAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,wtDAIC,4CAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,ktQAIC,oDAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,unJAIC,mDAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,ylSAIC,4CAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,4k+CAIC,iDAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,urOAIC,8CAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,qZAIC,4CAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,g1qBAIC,qCAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,gkIAIC,2CAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,q/GAIC,gDAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,u00jFAIC,mCAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,sneAIC,qCAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,wsBAIC,mCAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,6gBAIC,mCAKA,SAAUhC,OAAQD,SAExBiC,KAAK,uxEAIC,uCAKA,SAAUhC,OAAQD,SAExBiC,KAAK,0jBAIC,mCAKA,SAAUhC,OAAQD,SAExBiC,KAAK,iOAIC,mCAKA,SAAUhC,OAAQD,SAExBiC,KAAK,+5HAIC,qDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,g2iDAIC,mDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,6x2EAIC,iDAKA,SAAUhC,OAAQD,SAExBiC,KAAK,q5CAIC,4CAKA,SAAUhC,OAAQD,SAExBiC,KAAK,2rDAIC,iEAKA,SAAUhC,OAAQD,QAASF,qBAEjC,aACAmC,KAAK,gsjDAIC,qCAKA,SAAUhC,OAAQD,SAExBiC,KAAK,4jLAIC,2CAKA,SAAUhC,OAAQD,SAExBiC,KAAK,sVAIC,iDAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,69NAIC,4CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,04zrDAIC,oDAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,yaAIC,sEAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,iv3BAIC,2FAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,ogVAIC,uFAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,yiUAIC,sDAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,+zDAIC,4CAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,6v2CAIC,+CAKA,SAAUhC,OAAQD,SAExBiC,KAAK,+9NAIC,kDAKA,SAAUhC,OAAQD,SAExBiC,KAAK,+rHAIC,iDAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,u7YAIC,4CAKA,SAAUhC,OAAQD,SAExBiC,KAAK,mlBAIC,4CAKA,SAAUhC,OAAQD,SAExBiC,KAAK,upBAIC,2CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,sLAIC,4CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,uLAIC,4CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,uLAIC,sDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,iMAIC,4BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,uKAIC,kCAKA,SAAUhC,OAAQD,SAExBiC,KAAK,ydAIC,wBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,w8GAIC,0DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,0tGAIC,4DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,yhXAIC,0DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,k4cAIC,4CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,6xKAIC,2CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,8zKAIC,+CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,kuBAIC,yCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,w+KAIC,2CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,sLAIC,sDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,4mKAIC,2DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+vKAIC,+DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,qxKAIC,+CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+jCAIC,iDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,4LAIC,6DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,g3YAIC,+DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,0MAIC,yDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,kgKAIC,6DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,82JAIC,2DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,w1JAIC,kDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,gnTAIC,qDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,u2OAIC,gDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+rPAIC,2CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,i1OAIC,0CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,q+BAIC,oCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,w7dAIC,+CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+oNAIC,kFAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,syKAIC,qDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,gMAIC,kDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,wiOAIC,gDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,geAIC,0EAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,slQAIC,8EAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,6vKAIC,uEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,qwLAIC,+EAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,s+PAIC,iFAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,oxNAIC,4FAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,uvMAIC,kEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,45UAIC,oEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+MAIC,kDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,ywTAIC,8DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,wwOAIC,kEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,uxQAIC,2DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,uuSAIC,sDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,gqaAIC,sDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,y2MAIC,uDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,koHAIC,iDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,i3QAIC,mDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,8LAIC,iDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,wVAIC,2CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,ktCAIC,sCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,00OAIC,uBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,0mDAIC,uBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,6jaAIC,aAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,s2HAIC,wBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,ikMAIC,2BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+wQAIC,+BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,khYAIC,wCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,8sIAIC,iCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,8rWAIC,iDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,8qFAIC,gCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,shnBAIC,iEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,woCAIC,2DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,ktQAIC,6CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,yjLAIC,8CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,q6JAIC,iEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,o6DAIC,2DAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,kigBAIC,iEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,2xKAIC,4BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,0rWAIC,yDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,yiLAIC,oDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,87NAIC,2CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,sLAIC,+CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,izCAIC,kCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,m6OAIC,gDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,mwIAIC,0BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,wtDAIC,uCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,o7IAIC,sCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,mtPAIC,iCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,k7oBAIC,iDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,4LAIC,qCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,guOAIC,yBAKA,SAAUhC,OAAQD,QAASF,qBAEjCmC,KAAK,y84DAIC,qBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,8lGAIC,wCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,qtBAIC,wEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,4tPAIC,sEAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,mtMAIC,mDAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,ymIAIC,oCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,imeAIC,+CAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,0LAIC,iBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,m+CAIC,8BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,myCAIC,mBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+kCAIC,oBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,y4BAIC,mCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,inEAIC,wBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,mtLAIC,oBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,ynDAIC,wBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,4rFAIC,iBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,45GAIC,kBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,6jCAIC,sBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,omCAIC,qBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,wjBAIC,mBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,w1EAIC,qBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,qkBAIC,mBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,8yCAIC,oBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,60HAIC,wBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,mcAIC,yBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,s4FAIC,yBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,4iBAIC,qBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,k4CAIC,oBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,0uBAIC,sBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+2BAIC,kBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,+3JAIC,4BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,slEAIC,uCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,i3EAIC,mCAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,u/KAIC,6BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,o1PAIC,0BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,ymGAIC,oBAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,4+mCAIC,0BAKA,SAAUhC,OAAQiC,oBAAqBpC,qBAE7C,aACAmC,KAAK,8zQAIC,EAKA,SAAUhC,OAAQD,SAExBiC,KAAK,gGA3nFHhC,OAAOD,QAAUN","file":"static/chunks/3c706662.779b0c4ad55b33049d4b.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cloudinaryVideoPlayer\"] = factory();\n\telse\n\t\troot[\"cloudinaryVideoPlayer\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"../node_modules/@babel/runtime/helpers/assertThisInitialized.js\":\n/*!***********************************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"function _assertThisInitialized(self) {\\n if (self === void 0) {\\n throw new ReferenceError(\\\"this hasn't been initialised - super() hasn't been called\\\");\\n }\\n\\n return self;\\n}\\n\\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/assertThisInitialized.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/construct.js\":\n/*!***********************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/construct.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \\\"../node_modules/@babel/runtime/helpers/setPrototypeOf.js\\\");\\n\\nvar isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ \\\"../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js\\\");\\n\\nfunction _construct(Parent, args, Class) {\\n if (isNativeReflectConstruct()) {\\n module.exports = _construct = Reflect.construct, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n } else {\\n module.exports = _construct = function _construct(Parent, args, Class) {\\n var a = [null];\\n a.push.apply(a, args);\\n var Constructor = Function.bind.apply(Parent, a);\\n var instance = new Constructor();\\n if (Class) setPrototypeOf(instance, Class.prototype);\\n return instance;\\n }, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n }\\n\\n return _construct.apply(null, arguments);\\n}\\n\\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/construct.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/extends.js\":\n/*!*********************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/extends.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"function _extends() {\\n module.exports = _extends = Object.assign || function (target) {\\n for (var i = 1; i < arguments.length; i++) {\\n var source = arguments[i];\\n\\n for (var key in source) {\\n if (Object.prototype.hasOwnProperty.call(source, key)) {\\n target[key] = source[key];\\n }\\n }\\n }\\n\\n return target;\\n }, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n return _extends.apply(this, arguments);\\n}\\n\\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/extends.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/inherits.js\":\n/*!**********************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/inherits.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \\\"../node_modules/@babel/runtime/helpers/setPrototypeOf.js\\\");\\n\\nfunction _inherits(subClass, superClass) {\\n if (typeof superClass !== \\\"function\\\" && superClass !== null) {\\n throw new TypeError(\\\"Super expression must either be null or a function\\\");\\n }\\n\\n subClass.prototype = Object.create(superClass && superClass.prototype, {\\n constructor: {\\n value: subClass,\\n writable: true,\\n configurable: true\\n }\\n });\\n Object.defineProperty(subClass, \\\"prototype\\\", {\\n writable: false\\n });\\n if (superClass) setPrototypeOf(subClass, superClass);\\n}\\n\\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/inherits.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/inheritsLoose.js\":\n/*!***************************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/inheritsLoose.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \\\"../node_modules/@babel/runtime/helpers/setPrototypeOf.js\\\");\\n\\nfunction _inheritsLoose(subClass, superClass) {\\n subClass.prototype = Object.create(superClass.prototype);\\n subClass.prototype.constructor = subClass;\\n setPrototypeOf(subClass, superClass);\\n}\\n\\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/inheritsLoose.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js\":\n/*!**************************************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"function _isNativeReflectConstruct() {\\n if (typeof Reflect === \\\"undefined\\\" || !Reflect.construct) return false;\\n if (Reflect.construct.sham) return false;\\n if (typeof Proxy === \\\"function\\\") return true;\\n\\n try {\\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\\n return true;\\n } catch (e) {\\n return false;\\n }\\n}\\n\\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/setPrototypeOf.js\":\n/*!****************************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"function _setPrototypeOf(o, p) {\\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\\n o.__proto__ = p;\\n return o;\\n }, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n return _setPrototypeOf(o, p);\\n}\\n\\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\\\"default\\\"] = module.exports;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/setPrototypeOf.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/condition.cjs\":\n/*!*******************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/condition.cjs ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar tslib_es6 = __webpack_require__(/*! ../tslib.es6-bcbd7c13.cjs */ \\\"../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs\\\");\\nvar backwards_expression = __webpack_require__(/*! ./expression.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/expression.cjs\\\");\\n\\n/**\\n * Represents a transformation condition.\\n * @param {string} conditionStr - a condition in string format\\n * @class Condition\\n * @example\\n * // normally this class is not instantiated directly\\n * var tr = cloudinary.Transformation.new()\\n * .if().width( \\\">\\\", 1000).and().aspectRatio(\\\"<\\\", \\\"3:4\\\").then()\\n * .width(1000)\\n * .crop(\\\"scale\\\")\\n * .else()\\n * .width(500)\\n * .crop(\\\"scale\\\")\\n *\\n * var tr = cloudinary.Transformation.new()\\n * .if(\\\"w > 1000 and aspectRatio < 3:4\\\")\\n * .width(1000)\\n * .crop(\\\"scale\\\")\\n * .else()\\n * .width(500)\\n * .crop(\\\"scale\\\")\\n *\\n */\\nvar Condition = /** @class */ (function (_super) {\\n tslib_es6.__extends(Condition, _super);\\n function Condition(conditionStr) {\\n return _super.call(this, conditionStr) || this;\\n }\\n /**\\n * @function Condition#height\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Condition} this condition\\n */\\n Condition.prototype.height = function (operator, value) {\\n return this.predicate(\\\"h\\\", operator, value);\\n };\\n /**\\n * @function Condition#width\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Condition} this condition\\n */\\n Condition.prototype.width = function (operator, value) {\\n return this.predicate(\\\"w\\\", operator, value);\\n };\\n /**\\n * @function Condition#aspectRatio\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Condition} this condition\\n */\\n Condition.prototype.aspectRatio = function (operator, value) {\\n return this.predicate(\\\"ar\\\", operator, value);\\n };\\n /**\\n * @function Condition#pages\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Condition} this condition\\n */\\n Condition.prototype.pageCount = function (operator, value) {\\n return this.predicate(\\\"pc\\\", operator, value);\\n };\\n /**\\n * @function Condition#faces\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Condition} this condition\\n */\\n Condition.prototype.faceCount = function (operator, value) {\\n return this.predicate(\\\"fc\\\", operator, value);\\n };\\n /**\\n * @function Condition#duration\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Condition} this condition\\n */\\n Condition.prototype.duration = function (operator, value) {\\n return this.predicate(\\\"du\\\", operator, value);\\n };\\n /**\\n * @function Condition#initialDuration\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Condition} this condition\\n */\\n Condition.prototype.initialDuration = function (operator, value) {\\n return this.predicate(\\\"idu\\\", operator, value);\\n };\\n return Condition;\\n}(backwards_expression));\\n\\nmodule.exports = Condition;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/condition.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/configuration.cjs\":\n/*!***********************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/configuration.cjs ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar internal_utils_cloneDeep = __webpack_require__(/*! ../internal/utils/cloneDeep.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/cloneDeep.cjs\\\");\\nvar backwards_utils_isObject = __webpack_require__(/*! ./utils/isObject.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs\\\");\\n\\n/**\\n * Class for defining account configuration options.\\n * Depends on 'utils'\\n */\\n/**\\n * Assign values from sources if they are not defined in the destination.\\n * Once a value is set it does not change\\n * @function Util.defaults\\n * @param {Object} destination - the object to assign defaults to\\n * @param sources\\n * @param {...Object} source - the source object(s) to assign defaults from\\n * @return {Object} destination after it was modified\\n */\\nvar useDefaultValues = function (destination) {\\n var sources = [];\\n for (var _i = 1; _i < arguments.length; _i++) {\\n sources[_i - 1] = arguments[_i];\\n }\\n return sources.reduce(function (dest, source) {\\n var key, value;\\n for (key in source) {\\n // @ts-ignore\\n value = source[key];\\n // @ts-ignore\\n if (dest[key] === void 0) {\\n // @ts-ignore\\n dest[key] = value;\\n }\\n }\\n return dest;\\n }, destination);\\n};\\n/**\\n * Class for defining account configuration options.\\n * @constructor Configuration\\n * @param {Object} options - The account configuration parameters to set.\\n * @see Available configuration options\\n */\\nvar Configuration = /** @class */ (function () {\\n function Configuration(options) {\\n this.configuration = options == null ? {} : internal_utils_cloneDeep.cloneDeep(options);\\n useDefaultValues(this.configuration, DEFAULT_CONFIGURATION_PARAMS);\\n }\\n /**\\n * Initializes the configuration. This method is a convenience method that invokes both\\n * {@link Configuration#fromEnvironment|fromEnvironment()} (Node.js environment only)\\n * and {@link Configuration#fromDocument|fromDocument()}.\\n * It first tries to retrieve the configuration from the environment variable.\\n * If not available, it tries from the document meta tags.\\n * @function Configuration#init\\n * @return {Configuration} returns `this` for chaining\\n * @see fromDocument\\n * @see fromEnvironment\\n */\\n Configuration.prototype.init = function () {\\n this.fromEnvironment();\\n this.fromDocument();\\n return this;\\n };\\n /**\\n * Set a new configuration item\\n * @function Configuration#set\\n * @param {string} name - the name of the item to set\\n * @param {*} value - the value to be set\\n * @return {Configuration}\\n *\\n */\\n Configuration.prototype.set = function (name, value) {\\n // @ts-ignore\\n this.configuration[name] = value;\\n return this;\\n };\\n /**\\n * Get the value of a configuration item\\n * @function Configuration#get\\n * @param {string} name - the name of the item to set\\n * @return {*} the configuration item\\n */\\n Configuration.prototype.get = function (name) {\\n return this.configuration[name];\\n };\\n Configuration.prototype.merge = function (config) {\\n Object.assign(this.configuration, internal_utils_cloneDeep.cloneDeep(config));\\n return this;\\n };\\n /**\\n * Initialize Cloudinary from HTML meta tags.\\n * @function Configuration#fromDocument\\n * @return {Configuration}\\n * @example \\n *\\n */\\n Configuration.prototype.fromDocument = function () {\\n var el, i, len, meta_elements;\\n meta_elements = typeof document !== \\\"undefined\\\" && document !== null ? document.querySelectorAll('meta[name^=\\\"cloudinary_\\\"]') : void 0;\\n if (meta_elements) {\\n for (i = 0, len = meta_elements.length; i < len; i++) {\\n el = meta_elements[i];\\n this.configuration[el.getAttribute('name').replace('cloudinary_', '')] = el.getAttribute('content');\\n }\\n }\\n return this;\\n };\\n /**\\n * Initialize Cloudinary from the `CLOUDINARY_URL` environment variable.\\n *\\n * This function will only run under Node.js environment.\\n * @function Configuration#fromEnvironment\\n * @requires Node.js\\n */\\n Configuration.prototype.fromEnvironment = function () {\\n var _this = this;\\n var cloudinary_url, query, uri, uriRegex;\\n if (typeof process !== \\\"undefined\\\" && process !== null && Object({\\\"NODE_ENV\\\":\\\"development\\\"}) && Object({\\\"NODE_ENV\\\":\\\"development\\\"}).CLOUDINARY_URL) {\\n cloudinary_url = Object({\\\"NODE_ENV\\\":\\\"development\\\"}).CLOUDINARY_URL;\\n uriRegex = /cloudinary:\\\\/\\\\/(?:(\\\\w+)(?:\\\\:([\\\\w-]+))?@)?([\\\\w\\\\.-]+)(?:\\\\/([^?]*))?(?:\\\\?(.+))?/;\\n uri = uriRegex.exec(cloudinary_url);\\n if (uri) {\\n if (uri[3] != null) {\\n this.configuration['cloud_name'] = uri[3];\\n }\\n if (uri[1] != null) {\\n this.configuration['api_key'] = uri[1];\\n }\\n if (uri[2] != null) {\\n this.configuration['api_secret'] = uri[2];\\n }\\n if (uri[4] != null) {\\n this.configuration['private_cdn'] = uri[4] != null;\\n }\\n if (uri[4] != null) {\\n this.configuration['secure_distribution'] = uri[4];\\n }\\n query = uri[5];\\n if (query != null) {\\n query.split('&').forEach(function (value) {\\n var _a = value.split('='), k = _a[0], v = _a[1];\\n if (v == null) {\\n // @ts-ignore\\n v = true;\\n }\\n _this.configuration[k] = v;\\n });\\n }\\n }\\n }\\n return this;\\n };\\n /**\\n * Create or modify the Cloudinary client configuration\\n *\\n * Warning: `config()` returns the actual internal configuration object. modifying it will change the configuration.\\n *\\n * This is a backward compatibility method. For new code, use get(), merge() etc.\\n * @function Configuration#config\\n * @param {hash|string|boolean} new_config\\n * @param {string} new_value\\n * @returns {*} configuration, or value\\n *\\n * @see {@link fromEnvironment} for initialization using environment variables\\n * @see {@link fromDocument} for initialization using HTML meta tags\\n */\\n Configuration.prototype.config = function (new_config, new_value) {\\n switch (false) {\\n case new_value === void 0:\\n this.set(new_config, new_value);\\n return this.configuration;\\n case typeof new_config != 'string':\\n return this.get(new_config);\\n case !backwards_utils_isObject.isObject(new_config):\\n this.merge(new_config);\\n return this.configuration;\\n default:\\n // Backward compatibility - return the internal object\\n return this.configuration;\\n }\\n };\\n /**\\n * Returns a copy of the configuration parameters\\n * @function Configuration#toOptions\\n * @returns {Object} a key:value collection of the configuration parameters\\n */\\n Configuration.prototype.toOptions = function () {\\n return internal_utils_cloneDeep.cloneDeep(this.configuration);\\n };\\n return Configuration;\\n}());\\nvar DEFAULT_CONFIGURATION_PARAMS = {\\n responsive_class: 'cld-responsive',\\n responsive_use_breakpoints: true,\\n round_dpr: true,\\n secure: (typeof window !== \\\"undefined\\\" && window !== null ? window.location ? window.location.protocol : void 0 : void 0) === 'https:'\\n};\\nvar CONFIG_PARAMS = [\\n \\\"api_key\\\",\\n \\\"api_secret\\\",\\n \\\"callback\\\",\\n \\\"cdn_subdomain\\\",\\n \\\"cloud_name\\\",\\n \\\"cname\\\",\\n \\\"private_cdn\\\",\\n \\\"protocol\\\",\\n \\\"resource_type\\\",\\n \\\"responsive\\\",\\n \\\"responsive_class\\\",\\n \\\"responsive_use_breakpoints\\\",\\n \\\"responsive_width\\\",\\n \\\"round_dpr\\\",\\n \\\"secure\\\",\\n \\\"secure_cdn_subdomain\\\",\\n \\\"secure_distribution\\\",\\n \\\"shorten\\\",\\n \\\"type\\\",\\n \\\"upload_preset\\\",\\n \\\"url_suffix\\\",\\n \\\"use_root_path\\\",\\n \\\"version\\\",\\n \\\"externalLibraries\\\",\\n \\\"max_timeout_ms\\\"\\n];\\n\\nexports.CONFIG_PARAMS = CONFIG_PARAMS;\\nexports[\\\"default\\\"] = Configuration;\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../process/browser.js */ \\\"../node_modules/process/browser.js\\\")))\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/configuration.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\":\n/*!****************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/consts.cjs ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar LEGACY_CONDITIONAL_OPERATORS = {\\n \\\"=\\\": 'eq',\\n \\\"!=\\\": 'ne',\\n \\\"<\\\": 'lt',\\n \\\">\\\": 'gt',\\n \\\"<=\\\": 'lte',\\n \\\">=\\\": 'gte',\\n \\\"&&\\\": 'and',\\n \\\"||\\\": 'or',\\n \\\"*\\\": \\\"mul\\\",\\n \\\"/\\\": \\\"div\\\",\\n \\\"+\\\": \\\"add\\\",\\n \\\"-\\\": \\\"sub\\\",\\n \\\"^\\\": \\\"pow\\\"\\n};\\nvar CF_SHARED_CDN = \\\"d3jpl91pxevbkh.cloudfront.net\\\";\\nvar OLD_AKAMAI_SHARED_CDN = \\\"cloudinary-a.akamaihd.net\\\";\\nvar AKAMAI_SHARED_CDN = \\\"res.cloudinary.com\\\";\\nvar SHARED_CDN = AKAMAI_SHARED_CDN;\\nvar LEGACY_PREDEFINED_VARS = {\\n \\\"aspect_ratio\\\": \\\"ar\\\",\\n \\\"aspectRatio\\\": \\\"ar\\\",\\n \\\"current_page\\\": \\\"cp\\\",\\n \\\"currentPage\\\": \\\"cp\\\",\\n \\\"duration\\\": \\\"du\\\",\\n \\\"face_count\\\": \\\"fc\\\",\\n \\\"faceCount\\\": \\\"fc\\\",\\n \\\"height\\\": \\\"h\\\",\\n \\\"initial_aspect_ratio\\\": \\\"iar\\\",\\n \\\"initial_height\\\": \\\"ih\\\",\\n \\\"initial_width\\\": \\\"iw\\\",\\n \\\"initialAspectRatio\\\": \\\"iar\\\",\\n \\\"initialHeight\\\": \\\"ih\\\",\\n \\\"initialWidth\\\": \\\"iw\\\",\\n \\\"initial_duration\\\": \\\"idu\\\",\\n \\\"initialDuration\\\": \\\"idu\\\",\\n \\\"page_count\\\": \\\"pc\\\",\\n \\\"page_x\\\": \\\"px\\\",\\n \\\"page_y\\\": \\\"py\\\",\\n \\\"pageCount\\\": \\\"pc\\\",\\n \\\"pageX\\\": \\\"px\\\",\\n \\\"pageY\\\": \\\"py\\\",\\n \\\"tags\\\": \\\"tags\\\",\\n \\\"width\\\": \\\"w\\\"\\n};\\nvar NUMBER_PATTERN = \\\"([0-9]*)\\\\\\\\.([0-9]+)|([0-9]+)\\\";\\nvar OFFSET_ANY_PATTERN = \\\"(\\\".concat(NUMBER_PATTERN, \\\")([%pP])?\\\");\\nvar RANGE_VALUE_RE = RegExp(\\\"^\\\".concat(OFFSET_ANY_PATTERN, \\\"$\\\"));\\nvar OFFSET_ANY_PATTERN_RE = RegExp(\\\"(\\\".concat(OFFSET_ANY_PATTERN, \\\")\\\\\\\\.\\\\\\\\.(\\\").concat(OFFSET_ANY_PATTERN, \\\")\\\"));\\nvar LAYER_KEYWORD_PARAMS = {\\n font_weight: \\\"normal\\\",\\n font_style: \\\"normal\\\",\\n text_decoration: \\\"none\\\",\\n text_align: '',\\n stroke: \\\"none\\\"\\n};\\n\\nexports.AKAMAI_SHARED_CDN = AKAMAI_SHARED_CDN;\\nexports.CF_SHARED_CDN = CF_SHARED_CDN;\\nexports.LAYER_KEYWORD_PARAMS = LAYER_KEYWORD_PARAMS;\\nexports.LEGACY_CONDITIONAL_OPERATORS = LEGACY_CONDITIONAL_OPERATORS;\\nexports.LEGACY_PREDEFINED_VARS = LEGACY_PREDEFINED_VARS;\\nexports.NUMBER_PATTERN = NUMBER_PATTERN;\\nexports.OFFSET_ANY_PATTERN = OFFSET_ANY_PATTERN;\\nexports.OFFSET_ANY_PATTERN_RE = OFFSET_ANY_PATTERN_RE;\\nexports.OLD_AKAMAI_SHARED_CDN = OLD_AKAMAI_SHARED_CDN;\\nexports.RANGE_VALUE_RE = RANGE_VALUE_RE;\\nexports.SHARED_CDN = SHARED_CDN;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/consts.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/createCloudinaryLegacyURL.cjs\":\n/*!***********************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/createCloudinaryLegacyURL.cjs ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_generateTransformationString = __webpack_require__(/*! ./generateTransformationString.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/generateTransformationString.cjs\\\");\\nvar backwards_utils_finalizeResourceType = __webpack_require__(/*! ./utils/finalizeResourceType.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/finalizeResourceType.cjs\\\");\\nvar backwards_utils_finalize_source = __webpack_require__(/*! ./utils/finalize_source.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/finalize_source.cjs\\\");\\nvar backwards_utils_unsigned_url_prefix = __webpack_require__(/*! ./utils/unsigned_url_prefix.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.cjs\\\");\\nvar internal_utils_cloneDeep = __webpack_require__(/*! ../internal/utils/cloneDeep.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/cloneDeep.cjs\\\");\\n__webpack_require__(/*! ./transformationProcessing/processLayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processLayer.cjs\\\");\\n__webpack_require__(/*! ./utils/isObject.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs\\\");\\n__webpack_require__(/*! ../internal/utils/base64Encode.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs\\\");\\n__webpack_require__(/*! ./consts.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\\\");\\n__webpack_require__(/*! ./utils/smartEscape.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs\\\");\\n__webpack_require__(/*! ./legacyLayer/textlayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/textlayer.cjs\\\");\\n__webpack_require__(/*! ../tslib.es6-bcbd7c13.cjs */ \\\"../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs\\\");\\n__webpack_require__(/*! ./legacyLayer/layer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs\\\");\\n__webpack_require__(/*! ./utils/snakeCase.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs\\\");\\n__webpack_require__(/*! ./utils/isEmpty.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs\\\");\\n__webpack_require__(/*! ./utils/isNumberLike.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isNumberLike.cjs\\\");\\n__webpack_require__(/*! ./transformationProcessing/processIf.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processIf.cjs\\\");\\n__webpack_require__(/*! ./utils/legacyNormalizeExpression.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/legacyNormalizeExpression.cjs\\\");\\n__webpack_require__(/*! ./utils/toArray.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/toArray.cjs\\\");\\n__webpack_require__(/*! ./transformationProcessing/processRadius.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processRadius.cjs\\\");\\n__webpack_require__(/*! ./transformationProcessing/processCustomFunction.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomFunction.cjs\\\");\\n__webpack_require__(/*! ./transformationProcessing/processCustomPreFunction.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomPreFunction.cjs\\\");\\n__webpack_require__(/*! ./utils/splitRange.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/splitRange.cjs\\\");\\n__webpack_require__(/*! ./utils/norm_range_values.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/norm_range_values.cjs\\\");\\n__webpack_require__(/*! ./transformationProcessing/processVideoParams.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processVideoParams.cjs\\\");\\n__webpack_require__(/*! ./transformation.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformation.cjs\\\");\\n__webpack_require__(/*! ./condition.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/condition.cjs\\\");\\n__webpack_require__(/*! ./expression.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/expression.cjs\\\");\\n__webpack_require__(/*! ./configuration.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/configuration.cjs\\\");\\n__webpack_require__(/*! ./utils/legacyBaseUtil.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/legacyBaseUtil.cjs\\\");\\n__webpack_require__(/*! ./legacyLayer/subtitleslayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/subtitleslayer.cjs\\\");\\n__webpack_require__(/*! ./legacyLayer/fetchlayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/fetchlayer.cjs\\\");\\n__webpack_require__(/*! ../internal/utils/dataStructureUtils.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/dataStructureUtils.cjs\\\");\\n__webpack_require__(/*! ./utils/isFunction.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isFunction.cjs\\\");\\n__webpack_require__(/*! ./transformationProcessing/processDpr.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processDpr.cjs\\\");\\n\\nfunction createCloudinaryLegacyURL(public_id, transformationOptions) {\\n var _a, _b;\\n // Path format\\n if (transformationOptions.type === \\\"fetch\\\") {\\n if (transformationOptions.fetch_format == null) {\\n transformationOptions.fetch_format = transformationOptions.format;\\n }\\n }\\n var source_to_sign;\\n var type = transformationOptions.type;\\n var resource_type = transformationOptions.resource_type || 'image';\\n var version = transformationOptions.version;\\n var force_version = typeof transformationOptions.force_version === 'boolean' ? transformationOptions.force_version : true;\\n !!transformationOptions.long_url_signature;\\n var format = transformationOptions.format;\\n var cloud_name = transformationOptions.cloud_name;\\n if (!cloud_name) {\\n throw \\\"cloud_name must be provided in the configuration\\\";\\n }\\n var private_cdn = transformationOptions.private_cdn;\\n var secure_distribution = transformationOptions.secure_distribution;\\n var secure = transformationOptions.secure;\\n var cdn_subdomain = transformationOptions.cdn_subdomain;\\n var secure_cdn_subdomain = transformationOptions.secure_cdn_subdomain;\\n var cname = transformationOptions.cname;\\n var shorten = transformationOptions.shorten;\\n var sign_url = transformationOptions.sign_url;\\n transformationOptions.api_secret;\\n var url_suffix = transformationOptions.url_suffix;\\n var use_root_path = transformationOptions.use_root_path;\\n var auth_token = transformationOptions.auth_token;\\n var preloaded = /^(image|raw)\\\\/([a-z0-9_]+)\\\\/v(\\\\d+)\\\\/([^#]+)$/.exec(public_id);\\n if (preloaded) {\\n resource_type = preloaded[1];\\n type = preloaded[2];\\n version = preloaded[3];\\n public_id = preloaded[4];\\n }\\n var original_source = public_id;\\n if (public_id == null) {\\n return original_source;\\n }\\n public_id = public_id.toString();\\n if (type === null && public_id.match(/^https?:\\\\//i)) {\\n return original_source;\\n }\\n _a = backwards_utils_finalizeResourceType.finalize_resource_type(resource_type, type, url_suffix, use_root_path, shorten), resource_type = _a[0], type = _a[1];\\n _b = backwards_utils_finalize_source.finalize_source(public_id, format, url_suffix), public_id = _b[0], source_to_sign = _b[1];\\n if (version == null && force_version && source_to_sign.indexOf(\\\"/\\\") >= 0 && !source_to_sign.match(/^v[0-9]+/) && !source_to_sign.match(/^https?:\\\\//)) {\\n version = 1;\\n }\\n if (version != null) {\\n version = \\\"v\\\".concat(version);\\n }\\n else {\\n version = null;\\n }\\n var transformation = backwards_generateTransformationString.generateTransformationString(internal_utils_cloneDeep.cloneDeep(transformationOptions)).replace(/([^:])\\\\/\\\\//g, '$1/');\\n if (sign_url && !auth_token) {\\n var to_sign = [transformation, source_to_sign].filter(function (part) {\\n return (part != null) && part !== '';\\n }).join('/');\\n try {\\n for (var i = 0; to_sign !== decodeURIComponent(to_sign) && i < 10; i++) {\\n to_sign = decodeURIComponent(to_sign);\\n }\\n // eslint-disable-next-line no-empty\\n }\\n catch (error) {\\n }\\n // No support for Auth Token\\n // const shasum = crypto.createHash(long_url_signature ? 'sha256' : 'sha1');\\n // shasum.update(utf8_encode(to_sign + api_secret), 'binary');\\n // signature = shasum.digest('base64').replace(/\\\\//g, '_').replace(/\\\\+/g, '-').substring(0, long_url_signature ? 32 : 8);\\n // signature = `s--${signature}--`;\\n }\\n var prefix = backwards_utils_unsigned_url_prefix.unsigned_url_prefix(public_id, cloud_name, private_cdn, cdn_subdomain, secure_cdn_subdomain, cname, secure, secure_distribution);\\n var resultUrl = [prefix, resource_type, type, transformation, version, public_id].filter(function (part) {\\n return (part != null) && part !== '';\\n }).join('/').replace(' ', '%20');\\n return resultUrl;\\n}\\n\\nexports.createCloudinaryLegacyURL = createCloudinaryLegacyURL;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/createCloudinaryLegacyURL.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/expression.cjs\":\n/*!********************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/expression.cjs ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/**\\n * Represents a transformation expression.\\n * @param {string} expressionStr - An expression in string format.\\n * @class Expression\\n *\\n */\\nvar Expression = /** @class */ (function () {\\n function Expression(expressionStr) {\\n /**\\n * @protected\\n * @inner Expression-expressions\\n */\\n this.expressions = [];\\n if (expressionStr != null) {\\n this.expressions.push(Expression.normalize(expressionStr));\\n }\\n }\\n /**\\n * Convenience constructor method\\n * @function Expression.new\\n */\\n Expression.new = function (expressionStr) {\\n return new this(expressionStr);\\n };\\n /**\\n * Normalize a string expression\\n * @function Cloudinary#normalize\\n * @param {string} expression a expression, e.g. \\\"w gt 100\\\", \\\"width_gt_100\\\", \\\"width > 100\\\"\\n * @return {string} the normalized form of the value expression, e.g. \\\"w_gt_100\\\"\\n */\\n Expression.normalize = function (expression) {\\n var operators, operatorsPattern, operatorsReplaceRE, predefinedVarsPattern, predefinedVarsReplaceRE;\\n if (expression == null) {\\n return expression;\\n }\\n expression = String(expression);\\n operators = \\\"\\\\\\\\|\\\\\\\\||>=|<=|&&|!=|>|=|<|/|-|\\\\\\\\+|\\\\\\\\*|\\\\\\\\^\\\";\\n // operators\\n operatorsPattern = \\\"((\\\" + operators + \\\")(?=[ _]))\\\";\\n operatorsReplaceRE = new RegExp(operatorsPattern, \\\"g\\\");\\n // @ts-ignore\\n expression = expression.replace(operatorsReplaceRE, function (match) { return OPERATORS[match]; });\\n // predefined variables\\n predefinedVarsPattern = \\\"(\\\" + Object.keys(PREDEFINED_VARS).join(\\\"|\\\") + \\\")\\\";\\n predefinedVarsReplaceRE = new RegExp(predefinedVarsPattern, \\\"g\\\");\\n // @ts-ignore\\n expression = expression.replace(predefinedVarsReplaceRE, function (match, p1, offset) { return (expression[offset - 1] === '$' ? match : PREDEFINED_VARS[match]); });\\n return expression.replace(/[ _]+/g, '_');\\n };\\n /**\\n * Serialize the expression\\n * @return {string} the expression as a string\\n */\\n Expression.prototype.serialize = function () {\\n return Expression.normalize(this.expressions.join(\\\"_\\\"));\\n };\\n Expression.prototype.toString = function () {\\n return this.serialize();\\n };\\n /**\\n * Get the parent transformation of this expression\\n * @return Transformation\\n */\\n Expression.prototype.getParent = function () {\\n return this.parent;\\n };\\n /**\\n * Set the parent transformation of this expression\\n * @param {Transformation} the parent transformation\\n * @return {Expression} this expression\\n */\\n Expression.prototype.setParent = function (parent) {\\n this.parent = parent;\\n return this;\\n };\\n /**\\n * Add a expression\\n * @function Expression#predicate\\n * @internal\\n */\\n Expression.prototype.predicate = function (name, operator, value) {\\n // @ts-ignore\\n if (OPERATORS[operator] != null) {\\n // @ts-ignore\\n operator = OPERATORS[operator];\\n }\\n this.expressions.push(\\\"\\\".concat(name, \\\"_\\\").concat(operator, \\\"_\\\").concat(value));\\n return this;\\n };\\n /**\\n * @function Expression#and\\n */\\n Expression.prototype.and = function () {\\n this.expressions.push(\\\"and\\\");\\n return this;\\n };\\n /**\\n * @function Expression#or\\n */\\n Expression.prototype.or = function () {\\n this.expressions.push(\\\"or\\\");\\n return this;\\n };\\n /**\\n * Conclude expression\\n * @function Expression#then\\n * @return {Transformation} the transformation this expression is defined for\\n */\\n Expression.prototype.then = function () {\\n return this.getParent().if(this.toString());\\n };\\n /**\\n * @function Expression#height\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Expression} this expression\\n */\\n Expression.prototype.height = function (operator, value) {\\n return this.predicate(\\\"h\\\", operator, value);\\n };\\n /**\\n * @function Expression#width\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Expression} this expression\\n */\\n Expression.prototype.width = function (operator, value) {\\n return this.predicate(\\\"w\\\", operator, value);\\n };\\n /**\\n * @function Expression#aspectRatio\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Expression} this expression\\n */\\n Expression.prototype.aspectRatio = function (operator, value) {\\n return this.predicate(\\\"ar\\\", operator, value);\\n };\\n /**\\n * @function Expression#pages\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Expression} this expression\\n */\\n Expression.prototype.pageCount = function (operator, value) {\\n return this.predicate(\\\"pc\\\", operator, value);\\n };\\n /**\\n * @function Expression#faces\\n * @param {string} operator the comparison operator (e.g. \\\"<\\\", \\\"lt\\\")\\n * @param {string|number} value the right hand side value\\n * @return {Expression} this expression\\n */\\n Expression.prototype.faceCount = function (operator, value) {\\n return this.predicate(\\\"fc\\\", operator, value);\\n };\\n Expression.prototype.value = function (value) {\\n this.expressions.push(value);\\n return this;\\n };\\n /**\\n */\\n Expression.variable = function (name, value) {\\n return new this(name).value(value);\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"width\\\"\\n * @function Expression.width\\n */\\n Expression.width = function () {\\n return new this(\\\"width\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"height\\\"\\n * @function Expression.height\\n */\\n Expression.height = function () {\\n return new this(\\\"height\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"initialWidth\\\"\\n * @function Expression.initialWidth\\n */\\n Expression.initialWidth = function () {\\n return new this(\\\"initialWidth\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"initialHeight\\\"\\n * @function Expression.initialHeight\\n */\\n Expression.initialHeight = function () {\\n return new this(\\\"initialHeight\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"aspectRatio\\\"\\n * @function Expression.aspectRatio\\n */\\n Expression.aspectRatio = function () {\\n return new this(\\\"aspectRatio\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"initialAspectRatio\\\"\\n * @function Expression.initialAspectRatio\\n */\\n Expression.initialAspectRatio = function () {\\n return new this(\\\"initialAspectRatio\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"pageCount\\\"\\n * @function Expression.pageCount\\n */\\n Expression.pageCount = function () {\\n return new this(\\\"pageCount\\\");\\n };\\n /**\\n * @returns Expression new expression with the predefined variable \\\"faceCount\\\"\\n * @function Expression.faceCount\\n */\\n Expression.faceCount = function () {\\n return new this(\\\"faceCount\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"currentPage\\\"\\n * @function Expression.currentPage\\n */\\n Expression.currentPage = function () {\\n return new this(\\\"currentPage\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"tags\\\"\\n * @function Expression.tags\\n */\\n Expression.tags = function () {\\n return new this(\\\"tags\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"pageX\\\"\\n * @function Expression.pageX\\n */\\n Expression.pageX = function () {\\n return new this(\\\"pageX\\\");\\n };\\n /**\\n * @returns Expression a new expression with the predefined variable \\\"pageY\\\"\\n * @function Expression.pageY\\n */\\n Expression.pageY = function () {\\n return new this(\\\"pageY\\\");\\n };\\n return Expression;\\n}());\\n/**\\n * @internal\\n */\\nvar OPERATORS = {\\n \\\"=\\\": 'eq',\\n \\\"!=\\\": 'ne',\\n \\\"<\\\": 'lt',\\n \\\">\\\": 'gt',\\n \\\"<=\\\": 'lte',\\n \\\">=\\\": 'gte',\\n \\\"&&\\\": 'and',\\n \\\"||\\\": 'or',\\n \\\"*\\\": \\\"mul\\\",\\n \\\"/\\\": \\\"div\\\",\\n \\\"+\\\": \\\"add\\\",\\n \\\"-\\\": \\\"sub\\\",\\n \\\"^\\\": \\\"pow\\\",\\n};\\n/**\\n * @internal\\n */\\nvar PREDEFINED_VARS = {\\n \\\"aspect_ratio\\\": \\\"ar\\\",\\n \\\"aspectRatio\\\": \\\"ar\\\",\\n \\\"current_page\\\": \\\"cp\\\",\\n \\\"currentPage\\\": \\\"cp\\\",\\n \\\"preview:duration\\\": \\\"preview:duration\\\",\\n \\\"duration\\\": \\\"du\\\",\\n \\\"face_count\\\": \\\"fc\\\",\\n \\\"faceCount\\\": \\\"fc\\\",\\n \\\"height\\\": \\\"h\\\",\\n \\\"initial_aspect_ratio\\\": \\\"iar\\\",\\n \\\"initial_duration\\\": \\\"idu\\\",\\n \\\"initial_height\\\": \\\"ih\\\",\\n \\\"initial_width\\\": \\\"iw\\\",\\n \\\"initialAspectRatio\\\": \\\"iar\\\",\\n \\\"initialDuration\\\": \\\"idu\\\",\\n \\\"initialHeight\\\": \\\"ih\\\",\\n \\\"initialWidth\\\": \\\"iw\\\",\\n \\\"page_count\\\": \\\"pc\\\",\\n \\\"page_x\\\": \\\"px\\\",\\n \\\"page_y\\\": \\\"py\\\",\\n \\\"pageCount\\\": \\\"pc\\\",\\n \\\"pageX\\\": \\\"px\\\",\\n \\\"pageY\\\": \\\"py\\\",\\n \\\"tags\\\": \\\"tags\\\",\\n \\\"width\\\": \\\"w\\\"\\n};\\n\\nmodule.exports = Expression;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/expression.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/generateTransformationString.cjs\":\n/*!**************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/generateTransformationString.cjs ***!\n \\**************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_transformationProcessing_processLayer = __webpack_require__(/*! ./transformationProcessing/processLayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processLayer.cjs\\\");\\nvar backwards_transformationProcessing_processIf = __webpack_require__(/*! ./transformationProcessing/processIf.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processIf.cjs\\\");\\nvar backwards_utils_toArray = __webpack_require__(/*! ./utils/toArray.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/toArray.cjs\\\");\\nvar backwards_transformationProcessing_processRadius = __webpack_require__(/*! ./transformationProcessing/processRadius.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processRadius.cjs\\\");\\nvar backwards_utils_isObject = __webpack_require__(/*! ./utils/isObject.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs\\\");\\nvar backwards_transformationProcessing_processCustomFunction = __webpack_require__(/*! ./transformationProcessing/processCustomFunction.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomFunction.cjs\\\");\\nvar backwards_transformationProcessing_processCustomPreFunction = __webpack_require__(/*! ./transformationProcessing/processCustomPreFunction.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomPreFunction.cjs\\\");\\nvar backwards_utils_splitRange = __webpack_require__(/*! ./utils/splitRange.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/splitRange.cjs\\\");\\nvar backwards_utils_legacyNormalizeExpression = __webpack_require__(/*! ./utils/legacyNormalizeExpression.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/legacyNormalizeExpression.cjs\\\");\\nvar backwards_utils_norm_range_values = __webpack_require__(/*! ./utils/norm_range_values.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/norm_range_values.cjs\\\");\\nvar backwards_transformationProcessing_processVideoParams = __webpack_require__(/*! ./transformationProcessing/processVideoParams.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processVideoParams.cjs\\\");\\nvar backwards_transformation = __webpack_require__(/*! ./transformation.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformation.cjs\\\");\\nvar backwards_transformationProcessing_processDpr = __webpack_require__(/*! ./transformationProcessing/processDpr.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processDpr.cjs\\\");\\nvar backwards_utils_isNumberLike = __webpack_require__(/*! ./utils/isNumberLike.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isNumberLike.cjs\\\");\\n__webpack_require__(/*! ../internal/utils/base64Encode.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs\\\");\\n__webpack_require__(/*! ./consts.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\\\");\\n__webpack_require__(/*! ./utils/smartEscape.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs\\\");\\n__webpack_require__(/*! ./legacyLayer/textlayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/textlayer.cjs\\\");\\n__webpack_require__(/*! ../tslib.es6-bcbd7c13.cjs */ \\\"../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs\\\");\\n__webpack_require__(/*! ./legacyLayer/layer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs\\\");\\n__webpack_require__(/*! ./utils/snakeCase.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs\\\");\\n__webpack_require__(/*! ./utils/isEmpty.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs\\\");\\n__webpack_require__(/*! ./condition.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/condition.cjs\\\");\\n__webpack_require__(/*! ./expression.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/expression.cjs\\\");\\n__webpack_require__(/*! ./configuration.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/configuration.cjs\\\");\\n__webpack_require__(/*! ../internal/utils/cloneDeep.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/cloneDeep.cjs\\\");\\n__webpack_require__(/*! ./utils/legacyBaseUtil.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/legacyBaseUtil.cjs\\\");\\n__webpack_require__(/*! ./legacyLayer/subtitleslayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/subtitleslayer.cjs\\\");\\n__webpack_require__(/*! ./legacyLayer/fetchlayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/fetchlayer.cjs\\\");\\n__webpack_require__(/*! ../internal/utils/dataStructureUtils.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/dataStructureUtils.cjs\\\");\\n__webpack_require__(/*! ./utils/isFunction.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isFunction.cjs\\\");\\n\\n/**\\n * Things dropped\\n * - responsive_width\\n * - config().dpr\\n * - SSL Detected\\n * - Provisioning API\\n * - Magical configuration auto-mapping (everything has to be explicit)\\n * - Signatures\\n * - Secure is default true\\n * @param transformationOptions\\n */\\nfunction generateTransformationString(transformationOptions) {\\n if (typeof transformationOptions === 'string') {\\n return transformationOptions;\\n }\\n if (transformationOptions instanceof backwards_transformation[\\\"default\\\"]) {\\n return transformationOptions.toString();\\n }\\n if (Array.isArray(transformationOptions)) {\\n return transformationOptions\\n .map(function (singleTransformation) {\\n return generateTransformationString(singleTransformation);\\n }).filter(function (a) { return a; }).join('/');\\n }\\n // let responsive_width = consumeOption(transformationOptions, \\\"responsive_width\\\", config().responsive_width);\\n var width;\\n var height;\\n var size = transformationOptions.size;\\n var hasLayer = transformationOptions.overlay || transformationOptions.underlay;\\n var crop = transformationOptions.crop;\\n var angle = backwards_utils_toArray.toArray(transformationOptions.angle).join(\\\".\\\");\\n var background = (transformationOptions.background || '').replace(/^#/, \\\"rgb:\\\");\\n var color = (transformationOptions.color || '').replace(/^#/, \\\"rgb:\\\");\\n var flags = (backwards_utils_toArray.toArray(transformationOptions.flags || [])).join('.');\\n var dpr = transformationOptions.dpr === undefined ? transformationOptions.dpr : backwards_transformationProcessing_processDpr.processDpr(transformationOptions.dpr);\\n var overlay = backwards_transformationProcessing_processLayer.processLayer(transformationOptions.overlay);\\n var radius = backwards_transformationProcessing_processRadius.processRadius(transformationOptions.radius);\\n var underlay = backwards_transformationProcessing_processLayer.processLayer(transformationOptions.underlay);\\n var ifValue = backwards_transformationProcessing_processIf.process_if(transformationOptions.if);\\n var custom_function = backwards_transformationProcessing_processCustomFunction.processCustomFunction(transformationOptions.custom_function);\\n var custom_pre_function = backwards_transformationProcessing_processCustomPreFunction.processCustomPreFunction(transformationOptions.custom_pre_function);\\n // These will change down the line, heads up!\\n var fps = transformationOptions.fps;\\n var namedTransformations = [];\\n var childTransformations = backwards_utils_toArray.toArray(transformationOptions.transformation || []);\\n var effect = transformationOptions.effect;\\n // TODO, Do we need this?\\n var no_html_sizes = hasLayer || angle || crop === \\\"fit\\\" || crop === \\\"limit\\\";\\n if (size) {\\n var _a = size.split(\\\"x\\\"), sizeWidth = _a[0], sizeHeight = _a[1];\\n width = sizeWidth;\\n height = sizeHeight;\\n }\\n else {\\n width = transformationOptions.width;\\n height = transformationOptions.height;\\n }\\n if (width && (width.toString().indexOf(\\\"auto\\\") === 0 || no_html_sizes || parseFloat(width.toString()) < 1)) {\\n delete transformationOptions.width;\\n }\\n if (height && (no_html_sizes || parseFloat(height.toString()) < 1)) {\\n delete transformationOptions.height;\\n }\\n // Is any child transformation an object?\\n var isAnyChildAnObject = childTransformations.some(function (transformation) { return typeof transformation === 'object'; });\\n // If array of objects, or array of strings?\\n if (isAnyChildAnObject) {\\n childTransformations = childTransformations.map(function (transformation) {\\n if (backwards_utils_isObject.isObject(transformation)) {\\n return generateTransformationString(transformation);\\n }\\n else {\\n return generateTransformationString({ transformation: transformation });\\n }\\n }).filter(function (a) { return a; });\\n }\\n else {\\n namedTransformations = childTransformations.join(\\\".\\\");\\n childTransformations = []; // Reset child transfomrations\\n }\\n if (Array.isArray(effect)) {\\n effect = effect.join(\\\":\\\");\\n }\\n else if (backwards_utils_isObject.isObject(effect)) {\\n effect = Object.entries(effect).map(function (_a) {\\n var key = _a[0], value = _a[1];\\n return \\\"\\\".concat(key, \\\":\\\").concat(value);\\n });\\n }\\n var border = transformationOptions.border;\\n if (backwards_utils_isObject.isObject(border)) {\\n border = \\\"\\\".concat(border.width != null ? border.width : 2, \\\"px_solid_\\\").concat((border.color != null ? border.color : \\\"black\\\").replace(/^#/, 'rgb:'));\\n }\\n else {\\n // @ts-ignore\\n if (/^\\\\d+$/.exec(border)) { // fallback to html border attributes\\n transformationOptions.border = border;\\n border = void 0;\\n }\\n }\\n if (Array.isArray(fps)) {\\n fps = fps.join('-');\\n }\\n // ocr(value) {\\n // return this.param(value, \\\"ocr\\\", \\\"ocr\\\");\\n // }\\n var urlParams = {\\n a: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(angle),\\n ar: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(transformationOptions.aspect_ratio),\\n b: background,\\n bo: border,\\n c: crop,\\n co: color,\\n dpr: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(dpr),\\n e: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(effect),\\n fl: flags,\\n fn: custom_function || custom_pre_function,\\n fps: fps,\\n h: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(height),\\n ki: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(transformationOptions.keyframe_interval),\\n l: overlay,\\n o: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(transformationOptions.opacity),\\n q: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(transformationOptions.quality),\\n r: radius,\\n t: namedTransformations,\\n u: underlay,\\n w: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(width),\\n x: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(transformationOptions.x),\\n y: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(transformationOptions.y),\\n z: backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(transformationOptions.zoom),\\n ac: transformationOptions.audio_codec,\\n af: transformationOptions.audio_frequency,\\n br: transformationOptions.bit_rate,\\n cs: transformationOptions.color_space,\\n d: transformationOptions.default_image,\\n dl: transformationOptions.delay,\\n dn: transformationOptions.density,\\n du: backwards_utils_norm_range_values.normRangeValues(transformationOptions.duration),\\n eo: backwards_utils_norm_range_values.normRangeValues(transformationOptions.end_offset || backwards_utils_isNumberLike.isNumberLike(transformationOptions.end_offset) ? transformationOptions.end_offset : backwards_utils_splitRange.splitRange(transformationOptions.offset)[1]),\\n f: transformationOptions.fetch_format,\\n g: transformationOptions.gravity,\\n pg: transformationOptions.page,\\n p: transformationOptions.prefix,\\n so: backwards_utils_norm_range_values.normRangeValues(transformationOptions.start_offset || backwards_utils_isNumberLike.isNumberLike(transformationOptions.start_offset) ? transformationOptions.start_offset : backwards_utils_splitRange.splitRange(transformationOptions.offset)[0]),\\n sp: transformationOptions.streaming_profile,\\n vc: backwards_transformationProcessing_processVideoParams.processVideoParams(transformationOptions.video_codec),\\n vs: transformationOptions.video_sampling\\n };\\n // We can accept variables in here transformationOptions, or in here transformationOptions.variables\\n var variables = Object.entries(transformationOptions)\\n .filter(function (_a) {\\n var key = _a[0]; _a[1];\\n return key.startsWith('$');\\n })\\n .map(function (_a) {\\n var key = _a[0], value = _a[1];\\n // delete transformationOptions[key]; // Delete the variables, so we don't add them twice\\n return \\\"\\\".concat(key, \\\"_\\\").concat(backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(value));\\n }).sort().concat(\\n // @ts-ignore\\n (transformationOptions.variables || []).map(function (_a) {\\n var name = _a[0], value = _a[1];\\n return \\\"\\\".concat(name, \\\"_\\\").concat(backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(value));\\n })).join(',');\\n // Clean up!\\n var urlImageTransfomrations = Object.entries(urlParams)\\n .filter(function (_a) {\\n _a[0]; var value = _a[1];\\n if (typeof value === 'undefined' || value === null) {\\n return false;\\n }\\n if (typeof value === 'string' && value.length === 0) {\\n return false;\\n }\\n if (Array.isArray(value) && value.length === 0) {\\n return false;\\n }\\n return true;\\n })\\n .map(function (_a) {\\n var key = _a[0], value = _a[1];\\n return \\\"\\\".concat(key, \\\"_\\\").concat(value);\\n })\\n .sort()\\n .join(',');\\n var finalTransformationString = [\\n ifValue,\\n variables,\\n urlImageTransfomrations,\\n transformationOptions.raw_transformation\\n ].filter(function (a) { return a; }).join(\\\",\\\");\\n if (finalTransformationString) {\\n childTransformations.push(finalTransformationString);\\n }\\n // console.log(childTransformations);\\n return childTransformations.join(\\\"/\\\");\\n}\\n\\nexports.generateTransformationString = generateTransformationString;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/generateTransformationString.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/fetchlayer.cjs\":\n/*!********************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/legacyLayer/fetchlayer.cjs ***!\n \\********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar tslib_es6 = __webpack_require__(/*! ../../tslib.es6-bcbd7c13.cjs */ \\\"../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs\\\");\\nvar backwards_legacyLayer_layer = __webpack_require__(/*! ./layer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs\\\");\\nvar internal_utils_dataStructureUtils = __webpack_require__(/*! ../../internal/utils/dataStructureUtils.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/dataStructureUtils.cjs\\\");\\nvar internal_utils_base64Encode = __webpack_require__(/*! ../../internal/utils/base64Encode.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs\\\");\\n__webpack_require__(/*! ../utils/snakeCase.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs\\\");\\n\\nvar FetchLayer = /** @class */ (function (_super) {\\n tslib_es6.__extends(FetchLayer, _super);\\n /**\\n * @class FetchLayer\\n * @classdesc Creates an image layer using a remote URL.\\n * @param {Object|string} options - layer parameters or a url\\n * @param {string} options.url the url of the image to fetch\\n */\\n function FetchLayer(options) {\\n var _this = _super.call(this, options) || this;\\n if (internal_utils_dataStructureUtils.isString(options)) {\\n _this.options.url = options;\\n }\\n else if (options != null ? options.url : void 0) {\\n _this.options.url = options.url;\\n }\\n return _this;\\n }\\n FetchLayer.prototype.url = function (url) {\\n this.options.url = url;\\n return this;\\n };\\n /**\\n * generate the string representation of the layer\\n * @function FetchLayer#toString\\n * @return {String}\\n */\\n FetchLayer.prototype.toString = function () {\\n return \\\"fetch:\\\".concat(internal_utils_base64Encode.base64Encode(this.options.url));\\n };\\n return FetchLayer;\\n}(backwards_legacyLayer_layer));\\n\\nmodule.exports = FetchLayer;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/legacyLayer/fetchlayer.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs\":\n/*!***************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar backwards_utils_snakeCase = __webpack_require__(/*! ../utils/snakeCase.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs\\\");\\n\\nvar Layer = /** @class */ (function () {\\n /**\\n * Layer\\n * @constructor Layer\\n * @param {Object} options - layer parameters\\n */\\n function Layer(options) {\\n var _this = this;\\n this.options = {};\\n if (options != null) {\\n [\\\"resourceType\\\", \\\"type\\\", \\\"publicId\\\", \\\"format\\\"].forEach(function (key) {\\n var ref;\\n // @ts-ignore\\n return _this.options[key] = (ref = options[key]) != null ? ref : options[backwards_utils_snakeCase.snakeCase(key)];\\n });\\n }\\n }\\n Layer.prototype.resourceType = function (value) {\\n this.options.resourceType = value;\\n return this;\\n };\\n Layer.prototype.type = function (value) {\\n this.options.type = value;\\n return this;\\n };\\n Layer.prototype.publicId = function (value) {\\n this.options.publicId = value;\\n return this;\\n };\\n /**\\n * Get the public ID, formatted for layer parameter\\n * @function Layer#getPublicId\\n * @return {String} public ID\\n */\\n Layer.prototype.getPublicId = function () {\\n var ref;\\n return (ref = this.options.publicId) != null ? ref.replace(/\\\\//g, \\\":\\\") : void 0;\\n };\\n /**\\n * Get the public ID, with format if present\\n * @function Layer#getFullPublicId\\n * @return {String} public ID\\n */\\n Layer.prototype.getFullPublicId = function () {\\n if (this.options.format != null) {\\n return this.getPublicId() + \\\".\\\" + this.options.format;\\n }\\n else {\\n return this.getPublicId();\\n }\\n };\\n Layer.prototype.format = function (value) {\\n this.options.format = value;\\n return this;\\n };\\n /**\\n * generate the string representation of the layer\\n * @function Layer#toString\\n */\\n Layer.prototype.toString = function () {\\n var components = [];\\n if (this.options.publicId == null) {\\n throw \\\"Must supply publicId\\\";\\n }\\n if (!(this.options.resourceType === \\\"image\\\")) {\\n components.push(this.options.resourceType);\\n }\\n if (!(this.options.type === \\\"upload\\\")) {\\n components.push(this.options.type);\\n }\\n components.push(this.getFullPublicId());\\n return components.filter(function (x) { return !!x; }).join(\\\":\\\");\\n };\\n Layer.prototype.clone = function () {\\n return new Layer(this.options);\\n };\\n return Layer;\\n}());\\n\\nmodule.exports = Layer;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/subtitleslayer.cjs\":\n/*!************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/legacyLayer/subtitleslayer.cjs ***!\n \\************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar tslib_es6 = __webpack_require__(/*! ../../tslib.es6-bcbd7c13.cjs */ \\\"../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs\\\");\\nvar backwards_legacyLayer_textlayer = __webpack_require__(/*! ./textlayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/textlayer.cjs\\\");\\n__webpack_require__(/*! ./layer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs\\\");\\n__webpack_require__(/*! ../utils/snakeCase.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs\\\");\\n__webpack_require__(/*! ../utils/isEmpty.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs\\\");\\n__webpack_require__(/*! ../utils/smartEscape.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs\\\");\\n__webpack_require__(/*! ../utils/isNumberLike.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isNumberLike.cjs\\\");\\n\\nvar SubtitlesLayer = /** @class */ (function (_super) {\\n tslib_es6.__extends(SubtitlesLayer, _super);\\n /**\\n * Represent a subtitles layer\\n * @constructor SubtitlesLayer\\n * @param {Object} options - layer parameters\\n */\\n function SubtitlesLayer(options) {\\n var _this = _super.call(this, options) || this;\\n _this.options.resourceType = \\\"subtitles\\\";\\n return _this;\\n }\\n return SubtitlesLayer;\\n}(backwards_legacyLayer_textlayer));\\n\\nmodule.exports = SubtitlesLayer;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/legacyLayer/subtitleslayer.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/textlayer.cjs\":\n/*!*******************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/legacyLayer/textlayer.cjs ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar tslib_es6 = __webpack_require__(/*! ../../tslib.es6-bcbd7c13.cjs */ \\\"../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs\\\");\\nvar backwards_legacyLayer_layer = __webpack_require__(/*! ./layer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs\\\");\\nvar backwards_utils_snakeCase = __webpack_require__(/*! ../utils/snakeCase.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs\\\");\\nvar backwards_utils_isEmpty = __webpack_require__(/*! ../utils/isEmpty.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs\\\");\\nvar backwards_utils_smartEscape = __webpack_require__(/*! ../utils/smartEscape.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs\\\");\\nvar backwards_utils_isNumberLike = __webpack_require__(/*! ../utils/isNumberLike.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isNumberLike.cjs\\\");\\n\\nvar TextLayer = /** @class */ (function (_super) {\\n tslib_es6.__extends(TextLayer, _super);\\n /**\\n * @constructor TextLayer\\n * @param {Object} options - layer parameters\\n */\\n function TextLayer(options) {\\n var _this = this;\\n var keys;\\n _this = _super.call(this, options) || this;\\n keys = [\\\"resourceType\\\", \\\"resourceType\\\", \\\"fontFamily\\\", \\\"fontSize\\\", \\\"fontWeight\\\", \\\"fontStyle\\\", \\\"textDecoration\\\", \\\"textAlign\\\", \\\"stroke\\\", \\\"letterSpacing\\\", \\\"lineSpacing\\\", \\\"fontHinting\\\", \\\"fontAntialiasing\\\", \\\"text\\\"];\\n if (options != null) {\\n keys.forEach(function (key) {\\n var ref;\\n // @ts-ignore\\n return _this.options[key] = (ref = options[key]) != null ? ref : options[backwards_utils_snakeCase.snakeCase(key)];\\n });\\n }\\n _this.options.resourceType = \\\"text\\\";\\n return _this;\\n }\\n //@ts-ignore\\n TextLayer.prototype.resourceType = function (resourceType) {\\n throw \\\"Cannot modify resourceType for text layers\\\";\\n };\\n //@ts-ignore\\n TextLayer.prototype.type = function (type) {\\n throw \\\"Cannot modify type for text layers\\\";\\n };\\n TextLayer.prototype.format = function (format) {\\n throw \\\"Cannot modify format for text layers\\\";\\n };\\n TextLayer.prototype.fontFamily = function (fontFamily) {\\n this.options.fontFamily = fontFamily;\\n return this;\\n };\\n TextLayer.prototype.fontSize = function (fontSize) {\\n this.options.fontSize = fontSize;\\n return this;\\n };\\n TextLayer.prototype.fontWeight = function (fontWeight) {\\n this.options.fontWeight = fontWeight;\\n return this;\\n };\\n TextLayer.prototype.fontStyle = function (fontStyle) {\\n this.options.fontStyle = fontStyle;\\n return this;\\n };\\n TextLayer.prototype.textDecoration = function (textDecoration) {\\n this.options.textDecoration = textDecoration;\\n return this;\\n };\\n TextLayer.prototype.textAlign = function (textAlign) {\\n this.options.textAlign = textAlign;\\n return this;\\n };\\n TextLayer.prototype.stroke = function (stroke) {\\n this.options.stroke = stroke;\\n return this;\\n };\\n TextLayer.prototype.letterSpacing = function (letterSpacing) {\\n this.options.letterSpacing = letterSpacing;\\n return this;\\n };\\n TextLayer.prototype.lineSpacing = function (lineSpacing) {\\n this.options.lineSpacing = lineSpacing;\\n return this;\\n };\\n TextLayer.prototype.fontHinting = function (fontHinting) {\\n this.options.fontHinting = fontHinting;\\n return this;\\n };\\n TextLayer.prototype.fontAntialiasing = function (fontAntialiasing) {\\n this.options.fontAntialiasing = fontAntialiasing;\\n return this;\\n };\\n TextLayer.prototype.text = function (text) {\\n this.options.text = text;\\n return this;\\n };\\n /**\\n * generate the string representation of the layer\\n * @function TextLayer#toString\\n * @return {String}\\n */\\n TextLayer.prototype.toString = function () {\\n var components, hasPublicId, hasStyle, publicId, re, res, start, style, text, textSource;\\n style = this.textStyleIdentifier();\\n if (this.options.publicId != null) {\\n publicId = this.getFullPublicId();\\n }\\n if (this.options.text != null) {\\n hasPublicId = !backwards_utils_isEmpty.isEmpty(publicId);\\n hasStyle = !backwards_utils_isEmpty.isEmpty(style);\\n if (hasPublicId && hasStyle || !hasPublicId && !hasStyle) {\\n throw \\\"Must supply either style parameters or a public_id when providing text parameter in a text overlay/underlay, but not both!\\\";\\n }\\n re = /\\\\$\\\\([a-zA-Z]\\\\w*\\\\)/g;\\n start = 0;\\n // textSource = text.replace(new RegExp(\\\"[,/]\\\", 'g'), (c)-> \\\"%#{c.charCodeAt(0).toString(16).toUpperCase()}\\\")\\n textSource = backwards_utils_smartEscape.smartEscape(this.options.text, /[,\\\\/]/g);\\n text = \\\"\\\";\\n while (res = re.exec(textSource)) {\\n text += backwards_utils_smartEscape.smartEscape(textSource.slice(start, res.index));\\n text += res[0];\\n start = res.index + res[0].length;\\n }\\n text += backwards_utils_smartEscape.smartEscape(textSource.slice(start));\\n }\\n components = [this.options.resourceType, style, publicId, text];\\n return (components).filter(function (x) { return !!x; }).join(\\\":\\\");\\n };\\n TextLayer.prototype.textStyleIdentifier = function () {\\n var components;\\n components = [];\\n if (this.options.fontWeight !== \\\"normal\\\") {\\n components.push(this.options.fontWeight);\\n }\\n if (this.options.fontStyle !== \\\"normal\\\") {\\n components.push(this.options.fontStyle);\\n }\\n if (this.options.textDecoration !== \\\"none\\\") {\\n components.push(this.options.textDecoration);\\n }\\n components.push(this.options.textAlign);\\n if (this.options.stroke !== \\\"none\\\") {\\n components.push(this.options.stroke);\\n }\\n if (!(backwards_utils_isEmpty.isEmpty(this.options.letterSpacing) && !backwards_utils_isNumberLike.isNumberLike(this.options.letterSpacing))) {\\n components.push(\\\"letter_spacing_\\\" + this.options.letterSpacing);\\n }\\n if (!(backwards_utils_isEmpty.isEmpty(this.options.lineSpacing) && !backwards_utils_isNumberLike.isNumberLike(this.options.lineSpacing))) {\\n components.push(\\\"line_spacing_\\\" + this.options.lineSpacing);\\n }\\n if (!(backwards_utils_isEmpty.isEmpty(this.options.fontAntialiasing))) {\\n components.push(\\\"antialias_\\\" + this.options.fontAntialiasing);\\n }\\n if (!(backwards_utils_isEmpty.isEmpty(this.options.fontHinting))) {\\n components.push(\\\"hinting_\\\" + this.options.fontHinting);\\n }\\n if (!backwards_utils_isEmpty.isEmpty(components.filter(function (x) { return !!x; }))) {\\n if (backwards_utils_isEmpty.isEmpty(this.options.fontFamily)) {\\n throw \\\"Must supply fontFamily. \\\".concat(components);\\n }\\n if (backwards_utils_isEmpty.isEmpty(this.options.fontSize) && !backwards_utils_isNumberLike.isNumberLike(this.options.fontSize)) {\\n throw \\\"Must supply fontSize.\\\";\\n }\\n }\\n components.unshift(this.options.fontFamily, this.options.fontSize);\\n components = components.filter(function (x) { return !!x; }).join(\\\"_\\\");\\n return components;\\n };\\n return TextLayer;\\n}(backwards_legacyLayer_layer));\\n\\nmodule.exports = TextLayer;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/legacyLayer/textlayer.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/transformation.cjs\":\n/*!************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/transformation.cjs ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar tslib_es6 = __webpack_require__(/*! ../tslib.es6-bcbd7c13.cjs */ \\\"../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs\\\");\\nvar backwards_condition = __webpack_require__(/*! ./condition.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/condition.cjs\\\");\\nvar backwards_configuration = __webpack_require__(/*! ./configuration.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/configuration.cjs\\\");\\nvar internal_utils_cloneDeep = __webpack_require__(/*! ../internal/utils/cloneDeep.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/cloneDeep.cjs\\\");\\nvar backwards_utils_legacyBaseUtil = __webpack_require__(/*! ./utils/legacyBaseUtil.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/legacyBaseUtil.cjs\\\");\\nvar backwards_utils_snakeCase = __webpack_require__(/*! ./utils/snakeCase.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs\\\");\\nvar backwards_expression = __webpack_require__(/*! ./expression.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/expression.cjs\\\");\\nvar backwards_legacyLayer_layer = __webpack_require__(/*! ./legacyLayer/layer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs\\\");\\nvar backwards_legacyLayer_textlayer = __webpack_require__(/*! ./legacyLayer/textlayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/textlayer.cjs\\\");\\nvar backwards_legacyLayer_subtitleslayer = __webpack_require__(/*! ./legacyLayer/subtitleslayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/subtitleslayer.cjs\\\");\\nvar backwards_legacyLayer_fetchlayer = __webpack_require__(/*! ./legacyLayer/fetchlayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/fetchlayer.cjs\\\");\\nvar backwards_utils_isObject = __webpack_require__(/*! ./utils/isObject.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs\\\");\\nvar internal_utils_dataStructureUtils = __webpack_require__(/*! ../internal/utils/dataStructureUtils.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/dataStructureUtils.cjs\\\");\\nvar backwards_utils_isEmpty = __webpack_require__(/*! ./utils/isEmpty.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs\\\");\\nvar backwards_utils_isFunction = __webpack_require__(/*! ./utils/isFunction.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isFunction.cjs\\\");\\n__webpack_require__(/*! ./utils/smartEscape.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs\\\");\\n__webpack_require__(/*! ./utils/isNumberLike.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isNumberLike.cjs\\\");\\n__webpack_require__(/*! ../internal/utils/base64Encode.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs\\\");\\n\\n/**\\n * A list of keys used by the url() function.\\n * @private\\n */\\nvar URL_KEYS = [\\n 'accessibility',\\n 'api_secret',\\n 'auth_token',\\n 'cdn_subdomain',\\n 'cloud_name',\\n 'cname',\\n 'format',\\n 'placeholder',\\n 'private_cdn',\\n 'resource_type',\\n 'secure',\\n 'secure_cdn_subdomain',\\n 'secure_distribution',\\n 'shorten',\\n 'sign_url',\\n 'signature',\\n 'ssl_detected',\\n 'type',\\n 'url_suffix',\\n 'use_root_path',\\n 'version'\\n];\\n/**\\n * Assign key, value to target, when value is not null.
\\n * This function mutates the target!\\n * @param {object} target the object to assign the values to\\n * @param {object} sources one or more objects to get values from\\n * @returns {object} the target after the assignment\\n */\\nfunction assignNotNull(target) {\\n var sources = [];\\n for (var _i = 1; _i < arguments.length; _i++) {\\n sources[_i - 1] = arguments[_i];\\n }\\n sources.forEach(function (source) {\\n Object.keys(source).forEach(function (key) {\\n // @ts-ignore\\n if (source[key] != null) {\\n // @ts-ignore\\n target[key] = source[key];\\n }\\n });\\n });\\n return target;\\n}\\n/**\\n * Return true if all items in list are strings\\n * @function Util.allString\\n * @param {Array} list - an array of items\\n */\\nvar allStrings = function (list) {\\n return list.length && list.every(internal_utils_dataStructureUtils.isString);\\n};\\n/**\\n * Transformation parameters\\n * Depends on 'util', 'transformation'\\n */\\nvar Param = /** @class */ (function () {\\n /**\\n * Represents a single parameter.\\n * @class Param\\n * @param {string} name - The name of the parameter in snake_case\\n * @param {string} shortName - The name of the serialized form of the parameter.\\n * If a value is not provided, the parameter will not be serialized.\\n * @param {function} [process=Util.identity ] - Manipulate origValue when value is called\\n * @ignore\\n */\\n function Param(name, shortName, process) {\\n if (process === void 0) { process = backwards_utils_legacyBaseUtil.identity; }\\n /**\\n * The name of the parameter in snake_case\\n * @member {string} Param#name\\n */\\n this.name = name;\\n /**\\n * The name of the serialized form of the parameter\\n * @member {string} Param#shortName\\n */\\n this.shortName = shortName;\\n /**\\n * Manipulate origValue when value is called\\n * @member {function} Param#process\\n */\\n this.process = process;\\n }\\n /**\\n * Set a (unprocessed) value for this parameter\\n * @function Param#set\\n * @param {*} origValue - the value of the parameter\\n * @return {Param} self for chaining\\n */\\n Param.prototype.set = function (origValue) {\\n this.origValue = origValue;\\n return this;\\n };\\n /**\\n * Generate the serialized form of the parameter\\n * @function Param#serialize\\n * @return {string} the serialized form of the parameter\\n */\\n Param.prototype.serialize = function () {\\n var val, valid;\\n val = this.value();\\n valid = Array.isArray(val) || backwards_utils_isObject.isObject(val) || internal_utils_dataStructureUtils.isString(val) ? !backwards_utils_isEmpty.isEmpty(val) : val != null;\\n if ((this.shortName != null) && valid) {\\n return \\\"\\\".concat(this.shortName, \\\"_\\\").concat(val);\\n }\\n else {\\n return '';\\n }\\n };\\n /**\\n * Return the processed value of the parameter\\n * @function Param#value\\n */\\n Param.prototype.value = function () {\\n return this.process(this.origValue);\\n };\\n Param.norm_color = function (value) {\\n return value != null ? value.replace(/^#/, 'rgb:') : void 0;\\n };\\n Param.build_array = function (arg) {\\n if (arg == null) {\\n return [];\\n }\\n else if (Array.isArray(arg)) {\\n return arg;\\n }\\n else {\\n return [arg];\\n }\\n };\\n /**\\n * Covert value to video codec string.\\n *\\n * If the parameter is an object,\\n * @param {(string|Object)} param - the video codec as either a String or a Hash\\n * @return {string} the video codec string in the format codec:profile:level\\n * @example\\n * vc_[ :profile : [level]]\\n * or\\n { codec: 'h264', profile: 'basic', level: '3.1' }\\n * @ignore\\n */\\n Param.process_video_params = function (param) {\\n var video;\\n switch (param.constructor) {\\n case Object:\\n video = \\\"\\\";\\n if ('codec' in param) {\\n video = param.codec;\\n if ('profile' in param) {\\n video += \\\":\\\" + param.profile;\\n if ('level' in param) {\\n video += \\\":\\\" + param.level;\\n }\\n }\\n }\\n return video;\\n case String:\\n return param;\\n default:\\n return null;\\n }\\n };\\n return Param;\\n}());\\nvar ArrayParam = /** @class */ (function (_super) {\\n tslib_es6.__extends(ArrayParam, _super);\\n /**\\n * A parameter that represents an array.\\n * @param {string} name - The name of the parameter in snake_case.\\n * @param {string} shortName - The name of the serialized form of the parameter\\n * If a value is not provided, the parameter will not be serialized.\\n * @param {string} [sep='.'] - The separator to use when joining the array elements together\\n * @param {function} [process=Util.identity ] - Manipulate origValue when value is called\\n * @class ArrayParam\\n * @extends Param\\n * @ignore\\n */\\n function ArrayParam(name, shortName, sep, process) {\\n if (sep === void 0) { sep = '.'; }\\n if (process === void 0) { process = undefined; }\\n var _this = _super.call(this, name, shortName, process) || this;\\n _this.sep = sep;\\n return _this;\\n }\\n ArrayParam.prototype.serialize = function () {\\n if (this.shortName != null) {\\n var arrayValue = this.value();\\n if (backwards_utils_isEmpty.isEmpty(arrayValue)) {\\n return '';\\n }\\n else if (internal_utils_dataStructureUtils.isString(arrayValue)) {\\n return \\\"\\\".concat(this.shortName, \\\"_\\\").concat(arrayValue);\\n }\\n else {\\n var flat = arrayValue.map(function (t) { return backwards_utils_isFunction.isFunction(t.serialize) ? t.serialize() : t; }).join(this.sep);\\n return \\\"\\\".concat(this.shortName, \\\"_\\\").concat(flat);\\n }\\n }\\n else {\\n return '';\\n }\\n };\\n ArrayParam.prototype.value = function () {\\n var _this = this;\\n if (Array.isArray(this.origValue)) {\\n return this.origValue.map(function (v) { return _this.process(v); });\\n }\\n else {\\n return this.process(this.origValue);\\n }\\n };\\n ArrayParam.prototype.set = function (origValue) {\\n if ((origValue == null) || Array.isArray(origValue)) {\\n return _super.prototype.set.call(this, origValue);\\n }\\n else {\\n return _super.prototype.set.call(this, [origValue]);\\n }\\n };\\n return ArrayParam;\\n}(Param));\\nvar TransformationParam = /** @class */ (function (_super) {\\n tslib_es6.__extends(TransformationParam, _super);\\n /**\\n * A parameter that represents a transformation\\n * @param {string} name - The name of the parameter in snake_case\\n * @param {string} [shortName='t'] - The name of the serialized form of the parameter\\n * @param {string} [sep='.'] - The separator to use when joining the array elements together\\n * @param {function} [process=Util.identity ] - Manipulate origValue when value is called\\n * @class TransformationParam\\n * @extends Param\\n * @ignore\\n */\\n function TransformationParam(name, shortName, sep, process) {\\n if (shortName === void 0) { shortName = \\\"t\\\"; }\\n if (sep === void 0) { sep = '.'; }\\n if (process === void 0) { process = undefined; }\\n var _this = _super.call(this, name, shortName, process) || this;\\n _this.sep = sep;\\n return _this;\\n }\\n /**\\n * Generate string representations of the transformation.\\n * @returns {*} Returns either the transformation as a string, or an array of string representations.\\n */\\n TransformationParam.prototype.serialize = function () {\\n var _this = this;\\n var result = '';\\n var val = this.value();\\n if (backwards_utils_isEmpty.isEmpty(val)) {\\n return result;\\n }\\n // val is an array of strings so join them\\n if (allStrings(val)) {\\n var joined = val.join(this.sep); // creates t1.t2.t3 in case multiple named transformations were configured\\n if (!backwards_utils_isEmpty.isEmpty(joined)) {\\n // in case options.transformation was not set with an empty string (val != ['']);\\n result = \\\"\\\".concat(this.shortName, \\\"_\\\").concat(joined);\\n }\\n }\\n else { // Convert val to an array of strings\\n result = val.map(function (t) {\\n if (internal_utils_dataStructureUtils.isString(t) && !backwards_utils_isEmpty.isEmpty(t)) {\\n return \\\"\\\".concat(_this.shortName, \\\"_\\\").concat(t);\\n }\\n if (backwards_utils_isFunction.isFunction(t.serialize)) {\\n return t.serialize();\\n }\\n if (backwards_utils_isObject.isObject(t) && !backwards_utils_isEmpty.isEmpty(t)) {\\n return new Transformation(t).serialize();\\n }\\n return undefined;\\n }).filter(function (t) { return t; });\\n }\\n return result;\\n };\\n TransformationParam.prototype.set = function (origValue1) {\\n this.origValue = origValue1;\\n if (Array.isArray(this.origValue)) {\\n return _super.prototype.set.call(this, this.origValue);\\n }\\n else {\\n return _super.prototype.set.call(this, [this.origValue]);\\n }\\n };\\n return TransformationParam;\\n}(Param));\\nvar number_pattern = \\\"([0-9]*)\\\\\\\\.([0-9]+)|([0-9]+)\\\";\\nvar offset_any_pattern = \\\"(\\\" + number_pattern + \\\")([%pP])?\\\";\\nvar RangeParam = /** @class */ (function (_super) {\\n tslib_es6.__extends(RangeParam, _super);\\n /**\\n * A parameter that represents a range\\n * @param {string} name - The name of the parameter in snake_case\\n * @param {string} shortName - The name of the serialized form of the parameter\\n * If a value is not provided, the parameter will not be serialized.\\n * @param {function} [process=norm_range_value ] - Manipulate origValue when value is called\\n * @class RangeParam\\n * @extends Param\\n * @ignore\\n */\\n function RangeParam(name, shortName, process) {\\n if (process === void 0) { process = RangeParam.norm_range_value; }\\n return _super.call(this, name, shortName, process) || this;\\n }\\n RangeParam.norm_range_value = function (value) {\\n var offset = String(value).match(new RegExp('^' + offset_any_pattern + '$'));\\n if (offset) {\\n var modifier = offset[5] != null ? 'p' : '';\\n value = (offset[1] || offset[4]) + modifier;\\n }\\n return value;\\n };\\n return RangeParam;\\n}(Param));\\nvar RawParam = /** @class */ (function (_super) {\\n tslib_es6.__extends(RawParam, _super);\\n function RawParam(name, shortName, process) {\\n if (process === void 0) { process = backwards_utils_legacyBaseUtil.identity; }\\n return _super.call(this, name, shortName, process) || this;\\n }\\n RawParam.prototype.serialize = function () {\\n return this.value();\\n };\\n return RawParam;\\n}(Param));\\nvar LayerParam = /** @class */ (function (_super) {\\n tslib_es6.__extends(LayerParam, _super);\\n function LayerParam() {\\n return _super !== null && _super.apply(this, arguments) || this;\\n }\\n // Parse layer options\\n // @return [string] layer transformation string\\n // @private\\n LayerParam.prototype.value = function () {\\n if (this.origValue == null) {\\n return '';\\n }\\n var result;\\n if (this.origValue instanceof backwards_legacyLayer_layer) {\\n result = this.origValue;\\n }\\n else if (backwards_utils_isObject.isObject(this.origValue)) {\\n var layerOptions = backwards_utils_legacyBaseUtil.withCamelCaseKeys(this.origValue);\\n // @ts-ignore\\n if (layerOptions.resourceType === \\\"text\\\" || (layerOptions.text != null)) {\\n result = new backwards_legacyLayer_textlayer(layerOptions);\\n }\\n else { // @ts-ignore\\n if (layerOptions.resourceType === \\\"subtitles\\\") {\\n result = new backwards_legacyLayer_subtitleslayer(layerOptions);\\n }\\n else { // @ts-ignore\\n if (layerOptions.resourceType === \\\"fetch\\\" || (layerOptions.url != null)) {\\n result = new backwards_legacyLayer_fetchlayer(layerOptions);\\n }\\n else {\\n result = new backwards_legacyLayer_layer(layerOptions);\\n }\\n }\\n }\\n }\\n else if (internal_utils_dataStructureUtils.isString(this.origValue)) {\\n if (/^fetch:.+/.test(this.origValue)) {\\n result = new backwards_legacyLayer_fetchlayer(this.origValue.substr(6));\\n }\\n else {\\n result = this.origValue;\\n }\\n }\\n else {\\n result = '';\\n }\\n return result.toString();\\n };\\n LayerParam.textStyle = function (layer) {\\n return (new backwards_legacyLayer_textlayer(layer)).textStyleIdentifier();\\n };\\n return LayerParam;\\n}(Param));\\n/**\\n * TransformationBase\\n * Depends on 'configuration', 'parameters','util'\\n * @internal\\n */\\nvar TransformationBase = /** @class */ (function () {\\n /**\\n * The base class for transformations.\\n * Members of this class are documented as belonging to the {@link Transformation} class for convenience.\\n * @class TransformationBase\\n */\\n function TransformationBase(options) {\\n var _this = this;\\n /** @private */\\n /** @private */\\n var parent;\\n var trans;\\n parent = void 0;\\n trans = {};\\n /**\\n * Return an options object that can be used to create an identical Transformation\\n * @function Transformation#toOptions\\n * @return {Object} Returns a plain object representing this transformation\\n */\\n this.toOptions = function (withChain) {\\n var opt = {};\\n if (withChain == null) {\\n withChain = true;\\n }\\n // @ts-ignore\\n Object.keys(trans).forEach(function (key) { return opt[key] = trans[key].origValue; });\\n assignNotNull(opt, _this.otherOptions);\\n if (withChain && !backwards_utils_isEmpty.isEmpty(_this.chained)) {\\n var list = _this.chained.map(function (tr) { return tr.toOptions(); });\\n list.push(opt);\\n opt = {};\\n assignNotNull(opt, _this.otherOptions);\\n // @ts-ignore\\n opt.transformation = list;\\n }\\n return opt;\\n };\\n /**\\n * Set a parent for this object for chaining purposes.\\n *\\n * @function Transformation#setParent\\n * @param {Object} object - the parent to be assigned to\\n * @returns {Transformation} Returns this instance for chaining purposes.\\n */\\n this.setParent = function (object) {\\n parent = object;\\n if (object != null) {\\n // @ts-ignore\\n _this.fromOptions(typeof object.toOptions === \\\"function\\\" ? object.toOptions() : void 0);\\n }\\n return _this;\\n };\\n /**\\n * Returns the parent of this object in the chain\\n * @function Transformation#getParent\\n * @protected\\n * @return {Object} Returns the parent of this object if there is any\\n */\\n this.getParent = function () {\\n return parent;\\n };\\n // Helper methods to create parameter methods\\n // These methods are defined here because they access `trans` which is\\n // a private member of `TransformationBase`\\n /** @protected */\\n this.param = function (value, name, abbr, defaultValue, process) {\\n if (process == null) {\\n if (backwards_utils_isFunction.isFunction(defaultValue)) {\\n process = defaultValue;\\n }\\n else {\\n process = backwards_utils_legacyBaseUtil.identity;\\n }\\n }\\n // @ts-ignore\\n trans[name] = new Param(name, abbr, process).set(value);\\n return _this;\\n };\\n /** @protected */\\n this.rawParam = function (value, name, abbr, defaultValue, process) {\\n process = lastArgCallback(arguments);\\n // @ts-ignore\\n trans[name] = new RawParam(name, abbr, process).set(value);\\n return this;\\n };\\n /** @protected */\\n this.rangeParam = function (value, name, abbr, defaultValue, process) {\\n process = lastArgCallback(arguments);\\n // @ts-ignore\\n trans[name] = new RangeParam(name, abbr, process).set(value);\\n return this;\\n };\\n /** @protected */\\n this.arrayParam = function (value, name, abbr, sep, defaultValue, process) {\\n if (sep === void 0) { sep = \\\":\\\"; }\\n if (defaultValue === void 0) { defaultValue = []; }\\n if (process === void 0) { process = undefined; }\\n process = lastArgCallback(arguments);\\n // @ts-ignore\\n trans[name] = new ArrayParam(name, abbr, sep, process).set(value);\\n return this;\\n };\\n /** @protected */\\n this.transformationParam = function (value, name, abbr, sep, defaultValue, process) {\\n if (sep === void 0) { sep = \\\".\\\"; }\\n if (defaultValue === void 0) { defaultValue = undefined; }\\n if (process === void 0) { process = undefined; }\\n process = lastArgCallback(arguments);\\n // @ts-ignore\\n trans[name] = new TransformationParam(name, abbr, sep, process).set(value);\\n return this;\\n };\\n this.layerParam = function (value, name, abbr) {\\n // @ts-ignore\\n trans[name] = new LayerParam(name, abbr).set(value);\\n return this;\\n };\\n // End Helper methods\\n /**\\n * Get the value associated with the given name.\\n * Get the value associated with the given name.\\n * @function Transformation#getValue\\n * @param {string} name - the name of the parameter\\n * @return {*} the processed value associated with the given name\\n * @description Use {@link get}.origValue for the value originally provided for the parameter\\n */\\n this.getValue = function (name) {\\n // @ts-ignore\\n var value = trans[name] && trans[name].value();\\n return value != null ? value : this.otherOptions[name];\\n };\\n /**\\n * Get the parameter object for the given parameter name\\n * @function Transformation#get\\n * @param {string} name the name of the transformation parameter\\n * @returns {Param} the param object for the given name, or undefined\\n */\\n this.get = function (name) {\\n // @ts-ignore\\n return trans[name];\\n };\\n /**\\n * Remove a transformation option from the transformation.\\n * @function Transformation#remove\\n * @param {string} name - the name of the option to remove\\n * @return {*} Returns the option that was removed or null if no option by that name was found. The type of the\\n * returned value depends on the value.\\n */\\n this.remove = function (name) {\\n var temp;\\n switch (false) {\\n // @ts-ignore\\n case trans[name] == null:\\n // @ts-ignore\\n temp = trans[name];\\n // @ts-ignore\\n delete trans[name];\\n return temp.origValue;\\n case this.otherOptions[name] == null:\\n temp = this.otherOptions[name];\\n delete this.otherOptions[name];\\n return temp;\\n default:\\n return null;\\n }\\n };\\n /**\\n * Return an array of all the keys (option names) in the transformation.\\n * @return {Array} the keys in snakeCase format\\n */\\n this.keys = function () {\\n var key;\\n return ((function () {\\n var results;\\n results = [];\\n for (key in trans) {\\n if (key != null) {\\n results.push(key.match(VAR_NAME_RE) ? key : backwards_utils_snakeCase.snakeCase(key));\\n }\\n }\\n return results;\\n })()).sort();\\n };\\n /**\\n * Returns a plain object representation of the transformation. Values are processed.\\n * @function Transformation#toPlainObject\\n * @return {Object} the transformation options as plain object\\n */\\n this.toPlainObject = function () {\\n var hash, key, list;\\n hash = {};\\n for (key in trans) {\\n // @ts-ignore\\n hash[key] = trans[key].value();\\n // @ts-ignore\\n if (backwards_utils_isObject.isObject(hash[key])) {\\n // @ts-ignore\\n hash[key] = internal_utils_cloneDeep.cloneDeep(hash[key]);\\n }\\n }\\n if (!backwards_utils_isEmpty.isEmpty(this.chained)) {\\n list = this.chained.map(function (tr) { return tr.toPlainObject(); });\\n list.push(hash);\\n hash = {\\n transformation: list\\n };\\n }\\n return hash;\\n };\\n /**\\n * Complete the current transformation and chain to a new one.\\n * In the URL, transformations are chained together by slashes.\\n * @function Transformation#chain\\n * @return {Transformation} Returns this transformation for chaining\\n * @example\\n * var tr = cloudinary.Transformation.new();\\n * tr.width(10).crop('fit').chain().angle(15).serialize()\\n * // produces \\\"c_fit,w_10/a_15\\\"\\n */\\n this.chain = function () {\\n var names, tr;\\n names = Object.getOwnPropertyNames(trans);\\n if (names.length !== 0) {\\n tr = new this.constructor(this.toOptions(false));\\n this.resetTransformations();\\n this.chained.push(tr);\\n }\\n return this;\\n };\\n this.resetTransformations = function () {\\n trans = {};\\n return this;\\n };\\n this.otherOptions = {};\\n this.chained = [];\\n this.fromOptions(options);\\n }\\n /**\\n * Merge the provided options with own's options\\n * @param {Object} [options={}] key-value list of options\\n * @returns {Transformation} Returns this instance for chaining\\n */\\n TransformationBase.prototype.fromOptions = function (options) {\\n if (options === void 0) { options = {}; }\\n if (options instanceof TransformationBase) {\\n this.fromTransformation(options);\\n }\\n else {\\n if (internal_utils_dataStructureUtils.isString(options) || Array.isArray(options)) {\\n options = {\\n transformation: options\\n };\\n }\\n options = internal_utils_cloneDeep.cloneDeep(options);\\n // Handling of \\\"if\\\" statements precedes other options as it creates a chained transformation\\n // @ts-ignore\\n if (options[\\\"if\\\"]) {\\n // @ts-ignore\\n this.set(\\\"if\\\", options[\\\"if\\\"]);\\n // @ts-ignore\\n delete options[\\\"if\\\"];\\n }\\n for (var key in options) {\\n // @ts-ignore\\n var opt = options[key];\\n if (opt != null) {\\n if (key.match(VAR_NAME_RE)) {\\n if (key !== '$attr') {\\n this.set('variable', key, opt);\\n }\\n }\\n else {\\n this.set(key, opt);\\n }\\n }\\n }\\n }\\n return this;\\n };\\n TransformationBase.prototype.fromTransformation = function (other) {\\n var _this = this;\\n if (other instanceof TransformationBase) {\\n other.keys().forEach(function (key) {\\n return _this.set(key, other.get(key).origValue);\\n });\\n }\\n return this;\\n };\\n /**\\n * Set a parameter.\\n * The parameter name `key` is converted to\\n * @param {string} key - the name of the parameter\\n * @param {*} values - the value of the parameter\\n * @returns {Transformation} Returns this instance for chaining\\n */\\n TransformationBase.prototype.set = function (key) {\\n var values = [];\\n for (var _i = 1; _i < arguments.length; _i++) {\\n values[_i - 1] = arguments[_i];\\n }\\n var camelKey;\\n camelKey = backwards_utils_legacyBaseUtil.camelCase(key);\\n if (backwards_utils_legacyBaseUtil.contains(methods, camelKey)) {\\n // @ts-ignore\\n this[camelKey].apply(this, values);\\n }\\n else {\\n this.otherOptions[key] = values[0];\\n }\\n return this;\\n };\\n TransformationBase.prototype.hasLayer = function () {\\n return this.getValue(\\\"overlay\\\") || this.getValue(\\\"underlay\\\");\\n };\\n /**\\n * Generate a string representation of the transformation.\\n * @function Transformation#serialize\\n * @return {string} Returns the transformation as a string\\n */\\n TransformationBase.prototype.serialize = function () {\\n var ifParam, j, len, paramList, ref, ref1, ref2, ref3, ref4, resultArray, t, transformationList, transformationString, transformations, value, variables, vars;\\n resultArray = this.chained.map(function (tr) { return tr.serialize(); });\\n paramList = this.keys();\\n transformations = (ref = this.get(\\\"transformation\\\")) != null ? ref.serialize() : void 0;\\n ifParam = (ref1 = this.get(\\\"if\\\")) != null ? ref1.serialize() : void 0;\\n variables = processVar((ref2 = this.get(\\\"variables\\\")) != null ? ref2.value() : void 0);\\n paramList = backwards_utils_legacyBaseUtil.difference(paramList, [\\\"transformation\\\", \\\"if\\\", \\\"variables\\\"]);\\n vars = [];\\n transformationList = [];\\n for (j = 0, len = paramList.length; j < len; j++) {\\n t = paramList[j];\\n if (t.match(VAR_NAME_RE)) {\\n vars.push(t + \\\"_\\\" + backwards_expression.normalize((ref3 = this.get(t)) != null ? ref3.value() : void 0));\\n }\\n else {\\n transformationList.push((ref4 = this.get(t)) != null ? ref4.serialize() : void 0);\\n }\\n }\\n switch (false) {\\n case !internal_utils_dataStructureUtils.isString(transformations):\\n transformationList.push(transformations);\\n break;\\n case !Array.isArray(transformations):\\n resultArray = resultArray.concat(transformations);\\n }\\n transformationList = (function () {\\n var k, len1, results;\\n results = [];\\n for (k = 0, len1 = transformationList.length; k < len1; k++) {\\n value = transformationList[k];\\n if (Array.isArray(value) && !backwards_utils_isEmpty.isEmpty(value) || !Array.isArray(value) && value) {\\n results.push(value);\\n }\\n }\\n return results;\\n })();\\n transformationList = vars.sort().concat(variables).concat(transformationList.sort());\\n if (ifParam === \\\"if_end\\\") {\\n transformationList.push(ifParam);\\n }\\n else if (!backwards_utils_isEmpty.isEmpty(ifParam)) {\\n transformationList.unshift(ifParam);\\n }\\n transformationString = (transformationList).filter(function (x) { return !!x; }).join(param_separator);\\n if (!backwards_utils_isEmpty.isEmpty(transformationString)) {\\n resultArray.push(transformationString);\\n }\\n return (resultArray).filter(function (x) { return !!x; }).join(trans_separator);\\n };\\n /**\\n * Provide a list of all the valid transformation option names\\n * @function Transformation#listNames\\n * @private\\n * @return {Array} a array of all the valid option names\\n */\\n TransformationBase.listNames = function () {\\n return methods;\\n };\\n /**\\n * Returns the attributes for an HTML tag.\\n * @function Cloudinary.toHtmlAttributes\\n * @return PlainObject\\n */\\n TransformationBase.prototype.toHtmlAttributes = function () {\\n var _this = this;\\n var attrName, height, options, ref2, ref3, value, width;\\n options = {};\\n var snakeCaseKey;\\n Object.keys(this.otherOptions).forEach(function (key) {\\n value = _this.otherOptions[key];\\n snakeCaseKey = backwards_utils_snakeCase.snakeCase(key);\\n if (!backwards_utils_legacyBaseUtil.contains(PARAM_NAMES, snakeCaseKey) && !backwards_utils_legacyBaseUtil.contains(URL_KEYS, snakeCaseKey)) {\\n attrName = /^html_/.test(key) ? key.slice(5) : key;\\n options[attrName] = value;\\n }\\n });\\n // convert all \\\"html_key\\\" to \\\"key\\\" with the same value\\n this.keys().forEach(function (key) {\\n if (/^html_/.test(key)) {\\n options[backwards_utils_legacyBaseUtil.camelCase(key.slice(5))] = _this.getValue(key);\\n }\\n });\\n if (!(this.hasLayer() || this.getValue(\\\"angle\\\") || backwards_utils_legacyBaseUtil.contains([\\\"fit\\\", \\\"limit\\\", \\\"lfill\\\"], this.getValue(\\\"crop\\\")))) {\\n width = (ref2 = this.get(\\\"width\\\")) != null ? ref2.origValue : void 0;\\n height = (ref3 = this.get(\\\"height\\\")) != null ? ref3.origValue : void 0;\\n if (parseFloat(width) >= 1.0) {\\n if (options.width == null) {\\n options.width = width;\\n }\\n }\\n if (parseFloat(height) >= 1.0) {\\n if (options.height == null) {\\n options.height = height;\\n }\\n }\\n }\\n return options;\\n };\\n TransformationBase.isValidParamName = function (name) {\\n return methods.indexOf(backwards_utils_legacyBaseUtil.camelCase(name)) >= 0;\\n };\\n /**\\n * Delegate to the parent (up the call chain) to produce HTML\\n * @function Transformation#toHtml\\n * @return {string} HTML representation of the parent if possible.\\n * @example\\n * tag = cloudinary.ImageTag.new(\\\"sample\\\", {cloud_name: \\\"demo\\\"})\\n * // ImageTag {name: \\\"img\\\", publicId: \\\"sample\\\"}\\n * tag.toHtml()\\n * // \\n * tag.transformation().crop(\\\"fit\\\").width(300).toHtml()\\n * // \\n */\\n TransformationBase.prototype.toHtml = function () {\\n var ref;\\n return (ref = this.getParent()) != null ? typeof ref.toHtml === \\\"function\\\" ? ref.toHtml() : void 0 : void 0;\\n };\\n TransformationBase.prototype.toString = function () {\\n return this.serialize();\\n };\\n TransformationBase.prototype.clone = function () {\\n return new TransformationBase(this.toOptions(true));\\n };\\n return TransformationBase;\\n}());\\nvar VAR_NAME_RE = /^\\\\$[a-zA-Z0-9]+$/;\\nvar trans_separator = '/';\\nvar param_separator = ',';\\nfunction lastArgCallback(args) {\\n var callback;\\n callback = args != null ? args[args.length - 1] : void 0;\\n if (backwards_utils_isFunction.isFunction(callback)) {\\n return callback;\\n }\\n else {\\n return void 0;\\n }\\n}\\nfunction processVar(varArray) {\\n var _a;\\n var j, len, name, results, v;\\n if (Array.isArray(varArray)) {\\n results = [];\\n for (j = 0, len = varArray.length; j < len; j++) {\\n _a = varArray[j], name = _a[0], v = _a[1];\\n results.push(\\\"\\\".concat(name, \\\"_\\\").concat(backwards_expression.normalize(v)));\\n }\\n return results;\\n }\\n else {\\n return varArray;\\n }\\n}\\n// @ts-ignore\\nfunction processCustomFunction(_a) {\\n var function_type = _a.function_type, source = _a.source;\\n if (function_type === 'remote') {\\n return [function_type, btoa(source)].join(\\\":\\\");\\n }\\n else if (function_type === 'wasm') {\\n return [function_type, source].join(\\\":\\\");\\n }\\n}\\n/**\\n * Transformation Class methods.\\n * This is a list of the parameters defined in Transformation.\\n * Values are camelCased.\\n * @const Transformation.methods\\n * @private\\n * @ignore\\n * @type {Array}\\n */\\n/**\\n * Parameters that are filtered out before passing the options to an HTML tag.\\n *\\n * The list of parameters is a combination of `Transformation::methods` and `Configuration::CONFIG_PARAMS`\\n * @const {Array} Transformation.PARAM_NAMES\\n * @private\\n * @ignore\\n * @see toHtmlAttributes\\n */\\nvar Transformation = /** @class */ (function (_super) {\\n tslib_es6.__extends(Transformation, _super);\\n /**\\n * Represents a single transformation.\\n * @class Transformation\\n * @example\\n * t = new cloudinary.Transformation();\\n * t.angle(20).crop(\\\"scale\\\").width(\\\"auto\\\");\\n *\\n * // or\\n *\\n * t = new cloudinary.Transformation( {angle: 20, crop: \\\"scale\\\", width: \\\"auto\\\"});\\n * @see Available image transformations\\n * @see Available video transformations\\n */\\n function Transformation(options) {\\n return _super.call(this, options) || this;\\n }\\n /**\\n * Convenience constructor\\n * @param {Object} options\\n * @return {Transformation}\\n * @example cl = cloudinary.Transformation.new( {angle: 20, crop: \\\"scale\\\", width: \\\"auto\\\"})\\n */\\n Transformation.new = function (options) {\\n return new Transformation(options);\\n };\\n /*\\n Transformation Parameters\\n */\\n Transformation.prototype.angle = function (value) {\\n this.arrayParam(value, \\\"angle\\\", \\\"a\\\", \\\".\\\", backwards_expression.normalize);\\n return this;\\n };\\n Transformation.prototype.audioCodec = function (value) {\\n this.param(value, \\\"audio_codec\\\", \\\"ac\\\");\\n return this;\\n };\\n Transformation.prototype.audioFrequency = function (value) {\\n this.param(value, \\\"audio_frequency\\\", \\\"af\\\");\\n return this;\\n };\\n Transformation.prototype.aspectRatio = function (value) {\\n this.param(value, \\\"aspect_ratio\\\", \\\"ar\\\", backwards_expression.normalize);\\n return this;\\n };\\n Transformation.prototype.background = function (value) {\\n this.param(value, \\\"background\\\", \\\"b\\\", Param.norm_color);\\n return this;\\n };\\n Transformation.prototype.bitRate = function (value) {\\n this.param(value, \\\"bit_rate\\\", \\\"br\\\");\\n return this;\\n };\\n Transformation.prototype.border = function (value) {\\n return this.param(value, \\\"border\\\", \\\"bo\\\", function (border) {\\n if (backwards_utils_isObject.isObject(border)) {\\n border = Object.assign({}, {\\n color: \\\"black\\\",\\n width: 2\\n }, border);\\n return \\\"\\\".concat(border.width, \\\"px_solid_\\\").concat(Param.norm_color(border.color));\\n }\\n else {\\n return border;\\n }\\n });\\n };\\n Transformation.prototype.color = function (value) {\\n this.param(value, \\\"color\\\", \\\"co\\\", Param.norm_color);\\n return this;\\n };\\n Transformation.prototype.colorSpace = function (value) {\\n this.param(value, \\\"color_space\\\", \\\"cs\\\");\\n return this;\\n };\\n Transformation.prototype.crop = function (value) {\\n this.param(value, \\\"crop\\\", \\\"c\\\");\\n return this;\\n };\\n Transformation.prototype.customFunction = function (value) {\\n return this.param(value, \\\"custom_function\\\", \\\"fn\\\", function () {\\n return processCustomFunction(value);\\n });\\n };\\n Transformation.prototype.customPreFunction = function (value) {\\n if (this.get('custom_function')) {\\n return;\\n }\\n return this.rawParam(value, \\\"custom_function\\\", \\\"\\\", function () {\\n value = processCustomFunction(value);\\n return value ? \\\"fn_pre:\\\".concat(value) : value;\\n });\\n };\\n Transformation.prototype.defaultImage = function (value) {\\n this.param(value, \\\"default_image\\\", \\\"d\\\");\\n return this;\\n };\\n Transformation.prototype.delay = function (value) {\\n this.param(value, \\\"delay\\\", \\\"dl\\\");\\n return this;\\n };\\n Transformation.prototype.density = function (value) {\\n this.param(value, \\\"density\\\", \\\"dn\\\");\\n return this;\\n };\\n Transformation.prototype.duration = function (value) {\\n this.rangeParam(value, \\\"duration\\\", \\\"du\\\");\\n return this;\\n };\\n Transformation.prototype.dpr = function (value) {\\n return this.param(value, \\\"dpr\\\", \\\"dpr\\\", function (dpr) {\\n dpr = dpr.toString();\\n if (dpr != null ? dpr.match(/^\\\\d+$/) : void 0) {\\n return dpr + \\\".0\\\";\\n }\\n else {\\n return backwards_expression.normalize(dpr);\\n }\\n });\\n };\\n Transformation.prototype.effect = function (value) {\\n this.arrayParam(value, \\\"effect\\\", \\\"e\\\", \\\":\\\", backwards_expression.normalize);\\n return this;\\n };\\n Transformation.prototype.else = function () {\\n return this.if('else');\\n };\\n Transformation.prototype.endIf = function () {\\n return this.if('end');\\n };\\n Transformation.prototype.endOffset = function (value) {\\n this.rangeParam(value, \\\"end_offset\\\", \\\"eo\\\");\\n return this;\\n };\\n Transformation.prototype.fallbackContent = function (value) {\\n this.param(value, \\\"fallback_content\\\");\\n return this;\\n };\\n Transformation.prototype.fetchFormat = function (value) {\\n this.param(value, \\\"fetch_format\\\", \\\"f\\\");\\n return this;\\n };\\n Transformation.prototype.format = function (value) {\\n this.param(value, \\\"format\\\");\\n return this;\\n };\\n Transformation.prototype.flags = function (value) {\\n this.arrayParam(value, \\\"flags\\\", \\\"fl\\\", \\\".\\\");\\n return this;\\n };\\n Transformation.prototype.gravity = function (value) {\\n this.param(value, \\\"gravity\\\", \\\"g\\\");\\n return this;\\n };\\n Transformation.prototype.fps = function (value) {\\n return this.param(value, \\\"fps\\\", \\\"fps\\\", function (fps) {\\n if (internal_utils_dataStructureUtils.isString(fps)) {\\n return fps;\\n }\\n else if (Array.isArray(fps)) {\\n return fps.join(\\\"-\\\");\\n }\\n else {\\n return fps;\\n }\\n });\\n };\\n Transformation.prototype.height = function (value) {\\n var _this = this;\\n return this.param(value, \\\"height\\\", \\\"h\\\", function () {\\n if (_this.getValue(\\\"crop\\\") || _this.getValue(\\\"overlay\\\") || _this.getValue(\\\"underlay\\\")) {\\n return backwards_expression.normalize(value);\\n }\\n else {\\n return null;\\n }\\n });\\n };\\n Transformation.prototype.htmlHeight = function (value) {\\n this.param(value, \\\"html_height\\\");\\n return this;\\n };\\n Transformation.prototype.htmlWidth = function (value) {\\n this.param(value, \\\"html_width\\\");\\n return this;\\n };\\n Transformation.prototype.if = function (value) {\\n if (value === void 0) { value = \\\"\\\"; }\\n var i, ifVal, j, trIf, trRest;\\n switch (value) {\\n case \\\"else\\\":\\n this.chain();\\n return this.param(value, \\\"if\\\", \\\"if\\\");\\n case \\\"end\\\":\\n this.chain();\\n for (i = j = this.chained.length - 1; j >= 0; i = j += -1) {\\n ifVal = this.chained[i].getValue(\\\"if\\\");\\n if (ifVal === \\\"end\\\") {\\n break;\\n }\\n else if (ifVal != null) {\\n trIf = Transformation.new().if(ifVal);\\n this.chained[i].remove(\\\"if\\\");\\n trRest = this.chained[i];\\n this.chained[i] = Transformation.new().transformation([trIf, trRest]);\\n if (ifVal !== \\\"else\\\") {\\n break;\\n }\\n }\\n }\\n return this.param(value, \\\"if\\\", \\\"if\\\");\\n case \\\"\\\":\\n return backwards_condition.new().setParent(this);\\n default:\\n return this.param(value, \\\"if\\\", \\\"if\\\", function (value) {\\n return backwards_condition.new(value).toString();\\n });\\n }\\n };\\n Transformation.prototype.keyframeInterval = function (value) {\\n this.param(value, \\\"keyframe_interval\\\", \\\"ki\\\");\\n return this;\\n };\\n Transformation.prototype.ocr = function (value) {\\n this.param(value, \\\"ocr\\\", \\\"ocr\\\");\\n return this;\\n };\\n Transformation.prototype.offset = function (value) {\\n var _a;\\n var end_o, start_o;\\n _a = (backwards_utils_isFunction.isFunction(value != null ? value.split : void 0)) ? value.split('..') : Array.isArray(value) ? value : [null, null], start_o = _a[0], end_o = _a[1];\\n if (start_o != null) {\\n this.startOffset(start_o);\\n }\\n if (end_o != null) {\\n return this.endOffset(end_o);\\n }\\n };\\n Transformation.prototype.opacity = function (value) {\\n this.param(value, \\\"opacity\\\", \\\"o\\\", backwards_expression.normalize);\\n return this;\\n };\\n Transformation.prototype.overlay = function (value) {\\n this.layerParam(value, \\\"overlay\\\", \\\"l\\\");\\n return this;\\n };\\n Transformation.prototype.page = function (value) {\\n this.param(value, \\\"page\\\", \\\"pg\\\");\\n return this;\\n };\\n Transformation.prototype.poster = function (value) {\\n this.param(value, \\\"poster\\\");\\n return this;\\n };\\n Transformation.prototype.prefix = function (value) {\\n this.param(value, \\\"prefix\\\", \\\"p\\\");\\n return this;\\n };\\n Transformation.prototype.quality = function (value) {\\n this.param(value, \\\"quality\\\", \\\"q\\\", backwards_expression.normalize);\\n return this;\\n };\\n Transformation.prototype.radius = function (value) {\\n this.arrayParam(value, \\\"radius\\\", \\\"r\\\", \\\":\\\", backwards_expression.normalize);\\n return this;\\n };\\n Transformation.prototype.rawTransformation = function (value) {\\n this.rawParam(value, \\\"raw_transformation\\\");\\n return this;\\n };\\n Transformation.prototype.size = function (value) {\\n var _a;\\n var height, width;\\n if (backwards_utils_isFunction.isFunction(value != null ? value.split : void 0)) {\\n _a = value.split('x'), width = _a[0], height = _a[1];\\n this.width(width);\\n return this.height(height);\\n }\\n };\\n Transformation.prototype.sourceTypes = function (value) {\\n this.param(value, \\\"source_types\\\");\\n return this;\\n };\\n Transformation.prototype.sourceTransformation = function (value) {\\n return this.param(value, \\\"source_transformation\\\");\\n };\\n Transformation.prototype.startOffset = function (value) {\\n this.rangeParam(value, \\\"start_offset\\\", \\\"so\\\");\\n return this;\\n };\\n Transformation.prototype.streamingProfile = function (value) {\\n this.param(value, \\\"streaming_profile\\\", \\\"sp\\\");\\n return this;\\n };\\n Transformation.prototype.transformation = function (value) {\\n this.transformationParam(value, \\\"transformation\\\", \\\"t\\\");\\n return this;\\n };\\n Transformation.prototype.underlay = function (value) {\\n this.layerParam(value, \\\"underlay\\\", \\\"u\\\");\\n return this;\\n };\\n Transformation.prototype.variable = function (name, value) {\\n this.param(value, name, name);\\n return this;\\n };\\n Transformation.prototype.variables = function (values) {\\n this.arrayParam(values, \\\"variables\\\");\\n return this;\\n };\\n Transformation.prototype.videoCodec = function (value) {\\n this.param(value, \\\"video_codec\\\", \\\"vc\\\", Param.process_video_params);\\n return this;\\n };\\n Transformation.prototype.videoSampling = function (value) {\\n this.param(value, \\\"video_sampling\\\", \\\"vs\\\");\\n return this;\\n };\\n Transformation.prototype.width = function (value) {\\n var _this = this;\\n this.param(value, \\\"width\\\", \\\"w\\\", function () {\\n if (_this.getValue(\\\"crop\\\") || _this.getValue(\\\"overlay\\\") || _this.getValue(\\\"underlay\\\")) {\\n return backwards_expression.normalize(value);\\n }\\n else {\\n return null;\\n }\\n });\\n return this;\\n };\\n Transformation.prototype.x = function (value) {\\n this.param(value, \\\"x\\\", \\\"x\\\", backwards_expression.normalize);\\n return this;\\n };\\n Transformation.prototype.y = function (value) {\\n this.param(value, \\\"y\\\", \\\"y\\\", backwards_expression.normalize);\\n return this;\\n };\\n Transformation.prototype.zoom = function (value) {\\n this.param(value, \\\"zoom\\\", \\\"z\\\", backwards_expression.normalize);\\n return this;\\n };\\n return Transformation;\\n}(TransformationBase));\\n/**\\n * Transformation Class methods.\\n * This is a list of the parameters defined in Transformation.\\n * Values are camelCased.\\n */\\nvar methods = [\\n \\\"angle\\\",\\n \\\"audioCodec\\\",\\n \\\"audioFrequency\\\",\\n \\\"aspectRatio\\\",\\n \\\"background\\\",\\n \\\"bitRate\\\",\\n \\\"border\\\",\\n \\\"color\\\",\\n \\\"colorSpace\\\",\\n \\\"crop\\\",\\n \\\"customFunction\\\",\\n \\\"customPreFunction\\\",\\n \\\"defaultImage\\\",\\n \\\"delay\\\",\\n \\\"density\\\",\\n \\\"duration\\\",\\n \\\"dpr\\\",\\n \\\"effect\\\",\\n \\\"else\\\",\\n \\\"endIf\\\",\\n \\\"endOffset\\\",\\n \\\"fallbackContent\\\",\\n \\\"fetchFormat\\\",\\n \\\"format\\\",\\n \\\"flags\\\",\\n \\\"gravity\\\",\\n \\\"fps\\\",\\n \\\"height\\\",\\n \\\"htmlHeight\\\",\\n \\\"htmlWidth\\\",\\n \\\"if\\\",\\n \\\"keyframeInterval\\\",\\n \\\"ocr\\\",\\n \\\"offset\\\",\\n \\\"opacity\\\",\\n \\\"overlay\\\",\\n \\\"page\\\",\\n \\\"poster\\\",\\n \\\"prefix\\\",\\n \\\"quality\\\",\\n \\\"radius\\\",\\n \\\"rawTransformation\\\",\\n \\\"size\\\",\\n \\\"sourceTypes\\\",\\n \\\"sourceTransformation\\\",\\n \\\"startOffset\\\",\\n \\\"streamingProfile\\\",\\n \\\"transformation\\\",\\n \\\"underlay\\\",\\n \\\"variable\\\",\\n \\\"variables\\\",\\n \\\"videoCodec\\\",\\n \\\"videoSampling\\\",\\n \\\"width\\\",\\n \\\"x\\\",\\n \\\"y\\\",\\n \\\"zoom\\\"\\n];\\n/**\\n * Parameters that are filtered out before passing the options to an HTML tag.\\n *\\n * The list of parameters is a combination of `Transformation::methods` and `Configuration::CONFIG_PARAMS`\\n */\\nvar PARAM_NAMES = methods.map(backwards_utils_snakeCase.snakeCase).concat(backwards_configuration.CONFIG_PARAMS);\\n\\nexports.URL_KEYS = URL_KEYS;\\nexports[\\\"default\\\"] = Transformation;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/transformation.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomFunction.cjs\":\n/*!********************************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomFunction.cjs ***!\n \\********************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar internal_utils_base64Encode = __webpack_require__(/*! ../../internal/utils/base64Encode.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs\\\");\\nvar backwards_utils_isObject = __webpack_require__(/*! ../utils/isObject.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs\\\");\\n\\n/**\\n * Parse custom_function options\\n * @private\\n * @param {object|*} customFunction a custom function object containing function_type and source values\\n * @return {string|*} custom_function transformation string\\n */\\nfunction processCustomFunction(customFunction) {\\n if (!backwards_utils_isObject.isObject(customFunction)) {\\n return customFunction;\\n }\\n if (customFunction.function_type === \\\"remote\\\") {\\n var encodedSource = internal_utils_base64Encode.base64Encode(customFunction.source)\\n .replace(/\\\\+/g, '-') // Convert '+' to '-'\\n .replace(/\\\\//g, '_') // Convert '/' to '_'\\n .replace(/=+$/, ''); // Remove ending '='\\n return [customFunction.function_type, encodedSource].join(\\\":\\\");\\n }\\n return [customFunction.function_type, customFunction.source].join(\\\":\\\");\\n}\\n\\nexports.processCustomFunction = processCustomFunction;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomFunction.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomPreFunction.cjs\":\n/*!***********************************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomPreFunction.cjs ***!\n \\***********************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_transformationProcessing_processCustomFunction = __webpack_require__(/*! ./processCustomFunction.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomFunction.cjs\\\");\\n__webpack_require__(/*! ../../internal/utils/base64Encode.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs\\\");\\n__webpack_require__(/*! ../utils/isObject.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs\\\");\\n\\n/**\\n * Parse custom_pre_function options\\n * @private\\n * @param {object|*} customPreFunction a custom function object containing function_type and source values\\n * @return {string|*} custom_pre_function transformation string\\n */\\nfunction processCustomPreFunction(customPreFunction) {\\n var result = backwards_transformationProcessing_processCustomFunction.processCustomFunction(customPreFunction);\\n return typeof result === 'string' ? \\\"pre:\\\".concat(result) : null;\\n}\\n\\nexports.processCustomPreFunction = processCustomPreFunction;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processCustomPreFunction.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processDpr.cjs\":\n/*!*********************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processDpr.cjs ***!\n \\*********************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_expression = __webpack_require__(/*! ../expression.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/expression.cjs\\\");\\n\\n/**\\n * Process DPR value. If input is 1 returns 1.0\\n * @param value\\n */\\nfunction processDpr(value) {\\n var dpr = value.toString();\\n if (dpr != null ? dpr.match(/^\\\\d+$/) : void 0) {\\n return dpr + \\\".0\\\";\\n }\\n else {\\n return backwards_expression.normalize(dpr);\\n }\\n}\\n\\nexports.processDpr = processDpr;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processDpr.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processIf.cjs\":\n/*!********************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processIf.cjs ***!\n \\********************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_utils_legacyNormalizeExpression = __webpack_require__(/*! ../utils/legacyNormalizeExpression.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/legacyNormalizeExpression.cjs\\\");\\n__webpack_require__(/*! ../consts.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\\\");\\n\\n/**\\n * Parse \\\"if\\\" parameter\\n * Translates the condition if provided.\\n * @private\\n * @return {string} \\\"if_\\\" + ifValue\\n */\\nfunction process_if(ifValue) {\\n return ifValue ? \\\"if_\\\" + backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression(ifValue) : ifValue;\\n}\\n\\nexports.process_if = process_if;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processIf.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processLayer.cjs\":\n/*!***********************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processLayer.cjs ***!\n \\***********************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_utils_isObject = __webpack_require__(/*! ../utils/isObject.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs\\\");\\nvar internal_utils_base64Encode = __webpack_require__(/*! ../../internal/utils/base64Encode.cjs */ \\\"../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs\\\");\\nvar backwards_consts = __webpack_require__(/*! ../consts.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\\\");\\nvar backwards_utils_smartEscape = __webpack_require__(/*! ../utils/smartEscape.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs\\\");\\nvar backwards_legacyLayer_textlayer = __webpack_require__(/*! ../legacyLayer/textlayer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/textlayer.cjs\\\");\\nvar backwards_legacyLayer_layer = __webpack_require__(/*! ../legacyLayer/layer.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/legacyLayer/layer.cjs\\\");\\n__webpack_require__(/*! ../../tslib.es6-bcbd7c13.cjs */ \\\"../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs\\\");\\n__webpack_require__(/*! ../utils/snakeCase.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs\\\");\\n__webpack_require__(/*! ../utils/isEmpty.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs\\\");\\n__webpack_require__(/*! ../utils/isNumberLike.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isNumberLike.cjs\\\");\\n\\n/**\\n * Parse layer options\\n * @private\\n * @param {object|*} layer The layer to parse.\\n * @return {string} layer transformation string\\n */\\nfunction textStyle(layer) {\\n var keywords = [];\\n var style = \\\"\\\";\\n Object.keys(backwards_consts.LAYER_KEYWORD_PARAMS).forEach(function (attr) {\\n var default_value = backwards_consts.LAYER_KEYWORD_PARAMS[attr];\\n var attr_value = layer[attr] || default_value;\\n if (attr_value !== default_value) {\\n keywords.push(attr_value);\\n }\\n });\\n Object.keys(layer).forEach(function (attr) {\\n if (attr === \\\"letter_spacing\\\" || attr === \\\"line_spacing\\\") {\\n keywords.push(\\\"\\\".concat(attr, \\\"_\\\").concat(layer[attr]));\\n }\\n if (attr === \\\"font_hinting\\\") {\\n keywords.push(\\\"\\\".concat(attr.split(\\\"_\\\").pop(), \\\"_\\\").concat(layer[attr]));\\n }\\n if (attr === \\\"font_antialiasing\\\") {\\n keywords.push(\\\"antialias_\\\".concat(layer[attr]));\\n }\\n });\\n if (layer.hasOwnProperty(\\\"font_size\\\" ) || !keywords || keywords.length === 0) {\\n if (!layer.font_size)\\n throw \\\"Must supply font_size for text in overlay/underlay\\\";\\n if (!layer.font_family)\\n throw \\\"Must supply font_family for text in overlay/underlay\\\";\\n keywords.unshift(layer.font_size);\\n keywords.unshift(layer.font_family);\\n style = keywords.filter(function (a) { return a; }).join(\\\"_\\\");\\n }\\n return style;\\n}\\nfunction processLayer(layer) {\\n if (layer instanceof backwards_legacyLayer_textlayer || layer instanceof backwards_legacyLayer_layer) {\\n return layer.toString();\\n }\\n var result = '';\\n if (backwards_utils_isObject.isObject(layer)) {\\n if (layer.resource_type === \\\"fetch\\\" || (layer.url != null)) {\\n result = \\\"fetch:\\\".concat(internal_utils_base64Encode.base64Encode(layer.url));\\n }\\n else {\\n var public_id = layer.public_id;\\n var format = layer.format;\\n var resource_type = layer.resource_type || \\\"image\\\";\\n var type = layer.type || \\\"upload\\\";\\n var text = layer.text;\\n var style = null;\\n var components = [];\\n var noPublicId = !public_id || public_id.length === 0;\\n if (!noPublicId) {\\n public_id = public_id.replace(new RegExp(\\\"/\\\", 'g'), \\\":\\\");\\n if (format != null) {\\n public_id = \\\"\\\".concat(public_id, \\\".\\\").concat(format);\\n }\\n }\\n if ((!text || text.length === 0) && resource_type !== \\\"text\\\") {\\n if (noPublicId) {\\n throw \\\"Must supply public_id for resource_type layer_parameter\\\";\\n }\\n if (resource_type === \\\"subtitles\\\") {\\n style = textStyle(layer);\\n }\\n }\\n else {\\n resource_type = \\\"text\\\";\\n type = null;\\n // type is ignored for text layers\\n style = textStyle(layer);\\n if (text && text.length >= 0) {\\n var noStyle = !style;\\n if (!(noPublicId || noStyle) || (noPublicId && noStyle)) {\\n throw \\\"Must supply either style parameters or a public_id when providing text parameter in a text overlay/underlay\\\";\\n }\\n var re = /\\\\$\\\\([a-zA-Z]\\\\w*\\\\)/g;\\n var start = 0;\\n var textSource = backwards_utils_smartEscape.smartEscape(decodeURIComponent(text), /[,\\\\/]/g);\\n text = \\\"\\\";\\n for (var res = re.exec(textSource); res; res = re.exec(textSource)) {\\n text += backwards_utils_smartEscape.smartEscape(textSource.slice(start, res.index));\\n text += res[0];\\n start = res.index + res[0].length;\\n }\\n text += encodeURIComponent(textSource.slice(start));\\n }\\n }\\n if (resource_type !== \\\"image\\\") {\\n components.push(resource_type);\\n }\\n if (type !== \\\"upload\\\") {\\n components.push(type);\\n }\\n components.push(style);\\n components.push(public_id);\\n components.push(text);\\n result = components.filter(function (a) { return a; }).join(\\\":\\\");\\n }\\n }\\n else if (/^fetch:.+/.test(layer)) {\\n result = \\\"fetch:\\\".concat(internal_utils_base64Encode.base64Encode(layer.substr(6)));\\n }\\n else {\\n result = layer;\\n }\\n return result;\\n}\\n\\nexports.processLayer = processLayer;\\nexports.textStyle = textStyle;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processLayer.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processRadius.cjs\":\n/*!************************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processRadius.cjs ***!\n \\************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_utils_legacyNormalizeExpression = __webpack_require__(/*! ../utils/legacyNormalizeExpression.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/legacyNormalizeExpression.cjs\\\");\\n__webpack_require__(/*! ../consts.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\\\");\\n\\n/**\\n * Parse radius options\\n * @private\\n * @param {Array|string|number} _radius The radius to parse\\n * @return {string} radius transformation string\\n */\\nfunction processRadius(_radius) {\\n var radius = _radius;\\n if (!radius) {\\n return radius;\\n }\\n if (!Array.isArray(radius)) {\\n radius = [radius];\\n }\\n if (radius.length === 0 || radius.length > 4) {\\n throw new Error(\\\"Radius array should contain between 1 and 4 values\\\");\\n }\\n if (radius.findIndex(function (x) { return x === null; }) >= 0) {\\n throw new Error(\\\"Corner: Cannot be null\\\");\\n }\\n return radius.map(backwards_utils_legacyNormalizeExpression.legacyNormalizeExpression).join(':');\\n}\\n\\nexports.processRadius = processRadius;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processRadius.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processVideoParams.cjs\":\n/*!*****************************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processVideoParams.cjs ***!\n \\*****************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n/**\\n * A video codec parameter can be either a String or a Hash.\\n * @param {Object} param vc_[ : : []]\\n * or { codec: 'h264', profile: 'basic', level: '3.1' }\\n * @return {String} : : []] if a Hash was provided\\n * or the param if a String was provided.\\n * Returns null if param is not a Hash or String\\n */\\nfunction processVideoParams(param) {\\n switch (param && param.constructor) {\\n case Object: {\\n var video = \\\"\\\";\\n if ('codec' in param) {\\n video = param.codec;\\n if ('profile' in param) {\\n video += \\\":\\\" + param.profile;\\n if ('level' in param) {\\n video += \\\":\\\" + param.level;\\n }\\n }\\n }\\n return video;\\n }\\n case String:\\n return param;\\n default:\\n return null;\\n }\\n}\\n\\nexports.processVideoParams = processVideoParams;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/transformationProcessing/processVideoParams.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/finalizeResourceType.cjs\":\n/*!************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/finalizeResourceType.cjs ***!\n \\************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nfunction finalize_resource_type(resource_type, type, url_suffix, use_root_path, shorten) {\\n if (type == null) {\\n type = 'upload';\\n }\\n if (url_suffix != null) {\\n if (resource_type === 'image' && type === 'upload') {\\n resource_type = \\\"images\\\";\\n type = null;\\n }\\n else if (resource_type === 'image' && type === 'private') {\\n resource_type = 'private_images';\\n type = null;\\n }\\n else if (resource_type === 'image' && type === 'authenticated') {\\n resource_type = 'authenticated_images';\\n type = null;\\n }\\n else if (resource_type === 'raw' && type === 'upload') {\\n resource_type = 'files';\\n type = null;\\n }\\n else if (resource_type === 'video' && type === 'upload') {\\n resource_type = 'videos';\\n type = null;\\n }\\n else {\\n throw new Error(\\\"URL Suffix only supported for image/upload, image/private, image/authenticated, video/upload and raw/upload\\\");\\n }\\n }\\n if (use_root_path) {\\n if ((resource_type === 'image' && type === 'upload') || (resource_type === 'images' && (type == null))) {\\n resource_type = null;\\n type = null;\\n }\\n else {\\n throw new Error(\\\"Root path only supported for image/upload\\\");\\n }\\n }\\n if (shorten && resource_type === 'image' && type === 'upload') {\\n resource_type = 'iu';\\n type = null;\\n }\\n return [resource_type, type];\\n}\\n\\nexports.finalize_resource_type = finalize_resource_type;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/finalizeResourceType.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/finalize_source.cjs\":\n/*!*******************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/finalize_source.cjs ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_utils_smartEscape = __webpack_require__(/*! ./smartEscape.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs\\\");\\n\\nfunction finalize_source(source, format, url_suffix) {\\n var source_to_sign;\\n source = source.replace(/([^:])\\\\/\\\\//g, '$1/');\\n if (source.match(/^https?:\\\\//i)) {\\n source = backwards_utils_smartEscape.smartEscape(source);\\n source_to_sign = source;\\n }\\n else {\\n source = encodeURIComponent(decodeURIComponent(source)).replace(/%3A/g, \\\":\\\").replace(/%2F/g, \\\"/\\\");\\n source_to_sign = source;\\n if (url_suffix) {\\n if (url_suffix.match(/[\\\\.\\\\/]/)) {\\n throw new Error('url_suffix should not include . or /');\\n }\\n source = source + '/' + url_suffix;\\n }\\n if (format != null) {\\n source = source + '.' + format;\\n source_to_sign = source_to_sign + '.' + format;\\n }\\n }\\n return [source, source_to_sign];\\n}\\n\\nexports.finalize_source = finalize_source;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/finalize_source.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs\":\n/*!***********************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nfunction isEmpty(value) {\\n return value === undefined ||\\n value === null ||\\n (typeof value === \\\"object\\\" && Object.keys(value).length === 0) ||\\n (typeof value === \\\"string\\\" && value.trim().length === 0);\\n}\\n\\nexports.isEmpty = isEmpty;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/isFunction.cjs\":\n/*!**************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/isFunction.cjs ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n/**\\n * Simple Is Function check\\n *\\n * @param variableToCheck\\n * @returns {boolean}\\n */\\nfunction isFunction(variableToCheck) {\\n return variableToCheck instanceof Function;\\n}\\n\\nexports.isFunction = isFunction;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/isFunction.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/isNumberLike.cjs\":\n/*!****************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/isNumberLike.cjs ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n/**\\n * Return true is value is a number or a string representation of a number.\\n * @function Util.isNumberLike\\n * @param {*} value\\n * @returns {boolean} true if value is a number\\n * @example\\n * Util.isNumber(0) // true\\n * Util.isNumber(\\\"1.3\\\") // true\\n * Util.isNumber(\\\"\\\") // false\\n * Util.isNumber(undefined) // false\\n */\\nvar isNumberLike = function (value) {\\n return (value != null) && !isNaN(parseFloat(value));\\n};\\n\\nexports.isNumberLike = isNumberLike;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/isNumberLike.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs\":\n/*!************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n/**\\n *\\n * @param a\\n */\\nfunction isObject(a) {\\n return typeof a === 'object' && a !== null;\\n}\\n\\nexports.isObject = isObject;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/isObject.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/legacyBaseUtil.cjs\":\n/*!******************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/legacyBaseUtil.cjs ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_utils_isEmpty = __webpack_require__(/*! ./isEmpty.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/utils/isEmpty.cjs\\\");\\n\\n/**\\n * Create a copy of the source object with all keys in camelCase\\n * @function Util.withCamelCaseKeys\\n * @return {Object} a new object\\n * @param source\\n */\\nvar withCamelCaseKeys = function (source) {\\n return convertKeys(source, camelCase);\\n};\\n/**\\n * Convert string to camelCase\\n * @function Util.camelCase\\n * @param {string} source - the string to convert\\n * @return {string} in camelCase format\\n */\\nvar camelCase = function (source) {\\n var words = source.match(reWords);\\n words = words.map(function (word) { return word.charAt(0).toLocaleUpperCase() + word.slice(1).toLocaleLowerCase(); });\\n words[0] = words[0].toLocaleLowerCase();\\n return words.join('');\\n};\\n/**\\n * Creates a new object from source, with the keys transformed using the converter.\\n * @param {object} source\\n * @param {function|null} converter\\n * @returns {object}\\n */\\nvar convertKeys = function (source, converter) {\\n var result, value;\\n result = {};\\n for (var key in source) {\\n value = source[key];\\n if (converter) {\\n key = converter(key);\\n }\\n if (!backwards_utils_isEmpty.isEmpty(key)) {\\n // @ts-ignore\\n result[key] = value;\\n }\\n }\\n return result;\\n};\\nvar reWords = (function () {\\n var lower, upper;\\n upper = '[A-Z]';\\n lower = '[a-z]+';\\n return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g');\\n})();\\nfunction identity(x) {\\n return x;\\n}\\nfunction contains(a, obj) {\\n for (var i = 0; i < a.length; i++) {\\n if (a[i] === obj) {\\n return true;\\n }\\n }\\n return false;\\n}\\nfunction difference(arr1, arr2) {\\n return arr1.filter(function (x) { return !arr2.includes(x); });\\n}\\n\\nexports.camelCase = camelCase;\\nexports.contains = contains;\\nexports.convertKeys = convertKeys;\\nexports.difference = difference;\\nexports.identity = identity;\\nexports.reWords = reWords;\\nexports.withCamelCaseKeys = withCamelCaseKeys;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/legacyBaseUtil.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/legacyNormalizeExpression.cjs\":\n/*!*****************************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/legacyNormalizeExpression.cjs ***!\n \\*****************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_consts = __webpack_require__(/*! ../consts.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\\\");\\n\\n/**\\n * Normalize an offset value\\n * @param {String} expression a decimal value which may have a 'p' or '%' postfix. E.g. '35%', '0.4p'\\n * @return {Object|String} a normalized String of the input value if possible otherwise the value itself\\n */\\nfunction legacyNormalizeExpression(expression) {\\n if (typeof expression !== 'string' || expression.length === 0 || expression.match(/^!.+!$/)) {\\n if (expression) {\\n return expression.toString();\\n }\\n else {\\n return expression;\\n }\\n }\\n expression = String(expression);\\n var operators = \\\"\\\\\\\\|\\\\\\\\||>=|<=|&&|!=|>|=|<|/|-|\\\\\\\\+|\\\\\\\\*|\\\\\\\\^\\\";\\n // operators\\n var operatorsPattern = \\\"((\\\" + operators + \\\")(?=[ _]))\\\";\\n var operatorsReplaceRE = new RegExp(operatorsPattern, \\\"g\\\");\\n expression = expression.replace(operatorsReplaceRE, function (match) {\\n return backwards_consts.LEGACY_CONDITIONAL_OPERATORS[match];\\n });\\n // predefined variables\\n var predefinedVarsPattern = \\\"(\\\" + Object.keys(backwards_consts.LEGACY_PREDEFINED_VARS).join(\\\"|\\\") + \\\")\\\";\\n var userVariablePattern = '(\\\\\\\\$_*[^_ ]+)';\\n var variablesReplaceRE = new RegExp(\\\"\\\".concat(userVariablePattern, \\\"|\\\").concat(predefinedVarsPattern), \\\"g\\\");\\n // @ts-ignore\\n expression = expression.replace(variablesReplaceRE, function (match) { return (backwards_consts.LEGACY_PREDEFINED_VARS[match] || match); });\\n return expression.replace(/[ _]+/g, '_');\\n}\\n\\nexports.legacyNormalizeExpression = legacyNormalizeExpression;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/legacyNormalizeExpression.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/norm_range_values.cjs\":\n/*!*********************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/norm_range_values.cjs ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_consts = __webpack_require__(/*! ../consts.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\\\");\\n\\n/**\\n *\\n * @param value\\n */\\nfunction normRangeValues(value) {\\n var offset = String(value).match(backwards_consts.RANGE_VALUE_RE);\\n if (offset) {\\n var modifier = offset[5] ? 'p' : '';\\n return \\\"\\\".concat(offset[1] || offset[4]).concat(modifier);\\n }\\n else {\\n return value;\\n }\\n}\\n\\nexports.normRangeValues = normRangeValues;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/norm_range_values.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs\":\n/*!***************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n// Based on CGI::unescape. In addition does not escape / :\\n// smart_escape = (string)->\\n// encodeURIComponent(string).replace(/%3A/g, \\\":\\\").replace(/%2F/g, \\\"/\\\")\\nfunction smartEscape(string, unsafe) {\\n if (unsafe === void 0) { unsafe = /([^a-zA-Z0-9_.\\\\-\\\\/:]+)/g; }\\n return string.replace(unsafe, function (match) {\\n return match.split(\\\"\\\").map(function (c) {\\n return \\\"%\\\" + c.charCodeAt(0).toString(16).toUpperCase();\\n }).join(\\\"\\\");\\n });\\n}\\n\\nexports.smartEscape = smartEscape;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/smartEscape.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs\":\n/*!*************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n/**\\n * Converts string to snake case\\n * @param {string} str\\n */\\nvar snakeCase = function (str) { return str.replace(/[A-Z]/g, function (letter) { return \\\"_\\\".concat(letter.toLowerCase()); }); };\\n\\nexports.snakeCase = snakeCase;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/snakeCase.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/splitRange.cjs\":\n/*!**************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/splitRange.cjs ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_consts = __webpack_require__(/*! ../consts.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\\\");\\n\\n/**\\n * Split a range into the start and end values\\n * @param range\\n */\\nfunction splitRange(range) {\\n switch (range && range.constructor) {\\n case String:\\n if (!backwards_consts.OFFSET_ANY_PATTERN_RE.test(range)) {\\n return range;\\n }\\n return range.split(\\\"..\\\");\\n case Array:\\n return [[range], range[range.length - 1]];\\n default:\\n return [null, null];\\n }\\n}\\n\\nexports.splitRange = splitRange;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/splitRange.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/toArray.cjs\":\n/*!***********************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/toArray.cjs ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n/**\\n *\\n * @param arg\\n */\\nfunction toArray(arg) {\\n switch (true) {\\n case arg == null:\\n return [];\\n case Array.isArray(arg):\\n return arg;\\n default:\\n return [arg];\\n }\\n}\\n\\nexports.toArray = toArray;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/toArray.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.cjs\":\n/*!***********************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.cjs ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\nvar backwards_consts = __webpack_require__(/*! ../consts.cjs */ \\\"../node_modules/@cloudinary/url-gen/backwards/consts.cjs\\\");\\n\\nfunction unsigned_url_prefix(source, cloud_name, private_cdn, cdn_subdomain, secure_cdn_subdomain, cname, secure, secure_distribution) {\\n var prefix;\\n if (cloud_name.indexOf(\\\"/\\\") === 0) {\\n return '/res' + cloud_name;\\n }\\n var shared_domain = !private_cdn;\\n if (secure) {\\n if ((secure_distribution == null) || secure_distribution === backwards_consts.OLD_AKAMAI_SHARED_CDN) {\\n secure_distribution = private_cdn ? cloud_name + \\\"-res.cloudinary.com\\\" : backwards_consts.SHARED_CDN;\\n }\\n if (shared_domain == null) {\\n shared_domain = secure_distribution === backwards_consts.SHARED_CDN;\\n }\\n prefix = 'https://' + secure_distribution;\\n }\\n else if (cname) {\\n // let subdomain = cdn_subdomain ? 'a' + ((crc32(source) % 5) + 1) + '.' : '';\\n prefix = 'http://' + cname;\\n }\\n else {\\n var cdn_part = private_cdn ? cloud_name + '-' : '';\\n var host = [cdn_part, 'res', '.cloudinary.com'].join('');\\n prefix = 'http://' + host;\\n }\\n if (shared_domain) {\\n prefix += '/' + cloud_name;\\n }\\n return prefix;\\n}\\n\\nexports.unsigned_url_prefix = unsigned_url_prefix;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs\":\n/*!***************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n/**\\n *\\n * @private\\n * @description An isomorphic Base64 function, provides browser and server support.\\n * @param {string} input - A string to encode with base64\\n */\\nfunction base64Encode(input) {\\n // Browser\\n var encodedResult = '';\\n if (typeof window !== 'undefined') {\\n // encodeURI the input to support unicode characters\\n // Since the URI might be encoded already, we try to decode it once before\\n encodedResult = btoa(encodeURI(decodeURI(input)));\\n }\\n else {\\n // NodeJS support\\n encodedResult = global.Buffer.from(input).toString('base64');\\n }\\n return encodedResult\\n .replace(/\\\\+/g, '-') // Convert '+' to '-'\\n .replace(/\\\\//g, '_'); // Convert '/' to '_';\\n}\\n\\nexports.base64Encode = base64Encode;\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \\\"../node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/internal/utils/base64Encode.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/internal/utils/cloneDeep.cjs\":\n/*!************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/internal/utils/cloneDeep.cjs ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global, module) {\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n/* eslint-disable */\\n// @ts-nocheck\\n// This file is a direct copy from lodash.clonedeep\\n// Lodash.clonedeep has problems with the module exports, thus a copy was the shortest and cleanest solution\\n/**\\n * lodash (Custom Build) \\n * Build: `lodash modularize exports=\\\"npm\\\" -o ./`\\n * Copyright jQuery Foundation and other contributors \\n * Released under MIT license \\n * Based on Underscore.js 1.8.3 \\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n */\\n/** Used as the size to enable large array optimizations. */\\nvar LARGE_ARRAY_SIZE = 200;\\n/** Used to stand-in for `undefined` hash values. */\\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\\n/** Used as references for constious `Number` constants. */\\nvar MAX_SAFE_INTEGER = 9007199254740991;\\n/** `Object#toString` result references. */\\nvar argsTag = '[object Arguments]', arrayTag = '[object Array]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', funcTag = '[object Function]', genTag = '[object GeneratorFunction]', mapTag = '[object Map]', numberTag = '[object Number]', objectTag = '[object Object]', promiseTag = '[object Promise]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', symbolTag = '[object Symbol]', weakMapTag = '[object WeakMap]';\\nvar arrayBufferTag = '[object ArrayBuffer]', dataViewTag = '[object DataView]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', int16Tag = '[object Int16Array]', int32Tag = '[object Int32Array]', uint8Tag = '[object Uint8Array]', uint8ClampedTag = '[object Uint8ClampedArray]', uint16Tag = '[object Uint16Array]', uint32Tag = '[object Uint32Array]';\\n/**\\n * Used to match `RegExp`\\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\\n */\\nvar reRegExpChar = /[\\\\\\\\^$.*+?()[\\\\]{}|]/g;\\n/** Used to match `RegExp` flags from their coerced string values. */\\nvar reFlags = /\\\\w*$/;\\n/** Used to detect host constructors (Safari). */\\nvar reIsHostCtor = /^\\\\[object .+?Constructor\\\\]$/;\\n/** Used to detect unsigned integer values. */\\nvar reIsUint = /^(?:0|[1-9]\\\\d*)$/;\\n/** Used to identify `toStringTag` values supported by `_.clone`. */\\nvar cloneableTags = {};\\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\\n cloneableTags[boolTag] = cloneableTags[dateTag] =\\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\\n cloneableTags[numberTag] = cloneableTags[objectTag] =\\n cloneableTags[regexpTag] = cloneableTags[setTag] =\\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\\ncloneableTags[errorTag] = cloneableTags[funcTag] =\\n cloneableTags[weakMapTag] = false;\\n/** Detect free constiable `global` from Node.js. */\\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\\n/** Detect free constiable `self`. */\\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\\n/** Used as a reference to the global object. */\\nvar root = freeGlobal || freeSelf || Function('return this')();\\n/** Detect free constiable `exports`. */\\nvar freeExports = true && exports && !exports.nodeType && exports;\\n/** Detect free constiable `module`. */\\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\\n/** Detect the popular CommonJS extension `module.exports`. */\\nvar moduleExports = freeModule && freeModule.exports === freeExports;\\n/**\\n * Adds the key-value `pair` to `map`.\\n *\\n * @private\\n * @param {Object} map The map to modify.\\n * @param {Array} pair The key-value pair to add.\\n * @returns {Object} Returns `map`.\\n */\\nfunction addMapEntry(map, pair) {\\n // Don't return `map.set` because it's not chainable in IE 11.\\n map.set(pair[0], pair[1]);\\n return map;\\n}\\n/**\\n * Adds `value` to `set`.\\n *\\n * @private\\n * @param {Object} set The set to modify.\\n * @param {*} value The value to add.\\n * @returns {Object} Returns `set`.\\n */\\nfunction addSetEntry(set, value) {\\n // Don't return `set.add` because it's not chainable in IE 11.\\n set.add(value);\\n return set;\\n}\\n/**\\n * A specialized version of `_.forEach` for arrays without support for\\n * iteratee shorthands.\\n *\\n * @private\\n * @param {Array} [array] The array to iterate over.\\n * @param {Function} iteratee The function invoked per iteration.\\n * @returns {Array} Returns `array`.\\n */\\nfunction arrayEach(array, iteratee) {\\n var index = -1, length = array ? array.length : 0;\\n while (++index < length) {\\n if (iteratee(array[index], index, array) === false) {\\n break;\\n }\\n }\\n return array;\\n}\\n/**\\n * Appends the elements of `values` to `array`.\\n *\\n * @private\\n * @param {Array} array The array to modify.\\n * @param {Array} values The values to append.\\n * @returns {Array} Returns `array`.\\n */\\nfunction arrayPush(array, values) {\\n var index = -1, length = values.length, offset = array.length;\\n while (++index < length) {\\n array[offset + index] = values[index];\\n }\\n return array;\\n}\\n/**\\n * A specialized version of `_.reduce` for arrays without support for\\n * iteratee shorthands.\\n *\\n * @private\\n * @param {Array} [array] The array to iterate over.\\n * @param {Function} iteratee The function invoked per iteration.\\n * @param {*} [accumulator] The initial value.\\n * @param {boolean} [initAccum] Specify using the first element of `array` as\\n * the initial value.\\n * @returns {*} Returns the accumulated value.\\n */\\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\\n var index = -1, length = array ? array.length : 0;\\n if (initAccum && length) {\\n accumulator = array[++index];\\n }\\n while (++index < length) {\\n accumulator = iteratee(accumulator, array[index], index, array);\\n }\\n return accumulator;\\n}\\n/**\\n * The base implementation of `_.times` without support for iteratee shorthands\\n * or max array length checks.\\n *\\n * @private\\n * @param {number} n The number of times to invoke `iteratee`.\\n * @param {Function} iteratee The function invoked per iteration.\\n * @returns {Array} Returns the array of results.\\n */\\nfunction baseTimes(n, iteratee) {\\n var index = -1, result = Array(n);\\n while (++index < n) {\\n result[index] = iteratee(index);\\n }\\n return result;\\n}\\n/**\\n * Gets the value at `key` of `object`.\\n *\\n * @private\\n * @param {Object} [object] The object to query.\\n * @param {string} key The key of the property to get.\\n * @returns {*} Returns the property value.\\n */\\nfunction getValue(object, key) {\\n return object == null ? undefined : object[key];\\n}\\n/**\\n * Checks if `value` is a host object in IE < 9.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\\n */\\nfunction isHostObject(value) {\\n // Many host objects are `Object` objects that can coerce to strings\\n // despite having improperly defined `toString` methods.\\n var result = false;\\n if (value != null && typeof value.toString != 'function') {\\n try {\\n result = !!(\\\"\\\".concat(value));\\n }\\n catch (e) {\\n }\\n }\\n return result;\\n}\\n/**\\n * Converts `map` to its key-value pairs.\\n *\\n * @private\\n * @param {Object} map The map to convert.\\n * @returns {Array} Returns the key-value pairs.\\n */\\nfunction mapToArray(map) {\\n var index = -1, result = Array(map.size);\\n map.forEach(function (value, key) {\\n result[++index] = [key, value];\\n });\\n return result;\\n}\\n/**\\n * Creates a unary function that invokes `func` with its argument transformed.\\n *\\n * @private\\n * @param {Function} func The function to wrap.\\n * @param {Function} transform The argument transform.\\n * @returns {Function} Returns the new function.\\n */\\nfunction overArg(func, transform) {\\n return function (arg) {\\n return func(transform(arg));\\n };\\n}\\n/**\\n * Converts `set` to an array of its values.\\n *\\n * @private\\n * @param {Object} set The set to convert.\\n * @returns {Array} Returns the values.\\n */\\nfunction setToArray(set) {\\n var index = -1, result = Array(set.size);\\n set.forEach(function (value) {\\n result[++index] = value;\\n });\\n return result;\\n}\\n/** Used for built-in method references. */\\nvar arrayProto = Array.prototype, funcProto = Function.prototype, objectProto = Object.prototype;\\n/** Used to detect overreaching core-js shims. */\\nvar coreJsData = root['__core-js_shared__'];\\n/** Used to detect methods masquerading as native. */\\nvar maskSrcKey = (function () {\\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\\n return uid ? (\\\"Symbol(src)_1.\\\".concat(uid)) : '';\\n}());\\n/** Used to resolve the decompiled source of functions. */\\nvar funcToString = funcProto.toString;\\n/** Used to check objects for own properties. */\\nvar hasOwnProperty = objectProto.hasOwnProperty;\\n/**\\n * Used to resolve the\\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\\n * of values.\\n */\\nvar objectToString = objectProto.toString;\\n/** Used to detect if a method is native. */\\nvar reIsNative = RegExp(\\\"^\\\".concat(funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\\\\\$&')\\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\\\\\\\()| for .+?(?=\\\\\\\\\\\\])/g, '$1.*?'), \\\"$\\\"));\\n/** Built-in value references. */\\nvar Buffer = moduleExports ? root.Buffer : undefined, Symbol = root.Symbol, Uint8Array = root.Uint8Array, getPrototype = overArg(Object.getPrototypeOf, Object), objectCreate = Object.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice;\\n/* Built-in method references for those with the same name as other `lodash` methods. */\\nvar nativeGetSymbols = Object.getOwnPropertySymbols, nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, nativeKeys = overArg(Object.keys, Object);\\n/* Built-in method references that are verified to be native. */\\nvar DataView = getNative(root, 'DataView'), Map = getNative(root, 'Map'), Promise$1 = getNative(root, 'Promise'), Set = getNative(root, 'Set'), WeakMap = getNative(root, 'WeakMap'), nativeCreate = getNative(Object, 'create');\\n/** Used to detect maps, sets, and weakmaps. */\\nvar dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set), weakMapCtorString = toSource(WeakMap);\\n/** Used to convert symbols to primitives and strings. */\\nvar symbolProto = Symbol ? Symbol.prototype : undefined, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\\n/**\\n * Creates a hash object.\\n *\\n * @private\\n * @constructor\\n * @param {Array} [entries] The key-value pairs to cache.\\n */\\nfunction Hash(entries) {\\n var index = -1, length = entries ? entries.length : 0;\\n this.clear();\\n while (++index < length) {\\n var entry = entries[index];\\n this.set(entry[0], entry[1]);\\n }\\n}\\n/**\\n * Removes all key-value entries from the hash.\\n *\\n * @private\\n * @name clear\\n * @memberOf Hash\\n */\\nfunction hashClear() {\\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\\n}\\n/**\\n * Removes `key` and its value from the hash.\\n *\\n * @private\\n * @name delete\\n * @memberOf Hash\\n * @param {Object} hash The hash to modify.\\n * @param {string} key The key of the value to remove.\\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\\n */\\nfunction hashDelete(key) {\\n return this.has(key) && delete this.__data__[key];\\n}\\n/**\\n * Gets the hash value for `key`.\\n *\\n * @private\\n * @name get\\n * @memberOf Hash\\n * @param {string} key The key of the value to get.\\n * @returns {*} Returns the entry value.\\n */\\nfunction hashGet(key) {\\n var data = this.__data__;\\n if (nativeCreate) {\\n var result = data[key];\\n return result === HASH_UNDEFINED ? undefined : result;\\n }\\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\\n}\\n/**\\n * Checks if a hash value for `key` exists.\\n *\\n * @private\\n * @name has\\n * @memberOf Hash\\n * @param {string} key The key of the entry to check.\\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\\n */\\nfunction hashHas(key) {\\n var data = this.__data__;\\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\\n}\\n/**\\n * Sets the hash `key` to `value`.\\n *\\n * @private\\n * @name set\\n * @memberOf Hash\\n * @param {string} key The key of the value to set.\\n * @param {*} value The value to set.\\n * @returns {Object} Returns the hash instance.\\n */\\nfunction hashSet(key, value) {\\n var data = this.__data__;\\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\\n return this;\\n}\\n// Add methods to `Hash`.\\nHash.prototype.clear = hashClear;\\nHash.prototype.delete = hashDelete;\\nHash.prototype.get = hashGet;\\nHash.prototype.has = hashHas;\\nHash.prototype.set = hashSet;\\n/**\\n * Creates an list cache object.\\n *\\n * @private\\n * @constructor\\n * @param {Array} [entries] The key-value pairs to cache.\\n */\\nfunction ListCache(entries) {\\n var index = -1, length = entries ? entries.length : 0;\\n this.clear();\\n while (++index < length) {\\n var entry = entries[index];\\n this.set(entry[0], entry[1]);\\n }\\n}\\n/**\\n * Removes all key-value entries from the list cache.\\n *\\n * @private\\n * @name clear\\n * @memberOf ListCache\\n */\\nfunction listCacheClear() {\\n this.__data__ = [];\\n}\\n/**\\n * Removes `key` and its value from the list cache.\\n *\\n * @private\\n * @name delete\\n * @memberOf ListCache\\n * @param {string} key The key of the value to remove.\\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\\n */\\nfunction listCacheDelete(key) {\\n var data = this.__data__, index = assocIndexOf(data, key);\\n if (index < 0) {\\n return false;\\n }\\n var lastIndex = data.length - 1;\\n if (index == lastIndex) {\\n data.pop();\\n }\\n else {\\n splice.call(data, index, 1);\\n }\\n return true;\\n}\\n/**\\n * Gets the list cache value for `key`.\\n *\\n * @private\\n * @name get\\n * @memberOf ListCache\\n * @param {string} key The key of the value to get.\\n * @returns {*} Returns the entry value.\\n */\\nfunction listCacheGet(key) {\\n var data = this.__data__, index = assocIndexOf(data, key);\\n return index < 0 ? undefined : data[index][1];\\n}\\n/**\\n * Checks if a list cache value for `key` exists.\\n *\\n * @private\\n * @name has\\n * @memberOf ListCache\\n * @param {string} key The key of the entry to check.\\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\\n */\\nfunction listCacheHas(key) {\\n return assocIndexOf(this.__data__, key) > -1;\\n}\\n/**\\n * Sets the list cache `key` to `value`.\\n *\\n * @private\\n * @name set\\n * @memberOf ListCache\\n * @param {string} key The key of the value to set.\\n * @param {*} value The value to set.\\n * @returns {Object} Returns the list cache instance.\\n */\\nfunction listCacheSet(key, value) {\\n var data = this.__data__, index = assocIndexOf(data, key);\\n if (index < 0) {\\n data.push([key, value]);\\n }\\n else {\\n data[index][1] = value;\\n }\\n return this;\\n}\\n// Add methods to `ListCache`.\\nListCache.prototype.clear = listCacheClear;\\nListCache.prototype.delete = listCacheDelete;\\nListCache.prototype.get = listCacheGet;\\nListCache.prototype.has = listCacheHas;\\nListCache.prototype.set = listCacheSet;\\n/**\\n * Creates a map cache object to store key-value pairs.\\n *\\n * @private\\n * @constructor\\n * @param {Array} [entries] The key-value pairs to cache.\\n */\\nfunction MapCache(entries) {\\n var index = -1, length = entries ? entries.length : 0;\\n this.clear();\\n while (++index < length) {\\n var entry = entries[index];\\n this.set(entry[0], entry[1]);\\n }\\n}\\n/**\\n * Removes all key-value entries from the map.\\n *\\n * @private\\n * @name clear\\n * @memberOf MapCache\\n */\\nfunction mapCacheClear() {\\n this.__data__ = {\\n 'hash': new Hash,\\n 'map': new (Map || ListCache),\\n 'string': new Hash\\n };\\n}\\n/**\\n * Removes `key` and its value from the map.\\n *\\n * @private\\n * @name delete\\n * @memberOf MapCache\\n * @param {string} key The key of the value to remove.\\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\\n */\\nfunction mapCacheDelete(key) {\\n return getMapData(this, key).delete(key);\\n}\\n/**\\n * Gets the map value for `key`.\\n *\\n * @private\\n * @name get\\n * @memberOf MapCache\\n * @param {string} key The key of the value to get.\\n * @returns {*} Returns the entry value.\\n */\\nfunction mapCacheGet(key) {\\n return getMapData(this, key).get(key);\\n}\\n/**\\n * Checks if a map value for `key` exists.\\n *\\n * @private\\n * @name has\\n * @memberOf MapCache\\n * @param {string} key The key of the entry to check.\\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\\n */\\nfunction mapCacheHas(key) {\\n return getMapData(this, key).has(key);\\n}\\n/**\\n * Sets the map `key` to `value`.\\n *\\n * @private\\n * @name set\\n * @memberOf MapCache\\n * @param {string} key The key of the value to set.\\n * @param {*} value The value to set.\\n * @returns {Object} Returns the map cache instance.\\n */\\nfunction mapCacheSet(key, value) {\\n getMapData(this, key).set(key, value);\\n return this;\\n}\\n// Add methods to `MapCache`.\\nMapCache.prototype.clear = mapCacheClear;\\nMapCache.prototype.delete = mapCacheDelete;\\nMapCache.prototype.get = mapCacheGet;\\nMapCache.prototype.has = mapCacheHas;\\nMapCache.prototype.set = mapCacheSet;\\n/**\\n * Creates a stack cache object to store key-value pairs.\\n *\\n * @private\\n * @constructor\\n * @param {Array} [entries] The key-value pairs to cache.\\n */\\nfunction Stack(entries) {\\n this.__data__ = new ListCache(entries);\\n}\\n/**\\n * Removes all key-value entries from the stack.\\n *\\n * @private\\n * @name clear\\n * @memberOf Stack\\n */\\nfunction stackClear() {\\n this.__data__ = new ListCache;\\n}\\n/**\\n * Removes `key` and its value from the stack.\\n *\\n * @private\\n * @name delete\\n * @memberOf Stack\\n * @param {string} key The key of the value to remove.\\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\\n */\\nfunction stackDelete(key) {\\n return this.__data__.delete(key);\\n}\\n/**\\n * Gets the stack value for `key`.\\n *\\n * @private\\n * @name get\\n * @memberOf Stack\\n * @param {string} key The key of the value to get.\\n * @returns {*} Returns the entry value.\\n */\\nfunction stackGet(key) {\\n return this.__data__.get(key);\\n}\\n/**\\n * Checks if a stack value for `key` exists.\\n *\\n * @private\\n * @name has\\n * @memberOf Stack\\n * @param {string} key The key of the entry to check.\\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\\n */\\nfunction stackHas(key) {\\n return this.__data__.has(key);\\n}\\n/**\\n * Sets the stack `key` to `value`.\\n *\\n * @private\\n * @name set\\n * @memberOf Stack\\n * @param {string} key The key of the value to set.\\n * @param {*} value The value to set.\\n * @returns {Object} Returns the stack cache instance.\\n */\\nfunction stackSet(key, value) {\\n var cache = this.__data__;\\n if (cache instanceof ListCache) {\\n var pairs = cache.__data__;\\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\\n pairs.push([key, value]);\\n return this;\\n }\\n cache = this.__data__ = new MapCache(pairs);\\n }\\n cache.set(key, value);\\n return this;\\n}\\n// Add methods to `Stack`.\\nStack.prototype.clear = stackClear;\\nStack.prototype.delete = stackDelete;\\nStack.prototype.get = stackGet;\\nStack.prototype.has = stackHas;\\nStack.prototype.set = stackSet;\\n/**\\n * Creates an array of the enumerable property names of the array-like `value`.\\n *\\n * @private\\n * @param {*} value The value to query.\\n * @param {boolean} inherited Specify returning inherited property names.\\n * @returns {Array} Returns the array of property names.\\n */\\nfunction arrayLikeKeys(value, inherited) {\\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\\n // Safari 9 makes `arguments.length` enumerable in strict mode.\\n var result = (isArray(value) || isArguments(value))\\n ? baseTimes(value.length, String)\\n : [];\\n var length = result.length, skipIndexes = !!length;\\n for (var key in value) {\\n if ((inherited || hasOwnProperty.call(value, key)) &&\\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\\n result.push(key);\\n }\\n }\\n return result;\\n}\\n/**\\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\\n * for equality comparisons.\\n *\\n * @private\\n * @param {Object} object The object to modify.\\n * @param {string} key The key of the property to assign.\\n * @param {*} value The value to assign.\\n */\\nfunction assignValue(object, key, value) {\\n var objValue = object[key];\\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\\n (value === undefined && !(key in object))) {\\n object[key] = value;\\n }\\n}\\n/**\\n * Gets the index at which the `key` is found in `array` of key-value pairs.\\n *\\n * @private\\n * @param {Array} array The array to inspect.\\n * @param {*} key The key to search for.\\n * @returns {number} Returns the index of the matched value, else `-1`.\\n */\\nfunction assocIndexOf(array, key) {\\n var length = array.length;\\n while (length--) {\\n if (eq(array[length][0], key)) {\\n return length;\\n }\\n }\\n return -1;\\n}\\n/**\\n * The base implementation of `_.assign` without support for multiple sources\\n * or `customizer` functions.\\n *\\n * @private\\n * @param {Object} object The destination object.\\n * @param {Object} source The source object.\\n * @returns {Object} Returns `object`.\\n */\\nfunction baseAssign(object, source) {\\n return object && copyObject(source, keys(source), object);\\n}\\n/**\\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\\n * traversed objects.\\n *\\n * @private\\n * @param {*} value The value to clone.\\n * @param {boolean} [isDeep] Specify a deep clone.\\n * @param {boolean} [isFull] Specify a clone including symbols.\\n * @param {Function} [customizer] The function to customize cloning.\\n * @param {string} [key] The key of `value`.\\n * @param {Object} [object] The parent object of `value`.\\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\\n * @returns {*} Returns the cloned value.\\n */\\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\\n var result;\\n if (customizer) {\\n result = object ? customizer(value, key, object, stack) : customizer(value);\\n }\\n if (result !== undefined) {\\n return result;\\n }\\n if (!isObject(value)) {\\n return value;\\n }\\n var isArr = isArray(value);\\n if (isArr) {\\n result = initCloneArray(value);\\n if (!isDeep) {\\n return copyArray(value, result);\\n }\\n }\\n else {\\n var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;\\n if (isBuffer(value)) {\\n return cloneBuffer(value, isDeep);\\n }\\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\\n if (isHostObject(value)) {\\n return object ? value : {};\\n }\\n result = initCloneObject(isFunc ? {} : value);\\n if (!isDeep) {\\n return copySymbols(value, baseAssign(result, value));\\n }\\n }\\n else {\\n if (!cloneableTags[tag]) {\\n return object ? value : {};\\n }\\n result = initCloneByTag(value, tag, baseClone, isDeep);\\n }\\n }\\n // Check for circular references and return its corresponding clone.\\n stack || (stack = new Stack);\\n var stacked = stack.get(value);\\n if (stacked) {\\n return stacked;\\n }\\n stack.set(value, result);\\n if (!isArr) {\\n var props = isFull ? getAllKeys(value) : keys(value);\\n }\\n arrayEach(props || value, function (subValue, key) {\\n if (props) {\\n key = subValue;\\n subValue = value[key];\\n }\\n // Recursively populate clone (susceptible to call stack limits).\\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\\n });\\n return result;\\n}\\n/**\\n * The base implementation of `_.create` without support for assigning\\n * properties to the created object.\\n *\\n * @private\\n * @param {Object} prototype The object to inherit from.\\n * @returns {Object} Returns the new object.\\n */\\nfunction baseCreate(proto) {\\n return isObject(proto) ? objectCreate(proto) : {};\\n}\\n/**\\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\\n * symbols of `object`.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @param {Function} keysFunc The function to get the keys of `object`.\\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\\n * @returns {Array} Returns the array of property names and symbols.\\n */\\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\\n var result = keysFunc(object);\\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\\n}\\n/**\\n * The base implementation of `getTag`.\\n *\\n * @private\\n * @param {*} value The value to query.\\n * @returns {string} Returns the `toStringTag`.\\n */\\nfunction baseGetTag(value) {\\n return objectToString.call(value);\\n}\\n/**\\n * The base implementation of `_.isNative` without bad shim checks.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a native function,\\n * else `false`.\\n */\\nfunction baseIsNative(value) {\\n if (!isObject(value) || isMasked(value)) {\\n return false;\\n }\\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\\n return pattern.test(toSource(value));\\n}\\n/**\\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @returns {Array} Returns the array of property names.\\n */\\nfunction baseKeys(object) {\\n if (!isPrototype(object)) {\\n return nativeKeys(object);\\n }\\n var result = [];\\n for (var key in Object(object)) {\\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\\n result.push(key);\\n }\\n }\\n return result;\\n}\\n/**\\n * Creates a clone of `buffer`.\\n *\\n * @private\\n * @param {Buffer} buffer The buffer to clone.\\n * @param {boolean} [isDeep] Specify a deep clone.\\n * @returns {Buffer} Returns the cloned buffer.\\n */\\nfunction cloneBuffer(buffer, isDeep) {\\n if (isDeep) {\\n return buffer.slice();\\n }\\n var result = new buffer.constructor(buffer.length);\\n buffer.copy(result);\\n return result;\\n}\\n/**\\n * Creates a clone of `arrayBuffer`.\\n *\\n * @private\\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\\n * @returns {ArrayBuffer} Returns the cloned array buffer.\\n */\\nfunction cloneArrayBuffer(arrayBuffer) {\\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\\n return result;\\n}\\n/**\\n * Creates a clone of `dataView`.\\n *\\n * @private\\n * @param {Object} dataView The data view to clone.\\n * @param {boolean} [isDeep] Specify a deep clone.\\n * @returns {Object} Returns the cloned data view.\\n */\\nfunction cloneDataView(dataView, isDeep) {\\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\\n}\\n/**\\n * Creates a clone of `map`.\\n *\\n * @private\\n * @param {Object} map The map to clone.\\n * @param {Function} cloneFunc The function to clone values.\\n * @param {boolean} [isDeep] Specify a deep clone.\\n * @returns {Object} Returns the cloned map.\\n */\\nfunction cloneMap(map, isDeep, cloneFunc) {\\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\\n return arrayReduce(array, addMapEntry, new map.constructor);\\n}\\n/**\\n * Creates a clone of `regexp`.\\n *\\n * @private\\n * @param {Object} regexp The regexp to clone.\\n * @returns {Object} Returns the cloned regexp.\\n */\\nfunction cloneRegExp(regexp) {\\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\\n result.lastIndex = regexp.lastIndex;\\n return result;\\n}\\n/**\\n * Creates a clone of `set`.\\n *\\n * @private\\n * @param {Object} set The set to clone.\\n * @param {Function} cloneFunc The function to clone values.\\n * @param {boolean} [isDeep] Specify a deep clone.\\n * @returns {Object} Returns the cloned set.\\n */\\nfunction cloneSet(set, isDeep, cloneFunc) {\\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\\n return arrayReduce(array, addSetEntry, new set.constructor);\\n}\\n/**\\n * Creates a clone of the `symbol` object.\\n *\\n * @private\\n * @param {Object} symbol The symbol object to clone.\\n * @returns {Object} Returns the cloned symbol object.\\n */\\nfunction cloneSymbol(symbol) {\\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\\n}\\n/**\\n * Creates a clone of `typedArray`.\\n *\\n * @private\\n * @param {Object} typedArray The typed array to clone.\\n * @param {boolean} [isDeep] Specify a deep clone.\\n * @returns {Object} Returns the cloned typed array.\\n */\\nfunction cloneTypedArray(typedArray, isDeep) {\\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\\n}\\n/**\\n * Copies the values of `source` to `array`.\\n *\\n * @private\\n * @param {Array} source The array to copy values from.\\n * @param {Array} [array=[]] The array to copy values to.\\n * @returns {Array} Returns `array`.\\n */\\nfunction copyArray(source, array) {\\n var index = -1, length = source.length;\\n array || (array = Array(length));\\n while (++index < length) {\\n array[index] = source[index];\\n }\\n return array;\\n}\\n/**\\n * Copies properties of `source` to `object`.\\n *\\n * @private\\n * @param {Object} source The object to copy properties from.\\n * @param {Array} props The property identifiers to copy.\\n * @param {Object} [object={}] The object to copy properties to.\\n * @param {Function} [customizer] The function to customize copied values.\\n * @returns {Object} Returns `object`.\\n */\\nfunction copyObject(source, props, object, customizer) {\\n object || (object = {});\\n var index = -1, length = props.length;\\n while (++index < length) {\\n var key = props[index];\\n var newValue = customizer\\n ? customizer(object[key], source[key], key, object, source)\\n : undefined;\\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\\n }\\n return object;\\n}\\n/**\\n * Copies own symbol properties of `source` to `object`.\\n *\\n * @private\\n * @param {Object} source The object to copy symbols from.\\n * @param {Object} [object={}] The object to copy symbols to.\\n * @returns {Object} Returns `object`.\\n */\\nfunction copySymbols(source, object) {\\n return copyObject(source, getSymbols(source), object);\\n}\\n/**\\n * Creates an array of own enumerable property names and symbols of `object`.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @returns {Array} Returns the array of property names and symbols.\\n */\\nfunction getAllKeys(object) {\\n return baseGetAllKeys(object, keys, getSymbols);\\n}\\n/**\\n * Gets the data for `map`.\\n *\\n * @private\\n * @param {Object} map The map to query.\\n * @param {string} key The reference key.\\n * @returns {*} Returns the map data.\\n */\\nfunction getMapData(map, key) {\\n var data = map.__data__;\\n return isKeyable(key)\\n ? data[typeof key == 'string' ? 'string' : 'hash']\\n : data.map;\\n}\\n/**\\n * Gets the native function at `key` of `object`.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @param {string} key The key of the method to get.\\n * @returns {*} Returns the function if it's native, else `undefined`.\\n */\\nfunction getNative(object, key) {\\n var value = getValue(object, key);\\n return baseIsNative(value) ? value : undefined;\\n}\\n/**\\n * Creates an array of the own enumerable symbol properties of `object`.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @returns {Array} Returns the array of symbols.\\n */\\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\\n/**\\n * Gets the `toStringTag` of `value`.\\n *\\n * @private\\n * @param {*} value The value to query.\\n * @returns {string} Returns the `toStringTag`.\\n */\\nvar getTag = baseGetTag;\\n// Fallback for data views, maps, sets, and weak maps in IE 11,\\n// for data views in Edge < 14, and promises in Node.js.\\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\\n (Map && getTag(new Map) != mapTag) ||\\n (Promise$1 && getTag(Promise$1.resolve()) != promiseTag) ||\\n (Set && getTag(new Set) != setTag) ||\\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\\n getTag = function (value) {\\n var result = objectToString.call(value), Ctor = result == objectTag ? value.constructor : undefined, ctorString = Ctor ? toSource(Ctor) : undefined;\\n if (ctorString) {\\n switch (ctorString) {\\n case dataViewCtorString:\\n return dataViewTag;\\n case mapCtorString:\\n return mapTag;\\n case promiseCtorString:\\n return promiseTag;\\n case setCtorString:\\n return setTag;\\n case weakMapCtorString:\\n return weakMapTag;\\n }\\n }\\n return result;\\n };\\n}\\n/**\\n * Initializes an array clone.\\n *\\n * @private\\n * @param {Array} array The array to clone.\\n * @returns {Array} Returns the initialized clone.\\n */\\nfunction initCloneArray(array) {\\n var length = array.length, result = array.constructor(length);\\n // Add properties assigned by `RegExp#exec`.\\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\\n result.index = array.index;\\n result.input = array.input;\\n }\\n return result;\\n}\\n/**\\n * Initializes an object clone.\\n *\\n * @private\\n * @param {Object} object The object to clone.\\n * @returns {Object} Returns the initialized clone.\\n */\\nfunction initCloneObject(object) {\\n return (typeof object.constructor == 'function' && !isPrototype(object))\\n ? baseCreate(getPrototype(object))\\n : {};\\n}\\n/**\\n * Initializes an object clone based on its `toStringTag`.\\n *\\n * **Note:** This function only supports cloning values with tags of\\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\\n *\\n * @private\\n * @param {Object} object The object to clone.\\n * @param {string} tag The `toStringTag` of the object to clone.\\n * @param {Function} cloneFunc The function to clone values.\\n * @param {boolean} [isDeep] Specify a deep clone.\\n * @returns {Object} Returns the initialized clone.\\n */\\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\\n var Ctor = object.constructor;\\n switch (tag) {\\n case arrayBufferTag:\\n return cloneArrayBuffer(object);\\n case boolTag:\\n case dateTag:\\n return new Ctor(+object);\\n case dataViewTag:\\n return cloneDataView(object, isDeep);\\n case float32Tag:\\n case float64Tag:\\n case int8Tag:\\n case int16Tag:\\n case int32Tag:\\n case uint8Tag:\\n case uint8ClampedTag:\\n case uint16Tag:\\n case uint32Tag:\\n return cloneTypedArray(object, isDeep);\\n case mapTag:\\n return cloneMap(object, isDeep, cloneFunc);\\n case numberTag:\\n case stringTag:\\n return new Ctor(object);\\n case regexpTag:\\n return cloneRegExp(object);\\n case setTag:\\n return cloneSet(object, isDeep, cloneFunc);\\n case symbolTag:\\n return cloneSymbol(object);\\n }\\n}\\n/**\\n * Checks if `value` is a valid array-like index.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\\n */\\nfunction isIndex(value, length) {\\n length = length == null ? MAX_SAFE_INTEGER : length;\\n return !!length &&\\n (typeof value == 'number' || reIsUint.test(value)) &&\\n (value > -1 && value % 1 == 0 && value < length);\\n}\\n/**\\n * Checks if `value` is suitable for use as unique object key.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\\n */\\nfunction isKeyable(value) {\\n var type = typeof value;\\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\\n ? (value !== '__proto__')\\n : (value === null);\\n}\\n/**\\n * Checks if `func` has its source masked.\\n *\\n * @private\\n * @param {Function} func The function to check.\\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\\n */\\nfunction isMasked(func) {\\n return !!maskSrcKey && (maskSrcKey in func);\\n}\\n/**\\n * Checks if `value` is likely a prototype object.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\\n */\\nfunction isPrototype(value) {\\n var Ctor = value && value.constructor, proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\\n return value === proto;\\n}\\n/**\\n * Converts `func` to its source code.\\n *\\n * @private\\n * @param {Function} func The function to process.\\n * @returns {string} Returns the source code.\\n */\\nfunction toSource(func) {\\n if (func != null) {\\n try {\\n return funcToString.call(func);\\n }\\n catch (e) {\\n }\\n try {\\n return (\\\"\\\".concat(func));\\n }\\n catch (e) {\\n }\\n }\\n return '';\\n}\\n/**\\n * This method is like `_.clone` except that it recursively clones `value`.\\n *\\n * @static\\n * @memberOf _\\n * @since 1.0.0\\n * @category Lang\\n * @param {*} value The value to recursively clone.\\n * @returns {*} Returns the deep cloned value.\\n * @see _.clone\\n * @example\\n *\\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\\n *\\n * var deep = _.cloneDeep(objects);\\n * console.log(deep[0] === objects[0]);\\n * // => false\\n */\\nfunction cloneDeep(value) {\\n return baseClone(value, true, true);\\n}\\n/**\\n * Performs a\\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\\n * comparison between two values to determine if they are equivalent.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to compare.\\n * @param {*} other The other value to compare.\\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\\n * @example\\n *\\n * var object = { 'a': 1 };\\n * var other = { 'a': 1 };\\n *\\n * _.eq(object, object);\\n * // => true\\n *\\n * _.eq(object, other);\\n * // => false\\n *\\n * _.eq('a', 'a');\\n * // => true\\n *\\n * _.eq('a', Object('a'));\\n * // => false\\n *\\n * _.eq(NaN, NaN);\\n * // => true\\n */\\nfunction eq(value, other) {\\n return value === other || (value !== value && other !== other);\\n}\\n/**\\n * Checks if `value` is likely an `arguments` object.\\n *\\n * @static\\n * @memberOf _\\n * @since 0.1.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\\n * else `false`.\\n * @example\\n *\\n * _.isArguments(function() { return arguments; }());\\n * // => true\\n *\\n * _.isArguments([1, 2, 3]);\\n * // => false\\n */\\nfunction isArguments(value) {\\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\\n}\\n/**\\n * Checks if `value` is classified as an `Array` object.\\n *\\n * @static\\n * @memberOf _\\n * @since 0.1.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\\n * @example\\n *\\n * _.isArray([1, 2, 3]);\\n * // => true\\n *\\n * _.isArray(document.body.children);\\n * // => false\\n *\\n * _.isArray('abc');\\n * // => false\\n *\\n * _.isArray(_.noop);\\n * // => false\\n */\\nvar isArray = Array.isArray;\\n/**\\n * Checks if `value` is array-like. A value is considered array-like if it's\\n * not a function and has a `value.length` that's an integer greater than or\\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\\n * @example\\n *\\n * _.isArrayLike([1, 2, 3]);\\n * // => true\\n *\\n * _.isArrayLike(document.body.children);\\n * // => true\\n *\\n * _.isArrayLike('abc');\\n * // => true\\n *\\n * _.isArrayLike(_.noop);\\n * // => false\\n */\\nfunction isArrayLike(value) {\\n return value != null && isLength(value.length) && !isFunction(value);\\n}\\n/**\\n * This method is like `_.isArrayLike` except that it also checks if `value`\\n * is an object.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an array-like object,\\n * else `false`.\\n * @example\\n *\\n * _.isArrayLikeObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isArrayLikeObject(document.body.children);\\n * // => true\\n *\\n * _.isArrayLikeObject('abc');\\n * // => false\\n *\\n * _.isArrayLikeObject(_.noop);\\n * // => false\\n */\\nfunction isArrayLikeObject(value) {\\n return isObjectLike(value) && isArrayLike(value);\\n}\\n/**\\n * Checks if `value` is a buffer.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.3.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\\n * @example\\n *\\n * _.isBuffer(new Buffer(2));\\n * // => true\\n *\\n * _.isBuffer(new Uint8Array(2));\\n * // => false\\n */\\nvar isBuffer = nativeIsBuffer || stubFalse;\\n/**\\n * Checks if `value` is classified as a `Function` object.\\n *\\n * @static\\n * @memberOf _\\n * @since 0.1.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\\n * @example\\n *\\n * _.isFunction(_);\\n * // => true\\n *\\n * _.isFunction(/abc/);\\n * // => false\\n */\\nfunction isFunction(value) {\\n // The use of `Object#toString` avoids issues with the `typeof` operator\\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\\n var tag = isObject(value) ? objectToString.call(value) : '';\\n return tag == funcTag || tag == genTag;\\n}\\n/**\\n * Checks if `value` is a valid array-like length.\\n *\\n * **Note:** This method is loosely based on\\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\\n * @example\\n *\\n * _.isLength(3);\\n * // => true\\n *\\n * _.isLength(Number.MIN_VALUE);\\n * // => false\\n *\\n * _.isLength(Infinity);\\n * // => false\\n *\\n * _.isLength('3');\\n * // => false\\n */\\nfunction isLength(value) {\\n return typeof value == 'number' &&\\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\\n}\\n/**\\n * Checks if `value` is the\\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\\n *\\n * @static\\n * @memberOf _\\n * @since 0.1.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\\n * @example\\n *\\n * _.isObject({});\\n * // => true\\n *\\n * _.isObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isObject(_.noop);\\n * // => true\\n *\\n * _.isObject(null);\\n * // => false\\n */\\nfunction isObject(value) {\\n var type = typeof value;\\n return !!value && (type == 'object' || type == 'function');\\n}\\n/**\\n * Checks if `value` is object-like. A value is object-like if it's not `null`\\n * and has a `typeof` result of \\\"object\\\".\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\\n * @example\\n *\\n * _.isObjectLike({});\\n * // => true\\n *\\n * _.isObjectLike([1, 2, 3]);\\n * // => true\\n *\\n * _.isObjectLike(_.noop);\\n * // => false\\n *\\n * _.isObjectLike(null);\\n * // => false\\n */\\nfunction isObjectLike(value) {\\n return !!value && typeof value == 'object';\\n}\\n/**\\n * Creates an array of the own enumerable property names of `object`.\\n *\\n * **Note:** Non-object values are coerced to objects. See the\\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\\n * for more details.\\n *\\n * @static\\n * @since 0.1.0\\n * @memberOf _\\n * @category Object\\n * @param {Object} object The object to query.\\n * @returns {Array} Returns the array of property names.\\n * @example\\n *\\n * function Foo() {\\n * this.a = 1;\\n * this.b = 2;\\n * }\\n *\\n * Foo.prototype.c = 3;\\n *\\n * _.keys(new Foo);\\n * // => ['a', 'b'] (iteration order is not guaranteed)\\n *\\n * _.keys('hi');\\n * // => ['0', '1']\\n */\\nfunction keys(object) {\\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\\n}\\n/**\\n * This method returns a new empty array.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.13.0\\n * @category Util\\n * @returns {Array} Returns the new empty array.\\n * @example\\n *\\n * var arrays = _.times(2, _.stubArray);\\n *\\n * console.log(arrays);\\n * // => [[], []]\\n *\\n * console.log(arrays[0] === arrays[1]);\\n * // => false\\n */\\nfunction stubArray() {\\n return [];\\n}\\n/**\\n * This method returns `false`.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.13.0\\n * @category Util\\n * @returns {boolean} Returns `false`.\\n * @example\\n *\\n * _.times(2, _.stubFalse);\\n * // => [false, false]\\n */\\nfunction stubFalse() {\\n return false;\\n}\\n\\nexports.cloneDeep = cloneDeep;\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \\\"../node_modules/webpack/buildin/global.js\\\"), __webpack_require__(/*! ./../../../../webpack/buildin/module.js */ \\\"../node_modules/webpack/buildin/module.js\\\")(module)))\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/internal/utils/cloneDeep.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/internal/utils/dataStructureUtils.cjs\":\n/*!*********************************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/internal/utils/dataStructureUtils.cjs ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, '__esModule', { value: true });\\n\\n/**\\n * Sort a map by key\\n * @private\\n * @param map \\n * @Return array of map's values sorted by key\\n */\\nfunction mapToSortedArray(map, flags) {\\n var array = Array.from(map.entries());\\n // objects from the Array.from() method above are stored in array of arrays:\\n // [[qualifierKey, QualifierObj], [qualifierKey, QualifierObj]]\\n // Flags is an array of FlagQualifierObj\\n // We need to convert it to the same form: [flagQualifier] => ['fl', flagQualifier]\\n flags.forEach(function (flag) {\\n array.push(['fl', flag]); // push ['fl', flagQualifier]\\n });\\n return array.sort().map(function (v) { return v[1]; });\\n}\\n/**\\n * Checks if `value` is a string.\\n * @private\\n * @param {*} value The value to check.\\n * @return {boolean} `true` if `value` is a string, else `false`.\\n */\\nfunction isString(value) {\\n return (typeof value === 'string' || value instanceof String);\\n}\\n\\nexports.isString = isString;\\nexports.mapToSortedArray = mapToSortedArray;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/internal/utils/dataStructureUtils.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs\":\n/*!******************************************************************!*\\\n !*** ../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/******************************************************************************\\r\\nCopyright (c) Microsoft Corporation.\\r\\n\\r\\nPermission to use, copy, modify, and/or distribute this software for any\\r\\npurpose with or without fee is hereby granted.\\r\\n\\r\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\\r\\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\\r\\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\\r\\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\\r\\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\\r\\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\\r\\nPERFORMANCE OF THIS SOFTWARE.\\r\\n***************************************************************************** */\\r\\n/* global Reflect, Promise */\\r\\n\\r\\nvar extendStatics = function(d, b) {\\r\\n extendStatics = Object.setPrototypeOf ||\\r\\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\\r\\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\\r\\n return extendStatics(d, b);\\r\\n};\\r\\n\\r\\nfunction __extends(d, b) {\\r\\n if (typeof b !== \\\"function\\\" && b !== null)\\r\\n throw new TypeError(\\\"Class extends value \\\" + String(b) + \\\" is not a constructor or null\\\");\\r\\n extendStatics(d, b);\\r\\n function __() { this.constructor = d; }\\r\\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\\r\\n}\\r\\n\\r\\nexports.__assign = function() {\\r\\n exports.__assign = Object.assign || function __assign(t) {\\r\\n for (var s, i = 1, n = arguments.length; i < n; i++) {\\r\\n s = arguments[i];\\r\\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\\r\\n }\\r\\n return t;\\r\\n };\\r\\n return exports.__assign.apply(this, arguments);\\r\\n};\\n\\nexports.__extends = __extends;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@cloudinary/url-gen/tslib.es6-bcbd7c13.cjs?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\":\n/*!*************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/byte-helpers.js ***!\n \\*************************************************************/\n/*! exports provided: countBits, countBytes, padStart, isTypedArray, toUint8, toHexString, toBinaryString, ENDIANNESS, IS_BIG_ENDIAN, IS_LITTLE_ENDIAN, bytesToNumber, numberToBytes, bytesToString, stringToBytes, concatTypedArrays, bytesMatch, sliceBytes, reverseBytes */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"countBits\\\", function() { return countBits; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"countBytes\\\", function() { return countBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"padStart\\\", function() { return padStart; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isTypedArray\\\", function() { return isTypedArray; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"toUint8\\\", function() { return toUint8; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"toHexString\\\", function() { return toHexString; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"toBinaryString\\\", function() { return toBinaryString; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"ENDIANNESS\\\", function() { return ENDIANNESS; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"IS_BIG_ENDIAN\\\", function() { return IS_BIG_ENDIAN; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"IS_LITTLE_ENDIAN\\\", function() { return IS_LITTLE_ENDIAN; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"bytesToNumber\\\", function() { return bytesToNumber; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"numberToBytes\\\", function() { return numberToBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"bytesToString\\\", function() { return bytesToString; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"stringToBytes\\\", function() { return stringToBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"concatTypedArrays\\\", function() { return concatTypedArrays; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"bytesMatch\\\", function() { return bytesMatch; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"sliceBytes\\\", function() { return sliceBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"reverseBytes\\\", function() { return reverseBytes; });\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(global_window__WEBPACK_IMPORTED_MODULE_0__);\\n // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\\n\\nvar repeat = function repeat(str, len) {\\n var acc = '';\\n\\n while (len--) {\\n acc += str;\\n }\\n\\n return acc;\\n}; // count the number of bits it would take to represent a number\\n// we used to do this with log2 but BigInt does not support builtin math\\n// Math.ceil(log2(x));\\n\\n\\nvar countBits = function countBits(x) {\\n return x.toString(2).length;\\n}; // count the number of whole bytes it would take to represent a number\\n\\nvar countBytes = function countBytes(x) {\\n return Math.ceil(countBits(x) / 8);\\n};\\nvar padStart = function padStart(b, len, str) {\\n if (str === void 0) {\\n str = ' ';\\n }\\n\\n return (repeat(str, len) + b.toString()).slice(-len);\\n};\\nvar isTypedArray = function isTypedArray(obj) {\\n return ArrayBuffer.isView(obj);\\n};\\nvar toUint8 = function toUint8(bytes) {\\n if (bytes instanceof Uint8Array) {\\n return bytes;\\n }\\n\\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\\n // any non-number or NaN leads to empty uint8array\\n // eslint-disable-next-line\\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\\n bytes = 0;\\n } else {\\n bytes = [bytes];\\n }\\n }\\n\\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\\n};\\nvar toHexString = function toHexString(bytes) {\\n bytes = toUint8(bytes);\\n var str = '';\\n\\n for (var i = 0; i < bytes.length; i++) {\\n str += padStart(bytes[i].toString(16), 2, '0');\\n }\\n\\n return str;\\n};\\nvar toBinaryString = function toBinaryString(bytes) {\\n bytes = toUint8(bytes);\\n var str = '';\\n\\n for (var i = 0; i < bytes.length; i++) {\\n str += padStart(bytes[i].toString(2), 8, '0');\\n }\\n\\n return str;\\n};\\nvar BigInt = global_window__WEBPACK_IMPORTED_MODULE_0___default.a.BigInt || Number;\\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\\nvar ENDIANNESS = function () {\\n var a = new Uint16Array([0xFFCC]);\\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\\n\\n if (b[0] === 0xFF) {\\n return 'big';\\n }\\n\\n if (b[0] === 0xCC) {\\n return 'little';\\n }\\n\\n return 'unknown';\\n}();\\nvar IS_BIG_ENDIAN = ENDIANNESS === 'big';\\nvar IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\\nvar bytesToNumber = function bytesToNumber(bytes, _temp) {\\n var _ref = _temp === void 0 ? {} : _temp,\\n _ref$signed = _ref.signed,\\n signed = _ref$signed === void 0 ? false : _ref$signed,\\n _ref$le = _ref.le,\\n le = _ref$le === void 0 ? false : _ref$le;\\n\\n bytes = toUint8(bytes);\\n var fn = le ? 'reduce' : 'reduceRight';\\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\\n var number = obj.call(bytes, function (total, byte, i) {\\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\\n return total + BigInt(byte) * BYTE_TABLE[exponent];\\n }, BigInt(0));\\n\\n if (signed) {\\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\\n number = BigInt(number);\\n\\n if (number > max) {\\n number -= max;\\n number -= max;\\n number -= BigInt(2);\\n }\\n }\\n\\n return Number(number);\\n};\\nvar numberToBytes = function numberToBytes(number, _temp2) {\\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\\n _ref2$le = _ref2.le,\\n le = _ref2$le === void 0 ? false : _ref2$le;\\n\\n // eslint-disable-next-line\\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\\n number = 0;\\n }\\n\\n number = BigInt(number);\\n var byteCount = countBytes(number);\\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\\n\\n for (var i = 0; i < byteCount; i++) {\\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\\n\\n if (number < 0) {\\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\\n bytes[byteIndex] -= i === 0 ? 1 : 2;\\n }\\n }\\n\\n return bytes;\\n};\\nvar bytesToString = function bytesToString(bytes) {\\n if (!bytes) {\\n return '';\\n } // TODO: should toUint8 handle cases where we only have 8 bytes\\n // but report more since this is a Uint16+ Array?\\n\\n\\n bytes = Array.prototype.slice.call(bytes);\\n var string = String.fromCharCode.apply(null, toUint8(bytes));\\n\\n try {\\n return decodeURIComponent(escape(string));\\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\\n // or full non string data. Just return the potentially garbled string.\\n }\\n\\n return string;\\n};\\nvar stringToBytes = function stringToBytes(string, stringIsBytes) {\\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\\n string = string.toString();\\n }\\n\\n if (typeof string !== 'string') {\\n return new Uint8Array();\\n } // If the string already is bytes, we don't have to do this\\n // otherwise we do this so that we split multi length characters\\n // into individual bytes\\n\\n\\n if (!stringIsBytes) {\\n string = unescape(encodeURIComponent(string));\\n }\\n\\n var view = new Uint8Array(string.length);\\n\\n for (var i = 0; i < string.length; i++) {\\n view[i] = string.charCodeAt(i);\\n }\\n\\n return view;\\n};\\nvar concatTypedArrays = function concatTypedArrays() {\\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\\n buffers[_key] = arguments[_key];\\n }\\n\\n buffers = buffers.filter(function (b) {\\n return b && (b.byteLength || b.length) && typeof b !== 'string';\\n });\\n\\n if (buffers.length <= 1) {\\n // for 0 length we will return empty uint8\\n // for 1 length we return the first uint8\\n return toUint8(buffers[0]);\\n }\\n\\n var totalLen = buffers.reduce(function (total, buf, i) {\\n return total + (buf.byteLength || buf.length);\\n }, 0);\\n var tempBuffer = new Uint8Array(totalLen);\\n var offset = 0;\\n buffers.forEach(function (buf) {\\n buf = toUint8(buf);\\n tempBuffer.set(buf, offset);\\n offset += buf.byteLength;\\n });\\n return tempBuffer;\\n};\\n/**\\n * Check if the bytes \\\"b\\\" are contained within bytes \\\"a\\\".\\n *\\n * @param {Uint8Array|Array} a\\n * Bytes to check in\\n *\\n * @param {Uint8Array|Array} b\\n * Bytes to check for\\n *\\n * @param {Object} options\\n * options\\n *\\n * @param {Array|Uint8Array} [offset=0]\\n * offset to use when looking at bytes in a\\n *\\n * @param {Array|Uint8Array} [mask=[]]\\n * mask to use on bytes before comparison.\\n *\\n * @return {boolean}\\n * If all bytes in b are inside of a, taking into account\\n * bit masks.\\n */\\n\\nvar bytesMatch = function bytesMatch(a, b, _temp3) {\\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\\n _ref3$offset = _ref3.offset,\\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\\n _ref3$mask = _ref3.mask,\\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\\n\\n a = toUint8(a);\\n b = toUint8(b); // ie 11 does not support uint8 every\\n\\n var fn = b.every ? b.every : Array.prototype.every;\\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\\n fn.call(b, function (bByte, i) {\\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\\n return bByte === aByte;\\n });\\n};\\nvar sliceBytes = function sliceBytes(src, start, end) {\\n if (Uint8Array.prototype.slice) {\\n return Uint8Array.prototype.slice.call(src, start, end);\\n }\\n\\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\\n};\\nvar reverseBytes = function reverseBytes(src) {\\n if (src.reverse) {\\n return src.reverse();\\n }\\n\\n return Array.prototype.reverse.call(src);\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/byte-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/codec-helpers.js\":\n/*!**************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/codec-helpers.js ***!\n \\**************************************************************/\n/*! exports provided: getAv1Codec, getAvcCodec, getHvcCodec */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getAv1Codec\\\", function() { return getAv1Codec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getAvcCodec\\\", function() { return getAvcCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getHvcCodec\\\", function() { return getHvcCodec; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n // https://aomediacodec.github.io/av1-isobmff/#av1codecconfigurationbox-syntax\\n// https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#AV1\\n\\nvar getAv1Codec = function getAv1Codec(bytes) {\\n var codec = '';\\n var profile = bytes[1] >>> 3;\\n var level = bytes[1] & 0x1F;\\n var tier = bytes[2] >>> 7;\\n var highBitDepth = (bytes[2] & 0x40) >> 6;\\n var twelveBit = (bytes[2] & 0x20) >> 5;\\n var monochrome = (bytes[2] & 0x10) >> 4;\\n var chromaSubsamplingX = (bytes[2] & 0x08) >> 3;\\n var chromaSubsamplingY = (bytes[2] & 0x04) >> 2;\\n var chromaSamplePosition = bytes[2] & 0x03;\\n codec += profile + \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(level, 2, '0');\\n\\n if (tier === 0) {\\n codec += 'M';\\n } else if (tier === 1) {\\n codec += 'H';\\n }\\n\\n var bitDepth;\\n\\n if (profile === 2 && highBitDepth) {\\n bitDepth = twelveBit ? 12 : 10;\\n } else {\\n bitDepth = highBitDepth ? 10 : 8;\\n }\\n\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(bitDepth, 2, '0'); // TODO: can we parse color range??\\n\\n codec += \\\".\\\" + monochrome;\\n codec += \\\".\\\" + chromaSubsamplingX + chromaSubsamplingY + chromaSamplePosition;\\n return codec;\\n};\\nvar getAvcCodec = function getAvcCodec(bytes) {\\n var profileId = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toHexString\\\"])(bytes[1]);\\n var constraintFlags = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toHexString\\\"])(bytes[2] & 0xFC);\\n var levelId = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toHexString\\\"])(bytes[3]);\\n return \\\"\\\" + profileId + constraintFlags + levelId;\\n};\\nvar getHvcCodec = function getHvcCodec(bytes) {\\n var codec = '';\\n var profileSpace = bytes[1] >> 6;\\n var profileId = bytes[1] & 0x1F;\\n var tierFlag = (bytes[1] & 0x20) >> 5;\\n var profileCompat = bytes.subarray(2, 6);\\n var constraintIds = bytes.subarray(6, 12);\\n var levelId = bytes[12];\\n\\n if (profileSpace === 1) {\\n codec += 'A';\\n } else if (profileSpace === 2) {\\n codec += 'B';\\n } else if (profileSpace === 3) {\\n codec += 'C';\\n }\\n\\n codec += profileId + \\\".\\\"; // ffmpeg does this in big endian\\n\\n var profileCompatVal = parseInt(Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toBinaryString\\\"])(profileCompat).split('').reverse().join(''), 2); // apple does this in little endian...\\n\\n if (profileCompatVal > 255) {\\n profileCompatVal = parseInt(Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toBinaryString\\\"])(profileCompat), 2);\\n }\\n\\n codec += profileCompatVal.toString(16) + \\\".\\\";\\n\\n if (tierFlag === 0) {\\n codec += 'L';\\n } else {\\n codec += 'H';\\n }\\n\\n codec += levelId;\\n var constraints = '';\\n\\n for (var i = 0; i < constraintIds.length; i++) {\\n var v = constraintIds[i];\\n\\n if (v) {\\n if (constraints) {\\n constraints += '.';\\n }\\n\\n constraints += v.toString(16);\\n }\\n }\\n\\n if (constraints) {\\n codec += \\\".\\\" + constraints;\\n }\\n\\n return codec;\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/codec-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/codecs.js\":\n/*!*******************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/codecs.js ***!\n \\*******************************************************/\n/*! exports provided: translateLegacyCodec, translateLegacyCodecs, mapLegacyAvcCodecs, parseCodecs, codecsFromDefault, isVideoCodec, isAudioCodec, isTextCodec, getMimeForCodec, browserSupportsCodec, muxerSupportsCodec, DEFAULT_AUDIO_CODEC, DEFAULT_VIDEO_CODEC */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"translateLegacyCodec\\\", function() { return translateLegacyCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"translateLegacyCodecs\\\", function() { return translateLegacyCodecs; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"mapLegacyAvcCodecs\\\", function() { return mapLegacyAvcCodecs; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseCodecs\\\", function() { return parseCodecs; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"codecsFromDefault\\\", function() { return codecsFromDefault; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isVideoCodec\\\", function() { return isVideoCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isAudioCodec\\\", function() { return isAudioCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isTextCodec\\\", function() { return isTextCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getMimeForCodec\\\", function() { return getMimeForCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"browserSupportsCodec\\\", function() { return browserSupportsCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"muxerSupportsCodec\\\", function() { return muxerSupportsCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DEFAULT_AUDIO_CODEC\\\", function() { return DEFAULT_AUDIO_CODEC; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DEFAULT_VIDEO_CODEC\\\", function() { return DEFAULT_VIDEO_CODEC; });\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(global_window__WEBPACK_IMPORTED_MODULE_0__);\\n\\nvar regexs = {\\n // to determine mime types\\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\\n // to determine if a codec is audio or video\\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\\n text: /^(stpp.ttml.im1t)/,\\n // mux.js support regex\\n muxerVideo: /^(avc0?1)/,\\n muxerAudio: /^(mp4a)/,\\n // match nothing as muxer does not support text right now.\\n // there cannot never be a character before the start of a string\\n // so this matches nothing.\\n muxerText: /a^/\\n};\\nvar mediaTypes = ['video', 'audio', 'text'];\\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\\n/**\\n * Replace the old apple-style `avc1.
.
` codec string with the standard\\n * `avc1.`\\n *\\n * @param {string} codec\\n * Codec string to translate\\n * @return {string}\\n * The translated codec string\\n */\\n\\nvar translateLegacyCodec = function translateLegacyCodec(codec) {\\n if (!codec) {\\n return codec;\\n }\\n\\n return codec.replace(/avc1\\\\.(\\\\d+)\\\\.(\\\\d+)/i, function (orig, profile, avcLevel) {\\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\\n return 'avc1.' + profileHex + '00' + avcLevelHex;\\n });\\n};\\n/**\\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\\n * `avc1.`\\n *\\n * @param {string[]} codecs\\n * An array of codec strings to translate\\n * @return {string[]}\\n * The translated array of codec strings\\n */\\n\\nvar translateLegacyCodecs = function translateLegacyCodecs(codecs) {\\n return codecs.map(translateLegacyCodec);\\n};\\n/**\\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\\n * standard `avc1.`.\\n *\\n * @param {string} codecString\\n * The codec string\\n * @return {string}\\n * The codec string with old apple-style codecs replaced\\n *\\n * @private\\n */\\n\\nvar mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\\n return codecString.replace(/avc1\\\\.(\\\\d+)\\\\.(\\\\d+)/i, function (match) {\\n return translateLegacyCodecs([match])[0];\\n });\\n};\\n/**\\n * @typedef {Object} ParsedCodecInfo\\n * @property {number} codecCount\\n * Number of codecs parsed\\n * @property {string} [videoCodec]\\n * Parsed video codec (if found)\\n * @property {string} [videoObjectTypeIndicator]\\n * Video object type indicator (if found)\\n * @property {string|null} audioProfile\\n * Audio profile\\n */\\n\\n/**\\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\\n * object type indicator, and the audio profile.\\n *\\n * @param {string} [codecString]\\n * The codec string to parse\\n * @return {ParsedCodecInfo}\\n * Parsed codec info\\n */\\n\\nvar parseCodecs = function parseCodecs(codecString) {\\n if (codecString === void 0) {\\n codecString = '';\\n }\\n\\n var codecs = codecString.split(',');\\n var result = [];\\n codecs.forEach(function (codec) {\\n codec = codec.trim();\\n var codecType;\\n mediaTypes.forEach(function (name) {\\n var match = regexs[name].exec(codec.toLowerCase());\\n\\n if (!match || match.length <= 1) {\\n return;\\n }\\n\\n codecType = name; // maintain codec case\\n\\n var type = codec.substring(0, match[1].length);\\n var details = codec.replace(type, '');\\n result.push({\\n type: type,\\n details: details,\\n mediaType: name\\n });\\n });\\n\\n if (!codecType) {\\n result.push({\\n type: codec,\\n details: '',\\n mediaType: 'unknown'\\n });\\n }\\n });\\n return result;\\n};\\n/**\\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\\n * a default alternate audio playlist for the provided audio group.\\n *\\n * @param {Object} master\\n * The master playlist\\n * @param {string} audioGroupId\\n * ID of the audio group for which to find the default codec info\\n * @return {ParsedCodecInfo}\\n * Parsed codec info\\n */\\n\\nvar codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\\n return null;\\n }\\n\\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\\n\\n if (!audioGroup) {\\n return null;\\n }\\n\\n for (var name in audioGroup) {\\n var audioType = audioGroup[name];\\n\\n if (audioType.default && audioType.playlists) {\\n // codec should be the same for all playlists within the audio type\\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\\n }\\n }\\n\\n return null;\\n};\\nvar isVideoCodec = function isVideoCodec(codec) {\\n if (codec === void 0) {\\n codec = '';\\n }\\n\\n return regexs.video.test(codec.trim().toLowerCase());\\n};\\nvar isAudioCodec = function isAudioCodec(codec) {\\n if (codec === void 0) {\\n codec = '';\\n }\\n\\n return regexs.audio.test(codec.trim().toLowerCase());\\n};\\nvar isTextCodec = function isTextCodec(codec) {\\n if (codec === void 0) {\\n codec = '';\\n }\\n\\n return regexs.text.test(codec.trim().toLowerCase());\\n};\\nvar getMimeForCodec = function getMimeForCodec(codecString) {\\n if (!codecString || typeof codecString !== 'string') {\\n return;\\n }\\n\\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\\n return translateLegacyCodec(c.trim());\\n }); // default to video type\\n\\n var type = 'video'; // only change to audio type if the only codec we have is\\n // audio\\n\\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\\n type = 'audio';\\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\\n // text uses application/ for now\\n type = 'application';\\n } // default the container to mp4\\n\\n\\n var container = 'mp4'; // every codec must be able to go into the container\\n // for that container to be the correct one\\n\\n if (codecs.every(function (c) {\\n return regexs.mp4.test(c);\\n })) {\\n container = 'mp4';\\n } else if (codecs.every(function (c) {\\n return regexs.webm.test(c);\\n })) {\\n container = 'webm';\\n } else if (codecs.every(function (c) {\\n return regexs.ogg.test(c);\\n })) {\\n container = 'ogg';\\n }\\n\\n return type + \\\"/\\\" + container + \\\";codecs=\\\\\\\"\\\" + codecString + \\\"\\\\\\\"\\\";\\n};\\nvar browserSupportsCodec = function browserSupportsCodec(codecString) {\\n if (codecString === void 0) {\\n codecString = '';\\n }\\n\\n return global_window__WEBPACK_IMPORTED_MODULE_0___default.a.MediaSource && global_window__WEBPACK_IMPORTED_MODULE_0___default.a.MediaSource.isTypeSupported && global_window__WEBPACK_IMPORTED_MODULE_0___default.a.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\\n};\\nvar muxerSupportsCodec = function muxerSupportsCodec(codecString) {\\n if (codecString === void 0) {\\n codecString = '';\\n }\\n\\n return codecString.toLowerCase().split(',').every(function (codec) {\\n codec = codec.trim(); // any match is supported.\\n\\n for (var i = 0; i < upperMediaTypes.length; i++) {\\n var type = upperMediaTypes[i];\\n\\n if (regexs[\\\"muxer\\\" + type].test(codec)) {\\n return true;\\n }\\n }\\n\\n return false;\\n });\\n};\\nvar DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\\nvar DEFAULT_VIDEO_CODEC = 'avc1.4d400d';\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/codecs.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/containers.js\":\n/*!***********************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/containers.js ***!\n \\***********************************************************/\n/*! exports provided: isLikely, detectContainerForBytes, isLikelyFmp4MediaSegment */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isLikely\\\", function() { return isLikely; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"detectContainerForBytes\\\", function() { return detectContainerForBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isLikelyFmp4MediaSegment\\\", function() { return isLikelyFmp4MediaSegment; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n/* harmony import */ var _mp4_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mp4-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/mp4-helpers.js\\\");\\n/* harmony import */ var _ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ebml-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/ebml-helpers.js\\\");\\n/* harmony import */ var _id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./id3-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/id3-helpers.js\\\");\\n/* harmony import */ var _nal_helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nal-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/nal-helpers.js\\\");\\n\\n\\n\\n\\n\\nvar CONSTANTS = {\\n // \\\"webm\\\" string literal in hex\\n 'webm': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x77, 0x65, 0x62, 0x6d]),\\n // \\\"matroska\\\" string literal in hex\\n 'matroska': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x6d, 0x61, 0x74, 0x72, 0x6f, 0x73, 0x6b, 0x61]),\\n // \\\"fLaC\\\" string literal in hex\\n 'flac': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x66, 0x4c, 0x61, 0x43]),\\n // \\\"OggS\\\" string literal in hex\\n 'ogg': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x4f, 0x67, 0x67, 0x53]),\\n // ac-3 sync byte, also works for ec-3 as that is simply a codec\\n // of ac-3\\n 'ac3': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x0b, 0x77]),\\n // \\\"RIFF\\\" string literal in hex used for wav and avi\\n 'riff': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x52, 0x49, 0x46, 0x46]),\\n // \\\"AVI\\\" string literal in hex\\n 'avi': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x41, 0x56, 0x49]),\\n // \\\"WAVE\\\" string literal in hex\\n 'wav': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x57, 0x41, 0x56, 0x45]),\\n // \\\"ftyp3g\\\" string literal in hex\\n '3gp': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x66, 0x74, 0x79, 0x70, 0x33, 0x67]),\\n // \\\"ftyp\\\" string literal in hex\\n 'mp4': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x66, 0x74, 0x79, 0x70]),\\n // \\\"styp\\\" string literal in hex\\n 'fmp4': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x73, 0x74, 0x79, 0x70]),\\n // \\\"ftypqt\\\" string literal in hex\\n 'mov': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x66, 0x74, 0x79, 0x70, 0x71, 0x74]),\\n // moov string literal in hex\\n 'moov': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x6D, 0x6F, 0x6F, 0x76]),\\n // moof string literal in hex\\n 'moof': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x6D, 0x6F, 0x6F, 0x66])\\n};\\nvar _isLikely = {\\n aac: function aac(bytes) {\\n var offset = Object(_id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__[\\\"getId3Offset\\\"])(bytes);\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, [0xFF, 0x10], {\\n offset: offset,\\n mask: [0xFF, 0x16]\\n });\\n },\\n mp3: function mp3(bytes) {\\n var offset = Object(_id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__[\\\"getId3Offset\\\"])(bytes);\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, [0xFF, 0x02], {\\n offset: offset,\\n mask: [0xFF, 0x06]\\n });\\n },\\n webm: function webm(bytes) {\\n var docType = Object(_ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"findEbml\\\"])(bytes, [_ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"EBML_TAGS\\\"].EBML, _ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"EBML_TAGS\\\"].DocType])[0]; // check if DocType EBML tag is webm\\n\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(docType, CONSTANTS.webm);\\n },\\n mkv: function mkv(bytes) {\\n var docType = Object(_ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"findEbml\\\"])(bytes, [_ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"EBML_TAGS\\\"].EBML, _ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"EBML_TAGS\\\"].DocType])[0]; // check if DocType EBML tag is matroska\\n\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(docType, CONSTANTS.matroska);\\n },\\n mp4: function mp4(bytes) {\\n // if this file is another base media file format, it is not mp4\\n if (_isLikely['3gp'](bytes) || _isLikely.mov(bytes)) {\\n return false;\\n } // if this file starts with a ftyp or styp box its mp4\\n\\n\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.mp4, {\\n offset: 4\\n }) || Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.fmp4, {\\n offset: 4\\n })) {\\n return true;\\n } // if this file starts with a moof/moov box its mp4\\n\\n\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.moof, {\\n offset: 4\\n }) || Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.moov, {\\n offset: 4\\n })) {\\n return true;\\n }\\n },\\n mov: function mov(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.mov, {\\n offset: 4\\n });\\n },\\n '3gp': function gp(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS['3gp'], {\\n offset: 4\\n });\\n },\\n ac3: function ac3(bytes) {\\n var offset = Object(_id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__[\\\"getId3Offset\\\"])(bytes);\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.ac3, {\\n offset: offset\\n });\\n },\\n ts: function ts(bytes) {\\n if (bytes.length < 189 && bytes.length >= 1) {\\n return bytes[0] === 0x47;\\n }\\n\\n var i = 0; // check the first 376 bytes for two matching sync bytes\\n\\n while (i + 188 < bytes.length && i < 188) {\\n if (bytes[i] === 0x47 && bytes[i + 188] === 0x47) {\\n return true;\\n }\\n\\n i += 1;\\n }\\n\\n return false;\\n },\\n flac: function flac(bytes) {\\n var offset = Object(_id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__[\\\"getId3Offset\\\"])(bytes);\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.flac, {\\n offset: offset\\n });\\n },\\n ogg: function ogg(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.ogg);\\n },\\n avi: function avi(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.riff) && Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.avi, {\\n offset: 8\\n });\\n },\\n wav: function wav(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.riff) && Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.wav, {\\n offset: 8\\n });\\n },\\n 'h264': function h264(bytes) {\\n // find seq_parameter_set_rbsp\\n return Object(_nal_helpers_js__WEBPACK_IMPORTED_MODULE_4__[\\\"findH264Nal\\\"])(bytes, 7, 3).length;\\n },\\n 'h265': function h265(bytes) {\\n // find video_parameter_set_rbsp or seq_parameter_set_rbsp\\n return Object(_nal_helpers_js__WEBPACK_IMPORTED_MODULE_4__[\\\"findH265Nal\\\"])(bytes, [32, 33], 3).length;\\n }\\n}; // get all the isLikely functions\\n// but make sure 'ts' is above h264 and h265\\n// but below everything else as it is the least specific\\n\\nvar isLikelyTypes = Object.keys(_isLikely) // remove ts, h264, h265\\n.filter(function (t) {\\n return t !== 'ts' && t !== 'h264' && t !== 'h265';\\n}) // add it back to the bottom\\n.concat(['ts', 'h264', 'h265']); // make sure we are dealing with uint8 data.\\n\\nisLikelyTypes.forEach(function (type) {\\n var isLikelyFn = _isLikely[type];\\n\\n _isLikely[type] = function (bytes) {\\n return isLikelyFn(Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes));\\n };\\n}); // export after wrapping\\n\\nvar isLikely = _isLikely; // A useful list of file signatures can be found here\\n// https://en.wikipedia.org/wiki/List_of_file_signatures\\n\\nvar detectContainerForBytes = function detectContainerForBytes(bytes) {\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n\\n for (var i = 0; i < isLikelyTypes.length; i++) {\\n var type = isLikelyTypes[i];\\n\\n if (isLikely[type](bytes)) {\\n return type;\\n }\\n }\\n\\n return '';\\n}; // fmp4 is not a container\\n\\nvar isLikelyFmp4MediaSegment = function isLikelyFmp4MediaSegment(bytes) {\\n return Object(_mp4_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"findBox\\\"])(bytes, ['moof']).length > 0;\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/containers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js\":\n/*!**************************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return decodeB64ToUint8Array; });\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(global_window__WEBPACK_IMPORTED_MODULE_0__);\\n\\n\\nvar atob = function atob(s) {\\n return global_window__WEBPACK_IMPORTED_MODULE_0___default.a.atob ? global_window__WEBPACK_IMPORTED_MODULE_0___default.a.atob(s) : Buffer.from(s, 'base64').toString('binary');\\n};\\n\\nfunction decodeB64ToUint8Array(b64Text) {\\n var decodedString = atob(b64Text);\\n var array = new Uint8Array(decodedString.length);\\n\\n for (var i = 0; i < decodedString.length; i++) {\\n array[i] = decodedString.charCodeAt(i);\\n }\\n\\n return array;\\n}\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node-libs-browser/node_modules/buffer/index.js */ \\\"../node_modules/node-libs-browser/node_modules/buffer/index.js\\\").Buffer))\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/ebml-helpers.js\":\n/*!*************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/ebml-helpers.js ***!\n \\*************************************************************/\n/*! exports provided: EBML_TAGS, findEbml, decodeBlock, parseTracks, parseData */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"EBML_TAGS\\\", function() { return EBML_TAGS; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findEbml\\\", function() { return findEbml; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"decodeBlock\\\", function() { return decodeBlock; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseTracks\\\", function() { return parseTracks; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseData\\\", function() { return parseData; });\\n/* harmony import */ var _byte_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n/* harmony import */ var _codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./codec-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/codec-helpers.js\\\");\\n\\n // relevant specs for this parser:\\n// https://matroska-org.github.io/libebml/specs.html\\n// https://www.matroska.org/technical/elements.html\\n// https://www.webmproject.org/docs/container/\\n\\nvar EBML_TAGS = {\\n EBML: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x1A, 0x45, 0xDF, 0xA3]),\\n DocType: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x42, 0x82]),\\n Segment: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x18, 0x53, 0x80, 0x67]),\\n SegmentInfo: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x15, 0x49, 0xA9, 0x66]),\\n Tracks: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x16, 0x54, 0xAE, 0x6B]),\\n Track: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xAE]),\\n TrackNumber: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xd7]),\\n DefaultDuration: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x23, 0xe3, 0x83]),\\n TrackEntry: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xAE]),\\n TrackType: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x83]),\\n FlagDefault: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x88]),\\n CodecID: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x86]),\\n CodecPrivate: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x63, 0xA2]),\\n VideoTrack: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xe0]),\\n AudioTrack: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xe1]),\\n // Not used yet, but will be used for live webm/mkv\\n // see https://www.matroska.org/technical/basics.html#block-structure\\n // see https://www.matroska.org/technical/basics.html#simpleblock-structure\\n Cluster: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x1F, 0x43, 0xB6, 0x75]),\\n Timestamp: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xE7]),\\n TimestampScale: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x2A, 0xD7, 0xB1]),\\n BlockGroup: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xA0]),\\n BlockDuration: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x9B]),\\n Block: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xA1]),\\n SimpleBlock: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xA3])\\n};\\n/**\\n * This is a simple table to determine the length\\n * of things in ebml. The length is one based (starts at 1,\\n * rather than zero) and for every zero bit before a one bit\\n * we add one to length. We also need this table because in some\\n * case we have to xor all the length bits from another value.\\n */\\n\\nvar LENGTH_TABLE = [128, 64, 32, 16, 8, 4, 2, 1];\\n\\nvar getLength = function getLength(byte) {\\n var len = 1;\\n\\n for (var i = 0; i < LENGTH_TABLE.length; i++) {\\n if (byte & LENGTH_TABLE[i]) {\\n break;\\n }\\n\\n len++;\\n }\\n\\n return len;\\n}; // length in ebml is stored in the first 4 to 8 bits\\n// of the first byte. 4 for the id length and 8 for the\\n// data size length. Length is measured by converting the number to binary\\n// then 1 + the number of zeros before a 1 is encountered starting\\n// from the left.\\n\\n\\nvar getvint = function getvint(bytes, offset, removeLength, signed) {\\n if (removeLength === void 0) {\\n removeLength = true;\\n }\\n\\n if (signed === void 0) {\\n signed = false;\\n }\\n\\n var length = getLength(bytes[offset]);\\n var valueBytes = bytes.subarray(offset, offset + length); // NOTE that we do **not** subarray here because we need to copy these bytes\\n // as they will be modified below to remove the dataSizeLen bits and we do not\\n // want to modify the original data. normally we could just call slice on\\n // uint8array but ie 11 does not support that...\\n\\n if (removeLength) {\\n valueBytes = Array.prototype.slice.call(bytes, offset, offset + length);\\n valueBytes[0] ^= LENGTH_TABLE[length - 1];\\n }\\n\\n return {\\n length: length,\\n value: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(valueBytes, {\\n signed: signed\\n }),\\n bytes: valueBytes\\n };\\n};\\n\\nvar normalizePath = function normalizePath(path) {\\n if (typeof path === 'string') {\\n return path.match(/.{1,2}/g).map(function (p) {\\n return normalizePath(p);\\n });\\n }\\n\\n if (typeof path === 'number') {\\n return Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"numberToBytes\\\"])(path);\\n }\\n\\n return path;\\n};\\n\\nvar normalizePaths = function normalizePaths(paths) {\\n if (!Array.isArray(paths)) {\\n return [normalizePath(paths)];\\n }\\n\\n return paths.map(function (p) {\\n return normalizePath(p);\\n });\\n};\\n\\nvar getInfinityDataSize = function getInfinityDataSize(id, bytes, offset) {\\n if (offset >= bytes.length) {\\n return bytes.length;\\n }\\n\\n var innerid = getvint(bytes, offset, false);\\n\\n if (Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(id.bytes, innerid.bytes)) {\\n return offset;\\n }\\n\\n var dataHeader = getvint(bytes, offset + innerid.length);\\n return getInfinityDataSize(id, bytes, offset + dataHeader.length + dataHeader.value + innerid.length);\\n};\\n/**\\n * Notes on the EBLM format.\\n *\\n * EBLM uses \\\"vints\\\" tags. Every vint tag contains\\n * two parts\\n *\\n * 1. The length from the first byte. You get this by\\n * converting the byte to binary and counting the zeros\\n * before a 1. Then you add 1 to that. Examples\\n * 00011111 = length 4 because there are 3 zeros before a 1.\\n * 00100000 = length 3 because there are 2 zeros before a 1.\\n * 00000011 = length 7 because there are 6 zeros before a 1.\\n *\\n * 2. The bits used for length are removed from the first byte\\n * Then all the bytes are merged into a value. NOTE: this\\n * is not the case for id ebml tags as there id includes\\n * length bits.\\n *\\n */\\n\\n\\nvar findEbml = function findEbml(bytes, paths) {\\n paths = normalizePaths(paths);\\n bytes = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var results = [];\\n\\n if (!paths.length) {\\n return results;\\n }\\n\\n var i = 0;\\n\\n while (i < bytes.length) {\\n var id = getvint(bytes, i, false);\\n var dataHeader = getvint(bytes, i + id.length);\\n var dataStart = i + id.length + dataHeader.length; // dataSize is unknown or this is a live stream\\n\\n if (dataHeader.value === 0x7f) {\\n dataHeader.value = getInfinityDataSize(id, bytes, dataStart);\\n\\n if (dataHeader.value !== bytes.length) {\\n dataHeader.value -= dataStart;\\n }\\n }\\n\\n var dataEnd = dataStart + dataHeader.value > bytes.length ? bytes.length : dataStart + dataHeader.value;\\n var data = bytes.subarray(dataStart, dataEnd);\\n\\n if (Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(paths[0], id.bytes)) {\\n if (paths.length === 1) {\\n // this is the end of the paths and we've found the tag we were\\n // looking for\\n results.push(data);\\n } else {\\n // recursively search for the next tag inside of the data\\n // of this one\\n results = results.concat(findEbml(data, paths.slice(1)));\\n }\\n }\\n\\n var totalLength = id.length + dataHeader.length + data.length; // move past this tag entirely, we are not looking for it\\n\\n i += totalLength;\\n }\\n\\n return results;\\n}; // see https://www.matroska.org/technical/basics.html#block-structure\\n\\nvar decodeBlock = function decodeBlock(block, type, timestampScale, clusterTimestamp) {\\n var duration;\\n\\n if (type === 'group') {\\n duration = findEbml(block, [EBML_TAGS.BlockDuration])[0];\\n\\n if (duration) {\\n duration = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(duration);\\n duration = 1 / timestampScale * duration * timestampScale / 1000;\\n }\\n\\n block = findEbml(block, [EBML_TAGS.Block])[0];\\n type = 'block'; // treat data as a block after this point\\n }\\n\\n var dv = new DataView(block.buffer, block.byteOffset, block.byteLength);\\n var trackNumber = getvint(block, 0);\\n var timestamp = dv.getInt16(trackNumber.length, false);\\n var flags = block[trackNumber.length + 2];\\n var data = block.subarray(trackNumber.length + 3); // pts/dts in seconds\\n\\n var ptsdts = 1 / timestampScale * (clusterTimestamp + timestamp) * timestampScale / 1000; // return the frame\\n\\n var parsed = {\\n duration: duration,\\n trackNumber: trackNumber.value,\\n keyframe: type === 'simple' && flags >> 7 === 1,\\n invisible: (flags & 0x08) >> 3 === 1,\\n lacing: (flags & 0x06) >> 1,\\n discardable: type === 'simple' && (flags & 0x01) === 1,\\n frames: [],\\n pts: ptsdts,\\n dts: ptsdts,\\n timestamp: timestamp\\n };\\n\\n if (!parsed.lacing) {\\n parsed.frames.push(data);\\n return parsed;\\n }\\n\\n var numberOfFrames = data[0] + 1;\\n var frameSizes = [];\\n var offset = 1; // Fixed\\n\\n if (parsed.lacing === 2) {\\n var sizeOfFrame = (data.length - offset) / numberOfFrames;\\n\\n for (var i = 0; i < numberOfFrames; i++) {\\n frameSizes.push(sizeOfFrame);\\n }\\n } // xiph\\n\\n\\n if (parsed.lacing === 1) {\\n for (var _i = 0; _i < numberOfFrames - 1; _i++) {\\n var size = 0;\\n\\n do {\\n size += data[offset];\\n offset++;\\n } while (data[offset - 1] === 0xFF);\\n\\n frameSizes.push(size);\\n }\\n } // ebml\\n\\n\\n if (parsed.lacing === 3) {\\n // first vint is unsinged\\n // after that vints are singed and\\n // based on a compounding size\\n var _size = 0;\\n\\n for (var _i2 = 0; _i2 < numberOfFrames - 1; _i2++) {\\n var vint = _i2 === 0 ? getvint(data, offset) : getvint(data, offset, true, true);\\n _size += vint.value;\\n frameSizes.push(_size);\\n offset += vint.length;\\n }\\n }\\n\\n frameSizes.forEach(function (size) {\\n parsed.frames.push(data.subarray(offset, offset + size));\\n offset += size;\\n });\\n return parsed;\\n}; // VP9 Codec Feature Metadata (CodecPrivate)\\n// https://www.webmproject.org/docs/container/\\n\\nvar parseVp9Private = function parseVp9Private(bytes) {\\n var i = 0;\\n var params = {};\\n\\n while (i < bytes.length) {\\n var id = bytes[i] & 0x7f;\\n var len = bytes[i + 1];\\n var val = void 0;\\n\\n if (len === 1) {\\n val = bytes[i + 2];\\n } else {\\n val = bytes.subarray(i + 2, i + 2 + len);\\n }\\n\\n if (id === 1) {\\n params.profile = val;\\n } else if (id === 2) {\\n params.level = val;\\n } else if (id === 3) {\\n params.bitDepth = val;\\n } else if (id === 4) {\\n params.chromaSubsampling = val;\\n } else {\\n params[id] = val;\\n }\\n\\n i += 2 + len;\\n }\\n\\n return params;\\n};\\n\\nvar parseTracks = function parseTracks(bytes) {\\n bytes = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var decodedTracks = [];\\n var tracks = findEbml(bytes, [EBML_TAGS.Segment, EBML_TAGS.Tracks, EBML_TAGS.Track]);\\n\\n if (!tracks.length) {\\n tracks = findEbml(bytes, [EBML_TAGS.Tracks, EBML_TAGS.Track]);\\n }\\n\\n if (!tracks.length) {\\n tracks = findEbml(bytes, [EBML_TAGS.Track]);\\n }\\n\\n if (!tracks.length) {\\n return decodedTracks;\\n }\\n\\n tracks.forEach(function (track) {\\n var trackType = findEbml(track, EBML_TAGS.TrackType)[0];\\n\\n if (!trackType || !trackType.length) {\\n return;\\n } // 1 is video, 2 is audio, 17 is subtitle\\n // other values are unimportant in this context\\n\\n\\n if (trackType[0] === 1) {\\n trackType = 'video';\\n } else if (trackType[0] === 2) {\\n trackType = 'audio';\\n } else if (trackType[0] === 17) {\\n trackType = 'subtitle';\\n } else {\\n return;\\n } // todo parse language\\n\\n\\n var decodedTrack = {\\n rawCodec: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToString\\\"])(findEbml(track, [EBML_TAGS.CodecID])[0]),\\n type: trackType,\\n codecPrivate: findEbml(track, [EBML_TAGS.CodecPrivate])[0],\\n number: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(findEbml(track, [EBML_TAGS.TrackNumber])[0]),\\n defaultDuration: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(findEbml(track, [EBML_TAGS.DefaultDuration])[0]),\\n default: findEbml(track, [EBML_TAGS.FlagDefault])[0],\\n rawData: track\\n };\\n var codec = '';\\n\\n if (/V_MPEG4\\\\/ISO\\\\/AVC/.test(decodedTrack.rawCodec)) {\\n codec = \\\"avc1.\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getAvcCodec\\\"])(decodedTrack.codecPrivate);\\n } else if (/V_MPEGH\\\\/ISO\\\\/HEVC/.test(decodedTrack.rawCodec)) {\\n codec = \\\"hev1.\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getHvcCodec\\\"])(decodedTrack.codecPrivate);\\n } else if (/V_MPEG4\\\\/ISO\\\\/ASP/.test(decodedTrack.rawCodec)) {\\n if (decodedTrack.codecPrivate) {\\n codec = 'mp4v.20.' + decodedTrack.codecPrivate[4].toString();\\n } else {\\n codec = 'mp4v.20.9';\\n }\\n } else if (/^V_THEORA/.test(decodedTrack.rawCodec)) {\\n codec = 'theora';\\n } else if (/^V_VP8/.test(decodedTrack.rawCodec)) {\\n codec = 'vp8';\\n } else if (/^V_VP9/.test(decodedTrack.rawCodec)) {\\n if (decodedTrack.codecPrivate) {\\n var _parseVp9Private = parseVp9Private(decodedTrack.codecPrivate),\\n profile = _parseVp9Private.profile,\\n level = _parseVp9Private.level,\\n bitDepth = _parseVp9Private.bitDepth,\\n chromaSubsampling = _parseVp9Private.chromaSubsampling;\\n\\n codec = 'vp09.';\\n codec += Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(profile, 2, '0') + \\\".\\\";\\n codec += Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(level, 2, '0') + \\\".\\\";\\n codec += Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(bitDepth, 2, '0') + \\\".\\\";\\n codec += \\\"\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(chromaSubsampling, 2, '0'); // Video -> Colour -> Ebml name\\n\\n var matrixCoefficients = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB1]])[0] || [];\\n var videoFullRangeFlag = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB9]])[0] || [];\\n var transferCharacteristics = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBA]])[0] || [];\\n var colourPrimaries = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBB]])[0] || []; // if we find any optional codec parameter specify them all.\\n\\n if (matrixCoefficients.length || videoFullRangeFlag.length || transferCharacteristics.length || colourPrimaries.length) {\\n codec += \\\".\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(colourPrimaries[0], 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(transferCharacteristics[0], 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(matrixCoefficients[0], 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(videoFullRangeFlag[0], 2, '0');\\n }\\n } else {\\n codec = 'vp9';\\n }\\n } else if (/^V_AV1/.test(decodedTrack.rawCodec)) {\\n codec = \\\"av01.\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getAv1Codec\\\"])(decodedTrack.codecPrivate);\\n } else if (/A_ALAC/.test(decodedTrack.rawCodec)) {\\n codec = 'alac';\\n } else if (/A_MPEG\\\\/L2/.test(decodedTrack.rawCodec)) {\\n codec = 'mp2';\\n } else if (/A_MPEG\\\\/L3/.test(decodedTrack.rawCodec)) {\\n codec = 'mp3';\\n } else if (/^A_AAC/.test(decodedTrack.rawCodec)) {\\n if (decodedTrack.codecPrivate) {\\n codec = 'mp4a.40.' + (decodedTrack.codecPrivate[0] >>> 3).toString();\\n } else {\\n codec = 'mp4a.40.2';\\n }\\n } else if (/^A_AC3/.test(decodedTrack.rawCodec)) {\\n codec = 'ac-3';\\n } else if (/^A_PCM/.test(decodedTrack.rawCodec)) {\\n codec = 'pcm';\\n } else if (/^A_MS\\\\/ACM/.test(decodedTrack.rawCodec)) {\\n codec = 'speex';\\n } else if (/^A_EAC3/.test(decodedTrack.rawCodec)) {\\n codec = 'ec-3';\\n } else if (/^A_VORBIS/.test(decodedTrack.rawCodec)) {\\n codec = 'vorbis';\\n } else if (/^A_FLAC/.test(decodedTrack.rawCodec)) {\\n codec = 'flac';\\n } else if (/^A_OPUS/.test(decodedTrack.rawCodec)) {\\n codec = 'opus';\\n }\\n\\n decodedTrack.codec = codec;\\n decodedTracks.push(decodedTrack);\\n });\\n return decodedTracks.sort(function (a, b) {\\n return a.number - b.number;\\n });\\n};\\nvar parseData = function parseData(data, tracks) {\\n var allBlocks = [];\\n var segment = findEbml(data, [EBML_TAGS.Segment])[0];\\n var timestampScale = findEbml(segment, [EBML_TAGS.SegmentInfo, EBML_TAGS.TimestampScale])[0]; // in nanoseconds, defaults to 1ms\\n\\n if (timestampScale && timestampScale.length) {\\n timestampScale = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(timestampScale);\\n } else {\\n timestampScale = 1000000;\\n }\\n\\n var clusters = findEbml(segment, [EBML_TAGS.Cluster]);\\n\\n if (!tracks) {\\n tracks = parseTracks(segment);\\n }\\n\\n clusters.forEach(function (cluster, ci) {\\n var simpleBlocks = findEbml(cluster, [EBML_TAGS.SimpleBlock]).map(function (b) {\\n return {\\n type: 'simple',\\n data: b\\n };\\n });\\n var blockGroups = findEbml(cluster, [EBML_TAGS.BlockGroup]).map(function (b) {\\n return {\\n type: 'group',\\n data: b\\n };\\n });\\n var timestamp = findEbml(cluster, [EBML_TAGS.Timestamp])[0] || 0;\\n\\n if (timestamp && timestamp.length) {\\n timestamp = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(timestamp);\\n } // get all blocks then sort them into the correct order\\n\\n\\n var blocks = simpleBlocks.concat(blockGroups).sort(function (a, b) {\\n return a.data.byteOffset - b.data.byteOffset;\\n });\\n blocks.forEach(function (block, bi) {\\n var decoded = decodeBlock(block.data, block.type, timestampScale, timestamp);\\n allBlocks.push(decoded);\\n });\\n });\\n return {\\n tracks: tracks,\\n blocks: allBlocks\\n };\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/ebml-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/id3-helpers.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/id3-helpers.js ***!\n \\************************************************************/\n/*! exports provided: getId3Size, getId3Offset */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getId3Size\\\", function() { return getId3Size; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getId3Offset\\\", function() { return getId3Offset; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n\\nvar ID3 = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x49, 0x44, 0x33]);\\nvar getId3Size = function getId3Size(bytes, offset) {\\n if (offset === void 0) {\\n offset = 0;\\n }\\n\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var flags = bytes[offset + 5];\\n var returnSize = bytes[offset + 6] << 21 | bytes[offset + 7] << 14 | bytes[offset + 8] << 7 | bytes[offset + 9];\\n var footerPresent = (flags & 16) >> 4;\\n\\n if (footerPresent) {\\n return returnSize + 20;\\n }\\n\\n return returnSize + 10;\\n};\\nvar getId3Offset = function getId3Offset(bytes, offset) {\\n if (offset === void 0) {\\n offset = 0;\\n }\\n\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n\\n if (bytes.length - offset < 10 || !Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, ID3, {\\n offset: offset\\n })) {\\n return offset;\\n }\\n\\n offset += getId3Size(bytes, offset); // recursive check for id3 tags as some files\\n // have multiple ID3 tag sections even though\\n // they should not.\\n\\n return getId3Offset(bytes, offset);\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/id3-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/media-types.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/media-types.js ***!\n \\************************************************************/\n/*! exports provided: simpleTypeFromSourceType */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"simpleTypeFromSourceType\\\", function() { return simpleTypeFromSourceType; });\\nvar MPEGURL_REGEX = /^(audio|video|application)\\\\/(x-|vnd\\\\.apple\\\\.)?mpegurl/i;\\nvar DASH_REGEX = /^application\\\\/dash\\\\+xml/i;\\n/**\\n * Returns a string that describes the type of source based on a video source object's\\n * media type.\\n *\\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\\n *\\n * @param {string} type\\n * Video source object media type\\n * @return {('hls'|'dash'|'vhs-json'|null)}\\n * VHS source type string\\n */\\n\\nvar simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\\n if (MPEGURL_REGEX.test(type)) {\\n return 'hls';\\n }\\n\\n if (DASH_REGEX.test(type)) {\\n return 'dash';\\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\\n // source URL.\\n //\\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\\n //\\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\\n // project, and the +json suffix identifies the structure of the media type.\\n\\n\\n if (type === 'application/vnd.videojs.vhs+json') {\\n return 'vhs-json';\\n }\\n\\n return null;\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/media-types.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/mp4-helpers.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/mp4-helpers.js ***!\n \\************************************************************/\n/*! exports provided: parseDescriptors, findBox, findNamedBox, buildFrameTable, addSampleDescription, parseTracks, parseMediaInfo */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseDescriptors\\\", function() { return parseDescriptors; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findBox\\\", function() { return findBox; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findNamedBox\\\", function() { return findNamedBox; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"buildFrameTable\\\", function() { return buildFrameTable; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"addSampleDescription\\\", function() { return addSampleDescription; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseTracks\\\", function() { return parseTracks; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseMediaInfo\\\", function() { return parseMediaInfo; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n/* harmony import */ var _codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./codec-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/codec-helpers.js\\\");\\n/* harmony import */ var _opus_helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./opus-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/opus-helpers.js\\\");\\n\\n\\n\\n\\nvar normalizePath = function normalizePath(path) {\\n if (typeof path === 'string') {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"stringToBytes\\\"])(path);\\n }\\n\\n if (typeof path === 'number') {\\n return path;\\n }\\n\\n return path;\\n};\\n\\nvar normalizePaths = function normalizePaths(paths) {\\n if (!Array.isArray(paths)) {\\n return [normalizePath(paths)];\\n }\\n\\n return paths.map(function (p) {\\n return normalizePath(p);\\n });\\n};\\n\\nvar DESCRIPTORS;\\nvar parseDescriptors = function parseDescriptors(bytes) {\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var results = [];\\n var i = 0;\\n\\n while (bytes.length > i) {\\n var tag = bytes[i];\\n var size = 0;\\n var headerSize = 0; // tag\\n\\n headerSize++;\\n var byte = bytes[headerSize]; // first byte\\n\\n headerSize++;\\n\\n while (byte & 0x80) {\\n size = (byte & 0x7F) << 7;\\n byte = bytes[headerSize];\\n headerSize++;\\n }\\n\\n size += byte & 0x7F;\\n\\n for (var z = 0; z < DESCRIPTORS.length; z++) {\\n var _DESCRIPTORS$z = DESCRIPTORS[z],\\n id = _DESCRIPTORS$z.id,\\n parser = _DESCRIPTORS$z.parser;\\n\\n if (tag === id) {\\n results.push(parser(bytes.subarray(headerSize, headerSize + size)));\\n break;\\n }\\n }\\n\\n i += size + headerSize;\\n }\\n\\n return results;\\n};\\nDESCRIPTORS = [{\\n id: 0x03,\\n parser: function parser(bytes) {\\n var desc = {\\n tag: 0x03,\\n id: bytes[0] << 8 | bytes[1],\\n flags: bytes[2],\\n size: 3,\\n dependsOnEsId: 0,\\n ocrEsId: 0,\\n descriptors: [],\\n url: ''\\n }; // depends on es id\\n\\n if (desc.flags & 0x80) {\\n desc.dependsOnEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\\n desc.size += 2;\\n } // url\\n\\n\\n if (desc.flags & 0x40) {\\n var len = bytes[desc.size];\\n desc.url = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToString\\\"])(bytes.subarray(desc.size + 1, desc.size + 1 + len));\\n desc.size += len;\\n } // ocr es id\\n\\n\\n if (desc.flags & 0x20) {\\n desc.ocrEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\\n desc.size += 2;\\n }\\n\\n desc.descriptors = parseDescriptors(bytes.subarray(desc.size)) || [];\\n return desc;\\n }\\n}, {\\n id: 0x04,\\n parser: function parser(bytes) {\\n // DecoderConfigDescriptor\\n var desc = {\\n tag: 0x04,\\n oti: bytes[0],\\n streamType: bytes[1],\\n bufferSize: bytes[2] << 16 | bytes[3] << 8 | bytes[4],\\n maxBitrate: bytes[5] << 24 | bytes[6] << 16 | bytes[7] << 8 | bytes[8],\\n avgBitrate: bytes[9] << 24 | bytes[10] << 16 | bytes[11] << 8 | bytes[12],\\n descriptors: parseDescriptors(bytes.subarray(13))\\n };\\n return desc;\\n }\\n}, {\\n id: 0x05,\\n parser: function parser(bytes) {\\n // DecoderSpecificInfo\\n return {\\n tag: 0x05,\\n bytes: bytes\\n };\\n }\\n}, {\\n id: 0x06,\\n parser: function parser(bytes) {\\n // SLConfigDescriptor\\n return {\\n tag: 0x06,\\n bytes: bytes\\n };\\n }\\n}];\\n/**\\n * find any number of boxes by name given a path to it in an iso bmff\\n * such as mp4.\\n *\\n * @param {TypedArray} bytes\\n * bytes for the iso bmff to search for boxes in\\n *\\n * @param {Uint8Array[]|string[]|string|Uint8Array} name\\n * An array of paths or a single path representing the name\\n * of boxes to search through in bytes. Paths may be\\n * uint8 (character codes) or strings.\\n *\\n * @param {boolean} [complete=false]\\n * Should we search only for complete boxes on the final path.\\n * This is very useful when you do not want to get back partial boxes\\n * in the case of streaming files.\\n *\\n * @return {Uint8Array[]}\\n * An array of the end paths that we found.\\n */\\n\\nvar findBox = function findBox(bytes, paths, complete) {\\n if (complete === void 0) {\\n complete = false;\\n }\\n\\n paths = normalizePaths(paths);\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var results = [];\\n\\n if (!paths.length) {\\n // short-circuit the search for empty paths\\n return results;\\n }\\n\\n var i = 0;\\n\\n while (i < bytes.length) {\\n var size = (bytes[i] << 24 | bytes[i + 1] << 16 | bytes[i + 2] << 8 | bytes[i + 3]) >>> 0;\\n var type = bytes.subarray(i + 4, i + 8); // invalid box format.\\n\\n if (size === 0) {\\n break;\\n }\\n\\n var end = i + size;\\n\\n if (end > bytes.length) {\\n // this box is bigger than the number of bytes we have\\n // and complete is set, we cannot find any more boxes.\\n if (complete) {\\n break;\\n }\\n\\n end = bytes.length;\\n }\\n\\n var data = bytes.subarray(i + 8, end);\\n\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(type, paths[0])) {\\n if (paths.length === 1) {\\n // this is the end of the path and we've found the box we were\\n // looking for\\n results.push(data);\\n } else {\\n // recursively search for the next box along the path\\n results.push.apply(results, findBox(data, paths.slice(1), complete));\\n }\\n }\\n\\n i = end;\\n } // we've finished searching all of bytes\\n\\n\\n return results;\\n};\\n/**\\n * Search for a single matching box by name in an iso bmff format like\\n * mp4. This function is useful for finding codec boxes which\\n * can be placed arbitrarily in sample descriptions depending\\n * on the version of the file or file type.\\n *\\n * @param {TypedArray} bytes\\n * bytes for the iso bmff to search for boxes in\\n *\\n * @param {string|Uint8Array} name\\n * The name of the box to find.\\n *\\n * @return {Uint8Array[]}\\n * a subarray of bytes representing the name boxed we found.\\n */\\n\\nvar findNamedBox = function findNamedBox(bytes, name) {\\n name = normalizePath(name);\\n\\n if (!name.length) {\\n // short-circuit the search for empty paths\\n return bytes.subarray(bytes.length);\\n }\\n\\n var i = 0;\\n\\n while (i < bytes.length) {\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes.subarray(i, i + name.length), name)) {\\n var size = (bytes[i - 4] << 24 | bytes[i - 3] << 16 | bytes[i - 2] << 8 | bytes[i - 1]) >>> 0;\\n var end = size > 1 ? i + size : bytes.byteLength;\\n return bytes.subarray(i + 4, end);\\n }\\n\\n i++;\\n } // we've finished searching all of bytes\\n\\n\\n return bytes.subarray(bytes.length);\\n};\\n\\nvar parseSamples = function parseSamples(data, entrySize, parseEntry) {\\n if (entrySize === void 0) {\\n entrySize = 4;\\n }\\n\\n if (parseEntry === void 0) {\\n parseEntry = function parseEntry(d) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(d);\\n };\\n }\\n\\n var entries = [];\\n\\n if (!data || !data.length) {\\n return entries;\\n }\\n\\n var entryCount = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(data.subarray(4, 8));\\n\\n for (var i = 8; entryCount; i += entrySize, entryCount--) {\\n entries.push(parseEntry(data.subarray(i, i + entrySize)));\\n }\\n\\n return entries;\\n};\\n\\nvar buildFrameTable = function buildFrameTable(stbl, timescale) {\\n var keySamples = parseSamples(findBox(stbl, ['stss'])[0]);\\n var chunkOffsets = parseSamples(findBox(stbl, ['stco'])[0]);\\n var timeToSamples = parseSamples(findBox(stbl, ['stts'])[0], 8, function (entry) {\\n return {\\n sampleCount: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(0, 4)),\\n sampleDelta: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(4, 8))\\n };\\n });\\n var samplesToChunks = parseSamples(findBox(stbl, ['stsc'])[0], 12, function (entry) {\\n return {\\n firstChunk: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(0, 4)),\\n samplesPerChunk: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(4, 8)),\\n sampleDescriptionIndex: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(8, 12))\\n };\\n });\\n var stsz = findBox(stbl, ['stsz'])[0]; // stsz starts with a 4 byte sampleSize which we don't need\\n\\n var sampleSizes = parseSamples(stsz && stsz.length && stsz.subarray(4) || null);\\n var frames = [];\\n\\n for (var chunkIndex = 0; chunkIndex < chunkOffsets.length; chunkIndex++) {\\n var samplesInChunk = void 0;\\n\\n for (var i = 0; i < samplesToChunks.length; i++) {\\n var sampleToChunk = samplesToChunks[i];\\n var isThisOne = chunkIndex + 1 >= sampleToChunk.firstChunk && (i + 1 >= samplesToChunks.length || chunkIndex + 1 < samplesToChunks[i + 1].firstChunk);\\n\\n if (isThisOne) {\\n samplesInChunk = sampleToChunk.samplesPerChunk;\\n break;\\n }\\n }\\n\\n var chunkOffset = chunkOffsets[chunkIndex];\\n\\n for (var _i = 0; _i < samplesInChunk; _i++) {\\n var frameEnd = sampleSizes[frames.length]; // if we don't have key samples every frame is a keyframe\\n\\n var keyframe = !keySamples.length;\\n\\n if (keySamples.length && keySamples.indexOf(frames.length + 1) !== -1) {\\n keyframe = true;\\n }\\n\\n var frame = {\\n keyframe: keyframe,\\n start: chunkOffset,\\n end: chunkOffset + frameEnd\\n };\\n\\n for (var k = 0; k < timeToSamples.length; k++) {\\n var _timeToSamples$k = timeToSamples[k],\\n sampleCount = _timeToSamples$k.sampleCount,\\n sampleDelta = _timeToSamples$k.sampleDelta;\\n\\n if (frames.length <= sampleCount) {\\n // ms to ns\\n var lastTimestamp = frames.length ? frames[frames.length - 1].timestamp : 0;\\n frame.timestamp = lastTimestamp + sampleDelta / timescale * 1000;\\n frame.duration = sampleDelta;\\n break;\\n }\\n }\\n\\n frames.push(frame);\\n chunkOffset += frameEnd;\\n }\\n }\\n\\n return frames;\\n};\\nvar addSampleDescription = function addSampleDescription(track, bytes) {\\n var codec = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToString\\\"])(bytes.subarray(0, 4));\\n\\n if (track.type === 'video') {\\n track.info = track.info || {};\\n track.info.width = bytes[28] << 8 | bytes[29];\\n track.info.height = bytes[30] << 8 | bytes[31];\\n } else if (track.type === 'audio') {\\n track.info = track.info || {};\\n track.info.channels = bytes[20] << 8 | bytes[21];\\n track.info.bitDepth = bytes[22] << 8 | bytes[23];\\n track.info.sampleRate = bytes[28] << 8 | bytes[29];\\n }\\n\\n if (codec === 'avc1') {\\n var avcC = findNamedBox(bytes, 'avcC'); // AVCDecoderConfigurationRecord\\n\\n codec += \\\".\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getAvcCodec\\\"])(avcC);\\n track.info.avcC = avcC; // TODO: do we need to parse all this?\\n\\n /* {\\n configurationVersion: avcC[0],\\n profile: avcC[1],\\n profileCompatibility: avcC[2],\\n level: avcC[3],\\n lengthSizeMinusOne: avcC[4] & 0x3\\n };\\n let spsNalUnitCount = avcC[5] & 0x1F;\\n const spsNalUnits = track.info.avc.spsNalUnits = [];\\n // past spsNalUnitCount\\n let offset = 6;\\n while (spsNalUnitCount--) {\\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\\n spsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\\n offset += nalLen + 2;\\n }\\n let ppsNalUnitCount = avcC[offset];\\n const ppsNalUnits = track.info.avc.ppsNalUnits = [];\\n // past ppsNalUnitCount\\n offset += 1;\\n while (ppsNalUnitCount--) {\\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\\n ppsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\\n offset += nalLen + 2;\\n }*/\\n // HEVCDecoderConfigurationRecord\\n } else if (codec === 'hvc1' || codec === 'hev1') {\\n codec += \\\".\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getHvcCodec\\\"])(findNamedBox(bytes, 'hvcC'));\\n } else if (codec === 'mp4a' || codec === 'mp4v') {\\n var esds = findNamedBox(bytes, 'esds');\\n var esDescriptor = parseDescriptors(esds.subarray(4))[0];\\n var decoderConfig = esDescriptor && esDescriptor.descriptors.filter(function (_ref) {\\n var tag = _ref.tag;\\n return tag === 0x04;\\n })[0];\\n\\n if (decoderConfig) {\\n // most codecs do not have a further '.'\\n // such as 0xa5 for ac-3 and 0xa6 for e-ac-3\\n codec += '.' + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toHexString\\\"])(decoderConfig.oti);\\n\\n if (decoderConfig.oti === 0x40) {\\n codec += '.' + (decoderConfig.descriptors[0].bytes[0] >> 3).toString();\\n } else if (decoderConfig.oti === 0x20) {\\n codec += '.' + decoderConfig.descriptors[0].bytes[4].toString();\\n } else if (decoderConfig.oti === 0xdd) {\\n codec = 'vorbis';\\n }\\n } else if (track.type === 'audio') {\\n codec += '.40.2';\\n } else {\\n codec += '.20.9';\\n }\\n } else if (codec === 'av01') {\\n // AV1DecoderConfigurationRecord\\n codec += \\\".\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getAv1Codec\\\"])(findNamedBox(bytes, 'av1C'));\\n } else if (codec === 'vp09') {\\n // VPCodecConfigurationRecord\\n var vpcC = findNamedBox(bytes, 'vpcC'); // https://www.webmproject.org/vp9/mp4/\\n\\n var profile = vpcC[0];\\n var level = vpcC[1];\\n var bitDepth = vpcC[2] >> 4;\\n var chromaSubsampling = (vpcC[2] & 0x0F) >> 1;\\n var videoFullRangeFlag = (vpcC[2] & 0x0F) >> 3;\\n var colourPrimaries = vpcC[3];\\n var transferCharacteristics = vpcC[4];\\n var matrixCoefficients = vpcC[5];\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(profile, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(level, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(bitDepth, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(chromaSubsampling, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(colourPrimaries, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(transferCharacteristics, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(matrixCoefficients, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(videoFullRangeFlag, 2, '0');\\n } else if (codec === 'theo') {\\n codec = 'theora';\\n } else if (codec === 'spex') {\\n codec = 'speex';\\n } else if (codec === '.mp3') {\\n codec = 'mp4a.40.34';\\n } else if (codec === 'msVo') {\\n codec = 'vorbis';\\n } else if (codec === 'Opus') {\\n codec = 'opus';\\n var dOps = findNamedBox(bytes, 'dOps');\\n track.info.opus = Object(_opus_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"parseOpusHead\\\"])(dOps); // TODO: should this go into the webm code??\\n // Firefox requires a codecDelay for opus playback\\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1276238\\n\\n track.info.codecDelay = 6500000;\\n } else {\\n codec = codec.toLowerCase();\\n }\\n /* eslint-enable */\\n // flac, ac-3, ec-3, opus\\n\\n\\n track.codec = codec;\\n};\\nvar parseTracks = function parseTracks(bytes, frameTable) {\\n if (frameTable === void 0) {\\n frameTable = true;\\n }\\n\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var traks = findBox(bytes, ['moov', 'trak'], true);\\n var tracks = [];\\n traks.forEach(function (trak) {\\n var track = {\\n bytes: trak\\n };\\n var mdia = findBox(trak, ['mdia'])[0];\\n var hdlr = findBox(mdia, ['hdlr'])[0];\\n var trakType = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToString\\\"])(hdlr.subarray(8, 12));\\n\\n if (trakType === 'soun') {\\n track.type = 'audio';\\n } else if (trakType === 'vide') {\\n track.type = 'video';\\n } else {\\n track.type = trakType;\\n }\\n\\n var tkhd = findBox(trak, ['tkhd'])[0];\\n\\n if (tkhd) {\\n var view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\\n var tkhdVersion = view.getUint8(0);\\n track.number = tkhdVersion === 0 ? view.getUint32(12) : view.getUint32(20);\\n }\\n\\n var mdhd = findBox(mdia, ['mdhd'])[0];\\n\\n if (mdhd) {\\n // mdhd is a FullBox, meaning it will have its own version as the first byte\\n var version = mdhd[0];\\n var index = version === 0 ? 12 : 20;\\n track.timescale = (mdhd[index] << 24 | mdhd[index + 1] << 16 | mdhd[index + 2] << 8 | mdhd[index + 3]) >>> 0;\\n }\\n\\n var stbl = findBox(mdia, ['minf', 'stbl'])[0];\\n var stsd = findBox(stbl, ['stsd'])[0];\\n var descriptionCount = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(stsd.subarray(4, 8));\\n var offset = 8; // add codec and codec info\\n\\n while (descriptionCount--) {\\n var len = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(stsd.subarray(offset, offset + 4));\\n var sampleDescriptor = stsd.subarray(offset + 4, offset + 4 + len);\\n addSampleDescription(track, sampleDescriptor);\\n offset += 4 + len;\\n }\\n\\n if (frameTable) {\\n track.frameTable = buildFrameTable(stbl, track.timescale);\\n } // codec has no sub parameters\\n\\n\\n tracks.push(track);\\n });\\n return tracks;\\n};\\nvar parseMediaInfo = function parseMediaInfo(bytes) {\\n var mvhd = findBox(bytes, ['moov', 'mvhd'], true)[0];\\n\\n if (!mvhd || !mvhd.length) {\\n return;\\n }\\n\\n var info = {}; // ms to ns\\n // mvhd v1 has 8 byte duration and other fields too\\n\\n if (mvhd[0] === 1) {\\n info.timestampScale = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(mvhd.subarray(20, 24));\\n info.duration = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(mvhd.subarray(24, 32));\\n } else {\\n info.timestampScale = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(mvhd.subarray(12, 16));\\n info.duration = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(mvhd.subarray(16, 20));\\n }\\n\\n info.bytes = mvhd;\\n return info;\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/mp4-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/nal-helpers.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/nal-helpers.js ***!\n \\************************************************************/\n/*! exports provided: NAL_TYPE_ONE, NAL_TYPE_TWO, EMULATION_PREVENTION, discardEmulationPreventionBytes, findNal, findH264Nal, findH265Nal */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"NAL_TYPE_ONE\\\", function() { return NAL_TYPE_ONE; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"NAL_TYPE_TWO\\\", function() { return NAL_TYPE_TWO; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"EMULATION_PREVENTION\\\", function() { return EMULATION_PREVENTION; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"discardEmulationPreventionBytes\\\", function() { return discardEmulationPreventionBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findNal\\\", function() { return findNal; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findH264Nal\\\", function() { return findH264Nal; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findH265Nal\\\", function() { return findH265Nal; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n\\nvar NAL_TYPE_ONE = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x00, 0x00, 0x00, 0x01]);\\nvar NAL_TYPE_TWO = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x00, 0x00, 0x01]);\\nvar EMULATION_PREVENTION = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x00, 0x00, 0x03]);\\n/**\\n * Expunge any \\\"Emulation Prevention\\\" bytes from a \\\"Raw Byte\\n * Sequence Payload\\\"\\n *\\n * @param data {Uint8Array} the bytes of a RBSP from a NAL\\n * unit\\n * @return {Uint8Array} the RBSP without any Emulation\\n * Prevention Bytes\\n */\\n\\nvar discardEmulationPreventionBytes = function discardEmulationPreventionBytes(bytes) {\\n var positions = [];\\n var i = 1; // Find all `Emulation Prevention Bytes`\\n\\n while (i < bytes.length - 2) {\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes.subarray(i, i + 3), EMULATION_PREVENTION)) {\\n positions.push(i + 2);\\n i++;\\n }\\n\\n i++;\\n } // If no Emulation Prevention Bytes were found just return the original\\n // array\\n\\n\\n if (positions.length === 0) {\\n return bytes;\\n } // Create a new array to hold the NAL unit data\\n\\n\\n var newLength = bytes.length - positions.length;\\n var newData = new Uint8Array(newLength);\\n var sourceIndex = 0;\\n\\n for (i = 0; i < newLength; sourceIndex++, i++) {\\n if (sourceIndex === positions[0]) {\\n // Skip this byte\\n sourceIndex++; // Remove this position index\\n\\n positions.shift();\\n }\\n\\n newData[i] = bytes[sourceIndex];\\n }\\n\\n return newData;\\n};\\nvar findNal = function findNal(bytes, dataType, types, nalLimit) {\\n if (nalLimit === void 0) {\\n nalLimit = Infinity;\\n }\\n\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n types = [].concat(types);\\n var i = 0;\\n var nalStart;\\n var nalsFound = 0; // keep searching until:\\n // we reach the end of bytes\\n // we reach the maximum number of nals they want to seach\\n // NOTE: that we disregard nalLimit when we have found the start\\n // of the nal we want so that we can find the end of the nal we want.\\n\\n while (i < bytes.length && (nalsFound < nalLimit || nalStart)) {\\n var nalOffset = void 0;\\n\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes.subarray(i), NAL_TYPE_ONE)) {\\n nalOffset = 4;\\n } else if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes.subarray(i), NAL_TYPE_TWO)) {\\n nalOffset = 3;\\n } // we are unsynced,\\n // find the next nal unit\\n\\n\\n if (!nalOffset) {\\n i++;\\n continue;\\n }\\n\\n nalsFound++;\\n\\n if (nalStart) {\\n return discardEmulationPreventionBytes(bytes.subarray(nalStart, i));\\n }\\n\\n var nalType = void 0;\\n\\n if (dataType === 'h264') {\\n nalType = bytes[i + nalOffset] & 0x1f;\\n } else if (dataType === 'h265') {\\n nalType = bytes[i + nalOffset] >> 1 & 0x3f;\\n }\\n\\n if (types.indexOf(nalType) !== -1) {\\n nalStart = i + nalOffset;\\n } // nal header is 1 length for h264, and 2 for h265\\n\\n\\n i += nalOffset + (dataType === 'h264' ? 1 : 2);\\n }\\n\\n return bytes.subarray(0, 0);\\n};\\nvar findH264Nal = function findH264Nal(bytes, type, nalLimit) {\\n return findNal(bytes, 'h264', type, nalLimit);\\n};\\nvar findH265Nal = function findH265Nal(bytes, type, nalLimit) {\\n return findNal(bytes, 'h265', type, nalLimit);\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/nal-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/opus-helpers.js\":\n/*!*************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/opus-helpers.js ***!\n \\*************************************************************/\n/*! exports provided: OPUS_HEAD, parseOpusHead, setOpusHead */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"OPUS_HEAD\\\", function() { return OPUS_HEAD; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseOpusHead\\\", function() { return parseOpusHead; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"setOpusHead\\\", function() { return setOpusHead; });\\nvar OPUS_HEAD = new Uint8Array([// O, p, u, s\\n0x4f, 0x70, 0x75, 0x73, // H, e, a, d\\n0x48, 0x65, 0x61, 0x64]); // https://wiki.xiph.org/OggOpus\\n// https://vfrmaniac.fushizen.eu/contents/opus_in_isobmff.html\\n// https://opus-codec.org/docs/opusfile_api-0.7/structOpusHead.html\\n\\nvar parseOpusHead = function parseOpusHead(bytes) {\\n var view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\\n var version = view.getUint8(0); // version 0, from mp4, does not use littleEndian.\\n\\n var littleEndian = version !== 0;\\n var config = {\\n version: version,\\n channels: view.getUint8(1),\\n preSkip: view.getUint16(2, littleEndian),\\n sampleRate: view.getUint32(4, littleEndian),\\n outputGain: view.getUint16(8, littleEndian),\\n channelMappingFamily: view.getUint8(10)\\n };\\n\\n if (config.channelMappingFamily > 0 && bytes.length > 10) {\\n config.streamCount = view.getUint8(11);\\n config.twoChannelStreamCount = view.getUint8(12);\\n config.channelMapping = [];\\n\\n for (var c = 0; c < config.channels; c++) {\\n config.channelMapping.push(view.getUint8(13 + c));\\n }\\n }\\n\\n return config;\\n};\\nvar setOpusHead = function setOpusHead(config) {\\n var size = config.channelMappingFamily <= 0 ? 11 : 12 + config.channels;\\n var view = new DataView(new ArrayBuffer(size));\\n var littleEndian = config.version !== 0;\\n view.setUint8(0, config.version);\\n view.setUint8(1, config.channels);\\n view.setUint16(2, config.preSkip, littleEndian);\\n view.setUint32(4, config.sampleRate, littleEndian);\\n view.setUint16(8, config.outputGain, littleEndian);\\n view.setUint8(10, config.channelMappingFamily);\\n\\n if (config.channelMappingFamily > 0) {\\n view.setUint8(11, config.streamCount);\\n config.channelMapping.foreach(function (cm, i) {\\n view.setUint8(12 + i, cm);\\n });\\n }\\n\\n return new Uint8Array(view.buffer);\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/opus-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/resolve-url.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/resolve-url.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! url-toolkit */ \\\"../node_modules/url-toolkit/src/url-toolkit.js\\\");\\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(global_window__WEBPACK_IMPORTED_MODULE_1__);\\n\\n\\nvar DEFAULT_LOCATION = 'http://example.com';\\n\\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\\n // return early if we don't need to resolve\\n if (/^[a-z]+:/i.test(relativeUrl)) {\\n return relativeUrl;\\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\\n\\n\\n if (/^data:/.test(baseUrl)) {\\n baseUrl = global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location && global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location.href || '';\\n } // IE11 supports URL but not the URL constructor\\n // feature detect the behavior we want\\n\\n\\n var nativeURL = typeof global_window__WEBPACK_IMPORTED_MODULE_1___default.a.URL === 'function';\\n var protocolLess = /^\\\\/\\\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\\n // and if baseUrl isn't an absolute url\\n\\n var removeLocation = !global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location && !/\\\\/\\\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\\n\\n if (nativeURL) {\\n baseUrl = new global_window__WEBPACK_IMPORTED_MODULE_1___default.a.URL(baseUrl, global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location || DEFAULT_LOCATION);\\n } else if (!/\\\\/\\\\//i.test(baseUrl)) {\\n baseUrl = url_toolkit__WEBPACK_IMPORTED_MODULE_0___default.a.buildAbsoluteURL(global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location && global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location.href || '', baseUrl);\\n }\\n\\n if (nativeURL) {\\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\\n // and if we're location-less, remove the location\\n // otherwise, return the url unmodified\\n\\n if (removeLocation) {\\n return newUrl.href.slice(DEFAULT_LOCATION.length);\\n } else if (protocolLess) {\\n return newUrl.href.slice(newUrl.protocol.length);\\n }\\n\\n return newUrl.href;\\n }\\n\\n return url_toolkit__WEBPACK_IMPORTED_MODULE_0___default.a.buildAbsoluteURL(baseUrl, relativeUrl);\\n};\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (resolveUrl);\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/resolve-url.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/stream.js\":\n/*!*******************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/stream.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Stream; });\\n/**\\n * @file stream.js\\n */\\n\\n/**\\n * A lightweight readable stream implemention that handles event dispatching.\\n *\\n * @class Stream\\n */\\nvar Stream = /*#__PURE__*/function () {\\n function Stream() {\\n this.listeners = {};\\n }\\n /**\\n * Add a listener for a specified event type.\\n *\\n * @param {string} type the event name\\n * @param {Function} listener the callback to be invoked when an event of\\n * the specified type occurs\\n */\\n\\n\\n var _proto = Stream.prototype;\\n\\n _proto.on = function on(type, listener) {\\n if (!this.listeners[type]) {\\n this.listeners[type] = [];\\n }\\n\\n this.listeners[type].push(listener);\\n }\\n /**\\n * Remove a listener for a specified event type.\\n *\\n * @param {string} type the event name\\n * @param {Function} listener a function previously registered for this\\n * type of event through `on`\\n * @return {boolean} if we could turn it off or not\\n */\\n ;\\n\\n _proto.off = function off(type, listener) {\\n if (!this.listeners[type]) {\\n return false;\\n }\\n\\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\\n // In Video.js we slice listener functions\\n // on trigger so that it does not mess up the order\\n // while we loop through.\\n //\\n // Here we slice on off so that the loop in trigger\\n // can continue using it's old reference to loop without\\n // messing up the order.\\n\\n this.listeners[type] = this.listeners[type].slice(0);\\n this.listeners[type].splice(index, 1);\\n return index > -1;\\n }\\n /**\\n * Trigger an event of the specified type on this stream. Any additional\\n * arguments to this function are passed as parameters to event listeners.\\n *\\n * @param {string} type the event name\\n */\\n ;\\n\\n _proto.trigger = function trigger(type) {\\n var callbacks = this.listeners[type];\\n\\n if (!callbacks) {\\n return;\\n } // Slicing the arguments on every invocation of this method\\n // can add a significant amount of overhead. Avoid the\\n // intermediate object creation for the common case of a\\n // single callback argument\\n\\n\\n if (arguments.length === 2) {\\n var length = callbacks.length;\\n\\n for (var i = 0; i < length; ++i) {\\n callbacks[i].call(this, arguments[1]);\\n }\\n } else {\\n var args = Array.prototype.slice.call(arguments, 1);\\n var _length = callbacks.length;\\n\\n for (var _i = 0; _i < _length; ++_i) {\\n callbacks[_i].apply(this, args);\\n }\\n }\\n }\\n /**\\n * Destroys the stream and cleans up.\\n */\\n ;\\n\\n _proto.dispose = function dispose() {\\n this.listeners = {};\\n }\\n /**\\n * Forwards all `data` events on this stream to the destination stream. The\\n * destination stream should provide a method `push` to receive the data\\n * events as they arrive.\\n *\\n * @param {Stream} destination the stream that will receive all `data` events\\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\\n */\\n ;\\n\\n _proto.pipe = function pipe(destination) {\\n this.on('data', function (data) {\\n destination.push(data);\\n });\\n };\\n\\n return Stream;\\n}();\\n\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/stream.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/xhr/lib/http-handler.js\":\n/*!********************************************************!*\\\n !*** ../node_modules/@videojs/xhr/lib/http-handler.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar window = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n\\nvar httpResponseHandler = function httpResponseHandler(callback, decodeResponseBody) {\\n if (decodeResponseBody === void 0) {\\n decodeResponseBody = false;\\n }\\n\\n return function (err, response, responseBody) {\\n // if the XHR failed, return that error\\n if (err) {\\n callback(err);\\n return;\\n } // if the HTTP status code is 4xx or 5xx, the request also failed\\n\\n\\n if (response.statusCode >= 400 && response.statusCode <= 599) {\\n var cause = responseBody;\\n\\n if (decodeResponseBody) {\\n if (window.TextDecoder) {\\n var charset = getCharset(response.headers && response.headers['content-type']);\\n\\n try {\\n cause = new TextDecoder(charset).decode(responseBody);\\n } catch (e) {}\\n } else {\\n cause = String.fromCharCode.apply(null, new Uint8Array(responseBody));\\n }\\n }\\n\\n callback({\\n cause: cause\\n });\\n return;\\n } // otherwise, request succeeded\\n\\n\\n callback(null, responseBody);\\n };\\n};\\n\\nfunction getCharset(contentTypeHeader) {\\n if (contentTypeHeader === void 0) {\\n contentTypeHeader = '';\\n }\\n\\n return contentTypeHeader.toLowerCase().split(';').reduce(function (charset, contentType) {\\n var _contentType$split = contentType.split('='),\\n type = _contentType$split[0],\\n value = _contentType$split[1];\\n\\n if (type.trim() === 'charset') {\\n return value.trim();\\n }\\n\\n return charset;\\n }, 'utf-8');\\n}\\n\\nmodule.exports = httpResponseHandler;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/xhr/lib/http-handler.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/xhr/lib/index.js\":\n/*!*************************************************!*\\\n !*** ../node_modules/@videojs/xhr/lib/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar window = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n\\nvar _extends = __webpack_require__(/*! @babel/runtime/helpers/extends */ \\\"../node_modules/@babel/runtime/helpers/extends.js\\\");\\n\\nvar isFunction = __webpack_require__(/*! is-function */ \\\"../node_modules/is-function/index.js\\\");\\n\\ncreateXHR.httpHandler = __webpack_require__(/*! ./http-handler.js */ \\\"../node_modules/@videojs/xhr/lib/http-handler.js\\\");\\n/**\\n * @license\\n * slighly modified parse-headers 2.0.2 \\n * Copyright (c) 2014 David Björklund\\n * Available under the MIT license\\n * \\n */\\n\\nvar parseHeaders = function parseHeaders(headers) {\\n var result = {};\\n\\n if (!headers) {\\n return result;\\n }\\n\\n headers.trim().split('\\\\n').forEach(function (row) {\\n var index = row.indexOf(':');\\n var key = row.slice(0, index).trim().toLowerCase();\\n var value = row.slice(index + 1).trim();\\n\\n if (typeof result[key] === 'undefined') {\\n result[key] = value;\\n } else if (Array.isArray(result[key])) {\\n result[key].push(value);\\n } else {\\n result[key] = [result[key], value];\\n }\\n });\\n return result;\\n};\\n\\nmodule.exports = createXHR; // Allow use of default import syntax in TypeScript\\n\\nmodule.exports.default = createXHR;\\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\\ncreateXHR.XDomainRequest = \\\"withCredentials\\\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\\nforEachArray([\\\"get\\\", \\\"put\\\", \\\"post\\\", \\\"patch\\\", \\\"head\\\", \\\"delete\\\"], function (method) {\\n createXHR[method === \\\"delete\\\" ? \\\"del\\\" : method] = function (uri, options, callback) {\\n options = initParams(uri, options, callback);\\n options.method = method.toUpperCase();\\n return _createXHR(options);\\n };\\n});\\n\\nfunction forEachArray(array, iterator) {\\n for (var i = 0; i < array.length; i++) {\\n iterator(array[i]);\\n }\\n}\\n\\nfunction isEmpty(obj) {\\n for (var i in obj) {\\n if (obj.hasOwnProperty(i)) return false;\\n }\\n\\n return true;\\n}\\n\\nfunction initParams(uri, options, callback) {\\n var params = uri;\\n\\n if (isFunction(options)) {\\n callback = options;\\n\\n if (typeof uri === \\\"string\\\") {\\n params = {\\n uri: uri\\n };\\n }\\n } else {\\n params = _extends({}, options, {\\n uri: uri\\n });\\n }\\n\\n params.callback = callback;\\n return params;\\n}\\n\\nfunction createXHR(uri, options, callback) {\\n options = initParams(uri, options, callback);\\n return _createXHR(options);\\n}\\n\\nfunction _createXHR(options) {\\n if (typeof options.callback === \\\"undefined\\\") {\\n throw new Error(\\\"callback argument missing\\\");\\n }\\n\\n var called = false;\\n\\n var callback = function cbOnce(err, response, body) {\\n if (!called) {\\n called = true;\\n options.callback(err, response, body);\\n }\\n };\\n\\n function readystatechange() {\\n if (xhr.readyState === 4) {\\n setTimeout(loadFunc, 0);\\n }\\n }\\n\\n function getBody() {\\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\\n var body = undefined;\\n\\n if (xhr.response) {\\n body = xhr.response;\\n } else {\\n body = xhr.responseText || getXml(xhr);\\n }\\n\\n if (isJson) {\\n try {\\n body = JSON.parse(body);\\n } catch (e) {}\\n }\\n\\n return body;\\n }\\n\\n function errorFunc(evt) {\\n clearTimeout(timeoutTimer);\\n\\n if (!(evt instanceof Error)) {\\n evt = new Error(\\\"\\\" + (evt || \\\"Unknown XMLHttpRequest Error\\\"));\\n }\\n\\n evt.statusCode = 0;\\n return callback(evt, failureResponse);\\n } // will load the data & process the response in a special response object\\n\\n\\n function loadFunc() {\\n if (aborted) return;\\n var status;\\n clearTimeout(timeoutTimer);\\n\\n if (options.useXDR && xhr.status === undefined) {\\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\\n status = 200;\\n } else {\\n status = xhr.status === 1223 ? 204 : xhr.status;\\n }\\n\\n var response = failureResponse;\\n var err = null;\\n\\n if (status !== 0) {\\n response = {\\n body: getBody(),\\n statusCode: status,\\n method: method,\\n headers: {},\\n url: uri,\\n rawRequest: xhr\\n };\\n\\n if (xhr.getAllResponseHeaders) {\\n //remember xhr can in fact be XDR for CORS in IE\\n response.headers = parseHeaders(xhr.getAllResponseHeaders());\\n }\\n } else {\\n err = new Error(\\\"Internal XMLHttpRequest Error\\\");\\n }\\n\\n return callback(err, response, response.body);\\n }\\n\\n var xhr = options.xhr || null;\\n\\n if (!xhr) {\\n if (options.cors || options.useXDR) {\\n xhr = new createXHR.XDomainRequest();\\n } else {\\n xhr = new createXHR.XMLHttpRequest();\\n }\\n }\\n\\n var key;\\n var aborted;\\n var uri = xhr.url = options.uri || options.url;\\n var method = xhr.method = options.method || \\\"GET\\\";\\n var body = options.body || options.data;\\n var headers = xhr.headers = options.headers || {};\\n var sync = !!options.sync;\\n var isJson = false;\\n var timeoutTimer;\\n var failureResponse = {\\n body: undefined,\\n headers: {},\\n statusCode: 0,\\n method: method,\\n url: uri,\\n rawRequest: xhr\\n };\\n\\n if (\\\"json\\\" in options && options.json !== false) {\\n isJson = true;\\n headers[\\\"accept\\\"] || headers[\\\"Accept\\\"] || (headers[\\\"Accept\\\"] = \\\"application/json\\\"); //Don't override existing accept header declared by user\\n\\n if (method !== \\\"GET\\\" && method !== \\\"HEAD\\\") {\\n headers[\\\"content-type\\\"] || headers[\\\"Content-Type\\\"] || (headers[\\\"Content-Type\\\"] = \\\"application/json\\\"); //Don't override existing accept header declared by user\\n\\n body = JSON.stringify(options.json === true ? body : options.json);\\n }\\n }\\n\\n xhr.onreadystatechange = readystatechange;\\n xhr.onload = loadFunc;\\n xhr.onerror = errorFunc; // IE9 must have onprogress be set to a unique function.\\n\\n xhr.onprogress = function () {// IE must die\\n };\\n\\n xhr.onabort = function () {\\n aborted = true;\\n };\\n\\n xhr.ontimeout = errorFunc;\\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\\n\\n if (!sync) {\\n xhr.withCredentials = !!options.withCredentials;\\n } // Cannot set timeout with sync request\\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\\n\\n\\n if (!sync && options.timeout > 0) {\\n timeoutTimer = setTimeout(function () {\\n if (aborted) return;\\n aborted = true; //IE9 may still call readystatechange\\n\\n xhr.abort(\\\"timeout\\\");\\n var e = new Error(\\\"XMLHttpRequest timeout\\\");\\n e.code = \\\"ETIMEDOUT\\\";\\n errorFunc(e);\\n }, options.timeout);\\n }\\n\\n if (xhr.setRequestHeader) {\\n for (key in headers) {\\n if (headers.hasOwnProperty(key)) {\\n xhr.setRequestHeader(key, headers[key]);\\n }\\n }\\n } else if (options.headers && !isEmpty(options.headers)) {\\n throw new Error(\\\"Headers cannot be set on an XDomainRequest object\\\");\\n }\\n\\n if (\\\"responseType\\\" in options) {\\n xhr.responseType = options.responseType;\\n }\\n\\n if (\\\"beforeSend\\\" in options && typeof options.beforeSend === \\\"function\\\") {\\n options.beforeSend(xhr);\\n } // Microsoft Edge browser sends \\\"undefined\\\" when send is called with undefined value.\\n // XMLHttpRequest spec says to pass null as body to indicate no body\\n // See https://github.com/naugtur/xhr/issues/100.\\n\\n\\n xhr.send(body || null);\\n return xhr;\\n}\\n\\nfunction getXml(xhr) {\\n // xhr.responseXML will throw Exception \\\"InvalidStateError\\\" or \\\"DOMException\\\"\\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\\n try {\\n if (xhr.responseType === \\\"document\\\") {\\n return xhr.responseXML;\\n }\\n\\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \\\"parsererror\\\";\\n\\n if (xhr.responseType === \\\"\\\" && !firefoxBugTakenEffect) {\\n return xhr.responseXML;\\n }\\n } catch (e) {}\\n\\n return null;\\n}\\n\\nfunction noop() {}\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/xhr/lib/index.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@xmldom/xmldom/lib/conventions.js\":\n/*!*********************************************************!*\\\n !*** ../node_modules/@xmldom/xmldom/lib/conventions.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/**\\n * \\\"Shallow freezes\\\" an object to render it immutable.\\n * Uses `Object.freeze` if available,\\n * otherwise the immutability is only in the type.\\n *\\n * Is used to create \\\"enum like\\\" objects.\\n *\\n * @template T\\n * @param {T} object the object to freeze\\n * @param {Pick = Object} oc `Object` by default,\\n * \\t\\t\\t\\tallows to inject custom object constructor for tests\\n * @returns {Readonly}\\n *\\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\\n */\\nfunction freeze(object, oc) {\\n\\tif (oc === undefined) {\\n\\t\\toc = Object\\n\\t}\\n\\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\\n}\\n\\n/**\\n * All mime types that are allowed as input to `DOMParser.parseFromString`\\n *\\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\\n * @see DOMParser.prototype.parseFromString\\n */\\nvar MIME_TYPE = freeze({\\n\\t/**\\n\\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\\n\\t *\\n\\t * @see DOMParser.SupportedType.isHTML\\n\\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\\n\\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\\n\\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\\n\\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\\n\\t */\\n\\tHTML: 'text/html',\\n\\n\\t/**\\n\\t * Helper method to check a mime type if it indicates an HTML document\\n\\t *\\n\\t * @param {string} [value]\\n\\t * @returns {boolean}\\n\\t *\\n\\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\\n\\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\\n\\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\\n\\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \\t */\\n\\tisHTML: function (value) {\\n\\t\\treturn value === MIME_TYPE.HTML\\n\\t},\\n\\n\\t/**\\n\\t * `application/xml`, the standard mime type for XML documents.\\n\\t *\\n\\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\\n\\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\\n\\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\\n\\t */\\n\\tXML_APPLICATION: 'application/xml',\\n\\n\\t/**\\n\\t * `text/html`, an alias for `application/xml`.\\n\\t *\\n\\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\\n\\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\\n\\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\\n\\t */\\n\\tXML_TEXT: 'text/xml',\\n\\n\\t/**\\n\\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\\n\\t * but is parsed as an XML document.\\n\\t *\\n\\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\\n\\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\\n\\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\\n\\t */\\n\\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\\n\\n\\t/**\\n\\t * `image/svg+xml`,\\n\\t *\\n\\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\\n\\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\\n\\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\\n\\t */\\n\\tXML_SVG_IMAGE: 'image/svg+xml',\\n})\\n\\n/**\\n * Namespaces that are used in this code base.\\n *\\n * @see http://www.w3.org/TR/REC-xml-names\\n */\\nvar NAMESPACE = freeze({\\n\\t/**\\n\\t * The XHTML namespace.\\n\\t *\\n\\t * @see http://www.w3.org/1999/xhtml\\n\\t */\\n\\tHTML: 'http://www.w3.org/1999/xhtml',\\n\\n\\t/**\\n\\t * Checks if `uri` equals `NAMESPACE.HTML`.\\n\\t *\\n\\t * @param {string} [uri]\\n\\t *\\n\\t * @see NAMESPACE.HTML\\n\\t */\\n\\tisHTML: function (uri) {\\n\\t\\treturn uri === NAMESPACE.HTML\\n\\t},\\n\\n\\t/**\\n\\t * The SVG namespace.\\n\\t *\\n\\t * @see http://www.w3.org/2000/svg\\n\\t */\\n\\tSVG: 'http://www.w3.org/2000/svg',\\n\\n\\t/**\\n\\t * The `xml:` namespace.\\n\\t *\\n\\t * @see http://www.w3.org/XML/1998/namespace\\n\\t */\\n\\tXML: 'http://www.w3.org/XML/1998/namespace',\\n\\n\\t/**\\n\\t * The `xmlns:` namespace\\n\\t *\\n\\t * @see https://www.w3.org/2000/xmlns/\\n\\t */\\n\\tXMLNS: 'http://www.w3.org/2000/xmlns/',\\n})\\n\\nexports.freeze = freeze;\\nexports.MIME_TYPE = MIME_TYPE;\\nexports.NAMESPACE = NAMESPACE;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@xmldom/xmldom/lib/conventions.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@xmldom/xmldom/lib/dom-parser.js\":\n/*!********************************************************!*\\\n !*** ../node_modules/@xmldom/xmldom/lib/dom-parser.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var conventions = __webpack_require__(/*! ./conventions */ \\\"../node_modules/@xmldom/xmldom/lib/conventions.js\\\");\\nvar dom = __webpack_require__(/*! ./dom */ \\\"../node_modules/@xmldom/xmldom/lib/dom.js\\\")\\nvar entities = __webpack_require__(/*! ./entities */ \\\"../node_modules/@xmldom/xmldom/lib/entities.js\\\");\\nvar sax = __webpack_require__(/*! ./sax */ \\\"../node_modules/@xmldom/xmldom/lib/sax.js\\\");\\n\\nvar DOMImplementation = dom.DOMImplementation;\\n\\nvar NAMESPACE = conventions.NAMESPACE;\\n\\nvar ParseError = sax.ParseError;\\nvar XMLReader = sax.XMLReader;\\n\\nfunction DOMParser(options){\\n\\tthis.options = options ||{locator:{}};\\n}\\n\\nDOMParser.prototype.parseFromString = function(source,mimeType){\\n\\tvar options = this.options;\\n\\tvar sax = new XMLReader();\\n\\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\\n\\tvar errorHandler = options.errorHandler;\\n\\tvar locator = options.locator;\\n\\tvar defaultNSMap = options.xmlns||{};\\n\\tvar isHTML = /\\\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\\n \\tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\\n\\tif(locator){\\n\\t\\tdomBuilder.setDocumentLocator(locator)\\n\\t}\\n\\n\\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\\n\\tsax.domBuilder = options.domBuilder || domBuilder;\\n\\tif(isHTML){\\n\\t\\tdefaultNSMap[''] = NAMESPACE.HTML;\\n\\t}\\n\\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\\n\\tif(source && typeof source === 'string'){\\n\\t\\tsax.parse(source,defaultNSMap,entityMap);\\n\\t}else{\\n\\t\\tsax.errorHandler.error(\\\"invalid doc source\\\");\\n\\t}\\n\\treturn domBuilder.doc;\\n}\\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\\n\\tif(!errorImpl){\\n\\t\\tif(domBuilder instanceof DOMHandler){\\n\\t\\t\\treturn domBuilder;\\n\\t\\t}\\n\\t\\terrorImpl = domBuilder ;\\n\\t}\\n\\tvar errorHandler = {}\\n\\tvar isCallback = errorImpl instanceof Function;\\n\\tlocator = locator||{}\\n\\tfunction build(key){\\n\\t\\tvar fn = errorImpl[key];\\n\\t\\tif(!fn && isCallback){\\n\\t\\t\\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\\n\\t\\t}\\n\\t\\terrorHandler[key] = fn && function(msg){\\n\\t\\t\\tfn('[xmldom '+key+']\\\\t'+msg+_locator(locator));\\n\\t\\t}||function(){};\\n\\t}\\n\\tbuild('warning');\\n\\tbuild('error');\\n\\tbuild('fatalError');\\n\\treturn errorHandler;\\n}\\n\\n//console.log('#\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n####')\\n/**\\n * +ContentHandler+ErrorHandler\\n * +LexicalHandler+EntityResolver2\\n * -DeclHandler-DTDHandler\\n *\\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\\n */\\nfunction DOMHandler() {\\n this.cdata = false;\\n}\\nfunction position(locator,node){\\n\\tnode.lineNumber = locator.lineNumber;\\n\\tnode.columnNumber = locator.columnNumber;\\n}\\n/**\\n * @see org.xml.sax.ContentHandler#startDocument\\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\\n */\\nDOMHandler.prototype = {\\n\\tstartDocument : function() {\\n \\tthis.doc = new DOMImplementation().createDocument(null, null, null);\\n \\tif (this.locator) {\\n \\tthis.doc.documentURI = this.locator.systemId;\\n \\t}\\n\\t},\\n\\tstartElement:function(namespaceURI, localName, qName, attrs) {\\n\\t\\tvar doc = this.doc;\\n\\t var el = doc.createElementNS(namespaceURI, qName||localName);\\n\\t var len = attrs.length;\\n\\t appendElement(this, el);\\n\\t this.currentElement = el;\\n\\n\\t\\tthis.locator && position(this.locator,el)\\n\\t for (var i = 0 ; i < len; i++) {\\n\\t var namespaceURI = attrs.getURI(i);\\n\\t var value = attrs.getValue(i);\\n\\t var qName = attrs.getQName(i);\\n\\t\\t\\tvar attr = doc.createAttributeNS(namespaceURI, qName);\\n\\t\\t\\tthis.locator &&position(attrs.getLocator(i),attr);\\n\\t\\t\\tattr.value = attr.nodeValue = value;\\n\\t\\t\\tel.setAttributeNode(attr)\\n\\t }\\n\\t},\\n\\tendElement:function(namespaceURI, localName, qName) {\\n\\t\\tvar current = this.currentElement\\n\\t\\tvar tagName = current.tagName;\\n\\t\\tthis.currentElement = current.parentNode;\\n\\t},\\n\\tstartPrefixMapping:function(prefix, uri) {\\n\\t},\\n\\tendPrefixMapping:function(prefix) {\\n\\t},\\n\\tprocessingInstruction:function(target, data) {\\n\\t var ins = this.doc.createProcessingInstruction(target, data);\\n\\t this.locator && position(this.locator,ins)\\n\\t appendElement(this, ins);\\n\\t},\\n\\tignorableWhitespace:function(ch, start, length) {\\n\\t},\\n\\tcharacters:function(chars, start, length) {\\n\\t\\tchars = _toString.apply(this,arguments)\\n\\t\\t//console.log(chars)\\n\\t\\tif(chars){\\n\\t\\t\\tif (this.cdata) {\\n\\t\\t\\t\\tvar charNode = this.doc.createCDATASection(chars);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvar charNode = this.doc.createTextNode(chars);\\n\\t\\t\\t}\\n\\t\\t\\tif(this.currentElement){\\n\\t\\t\\t\\tthis.currentElement.appendChild(charNode);\\n\\t\\t\\t}else if(/^\\\\s*$/.test(chars)){\\n\\t\\t\\t\\tthis.doc.appendChild(charNode);\\n\\t\\t\\t\\t//process xml\\n\\t\\t\\t}\\n\\t\\t\\tthis.locator && position(this.locator,charNode)\\n\\t\\t}\\n\\t},\\n\\tskippedEntity:function(name) {\\n\\t},\\n\\tendDocument:function() {\\n\\t\\tthis.doc.normalize();\\n\\t},\\n\\tsetDocumentLocator:function (locator) {\\n\\t if(this.locator = locator){// && !('lineNumber' in locator)){\\n\\t \\tlocator.lineNumber = 0;\\n\\t }\\n\\t},\\n\\t//LexicalHandler\\n\\tcomment:function(chars, start, length) {\\n\\t\\tchars = _toString.apply(this,arguments)\\n\\t var comm = this.doc.createComment(chars);\\n\\t this.locator && position(this.locator,comm)\\n\\t appendElement(this, comm);\\n\\t},\\n\\n\\tstartCDATA:function() {\\n\\t //used in characters() methods\\n\\t this.cdata = true;\\n\\t},\\n\\tendCDATA:function() {\\n\\t this.cdata = false;\\n\\t},\\n\\n\\tstartDTD:function(name, publicId, systemId) {\\n\\t\\tvar impl = this.doc.implementation;\\n\\t if (impl && impl.createDocumentType) {\\n\\t var dt = impl.createDocumentType(name, publicId, systemId);\\n\\t this.locator && position(this.locator,dt)\\n\\t appendElement(this, dt);\\n\\t\\t\\t\\t\\tthis.doc.doctype = dt;\\n\\t }\\n\\t},\\n\\t/**\\n\\t * @see org.xml.sax.ErrorHandler\\n\\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\\n\\t */\\n\\twarning:function(error) {\\n\\t\\tconsole.warn('[xmldom warning]\\\\t'+error,_locator(this.locator));\\n\\t},\\n\\terror:function(error) {\\n\\t\\tconsole.error('[xmldom error]\\\\t'+error,_locator(this.locator));\\n\\t},\\n\\tfatalError:function(error) {\\n\\t\\tthrow new ParseError(error, this.locator);\\n\\t}\\n}\\nfunction _locator(l){\\n\\tif(l){\\n\\t\\treturn '\\\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\\n\\t}\\n}\\nfunction _toString(chars,start,length){\\n\\tif(typeof chars == 'string'){\\n\\t\\treturn chars.substr(start,length)\\n\\t}else{//java sax connect width xmldom on rhino(what about: \\\"? && !(chars instanceof String)\\\")\\n\\t\\tif(chars.length >= start+length || start){\\n\\t\\t\\treturn new java.lang.String(chars,start,length)+'';\\n\\t\\t}\\n\\t\\treturn chars;\\n\\t}\\n}\\n\\n/*\\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\\n * used method of org.xml.sax.ext.LexicalHandler:\\n * #comment(chars, start, length)\\n * #startCDATA()\\n * #endCDATA()\\n * #startDTD(name, publicId, systemId)\\n *\\n *\\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\\n * #endDTD()\\n * #startEntity(name)\\n * #endEntity(name)\\n *\\n *\\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\\n * IGNORED method of org.xml.sax.ext.DeclHandler\\n * \\t#attributeDecl(eName, aName, type, mode, value)\\n * #elementDecl(name, model)\\n * #externalEntityDecl(name, publicId, systemId)\\n * #internalEntityDecl(name, value)\\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\\n * IGNORED method of org.xml.sax.EntityResolver2\\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\\n * #resolveEntity(publicId, systemId)\\n * #getExternalSubset(name, baseURI)\\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\\n * IGNORED method of org.xml.sax.DTDHandler\\n * #notationDecl(name, publicId, systemId) {};\\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\\n */\\n\\\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\\\".replace(/\\\\w+/g,function(key){\\n\\tDOMHandler.prototype[key] = function(){return null}\\n})\\n\\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\\nfunction appendElement (hander,node) {\\n if (!hander.currentElement) {\\n hander.doc.appendChild(node);\\n } else {\\n hander.currentElement.appendChild(node);\\n }\\n}//appendChild and setAttributeNS are preformance key\\n\\nexports.__DOMHandler = DOMHandler;\\nexports.DOMParser = DOMParser;\\n\\n/**\\n * @deprecated Import/require from main entry point instead\\n */\\nexports.DOMImplementation = dom.DOMImplementation;\\n\\n/**\\n * @deprecated Import/require from main entry point instead\\n */\\nexports.XMLSerializer = dom.XMLSerializer;\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@xmldom/xmldom/lib/dom-parser.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@xmldom/xmldom/lib/dom.js\":\n/*!*************************************************!*\\\n !*** ../node_modules/@xmldom/xmldom/lib/dom.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var conventions = __webpack_require__(/*! ./conventions */ \\\"../node_modules/@xmldom/xmldom/lib/conventions.js\\\");\\n\\nvar NAMESPACE = conventions.NAMESPACE;\\n\\n/**\\n * A prerequisite for `[].filter`, to drop elements that are empty\\n * @param {string} input\\n * @returns {boolean}\\n */\\nfunction notEmptyString (input) {\\n\\treturn input !== ''\\n}\\n/**\\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\\n *\\n * @param {string} input\\n * @returns {string[]} (can be empty)\\n */\\nfunction splitOnASCIIWhitespace(input) {\\n\\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\\n\\treturn input ? input.split(/[\\\\t\\\\n\\\\f\\\\r ]+/).filter(notEmptyString) : []\\n}\\n\\n/**\\n * Adds element as a key to current if it is not already present.\\n *\\n * @param {Record} current\\n * @param {string} element\\n * @returns {Record}\\n */\\nfunction orderedSetReducer (current, element) {\\n\\tif (!current.hasOwnProperty(element)) {\\n\\t\\tcurrent[element] = true;\\n\\t}\\n\\treturn current;\\n}\\n\\n/**\\n * @see https://infra.spec.whatwg.org/#ordered-set\\n * @param {string} input\\n * @returns {string[]}\\n */\\nfunction toOrderedSet(input) {\\n\\tif (!input) return [];\\n\\tvar list = splitOnASCIIWhitespace(input);\\n\\treturn Object.keys(list.reduce(orderedSetReducer, {}))\\n}\\n\\n/**\\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\\n * which we can not rely on being available.\\n *\\n * @param {any[]} list\\n * @returns {function(any): boolean}\\n */\\nfunction arrayIncludes (list) {\\n\\treturn function(element) {\\n\\t\\treturn list && list.indexOf(element) !== -1;\\n\\t}\\n}\\n\\nfunction copy(src,dest){\\n\\tfor(var p in src){\\n\\t\\tdest[p] = src[p];\\n\\t}\\n}\\n\\n/**\\n^\\\\w+\\\\.prototype\\\\.([_\\\\w]+)\\\\s*=\\\\s*((?:.*\\\\{\\\\s*?[\\\\r\\\\n][\\\\s\\\\S]*?^})|\\\\S.*?(?=[;\\\\r\\\\n]));?\\n^\\\\w+\\\\.prototype\\\\.([_\\\\w]+)\\\\s*=\\\\s*(\\\\S.*?(?=[;\\\\r\\\\n]));?\\n */\\nfunction _extends(Class,Super){\\n\\tvar pt = Class.prototype;\\n\\tif(!(pt instanceof Super)){\\n\\t\\tfunction t(){};\\n\\t\\tt.prototype = Super.prototype;\\n\\t\\tt = new t();\\n\\t\\tcopy(pt,t);\\n\\t\\tClass.prototype = pt = t;\\n\\t}\\n\\tif(pt.constructor != Class){\\n\\t\\tif(typeof Class != 'function'){\\n\\t\\t\\tconsole.error(\\\"unknown Class:\\\"+Class)\\n\\t\\t}\\n\\t\\tpt.constructor = Class\\n\\t}\\n}\\n\\n// Node Types\\nvar NodeType = {}\\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\\n\\n// ExceptionCode\\nvar ExceptionCode = {}\\nvar ExceptionMessage = {};\\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\\\"Index size error\\\"),1);\\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\\\"DOMString size error\\\"),2);\\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\\\"Hierarchy request error\\\"),3);\\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\\\"Wrong document\\\"),4);\\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\\\"Invalid character\\\"),5);\\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\\\"No data allowed\\\"),6);\\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\\\"No modification allowed\\\"),7);\\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\\\"Not found\\\"),8);\\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\\\"Not supported\\\"),9);\\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\\\"Attribute in use\\\"),10);\\n//level2\\nvar INVALID_STATE_ERR \\t= ExceptionCode.INVALID_STATE_ERR \\t= ((ExceptionMessage[11]=\\\"Invalid state\\\"),11);\\nvar SYNTAX_ERR \\t= ExceptionCode.SYNTAX_ERR \\t= ((ExceptionMessage[12]=\\\"Syntax error\\\"),12);\\nvar INVALID_MODIFICATION_ERR \\t= ExceptionCode.INVALID_MODIFICATION_ERR \\t= ((ExceptionMessage[13]=\\\"Invalid modification\\\"),13);\\nvar NAMESPACE_ERR \\t= ExceptionCode.NAMESPACE_ERR \\t= ((ExceptionMessage[14]=\\\"Invalid namespace\\\"),14);\\nvar INVALID_ACCESS_ERR \\t= ExceptionCode.INVALID_ACCESS_ERR \\t= ((ExceptionMessage[15]=\\\"Invalid access\\\"),15);\\n\\n/**\\n * DOM Level 2\\n * Object DOMException\\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\\n */\\nfunction DOMException(code, message) {\\n\\tif(message instanceof Error){\\n\\t\\tvar error = message;\\n\\t}else{\\n\\t\\terror = this;\\n\\t\\tError.call(this, ExceptionMessage[code]);\\n\\t\\tthis.message = ExceptionMessage[code];\\n\\t\\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\\n\\t}\\n\\terror.code = code;\\n\\tif(message) this.message = this.message + \\\": \\\" + message;\\n\\treturn error;\\n};\\nDOMException.prototype = Error.prototype;\\ncopy(ExceptionCode,DOMException)\\n\\n/**\\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\\n * The items in the NodeList are accessible via an integral index, starting from 0.\\n */\\nfunction NodeList() {\\n};\\nNodeList.prototype = {\\n\\t/**\\n\\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\\n\\t * @standard level1\\n\\t */\\n\\tlength:0, \\n\\t/**\\n\\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\\n\\t * @standard level1\\n\\t * @param index unsigned long \\n\\t * Index into the collection.\\n\\t * @return Node\\n\\t * \\tThe node at the indexth position in the NodeList, or null if that is not a valid index. \\n\\t */\\n\\titem: function(index) {\\n\\t\\treturn this[index] || null;\\n\\t},\\n\\ttoString:function(isHTML,nodeFilter){\\n\\t\\tfor(var buf = [], i = 0;i=0){\\n\\t\\tvar lastIndex = list.length-1\\n\\t\\twhile(i0 || key == 'xmlns'){\\n//\\t\\t\\treturn null;\\n//\\t\\t}\\n\\t\\t//console.log()\\n\\t\\tvar i = this.length;\\n\\t\\twhile(i--){\\n\\t\\t\\tvar attr = this[i];\\n\\t\\t\\t//console.log(attr.nodeName,key)\\n\\t\\t\\tif(attr.nodeName == key){\\n\\t\\t\\t\\treturn attr;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\tsetNamedItem: function(attr) {\\n\\t\\tvar el = attr.ownerElement;\\n\\t\\tif(el && el!=this._ownerElement){\\n\\t\\t\\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\\n\\t\\t}\\n\\t\\tvar oldAttr = this.getNamedItem(attr.nodeName);\\n\\t\\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\\n\\t\\treturn oldAttr;\\n\\t},\\n\\t/* returns Node */\\n\\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\\n\\t\\tvar el = attr.ownerElement, oldAttr;\\n\\t\\tif(el && el!=this._ownerElement){\\n\\t\\t\\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\\n\\t\\t}\\n\\t\\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\\n\\t\\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\\n\\t\\treturn oldAttr;\\n\\t},\\n\\n\\t/* returns Node */\\n\\tremoveNamedItem: function(key) {\\n\\t\\tvar attr = this.getNamedItem(key);\\n\\t\\t_removeNamedNode(this._ownerElement,this,attr);\\n\\t\\treturn attr;\\n\\t\\t\\n\\t\\t\\n\\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\\n\\t\\n\\t//for level2\\n\\tremoveNamedItemNS:function(namespaceURI,localName){\\n\\t\\tvar attr = this.getNamedItemNS(namespaceURI,localName);\\n\\t\\t_removeNamedNode(this._ownerElement,this,attr);\\n\\t\\treturn attr;\\n\\t},\\n\\tgetNamedItemNS: function(namespaceURI, localName) {\\n\\t\\tvar i = this.length;\\n\\t\\twhile(i--){\\n\\t\\t\\tvar node = this[i];\\n\\t\\t\\tif(node.localName == localName && node.namespaceURI == namespaceURI){\\n\\t\\t\\t\\treturn node;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn null;\\n\\t}\\n};\\n\\n/**\\n * The DOMImplementation interface represents an object providing methods\\n * which are not dependent on any particular document.\\n * Such an object is returned by the `Document.implementation` property.\\n *\\n * __The individual methods describe the differences compared to the specs.__\\n *\\n * @constructor\\n *\\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\\n */\\nfunction DOMImplementation() {\\n}\\n\\nDOMImplementation.prototype = {\\n\\t/**\\n\\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\\n\\t * The different implementations fairly diverged in what kind of features were reported.\\n\\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\\n\\t *\\n\\t * @deprecated It is deprecated and modern browsers return true in all cases.\\n\\t *\\n\\t * @param {string} feature\\n\\t * @param {string} [version]\\n\\t * @returns {boolean} always true\\n\\t *\\n\\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\\n\\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\\n\\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\\n\\t */\\n\\thasFeature: function(feature, version) {\\n\\t\\t\\treturn true;\\n\\t},\\n\\t/**\\n\\t * Creates an XML Document object of the specified type with its document element.\\n\\t *\\n\\t * __It behaves slightly different from the description in the living standard__:\\n\\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\\n\\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\\n\\t * - this implementation is not validating names or qualified names\\n\\t * (when parsing XML strings, the SAX parser takes care of that)\\n\\t *\\n\\t * @param {string|null} namespaceURI\\n\\t * @param {string} qualifiedName\\n\\t * @param {DocumentType=null} doctype\\n\\t * @returns {Document}\\n\\t *\\n\\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\\n\\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\\n\\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core\\n\\t *\\n\\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\\n\\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\\n\\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\\n\\t */\\n\\tcreateDocument: function(namespaceURI, qualifiedName, doctype){\\n\\t\\tvar doc = new Document();\\n\\t\\tdoc.implementation = this;\\n\\t\\tdoc.childNodes = new NodeList();\\n\\t\\tdoc.doctype = doctype || null;\\n\\t\\tif (doctype){\\n\\t\\t\\tdoc.appendChild(doctype);\\n\\t\\t}\\n\\t\\tif (qualifiedName){\\n\\t\\t\\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\\n\\t\\t\\tdoc.appendChild(root);\\n\\t\\t}\\n\\t\\treturn doc;\\n\\t},\\n\\t/**\\n\\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\\n\\t *\\n\\t * __This behavior is slightly different from the in the specs__:\\n\\t * - this implementation is not validating names or qualified names\\n\\t * (when parsing XML strings, the SAX parser takes care of that)\\n\\t *\\n\\t * @param {string} qualifiedName\\n\\t * @param {string} [publicId]\\n\\t * @param {string} [systemId]\\n\\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\\n\\t * \\t\\t\\t\\t or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\\n\\t *\\n\\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\\n\\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\\n\\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\\n\\t *\\n\\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\\n\\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\\n\\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\\n\\t */\\n\\tcreateDocumentType: function(qualifiedName, publicId, systemId){\\n\\t\\tvar node = new DocumentType();\\n\\t\\tnode.name = qualifiedName;\\n\\t\\tnode.nodeName = qualifiedName;\\n\\t\\tnode.publicId = publicId || '';\\n\\t\\tnode.systemId = systemId || '';\\n\\n\\t\\treturn node;\\n\\t}\\n};\\n\\n\\n/**\\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\\n */\\n\\nfunction Node() {\\n};\\n\\nNode.prototype = {\\n\\tfirstChild : null,\\n\\tlastChild : null,\\n\\tpreviousSibling : null,\\n\\tnextSibling : null,\\n\\tattributes : null,\\n\\tparentNode : null,\\n\\tchildNodes : null,\\n\\townerDocument : null,\\n\\tnodeValue : null,\\n\\tnamespaceURI : null,\\n\\tprefix : null,\\n\\tlocalName : null,\\n\\t// Modified in DOM Level 2:\\n\\tinsertBefore:function(newChild, refChild){//raises \\n\\t\\treturn _insertBefore(this,newChild,refChild);\\n\\t},\\n\\treplaceChild:function(newChild, oldChild){//raises \\n\\t\\tthis.insertBefore(newChild,oldChild);\\n\\t\\tif(oldChild){\\n\\t\\t\\tthis.removeChild(oldChild);\\n\\t\\t}\\n\\t},\\n\\tremoveChild:function(oldChild){\\n\\t\\treturn _removeChild(this,oldChild);\\n\\t},\\n\\tappendChild:function(newChild){\\n\\t\\treturn this.insertBefore(newChild,null);\\n\\t},\\n\\thasChildNodes:function(){\\n\\t\\treturn this.firstChild != null;\\n\\t},\\n\\tcloneNode:function(deep){\\n\\t\\treturn cloneNode(this.ownerDocument||this,this,deep);\\n\\t},\\n\\t// Modified in DOM Level 2:\\n\\tnormalize:function(){\\n\\t\\tvar child = this.firstChild;\\n\\t\\twhile(child){\\n\\t\\t\\tvar next = child.nextSibling;\\n\\t\\t\\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\\n\\t\\t\\t\\tthis.removeChild(next);\\n\\t\\t\\t\\tchild.appendData(next.data);\\n\\t\\t\\t}else{\\n\\t\\t\\t\\tchild.normalize();\\n\\t\\t\\t\\tchild = next;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n \\t// Introduced in DOM Level 2:\\n\\tisSupported:function(feature, version){\\n\\t\\treturn this.ownerDocument.implementation.hasFeature(feature,version);\\n\\t},\\n // Introduced in DOM Level 2:\\n hasAttributes:function(){\\n \\treturn this.attributes.length>0;\\n },\\n\\t/**\\n\\t * Look up the prefix associated to the given namespace URI, starting from this node.\\n\\t * **The default namespace declarations are ignored by this method.**\\n\\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\\n\\t *\\n\\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\\n\\t *\\n\\t * @param {string | null} namespaceURI\\n\\t * @returns {string | null}\\n\\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\\n\\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\\n\\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\\n\\t * @see https://github.com/xmldom/xmldom/issues/322\\n\\t */\\n lookupPrefix:function(namespaceURI){\\n \\tvar el = this;\\n \\twhile(el){\\n \\t\\tvar map = el._nsMap;\\n \\t\\t//console.dir(map)\\n \\t\\tif(map){\\n \\t\\t\\tfor(var n in map){\\n \\t\\t\\t\\tif(map[n] == namespaceURI){\\n \\t\\t\\t\\t\\treturn n;\\n \\t\\t\\t\\t}\\n \\t\\t\\t}\\n \\t\\t}\\n \\t\\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\\n \\t}\\n \\treturn null;\\n },\\n // Introduced in DOM Level 3:\\n lookupNamespaceURI:function(prefix){\\n \\tvar el = this;\\n \\twhile(el){\\n \\t\\tvar map = el._nsMap;\\n \\t\\t//console.dir(map)\\n \\t\\tif(map){\\n \\t\\t\\tif(prefix in map){\\n \\t\\t\\t\\treturn map[prefix] ;\\n \\t\\t\\t}\\n \\t\\t}\\n \\t\\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\\n \\t}\\n \\treturn null;\\n },\\n // Introduced in DOM Level 3:\\n isDefaultNamespace:function(namespaceURI){\\n \\tvar prefix = this.lookupPrefix(namespaceURI);\\n \\treturn prefix == null;\\n }\\n};\\n\\n\\nfunction _xmlEncoder(c){\\n\\treturn c == '<' && '<' ||\\n c == '>' && '>' ||\\n c == '&' && '&' ||\\n c == '\\\"' && '"' ||\\n '&#'+c.charCodeAt()+';'\\n}\\n\\n\\ncopy(NodeType,Node);\\ncopy(NodeType,Node.prototype);\\n\\n/**\\n * @param callback return true for continue,false for break\\n * @return boolean true: break visit;\\n */\\nfunction _visitNode(node,callback){\\n\\tif(callback(node)){\\n\\t\\treturn true;\\n\\t}\\n\\tif(node = node.firstChild){\\n\\t\\tdo{\\n\\t\\t\\tif(_visitNode(node,callback)){return true}\\n }while(node=node.nextSibling)\\n }\\n}\\n\\n\\n\\nfunction Document(){\\n}\\n\\nfunction _onAddAttribute(doc,el,newAttr){\\n\\tdoc && doc._inc++;\\n\\tvar ns = newAttr.namespaceURI ;\\n\\tif(ns === NAMESPACE.XMLNS){\\n\\t\\t//update namespace\\n\\t\\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\\n\\t}\\n}\\n\\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\\n\\tdoc && doc._inc++;\\n\\tvar ns = newAttr.namespaceURI ;\\n\\tif(ns === NAMESPACE.XMLNS){\\n\\t\\t//update namespace\\n\\t\\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\\n\\t}\\n}\\n\\nfunction _onUpdateChild(doc,el,newChild){\\n\\tif(doc && doc._inc){\\n\\t\\tdoc._inc++;\\n\\t\\t//update childNodes\\n\\t\\tvar cs = el.childNodes;\\n\\t\\tif(newChild){\\n\\t\\t\\tcs[cs.length++] = newChild;\\n\\t\\t}else{\\n\\t\\t\\t//console.log(1)\\n\\t\\t\\tvar child = el.firstChild;\\n\\t\\t\\tvar i = 0;\\n\\t\\t\\twhile(child){\\n\\t\\t\\t\\tcs[i++] = child;\\n\\t\\t\\t\\tchild =child.nextSibling;\\n\\t\\t\\t}\\n\\t\\t\\tcs.length = i;\\n\\t\\t}\\n\\t}\\n}\\n\\n/**\\n * attributes;\\n * children;\\n * \\n * writeable properties:\\n * nodeValue,Attr:value,CharacterData:data\\n * prefix\\n */\\nfunction _removeChild(parentNode,child){\\n\\tvar previous = child.previousSibling;\\n\\tvar next = child.nextSibling;\\n\\tif(previous){\\n\\t\\tprevious.nextSibling = next;\\n\\t}else{\\n\\t\\tparentNode.firstChild = next\\n\\t}\\n\\tif(next){\\n\\t\\tnext.previousSibling = previous;\\n\\t}else{\\n\\t\\tparentNode.lastChild = previous;\\n\\t}\\n\\t_onUpdateChild(parentNode.ownerDocument,parentNode);\\n\\treturn child;\\n}\\n/**\\n * preformance key(refChild == null)\\n */\\nfunction _insertBefore(parentNode,newChild,nextChild){\\n\\tvar cp = newChild.parentNode;\\n\\tif(cp){\\n\\t\\tcp.removeChild(newChild);//remove and update\\n\\t}\\n\\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\\n\\t\\tvar newFirst = newChild.firstChild;\\n\\t\\tif (newFirst == null) {\\n\\t\\t\\treturn newChild;\\n\\t\\t}\\n\\t\\tvar newLast = newChild.lastChild;\\n\\t}else{\\n\\t\\tnewFirst = newLast = newChild;\\n\\t}\\n\\tvar pre = nextChild ? nextChild.previousSibling : parentNode.lastChild;\\n\\n\\tnewFirst.previousSibling = pre;\\n\\tnewLast.nextSibling = nextChild;\\n\\t\\n\\t\\n\\tif(pre){\\n\\t\\tpre.nextSibling = newFirst;\\n\\t}else{\\n\\t\\tparentNode.firstChild = newFirst;\\n\\t}\\n\\tif(nextChild == null){\\n\\t\\tparentNode.lastChild = newLast;\\n\\t}else{\\n\\t\\tnextChild.previousSibling = newLast;\\n\\t}\\n\\tdo{\\n\\t\\tnewFirst.parentNode = parentNode;\\n\\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\\n\\t_onUpdateChild(parentNode.ownerDocument||parentNode,parentNode);\\n\\t//console.log(parentNode.lastChild.nextSibling == null)\\n\\tif (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) {\\n\\t\\tnewChild.firstChild = newChild.lastChild = null;\\n\\t}\\n\\treturn newChild;\\n}\\nfunction _appendSingleChild(parentNode,newChild){\\n\\tvar cp = newChild.parentNode;\\n\\tif(cp){\\n\\t\\tvar pre = parentNode.lastChild;\\n\\t\\tcp.removeChild(newChild);//remove and update\\n\\t\\tvar pre = parentNode.lastChild;\\n\\t}\\n\\tvar pre = parentNode.lastChild;\\n\\tnewChild.parentNode = parentNode;\\n\\tnewChild.previousSibling = pre;\\n\\tnewChild.nextSibling = null;\\n\\tif(pre){\\n\\t\\tpre.nextSibling = newChild;\\n\\t}else{\\n\\t\\tparentNode.firstChild = newChild;\\n\\t}\\n\\tparentNode.lastChild = newChild;\\n\\t_onUpdateChild(parentNode.ownerDocument,parentNode,newChild);\\n\\treturn newChild;\\n\\t//console.log(\\\"__aa\\\",parentNode.lastChild.nextSibling == null)\\n}\\nDocument.prototype = {\\n\\t//implementation : null,\\n\\tnodeName : '#document',\\n\\tnodeType : DOCUMENT_NODE,\\n\\t/**\\n\\t * The DocumentType node of the document.\\n\\t *\\n\\t * @readonly\\n\\t * @type DocumentType\\n\\t */\\n\\tdoctype : null,\\n\\tdocumentElement : null,\\n\\t_inc : 1,\\n\\n\\tinsertBefore : function(newChild, refChild){//raises\\n\\t\\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\\n\\t\\t\\tvar child = newChild.firstChild;\\n\\t\\t\\twhile(child){\\n\\t\\t\\t\\tvar next = child.nextSibling;\\n\\t\\t\\t\\tthis.insertBefore(child,refChild);\\n\\t\\t\\t\\tchild = next;\\n\\t\\t\\t}\\n\\t\\t\\treturn newChild;\\n\\t\\t}\\n\\t\\tif(this.documentElement == null && newChild.nodeType == ELEMENT_NODE){\\n\\t\\t\\tthis.documentElement = newChild;\\n\\t\\t}\\n\\n\\t\\treturn _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild;\\n\\t},\\n\\tremoveChild : function(oldChild){\\n\\t\\tif(this.documentElement == oldChild){\\n\\t\\t\\tthis.documentElement = null;\\n\\t\\t}\\n\\t\\treturn _removeChild(this,oldChild);\\n\\t},\\n\\t// Introduced in DOM Level 2:\\n\\timportNode : function(importedNode,deep){\\n\\t\\treturn importNode(this,importedNode,deep);\\n\\t},\\n\\t// Introduced in DOM Level 2:\\n\\tgetElementById :\\tfunction(id){\\n\\t\\tvar rtv = null;\\n\\t\\t_visitNode(this.documentElement,function(node){\\n\\t\\t\\tif(node.nodeType == ELEMENT_NODE){\\n\\t\\t\\t\\tif(node.getAttribute('id') == id){\\n\\t\\t\\t\\t\\trtv = node;\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t})\\n\\t\\treturn rtv;\\n\\t},\\n\\n\\t/**\\n\\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\\n\\t * of all child elements which have **all** of the given class name(s).\\n\\t *\\n\\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\\n\\t *\\n\\t *\\n\\t * Warning: This is a live LiveNodeList.\\n\\t * Changes in the DOM will reflect in the array as the changes occur.\\n\\t * If an element selected by this array no longer qualifies for the selector,\\n\\t * it will automatically be removed. Be aware of this for iteration purposes.\\n\\t *\\n\\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\\n\\t *\\n\\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\\n\\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\\n\\t */\\n\\tgetElementsByClassName: function(classNames) {\\n\\t\\tvar classNamesSet = toOrderedSet(classNames)\\n\\t\\treturn new LiveNodeList(this, function(base) {\\n\\t\\t\\tvar ls = [];\\n\\t\\t\\tif (classNamesSet.length > 0) {\\n\\t\\t\\t\\t_visitNode(base.documentElement, function(node) {\\n\\t\\t\\t\\t\\tif(node !== base && node.nodeType === ELEMENT_NODE) {\\n\\t\\t\\t\\t\\t\\tvar nodeClassNames = node.getAttribute('class')\\n\\t\\t\\t\\t\\t\\t// can be null if the attribute does not exist\\n\\t\\t\\t\\t\\t\\tif (nodeClassNames) {\\n\\t\\t\\t\\t\\t\\t\\t// before splitting and iterating just compare them for the most common case\\n\\t\\t\\t\\t\\t\\t\\tvar matches = classNames === nodeClassNames;\\n\\t\\t\\t\\t\\t\\t\\tif (!matches) {\\n\\t\\t\\t\\t\\t\\t\\t\\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\\n\\t\\t\\t\\t\\t\\t\\t\\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\tif(matches) {\\n\\t\\t\\t\\t\\t\\t\\t\\tls.push(node);\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t\\treturn ls;\\n\\t\\t});\\n\\t},\\n\\n\\t//document factory method:\\n\\tcreateElement :\\tfunction(tagName){\\n\\t\\tvar node = new Element();\\n\\t\\tnode.ownerDocument = this;\\n\\t\\tnode.nodeName = tagName;\\n\\t\\tnode.tagName = tagName;\\n\\t\\tnode.localName = tagName;\\n\\t\\tnode.childNodes = new NodeList();\\n\\t\\tvar attrs\\t= node.attributes = new NamedNodeMap();\\n\\t\\tattrs._ownerElement = node;\\n\\t\\treturn node;\\n\\t},\\n\\tcreateDocumentFragment :\\tfunction(){\\n\\t\\tvar node = new DocumentFragment();\\n\\t\\tnode.ownerDocument = this;\\n\\t\\tnode.childNodes = new NodeList();\\n\\t\\treturn node;\\n\\t},\\n\\tcreateTextNode :\\tfunction(data){\\n\\t\\tvar node = new Text();\\n\\t\\tnode.ownerDocument = this;\\n\\t\\tnode.appendData(data)\\n\\t\\treturn node;\\n\\t},\\n\\tcreateComment :\\tfunction(data){\\n\\t\\tvar node = new Comment();\\n\\t\\tnode.ownerDocument = this;\\n\\t\\tnode.appendData(data)\\n\\t\\treturn node;\\n\\t},\\n\\tcreateCDATASection :\\tfunction(data){\\n\\t\\tvar node = new CDATASection();\\n\\t\\tnode.ownerDocument = this;\\n\\t\\tnode.appendData(data)\\n\\t\\treturn node;\\n\\t},\\n\\tcreateProcessingInstruction :\\tfunction(target,data){\\n\\t\\tvar node = new ProcessingInstruction();\\n\\t\\tnode.ownerDocument = this;\\n\\t\\tnode.tagName = node.target = target;\\n\\t\\tnode.nodeValue= node.data = data;\\n\\t\\treturn node;\\n\\t},\\n\\tcreateAttribute :\\tfunction(name){\\n\\t\\tvar node = new Attr();\\n\\t\\tnode.ownerDocument\\t= this;\\n\\t\\tnode.name = name;\\n\\t\\tnode.nodeName\\t= name;\\n\\t\\tnode.localName = name;\\n\\t\\tnode.specified = true;\\n\\t\\treturn node;\\n\\t},\\n\\tcreateEntityReference :\\tfunction(name){\\n\\t\\tvar node = new EntityReference();\\n\\t\\tnode.ownerDocument\\t= this;\\n\\t\\tnode.nodeName\\t= name;\\n\\t\\treturn node;\\n\\t},\\n\\t// Introduced in DOM Level 2:\\n\\tcreateElementNS :\\tfunction(namespaceURI,qualifiedName){\\n\\t\\tvar node = new Element();\\n\\t\\tvar pl = qualifiedName.split(':');\\n\\t\\tvar attrs\\t= node.attributes = new NamedNodeMap();\\n\\t\\tnode.childNodes = new NodeList();\\n\\t\\tnode.ownerDocument = this;\\n\\t\\tnode.nodeName = qualifiedName;\\n\\t\\tnode.tagName = qualifiedName;\\n\\t\\tnode.namespaceURI = namespaceURI;\\n\\t\\tif(pl.length == 2){\\n\\t\\t\\tnode.prefix = pl[0];\\n\\t\\t\\tnode.localName = pl[1];\\n\\t\\t}else{\\n\\t\\t\\t//el.prefix = null;\\n\\t\\t\\tnode.localName = qualifiedName;\\n\\t\\t}\\n\\t\\tattrs._ownerElement = node;\\n\\t\\treturn node;\\n\\t},\\n\\t// Introduced in DOM Level 2:\\n\\tcreateAttributeNS :\\tfunction(namespaceURI,qualifiedName){\\n\\t\\tvar node = new Attr();\\n\\t\\tvar pl = qualifiedName.split(':');\\n\\t\\tnode.ownerDocument = this;\\n\\t\\tnode.nodeName = qualifiedName;\\n\\t\\tnode.name = qualifiedName;\\n\\t\\tnode.namespaceURI = namespaceURI;\\n\\t\\tnode.specified = true;\\n\\t\\tif(pl.length == 2){\\n\\t\\t\\tnode.prefix = pl[0];\\n\\t\\t\\tnode.localName = pl[1];\\n\\t\\t}else{\\n\\t\\t\\t//el.prefix = null;\\n\\t\\t\\tnode.localName = qualifiedName;\\n\\t\\t}\\n\\t\\treturn node;\\n\\t}\\n};\\n_extends(Document,Node);\\n\\n\\nfunction Element() {\\n\\tthis._nsMap = {};\\n};\\nElement.prototype = {\\n\\tnodeType : ELEMENT_NODE,\\n\\thasAttribute : function(name){\\n\\t\\treturn this.getAttributeNode(name)!=null;\\n\\t},\\n\\tgetAttribute : function(name){\\n\\t\\tvar attr = this.getAttributeNode(name);\\n\\t\\treturn attr && attr.value || '';\\n\\t},\\n\\tgetAttributeNode : function(name){\\n\\t\\treturn this.attributes.getNamedItem(name);\\n\\t},\\n\\tsetAttribute : function(name, value){\\n\\t\\tvar attr = this.ownerDocument.createAttribute(name);\\n\\t\\tattr.value = attr.nodeValue = \\\"\\\" + value;\\n\\t\\tthis.setAttributeNode(attr)\\n\\t},\\n\\tremoveAttribute : function(name){\\n\\t\\tvar attr = this.getAttributeNode(name)\\n\\t\\tattr && this.removeAttributeNode(attr);\\n\\t},\\n\\t\\n\\t//four real opeartion method\\n\\tappendChild:function(newChild){\\n\\t\\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\\n\\t\\t\\treturn this.insertBefore(newChild,null);\\n\\t\\t}else{\\n\\t\\t\\treturn _appendSingleChild(this,newChild);\\n\\t\\t}\\n\\t},\\n\\tsetAttributeNode : function(newAttr){\\n\\t\\treturn this.attributes.setNamedItem(newAttr);\\n\\t},\\n\\tsetAttributeNodeNS : function(newAttr){\\n\\t\\treturn this.attributes.setNamedItemNS(newAttr);\\n\\t},\\n\\tremoveAttributeNode : function(oldAttr){\\n\\t\\t//console.log(this == oldAttr.ownerElement)\\n\\t\\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\\n\\t},\\n\\t//get real attribute name,and remove it by removeAttributeNode\\n\\tremoveAttributeNS : function(namespaceURI, localName){\\n\\t\\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\\n\\t\\told && this.removeAttributeNode(old);\\n\\t},\\n\\t\\n\\thasAttributeNS : function(namespaceURI, localName){\\n\\t\\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\\n\\t},\\n\\tgetAttributeNS : function(namespaceURI, localName){\\n\\t\\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\\n\\t\\treturn attr && attr.value || '';\\n\\t},\\n\\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\\n\\t\\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\\n\\t\\tattr.value = attr.nodeValue = \\\"\\\" + value;\\n\\t\\tthis.setAttributeNode(attr)\\n\\t},\\n\\tgetAttributeNodeNS : function(namespaceURI, localName){\\n\\t\\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\\n\\t},\\n\\t\\n\\tgetElementsByTagName : function(tagName){\\n\\t\\treturn new LiveNodeList(this,function(base){\\n\\t\\t\\tvar ls = [];\\n\\t\\t\\t_visitNode(base,function(node){\\n\\t\\t\\t\\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\\n\\t\\t\\t\\t\\tls.push(node);\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\treturn ls;\\n\\t\\t});\\n\\t},\\n\\tgetElementsByTagNameNS : function(namespaceURI, localName){\\n\\t\\treturn new LiveNodeList(this,function(base){\\n\\t\\t\\tvar ls = [];\\n\\t\\t\\t_visitNode(base,function(node){\\n\\t\\t\\t\\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\\n\\t\\t\\t\\t\\tls.push(node);\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\treturn ls;\\n\\t\\t\\t\\n\\t\\t});\\n\\t}\\n};\\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\\n\\n\\n_extends(Element,Node);\\nfunction Attr() {\\n};\\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\\n_extends(Attr,Node);\\n\\n\\nfunction CharacterData() {\\n};\\nCharacterData.prototype = {\\n\\tdata : '',\\n\\tsubstringData : function(offset, count) {\\n\\t\\treturn this.data.substring(offset, offset+count);\\n\\t},\\n\\tappendData: function(text) {\\n\\t\\ttext = this.data+text;\\n\\t\\tthis.nodeValue = this.data = text;\\n\\t\\tthis.length = text.length;\\n\\t},\\n\\tinsertData: function(offset,text) {\\n\\t\\tthis.replaceData(offset,0,text);\\n\\t\\n\\t},\\n\\tappendChild:function(newChild){\\n\\t\\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\\n\\t},\\n\\tdeleteData: function(offset, count) {\\n\\t\\tthis.replaceData(offset,count,\\\"\\\");\\n\\t},\\n\\treplaceData: function(offset, count, text) {\\n\\t\\tvar start = this.data.substring(0,offset);\\n\\t\\tvar end = this.data.substring(offset+count);\\n\\t\\ttext = start + text + end;\\n\\t\\tthis.nodeValue = this.data = text;\\n\\t\\tthis.length = text.length;\\n\\t}\\n}\\n_extends(CharacterData,Node);\\nfunction Text() {\\n};\\nText.prototype = {\\n\\tnodeName : \\\"#text\\\",\\n\\tnodeType : TEXT_NODE,\\n\\tsplitText : function(offset) {\\n\\t\\tvar text = this.data;\\n\\t\\tvar newText = text.substring(offset);\\n\\t\\ttext = text.substring(0, offset);\\n\\t\\tthis.data = this.nodeValue = text;\\n\\t\\tthis.length = text.length;\\n\\t\\tvar newNode = this.ownerDocument.createTextNode(newText);\\n\\t\\tif(this.parentNode){\\n\\t\\t\\tthis.parentNode.insertBefore(newNode, this.nextSibling);\\n\\t\\t}\\n\\t\\treturn newNode;\\n\\t}\\n}\\n_extends(Text,CharacterData);\\nfunction Comment() {\\n};\\nComment.prototype = {\\n\\tnodeName : \\\"#comment\\\",\\n\\tnodeType : COMMENT_NODE\\n}\\n_extends(Comment,CharacterData);\\n\\nfunction CDATASection() {\\n};\\nCDATASection.prototype = {\\n\\tnodeName : \\\"#cdata-section\\\",\\n\\tnodeType : CDATA_SECTION_NODE\\n}\\n_extends(CDATASection,CharacterData);\\n\\n\\nfunction DocumentType() {\\n};\\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\\n_extends(DocumentType,Node);\\n\\nfunction Notation() {\\n};\\nNotation.prototype.nodeType = NOTATION_NODE;\\n_extends(Notation,Node);\\n\\nfunction Entity() {\\n};\\nEntity.prototype.nodeType = ENTITY_NODE;\\n_extends(Entity,Node);\\n\\nfunction EntityReference() {\\n};\\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\\n_extends(EntityReference,Node);\\n\\nfunction DocumentFragment() {\\n};\\nDocumentFragment.prototype.nodeName =\\t\\\"#document-fragment\\\";\\nDocumentFragment.prototype.nodeType =\\tDOCUMENT_FRAGMENT_NODE;\\n_extends(DocumentFragment,Node);\\n\\n\\nfunction ProcessingInstruction() {\\n}\\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\\n_extends(ProcessingInstruction,Node);\\nfunction XMLSerializer(){}\\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\\n\\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\\n}\\nNode.prototype.toString = nodeSerializeToString;\\nfunction nodeSerializeToString(isHtml,nodeFilter){\\n\\tvar buf = [];\\n\\tvar refNode = this.nodeType == 9 && this.documentElement || this;\\n\\tvar prefix = refNode.prefix;\\n\\tvar uri = refNode.namespaceURI;\\n\\t\\n\\tif(uri && prefix == null){\\n\\t\\t//console.log(prefix)\\n\\t\\tvar prefix = refNode.lookupPrefix(uri);\\n\\t\\tif(prefix == null){\\n\\t\\t\\t//isHTML = true;\\n\\t\\t\\tvar visibleNamespaces=[\\n\\t\\t\\t{namespace:uri,prefix:null}\\n\\t\\t\\t//{namespace:uri,prefix:''}\\n\\t\\t\\t]\\n\\t\\t}\\n\\t}\\n\\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\\n\\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\\n\\treturn buf.join('');\\n}\\n\\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\\n\\tvar prefix = node.prefix || '';\\n\\tvar uri = node.namespaceURI;\\n\\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\\n\\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\\n\\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\\n\\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\\n\\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\\n\\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\\n\\t// so serializing empty namespace value like xmlns:ds=\\\"\\\" would produce an invalid XML document.\\n\\tif (!uri) {\\n\\t\\treturn false;\\n\\t}\\n\\tif (prefix === \\\"xml\\\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\\n\\t\\treturn false;\\n\\t}\\n\\t\\n\\tvar i = visibleNamespaces.length \\n\\twhile (i--) {\\n\\t\\tvar ns = visibleNamespaces[i];\\n\\t\\t// get namespace prefix\\n\\t\\tif (ns.prefix === prefix) {\\n\\t\\t\\treturn ns.namespace !== uri;\\n\\t\\t}\\n\\t}\\n\\treturn true;\\n}\\n/**\\n * Well-formed constraint: No < in Attribute Values\\n * The replacement text of any entity referred to directly or indirectly in an attribute value must not contain a <.\\n * @see https://www.w3.org/TR/xml/#CleanAttrVals\\n * @see https://www.w3.org/TR/xml/#NT-AttValue\\n */\\nfunction addSerializedAttribute(buf, qualifiedName, value) {\\n\\tbuf.push(' ', qualifiedName, '=\\\"', value.replace(/[<&\\\"]/g,_xmlEncoder), '\\\"')\\n}\\n\\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\\n\\tif (!visibleNamespaces) {\\n\\t\\tvisibleNamespaces = [];\\n\\t}\\n\\n\\tif(nodeFilter){\\n\\t\\tnode = nodeFilter(node);\\n\\t\\tif(node){\\n\\t\\t\\tif(typeof node == 'string'){\\n\\t\\t\\t\\tbuf.push(node);\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t}else{\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\t//buf.sort.apply(attrs, attributeSorter);\\n\\t}\\n\\n\\tswitch(node.nodeType){\\n\\tcase ELEMENT_NODE:\\n\\t\\tvar attrs = node.attributes;\\n\\t\\tvar len = attrs.length;\\n\\t\\tvar child = node.firstChild;\\n\\t\\tvar nodeName = node.tagName;\\n\\t\\t\\n\\t\\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\\n\\n\\t\\tvar prefixedNodeName = nodeName\\n\\t\\tif (!isHTML && !node.prefix && node.namespaceURI) {\\n\\t\\t\\tvar defaultNS\\n\\t\\t\\t// lookup current default ns from `xmlns` attribute\\n\\t\\t\\tfor (var ai = 0; ai < attrs.length; ai++) {\\n\\t\\t\\t\\tif (attrs.item(ai).name === 'xmlns') {\\n\\t\\t\\t\\t\\tdefaultNS = attrs.item(ai).value\\n\\t\\t\\t\\t\\tbreak\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (!defaultNS) {\\n\\t\\t\\t\\t// lookup current default ns in visibleNamespaces\\n\\t\\t\\t\\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\\n\\t\\t\\t\\t\\tvar namespace = visibleNamespaces[nsi]\\n\\t\\t\\t\\t\\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\\n\\t\\t\\t\\t\\t\\tdefaultNS = namespace.namespace\\n\\t\\t\\t\\t\\t\\tbreak\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (defaultNS !== node.namespaceURI) {\\n\\t\\t\\t\\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\\n\\t\\t\\t\\t\\tvar namespace = visibleNamespaces[nsi]\\n\\t\\t\\t\\t\\tif (namespace.namespace === node.namespaceURI) {\\n\\t\\t\\t\\t\\t\\tif (namespace.prefix) {\\n\\t\\t\\t\\t\\t\\t\\tprefixedNodeName = namespace.prefix + ':' + nodeName\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tbreak\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tbuf.push('<', prefixedNodeName);\\n\\n\\t\\tfor(var i=0;i');\\n\\t\\t\\t//if is cdata child node\\n\\t\\t\\tif(isHTML && /^script$/i.test(nodeName)){\\n\\t\\t\\t\\twhile(child){\\n\\t\\t\\t\\t\\tif(child.data){\\n\\t\\t\\t\\t\\t\\tbuf.push(child.data);\\n\\t\\t\\t\\t\\t}else{\\n\\t\\t\\t\\t\\t\\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tchild = child.nextSibling;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}else\\n\\t\\t\\t{\\n\\t\\t\\t\\twhile(child){\\n\\t\\t\\t\\t\\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\\n\\t\\t\\t\\t\\tchild = child.nextSibling;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tbuf.push('');\\n\\t\\t}else{\\n\\t\\t\\tbuf.push('/>');\\n\\t\\t}\\n\\t\\t// remove added visible namespaces\\n\\t\\t//visibleNamespaces.length = startVisibleNamespaces;\\n\\t\\treturn;\\n\\tcase DOCUMENT_NODE:\\n\\tcase DOCUMENT_FRAGMENT_NODE:\\n\\t\\tvar child = node.firstChild;\\n\\t\\twhile(child){\\n\\t\\t\\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\\n\\t\\t\\tchild = child.nextSibling;\\n\\t\\t}\\n\\t\\treturn;\\n\\tcase ATTRIBUTE_NODE:\\n\\t\\treturn addSerializedAttribute(buf, node.name, node.value);\\n\\tcase TEXT_NODE:\\n\\t\\t/**\\n\\t\\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\\n\\t\\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\\n\\t\\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\\n\\t\\t * `&` and `<` respectively.\\n\\t\\t * The right angle bracket (>) may be represented using the string \\\" > \\\", and must, for compatibility,\\n\\t\\t * be escaped using either `>` or a character reference when it appears in the string `]]>` in content,\\n\\t\\t * when that string is not marking the end of a CDATA section.\\n\\t\\t *\\n\\t\\t * In the content of elements, character data is any string of characters\\n\\t\\t * which does not contain the start-delimiter of any markup\\n\\t\\t * and does not include the CDATA-section-close delimiter, `]]>`.\\n\\t\\t *\\n\\t\\t * @see https://www.w3.org/TR/xml/#NT-CharData\\n\\t\\t */\\n\\t\\treturn buf.push(node.data\\n\\t\\t\\t.replace(/[<&]/g,_xmlEncoder)\\n\\t\\t\\t.replace(/]]>/g, ']]>')\\n\\t\\t);\\n\\tcase CDATA_SECTION_NODE:\\n\\t\\treturn buf.push( '');\\n\\tcase COMMENT_NODE:\\n\\t\\treturn buf.push( \\\"\\\");\\n\\tcase DOCUMENT_TYPE_NODE:\\n\\t\\tvar pubid = node.publicId;\\n\\t\\tvar sysid = node.systemId;\\n\\t\\tbuf.push('');\\n\\t\\t}else if(sysid && sysid!='.'){\\n\\t\\t\\tbuf.push(' SYSTEM ', sysid, '>');\\n\\t\\t}else{\\n\\t\\t\\tvar sub = node.internalSubset;\\n\\t\\t\\tif(sub){\\n\\t\\t\\t\\tbuf.push(\\\" [\\\",sub,\\\"]\\\");\\n\\t\\t\\t}\\n\\t\\t\\tbuf.push(\\\">\\\");\\n\\t\\t}\\n\\t\\treturn;\\n\\tcase PROCESSING_INSTRUCTION_NODE:\\n\\t\\treturn buf.push( \\\"\\\");\\n\\tcase ENTITY_REFERENCE_NODE:\\n\\t\\treturn buf.push( '&',node.nodeName,';');\\n\\t//case ENTITY_NODE:\\n\\t//case NOTATION_NODE:\\n\\tdefault:\\n\\t\\tbuf.push('??',node.nodeName);\\n\\t}\\n}\\nfunction importNode(doc,node,deep){\\n\\tvar node2;\\n\\tswitch (node.nodeType) {\\n\\tcase ELEMENT_NODE:\\n\\t\\tnode2 = node.cloneNode(false);\\n\\t\\tnode2.ownerDocument = doc;\\n\\t\\t//var attrs = node2.attributes;\\n\\t\\t//var len = attrs.length;\\n\\t\\t//for(var i=0;i', lt:'<', quot:'\\\"'})\\n\\n/**\\n * A map of currently 241 entities that are detected in an HTML document.\\n * They contain all entries from `XML_ENTITIES`.\\n *\\n * @see XML_ENTITIES\\n * @see DOMParser.parseFromString\\n * @see DOMImplementation.prototype.createHTMLDocument\\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\\n */\\nexports.HTML_ENTITIES = freeze({\\n lt: '<',\\n gt: '>',\\n amp: '&',\\n quot: '\\\"',\\n apos: \\\"'\\\",\\n Agrave: \\\"À\\\",\\n Aacute: \\\"Á\\\",\\n Acirc: \\\"Â\\\",\\n Atilde: \\\"Ã\\\",\\n Auml: \\\"Ä\\\",\\n Aring: \\\"Å\\\",\\n AElig: \\\"Æ\\\",\\n Ccedil: \\\"Ç\\\",\\n Egrave: \\\"È\\\",\\n Eacute: \\\"É\\\",\\n Ecirc: \\\"Ê\\\",\\n Euml: \\\"Ë\\\",\\n Igrave: \\\"Ì\\\",\\n Iacute: \\\"Í\\\",\\n Icirc: \\\"Î\\\",\\n Iuml: \\\"Ï\\\",\\n ETH: \\\"Ð\\\",\\n Ntilde: \\\"Ñ\\\",\\n Ograve: \\\"Ò\\\",\\n Oacute: \\\"Ó\\\",\\n Ocirc: \\\"Ô\\\",\\n Otilde: \\\"Õ\\\",\\n Ouml: \\\"Ö\\\",\\n Oslash: \\\"Ø\\\",\\n Ugrave: \\\"Ù\\\",\\n Uacute: \\\"Ú\\\",\\n Ucirc: \\\"Û\\\",\\n Uuml: \\\"Ü\\\",\\n Yacute: \\\"Ý\\\",\\n THORN: \\\"Þ\\\",\\n szlig: \\\"ß\\\",\\n agrave: \\\"à\\\",\\n aacute: \\\"á\\\",\\n acirc: \\\"â\\\",\\n atilde: \\\"ã\\\",\\n auml: \\\"ä\\\",\\n aring: \\\"å\\\",\\n aelig: \\\"æ\\\",\\n ccedil: \\\"ç\\\",\\n egrave: \\\"è\\\",\\n eacute: \\\"é\\\",\\n ecirc: \\\"ê\\\",\\n euml: \\\"ë\\\",\\n igrave: \\\"ì\\\",\\n iacute: \\\"í\\\",\\n icirc: \\\"î\\\",\\n iuml: \\\"ï\\\",\\n eth: \\\"ð\\\",\\n ntilde: \\\"ñ\\\",\\n ograve: \\\"ò\\\",\\n oacute: \\\"ó\\\",\\n ocirc: \\\"ô\\\",\\n otilde: \\\"õ\\\",\\n ouml: \\\"ö\\\",\\n oslash: \\\"ø\\\",\\n ugrave: \\\"ù\\\",\\n uacute: \\\"ú\\\",\\n ucirc: \\\"û\\\",\\n uuml: \\\"ü\\\",\\n yacute: \\\"ý\\\",\\n thorn: \\\"þ\\\",\\n yuml: \\\"ÿ\\\",\\n nbsp: \\\"\\\\u00a0\\\",\\n iexcl: \\\"¡\\\",\\n cent: \\\"¢\\\",\\n pound: \\\"£\\\",\\n curren: \\\"¤\\\",\\n yen: \\\"¥\\\",\\n brvbar: \\\"¦\\\",\\n sect: \\\"§\\\",\\n uml: \\\"¨\\\",\\n copy: \\\"©\\\",\\n ordf: \\\"ª\\\",\\n laquo: \\\"«\\\",\\n not: \\\"¬\\\",\\n shy: \\\"­­\\\",\\n reg: \\\"®\\\",\\n macr: \\\"¯\\\",\\n deg: \\\"°\\\",\\n plusmn: \\\"±\\\",\\n sup2: \\\"²\\\",\\n sup3: \\\"³\\\",\\n acute: \\\"´\\\",\\n micro: \\\"µ\\\",\\n para: \\\"¶\\\",\\n middot: \\\"·\\\",\\n cedil: \\\"¸\\\",\\n sup1: \\\"¹\\\",\\n ordm: \\\"º\\\",\\n raquo: \\\"»\\\",\\n frac14: \\\"¼\\\",\\n frac12: \\\"½\\\",\\n frac34: \\\"¾\\\",\\n iquest: \\\"¿\\\",\\n times: \\\"×\\\",\\n divide: \\\"÷\\\",\\n forall: \\\"∀\\\",\\n part: \\\"∂\\\",\\n exist: \\\"∃\\\",\\n empty: \\\"∅\\\",\\n nabla: \\\"∇\\\",\\n isin: \\\"∈\\\",\\n notin: \\\"∉\\\",\\n ni: \\\"∋\\\",\\n prod: \\\"∏\\\",\\n sum: \\\"∑\\\",\\n minus: \\\"−\\\",\\n lowast: \\\"∗\\\",\\n radic: \\\"√\\\",\\n prop: \\\"∝\\\",\\n infin: \\\"∞\\\",\\n ang: \\\"∠\\\",\\n and: \\\"∧\\\",\\n or: \\\"∨\\\",\\n cap: \\\"∩\\\",\\n cup: \\\"∪\\\",\\n 'int': \\\"∫\\\",\\n there4: \\\"∴\\\",\\n sim: \\\"∼\\\",\\n cong: \\\"≅\\\",\\n asymp: \\\"≈\\\",\\n ne: \\\"≠\\\",\\n equiv: \\\"≡\\\",\\n le: \\\"≤\\\",\\n ge: \\\"≥\\\",\\n sub: \\\"⊂\\\",\\n sup: \\\"⊃\\\",\\n nsub: \\\"⊄\\\",\\n sube: \\\"⊆\\\",\\n supe: \\\"⊇\\\",\\n oplus: \\\"⊕\\\",\\n otimes: \\\"⊗\\\",\\n perp: \\\"⊥\\\",\\n sdot: \\\"⋅\\\",\\n Alpha: \\\"Α\\\",\\n Beta: \\\"Β\\\",\\n Gamma: \\\"Γ\\\",\\n Delta: \\\"Δ\\\",\\n Epsilon: \\\"Ε\\\",\\n Zeta: \\\"Ζ\\\",\\n Eta: \\\"Η\\\",\\n Theta: \\\"Θ\\\",\\n Iota: \\\"Ι\\\",\\n Kappa: \\\"Κ\\\",\\n Lambda: \\\"Λ\\\",\\n Mu: \\\"Μ\\\",\\n Nu: \\\"Ν\\\",\\n Xi: \\\"Ξ\\\",\\n Omicron: \\\"Ο\\\",\\n Pi: \\\"Π\\\",\\n Rho: \\\"Ρ\\\",\\n Sigma: \\\"Σ\\\",\\n Tau: \\\"Τ\\\",\\n Upsilon: \\\"Υ\\\",\\n Phi: \\\"Φ\\\",\\n Chi: \\\"Χ\\\",\\n Psi: \\\"Ψ\\\",\\n Omega: \\\"Ω\\\",\\n alpha: \\\"α\\\",\\n beta: \\\"β\\\",\\n gamma: \\\"γ\\\",\\n delta: \\\"δ\\\",\\n epsilon: \\\"ε\\\",\\n zeta: \\\"ζ\\\",\\n eta: \\\"η\\\",\\n theta: \\\"θ\\\",\\n iota: \\\"ι\\\",\\n kappa: \\\"κ\\\",\\n lambda: \\\"λ\\\",\\n mu: \\\"μ\\\",\\n nu: \\\"ν\\\",\\n xi: \\\"ξ\\\",\\n omicron: \\\"ο\\\",\\n pi: \\\"π\\\",\\n rho: \\\"ρ\\\",\\n sigmaf: \\\"ς\\\",\\n sigma: \\\"σ\\\",\\n tau: \\\"τ\\\",\\n upsilon: \\\"υ\\\",\\n phi: \\\"φ\\\",\\n chi: \\\"χ\\\",\\n psi: \\\"ψ\\\",\\n omega: \\\"ω\\\",\\n thetasym: \\\"ϑ\\\",\\n upsih: \\\"ϒ\\\",\\n piv: \\\"ϖ\\\",\\n OElig: \\\"Œ\\\",\\n oelig: \\\"œ\\\",\\n Scaron: \\\"Š\\\",\\n scaron: \\\"š\\\",\\n Yuml: \\\"Ÿ\\\",\\n fnof: \\\"ƒ\\\",\\n circ: \\\"ˆ\\\",\\n tilde: \\\"˜\\\",\\n ensp: \\\" \\\",\\n emsp: \\\" \\\",\\n thinsp: \\\" \\\",\\n zwnj: \\\"‌\\\",\\n zwj: \\\"‍\\\",\\n lrm: \\\"‎\\\",\\n rlm: \\\"‏\\\",\\n ndash: \\\"–\\\",\\n mdash: \\\"—\\\",\\n lsquo: \\\"‘\\\",\\n rsquo: \\\"’\\\",\\n sbquo: \\\"‚\\\",\\n ldquo: \\\"“\\\",\\n rdquo: \\\"”\\\",\\n bdquo: \\\"„\\\",\\n dagger: \\\"†\\\",\\n Dagger: \\\"‡\\\",\\n bull: \\\"•\\\",\\n hellip: \\\"…\\\",\\n permil: \\\"‰\\\",\\n prime: \\\"′\\\",\\n Prime: \\\"″\\\",\\n lsaquo: \\\"‹\\\",\\n rsaquo: \\\"›\\\",\\n oline: \\\"‾\\\",\\n euro: \\\"€\\\",\\n trade: \\\"™\\\",\\n larr: \\\"←\\\",\\n uarr: \\\"↑\\\",\\n rarr: \\\"→\\\",\\n darr: \\\"↓\\\",\\n harr: \\\"↔\\\",\\n crarr: \\\"↵\\\",\\n lceil: \\\"⌈\\\",\\n rceil: \\\"⌉\\\",\\n lfloor: \\\"⌊\\\",\\n rfloor: \\\"⌋\\\",\\n loz: \\\"◊\\\",\\n spades: \\\"♠\\\",\\n clubs: \\\"♣\\\",\\n hearts: \\\"♥\\\",\\n diams: \\\"♦\\\"\\n});\\n\\n/**\\n * @deprecated use `HTML_ENTITIES` instead\\n * @see HTML_ENTITIES\\n */\\nexports.entityMap = exports.HTML_ENTITIES\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@xmldom/xmldom/lib/entities.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@xmldom/xmldom/lib/index.js\":\n/*!***************************************************!*\\\n !*** ../node_modules/@xmldom/xmldom/lib/index.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var dom = __webpack_require__(/*! ./dom */ \\\"../node_modules/@xmldom/xmldom/lib/dom.js\\\")\\nexports.DOMImplementation = dom.DOMImplementation\\nexports.XMLSerializer = dom.XMLSerializer\\nexports.DOMParser = __webpack_require__(/*! ./dom-parser */ \\\"../node_modules/@xmldom/xmldom/lib/dom-parser.js\\\").DOMParser\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@xmldom/xmldom/lib/index.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@xmldom/xmldom/lib/sax.js\":\n/*!*************************************************!*\\\n !*** ../node_modules/@xmldom/xmldom/lib/sax.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var NAMESPACE = __webpack_require__(/*! ./conventions */ \\\"../node_modules/@xmldom/xmldom/lib/conventions.js\\\").NAMESPACE;\\n\\n//[4] \\tNameStartChar\\t ::= \\t\\\":\\\" | [A-Z] | \\\"_\\\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\\n//[4a] \\tNameChar\\t ::= \\tNameStartChar | \\\"-\\\" | \\\".\\\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\\n//[5] \\tName\\t ::= \\tNameStartChar (NameChar)*\\nvar nameStartChar = /[A-Z_a-z\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD]///\\\\u10000-\\\\uEFFFF\\nvar nameChar = new RegExp(\\\"[\\\\\\\\-\\\\\\\\.0-9\\\"+nameStartChar.source.slice(1,-1)+\\\"\\\\\\\\u00B7\\\\\\\\u0300-\\\\\\\\u036F\\\\\\\\u203F-\\\\\\\\u2040]\\\");\\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\\\:'+nameStartChar.source+nameChar.source+'*)?$');\\n//var tagNamePattern = /^[a-zA-Z_][\\\\w\\\\-\\\\.]*(?:\\\\:[a-zA-Z_][\\\\w\\\\-\\\\.]*)?$/\\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\\n\\n//S_TAG,\\tS_ATTR,\\tS_EQ,\\tS_ATTR_NOQUOT_VALUE\\n//S_ATTR_SPACE,\\tS_ATTR_END,\\tS_TAG_SPACE, S_TAG_CLOSE\\nvar S_TAG = 0;//tag name offerring\\nvar S_ATTR = 1;//attr name offerring \\nvar S_ATTR_SPACE=2;//attr name end and space offer\\nvar S_EQ = 3;//=space?\\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\\nvar S_TAG_CLOSE = 7;//closed el\\n\\n/**\\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\\n *\\n * @param {string} message\\n * @param {any?} locator Optional, can provide details about the location in the source\\n * @constructor\\n */\\nfunction ParseError(message, locator) {\\n\\tthis.message = message\\n\\tthis.locator = locator\\n\\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\\n}\\nParseError.prototype = new Error();\\nParseError.prototype.name = ParseError.name\\n\\nfunction XMLReader(){\\n\\t\\n}\\n\\nXMLReader.prototype = {\\n\\tparse:function(source,defaultNSMap,entityMap){\\n\\t\\tvar domBuilder = this.domBuilder;\\n\\t\\tdomBuilder.startDocument();\\n\\t\\t_copy(defaultNSMap ,defaultNSMap = {})\\n\\t\\tparse(source,defaultNSMap,entityMap,\\n\\t\\t\\t\\tdomBuilder,this.errorHandler);\\n\\t\\tdomBuilder.endDocument();\\n\\t}\\n}\\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\\n\\tfunction fixedFromCharCode(code) {\\n\\t\\t// String.prototype.fromCharCode does not supports\\n\\t\\t// > 2 bytes unicode chars directly\\n\\t\\tif (code > 0xffff) {\\n\\t\\t\\tcode -= 0x10000;\\n\\t\\t\\tvar surrogate1 = 0xd800 + (code >> 10)\\n\\t\\t\\t\\t, surrogate2 = 0xdc00 + (code & 0x3ff);\\n\\n\\t\\t\\treturn String.fromCharCode(surrogate1, surrogate2);\\n\\t\\t} else {\\n\\t\\t\\treturn String.fromCharCode(code);\\n\\t\\t}\\n\\t}\\n\\tfunction entityReplacer(a){\\n\\t\\tvar k = a.slice(1,-1);\\n\\t\\tif(k in entityMap){\\n\\t\\t\\treturn entityMap[k]; \\n\\t\\t}else if(k.charAt(0) === '#'){\\n\\t\\t\\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\\n\\t\\t}else{\\n\\t\\t\\terrorHandler.error('entity not found:'+a);\\n\\t\\t\\treturn a;\\n\\t\\t}\\n\\t}\\n\\tfunction appendText(end){//has some bugs\\n\\t\\tif(end>start){\\n\\t\\t\\tvar xt = source.substring(start,end).replace(/&#?\\\\w+;/g,entityReplacer);\\n\\t\\t\\tlocator&&position(start);\\n\\t\\t\\tdomBuilder.characters(xt,0,end-start);\\n\\t\\t\\tstart = end\\n\\t\\t}\\n\\t}\\n\\tfunction position(p,m){\\n\\t\\twhile(p>=lineEnd && (m = linePattern.exec(source))){\\n\\t\\t\\tlineStart = m.index;\\n\\t\\t\\tlineEnd = lineStart + m[0].length;\\n\\t\\t\\tlocator.lineNumber++;\\n\\t\\t\\t//console.log('line++:',locator,startPos,endPos)\\n\\t\\t}\\n\\t\\tlocator.columnNumber = p-lineStart+1;\\n\\t}\\n\\tvar lineStart = 0;\\n\\tvar lineEnd = 0;\\n\\tvar linePattern = /.*(?:\\\\r\\\\n?|\\\\n)|.*$/g\\n\\tvar locator = domBuilder.locator;\\n\\t\\n\\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\\n\\tvar closeMap = {};\\n\\tvar start = 0;\\n\\twhile(true){\\n\\t\\ttry{\\n\\t\\t\\tvar tagStart = source.indexOf('<',start);\\n\\t\\t\\tif(tagStart<0){\\n\\t\\t\\t\\tif(!source.substr(start).match(/^\\\\s*$/)){\\n\\t\\t\\t\\t\\tvar doc = domBuilder.doc;\\n\\t \\t\\t\\tvar text = doc.createTextNode(source.substr(start));\\n\\t \\t\\t\\tdoc.appendChild(text);\\n\\t \\t\\t\\tdomBuilder.currentElement = text;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\tif(tagStart>start){\\n\\t\\t\\t\\tappendText(tagStart);\\n\\t\\t\\t}\\n\\t\\t\\tswitch(source.charAt(tagStart+1)){\\n\\t\\t\\tcase '/':\\n\\t\\t\\t\\tvar end = source.indexOf('>',tagStart+3);\\n\\t\\t\\t\\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\\\t\\\\n\\\\r]+$/g, '');\\n\\t\\t\\t\\tvar config = parseStack.pop();\\n\\t\\t\\t\\tif(end<0){\\n\\t\\t\\t\\t\\t\\n\\t \\t\\ttagName = source.substring(tagStart+2).replace(/[\\\\s<].*/,'');\\n\\t \\t\\terrorHandler.error(\\\"end tag name: \\\"+tagName+' is not complete:'+config.tagName);\\n\\t \\t\\tend = tagStart+1+tagName.length;\\n\\t \\t}else if(tagName.match(/\\\\s\\n\\t\\t\\t\\tlocator&&position(tagStart);\\n\\t\\t\\t\\tend = parseInstruction(source,tagStart,domBuilder);\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase '!':// start){\\n\\t\\t\\tstart = end;\\n\\t\\t}else{\\n\\t\\t\\t//TODO: 这里有可能sax回退,有位置错误风险\\n\\t\\t\\tappendText(Math.max(tagStart,start)+1);\\n\\t\\t}\\n\\t}\\n}\\nfunction copyLocator(f,t){\\n\\tt.lineNumber = f.lineNumber;\\n\\tt.columnNumber = f.columnNumber;\\n\\treturn t;\\n}\\n\\n/**\\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\\n */\\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\\n\\n\\t/**\\n\\t * @param {string} qname\\n\\t * @param {string} value\\n\\t * @param {number} startIndex\\n\\t */\\n\\tfunction addAttribute(qname, value, startIndex) {\\n\\t\\tif (el.attributeNames.hasOwnProperty(qname)) {\\n\\t\\t\\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\\n\\t\\t}\\n\\t\\tel.addValue(qname, value, startIndex)\\n\\t}\\n\\tvar attrName;\\n\\tvar value;\\n\\tvar p = ++start;\\n\\tvar s = S_TAG;//status\\n\\twhile(true){\\n\\t\\tvar c = source.charAt(p);\\n\\t\\tswitch(c){\\n\\t\\tcase '=':\\n\\t\\t\\tif(s === S_ATTR){//attrName\\n\\t\\t\\t\\tattrName = source.slice(start,p);\\n\\t\\t\\t\\ts = S_EQ;\\n\\t\\t\\t}else if(s === S_ATTR_SPACE){\\n\\t\\t\\t\\ts = S_EQ;\\n\\t\\t\\t}else{\\n\\t\\t\\t\\t//fatalError: equal must after attrName or space after attrName\\n\\t\\t\\t\\tthrow new Error('attribute equal must after attrName'); // No known test case\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase '\\\\'':\\n\\t\\tcase '\\\"':\\n\\t\\t\\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\\n\\t\\t\\t\\t){//equal\\n\\t\\t\\t\\tif(s === S_ATTR){\\n\\t\\t\\t\\t\\terrorHandler.warning('attribute value must after \\\"=\\\"')\\n\\t\\t\\t\\t\\tattrName = source.slice(start,p)\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tstart = p+1;\\n\\t\\t\\t\\tp = source.indexOf(c,start)\\n\\t\\t\\t\\tif(p>0){\\n\\t\\t\\t\\t\\tvalue = source.slice(start,p).replace(/&#?\\\\w+;/g,entityReplacer);\\n\\t\\t\\t\\t\\taddAttribute(attrName, value, start-1);\\n\\t\\t\\t\\t\\ts = S_ATTR_END;\\n\\t\\t\\t\\t}else{\\n\\t\\t\\t\\t\\t//fatalError: no end quot match\\n\\t\\t\\t\\t\\tthrow new Error('attribute value no end \\\\''+c+'\\\\' match');\\n\\t\\t\\t\\t}\\n\\t\\t\\t}else if(s == S_ATTR_NOQUOT_VALUE){\\n\\t\\t\\t\\tvalue = source.slice(start,p).replace(/&#?\\\\w+;/g,entityReplacer);\\n\\t\\t\\t\\t//console.log(attrName,value,start,p)\\n\\t\\t\\t\\taddAttribute(attrName, value, start);\\n\\t\\t\\t\\t//console.dir(el)\\n\\t\\t\\t\\terrorHandler.warning('attribute \\\"'+attrName+'\\\" missed start quot('+c+')!!');\\n\\t\\t\\t\\tstart = p+1;\\n\\t\\t\\t\\ts = S_ATTR_END\\n\\t\\t\\t}else{\\n\\t\\t\\t\\t//fatalError: no equal before\\n\\t\\t\\t\\tthrow new Error('attribute value must after \\\"=\\\"'); // No known test case\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase '/':\\n\\t\\t\\tswitch(s){\\n\\t\\t\\tcase S_TAG:\\n\\t\\t\\t\\tel.setTagName(source.slice(start,p));\\n\\t\\t\\tcase S_ATTR_END:\\n\\t\\t\\tcase S_TAG_SPACE:\\n\\t\\t\\tcase S_TAG_CLOSE:\\n\\t\\t\\t\\ts =S_TAG_CLOSE;\\n\\t\\t\\t\\tel.closed = true;\\n\\t\\t\\tcase S_ATTR_NOQUOT_VALUE:\\n\\t\\t\\tcase S_ATTR:\\n\\t\\t\\tcase S_ATTR_SPACE:\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t//case S_EQ:\\n\\t\\t\\tdefault:\\n\\t\\t\\t\\tthrow new Error(\\\"attribute invalid close char('/')\\\") // No known test case\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase ''://end document\\n\\t\\t\\terrorHandler.error('unexpected end of input');\\n\\t\\t\\tif(s == S_TAG){\\n\\t\\t\\t\\tel.setTagName(source.slice(start,p));\\n\\t\\t\\t}\\n\\t\\t\\treturn p;\\n\\t\\tcase '>':\\n\\t\\t\\tswitch(s){\\n\\t\\t\\tcase S_TAG:\\n\\t\\t\\t\\tel.setTagName(source.slice(start,p));\\n\\t\\t\\tcase S_ATTR_END:\\n\\t\\t\\tcase S_TAG_SPACE:\\n\\t\\t\\tcase S_TAG_CLOSE:\\n\\t\\t\\t\\tbreak;//normal\\n\\t\\t\\tcase S_ATTR_NOQUOT_VALUE://Compatible state\\n\\t\\t\\tcase S_ATTR:\\n\\t\\t\\t\\tvalue = source.slice(start,p);\\n\\t\\t\\t\\tif(value.slice(-1) === '/'){\\n\\t\\t\\t\\t\\tel.closed = true;\\n\\t\\t\\t\\t\\tvalue = value.slice(0,-1)\\n\\t\\t\\t\\t}\\n\\t\\t\\tcase S_ATTR_SPACE:\\n\\t\\t\\t\\tif(s === S_ATTR_SPACE){\\n\\t\\t\\t\\t\\tvalue = attrName;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif(s == S_ATTR_NOQUOT_VALUE){\\n\\t\\t\\t\\t\\terrorHandler.warning('attribute \\\"'+value+'\\\" missed quot(\\\")!');\\n\\t\\t\\t\\t\\taddAttribute(attrName, value.replace(/&#?\\\\w+;/g,entityReplacer), start)\\n\\t\\t\\t\\t}else{\\n\\t\\t\\t\\t\\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\\n\\t\\t\\t\\t\\t\\terrorHandler.warning('attribute \\\"'+value+'\\\" missed value!! \\\"'+value+'\\\" instead!!')\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\taddAttribute(value, value, start)\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase S_EQ:\\n\\t\\t\\t\\tthrow new Error('attribute value missed!!');\\n\\t\\t\\t}\\n//\\t\\t\\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\\n\\t\\t\\treturn p;\\n\\t\\t/*xml space '\\\\x20' | #x9 | #xD | #xA; */\\n\\t\\tcase '\\\\u0080':\\n\\t\\t\\tc = ' ';\\n\\t\\tdefault:\\n\\t\\t\\tif(c<= ' '){//space\\n\\t\\t\\t\\tswitch(s){\\n\\t\\t\\t\\tcase S_TAG:\\n\\t\\t\\t\\t\\tel.setTagName(source.slice(start,p));//tagName\\n\\t\\t\\t\\t\\ts = S_TAG_SPACE;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase S_ATTR:\\n\\t\\t\\t\\t\\tattrName = source.slice(start,p)\\n\\t\\t\\t\\t\\ts = S_ATTR_SPACE;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase S_ATTR_NOQUOT_VALUE:\\n\\t\\t\\t\\t\\tvar value = source.slice(start,p).replace(/&#?\\\\w+;/g,entityReplacer);\\n\\t\\t\\t\\t\\terrorHandler.warning('attribute \\\"'+value+'\\\" missed quot(\\\")!!');\\n\\t\\t\\t\\t\\taddAttribute(attrName, value, start)\\n\\t\\t\\t\\tcase S_ATTR_END:\\n\\t\\t\\t\\t\\ts = S_TAG_SPACE;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t//case S_TAG_SPACE:\\n\\t\\t\\t\\t//case S_EQ:\\n\\t\\t\\t\\t//case S_ATTR_SPACE:\\n\\t\\t\\t\\t//\\tvoid();break;\\n\\t\\t\\t\\t//case S_TAG_CLOSE:\\n\\t\\t\\t\\t\\t//ignore warning\\n\\t\\t\\t\\t}\\n\\t\\t\\t}else{//not space\\n//S_TAG,\\tS_ATTR,\\tS_EQ,\\tS_ATTR_NOQUOT_VALUE\\n//S_ATTR_SPACE,\\tS_ATTR_END,\\tS_TAG_SPACE, S_TAG_CLOSE\\n\\t\\t\\t\\tswitch(s){\\n\\t\\t\\t\\t//case S_TAG:void();break;\\n\\t\\t\\t\\t//case S_ATTR:void();break;\\n\\t\\t\\t\\t//case S_ATTR_NOQUOT_VALUE:void();break;\\n\\t\\t\\t\\tcase S_ATTR_SPACE:\\n\\t\\t\\t\\t\\tvar tagName = el.tagName;\\n\\t\\t\\t\\t\\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\\n\\t\\t\\t\\t\\t\\terrorHandler.warning('attribute \\\"'+attrName+'\\\" missed value!! \\\"'+attrName+'\\\" instead2!!')\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\taddAttribute(attrName, attrName, start);\\n\\t\\t\\t\\t\\tstart = p;\\n\\t\\t\\t\\t\\ts = S_ATTR;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase S_ATTR_END:\\n\\t\\t\\t\\t\\terrorHandler.warning('attribute space is required\\\"'+attrName+'\\\"!!')\\n\\t\\t\\t\\tcase S_TAG_SPACE:\\n\\t\\t\\t\\t\\ts = S_ATTR;\\n\\t\\t\\t\\t\\tstart = p;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase S_EQ:\\n\\t\\t\\t\\t\\ts = S_ATTR_NOQUOT_VALUE;\\n\\t\\t\\t\\t\\tstart = p;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase S_TAG_CLOSE:\\n\\t\\t\\t\\t\\tthrow new Error(\\\"elements closed character '/' and '>' must be connected to\\\");\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}//end outer switch\\n\\t\\t//console.log('p++',p)\\n\\t\\tp++;\\n\\t}\\n}\\n/**\\n * @return true if has new namespace define\\n */\\nfunction appendElement(el,domBuilder,currentNSMap){\\n\\tvar tagName = el.tagName;\\n\\tvar localNSMap = null;\\n\\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\\n\\tvar i = el.length;\\n\\twhile(i--){\\n\\t\\tvar a = el[i];\\n\\t\\tvar qName = a.qName;\\n\\t\\tvar value = a.value;\\n\\t\\tvar nsp = qName.indexOf(':');\\n\\t\\tif(nsp>0){\\n\\t\\t\\tvar prefix = a.prefix = qName.slice(0,nsp);\\n\\t\\t\\tvar localName = qName.slice(nsp+1);\\n\\t\\t\\tvar nsPrefix = prefix === 'xmlns' && localName\\n\\t\\t}else{\\n\\t\\t\\tlocalName = qName;\\n\\t\\t\\tprefix = null\\n\\t\\t\\tnsPrefix = qName === 'xmlns' && ''\\n\\t\\t}\\n\\t\\t//can not set prefix,because prefix !== ''\\n\\t\\ta.localName = localName ;\\n\\t\\t//prefix == null for no ns prefix attribute \\n\\t\\tif(nsPrefix !== false){//hack!!\\n\\t\\t\\tif(localNSMap == null){\\n\\t\\t\\t\\tlocalNSMap = {}\\n\\t\\t\\t\\t//console.log(currentNSMap,0)\\n\\t\\t\\t\\t_copy(currentNSMap,currentNSMap={})\\n\\t\\t\\t\\t//console.log(currentNSMap,1)\\n\\t\\t\\t}\\n\\t\\t\\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\\n\\t\\t\\ta.uri = NAMESPACE.XMLNS\\n\\t\\t\\tdomBuilder.startPrefixMapping(nsPrefix, value) \\n\\t\\t}\\n\\t}\\n\\tvar i = el.length;\\n\\twhile(i--){\\n\\t\\ta = el[i];\\n\\t\\tvar prefix = a.prefix;\\n\\t\\tif(prefix){//no prefix attribute has no namespace\\n\\t\\t\\tif(prefix === 'xml'){\\n\\t\\t\\t\\ta.uri = NAMESPACE.XML;\\n\\t\\t\\t}if(prefix !== 'xmlns'){\\n\\t\\t\\t\\ta.uri = currentNSMap[prefix || '']\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tvar nsp = tagName.indexOf(':');\\n\\tif(nsp>0){\\n\\t\\tprefix = el.prefix = tagName.slice(0,nsp);\\n\\t\\tlocalName = el.localName = tagName.slice(nsp+1);\\n\\t}else{\\n\\t\\tprefix = null;//important!!\\n\\t\\tlocalName = el.localName = tagName;\\n\\t}\\n\\t//no prefix element has default namespace\\n\\tvar ns = el.uri = currentNSMap[prefix || ''];\\n\\tdomBuilder.startElement(ns,localName,tagName,el);\\n\\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\\n\\t//localNSMap = null\\n\\tif(el.closed){\\n\\t\\tdomBuilder.endElement(ns,localName,tagName);\\n\\t\\tif(localNSMap){\\n\\t\\t\\tfor(prefix in localNSMap){\\n\\t\\t\\t\\tdomBuilder.endPrefixMapping(prefix) \\n\\t\\t\\t}\\n\\t\\t}\\n\\t}else{\\n\\t\\tel.currentNSMap = currentNSMap;\\n\\t\\tel.localNSMap = localNSMap;\\n\\t\\t//parseStack.push(el);\\n\\t\\treturn true;\\n\\t}\\n}\\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\\n\\tif(/^(?:script|textarea)$/i.test(tagName)){\\n\\t\\tvar elEndStart = source.indexOf('',elStartEnd);\\n\\t\\tvar text = source.substring(elStartEnd+1,elEndStart);\\n\\t\\tif(/[&<]/.test(text)){\\n\\t\\t\\tif(/^script$/i.test(tagName)){\\n\\t\\t\\t\\t//if(!/\\\\]\\\\]>/.test(text)){\\n\\t\\t\\t\\t\\t//lexHandler.startCDATA();\\n\\t\\t\\t\\t\\tdomBuilder.characters(text,0,text.length);\\n\\t\\t\\t\\t\\t//lexHandler.endCDATA();\\n\\t\\t\\t\\t\\treturn elEndStart;\\n\\t\\t\\t\\t//}\\n\\t\\t\\t}//}else{//text area\\n\\t\\t\\t\\ttext = text.replace(/&#?\\\\w+;/g,entityReplacer);\\n\\t\\t\\t\\tdomBuilder.characters(text,0,text.length);\\n\\t\\t\\t\\treturn elEndStart;\\n\\t\\t\\t//}\\n\\t\\t\\t\\n\\t\\t}\\n\\t}\\n\\treturn elStartEnd+1;\\n}\\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\\n\\t//if(tagName in closeMap){\\n\\tvar pos = closeMap[tagName];\\n\\tif(pos == null){\\n\\t\\t//console.log(tagName)\\n\\t\\tpos = source.lastIndexOf('')\\n\\t\\tif(pos',start+4);\\n\\t\\t\\t//append comment source.substring(4,end)// \\\" + node.attributes[i].value);\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n return s;\\r\\n }\\r\\n\\r\\n function findAttribute(node, ns, name) {\\r\\n for (var i in node.attributes) {\\r\\n\\r\\n if (node.attributes[i].uri === ns &&\\r\\n node.attributes[i].local === name) {\\r\\n\\r\\n return node.attributes[i].value;\\r\\n }\\r\\n }\\r\\n\\r\\n return null;\\r\\n }\\r\\n\\r\\n function extractAspectRatio(node, errorHandler) {\\r\\n\\r\\n var ar = findAttribute(node, imscNames.ns_ittp, \\\"aspectRatio\\\");\\r\\n\\r\\n var rslt = null;\\r\\n\\r\\n if (ar !== null) {\\r\\n\\r\\n var ASPECT_RATIO_RE = /(\\\\d+) (\\\\d+)/;\\r\\n\\r\\n var m = ASPECT_RATIO_RE.exec(ar);\\r\\n\\r\\n if (m !== null) {\\r\\n\\r\\n var w = parseInt(m[1]);\\r\\n\\r\\n var h = parseInt(m[2]);\\r\\n\\r\\n if (w !== 0 && h !== 0) {\\r\\n\\r\\n rslt = w / h;\\r\\n\\r\\n } else {\\r\\n\\r\\n reportError(errorHandler, \\\"Illegal aspectRatio values (ignoring)\\\");\\r\\n }\\r\\n\\r\\n } else {\\r\\n\\r\\n reportError(errorHandler, \\\"Malformed aspectRatio attribute (ignoring)\\\");\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n return rslt;\\r\\n\\r\\n }\\r\\n\\r\\n /*\\r\\n * Returns the cellResolution attribute from a node\\r\\n * \\r\\n */\\r\\n function extractCellResolution(node, errorHandler) {\\r\\n\\r\\n var cr = findAttribute(node, imscNames.ns_ttp, \\\"cellResolution\\\");\\r\\n\\r\\n // initial value\\r\\n\\r\\n var h = 15;\\r\\n var w = 32;\\r\\n\\r\\n if (cr !== null) {\\r\\n\\r\\n var CELL_RESOLUTION_RE = /(\\\\d+) (\\\\d+)/;\\r\\n\\r\\n var m = CELL_RESOLUTION_RE.exec(cr);\\r\\n\\r\\n if (m !== null) {\\r\\n\\r\\n w = parseInt(m[1]);\\r\\n\\r\\n h = parseInt(m[2]);\\r\\n\\r\\n } else {\\r\\n\\r\\n reportWarning(errorHandler, \\\"Malformed cellResolution value (using initial value instead)\\\");\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n return {'w': w, 'h': h};\\r\\n\\r\\n }\\r\\n\\r\\n\\r\\n function extractFrameAndTickRate(node, errorHandler) {\\r\\n\\r\\n // subFrameRate is ignored per IMSC1 specification\\r\\n\\r\\n // extract frame rate\\r\\n\\r\\n var fps_attr = findAttribute(node, imscNames.ns_ttp, \\\"frameRate\\\");\\r\\n\\r\\n // initial value\\r\\n\\r\\n var fps = 30;\\r\\n\\r\\n // match variable\\r\\n\\r\\n var m;\\r\\n\\r\\n if (fps_attr !== null) {\\r\\n\\r\\n var FRAME_RATE_RE = /(\\\\d+)/;\\r\\n\\r\\n m = FRAME_RATE_RE.exec(fps_attr);\\r\\n\\r\\n if (m !== null) {\\r\\n\\r\\n fps = parseInt(m[1]);\\r\\n\\r\\n } else {\\r\\n\\r\\n reportWarning(errorHandler, \\\"Malformed frame rate attribute (using initial value instead)\\\");\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n // extract frame rate multiplier\\r\\n\\r\\n var frm_attr = findAttribute(node, imscNames.ns_ttp, \\\"frameRateMultiplier\\\");\\r\\n\\r\\n // initial value\\r\\n\\r\\n var frm = 1;\\r\\n\\r\\n if (frm_attr !== null) {\\r\\n\\r\\n var FRAME_RATE_MULT_RE = /(\\\\d+) (\\\\d+)/;\\r\\n\\r\\n m = FRAME_RATE_MULT_RE.exec(frm_attr);\\r\\n\\r\\n if (m !== null) {\\r\\n\\r\\n frm = parseInt(m[1]) / parseInt(m[2]);\\r\\n\\r\\n } else {\\r\\n\\r\\n reportWarning(errorHandler, \\\"Malformed frame rate multiplier attribute (using initial value instead)\\\");\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n var efps = frm * fps;\\r\\n\\r\\n // extract tick rate\\r\\n\\r\\n var tr = 1;\\r\\n\\r\\n var trattr = findAttribute(node, imscNames.ns_ttp, \\\"tickRate\\\");\\r\\n\\r\\n if (trattr === null) {\\r\\n\\r\\n if (fps_attr !== null)\\r\\n tr = efps;\\r\\n\\r\\n } else {\\r\\n\\r\\n var TICK_RATE_RE = /(\\\\d+)/;\\r\\n\\r\\n m = TICK_RATE_RE.exec(trattr);\\r\\n\\r\\n if (m !== null) {\\r\\n\\r\\n tr = parseInt(m[1]);\\r\\n\\r\\n } else {\\r\\n\\r\\n reportWarning(errorHandler, \\\"Malformed tick rate attribute (using initial value instead)\\\");\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n return {effectiveFrameRate: efps, tickRate: tr};\\r\\n\\r\\n }\\r\\n\\r\\n function extractExtent(node, errorHandler) {\\r\\n\\r\\n var attr = findAttribute(node, imscNames.ns_tts, \\\"extent\\\");\\r\\n\\r\\n if (attr === null)\\r\\n return null;\\r\\n\\r\\n var s = attr.split(\\\" \\\");\\r\\n\\r\\n if (s.length !== 2) {\\r\\n\\r\\n reportWarning(errorHandler, \\\"Malformed extent (ignoring)\\\");\\r\\n\\r\\n return null;\\r\\n }\\r\\n\\r\\n var w = imscUtils.parseLength(s[0]);\\r\\n\\r\\n var h = imscUtils.parseLength(s[1]);\\r\\n\\r\\n if (!h || !w) {\\r\\n\\r\\n reportWarning(errorHandler, \\\"Malformed extent values (ignoring)\\\");\\r\\n\\r\\n return null;\\r\\n }\\r\\n\\r\\n return {'h': h, 'w': w};\\r\\n\\r\\n }\\r\\n\\r\\n function parseTimeExpression(tickRate, effectiveFrameRate, str) {\\r\\n\\r\\n var CLOCK_TIME_FRACTION_RE = /^(\\\\d{2,}):(\\\\d\\\\d):(\\\\d\\\\d(?:\\\\.\\\\d+)?)$/;\\r\\n var CLOCK_TIME_FRAMES_RE = /^(\\\\d{2,}):(\\\\d\\\\d):(\\\\d\\\\d)\\\\:(\\\\d{2,})$/;\\r\\n var OFFSET_FRAME_RE = /^(\\\\d+(?:\\\\.\\\\d+)?)f$/;\\r\\n var OFFSET_TICK_RE = /^(\\\\d+(?:\\\\.\\\\d+)?)t$/;\\r\\n var OFFSET_MS_RE = /^(\\\\d+(?:\\\\.\\\\d+)?)ms$/;\\r\\n var OFFSET_S_RE = /^(\\\\d+(?:\\\\.\\\\d+)?)s$/;\\r\\n var OFFSET_H_RE = /^(\\\\d+(?:\\\\.\\\\d+)?)h$/;\\r\\n var OFFSET_M_RE = /^(\\\\d+(?:\\\\.\\\\d+)?)m$/;\\r\\n var m;\\r\\n var r = null;\\r\\n if ((m = OFFSET_FRAME_RE.exec(str)) !== null) {\\r\\n\\r\\n if (effectiveFrameRate !== null) {\\r\\n\\r\\n r = parseFloat(m[1]) / effectiveFrameRate;\\r\\n }\\r\\n\\r\\n } else if ((m = OFFSET_TICK_RE.exec(str)) !== null) {\\r\\n\\r\\n if (tickRate !== null) {\\r\\n\\r\\n r = parseFloat(m[1]) / tickRate;\\r\\n }\\r\\n\\r\\n } else if ((m = OFFSET_MS_RE.exec(str)) !== null) {\\r\\n\\r\\n r = parseFloat(m[1]) / 1000.0;\\r\\n\\r\\n } else if ((m = OFFSET_S_RE.exec(str)) !== null) {\\r\\n\\r\\n r = parseFloat(m[1]);\\r\\n\\r\\n } else if ((m = OFFSET_H_RE.exec(str)) !== null) {\\r\\n\\r\\n r = parseFloat(m[1]) * 3600.0;\\r\\n\\r\\n } else if ((m = OFFSET_M_RE.exec(str)) !== null) {\\r\\n\\r\\n r = parseFloat(m[1]) * 60.0;\\r\\n\\r\\n } else if ((m = CLOCK_TIME_FRACTION_RE.exec(str)) !== null) {\\r\\n\\r\\n r = parseInt(m[1]) * 3600 +\\r\\n parseInt(m[2]) * 60 +\\r\\n parseFloat(m[3]);\\r\\n\\r\\n } else if ((m = CLOCK_TIME_FRAMES_RE.exec(str)) !== null) {\\r\\n\\r\\n /* this assumes that HH:MM:SS is a clock-time-with-fraction */\\r\\n\\r\\n if (effectiveFrameRate !== null) {\\r\\n\\r\\n r = parseInt(m[1]) * 3600 +\\r\\n parseInt(m[2]) * 60 +\\r\\n parseInt(m[3]) +\\r\\n (m[4] === null ? 0 : parseInt(m[4]) / effectiveFrameRate);\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n return r;\\r\\n }\\r\\n\\r\\n function processTiming(doc, parent, node, errorHandler) {\\r\\n\\r\\n /* determine explicit begin */\\r\\n\\r\\n var explicit_begin = null;\\r\\n\\r\\n if (node && 'begin' in node.attributes) {\\r\\n\\r\\n explicit_begin = parseTimeExpression(doc.tickRate, doc.effectiveFrameRate, node.attributes.begin.value);\\r\\n\\r\\n if (explicit_begin === null) {\\r\\n\\r\\n reportWarning(errorHandler, \\\"Malformed begin value \\\" + node.attributes.begin.value + \\\" (using 0)\\\");\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* determine explicit duration */\\r\\n\\r\\n var explicit_dur = null;\\r\\n\\r\\n if (node && 'dur' in node.attributes) {\\r\\n\\r\\n explicit_dur = parseTimeExpression(doc.tickRate, doc.effectiveFrameRate, node.attributes.dur.value);\\r\\n\\r\\n if (explicit_dur === null) {\\r\\n\\r\\n reportWarning(errorHandler, \\\"Malformed dur value \\\" + node.attributes.dur.value + \\\" (ignoring)\\\");\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* determine explicit end */\\r\\n\\r\\n var explicit_end = null;\\r\\n\\r\\n if (node && 'end' in node.attributes) {\\r\\n\\r\\n explicit_end = parseTimeExpression(doc.tickRate, doc.effectiveFrameRate, node.attributes.end.value);\\r\\n\\r\\n if (explicit_end === null) {\\r\\n\\r\\n reportWarning(errorHandler, \\\"Malformed end value (ignoring)\\\");\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n return {explicit_begin: explicit_begin,\\r\\n explicit_end: explicit_end,\\r\\n explicit_dur: explicit_dur};\\r\\n\\r\\n }\\r\\n\\r\\n\\r\\n\\r\\n function mergeChainedStyles(styling, style, errorHandler) {\\r\\n\\r\\n while (style.styleRefs.length > 0) {\\r\\n\\r\\n var sref = style.styleRefs.pop();\\r\\n\\r\\n if (!(sref in styling.styles)) {\\r\\n reportError(errorHandler, \\\"Non-existant style id referenced\\\");\\r\\n continue;\\r\\n }\\r\\n\\r\\n mergeChainedStyles(styling, styling.styles[sref], errorHandler);\\r\\n\\r\\n mergeStylesIfNotPresent(styling.styles[sref].styleAttrs, style.styleAttrs);\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n function mergeReferencedStyles(styling, stylerefs, styleattrs, errorHandler) {\\r\\n\\r\\n for (var i = stylerefs.length - 1; i >= 0; i--) {\\r\\n\\r\\n var sref = stylerefs[i];\\r\\n\\r\\n if (!(sref in styling.styles)) {\\r\\n reportError(errorHandler, \\\"Non-existant style id referenced\\\");\\r\\n continue;\\r\\n }\\r\\n\\r\\n mergeStylesIfNotPresent(styling.styles[sref].styleAttrs, styleattrs);\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n function mergeStylesIfNotPresent(from_styles, into_styles) {\\r\\n\\r\\n for (var sname in from_styles) {\\r\\n\\r\\n if (sname in into_styles)\\r\\n continue;\\r\\n\\r\\n into_styles[sname] = from_styles[sname];\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* TODO: validate style format at parsing */\\r\\n\\r\\n\\r\\n /*\\r\\n * ERROR HANDLING UTILITY FUNCTIONS\\r\\n * \\r\\n */\\r\\n\\r\\n function reportInfo(errorHandler, msg) {\\r\\n\\r\\n if (errorHandler && errorHandler.info && errorHandler.info(msg))\\r\\n throw msg;\\r\\n\\r\\n }\\r\\n\\r\\n function reportWarning(errorHandler, msg) {\\r\\n\\r\\n if (errorHandler && errorHandler.warn && errorHandler.warn(msg))\\r\\n throw msg;\\r\\n\\r\\n }\\r\\n\\r\\n function reportError(errorHandler, msg) {\\r\\n\\r\\n if (errorHandler && errorHandler.error && errorHandler.error(msg))\\r\\n throw msg;\\r\\n\\r\\n }\\r\\n\\r\\n function reportFatal(errorHandler, msg) {\\r\\n\\r\\n if (errorHandler && errorHandler.fatal)\\r\\n errorHandler.fatal(msg);\\r\\n\\r\\n throw msg;\\r\\n\\r\\n }\\r\\n\\r\\n /*\\r\\n * Binary search utility function\\r\\n * \\r\\n * @typedef {Object} BinarySearchResult\\r\\n * @property {boolean} found Was an exact match found?\\r\\n * @property {number} index Position of the exact match or insert position\\r\\n * \\r\\n * @returns {BinarySearchResult}\\r\\n */\\r\\n\\r\\n function indexOf(arr, searchval) {\\r\\n\\r\\n var min = 0;\\r\\n var max = arr.length - 1;\\r\\n var cur;\\r\\n\\r\\n while (min <= max) {\\r\\n\\r\\n cur = Math.floor((min + max) / 2);\\r\\n\\r\\n var curval = arr[cur];\\r\\n\\r\\n if (curval < searchval) {\\r\\n\\r\\n min = cur + 1;\\r\\n\\r\\n } else if (curval > searchval) {\\r\\n\\r\\n max = cur - 1;\\r\\n\\r\\n } else {\\r\\n\\r\\n return {found: true, index: cur};\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n return {found: false, index: min};\\r\\n }\\r\\n\\r\\n\\r\\n})( false ? undefined : exports,\\r\\n typeof sax === 'undefined' ? __webpack_require__(/*! sax */ \\\"./node_modules/sax/lib/sax.js\\\") : sax,\\r\\n typeof imscNames === 'undefined' ? __webpack_require__(/*! ./names */ \\\"./node_modules/imsc/src/main/js/names.js\\\") : imscNames,\\r\\n typeof imscStyles === 'undefined' ? __webpack_require__(/*! ./styles */ \\\"./node_modules/imsc/src/main/js/styles.js\\\") : imscStyles,\\r\\n typeof imscUtils === 'undefined' ? __webpack_require__(/*! ./utils */ \\\"./node_modules/imsc/src/main/js/utils.js\\\") : imscUtils);\\r\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/imsc/src/main/js/html.js\\\":\\n/*!***********************************************!*\\\\\\n !*** ./node_modules/imsc/src/main/js/html.js ***!\\n \\\\***********************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* \\r\\n * Copyright (c) 2016, Pierre-Anthony Lemieux \\r\\n * All rights reserved.\\r\\n *\\r\\n * Redistribution and use in source and binary forms, with or without\\r\\n * modification, are permitted provided that the following conditions are met:\\r\\n *\\r\\n * * Redistributions of source code must retain the above copyright notice, this\\r\\n * list of conditions and the following disclaimer.\\r\\n * * Redistributions in binary form must reproduce the above copyright notice,\\r\\n * this list of conditions and the following disclaimer in the documentation\\r\\n * and/or other materials provided with the distribution.\\r\\n *\\r\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\r\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\r\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\r\\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\\r\\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\r\\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\r\\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\r\\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\r\\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\r\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\r\\n * POSSIBILITY OF SUCH DAMAGE.\\r\\n */\\r\\n\\r\\n/**\\r\\n * @module imscHTML\\r\\n */\\r\\n\\r\\n;\\r\\n(function (imscHTML, imscNames, imscStyles) {\\r\\n\\r\\n /**\\r\\n * Function that maps
smpte:background
URIs to URLs resolving to image resource\\r\\n * @callback IMGResolver\\r\\n * @param {string}
smpte:background
URI\\r\\n * @return {string} PNG resource URL\\r\\n */\\r\\n\\r\\n\\r\\n /**\\r\\n * Renders an ISD object (returned by
generateISD()
) into a \\r\\n * parent element, that must be attached to the DOM. The ISD will be rendered\\r\\n * into a child
div
\\r\\n * with heigh and width equal to the clientHeight and clientWidth of the element,\\r\\n * unless explicitly specified otherwise by the caller. Images URIs specified \\r\\n * by
smpte:background
attributes are mapped to image resource URLs\\r\\n * by an
imgResolver
function. The latter takes the value of smpte:background\\r\\n * attribute and an img DOM element as input, and is expected to\\r\\n * set the src attribute of the img to the absolute URI of the image.\\r\\n *
displayForcedOnlyMode
sets the (boolean)\\r\\n * value of the IMSC1 displayForcedOnlyMode parameter. The function returns\\r\\n * an opaque object that should passed in previousISDState when this function\\r\\n * is called for the next ISD, otherwise previousISDState should be set to \\r\\n * null.\\r\\n * \\r\\n * @param {Object} isd ISD to be rendered\\r\\n * @param {Object} element Element into which the ISD is rendered\\r\\n * @param {?IMGResolver} imgResolver Resolve
smpte:background
URIs into URLs.\\r\\n * @param {?number} eheight Height (in pixel) of the child
div
or null \\r\\n * to use clientHeight of the parent element\\r\\n * @param {?number} ewidth Width (in pixel) of the child
div
or null\\r\\n * to use clientWidth of the parent element\\r\\n * @param {?boolean} displayForcedOnlyMode Value of the IMSC1 displayForcedOnlyMode parameter,\\r\\n * or false if null \\r\\n * @param {?module:imscUtils.ErrorHandler} errorHandler Error callback\\r\\n * @param {Object} previousISDState State saved during processing of the previous ISD, or null if initial call\\r\\n * @param {?boolean} enableRollUp Enables roll-up animations (see CEA 708)\\r\\n * @return {Object} ISD state to be provided when this funtion is called for the next ISD\\r\\n */\\r\\n\\r\\n imscHTML.render = function (isd,\\r\\n element,\\r\\n imgResolver,\\r\\n eheight,\\r\\n ewidth,\\r\\n displayForcedOnlyMode,\\r\\n errorHandler,\\r\\n previousISDState,\\r\\n enableRollUp\\r\\n ) {\\r\\n\\r\\n /* maintain aspect ratio if specified */\\r\\n\\r\\n var height = eheight || element.clientHeight;\\r\\n var width = ewidth || element.clientWidth;\\r\\n\\r\\n if (isd.aspectRatio !== null) {\\r\\n\\r\\n var twidth = height * isd.aspectRatio;\\r\\n\\r\\n if (twidth > width) {\\r\\n\\r\\n height = Math.round(width / isd.aspectRatio);\\r\\n\\r\\n } else {\\r\\n\\r\\n width = twidth;\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n var rootcontainer = document.createElement(\\\"div\\\");\\r\\n\\r\\n rootcontainer.style.position = \\\"relative\\\";\\r\\n rootcontainer.style.width = width + \\\"px\\\";\\r\\n rootcontainer.style.height = height + \\\"px\\\";\\r\\n rootcontainer.style.margin = \\\"auto\\\";\\r\\n rootcontainer.style.top = 0;\\r\\n rootcontainer.style.bottom = 0;\\r\\n rootcontainer.style.left = 0;\\r\\n rootcontainer.style.right = 0;\\r\\n rootcontainer.style.zIndex = 0;\\r\\n\\r\\n var context = {\\r\\n h: height,\\r\\n w: width,\\r\\n regionH: null,\\r\\n regionW: null,\\r\\n imgResolver: imgResolver,\\r\\n displayForcedOnlyMode: displayForcedOnlyMode || false,\\r\\n isd: isd,\\r\\n errorHandler: errorHandler,\\r\\n previousISDState: previousISDState,\\r\\n enableRollUp: enableRollUp || false,\\r\\n currentISDState: {},\\r\\n flg: null, /* current fillLineGap value if active, null otherwise */\\r\\n lp: null, /* current linePadding value if active, null otherwise */\\r\\n mra: null, /* current multiRowAlign value if active, null otherwise */\\r\\n ipd: null, /* inline progression direction (lr, rl, tb) */\\r\\n bpd: null /* block progression direction (lr, rl, tb) */\\r\\n };\\r\\n\\r\\n element.appendChild(rootcontainer);\\r\\n\\r\\n for (var i in isd.contents) {\\r\\n\\r\\n processElement(context, rootcontainer, isd.contents[i]);\\r\\n\\r\\n }\\r\\n\\r\\n return context.currentISDState;\\r\\n\\r\\n };\\r\\n\\r\\n function processElement(context, dom_parent, isd_element) {\\r\\n\\r\\n var e;\\r\\n\\r\\n if (isd_element.kind === 'region') {\\r\\n\\r\\n e = document.createElement(\\\"div\\\");\\r\\n e.style.position = \\\"absolute\\\";\\r\\n\\r\\n } else if (isd_element.kind === 'body') {\\r\\n\\r\\n e = document.createElement(\\\"div\\\");\\r\\n\\r\\n } else if (isd_element.kind === 'div') {\\r\\n\\r\\n e = document.createElement(\\\"div\\\");\\r\\n\\r\\n } else if (isd_element.kind === 'p') {\\r\\n\\r\\n e = document.createElement(\\\"p\\\");\\r\\n\\r\\n } else if (isd_element.kind === 'span') {\\r\\n\\r\\n e = document.createElement(\\\"span\\\");\\r\\n\\r\\n //e.textContent = isd_element.text;\\r\\n\\r\\n } else if (isd_element.kind === 'br') {\\r\\n\\r\\n e = document.createElement(\\\"br\\\");\\r\\n\\r\\n }\\r\\n\\r\\n if (!e) {\\r\\n\\r\\n reportError(context.errorHandler, \\\"Error processing ISD element kind: \\\" + isd_element.kind);\\r\\n\\r\\n return;\\r\\n\\r\\n }\\r\\n\\r\\n /* override UA default margin */\\r\\n /* TODO: should apply to

only */\\r\\n\\r\\n e.style.margin = \\\"0\\\";\\r\\n\\r\\n /* tranform TTML styles to CSS styles */\\r\\n\\r\\n for (var i in STYLING_MAP_DEFS) {\\r\\n\\r\\n var sm = STYLING_MAP_DEFS[i];\\r\\n\\r\\n var attr = isd_element.styleAttrs[sm.qname];\\r\\n\\r\\n if (attr !== undefined && sm.map !== null) {\\r\\n\\r\\n sm.map(context, e, isd_element, attr);\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n var proc_e = e;\\r\\n\\r\\n /* remember writing direction */\\r\\n\\r\\n if (isd_element.kind === \\\"region\\\") {\\r\\n\\r\\n var wdir = isd_element.styleAttrs[imscStyles.byName.writingMode.qname];\\r\\n\\r\\n if (wdir === \\\"lrtb\\\" || wdir === \\\"lr\\\") {\\r\\n\\r\\n context.ipd = \\\"lr\\\";\\r\\n context.bpd = \\\"tb\\\";\\r\\n\\r\\n } else if (wdir === \\\"rltb\\\" || wdir === \\\"rl\\\") {\\r\\n\\r\\n context.ipd = \\\"rl\\\";\\r\\n context.bpd = \\\"tb\\\";\\r\\n\\r\\n } else if (wdir === \\\"tblr\\\") {\\r\\n\\r\\n context.ipd = \\\"tb\\\";\\r\\n context.bpd = \\\"lr\\\";\\r\\n\\r\\n } else if (wdir === \\\"tbrl\\\" || wdir === \\\"tb\\\") {\\r\\n\\r\\n context.ipd = \\\"tb\\\";\\r\\n context.bpd = \\\"rl\\\";\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* do we have linePadding ? */\\r\\n\\r\\n var lp = isd_element.styleAttrs[imscStyles.byName.linePadding.qname];\\r\\n\\r\\n if (lp && lp > 0) {\\r\\n\\r\\n /* apply padding to the

so that line padding does not cause line wraps */\\r\\n\\r\\n var padmeasure = Math.ceil(lp * context.h) + \\\"px\\\";\\r\\n\\r\\n if (context.bpd === \\\"tb\\\") {\\r\\n\\r\\n proc_e.style.paddingLeft = padmeasure;\\r\\n proc_e.style.paddingRight = padmeasure;\\r\\n\\r\\n } else {\\r\\n\\r\\n proc_e.style.paddingTop = padmeasure;\\r\\n proc_e.style.paddingBottom = padmeasure;\\r\\n\\r\\n }\\r\\n\\r\\n context.lp = lp;\\r\\n }\\r\\n\\r\\n // do we have multiRowAlign?\\r\\n\\r\\n var mra = isd_element.styleAttrs[imscStyles.byName.multiRowAlign.qname];\\r\\n\\r\\n if (mra && mra !== \\\"auto\\\") {\\r\\n\\r\\n /* create inline block to handle multirowAlign */\\r\\n\\r\\n var s = document.createElement(\\\"span\\\");\\r\\n\\r\\n s.style.display = \\\"inline-block\\\";\\r\\n\\r\\n s.style.textAlign = mra;\\r\\n\\r\\n e.appendChild(s);\\r\\n\\r\\n proc_e = s;\\r\\n\\r\\n context.mra = mra;\\r\\n\\r\\n }\\r\\n\\r\\n /* remember we are filling line gaps */\\r\\n\\r\\n if (isd_element.styleAttrs[imscStyles.byName.fillLineGap.qname]) {\\r\\n context.flg = true;\\r\\n }\\r\\n\\r\\n\\r\\n if (isd_element.kind === \\\"span\\\" && isd_element.text) {\\r\\n\\r\\n if (context.lp || context.mra || context.flg) {\\r\\n\\r\\n // wrap characters in spans to find the line wrap locations\\r\\n\\r\\n var cbuf = '';\\r\\n\\r\\n for (var j = 0; j < isd_element.text.length; j++) {\\r\\n\\r\\n cbuf += isd_element.text.charAt(j);\\r\\n\\r\\n var cc = isd_element.text.charCodeAt(j);\\r\\n\\r\\n if (cc < 0xD800 || cc > 0xDBFF || j === isd_element.text.length) {\\r\\n\\r\\n /* wrap the character(s) in a span unless it is a high surrogate */\\r\\n\\r\\n var span = document.createElement(\\\"span\\\");\\r\\n\\r\\n span.textContent = cbuf;\\r\\n \\r\\n e.appendChild(span);\\r\\n\\r\\n cbuf = '';\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n } else {\\r\\n\\r\\n e.textContent = isd_element.text;\\r\\n\\r\\n }\\r\\n }\\r\\n\\r\\n dom_parent.appendChild(e);\\r\\n\\r\\n /* process the children of the ISD element */\\r\\n\\r\\n for (var k in isd_element.contents) {\\r\\n\\r\\n processElement(context, proc_e, isd_element.contents[k]);\\r\\n\\r\\n }\\r\\n\\r\\n /* list of lines */\\r\\n\\r\\n var linelist = [];\\r\\n\\r\\n\\r\\n /* paragraph processing */\\r\\n /* TODO: linePadding only supported for horizontal scripts */\\r\\n\\r\\n if ((context.lp || context.mra || context.flg) && isd_element.kind === \\\"p\\\") {\\r\\n\\r\\n constructLineList(context, proc_e, linelist, null);\\r\\n\\r\\n /* insert line breaks for multirowalign */\\r\\n\\r\\n if (context.mra) {\\r\\n\\r\\n applyMultiRowAlign(linelist);\\r\\n\\r\\n context.mra = null;\\r\\n\\r\\n }\\r\\n\\r\\n /* add linepadding */\\r\\n\\r\\n if (context.lp) {\\r\\n\\r\\n applyLinePadding(linelist, context.lp * context.h, context);\\r\\n\\r\\n context.lp = null;\\r\\n\\r\\n }\\r\\n\\r\\n /* fill line gaps linepadding */\\r\\n\\r\\n if (context.flg) {\\r\\n\\r\\n var par_edges = rect2edges(proc_e.getBoundingClientRect(), context);\\r\\n\\r\\n applyFillLineGap(linelist, par_edges.before, par_edges.after, context);\\r\\n\\r\\n context.flg = null;\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n\\r\\n /* region processing */\\r\\n\\r\\n if (isd_element.kind === \\\"region\\\") {\\r\\n\\r\\n /* build line list */\\r\\n\\r\\n constructLineList(context, proc_e, linelist);\\r\\n\\r\\n /* perform roll up if needed */\\r\\n\\r\\n if ((context.bpd === \\\"tb\\\") &&\\r\\n context.enableRollUp &&\\r\\n isd_element.contents.length > 0 &&\\r\\n isd_element.styleAttrs[imscStyles.byName.displayAlign.qname] === 'after') {\\r\\n\\r\\n /* horrible hack, perhaps default region id should be underscore everywhere? */\\r\\n\\r\\n var rid = isd_element.id === '' ? '_' : isd_element.id;\\r\\n\\r\\n var rb = new RegionPBuffer(rid, linelist);\\r\\n\\r\\n context.currentISDState[rb.id] = rb;\\r\\n\\r\\n if (context.previousISDState &&\\r\\n rb.id in context.previousISDState &&\\r\\n context.previousISDState[rb.id].plist.length > 0 &&\\r\\n rb.plist.length > 1 &&\\r\\n rb.plist[rb.plist.length - 2].text ===\\r\\n context.previousISDState[rb.id].plist[context.previousISDState[rb.id].plist.length - 1].text) {\\r\\n\\r\\n var body_elem = e.firstElementChild;\\r\\n \\r\\n var h = rb.plist[rb.plist.length - 1].after - rb.plist[rb.plist.length - 1].before;\\r\\n\\r\\n body_elem.style.bottom = \\\"-\\\" + h + \\\"px\\\";\\r\\n body_elem.style.transition = \\\"transform 0.4s\\\";\\r\\n body_elem.style.position = \\\"relative\\\";\\r\\n body_elem.style.transform = \\\"translateY(-\\\" + h + \\\"px)\\\";\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* TODO: clean-up the spans ? */\\r\\n\\r\\n }\\r\\n }\\r\\n\\r\\n function applyLinePadding(lineList, lp, context) {\\r\\n\\r\\n for (var i in lineList) {\\r\\n\\r\\n var l = lineList[i].elements.length;\\r\\n\\r\\n var se = lineList[i].elements[lineList[i].start_elem];\\r\\n\\r\\n var ee = lineList[i].elements[lineList[i].end_elem];\\r\\n\\r\\n var pospadpxlen = Math.ceil(lp) + \\\"px\\\";\\r\\n\\r\\n var negpadpxlen = \\\"-\\\" + Math.ceil(lp) + \\\"px\\\";\\r\\n\\r\\n if (l !== 0) {\\r\\n\\r\\n if (context.ipd === \\\"lr\\\") {\\r\\n\\r\\n se.node.style.borderLeftColor = se.bgcolor || \\\"#00000000\\\";\\r\\n se.node.style.borderLeftStyle = \\\"solid\\\";\\r\\n se.node.style.borderLeftWidth = pospadpxlen;\\r\\n se.node.style.marginLeft = negpadpxlen;\\r\\n\\r\\n } else if (context.ipd === \\\"rl\\\") {\\r\\n\\r\\n se.node.style.borderRightColor = se.bgcolor || \\\"#00000000\\\";\\r\\n se.node.style.borderRightStyle = \\\"solid\\\";\\r\\n se.node.style.borderRightWidth = pospadpxlen;\\r\\n se.node.style.marginRight = negpadpxlen;\\r\\n\\r\\n } else if (context.ipd === \\\"tb\\\") {\\r\\n\\r\\n se.node.style.borderTopColor = se.bgcolor || \\\"#00000000\\\";\\r\\n se.node.style.borderTopStyle = \\\"solid\\\";\\r\\n se.node.style.borderTopWidth = pospadpxlen;\\r\\n se.node.style.marginTop = negpadpxlen;\\r\\n\\r\\n }\\r\\n\\r\\n if (context.ipd === \\\"lr\\\") {\\r\\n\\r\\n ee.node.style.borderRightColor = ee.bgcolor || \\\"#00000000\\\";\\r\\n ee.node.style.borderRightStyle = \\\"solid\\\";\\r\\n ee.node.style.borderRightWidth = pospadpxlen;\\r\\n ee.node.style.marginRight = negpadpxlen;\\r\\n\\r\\n } else if (context.ipd === \\\"rl\\\") {\\r\\n\\r\\n ee.node.style.borderLeftColor = ee.bgcolor || \\\"#00000000\\\";\\r\\n ee.node.style.borderLeftStyle = \\\"solid\\\";\\r\\n ee.node.style.borderLeftWidth = pospadpxlen;\\r\\n ee.node.style.marginLeft = negpadpxlen;\\r\\n\\r\\n } else if (context.ipd === \\\"tb\\\") {\\r\\n\\r\\n ee.node.style.borderBottomColor = ee.bgcolor || \\\"#00000000\\\";\\r\\n ee.node.style.borderBottomStyle = \\\"solid\\\";\\r\\n ee.node.style.borderBottomWidth = pospadpxlen;\\r\\n ee.node.style.marginBottom = negpadpxlen;\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n function applyMultiRowAlign(lineList) {\\r\\n\\r\\n /* apply an explicit br to all but the last line */\\r\\n\\r\\n for (var i = 0; i < lineList.length - 1; i++) {\\r\\n\\r\\n var l = lineList[i].elements.length;\\r\\n\\r\\n if (l !== 0 && lineList[i].br === false) {\\r\\n var br = document.createElement(\\\"br\\\");\\r\\n\\r\\n var lastnode = lineList[i].elements[l - 1].node;\\r\\n\\r\\n lastnode.parentElement.insertBefore(br, lastnode.nextSibling);\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n function applyFillLineGap(lineList, par_before, par_after, context) {\\r\\n\\r\\n /* positive for BPD = lr and tb, negative for BPD = rl */\\r\\n var s = Math.sign(par_after - par_before);\\r\\n\\r\\n for (var i = 0; i <= lineList.length; i++) {\\r\\n\\r\\n /* compute frontier between lines */\\r\\n\\r\\n var frontier;\\r\\n\\r\\n if (i === 0) {\\r\\n\\r\\n frontier = par_before;\\r\\n\\r\\n } else if (i === lineList.length) {\\r\\n\\r\\n frontier = par_after;\\r\\n\\r\\n } else {\\r\\n\\r\\n frontier = (lineList[i].before + lineList[i - 1].after) / 2;\\r\\n\\r\\n }\\r\\n\\r\\n /* padding amount */\\r\\n\\r\\n var pad;\\r\\n\\r\\n /* current element */\\r\\n\\r\\n var e;\\r\\n\\r\\n /* before line */\\r\\n\\r\\n if (i > 0) {\\r\\n\\r\\n for (var j = 0; j < lineList[i - 1].elements.length; j++) {\\r\\n\\r\\n if (lineList[i - 1].elements[j].bgcolor === null) continue;\\r\\n\\r\\n e = lineList[i - 1].elements[j];\\r\\n\\r\\n if (s * (e.after - frontier) < 0) {\\r\\n\\r\\n pad = Math.ceil(Math.abs(frontier - e.after)) + \\\"px\\\";\\r\\n\\r\\n e.node.style.backgroundColor = e.bgcolor;\\r\\n\\r\\n if (context.bpd === \\\"lr\\\") {\\r\\n\\r\\n e.node.style.paddingRight = pad;\\r\\n\\r\\n\\r\\n } else if (context.bpd === \\\"rl\\\") {\\r\\n\\r\\n e.node.style.paddingLeft = pad;\\r\\n\\r\\n } else if (context.bpd === \\\"tb\\\") {\\r\\n\\r\\n e.node.style.paddingBottom = pad;\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* after line */\\r\\n\\r\\n if (i < lineList.length) {\\r\\n\\r\\n for (var k = 0; k < lineList[i].elements.length; k++) {\\r\\n\\r\\n e = lineList[i].elements[k];\\r\\n\\r\\n if (e.bgcolor === null) continue;\\r\\n\\r\\n if (s * (e.before - frontier) > 0) {\\r\\n\\r\\n pad = Math.ceil(Math.abs(e.before - frontier)) + \\\"px\\\";\\r\\n\\r\\n e.node.style.backgroundColor = e.bgcolor;\\r\\n\\r\\n if (context.bpd === \\\"lr\\\") {\\r\\n\\r\\n e.node.style.paddingLeft = pad;\\r\\n\\r\\n\\r\\n } else if (context.bpd === \\\"rl\\\") {\\r\\n\\r\\n e.node.style.paddingRight = pad;\\r\\n\\r\\n\\r\\n } else if (context.bpd === \\\"tb\\\") {\\r\\n\\r\\n e.node.style.paddingTop = pad;\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n function RegionPBuffer(id, lineList) {\\r\\n\\r\\n this.id = id;\\r\\n\\r\\n this.plist = lineList;\\r\\n\\r\\n }\\r\\n\\r\\n function pruneEmptySpans(element) {\\r\\n\\r\\n var child = element.firstChild;\\r\\n\\r\\n while (child) {\\r\\n\\r\\n var nchild = child.nextSibling;\\r\\n\\r\\n if (child.nodeType === Node.ELEMENT_NODE &&\\r\\n child.localName === 'span') {\\r\\n\\r\\n pruneEmptySpans(child);\\r\\n\\r\\n if (child.childElementCount === 0 &&\\r\\n child.textContent.length === 0) {\\r\\n\\r\\n element.removeChild(child);\\r\\n\\r\\n }\\r\\n }\\r\\n\\r\\n child = nchild;\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n function rect2edges(rect, context) {\\r\\n\\r\\n var edges = {before: null, after: null, start: null, end: null};\\r\\n\\r\\n if (context.bpd === \\\"tb\\\") {\\r\\n\\r\\n edges.before = rect.top;\\r\\n edges.after = rect.bottom;\\r\\n\\r\\n if (context.ipd === \\\"lr\\\") {\\r\\n\\r\\n edges.start = rect.left;\\r\\n edges.end = rect.right;\\r\\n\\r\\n } else {\\r\\n\\r\\n edges.start = rect.right;\\r\\n edges.end = rect.left;\\r\\n }\\r\\n\\r\\n } else if (context.bpd === \\\"lr\\\") {\\r\\n\\r\\n edges.before = rect.left;\\r\\n edges.after = rect.right;\\r\\n edges.start = rect.top;\\r\\n edges.end = rect.bottom;\\r\\n\\r\\n } else if (context.bpd === \\\"rl\\\") {\\r\\n\\r\\n edges.before = rect.right;\\r\\n edges.after = rect.left;\\r\\n edges.start = rect.top;\\r\\n edges.end = rect.bottom;\\r\\n\\r\\n }\\r\\n\\r\\n return edges;\\r\\n\\r\\n }\\r\\n\\r\\n function constructLineList(context, element, llist, bgcolor) {\\r\\n\\r\\n var curbgcolor = element.style.backgroundColor || bgcolor;\\r\\n\\r\\n if (element.childElementCount === 0) {\\r\\n\\r\\n if (element.localName === 'span') {\\r\\n\\r\\n var r = element.getBoundingClientRect();\\r\\n\\r\\n /* skip if span is not displayed */\\r\\n\\r\\n if (r.height === 0 || r.width === 0) return;\\r\\n\\r\\n var edges = rect2edges(r, context);\\r\\n\\r\\n if (llist.length === 0 ||\\r\\n (!isSameLine(edges.before, edges.after, llist[llist.length - 1].before, llist[llist.length - 1].after))\\r\\n ) {\\r\\n\\r\\n llist.push({\\r\\n before: edges.before,\\r\\n after: edges.after,\\r\\n start: edges.start,\\r\\n end: edges.end,\\r\\n start_elem: 0,\\r\\n end_elem: 0,\\r\\n elements: [],\\r\\n text: \\\"\\\",\\r\\n br: false\\r\\n });\\r\\n\\r\\n } else {\\r\\n\\r\\n /* positive for BPD = lr and tb, negative for BPD = rl */\\r\\n var bpd_dir = Math.sign(edges.after - edges.before);\\r\\n\\r\\n /* positive for IPD = lr and tb, negative for IPD = rl */\\r\\n var ipd_dir = Math.sign(edges.end - edges.start);\\r\\n\\r\\n /* check if the line height has increased */\\r\\n\\r\\n if (bpd_dir * (edges.before - llist[llist.length - 1].before) < 0) {\\r\\n llist[llist.length - 1].before = edges.before;\\r\\n }\\r\\n\\r\\n if (bpd_dir * (edges.after - llist[llist.length - 1].after) > 0) {\\r\\n llist[llist.length - 1].after = edges.after;\\r\\n }\\r\\n\\r\\n if (ipd_dir * (edges.start - llist[llist.length - 1].start) < 0) {\\r\\n llist[llist.length - 1].start = edges.start;\\r\\n llist[llist.length - 1].start_elem = llist[llist.length - 1].elements.length;\\r\\n }\\r\\n\\r\\n if (ipd_dir * (edges.end - llist[llist.length - 1].end) > 0) {\\r\\n llist[llist.length - 1].end = edges.end;\\r\\n llist[llist.length - 1].end_elem = llist[llist.length - 1].elements.length;\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n llist[llist.length - 1].text += element.textContent;\\r\\n\\r\\n llist[llist.length - 1].elements.push(\\r\\n {\\r\\n node: element,\\r\\n bgcolor: curbgcolor,\\r\\n before: edges.before,\\r\\n after: edges.after\\r\\n }\\r\\n );\\r\\n\\r\\n } else if (element.localName === 'br' && llist.length !== 0) {\\r\\n\\r\\n llist[llist.length - 1].br = true;\\r\\n\\r\\n }\\r\\n\\r\\n } else {\\r\\n\\r\\n var child = element.firstChild;\\r\\n\\r\\n while (child) {\\r\\n\\r\\n if (child.nodeType === Node.ELEMENT_NODE) {\\r\\n\\r\\n constructLineList(context, child, llist, curbgcolor);\\r\\n\\r\\n }\\r\\n\\r\\n child = child.nextSibling;\\r\\n }\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n function isSameLine(before1, after1, before2, after2) {\\r\\n\\r\\n return ((after1 < after2) && (before1 > before2)) || ((after2 <= after1) && (before2 >= before1));\\r\\n\\r\\n }\\r\\n\\r\\n function HTMLStylingMapDefintion(qName, mapFunc) {\\r\\n this.qname = qName;\\r\\n this.map = mapFunc;\\r\\n }\\r\\n\\r\\n var STYLING_MAP_DEFS = [\\r\\n\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling backgroundColor\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n /* skip if transparent */\\r\\n if (attr[3] === 0) return;\\r\\n\\r\\n dom_element.style.backgroundColor = \\\"rgba(\\\" +\\r\\n attr[0].toString() + \\\",\\\" +\\r\\n attr[1].toString() + \\\",\\\" +\\r\\n attr[2].toString() + \\\",\\\" +\\r\\n (attr[3] / 255).toString() +\\r\\n \\\")\\\";\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling color\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.color = \\\"rgba(\\\" +\\r\\n attr[0].toString() + \\\",\\\" +\\r\\n attr[1].toString() + \\\",\\\" +\\r\\n attr[2].toString() + \\\",\\\" +\\r\\n (attr[3] / 255).toString() +\\r\\n \\\")\\\";\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling direction\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.direction = attr;\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling display\\\",\\r\\n function (context, dom_element, isd_element, attr) {}\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling displayAlign\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n /* see https://css-tricks.com/snippets/css/a-guide-to-flexbox/ */\\r\\n\\r\\n /* TODO: is this affected by writing direction? */\\r\\n\\r\\n dom_element.style.display = \\\"flex\\\";\\r\\n dom_element.style.flexDirection = \\\"column\\\";\\r\\n\\r\\n\\r\\n if (attr === \\\"before\\\") {\\r\\n\\r\\n dom_element.style.justifyContent = \\\"flex-start\\\";\\r\\n\\r\\n } else if (attr === \\\"center\\\") {\\r\\n\\r\\n dom_element.style.justifyContent = \\\"center\\\";\\r\\n\\r\\n } else if (attr === \\\"after\\\") {\\r\\n\\r\\n dom_element.style.justifyContent = \\\"flex-end\\\";\\r\\n }\\r\\n\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling extent\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n /* TODO: this is super ugly */\\r\\n\\r\\n context.regionH = (attr.h * context.h);\\r\\n context.regionW = (attr.w * context.w);\\r\\n\\r\\n /* \\r\\n * CSS height/width are measured against the content rectangle,\\r\\n * whereas TTML height/width include padding\\r\\n */\\r\\n\\r\\n var hdelta = 0;\\r\\n var wdelta = 0;\\r\\n\\r\\n var p = isd_element.styleAttrs[\\\"http://www.w3.org/ns/ttml#styling padding\\\"];\\r\\n\\r\\n if (!p) {\\r\\n\\r\\n /* error */\\r\\n\\r\\n } else {\\r\\n\\r\\n hdelta = (p[0] + p[2]) * context.h;\\r\\n wdelta = (p[1] + p[3]) * context.w;\\r\\n\\r\\n }\\r\\n\\r\\n dom_element.style.height = (context.regionH - hdelta) + \\\"px\\\";\\r\\n dom_element.style.width = (context.regionW - wdelta) + \\\"px\\\";\\r\\n\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling fontFamily\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n var rslt = [];\\r\\n\\r\\n /* per IMSC1 */\\r\\n\\r\\n for (var i in attr) {\\r\\n\\r\\n if (attr[i] === \\\"monospaceSerif\\\") {\\r\\n\\r\\n rslt.push(\\\"Courier New\\\");\\r\\n rslt.push('\\\"Liberation Mono\\\"');\\r\\n rslt.push(\\\"Courier\\\");\\r\\n rslt.push(\\\"monospace\\\");\\r\\n\\r\\n } else if (attr[i] === \\\"proportionalSansSerif\\\") {\\r\\n\\r\\n rslt.push(\\\"Arial\\\");\\r\\n rslt.push(\\\"Helvetica\\\");\\r\\n rslt.push('\\\"Liberation Sans\\\"');\\r\\n rslt.push(\\\"sans-serif\\\");\\r\\n\\r\\n } else if (attr[i] === \\\"monospace\\\") {\\r\\n\\r\\n rslt.push(\\\"monospace\\\");\\r\\n\\r\\n } else if (attr[i] === \\\"sansSerif\\\") {\\r\\n\\r\\n rslt.push(\\\"sans-serif\\\");\\r\\n\\r\\n } else if (attr[i] === \\\"serif\\\") {\\r\\n\\r\\n rslt.push(\\\"serif\\\");\\r\\n\\r\\n } else if (attr[i] === \\\"monospaceSansSerif\\\") {\\r\\n\\r\\n rslt.push(\\\"Consolas\\\");\\r\\n rslt.push(\\\"monospace\\\");\\r\\n\\r\\n } else if (attr[i] === \\\"proportionalSerif\\\") {\\r\\n\\r\\n rslt.push(\\\"serif\\\");\\r\\n\\r\\n } else {\\r\\n\\r\\n rslt.push(attr[i]);\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n dom_element.style.fontFamily = rslt.join(\\\",\\\");\\r\\n }\\r\\n ),\\r\\n\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling fontSize\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.fontSize = (attr * context.h) + \\\"px\\\";\\r\\n }\\r\\n ),\\r\\n\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling fontStyle\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.fontStyle = attr;\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling fontWeight\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.fontWeight = attr;\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling lineHeight\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n if (attr === \\\"normal\\\") {\\r\\n\\r\\n dom_element.style.lineHeight = \\\"normal\\\";\\r\\n\\r\\n } else {\\r\\n\\r\\n dom_element.style.lineHeight = (attr * context.h) + \\\"px\\\";\\r\\n }\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling opacity\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.opacity = attr;\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling origin\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.top = (attr.h * context.h) + \\\"px\\\";\\r\\n dom_element.style.left = (attr.w * context.w) + \\\"px\\\";\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling overflow\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.overflow = attr;\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling padding\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n /* attr: top,left,bottom,right*/\\r\\n\\r\\n /* style: top right bottom left*/\\r\\n\\r\\n var rslt = [];\\r\\n\\r\\n rslt[0] = (attr[0] * context.h) + \\\"px\\\";\\r\\n rslt[1] = (attr[3] * context.w) + \\\"px\\\";\\r\\n rslt[2] = (attr[2] * context.h) + \\\"px\\\";\\r\\n rslt[3] = (attr[1] * context.w) + \\\"px\\\";\\r\\n\\r\\n dom_element.style.padding = rslt.join(\\\" \\\");\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling showBackground\\\",\\r\\n null\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling textAlign\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n var ta;\\r\\n var dir = isd_element.styleAttrs[imscStyles.byName.direction.qname];\\r\\n\\r\\n /* handle UAs that do not understand start or end */\\r\\n\\r\\n if (attr === \\\"start\\\") {\\r\\n\\r\\n ta = (dir === \\\"rtl\\\") ? \\\"right\\\" : \\\"left\\\";\\r\\n\\r\\n } else if (attr === \\\"end\\\") {\\r\\n\\r\\n ta = (dir === \\\"rtl\\\") ? \\\"left\\\" : \\\"right\\\";\\r\\n\\r\\n } else {\\r\\n\\r\\n ta = attr;\\r\\n\\r\\n }\\r\\n\\r\\n dom_element.style.textAlign = ta;\\r\\n\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling textDecoration\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.textDecoration = attr.join(\\\" \\\").replace(\\\"lineThrough\\\", \\\"line-through\\\");\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling textOutline\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n if (attr === \\\"none\\\") {\\r\\n\\r\\n dom_element.style.textShadow = \\\"\\\";\\r\\n\\r\\n } else {\\r\\n\\r\\n dom_element.style.textShadow = \\\"rgba(\\\" +\\r\\n attr.color[0].toString() + \\\",\\\" +\\r\\n attr.color[1].toString() + \\\",\\\" +\\r\\n attr.color[2].toString() + \\\",\\\" +\\r\\n (attr.color[3] / 255).toString() +\\r\\n \\\")\\\" + \\\" 0px 0px \\\" +\\r\\n (attr.thickness * context.h) + \\\"px\\\";\\r\\n\\r\\n }\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling unicodeBidi\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n var ub;\\r\\n\\r\\n if (attr === 'bidiOverride') {\\r\\n ub = \\\"bidi-override\\\";\\r\\n } else {\\r\\n ub = attr;\\r\\n }\\r\\n\\r\\n dom_element.style.unicodeBidi = ub;\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling visibility\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.visibility = attr;\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling wrapOption\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n if (attr === \\\"wrap\\\") {\\r\\n\\r\\n if (isd_element.space === \\\"preserve\\\") {\\r\\n dom_element.style.whiteSpace = \\\"pre-wrap\\\";\\r\\n } else {\\r\\n dom_element.style.whiteSpace = \\\"normal\\\";\\r\\n }\\r\\n\\r\\n } else {\\r\\n\\r\\n if (isd_element.space === \\\"preserve\\\") {\\r\\n\\r\\n dom_element.style.whiteSpace = \\\"pre\\\";\\r\\n\\r\\n } else {\\r\\n dom_element.style.whiteSpace = \\\"noWrap\\\";\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling writingMode\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n if (attr === \\\"lrtb\\\" || attr === \\\"lr\\\") {\\r\\n\\r\\n dom_element.style.writingMode = \\\"horizontal-tb\\\";\\r\\n\\r\\n } else if (attr === \\\"rltb\\\" || attr === \\\"rl\\\") {\\r\\n\\r\\n dom_element.style.writingMode = \\\"horizontal-tb\\\";\\r\\n\\r\\n } else if (attr === \\\"tblr\\\") {\\r\\n\\r\\n dom_element.style.writingMode = \\\"vertical-lr\\\";\\r\\n\\r\\n } else if (attr === \\\"tbrl\\\" || attr === \\\"tb\\\") {\\r\\n\\r\\n dom_element.style.writingMode = \\\"vertical-rl\\\";\\r\\n\\r\\n }\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml#styling zIndex\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n dom_element.style.zIndex = attr;\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt backgroundImage\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n if (context.imgResolver !== null && attr !== null) {\\r\\n\\r\\n var img = document.createElement(\\\"img\\\");\\r\\n\\r\\n var uri = context.imgResolver(attr, img);\\r\\n\\r\\n if (uri)\\r\\n img.src = uri;\\r\\n\\r\\n img.height = context.regionH;\\r\\n img.width = context.regionW;\\r\\n\\r\\n dom_element.appendChild(img);\\r\\n }\\r\\n }\\r\\n ),\\r\\n new HTMLStylingMapDefintion(\\r\\n \\\"http://www.w3.org/ns/ttml/profile/imsc1#styling forcedDisplay\\\",\\r\\n function (context, dom_element, isd_element, attr) {\\r\\n\\r\\n if (context.displayForcedOnlyMode && attr === false) {\\r\\n dom_element.style.visibility = \\\"hidden\\\";\\r\\n }\\r\\n\\r\\n }\\r\\n )\\r\\n ];\\r\\n\\r\\n var STYLMAP_BY_QNAME = {};\\r\\n\\r\\n for (var i in STYLING_MAP_DEFS) {\\r\\n\\r\\n STYLMAP_BY_QNAME[STYLING_MAP_DEFS[i].qname] = STYLING_MAP_DEFS[i];\\r\\n }\\r\\n\\r\\n function reportError(errorHandler, msg) {\\r\\n\\r\\n if (errorHandler && errorHandler.error && errorHandler.error(msg))\\r\\n throw msg;\\r\\n\\r\\n }\\r\\n\\r\\n})( false ? undefined : exports,\\r\\n typeof imscNames === 'undefined' ? __webpack_require__(/*! ./names */ \\\"./node_modules/imsc/src/main/js/names.js\\\") : imscNames,\\r\\n typeof imscStyles === 'undefined' ? __webpack_require__(/*! ./styles */ \\\"./node_modules/imsc/src/main/js/styles.js\\\") : imscStyles);\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/imsc/src/main/js/isd.js\\\":\\n/*!**********************************************!*\\\\\\n !*** ./node_modules/imsc/src/main/js/isd.js ***!\\n \\\\**********************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* \\r\\n * Copyright (c) 2016, Pierre-Anthony Lemieux \\r\\n * All rights reserved.\\r\\n *\\r\\n * Redistribution and use in source and binary forms, with or without\\r\\n * modification, are permitted provided that the following conditions are met:\\r\\n *\\r\\n * * Redistributions of source code must retain the above copyright notice, this\\r\\n * list of conditions and the following disclaimer.\\r\\n * * Redistributions in binary form must reproduce the above copyright notice,\\r\\n * this list of conditions and the following disclaimer in the documentation\\r\\n * and/or other materials provided with the distribution.\\r\\n *\\r\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\r\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\r\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\r\\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\\r\\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\r\\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\r\\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\r\\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\r\\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\r\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\r\\n * POSSIBILITY OF SUCH DAMAGE.\\r\\n */\\r\\n\\r\\n/**\\r\\n * @module imscISD\\r\\n */\\r\\n\\r\\n\\r\\n;\\r\\n(function (imscISD, imscNames, imscStyles) { // wrapper for non-node envs\\r\\n\\r\\n /** \\r\\n * Creates a canonical representation of an IMSC1 document returned by

imscDoc.fromXML()
\\r\\n * at a given absolute offset in seconds. This offset does not have to be one of the values returned\\r\\n * by
getMediaTimeEvents()
.\\r\\n * \\r\\n * @param {Object} tt IMSC1 document\\r\\n * @param {number} offset Absolute offset (in seconds)\\r\\n * @param {?module:imscUtils.ErrorHandler} errorHandler Error callback\\r\\n * @returns {Object} Opaque in-memory representation of an ISD\\r\\n */\\r\\n\\r\\n imscISD.generateISD = function (tt, offset, errorHandler) {\\r\\n\\r\\n /* TODO check for tt and offset validity */\\r\\n\\r\\n /* create the ISD object from the IMSC1 doc */\\r\\n\\r\\n var isd = new ISD(tt);\\r\\n \\r\\n /* context */\\r\\n \\r\\n var context = {\\r\\n \\r\\n /* empty for now */\\r\\n \\r\\n };\\r\\n\\r\\n /* process regions */\\r\\n\\r\\n for (var r in tt.head.layout.regions) {\\r\\n\\r\\n /* post-order traversal of the body tree per [construct intermediate document] */\\r\\n\\r\\n var c = isdProcessContentElement(tt, offset, tt.head.layout.regions[r], tt.body, null, '', tt.head.layout.regions[r], errorHandler, context);\\r\\n\\r\\n if (c !== null) {\\r\\n\\r\\n /* add the region to the ISD */\\r\\n\\r\\n isd.contents.push(c.element);\\r\\n }\\r\\n\\r\\n\\r\\n }\\r\\n\\r\\n return isd;\\r\\n };\\r\\n\\r\\n function isdProcessContentElement(doc, offset, region, body, parent, inherited_region_id, elem, errorHandler, context) {\\r\\n\\r\\n /* prune if temporally inactive */\\r\\n\\r\\n if (offset < elem.begin || offset >= elem.end) {\\r\\n return null;\\r\\n }\\r\\n\\r\\n /* \\r\\n * set the associated region as specified by the regionID attribute, or the \\r\\n * inherited associated region otherwise\\r\\n */\\r\\n\\r\\n var associated_region_id = 'regionID' in elem && elem.regionID !== '' ? elem.regionID : inherited_region_id;\\r\\n\\r\\n /* prune the element if either:\\r\\n * - the element is not terminal and the associated region is neither the default\\r\\n * region nor the parent region (this allows children to be associated with a \\r\\n * region later on)\\r\\n * - the element is terminal and the associated region is not the parent region\\r\\n */\\r\\n \\r\\n /* TODO: improve detection of terminal elements since has no contents */\\r\\n\\r\\n if (parent !== null /* are we in the region element */ &&\\r\\n associated_region_id !== region.id &&\\r\\n (\\r\\n (! ('contents' in elem)) ||\\r\\n ('contents' in elem && elem.contents.length === 0) ||\\r\\n associated_region_id !== ''\\r\\n )\\r\\n )\\r\\n return null;\\r\\n\\r\\n /* create an ISD element, including applying specified styles */\\r\\n\\r\\n var isd_element = new ISDContentElement(elem);\\r\\n\\r\\n /* apply set (animation) styling */\\r\\n\\r\\n for (var i in elem.sets) {\\r\\n\\r\\n if (offset < elem.sets[i].begin || offset >= elem.sets[i].end)\\r\\n continue;\\r\\n\\r\\n isd_element.styleAttrs[elem.sets[i].qname] = elem.sets[i].value;\\r\\n\\r\\n }\\r\\n\\r\\n /* \\r\\n * keep track of specified styling attributes so that we\\r\\n * can compute them later\\r\\n */\\r\\n\\r\\n var spec_attr = {};\\r\\n\\r\\n for (var qname in isd_element.styleAttrs) {\\r\\n\\r\\n spec_attr[qname] = true;\\r\\n\\r\\n /* special rule for tts:writingMode (section 7.29.1 of XSL)\\r\\n * direction is set consistently with writingMode only\\r\\n * if writingMode sets inline-direction to LTR or RTL \\r\\n */\\r\\n\\r\\n if (qname === imscStyles.byName.writingMode.qname &&\\r\\n !(imscStyles.byName.direction.qname in isd_element.styleAttrs)) {\\r\\n\\r\\n var wm = isd_element.styleAttrs[qname];\\r\\n\\r\\n if (wm === \\\"lrtb\\\" || wm === \\\"lr\\\") {\\r\\n\\r\\n isd_element.styleAttrs[imscStyles.byName.direction.qname] = \\\"ltr\\\";\\r\\n\\r\\n } else if (wm === \\\"rltb\\\" || wm === \\\"rl\\\") {\\r\\n\\r\\n isd_element.styleAttrs[imscStyles.byName.direction.qname] = \\\"rtl\\\";\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n }\\r\\n\\r\\n /* inherited styling */\\r\\n\\r\\n if (parent !== null) {\\r\\n\\r\\n for (var j in imscStyles.all) {\\r\\n\\r\\n var sa = imscStyles.all[j];\\r\\n\\r\\n /* textDecoration has special inheritance rules */\\r\\n\\r\\n if (sa.qname === imscStyles.byName.textDecoration.qname) {\\r\\n\\r\\n /* handle both textDecoration inheritance and specification */\\r\\n\\r\\n var ps = parent.styleAttrs[sa.qname];\\r\\n var es = isd_element.styleAttrs[sa.qname];\\r\\n var outs = [];\\r\\n\\r\\n if (es === undefined) {\\r\\n\\r\\n outs = ps;\\r\\n\\r\\n } else if (es.indexOf(\\\"none\\\") === -1) {\\r\\n\\r\\n if ((es.indexOf(\\\"noUnderline\\\") === -1 &&\\r\\n ps.indexOf(\\\"underline\\\") !== -1) ||\\r\\n es.indexOf(\\\"underline\\\") !== -1) {\\r\\n\\r\\n outs.push(\\\"underline\\\");\\r\\n\\r\\n }\\r\\n\\r\\n if ((es.indexOf(\\\"noLineThrough\\\") === -1 &&\\r\\n ps.indexOf(\\\"lineThrough\\\") !== -1) ||\\r\\n es.indexOf(\\\"lineThrough\\\") !== -1) {\\r\\n\\r\\n outs.push(\\\"lineThrough\\\");\\r\\n\\r\\n }\\r\\n\\r\\n if ((es.indexOf(\\\"noOverline\\\") === -1 &&\\r\\n ps.indexOf(\\\"overline\\\") !== -1) ||\\r\\n es.indexOf(\\\"overline\\\") !== -1) {\\r\\n\\r\\n outs.push(\\\"overline\\\");\\r\\n\\r\\n }\\r\\n\\r\\n } else {\\r\\n\\r\\n outs.push(\\\"none\\\");\\r\\n\\r\\n }\\r\\n\\r\\n isd_element.styleAttrs[sa.qname] = outs;\\r\\n\\r\\n } else if (sa.inherit &&\\r\\n (sa.qname in parent.styleAttrs) &&\\r\\n !(sa.qname in isd_element.styleAttrs)) {\\r\\n\\r\\n isd_element.styleAttrs[sa.qname] = parent.styleAttrs[sa.qname];\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* initial value styling */\\r\\n\\r\\n for (var k in imscStyles.all) {\\r\\n\\r\\n var ivs = imscStyles.all[k];\\r\\n\\r\\n /* skip if value is already specified */\\r\\n\\r\\n if (ivs.qname in isd_element.styleAttrs) continue;\\r\\n\\r\\n /* apply initial value to elements other than region only if non-inherited */\\r\\n\\r\\n if (isd_element.kind === 'region' || (ivs.inherit === false && ivs.initial !== null)) {\\r\\n\\r\\n isd_element.styleAttrs[ivs.qname] = ivs.parse(ivs.initial);\\r\\n\\r\\n /* keep track of the style as specified */\\r\\n\\r\\n spec_attr[ivs.qname] = true;\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* compute styles (only for non-inherited styles) */\\r\\n /* TODO: get rid of spec_attr */\\r\\n\\r\\n for (var z in imscStyles.all) {\\r\\n\\r\\n var cs = imscStyles.all[z];\\r\\n\\r\\n if (!(cs.qname in spec_attr)) continue;\\r\\n\\r\\n if (cs.compute !== null) {\\r\\n\\r\\n var cstyle = cs.compute(\\r\\n /*doc, parent, element, attr, context*/\\r\\n doc,\\r\\n parent,\\r\\n isd_element,\\r\\n isd_element.styleAttrs[cs.qname],\\r\\n context\\r\\n );\\r\\n\\r\\n if (cstyle !== null) {\\r\\n isd_element.styleAttrs[cs.qname] = cstyle;\\r\\n } else {\\r\\n reportError(errorHandler, \\\"Style '\\\" + cs.qname + \\\"' on element '\\\" + isd_element.kind + \\\"' cannot be computed\\\");\\r\\n }\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* prune if tts:display is none */\\r\\n\\r\\n if (isd_element.styleAttrs[imscStyles.byName.display.qname] === \\\"none\\\")\\r\\n return null;\\r\\n\\r\\n /* process contents of the element */\\r\\n\\r\\n var contents;\\r\\n\\r\\n if (parent === null) {\\r\\n\\r\\n /* we are processing the region */\\r\\n\\r\\n if (body === null) {\\r\\n\\r\\n /* if there is no body, still process the region but with empty content */\\r\\n\\r\\n contents = [];\\r\\n\\r\\n } else {\\r\\n\\r\\n /*use the body element as contents */\\r\\n\\r\\n contents = [body];\\r\\n\\r\\n }\\r\\n\\r\\n } else if ('contents' in elem) {\\r\\n\\r\\n contents = elem.contents;\\r\\n\\r\\n }\\r\\n\\r\\n for (var x in contents) {\\r\\n\\r\\n var c = isdProcessContentElement(doc, offset, region, body, isd_element, associated_region_id, contents[x], errorHandler, context);\\r\\n\\r\\n /* \\r\\n * keep child element only if they are non-null and their region match \\r\\n * the region of this element\\r\\n */\\r\\n\\r\\n if (c !== null) {\\r\\n\\r\\n isd_element.contents.push(c.element);\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n /* compute used value of lineHeight=\\\"normal\\\" */\\r\\n\\r\\n /* if (isd_element.styleAttrs[imscStyles.byName.lineHeight.qname] === \\\"normal\\\" ) {\\r\\n \\r\\n isd_element.styleAttrs[imscStyles.byName.lineHeight.qname] =\\r\\n isd_element.styleAttrs[imscStyles.byName.fontSize.qname] * 1.2;\\r\\n \\r\\n }\\r\\n */\\r\\n\\r\\n /* remove styles that are not applicable */\\r\\n\\r\\n for (var qnameb in isd_element.styleAttrs) {\\r\\n var da = imscStyles.byQName[qnameb];\\r\\n\\r\\n if (da.applies.indexOf(isd_element.kind) === -1) {\\r\\n delete isd_element.styleAttrs[qnameb];\\r\\n }\\r\\n }\\r\\n\\r\\n /* collapse white space if space is \\\"default\\\" */\\r\\n\\r\\n if (isd_element.kind === 'span' && isd_element.text && isd_element.space === \\\"default\\\") {\\r\\n\\r\\n var trimmedspan = isd_element.text.replace(/\\\\s+/g, ' ');\\r\\n\\r\\n isd_element.text = trimmedspan;\\r\\n\\r\\n }\\r\\n\\r\\n /* trim whitespace around explicit line breaks */\\r\\n\\r\\n if (isd_element.kind === 'p') {\\r\\n\\r\\n var elist = [];\\r\\n\\r\\n constructSpanList(isd_element, elist);\\r\\n\\r\\n var l = 0;\\r\\n\\r\\n var state = \\\"after_br\\\";\\r\\n var br_pos = 0;\\r\\n\\r\\n while (true) {\\r\\n\\r\\n if (state === \\\"after_br\\\") {\\r\\n\\r\\n if (l >= elist.length || elist[l].kind === \\\"br\\\") {\\r\\n\\r\\n state = \\\"before_br\\\";\\r\\n br_pos = l;\\r\\n l--;\\r\\n\\r\\n } else {\\r\\n\\r\\n if (elist[l].space !== \\\"preserve\\\") {\\r\\n\\r\\n elist[l].text = elist[l].text.replace(/^\\\\s+/g, '');\\r\\n\\r\\n }\\r\\n\\r\\n if (elist[l].text.length > 0) {\\r\\n\\r\\n state = \\\"looking_br\\\";\\r\\n l++;\\r\\n\\r\\n } else {\\r\\n\\r\\n elist.splice(l, 1);\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n } else if (state === \\\"before_br\\\") {\\r\\n\\r\\n if (l < 0 || elist[l].kind === \\\"br\\\") {\\r\\n\\r\\n state = \\\"after_br\\\";\\r\\n l = br_pos + 1;\\r\\n\\r\\n if (l >= elist.length) break;\\r\\n\\r\\n } else {\\r\\n\\r\\n if (elist[l].space !== \\\"preserve\\\") {\\r\\n\\r\\n elist[l].text = elist[l].text.replace(/\\\\s+$/g, '');\\r\\n\\r\\n }\\r\\n\\r\\n if (elist[l].text.length > 0) {\\r\\n\\r\\n state = \\\"after_br\\\";\\r\\n l = br_pos + 1;\\r\\n\\r\\n if (l >= elist.length) break;\\r\\n\\r\\n } else {\\r\\n\\r\\n elist.splice(l, 1);\\r\\n l--;\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n } else {\\r\\n\\r\\n if (l >= elist.length || elist[l].kind === \\\"br\\\") {\\r\\n\\r\\n state = \\\"before_br\\\";\\r\\n br_pos = l;\\r\\n l--;\\r\\n\\r\\n } else {\\r\\n\\r\\n l++;\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n \\r\\n pruneEmptySpans(isd_element);\\r\\n\\r\\n }\\r\\n\\r\\n /* keep element if:\\r\\n * * contains a background image\\r\\n * *
\\r\\n * * if there are children\\r\\n * * if and has text\\r\\n * * if region and showBackground = always\\r\\n */\\r\\n\\r\\n if ((isd_element.kind === 'div' && imscStyles.byName.backgroundImage.qname in isd_element.styleAttrs) ||\\r\\n isd_element.kind === 'br' ||\\r\\n ('contents' in isd_element && isd_element.contents.length > 0) ||\\r\\n (isd_element.kind === 'span' && isd_element.text !== null) ||\\r\\n (isd_element.kind === 'region' &&\\r\\n isd_element.styleAttrs[imscStyles.byName.showBackground.qname] === 'always')) {\\r\\n\\r\\n return {\\r\\n region_id: associated_region_id,\\r\\n element: isd_element\\r\\n };\\r\\n }\\r\\n\\r\\n return null;\\r\\n }\\r\\n\\r\\n function constructSpanList(element, elist) {\\r\\n\\r\\n if ('contents' in element) {\\r\\n\\r\\n for (var i in element.contents) {\\r\\n constructSpanList(element.contents[i], elist);\\r\\n }\\r\\n\\r\\n } else {\\r\\n\\r\\n elist.push(element);\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n function pruneEmptySpans(element) {\\r\\n\\r\\n if (element.kind === 'br') {\\r\\n \\r\\n return false;\\r\\n \\r\\n } else if ('text' in element) {\\r\\n \\r\\n return element.text.length === 0;\\r\\n \\r\\n } else if ('contents' in element) {\\r\\n \\r\\n var i = element.contents.length;\\r\\n\\r\\n while (i--) {\\r\\n \\r\\n if (pruneEmptySpans(element.contents[i])) {\\r\\n element.contents.splice(i, 1);\\r\\n }\\r\\n \\r\\n }\\r\\n \\r\\n return element.contents.length === 0;\\r\\n\\r\\n }\\r\\n }\\r\\n\\r\\n function ISD(tt) {\\r\\n this.contents = [];\\r\\n this.aspectRatio = tt.aspectRatio;\\r\\n }\\r\\n\\r\\n function ISDContentElement(ttelem) {\\r\\n\\r\\n /* assume the element is a region if it does not have a kind */\\r\\n\\r\\n this.kind = ttelem.kind || 'region';\\r\\n \\r\\n /* copy id */\\r\\n \\r\\n if (ttelem.id) {\\r\\n this.id = ttelem.id;\\r\\n }\\r\\n\\r\\n /* deep copy of style attributes */\\r\\n this.styleAttrs = {};\\r\\n\\r\\n for (var sname in ttelem.styleAttrs) {\\r\\n\\r\\n this.styleAttrs[sname] =\\r\\n ttelem.styleAttrs[sname];\\r\\n }\\r\\n\\r\\n /* TODO: clean this! */\\r\\n\\r\\n if ('text' in ttelem) {\\r\\n\\r\\n this.text = ttelem.text;\\r\\n\\r\\n } else if (ttelem.kind !== 'br') {\\r\\n \\r\\n this.contents = [];\\r\\n }\\r\\n\\r\\n if ('space' in ttelem) {\\r\\n\\r\\n this.space = ttelem.space;\\r\\n }\\r\\n }\\r\\n\\r\\n\\r\\n /*\\r\\n * ERROR HANDLING UTILITY FUNCTIONS\\r\\n * \\r\\n */\\r\\n\\r\\n function reportInfo(errorHandler, msg) {\\r\\n\\r\\n if (errorHandler && errorHandler.info && errorHandler.info(msg))\\r\\n throw msg;\\r\\n\\r\\n }\\r\\n\\r\\n function reportWarning(errorHandler, msg) {\\r\\n\\r\\n if (errorHandler && errorHandler.warn && errorHandler.warn(msg))\\r\\n throw msg;\\r\\n\\r\\n }\\r\\n\\r\\n function reportError(errorHandler, msg) {\\r\\n\\r\\n if (errorHandler && errorHandler.error && errorHandler.error(msg))\\r\\n throw msg;\\r\\n\\r\\n }\\r\\n\\r\\n function reportFatal(errorHandler, msg) {\\r\\n\\r\\n if (errorHandler && errorHandler.fatal)\\r\\n errorHandler.fatal(msg);\\r\\n\\r\\n throw msg;\\r\\n\\r\\n }\\r\\n\\r\\n\\r\\n})( false ? undefined : exports,\\r\\n typeof imscNames === 'undefined' ? __webpack_require__(/*! ./names */ \\\"./node_modules/imsc/src/main/js/names.js\\\") : imscNames,\\r\\n typeof imscStyles === 'undefined' ? __webpack_require__(/*! ./styles */ \\\"./node_modules/imsc/src/main/js/styles.js\\\") : imscStyles\\r\\n );\\r\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/imsc/src/main/js/main.js\\\":\\n/*!***********************************************!*\\\\\\n !*** ./node_modules/imsc/src/main/js/main.js ***!\\n \\\\***********************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* \\r\\n * Copyright (c) 2016, Pierre-Anthony Lemieux \\r\\n * All rights reserved.\\r\\n *\\r\\n * Redistribution and use in source and binary forms, with or without\\r\\n * modification, are permitted provided that the following conditions are met:\\r\\n *\\r\\n * * Redistributions of source code must retain the above copyright notice, this\\r\\n * list of conditions and the following disclaimer.\\r\\n * * Redistributions in binary form must reproduce the above copyright notice,\\r\\n * this list of conditions and the following disclaimer in the documentation\\r\\n * and/or other materials provided with the distribution.\\r\\n *\\r\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\r\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\r\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\r\\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\\r\\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\r\\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\r\\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\r\\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\r\\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\r\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\r\\n * POSSIBILITY OF SUCH DAMAGE.\\r\\n */\\r\\n\\r\\nexports.generateISD = __webpack_require__(/*! ./isd */ \\\"./node_modules/imsc/src/main/js/isd.js\\\").generateISD;\\r\\nexports.fromXML = __webpack_require__(/*! ./doc */ \\\"./node_modules/imsc/src/main/js/doc.js\\\").fromXML;\\r\\nexports.renderHTML = __webpack_require__(/*! ./html */ \\\"./node_modules/imsc/src/main/js/html.js\\\").render;\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/imsc/src/main/js/names.js\\\":\\n/*!************************************************!*\\\\\\n !*** ./node_modules/imsc/src/main/js/names.js ***!\\n \\\\************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* \\r\\n * Copyright (c) 2016, Pierre-Anthony Lemieux \\r\\n * All rights reserved.\\r\\n *\\r\\n * Redistribution and use in source and binary forms, with or without\\r\\n * modification, are permitted provided that the following conditions are met:\\r\\n *\\r\\n * * Redistributions of source code must retain the above copyright notice, this\\r\\n * list of conditions and the following disclaimer.\\r\\n * * Redistributions in binary form must reproduce the above copyright notice,\\r\\n * this list of conditions and the following disclaimer in the documentation\\r\\n * and/or other materials provided with the distribution.\\r\\n *\\r\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\r\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\r\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\r\\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\\r\\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\r\\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\r\\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\r\\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\r\\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\r\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\r\\n * POSSIBILITY OF SUCH DAMAGE.\\r\\n */\\r\\n\\r\\n/**\\r\\n * @module imscNames\\r\\n */\\r\\n\\r\\n;\\r\\n(function (imscNames) { // wrapper for non-node envs\\r\\n\\r\\n imscNames.ns_tt = \\\"http://www.w3.org/ns/ttml\\\";\\r\\n imscNames.ns_tts = \\\"http://www.w3.org/ns/ttml#styling\\\";\\r\\n imscNames.ns_ttp = \\\"http://www.w3.org/ns/ttml#parameter\\\";\\r\\n imscNames.ns_xml = \\\"http://www.w3.org/XML/1998/namespace\\\";\\r\\n imscNames.ns_itts = \\\"http://www.w3.org/ns/ttml/profile/imsc1#styling\\\";\\r\\n imscNames.ns_ittp = \\\"http://www.w3.org/ns/ttml/profile/imsc1#parameter\\\";\\r\\n imscNames.ns_smpte = \\\"http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt\\\";\\r\\n imscNames.ns_ebutts = \\\"urn:ebu:tt:style\\\";\\r\\n \\r\\n})( false ? undefined : exports);\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/imsc/src/main/js/styles.js\\\":\\n/*!*************************************************!*\\\\\\n !*** ./node_modules/imsc/src/main/js/styles.js ***!\\n \\\\*************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* \\r\\n * Copyright (c) 2016, Pierre-Anthony Lemieux \\r\\n * All rights reserved.\\r\\n *\\r\\n * Redistribution and use in source and binary forms, with or without\\r\\n * modification, are permitted provided that the following conditions are met:\\r\\n *\\r\\n * * Redistributions of source code must retain the above copyright notice, this\\r\\n * list of conditions and the following disclaimer.\\r\\n * * Redistributions in binary form must reproduce the above copyright notice,\\r\\n * this list of conditions and the following disclaimer in the documentation\\r\\n * and/or other materials provided with the distribution.\\r\\n *\\r\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\r\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\r\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\r\\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\\r\\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\r\\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\r\\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\r\\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\r\\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\r\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\r\\n * POSSIBILITY OF SUCH DAMAGE.\\r\\n */\\r\\n\\r\\n/**\\r\\n * @module imscStyles\\r\\n */\\r\\n\\r\\n;\\r\\n(function (imscStyles, imscNames, imscUtils) { // wrapper for non-node envs\\r\\n\\r\\n function StylingAttributeDefinition(ns, name, initialValue, appliesTo, isInherit, isAnimatable, parseFunc, computeFunc) {\\r\\n this.name = name;\\r\\n this.ns = ns;\\r\\n this.qname = ns + \\\" \\\" + name;\\r\\n this.inherit = isInherit;\\r\\n this.animatable = isAnimatable;\\r\\n this.initial = initialValue;\\r\\n this.applies = appliesTo;\\r\\n this.parse = parseFunc;\\r\\n this.compute = computeFunc;\\r\\n }\\r\\n\\r\\n imscStyles.all = [\\r\\n\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"backgroundColor\\\",\\r\\n \\\"transparent\\\",\\r\\n ['body', 'div', 'p', 'region', 'span'],\\r\\n false,\\r\\n true,\\r\\n imscUtils.parseColor,\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"color\\\",\\r\\n \\\"white\\\",\\r\\n ['span'],\\r\\n true,\\r\\n true,\\r\\n imscUtils.parseColor,\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"direction\\\",\\r\\n \\\"ltr\\\",\\r\\n ['p', 'span'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"display\\\",\\r\\n \\\"auto\\\",\\r\\n ['body', 'div', 'p', 'region', 'span'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"displayAlign\\\",\\r\\n \\\"before\\\",\\r\\n ['region'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"extent\\\",\\r\\n \\\"auto\\\",\\r\\n ['tt', 'region'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n\\r\\n if (str === \\\"auto\\\") {\\r\\n\\r\\n return str;\\r\\n\\r\\n } else {\\r\\n\\r\\n var s = str.split(\\\" \\\");\\r\\n if (s.length !== 2) return null;\\r\\n var w = imscUtils.parseLength(s[0]);\\r\\n var h = imscUtils.parseLength(s[1]);\\r\\n if (!h || !w) return null;\\r\\n return {'h': h, 'w': w};\\r\\n }\\r\\n\\r\\n },\\r\\n function (doc, parent, element, attr, context) {\\r\\n\\r\\n var h;\\r\\n var w;\\r\\n\\r\\n if (attr === \\\"auto\\\") {\\r\\n\\r\\n h = 1;\\r\\n\\r\\n } else if (attr.h.unit === \\\"%\\\") {\\r\\n\\r\\n h = attr.h.value / 100;\\r\\n\\r\\n } else if (attr.h.unit === \\\"px\\\") {\\r\\n\\r\\n h = attr.h.value / doc.pxDimensions.h;\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n\\r\\n if (attr === \\\"auto\\\") {\\r\\n\\r\\n w = 1;\\r\\n\\r\\n } else if (attr.w.unit === \\\"%\\\") {\\r\\n\\r\\n w = attr.w.value / 100;\\r\\n\\r\\n } else if (attr.w.unit === \\\"px\\\") {\\r\\n\\r\\n w = attr.w.value / doc.pxDimensions.w;\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n\\r\\n return {'h': h, 'w': w};\\r\\n }\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"fontFamily\\\",\\r\\n \\\"default\\\",\\r\\n ['span'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n var ffs = str.split(\\\",\\\");\\r\\n var rslt = [];\\r\\n\\r\\n for (var i in ffs) {\\r\\n\\r\\n if (ffs[i].charAt(0) !== \\\"'\\\" && ffs[i].charAt(0) !== '\\\"') {\\r\\n\\r\\n if (ffs[i] === \\\"default\\\") {\\r\\n\\r\\n /* per IMSC1 */\\r\\n\\r\\n rslt.push(\\\"monospaceSerif\\\");\\r\\n\\r\\n } else {\\r\\n\\r\\n rslt.push(ffs[i]);\\r\\n\\r\\n }\\r\\n\\r\\n } else {\\r\\n\\r\\n rslt.push(ffs[i]);\\r\\n\\r\\n }\\r\\n\\r\\n }\\r\\n\\r\\n return rslt;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"fontSize\\\",\\r\\n \\\"1c\\\",\\r\\n ['span'],\\r\\n true,\\r\\n true,\\r\\n imscUtils.parseLength,\\r\\n function (doc, parent, element, attr, context) {\\r\\n\\r\\n var fs;\\r\\n\\r\\n if (attr.unit === \\\"%\\\") {\\r\\n\\r\\n if (parent !== null) {\\r\\n\\r\\n fs = parent.styleAttrs[imscStyles.byName.fontSize.qname] * attr.value / 100;\\r\\n\\r\\n } else {\\r\\n\\r\\n /* region, so percent of 1c */\\r\\n\\r\\n fs = attr.value / 100 / doc.cellResolution.h;\\r\\n\\r\\n }\\r\\n\\r\\n } else if (attr.unit === \\\"em\\\") {\\r\\n\\r\\n if (parent !== null) {\\r\\n\\r\\n fs = parent.styleAttrs[imscStyles.byName.fontSize.qname] * attr.value;\\r\\n\\r\\n } else {\\r\\n\\r\\n /* region, so percent of 1c */\\r\\n\\r\\n fs = attr.value / doc.cellResolution.h;\\r\\n\\r\\n }\\r\\n\\r\\n } else if (attr.unit === \\\"c\\\") {\\r\\n\\r\\n fs = attr.value / doc.cellResolution.h;\\r\\n\\r\\n } else if (attr.unit === \\\"px\\\") {\\r\\n\\r\\n fs = attr.value / doc.pxDimensions.h;\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n\\r\\n return fs;\\r\\n }\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"fontStyle\\\",\\r\\n \\\"normal\\\",\\r\\n ['span'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n /* TODO: handle font style */\\r\\n\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"fontWeight\\\",\\r\\n \\\"normal\\\",\\r\\n ['span'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n /* TODO: handle font weight */\\r\\n\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"lineHeight\\\",\\r\\n \\\"normal\\\",\\r\\n ['p'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n if (str === \\\"normal\\\") {\\r\\n return str;\\r\\n } else {\\r\\n return imscUtils.parseLength(str);\\r\\n }\\r\\n },\\r\\n function (doc, parent, element, attr, context) {\\r\\n\\r\\n var lh;\\r\\n\\r\\n if (attr === \\\"normal\\\") {\\r\\n\\r\\n /* inherit normal per https://github.com/w3c/ttml1/issues/220 */\\r\\n\\r\\n lh = attr;\\r\\n\\r\\n } else if (attr.unit === \\\"%\\\") {\\r\\n\\r\\n lh = element.styleAttrs[imscStyles.byName.fontSize.qname] * attr.value / 100;\\r\\n\\r\\n } else if (attr.unit === \\\"em\\\") {\\r\\n\\r\\n lh = element.styleAttrs[imscStyles.byName.fontSize.qname] * attr.value;\\r\\n\\r\\n } else if (attr.unit === \\\"c\\\") {\\r\\n\\r\\n lh = attr.value / doc.cellResolution.h;\\r\\n\\r\\n } else if (attr.unit === \\\"px\\\") {\\r\\n\\r\\n /* TODO: handle error if no px dimensions are provided */\\r\\n\\r\\n lh = attr.value / doc.pxDimensions.h;\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n\\r\\n /* TODO: create a Length constructor */\\r\\n\\r\\n return lh;\\r\\n }\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"opacity\\\",\\r\\n 1.0,\\r\\n ['region'],\\r\\n false,\\r\\n true,\\r\\n parseFloat,\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"origin\\\",\\r\\n \\\"auto\\\",\\r\\n ['region'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n\\r\\n if (str === \\\"auto\\\") {\\r\\n\\r\\n return str;\\r\\n\\r\\n } else {\\r\\n\\r\\n var s = str.split(\\\" \\\");\\r\\n if (s.length !== 2) return null;\\r\\n var w = imscUtils.parseLength(s[0]);\\r\\n var h = imscUtils.parseLength(s[1]);\\r\\n if (!h || !w) return null;\\r\\n return {'h': h, 'w': w};\\r\\n }\\r\\n\\r\\n },\\r\\n function (doc, parent, element, attr, context) {\\r\\n\\r\\n var h;\\r\\n var w;\\r\\n\\r\\n if (attr === \\\"auto\\\") {\\r\\n\\r\\n h = 0;\\r\\n\\r\\n } else if (attr.h.unit === \\\"%\\\") {\\r\\n\\r\\n h = attr.h.value / 100;\\r\\n\\r\\n } else if (attr.h.unit === \\\"px\\\") {\\r\\n\\r\\n h = attr.h.value / doc.pxDimensions.h;\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n\\r\\n if (attr === \\\"auto\\\") {\\r\\n\\r\\n w = 0;\\r\\n\\r\\n } else if (attr.w.unit === \\\"%\\\") {\\r\\n\\r\\n w = attr.w.value / 100;\\r\\n\\r\\n } else if (attr.w.unit === \\\"px\\\") {\\r\\n\\r\\n w = attr.w.value / doc.pxDimensions.w;\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n\\r\\n return {'h': h, 'w': w};\\r\\n }\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"overflow\\\",\\r\\n \\\"hidden\\\",\\r\\n ['region'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"padding\\\",\\r\\n \\\"0px\\\",\\r\\n ['region'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n\\r\\n var s = str.split(\\\" \\\");\\r\\n if (s.length > 4) return null;\\r\\n var r = [];\\r\\n for (var i in s) {\\r\\n\\r\\n var l = imscUtils.parseLength(s[i]);\\r\\n if (!l) return null;\\r\\n r.push(l);\\r\\n }\\r\\n\\r\\n return r;\\r\\n },\\r\\n function (doc, parent, element, attr, context) {\\r\\n\\r\\n var padding;\\r\\n\\r\\n /* TODO: make sure we are in region */\\r\\n\\r\\n /*\\r\\n * expand padding shortcuts to \\r\\n * [before, end, after, start]\\r\\n * \\r\\n */\\r\\n\\r\\n if (attr.length === 1) {\\r\\n\\r\\n padding = [attr[0], attr[0], attr[0], attr[0]];\\r\\n\\r\\n } else if (attr.length === 2) {\\r\\n\\r\\n padding = [attr[0], attr[1], attr[0], attr[1]];\\r\\n\\r\\n } else if (attr.length === 3) {\\r\\n\\r\\n padding = [attr[0], attr[1], attr[2], attr[1]];\\r\\n\\r\\n } else if (attr.length === 4) {\\r\\n\\r\\n padding = [attr[0], attr[1], attr[2], attr[3]];\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n\\r\\n /* TODO: take into account tts:direction */\\r\\n\\r\\n /* \\r\\n * transform [before, end, after, start] according to writingMode to \\r\\n * [top,left,bottom,right]\\r\\n * \\r\\n */\\r\\n\\r\\n var dir = element.styleAttrs[imscStyles.byName.writingMode.qname];\\r\\n\\r\\n if (dir === \\\"lrtb\\\" || dir === \\\"lr\\\") {\\r\\n\\r\\n padding = [padding[0], padding[3], padding[2], padding[1]];\\r\\n\\r\\n } else if (dir === \\\"rltb\\\" || dir === \\\"rl\\\") {\\r\\n\\r\\n padding = [padding[0], padding[1], padding[2], padding[3]];\\r\\n\\r\\n } else if (dir === \\\"tblr\\\") {\\r\\n\\r\\n padding = [padding[3], padding[0], padding[1], padding[2]];\\r\\n\\r\\n } else if (dir === \\\"tbrl\\\" || dir === \\\"tb\\\") {\\r\\n\\r\\n padding = [padding[3], padding[2], padding[1], padding[0]];\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n\\r\\n var out = [];\\r\\n\\r\\n for (var i in padding) {\\r\\n\\r\\n if (padding[i].value === 0) {\\r\\n\\r\\n out[i] = 0;\\r\\n\\r\\n } else if (padding[i].unit === \\\"%\\\") {\\r\\n\\r\\n if (i === \\\"0\\\" || i === \\\"2\\\") {\\r\\n\\r\\n out[i] = element.styleAttrs[imscStyles.byName.extent.qname].h * padding[i].value / 100;\\r\\n\\r\\n } else {\\r\\n\\r\\n out[i] = element.styleAttrs[imscStyles.byName.extent.qname].w * padding[i].value / 100;\\r\\n }\\r\\n\\r\\n } else if (padding[i].unit === \\\"em\\\") {\\r\\n\\r\\n out[i] = element.styleAttrs[imscStyles.byName.fontSize.qname] * padding[i].value;\\r\\n\\r\\n } else if (padding[i].unit === \\\"c\\\") {\\r\\n\\r\\n out[i] = padding[i].value / doc.cellResolution.h;\\r\\n\\r\\n } else if (padding[i].unit === \\\"px\\\") {\\r\\n \\r\\n if (i === \\\"0\\\" || i === \\\"2\\\") {\\r\\n\\r\\n out[i] = padding[i].value / doc.pxDimensions.h;\\r\\n\\r\\n } else {\\r\\n\\r\\n out[i] = padding[i].value / doc.pxDimensions.w;\\r\\n }\\r\\n \\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n }\\r\\n\\r\\n\\r\\n return out;\\r\\n }\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"showBackground\\\",\\r\\n \\\"always\\\",\\r\\n ['region'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"textAlign\\\",\\r\\n \\\"start\\\",\\r\\n ['p'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n function (doc, parent, element, attr, context) {\\r\\n \\r\\n /* Section 7.16.9 of XSL */\\r\\n \\r\\n if (attr === \\\"left\\\") {\\r\\n \\r\\n return \\\"start\\\";\\r\\n \\r\\n } else if (attr === \\\"right\\\") {\\r\\n \\r\\n return \\\"end\\\";\\r\\n \\r\\n } else {\\r\\n \\r\\n return attr;\\r\\n \\r\\n }\\r\\n }\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"textDecoration\\\",\\r\\n \\\"none\\\",\\r\\n ['span'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n return str.split(\\\" \\\");\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"textOutline\\\",\\r\\n \\\"none\\\",\\r\\n ['span'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n\\r\\n /*\\r\\n * returns {c: ?, thichness: } | \\\"none\\\"\\r\\n * \\r\\n */\\r\\n\\r\\n if (str === \\\"none\\\") {\\r\\n\\r\\n return str;\\r\\n\\r\\n } else {\\r\\n\\r\\n var r = {};\\r\\n var s = str.split(\\\" \\\");\\r\\n if (s.length === 0 || s.length > 2) return null;\\r\\n var c = imscUtils.parseColor(s[0]);\\r\\n \\r\\n r.color = c;\\r\\n \\r\\n if (c !== null) s.shift();\\r\\n\\r\\n if (s.length !== 1) return null;\\r\\n\\r\\n var l = imscUtils.parseLength(s[0]);\\r\\n\\r\\n if (!l) return null;\\r\\n\\r\\n r.thickness = l;\\r\\n\\r\\n return r;\\r\\n }\\r\\n\\r\\n },\\r\\n function (doc, parent, element, attr, context) {\\r\\n\\r\\n /*\\r\\n * returns {color: , thickness: }\\r\\n * \\r\\n */\\r\\n\\r\\n if (attr === \\\"none\\\") return attr;\\r\\n\\r\\n var rslt = {};\\r\\n\\r\\n if (attr.color === null) {\\r\\n \\r\\n rslt.color = element.styleAttrs[imscStyles.byName.color.qname];\\r\\n \\r\\n } else {\\r\\n \\r\\n rslt.color = attr.color;\\r\\n\\r\\n }\\r\\n\\r\\n if (attr.thickness.unit === \\\"%\\\") {\\r\\n\\r\\n rslt.thickness = element.styleAttrs[imscStyles.byName.fontSize.qname] * attr.thickness.value / 100;\\r\\n\\r\\n } else if (attr.thickness.unit === \\\"em\\\") {\\r\\n\\r\\n rslt.thickness = element.styleAttrs[imscStyles.byName.fontSize.qname] * attr.thickness.value;\\r\\n\\r\\n } else if (attr.thickness.unit === \\\"c\\\") {\\r\\n\\r\\n rslt.thickness = attr.thickness.value / doc.cellResolution.h;\\r\\n\\r\\n } else if (attr.thickness.unit === \\\"px\\\") {\\r\\n\\r\\n rslt.thickness = attr.thickness.value / doc.pxDimensions.h;\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n\\r\\n\\r\\n return rslt;\\r\\n }\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"unicodeBidi\\\",\\r\\n \\\"normal\\\",\\r\\n ['span', 'p'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"visibility\\\",\\r\\n \\\"visible\\\",\\r\\n ['body', 'div', 'p', 'region', 'span'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"wrapOption\\\",\\r\\n \\\"wrap\\\",\\r\\n ['span'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"writingMode\\\",\\r\\n \\\"lrtb\\\",\\r\\n ['region'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_tts,\\r\\n \\\"zIndex\\\",\\r\\n \\\"auto\\\",\\r\\n ['region'],\\r\\n false,\\r\\n true,\\r\\n function (str) {\\r\\n \\r\\n var rslt;\\r\\n \\r\\n if (str === 'auto') {\\r\\n \\r\\n rslt = str;\\r\\n \\r\\n } else {\\r\\n \\r\\n rslt = parseInt(str);\\r\\n \\r\\n if (isNaN(rslt)) {\\r\\n rslt = null;\\r\\n }\\r\\n \\r\\n }\\r\\n \\r\\n return rslt;\\r\\n },\\r\\n null\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_ebutts,\\r\\n \\\"linePadding\\\",\\r\\n \\\"0c\\\",\\r\\n ['p'],\\r\\n true,\\r\\n false,\\r\\n imscUtils.parseLength,\\r\\n function (doc, parent, element, attr, context) {\\r\\n if (attr.unit === \\\"c\\\") {\\r\\n\\r\\n return attr.value / doc.cellResolution.h;\\r\\n\\r\\n } else {\\r\\n\\r\\n return null;\\r\\n\\r\\n }\\r\\n }\\r\\n ),\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_ebutts,\\r\\n \\\"multiRowAlign\\\",\\r\\n \\\"auto\\\",\\r\\n ['p'],\\r\\n true,\\r\\n false,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_smpte,\\r\\n \\\"backgroundImage\\\",\\r\\n null,\\r\\n ['div'],\\r\\n false,\\r\\n false,\\r\\n function (str) {\\r\\n return str;\\r\\n },\\r\\n null\\r\\n ),\\r\\n\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_itts,\\r\\n \\\"forcedDisplay\\\",\\r\\n \\\"false\\\",\\r\\n ['body', 'div', 'p', 'region', 'span'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n return str === 'true' ? true : false;\\r\\n },\\r\\n null\\r\\n ),\\r\\n\\r\\n new StylingAttributeDefinition(\\r\\n imscNames.ns_itts,\\r\\n \\\"fillLineGap\\\",\\r\\n \\\"false\\\",\\r\\n ['p'],\\r\\n true,\\r\\n true,\\r\\n function (str) {\\r\\n return str === 'true' ? true : false;\\r\\n },\\r\\n null\\r\\n )\\r\\n ];\\r\\n\\r\\n /* TODO: allow null parse function */\\r\\n\\r\\n imscStyles.byQName = {};\\r\\n for (var i in imscStyles.all) {\\r\\n\\r\\n imscStyles.byQName[imscStyles.all[i].qname] = imscStyles.all[i];\\r\\n }\\r\\n\\r\\n imscStyles.byName = {};\\r\\n for (var j in imscStyles.all) {\\r\\n\\r\\n imscStyles.byName[imscStyles.all[j].name] = imscStyles.all[j];\\r\\n }\\r\\n\\r\\n})( false ? undefined : exports,\\r\\n typeof imscNames === 'undefined' ? __webpack_require__(/*! ./names */ \\\"./node_modules/imsc/src/main/js/names.js\\\") : imscNames,\\r\\n typeof imscUtils === 'undefined' ? __webpack_require__(/*! ./utils */ \\\"./node_modules/imsc/src/main/js/utils.js\\\") : imscUtils);\\r\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/imsc/src/main/js/utils.js\\\":\\n/*!************************************************!*\\\\\\n !*** ./node_modules/imsc/src/main/js/utils.js ***!\\n \\\\************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* \\r\\n * Copyright (c) 2016, Pierre-Anthony Lemieux \\r\\n * All rights reserved.\\r\\n *\\r\\n * Redistribution and use in source and binary forms, with or without\\r\\n * modification, are permitted provided that the following conditions are met:\\r\\n *\\r\\n * * Redistributions of source code must retain the above copyright notice, this\\r\\n * list of conditions and the following disclaimer.\\r\\n * * Redistributions in binary form must reproduce the above copyright notice,\\r\\n * this list of conditions and the following disclaimer in the documentation\\r\\n * and/or other materials provided with the distribution.\\r\\n *\\r\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\r\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\r\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\r\\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\\r\\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\r\\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\r\\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\r\\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\r\\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\r\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\r\\n * POSSIBILITY OF SUCH DAMAGE.\\r\\n */\\r\\n\\r\\n/**\\r\\n * @module imscUtils\\r\\n */\\r\\n\\r\\n;\\r\\n(function (imscUtils) { // wrapper for non-node envs\\r\\n \\r\\n /* Documents the error handler interface */\\r\\n \\r\\n /**\\r\\n * @classdesc Generic interface for handling events. The interface exposes four\\r\\n * methods:\\r\\n * *
info
: unusual event that does not result in an inconsistent state\\r\\n * *
warn
: unexpected event that should not result in an inconsistent state\\r\\n * *
error
: unexpected event that may result in an inconsistent state\\r\\n * *
fatal
: unexpected event that results in an inconsistent state\\r\\n * and termination of processing\\r\\n * Each method takes a single
string
describing the event as argument,\\r\\n * and returns a single
boolean
, which terminates processing if
true
.\\r\\n *\\r\\n * @name ErrorHandler\\r\\n * @class\\r\\n */\\r\\n\\r\\n\\r\\n /*\\r\\n * Parses a TTML color expression\\r\\n * \\r\\n */\\r\\n\\r\\n var HEX_COLOR_RE = /#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?/;\\r\\n var DEC_COLOR_RE = /rgb\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*\\\\)/;\\r\\n var DEC_COLORA_RE = /rgba\\\\(\\\\s*(\\\\d+),\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*\\\\)/;\\r\\n var NAMED_COLOR = {\\r\\n transparent: [0, 0, 0, 0],\\r\\n black: [0, 0, 0, 255],\\r\\n silver: [192, 192, 192, 255],\\r\\n gray: [128, 128, 128, 255],\\r\\n white: [255, 255, 255, 255],\\r\\n maroon: [128, 0, 0, 255],\\r\\n red: [255, 0, 0, 255],\\r\\n purple: [128, 0, 128, 255],\\r\\n fuchsia: [255, 0, 255, 255],\\r\\n magenta: [255, 0, 255, 255],\\r\\n green: [0, 128, 0, 255],\\r\\n lime: [0, 255, 0, 255],\\r\\n olive: [128, 128, 0, 255],\\r\\n yellow: [255, 255, 0, 255],\\r\\n navy: [0, 0, 128, 255],\\r\\n blue: [0, 0, 255, 255],\\r\\n teal: [0, 128, 128, 255],\\r\\n aqua: [0, 255, 255, 255],\\r\\n cyan: [0, 255, 255, 255]\\r\\n };\\r\\n\\r\\n imscUtils.parseColor = function (str) {\\r\\n\\r\\n var m;\\r\\n \\r\\n var r = null;\\r\\n \\r\\n var nc = NAMED_COLOR[str.toLowerCase()];\\r\\n \\r\\n if (nc !== undefined) {\\r\\n\\r\\n r = nc;\\r\\n\\r\\n } else if ((m = HEX_COLOR_RE.exec(str)) !== null) {\\r\\n\\r\\n r = [parseInt(m[1], 16),\\r\\n parseInt(m[2], 16),\\r\\n parseInt(m[3], 16),\\r\\n (m[4] !== undefined ? parseInt(m[4], 16) : 255)];\\r\\n \\r\\n } else if ((m = DEC_COLOR_RE.exec(str)) !== null) {\\r\\n\\r\\n r = [parseInt(m[1]),\\r\\n parseInt(m[2]),\\r\\n parseInt(m[3]),\\r\\n 255];\\r\\n \\r\\n } else if ((m = DEC_COLORA_RE.exec(str)) !== null) {\\r\\n\\r\\n r = [parseInt(m[1]),\\r\\n parseInt(m[2]),\\r\\n parseInt(m[3]),\\r\\n parseInt(m[4])];\\r\\n \\r\\n }\\r\\n\\r\\n return r;\\r\\n };\\r\\n\\r\\n var LENGTH_RE = /^((?:\\\\+|\\\\-)?\\\\d*(?:\\\\.\\\\d+)?)(px|em|c|%)$/;\\r\\n\\r\\n imscUtils.parseLength = function (str) {\\r\\n\\r\\n var m;\\r\\n\\r\\n var r = null;\\r\\n\\r\\n if ((m = LENGTH_RE.exec(str)) !== null) {\\r\\n\\r\\n r = {value: parseFloat(m[1]), unit: m[2]};\\r\\n }\\r\\n\\r\\n return r;\\r\\n };\\r\\n\\r\\n})( false ? undefined : exports);\\r\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/inherits/inherits_browser.js\\\":\\n/*!***************************************************!*\\\\\\n !*** ./node_modules/inherits/inherits_browser.js ***!\\n \\\\***************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports) {\\n\\nif (typeof Object.create === 'function') {\\n // implementation from standard node.js 'util' module\\n module.exports = function inherits(ctor, superCtor) {\\n ctor.super_ = superCtor\\n ctor.prototype = Object.create(superCtor.prototype, {\\n constructor: {\\n value: ctor,\\n enumerable: false,\\n writable: true,\\n configurable: true\\n }\\n });\\n };\\n} else {\\n // old school shim for old browsers\\n module.exports = function inherits(ctor, superCtor) {\\n ctor.super_ = superCtor\\n var TempCtor = function () {}\\n TempCtor.prototype = superCtor.prototype\\n ctor.prototype = new TempCtor()\\n ctor.prototype.constructor = ctor\\n }\\n}\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/isarray/index.js\\\":\\n/*!***************************************!*\\\\\\n !*** ./node_modules/isarray/index.js ***!\\n \\\\***************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports) {\\n\\nvar toString = {}.toString;\\n\\nmodule.exports = Array.isArray || function (arr) {\\n return toString.call(arr) == '[object Array]';\\n};\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/node-libs-browser/node_modules/buffer/index.js\\\":\\n/*!*********************************************************************!*\\\\\\n !*** ./node_modules/node-libs-browser/node_modules/buffer/index.js ***!\\n \\\\*********************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n/* WEBPACK VAR INJECTION */(function(global) {/*!\\n * The buffer module from node.js, for the browser.\\n *\\n * @author Feross Aboukhadijeh \\n * @license MIT\\n */\\n/* eslint-disable no-proto */\\n\\n\\n\\nvar base64 = __webpack_require__(/*! base64-js */ \\\"./node_modules/base64-js/index.js\\\")\\nvar ieee754 = __webpack_require__(/*! ieee754 */ \\\"./node_modules/ieee754/index.js\\\")\\nvar isArray = __webpack_require__(/*! isarray */ \\\"./node_modules/isarray/index.js\\\")\\n\\nexports.Buffer = Buffer\\nexports.SlowBuffer = SlowBuffer\\nexports.INSPECT_MAX_BYTES = 50\\n\\n/**\\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\\n * === true Use Uint8Array implementation (fastest)\\n * === false Use Object implementation (most compatible, even IE6)\\n *\\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\\n * Opera 11.6+, iOS 4.2+.\\n *\\n * Due to various browser bugs, sometimes the Object implementation will be used even\\n * when the browser supports typed arrays.\\n *\\n * Note:\\n *\\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\\n *\\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\\n *\\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\\n * incorrect length in some situations.\\n\\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\\n * get the Object implementation, which is slower but behaves correctly.\\n */\\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\\n ? global.TYPED_ARRAY_SUPPORT\\n : typedArraySupport()\\n\\n/*\\n * Export kMaxLength after typed array support is determined.\\n */\\nexports.kMaxLength = kMaxLength()\\n\\nfunction typedArraySupport () {\\n try {\\n var arr = new Uint8Array(1)\\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\\n return arr.foo() === 42 && // typed array instances can be augmented\\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\\n } catch (e) {\\n return false\\n }\\n}\\n\\nfunction kMaxLength () {\\n return Buffer.TYPED_ARRAY_SUPPORT\\n ? 0x7fffffff\\n : 0x3fffffff\\n}\\n\\nfunction createBuffer (that, length) {\\n if (kMaxLength() < length) {\\n throw new RangeError('Invalid typed array length')\\n }\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n // Return an augmented `Uint8Array` instance, for best performance\\n that = new Uint8Array(length)\\n that.__proto__ = Buffer.prototype\\n } else {\\n // Fallback: Return an object instance of the Buffer class\\n if (that === null) {\\n that = new Buffer(length)\\n }\\n that.length = length\\n }\\n\\n return that\\n}\\n\\n/**\\n * The Buffer constructor returns instances of `Uint8Array` that have their\\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\\n * returns a single octet.\\n *\\n * The `Uint8Array` prototype remains unmodified.\\n */\\n\\nfunction Buffer (arg, encodingOrOffset, length) {\\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\\n return new Buffer(arg, encodingOrOffset, length)\\n }\\n\\n // Common case.\\n if (typeof arg === 'number') {\\n if (typeof encodingOrOffset === 'string') {\\n throw new Error(\\n 'If encoding is specified then the first argument must be a string'\\n )\\n }\\n return allocUnsafe(this, arg)\\n }\\n return from(this, arg, encodingOrOffset, length)\\n}\\n\\nBuffer.poolSize = 8192 // not used by this implementation\\n\\n// TODO: Legacy, not needed anymore. Remove in next major version.\\nBuffer._augment = function (arr) {\\n arr.__proto__ = Buffer.prototype\\n return arr\\n}\\n\\nfunction from (that, value, encodingOrOffset, length) {\\n if (typeof value === 'number') {\\n throw new TypeError('\\\"value\\\" argument must not be a number')\\n }\\n\\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\\n return fromArrayBuffer(that, value, encodingOrOffset, length)\\n }\\n\\n if (typeof value === 'string') {\\n return fromString(that, value, encodingOrOffset)\\n }\\n\\n return fromObject(that, value)\\n}\\n\\n/**\\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\\n * if value is a number.\\n * Buffer.from(str[, encoding])\\n * Buffer.from(array)\\n * Buffer.from(buffer)\\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\\n **/\\nBuffer.from = function (value, encodingOrOffset, length) {\\n return from(null, value, encodingOrOffset, length)\\n}\\n\\nif (Buffer.TYPED_ARRAY_SUPPORT) {\\n Buffer.prototype.__proto__ = Uint8Array.prototype\\n Buffer.__proto__ = Uint8Array\\n if (typeof Symbol !== 'undefined' && Symbol.species &&\\n Buffer[Symbol.species] === Buffer) {\\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\\n Object.defineProperty(Buffer, Symbol.species, {\\n value: null,\\n configurable: true\\n })\\n }\\n}\\n\\nfunction assertSize (size) {\\n if (typeof size !== 'number') {\\n throw new TypeError('\\\"size\\\" argument must be a number')\\n } else if (size < 0) {\\n throw new RangeError('\\\"size\\\" argument must not be negative')\\n }\\n}\\n\\nfunction alloc (that, size, fill, encoding) {\\n assertSize(size)\\n if (size <= 0) {\\n return createBuffer(that, size)\\n }\\n if (fill !== undefined) {\\n // Only pay attention to encoding if it's a string. This\\n // prevents accidentally sending in a number that would\\n // be interpretted as a start offset.\\n return typeof encoding === 'string'\\n ? createBuffer(that, size).fill(fill, encoding)\\n : createBuffer(that, size).fill(fill)\\n }\\n return createBuffer(that, size)\\n}\\n\\n/**\\n * Creates a new filled Buffer instance.\\n * alloc(size[, fill[, encoding]])\\n **/\\nBuffer.alloc = function (size, fill, encoding) {\\n return alloc(null, size, fill, encoding)\\n}\\n\\nfunction allocUnsafe (that, size) {\\n assertSize(size)\\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\\n for (var i = 0; i < size; ++i) {\\n that[i] = 0\\n }\\n }\\n return that\\n}\\n\\n/**\\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\\n * */\\nBuffer.allocUnsafe = function (size) {\\n return allocUnsafe(null, size)\\n}\\n/**\\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\\n */\\nBuffer.allocUnsafeSlow = function (size) {\\n return allocUnsafe(null, size)\\n}\\n\\nfunction fromString (that, string, encoding) {\\n if (typeof encoding !== 'string' || encoding === '') {\\n encoding = 'utf8'\\n }\\n\\n if (!Buffer.isEncoding(encoding)) {\\n throw new TypeError('\\\"encoding\\\" must be a valid string encoding')\\n }\\n\\n var length = byteLength(string, encoding) | 0\\n that = createBuffer(that, length)\\n\\n var actual = that.write(string, encoding)\\n\\n if (actual !== length) {\\n // Writing a hex string, for example, that contains invalid characters will\\n // cause everything after the first invalid character to be ignored. (e.g.\\n // 'abxxcd' will be treated as 'ab')\\n that = that.slice(0, actual)\\n }\\n\\n return that\\n}\\n\\nfunction fromArrayLike (that, array) {\\n var length = array.length < 0 ? 0 : checked(array.length) | 0\\n that = createBuffer(that, length)\\n for (var i = 0; i < length; i += 1) {\\n that[i] = array[i] & 255\\n }\\n return that\\n}\\n\\nfunction fromArrayBuffer (that, array, byteOffset, length) {\\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\\n\\n if (byteOffset < 0 || array.byteLength < byteOffset) {\\n throw new RangeError('\\\\'offset\\\\' is out of bounds')\\n }\\n\\n if (array.byteLength < byteOffset + (length || 0)) {\\n throw new RangeError('\\\\'length\\\\' is out of bounds')\\n }\\n\\n if (byteOffset === undefined && length === undefined) {\\n array = new Uint8Array(array)\\n } else if (length === undefined) {\\n array = new Uint8Array(array, byteOffset)\\n } else {\\n array = new Uint8Array(array, byteOffset, length)\\n }\\n\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n // Return an augmented `Uint8Array` instance, for best performance\\n that = array\\n that.__proto__ = Buffer.prototype\\n } else {\\n // Fallback: Return an object instance of the Buffer class\\n that = fromArrayLike(that, array)\\n }\\n return that\\n}\\n\\nfunction fromObject (that, obj) {\\n if (Buffer.isBuffer(obj)) {\\n var len = checked(obj.length) | 0\\n that = createBuffer(that, len)\\n\\n if (that.length === 0) {\\n return that\\n }\\n\\n obj.copy(that, 0, 0, len)\\n return that\\n }\\n\\n if (obj) {\\n if ((typeof ArrayBuffer !== 'undefined' &&\\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\\n return createBuffer(that, 0)\\n }\\n return fromArrayLike(that, obj)\\n }\\n\\n if (obj.type === 'Buffer' && isArray(obj.data)) {\\n return fromArrayLike(that, obj.data)\\n }\\n }\\n\\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\\n}\\n\\nfunction checked (length) {\\n // Note: cannot use `length < kMaxLength()` here because that fails when\\n // length is NaN (which is otherwise coerced to zero.)\\n if (length >= kMaxLength()) {\\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\\n }\\n return length | 0\\n}\\n\\nfunction SlowBuffer (length) {\\n if (+length != length) { // eslint-disable-line eqeqeq\\n length = 0\\n }\\n return Buffer.alloc(+length)\\n}\\n\\nBuffer.isBuffer = function isBuffer (b) {\\n return !!(b != null && b._isBuffer)\\n}\\n\\nBuffer.compare = function compare (a, b) {\\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\\n throw new TypeError('Arguments must be Buffers')\\n }\\n\\n if (a === b) return 0\\n\\n var x = a.length\\n var y = b.length\\n\\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\\n if (a[i] !== b[i]) {\\n x = a[i]\\n y = b[i]\\n break\\n }\\n }\\n\\n if (x < y) return -1\\n if (y < x) return 1\\n return 0\\n}\\n\\nBuffer.isEncoding = function isEncoding (encoding) {\\n switch (String(encoding).toLowerCase()) {\\n case 'hex':\\n case 'utf8':\\n case 'utf-8':\\n case 'ascii':\\n case 'latin1':\\n case 'binary':\\n case 'base64':\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return true\\n default:\\n return false\\n }\\n}\\n\\nBuffer.concat = function concat (list, length) {\\n if (!isArray(list)) {\\n throw new TypeError('\\\"list\\\" argument must be an Array of Buffers')\\n }\\n\\n if (list.length === 0) {\\n return Buffer.alloc(0)\\n }\\n\\n var i\\n if (length === undefined) {\\n length = 0\\n for (i = 0; i < list.length; ++i) {\\n length += list[i].length\\n }\\n }\\n\\n var buffer = Buffer.allocUnsafe(length)\\n var pos = 0\\n for (i = 0; i < list.length; ++i) {\\n var buf = list[i]\\n if (!Buffer.isBuffer(buf)) {\\n throw new TypeError('\\\"list\\\" argument must be an Array of Buffers')\\n }\\n buf.copy(buffer, pos)\\n pos += buf.length\\n }\\n return buffer\\n}\\n\\nfunction byteLength (string, encoding) {\\n if (Buffer.isBuffer(string)) {\\n return string.length\\n }\\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\\n return string.byteLength\\n }\\n if (typeof string !== 'string') {\\n string = '' + string\\n }\\n\\n var len = string.length\\n if (len === 0) return 0\\n\\n // Use a for loop to avoid recursion\\n var loweredCase = false\\n for (;;) {\\n switch (encoding) {\\n case 'ascii':\\n case 'latin1':\\n case 'binary':\\n return len\\n case 'utf8':\\n case 'utf-8':\\n case undefined:\\n return utf8ToBytes(string).length\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return len * 2\\n case 'hex':\\n return len >>> 1\\n case 'base64':\\n return base64ToBytes(string).length\\n default:\\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\\n encoding = ('' + encoding).toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\nBuffer.byteLength = byteLength\\n\\nfunction slowToString (encoding, start, end) {\\n var loweredCase = false\\n\\n // No need to verify that \\\"this.length <= MAX_UINT32\\\" since it's a read-only\\n // property of a typed array.\\n\\n // This behaves neither like String nor Uint8Array in that we set start/end\\n // to their upper/lower bounds if the value passed is out of range.\\n // undefined is handled specially as per ECMA-262 6th Edition,\\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\\n if (start === undefined || start < 0) {\\n start = 0\\n }\\n // Return early if start > this.length. Done here to prevent potential uint32\\n // coercion fail below.\\n if (start > this.length) {\\n return ''\\n }\\n\\n if (end === undefined || end > this.length) {\\n end = this.length\\n }\\n\\n if (end <= 0) {\\n return ''\\n }\\n\\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\\n end >>>= 0\\n start >>>= 0\\n\\n if (end <= start) {\\n return ''\\n }\\n\\n if (!encoding) encoding = 'utf8'\\n\\n while (true) {\\n switch (encoding) {\\n case 'hex':\\n return hexSlice(this, start, end)\\n\\n case 'utf8':\\n case 'utf-8':\\n return utf8Slice(this, start, end)\\n\\n case 'ascii':\\n return asciiSlice(this, start, end)\\n\\n case 'latin1':\\n case 'binary':\\n return latin1Slice(this, start, end)\\n\\n case 'base64':\\n return base64Slice(this, start, end)\\n\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return utf16leSlice(this, start, end)\\n\\n default:\\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\\n encoding = (encoding + '').toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\n\\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\\n// Buffer instances.\\nBuffer.prototype._isBuffer = true\\n\\nfunction swap (b, n, m) {\\n var i = b[n]\\n b[n] = b[m]\\n b[m] = i\\n}\\n\\nBuffer.prototype.swap16 = function swap16 () {\\n var len = this.length\\n if (len % 2 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 16-bits')\\n }\\n for (var i = 0; i < len; i += 2) {\\n swap(this, i, i + 1)\\n }\\n return this\\n}\\n\\nBuffer.prototype.swap32 = function swap32 () {\\n var len = this.length\\n if (len % 4 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 32-bits')\\n }\\n for (var i = 0; i < len; i += 4) {\\n swap(this, i, i + 3)\\n swap(this, i + 1, i + 2)\\n }\\n return this\\n}\\n\\nBuffer.prototype.swap64 = function swap64 () {\\n var len = this.length\\n if (len % 8 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 64-bits')\\n }\\n for (var i = 0; i < len; i += 8) {\\n swap(this, i, i + 7)\\n swap(this, i + 1, i + 6)\\n swap(this, i + 2, i + 5)\\n swap(this, i + 3, i + 4)\\n }\\n return this\\n}\\n\\nBuffer.prototype.toString = function toString () {\\n var length = this.length | 0\\n if (length === 0) return ''\\n if (arguments.length === 0) return utf8Slice(this, 0, length)\\n return slowToString.apply(this, arguments)\\n}\\n\\nBuffer.prototype.equals = function equals (b) {\\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\\n if (this === b) return true\\n return Buffer.compare(this, b) === 0\\n}\\n\\nBuffer.prototype.inspect = function inspect () {\\n var str = ''\\n var max = exports.INSPECT_MAX_BYTES\\n if (this.length > 0) {\\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\\n if (this.length > max) str += ' ... '\\n }\\n return ''\\n}\\n\\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\\n if (!Buffer.isBuffer(target)) {\\n throw new TypeError('Argument must be a Buffer')\\n }\\n\\n if (start === undefined) {\\n start = 0\\n }\\n if (end === undefined) {\\n end = target ? target.length : 0\\n }\\n if (thisStart === undefined) {\\n thisStart = 0\\n }\\n if (thisEnd === undefined) {\\n thisEnd = this.length\\n }\\n\\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\\n throw new RangeError('out of range index')\\n }\\n\\n if (thisStart >= thisEnd && start >= end) {\\n return 0\\n }\\n if (thisStart >= thisEnd) {\\n return -1\\n }\\n if (start >= end) {\\n return 1\\n }\\n\\n start >>>= 0\\n end >>>= 0\\n thisStart >>>= 0\\n thisEnd >>>= 0\\n\\n if (this === target) return 0\\n\\n var x = thisEnd - thisStart\\n var y = end - start\\n var len = Math.min(x, y)\\n\\n var thisCopy = this.slice(thisStart, thisEnd)\\n var targetCopy = target.slice(start, end)\\n\\n for (var i = 0; i < len; ++i) {\\n if (thisCopy[i] !== targetCopy[i]) {\\n x = thisCopy[i]\\n y = targetCopy[i]\\n break\\n }\\n }\\n\\n if (x < y) return -1\\n if (y < x) return 1\\n return 0\\n}\\n\\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\\n//\\n// Arguments:\\n// - buffer - a Buffer to search\\n// - val - a string, Buffer, or number\\n// - byteOffset - an index into `buffer`; will be clamped to an int32\\n// - encoding - an optional encoding, relevant is val is a string\\n// - dir - true for indexOf, false for lastIndexOf\\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\\n // Empty buffer means no match\\n if (buffer.length === 0) return -1\\n\\n // Normalize byteOffset\\n if (typeof byteOffset === 'string') {\\n encoding = byteOffset\\n byteOffset = 0\\n } else if (byteOffset > 0x7fffffff) {\\n byteOffset = 0x7fffffff\\n } else if (byteOffset < -0x80000000) {\\n byteOffset = -0x80000000\\n }\\n byteOffset = +byteOffset // Coerce to Number.\\n if (isNaN(byteOffset)) {\\n // byteOffset: it it's undefined, null, NaN, \\\"foo\\\", etc, search whole buffer\\n byteOffset = dir ? 0 : (buffer.length - 1)\\n }\\n\\n // Normalize byteOffset: negative offsets start from the end of the buffer\\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\\n if (byteOffset >= buffer.length) {\\n if (dir) return -1\\n else byteOffset = buffer.length - 1\\n } else if (byteOffset < 0) {\\n if (dir) byteOffset = 0\\n else return -1\\n }\\n\\n // Normalize val\\n if (typeof val === 'string') {\\n val = Buffer.from(val, encoding)\\n }\\n\\n // Finally, search either indexOf (if dir is true) or lastIndexOf\\n if (Buffer.isBuffer(val)) {\\n // Special case: looking for empty string/buffer always fails\\n if (val.length === 0) {\\n return -1\\n }\\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\\n } else if (typeof val === 'number') {\\n val = val & 0xFF // Search for a byte value [0-255]\\n if (Buffer.TYPED_ARRAY_SUPPORT &&\\n typeof Uint8Array.prototype.indexOf === 'function') {\\n if (dir) {\\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\\n } else {\\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\\n }\\n }\\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\\n }\\n\\n throw new TypeError('val must be string, number or Buffer')\\n}\\n\\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\\n var indexSize = 1\\n var arrLength = arr.length\\n var valLength = val.length\\n\\n if (encoding !== undefined) {\\n encoding = String(encoding).toLowerCase()\\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\\n encoding === 'utf16le' || encoding === 'utf-16le') {\\n if (arr.length < 2 || val.length < 2) {\\n return -1\\n }\\n indexSize = 2\\n arrLength /= 2\\n valLength /= 2\\n byteOffset /= 2\\n }\\n }\\n\\n function read (buf, i) {\\n if (indexSize === 1) {\\n return buf[i]\\n } else {\\n return buf.readUInt16BE(i * indexSize)\\n }\\n }\\n\\n var i\\n if (dir) {\\n var foundIndex = -1\\n for (i = byteOffset; i < arrLength; i++) {\\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\\n if (foundIndex === -1) foundIndex = i\\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\\n } else {\\n if (foundIndex !== -1) i -= i - foundIndex\\n foundIndex = -1\\n }\\n }\\n } else {\\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\\n for (i = byteOffset; i >= 0; i--) {\\n var found = true\\n for (var j = 0; j < valLength; j++) {\\n if (read(arr, i + j) !== read(val, j)) {\\n found = false\\n break\\n }\\n }\\n if (found) return i\\n }\\n }\\n\\n return -1\\n}\\n\\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\\n return this.indexOf(val, byteOffset, encoding) !== -1\\n}\\n\\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\\n}\\n\\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\\n}\\n\\nfunction hexWrite (buf, string, offset, length) {\\n offset = Number(offset) || 0\\n var remaining = buf.length - offset\\n if (!length) {\\n length = remaining\\n } else {\\n length = Number(length)\\n if (length > remaining) {\\n length = remaining\\n }\\n }\\n\\n // must be an even number of digits\\n var strLen = string.length\\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\\n\\n if (length > strLen / 2) {\\n length = strLen / 2\\n }\\n for (var i = 0; i < length; ++i) {\\n var parsed = parseInt(string.substr(i * 2, 2), 16)\\n if (isNaN(parsed)) return i\\n buf[offset + i] = parsed\\n }\\n return i\\n}\\n\\nfunction utf8Write (buf, string, offset, length) {\\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\\n}\\n\\nfunction asciiWrite (buf, string, offset, length) {\\n return blitBuffer(asciiToBytes(string), buf, offset, length)\\n}\\n\\nfunction latin1Write (buf, string, offset, length) {\\n return asciiWrite(buf, string, offset, length)\\n}\\n\\nfunction base64Write (buf, string, offset, length) {\\n return blitBuffer(base64ToBytes(string), buf, offset, length)\\n}\\n\\nfunction ucs2Write (buf, string, offset, length) {\\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\\n}\\n\\nBuffer.prototype.write = function write (string, offset, length, encoding) {\\n // Buffer#write(string)\\n if (offset === undefined) {\\n encoding = 'utf8'\\n length = this.length\\n offset = 0\\n // Buffer#write(string, encoding)\\n } else if (length === undefined && typeof offset === 'string') {\\n encoding = offset\\n length = this.length\\n offset = 0\\n // Buffer#write(string, offset[, length][, encoding])\\n } else if (isFinite(offset)) {\\n offset = offset | 0\\n if (isFinite(length)) {\\n length = length | 0\\n if (encoding === undefined) encoding = 'utf8'\\n } else {\\n encoding = length\\n length = undefined\\n }\\n // legacy write(string, encoding, offset, length) - remove in v0.13\\n } else {\\n throw new Error(\\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\\n )\\n }\\n\\n var remaining = this.length - offset\\n if (length === undefined || length > remaining) length = remaining\\n\\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\\n throw new RangeError('Attempt to write outside buffer bounds')\\n }\\n\\n if (!encoding) encoding = 'utf8'\\n\\n var loweredCase = false\\n for (;;) {\\n switch (encoding) {\\n case 'hex':\\n return hexWrite(this, string, offset, length)\\n\\n case 'utf8':\\n case 'utf-8':\\n return utf8Write(this, string, offset, length)\\n\\n case 'ascii':\\n return asciiWrite(this, string, offset, length)\\n\\n case 'latin1':\\n case 'binary':\\n return latin1Write(this, string, offset, length)\\n\\n case 'base64':\\n // Warning: maxLength not taken into account in base64Write\\n return base64Write(this, string, offset, length)\\n\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return ucs2Write(this, string, offset, length)\\n\\n default:\\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\\n encoding = ('' + encoding).toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\n\\nBuffer.prototype.toJSON = function toJSON () {\\n return {\\n type: 'Buffer',\\n data: Array.prototype.slice.call(this._arr || this, 0)\\n }\\n}\\n\\nfunction base64Slice (buf, start, end) {\\n if (start === 0 && end === buf.length) {\\n return base64.fromByteArray(buf)\\n } else {\\n return base64.fromByteArray(buf.slice(start, end))\\n }\\n}\\n\\nfunction utf8Slice (buf, start, end) {\\n end = Math.min(buf.length, end)\\n var res = []\\n\\n var i = start\\n while (i < end) {\\n var firstByte = buf[i]\\n var codePoint = null\\n var bytesPerSequence = (firstByte > 0xEF) ? 4\\n : (firstByte > 0xDF) ? 3\\n : (firstByte > 0xBF) ? 2\\n : 1\\n\\n if (i + bytesPerSequence <= end) {\\n var secondByte, thirdByte, fourthByte, tempCodePoint\\n\\n switch (bytesPerSequence) {\\n case 1:\\n if (firstByte < 0x80) {\\n codePoint = firstByte\\n }\\n break\\n case 2:\\n secondByte = buf[i + 1]\\n if ((secondByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\\n if (tempCodePoint > 0x7F) {\\n codePoint = tempCodePoint\\n }\\n }\\n break\\n case 3:\\n secondByte = buf[i + 1]\\n thirdByte = buf[i + 2]\\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\\n codePoint = tempCodePoint\\n }\\n }\\n break\\n case 4:\\n secondByte = buf[i + 1]\\n thirdByte = buf[i + 2]\\n fourthByte = buf[i + 3]\\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\\n codePoint = tempCodePoint\\n }\\n }\\n }\\n }\\n\\n if (codePoint === null) {\\n // we did not generate a valid codePoint so insert a\\n // replacement char (U+FFFD) and advance only 1 byte\\n codePoint = 0xFFFD\\n bytesPerSequence = 1\\n } else if (codePoint > 0xFFFF) {\\n // encode to utf16 (surrogate pair dance)\\n codePoint -= 0x10000\\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\\n codePoint = 0xDC00 | codePoint & 0x3FF\\n }\\n\\n res.push(codePoint)\\n i += bytesPerSequence\\n }\\n\\n return decodeCodePointsArray(res)\\n}\\n\\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\\n// the lowest limit is Chrome, with 0x10000 args.\\n// We go 1 magnitude less, for safety\\nvar MAX_ARGUMENTS_LENGTH = 0x1000\\n\\nfunction decodeCodePointsArray (codePoints) {\\n var len = codePoints.length\\n if (len <= MAX_ARGUMENTS_LENGTH) {\\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\\n }\\n\\n // Decode in chunks to avoid \\\"call stack size exceeded\\\".\\n var res = ''\\n var i = 0\\n while (i < len) {\\n res += String.fromCharCode.apply(\\n String,\\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\\n )\\n }\\n return res\\n}\\n\\nfunction asciiSlice (buf, start, end) {\\n var ret = ''\\n end = Math.min(buf.length, end)\\n\\n for (var i = start; i < end; ++i) {\\n ret += String.fromCharCode(buf[i] & 0x7F)\\n }\\n return ret\\n}\\n\\nfunction latin1Slice (buf, start, end) {\\n var ret = ''\\n end = Math.min(buf.length, end)\\n\\n for (var i = start; i < end; ++i) {\\n ret += String.fromCharCode(buf[i])\\n }\\n return ret\\n}\\n\\nfunction hexSlice (buf, start, end) {\\n var len = buf.length\\n\\n if (!start || start < 0) start = 0\\n if (!end || end < 0 || end > len) end = len\\n\\n var out = ''\\n for (var i = start; i < end; ++i) {\\n out += toHex(buf[i])\\n }\\n return out\\n}\\n\\nfunction utf16leSlice (buf, start, end) {\\n var bytes = buf.slice(start, end)\\n var res = ''\\n for (var i = 0; i < bytes.length; i += 2) {\\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\\n }\\n return res\\n}\\n\\nBuffer.prototype.slice = function slice (start, end) {\\n var len = this.length\\n start = ~~start\\n end = end === undefined ? len : ~~end\\n\\n if (start < 0) {\\n start += len\\n if (start < 0) start = 0\\n } else if (start > len) {\\n start = len\\n }\\n\\n if (end < 0) {\\n end += len\\n if (end < 0) end = 0\\n } else if (end > len) {\\n end = len\\n }\\n\\n if (end < start) end = start\\n\\n var newBuf\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n newBuf = this.subarray(start, end)\\n newBuf.__proto__ = Buffer.prototype\\n } else {\\n var sliceLen = end - start\\n newBuf = new Buffer(sliceLen, undefined)\\n for (var i = 0; i < sliceLen; ++i) {\\n newBuf[i] = this[i + start]\\n }\\n }\\n\\n return newBuf\\n}\\n\\n/*\\n * Need to make sure that buffer isn't trying to write out of bounds.\\n */\\nfunction checkOffset (offset, ext, length) {\\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\\n}\\n\\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n var val = this[offset]\\n var mul = 1\\n var i = 0\\n while (++i < byteLength && (mul *= 0x100)) {\\n val += this[offset + i] * mul\\n }\\n\\n return val\\n}\\n\\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) {\\n checkOffset(offset, byteLength, this.length)\\n }\\n\\n var val = this[offset + --byteLength]\\n var mul = 1\\n while (byteLength > 0 && (mul *= 0x100)) {\\n val += this[offset + --byteLength] * mul\\n }\\n\\n return val\\n}\\n\\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 1, this.length)\\n return this[offset]\\n}\\n\\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n return this[offset] | (this[offset + 1] << 8)\\n}\\n\\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n return (this[offset] << 8) | this[offset + 1]\\n}\\n\\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return ((this[offset]) |\\n (this[offset + 1] << 8) |\\n (this[offset + 2] << 16)) +\\n (this[offset + 3] * 0x1000000)\\n}\\n\\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset] * 0x1000000) +\\n ((this[offset + 1] << 16) |\\n (this[offset + 2] << 8) |\\n this[offset + 3])\\n}\\n\\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n var val = this[offset]\\n var mul = 1\\n var i = 0\\n while (++i < byteLength && (mul *= 0x100)) {\\n val += this[offset + i] * mul\\n }\\n mul *= 0x80\\n\\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\\n\\n return val\\n}\\n\\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n var i = byteLength\\n var mul = 1\\n var val = this[offset + --i]\\n while (i > 0 && (mul *= 0x100)) {\\n val += this[offset + --i] * mul\\n }\\n mul *= 0x80\\n\\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\\n\\n return val\\n}\\n\\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 1, this.length)\\n if (!(this[offset] & 0x80)) return (this[offset])\\n return ((0xff - this[offset] + 1) * -1)\\n}\\n\\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n var val = this[offset] | (this[offset + 1] << 8)\\n return (val & 0x8000) ? val | 0xFFFF0000 : val\\n}\\n\\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n var val = this[offset + 1] | (this[offset] << 8)\\n return (val & 0x8000) ? val | 0xFFFF0000 : val\\n}\\n\\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset]) |\\n (this[offset + 1] << 8) |\\n (this[offset + 2] << 16) |\\n (this[offset + 3] << 24)\\n}\\n\\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset] << 24) |\\n (this[offset + 1] << 16) |\\n (this[offset + 2] << 8) |\\n (this[offset + 3])\\n}\\n\\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n return ieee754.read(this, offset, true, 23, 4)\\n}\\n\\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n return ieee754.read(this, offset, false, 23, 4)\\n}\\n\\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 8, this.length)\\n return ieee754.read(this, offset, true, 52, 8)\\n}\\n\\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 8, this.length)\\n return ieee754.read(this, offset, false, 52, 8)\\n}\\n\\nfunction checkInt (buf, value, offset, ext, max, min) {\\n if (!Buffer.isBuffer(buf)) throw new TypeError('\\\"buffer\\\" argument must be a Buffer instance')\\n if (value > max || value < min) throw new RangeError('\\\"value\\\" argument is out of bounds')\\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\\n}\\n\\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) {\\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\\n checkInt(this, value, offset, byteLength, maxBytes, 0)\\n }\\n\\n var mul = 1\\n var i = 0\\n this[offset] = value & 0xFF\\n while (++i < byteLength && (mul *= 0x100)) {\\n this[offset + i] = (value / mul) & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) {\\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\\n checkInt(this, value, offset, byteLength, maxBytes, 0)\\n }\\n\\n var i = byteLength - 1\\n var mul = 1\\n this[offset + i] = value & 0xFF\\n while (--i >= 0 && (mul *= 0x100)) {\\n this[offset + i] = (value / mul) & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\\n this[offset] = (value & 0xff)\\n return offset + 1\\n}\\n\\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\\n if (value < 0) value = 0xffff + value + 1\\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\\n (littleEndian ? i : 1 - i) * 8\\n }\\n}\\n\\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n } else {\\n objectWriteUInt16(this, value, offset, true)\\n }\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value >>> 8)\\n this[offset + 1] = (value & 0xff)\\n } else {\\n objectWriteUInt16(this, value, offset, false)\\n }\\n return offset + 2\\n}\\n\\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\\n if (value < 0) value = 0xffffffff + value + 1\\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\\n }\\n}\\n\\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset + 3] = (value >>> 24)\\n this[offset + 2] = (value >>> 16)\\n this[offset + 1] = (value >>> 8)\\n this[offset] = (value & 0xff)\\n } else {\\n objectWriteUInt32(this, value, offset, true)\\n }\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value >>> 24)\\n this[offset + 1] = (value >>> 16)\\n this[offset + 2] = (value >>> 8)\\n this[offset + 3] = (value & 0xff)\\n } else {\\n objectWriteUInt32(this, value, offset, false)\\n }\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) {\\n var limit = Math.pow(2, 8 * byteLength - 1)\\n\\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\\n }\\n\\n var i = 0\\n var mul = 1\\n var sub = 0\\n this[offset] = value & 0xFF\\n while (++i < byteLength && (mul *= 0x100)) {\\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\\n sub = 1\\n }\\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) {\\n var limit = Math.pow(2, 8 * byteLength - 1)\\n\\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\\n }\\n\\n var i = byteLength - 1\\n var mul = 1\\n var sub = 0\\n this[offset + i] = value & 0xFF\\n while (--i >= 0 && (mul *= 0x100)) {\\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\\n sub = 1\\n }\\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\\n if (value < 0) value = 0xff + value + 1\\n this[offset] = (value & 0xff)\\n return offset + 1\\n}\\n\\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n } else {\\n objectWriteUInt16(this, value, offset, true)\\n }\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value >>> 8)\\n this[offset + 1] = (value & 0xff)\\n } else {\\n objectWriteUInt16(this, value, offset, false)\\n }\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n this[offset + 2] = (value >>> 16)\\n this[offset + 3] = (value >>> 24)\\n } else {\\n objectWriteUInt32(this, value, offset, true)\\n }\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\\n if (value < 0) value = 0xffffffff + value + 1\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value >>> 24)\\n this[offset + 1] = (value >>> 16)\\n this[offset + 2] = (value >>> 8)\\n this[offset + 3] = (value & 0xff)\\n } else {\\n objectWriteUInt32(this, value, offset, false)\\n }\\n return offset + 4\\n}\\n\\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\\n if (offset < 0) throw new RangeError('Index out of range')\\n}\\n\\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\\n if (!noAssert) {\\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\\n }\\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\\n return writeFloat(this, value, offset, true, noAssert)\\n}\\n\\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\\n return writeFloat(this, value, offset, false, noAssert)\\n}\\n\\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\\n if (!noAssert) {\\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\\n }\\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\\n return offset + 8\\n}\\n\\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\\n return writeDouble(this, value, offset, true, noAssert)\\n}\\n\\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\\n return writeDouble(this, value, offset, false, noAssert)\\n}\\n\\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\\n if (!start) start = 0\\n if (!end && end !== 0) end = this.length\\n if (targetStart >= target.length) targetStart = target.length\\n if (!targetStart) targetStart = 0\\n if (end > 0 && end < start) end = start\\n\\n // Copy 0 bytes; we're done\\n if (end === start) return 0\\n if (target.length === 0 || this.length === 0) return 0\\n\\n // Fatal error conditions\\n if (targetStart < 0) {\\n throw new RangeError('targetStart out of bounds')\\n }\\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\\n\\n // Are we oob?\\n if (end > this.length) end = this.length\\n if (target.length - targetStart < end - start) {\\n end = target.length - targetStart + start\\n }\\n\\n var len = end - start\\n var i\\n\\n if (this === target && start < targetStart && targetStart < end) {\\n // descending copy from end\\n for (i = len - 1; i >= 0; --i) {\\n target[i + targetStart] = this[i + start]\\n }\\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\\n // ascending copy from start\\n for (i = 0; i < len; ++i) {\\n target[i + targetStart] = this[i + start]\\n }\\n } else {\\n Uint8Array.prototype.set.call(\\n target,\\n this.subarray(start, start + len),\\n targetStart\\n )\\n }\\n\\n return len\\n}\\n\\n// Usage:\\n// buffer.fill(number[, offset[, end]])\\n// buffer.fill(buffer[, offset[, end]])\\n// buffer.fill(string[, offset[, end]][, encoding])\\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\\n // Handle string cases:\\n if (typeof val === 'string') {\\n if (typeof start === 'string') {\\n encoding = start\\n start = 0\\n end = this.length\\n } else if (typeof end === 'string') {\\n encoding = end\\n end = this.length\\n }\\n if (val.length === 1) {\\n var code = val.charCodeAt(0)\\n if (code < 256) {\\n val = code\\n }\\n }\\n if (encoding !== undefined && typeof encoding !== 'string') {\\n throw new TypeError('encoding must be a string')\\n }\\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\\n throw new TypeError('Unknown encoding: ' + encoding)\\n }\\n } else if (typeof val === 'number') {\\n val = val & 255\\n }\\n\\n // Invalid ranges are not set to a default, so can range check early.\\n if (start < 0 || this.length < start || this.length < end) {\\n throw new RangeError('Out of range index')\\n }\\n\\n if (end <= start) {\\n return this\\n }\\n\\n start = start >>> 0\\n end = end === undefined ? this.length : end >>> 0\\n\\n if (!val) val = 0\\n\\n var i\\n if (typeof val === 'number') {\\n for (i = start; i < end; ++i) {\\n this[i] = val\\n }\\n } else {\\n var bytes = Buffer.isBuffer(val)\\n ? val\\n : utf8ToBytes(new Buffer(val, encoding).toString())\\n var len = bytes.length\\n for (i = 0; i < end - start; ++i) {\\n this[i + start] = bytes[i % len]\\n }\\n }\\n\\n return this\\n}\\n\\n// HELPER FUNCTIONS\\n// ================\\n\\nvar INVALID_BASE64_RE = /[^+\\\\/0-9A-Za-z-_]/g\\n\\nfunction base64clean (str) {\\n // Node strips out invalid characters like \\\\n and \\\\t from the string, base64-js does not\\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\\n // Node converts strings with length < 2 to ''\\n if (str.length < 2) return ''\\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\\n while (str.length % 4 !== 0) {\\n str = str + '='\\n }\\n return str\\n}\\n\\nfunction stringtrim (str) {\\n if (str.trim) return str.trim()\\n return str.replace(/^\\\\s+|\\\\s+$/g, '')\\n}\\n\\nfunction toHex (n) {\\n if (n < 16) return '0' + n.toString(16)\\n return n.toString(16)\\n}\\n\\nfunction utf8ToBytes (string, units) {\\n units = units || Infinity\\n var codePoint\\n var length = string.length\\n var leadSurrogate = null\\n var bytes = []\\n\\n for (var i = 0; i < length; ++i) {\\n codePoint = string.charCodeAt(i)\\n\\n // is surrogate component\\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\\n // last char was a lead\\n if (!leadSurrogate) {\\n // no lead yet\\n if (codePoint > 0xDBFF) {\\n // unexpected trail\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n continue\\n } else if (i + 1 === length) {\\n // unpaired lead\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n continue\\n }\\n\\n // valid lead\\n leadSurrogate = codePoint\\n\\n continue\\n }\\n\\n // 2 leads in a row\\n if (codePoint < 0xDC00) {\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n leadSurrogate = codePoint\\n continue\\n }\\n\\n // valid surrogate pair\\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\\n } else if (leadSurrogate) {\\n // valid bmp char, but last char was a lead\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n }\\n\\n leadSurrogate = null\\n\\n // encode utf8\\n if (codePoint < 0x80) {\\n if ((units -= 1) < 0) break\\n bytes.push(codePoint)\\n } else if (codePoint < 0x800) {\\n if ((units -= 2) < 0) break\\n bytes.push(\\n codePoint >> 0x6 | 0xC0,\\n codePoint & 0x3F | 0x80\\n )\\n } else if (codePoint < 0x10000) {\\n if ((units -= 3) < 0) break\\n bytes.push(\\n codePoint >> 0xC | 0xE0,\\n codePoint >> 0x6 & 0x3F | 0x80,\\n codePoint & 0x3F | 0x80\\n )\\n } else if (codePoint < 0x110000) {\\n if ((units -= 4) < 0) break\\n bytes.push(\\n codePoint >> 0x12 | 0xF0,\\n codePoint >> 0xC & 0x3F | 0x80,\\n codePoint >> 0x6 & 0x3F | 0x80,\\n codePoint & 0x3F | 0x80\\n )\\n } else {\\n throw new Error('Invalid code point')\\n }\\n }\\n\\n return bytes\\n}\\n\\nfunction asciiToBytes (str) {\\n var byteArray = []\\n for (var i = 0; i < str.length; ++i) {\\n // Node's code seems to be doing this and not & 0x7F..\\n byteArray.push(str.charCodeAt(i) & 0xFF)\\n }\\n return byteArray\\n}\\n\\nfunction utf16leToBytes (str, units) {\\n var c, hi, lo\\n var byteArray = []\\n for (var i = 0; i < str.length; ++i) {\\n if ((units -= 2) < 0) break\\n\\n c = str.charCodeAt(i)\\n hi = c >> 8\\n lo = c % 256\\n byteArray.push(lo)\\n byteArray.push(hi)\\n }\\n\\n return byteArray\\n}\\n\\nfunction base64ToBytes (str) {\\n return base64.toByteArray(base64clean(str))\\n}\\n\\nfunction blitBuffer (src, dst, offset, length) {\\n for (var i = 0; i < length; ++i) {\\n if ((i + offset >= dst.length) || (i >= src.length)) break\\n dst[i + offset] = src[i]\\n }\\n return i\\n}\\n\\nfunction isnan (val) {\\n return val !== val // eslint-disable-line no-self-compare\\n}\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/node-libs-browser/node_modules/events/events.js\\\":\\n/*!**********************************************************************!*\\\\\\n !*** ./node_modules/node-libs-browser/node_modules/events/events.js ***!\\n \\\\**********************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\n\\n\\nvar R = typeof Reflect === 'object' ? Reflect : null\\nvar ReflectApply = R && typeof R.apply === 'function'\\n ? R.apply\\n : function ReflectApply(target, receiver, args) {\\n return Function.prototype.apply.call(target, receiver, args);\\n }\\n\\nvar ReflectOwnKeys\\nif (R && typeof R.ownKeys === 'function') {\\n ReflectOwnKeys = R.ownKeys\\n} else if (Object.getOwnPropertySymbols) {\\n ReflectOwnKeys = function ReflectOwnKeys(target) {\\n return Object.getOwnPropertyNames(target)\\n .concat(Object.getOwnPropertySymbols(target));\\n };\\n} else {\\n ReflectOwnKeys = function ReflectOwnKeys(target) {\\n return Object.getOwnPropertyNames(target);\\n };\\n}\\n\\nfunction ProcessEmitWarning(warning) {\\n if (console && console.warn) console.warn(warning);\\n}\\n\\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\\n return value !== value;\\n}\\n\\nfunction EventEmitter() {\\n EventEmitter.init.call(this);\\n}\\nmodule.exports = EventEmitter;\\nmodule.exports.once = once;\\n\\n// Backwards-compat with node 0.10.x\\nEventEmitter.EventEmitter = EventEmitter;\\n\\nEventEmitter.prototype._events = undefined;\\nEventEmitter.prototype._eventsCount = 0;\\nEventEmitter.prototype._maxListeners = undefined;\\n\\n// By default EventEmitters will print a warning if more than 10 listeners are\\n// added to it. This is a useful default which helps finding memory leaks.\\nvar defaultMaxListeners = 10;\\n\\nfunction checkListener(listener) {\\n if (typeof listener !== 'function') {\\n throw new TypeError('The \\\"listener\\\" argument must be of type Function. Received type ' + typeof listener);\\n }\\n}\\n\\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\\n enumerable: true,\\n get: function() {\\n return defaultMaxListeners;\\n },\\n set: function(arg) {\\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\\n throw new RangeError('The value of \\\"defaultMaxListeners\\\" is out of range. It must be a non-negative number. Received ' + arg + '.');\\n }\\n defaultMaxListeners = arg;\\n }\\n});\\n\\nEventEmitter.init = function() {\\n\\n if (this._events === undefined ||\\n this._events === Object.getPrototypeOf(this)._events) {\\n this._events = Object.create(null);\\n this._eventsCount = 0;\\n }\\n\\n this._maxListeners = this._maxListeners || undefined;\\n};\\n\\n// Obviously not all Emitters should be limited to 10. This function allows\\n// that to be increased. Set to zero for unlimited.\\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\\n throw new RangeError('The value of \\\"n\\\" is out of range. It must be a non-negative number. Received ' + n + '.');\\n }\\n this._maxListeners = n;\\n return this;\\n};\\n\\nfunction _getMaxListeners(that) {\\n if (that._maxListeners === undefined)\\n return EventEmitter.defaultMaxListeners;\\n return that._maxListeners;\\n}\\n\\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\\n return _getMaxListeners(this);\\n};\\n\\nEventEmitter.prototype.emit = function emit(type) {\\n var args = [];\\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\\n var doError = (type === 'error');\\n\\n var events = this._events;\\n if (events !== undefined)\\n doError = (doError && events.error === undefined);\\n else if (!doError)\\n return false;\\n\\n // If there is no 'error' event listener then throw.\\n if (doError) {\\n var er;\\n if (args.length > 0)\\n er = args[0];\\n if (er instanceof Error) {\\n // Note: The comments on the `throw` lines are intentional, they show\\n // up in Node's output if this results in an unhandled exception.\\n throw er; // Unhandled 'error' event\\n }\\n // At least give some kind of context to the user\\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\\n err.context = er;\\n throw err; // Unhandled 'error' event\\n }\\n\\n var handler = events[type];\\n\\n if (handler === undefined)\\n return false;\\n\\n if (typeof handler === 'function') {\\n ReflectApply(handler, this, args);\\n } else {\\n var len = handler.length;\\n var listeners = arrayClone(handler, len);\\n for (var i = 0; i < len; ++i)\\n ReflectApply(listeners[i], this, args);\\n }\\n\\n return true;\\n};\\n\\nfunction _addListener(target, type, listener, prepend) {\\n var m;\\n var events;\\n var existing;\\n\\n checkListener(listener);\\n\\n events = target._events;\\n if (events === undefined) {\\n events = target._events = Object.create(null);\\n target._eventsCount = 0;\\n } else {\\n // To avoid recursion in the case that type === \\\"newListener\\\"! Before\\n // adding it to the listeners, first emit \\\"newListener\\\".\\n if (events.newListener !== undefined) {\\n target.emit('newListener', type,\\n listener.listener ? listener.listener : listener);\\n\\n // Re-assign `events` because a newListener handler could have caused the\\n // this._events to be assigned to a new object\\n events = target._events;\\n }\\n existing = events[type];\\n }\\n\\n if (existing === undefined) {\\n // Optimize the case of one listener. Don't need the extra array object.\\n existing = events[type] = listener;\\n ++target._eventsCount;\\n } else {\\n if (typeof existing === 'function') {\\n // Adding the second element, need to change to array.\\n existing = events[type] =\\n prepend ? [listener, existing] : [existing, listener];\\n // If we've already got an array, just append.\\n } else if (prepend) {\\n existing.unshift(listener);\\n } else {\\n existing.push(listener);\\n }\\n\\n // Check for listener leak\\n m = _getMaxListeners(target);\\n if (m > 0 && existing.length > m && !existing.warned) {\\n existing.warned = true;\\n // No error code for this since it is a Warning\\n // eslint-disable-next-line no-restricted-syntax\\n var w = new Error('Possible EventEmitter memory leak detected. ' +\\n existing.length + ' ' + String(type) + ' listeners ' +\\n 'added. Use emitter.setMaxListeners() to ' +\\n 'increase limit');\\n w.name = 'MaxListenersExceededWarning';\\n w.emitter = target;\\n w.type = type;\\n w.count = existing.length;\\n ProcessEmitWarning(w);\\n }\\n }\\n\\n return target;\\n}\\n\\nEventEmitter.prototype.addListener = function addListener(type, listener) {\\n return _addListener(this, type, listener, false);\\n};\\n\\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\\n\\nEventEmitter.prototype.prependListener =\\n function prependListener(type, listener) {\\n return _addListener(this, type, listener, true);\\n };\\n\\nfunction onceWrapper() {\\n if (!this.fired) {\\n this.target.removeListener(this.type, this.wrapFn);\\n this.fired = true;\\n if (arguments.length === 0)\\n return this.listener.call(this.target);\\n return this.listener.apply(this.target, arguments);\\n }\\n}\\n\\nfunction _onceWrap(target, type, listener) {\\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\\n var wrapped = onceWrapper.bind(state);\\n wrapped.listener = listener;\\n state.wrapFn = wrapped;\\n return wrapped;\\n}\\n\\nEventEmitter.prototype.once = function once(type, listener) {\\n checkListener(listener);\\n this.on(type, _onceWrap(this, type, listener));\\n return this;\\n};\\n\\nEventEmitter.prototype.prependOnceListener =\\n function prependOnceListener(type, listener) {\\n checkListener(listener);\\n this.prependListener(type, _onceWrap(this, type, listener));\\n return this;\\n };\\n\\n// Emits a 'removeListener' event if and only if the listener was removed.\\nEventEmitter.prototype.removeListener =\\n function removeListener(type, listener) {\\n var list, events, position, i, originalListener;\\n\\n checkListener(listener);\\n\\n events = this._events;\\n if (events === undefined)\\n return this;\\n\\n list = events[type];\\n if (list === undefined)\\n return this;\\n\\n if (list === listener || list.listener === listener) {\\n if (--this._eventsCount === 0)\\n this._events = Object.create(null);\\n else {\\n delete events[type];\\n if (events.removeListener)\\n this.emit('removeListener', type, list.listener || listener);\\n }\\n } else if (typeof list !== 'function') {\\n position = -1;\\n\\n for (i = list.length - 1; i >= 0; i--) {\\n if (list[i] === listener || list[i].listener === listener) {\\n originalListener = list[i].listener;\\n position = i;\\n break;\\n }\\n }\\n\\n if (position < 0)\\n return this;\\n\\n if (position === 0)\\n list.shift();\\n else {\\n spliceOne(list, position);\\n }\\n\\n if (list.length === 1)\\n events[type] = list[0];\\n\\n if (events.removeListener !== undefined)\\n this.emit('removeListener', type, originalListener || listener);\\n }\\n\\n return this;\\n };\\n\\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\\n\\nEventEmitter.prototype.removeAllListeners =\\n function removeAllListeners(type) {\\n var listeners, events, i;\\n\\n events = this._events;\\n if (events === undefined)\\n return this;\\n\\n // not listening for removeListener, no need to emit\\n if (events.removeListener === undefined) {\\n if (arguments.length === 0) {\\n this._events = Object.create(null);\\n this._eventsCount = 0;\\n } else if (events[type] !== undefined) {\\n if (--this._eventsCount === 0)\\n this._events = Object.create(null);\\n else\\n delete events[type];\\n }\\n return this;\\n }\\n\\n // emit removeListener for all listeners on all events\\n if (arguments.length === 0) {\\n var keys = Object.keys(events);\\n var key;\\n for (i = 0; i < keys.length; ++i) {\\n key = keys[i];\\n if (key === 'removeListener') continue;\\n this.removeAllListeners(key);\\n }\\n this.removeAllListeners('removeListener');\\n this._events = Object.create(null);\\n this._eventsCount = 0;\\n return this;\\n }\\n\\n listeners = events[type];\\n\\n if (typeof listeners === 'function') {\\n this.removeListener(type, listeners);\\n } else if (listeners !== undefined) {\\n // LIFO order\\n for (i = listeners.length - 1; i >= 0; i--) {\\n this.removeListener(type, listeners[i]);\\n }\\n }\\n\\n return this;\\n };\\n\\nfunction _listeners(target, type, unwrap) {\\n var events = target._events;\\n\\n if (events === undefined)\\n return [];\\n\\n var evlistener = events[type];\\n if (evlistener === undefined)\\n return [];\\n\\n if (typeof evlistener === 'function')\\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\\n\\n return unwrap ?\\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\\n}\\n\\nEventEmitter.prototype.listeners = function listeners(type) {\\n return _listeners(this, type, true);\\n};\\n\\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\\n return _listeners(this, type, false);\\n};\\n\\nEventEmitter.listenerCount = function(emitter, type) {\\n if (typeof emitter.listenerCount === 'function') {\\n return emitter.listenerCount(type);\\n } else {\\n return listenerCount.call(emitter, type);\\n }\\n};\\n\\nEventEmitter.prototype.listenerCount = listenerCount;\\nfunction listenerCount(type) {\\n var events = this._events;\\n\\n if (events !== undefined) {\\n var evlistener = events[type];\\n\\n if (typeof evlistener === 'function') {\\n return 1;\\n } else if (evlistener !== undefined) {\\n return evlistener.length;\\n }\\n }\\n\\n return 0;\\n}\\n\\nEventEmitter.prototype.eventNames = function eventNames() {\\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\\n};\\n\\nfunction arrayClone(arr, n) {\\n var copy = new Array(n);\\n for (var i = 0; i < n; ++i)\\n copy[i] = arr[i];\\n return copy;\\n}\\n\\nfunction spliceOne(list, index) {\\n for (; index + 1 < list.length; index++)\\n list[index] = list[index + 1];\\n list.pop();\\n}\\n\\nfunction unwrapListeners(arr) {\\n var ret = new Array(arr.length);\\n for (var i = 0; i < ret.length; ++i) {\\n ret[i] = arr[i].listener || arr[i];\\n }\\n return ret;\\n}\\n\\nfunction once(emitter, name) {\\n return new Promise(function (resolve, reject) {\\n function errorListener(err) {\\n emitter.removeListener(name, resolver);\\n reject(err);\\n }\\n\\n function resolver() {\\n if (typeof emitter.removeListener === 'function') {\\n emitter.removeListener('error', errorListener);\\n }\\n resolve([].slice.call(arguments));\\n };\\n\\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\\n if (name !== 'error') {\\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\\n }\\n });\\n}\\n\\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\\n if (typeof emitter.on === 'function') {\\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\\n }\\n}\\n\\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\\n if (typeof emitter.on === 'function') {\\n if (flags.once) {\\n emitter.once(name, listener);\\n } else {\\n emitter.on(name, listener);\\n }\\n } else if (typeof emitter.addEventListener === 'function') {\\n // EventTarget does not have `error` event semantics like Node\\n // EventEmitters, we do not listen for `error` events here.\\n emitter.addEventListener(name, function wrapListener(arg) {\\n // IE does not have builtin `{ once: true }` support so we\\n // have to do it manually.\\n if (flags.once) {\\n emitter.removeEventListener(name, wrapListener);\\n }\\n listener(arg);\\n });\\n } else {\\n throw new TypeError('The \\\"emitter\\\" argument must be of type EventEmitter. Received type ' + typeof emitter);\\n }\\n}\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/node-libs-browser/node_modules/timers-browserify/main.js\\\":\\n/*!*******************************************************************************!*\\\\\\n !*** ./node_modules/node-libs-browser/node_modules/timers-browserify/main.js ***!\\n \\\\*******************************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== \\\"undefined\\\" && global) ||\\n (typeof self !== \\\"undefined\\\" && self) ||\\n window;\\nvar apply = Function.prototype.apply;\\n\\n// DOM APIs, for completeness\\n\\nexports.setTimeout = function() {\\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\\n};\\nexports.setInterval = function() {\\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\\n};\\nexports.clearTimeout =\\nexports.clearInterval = function(timeout) {\\n if (timeout) {\\n timeout.close();\\n }\\n};\\n\\nfunction Timeout(id, clearFn) {\\n this._id = id;\\n this._clearFn = clearFn;\\n}\\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\\nTimeout.prototype.close = function() {\\n this._clearFn.call(scope, this._id);\\n};\\n\\n// Does not start the time, just sets up the members needed.\\nexports.enroll = function(item, msecs) {\\n clearTimeout(item._idleTimeoutId);\\n item._idleTimeout = msecs;\\n};\\n\\nexports.unenroll = function(item) {\\n clearTimeout(item._idleTimeoutId);\\n item._idleTimeout = -1;\\n};\\n\\nexports._unrefActive = exports.active = function(item) {\\n clearTimeout(item._idleTimeoutId);\\n\\n var msecs = item._idleTimeout;\\n if (msecs >= 0) {\\n item._idleTimeoutId = setTimeout(function onTimeout() {\\n if (item._onTimeout)\\n item._onTimeout();\\n }, msecs);\\n }\\n};\\n\\n// setimmediate attaches itself to the global object\\n__webpack_require__(/*! setimmediate */ \\\"./node_modules/setimmediate/setImmediate.js\\\");\\n// On some exotic environments, it's not clear which object `setimmediate` was\\n// able to install onto. Search each possibility in the same order as the\\n// `setimmediate` library.\\nexports.setImmediate = (typeof self !== \\\"undefined\\\" && self.setImmediate) ||\\n (typeof global !== \\\"undefined\\\" && global.setImmediate) ||\\n (this && this.setImmediate);\\nexports.clearImmediate = (typeof self !== \\\"undefined\\\" && self.clearImmediate) ||\\n (typeof global !== \\\"undefined\\\" && global.clearImmediate) ||\\n (this && this.clearImmediate);\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/path-browserify/index.js\\\":\\n/*!***********************************************!*\\\\\\n !*** ./node_modules/path-browserify/index.js ***!\\n \\\\***********************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* WEBPACK VAR INJECTION */(function(process) {// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\\n// backported and transplited with Babel, with backwards-compat fixes\\n\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\n// resolves . and .. elements in a path array with directory names there\\n// must be no slashes, empty elements, or device names (c:\\\\) in the array\\n// (so also no leading and trailing slashes - it does not distinguish\\n// relative and absolute paths)\\nfunction normalizeArray(parts, allowAboveRoot) {\\n // if the path tries to go above the root, `up` ends up > 0\\n var up = 0;\\n for (var i = parts.length - 1; i >= 0; i--) {\\n var last = parts[i];\\n if (last === '.') {\\n parts.splice(i, 1);\\n } else if (last === '..') {\\n parts.splice(i, 1);\\n up++;\\n } else if (up) {\\n parts.splice(i, 1);\\n up--;\\n }\\n }\\n\\n // if the path is allowed to go above the root, restore leading ..s\\n if (allowAboveRoot) {\\n for (; up--; up) {\\n parts.unshift('..');\\n }\\n }\\n\\n return parts;\\n}\\n\\n// path.resolve([from ...], to)\\n// posix version\\nexports.resolve = function() {\\n var resolvedPath = '',\\n resolvedAbsolute = false;\\n\\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\\n var path = (i >= 0) ? arguments[i] : process.cwd();\\n\\n // Skip empty and invalid entries\\n if (typeof path !== 'string') {\\n throw new TypeError('Arguments to path.resolve must be strings');\\n } else if (!path) {\\n continue;\\n }\\n\\n resolvedPath = path + '/' + resolvedPath;\\n resolvedAbsolute = path.charAt(0) === '/';\\n }\\n\\n // At this point the path should be resolved to a full absolute path, but\\n // handle relative paths to be safe (might happen when process.cwd() fails)\\n\\n // Normalize the path\\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\\n return !!p;\\n }), !resolvedAbsolute).join('/');\\n\\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\\n};\\n\\n// path.normalize(path)\\n// posix version\\nexports.normalize = function(path) {\\n var isAbsolute = exports.isAbsolute(path),\\n trailingSlash = substr(path, -1) === '/';\\n\\n // Normalize the path\\n path = normalizeArray(filter(path.split('/'), function(p) {\\n return !!p;\\n }), !isAbsolute).join('/');\\n\\n if (!path && !isAbsolute) {\\n path = '.';\\n }\\n if (path && trailingSlash) {\\n path += '/';\\n }\\n\\n return (isAbsolute ? '/' : '') + path;\\n};\\n\\n// posix version\\nexports.isAbsolute = function(path) {\\n return path.charAt(0) === '/';\\n};\\n\\n// posix version\\nexports.join = function() {\\n var paths = Array.prototype.slice.call(arguments, 0);\\n return exports.normalize(filter(paths, function(p, index) {\\n if (typeof p !== 'string') {\\n throw new TypeError('Arguments to path.join must be strings');\\n }\\n return p;\\n }).join('/'));\\n};\\n\\n\\n// path.relative(from, to)\\n// posix version\\nexports.relative = function(from, to) {\\n from = exports.resolve(from).substr(1);\\n to = exports.resolve(to).substr(1);\\n\\n function trim(arr) {\\n var start = 0;\\n for (; start < arr.length; start++) {\\n if (arr[start] !== '') break;\\n }\\n\\n var end = arr.length - 1;\\n for (; end >= 0; end--) {\\n if (arr[end] !== '') break;\\n }\\n\\n if (start > end) return [];\\n return arr.slice(start, end - start + 1);\\n }\\n\\n var fromParts = trim(from.split('/'));\\n var toParts = trim(to.split('/'));\\n\\n var length = Math.min(fromParts.length, toParts.length);\\n var samePartsLength = length;\\n for (var i = 0; i < length; i++) {\\n if (fromParts[i] !== toParts[i]) {\\n samePartsLength = i;\\n break;\\n }\\n }\\n\\n var outputParts = [];\\n for (var i = samePartsLength; i < fromParts.length; i++) {\\n outputParts.push('..');\\n }\\n\\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\\n\\n return outputParts.join('/');\\n};\\n\\nexports.sep = '/';\\nexports.delimiter = ':';\\n\\nexports.dirname = function (path) {\\n if (typeof path !== 'string') path = path + '';\\n if (path.length === 0) return '.';\\n var code = path.charCodeAt(0);\\n var hasRoot = code === 47 /*/*/;\\n var end = -1;\\n var matchedSlash = true;\\n for (var i = path.length - 1; i >= 1; --i) {\\n code = path.charCodeAt(i);\\n if (code === 47 /*/*/) {\\n if (!matchedSlash) {\\n end = i;\\n break;\\n }\\n } else {\\n // We saw the first non-path separator\\n matchedSlash = false;\\n }\\n }\\n\\n if (end === -1) return hasRoot ? '/' : '.';\\n if (hasRoot && end === 1) {\\n // return '//';\\n // Backwards-compat fix:\\n return '/';\\n }\\n return path.slice(0, end);\\n};\\n\\nfunction basename(path) {\\n if (typeof path !== 'string') path = path + '';\\n\\n var start = 0;\\n var end = -1;\\n var matchedSlash = true;\\n var i;\\n\\n for (i = path.length - 1; i >= 0; --i) {\\n if (path.charCodeAt(i) === 47 /*/*/) {\\n // If we reached a path separator that was not part of a set of path\\n // separators at the end of the string, stop now\\n if (!matchedSlash) {\\n start = i + 1;\\n break;\\n }\\n } else if (end === -1) {\\n // We saw the first non-path separator, mark this as the end of our\\n // path component\\n matchedSlash = false;\\n end = i + 1;\\n }\\n }\\n\\n if (end === -1) return '';\\n return path.slice(start, end);\\n}\\n\\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\\n// in new Node.js versions, so only basename() above is backported here\\nexports.basename = function (path, ext) {\\n var f = basename(path);\\n if (ext && f.substr(-1 * ext.length) === ext) {\\n f = f.substr(0, f.length - ext.length);\\n }\\n return f;\\n};\\n\\nexports.extname = function (path) {\\n if (typeof path !== 'string') path = path + '';\\n var startDot = -1;\\n var startPart = 0;\\n var end = -1;\\n var matchedSlash = true;\\n // Track the state of characters (if any) we see before our first dot and\\n // after any path separator we find\\n var preDotState = 0;\\n for (var i = path.length - 1; i >= 0; --i) {\\n var code = path.charCodeAt(i);\\n if (code === 47 /*/*/) {\\n // If we reached a path separator that was not part of a set of path\\n // separators at the end of the string, stop now\\n if (!matchedSlash) {\\n startPart = i + 1;\\n break;\\n }\\n continue;\\n }\\n if (end === -1) {\\n // We saw the first non-path separator, mark this as the end of our\\n // extension\\n matchedSlash = false;\\n end = i + 1;\\n }\\n if (code === 46 /*.*/) {\\n // If this is our first dot, mark it as the start of our extension\\n if (startDot === -1)\\n startDot = i;\\n else if (preDotState !== 1)\\n preDotState = 1;\\n } else if (startDot !== -1) {\\n // We saw a non-dot and non-path separator before our dot, so we should\\n // have a good chance at having a non-empty extension\\n preDotState = -1;\\n }\\n }\\n\\n if (startDot === -1 || end === -1 ||\\n // We saw a non-dot character immediately before the dot\\n preDotState === 0 ||\\n // The (right-most) trimmed path component is exactly '..'\\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\\n return '';\\n }\\n return path.slice(startDot, end);\\n};\\n\\nfunction filter (xs, f) {\\n if (xs.filter) return xs.filter(f);\\n var res = [];\\n for (var i = 0; i < xs.length; i++) {\\n if (f(xs[i], i, xs)) res.push(xs[i]);\\n }\\n return res;\\n}\\n\\n// String.prototype.substr - negative index don't work in IE8\\nvar substr = 'ab'.substr(-1) === 'b'\\n ? function (str, start, len) { return str.substr(start, len) }\\n : function (str, start, len) {\\n if (start < 0) start = str.length + start;\\n return str.substr(start, len);\\n }\\n;\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \\\"./node_modules/process/browser.js\\\")))\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/process-nextick-args/index.js\\\":\\n/*!****************************************************!*\\\\\\n !*** ./node_modules/process-nextick-args/index.js ***!\\n \\\\****************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n/* WEBPACK VAR INJECTION */(function(process) {\\n\\nif (!process.version ||\\n process.version.indexOf('v0.') === 0 ||\\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\\n module.exports = { nextTick: nextTick };\\n} else {\\n module.exports = process\\n}\\n\\nfunction nextTick(fn, arg1, arg2, arg3) {\\n if (typeof fn !== 'function') {\\n throw new TypeError('\\\"callback\\\" argument must be a function');\\n }\\n var len = arguments.length;\\n var args, i;\\n switch (len) {\\n case 0:\\n case 1:\\n return process.nextTick(fn);\\n case 2:\\n return process.nextTick(function afterTickOne() {\\n fn.call(null, arg1);\\n });\\n case 3:\\n return process.nextTick(function afterTickTwo() {\\n fn.call(null, arg1, arg2);\\n });\\n case 4:\\n return process.nextTick(function afterTickThree() {\\n fn.call(null, arg1, arg2, arg3);\\n });\\n default:\\n args = new Array(len - 1);\\n i = 0;\\n while (i < args.length) {\\n args[i++] = arguments[i];\\n }\\n return process.nextTick(function afterTick() {\\n fn.apply(null, args);\\n });\\n }\\n}\\n\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \\\"./node_modules/process/browser.js\\\")))\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/process/browser.js\\\":\\n/*!*****************************************!*\\\\\\n !*** ./node_modules/process/browser.js ***!\\n \\\\*****************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports) {\\n\\n// shim for using process in browser\\nvar process = module.exports = {};\\n\\n// cached from whatever global is present so that test runners that stub it\\n// don't break things. But we need to wrap it in a try catch in case it is\\n// wrapped in strict mode code which doesn't define any globals. It's inside a\\n// function because try/catches deoptimize in certain engines.\\n\\nvar cachedSetTimeout;\\nvar cachedClearTimeout;\\n\\nfunction defaultSetTimout() {\\n throw new Error('setTimeout has not been defined');\\n}\\nfunction defaultClearTimeout () {\\n throw new Error('clearTimeout has not been defined');\\n}\\n(function () {\\n try {\\n if (typeof setTimeout === 'function') {\\n cachedSetTimeout = setTimeout;\\n } else {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n } catch (e) {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n try {\\n if (typeof clearTimeout === 'function') {\\n cachedClearTimeout = clearTimeout;\\n } else {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n } catch (e) {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n} ())\\nfunction runTimeout(fun) {\\n if (cachedSetTimeout === setTimeout) {\\n //normal enviroments in sane situations\\n return setTimeout(fun, 0);\\n }\\n // if setTimeout wasn't available but was latter defined\\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\\n cachedSetTimeout = setTimeout;\\n return setTimeout(fun, 0);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedSetTimeout(fun, 0);\\n } catch(e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedSetTimeout.call(null, fun, 0);\\n } catch(e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\\n return cachedSetTimeout.call(this, fun, 0);\\n }\\n }\\n\\n\\n}\\nfunction runClearTimeout(marker) {\\n if (cachedClearTimeout === clearTimeout) {\\n //normal enviroments in sane situations\\n return clearTimeout(marker);\\n }\\n // if clearTimeout wasn't available but was latter defined\\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\\n cachedClearTimeout = clearTimeout;\\n return clearTimeout(marker);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedClearTimeout(marker);\\n } catch (e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedClearTimeout.call(null, marker);\\n } catch (e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\\n return cachedClearTimeout.call(this, marker);\\n }\\n }\\n\\n\\n\\n}\\nvar queue = [];\\nvar draining = false;\\nvar currentQueue;\\nvar queueIndex = -1;\\n\\nfunction cleanUpNextTick() {\\n if (!draining || !currentQueue) {\\n return;\\n }\\n draining = false;\\n if (currentQueue.length) {\\n queue = currentQueue.concat(queue);\\n } else {\\n queueIndex = -1;\\n }\\n if (queue.length) {\\n drainQueue();\\n }\\n}\\n\\nfunction drainQueue() {\\n if (draining) {\\n return;\\n }\\n var timeout = runTimeout(cleanUpNextTick);\\n draining = true;\\n\\n var len = queue.length;\\n while(len) {\\n currentQueue = queue;\\n queue = [];\\n while (++queueIndex < len) {\\n if (currentQueue) {\\n currentQueue[queueIndex].run();\\n }\\n }\\n queueIndex = -1;\\n len = queue.length;\\n }\\n currentQueue = null;\\n draining = false;\\n runClearTimeout(timeout);\\n}\\n\\nprocess.nextTick = function (fun) {\\n var args = new Array(arguments.length - 1);\\n if (arguments.length > 1) {\\n for (var i = 1; i < arguments.length; i++) {\\n args[i - 1] = arguments[i];\\n }\\n }\\n queue.push(new Item(fun, args));\\n if (queue.length === 1 && !draining) {\\n runTimeout(drainQueue);\\n }\\n};\\n\\n// v8 likes predictible objects\\nfunction Item(fun, array) {\\n this.fun = fun;\\n this.array = array;\\n}\\nItem.prototype.run = function () {\\n this.fun.apply(null, this.array);\\n};\\nprocess.title = 'browser';\\nprocess.browser = true;\\nprocess.env = {};\\nprocess.argv = [];\\nprocess.version = ''; // empty string to avoid regexp issues\\nprocess.versions = {};\\n\\nfunction noop() {}\\n\\nprocess.on = noop;\\nprocess.addListener = noop;\\nprocess.once = noop;\\nprocess.off = noop;\\nprocess.removeListener = noop;\\nprocess.removeAllListeners = noop;\\nprocess.emit = noop;\\nprocess.prependListener = noop;\\nprocess.prependOnceListener = noop;\\n\\nprocess.listeners = function (name) { return [] }\\n\\nprocess.binding = function (name) {\\n throw new Error('process.binding is not supported');\\n};\\n\\nprocess.cwd = function () { return '/' };\\nprocess.chdir = function (dir) {\\n throw new Error('process.chdir is not supported');\\n};\\nprocess.umask = function() { return 0; };\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/duplex-browser.js\\\":\\n/*!********************************************************!*\\\\\\n !*** ./node_modules/readable-stream/duplex-browser.js ***!\\n \\\\********************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = __webpack_require__(/*! ./lib/_stream_duplex.js */ \\\"./node_modules/readable-stream/lib/_stream_duplex.js\\\");\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/lib/_stream_duplex.js\\\":\\n/*!************************************************************!*\\\\\\n !*** ./node_modules/readable-stream/lib/_stream_duplex.js ***!\\n \\\\************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\n// a duplex stream is just a stream that is both readable and writable.\\n// Since JS doesn't have multiple prototypal inheritance, this class\\n// prototypally inherits from Readable, and then parasitically from\\n// Writable.\\n\\n\\n\\n/**/\\n\\nvar pna = __webpack_require__(/*! process-nextick-args */ \\\"./node_modules/process-nextick-args/index.js\\\");\\n/**/\\n\\n/**/\\nvar objectKeys = Object.keys || function (obj) {\\n var keys = [];\\n for (var key in obj) {\\n keys.push(key);\\n }return keys;\\n};\\n/**/\\n\\nmodule.exports = Duplex;\\n\\n/**/\\nvar util = __webpack_require__(/*! core-util-is */ \\\"./node_modules/core-util-is/lib/util.js\\\");\\nutil.inherits = __webpack_require__(/*! inherits */ \\\"./node_modules/inherits/inherits_browser.js\\\");\\n/**/\\n\\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \\\"./node_modules/readable-stream/lib/_stream_readable.js\\\");\\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \\\"./node_modules/readable-stream/lib/_stream_writable.js\\\");\\n\\nutil.inherits(Duplex, Readable);\\n\\n{\\n // avoid scope creep, the keys array can then be collected\\n var keys = objectKeys(Writable.prototype);\\n for (var v = 0; v < keys.length; v++) {\\n var method = keys[v];\\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\\n }\\n}\\n\\nfunction Duplex(options) {\\n if (!(this instanceof Duplex)) return new Duplex(options);\\n\\n Readable.call(this, options);\\n Writable.call(this, options);\\n\\n if (options && options.readable === false) this.readable = false;\\n\\n if (options && options.writable === false) this.writable = false;\\n\\n this.allowHalfOpen = true;\\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\\n\\n this.once('end', onend);\\n}\\n\\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\\n // making it explicit this property is not enumerable\\n // because otherwise some prototype manipulation in\\n // userland will fail\\n enumerable: false,\\n get: function () {\\n return this._writableState.highWaterMark;\\n }\\n});\\n\\n// the no-half-open enforcer\\nfunction onend() {\\n // if we allow half-open state, or if the writable side ended,\\n // then we're ok.\\n if (this.allowHalfOpen || this._writableState.ended) return;\\n\\n // no more data can be written.\\n // But allow more writes to happen in this tick.\\n pna.nextTick(onEndNT, this);\\n}\\n\\nfunction onEndNT(self) {\\n self.end();\\n}\\n\\nObject.defineProperty(Duplex.prototype, 'destroyed', {\\n get: function () {\\n if (this._readableState === undefined || this._writableState === undefined) {\\n return false;\\n }\\n return this._readableState.destroyed && this._writableState.destroyed;\\n },\\n set: function (value) {\\n // we ignore the value if the stream\\n // has not been initialized yet\\n if (this._readableState === undefined || this._writableState === undefined) {\\n return;\\n }\\n\\n // backward compatibility, the user is explicitly\\n // managing destroyed\\n this._readableState.destroyed = value;\\n this._writableState.destroyed = value;\\n }\\n});\\n\\nDuplex.prototype._destroy = function (err, cb) {\\n this.push(null);\\n this.end();\\n\\n pna.nextTick(cb, err);\\n};\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/lib/_stream_passthrough.js\\\":\\n/*!*****************************************************************!*\\\\\\n !*** ./node_modules/readable-stream/lib/_stream_passthrough.js ***!\\n \\\\*****************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\n// a passthrough stream.\\n// basically just the most minimal sort of Transform stream.\\n// Every written chunk gets output as-is.\\n\\n\\n\\nmodule.exports = PassThrough;\\n\\nvar Transform = __webpack_require__(/*! ./_stream_transform */ \\\"./node_modules/readable-stream/lib/_stream_transform.js\\\");\\n\\n/**/\\nvar util = __webpack_require__(/*! core-util-is */ \\\"./node_modules/core-util-is/lib/util.js\\\");\\nutil.inherits = __webpack_require__(/*! inherits */ \\\"./node_modules/inherits/inherits_browser.js\\\");\\n/**/\\n\\nutil.inherits(PassThrough, Transform);\\n\\nfunction PassThrough(options) {\\n if (!(this instanceof PassThrough)) return new PassThrough(options);\\n\\n Transform.call(this, options);\\n}\\n\\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\\n cb(null, chunk);\\n};\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/lib/_stream_readable.js\\\":\\n/*!**************************************************************!*\\\\\\n !*** ./node_modules/readable-stream/lib/_stream_readable.js ***!\\n \\\\**************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\n\\n\\n/**/\\n\\nvar pna = __webpack_require__(/*! process-nextick-args */ \\\"./node_modules/process-nextick-args/index.js\\\");\\n/**/\\n\\nmodule.exports = Readable;\\n\\n/**/\\nvar isArray = __webpack_require__(/*! isarray */ \\\"./node_modules/isarray/index.js\\\");\\n/**/\\n\\n/**/\\nvar Duplex;\\n/**/\\n\\nReadable.ReadableState = ReadableState;\\n\\n/**/\\nvar EE = __webpack_require__(/*! events */ \\\"./node_modules/node-libs-browser/node_modules/events/events.js\\\").EventEmitter;\\n\\nvar EElistenerCount = function (emitter, type) {\\n return emitter.listeners(type).length;\\n};\\n/**/\\n\\n/**/\\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \\\"./node_modules/readable-stream/lib/internal/streams/stream-browser.js\\\");\\n/**/\\n\\n/**/\\n\\nvar Buffer = __webpack_require__(/*! safe-buffer */ \\\"./node_modules/safe-buffer/index.js\\\").Buffer;\\nvar OurUint8Array = global.Uint8Array || function () {};\\nfunction _uint8ArrayToBuffer(chunk) {\\n return Buffer.from(chunk);\\n}\\nfunction _isUint8Array(obj) {\\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\\n}\\n\\n/**/\\n\\n/**/\\nvar util = __webpack_require__(/*! core-util-is */ \\\"./node_modules/core-util-is/lib/util.js\\\");\\nutil.inherits = __webpack_require__(/*! inherits */ \\\"./node_modules/inherits/inherits_browser.js\\\");\\n/**/\\n\\n/**/\\nvar debugUtil = __webpack_require__(/*! util */ 0);\\nvar debug = void 0;\\nif (debugUtil && debugUtil.debuglog) {\\n debug = debugUtil.debuglog('stream');\\n} else {\\n debug = function () {};\\n}\\n/**/\\n\\nvar BufferList = __webpack_require__(/*! ./internal/streams/BufferList */ \\\"./node_modules/readable-stream/lib/internal/streams/BufferList.js\\\");\\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \\\"./node_modules/readable-stream/lib/internal/streams/destroy.js\\\");\\nvar StringDecoder;\\n\\nutil.inherits(Readable, Stream);\\n\\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\\n\\nfunction prependListener(emitter, event, fn) {\\n // Sadly this is not cacheable as some libraries bundle their own\\n // event emitter implementation with them.\\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\\n\\n // This is a hack to make sure that our error handler is attached before any\\n // userland ones. NEVER DO THIS. This is here only because this code needs\\n // to continue to work with older versions of Node.js that do not include\\n // the prependListener() method. The goal is to eventually remove this hack.\\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\\n}\\n\\nfunction ReadableState(options, stream) {\\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \\\"./node_modules/readable-stream/lib/_stream_duplex.js\\\");\\n\\n options = options || {};\\n\\n // Duplex streams are both readable and writable, but share\\n // the same options object.\\n // However, some cases require setting options to different\\n // values for the readable and the writable sides of the duplex stream.\\n // These options can be provided separately as readableXXX and writableXXX.\\n var isDuplex = stream instanceof Duplex;\\n\\n // object stream flag. Used to make read(n) ignore n and to\\n // make all the buffer merging and length checks go away\\n this.objectMode = !!options.objectMode;\\n\\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\\n\\n // the point at which it stops calling _read() to fill the buffer\\n // Note: 0 is a valid value, means \\\"don't call _read preemptively ever\\\"\\n var hwm = options.highWaterMark;\\n var readableHwm = options.readableHighWaterMark;\\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\\n\\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\\n\\n // cast to ints.\\n this.highWaterMark = Math.floor(this.highWaterMark);\\n\\n // A linked list is used to store data chunks instead of an array because the\\n // linked list can remove elements from the beginning faster than\\n // array.shift()\\n this.buffer = new BufferList();\\n this.length = 0;\\n this.pipes = null;\\n this.pipesCount = 0;\\n this.flowing = null;\\n this.ended = false;\\n this.endEmitted = false;\\n this.reading = false;\\n\\n // a flag to be able to tell if the event 'readable'/'data' is emitted\\n // immediately, or on a later tick. We set this to true at first, because\\n // any actions that shouldn't happen until \\\"later\\\" should generally also\\n // not happen before the first read call.\\n this.sync = true;\\n\\n // whenever we return null, then we set a flag to say\\n // that we're awaiting a 'readable' event emission.\\n this.needReadable = false;\\n this.emittedReadable = false;\\n this.readableListening = false;\\n this.resumeScheduled = false;\\n\\n // has it been destroyed\\n this.destroyed = false;\\n\\n // Crypto is kind of old and crusty. Historically, its default string\\n // encoding is 'binary' so we have to make this configurable.\\n // Everything else in the universe uses 'utf8', though.\\n this.defaultEncoding = options.defaultEncoding || 'utf8';\\n\\n // the number of writers that are awaiting a drain event in .pipe()s\\n this.awaitDrain = 0;\\n\\n // if true, a maybeReadMore has been scheduled\\n this.readingMore = false;\\n\\n this.decoder = null;\\n this.encoding = null;\\n if (options.encoding) {\\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \\\"./node_modules/string_decoder/lib/string_decoder.js\\\").StringDecoder;\\n this.decoder = new StringDecoder(options.encoding);\\n this.encoding = options.encoding;\\n }\\n}\\n\\nfunction Readable(options) {\\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \\\"./node_modules/readable-stream/lib/_stream_duplex.js\\\");\\n\\n if (!(this instanceof Readable)) return new Readable(options);\\n\\n this._readableState = new ReadableState(options, this);\\n\\n // legacy\\n this.readable = true;\\n\\n if (options) {\\n if (typeof options.read === 'function') this._read = options.read;\\n\\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\\n }\\n\\n Stream.call(this);\\n}\\n\\nObject.defineProperty(Readable.prototype, 'destroyed', {\\n get: function () {\\n if (this._readableState === undefined) {\\n return false;\\n }\\n return this._readableState.destroyed;\\n },\\n set: function (value) {\\n // we ignore the value if the stream\\n // has not been initialized yet\\n if (!this._readableState) {\\n return;\\n }\\n\\n // backward compatibility, the user is explicitly\\n // managing destroyed\\n this._readableState.destroyed = value;\\n }\\n});\\n\\nReadable.prototype.destroy = destroyImpl.destroy;\\nReadable.prototype._undestroy = destroyImpl.undestroy;\\nReadable.prototype._destroy = function (err, cb) {\\n this.push(null);\\n cb(err);\\n};\\n\\n// Manually shove something into the read() buffer.\\n// This returns true if the highWaterMark has not been hit yet,\\n// similar to how Writable.write() returns true if you should\\n// write() some more.\\nReadable.prototype.push = function (chunk, encoding) {\\n var state = this._readableState;\\n var skipChunkCheck;\\n\\n if (!state.objectMode) {\\n if (typeof chunk === 'string') {\\n encoding = encoding || state.defaultEncoding;\\n if (encoding !== state.encoding) {\\n chunk = Buffer.from(chunk, encoding);\\n encoding = '';\\n }\\n skipChunkCheck = true;\\n }\\n } else {\\n skipChunkCheck = true;\\n }\\n\\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\\n};\\n\\n// Unshift should *always* be something directly out of read()\\nReadable.prototype.unshift = function (chunk) {\\n return readableAddChunk(this, chunk, null, true, false);\\n};\\n\\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\\n var state = stream._readableState;\\n if (chunk === null) {\\n state.reading = false;\\n onEofChunk(stream, state);\\n } else {\\n var er;\\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\\n if (er) {\\n stream.emit('error', er);\\n } else if (state.objectMode || chunk && chunk.length > 0) {\\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\\n chunk = _uint8ArrayToBuffer(chunk);\\n }\\n\\n if (addToFront) {\\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\\n } else if (state.ended) {\\n stream.emit('error', new Error('stream.push() after EOF'));\\n } else {\\n state.reading = false;\\n if (state.decoder && !encoding) {\\n chunk = state.decoder.write(chunk);\\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\\n } else {\\n addChunk(stream, state, chunk, false);\\n }\\n }\\n } else if (!addToFront) {\\n state.reading = false;\\n }\\n }\\n\\n return needMoreData(state);\\n}\\n\\nfunction addChunk(stream, state, chunk, addToFront) {\\n if (state.flowing && state.length === 0 && !state.sync) {\\n stream.emit('data', chunk);\\n stream.read(0);\\n } else {\\n // update the buffer info.\\n state.length += state.objectMode ? 1 : chunk.length;\\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\\n\\n if (state.needReadable) emitReadable(stream);\\n }\\n maybeReadMore(stream, state);\\n}\\n\\nfunction chunkInvalid(state, chunk) {\\n var er;\\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\\n er = new TypeError('Invalid non-string/buffer chunk');\\n }\\n return er;\\n}\\n\\n// if it's past the high water mark, we can push in some more.\\n// Also, if we have no data yet, we can stand some\\n// more bytes. This is to work around cases where hwm=0,\\n// such as the repl. Also, if the push() triggered a\\n// readable event, and the user called read(largeNumber) such that\\n// needReadable was set, then we ought to push more, so that another\\n// 'readable' event will be triggered.\\nfunction needMoreData(state) {\\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\\n}\\n\\nReadable.prototype.isPaused = function () {\\n return this._readableState.flowing === false;\\n};\\n\\n// backwards compatibility.\\nReadable.prototype.setEncoding = function (enc) {\\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \\\"./node_modules/string_decoder/lib/string_decoder.js\\\").StringDecoder;\\n this._readableState.decoder = new StringDecoder(enc);\\n this._readableState.encoding = enc;\\n return this;\\n};\\n\\n// Don't raise the hwm > 8MB\\nvar MAX_HWM = 0x800000;\\nfunction computeNewHighWaterMark(n) {\\n if (n >= MAX_HWM) {\\n n = MAX_HWM;\\n } else {\\n // Get the next highest power of 2 to prevent increasing hwm excessively in\\n // tiny amounts\\n n--;\\n n |= n >>> 1;\\n n |= n >>> 2;\\n n |= n >>> 4;\\n n |= n >>> 8;\\n n |= n >>> 16;\\n n++;\\n }\\n return n;\\n}\\n\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction howMuchToRead(n, state) {\\n if (n <= 0 || state.length === 0 && state.ended) return 0;\\n if (state.objectMode) return 1;\\n if (n !== n) {\\n // Only flow one buffer at a time\\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\\n }\\n // If we're asking for more than the current hwm, then raise the hwm.\\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\\n if (n <= state.length) return n;\\n // Don't have enough\\n if (!state.ended) {\\n state.needReadable = true;\\n return 0;\\n }\\n return state.length;\\n}\\n\\n// you can override either this method, or the async _read(n) below.\\nReadable.prototype.read = function (n) {\\n debug('read', n);\\n n = parseInt(n, 10);\\n var state = this._readableState;\\n var nOrig = n;\\n\\n if (n !== 0) state.emittedReadable = false;\\n\\n // if we're doing read(0) to trigger a readable event, but we\\n // already have a bunch of data in the buffer, then just trigger\\n // the 'readable' event and move on.\\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\\n debug('read: emitReadable', state.length, state.ended);\\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\\n return null;\\n }\\n\\n n = howMuchToRead(n, state);\\n\\n // if we've ended, and we're now clear, then finish it up.\\n if (n === 0 && state.ended) {\\n if (state.length === 0) endReadable(this);\\n return null;\\n }\\n\\n // All the actual chunk generation logic needs to be\\n // *below* the call to _read. The reason is that in certain\\n // synthetic stream cases, such as passthrough streams, _read\\n // may be a completely synchronous operation which may change\\n // the state of the read buffer, providing enough data when\\n // before there was *not* enough.\\n //\\n // So, the steps are:\\n // 1. Figure out what the state of things will be after we do\\n // a read from the buffer.\\n //\\n // 2. If that resulting state will trigger a _read, then call _read.\\n // Note that this may be asynchronous, or synchronous. Yes, it is\\n // deeply ugly to write APIs this way, but that still doesn't mean\\n // that the Readable class should behave improperly, as streams are\\n // designed to be sync/async agnostic.\\n // Take note if the _read call is sync or async (ie, if the read call\\n // has returned yet), so that we know whether or not it's safe to emit\\n // 'readable' etc.\\n //\\n // 3. Actually pull the requested chunks out of the buffer and return.\\n\\n // if we need a readable event, then we need to do some reading.\\n var doRead = state.needReadable;\\n debug('need readable', doRead);\\n\\n // if we currently have less than the highWaterMark, then also read some\\n if (state.length === 0 || state.length - n < state.highWaterMark) {\\n doRead = true;\\n debug('length less than watermark', doRead);\\n }\\n\\n // however, if we've ended, then there's no point, and if we're already\\n // reading, then it's unnecessary.\\n if (state.ended || state.reading) {\\n doRead = false;\\n debug('reading or ended', doRead);\\n } else if (doRead) {\\n debug('do read');\\n state.reading = true;\\n state.sync = true;\\n // if the length is currently zero, then we *need* a readable event.\\n if (state.length === 0) state.needReadable = true;\\n // call internal read method\\n this._read(state.highWaterMark);\\n state.sync = false;\\n // If _read pushed data synchronously, then `reading` will be false,\\n // and we need to re-evaluate how much data we can return to the user.\\n if (!state.reading) n = howMuchToRead(nOrig, state);\\n }\\n\\n var ret;\\n if (n > 0) ret = fromList(n, state);else ret = null;\\n\\n if (ret === null) {\\n state.needReadable = true;\\n n = 0;\\n } else {\\n state.length -= n;\\n }\\n\\n if (state.length === 0) {\\n // If we have nothing in the buffer, then we want to know\\n // as soon as we *do* get something into the buffer.\\n if (!state.ended) state.needReadable = true;\\n\\n // If we tried to read() past the EOF, then emit end on the next tick.\\n if (nOrig !== n && state.ended) endReadable(this);\\n }\\n\\n if (ret !== null) this.emit('data', ret);\\n\\n return ret;\\n};\\n\\nfunction onEofChunk(stream, state) {\\n if (state.ended) return;\\n if (state.decoder) {\\n var chunk = state.decoder.end();\\n if (chunk && chunk.length) {\\n state.buffer.push(chunk);\\n state.length += state.objectMode ? 1 : chunk.length;\\n }\\n }\\n state.ended = true;\\n\\n // emit 'readable' now to make sure it gets picked up.\\n emitReadable(stream);\\n}\\n\\n// Don't emit readable right away in sync mode, because this can trigger\\n// another read() call => stack overflow. This way, it might trigger\\n// a nextTick recursion warning, but that's not so bad.\\nfunction emitReadable(stream) {\\n var state = stream._readableState;\\n state.needReadable = false;\\n if (!state.emittedReadable) {\\n debug('emitReadable', state.flowing);\\n state.emittedReadable = true;\\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\\n }\\n}\\n\\nfunction emitReadable_(stream) {\\n debug('emit readable');\\n stream.emit('readable');\\n flow(stream);\\n}\\n\\n// at this point, the user has presumably seen the 'readable' event,\\n// and called read() to consume some data. that may have triggered\\n// in turn another _read(n) call, in which case reading = true if\\n// it's in progress.\\n// However, if we're not ended, or reading, and the length < hwm,\\n// then go ahead and try to read some more preemptively.\\nfunction maybeReadMore(stream, state) {\\n if (!state.readingMore) {\\n state.readingMore = true;\\n pna.nextTick(maybeReadMore_, stream, state);\\n }\\n}\\n\\nfunction maybeReadMore_(stream, state) {\\n var len = state.length;\\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\\n debug('maybeReadMore read 0');\\n stream.read(0);\\n if (len === state.length)\\n // didn't get any data, stop spinning.\\n break;else len = state.length;\\n }\\n state.readingMore = false;\\n}\\n\\n// abstract method. to be overridden in specific implementation classes.\\n// call cb(er, data) where data is <= n in length.\\n// for virtual (non-string, non-buffer) streams, \\\"length\\\" is somewhat\\n// arbitrary, and perhaps not very meaningful.\\nReadable.prototype._read = function (n) {\\n this.emit('error', new Error('_read() is not implemented'));\\n};\\n\\nReadable.prototype.pipe = function (dest, pipeOpts) {\\n var src = this;\\n var state = this._readableState;\\n\\n switch (state.pipesCount) {\\n case 0:\\n state.pipes = dest;\\n break;\\n case 1:\\n state.pipes = [state.pipes, dest];\\n break;\\n default:\\n state.pipes.push(dest);\\n break;\\n }\\n state.pipesCount += 1;\\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\\n\\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\\n\\n var endFn = doEnd ? onend : unpipe;\\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\\n\\n dest.on('unpipe', onunpipe);\\n function onunpipe(readable, unpipeInfo) {\\n debug('onunpipe');\\n if (readable === src) {\\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\\n unpipeInfo.hasUnpiped = true;\\n cleanup();\\n }\\n }\\n }\\n\\n function onend() {\\n debug('onend');\\n dest.end();\\n }\\n\\n // when the dest drains, it reduces the awaitDrain counter\\n // on the source. This would be more elegant with a .once()\\n // handler in flow(), but adding and removing repeatedly is\\n // too slow.\\n var ondrain = pipeOnDrain(src);\\n dest.on('drain', ondrain);\\n\\n var cleanedUp = false;\\n function cleanup() {\\n debug('cleanup');\\n // cleanup event handlers once the pipe is broken\\n dest.removeListener('close', onclose);\\n dest.removeListener('finish', onfinish);\\n dest.removeListener('drain', ondrain);\\n dest.removeListener('error', onerror);\\n dest.removeListener('unpipe', onunpipe);\\n src.removeListener('end', onend);\\n src.removeListener('end', unpipe);\\n src.removeListener('data', ondata);\\n\\n cleanedUp = true;\\n\\n // if the reader is waiting for a drain event from this\\n // specific writer, then it would cause it to never start\\n // flowing again.\\n // So, if this is awaiting a drain, then we just call it now.\\n // If we don't know, then assume that we are waiting for one.\\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\\n }\\n\\n // If the user pushes more data while we're writing to dest then we'll end up\\n // in ondata again. However, we only want to increase awaitDrain once because\\n // dest will only emit one 'drain' event for the multiple writes.\\n // => Introduce a guard on increasing awaitDrain.\\n var increasedAwaitDrain = false;\\n src.on('data', ondata);\\n function ondata(chunk) {\\n debug('ondata');\\n increasedAwaitDrain = false;\\n var ret = dest.write(chunk);\\n if (false === ret && !increasedAwaitDrain) {\\n // If the user unpiped during `dest.write()`, it is possible\\n // to get stuck in a permanently paused state if that write\\n // also returned false.\\n // => Check whether `dest` is still a piping destination.\\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\\n debug('false write response, pause', src._readableState.awaitDrain);\\n src._readableState.awaitDrain++;\\n increasedAwaitDrain = true;\\n }\\n src.pause();\\n }\\n }\\n\\n // if the dest has an error, then stop piping into it.\\n // however, don't suppress the throwing behavior for this.\\n function onerror(er) {\\n debug('onerror', er);\\n unpipe();\\n dest.removeListener('error', onerror);\\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\\n }\\n\\n // Make sure our error handler is attached before userland ones.\\n prependListener(dest, 'error', onerror);\\n\\n // Both close and finish should trigger unpipe, but only once.\\n function onclose() {\\n dest.removeListener('finish', onfinish);\\n unpipe();\\n }\\n dest.once('close', onclose);\\n function onfinish() {\\n debug('onfinish');\\n dest.removeListener('close', onclose);\\n unpipe();\\n }\\n dest.once('finish', onfinish);\\n\\n function unpipe() {\\n debug('unpipe');\\n src.unpipe(dest);\\n }\\n\\n // tell the dest that it's being piped to\\n dest.emit('pipe', src);\\n\\n // start the flow if it hasn't been started already.\\n if (!state.flowing) {\\n debug('pipe resume');\\n src.resume();\\n }\\n\\n return dest;\\n};\\n\\nfunction pipeOnDrain(src) {\\n return function () {\\n var state = src._readableState;\\n debug('pipeOnDrain', state.awaitDrain);\\n if (state.awaitDrain) state.awaitDrain--;\\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\\n state.flowing = true;\\n flow(src);\\n }\\n };\\n}\\n\\nReadable.prototype.unpipe = function (dest) {\\n var state = this._readableState;\\n var unpipeInfo = { hasUnpiped: false };\\n\\n // if we're not piping anywhere, then do nothing.\\n if (state.pipesCount === 0) return this;\\n\\n // just one destination. most common case.\\n if (state.pipesCount === 1) {\\n // passed in one, but it's not the right one.\\n if (dest && dest !== state.pipes) return this;\\n\\n if (!dest) dest = state.pipes;\\n\\n // got a match.\\n state.pipes = null;\\n state.pipesCount = 0;\\n state.flowing = false;\\n if (dest) dest.emit('unpipe', this, unpipeInfo);\\n return this;\\n }\\n\\n // slow case. multiple pipe destinations.\\n\\n if (!dest) {\\n // remove all.\\n var dests = state.pipes;\\n var len = state.pipesCount;\\n state.pipes = null;\\n state.pipesCount = 0;\\n state.flowing = false;\\n\\n for (var i = 0; i < len; i++) {\\n dests[i].emit('unpipe', this, unpipeInfo);\\n }return this;\\n }\\n\\n // try to find the right one.\\n var index = indexOf(state.pipes, dest);\\n if (index === -1) return this;\\n\\n state.pipes.splice(index, 1);\\n state.pipesCount -= 1;\\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\\n\\n dest.emit('unpipe', this, unpipeInfo);\\n\\n return this;\\n};\\n\\n// set up data events if they are asked for\\n// Ensure readable listeners eventually get something\\nReadable.prototype.on = function (ev, fn) {\\n var res = Stream.prototype.on.call(this, ev, fn);\\n\\n if (ev === 'data') {\\n // Start flowing on next tick if stream isn't explicitly paused\\n if (this._readableState.flowing !== false) this.resume();\\n } else if (ev === 'readable') {\\n var state = this._readableState;\\n if (!state.endEmitted && !state.readableListening) {\\n state.readableListening = state.needReadable = true;\\n state.emittedReadable = false;\\n if (!state.reading) {\\n pna.nextTick(nReadingNextTick, this);\\n } else if (state.length) {\\n emitReadable(this);\\n }\\n }\\n }\\n\\n return res;\\n};\\nReadable.prototype.addListener = Readable.prototype.on;\\n\\nfunction nReadingNextTick(self) {\\n debug('readable nexttick read 0');\\n self.read(0);\\n}\\n\\n// pause() and resume() are remnants of the legacy readable stream API\\n// If the user uses them, then switch into old mode.\\nReadable.prototype.resume = function () {\\n var state = this._readableState;\\n if (!state.flowing) {\\n debug('resume');\\n state.flowing = true;\\n resume(this, state);\\n }\\n return this;\\n};\\n\\nfunction resume(stream, state) {\\n if (!state.resumeScheduled) {\\n state.resumeScheduled = true;\\n pna.nextTick(resume_, stream, state);\\n }\\n}\\n\\nfunction resume_(stream, state) {\\n if (!state.reading) {\\n debug('resume read 0');\\n stream.read(0);\\n }\\n\\n state.resumeScheduled = false;\\n state.awaitDrain = 0;\\n stream.emit('resume');\\n flow(stream);\\n if (state.flowing && !state.reading) stream.read(0);\\n}\\n\\nReadable.prototype.pause = function () {\\n debug('call pause flowing=%j', this._readableState.flowing);\\n if (false !== this._readableState.flowing) {\\n debug('pause');\\n this._readableState.flowing = false;\\n this.emit('pause');\\n }\\n return this;\\n};\\n\\nfunction flow(stream) {\\n var state = stream._readableState;\\n debug('flow', state.flowing);\\n while (state.flowing && stream.read() !== null) {}\\n}\\n\\n// wrap an old-style stream as the async data source.\\n// This is *not* part of the readable stream interface.\\n// It is an ugly unfortunate mess of history.\\nReadable.prototype.wrap = function (stream) {\\n var _this = this;\\n\\n var state = this._readableState;\\n var paused = false;\\n\\n stream.on('end', function () {\\n debug('wrapped end');\\n if (state.decoder && !state.ended) {\\n var chunk = state.decoder.end();\\n if (chunk && chunk.length) _this.push(chunk);\\n }\\n\\n _this.push(null);\\n });\\n\\n stream.on('data', function (chunk) {\\n debug('wrapped data');\\n if (state.decoder) chunk = state.decoder.write(chunk);\\n\\n // don't skip over falsy values in objectMode\\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\\n\\n var ret = _this.push(chunk);\\n if (!ret) {\\n paused = true;\\n stream.pause();\\n }\\n });\\n\\n // proxy all the other methods.\\n // important when wrapping filters and duplexes.\\n for (var i in stream) {\\n if (this[i] === undefined && typeof stream[i] === 'function') {\\n this[i] = function (method) {\\n return function () {\\n return stream[method].apply(stream, arguments);\\n };\\n }(i);\\n }\\n }\\n\\n // proxy certain important events.\\n for (var n = 0; n < kProxyEvents.length; n++) {\\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\\n }\\n\\n // when we try to consume some more bytes, simply unpause the\\n // underlying stream.\\n this._read = function (n) {\\n debug('wrapped _read', n);\\n if (paused) {\\n paused = false;\\n stream.resume();\\n }\\n };\\n\\n return this;\\n};\\n\\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\\n // making it explicit this property is not enumerable\\n // because otherwise some prototype manipulation in\\n // userland will fail\\n enumerable: false,\\n get: function () {\\n return this._readableState.highWaterMark;\\n }\\n});\\n\\n// exposed for testing purposes only.\\nReadable._fromList = fromList;\\n\\n// Pluck off n bytes from an array of buffers.\\n// Length is the combined lengths of all the buffers in the list.\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction fromList(n, state) {\\n // nothing buffered\\n if (state.length === 0) return null;\\n\\n var ret;\\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\\n // read it all, truncate the list\\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\\n state.buffer.clear();\\n } else {\\n // read part of list\\n ret = fromListPartial(n, state.buffer, state.decoder);\\n }\\n\\n return ret;\\n}\\n\\n// Extracts only enough buffered data to satisfy the amount requested.\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction fromListPartial(n, list, hasStrings) {\\n var ret;\\n if (n < list.head.data.length) {\\n // slice is the same for buffers and strings\\n ret = list.head.data.slice(0, n);\\n list.head.data = list.head.data.slice(n);\\n } else if (n === list.head.data.length) {\\n // first chunk is a perfect match\\n ret = list.shift();\\n } else {\\n // result spans more than one buffer\\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\\n }\\n return ret;\\n}\\n\\n// Copies a specified amount of characters from the list of buffered data\\n// chunks.\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction copyFromBufferString(n, list) {\\n var p = list.head;\\n var c = 1;\\n var ret = p.data;\\n n -= ret.length;\\n while (p = p.next) {\\n var str = p.data;\\n var nb = n > str.length ? str.length : n;\\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\\n n -= nb;\\n if (n === 0) {\\n if (nb === str.length) {\\n ++c;\\n if (p.next) list.head = p.next;else list.head = list.tail = null;\\n } else {\\n list.head = p;\\n p.data = str.slice(nb);\\n }\\n break;\\n }\\n ++c;\\n }\\n list.length -= c;\\n return ret;\\n}\\n\\n// Copies a specified amount of bytes from the list of buffered data chunks.\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction copyFromBuffer(n, list) {\\n var ret = Buffer.allocUnsafe(n);\\n var p = list.head;\\n var c = 1;\\n p.data.copy(ret);\\n n -= p.data.length;\\n while (p = p.next) {\\n var buf = p.data;\\n var nb = n > buf.length ? buf.length : n;\\n buf.copy(ret, ret.length - n, 0, nb);\\n n -= nb;\\n if (n === 0) {\\n if (nb === buf.length) {\\n ++c;\\n if (p.next) list.head = p.next;else list.head = list.tail = null;\\n } else {\\n list.head = p;\\n p.data = buf.slice(nb);\\n }\\n break;\\n }\\n ++c;\\n }\\n list.length -= c;\\n return ret;\\n}\\n\\nfunction endReadable(stream) {\\n var state = stream._readableState;\\n\\n // If we get here before consuming all the bytes, then that is a\\n // bug in node. Should never happen.\\n if (state.length > 0) throw new Error('\\\"endReadable()\\\" called on non-empty stream');\\n\\n if (!state.endEmitted) {\\n state.ended = true;\\n pna.nextTick(endReadableNT, state, stream);\\n }\\n}\\n\\nfunction endReadableNT(state, stream) {\\n // Check that we didn't get one last unshift.\\n if (!state.endEmitted && state.length === 0) {\\n state.endEmitted = true;\\n stream.readable = false;\\n stream.emit('end');\\n }\\n}\\n\\nfunction indexOf(xs, x) {\\n for (var i = 0, l = xs.length; i < l; i++) {\\n if (xs[i] === x) return i;\\n }\\n return -1;\\n}\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\"), __webpack_require__(/*! ./../../process/browser.js */ \\\"./node_modules/process/browser.js\\\")))\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/lib/_stream_transform.js\\\":\\n/*!***************************************************************!*\\\\\\n !*** ./node_modules/readable-stream/lib/_stream_transform.js ***!\\n \\\\***************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\n// a transform stream is a readable/writable stream where you do\\n// something with the data. Sometimes it's called a \\\"filter\\\",\\n// but that's not a great name for it, since that implies a thing where\\n// some bits pass through, and others are simply ignored. (That would\\n// be a valid example of a transform, of course.)\\n//\\n// While the output is causally related to the input, it's not a\\n// necessarily symmetric or synchronous transformation. For example,\\n// a zlib stream might take multiple plain-text writes(), and then\\n// emit a single compressed chunk some time in the future.\\n//\\n// Here's how this works:\\n//\\n// The Transform stream has all the aspects of the readable and writable\\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\\n// internally, and returns false if there's a lot of pending writes\\n// buffered up. When you call read(), that calls _read(n) until\\n// there's enough pending readable data buffered up.\\n//\\n// In a transform stream, the written data is placed in a buffer. When\\n// _read(n) is called, it transforms the queued up data, calling the\\n// buffered _write cb's as it consumes chunks. If consuming a single\\n// written chunk would result in multiple output chunks, then the first\\n// outputted bit calls the readcb, and subsequent chunks just go into\\n// the read buffer, and will cause it to emit 'readable' if necessary.\\n//\\n// This way, back-pressure is actually determined by the reading side,\\n// since _read has to be called to start processing a new chunk. However,\\n// a pathological inflate type of transform can cause excessive buffering\\n// here. For example, imagine a stream where every byte of input is\\n// interpreted as an integer from 0-255, and then results in that many\\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\\n// 1kb of data being output. In this case, you could write a very small\\n// amount of input, and end up with a very large amount of output. In\\n// such a pathological inflating mechanism, there'd be no way to tell\\n// the system to stop doing the transform. A single 4MB write could\\n// cause the system to run out of memory.\\n//\\n// However, even in such a pathological case, only a single written chunk\\n// would be consumed, and then the rest would wait (un-transformed) until\\n// the results of the previous transformed chunk were consumed.\\n\\n\\n\\nmodule.exports = Transform;\\n\\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \\\"./node_modules/readable-stream/lib/_stream_duplex.js\\\");\\n\\n/**/\\nvar util = __webpack_require__(/*! core-util-is */ \\\"./node_modules/core-util-is/lib/util.js\\\");\\nutil.inherits = __webpack_require__(/*! inherits */ \\\"./node_modules/inherits/inherits_browser.js\\\");\\n/**/\\n\\nutil.inherits(Transform, Duplex);\\n\\nfunction afterTransform(er, data) {\\n var ts = this._transformState;\\n ts.transforming = false;\\n\\n var cb = ts.writecb;\\n\\n if (!cb) {\\n return this.emit('error', new Error('write callback called multiple times'));\\n }\\n\\n ts.writechunk = null;\\n ts.writecb = null;\\n\\n if (data != null) // single equals check for both `null` and `undefined`\\n this.push(data);\\n\\n cb(er);\\n\\n var rs = this._readableState;\\n rs.reading = false;\\n if (rs.needReadable || rs.length < rs.highWaterMark) {\\n this._read(rs.highWaterMark);\\n }\\n}\\n\\nfunction Transform(options) {\\n if (!(this instanceof Transform)) return new Transform(options);\\n\\n Duplex.call(this, options);\\n\\n this._transformState = {\\n afterTransform: afterTransform.bind(this),\\n needTransform: false,\\n transforming: false,\\n writecb: null,\\n writechunk: null,\\n writeencoding: null\\n };\\n\\n // start out asking for a readable event once data is transformed.\\n this._readableState.needReadable = true;\\n\\n // we have implemented the _read method, and done the other things\\n // that Readable wants before the first _read call, so unset the\\n // sync guard flag.\\n this._readableState.sync = false;\\n\\n if (options) {\\n if (typeof options.transform === 'function') this._transform = options.transform;\\n\\n if (typeof options.flush === 'function') this._flush = options.flush;\\n }\\n\\n // When the writable side finishes, then flush out anything remaining.\\n this.on('prefinish', prefinish);\\n}\\n\\nfunction prefinish() {\\n var _this = this;\\n\\n if (typeof this._flush === 'function') {\\n this._flush(function (er, data) {\\n done(_this, er, data);\\n });\\n } else {\\n done(this, null, null);\\n }\\n}\\n\\nTransform.prototype.push = function (chunk, encoding) {\\n this._transformState.needTransform = false;\\n return Duplex.prototype.push.call(this, chunk, encoding);\\n};\\n\\n// This is the part where you do stuff!\\n// override this function in implementation classes.\\n// 'chunk' is an input chunk.\\n//\\n// Call `push(newChunk)` to pass along transformed output\\n// to the readable side. You may call 'push' zero or more times.\\n//\\n// Call `cb(err)` when you are done with this chunk. If you pass\\n// an error, then that'll put the hurt on the whole operation. If you\\n// never call cb(), then you'll never get another chunk.\\nTransform.prototype._transform = function (chunk, encoding, cb) {\\n throw new Error('_transform() is not implemented');\\n};\\n\\nTransform.prototype._write = function (chunk, encoding, cb) {\\n var ts = this._transformState;\\n ts.writecb = cb;\\n ts.writechunk = chunk;\\n ts.writeencoding = encoding;\\n if (!ts.transforming) {\\n var rs = this._readableState;\\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\\n }\\n};\\n\\n// Doesn't matter what the args are here.\\n// _transform does all the work.\\n// That we got here means that the readable side wants more data.\\nTransform.prototype._read = function (n) {\\n var ts = this._transformState;\\n\\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\\n ts.transforming = true;\\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\\n } else {\\n // mark that we need a transform, so that any data that comes in\\n // will get processed, now that we've asked for it.\\n ts.needTransform = true;\\n }\\n};\\n\\nTransform.prototype._destroy = function (err, cb) {\\n var _this2 = this;\\n\\n Duplex.prototype._destroy.call(this, err, function (err2) {\\n cb(err2);\\n _this2.emit('close');\\n });\\n};\\n\\nfunction done(stream, er, data) {\\n if (er) return stream.emit('error', er);\\n\\n if (data != null) // single equals check for both `null` and `undefined`\\n stream.push(data);\\n\\n // if there's nothing in the write buffer, then that means\\n // that nothing more will ever be provided\\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\\n\\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\\n\\n return stream.push(null);\\n}\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/lib/_stream_writable.js\\\":\\n/*!**************************************************************!*\\\\\\n !*** ./node_modules/readable-stream/lib/_stream_writable.js ***!\\n \\\\**************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\n// A bit simpler than readable streams.\\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\\n// the drain event emission and buffering.\\n\\n\\n\\n/**/\\n\\nvar pna = __webpack_require__(/*! process-nextick-args */ \\\"./node_modules/process-nextick-args/index.js\\\");\\n/**/\\n\\nmodule.exports = Writable;\\n\\n/* */\\nfunction WriteReq(chunk, encoding, cb) {\\n this.chunk = chunk;\\n this.encoding = encoding;\\n this.callback = cb;\\n this.next = null;\\n}\\n\\n// It seems a linked list but it is not\\n// there will be only 2 of these for each stream\\nfunction CorkedRequest(state) {\\n var _this = this;\\n\\n this.next = null;\\n this.entry = null;\\n this.finish = function () {\\n onCorkedFinish(_this, state);\\n };\\n}\\n/* */\\n\\n/**/\\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\\n/**/\\n\\n/**/\\nvar Duplex;\\n/**/\\n\\nWritable.WritableState = WritableState;\\n\\n/**/\\nvar util = __webpack_require__(/*! core-util-is */ \\\"./node_modules/core-util-is/lib/util.js\\\");\\nutil.inherits = __webpack_require__(/*! inherits */ \\\"./node_modules/inherits/inherits_browser.js\\\");\\n/**/\\n\\n/**/\\nvar internalUtil = {\\n deprecate: __webpack_require__(/*! util-deprecate */ \\\"./node_modules/util-deprecate/browser.js\\\")\\n};\\n/**/\\n\\n/**/\\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \\\"./node_modules/readable-stream/lib/internal/streams/stream-browser.js\\\");\\n/**/\\n\\n/**/\\n\\nvar Buffer = __webpack_require__(/*! safe-buffer */ \\\"./node_modules/safe-buffer/index.js\\\").Buffer;\\nvar OurUint8Array = global.Uint8Array || function () {};\\nfunction _uint8ArrayToBuffer(chunk) {\\n return Buffer.from(chunk);\\n}\\nfunction _isUint8Array(obj) {\\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\\n}\\n\\n/**/\\n\\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \\\"./node_modules/readable-stream/lib/internal/streams/destroy.js\\\");\\n\\nutil.inherits(Writable, Stream);\\n\\nfunction nop() {}\\n\\nfunction WritableState(options, stream) {\\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \\\"./node_modules/readable-stream/lib/_stream_duplex.js\\\");\\n\\n options = options || {};\\n\\n // Duplex streams are both readable and writable, but share\\n // the same options object.\\n // However, some cases require setting options to different\\n // values for the readable and the writable sides of the duplex stream.\\n // These options can be provided separately as readableXXX and writableXXX.\\n var isDuplex = stream instanceof Duplex;\\n\\n // object stream flag to indicate whether or not this stream\\n // contains buffers or objects.\\n this.objectMode = !!options.objectMode;\\n\\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\\n\\n // the point at which write() starts returning false\\n // Note: 0 is a valid value, means that we always return false if\\n // the entire buffer is not flushed immediately on write()\\n var hwm = options.highWaterMark;\\n var writableHwm = options.writableHighWaterMark;\\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\\n\\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\\n\\n // cast to ints.\\n this.highWaterMark = Math.floor(this.highWaterMark);\\n\\n // if _final has been called\\n this.finalCalled = false;\\n\\n // drain event flag.\\n this.needDrain = false;\\n // at the start of calling end()\\n this.ending = false;\\n // when end() has been called, and returned\\n this.ended = false;\\n // when 'finish' is emitted\\n this.finished = false;\\n\\n // has it been destroyed\\n this.destroyed = false;\\n\\n // should we decode strings into buffers before passing to _write?\\n // this is here so that some node-core streams can optimize string\\n // handling at a lower level.\\n var noDecode = options.decodeStrings === false;\\n this.decodeStrings = !noDecode;\\n\\n // Crypto is kind of old and crusty. Historically, its default string\\n // encoding is 'binary' so we have to make this configurable.\\n // Everything else in the universe uses 'utf8', though.\\n this.defaultEncoding = options.defaultEncoding || 'utf8';\\n\\n // not an actual buffer we keep track of, but a measurement\\n // of how much we're waiting to get pushed to some underlying\\n // socket or file.\\n this.length = 0;\\n\\n // a flag to see when we're in the middle of a write.\\n this.writing = false;\\n\\n // when true all writes will be buffered until .uncork() call\\n this.corked = 0;\\n\\n // a flag to be able to tell if the onwrite cb is called immediately,\\n // or on a later tick. We set this to true at first, because any\\n // actions that shouldn't happen until \\\"later\\\" should generally also\\n // not happen before the first write call.\\n this.sync = true;\\n\\n // a flag to know if we're processing previously buffered items, which\\n // may call the _write() callback in the same tick, so that we don't\\n // end up in an overlapped onwrite situation.\\n this.bufferProcessing = false;\\n\\n // the callback that's passed to _write(chunk,cb)\\n this.onwrite = function (er) {\\n onwrite(stream, er);\\n };\\n\\n // the callback that the user supplies to write(chunk,encoding,cb)\\n this.writecb = null;\\n\\n // the amount that is being written when _write is called.\\n this.writelen = 0;\\n\\n this.bufferedRequest = null;\\n this.lastBufferedRequest = null;\\n\\n // number of pending user-supplied write callbacks\\n // this must be 0 before 'finish' can be emitted\\n this.pendingcb = 0;\\n\\n // emit prefinish if the only thing we're waiting for is _write cbs\\n // This is relevant for synchronous Transform streams\\n this.prefinished = false;\\n\\n // True if the error was already emitted and should not be thrown again\\n this.errorEmitted = false;\\n\\n // count buffered requests\\n this.bufferedRequestCount = 0;\\n\\n // allocate the first CorkedRequest, there is always\\n // one allocated and free to use, and we maintain at most two\\n this.corkedRequestsFree = new CorkedRequest(this);\\n}\\n\\nWritableState.prototype.getBuffer = function getBuffer() {\\n var current = this.bufferedRequest;\\n var out = [];\\n while (current) {\\n out.push(current);\\n current = current.next;\\n }\\n return out;\\n};\\n\\n(function () {\\n try {\\n Object.defineProperty(WritableState.prototype, 'buffer', {\\n get: internalUtil.deprecate(function () {\\n return this.getBuffer();\\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\\n });\\n } catch (_) {}\\n})();\\n\\n// Test _writableState for inheritance to account for Duplex streams,\\n// whose prototype chain only points to Readable.\\nvar realHasInstance;\\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\\n realHasInstance = Function.prototype[Symbol.hasInstance];\\n Object.defineProperty(Writable, Symbol.hasInstance, {\\n value: function (object) {\\n if (realHasInstance.call(this, object)) return true;\\n if (this !== Writable) return false;\\n\\n return object && object._writableState instanceof WritableState;\\n }\\n });\\n} else {\\n realHasInstance = function (object) {\\n return object instanceof this;\\n };\\n}\\n\\nfunction Writable(options) {\\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \\\"./node_modules/readable-stream/lib/_stream_duplex.js\\\");\\n\\n // Writable ctor is applied to Duplexes, too.\\n // `realHasInstance` is necessary because using plain `instanceof`\\n // would return false, as no `_writableState` property is attached.\\n\\n // Trying to use the custom `instanceof` for Writable here will also break the\\n // Node.js LazyTransform implementation, which has a non-trivial getter for\\n // `_writableState` that would lead to infinite recursion.\\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\\n return new Writable(options);\\n }\\n\\n this._writableState = new WritableState(options, this);\\n\\n // legacy.\\n this.writable = true;\\n\\n if (options) {\\n if (typeof options.write === 'function') this._write = options.write;\\n\\n if (typeof options.writev === 'function') this._writev = options.writev;\\n\\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\\n\\n if (typeof options.final === 'function') this._final = options.final;\\n }\\n\\n Stream.call(this);\\n}\\n\\n// Otherwise people can pipe Writable streams, which is just wrong.\\nWritable.prototype.pipe = function () {\\n this.emit('error', new Error('Cannot pipe, not readable'));\\n};\\n\\nfunction writeAfterEnd(stream, cb) {\\n var er = new Error('write after end');\\n // TODO: defer error events consistently everywhere, not just the cb\\n stream.emit('error', er);\\n pna.nextTick(cb, er);\\n}\\n\\n// Checks that a user-supplied chunk is valid, especially for the particular\\n// mode the stream is in. Currently this means that `null` is never accepted\\n// and undefined/non-string values are only allowed in object mode.\\nfunction validChunk(stream, state, chunk, cb) {\\n var valid = true;\\n var er = false;\\n\\n if (chunk === null) {\\n er = new TypeError('May not write null values to stream');\\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\\n er = new TypeError('Invalid non-string/buffer chunk');\\n }\\n if (er) {\\n stream.emit('error', er);\\n pna.nextTick(cb, er);\\n valid = false;\\n }\\n return valid;\\n}\\n\\nWritable.prototype.write = function (chunk, encoding, cb) {\\n var state = this._writableState;\\n var ret = false;\\n var isBuf = !state.objectMode && _isUint8Array(chunk);\\n\\n if (isBuf && !Buffer.isBuffer(chunk)) {\\n chunk = _uint8ArrayToBuffer(chunk);\\n }\\n\\n if (typeof encoding === 'function') {\\n cb = encoding;\\n encoding = null;\\n }\\n\\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\\n\\n if (typeof cb !== 'function') cb = nop;\\n\\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\\n state.pendingcb++;\\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\\n }\\n\\n return ret;\\n};\\n\\nWritable.prototype.cork = function () {\\n var state = this._writableState;\\n\\n state.corked++;\\n};\\n\\nWritable.prototype.uncork = function () {\\n var state = this._writableState;\\n\\n if (state.corked) {\\n state.corked--;\\n\\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\\n }\\n};\\n\\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\\n // node::ParseEncoding() requires lower case.\\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\\n this._writableState.defaultEncoding = encoding;\\n return this;\\n};\\n\\nfunction decodeChunk(state, chunk, encoding) {\\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\\n chunk = Buffer.from(chunk, encoding);\\n }\\n return chunk;\\n}\\n\\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\\n // making it explicit this property is not enumerable\\n // because otherwise some prototype manipulation in\\n // userland will fail\\n enumerable: false,\\n get: function () {\\n return this._writableState.highWaterMark;\\n }\\n});\\n\\n// if we're already writing something, then just put this\\n// in the queue, and wait our turn. Otherwise, call _write\\n// If we return false, then we need a drain event, so set that flag.\\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\\n if (!isBuf) {\\n var newChunk = decodeChunk(state, chunk, encoding);\\n if (chunk !== newChunk) {\\n isBuf = true;\\n encoding = 'buffer';\\n chunk = newChunk;\\n }\\n }\\n var len = state.objectMode ? 1 : chunk.length;\\n\\n state.length += len;\\n\\n var ret = state.length < state.highWaterMark;\\n // we must ensure that previous needDrain will not be reset to false.\\n if (!ret) state.needDrain = true;\\n\\n if (state.writing || state.corked) {\\n var last = state.lastBufferedRequest;\\n state.lastBufferedRequest = {\\n chunk: chunk,\\n encoding: encoding,\\n isBuf: isBuf,\\n callback: cb,\\n next: null\\n };\\n if (last) {\\n last.next = state.lastBufferedRequest;\\n } else {\\n state.bufferedRequest = state.lastBufferedRequest;\\n }\\n state.bufferedRequestCount += 1;\\n } else {\\n doWrite(stream, state, false, len, chunk, encoding, cb);\\n }\\n\\n return ret;\\n}\\n\\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\\n state.writelen = len;\\n state.writecb = cb;\\n state.writing = true;\\n state.sync = true;\\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\\n state.sync = false;\\n}\\n\\nfunction onwriteError(stream, state, sync, er, cb) {\\n --state.pendingcb;\\n\\n if (sync) {\\n // defer the callback if we are being called synchronously\\n // to avoid piling up things on the stack\\n pna.nextTick(cb, er);\\n // this can emit finish, and it will always happen\\n // after error\\n pna.nextTick(finishMaybe, stream, state);\\n stream._writableState.errorEmitted = true;\\n stream.emit('error', er);\\n } else {\\n // the caller expect this to happen before if\\n // it is async\\n cb(er);\\n stream._writableState.errorEmitted = true;\\n stream.emit('error', er);\\n // this can emit finish, but finish must\\n // always follow error\\n finishMaybe(stream, state);\\n }\\n}\\n\\nfunction onwriteStateUpdate(state) {\\n state.writing = false;\\n state.writecb = null;\\n state.length -= state.writelen;\\n state.writelen = 0;\\n}\\n\\nfunction onwrite(stream, er) {\\n var state = stream._writableState;\\n var sync = state.sync;\\n var cb = state.writecb;\\n\\n onwriteStateUpdate(state);\\n\\n if (er) onwriteError(stream, state, sync, er, cb);else {\\n // Check if we're actually ready to finish, but don't emit yet\\n var finished = needFinish(state);\\n\\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\\n clearBuffer(stream, state);\\n }\\n\\n if (sync) {\\n /**/\\n asyncWrite(afterWrite, stream, state, finished, cb);\\n /**/\\n } else {\\n afterWrite(stream, state, finished, cb);\\n }\\n }\\n}\\n\\nfunction afterWrite(stream, state, finished, cb) {\\n if (!finished) onwriteDrain(stream, state);\\n state.pendingcb--;\\n cb();\\n finishMaybe(stream, state);\\n}\\n\\n// Must force callback to be called on nextTick, so that we don't\\n// emit 'drain' before the write() consumer gets the 'false' return\\n// value, and has a chance to attach a 'drain' listener.\\nfunction onwriteDrain(stream, state) {\\n if (state.length === 0 && state.needDrain) {\\n state.needDrain = false;\\n stream.emit('drain');\\n }\\n}\\n\\n// if there's something in the buffer waiting, then process it\\nfunction clearBuffer(stream, state) {\\n state.bufferProcessing = true;\\n var entry = state.bufferedRequest;\\n\\n if (stream._writev && entry && entry.next) {\\n // Fast case, write everything using _writev()\\n var l = state.bufferedRequestCount;\\n var buffer = new Array(l);\\n var holder = state.corkedRequestsFree;\\n holder.entry = entry;\\n\\n var count = 0;\\n var allBuffers = true;\\n while (entry) {\\n buffer[count] = entry;\\n if (!entry.isBuf) allBuffers = false;\\n entry = entry.next;\\n count += 1;\\n }\\n buffer.allBuffers = allBuffers;\\n\\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\\n\\n // doWrite is almost always async, defer these to save a bit of time\\n // as the hot path ends with doWrite\\n state.pendingcb++;\\n state.lastBufferedRequest = null;\\n if (holder.next) {\\n state.corkedRequestsFree = holder.next;\\n holder.next = null;\\n } else {\\n state.corkedRequestsFree = new CorkedRequest(state);\\n }\\n state.bufferedRequestCount = 0;\\n } else {\\n // Slow case, write chunks one-by-one\\n while (entry) {\\n var chunk = entry.chunk;\\n var encoding = entry.encoding;\\n var cb = entry.callback;\\n var len = state.objectMode ? 1 : chunk.length;\\n\\n doWrite(stream, state, false, len, chunk, encoding, cb);\\n entry = entry.next;\\n state.bufferedRequestCount--;\\n // if we didn't call the onwrite immediately, then\\n // it means that we need to wait until it does.\\n // also, that means that the chunk and cb are currently\\n // being processed, so move the buffer counter past them.\\n if (state.writing) {\\n break;\\n }\\n }\\n\\n if (entry === null) state.lastBufferedRequest = null;\\n }\\n\\n state.bufferedRequest = entry;\\n state.bufferProcessing = false;\\n}\\n\\nWritable.prototype._write = function (chunk, encoding, cb) {\\n cb(new Error('_write() is not implemented'));\\n};\\n\\nWritable.prototype._writev = null;\\n\\nWritable.prototype.end = function (chunk, encoding, cb) {\\n var state = this._writableState;\\n\\n if (typeof chunk === 'function') {\\n cb = chunk;\\n chunk = null;\\n encoding = null;\\n } else if (typeof encoding === 'function') {\\n cb = encoding;\\n encoding = null;\\n }\\n\\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\\n\\n // .end() fully uncorks\\n if (state.corked) {\\n state.corked = 1;\\n this.uncork();\\n }\\n\\n // ignore unnecessary end() calls.\\n if (!state.ending && !state.finished) endWritable(this, state, cb);\\n};\\n\\nfunction needFinish(state) {\\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\\n}\\nfunction callFinal(stream, state) {\\n stream._final(function (err) {\\n state.pendingcb--;\\n if (err) {\\n stream.emit('error', err);\\n }\\n state.prefinished = true;\\n stream.emit('prefinish');\\n finishMaybe(stream, state);\\n });\\n}\\nfunction prefinish(stream, state) {\\n if (!state.prefinished && !state.finalCalled) {\\n if (typeof stream._final === 'function') {\\n state.pendingcb++;\\n state.finalCalled = true;\\n pna.nextTick(callFinal, stream, state);\\n } else {\\n state.prefinished = true;\\n stream.emit('prefinish');\\n }\\n }\\n}\\n\\nfunction finishMaybe(stream, state) {\\n var need = needFinish(state);\\n if (need) {\\n prefinish(stream, state);\\n if (state.pendingcb === 0) {\\n state.finished = true;\\n stream.emit('finish');\\n }\\n }\\n return need;\\n}\\n\\nfunction endWritable(stream, state, cb) {\\n state.ending = true;\\n finishMaybe(stream, state);\\n if (cb) {\\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\\n }\\n state.ended = true;\\n stream.writable = false;\\n}\\n\\nfunction onCorkedFinish(corkReq, state, err) {\\n var entry = corkReq.entry;\\n corkReq.entry = null;\\n while (entry) {\\n var cb = entry.callback;\\n state.pendingcb--;\\n cb(err);\\n entry = entry.next;\\n }\\n if (state.corkedRequestsFree) {\\n state.corkedRequestsFree.next = corkReq;\\n } else {\\n state.corkedRequestsFree = corkReq;\\n }\\n}\\n\\nObject.defineProperty(Writable.prototype, 'destroyed', {\\n get: function () {\\n if (this._writableState === undefined) {\\n return false;\\n }\\n return this._writableState.destroyed;\\n },\\n set: function (value) {\\n // we ignore the value if the stream\\n // has not been initialized yet\\n if (!this._writableState) {\\n return;\\n }\\n\\n // backward compatibility, the user is explicitly\\n // managing destroyed\\n this._writableState.destroyed = value;\\n }\\n});\\n\\nWritable.prototype.destroy = destroyImpl.destroy;\\nWritable.prototype._undestroy = destroyImpl.undestroy;\\nWritable.prototype._destroy = function (err, cb) {\\n this.end();\\n cb(err);\\n};\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \\\"./node_modules/process/browser.js\\\"), __webpack_require__(/*! ./../../node-libs-browser/node_modules/timers-browserify/main.js */ \\\"./node_modules/node-libs-browser/node_modules/timers-browserify/main.js\\\").setImmediate, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/lib/internal/streams/BufferList.js\\\":\\n/*!*************************************************************************!*\\\\\\n !*** ./node_modules/readable-stream/lib/internal/streams/BufferList.js ***!\\n \\\\*************************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\n\\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\nvar Buffer = __webpack_require__(/*! safe-buffer */ \\\"./node_modules/safe-buffer/index.js\\\").Buffer;\\nvar util = __webpack_require__(/*! util */ 1);\\n\\nfunction copyBuffer(src, target, offset) {\\n src.copy(target, offset);\\n}\\n\\nmodule.exports = function () {\\n function BufferList() {\\n _classCallCheck(this, BufferList);\\n\\n this.head = null;\\n this.tail = null;\\n this.length = 0;\\n }\\n\\n BufferList.prototype.push = function push(v) {\\n var entry = { data: v, next: null };\\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\\n this.tail = entry;\\n ++this.length;\\n };\\n\\n BufferList.prototype.unshift = function unshift(v) {\\n var entry = { data: v, next: this.head };\\n if (this.length === 0) this.tail = entry;\\n this.head = entry;\\n ++this.length;\\n };\\n\\n BufferList.prototype.shift = function shift() {\\n if (this.length === 0) return;\\n var ret = this.head.data;\\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\\n --this.length;\\n return ret;\\n };\\n\\n BufferList.prototype.clear = function clear() {\\n this.head = this.tail = null;\\n this.length = 0;\\n };\\n\\n BufferList.prototype.join = function join(s) {\\n if (this.length === 0) return '';\\n var p = this.head;\\n var ret = '' + p.data;\\n while (p = p.next) {\\n ret += s + p.data;\\n }return ret;\\n };\\n\\n BufferList.prototype.concat = function concat(n) {\\n if (this.length === 0) return Buffer.alloc(0);\\n if (this.length === 1) return this.head.data;\\n var ret = Buffer.allocUnsafe(n >>> 0);\\n var p = this.head;\\n var i = 0;\\n while (p) {\\n copyBuffer(p.data, ret, i);\\n i += p.data.length;\\n p = p.next;\\n }\\n return ret;\\n };\\n\\n return BufferList;\\n}();\\n\\nif (util && util.inspect && util.inspect.custom) {\\n module.exports.prototype[util.inspect.custom] = function () {\\n var obj = util.inspect({ length: this.length });\\n return this.constructor.name + ' ' + obj;\\n };\\n}\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/lib/internal/streams/destroy.js\\\":\\n/*!**********************************************************************!*\\\\\\n !*** ./node_modules/readable-stream/lib/internal/streams/destroy.js ***!\\n \\\\**********************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\n\\n/**/\\n\\nvar pna = __webpack_require__(/*! process-nextick-args */ \\\"./node_modules/process-nextick-args/index.js\\\");\\n/**/\\n\\n// undocumented cb() API, needed for core, not for public API\\nfunction destroy(err, cb) {\\n var _this = this;\\n\\n var readableDestroyed = this._readableState && this._readableState.destroyed;\\n var writableDestroyed = this._writableState && this._writableState.destroyed;\\n\\n if (readableDestroyed || writableDestroyed) {\\n if (cb) {\\n cb(err);\\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\\n pna.nextTick(emitErrorNT, this, err);\\n }\\n return this;\\n }\\n\\n // we set destroyed to true before firing error callbacks in order\\n // to make it re-entrance safe in case destroy() is called within callbacks\\n\\n if (this._readableState) {\\n this._readableState.destroyed = true;\\n }\\n\\n // if this is a duplex stream mark the writable part as destroyed as well\\n if (this._writableState) {\\n this._writableState.destroyed = true;\\n }\\n\\n this._destroy(err || null, function (err) {\\n if (!cb && err) {\\n pna.nextTick(emitErrorNT, _this, err);\\n if (_this._writableState) {\\n _this._writableState.errorEmitted = true;\\n }\\n } else if (cb) {\\n cb(err);\\n }\\n });\\n\\n return this;\\n}\\n\\nfunction undestroy() {\\n if (this._readableState) {\\n this._readableState.destroyed = false;\\n this._readableState.reading = false;\\n this._readableState.ended = false;\\n this._readableState.endEmitted = false;\\n }\\n\\n if (this._writableState) {\\n this._writableState.destroyed = false;\\n this._writableState.ended = false;\\n this._writableState.ending = false;\\n this._writableState.finished = false;\\n this._writableState.errorEmitted = false;\\n }\\n}\\n\\nfunction emitErrorNT(self, err) {\\n self.emit('error', err);\\n}\\n\\nmodule.exports = {\\n destroy: destroy,\\n undestroy: undestroy\\n};\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/lib/internal/streams/stream-browser.js\\\":\\n/*!*****************************************************************************!*\\\\\\n !*** ./node_modules/readable-stream/lib/internal/streams/stream-browser.js ***!\\n \\\\*****************************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = __webpack_require__(/*! events */ \\\"./node_modules/node-libs-browser/node_modules/events/events.js\\\").EventEmitter;\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/passthrough.js\\\":\\n/*!*****************************************************!*\\\\\\n !*** ./node_modules/readable-stream/passthrough.js ***!\\n \\\\*****************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = __webpack_require__(/*! ./readable */ \\\"./node_modules/readable-stream/readable-browser.js\\\").PassThrough\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/readable-browser.js\\\":\\n/*!**********************************************************!*\\\\\\n !*** ./node_modules/readable-stream/readable-browser.js ***!\\n \\\\**********************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nexports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ \\\"./node_modules/readable-stream/lib/_stream_readable.js\\\");\\nexports.Stream = exports;\\nexports.Readable = exports;\\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ \\\"./node_modules/readable-stream/lib/_stream_writable.js\\\");\\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ \\\"./node_modules/readable-stream/lib/_stream_duplex.js\\\");\\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ \\\"./node_modules/readable-stream/lib/_stream_transform.js\\\");\\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ \\\"./node_modules/readable-stream/lib/_stream_passthrough.js\\\");\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/transform.js\\\":\\n/*!***************************************************!*\\\\\\n !*** ./node_modules/readable-stream/transform.js ***!\\n \\\\***************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = __webpack_require__(/*! ./readable */ \\\"./node_modules/readable-stream/readable-browser.js\\\").Transform\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/readable-stream/writable-browser.js\\\":\\n/*!**********************************************************!*\\\\\\n !*** ./node_modules/readable-stream/writable-browser.js ***!\\n \\\\**********************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = __webpack_require__(/*! ./lib/_stream_writable.js */ \\\"./node_modules/readable-stream/lib/_stream_writable.js\\\");\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/safe-buffer/index.js\\\":\\n/*!*******************************************!*\\\\\\n !*** ./node_modules/safe-buffer/index.js ***!\\n \\\\*******************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* eslint-disable node/no-deprecated-api */\\nvar buffer = __webpack_require__(/*! buffer */ \\\"./node_modules/node-libs-browser/node_modules/buffer/index.js\\\")\\nvar Buffer = buffer.Buffer\\n\\n// alternative to using Object.keys for old browsers\\nfunction copyProps (src, dst) {\\n for (var key in src) {\\n dst[key] = src[key]\\n }\\n}\\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\\n module.exports = buffer\\n} else {\\n // Copy properties from require('buffer')\\n copyProps(buffer, exports)\\n exports.Buffer = SafeBuffer\\n}\\n\\nfunction SafeBuffer (arg, encodingOrOffset, length) {\\n return Buffer(arg, encodingOrOffset, length)\\n}\\n\\n// Copy static methods from Buffer\\ncopyProps(Buffer, SafeBuffer)\\n\\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\\n if (typeof arg === 'number') {\\n throw new TypeError('Argument must not be a number')\\n }\\n return Buffer(arg, encodingOrOffset, length)\\n}\\n\\nSafeBuffer.alloc = function (size, fill, encoding) {\\n if (typeof size !== 'number') {\\n throw new TypeError('Argument must be a number')\\n }\\n var buf = Buffer(size)\\n if (fill !== undefined) {\\n if (typeof encoding === 'string') {\\n buf.fill(fill, encoding)\\n } else {\\n buf.fill(fill)\\n }\\n } else {\\n buf.fill(0)\\n }\\n return buf\\n}\\n\\nSafeBuffer.allocUnsafe = function (size) {\\n if (typeof size !== 'number') {\\n throw new TypeError('Argument must be a number')\\n }\\n return Buffer(size)\\n}\\n\\nSafeBuffer.allocUnsafeSlow = function (size) {\\n if (typeof size !== 'number') {\\n throw new TypeError('Argument must be a number')\\n }\\n return buffer.SlowBuffer(size)\\n}\\n\\n\\n/***/ }),\\n\\n/***/ \\\"./node_modules/sax/lib/sax.js\\\":\\n/*!*************************************!*\\\\\\n !*** ./node_modules/sax/lib/sax.js ***!\\n \\\\*************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/* WEBPACK VAR INJECTION */(function(Buffer) {;(function (sax) { // wrapper for non-node envs\\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\\n sax.SAXParser = SAXParser\\n sax.SAXStream = SAXStream\\n sax.createStream = createStream\\n\\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\\n // since that's the earliest that a buffer overrun could occur. This way, checks are\\n // as rare as required, but as often as necessary to ensure never crossing this bound.\\n // Furthermore, buffers are only tested at most once per write(), so passing a very\\n // large string into write() might have undesirable effects, but this is manageable by\\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\\n // edge case, result in creating at most one complete copy of the string passed in.\\n // Set to Infinity to have unlimited buffers.\\n sax.MAX_BUFFER_LENGTH = 64 * 1024\\n\\n var buffers = [\\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\\n 'procInstName', 'procInstBody', 'entity', 'attribName',\\n 'attribValue', 'cdata', 'script'\\n ]\\n\\n sax.EVENTS = [\\n 'text',\\n 'processinginstruction',\\n 'sgmldeclaration',\\n 'doctype',\\n 'comment',\\n 'opentagstart',\\n 'attribute',\\n 'opentag',\\n 'closetag',\\n 'opencdata',\\n 'cdata',\\n 'closecdata',\\n 'error',\\n 'end',\\n 'ready',\\n 'script',\\n 'opennamespace',\\n 'closenamespace'\\n ]\\n\\n function SAXParser (strict, opt) {\\n if (!(this instanceof SAXParser)) {\\n return new SAXParser(strict, opt)\\n }\\n\\n var parser = this\\n clearBuffers(parser)\\n parser.q = parser.c = ''\\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\\n parser.opt = opt || {}\\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\\n parser.tags = []\\n parser.closed = parser.closedRoot = parser.sawRoot = false\\n parser.tag = parser.error = null\\n parser.strict = !!strict\\n parser.noscript = !!(strict || parser.opt.noscript)\\n parser.state = S.BEGIN\\n parser.strictEntities = parser.opt.strictEntities\\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\\n parser.attribList = []\\n\\n // namespaces form a prototype chain.\\n // it always points at the current tag,\\n // which protos to its parent tag.\\n if (parser.opt.xmlns) {\\n parser.ns = Object.create(rootNS)\\n }\\n\\n // mostly just for error reporting\\n parser.trackPosition = parser.opt.position !== false\\n if (parser.trackPosition) {\\n parser.position = parser.line = parser.column = 0\\n }\\n emit(parser, 'onready')\\n }\\n\\n if (!Object.create) {\\n Object.create = function (o) {\\n function F () {}\\n F.prototype = o\\n var newf = new F()\\n return newf\\n }\\n }\\n\\n if (!Object.keys) {\\n Object.keys = function (o) {\\n var a = []\\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\\n return a\\n }\\n }\\n\\n function checkBufferLength (parser) {\\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\\n var maxActual = 0\\n for (var i = 0, l = buffers.length; i < l; i++) {\\n var len = parser[buffers[i]].length\\n if (len > maxAllowed) {\\n // Text/cdata nodes can get big, and since they're buffered,\\n // we can get here under normal conditions.\\n // Avoid issues by emitting the text node now,\\n // so at least it won't get any bigger.\\n switch (buffers[i]) {\\n case 'textNode':\\n closeText(parser)\\n break\\n\\n case 'cdata':\\n emitNode(parser, 'oncdata', parser.cdata)\\n parser.cdata = ''\\n break\\n\\n case 'script':\\n emitNode(parser, 'onscript', parser.script)\\n parser.script = ''\\n break\\n\\n default:\\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\\n }\\n }\\n maxActual = Math.max(maxActual, len)\\n }\\n // schedule the next check for the earliest possible buffer overrun.\\n var m = sax.MAX_BUFFER_LENGTH - maxActual\\n parser.bufferCheckPosition = m + parser.position\\n }\\n\\n function clearBuffers (parser) {\\n for (var i = 0, l = buffers.length; i < l; i++) {\\n parser[buffers[i]] = ''\\n }\\n }\\n\\n function flushBuffers (parser) {\\n closeText(parser)\\n if (parser.cdata !== '') {\\n emitNode(parser, 'oncdata', parser.cdata)\\n parser.cdata = ''\\n }\\n if (parser.script !== '') {\\n emitNode(parser, 'onscript', parser.script)\\n parser.script = ''\\n }\\n }\\n\\n SAXParser.prototype = {\\n end: function () { end(this) },\\n write: write,\\n resume: function () { this.error = null; return this },\\n close: function () { return this.write(null) },\\n flush: function () { flushBuffers(this) }\\n }\\n\\n var Stream\\n try {\\n Stream = __webpack_require__(/*! stream */ \\\"./node_modules/stream-browserify/index.js\\\").Stream\\n } catch (ex) {\\n Stream = function () {}\\n }\\n\\n var streamWraps = sax.EVENTS.filter(function (ev) {\\n return ev !== 'error' && ev !== 'end'\\n })\\n\\n function createStream (strict, opt) {\\n return new SAXStream(strict, opt)\\n }\\n\\n function SAXStream (strict, opt) {\\n if (!(this instanceof SAXStream)) {\\n return new SAXStream(strict, opt)\\n }\\n\\n Stream.apply(this)\\n\\n this._parser = new SAXParser(strict, opt)\\n this.writable = true\\n this.readable = true\\n\\n var me = this\\n\\n this._parser.onend = function () {\\n me.emit('end')\\n }\\n\\n this._parser.onerror = function (er) {\\n me.emit('error', er)\\n\\n // if didn't throw, then means error was handled.\\n // go ahead and clear error, so we can write again.\\n me._parser.error = null\\n }\\n\\n this._decoder = null\\n\\n streamWraps.forEach(function (ev) {\\n Object.defineProperty(me, 'on' + ev, {\\n get: function () {\\n return me._parser['on' + ev]\\n },\\n set: function (h) {\\n if (!h) {\\n me.removeAllListeners(ev)\\n me._parser['on' + ev] = h\\n return h\\n }\\n me.on(ev, h)\\n },\\n enumerable: true,\\n configurable: false\\n })\\n })\\n }\\n\\n SAXStream.prototype = Object.create(Stream.prototype, {\\n constructor: {\\n value: SAXStream\\n }\\n })\\n\\n SAXStream.prototype.write = function (data) {\\n if (typeof Buffer === 'function' &&\\n typeof Buffer.isBuffer === 'function' &&\\n Buffer.isBuffer(data)) {\\n if (!this._decoder) {\\n var SD = __webpack_require__(/*! string_decoder */ \\\"./node_modules/string_decoder/lib/string_decoder.js\\\").StringDecoder\\n this._decoder = new SD('utf8')\\n }\\n data = this._decoder.write(data)\\n }\\n\\n this._parser.write(data.toString())\\n this.emit('data', data)\\n return true\\n }\\n\\n SAXStream.prototype.end = function (chunk) {\\n if (chunk && chunk.length) {\\n this.write(chunk)\\n }\\n this._parser.end()\\n return true\\n }\\n\\n SAXStream.prototype.on = function (ev, handler) {\\n var me = this\\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\\n me._parser['on' + ev] = function () {\\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\\n args.splice(0, 0, ev)\\n me.emit.apply(me, args)\\n }\\n }\\n\\n return Stream.prototype.on.call(me, ev, handler)\\n }\\n\\n // character classes and tokens\\n var whitespace = '\\\\r\\\\n\\\\t '\\n\\n // this really needs to be replaced with character classes.\\n // XML allows all manner of ridiculous numbers and digits.\\n var number = '0124356789'\\n var letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\\n\\n // (Letter | \\\"_\\\" | \\\":\\\")\\n var quote = '\\\\'\\\"'\\n var attribEnd = whitespace + '>'\\n var CDATA = '[CDATA['\\n var DOCTYPE = 'DOCTYPE'\\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\\n\\n // turn all the string character sets into character class objects.\\n whitespace = charClass(whitespace)\\n number = charClass(number)\\n letter = charClass(letter)\\n\\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\\n // This implementation works on strings, a single character at a time\\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\\n // without a significant breaking change to either this parser, or the\\n // JavaScript language. Implementation of an emoji-capable xml parser\\n // is left as an exercise for the reader.\\n var nameStart = /[:_A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD]/\\n\\n var nameBody = /[:_A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\\\\.\\\\d-]/\\n\\n var entityStart = /[#:_A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD]/\\n var entityBody = /[#:_A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\\\\.\\\\d-]/\\n\\n quote = charClass(quote)\\n attribEnd = charClass(attribEnd)\\n\\n function charClass (str) {\\n return str.split('').reduce(function (s, c) {\\n s[c] = true\\n return s\\n }, {})\\n }\\n\\n function isRegExp (c) {\\n return Object.prototype.toString.call(c) === '[object RegExp]'\\n }\\n\\n function is (charclass, c) {\\n return isRegExp(charclass) ? !!c.match(charclass) : charclass[c]\\n }\\n\\n function not (charclass, c) {\\n return !is(charclass, c)\\n }\\n\\n var S = 0\\n sax.STATE = {\\n BEGIN: S++, // leading byte order mark or whitespace\\n BEGIN_WHITESPACE: S++, // leading whitespace\\n TEXT: S++, // general stuff\\n TEXT_ENTITY: S++, // & and such.\\n OPEN_WAKA: S++, // <\\n SGML_DECL: S++, // \\n SCRIPT: S++, //