{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/utils/media.js","webpack:///./app/javascript/packs/videoPlayer.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","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","_regeneratorRuntime","e","a","iterator","asyncIterator","u","define","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","type","arg","h","f","y","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","isMediaPlayer","elem","closest","videoIsPlaying","window","player","getPlayerState","YT","PlayerState","PAUSED","ENDED","UNSTARTED","currentMediaPlaying","_playButton$dataset","playButton","document","querySelector","dataset","progressBarLength","progressBar","parentNode","offsetWidth","getCurrentProgressInPixels","time","duration","getDuration","audio","getCurrentProgressInPercentage","getCurrentProgressInSecondsFromPercentage","progress","updateProgressBar","querySelectorAll","concat","currentWidth","style","width","updateTimeElapsed","innerText","getMinuteSecondsFormat","onProgressBarClick","layerX","target","seconds","Math","floor","className","indexOf","max","id","seekTo","currentTime","minutes","toString","pad","getMediaPlayerData","_x","_x2","_getMediaPlayerData","_callee","mediaId","token","response","_yield$response$json","image","song","artist","artistUrl","_context","getAttribute","fetch","headers","credentials","json","artist_url","updateMediaPlayerData","_ref","_document$querySelect","href","src","setAttribute","resetProgressBar","reactionElementAt","nearFive","deleteAnimationAfterFinished","hearts","setTimeout","heart","remove","setupLikes","noShow","undefined","element","amountOfLikesElement","increment","parseInt","_ref2","height","zIndex","setLikesElementHeight","cloneNode","classList","appendChild","incrementProgressBarLike","likesElement","left","cursor","add","addEventListener","addLikeElement","saveReaction","position","round","getCurrentProgressInSeconds","mediaReaction","amount","video_id","audio_id","Accept","body","JSON","stringify","media_reaction","resetReactions","like","loadReactions","_x3","_x4","_x5","_loadReactions","_callee2","reactionLoaded","_yield$response$json2","_yield$response$json3","_context2","reactions","pauseVideo","setPlayPauseIcons","card","offsetHeight","paused","display","isAudioPlaying","allAudios","isPlaying","stopAudios","pause","playNextAudio","button","nextElementSibling","click","checkIfHasNext","checkIfHasPrevious","previousButton","previousElementSibling","nextButton","checkPlayerPlayPauseIcon","addForwardsEvent","addBackwardsEvent","previous","playPreviousAudio","addMediaPlayerEvents","likeButton","mediaPlayer","getElementById","getElementsByTagName","opacity","playVideo","play","addPlayPauseButtonEvent","getCurrentTime","currentTarget","customBarTimeInterval","currentVideoId","YTDurationToSeconds","match","map","x","replace","getTrackListVideoDuration","row","youtubeId","apiKey","data","_data$items","items","item","_item$contentDetails","durationInSeconds","videoLink","getIdFromVideoLink","t0","contentDetails","updateVideoDuration","setTrackSelected","currentRowSelected","link","prepareForNewVideo","videoId","$","attr","loadVideo","preventDefault","loadVideoById","addNewVideo","props","_element","_ref3","_ref3$height","_ref3$width","elementClassName","el","Player","playerVars","playsinline","events","onReady","onPlayerReady","onStateChange","onPlayerStateChange","onYouTubeIframeAPIReady","_e$target$g$dataset","_$","addClass","track","setVideoSelected","event","clearInterval","PLAYING","setInterval","checkIfHasReaction","_ref4","playNextVideo","tag","createElement","firstScriptTag","insertBefore","addYoutubeIFrameAPI","piece","intervalInMilliseconds","circle","index","firstLoadAnimation","dashOffset","setPlayerProgressAnimation"],"mappings":";aACE,IAAIA,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAIAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGAZ,EAAoBkB,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOArB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGAzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGAZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH/B,EAAoBkC,EAAI,UAIjBlC,EAAoBA,EAAoBmC,EAAI,G,+CCjFrDC,EAAA,kBAAAC,CAAA,MAAAf,EAAAe,EAAA,GAAAnB,EAAAJ,OAAAkB,UAAAH,EAAAX,EAAAe,eAAApB,EAAAC,OAAAC,gBAAA,SAAAO,EAAAe,EAAAnB,GAAAI,EAAAe,GAAAnB,EAAAG,KAAA,EAAAjB,EAAA,mBAAAe,cAAA,GAAAmB,EAAAlC,EAAAmC,UAAA,aAAA9B,EAAAL,EAAAoC,eAAA,kBAAAC,EAAArC,EAAAgB,aAAA,yBAAAsB,EAAApB,EAAAe,EAAAnB,GAAA,OAAAJ,OAAAC,eAAAO,EAAAe,EAAA,CAAAhB,MAAAH,EAAAF,YAAA,EAAA2B,cAAA,EAAAC,UAAA,IAAAtB,EAAAe,EAAA,KAAAK,EAAA,aAAApB,GAAAoB,EAAA,SAAApB,EAAAe,EAAAnB,GAAA,OAAAI,EAAAe,GAAAnB,CAAA,WAAA2B,EAAAvB,EAAAe,EAAAnB,EAAAW,GAAA,IAAAzB,EAAAiC,KAAAL,qBAAAc,EAAAT,EAAAS,EAAAR,EAAAxB,OAAAY,OAAAtB,EAAA4B,WAAAvB,EAAA,IAAAsC,EAAAlB,GAAA,WAAAhB,EAAAyB,EAAA,WAAAjB,MAAA2B,EAAA1B,EAAAJ,EAAAT,KAAA6B,CAAA,UAAAW,EAAA3B,EAAAe,EAAAnB,GAAA,WAAAgC,KAAA,SAAAC,IAAA7B,EAAAf,KAAA8B,EAAAnB,GAAA,OAAAI,GAAA,OAAA4B,KAAA,QAAAC,IAAA7B,EAAA,EAAAe,EAAAQ,OAAA,IAAAO,EAAA,iBAAA/C,EAAA,iBAAAgD,EAAA,YAAAlB,EAAA,YAAAmB,EAAA,YAAAR,IAAA,UAAAS,IAAA,UAAAC,IAAA,KAAAtB,EAAA,GAAAQ,EAAAR,EAAAI,GAAA,8BAAA5B,EAAAI,OAAA2C,eAAAC,EAAAhD,OAAAiD,EAAA,MAAAD,OAAAxC,GAAAW,EAAAtB,KAAAmD,EAAApB,KAAAJ,EAAAwB,GAAA,IAAAE,EAAAJ,EAAAxB,UAAAc,EAAAd,UAAAlB,OAAAY,OAAAQ,GAAA,SAAA2B,EAAAvC,GAAA,0BAAAwC,SAAA,SAAAzB,GAAAK,EAAApB,EAAAe,GAAA,SAAAf,GAAA,YAAAyC,QAAA1B,EAAAf,EAAA,gBAAA0C,EAAA1C,EAAAe,GAAA,SAAA4B,EAAA/C,EAAAL,EAAAT,EAAAkC,GAAA,IAAA7B,EAAAwC,EAAA3B,EAAAJ,GAAAI,EAAAT,GAAA,aAAAJ,EAAAyC,KAAA,KAAAT,EAAAhC,EAAA0C,IAAAC,EAAAX,EAAApB,MAAA,OAAA+B,GAAA,iBAAAA,GAAAvB,EAAAtB,KAAA6C,EAAA,WAAAf,EAAA6B,QAAAd,EAAAe,SAAAC,MAAA,SAAA9C,GAAA2C,EAAA,OAAA3C,EAAAlB,EAAAkC,EAAA,aAAAhB,GAAA2C,EAAA,QAAA3C,EAAAlB,EAAAkC,EAAA,IAAAD,EAAA6B,QAAAd,GAAAgB,MAAA,SAAA9C,GAAAmB,EAAApB,MAAAC,EAAAlB,EAAAqC,EAAA,aAAAnB,GAAA,OAAA2C,EAAA,QAAA3C,EAAAlB,EAAAkC,EAAA,IAAAA,EAAA7B,EAAA0C,IAAA,KAAAjC,EAAAL,EAAA,gBAAAQ,MAAA,SAAAC,EAAAO,GAAA,SAAAwC,IAAA,WAAAhC,GAAA,SAAAA,EAAAnB,GAAA+C,EAAA3C,EAAAO,EAAAQ,EAAAnB,EAAA,WAAAA,MAAAkD,KAAAC,QAAA,aAAArB,EAAAX,EAAAnB,EAAAW,GAAA,IAAAhB,EAAAuC,EAAA,gBAAAhD,EAAAkC,GAAA,GAAAzB,IAAAwC,EAAA,MAAAiB,MAAA,mCAAAzD,IAAAsB,EAAA,cAAA/B,EAAA,MAAAkC,EAAA,OAAAjB,MAAAC,EAAAiD,MAAA,OAAA1C,EAAA2C,OAAApE,EAAAyB,EAAAsB,IAAAb,IAAA,KAAA7B,EAAAoB,EAAA4C,SAAA,GAAAhE,EAAA,KAAAgC,EAAAiC,EAAAjE,EAAAoB,GAAA,GAAAY,EAAA,IAAAA,IAAAa,EAAA,gBAAAb,CAAA,cAAAZ,EAAA2C,OAAA3C,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA2C,OAAA,IAAA3D,IAAAuC,EAAA,MAAAvC,EAAAsB,EAAAN,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,IAAA,gBAAAtB,EAAA2C,QAAA3C,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAAtC,EAAAwC,EAAA,IAAAnB,EAAAe,EAAAZ,EAAAnB,EAAAW,GAAA,cAAAK,EAAAgB,KAAA,IAAArC,EAAAgB,EAAA0C,KAAApC,EAAA9B,EAAA6B,EAAAiB,MAAAG,EAAA,gBAAAjC,MAAAa,EAAAiB,IAAAoB,KAAA1C,EAAA0C,KAAA,WAAArC,EAAAgB,OAAArC,EAAAsB,EAAAN,EAAA2C,OAAA,QAAA3C,EAAAsB,IAAAjB,EAAAiB,IAAA,YAAAuB,EAAArC,EAAAnB,GAAA,IAAAW,EAAAX,EAAAsD,OAAA3D,EAAAwB,EAAAE,SAAAV,GAAA,GAAAhB,IAAAS,EAAA,OAAAJ,EAAAuD,SAAA,eAAA5C,GAAAQ,EAAAE,SAAA,SAAArB,EAAAsD,OAAA,SAAAtD,EAAAiC,IAAA7B,EAAAoD,EAAArC,EAAAnB,GAAA,UAAAA,EAAAsD,SAAA,WAAA3C,IAAAX,EAAAsD,OAAA,QAAAtD,EAAAiC,IAAA,IAAA4B,UAAA,oCAAAlD,EAAA,aAAAyB,EAAA,IAAAlD,EAAA6C,EAAApC,EAAAwB,EAAAE,SAAArB,EAAAiC,KAAA,aAAA/C,EAAA8C,KAAA,OAAAhC,EAAAsD,OAAA,QAAAtD,EAAAiC,IAAA/C,EAAA+C,IAAAjC,EAAAuD,SAAA,KAAAnB,EAAA,IAAAhB,EAAAlC,EAAA+C,IAAA,OAAAb,IAAAiC,MAAArD,EAAAmB,EAAA2C,YAAA1C,EAAAjB,MAAAH,EAAA+D,KAAA5C,EAAA6C,QAAA,WAAAhE,EAAAsD,SAAAtD,EAAAsD,OAAA,OAAAtD,EAAAiC,IAAA7B,GAAAJ,EAAAuD,SAAA,KAAAnB,GAAAhB,GAAApB,EAAAsD,OAAA,QAAAtD,EAAAiC,IAAA,IAAA4B,UAAA,oCAAA7D,EAAAuD,SAAA,KAAAnB,EAAA,UAAA6B,EAAA7D,GAAA,IAAAe,EAAA,CAAA+C,OAAA9D,EAAA,SAAAA,IAAAe,EAAAgD,SAAA/D,EAAA,SAAAA,IAAAe,EAAAiD,WAAAhE,EAAA,GAAAe,EAAAkD,SAAAjE,EAAA,SAAAkE,WAAAC,KAAApD,EAAA,UAAAqD,EAAApE,GAAA,IAAAe,EAAAf,EAAAqE,YAAA,GAAAtD,EAAAa,KAAA,gBAAAb,EAAAc,IAAA7B,EAAAqE,WAAAtD,CAAA,UAAAU,EAAAzB,GAAA,KAAAkE,WAAA,EAAAJ,OAAA,SAAA9D,EAAAwC,QAAAqB,EAAA,WAAAS,OAAA,YAAAjC,EAAAtB,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAnB,EAAAmB,EAAAC,GAAA,GAAApB,EAAA,OAAAA,EAAAX,KAAA8B,GAAA,sBAAAA,EAAA4C,KAAA,OAAA5C,EAAA,IAAAwD,MAAAxD,EAAAyD,QAAA,KAAAjF,GAAA,EAAAT,EAAA,SAAA6E,IAAA,OAAApE,EAAAwB,EAAAyD,QAAA,GAAAjE,EAAAtB,KAAA8B,EAAAxB,GAAA,OAAAoE,EAAA5D,MAAAgB,EAAAxB,GAAAoE,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAA5D,MAAAC,EAAA2D,EAAAV,MAAA,EAAAU,CAAA,SAAA7E,EAAA6E,KAAA7E,CAAA,YAAA2E,iBAAA1C,EAAA,2BAAAkB,EAAAvB,UAAAwB,EAAA3C,EAAA+C,EAAA,eAAAvC,MAAAmC,EAAAb,cAAA,IAAA9B,EAAA2C,EAAA,eAAAnC,MAAAkC,EAAAZ,cAAA,IAAAY,EAAAwC,YAAArD,EAAAc,EAAAf,EAAA,qBAAAJ,EAAA2D,oBAAA,SAAA1E,GAAA,IAAAe,EAAA,mBAAAf,KAAA2E,YAAA,QAAA5D,QAAAkB,GAAA,uBAAAlB,EAAA0D,aAAA1D,EAAA1B,MAAA,EAAA0B,EAAA6D,KAAA,SAAA5E,GAAA,OAAAR,OAAAqF,eAAArF,OAAAqF,eAAA7E,EAAAkC,IAAAlC,EAAA8E,UAAA5C,EAAAd,EAAApB,EAAAmB,EAAA,sBAAAnB,EAAAU,UAAAlB,OAAAY,OAAAkC,GAAAtC,CAAA,EAAAe,EAAAgE,MAAA,SAAA/E,GAAA,OAAA6C,QAAA7C,EAAA,EAAAuC,EAAAG,EAAAhC,WAAAU,EAAAsB,EAAAhC,UAAAvB,GAAA,0BAAA4B,EAAA2B,gBAAA3B,EAAAiE,MAAA,SAAAhF,EAAAJ,EAAAW,EAAAhB,EAAAT,QAAA,IAAAA,MAAAmG,SAAA,IAAAjE,EAAA,IAAA0B,EAAAnB,EAAAvB,EAAAJ,EAAAW,EAAAhB,GAAAT,GAAA,OAAAiC,EAAA2D,oBAAA9E,GAAAoB,IAAA2C,OAAAb,MAAA,SAAA9C,GAAA,OAAAA,EAAAiD,KAAAjD,EAAAD,MAAAiB,EAAA2C,MAAA,KAAApB,EAAAD,GAAAlB,EAAAkB,EAAAnB,EAAA,aAAAC,EAAAkB,EAAAtB,GAAA,0BAAAI,EAAAkB,EAAA,qDAAAvB,EAAAmE,KAAA,SAAAlF,GAAA,IAAAe,EAAAvB,OAAAQ,GAAAJ,EAAA,WAAAW,KAAAQ,EAAAnB,EAAAuE,KAAA5D,GAAA,OAAAX,EAAAuF,UAAA,SAAAxB,IAAA,KAAA/D,EAAA4E,QAAA,KAAAxE,EAAAJ,EAAAwF,MAAA,GAAApF,KAAAe,EAAA,OAAA4C,EAAA5D,MAAAC,EAAA2D,EAAAV,MAAA,EAAAU,CAAA,QAAAA,EAAAV,MAAA,EAAAU,CAAA,GAAA5C,EAAAsB,SAAAZ,EAAAf,UAAA,CAAAiE,YAAAlD,EAAA6C,MAAA,SAAAvD,GAAA,QAAAsE,KAAA,OAAA1B,KAAA,OAAAN,KAAA,KAAAC,MAAAtD,EAAA,KAAAiD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAArB,IAAA7B,EAAA,KAAAkE,WAAA1B,QAAA4B,IAAArD,EAAA,QAAAnB,KAAA,WAAAA,EAAA0F,OAAA,IAAA/E,EAAAtB,KAAA,KAAAW,KAAA2E,OAAA3E,EAAA2F,MAAA,WAAA3F,GAAAI,EAAA,EAAAwF,KAAA,gBAAAvC,MAAA,MAAAjD,EAAA,KAAAkE,WAAA,GAAAG,WAAA,aAAArE,EAAA4B,KAAA,MAAA5B,EAAA6B,IAAA,YAAA4D,IAAA,EAAAlC,kBAAA,SAAAxC,GAAA,QAAAkC,KAAA,MAAAlC,EAAA,IAAAnB,EAAA,cAAA8F,EAAAnF,EAAAhB,GAAA,OAAAyB,EAAAY,KAAA,QAAAZ,EAAAa,IAAAd,EAAAnB,EAAA+D,KAAApD,EAAAhB,IAAAK,EAAAsD,OAAA,OAAAtD,EAAAiC,IAAA7B,KAAAT,CAAA,SAAAA,EAAA,KAAA2E,WAAAM,OAAA,EAAAjF,GAAA,IAAAA,EAAA,KAAAT,EAAA,KAAAoF,WAAA3E,GAAAyB,EAAAlC,EAAAuF,WAAA,YAAAvF,EAAAgF,OAAA,OAAA4B,EAAA,UAAA5G,EAAAgF,QAAA,KAAAuB,KAAA,KAAAlG,EAAAoB,EAAAtB,KAAAH,EAAA,YAAAqC,EAAAZ,EAAAtB,KAAAH,EAAA,iBAAAK,GAAAgC,EAAA,SAAAkE,KAAAvG,EAAAiF,SAAA,OAAA2B,EAAA5G,EAAAiF,UAAA,WAAAsB,KAAAvG,EAAAkF,WAAA,OAAA0B,EAAA5G,EAAAkF,WAAA,SAAA7E,GAAA,QAAAkG,KAAAvG,EAAAiF,SAAA,OAAA2B,EAAA5G,EAAAiF,UAAA,YAAA5C,EAAA,MAAA6B,MAAA,kDAAAqC,KAAAvG,EAAAkF,WAAA,OAAA0B,EAAA5G,EAAAkF,WAAA,KAAAR,OAAA,SAAAxD,EAAAe,GAAA,QAAAnB,EAAA,KAAAsE,WAAAM,OAAA,EAAA5E,GAAA,IAAAA,EAAA,KAAAL,EAAA,KAAA2E,WAAAtE,GAAA,GAAAL,EAAAuE,QAAA,KAAAuB,MAAA9E,EAAAtB,KAAAM,EAAA,oBAAA8F,KAAA9F,EAAAyE,WAAA,KAAAlF,EAAAS,EAAA,OAAAT,IAAA,UAAAkB,GAAA,aAAAA,IAAAlB,EAAAgF,QAAA/C,MAAAjC,EAAAkF,aAAAlF,EAAA,UAAAkC,EAAAlC,IAAAuF,WAAA,UAAArD,EAAAY,KAAA5B,EAAAgB,EAAAa,IAAAd,EAAAjC,GAAA,KAAAoE,OAAA,YAAAS,KAAA7E,EAAAkF,WAAAhC,GAAA,KAAA2D,SAAA3E,EAAA,EAAA2E,SAAA,SAAA3F,EAAAe,GAAA,aAAAf,EAAA4B,KAAA,MAAA5B,EAAA6B,IAAA,gBAAA7B,EAAA4B,MAAA,aAAA5B,EAAA4B,KAAA,KAAA+B,KAAA3D,EAAA6B,IAAA,WAAA7B,EAAA4B,MAAA,KAAA6D,KAAA,KAAA5D,IAAA7B,EAAA6B,IAAA,KAAAqB,OAAA,cAAAS,KAAA,kBAAA3D,EAAA4B,MAAAb,IAAA,KAAA4C,KAAA5C,GAAAiB,CAAA,EAAA4D,OAAA,SAAA5F,GAAA,QAAAe,EAAA,KAAAmD,WAAAM,OAAA,EAAAzD,GAAA,IAAAA,EAAA,KAAAnB,EAAA,KAAAsE,WAAAnD,GAAA,GAAAnB,EAAAoE,aAAAhE,EAAA,YAAA2F,SAAA/F,EAAAyE,WAAAzE,EAAAqE,UAAAG,EAAAxE,GAAAoC,CAAA,kBAAAhC,GAAA,QAAAe,EAAA,KAAAmD,WAAAM,OAAA,EAAAzD,GAAA,IAAAA,EAAA,KAAAnB,EAAA,KAAAsE,WAAAnD,GAAA,GAAAnB,EAAAkE,SAAA9D,EAAA,KAAAO,EAAAX,EAAAyE,WAAA,aAAA9D,EAAAqB,KAAA,KAAArC,EAAAgB,EAAAsB,IAAAuC,EAAAxE,EAAA,QAAAL,CAAA,QAAAyD,MAAA,0BAAA6C,cAAA,SAAA9E,EAAAnB,EAAAW,GAAA,YAAA4C,SAAA,CAAAlC,SAAAoB,EAAAtB,GAAA2C,WAAA9D,EAAAgE,QAAArD,GAAA,cAAA2C,SAAA,KAAArB,IAAA7B,GAAAgC,CAAA,GAAAjB,CAAA,UAAA+E,EAAAvF,EAAAP,EAAAe,EAAAnB,EAAAL,EAAAyB,EAAA7B,GAAA,QAAAL,EAAAyB,EAAAS,GAAA7B,GAAAgC,EAAArC,EAAAiB,KAAA,OAAAQ,GAAA,YAAAQ,EAAAR,EAAA,CAAAzB,EAAAmE,KAAAjD,EAAAmB,GAAA8D,QAAArC,QAAAzB,GAAA2B,KAAAlD,EAAAL,EAAA,UAAAwG,EAAAxF,GAAA,sBAAAP,EAAA,KAAAe,EAAAiF,UAAA,WAAAf,SAAA,SAAArF,EAAAL,GAAA,IAAAyB,EAAAT,EAAA0F,MAAAjG,EAAAe,GAAA,SAAAmF,EAAA3F,GAAAuF,EAAA9E,EAAApB,EAAAL,EAAA2G,EAAAC,EAAA,OAAA5F,EAAA,UAAA4F,EAAA5F,GAAAuF,EAAA9E,EAAApB,EAAAL,EAAA2G,EAAAC,EAAA,QAAA5F,EAAA,CAAA2F,OAAA,OADO,SAASE,EAAcC,GAC5B,QAASA,EAAKC,QAAQ,WACxB,CAEO,SAASC,IACd,OAAOC,OAAOC,QAAUD,OAAOC,OAAOC,kBAClCF,OAAOC,OAAOC,mBAAqBC,GAAGC,YAAYC,QAClDL,OAAOC,OAAOC,mBAAqBC,GAAGC,YAAYE,OAClDN,OAAOC,OAAOC,mBAAqBC,GAAGC,YAAYG,UACxD,CAEO,SAASC,IAAuB,IAADC,EAC9BC,EAAaC,SAASC,cAAc,0BAC1C,OAAiB,OAAVF,QAAU,IAAVA,GAAmB,QAATD,EAAVC,EAAYG,eAAO,IAAAJ,OAAA,EAAnBA,EAAqBrF,IAC9B,CAEO,SAAS0F,EAAkBlB,GAChC,IAAImB,EAAcJ,SAASC,cAAc,sBAIzC,OAHIhB,IACFmB,EAAcJ,SAASC,cAAc,wBAElCG,EACEA,EAAYC,WAAWC,YADL,CAE3B,CAEO,SAASC,EAA2BC,EAAMvB,EAAexE,GAC9D,IAAIgG,EAAWpB,OAAOC,QAAUD,OAAOC,OAAOoB,YAAcrB,OAAOC,OAAOoB,cAAgB,EAK1F,MAJa,UAATjG,IACFgG,EAAWpB,OAAOsB,MAAQtB,OAAOsB,MAAMF,SAAW,GAG7CD,EADOL,EAAkBlB,GACVwB,CACxB,CAEO,SAASG,EAA+BJ,EAAMvB,EAAexE,GAClE,OAA+D,IAAxD8F,EAA2BC,EAAMvB,EAAexE,GAAc0F,EAAkBlB,EACzF,CAMO,SAAS4B,EAA0CC,GAExD,OAAOA,GADUzB,OAAOC,QAAUD,OAAOC,OAAOoB,YAAcrB,OAAOC,OAAOoB,cAAgB,GAC/D,GAC/B,CAEO,SAASK,EAAkBP,EAAM/F,GACtCuF,SAASgB,iBAAiB,iBAADC,OAAkBxG,IAAQY,SAAQ,SAAS+E,GAClE,IAAMc,EAAeX,EAA2BC,EAAMvB,EAAcmB,GAAc3F,GAClF2F,EAAYe,MAAMC,MAAQF,EAAe,IAC3C,GACF,CAEO,SAASG,EAAkBb,EAAM/F,GACtCuF,SAASgB,iBAAiB,iBAADC,OAAkBxG,IAAQY,SAAQ,SAAS6D,GAClEA,EAAKoC,UAAYC,EAAuBf,EAC1C,GACF,CAEO,SAASgB,EAAmB5H,EAAGqF,EAAexE,GACnD,GAAIoF,MAA0BpF,EAA9B,CAEA,IAAQgH,EAAmB7H,EAAnB6H,OAAQC,EAAW9H,EAAX8H,OACVjB,EAAoB,UAAThG,EAAmB4E,OAAOC,OAAOoB,cAAgBrB,OAAOsB,MAAMF,SAC3EkB,EAAUC,KAAKC,MAAMJ,EAAShB,EAAWN,EAAkBlB,IAE3DyC,EAAOI,UAAUC,QAAQ,uBAAyB,IACpDJ,EAAUd,EAA0Ca,EAAOxB,QAAQ8B,MAEnD,oBAAdN,EAAOO,KACTN,EAAUd,EAA0Ca,EAAOrB,WAAWH,QAAQ8B,MAEnE,UAATvH,EACF4E,OAAOC,OAAO4C,OAAOP,GAAS,GAE9BtC,OAAOsB,MAAMwB,YAAcR,EAG7BZ,EAAkBY,EAASlH,GAC3B4G,EAAkBM,EAASlH,EAnBe,CAoB5C,CAEO,SAAS8G,EAAuBf,GACrC,IACM4B,EAAUR,KAAKC,MAAMrB,EAAO,IAC5BmB,GAFM,KAEWC,KAAKC,MAAMrB,EAAiB,GAAV4B,GAAcC,YAAYjE,OAAOkE,GAC1E,MAAM,GAANrB,OAAUmB,EAAO,KAAAnB,OAAIU,EACvB,CAWO,SAAeY,EAAkBC,EAAAC,GAAA,OAAAC,EAAA5D,MAAC,KAADD,UAAA,CAcvC,SAAA6D,IAAA,OAAAA,EAAA9D,EAAAjF,IAAA8D,MAdM,SAAAkF,EAAkClI,EAAMmI,GAAO,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAxJ,IAAAS,MAAA,SAAAgJ,GAAA,cAAAA,EAAAlF,KAAAkF,EAAA5G,MAAA,OACmC,OAAjFqG,EAAQ7C,SAASC,cAAc,2BAA2BoD,aAAa,WAAUD,EAAA5G,KAAA,EAChE6C,OAAOiE,MAAM,UAADrC,OAAWxG,EAAI,KAAAwG,OAAI2B,EAAO,SAAS,CACpE7G,OAAQ,MACRwH,QAAS,CACP,mBAAoB,iBACpB,eAAgBV,EAChB,eAAgB,mBAChB,OAAU,oBAEZW,YAAa,gBACZ,KAAD,EATY,OAARV,EAAQM,EAAAlH,KAAAkH,EAAA5G,KAAA,EAU+CsG,EAASW,OAAO,KAAD,EAArC,OAAqCV,EAAAK,EAAAlH,KAApE8G,EAAKD,EAALC,MAAOC,EAAIF,EAAJE,KAAMC,EAAMH,EAANG,OAAoBC,EAASJ,EAArBW,WAAUN,EAAA/G,OAAA,SAChCyB,QAAQrC,QAAQ,CAAEuH,QAAOC,OAAMC,SAAQC,eAAY,yBAAAC,EAAA/E,OAAA,GAAAsE,EAAA,MAC3D7D,MAAA,KAAAD,UAAA,CAEM,SAAS8E,EAAqBC,GAMjC,IAADC,EALDjB,EAAOgB,EAAPhB,QACAI,EAAKY,EAALZ,MACAC,EAAIW,EAAJX,KACAC,EAAMU,EAANV,OACAC,EAASS,EAATT,UAEAnD,SAASC,cAAc,qBAAqBd,QAAQ,KAAK2E,KAAOX,EAChEnD,SAASC,cAAc,qBAAqB8D,IAAMf,EAElDhD,SAASC,cAAc,kBAAkBqB,UAAY4B,EACrDlD,SAASC,cAAc,oBAAoBqB,UAAY2B,EAEhB,QADvCY,EAAA7D,SACGC,cAAc,8BAAsB,IAAA4D,GADvCA,EAEIG,aAAa,UAAWpB,GAC5B5C,SAASC,cAAc,iBAAiB+D,aAAa,UAAWpB,EAClE,CAEO,SAASqB,IACdjE,SAASgB,iBAAiB,iBAAiB3F,SAAQ,SAAU+E,GAC3DA,EAAYe,MAAMC,MAAQ,KAC5B,GACF,CAEO,SAAS8C,EAAkBpD,GAChC,IAAMqD,EAAsC,EAA3BvC,KAAKC,MAAMf,EAAW,GAIvC,OAHgBd,SAASC,cAAc,iCAADgB,OACHkD,EAAQ,MAG7C,CAYA,SAASC,EAA6B/D,GACpC,IAAMgE,EAAShE,EAAWW,iBAAiB,2BAC3C3B,OAAOiF,YAAW,WAChBD,EAAOhJ,SAAQ,SAAUkJ,GACvBA,EAAMC,QACR,GACF,GAAG,IACL,CA4EO,SAASC,EAAWjE,EAAMkE,EAAQzF,GAAgC,IAAjBxE,EAAIoE,UAAAxB,OAAA,QAAAsH,IAAA9F,UAAA,GAAAA,UAAA,GAAG,QACvDiC,EAAWF,EAA+BJ,EAAMvB,EAAexE,GACjEyJ,EAAkBpD,GA1DxB,SAAkCA,EAAU4D,GAC1C,IAAMP,EAAsC,EAA3BvC,KAAKC,MAAMf,EAAW,GACvCd,SACGgB,iBAAiB,iCAADC,OAAkCkD,EAAQ,OAC1D9I,SAAQ,SAAUuJ,GACjB,IAAMC,EAAuBD,EAAQ3E,cAAc,oBAC7C6E,EAAYC,SAASF,EAAqBvD,WAAa,EAI7D,GAHAuD,EAAqBvD,UAAYwD,EAzBvC,SAA8BE,GAA0B,IAAvBJ,EAAOI,EAAPJ,QAASE,EAASE,EAATF,UACpCA,GAAa,KACfF,EAAQzD,MAAM8D,OAAS,OACvBL,EAAQzD,MAAMC,MAAQ,OACtBwD,EAAQzD,MAAM+D,OAAS,KAErBJ,GAAa,KACfF,EAAQzD,MAAM8D,OAAS,OACvBL,EAAQzD,MAAMC,MAAQ,OACtBwD,EAAQzD,MAAM+D,OAAS,KAErBJ,GAAa,MACfF,EAAQzD,MAAM8D,OAAS,OACvBL,EAAQzD,MAAMC,MAAQ,OACtBwD,EAAQzD,MAAM+D,OAAS,IAE3B,CAUMC,CAAsB,CAAEP,UAASE,eAE7BJ,EAAJ,CACA,IAAML,EAASrE,SACZC,cAAc,2BACdmF,WAAU,GACbf,EAAOgB,UAAUb,OAAO,UACxBI,EAAQU,YAAYjB,GAEpBD,EAA6BQ,EAPX,CAQpB,GACJ,CAwCIW,CAAyBzE,EAAU4D,GAtCvC,SAAwB5D,EAAU4D,EAAQjK,GACxC,IA3D8BmK,EA2DxBT,EAAsC,EAA3BvC,KAAKC,MAAMf,EAAW,GACjC0E,EAAexF,SAClBC,cAAc,uBACdmF,WAAU,GACbI,EAAarE,MAAMsE,KAAI,GAAAxE,OAAMkD,EAAQ,KACrCqB,EAAarE,MAAM8D,OAAS,OAC5BO,EAAarE,MAAMC,MAAQ,OAC3BoE,EAAarE,MAAMuE,OAAS,UAC5BF,EAAaH,UAAUM,IAAI,gBAC3BH,EAAaxB,aAAa,WAAYG,GACtCqB,EAAavF,cAAc,oBAAoBqB,UAAY,KArE7BsD,EAuEPY,GAtEfI,iBAAiB,cAAc,WACrChB,EAAQzD,MAAM+D,OAAS,GACzB,IAEAN,EAAQgB,iBAAiB,cAAc,WACrChB,EAAQzD,MAAM+D,OAAS,GACzB,IAkEKR,IACYc,EAAavF,cAAc,2BACnCoF,UAAUb,OAAO,UACxBJ,EAA6BoB,IAGlB,UAAT/K,EACkBuF,SAASC,cAC3B,mCAEUqF,YAAYE,EAAaJ,WAAU,IAE/CpF,SACGgB,iBAAiB,qBACjB3F,SAAQ,SAAU+E,GACjBA,EAAYkF,YAAYE,EAAaJ,WAAU,GACjD,GAEN,CAOIS,CAAe/E,EAAU4D,EAAQjK,EAErC,CAEO,SAASqL,EAAatF,EAAMoC,EAASnI,GAC1C,IAAMoI,EAAQ7C,SACXC,cAAc,2BACdoD,aAAa,WACV0C,EAvND,SAAqCvF,GAC1C,OAAOoB,KAAKoE,MAAMxF,EACpB,CAqNmByF,CAA4BzF,GACvC0F,EAAgB,CACpBH,WACAI,OAAQ,GAEG,UAAT1L,EACFyL,EAAcE,SAAWxD,EAEzBsD,EAAcG,SAAWzD,EAE3BvD,OAAOiE,MAAM,mBAAoB,CAC/BvH,OAAQ,OACRwH,QAAS,CACP,mBAAoB,iBACpB,eAAgBV,EAChB,eAAgB,mBAChByD,OAAQ,oBAEVC,KAAMC,KAAKC,UAAU,CAAEC,eAAgBR,IACvC1C,YAAa,eAEjB,CAEO,SAASmD,IACd3G,SAASgB,iBAAiB,iBAAiB3F,SAAQ,SAAUuL,GAC3DA,EAAKpC,QACP,GACF,CAEO,SAAeqC,EAAaC,EAAAC,EAAAC,GAAA,OAAAC,EAAAnI,MAAC,KAADD,UAAA,CAsBlC,SAAAoI,IAAA,OAAAA,EAAArI,EAAAjF,IAAA8D,MAtBM,SAAAyJ,EAA6BtE,EAASnI,EAAM0M,GAAc,IAAAtE,EAAAC,EAAAsE,EAAAC,EAAA,OAAA1N,IAAAS,MAAA,SAAAkN,GAAA,cAAAA,EAAApJ,KAAAoJ,EAAA9K,MAAA,WAC3D2K,EAAe,CAADG,EAAA9K,KAAA,eAAA8K,EAAAjL,OAAA,iBAKQ,OAH1BsK,IACM9D,EAAQ7C,SACXC,cAAc,2BACdoD,aAAa,WAAUiE,EAAA9K,KAAA,EACH6C,OAAOiE,MAAM,UAADrC,OAAWxG,EAAI,KAAAwG,OAAI2B,EAAO,cAAc,CACzEW,QAAS,CACP,mBAAoB,iBACpB,eAAgBV,EAChB,eAAgB,mBAChByD,OAAQ,oBAEV9C,YAAa,gBACZ,KAAD,EARY,OAARV,EAAQwE,EAAApL,KAAAoL,EAAA9K,KAAA,EASmBsG,EAASW,OAAO,KAAD,EAAA2D,EAAAE,EAAApL,KAAAmL,EAAAD,EAAxCG,UACRJ,GAAiB,QADA,IAAAE,EAAG,GAAEA,GAEZhM,SAAQ,WAEhBoJ,GAFkC5F,UAAAxB,OAAA,QAAAsH,IAAA9F,UAAA,GAAAA,UAAA,GAAG,CAAC,GAChBkH,UAAY,GACjB,GAAM,EAAMtL,EAC/B,IAAG,yBAAA6M,EAAAjJ,OAAA,GAAA6I,EAAA,KACJD,EAAAnI,MAAA,KAAAD,UAAA,CAEM,SAAS2I,IACVnI,OAAOC,QAAUD,OAAOC,OAAOkI,YACjCnI,OAAOC,OAAOkI,YAElB,CAEO,SAASC,EAAkB9G,GAEhC,IAAMsB,GADNtB,EAAQA,GAAStB,OAAOsB,OACPxB,QAAQ,iBAAiBe,QAAQ+B,GAClDjC,SAASgB,iBAAiB,eAAe3F,SAAQ,SAAUqM,IACrDA,EAAKpH,YAAc,GAAKoH,EAAKC,aAAe,KAC1CD,EAAKxH,QAAQ+B,KAAOA,GAAOyF,EAAKxH,QAAQ+B,KAAOA,GAAMtB,EAAMiH,QAC7DF,EAAKzH,cAAc,2BAA2BkB,MAAM0G,QAAU,QAC9DH,EAAKzH,cAAc,4BAA4BkB,MAAM0G,QAAU,SAE/DH,EAAKzH,cAAc,2BAA2BkB,MAAM0G,QAAU,OAC9DH,EAAKzH,cAAc,4BAA4BkB,MAAM0G,QAAU,SAGrE,GACF,CAEO,SAASC,IAGd,IAFA,IAAMC,EAAY/H,SAASgB,iBAAiB,SACxCgH,GAAY,EACPrQ,EAAI,EAAGA,EAAIoQ,EAAU1K,OAAQ1F,IAAK,CAEzC,IADcoQ,EAAUpQ,GACbiQ,OAAQ,CACjBI,GAAY,EACZ,KACF,CACF,CACA,OAAOA,CACT,CAEO,SAASC,IACdjI,SAASgB,iBAAiB,SAAS3F,SAAQ,SAAUsF,GAC/CA,IAAUA,EAAMiH,SAClBjH,EAAMuH,QACNT,EAAkB9G,GAEtB,GACF,CAyCO,SAASwH,EAAcvO,GAC5B,IAAMwO,EAAS/I,OAAOsB,MAAMxB,QAAQ,wBAC9B3C,EAAO4L,EAASA,EAAOC,mBAAqB,KAC9C7L,IACFA,EAAK8L,QACLrE,IACA5C,EAAkB,EAAG,UAGvBkH,EAAe/L,GACfgM,EAAmBhM,EACrB,CAEO,SAASgM,EAAmBtJ,GACjC,IAAMuJ,EAAiBzI,SAASC,cAAc,8BACzCwI,IAEDvJ,GAAQA,EAAKwJ,uBACfD,EAAepD,UAAUb,OAAO,6BAEhCiE,EAAepD,UAAUM,IAAI,6BAEjC,CAEO,SAAS4C,EAAerJ,GAC7B,IAAMyJ,EAAa3I,SAASC,cAAc,6BACrC0I,IAEDzJ,GAAQA,EAAKmJ,mBACfM,EAAWtD,UAAUb,OAAO,6BAE5BmE,EAAWtD,UAAUM,IAAI,6BAE7B,CAEO,SAASiD,IACd,IAAMR,EAASpI,SAASC,cAAc,0BACV,UAAxBmI,EAAOlI,QAAQzF,KACb2E,KACFgJ,EAAOnI,cAAc,cAAcoF,UAAUM,IAAI,UACjDyC,EAAOnI,cAAc,eAAeoF,UAAUb,OAAO,YAErD4D,EAAOnI,cAAc,cAAcoF,UAAUb,OAAO,UACpD4D,EAAOnI,cAAc,eAAeoF,UAAUM,IAAI,WAGhDtG,OAAOsB,OAAStB,OAAOsB,MAAMiH,QAC/BQ,EAAOnI,cAAc,cAAcoF,UAAUb,OAAO,UACpD4D,EAAOnI,cAAc,eAAeoF,UAAUM,IAAI,YAElDyC,EAAOnI,cAAc,cAAcoF,UAAUM,IAAI,UACjDyC,EAAOnI,cAAc,eAAeoF,UAAUb,OAAO,UAG3D,CAwBA,SAASqE,IACQ7I,SAASC,cAAc,6BAC/B2F,iBAAiB,SAAS,SAAUhM,GAzGtC,IACC4C,EAyG0B,UAA1BqD,MAzGArD,EAAOwD,SAASC,cAAc,wCAElCzD,EAAK8L,QACLrE,IACA5C,EAAkB,EAAG,UAGvBmH,EAAmBhM,GACnB+L,EAAe/L,IAoGX2L,GAEJ,GACF,CAEA,SAASW,IACQ9I,SAASC,cAAc,8BAC/B2F,iBAAiB,SAAS,SAAUhM,GAlItC,IACCmP,EAkI0B,UAA1BlJ,MAlIAkJ,EAAW/I,SAASC,cACxB,uBACAyI,0BAEAK,EAAST,QACTrE,IACA5C,EAAkB,EAAG,UAGvBmH,EAAmBO,GACnBR,EAAeQ,IAeV,WACL,IAAMX,EAAS/I,OAAOsB,MAAMxB,QAAQ,wBAC9B4J,EAAWX,EAASA,EAAOM,uBAAyB,KACtDK,IACFA,EAAST,QACTrE,IACA5C,EAAkB,EAAG,UAGvBmH,EAAmBO,GACnBR,EAAeQ,EACjB,CAiGMC,EAEJ,GACF,CAiBO,SAASC,EAAqBxO,GACnC,IAfMyO,EAeAC,EAAcnJ,SAASoJ,eAAe,gBACxC3O,IACF0O,EAAYlJ,cAAc,0BAA0B+D,aAAa,YAAavJ,GAC9E0O,EAAYlJ,cAAc,8BAA8B+D,aAAa,YAAavJ,GAClF0O,EAAYlJ,cAAc,6BAA6B+D,aAAa,YAAavJ,IAE/E0O,EAAYrH,UAAUC,QAAQ,WAAa,IAC7CoH,EAAY9D,UAAUb,OAAO,UAC7BnF,OAAOiF,YAAW,WAEhBtE,SAASqJ,qBAAqB,QAAQ,GAAGhE,UAAUM,IAAI,eACvDwD,EAAYhI,MAAMmI,QAAU,CAC9B,GAAG,KAxEA,WACLV,IACA,IAAMR,EAASpI,SAASC,cAAc,0BACtCmI,EAAOxC,iBAAiB,SAAS,WACH,UAAxBwC,EAAOlI,QAAQzF,KACb2E,IACFC,OAAOC,OAAOkI,aAEdnI,OAAOC,OAAOiK,aAGZlK,OAAOsB,OAAStB,OAAOsB,MAAMiH,OAC/BvI,OAAOsB,MAAM6I,OAEbnK,OAAOsB,MAAMuH,QAEfT,EAAkBpI,OAAOsB,OACzBiI,IAEJ,GACF,CAsDIa,GACAZ,IACAC,KA/BII,EAAalJ,SAASC,cAAc,yBAE1CiJ,EAAWtD,iBAAiB,SAAS,SAAUhM,GAC7C,IAAMa,EAAOoF,IACPsC,EACK,UAAT1H,EACI4E,OAAOsB,MAAMwB,YACb9C,OAAOC,OAAOoK,iBACd9G,EAAUhJ,EAAE+P,cAAczJ,QAAQ+B,GACxCwC,EAAWtC,GAAa,EAAOlD,EAAciK,GAAazO,GAC1DqL,EAAa3D,EAAaS,EAASnI,EACrC,IAuBF,C,g3BC3gBAd,EAAA,kBAAAC,CAAA,MAAAf,EAAAe,EAAA,GAAAnB,EAAAJ,OAAAkB,UAAAH,EAAAX,EAAAe,eAAApB,EAAAC,OAAAC,gBAAA,SAAAO,EAAAe,EAAAnB,GAAAI,EAAAe,GAAAnB,EAAAG,KAAA,EAAAjB,EAAA,mBAAAe,cAAA,GAAAmB,EAAAlC,EAAAmC,UAAA,aAAA9B,EAAAL,EAAAoC,eAAA,kBAAAC,EAAArC,EAAAgB,aAAA,yBAAAsB,EAAApB,EAAAe,EAAAnB,GAAA,OAAAJ,OAAAC,eAAAO,EAAAe,EAAA,CAAAhB,MAAAH,EAAAF,YAAA,EAAA2B,cAAA,EAAAC,UAAA,IAAAtB,EAAAe,EAAA,KAAAK,EAAA,aAAApB,GAAAoB,EAAA,SAAApB,EAAAe,EAAAnB,GAAA,OAAAI,EAAAe,GAAAnB,CAAA,WAAA2B,EAAAvB,EAAAe,EAAAnB,EAAAW,GAAA,IAAAzB,EAAAiC,KAAAL,qBAAAc,EAAAT,EAAAS,EAAAR,EAAAxB,OAAAY,OAAAtB,EAAA4B,WAAAvB,EAAA,IAAAsC,EAAAlB,GAAA,WAAAhB,EAAAyB,EAAA,WAAAjB,MAAA2B,EAAA1B,EAAAJ,EAAAT,KAAA6B,CAAA,UAAAW,EAAA3B,EAAAe,EAAAnB,GAAA,WAAAgC,KAAA,SAAAC,IAAA7B,EAAAf,KAAA8B,EAAAnB,GAAA,OAAAI,GAAA,OAAA4B,KAAA,QAAAC,IAAA7B,EAAA,EAAAe,EAAAQ,OAAA,IAAAO,EAAA,iBAAA/C,EAAA,iBAAAgD,EAAA,YAAAlB,EAAA,YAAAmB,EAAA,YAAAR,IAAA,UAAAS,IAAA,UAAAC,IAAA,KAAAtB,EAAA,GAAAQ,EAAAR,EAAAI,GAAA,8BAAA5B,EAAAI,OAAA2C,eAAAC,EAAAhD,OAAAiD,EAAA,MAAAD,OAAAxC,GAAAW,EAAAtB,KAAAmD,EAAApB,KAAAJ,EAAAwB,GAAA,IAAAE,EAAAJ,EAAAxB,UAAAc,EAAAd,UAAAlB,OAAAY,OAAAQ,GAAA,SAAA2B,EAAAvC,GAAA,0BAAAwC,SAAA,SAAAzB,GAAAK,EAAApB,EAAAe,GAAA,SAAAf,GAAA,YAAAyC,QAAA1B,EAAAf,EAAA,gBAAA0C,EAAA1C,EAAAe,GAAA,SAAA4B,EAAA/C,EAAAL,EAAAT,EAAAkC,GAAA,IAAA7B,EAAAwC,EAAA3B,EAAAJ,GAAAI,EAAAT,GAAA,aAAAJ,EAAAyC,KAAA,KAAAT,EAAAhC,EAAA0C,IAAAC,EAAAX,EAAApB,MAAA,OAAA+B,GAAA,iBAAAA,GAAAvB,EAAAtB,KAAA6C,EAAA,WAAAf,EAAA6B,QAAAd,EAAAe,SAAAC,MAAA,SAAA9C,GAAA2C,EAAA,OAAA3C,EAAAlB,EAAAkC,EAAA,aAAAhB,GAAA2C,EAAA,QAAA3C,EAAAlB,EAAAkC,EAAA,IAAAD,EAAA6B,QAAAd,GAAAgB,MAAA,SAAA9C,GAAAmB,EAAApB,MAAAC,EAAAlB,EAAAqC,EAAA,aAAAnB,GAAA,OAAA2C,EAAA,QAAA3C,EAAAlB,EAAAkC,EAAA,IAAAA,EAAA7B,EAAA0C,IAAA,KAAAjC,EAAAL,EAAA,gBAAAQ,MAAA,SAAAC,EAAAO,GAAA,SAAAwC,IAAA,WAAAhC,GAAA,SAAAA,EAAAnB,GAAA+C,EAAA3C,EAAAO,EAAAQ,EAAAnB,EAAA,WAAAA,MAAAkD,KAAAC,QAAA,aAAArB,EAAAX,EAAAnB,EAAAW,GAAA,IAAAhB,EAAAuC,EAAA,gBAAAhD,EAAAkC,GAAA,GAAAzB,IAAAwC,EAAA,MAAAiB,MAAA,mCAAAzD,IAAAsB,EAAA,cAAA/B,EAAA,MAAAkC,EAAA,OAAAjB,MAAAC,EAAAiD,MAAA,OAAA1C,EAAA2C,OAAApE,EAAAyB,EAAAsB,IAAAb,IAAA,KAAA7B,EAAAoB,EAAA4C,SAAA,GAAAhE,EAAA,KAAAgC,EAAAiC,EAAAjE,EAAAoB,GAAA,GAAAY,EAAA,IAAAA,IAAAa,EAAA,gBAAAb,CAAA,cAAAZ,EAAA2C,OAAA3C,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA2C,OAAA,IAAA3D,IAAAuC,EAAA,MAAAvC,EAAAsB,EAAAN,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,IAAA,gBAAAtB,EAAA2C,QAAA3C,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAAtC,EAAAwC,EAAA,IAAAnB,EAAAe,EAAAZ,EAAAnB,EAAAW,GAAA,cAAAK,EAAAgB,KAAA,IAAArC,EAAAgB,EAAA0C,KAAApC,EAAA9B,EAAA6B,EAAAiB,MAAAG,EAAA,gBAAAjC,MAAAa,EAAAiB,IAAAoB,KAAA1C,EAAA0C,KAAA,WAAArC,EAAAgB,OAAArC,EAAAsB,EAAAN,EAAA2C,OAAA,QAAA3C,EAAAsB,IAAAjB,EAAAiB,IAAA,YAAAuB,EAAArC,EAAAnB,GAAA,IAAAW,EAAAX,EAAAsD,OAAA3D,EAAAwB,EAAAE,SAAAV,GAAA,GAAAhB,IAAAS,EAAA,OAAAJ,EAAAuD,SAAA,eAAA5C,GAAAQ,EAAAE,SAAA,SAAArB,EAAAsD,OAAA,SAAAtD,EAAAiC,IAAA7B,EAAAoD,EAAArC,EAAAnB,GAAA,UAAAA,EAAAsD,SAAA,WAAA3C,IAAAX,EAAAsD,OAAA,QAAAtD,EAAAiC,IAAA,IAAA4B,UAAA,oCAAAlD,EAAA,aAAAyB,EAAA,IAAAlD,EAAA6C,EAAApC,EAAAwB,EAAAE,SAAArB,EAAAiC,KAAA,aAAA/C,EAAA8C,KAAA,OAAAhC,EAAAsD,OAAA,QAAAtD,EAAAiC,IAAA/C,EAAA+C,IAAAjC,EAAAuD,SAAA,KAAAnB,EAAA,IAAAhB,EAAAlC,EAAA+C,IAAA,OAAAb,IAAAiC,MAAArD,EAAAmB,EAAA2C,YAAA1C,EAAAjB,MAAAH,EAAA+D,KAAA5C,EAAA6C,QAAA,WAAAhE,EAAAsD,SAAAtD,EAAAsD,OAAA,OAAAtD,EAAAiC,IAAA7B,GAAAJ,EAAAuD,SAAA,KAAAnB,GAAAhB,GAAApB,EAAAsD,OAAA,QAAAtD,EAAAiC,IAAA,IAAA4B,UAAA,oCAAA7D,EAAAuD,SAAA,KAAAnB,EAAA,UAAA6B,EAAA7D,GAAA,IAAAe,EAAA,CAAA+C,OAAA9D,EAAA,SAAAA,IAAAe,EAAAgD,SAAA/D,EAAA,SAAAA,IAAAe,EAAAiD,WAAAhE,EAAA,GAAAe,EAAAkD,SAAAjE,EAAA,SAAAkE,WAAAC,KAAApD,EAAA,UAAAqD,EAAApE,GAAA,IAAAe,EAAAf,EAAAqE,YAAA,GAAAtD,EAAAa,KAAA,gBAAAb,EAAAc,IAAA7B,EAAAqE,WAAAtD,CAAA,UAAAU,EAAAzB,GAAA,KAAAkE,WAAA,EAAAJ,OAAA,SAAA9D,EAAAwC,QAAAqB,EAAA,WAAAS,OAAA,YAAAjC,EAAAtB,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAnB,EAAAmB,EAAAC,GAAA,GAAApB,EAAA,OAAAA,EAAAX,KAAA8B,GAAA,sBAAAA,EAAA4C,KAAA,OAAA5C,EAAA,IAAAwD,MAAAxD,EAAAyD,QAAA,KAAAjF,GAAA,EAAAT,EAAA,SAAA6E,IAAA,OAAApE,EAAAwB,EAAAyD,QAAA,GAAAjE,EAAAtB,KAAA8B,EAAAxB,GAAA,OAAAoE,EAAA5D,MAAAgB,EAAAxB,GAAAoE,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAA5D,MAAAC,EAAA2D,EAAAV,MAAA,EAAAU,CAAA,SAAA7E,EAAA6E,KAAA7E,CAAA,YAAA2E,iBAAA1C,EAAA,2BAAAkB,EAAAvB,UAAAwB,EAAA3C,EAAA+C,EAAA,eAAAvC,MAAAmC,EAAAb,cAAA,IAAA9B,EAAA2C,EAAA,eAAAnC,MAAAkC,EAAAZ,cAAA,IAAAY,EAAAwC,YAAArD,EAAAc,EAAAf,EAAA,qBAAAJ,EAAA2D,oBAAA,SAAA1E,GAAA,IAAAe,EAAA,mBAAAf,KAAA2E,YAAA,QAAA5D,QAAAkB,GAAA,uBAAAlB,EAAA0D,aAAA1D,EAAA1B,MAAA,EAAA0B,EAAA6D,KAAA,SAAA5E,GAAA,OAAAR,OAAAqF,eAAArF,OAAAqF,eAAA7E,EAAAkC,IAAAlC,EAAA8E,UAAA5C,EAAAd,EAAApB,EAAAmB,EAAA,sBAAAnB,EAAAU,UAAAlB,OAAAY,OAAAkC,GAAAtC,CAAA,EAAAe,EAAAgE,MAAA,SAAA/E,GAAA,OAAA6C,QAAA7C,EAAA,EAAAuC,EAAAG,EAAAhC,WAAAU,EAAAsB,EAAAhC,UAAAvB,GAAA,0BAAA4B,EAAA2B,gBAAA3B,EAAAiE,MAAA,SAAAhF,EAAAJ,EAAAW,EAAAhB,EAAAT,QAAA,IAAAA,MAAAmG,SAAA,IAAAjE,EAAA,IAAA0B,EAAAnB,EAAAvB,EAAAJ,EAAAW,EAAAhB,GAAAT,GAAA,OAAAiC,EAAA2D,oBAAA9E,GAAAoB,IAAA2C,OAAAb,MAAA,SAAA9C,GAAA,OAAAA,EAAAiD,KAAAjD,EAAAD,MAAAiB,EAAA2C,MAAA,KAAApB,EAAAD,GAAAlB,EAAAkB,EAAAnB,EAAA,aAAAC,EAAAkB,EAAAtB,GAAA,0BAAAI,EAAAkB,EAAA,qDAAAvB,EAAAmE,KAAA,SAAAlF,GAAA,IAAAe,EAAAvB,OAAAQ,GAAAJ,EAAA,WAAAW,KAAAQ,EAAAnB,EAAAuE,KAAA5D,GAAA,OAAAX,EAAAuF,UAAA,SAAAxB,IAAA,KAAA/D,EAAA4E,QAAA,KAAAxE,EAAAJ,EAAAwF,MAAA,GAAApF,KAAAe,EAAA,OAAA4C,EAAA5D,MAAAC,EAAA2D,EAAAV,MAAA,EAAAU,CAAA,QAAAA,EAAAV,MAAA,EAAAU,CAAA,GAAA5C,EAAAsB,SAAAZ,EAAAf,UAAA,CAAAiE,YAAAlD,EAAA6C,MAAA,SAAAvD,GAAA,QAAAsE,KAAA,OAAA1B,KAAA,OAAAN,KAAA,KAAAC,MAAAtD,EAAA,KAAAiD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAArB,IAAA7B,EAAA,KAAAkE,WAAA1B,QAAA4B,IAAArD,EAAA,QAAAnB,KAAA,WAAAA,EAAA0F,OAAA,IAAA/E,EAAAtB,KAAA,KAAAW,KAAA2E,OAAA3E,EAAA2F,MAAA,WAAA3F,GAAAI,EAAA,EAAAwF,KAAA,gBAAAvC,MAAA,MAAAjD,EAAA,KAAAkE,WAAA,GAAAG,WAAA,aAAArE,EAAA4B,KAAA,MAAA5B,EAAA6B,IAAA,YAAA4D,IAAA,EAAAlC,kBAAA,SAAAxC,GAAA,QAAAkC,KAAA,MAAAlC,EAAA,IAAAnB,EAAA,cAAA8F,EAAAnF,EAAAhB,GAAA,OAAAyB,EAAAY,KAAA,QAAAZ,EAAAa,IAAAd,EAAAnB,EAAA+D,KAAApD,EAAAhB,IAAAK,EAAAsD,OAAA,OAAAtD,EAAAiC,IAAA7B,KAAAT,CAAA,SAAAA,EAAA,KAAA2E,WAAAM,OAAA,EAAAjF,GAAA,IAAAA,EAAA,KAAAT,EAAA,KAAAoF,WAAA3E,GAAAyB,EAAAlC,EAAAuF,WAAA,YAAAvF,EAAAgF,OAAA,OAAA4B,EAAA,UAAA5G,EAAAgF,QAAA,KAAAuB,KAAA,KAAAlG,EAAAoB,EAAAtB,KAAAH,EAAA,YAAAqC,EAAAZ,EAAAtB,KAAAH,EAAA,iBAAAK,GAAAgC,EAAA,SAAAkE,KAAAvG,EAAAiF,SAAA,OAAA2B,EAAA5G,EAAAiF,UAAA,WAAAsB,KAAAvG,EAAAkF,WAAA,OAAA0B,EAAA5G,EAAAkF,WAAA,SAAA7E,GAAA,QAAAkG,KAAAvG,EAAAiF,SAAA,OAAA2B,EAAA5G,EAAAiF,UAAA,YAAA5C,EAAA,MAAA6B,MAAA,kDAAAqC,KAAAvG,EAAAkF,WAAA,OAAA0B,EAAA5G,EAAAkF,WAAA,KAAAR,OAAA,SAAAxD,EAAAe,GAAA,QAAAnB,EAAA,KAAAsE,WAAAM,OAAA,EAAA5E,GAAA,IAAAA,EAAA,KAAAL,EAAA,KAAA2E,WAAAtE,GAAA,GAAAL,EAAAuE,QAAA,KAAAuB,MAAA9E,EAAAtB,KAAAM,EAAA,oBAAA8F,KAAA9F,EAAAyE,WAAA,KAAAlF,EAAAS,EAAA,OAAAT,IAAA,UAAAkB,GAAA,aAAAA,IAAAlB,EAAAgF,QAAA/C,MAAAjC,EAAAkF,aAAAlF,EAAA,UAAAkC,EAAAlC,IAAAuF,WAAA,UAAArD,EAAAY,KAAA5B,EAAAgB,EAAAa,IAAAd,EAAAjC,GAAA,KAAAoE,OAAA,YAAAS,KAAA7E,EAAAkF,WAAAhC,GAAA,KAAA2D,SAAA3E,EAAA,EAAA2E,SAAA,SAAA3F,EAAAe,GAAA,aAAAf,EAAA4B,KAAA,MAAA5B,EAAA6B,IAAA,gBAAA7B,EAAA4B,MAAA,aAAA5B,EAAA4B,KAAA,KAAA+B,KAAA3D,EAAA6B,IAAA,WAAA7B,EAAA4B,MAAA,KAAA6D,KAAA,KAAA5D,IAAA7B,EAAA6B,IAAA,KAAAqB,OAAA,cAAAS,KAAA,kBAAA3D,EAAA4B,MAAAb,IAAA,KAAA4C,KAAA5C,GAAAiB,CAAA,EAAA4D,OAAA,SAAA5F,GAAA,QAAAe,EAAA,KAAAmD,WAAAM,OAAA,EAAAzD,GAAA,IAAAA,EAAA,KAAAnB,EAAA,KAAAsE,WAAAnD,GAAA,GAAAnB,EAAAoE,aAAAhE,EAAA,YAAA2F,SAAA/F,EAAAyE,WAAAzE,EAAAqE,UAAAG,EAAAxE,GAAAoC,CAAA,kBAAAhC,GAAA,QAAAe,EAAA,KAAAmD,WAAAM,OAAA,EAAAzD,GAAA,IAAAA,EAAA,KAAAnB,EAAA,KAAAsE,WAAAnD,GAAA,GAAAnB,EAAAkE,SAAA9D,EAAA,KAAAO,EAAAX,EAAAyE,WAAA,aAAA9D,EAAAqB,KAAA,KAAArC,EAAAgB,EAAAsB,IAAAuC,EAAAxE,EAAA,QAAAL,CAAA,QAAAyD,MAAA,0BAAA6C,cAAA,SAAA9E,EAAAnB,EAAAW,GAAA,YAAA4C,SAAA,CAAAlC,SAAAoB,EAAAtB,GAAA2C,WAAA9D,EAAAgE,QAAArD,GAAA,cAAA2C,SAAA,KAAArB,IAAA7B,GAAAgC,CAAA,GAAAjB,CAAA,UAAA+E,EAAAvF,EAAAP,EAAAe,EAAAnB,EAAAL,EAAAyB,EAAA7B,GAAA,QAAAL,EAAAyB,EAAAS,GAAA7B,GAAAgC,EAAArC,EAAAiB,KAAA,OAAAQ,GAAA,YAAAQ,EAAAR,EAAA,CAAAzB,EAAAmE,KAAAjD,EAAAmB,GAAA8D,QAAArC,QAAAzB,GAAA2B,KAAAlD,EAAAL,EAAA,CAuBAiH,OAAOC,OAAS,KAChB,IAAIsK,EAAwB,KACxBzH,EAAc,EACd0H,EAAiB,KACjB1C,GAAiB,EAuDrB,SAAS2C,EAAoBrJ,GAC3B,IAAIsJ,EAAQtJ,EAASsJ,MAAM,2BAY3B,OAVAA,EAAQA,EAAM3L,MAAM,GAAG4L,KAAI,SAASC,GAClC,GAAS,MAALA,EACF,OAAOA,EAAEC,QAAQ,KAAM,GAE3B,IAMe,MAJAnF,SAASgF,EAAM,KAAO,GAIL,IAHfhF,SAASgF,EAAM,KAAO,IACtBhF,SAASgF,EAAM,KAAO,EAGzC,CAEA,SAASI,IACPnK,SAASgB,iBAAiB,cAAc3F,QAAO,eAnGjDjC,EAmGiDwK,GAnGjDxK,EAmGiDO,IAAA8D,MAAC,SAAAkF,EAAeyH,GAAG,IAAAC,EAAAC,EAAAxH,EAAAyH,EAAAC,EAAAC,EAAAC,EAAAC,EAAAlK,EAAAmK,EAAA,OAAAjR,IAAAS,MAAA,SAAAgJ,GAAA,cAAAA,EAAAlF,KAAAkF,EAAA5G,MAAA,YAC5D4N,GAAOA,EAAIlK,SAAWkK,EAAIlK,QAAQ2K,WAAS,CAAAzH,EAAA5G,KAAA,SAEgC,OADvE6N,EAAYS,mBAAmBV,EAAIlK,QAAQ2K,WAC3CP,EAAStK,SAASC,cAAc,yBAAyBC,QAAQoK,OAAMlH,EAAA5G,KAAA,EACtD6C,OAAOiE,MAAM,gEAADrC,OAAiEoJ,EAAS,SAAApJ,OAAQqJ,EAAM,yBAAuB,OAApI,OAARxH,EAAQM,EAAAlH,KAAAkH,EAAA5G,KAAA,EACKsG,EAASW,OAAM,UAAAL,EAAA2H,GAAA3H,EAAAlH,KAAAkH,EAAA2H,GAAA,CAAA3H,EAAA5G,KAAA,SAAA4G,EAAA2H,GAAI,CAAC,EAAE,KAAD,GAAlCR,EAAInH,EAAA2H,GAAAP,EACaD,EAAfE,MACFC,GADED,OAAK,IAAAD,EAAG,GAAEA,GACCnN,OAAS,EAAIoN,EAAM,GAAK,CAAC,EAACE,EACbD,EAAxBM,eACAvK,QADc,IAAAkK,EAAG,CAAC,EAACA,GACnBlK,SACFmK,EAAoBnK,EAAWqJ,EAAoBrJ,GAAY,KACrE2J,EAAInK,cAAc,oBAAoBqB,UAAYC,YAAuBqJ,GAAmB,yBAAAxH,EAAA/E,OAAA,GAAAsE,EAAA,IA9GlG,eAAA9J,EAAA,KAAAe,EAAAiF,UAAA,WAAAf,SAAA,SAAArF,EAAAL,GAAA,IAAAyB,EAAAT,EAAA0F,MAAAjG,EAAAe,GAAA,SAAAmF,EAAA3F,GAAAuF,EAAA9E,EAAApB,EAAAL,EAAA2G,EAAAC,EAAA,OAAA5F,EAAA,UAAA4F,EAAA5F,GAAAuF,EAAA9E,EAAApB,EAAAL,EAAA2G,EAAAC,EAAA,QAAA5F,EAAA,CAAA2F,OAAA,QAgHG,gBAAAyD,GAAA,OAAAoB,EAAA9E,MAAA,KAAAD,UAAA,EAb8C,GAcjD,CAEA,SAASoM,IACP,IAAMxK,EAAWnB,OAAOoB,cACxBV,SAASgB,iBAAiB,eAAe3F,SAAQ,SAAS6D,GACxDA,EAAKoC,UAAYC,YAAuBd,EAC1C,GACF,CAcA,SAASyK,EAAiBhM,GACxB,IAAMiM,EAAqBnL,SAASC,cAAc,uBAC9CkL,GACFA,EAAmB9F,UAAUb,OAAO,sBAEtCtF,EAAKmG,UAAUM,IAAI,sBAEnBsD,YAAqB,SAErB1G,YAAmB,QAASsH,GAAgBlO,MAAK,SAAAqJ,GAK7C,IAJFhC,EAAKgC,EAALhC,MACAC,EAAI+B,EAAJ/B,KACAC,EAAM8B,EAAN9B,OACAC,EAAS6B,EAAT7B,UAEAQ,YAAsB,CACpBX,QACAE,SACAD,OACAE,YACAP,QAASiH,GAEb,IAEAtB,YAAerJ,GACfsJ,YAAmBtJ,EACrB,CAnIAG,OAAOyL,mBAAqB,SAASM,GACnC,GAAIA,EAAKrJ,QAAQ,SAAW,EAAG,CAC7B,IACMgI,EAAQqB,EAAKrB,MADJ,6EAEf,SAAQA,GAAwB,IAAjBA,EAAM,GAAG1M,SAAa0M,EAAM,EAC7C,CACA,OAAOqB,CACT,EA8HA/L,OAAOgM,mBAAqB,SAAUC,GACpC,IAAMpM,EAAOc,SAASC,cAAc,aAADgB,OAAcqK,IACjDzB,EAAiByB,EACjBnE,GAAiB,EACjB+D,EAAiBhM,GACjByH,cACA1C,cACAkG,IACAoB,EAAE,yBAAyBC,KAAK,gBAAiBF,EACnD,EAEAjM,OAAOoM,UAAY,SAAU7R,GAAI,IAADiK,EAC9BjK,EAAE8R,iBACF,IAAMb,EAAYjR,EAAE+P,cAAczJ,QAAQ2K,UACpCS,EAAU1R,EAAE+P,cAAczJ,QAAQoL,QACxCzB,EAAiByB,EACjB,IAAMjB,EAAYS,mBAAmBD,GACrCvL,OAAOqM,cAActB,GAEoB,QADzCxG,EAAA7D,SACGC,cAAc,gCAAwB,IAAA4D,GADzCA,EAEIG,aAAa,gBAAiBsH,GAClCJ,EAAiBtR,EAAE+P,eAEnBxC,GAAiB,EACjBR,cACA1C,aACF,EA0CA5E,OAAOuM,YAAc,SAAUC,GAAQ,IAADC,EACpCC,EAA+CF,GAAS,CAAC,EAAjDjJ,EAAOmJ,EAAPnJ,QAAOoJ,EAAAD,EAAE9G,cAAM,IAAA+G,EAAG,IAAGA,EAAAC,EAAAF,EAAE3K,aAAK,IAAA6K,EAAG,IAAGA,EACpCC,EAAmBtJ,EAAO,wBAAA3B,OACJ2B,GACxB,uBACAgC,EAAU,KACd5E,SAASgB,iBAAiB,IAADC,OAAKiL,IAAoB7Q,SAAQ,SAAU8Q,IAEhEA,EAAG7L,YAAc,GACjB6L,EAAGhN,QAAQ,eAAD8B,OAAgB2B,IAAWtC,YAAc,KAEnDsE,EAAUuH,EAEd,IACA,IAAMtB,EAAmB,QAAViB,EAAGlH,SAAO,IAAAkH,GAAS,QAATA,EAAPA,EAAS5L,eAAO,IAAA4L,OAAA,EAAhBA,EAAkBjB,UACpC,GAAIA,EAAW,CACTxL,OAAOC,QACTD,OAAOC,OAAOkI,aAGhB,IAAM6C,EAAYS,mBAAmBD,GACrCvL,OAAS,IAAIE,GAAG4M,OAAOxH,EAAS,CAC9BK,SACA7D,QACAkK,QAASjB,EACTgC,WAAY,CACVC,YAAa,GAEfC,OAAQ,CACNC,QAASC,cACTC,cAAeC,sBAGrB,CACF,EAGAtN,OAAOuN,wBAA0B,WAC/BhB,aACF,EAEAvM,OAAOoN,cAAgB,SAAU7S,GAAI,IAADiT,EA1E5B3D,EA2EN+B,KA3EM/B,EAAalJ,SAASC,cAAc,+BAG1CiJ,EAAWtD,iBAAiB,SAAS,WACnCnB,YAAWtC,GAAa,EAAOlD,YAAciK,IAC7CpD,YAAa3D,EAAa0H,EAAgB,QAC5C,IAIA7J,SACGgB,iBAAiB,qBACjB3F,SAAQ,SAAU+E,GACjBA,EAAYwF,iBAAiB,SAAS,SAAUhM,GAC9C4H,YAAmB5H,EAAGqF,YAAcmB,GAAc,QACpD,GACF,IAtBFJ,SAASgB,iBAAiB,cAAc3F,SAAQ,SAAU+O,GACxDA,EAAIxE,iBAAiB,QAAS6F,UAChC,IArEF,SAA0BH,GAAU,IAADwB,EACiB,QAAlDA,EAAAvB,EAAE,eAADtK,OAAgBqK,EAAO,mCAA0B,IAAAwB,GAAlDA,EAAoDC,SAAS,QAC7DzB,EAAUA,GAENtL,SAASC,cAAc,yBAAyBC,QAAQoL,QAC5DzB,EAAiByB,EACjB,IAAM0B,EAAQhN,SAASoJ,eAAe,YAADnI,OAAaqK,IAC9C0B,GAAOA,EAAM3H,UAAUM,IAAI,qBACjC,CAgJEsH,CAAmC,QAAnBJ,EAACjT,EAAE8H,OAAOvG,EAAE+E,eAAO,IAAA2M,OAAA,EAAlBA,EAAoBvB,SACrCnB,IAEenK,SAASC,cAAc,mBAEpCZ,OAAOC,OAAOiK,WAElB,EAEAlK,OAAOsN,oBAAsB,SAASO,GAEpC,GADAC,cAAcvD,GACVsD,EAAM3C,OAAS/K,GAAGC,YAAY2N,QAAS,CACzC,IAAI9B,EAAUhM,OAAOY,QAAUZ,OAAOY,QAAQoL,QAAUzB,EACpDA,IAAmByB,IACrBjM,OAAOC,OAAOkI,aACdqC,EAAiByB,EACjBjM,OAAOC,OAAS4N,EAAMxL,QAExByF,GAAiB,EACjBN,YAAcgD,EAAgB,QAAS1C,GACvCyC,EAAwBvK,OAAOgO,aAAY,WACzClL,EAAc7C,OAAOoK,iBACrB3I,YAAkBoB,EAAa,SAC/Bd,YAAkBc,EAAa,SApOrC,WACE,IAAMrB,EAAWF,YAA+BuB,GAC1CyC,EAAUV,YAAkBpD,GAClC,GAAI8D,EAAS,CACX,IAAMP,EAASO,EAAQ3E,cAAc,2BACjCoE,GACFA,EAAOgB,UAAUb,OAAO,SAE5B,CACF,CA4NM8I,EACF,GAAG,KAEHrF,cACAgB,YAAqB,SACrBL,cACAqC,IACA1I,YAAmB,QAASsH,GAAgBlO,MAAK,SAAA4R,GAA8C,IAAnCvK,EAAKuK,EAALvK,MAAOC,EAAIsK,EAAJtK,KAAMC,EAAMqK,EAANrK,OAAQC,EAASoK,EAATpK,UAC7EQ,YAAsB,CAAEX,QAAOE,SAAQD,OAAME,YAAWP,QAASiH,GACrE,GACF,CACKzK,gBACH+N,cAAcvD,GACd7I,YAAkBoB,EAAa,SAC/Bd,YAAkBc,EAAa,SAC/ByG,eAEEsE,EAAM3C,OAAS/K,GAAGC,YAAYE,QAChCiJ,cAtGJ,WACE,IAAMpM,EAAOwD,SAASC,cAAc,qCACpC,GAAIzD,GAAQA,EAAK0D,SAAW1D,EAAK0D,QAAQ2K,UAAW,CAClD,IAAMR,EAAYS,mBAAmBtO,EAAK0D,QAAQ2K,WAClDvL,OAAOqM,cAActB,GAErBR,EAAiBrN,EAAK0D,QAAQoL,QAC9BJ,EAAiB1O,GACjB2K,GAAiB,EACjBR,cACA1C,aACF,CACF,CA2FIuJ,GAEJ,EA3RA,WACE,IAAIC,EAAMzN,SAAS0N,cAAc,UACjCD,EAAI1J,IAAM,qCACV,IAAI4J,EAAiB3N,SAASqJ,qBAAqB,UAAU,GAC7DsE,EAAetN,WAAWuN,aAAaH,EAAKE,EAC9C,CAwRAE,GAtRA,WACE,IAGMC,EAAQC,IADA,MAERC,EAAShO,SAASC,cAAc,kBAClCgO,EAAQ,EACZ,GAAID,EACF,IAAME,EAAqB7O,OAAOgO,aAAY,WAC5C,IAAMc,EAAaL,EAAQG,EAC3BD,EAAOhK,aAAa,oBAPV,MAOuCmK,GACjDF,GAAS,EACLE,GAAc,QAChBhB,cAAce,GACdF,EAAO3I,UAAUM,IAAI,UACrB3F,SAASC,cAAc,iBAAiBoF,UAAUM,IAAI,UACtD3F,SAASC,cAAc,kBAAkBoF,UAAUM,IAAI,UAClDmC,gBACHxI,OAAOiK,YACPN,YAAqB,UAG3B,GApB6B,GAsBjC,CA+PAmF,E","file":"js/videoPlayer-85fe638c66fa49e485cd.js","sourcesContent":[" \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 = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 37);\n","export function isMediaPlayer(elem) {\n return !!elem.closest('.player3');\n}\n\nexport function videoIsPlaying() {\n return window.player && window.player.getPlayerState &&\n !(window.player.getPlayerState() === YT.PlayerState.PAUSED ||\n window.player.getPlayerState() === YT.PlayerState.ENDED ||\n window.player.getPlayerState() === YT.PlayerState.UNSTARTED);\n}\n\nexport function currentMediaPlaying() {\n const playButton = document.querySelector('.player3__action--play');\n return playButton?.dataset?.type;\n}\n\nexport function progressBarLength(isMediaPlayer) {\n let progressBar = document.querySelector('.mini-progress-bar');\n if (isMediaPlayer) {\n progressBar = document.querySelector('.media-progress-bar');\n }\n if (!progressBar) return 0;\n return progressBar.parentNode.offsetWidth;\n}\n\nexport function getCurrentProgressInPixels(time, isMediaPlayer, type) {\n let duration = window.player && window.player.getDuration ? window.player.getDuration() : 0;\n if (type === 'audio') {\n duration = window.audio ? window.audio.duration : 0;\n }\n const width = progressBarLength(isMediaPlayer);\n return time * width / duration;\n}\n\nexport function getCurrentProgressInPercentage(time, isMediaPlayer, type) {\n return getCurrentProgressInPixels(time, isMediaPlayer, type) * 100 / progressBarLength(isMediaPlayer);\n}\n\nexport function getCurrentProgressInSeconds(time) {\n return Math.round(time);\n}\n\nexport function getCurrentProgressInSecondsFromPercentage(progress) {\n const duration = window.player && window.player.getDuration ? window.player.getDuration() : 0;\n return progress * duration / 100;\n}\n\nexport function updateProgressBar(time, type) {\n document.querySelectorAll(`.progress-bar-${type}`).forEach(function(progressBar) {\n const currentWidth = getCurrentProgressInPixels(time, isMediaPlayer(progressBar), type);\n progressBar.style.width = currentWidth + 'px';\n });\n}\n\nexport function updateTimeElapsed(time, type) {\n document.querySelectorAll(`.time-elapsed-${type}`).forEach(function(elem) {\n elem.innerText = getMinuteSecondsFormat(time);\n });\n}\n\nexport function onProgressBarClick(e, isMediaPlayer, type) {\n if (currentMediaPlaying() !== type) return;\n\n const { layerX, target } = e;\n const duration = type === 'video' ? window.player.getDuration() : window.audio.duration;\n let seconds = Math.floor(layerX * duration / progressBarLength(isMediaPlayer));\n\n if (target.className.indexOf('playthrough__likes') > -1) {\n seconds = getCurrentProgressInSecondsFromPercentage(target.dataset.max)\n }\n if (target.id === 'amount-of-likes') {\n seconds = getCurrentProgressInSecondsFromPercentage(target.parentNode.dataset.max)\n }\n if (type === 'video') {\n window.player.seekTo(seconds, true);\n } else {\n window.audio.currentTime = seconds;\n }\n\n updateProgressBar(seconds, type);\n updateTimeElapsed(seconds, type);\n}\n\nexport function getMinuteSecondsFormat(time) {\n const pad = '00';\n const minutes = Math.floor(time / 60);\n const seconds = (pad + Math.floor(time - minutes * 60).toString()).slice(-pad.length);\n return `${minutes}:${seconds}`;\n}\n\nexport function hideMediaPlayer() {\n const mediaPlayer = document.getElementById('media-player');\n mediaPlayer.style.opacity = 0;\n // Set timeout needed to not break animation\n window.setTimeout(function() {\n mediaPlayer.classList.add('hidden');\n }, 1000);\n}\n\nexport async function getMediaPlayerData(type, mediaId) {\n const token = document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content');\n const response = await window.fetch(`/media/${type}/${mediaId}/data`, {\n method: 'GET',\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-Token': token,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n credentials: 'same-origin'\n });\n const { image, song, artist, artist_url: artistUrl } = await response.json();\n return Promise.resolve({ image, song, artist, artistUrl });\n}\n\nexport function updateMediaPlayerData({\n mediaId,\n image,\n song,\n artist,\n artistUrl,\n}) {\n document.querySelector(\".player3__preview\").closest(\"a\").href = artistUrl;\n document.querySelector(\".player3__preview\").src = image;\n // It was decided to swap artist and song positions in the media player\n document.querySelector(\".player3__song\").innerText = artist;\n document.querySelector(\".player3__artist\").innerText = song;\n document\n .querySelector(\".player-like-button\")\n ?.setAttribute(\"data-id\", mediaId);\n document.querySelector(\"#media-player\").setAttribute(\"data-id\", mediaId);\n}\n\nexport function resetProgressBar() {\n document.querySelectorAll(\".progress-bar\").forEach(function (progressBar) {\n progressBar.style.width = \"0px\";\n });\n}\n\nexport function reactionElementAt(progress) {\n const nearFive = Math.floor(progress / 5) * 5;\n const element = document.querySelector(\n `.playthrough__likes[data-max='${nearFive}']`\n );\n return element;\n}\n\nfunction addHoverToStandUpEvent(element) {\n element.addEventListener(\"mouseenter\", function () {\n element.style.zIndex = \"5\";\n });\n\n element.addEventListener(\"mouseleave\", function () {\n element.style.zIndex = \"1\";\n });\n}\n\nfunction deleteAnimationAfterFinished(parentNode) {\n const hearts = parentNode.querySelectorAll(\".playthrough__reactions\");\n window.setTimeout(function () {\n hearts.forEach(function (heart) {\n heart.remove();\n });\n }, 3000);\n}\n\nfunction setLikesElementHeight({ element, increment }) {\n if (increment >= 10) {\n element.style.height = \"27px\";\n element.style.width = \"27px\";\n element.style.zIndex = \"2\";\n }\n if (increment >= 50) {\n element.style.height = \"34px\";\n element.style.width = \"34px\";\n element.style.zIndex = \"3\";\n }\n if (increment >= 100) {\n element.style.height = \"42px\";\n element.style.width = \"42px\";\n element.style.zIndex = \"4\";\n }\n}\n\nfunction incrementProgressBarLike(progress, noShow) {\n const nearFive = Math.floor(progress / 5) * 5;\n document\n .querySelectorAll(`.playthrough__likes[data-max='${nearFive}']`)\n .forEach(function (element) {\n const amountOfLikesElement = element.querySelector(\"#amount-of-likes\");\n const increment = parseInt(amountOfLikesElement.innerText) + 1;\n amountOfLikesElement.innerText = increment;\n setLikesElementHeight({ element, increment });\n\n if (noShow) return;\n const hearts = document\n .querySelector(\".playthrough__reactions\")\n .cloneNode(true);\n hearts.classList.remove(\"hidden\");\n element.appendChild(hearts);\n\n deleteAnimationAfterFinished(element);\n });\n}\n\nfunction addLikeElement(progress, noShow, type) {\n const nearFive = Math.floor(progress / 5) * 5;\n const likesElement = document\n .querySelector(\".playthrough__likes\")\n .cloneNode(true);\n likesElement.style.left = `${nearFive}%`;\n likesElement.style.height = \"20px\";\n likesElement.style.width = \"20px\";\n likesElement.style.cursor = \"pointer\";\n likesElement.classList.add(\"likes-cloned\");\n likesElement.setAttribute(\"data-max\", nearFive);\n likesElement.querySelector(\"#amount-of-likes\").innerText = \"1\";\n\n addHoverToStandUpEvent(likesElement);\n\n if (!noShow) {\n const hearts = likesElement.querySelector(\".playthrough__reactions\");\n hearts.classList.remove(\"hidden\");\n deleteAnimationAfterFinished(likesElement);\n }\n\n if (type === \"audio\") {\n const progressBar = document.querySelector(\n \"#media-player .playthrough__bar\"\n );\n progressBar.appendChild(likesElement.cloneNode(true));\n } else {\n document\n .querySelectorAll(\".playthrough__bar\")\n .forEach(function (progressBar) {\n progressBar.appendChild(likesElement.cloneNode(true));\n });\n }\n}\n\nexport function setupLikes(time, noShow, isMediaPlayer, type = \"video\") {\n const progress = getCurrentProgressInPercentage(time, isMediaPlayer, type);\n if (reactionElementAt(progress)) {\n incrementProgressBarLike(progress, noShow);\n } else {\n addLikeElement(progress, noShow, type);\n }\n}\n\nexport function saveReaction(time, mediaId, type) {\n const token = document\n .querySelector('meta[name=\"csrf-token\"]')\n .getAttribute(\"content\");\n const position = getCurrentProgressInSeconds(time);\n const mediaReaction = {\n position,\n amount: 1,\n };\n if (type === \"video\") {\n mediaReaction.video_id = mediaId;\n } else {\n mediaReaction.audio_id = mediaId;\n }\n window.fetch(\"/media_reactions\", {\n method: \"POST\",\n headers: {\n \"X-Requested-With\": \"XMLHttpRequest\",\n \"X-CSRF-Token\": token,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({ media_reaction: mediaReaction }),\n credentials: \"same-origin\",\n });\n}\n\nexport function resetReactions() {\n document.querySelectorAll(\".likes-cloned\").forEach(function (like) {\n like.remove();\n });\n}\n\nexport async function loadReactions(mediaId, type, reactionLoaded) {\n if (reactionLoaded) return;\n\n resetReactions();\n const token = document\n .querySelector('meta[name=\"csrf-token\"]')\n .getAttribute(\"content\");\n const response = await window.fetch(`/media/${type}/${mediaId}/reactions`, {\n headers: {\n \"X-Requested-With\": \"XMLHttpRequest\",\n \"X-CSRF-Token\": token,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"same-origin\",\n });\n const { reactions = [] } = await response.json();\n reactionLoaded = true;\n reactions.forEach(function (reaction = {}) {\n const time = reaction.position || 0;\n setupLikes(time, true, true, type);\n });\n}\n\nexport function pauseVideo() {\n if (window.player && window.player.pauseVideo) {\n window.player.pauseVideo();\n }\n}\n\nexport function setPlayPauseIcons(audio) {\n audio = audio || window.audio;\n const id = audio.closest(\"#media-player\").dataset.id;\n document.querySelectorAll(\".media-card\").forEach(function (card) {\n if (card.offsetWidth > 0 || card.offsetHeight > 0) {\n if (card.dataset.id !== id || (card.dataset.id === id && audio.paused)) {\n card.querySelector(\".media-clip__icon--play\").style.display = \"block\";\n card.querySelector(\".media-clip__icon--pause\").style.display = \"none\";\n } else {\n card.querySelector(\".media-clip__icon--play\").style.display = \"none\";\n card.querySelector(\".media-clip__icon--pause\").style.display = \"block\";\n }\n }\n });\n}\n\nexport function isAudioPlaying() {\n const allAudios = document.querySelectorAll(\"audio\");\n let isPlaying = false;\n for (let i = 0; i < allAudios.length; i++) {\n const audio = allAudios[i];\n if (!audio.paused) {\n isPlaying = true;\n break;\n }\n }\n return isPlaying;\n}\n\nexport function stopAudios() {\n document.querySelectorAll(\"audio\").forEach(function (audio) {\n if (audio && !audio.paused) {\n audio.pause();\n setPlayPauseIcons(audio);\n }\n });\n}\n\nexport function playPreviousVideo() {\n const previous = document.querySelector(\n \".media-row--current\"\n ).previousElementSibling;\n if (previous) {\n previous.click();\n resetProgressBar();\n updateTimeElapsed(0, \"video\");\n }\n\n checkIfHasPrevious(previous);\n checkIfHasNext(previous);\n}\n\nexport function playNextVideo() {\n const next = document.querySelector(\".media-row--current ~ a.media-row\");\n if (next) {\n next.click();\n resetProgressBar();\n updateTimeElapsed(0, \"video\");\n }\n\n checkIfHasPrevious(next);\n checkIfHasNext(next);\n}\n\nexport function playPreviousAudio() {\n const button = window.audio.closest(\".related-media__item\");\n const previous = button ? button.previousElementSibling : null;\n if (previous) {\n previous.click();\n resetProgressBar();\n updateTimeElapsed(0, \"audio\");\n }\n\n checkIfHasPrevious(previous);\n checkIfHasNext(previous);\n}\n\nexport function playNextAudio(e) {\n const button = window.audio.closest(\".related-media__item\");\n const next = button ? button.nextElementSibling : null;\n if (next) {\n next.click();\n resetProgressBar();\n updateTimeElapsed(0, \"audio\");\n }\n\n checkIfHasNext(next);\n checkIfHasPrevious(next);\n}\n\nexport function checkIfHasPrevious(elem) {\n const previousButton = document.querySelector(\".player3__action--backward\");\n if (!previousButton) return;\n\n if (elem && elem.previousElementSibling) {\n previousButton.classList.remove(\"player3__action--disabled\");\n } else {\n previousButton.classList.add(\"player3__action--disabled\");\n }\n}\n\nexport function checkIfHasNext(elem) {\n const nextButton = document.querySelector(\".player3__action--forward\");\n if (!nextButton) return;\n\n if (elem && elem.nextElementSibling) {\n nextButton.classList.remove(\"player3__action--disabled\");\n } else {\n nextButton.classList.add(\"player3__action--disabled\");\n }\n}\n\nexport function checkPlayerPlayPauseIcon() {\n const button = document.querySelector(\".player3__action--play\");\n if (button.dataset.type === \"video\") {\n if (videoIsPlaying()) {\n button.querySelector(\".play-icon\").classList.add(\"hidden\");\n button.querySelector(\".pause-icon\").classList.remove(\"hidden\");\n } else {\n button.querySelector(\".play-icon\").classList.remove(\"hidden\");\n button.querySelector(\".pause-icon\").classList.add(\"hidden\");\n }\n } else {\n if (window.audio && window.audio.paused) {\n button.querySelector(\".play-icon\").classList.remove(\"hidden\");\n button.querySelector(\".pause-icon\").classList.add(\"hidden\");\n } else {\n button.querySelector(\".play-icon\").classList.add(\"hidden\");\n button.querySelector(\".pause-icon\").classList.remove(\"hidden\");\n }\n }\n}\n\nexport function addPlayPauseButtonEvent() {\n checkPlayerPlayPauseIcon();\n const button = document.querySelector(\".player3__action--play\");\n button.addEventListener(\"click\", function () {\n if (button.dataset.type === \"video\") {\n if (videoIsPlaying()) {\n window.player.pauseVideo();\n } else {\n window.player.playVideo();\n }\n } else {\n if (window.audio && window.audio.paused) {\n window.audio.play();\n } else {\n window.audio.pause();\n }\n setPlayPauseIcons(window.audio);\n checkPlayerPlayPauseIcon();\n }\n });\n}\n\nfunction addForwardsEvent() {\n const button = document.querySelector(\".player3__action--forward\");\n button.addEventListener(\"click\", function (e) {\n if (currentMediaPlaying() === \"video\") {\n playNextVideo(e);\n } else {\n playNextAudio(e);\n }\n });\n}\n\nfunction addBackwardsEvent() {\n const button = document.querySelector(\".player3__action--backward\");\n button.addEventListener(\"click\", function (e) {\n if (currentMediaPlaying() === \"video\") {\n playPreviousVideo(e);\n } else {\n playPreviousAudio(e);\n }\n });\n}\n\nfunction addLikeButtonEventListener() {\n const likeButton = document.querySelector(\".player-like-button\");\n if (!likeButton) return;\n likeButton.addEventListener(\"click\", function (e) {\n const type = currentMediaPlaying();\n const currentTime =\n type === \"audio\"\n ? window.audio.currentTime\n : window.player.getCurrentTime();\n const mediaId = e.currentTarget.dataset.id;\n setupLikes(currentTime, false, isMediaPlayer(likeButton), type);\n saveReaction(currentTime, mediaId, type);\n });\n}\n\nexport function addMediaPlayerEvents(type) {\n const mediaPlayer = document.getElementById('media-player');\n if (type) {\n mediaPlayer.querySelector('.player3__action--play').setAttribute('data-type', type);\n mediaPlayer.querySelector('.player3__action--backward').setAttribute('data-type', type);\n mediaPlayer.querySelector('.player3__action--forward').setAttribute('data-type', type);\n }\n if (mediaPlayer.className.indexOf('hidden') > -1) {\n mediaPlayer.classList.remove('hidden');\n window.setTimeout(function() {\n // class has-player3 has to be added to html in order for the player to not be under the sidebar. Ask Anton if anything.\n document.getElementsByTagName('html')[0].classList.add('has-player3')\n mediaPlayer.style.opacity = 1;\n }, 200);\n\n addPlayPauseButtonEvent()\n addForwardsEvent();\n addBackwardsEvent();\n addLikeButtonEventListener();\n }\n}\n","import {\n isMediaPlayer,\n updateProgressBar,\n getCurrentProgressInPercentage,\n getMinuteSecondsFormat,\n addMediaPlayerEvents,\n resetProgressBar,\n resetReactions,\n saveReaction,\n isAudioPlaying,\n stopAudios,\n updateTimeElapsed,\n checkPlayerPlayPauseIcon,\n updateMediaPlayerData,\n onProgressBarClick,\n videoIsPlaying,\n checkIfHasNext,\n checkIfHasPrevious,\n reactionElementAt,\n setupLikes,\n loadReactions,\n getMediaPlayerData\n} from '../utils/media';\n\nwindow.player = null;\nlet customBarTimeInterval = null;\nlet currentTime = 0;\nlet currentVideoId = null;\nlet reactionLoaded = false;\n\nwindow.getIdFromVideoLink = function(link) {\n if (link.indexOf('http') > -1) {\n const regExp = /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#&?]*).*/;\n const match = link.match(regExp);\n return (match&&match[7].length==11)? match[7] : false;\n }\n return link;\n};\n\nfunction addYoutubeIFrameAPI() {\n var tag = document.createElement('script');\n tag.src = \"https://www.youtube.com/iframe_api\";\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n}\n\nfunction setPlayerProgressAnimation() {\n const animationInSeconds = 5;\n const intervalInMilliseconds = 50;\n const width = 188.5;\n const piece = intervalInMilliseconds * animationInSeconds / width;\n const circle = document.querySelector('#random-offset');\n let index = 1;\n if (circle) {\n const firstLoadAnimation = window.setInterval(function() {\n const dashOffset = piece * index;\n circle.setAttribute('stroke-dashoffset', width - dashOffset)\n index += 1;\n if (dashOffset >= 188.5) {\n clearInterval(firstLoadAnimation);\n circle.classList.add('hidden');\n document.querySelector('.player__grid').classList.add('hidden');\n document.querySelector('.player__image').classList.add('hidden');\n if (!isAudioPlaying()) {\n player.playVideo();\n addMediaPlayerEvents('video');\n }\n }\n }, intervalInMilliseconds);\n }\n}\n\nfunction checkIfHasReaction() {\n const progress = getCurrentProgressInPercentage(currentTime);\n const element = reactionElementAt(progress);\n if (element) {\n const hearts = element.querySelector('.playthrough__reactions');\n if (hearts) {\n hearts.classList.remove('hidden');\n }\n }\n}\n\nfunction YTDurationToSeconds(duration) {\n let match = duration.match(/PT(\\d+H)?(\\d+M)?(\\d+S)?/);\n\n match = match.slice(1).map(function(x) {\n if (x != null) {\n return x.replace(/\\D/, '');\n }\n });\n\n const hours = (parseInt(match[0]) || 0);\n const minutes = (parseInt(match[1]) || 0);\n const seconds = (parseInt(match[2]) || 0);\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nfunction getTrackListVideoDuration() {\n document.querySelectorAll('.media-row').forEach(async function(row) {\n if (row && row.dataset && row.dataset.videoLink) {\n const youtubeId = getIdFromVideoLink(row.dataset.videoLink);\n const apiKey = document.querySelector('#youtube-video-player').dataset.apiKey;\n const response = await window.fetch(`https://www.googleapis.com/youtube/v3/videos?part=snippet&id=${youtubeId}&key=${apiKey}&part=contentDetails`)\n const data = await response.json() || {};\n const { items = [] } = data;\n const item = items.length > 0 ? items[0] : {};\n const { contentDetails = {} } = item;\n const { duration } = contentDetails;\n const durationInSeconds = duration ? YTDurationToSeconds(duration) : null;\n row.querySelector('.media-row__time').innerText = getMinuteSecondsFormat(durationInSeconds);\n }\n })\n}\n\nfunction updateVideoDuration() {\n const duration = player.getDuration();\n document.querySelectorAll('.total-time').forEach(function(elem) {\n elem.innerText = getMinuteSecondsFormat(duration);\n });\n}\n\n\n\nfunction setVideoSelected(videoId) {\n $(`.media-card-${videoId} .full-media-card__play`)?.addClass(\"hide\");\n videoId = videoId\n ? videoId\n : document.querySelector(\"#youtube-video-player\").dataset.videoId;\n currentVideoId = videoId;\n const track = document.getElementById(`video-id-${videoId}`);\n if (track) track.classList.add(\"media-row--current\");\n}\n\nfunction setTrackSelected(elem) {\n const currentRowSelected = document.querySelector(\".media-row--current\");\n if (currentRowSelected) {\n currentRowSelected.classList.remove(\"media-row--current\");\n }\n elem.classList.add(\"media-row--current\");\n\n addMediaPlayerEvents(\"video\");\n\n getMediaPlayerData(\"Video\", currentVideoId).then(function ({\n image,\n song,\n artist,\n artistUrl,\n }) {\n updateMediaPlayerData({\n image,\n artist,\n song,\n artistUrl,\n mediaId: currentVideoId,\n });\n });\n\n checkIfHasNext(elem);\n checkIfHasPrevious(elem);\n}\n\nwindow.prepareForNewVideo = function (videoId) {\n const elem = document.querySelector(`#video-id-${videoId}`);\n currentVideoId = videoId;\n reactionLoaded = false;\n setTrackSelected(elem);\n resetReactions();\n resetProgressBar();\n getTrackListVideoDuration();\n $(\"#youtube-video-player\").attr(\"data-video-id\", videoId);\n};\n\nwindow.loadVideo = function (e) {\n e.preventDefault();\n const videoLink = e.currentTarget.dataset.videoLink;\n const videoId = e.currentTarget.dataset.videoId;\n currentVideoId = videoId;\n const youtubeId = getIdFromVideoLink(videoLink);\n player.loadVideoById(youtubeId);\n document\n .querySelector(\"#youtube-video-player\")\n ?.setAttribute(\"data-video-id\", videoId);\n setTrackSelected(e.currentTarget);\n\n reactionLoaded = false;\n resetReactions();\n resetProgressBar();\n};\n\nfunction addTrackClickEvent() {\n document.querySelectorAll(\".media-row\").forEach(function (row) {\n row.addEventListener(\"click\", loadVideo);\n });\n}\n\nfunction addLikeButtonEventListener() {\n const likeButton = document.querySelector(\".video-player-like-button\");\n if (!likeButton) return;\n\n likeButton.addEventListener(\"click\", function () {\n setupLikes(currentTime, false, isMediaPlayer(likeButton));\n saveReaction(currentTime, currentVideoId, \"video\");\n });\n}\n\nfunction addProgressBarClickEvent() {\n document\n .querySelectorAll(\".playthrough__bar\")\n .forEach(function (progressBar) {\n progressBar.addEventListener(\"click\", function (e) {\n onProgressBarClick(e, isMediaPlayer(progressBar), \"video\");\n });\n });\n}\n\nfunction playNextVideo() {\n const next = document.querySelector(\".media-row--current ~ a.media-row\");\n if (next && next.dataset && next.dataset.videoLink) {\n const youtubeId = getIdFromVideoLink(next.dataset.videoLink);\n player.loadVideoById(youtubeId);\n\n currentVideoId = next.dataset.videoId;\n setTrackSelected(next);\n reactionLoaded = false;\n resetReactions();\n resetProgressBar();\n }\n}\n\nwindow.addNewVideo = function (props) {\n const { mediaId, height = 268, width = 435 } = props || {};\n const elementClassName = mediaId\n ? `youtube-video-player-${mediaId}`\n : \"youtube-video-player\";\n let element = null;\n document.querySelectorAll(`.${elementClassName}`).forEach(function (el) {\n if (\n el.offsetWidth > 0 ||\n el.closest(`.media-card-${mediaId}`).offsetWidth > 0\n ) {\n element = el;\n }\n });\n const videoLink = element?.dataset?.videoLink;\n if (videoLink) {\n if (window.player) {\n window.player.pauseVideo();\n }\n\n const youtubeId = getIdFromVideoLink(videoLink);\n player = new YT.Player(element, {\n height,\n width,\n videoId: youtubeId,\n playerVars: {\n playsinline: 1,\n },\n events: {\n onReady: onPlayerReady,\n onStateChange: onPlayerStateChange,\n },\n });\n }\n};\n\n/* Youtube methods */\nwindow.onYouTubeIframeAPIReady = function () {\n addNewVideo();\n};\n\nwindow.onPlayerReady = function (e) {\n updateVideoDuration();\n addLikeButtonEventListener();\n addProgressBarClickEvent();\n addTrackClickEvent();\n setVideoSelected(e.target.g.dataset?.videoId);\n getTrackListVideoDuration();\n\n const circle = document.querySelector(\"#random-offset\");\n if (!circle) {\n window.player.playVideo();\n }\n};\n\nwindow.onPlayerStateChange = function(event) {\n clearInterval(customBarTimeInterval);\n if (event.data === YT.PlayerState.PLAYING) {\n let videoId = player.dataset ? player.dataset.videoId : currentVideoId\n if (currentVideoId !== videoId) {\n window.player.pauseVideo();\n currentVideoId = videoId;\n window.player = event.target;\n }\n reactionLoaded = false;\n loadReactions(currentVideoId, 'video', reactionLoaded);\n customBarTimeInterval = window.setInterval(function() {\n currentTime = player.getCurrentTime();\n updateProgressBar(currentTime, 'video');\n updateTimeElapsed(currentTime, 'video');\n checkIfHasReaction();\n }, 400);\n\n stopAudios();\n addMediaPlayerEvents('video');\n checkPlayerPlayPauseIcon();\n updateVideoDuration();\n getMediaPlayerData('Video', currentVideoId).then(function({ image, song, artist, artistUrl }) {\n updateMediaPlayerData({ image, artist, song, artistUrl, mediaId: currentVideoId });\n });\n }\n if (!videoIsPlaying()) {\n clearInterval(customBarTimeInterval);\n updateProgressBar(currentTime, 'video');\n updateTimeElapsed(currentTime, 'video');\n checkPlayerPlayPauseIcon();\n }\n if (event.data === YT.PlayerState.ENDED) {\n checkPlayerPlayPauseIcon();\n playNextVideo();\n }\n};\n\naddYoutubeIFrameAPI();\nsetPlayerProgressAnimation();\n"],"sourceRoot":""}