{"version":3,"sources":["images/HeaderLogo.png","images/Titles/Mobile Want to drive the fan car.png","images/Titles/Want to drive the fan car.png","images/Step 1/Step 1 Image.png","images/Step 1/Fan Car Graphic Blue.png","images/Step 1/Fan Car Graphic White.png","images/Titles/Mobile The ultimate hypercar driving experience.png","images/Titles/The ultimate hypercar driving experience.png","images/Titles/Mobile Designed With No Limits.png","images/Titles/Designed With No Limits.png","images/Specs/Mobile Specifications.png","images/Specs/Specifications.png","images/Step 1/Step 1.png","images/Step 2/Step 2.png","images/Step 2/Select all the packages.png","images/Step 2/Bronze Package.png","images/Step 2/Silver Package.png","images/Step 2/Gold Package.png","images/Step 2/Platinum Package.png","images/Step 2/Diamond Package.png","images/Step 2/Autocross Package.png","images/Step 2/Trackday Package.png","images/Step 3/Step 3.png","images/Step 3/Other fun things.png","images/Step 4/Step 4.png","images/Step 4/Well reach out.png","images/Step 4/Submit Arrows.png","Services/AxiosRestService.ts","general/Lazy.ts","Services/UserService.ts","Services/FanCarService.ts","Services/ServiceLocator.ts","components/Home/LandingPage.js","ScrollToTop.js","components/Common/GlobalSnackbar.js","components/Common/DownloadCSV.js","components/Home/DownloadSubmissions.js","components/Home/Learn.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","__webpack_require__","p","AxiosRestService","get","path","url","formatUrl","convertResult","axios","post","body","headers","invoke","put","delete","data","[object Object]","method","headersObject","promiseFactory","Promise","resolve","reject","then","result","statusCode","status","statusText","catch","reason","Lazy","constructor","getter","this","currentGetter","self","value","getValue","UserService","restService","getAdminUsers","createUser","payload","loginUser","email","password","FanCarService","submission","ServiceLocator","fanCarService","userService","createLazy","getRestService","getFanCarService","getUserService","_ServiceLocator","Instance","blob","locations","packages","Controls","zoomIn","zoomOut","useControls","React","createElement","className","onClick","globalProps","LandingPage","Component","props","super","state","selectedLocations","selectedPackages","firstName","lastName","zipCode","comments","loading","anchorElNav","formFieldFocused","getOrientation","window","so","screen","orientation","type","includes","matchMedia","matches","onWindowResize","clearTimeout","resizeLag","setTimeout","setState","onFormFocusIn","e","tag","target","tagName","toLowerCase","editable","getAttribute","onFormFocusOut","_formBlurTimer","handleOpenNavMenu","event","currentTarget","handleCloseNavMenu","smoothScroll","preventDefault","document","querySelector","refs","scroller","scrollTo","top","offsetTop","innerHeight","behavior","loadData","all","loadLocations","loadPackages","LandingPage_locations","LandingPage_packages","location","href","indexOf","loadAudio","responseType","response","File","console","log","getAllLocations","locationsResult","getAllPackages","packagesResult","updateSpecificationsWidth","locationsWidth","locationsMap","clientWidth","num","scrollTop","videoOne","opacity","waveFormContainer","visibility","display","downArrow","videoTwo","videoThree","videoFour","join","wantToDrive","innerWidth","scrollSnapAlign","toggleLocation","id","splice","push","togglePackage","submitEntry","submitting","length","$alertWarning","trim","submissionId","uuid","map","locationId","submissionFk","locationFk","packageId","packageFk","emailAddress","submissionDate","Date","fanCarLocations","fanCarPackages","createSubmission","submitted","error","$alertError","playAudio","playingAudio","video","homepageVideo","removeAttribute","muted","play","stopAudio","setAttribute","openFacebook","open","focus","openInstagram","openYoutube","openTiktok","componentDidMount","addEventListener","passive","numWithDelta","deltaY","scrollSpeed","delta","scrollPosition","currentScroll","viewportHeight","headerOffset","videoSection1","videoSection2","videoSection3","formSectionStart","tolerance","isNearBoundary","some","section","Math","abs","isScrollingUpPastForm","targetScroll","undefined","querySelectorAll","forEach","link","componentWillUnmount","removeEventListener","render","showRotateOverlay","MuiThemeProvider","style","position","left","right","bottom","zIndex","alignItems","justifyContent","backgroundColor","aria-live","marginTop","AppBar","Container","maxWidth","Toolbar","disableGutters","Box","sx","flexGrow","flexDirection","paddingRight","xs","md","src","require","alt","history","paddingLeft","rel","FacebookIcon","fontSize","InstagramIcon","YouTubeIcon","FontAwesomeIcon","icon","faTiktok","size","color","margin","IconButton","aria-label","aria-controls","aria-haspopup","MenuIcon","Menu","anchorEl","anchorOrigin","vertical","horizontal","keepMounted","transformOrigin","Boolean","onClose","MenuItem","key","ref","onScroll","autoPlay","playsInline","disablePictureInPicture","preload","loop","onMouseDown","onMouseUp","onTouchStart","onTouchEnd","AudioVisualizer","controls","width","height","barWidth","gap","barColor","KeyboardArrowDownRoundedIcon","cursor","paddingBottom","TransformWrapper","maxScale","TransformComponent","Tooltip","title","name","city","TransitionComponent","Zoom","enterTouchDelay","Number","parseFloat","mapPixelsTop","mapPixelsLeft","find","x","marginBottom","TextField","variant","placeholder","defaultValue","fullWidth","multiline","minRows","inputProps","maxLength","onChange","CircularProgress","EmailIcon","withRouter","_ref","useEffect","unlisten","listen","variantIcon","success","CheckCircleIcon","warning","WarningIcon","ErrorIcon","info","InfoIcon","MySnackbarContentWrapper","withStyles","theme","green","palette","dark","primary","amber","iconVariant","marginRight","spacing","unit","message","classes","autoHideDuration","other","Icon","Snackbar","SnackbarContent","Object","assign","classNames","aria-describedby","action","close","CloseIcon","arguments","handleClose","time","DownloadCSV","fileName","convertToCSV","objArray","array","JSON","parse","str","i","line","index","downloadCSV","csvData","Blob","csvURL","URL","createObjectURL","download","appendChild","click","removeChild","submissions","DownloadSubmissions","passwordSuccess","authenticate","bcrypt","hashSync","loadSubmissions","packageObj","locationObj","replaceAll","toLocaleString","package","submissionsData","sort","a","b","getAllSubmissions","submissionsResult","Learn","frameBorder","allow","referrerPolicy","allowFullScreen","createBrowserHistory","App","alertError","errorMessage","errorOpen","errorTime","errorDuration","alertWarning","warningMessage","warningOpen","warningTime","warningDuration","alertSuccess","successMessage","successOpen","successTime","successDuration","toLocalDateTimeString","dateInput","date","dateString","getMonth","getDate","getFullYear","getHours","getMinutes","getSeconds","returnString","toLocaleDateString","toLocaleTimeString","timeStyle","$alertSuccess","$toLocalDateTimeString","BrowserRouter","ScrollToTop","GlobalSnackbar","Route","exact","component","hostname","match","navigator","serviceWorker","ready","registration","unregister","ReactDOM","getElementById"],"mappings":"6EAAAA,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,kFCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2ECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,8DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,sECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,mICAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,iGCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,0FCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,gFCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,yECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,uECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,yECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,8DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,kECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,iECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,mECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,kECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAA,01YCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6dCIjC,MAAMC,EACLC,IAAOC,GACb,MAAMC,EAAMH,EAAiBI,UAAUF,GAEvC,OAAOF,EAAiBK,cAAc,IAAMC,IAAML,IAAIE,IAGhDI,KAAqBL,EAAcM,EAAcC,GACvD,OAAOT,EAAiBU,OAAOJ,IAAMC,KAAML,EAAMM,EAAMC,GAGjDE,IAAoBT,EAAcM,EAAcC,GACtD,OAAOT,EAAiBU,OAAOJ,IAAMK,IAAKT,EAAMM,EAAMC,GAGhDG,OAAuBV,EAAcM,EAAcC,GACzD,OAAOT,EAAiBU,OAAOJ,IAAMM,OAAQV,EAAM,CAACW,KAAM,CAACL,SAAQC,GAGpEK,cAAsCC,EAA4Bb,EAAcM,EAAcC,GAC7F,MAAMN,EAAMH,EAAiBI,UAAUF,GAEvC,IAAIc,EAAqB,GAKzB,OAJIP,IACHO,EAAcP,QAAUA,GAGlBT,EAAiBK,cAAc,IAAMU,EAAOZ,EAAKK,EAAMQ,IAG/DF,iBAAyBZ,GACxB,wDAA0CA,IAG3CY,qBAAgCG,GAC/B,OAAO,IAAIC,QAAW,CAACC,EAASC,KACfH,IAGdI,KAAKC,IACL,MAAMC,EAAaD,EAAOE,OACpBX,EAAOS,EAAOT,KAEhBU,GAAc,KAAOA,EAAa,IACrCJ,EAAQN,GAERO,EAAOE,EAAOG,YAAcZ,GAAQU,KAGrCG,MAAMC,GAAUP,EAAOO,OCrDrB,MAAMC,EAGLC,YAAYC,GAAiBC,KAF5BC,mBAAa,EAGpB,MAAMC,EAAOF,KAEbE,EAAKD,cAAgB,MACpB,MAAME,EAAQJ,IAId,OAFAG,EAAKD,cAAgB,KAAME,GAEpBA,IAIFC,WACN,OAAOJ,KAAKC,iBCbP,MAAMI,EACLP,YAA6BQ,GAA2BN,KAA3BM,cAG7BC,gBACN,OAAOP,KAAKM,YAAYpC,IAAI,eAGtBsC,WAAWC,GACjB,OAAOT,KAAKM,YAAY9B,KAAK,eAAgBiC,GAGvCC,UAAUC,EAAeC,GAC/B,OAAOZ,KAAKM,YAAY9B,KAAK,OAAQ,CAACmC,QAAOC,cCbxC,MAAMC,EACFf,YAA6BQ,GAA2BN,KAA3BM,cAGpCvB,wBACI,OAAOiB,KAAKM,YAAYpC,IAAI,oBAGhCa,uBACI,OAAOiB,KAAKM,YAAYpC,IAAI,mBAGhCa,0BACI,OAAOiB,KAAKM,YAAYpC,IAAI,sBAGhCa,uBAA8B+B,GAC1B,OAAOd,KAAKM,YAAY9B,KAAK,oBAAqBsC,ICXnD,MAAMC,EAMJjB,cAAcE,KAJLM,iBAAW,EAAAN,KACXgB,mBAAa,EAAAhB,KACbiB,iBAAW,EAG3B,MAAMf,EAAOF,KACPkB,EAAaH,EAAeG,WAElClB,KAAKM,YAAcY,EAAW,IAAM,IAAIjD,GACxC+B,KAAKgB,cAAgBE,EAAW,IAAM,IAAIL,EAAcX,EAAKiB,mBAC7DnB,KAAKiB,YAAcC,EAAW,IAAM,IAAIb,EAAYH,EAAKiB,mBAGnDA,iBACN,OAAOnB,KAAKM,YAAYF,WAGlBgB,mBACN,OAAOpB,KAAKgB,cAAcZ,WAGpBiB,iBACN,OAAOrB,KAAKiB,YAAYb,WAGzBrB,kBAA6BgB,GAC5B,OAAO,IAAIF,EAAQE,IAEpBuB,EA9BYP,IACWQ,SAA4B,IAAIR,wKCaxD,IAEIS,EAFAC,EAAY,GACZC,EAAW,GAGf,MAAMC,EAAWA,KACb,MAAMC,OAACA,EAAMC,QAAEA,GAAWC,cAE1B,OACIC,IAAAC,cAAA,OAAKC,UAAU,SACXF,IAAAC,cAAA,QAAMC,UAAW,eAAgBC,QAASA,IAAMN,KAAU,WAC1DG,IAAAC,cAAA,QAAMC,UAAW,eAAgBC,QAASA,IAAML,KAAW,cAw5BvE,IAAIM,EAEWC,MAr5Bf,cAA0BC,YAwDtBvC,YAAYwC,GACRC,MAAMD,GAAOtC,KAxDjBwC,MAAQ,CACJf,UAAW,GACXC,SAAU,GACVe,kBAAmB,GACnBC,iBAAkB,GAClBC,UAAW,GACXC,SAAU,GACVjC,MAAO,GACPkC,QAAS,GACTC,SAAU,GACVC,SAAS,EACTC,YAAa,KACbC,kBAAkB,GAGtBjD,KACAkD,eAAiB,MACb,GAAsB,qBAAXC,OAAwB,MAAO,WAC1C,MAAMC,EAAKD,OAAOE,QAAUF,OAAOE,OAAOC,YAC1C,OAAIF,GAAyB,kBAAZA,EAAGG,MAAqBH,EAAGG,KAAKC,SAAS,aAAqB,YACxEL,OAAOM,WAAW,2BAA2BC,QAAU,YAAc,aAC/E1D,KAED2D,eAAiB,MACbC,aAAaT,OAAOU,WACpBV,OAAOU,UAAYC,WAAW,YACnBX,OAAOU,UACd7D,KAAK+D,SAAS,CAAET,YAAatD,KAAKkD,oBACnC,OACNlD,KAEDgE,cAAiBC,KACb,MAAMC,EAAMD,EAAEE,QAAUF,EAAEE,OAAOC,QAAUH,EAAEE,OAAOC,QAAQC,cAAgB,GACtEC,EAAWL,EAAEE,QAAUF,EAAEE,OAAOI,cAA6D,SAA7CN,EAAEE,OAAOI,aAAa,oBAChE,UAARL,GAA2B,aAARA,GAA8B,WAARA,GAAoBI,IAC7DtE,KAAK+D,SAAS,CAAEd,kBAAkB,MAEzCjD,KAEDwE,eAAiB,MAEbZ,aAAa5D,KAAKyE,gBAClBzE,KAAKyE,eAAiBX,WAAW,KAC7B9D,KAAK+D,SAAS,CAAEd,kBAAkB,KACnC,OACNjD,KAED0E,kBAAqBC,KACjB3E,KAAK+D,SAAS,CAACf,YAAa2B,EAAMC,kBACrC5E,KAED6E,mBAAqB,MACjB7E,KAAK+D,SAAS,CAACf,YAAa,SAC/BhD,KAqHD8E,aAAgBH,KACZ,MAAMzE,EAAOF,KACT2E,GAAOA,EAAMI,iBACjB7E,EAAK2E,qBACDG,SAASC,cAAc,UACvB/E,EAAKgF,KAAKC,SAASC,SAAS,CACxBC,IAAKL,SAASC,cAAc,SAASK,UAAkC,IAArBnC,OAAOoC,YACzDC,SAAU,aAGrBxF,KAEDyF,SAAW,MACP,MAAMvF,EAAOF,KACbE,EAAK6D,SAAS,CAAChB,SAAS,IACxB5D,QAAQuG,IAAI,CAACxF,EAAKyF,gBAAiBzF,EAAK0F,iBAAiBtG,KAAK,KAC1DY,EAAK6D,SAAS,CAACtC,UAASoE,EAAEnE,SAAQoE,EAAE/C,SAAS,IAC7Ce,WAAW,KACHX,OAAO4C,SAASC,KAAKC,QAAQ,YAAc,GAC3C/F,EAAK4E,gBAEV,SAEV9E,KAEDkG,UAAY,MACR,IACI3H,IAAML,IAAI,wEAAyE,CAACiI,aAAc,SAAS7G,KAAK8G,IAC5G5E,EAAO,IAAI6E,KAAK,CAACD,EAAStH,MAAO,mBACjCkB,KAAK+D,SAAS,CAACvC,WAErB,MAAOyC,GAEL,OADAqC,QAAQC,IAAItC,GACL9E,QAAQC,aAEtBY,KAED2F,cAAgB,KACU5E,EAAeQ,SAASH,mBACzBoF,kBAAkBlH,KAAMmH,IACzChF,EAAYgF,KAEnBzG,KAED4F,aAAe,KACW7E,EAAeQ,SAASH,mBACzBsF,iBAAiBpH,KAAMqH,IACxCjF,EAAWiF,KAElB3G,KAED4G,0BAA6BjC,KACzB,IACI,MAAMkC,EAAiB7G,KAAKkF,KAAK4B,aAAe9G,KAAKkF,KAAK4B,aAAaC,YAAc,IAEjFF,IAAmB7G,KAAKwC,MAAMqE,gBAC9B7G,KAAK+D,SAAS,CAAC8C,mBAEnB,MAAMG,EAAMhH,KAAKkF,KAAKC,SAAS8B,UAAY9D,OAAOoC,YAyDlD,GAxDIyB,EAAM,GACsC,IAAxChH,KAAKkF,KAAKgC,SAAgB,MAAEC,UAC5BnH,KAAKkF,KAAKkC,kBAAyB,MAAED,QAAU,EAC/CnH,KAAKkF,KAAKkC,kBAAyB,MAAEC,WAAa,UAClDrH,KAAKkF,KAAKkC,kBAAyB,MAAEE,QAAU,QAC/CtH,KAAKkF,KAAKqC,UAAiB,MAAEJ,QAAU,EACvCnH,KAAKkF,KAAKqC,UAAiB,MAAED,QAAU,QACvCtH,KAAKkF,KAAKgC,SAAgB,MAAEC,QAAU,EACtCnH,KAAKkF,KAAKsC,SAAgB,MAAEL,QAAU,EACtCnH,KAAKkF,KAAKuC,WAAkB,MAAEN,QAAU,EACxCnH,KAAKkF,KAAKwC,UAAiB,MAAEP,QAAU,EACvCnH,KAAKkF,KAAKwC,UAAiB,MAAEL,WAAa,UAEvCL,EAAM,MACbhH,KAAKkF,KAAKkC,kBAAyB,MAAED,QAAU,EAC/CnH,KAAKkF,KAAKkC,kBAAyB,MAAEC,WAAa,SAClDrH,KAAKkF,KAAKkC,kBAAyB,MAAEE,QAAU,OACH,IAAxCtH,KAAKkF,KAAKsC,SAAgB,MAAEL,UAC5BnH,KAAKkF,KAAKqC,UAAiB,MAAEJ,QAAU,EACvCnH,KAAKkF,KAAKqC,UAAiB,MAAED,QAAU,QACvCtH,KAAKkF,KAAKgC,SAAgB,MAAEC,QAAU,EACtCnH,KAAKkF,KAAKsC,SAAgB,MAAEL,QAAU,EACtCnH,KAAKkF,KAAKuC,WAAkB,MAAEN,QAAU,EACxCnH,KAAKkF,KAAKwC,UAAiB,MAAEP,QAAU,EACvCnH,KAAKkF,KAAKwC,UAAiB,MAAEL,WAAa,WAEvCL,EAAM,IACiC,IAA1ChH,KAAKkF,KAAKuC,WAAkB,MAAEN,UAC9BnH,KAAKkF,KAAKqC,UAAiB,MAAEJ,QAAU,EACvCnH,KAAKkF,KAAKqC,UAAiB,MAAEF,WAAa,GAC1CrH,KAAKkF,KAAKgC,SAAgB,MAAEC,QAAU,EACtCnH,KAAKkF,KAAKgC,SAAgB,MAAEG,WAAa,GACzCrH,KAAKkF,KAAKsC,SAAgB,MAAEL,QAAU,EACtCnH,KAAKkF,KAAKsC,SAAgB,MAAEH,WAAa,GACzCrH,KAAKkF,KAAKuC,WAAkB,MAAEN,QAAU,EACxCnH,KAAKkF,KAAKuC,WAAkB,MAAEJ,WAAa,GAC3CrH,KAAKkF,KAAKwC,UAAiB,MAAEP,QAAU,EACvCnH,KAAKkF,KAAKwC,UAAiB,MAAEL,WAAa,WAG9CrH,KAAKkF,KAAKqC,UAAiB,MAAEJ,QAAU,EACvCnH,KAAKkF,KAAKqC,UAAiB,MAAEF,WAAa,SAC1CrH,KAAKkF,KAAKgC,SAAgB,MAAEC,QAAU,EACtCnH,KAAKkF,KAAKgC,SAAgB,MAAEG,WAAa,SACzCrH,KAAKkF,KAAKsC,SAAgB,MAAEL,QAAU,EACtCnH,KAAKkF,KAAKsC,SAAgB,MAAEH,WAAa,SACzCrH,KAAKkF,KAAKuC,WAAkB,MAAEN,QAAU,EACxCnH,KAAKkF,KAAKuC,WAAkB,MAAEJ,WAAa,SAC3CrH,KAAKkF,KAAKwC,UAAiB,MAAEP,QAAU,EACvCnH,KAAKkF,KAAKwC,UAAiB,MAAEL,WAAa,SACtCL,EAAM,MACNhH,KAAKkF,KAAKwC,UAAiB,MAAEP,QAAU,EACvCnH,KAAKkF,KAAKwC,UAAiB,MAAEL,WAAa,KAI9CrH,KAAKkF,KAAKyC,KAAM,CAChB,MAAMrC,EAAYtF,KAAKkF,KAAKyC,KAAKrC,UACbtF,KAAKkF,KAAKC,SAAS8B,UACrB3B,EAAY,KACqB,UAA3CtF,KAAKkF,KAAK0C,YAAmB,MAAEN,UAC/BtH,KAAKkF,KAAK0C,YAAmB,MAAEN,QAAU,QACzCtH,KAAKkF,KAAK0C,YAAmB,MAAET,QAAU,GAGzChE,OAAO0E,YAAc,KAC2B,QAA5C7H,KAAKkF,KAAKyC,KAAY,MAAEG,kBACxB9H,KAAKkF,KAAKyC,KAAY,MAAEG,gBAAkB,SAGH,SAA3C9H,KAAKkF,KAAK0C,YAAmB,MAAEN,UAC/BtH,KAAKkF,KAAK0C,YAAmB,MAAEN,QAAU,OACzCtH,KAAKkF,KAAK0C,YAAmB,MAAET,QAAU,GAGzChE,OAAO0E,YAAc,KAC2B,UAA5C7H,KAAKkF,KAAKyC,KAAY,MAAEG,kBACxB9H,KAAKkF,KAAKyC,KAAY,MAAEG,gBAAkB,WAI5D,MAAO7D,GACLqC,QAAQC,IAAItC,MAEnBjE,KAED+H,eAAkBC,KACd,MAAMvF,kBAACA,GAAqBzC,KAAKwC,MAC7BC,EAAkBwD,QAAQ+B,IAAO,EACjCvF,EAAkBwF,OAAOxF,EAAkBwD,QAAQ+B,GAAK,GAExDvF,EAAkByF,KAAKF,GAC3BhI,KAAK+D,SAAS,CAACtB,wBAClBzC,KAEDmI,cAAiBH,KACb,MAAMtF,iBAACA,GAAoB1C,KAAKwC,MAC5BE,EAAiBuD,QAAQ+B,IAAO,EAChCtF,EAAiBuF,OAAOvF,EAAiBuD,QAAQ+B,GAAK,GAEtDtF,EAAiBwF,KAAKF,GAC1BhI,KAAK+D,SAAS,CAACrB,uBAClB1C,KAEDoI,YAAc,MACV,MAAMlI,EAAOF,KACbE,EAAK6D,SAAS,CAACsE,YAAY,IAC3B,MAAM5F,kBAACA,EAAiBC,iBAAEA,EAAgBC,UAAEA,EAASC,SAAEA,EAAQjC,MAAEA,EAAKkC,QAAEA,EAAOC,SAAEA,GAAY5C,EAAKsC,MAClG,GAAiC,IAA7BC,EAAkB6F,OAElB,OADApI,EAAK6D,SAAS,CAACsE,YAAY,IACpBlF,OAAOoF,cAAc,qDAEhC,GAAgC,IAA5B7F,EAAiB4F,OAEjB,OADApI,EAAK6D,SAAS,CAACsE,YAAY,IACpBlF,OAAOoF,cAAc,4DAEhC,GAAgC,IAA5B5F,EAAU6F,OAAOF,QAA2C,IAA3B1F,EAAS4F,OAAOF,QAAwC,IAAxB3H,EAAM6H,OAAOF,QAA0C,IAA1BzF,EAAQ2F,OAAOF,QAA2C,IAA3BxF,EAAS0F,OAAOF,OAE7I,OADApI,EAAK6D,SAAS,CAACsE,YAAY,IACpBlF,OAAOoF,cAAc,qEAGhC,MAAME,EAAeC,iBAEfjH,EAAYgB,EAAkBkG,IAAKC,IAC9B,CACHZ,GAAIU,iBACJG,aAAcJ,EACdK,WAAYF,KAIdlH,EAAWgB,EAAiBiG,IAAKI,IAC5B,CACHf,GAAIU,iBACJG,aAAcJ,EACdO,UAAWD,KAIbtI,EAAU,CACZuH,GAAIS,EACJ9F,UAAWA,EACXC,SAAUA,EACVqG,aAActI,EACdkC,QAASA,EACTC,SAAUA,EACVoG,eAAgB,IAAIC,KACpBC,gBAAiB3H,EACjB4H,eAAgB3H,GAGEX,EAAeQ,SAASH,mBAChCkI,iBAAiB7I,GAASnB,KAAK,KACzCY,EAAK6D,SAAS,CAACwF,WAAW,EAAMlB,YAAY,MAC7C1I,MAAO6J,IACNtJ,EAAK6D,SAAS,CAACsE,YAAY,IAC3B/B,QAAQC,IAAIiD,GACZrG,OAAOsG,YAAY,4DAE1BzJ,KAED0J,UAAY,MACR1J,KAAK+D,SAAS,CAAC4F,cAAc,IAC7B,MAAMC,EAAQ5J,KAAKkF,KAAK2E,cACxBD,EAAME,gBAAgB,YACtBF,EAAME,gBAAgB,SACtBF,EAAMG,OAAQ,EACdH,EAAMI,SACThK,KAEDiK,UAAY,MACRjK,KAAK+D,SAAS,CAAC4F,cAAc,IAC7B,MAAMC,EAAQ5J,KAAKkF,KAAK2E,cACxBD,EAAMM,aAAa,WAAY,QAC/BN,EAAMM,aAAa,QAAS,QAC5BN,EAAMG,OAAQ,EACdH,EAAMI,SACThK,KAEDmK,aAAe,MACXhH,OAAOiH,KAAK,yDAA0D,UAAUC,UACnFrK,KAEDsK,cAAgB,MACZnH,OAAOiH,KAAK,8CAA+C,UAAUC,UACxErK,KAEDuK,YAAc,MACVpH,OAAOiH,KAAK,4CAA6C,UAAUC,UACtErK,KAEDwK,WAAa,MACTrH,OAAOiH,KAAK,2CAA4C,UAAUC,UA5WlElI,EAAcG,EACdtC,KAAKyF,WACLzF,KAAKkG,YACLlG,KAAK2D,iBAGT8G,oBACI,MAAMvK,EAAOF,KAEbmD,OAAOuH,iBAAiB,SAAU1K,KAAK2D,eAAgB,CAACgH,SAAS,IACjE3F,SAAS0F,iBAAiB,UAAW1K,KAAKgE,eAC1CgB,SAAS0F,iBAAiB,WAAY1K,KAAKwE,gBACvCrB,OAAOE,QAAUF,OAAOE,OAAOC,aAAqE,oBAA/CH,OAAOE,OAAOC,YAAYoH,kBAC/EvH,OAAOE,OAAOC,YAAYoH,iBAAiB,SAAU1K,KAAK2D,gBAI9DzD,EAAKgF,KAAKC,SAASuF,iBAAiB,QAAS,SAAU/F,GACnD,IAGI,GAFiBxB,OAAO0E,YAAc,IA2D/B,CAEH,MAAM+C,GAAgB1K,EAAKgF,KAAKC,SAAS8B,UAAYtC,EAAMkG,QAAU1H,OAAOoC,YAC5E,IAAIuF,EAAc,EAElB,GAAIF,EAAe,IAAK,CACpBjG,EAAMI,iBACN,IAAIgG,EAAQpG,EAAMkG,OACdG,EAAiB9K,EAAKgF,KAAKC,SAAS8B,UAAa8D,EAAQD,EAE7D5K,EAAKgF,KAAKC,SAASC,SAAS,CACxBC,IAAK2F,EACLxF,SAAU,gBArEP,CAEX,MAAMyF,EAAgB/K,EAAKgF,KAAKC,SAAS8B,UACnCiE,EAAiB/H,OAAOoC,YACxB4F,EAAe,EAGfC,EAAgBD,EAChBE,EAAkC,GAAjBH,EAAwBC,EACzCG,EAAkC,IAAjBJ,EAAwBC,EACzCI,EAAqC,IAAjBL,EAAwBC,EAG5CK,EAAY,GACZC,EAAiB,CAACL,EAAeC,EAAeC,GAAeI,KAAKC,GACtEC,KAAKC,IAAIZ,EAAgBU,GAAWH,GAKlCM,GADkB5L,EAAKgF,KAAKyC,MAAOzH,EAAKgF,KAAKyC,KAAKrC,UAC1BX,EAAMkG,OAAS,GAAKI,EAAgBM,GAAoBN,EAAiBK,EAAgBE,GAGvH,GAAIC,GAAkBK,EAAuB,CACzC,IAAIC,OAyBiBC,KArBbD,EAHJpH,EAAMkG,OAAS,EAEXI,EAAgBI,EAAgBG,EACjBH,EACRJ,EAAgBK,EAAgBE,EACxBF,EAGAC,EAIfO,EAEeR,EACRL,EAAgBI,EAAgBG,EACxBH,EAEAD,KAOnBlL,EAAKgF,KAAKC,SAASC,SAAS,CACxBC,IAAK0G,EACLvG,SAAU,WAEdb,EAAMI,oBAmBpB,MAAOd,GACLqC,QAAQC,IAAItC,KAEjB,CAAC0G,SAAS,IAEG3F,SAASiH,iBAAiB,gBAClCC,QAAQC,GAAQA,EAAKzB,iBAAiB,QAAS1K,KAAK8E,eAGhEsH,uBACIjJ,OAAOkJ,oBAAoB,SAAUrM,KAAK2D,gBAC1CqB,SAASqH,oBAAoB,UAAWrM,KAAKgE,eAC7CgB,SAASqH,oBAAoB,WAAYrM,KAAKwE,gBAC1CrB,OAAOE,QAAUF,OAAOE,OAAOC,aAAwE,oBAAlDH,OAAOE,OAAOC,YAAY+I,qBAC/ElJ,OAAOE,OAAOC,YAAY+I,oBAAoB,SAAUrM,KAAK2D,gBAEjEC,aAAa5D,KAAKyE,gBAiQtB6H,SACI,MACMC,EADWpJ,OAAO0E,WAAa,KAC4B,cAA3B7H,KAAKwC,MAAMc,cAAgCtD,KAAKwC,MAAMS,iBAE5F,OACIlB,IAAAC,cAACwK,IAAgB,KACbzK,IAAAC,cAAA,WACKuK,GACGxK,IAAAC,cAAA,OACIC,UAAU,0BACVwK,MAAO,CACHC,SAAU,QACVrH,IAAK,EACLsH,KAAM,EACNC,MAAO,EACPC,OAAQ,EACRC,OAAQ,KACRxF,QAAS,OACTyF,WAAY,SACZC,eAAgB,SAChBC,gBAAiB,QAErBC,YAAU,UAEVnL,IAAAC,cAAA,OAAKC,UAAU,oBAAoBwK,MAAO,CAACU,UAAW,IAClDpL,IAAAC,cAAA,UAAI,2CAIhBD,IAAAC,cAACoL,IAAM,CAACV,SAAS,SACb3K,IAAAC,cAACqL,IAAS,CAACC,SAAS,MAChBvL,IAAAC,cAACuL,IAAO,CAACC,gBAAc,GACnBzL,IAAAC,cAACyL,IAAG,CAACC,GAAI,CACLC,SAAU,EACVC,cAAe,cACfC,aAAc,GACdvG,QAAS,CAACwG,GAAI,OAAQC,GAAI,UAE9BhM,IAAAC,cAAA,QAAMC,UAAW,0BACXC,QAASlC,KAAK6E,oBAAoB,qBAIxC9C,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KAAgClL,QAAQ,OACrDmL,IAAI,wCACJhM,QAASA,IAAMC,EAAYgM,QAAQjG,KAAK,KACxCjG,UAAU,sBACfF,IAAAC,cAAA,WACAD,IAAAC,cAACyL,IAAG,CAACC,GAAI,CAACC,SAAU,EAAGS,YAAa,GAAI9G,QAAS,CAACwG,GAAI,OAAQC,GAAI,UAK9DhM,IAAAC,cAAA,KAAGgE,KAAM,yDAA0D7B,OAAO,SACvEkK,IAAI,uBACHtM,IAAAC,cAACsM,IAAY,CAACC,SAAS,QAAQtM,UAAU,qBAE7CF,IAAAC,cAAA,KAAGgE,KAAM,8CAA+C7B,OAAO,SAC5DkK,IAAI,uBACHtM,IAAAC,cAACwM,IAAa,CAACD,SAAS,QAAQtM,UAAU,qBAE9CF,IAAAC,cAAA,KAAGgE,KAAM,4CAA6C7B,OAAO,SAC1DkK,IAAI,uBACHtM,IAAAC,cAACyM,IAAW,CAACF,SAAS,QAAQtM,UAAU,qBAE5CF,IAAAC,cAAA,KAAGgE,KAAM,2CAA4C7B,OAAO,SACzDkK,IAAI,uBACHtM,IAAAC,cAAC0M,IAAe,CAACC,KAAMC,IAAUC,KAAK,KAAKC,MAAO,OAAQrC,MAAO,CAACsC,OAAQ,sBAGlFhN,IAAAC,cAACyL,IAAG,CACAC,GAAI,CAACC,SAAU,EAAGC,cAAe,cAAetG,QAAS,CAACwG,GAAI,OAAQC,GAAI,UAC1EhM,IAAAC,cAACgN,IAAU,CACPC,aAAW,OACXC,gBAAc,cACdC,gBAAc,OACdjN,QAASlC,KAAK0E,kBACdoK,MAAM,WAEN/M,IAAAC,cAACoN,IAAQ,OAEbrN,IAAAC,cAACqN,IAAI,CACDrH,GAAG,cACHsH,SAAUtP,KAAKwC,MAAMQ,YACrBuM,aAAc,CACVC,SAAU,SACVC,WAAY,QAEhBC,aAAW,EACXC,gBAAiB,CACbH,SAAU,MACVC,WAAY,QAEhBrF,KAAMwF,QAAQ5P,KAAKwC,MAAMQ,aACzB6M,QAAS7P,KAAK6E,mBACd6I,GAAI,CAACpG,QAAS,CAACwG,GAAI,QAASC,GAAI,UAEhChM,IAAAC,cAAC8N,IAAQ,CAACC,IAAK,UACXhO,IAAAC,cAAA,QAAMC,UAAW,mBAAoBC,QAASlC,KAAK8E,cAAc,yBAcrF/C,IAAAC,cAAA,OAAKgO,IAAI,cAAcvD,MAAO,CAACtF,QAAS,EAAGG,QAAS,SAChDvF,IAAAC,cAAA,OAAKe,QAAQ,OACRiL,IAAK7K,OAAO0E,YAAc,IAAMoG,EAAQ,KAA8DA,EAAQ,KAC9GC,IAAK,6BAA8BjM,UAAU,uBAC7CwK,MAAO,CAACsC,OAAQ,cAG7BhN,IAAAC,cAAA,OAAKC,UAAU,0BAA0B+N,IAAI,WAAWC,SAAUjQ,KAAK4G,2BACnE7E,IAAAC,cAAA,OAAKC,UAAU,qBACXF,IAAAC,cAAA,WAASC,UAAU,YACfF,IAAAC,cAAA,OAAKe,QAAQ,OACRiL,IAAK7K,OAAO0E,YAAc,IAAMoG,EAAQ,KAA6EA,EAAQ,KAC7HC,IAAK,0BAA2BjM,UAAU,sBAC/CF,IAAAC,cAAA,OAAKC,UAAU,kBAAkB+N,IAAI,WAAWvD,MAAO,CAACtF,QAAS,IAC7DpF,IAAAC,cAAA,OAAKC,UAAU,qBACXF,IAAAC,cAAA,OAAKC,UAAU,mBACXF,IAAAC,cAAA,SAAO+H,OAAO,EAAMmG,UAAQ,EAACC,aAAW,EAACC,yBAAuB,EACzDC,QAAQ,OACRC,MAAI,EAACrO,UAAU,YAAY+N,IAAK,iBACnCjO,IAAAC,cAAA,UACIgM,IAAK7K,OAAO0E,YAAc,IAAM,oFAAsF,uEACtHtE,KAAK,kBAKzBxB,IAAAC,cAAA,OAAKC,UAAW,sBAAuB+N,IAAK,oBACvCO,YAAavQ,KAAK0J,UAAW8G,UAAWxQ,KAAKiK,UAC7CwG,aAAczQ,KAAK0J,UAAWgH,WAAY1Q,KAAKiK,WAChDlI,IAAAC,cAAA,QAAMC,UAAW,2BAA4B+N,IAAK,YAC5CvD,MAAO,CAACpF,WAAYrH,KAAKwC,MAAMmH,aAAe,SAAW,YAAY,kBAG3E5H,IAAAC,cAAC2O,IAAe,CACZX,IAAK,WACLxO,KAAMA,EACNoP,UAAU,EACVC,MAAO,IACPC,OAAQ,GACRC,SAAU,EACVC,IAAK,EACLC,SAAU,UACVxE,MAAO,CAACpF,WAAYrH,KAAKwC,MAAMmH,aAAe,UAAY,aAKlE5H,IAAAC,cAACkP,IAA4B,CAACjP,UAAU,qBAAqB+N,IAAI,YAC5B9N,QAASA,KACL,MAAM+I,EAAgBjL,KAAKkF,KAAKC,SAAS8B,UACnCiE,EAAiB/H,OAAOoC,YAIxB4F,EADWhI,OAAO0E,YAAc,IACN,GAAK,EAG/BwD,EAAkC,GAAjBH,EAAwBC,EACzCG,EAAkC,IAAjBJ,EAAwBC,EAG/C,IAAIY,EAEAA,EADAd,EAAgBI,EAAgB,GACjBA,EACRJ,EAAgBK,EAAgB,GACxBA,EANwB,IAAjBJ,EAAwBC,EAWlDnL,KAAKkF,KAAKC,SAASC,SAAS,CACxBC,IAAK0G,EACLvG,SAAU,YAGlBiH,MAAO,CAAC0E,OAAQ,cAEzDpP,IAAAC,cAAA,WAASC,UAAU,YACfF,IAAAC,cAAA,OAAKe,QAAQ,OACRiL,IAAK7K,OAAO0E,YAAc,IAAMoG,EAAQ,KAA4DA,EAAQ,KAC5GC,IAAK,0BAA2BjM,UAAU,yBAC/CF,IAAAC,cAAA,OAAKC,UAAU,kBAAkB+N,IAAI,WAAWvD,MAAO,CAACtF,QAAS,IAC7DpF,IAAAC,cAAA,OAAKC,UAAU,qBACXF,IAAAC,cAAA,OAAKC,UAAU,mBACXF,IAAAC,cAAA,SAAOkO,UAAQ,EAACnG,OAAK,EAACoG,aAAW,EAACC,yBAAuB,EAACC,QAAQ,OAC3DC,MAAI,EAACrO,UAAU,aAClBF,IAAAC,cAAA,UACIgM,IAAK7K,OAAO0E,YAAc,IAAM,kFAAoF,qEACpHtE,KAAK,mBAM7BxB,IAAAC,cAAA,WAASC,UAAU,YACfF,IAAAC,cAAA,OAAKe,QAAQ,OACRiL,IAAK7K,OAAO0E,YAAc,IAAMoG,EAAQ,KAAkDA,EAAQ,KAClGC,IAAK,0BAA2BjM,UAAU,yBAC/CF,IAAAC,cAAA,OAAKC,UAAU,kBAAkB+N,IAAI,aAAavD,MAAO,CAACtF,QAAS,IAC/DpF,IAAAC,cAAA,OAAKC,UAAU,qBACXF,IAAAC,cAAA,OAAKC,UAAU,mBACXF,IAAAC,cAAA,SAAOkO,UAAQ,EAACnG,OAAK,EAACoG,aAAW,EAACC,yBAAuB,EAACC,QAAQ,OAC3DC,MAAI,EAACrO,UAAU,aAClBF,IAAAC,cAAA,UACIgM,IAAK7K,OAAO0E,YAAc,IAAM,qFAAuF,wEACvHtE,KAAK,oBAML,IAAvBvD,KAAKwC,MAAMO,QAAmB,GAC3BhB,IAAAC,cAAA,WAASC,UAAU,gBAAgB+F,GAAG,OAAOgI,IAAI,OAAOvD,MAAO,CAC3D2E,cAAe,QACfnE,gBAAiB,OACjBP,SAAU,aAEV3K,IAAAC,cAAA,OAAKgO,IAAK,mBAAoBjN,QAAQ,OACjCiL,IAAK7K,OAAO0E,YAAc,IAAMoG,EAAQ,KAA8DA,EAAQ,KAC9GC,IAAK,6BAA8BjM,UAAU,uBAC7CwK,MAAO,CAACsC,OAAQ5L,OAAO0E,YAAc,IAAM,aAAe,iBAC/D9F,IAAAC,cAAA,OAAKC,UAAU,qBACXF,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KAAmClL,QAAQ,OACxDmL,IAAK,8BACLjM,UAAU,kCACVwK,MAAO,CAACa,SAAU,IAAKyB,OAAQ,oBACpChN,IAAAC,cAAA,WACCmB,OAAO0E,YAAc,IAClB9F,IAAAC,cAAA,WACID,IAAAC,cAACqP,IAAgB,CAACC,SAAU,GACxBvP,IAAAC,cAACuP,IAAkB,KACfxP,IAAAC,cAAA,OAAKC,UAAU,iBACXF,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACb+B,IAAI,eACJ9B,IAAK,wBAAyBnL,QAAQ,OACtCd,UAAU,qCACfF,IAAAC,cAAA,OAAKC,UAAU,mBACVjC,KAAKwC,MAAMf,UAAUkH,IAAK5C,GAEnBhE,IAAAC,cAACwP,IAAO,CACJC,MAAO1P,IAAAC,cAAA,OACHC,UAAU,oBAAoB8D,EAAS2L,KAAK3P,IAAAC,cAAA,WAAKD,IAAAC,cAAA,QACjDC,UAAU,8BAA8B8D,EAAS4L,KAAK,KAAG5L,EAASvD,QAC9DyM,aAAYlJ,EAAS2L,KAC7BE,oBAAqBC,IACrBC,gBAAiB,GACjB/P,IAAAC,cAAA,OAAKC,UAAU,gBAAgBwK,MAAO,CAClCpH,IAAK0M,OAAOC,WAAWjM,EAASkM,cAAgBjS,KAAKwC,MAAMqE,eAC3D8F,KAAMoF,OAAOC,WAAWjM,EAASmM,eAAiBlS,KAAKwC,MAAMqE,gBAE5D3E,QAASA,IAAMlC,KAAK+H,eAAehC,EAASiC,KAC5ChI,KAAKwC,MAAMC,kBAAkBwD,QAAQF,EAASiC,KAAO,EAClDjG,IAAAC,cAAA,OAAKe,QAAQ,OACRiL,IAAKC,EAAQ,KACb4C,MAAmC,IAA5B7Q,KAAKwC,MAAMqE,iBAEvB9E,IAAAC,cAAA,OAAKe,QAAQ,OACRiL,IAAKC,EAAQ,KACb4C,MAAmC,IAA5B7Q,KAAKwC,MAAMqE,uBASvD9E,IAAAC,cAACL,EAAQ,QAIjBI,IAAAC,cAAA,OAAKC,UAAU,iBACXF,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACb+B,IAAI,eACJ9B,IAAK,wBAAyBnL,QAAQ,OACtCd,UAAU,qCACfF,IAAAC,cAAA,OAAKC,UAAU,mBACVjC,KAAKwC,MAAMf,UAAUkH,IAAK5C,GAEnBhE,IAAAC,cAACwP,IAAO,CACJC,MAAO1P,IAAAC,cAAA,OACHC,UAAU,oBAAoB8D,EAAS2L,KAAK3P,IAAAC,cAAA,WAAKD,IAAAC,cAAA,QACjDC,UAAU,8BAA8B8D,EAAS4L,KAAK,KAAG5L,EAASvD,QAC9DyM,aAAYlJ,EAAS2L,KAC7BE,oBAAqBC,IAAMC,gBAAiB,GAC5C/P,IAAAC,cAAA,OAAKC,UAAU,gBAAgBwK,MAAO,CAClCpH,IAAK0M,OAAOC,WAAWjM,EAASkM,cAAgBjS,KAAKwC,MAAMqE,eAC3D8F,KAAMoF,OAAOC,WAAWjM,EAASmM,eAAiBlS,KAAKwC,MAAMqE,gBAC9D3E,QAASA,IAAMlC,KAAK+H,eAAehC,EAASiC,KAC1ChI,KAAKwC,MAAMC,kBAAkBwD,QAAQF,EAASiC,KAAO,EAClDjG,IAAAC,cAAA,OAAKe,QAAQ,OACRiL,IAAKC,EAAQ,KACb4C,MAAmC,IAA5B7Q,KAAKwC,MAAMqE,iBAEvB9E,IAAAC,cAAA,OAAKe,QAAQ,OACRiL,IAAKC,EAAQ,KACb4C,MAAmC,IAA5B7Q,KAAKwC,MAAMqE,sBASvD9E,IAAAC,cAAA,WACAD,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KAAmClL,QAAQ,OACxDmL,IAAK,kCACLjM,UAAU,kCACVwK,MAAO,CACHa,SAAU,IACVyB,OAAQ,mBAEjBhN,IAAAC,cAAA,WACAD,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACblL,QAAQ,OACRmL,IAAK,qDACLjM,UAAU,uBACVwK,MAAO,CAACa,SAAU,OACvBvL,IAAAC,cAAA,WACID,IAAAC,cAAA,OAAKC,UAAU,oBACVC,QAASA,IAAMlC,KAAKmI,cAAcnI,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,WAAXA,EAAEV,MAAmB1J,KACtFjG,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACblL,QAAQ,OACRmL,IAAK,iBACLjM,2BAA4BjC,KAAKwC,MAAME,iBAAiBuD,QAAQjG,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,WAAXA,EAAEV,MAAmB1J,KAAO,EAAI,mBAAqB,QAE5JjG,IAAAC,cAAA,OAAKC,UAAU,oBACVC,QAASA,IAAMlC,KAAKmI,cAAcnI,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,WAAXA,EAAEV,MAAmB1J,KACtFjG,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACblL,QAAQ,OACRmL,IAAK,iBACLjM,2BAA4BjC,KAAKwC,MAAME,iBAAiBuD,QAAQjG,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,WAAXA,EAAEV,MAAmB1J,KAAO,EAAI,mBAAqB,QAE5JjG,IAAAC,cAAA,OAAKC,UAAU,oBACVC,QAASA,IAAMlC,KAAKmI,cAAcnI,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,SAAXA,EAAEV,MAAiB1J,KACpFjG,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACblL,QAAQ,OACRmL,IAAK,eACLjM,2BAA4BjC,KAAKwC,MAAME,iBAAiBuD,QAAQjG,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,SAAXA,EAAEV,MAAiB1J,KAAO,EAAI,mBAAqB,QAE1JjG,IAAAC,cAAA,OAAKC,UAAU,oBACVC,QAASA,IAAMlC,KAAKmI,cAAcnI,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,aAAXA,EAAEV,MAAqB1J,KACxFjG,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACblL,QAAQ,OACRmL,IAAK,mBACLjM,2BAA4BjC,KAAKwC,MAAME,iBAAiBuD,QAAQjG,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,aAAXA,EAAEV,MAAqB1J,KAAO,EAAI,mBAAqB,QAE9JjG,IAAAC,cAAA,OAAKC,UAAU,oBACVC,QAASA,IAAMlC,KAAKmI,cAAcnI,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,YAAXA,EAAEV,MAAoB1J,KACvFjG,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACblL,QAAQ,OACRmL,IAAK,kBACLjM,2BAA4BjC,KAAKwC,MAAME,iBAAiBuD,QAAQjG,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,YAAXA,EAAEV,MAAoB1J,KAAO,EAAI,mBAAqB,QAE7JjG,IAAAC,cAAA,OAAKC,UAAU,oBACVC,QAASA,IAAMlC,KAAKmI,cAAcnI,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,cAAXA,EAAEV,MAAsB1J,KACzFjG,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACblL,QAAQ,OACRmL,IAAK,oBACLjM,2BAA4BjC,KAAKwC,MAAME,iBAAiBuD,QAAQjG,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,cAAXA,EAAEV,MAAsB1J,KAAO,EAAI,mBAAqB,QAE/JjG,IAAAC,cAAA,OAAKC,UAAU,oBACVC,QAASA,IAAMlC,KAAKmI,cAAcnI,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,cAAXA,EAAEV,MAAsB1J,KACzFjG,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACblL,QAAQ,OACRmL,IAAK,mBACLjM,2BAA4BjC,KAAKwC,MAAME,iBAAiBuD,QAAQjG,KAAKwC,MAAMd,SAASyQ,KAAKC,GAAgB,cAAXA,EAAEV,MAAsB1J,KAAO,EAAI,mBAAqB,SAGnKjG,IAAAC,cAAA,WACAD,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KAAmClL,QAAQ,OACxDmL,IAAK,+BACLjM,UAAU,kCACVwK,MAAO,CAACa,SAAU,IAAKyB,OAAQ,mBACpChN,IAAAC,cAAA,WACAD,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KAA6ClL,QAAQ,OAClEmL,IAAK,0FACLjM,UAAU,uBACVwK,MAAO,CAACa,SAAU,KAAM+E,aAAc,MAC3CtQ,IAAAC,cAAA,WACAD,IAAAC,cAACsQ,IAAS,CAACC,QAAQ,WAAWtQ,UAAU,yBAC7BwK,MAAO,CAACa,SAAU,MAClBkF,YAAa,cAAeC,aAAa,GAAGC,WAAS,EAACC,WAAS,EAC/DC,QAAS,EAAGC,WAAY,CAACC,UAAW,KACpCC,SAAWpO,GAAU3E,KAAK+D,SAAS,CAACjB,SAAU6B,EAAMR,OAAOhE,UACtE4B,IAAAC,cAAA,WACAD,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KAAmClL,QAAQ,OACxDmL,IAAK,wBAAyBjM,UAAU,kCACxCwK,MAAO,CAACa,SAAU,IAAKyB,OAAQ,mBACpChN,IAAAC,cAAA,WACAD,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KAA2ClL,QAAQ,OAChEmL,IAAK,+EACLjM,UAAU,uBACVwK,MAAO,CAACa,SAAU,KAAM+E,aAAc,MAC3CtQ,IAAAC,cAAA,WACAD,IAAAC,cAACsQ,IAAS,CAACC,QAAQ,WAAWtQ,UAAU,yBAC7BuQ,YAAa,aAAcC,aAAa,GACxCI,WAAY,CAACC,UAAW,KACxBC,SAAWpO,GAAU3E,KAAK+D,SAAS,CAACpB,UAAWgC,EAAMR,OAAOhE,UACvE4B,IAAAC,cAACsQ,IAAS,CAACC,QAAQ,WAAWtQ,UAAU,yBAC7BuQ,YAAa,YAAaC,aAAa,GACvCI,WAAY,CAACC,UAAW,KACxBC,SAAWpO,GAAU3E,KAAK+D,SAAS,CAACnB,SAAU+B,EAAMR,OAAOhE,UACtE4B,IAAAC,cAACsQ,IAAS,CAACC,QAAQ,WAAWtQ,UAAU,yBAC7BuQ,YAAa,QAASC,aAAa,GAAGI,WAAY,CAACC,UAAW,KAC9DC,SAAWpO,GAAU3E,KAAK+D,SAAS,CAACpD,MAAOgE,EAAMR,OAAOhE,UACnE4B,IAAAC,cAACsQ,IAAS,CAACC,QAAQ,WAAWtQ,UAAU,yBAC7BuQ,YAAa,WAAYC,aAAa,GAAGI,WAAY,CAACC,UAAW,IACjEC,SAAWpO,GAAU3E,KAAK+D,SAAS,CAAClB,QAAS8B,EAAMR,OAAOhE,WAC3C,IAAzBH,KAAKwC,MAAM+G,UACRxH,IAAAC,cAAA,OAAKC,UAAU,kBAAiB,6CAIhCF,IAAAC,cAAA,WACKhC,KAAKwC,MAAM6F,WACRtG,IAAAC,cAACgR,IAAgB,MAEjBjR,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KACblL,QAAQ,OACRmL,IAAK,SAAUjM,UAAU,eACzBC,QAASlC,KAAKoI,YACdqE,MAAO,CAACa,SAAU,IAAKyB,OAAQ,sBAKpDhN,IAAAC,cAAA,OAAKC,UAAU,oBACVwK,MAAO,CAACU,UAAW,GAAI9F,WAAY,SAAUF,QAAS,GAAI6I,IAAI,aAC/DjO,IAAAC,cAAA,OAAKC,UAAU,mBACXF,IAAAC,cAAA,OAAKC,UAAU,iBAAgB,iCAA8BF,IAAAC,cAAA,WAAK,aAElED,IAAAC,cAAA,SAAOkO,UAAQ,EAACnG,OAAK,EAACoG,aAAW,EAACC,yBAAuB,EAACC,QAAQ,OAC3DC,MAAI,EAACrO,UAAU,YAAYwK,MAAO,CAACtF,QAAS,KAC/CpF,IAAAC,cAAA,UACIgM,IAAK7K,OAAO0E,YAAc,IAAM,sFAAwF,yEACxHtE,KAAK,iBAIrBxB,IAAAC,cAAA,OAAKyK,MAAO,CAAC4F,aAAc,KACtBlP,OAAO0E,WAAa,IACjB9F,IAAAC,cAAA,YACID,IAAAC,cAAA,KAAGgE,KAAM,yDACN7B,OAAO,SAASkK,IAAI,uBACnBtM,IAAAC,cAACsM,IAAY,CAACC,SAAS,QAAQtM,UAAU,qBAE7CF,IAAAC,cAAA,KAAGgE,KAAM,8CAA+C7B,OAAO,SAC5DkK,IAAI,uBACHtM,IAAAC,cAACwM,IAAa,CAACD,SAAS,QAAQtM,UAAU,qBAE9CF,IAAAC,cAAA,KAAGgE,KAAM,4CAA6C7B,OAAO,SAC1DkK,IAAI,uBACHtM,IAAAC,cAACyM,IAAW,CAACF,SAAS,QAAQtM,UAAU,qBAE5CF,IAAAC,cAAA,KAAGgE,KAAM,2CAA4C7B,OAAO,SACzDkK,IAAI,uBACHtM,IAAAC,cAAC0M,IAAe,CAACC,KAAMC,IAAUC,KAAK,KAAKC,MAAO,OACjCrC,MAAO,CAACsC,OAAQ,sBAGvC,GACNhN,IAAAC,cAAA,KAAGgE,KAAM,sCAAuC7B,OAAO,SACpDkK,IAAI,uBACHtM,IAAAC,cAACiR,IAAS,CAAC1E,SAAS,QAAQtM,UAAU,6DC55BnEiR,mBAbf,SAAoBC,GAAc,IAAbhF,QAAEA,GAASgF,EAU5B,OATAC,oBAAU,KACN,MAAMC,EAAWlF,EAAQmF,OAAO,KAC5BnQ,OAAOiC,SAAS,EAAG,KAEvB,MAAO,KACHiO,MAEL,IAEI,2MCEX,MAAME,GAAc,CAChBC,QAASC,KACTC,QAASC,KACTnK,MAAOoK,KACPC,KAAMC,MA6EV,MAAMC,GAA2BC,aA1EjBC,IAAK,CACjBT,QAAS,CACLvG,gBAAiBiH,KAAM,MAE3B1K,MAAO,CACHyD,gBAAiBgH,EAAME,QAAQ3K,MAAM4K,MAEzCP,KAAM,CACF5G,gBAAiBgH,EAAME,QAAQE,QAAQD,MAE3CV,QAAS,CACLzG,gBAAiBqH,KAAM,MAE3B3F,KAAM,CACFJ,SAAU,IAEdgG,YAAa,CACTpN,QAAS,GACTqN,YAAaP,EAAMQ,QAAQC,MAE/BC,QAAS,CACLrN,QAAS,OACTyF,WAAY,YAoDaiH,CAhDjC,SAA2B1R,GACvB,MAAMsS,QAACA,EAAO3S,UAAEA,EAAS0S,QAAEA,EAAO9E,QAAEA,EAAO0C,QAAEA,EAAOnI,KAAEA,EAAIyK,iBAAEA,KAAqBC,GAASxS,EACpFyS,EAAOxB,GAAYhB,GAEzB,OACIxQ,IAAAC,cAACgT,KAAQ,CACLzF,aAAc,CACVC,SAAU,SACVC,WAAY,QAEhBrF,KAAMA,EACNyK,iBAAkBA,EAClBhF,QAASA,GAET9N,IAAAC,cAACiT,KAAeC,OAAAC,OAAA,CACZlT,UAAWmT,KAAWR,EAAQrC,GAAUtQ,GACxCoT,mBAAiB,kBACjBV,QACI5S,IAAAC,cAAA,QAAMgG,GAAG,kBAAkB/F,UAAW2S,EAAQD,SACtD5S,IAAAC,cAAC+S,EAAI,CAAC9S,UAAWmT,KAAWR,EAAQjG,KAAMiG,EAAQL,eACrCI,GAGTW,OAAQ,CACJvT,IAAAC,cAACgN,IAAU,CACPe,IAAI,QACJd,aAAW,QACXH,MAAM,UACN7M,UAAW2S,EAAQW,MACnBrT,QAAS2N,GAET9N,IAAAC,cAACwT,KAAS,CAACvT,UAAW2S,EAAQjG,UAGlCmG,OA8DLd,oBA9CCC,IAAK,CACjBlF,OAAQ,CACJA,OAAQkF,EAAMQ,QAAQC,QA4CfV,CAxCf,cAA6BjS,IAAMM,UAAUvC,cAAAyC,SAAAkT,WAAAzV,KACzCwC,MAAQ,CACJ4H,MAAM,GACTpK,KAED0V,YAAc,EAAC/Q,EAAO/E,KACH,cAAXA,GAIJI,KAAK+D,SAAS,CAACqG,MAAM,MAGzBkC,SACI,MAAMsI,QAACA,GAAW5U,KAAKsC,MACvB,YAAwB0J,IAApBhM,KAAKsC,MAAM8H,OAA0C,IAApBpK,KAAKsC,MAAM8H,KAAuB,UAC/C4B,IAApBhM,KAAKwC,MAAMmT,MAAsB3V,KAAKsC,MAAMqT,KAAO3V,KAAKwC,MAAMmT,OAAM3V,KAAK+D,SAAS,CAClFqG,MAAM,EACNuL,KAAM3V,KAAKsC,MAAMqT,OAIjB5T,IAAAC,cAAC+R,GAAwB,CACrBc,iBAAkB7U,KAAKsC,MAAMuS,iBAAmB7U,KAAKsC,MAAMuS,iBAAmB,IAC9EtC,QAASvS,KAAKsC,MAAMiQ,QACpBtQ,UAAW2S,EAAQ7F,OACnB4F,QAAS3U,KAAKsC,MAAMqS,QACpB9E,QAAS7P,KAAK0V,YACdtL,KAAMpK,KAAKwC,MAAM4H,WCjGlBwL,OAjCKzC,IAAwB,IAAvBrU,KAAEA,EAAI+W,SAAEA,GAAU1C,EACnC,MAAM2C,EAAgBC,IAClB,MAAMC,EAA4B,kBAAbD,EAAwBE,KAAKC,MAAMH,GAAYA,EACpE,IAAII,EAAM,GAEV,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAM1N,OAAQ8N,IAAK,CACnC,IAAIC,EAAO,GACX,IAAK,IAAIC,KAASN,EAAMI,GACP,KAATC,IAAaA,GAAQ,KAEzBA,GAAQL,EAAMI,GAAGE,GAErBH,GAAOE,EAAO,OAElB,OAAOF,GAcX,OACIpU,IAAAC,cAAA,UAAQE,QAZQqU,KAChB,MAAMC,EAAU,IAAIC,KAAK,CAACX,EAAahX,IAAQ,CAAEyE,KAAM,aACjDmT,EAASC,IAAIC,gBAAgBJ,GAC7BrK,EAAOnH,SAAShD,cAAc,KACpCmK,EAAKnG,KAAO0Q,EACZvK,EAAK0K,YAAchB,QACnB7Q,SAASvG,KAAKqY,YAAY3K,GAC1BA,EAAK4K,QACL/R,SAASvG,KAAKuY,YAAY7K,IAIIM,MAAO,CAAC8B,SAAU,KAAK,sCCvB7D,IAAI0I,GAAc,GACdxV,GAAY,GACZC,GAAW,GACX5C,GAAO,GAoHIoY,OAlHf,cAAkC7U,YAO9BvC,YAAYwC,GACRC,MAAMD,GAAOtC,KAPjBwC,MAAQ,CACJO,SAAS,EACTnC,SAAU,GACVuW,iBAAiB,GACpBnX,KAMDoX,aAAe,MACmE,iEAA1EC,KAAOC,SAAStX,KAAKwC,MAAM5B,SAAU,iCACrCZ,KAAKyF,WAELtC,OAAOsG,YAAY,qBAE1BzJ,KAEDyF,SAAW,MACP,MAAMvF,EAAOF,KACbE,EAAK6D,SAAS,CAAChB,SAAS,EAAMoU,iBAAiB,IAE/ChY,QAAQuG,IAAI,CAACxF,EAAKyF,gBAAiBzF,EAAK0F,eAAgB1F,EAAKqX,oBAAoBjY,KAAK,KAClFR,GAAO,CAAC,CAAC,aAAa,YAAY,OAAO,QAAQ,UAAU,aAC3D4C,GAASwK,QAASsL,IACd1Y,GAAK,GAAGoJ,KAAKsP,EAAW9F,QAE5BjQ,GAAUyK,QAASuL,IACf3Y,GAAK,GAAGoJ,KAAKuP,EAAY/F,QAE7BuF,GAAY/K,QAASpL,IACjBhC,GAAKoJ,KAAK,IAAIpH,EAAW6B,UAAU+U,WAAW,IAAK,UAAU5W,EAAW8B,SAAS8U,WAAW,IAAK,SAAS,IAAIvO,KAAKrI,EAAWoI,gBAAgByO,iBAAiBD,WAAW,IAAK,SAAS5W,EAAWmI,aAAayO,WAAW,IAAK,SAAS5W,EAAW+B,QAAQ6U,WAAW,IAAK,SAAS5W,EAAWgC,SAAS4U,WAAW,KAAM,KAAKA,WAAW,KAAM,YAChVhW,GAASwK,QAASsL,IACd1Y,GAAKA,GAAKwJ,OAAS,GAAGJ,KAAKpH,EAAWuI,eAAe8I,KAAKC,GAAKA,EAAEwF,QAAQ5P,KAAOwP,EAAWxP,IAAM,IAAM,MAE3GvG,GAAUyK,QAASuL,IACf3Y,GAAKA,GAAKwJ,OAAS,GAAGJ,KAAKpH,EAAWsI,gBAAgB+I,KAAKC,GAAKA,EAAErM,SAASiC,KAAOyP,EAAYzP,IAAM,IAAM,QAGlH1B,QAAQC,IAAIzH,IACZoB,EAAK6D,SAAS,CAAC8T,gBAAiB/Y,GAAMiE,SAAS,QAEtD/C,KAED2F,cAAgB,KACU5E,EAAeQ,SAASH,mBACzBoF,kBAAkBlH,KAAMmH,IACzChF,GAAYgF,EAAgBqR,KAAK,SAAUC,EAAGC,GAC1C,OAAID,EAAErG,KAAOsG,EAAEtG,KAAa,EACxBsG,EAAEtG,KAAOqG,EAAErG,MAAc,EACtB,OAGlB1R,KAED4F,aAAe,KACW7E,EAAeQ,SAASH,mBACzBsF,iBAAiBpH,KAAMqH,KACxCjF,GAAW,IACFwG,KAAKvB,EAAewL,KAAKC,GAAgB,WAAXA,EAAEV,OACzChQ,GAASwG,KAAKvB,EAAewL,KAAKC,GAAgB,WAAXA,EAAEV,OACzChQ,GAASwG,KAAKvB,EAAewL,KAAKC,GAAgB,SAAXA,EAAEV,OACzChQ,GAASwG,KAAKvB,EAAewL,KAAKC,GAAgB,aAAXA,EAAEV,OACzChQ,GAASwG,KAAKvB,EAAewL,KAAKC,GAAgB,YAAXA,EAAEV,OACzChQ,GAASwG,KAAKvB,EAAewL,KAAKC,GAAgB,cAAXA,EAAEV,OACzChQ,GAASwG,KAAKvB,EAAewL,KAAKC,GAAgB,cAAXA,EAAEV,UAEhD1R,KAEDuX,gBAAkB,KACQxW,EAAeQ,SAASH,mBACzB6W,oBAAoB3Y,KAAM4Y,IAC3CjB,GAAciB,EAAkBJ,KAAK,SAAUC,EAAGC,GAC9C,OAAO,IAAI7O,KAAK6O,EAAE9O,gBAAkB,IAAIC,KAAK4O,EAAE7O,qBAK3DoD,SACI,OAAKtM,KAAKwC,MAAM2U,gBAcZnX,KAAKwC,MAAMO,QAEPhB,IAAAC,cAACwK,IAAgB,KACbzK,IAAAC,cAAA,WACID,IAAAC,cAACgR,IAAgB,QAO7BjR,IAAAC,cAACwK,IAAgB,KACbzK,IAAAC,cAAA,OAAKyK,MAAO,CAACU,UAAW,KACpBpL,IAAAC,cAAC4T,GAAW,CAAC9W,KAAMkB,KAAKwC,MAAMqV,gBAAiBhC,SAAS,wBAzB5D9T,IAAAC,cAACwK,IAAgB,KACbzK,IAAAC,cAAA,WACID,IAAAC,cAACsQ,IAAS,CAACC,QAAQ,WAAWtQ,UAAU,yBAC7BuQ,YAAa,WAAYC,aAAa,GAAGlP,KAAM,WAC/CwP,SAAWpO,GAAU3E,KAAK+D,SAAS,CAACnD,SAAU+D,EAAMR,OAAOhE,UACtE4B,IAAAC,cAAA,WAAMD,IAAAC,cAAA,WACND,IAAAC,cAAA,UAAQE,QAASlC,KAAKoX,aAAc3K,MAAO,CAAC8B,SAAU,KAAK,aC8BnF,IAAIpM,GAEWgW,OA1Hf,cAAoB9V,YAahBvC,YAAYwC,GACRC,MAAMD,GAAOtC,KAbjBwC,MAAQ,CACJQ,YAAa,MAChBhD,KAED0E,kBAAqBC,KACjB3E,KAAK+D,SAAS,CAACf,YAAa2B,EAAMC,kBACrC5E,KAED6E,mBAAqB,MACjB7E,KAAK+D,SAAS,CAACf,YAAa,SAK5Bb,GAAcG,EAGlBgK,SACI,OACIvK,IAAAC,cAACwK,IAAgB,KACbzK,IAAAC,cAAA,WACID,IAAAC,cAACoL,IAAM,CAACV,SAAS,SACb3K,IAAAC,cAACqL,IAAS,CAACC,SAAS,MAChBvL,IAAAC,cAACuL,IAAO,CAACC,gBAAc,GACnBzL,IAAAC,cAACyL,IAAG,CAACC,GAAI,CACLC,SAAU,EACVC,cAAe,cACfC,aAAc,GACdvG,QAAS,CAACwG,GAAI,OAAQC,GAAI,UAE9BhM,IAAAC,cAAA,QAAME,QAASA,IAAMC,GAAYgM,QAAQjG,KAAK,WACxCjG,UAAW,eAAe,qBAIhCF,IAAAC,cAAA,OAAKgM,IAAKC,EAAQ,KAAgClL,QAAQ,OACrDmL,IAAI,wCACJhM,QAASA,IAAMC,GAAYgM,QAAQjG,KAAK,KACxCjG,UAAU,sBACfF,IAAAC,cAAA,WACAD,IAAAC,cAACyL,IAAG,CAACC,GAAI,CAACC,SAAU,EAAGS,YAAa,GAAI9G,QAAS,CAACwG,GAAI,OAAQC,GAAI,UAC9DhM,IAAAC,cAAA,QAAME,QAASA,IAAMC,GAAYgM,QAAQjG,KAAK,UACxCjG,UAAW,eAAe,cAGhCF,IAAAC,cAAA,KAAGgE,KAAM,yDAA0D7B,OAAO,SACvEkK,IAAI,uBACHtM,IAAAC,cAACsM,IAAY,CAACC,SAAS,QAAQtM,UAAU,qBAE7CF,IAAAC,cAAA,KAAGgE,KAAM,8CAA+C7B,OAAO,SAC5DkK,IAAI,uBACHtM,IAAAC,cAACwM,IAAa,CAACD,SAAS,QAAQtM,UAAU,qBAE9CF,IAAAC,cAAA,KAAGgE,KAAM,4CAA6C7B,OAAO,SAC1DkK,IAAI,uBACHtM,IAAAC,cAACyM,IAAW,CAACF,SAAS,QAAQtM,UAAU,qBAE5CF,IAAAC,cAAA,KAAGgE,KAAM,2CAA4C7B,OAAO,SACzDkK,IAAI,uBACHtM,IAAAC,cAAC0M,IAAe,CAACC,KAAMC,IAAUC,KAAK,KAAKC,MAAO,OACjCrC,MAAO,CAACsC,OAAQ,sBAGzChN,IAAAC,cAACyL,IAAG,CACAC,GAAI,CAACC,SAAU,EAAGC,cAAe,cAAetG,QAAS,CAACwG,GAAI,OAAQC,GAAI,UAC1EhM,IAAAC,cAACgN,IAAU,CACPC,aAAW,OACXC,gBAAc,cACdC,gBAAc,OACdjN,QAASlC,KAAK0E,kBACdoK,MAAM,WAEN/M,IAAAC,cAACoN,IAAQ,OAEbrN,IAAAC,cAACqN,IAAI,CACDrH,GAAG,cACHsH,SAAUtP,KAAKwC,MAAMQ,YACrBuM,aAAc,CACVC,SAAU,SACVC,WAAY,QAEhBC,aAAW,EACXC,gBAAiB,CACbH,SAAU,MACVC,WAAY,QAEhBrF,KAAMwF,QAAQ5P,KAAKwC,MAAMQ,aACzB6M,QAAS7P,KAAK6E,mBACd6I,GAAI,CAACpG,QAAS,CAACwG,GAAI,QAASC,GAAI,UAEhChM,IAAAC,cAAC8N,IAAQ,CAACC,IAAK,UACXhO,IAAAC,cAAA,QAAMC,UAAW,mBAAoBC,QAASlC,KAAK8E,cAAc,qBAIrE/C,IAAAC,cAAC8N,IAAQ,CAACC,IAAK,SACXhO,IAAAC,cAAA,QAAME,QAASA,IAAMC,GAAYgM,QAAQjG,KAAK,UACxCjG,UAAW,oBAAoB,oBAS7DF,IAAAC,cAAA,OAAKC,UAAU,0BAA0BwK,MAAO,CAACqE,OAAQ,SACrD/O,IAAAC,cAAA,UAAQ6O,MAAM,OAAOC,OAAO,OACpB9C,IAAI,2EACJyD,MAAM,uEAA+D2G,YAAY,IACjFC,MAAM,sGACNC,eAAe,kCAAkCC,iBAAe,SCjHhG,MAAMpK,GAAUqK,cAmFDC,OAjFf,cAAkBpW,YAEdvC,YAAYwC,GACRC,MAAMD,GAAOtC,KAQjB0Y,WAAcC,KACV3Y,KAAK+D,SAAS,CACV6U,WAAW,EACXC,UAAW,IAAI1P,KACfwP,aAAcA,EACdG,cAAe,QAEtB9Y,KAED+Y,aAAgBC,KACZhZ,KAAK+D,SAAS,CACVkV,aAAa,EACbC,YAAa,IAAI/P,KACjB6P,eAAgBA,EAChBG,gBAAiB,QAExBnZ,KAEDoZ,aAAgBC,KACZrZ,KAAK+D,SAAS,CACVuV,aAAa,EACbC,YAAa,IAAIpQ,KACjBkQ,eAAgBA,EAChBG,gBAAiB,QAExBxZ,KAEDyZ,sBAAyBC,KACrB,MAAMC,EAAO,IAAIxQ,KAAKuQ,GAChBE,KAAgBD,EAAKE,WAAa,KAAKF,EAAKG,aAAaH,EAAKI,iBAAiBJ,EAAKK,cAAcL,EAAKM,gBAAgBN,EAAKO,mBAC5HC,KAAkB,IAAIhR,KAAKA,KAAK+M,MAAM0D,IAAaQ,mBAAmB,YAAY,IAAIjR,KAAKA,KAAK+M,MAAM0D,IAAaS,mBAAmB,GAAI,CAACC,UAAW,YAC5J,MAAwB,iBAAjBH,EAAkC,WAAaA,IAtCtDna,KAAKwC,MAAQ,GACbW,OAAOsG,YAAczJ,KAAK0Y,WAC1BvV,OAAOoF,cAAgBvI,KAAK+Y,aAC5B5V,OAAOoX,cAAgBva,KAAKoZ,aAC5BjW,OAAOqX,uBAAyBxa,KAAKyZ,sBAqCzCnN,SACI,OACIvK,IAAAC,cAACyY,IAAa,CAACtM,QAASA,IACpBpM,IAAAC,cAAA,OAAKC,UAAU,OACXF,IAAAC,cAAC0Y,GAAW,MACZ3Y,IAAAC,cAAC2Y,GAAc,CACXpI,QAAQ,QACRnI,KAAMpK,KAAKwC,MAAMoW,UACjBjD,KAAM3V,KAAKwC,MAAMqW,UACjBlE,QAAS3U,KAAKwC,MAAMmW,aACpB9D,iBAAkB7U,KAAKwC,MAAMsW,gBAEjC/W,IAAAC,cAAC2Y,GAAc,CACXpI,QAAQ,UACRnI,KAAMpK,KAAKwC,MAAMyW,YACjBtD,KAAM3V,KAAKwC,MAAM0W,YACjBvE,QAAS3U,KAAKwC,MAAMwW,eACpBnE,iBAAkB7U,KAAKwC,MAAM2W,kBAEjCpX,IAAAC,cAAC2Y,GAAc,CACXpI,QAAQ,UACRnI,KAAMpK,KAAKwC,MAAM8W,YACjB3D,KAAM3V,KAAKwC,MAAM+W,YACjB5E,QAAS3U,KAAKwC,MAAM6W,eACpBxE,iBAAkB7U,KAAKwC,MAAMgX,kBAEjCzX,IAAAC,cAAC4Y,IAAK,CAACC,OAAK,EAAC1c,KAAK,IAAI2c,UAAW1Y,IACjCL,IAAAC,cAAC4Y,IAAK,CAACC,OAAK,EAAC1c,KAAK,UAAU2c,UAAW1Y,IACvCL,IAAAC,cAAC4Y,IAAK,CAACC,OAAK,EAAC1c,KAAK,SAAS2c,UAAW3C,KACtCpW,IAAAC,cAAC4Y,IAAK,CAACC,OAAK,EAAC1c,KAAK,QAAQ2c,UAAW5D,SC1ErCtH,QACW,cAA7BzM,OAAO4C,SAASgV,UAEe,UAA7B5X,OAAO4C,SAASgV,UAEhB5X,OAAO4C,SAASgV,SAASC,MACvB,2DA+GA,kBAAmBC,WACrBA,UAAUC,cAAcC,MAAM7b,KAAK8b,IACjCA,EAAaC,eCvHnBC,IAAShP,OAAOvK,IAAAC,cAACyY,IAAa,KAAC1Y,IAAAC,cAACyW,GAAG,OAAqBzT,SAASuW,eAAe","file":"static/js/main.3372d565.chunk.js?t=1770749263190","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/HeaderLogo.61071a3c.png\";","module.exports = __webpack_public_path__ + \"static/media/Mobile Want to drive the fan car.3d917a37.png\";","module.exports = __webpack_public_path__ + \"static/media/Want to drive the fan car.b36476c2.png\";","module.exports = __webpack_public_path__ + \"static/media/Step 1 Image.2b011f0c.png\";","module.exports = __webpack_public_path__ + \"static/media/Fan Car Graphic Blue.53516a06.png\";","module.exports = __webpack_public_path__ + \"static/media/Fan Car Graphic White.bd48fb3b.png\";","module.exports = __webpack_public_path__ + \"static/media/Mobile The ultimate hypercar driving experience.b640b147.png\";","module.exports = __webpack_public_path__ + \"static/media/The ultimate hypercar driving experience.88724bc7.png\";","module.exports = __webpack_public_path__ + \"static/media/Mobile Designed With No Limits.9e4e823d.png\";","module.exports = __webpack_public_path__ + \"static/media/Designed With No Limits.90d4ab41.png\";","module.exports = __webpack_public_path__ + \"static/media/Mobile Specifications.cc577856.png\";","module.exports = __webpack_public_path__ + \"static/media/Specifications.daddc3ee.png\";","module.exports = __webpack_public_path__ + \"static/media/Step 1.31867b1c.png\";","module.exports = __webpack_public_path__ + \"static/media/Step 2.afa5fcb0.png\";","module.exports = __webpack_public_path__ + \"static/media/Select all the packages.a83cf9ff.png\";","module.exports = __webpack_public_path__ + \"static/media/Bronze Package.55dbf274.png\";","module.exports = __webpack_public_path__ + \"static/media/Silver Package.81a86445.png\";","module.exports = __webpack_public_path__ + \"static/media/Gold Package.cf420ade.png\";","module.exports = __webpack_public_path__ + \"static/media/Platinum Package.527f2da1.png\";","module.exports = __webpack_public_path__ + \"static/media/Diamond Package.3e58c70e.png\";","module.exports = __webpack_public_path__ + \"static/media/Autocross Package.f95389a6.png\";","module.exports = __webpack_public_path__ + \"static/media/Trackday Package.7eba5d7a.png\";","module.exports = __webpack_public_path__ + \"static/media/Step 3.39d74918.png\";","module.exports = __webpack_public_path__ + \"static/media/Other fun things.159b44bb.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAg0AAABFCAYAAADJjNW8AAAACXBIWXMAAB7CAAAewgFu0HU+AAAE7mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDIgNzkuYjdjNjRjYywgMjAyNC8wNy8xNi0wNzo1OTo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI2LjEgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyNC0xMS0wNVQwODozMzoyOS0wNTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjQtMTEtMjZUMTM6NTI6MDktMDU6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQtMTEtMjZUMTM6NTI6MDktMDU6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjkxNDQ5ZWNkLWYwNTgtZTU0NC1iZGRjLTljM2RmNTMwMDJmMiIgeG1wTU06RG9jdW1lbnRJRD0i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\"","module.exports = __webpack_public_path__ + \"static/media/Well reach out.e0c182a5.png\";","module.exports = __webpack_public_path__ + \"static/media/Submit Arrows.37f3df9a.png\";","import {IRestService} from \"./IRestService\";\nimport axios, {AxiosPromise} from 'axios';\nimport {AxiosCall} from \"./AxiosCall\";\n\nexport class AxiosRestService implements IRestService {\n\tpublic get(path: string): Promise {\n\t\tconst url = AxiosRestService.formatUrl(path);\n\n\t\treturn AxiosRestService.convertResult(() => axios.get(url));\n\t}\n\n\tpublic post(path: string, body?: TBody, headers?: any): Promise {\n\t\treturn AxiosRestService.invoke(axios.post, path, body, headers);\n\t}\n\n\tpublic put(path: string, body?: TBody, headers?: any): Promise {\n\t\treturn AxiosRestService.invoke(axios.put, path, body, headers);\n\t}\n\n\tpublic delete(path: string, body?: TBody, headers?: any): Promise {\n\t\treturn AxiosRestService.invoke(axios.delete, path, {data: {body}}, headers);\n\t}\n\n\tprivate static invoke(method: AxiosCall, path: string, body?: TBody, headers?: any): Promise {\n\t\tconst url = AxiosRestService.formatUrl(path);\n\n\t\tlet headersObject: any = {};\n\t\tif (headers) {\n\t\t\theadersObject.headers = headers;\n\t\t}\n\n\t\treturn AxiosRestService.convertResult(() => method(url, body, headersObject));\n\t}\n\n\tprivate static formatUrl(path: string): string {\n\t\treturn `${process.env.REACT_APP_API_URL}${path}`;\n\t}\n\n\tprivate static convertResult(promiseFactory: () => AxiosPromise): Promise {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst promise = promiseFactory();\n\n\t\t\tpromise\n\t\t\t\t.then(result => {\n\t\t\t\t\tconst statusCode = result.status;\n\t\t\t\t\tconst data = result.data;\n\n\t\t\t\t\tif (statusCode >= 200 && statusCode < 300) {\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treject(result.statusText || data || statusCode);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(reason => reject(reason));\n\t\t})\n\t}\n}\n","export class Lazy {\n\tprivate currentGetter: () => T;\n\n\tpublic constructor(getter: () => T) {\n\t\tconst self = this;\n\n\t\tself.currentGetter = () => {\n\t\t\tconst value = getter();\n\n\t\t\tself.currentGetter = () => value;\n\n\t\t\treturn value;\n\t\t};\n\t}\n\n\tpublic getValue(): T {\n\t\treturn this.currentGetter();\n\t}\n}\n","import {IRestService} from \"./IRestService\";\nimport {IUserService} from \"./IUserService\";\n\nexport class UserService implements IUserService {\n\tpublic constructor(private readonly restService: IRestService) {\n\t}\n\n\tpublic getAdminUsers(): Promise {\n\t\treturn this.restService.get(`users/admin`);\n\t}\n\n\tpublic createUser(payload: any): Promise {\n\t\treturn this.restService.post(`users/create`, payload);\n\t}\n\n\tpublic loginUser(email: string, password: string): Promise {\n\t\treturn this.restService.post(`auth`, {email, password});\n\t}\n}\n","import {IRestService} from \"./IRestService\";\nimport {IFanCarService} from \"./IFanCarService\";\n\nexport class FanCarService implements IFanCarService {\n public constructor(private readonly restService: IRestService) {\n }\n\n public async getAllLocations(): Promise {\n return this.restService.get(`fancar/locations`);\n }\n\n public async getAllPackages(): Promise {\n return this.restService.get(`fancar/packages`);\n }\n\n public async getAllSubmissions(): Promise {\n return this.restService.get(`fancar/submissions`);\n }\n\n public async createSubmission(submission: any): Promise {\n return this.restService.post(`fancar/submission`, submission);\n }\n}\n","import {IRestService} from \"./IRestService\";\nimport {IServiceLocator} from \"./IServiceLocator\";\nimport {AxiosRestService} from \"./AxiosRestService\";\nimport {Lazy} from \"../general/Lazy\";\nimport {UserService} from \"./UserService\";\nimport {IUserService} from \"./IUserService\";\nimport {IFanCarService} from \"./IFanCarService\";\nimport {FanCarService} from \"./FanCarService\";\n\nexport class ServiceLocator implements IServiceLocator {\n\tpublic static readonly Instance: IServiceLocator = new ServiceLocator();\n\tprivate readonly restService: Lazy;\n\tprivate readonly fanCarService: Lazy;\n\tprivate readonly userService: Lazy;\n\n\tprivate constructor() {\n\t\tconst self = this;\n\t\tconst createLazy = ServiceLocator.createLazy;\n\n\t\tthis.restService = createLazy(() => new AxiosRestService());\n\t\tthis.fanCarService = createLazy(() => new FanCarService(self.getRestService()));\n\t\tthis.userService = createLazy(() => new UserService(self.getRestService()));\n\t}\n\n\tpublic getRestService(): IRestService {\n\t\treturn this.restService.getValue();\n\t}\n\n\tpublic getFanCarService(): IFanCarService {\n\t\treturn this.fanCarService.getValue();\n\t}\n\n\tpublic getUserService(): IUserService {\n\t\treturn this.userService.getValue();\n\t}\n\n\tprivate static createLazy(getter: () => T): Lazy {\n\t\treturn new Lazy(getter);\n\t}\n}\n","import React, {Component} from 'react';\nimport MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';\nimport TextField from '@material-ui/core/TextField';\nimport {AppBar, Box, CircularProgress, Container, Menu, MenuItem, Toolbar, Tooltip, Zoom} from \"@material-ui/core\";\nimport {ServiceLocator} from \"../../Services/ServiceLocator\";\nimport {uuid} from \"uuidv4\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport MenuIcon from '@mui/icons-material/Menu';\nimport KeyboardArrowDownRoundedIcon from '@mui/icons-material/KeyboardArrowDownRounded';\nimport InstagramIcon from \"@mui/icons-material/Instagram\";\nimport FacebookIcon from '@mui/icons-material/Facebook';\nimport YouTubeIcon from '@mui/icons-material/YouTube';\nimport EmailIcon from '@mui/icons-material/Email';\nimport {AudioVisualizer} from 'react-audio-visualize';\nimport axios from \"axios\";\nimport {\n TransformWrapper,\n TransformComponent,\n useControls\n} from \"react-zoom-pan-pinch\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faTiktok} from \"@fortawesome/free-brands-svg-icons\";\n\nlet locations = [];\nlet packages = [];\nlet blob;\n\nconst Controls = () => {\n const {zoomIn, zoomOut} = useControls();\n\n return (\n
\n zoomIn()}>ZOOM IN\n zoomOut()}>ZOOM OUT\n
\n );\n};\n\nclass LandingPage extends Component {\n state = {\n locations: [],\n packages: [],\n selectedLocations: [],\n selectedPackages: [],\n firstName: '',\n lastName: '',\n email: '',\n zipCode: '',\n comments: '',\n loading: true,\n anchorElNav: null,\n formFieldFocused: false\n };\n\n // Prefer Screen Orientation API (device orientation) so keyboard opening doesn't trigger \"landscape\"\n getOrientation = () => {\n if (typeof window === 'undefined') return 'portrait';\n const so = window.screen && window.screen.orientation;\n if (so && typeof so.type === 'string' && so.type.includes('landscape')) return 'landscape';\n return window.matchMedia('(orientation:landscape)').matches ? 'landscape' : 'portrait';\n };\n\n onWindowResize = () => {\n clearTimeout(window.resizeLag);\n window.resizeLag = setTimeout(() => {\n delete window.resizeLag;\n this.setState({ orientation: this.getOrientation() });\n }, 200);\n };\n\n onFormFocusIn = (e) => {\n const tag = e.target && e.target.tagName ? e.target.tagName.toLowerCase() : '';\n const editable = e.target && e.target.getAttribute && e.target.getAttribute('contenteditable') === 'true';\n if (tag === 'input' || tag === 'textarea' || tag === 'select' || editable) {\n this.setState({ formFieldFocused: true });\n }\n };\n\n onFormFocusOut = () => {\n // Short delay so we don't hide overlay when moving between fields\n clearTimeout(this._formBlurTimer);\n this._formBlurTimer = setTimeout(() => {\n this.setState({ formFieldFocused: true });\n }, 150);\n };\n\n handleOpenNavMenu = (event) => {\n this.setState({anchorElNav: event.currentTarget});\n };\n\n handleCloseNavMenu = () => {\n this.setState({anchorElNav: null});\n };\n\n constructor(props) {\n super(props);\n globalProps = props;\n this.loadData();\n this.loadAudio();\n this.onWindowResize();\n }\n\n componentDidMount() {\n const self = this;\n\n window.addEventListener('resize', this.onWindowResize, {passive: false});\n document.addEventListener('focusin', this.onFormFocusIn);\n document.addEventListener('focusout', this.onFormFocusOut);\n if (window.screen && window.screen.orientation && typeof window.screen.orientation.addEventListener === 'function') {\n window.screen.orientation.addEventListener('change', this.onWindowResize);\n }\n\n // Desktop wheel handling (keeps existing desktop functionality)\n self.refs.scroller.addEventListener('wheel', function (event) {\n try {\n const isMobile = window.innerWidth <= 768;\n \n if (!isMobile) {\n // Desktop: Keep existing complex snapping logic\n const currentScroll = self.refs.scroller.scrollTop;\n const viewportHeight = window.innerHeight;\n const headerOffset = 0;\n \n // Define exact video section start positions\n const videoSection1 = headerOffset;\n const videoSection2 = (viewportHeight * 0.9) + headerOffset;\n const videoSection3 = (viewportHeight * 1.8) + headerOffset;\n const formSectionStart = (viewportHeight * 2.7) + headerOffset;\n \n // Only intervene if we're very close to a video section boundary\n const tolerance = 50;\n const isNearBoundary = [videoSection1, videoSection2, videoSection3].some(section => \n Math.abs(currentScroll - section) < tolerance\n );\n \n // Check if scrolling up PAST the form boundary (not within it)\n const formScrollerTop = self.refs.join ? self.refs.join.offsetTop : formSectionStart;\n const isScrollingUpPastForm = event.deltaY < 0 && currentScroll < formSectionStart && currentScroll > (videoSection3 + tolerance);\n \n // Apply snapping if: near boundary OR scrolling up past form\n if (isNearBoundary || isScrollingUpPastForm) {\n let targetScroll;\n if (event.deltaY > 0) {\n // Scrolling down - find next section\n if (currentScroll < videoSection2 - tolerance) {\n targetScroll = videoSection2;\n } else if (currentScroll < videoSection3 - tolerance) {\n targetScroll = videoSection3;\n } else {\n // Past video 3, go to form\n targetScroll = formSectionStart;\n }\n } else {\n // Scrolling up - find previous section\n if (isScrollingUpPastForm) {\n // Scrolling up past form boundary - go to video 3\n targetScroll = videoSection3;\n } else if (currentScroll > videoSection2 + tolerance) {\n targetScroll = videoSection2;\n } else if (currentScroll > videoSection1 + tolerance) {\n targetScroll = videoSection1;\n } else {\n targetScroll = videoSection1;\n }\n }\n \n if (targetScroll !== undefined) {\n self.refs.scroller.scrollTo({\n top: targetScroll,\n behavior: 'smooth'\n });\n event.preventDefault();\n }\n }\n } else {\n // Mobile: Simple wheel handling from your provided code\n const numWithDelta = (self.refs.scroller.scrollTop + event.deltaY) / window.innerHeight;\n let scrollSpeed = 5;\n\n if (numWithDelta < 2.6) {\n event.preventDefault();\n let delta = event.deltaY;\n let scrollPosition = self.refs.scroller.scrollTop + (delta * scrollSpeed);\n\n self.refs.scroller.scrollTo({\n top: scrollPosition,\n behavior: 'smooth'\n });\n }\n }\n } catch (e) {\n console.log(e);\n }\n }, {passive: false});\n\n const navLink = document.querySelectorAll('.scroll-link');\n navLink.forEach(link => link.addEventListener('click', this.smoothScroll));\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.onWindowResize);\n document.removeEventListener('focusin', this.onFormFocusIn);\n document.removeEventListener('focusout', this.onFormFocusOut);\n if (window.screen && window.screen.orientation && typeof window.screen.orientation.removeEventListener === 'function') {\n window.screen.orientation.removeEventListener('change', this.onWindowResize);\n }\n clearTimeout(this._formBlurTimer);\n }\n\n smoothScroll = (event) => {\n const self = this;\n if (event) event.preventDefault();\n self.handleCloseNavMenu();\n if (document.querySelector('#join')) {\n self.refs.scroller.scrollTo({\n top: document.querySelector('#join').offsetTop - (window.innerHeight * 0.15),\n behavior: \"smooth\"\n });\n }\n }\n\n loadData = () => {\n const self = this;\n self.setState({loading: true});\n Promise.all([self.loadLocations(), self.loadPackages()]).then(() => {\n self.setState({locations, packages, loading: false});\n setTimeout(() => {\n if (window.location.href.indexOf('/signup') > -1) {\n self.smoothScroll();\n }\n }, 100);\n });\n };\n\n loadAudio = () => {\n try {\n axios.get('https://jxbstorage.blob.core.windows.net/fancar/Fan%20Car%20Audio.wav', {responseType: 'blob'}).then(response => {\n blob = new File([response.data], 'FanCarAudio.wav');\n this.setState({blob});\n });\n } catch (e) {\n console.log(e);\n return Promise.resolve();\n }\n }\n\n loadLocations = () => {\n const fanCarService = ServiceLocator.Instance.getFanCarService();\n return fanCarService.getAllLocations().then((locationsResult) => {\n locations = locationsResult;\n });\n };\n\n loadPackages = () => {\n const fanCarService = ServiceLocator.Instance.getFanCarService();\n return fanCarService.getAllPackages().then((packagesResult) => {\n packages = packagesResult;\n });\n };\n\n updateSpecificationsWidth = (event) => {\n try {\n const locationsWidth = this.refs.locationsMap ? this.refs.locationsMap.clientWidth : 100;\n\n if (locationsWidth !== this.state.locationsWidth)\n this.setState({locationsWidth});\n\n const num = this.refs.scroller.scrollTop / window.innerHeight;\n if (num < 0.5) {\n if (this.refs.videoOne[\"style\"].opacity !== 1) {\n this.refs.waveFormContainer[\"style\"].opacity = 1;\n this.refs.waveFormContainer[\"style\"].visibility = 'visible';\n this.refs.waveFormContainer[\"style\"].display = 'block';\n this.refs.downArrow[\"style\"].opacity = 1;\n this.refs.downArrow[\"style\"].display = 'block';\n this.refs.videoOne[\"style\"].opacity = 1;\n this.refs.videoTwo[\"style\"].opacity = 0;\n this.refs.videoThree[\"style\"].opacity = 0;\n this.refs.videoFour[\"style\"].opacity = 0;\n this.refs.videoFour[\"style\"].visibility = 'hidden';\n }\n } else if (num < 1.25) {\n this.refs.waveFormContainer[\"style\"].opacity = 0;\n this.refs.waveFormContainer[\"style\"].visibility = 'hidden';\n this.refs.waveFormContainer[\"style\"].display = 'none';\n if (this.refs.videoTwo[\"style\"].opacity !== 1) {\n this.refs.downArrow[\"style\"].opacity = 1;\n this.refs.downArrow[\"style\"].display = 'block';\n this.refs.videoOne[\"style\"].opacity = 0;\n this.refs.videoTwo[\"style\"].opacity = 1;\n this.refs.videoThree[\"style\"].opacity = 0;\n this.refs.videoFour[\"style\"].opacity = 0;\n this.refs.videoFour[\"style\"].visibility = 'hidden';\n }\n } else if (num < 2.7) {\n if (this.refs.videoThree[\"style\"].opacity !== 1) {\n this.refs.downArrow[\"style\"].opacity = 1;\n this.refs.downArrow[\"style\"].visibility = '';\n this.refs.videoOne[\"style\"].opacity = 0;\n this.refs.videoOne[\"style\"].visibility = '';\n this.refs.videoTwo[\"style\"].opacity = 0;\n this.refs.videoTwo[\"style\"].visibility = '';\n this.refs.videoThree[\"style\"].opacity = 1;\n this.refs.videoThree[\"style\"].visibility = '';\n this.refs.videoFour[\"style\"].opacity = 0;\n this.refs.videoFour[\"style\"].visibility = 'hidden';\n }\n } else {\n this.refs.downArrow[\"style\"].opacity = 0;\n this.refs.downArrow[\"style\"].visibility = 'hidden';\n this.refs.videoOne[\"style\"].opacity = 0;\n this.refs.videoOne[\"style\"].visibility = 'hidden';\n this.refs.videoTwo[\"style\"].opacity = 0;\n this.refs.videoTwo[\"style\"].visibility = 'hidden';\n this.refs.videoThree[\"style\"].opacity = 0;\n this.refs.videoThree[\"style\"].visibility = 'hidden';\n this.refs.videoFour[\"style\"].opacity = 0;\n this.refs.videoFour[\"style\"].visibility = 'hidden';\n if (num > 4.5) {\n this.refs.videoFour[\"style\"].opacity = 1;\n this.refs.videoFour[\"style\"].visibility = '';\n }\n }\n\n if (this.refs.join) {\n const offsetTop = this.refs.join.offsetTop;\n const scrollerTop = this.refs.scroller.scrollTop;\n if (scrollerTop > offsetTop - 100) {\n if (this.refs.wantToDrive[\"style\"].display !== 'block') {\n this.refs.wantToDrive[\"style\"].display = 'block';\n this.refs.wantToDrive[\"style\"].opacity = 1;\n }\n // Mobile only: Dynamic scroll-snap behavior for form section\n if (window.innerWidth <= 768) {\n if (this.refs.join[\"style\"].scrollSnapAlign !== 'end')\n this.refs.join[\"style\"].scrollSnapAlign = 'end';\n }\n } else {\n if (this.refs.wantToDrive[\"style\"].display !== 'none') {\n this.refs.wantToDrive[\"style\"].display = 'none';\n this.refs.wantToDrive[\"style\"].opacity = 0;\n }\n // Mobile only: Dynamic scroll-snap behavior for form section\n if (window.innerWidth <= 768) {\n if (this.refs.join[\"style\"].scrollSnapAlign !== 'start')\n this.refs.join[\"style\"].scrollSnapAlign = 'start';\n }\n }\n }\n } catch (e) {\n console.log(e);\n }\n };\n\n toggleLocation = (id) => {\n const {selectedLocations} = this.state;\n if (selectedLocations.indexOf(id) > -1)\n selectedLocations.splice(selectedLocations.indexOf(id), 1);\n else\n selectedLocations.push(id);\n this.setState({selectedLocations});\n };\n\n togglePackage = (id) => {\n const {selectedPackages} = this.state;\n if (selectedPackages.indexOf(id) > -1)\n selectedPackages.splice(selectedPackages.indexOf(id), 1);\n else\n selectedPackages.push(id);\n this.setState({selectedPackages});\n };\n\n submitEntry = () => {\n const self = this;\n self.setState({submitting: true});\n const {selectedLocations, selectedPackages, firstName, lastName, email, zipCode, comments} = self.state;\n if (selectedLocations.length === 0) {\n self.setState({submitting: false});\n return window.$alertWarning(\"Please select one or more locations from the map!\");\n }\n if (selectedPackages.length === 0) {\n self.setState({submitting: false});\n return window.$alertWarning(\"Please select one or more packages you're interested in!\");\n }\n if (firstName.trim().length === 0 || lastName.trim().length === 0 || email.trim().length === 0 || zipCode.trim().length === 0 || comments.trim().length === 0) {\n self.setState({submitting: false});\n return window.$alertWarning(\"Please fill out the comments section and all of your information!\");\n }\n\n const submissionId = uuid();\n\n const locations = selectedLocations.map((locationId) => {\n return {\n id: uuid(),\n submissionFk: submissionId,\n locationFk: locationId\n };\n });\n\n const packages = selectedPackages.map((packageId) => {\n return {\n id: uuid(),\n submissionFk: submissionId,\n packageFk: packageId\n };\n });\n\n const payload = {\n id: submissionId,\n firstName: firstName,\n lastName: lastName,\n emailAddress: email,\n zipCode: zipCode,\n comments: comments,\n submissionDate: new Date(),\n fanCarLocations: locations,\n fanCarPackages: packages\n };\n\n const fancarService = ServiceLocator.Instance.getFanCarService();\n fancarService.createSubmission(payload).then(() => {\n self.setState({submitted: true, submitting: false});\n }).catch((error) => {\n self.setState({submitting: false});\n console.log(error);\n window.$alertError(\"Uh oh! Something went wrong. Please try again later.\");\n });\n };\n\n playAudio = () => {\n this.setState({playingAudio: true});\n const video = this.refs.homepageVideo;\n video.removeAttribute('autoPlay');\n video.removeAttribute('muted');\n video.muted = false;\n video.play();\n }\n\n stopAudio = () => {\n this.setState({playingAudio: false});\n const video = this.refs.homepageVideo;\n video.setAttribute('autoPlay', 'true');\n video.setAttribute('muted', 'true');\n video.muted = true;\n video.play();\n };\n\n openFacebook = () => {\n window.open('https://www.facebook.com/profile.php?id=61570044266744', '_blank').focus();\n }\n\n openInstagram = () => {\n window.open('https://www.instagram.com/fancarexperience/', '_blank').focus();\n }\n\n openYoutube = () => {\n window.open('https://www.youtube.com/@FanCarExperience', '_blank').focus();\n }\n\n openTiktok = () => {\n window.open('https://www.tiktok.com/@fancarexperience', '_blank').focus();\n }\n\n render() {\n const isMobile = window.innerWidth < 768;\n const showRotateOverlay = isMobile && this.state.orientation === 'landscape' && !this.state.formFieldFocused;\n\n return (\n \n
\n {showRotateOverlay && (\n \n
\n

Please rotate your device to portrait

\n
\n
\n )}\n \n \n \n \n \n SIGN UP TO DRIVE\n \n \n \"Fan globalProps.history.push('/')}\n className=\"header-logo-image\"/>\n
\n \n {/* globalProps.history.push('/learn')}\n className={\"navbar-link\"}>\n LEARN MORE\n */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n SIGN UP TO DRIVE\n \n \n {/*\n globalProps.history.push('/learn')}\n className={'navbar-menu-link'}>\n LEARN MORE\n \n */}\n \n \n
\n
\n
\n {\"Want\n
\n
\n
\n
\n
\n {\"Designed\n
\n
\n
\n \n
\n
\n
\n
\n \n HOLD FOR AUDIO\n \n \n {/*
*/}\n
\n {\n const currentScroll = this.refs.scroller.scrollTop;\n const viewportHeight = window.innerHeight;\n \n // Use same logic as snap handling\n const isMobile = window.innerWidth <= 768;\n const headerOffset = isMobile ? 30 : 0;\n \n const videoSection1 = headerOffset;\n const videoSection2 = (viewportHeight * 0.9) + headerOffset;\n const videoSection3 = (viewportHeight * 1.8) + headerOffset;\n const formSectionStart = (viewportHeight * 2.7) + headerOffset;\n \n let targetScroll;\n if (currentScroll < videoSection2 - 50) {\n targetScroll = videoSection2;\n } else if (currentScroll < videoSection3 - 50) {\n targetScroll = videoSection3;\n } else {\n targetScroll = formSectionStart;\n }\n \n this.refs.scroller.scrollTo({\n top: targetScroll,\n behavior: 'smooth'\n });\n }}\n style={{cursor: 'pointer'}}/>\n
\n
\n {\"Designed\n
\n
\n
\n \n
\n
\n
\n
\n
\n {\"Designed\n
\n
\n
\n \n
\n
\n
\n
\n {this.state.loading === true ? '' :\n
\n {\"Want\n
\n {\"Step\n
\n {window.innerWidth <= 768 ?\n
\n \n \n
\n {\"Fan\n
\n {this.state.locations.map((location) => {\n return (\n {location.name}
{location.city}, {location.state}\n
} aria-label={location.name}\n TransitionComponent={Zoom}\n enterTouchDelay={0}>\n
this.toggleLocation(location.id)}>\n {this.state.selectedLocations.indexOf(location.id) > -1 ?\n \n :\n \n }\n
\n \n )\n })}\n
\n
\n \n \n \n
\n :\n
\n {\"Fan\n
\n {this.state.locations.map((location) => {\n return (\n {location.name}
{location.city}, {location.state}\n
} aria-label={location.name}\n TransitionComponent={Zoom} enterTouchDelay={0}>\n
this.toggleLocation(location.id)}>\n {this.state.selectedLocations.indexOf(location.id) > -1 ?\n \n :\n \n }\n
\n \n )\n })}\n
\n
\n }\n
\n {\"Step\n
\n {\"Select\n
\n
this.togglePackage(this.state.packages.find(x => x.name === 'Bronze').id)}>\n {\"Bronze x.name === 'Bronze').id) > -1 ? 'selected-package' : ''}`}/>\n
\n
this.togglePackage(this.state.packages.find(x => x.name === 'Silver').id)}>\n {\"Silver x.name === 'Silver').id) > -1 ? 'selected-package' : ''}`}/>\n
\n
this.togglePackage(this.state.packages.find(x => x.name === 'Gold').id)}>\n {\"Gold x.name === 'Gold').id) > -1 ? 'selected-package' : ''}`}/>\n
\n
this.togglePackage(this.state.packages.find(x => x.name === 'Platinum').id)}>\n {\"Platinum x.name === 'Platinum').id) > -1 ? 'selected-package' : ''}`}/>\n
\n
this.togglePackage(this.state.packages.find(x => x.name === 'Diamond').id)}>\n {\"Diamond x.name === 'Diamond').id) > -1 ? 'selected-package' : ''}`}/>\n
\n
this.togglePackage(this.state.packages.find(x => x.name === 'Autocross').id)}>\n {\"Autocross x.name === 'Autocross').id) > -1 ? 'selected-package' : ''}`}/>\n
\n
this.togglePackage(this.state.packages.find(x => x.name === 'Track Day').id)}>\n {\"Trackday x.name === 'Track Day').id) > -1 ? 'selected-package' : ''}`}/>\n
\n
\n
\n {\"Step\n
\n {\"Other\n
\n this.setState({comments: event.target.value})}/>\n
\n {\"Step\n
\n {\"We'll\n
\n this.setState({firstName: event.target.value})}/>\n this.setState({lastName: event.target.value})}/>\n this.setState({email: event.target.value})}/>\n this.setState({zipCode: event.target.value})}/>\n {this.state.submitted === true ?\n
\n Submitted! Thank you - we'll be in touch.\n
\n :\n
\n {this.state.submitting ?\n \n :\n {\"Submit\"}\n }\n
\n }\n
\n
\n
\n
Coming to an Airstrip Near You
Late 2026\n
\n \n
\n
\n
\n {window.innerWidth < 768 ?\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n : \"\"}\n \n \n \n
\n \n }\n \n \n \n
\n );\n }\n}\n\nlet globalProps;\n\nexport default LandingPage;\n","import { useEffect } from 'react';\nimport { withRouter } from 'react-router-dom';\n\nfunction ScrollToTop({ history }) {\n useEffect(() => {\n const unlisten = history.listen(() => {\n window.scrollTo(0, 0);\n });\n return () => {\n unlisten();\n }\n }, []);\n\n return null;\n}\n\nexport default withRouter(ScrollToTop);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport InfoIcon from '@material-ui/icons/Info';\nimport CloseIcon from '@material-ui/icons/Close';\nimport green from '@material-ui/core/colors/green';\nimport amber from '@material-ui/core/colors/amber';\nimport IconButton from '@material-ui/core/IconButton';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport {withStyles} from '@material-ui/core/styles';\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst styles1 = theme => ({\n success: {\n backgroundColor: green[600],\n },\n error: {\n backgroundColor: theme.palette.error.dark,\n },\n info: {\n backgroundColor: theme.palette.primary.dark,\n },\n warning: {\n backgroundColor: amber[700],\n },\n icon: {\n fontSize: 20,\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing.unit,\n },\n message: {\n display: 'flex',\n alignItems: 'center',\n },\n});\n\nfunction MySnackbarContent(props) {\n const {classes, className, message, onClose, variant, open, autoHideDuration, ...other} = props;\n const Icon = variantIcon[variant];\n\n return (\n \n \n \n {message}\n \n }\n action={[\n \n \n ,\n ]}\n {...other}\n />\n \n );\n}\n\nMySnackbarContent.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n message: PropTypes.node,\n onClose: PropTypes.func,\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\n};\n\nconst MySnackbarContentWrapper = withStyles(styles1)(MySnackbarContent);\n\nconst styles2 = theme => ({\n margin: {\n margin: theme.spacing.unit,\n },\n});\n\nclass GlobalSnackbar extends React.Component {\n state = {\n open: true,\n };\n\n handleClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n this.setState({open: false});\n };\n\n render() {\n const {classes} = this.props;\n if (this.props.open === undefined || this.props.open === false) return \"\";\n if (this.state.time === undefined || this.props.time > this.state.time) this.setState({\n open: true,\n time: this.props.time\n });\n\n return (\n \n );\n }\n}\n\nGlobalSnackbar.propTypes = {\n classes: PropTypes.object.isRequired,\n message: PropTypes.node,\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\n};\n\nexport default withStyles(styles2)(GlobalSnackbar);\n","import React from 'react';\n\nconst DownloadCSV = ({ data, fileName }) => {\n const convertToCSV = (objArray) => {\n const array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n let str = '';\n\n for (let i = 0; i < array.length; i++) {\n let line = '';\n for (let index in array[i]) {\n if (line !== '') line += ',';\n\n line += array[i][index];\n }\n str += line + '\\r\\n';\n }\n return str;\n };\n\n const downloadCSV = () => {\n const csvData = new Blob([convertToCSV(data)], { type: 'text/csv' });\n const csvURL = URL.createObjectURL(csvData);\n const link = document.createElement('a');\n link.href = csvURL;\n link.download = `${fileName}.csv`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n\n return (\n \n );\n}\n\nexport default DownloadCSV;","import React, {Component} from 'react';\nimport MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';\nimport {CircularProgress} from \"@material-ui/core\";\nimport {ServiceLocator} from \"../../Services/ServiceLocator\";\nimport DownloadCSV from \"../Common/DownloadCSV\";\nimport bcrypt from 'bcryptjs';\nimport TextField from \"@material-ui/core/TextField\";\n\nlet submissions = [];\nlet locations = [];\nlet packages = [];\nlet data = [];\n\nclass DownloadSubmissions extends Component {\n state = {\n loading: true,\n password: '',\n passwordSuccess: false\n };\n\n constructor(props) {\n super(props);\n }\n\n authenticate = () => {\n if (bcrypt.hashSync(this.state.password, '$2a$10$CwTycUXWue0Thq9StjUM0u') === '$2a$10$CwTycUXWue0Thq9StjUM0u6Tm8.TU7hoFKIuhFkSNh7MwAIrw5pTK') {\n this.loadData();\n } else {\n window.$alertError('Wrong password.');\n }\n };\n\n loadData = () => {\n const self = this;\n self.setState({loading: true, passwordSuccess: true});\n\n Promise.all([self.loadLocations(), self.loadPackages(), self.loadSubmissions()]).then(() => {\n data = [['First Name','Last Name','Date','Email','ZipCode','Comments']];\n packages.forEach((packageObj) => {\n data[0].push(packageObj.name);\n });\n locations.forEach((locationObj) => {\n data[0].push(locationObj.name);\n });\n submissions.forEach((submission) => {\n data.push([`${submission.firstName.replaceAll(',', '')}`,` ${submission.lastName.replaceAll(',', '')}`,`${new Date(submission.submissionDate).toLocaleString().replaceAll(',', '')}`,`${submission.emailAddress.replaceAll(',', '')}`,`${submission.zipCode.replaceAll(',', '')}`,`${submission.comments.replaceAll(', ', ' ').replaceAll('\\n', ' || ')}`]);\n packages.forEach((packageObj) => {\n data[data.length - 1].push(submission.fanCarPackages.find(x => x.package.id === packageObj.id) ? `x` : ``);\n });\n locations.forEach((locationObj) => {\n data[data.length - 1].push(submission.fanCarLocations.find(x => x.location.id === locationObj.id) ? `x` : ``);\n });\n });\n console.log(data);\n self.setState({submissionsData: data, loading: false});\n });\n };\n\n loadLocations = () => {\n const fanCarService = ServiceLocator.Instance.getFanCarService();\n return fanCarService.getAllLocations().then((locationsResult) => {\n locations = locationsResult.sort(function (a, b) {\n if (a.name > b.name) return 1;\n if (b.name > a.name) return -1;\n return 0;\n });\n });\n };\n\n loadPackages = () => {\n const fanCarService = ServiceLocator.Instance.getFanCarService();\n return fanCarService.getAllPackages().then((packagesResult) => {\n packages = [];\n packages.push(packagesResult.find(x => x.name === 'Bronze'));\n packages.push(packagesResult.find(x => x.name === 'Silver'));\n packages.push(packagesResult.find(x => x.name === 'Gold'));\n packages.push(packagesResult.find(x => x.name === 'Platinum'));\n packages.push(packagesResult.find(x => x.name === 'Diamond'));\n packages.push(packagesResult.find(x => x.name === 'Autocross'));\n packages.push(packagesResult.find(x => x.name === 'Track Day'));\n });\n };\n\n loadSubmissions = () => {\n const fanCarService = ServiceLocator.Instance.getFanCarService();\n return fanCarService.getAllSubmissions().then((submissionsResult) => {\n submissions = submissionsResult.sort(function (a, b) {\n return new Date(b.submissionDate) - new Date(a.submissionDate);\n });\n });\n }\n\n render() {\n if (!this.state.passwordSuccess) {\n return (\n \n
\n this.setState({password: event.target.value})}/>\n

\n \n
\n
\n );\n }\n\n if (this.state.loading) {\n return (\n \n
\n \n
\n
\n );\n }\n\n return (\n \n
\n \n
\n
\n );\n }\n}\n\nexport default DownloadSubmissions;\n","import React, {Component} from 'react';\nimport MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';\nimport {AppBar, Box, Container, Menu, MenuItem, Toolbar} from \"@material-ui/core\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport MenuIcon from '@mui/icons-material/Menu';\nimport FacebookIcon from \"@mui/icons-material/Facebook\";\nimport InstagramIcon from \"@mui/icons-material/Instagram\";\nimport YouTubeIcon from \"@mui/icons-material/YouTube\";\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\nimport {faTiktok} from \"@fortawesome/free-brands-svg-icons\";\n\nclass Learn extends Component {\n state = {\n anchorElNav: null\n };\n\n handleOpenNavMenu = (event) => {\n this.setState({anchorElNav: event.currentTarget});\n };\n\n handleCloseNavMenu = () => {\n this.setState({anchorElNav: null});\n };\n\n constructor(props) {\n super(props);\n globalProps = props;\n }\n\n render() {\n return (\n \n
\n \n \n \n \n globalProps.history.push('/signup')}\n className={\"navbar-link\"}>\n SIGN UP TO DRIVE\n \n \n \"Fan globalProps.history.push('/')}\n className=\"header-logo-image\"/>\n
\n \n globalProps.history.push('/learn')}\n className={\"navbar-link\"}>\n LEARN MORE\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n SIGN UP TO DRIVE\n \n \n \n globalProps.history.push('/learn')}\n className={'navbar-menu-link'}>\n LEARN MORE\n \n \n \n \n
\n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nlet globalProps;\n\nexport default Learn;\n","import React, {Component} from 'react';\nimport LandingPage from \"./components/Home/LandingPage.js\";\nimport {Route, BrowserRouter} from \"react-router-dom\";\nimport {createBrowserHistory} from \"history\";\nimport './App.css';\nimport ScrollToTop from \"./ScrollToTop\";\nimport GlobalSnackbar from \"./components/Common/GlobalSnackbar\";\nimport DownloadSubmissions from \"./components/Home/DownloadSubmissions\";\nimport Learn from \"./components/Home/Learn\";\n\nconst history = createBrowserHistory();\n\nclass App extends Component {\n\n constructor(props) {\n super(props);\n this.state = {};\n window.$alertError = this.alertError;\n window.$alertWarning = this.alertWarning;\n window.$alertSuccess = this.alertSuccess;\n window.$toLocalDateTimeString = this.toLocalDateTimeString;\n }\n\n alertError = (errorMessage) => {\n this.setState({\n errorOpen: true,\n errorTime: new Date(),\n errorMessage: errorMessage,\n errorDuration: 5000\n });\n };\n\n alertWarning = (warningMessage) => {\n this.setState({\n warningOpen: true,\n warningTime: new Date(),\n warningMessage: warningMessage,\n warningDuration: 5000\n });\n };\n\n alertSuccess = (successMessage) => {\n this.setState({\n successOpen: true,\n successTime: new Date(),\n successMessage: successMessage,\n successDuration: 5000\n });\n };\n\n toLocalDateTimeString = (dateInput) => {\n const date = new Date(dateInput);\n const dateString = `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()} UTC`;\n const returnString = `${new Date(Date.parse(dateString)).toLocaleDateString(\"en-CA\")} ${new Date(Date.parse(dateString)).toLocaleTimeString([], {timeStyle: 'short'})}`;\n return returnString === 'Invalid Date' ? '12:00 AM' : returnString;\n };\n\n render() {\n return (\n \n
\n \n \n \n \n \n \n \n \n
\n
\n );\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport { BrowserRouter } from 'react-router-dom';\nimport * as serviceWorker from './serviceWorker';\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n\nReactDOM.render(, document.getElementById('root'));\n"],"sourceRoot":""}