{"version":3,"sources":["assets/images/backgrounds/bg_main.jpg","assets/images/homePage/bannerSection/video/btn_play_bg.png","assets/images/pageSectionSeparators/divide_black.png","assets/images/common/yellowJaggyEdges/yellow_jaggy_top.png","assets/images/common/yellowJaggyEdges/yellow_jaggy_bottom.png","assets/images/pageSectionSeparators/divide_pink.png","assets/images/pageSectionSeparators/divide_yellow.png","assets/images/logos/logo_codemasters.png","assets/images/logos/licensing/logo_stadia.png","assets/images/logos/licensing/logo_steam.png","assets/images/logos/licensing/logo_xboxone.png","assets/images/logos/licensing/logo_xboxseriesxs.png","assets/images/logos/licensing/logo_playstation.png","assets/images/logos/licensing/logo_amd.png","assets/images/logos/licensing/logo_nvidia.png","assets/images/logos/licensing/logo_pegi.png","assets/images/logos/logo_dirt5.png","assets/images/navigationBar/nav_bg.png","assets/images/navigationBar/navigationItemSprites/nav_home.png","assets/images/navigationBar/navigationItemSprites/nav_news.png","assets/images/icons/icon_controller.png","assets/images/icons/icon_warning.png","assets/images/backgrounds/bg_media.jpg","assets/images/homePage/bannerSection/BannerSectionBackground.jpg","assets/images/homePage/bannerSection/BannerSectionBackgroundMobile.jpg","assets/images/homePage/bannerSection/ign_badge.png","assets/images/icons/btn_close.png","assets/videos/homepage/video_bg.png","assets/videos/homepage/video_innerframe.png","assets/videos/homepage/launch/launchVideoLoop.mp4","assets/videos/homepage/launch/launchVideoLoop.jpg","assets/images/homePage/bannerSection/img_packshot_all.png","assets/images/backgrounds/whitenoise.jpg","assets/images/icons/btn_left.png","assets/images/icons/btn_right.png","assets/images/homePage/gameInfoSection/featuresTile/features_bg_zigzag.jpg","assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_01.jpg","assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_02.jpg","assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_03.jpg","assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_04.jpg","assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_05.jpg","assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_06.jpg","assets/images/homePage/gameInfoSection/title_gameinfo.png","assets/images/homePage/nextGenSection/title_nextgen.png","assets/images/homePage/nextGenSection/bg_nextgen.jpg","assets/images/homePage/nextGenSection/bg_nextgen_mob_xbox.jpg","assets/images/homePage/nextGenSection/bg_nextgen_mob_ps.jpg","assets/images/homePage/nextGenSection/title_freeupgrade.png","assets/images/homePage/nextGenSection/bg_textbox.png","assets/images/homePage/nextGenSection/logos/logo_xsx.png","assets/images/homePage/nextGenSection/logos/logo_ps5.png","assets/images/backgrounds/bg_buy_now_text_box.png","assets/images/homePage/buyNowSection/standardEditionKeyart.png","assets/images/homePage/buyNowSection/standardEditionTitle.png","assets/images/homePage/buyNowSection/specialEditionKeyart.png","assets/images/homePage/buyNowSection/specialEditionTitle.png","assets/images/homePage/buyNowSection/title_buynow.png","assets/images/homePage/buyNowSection/title_addons.png","assets/images/homePage/buyNowSection/dlc/dlc_01.png","assets/images/homePage/buyNowSection/dlc/title_dlc_01.png","assets/images/homePage/buyNowSection/dlc/dlc_02.png","assets/images/homePage/buyNowSection/dlc/title_dlc_02.png","assets/images/homePage/buyNowSection/dlc/dlc_03.png","assets/images/homePage/buyNowSection/dlc/title_dlc_03.png","assets/images/homePage/buyNowSection/dlc/dlc_04.png","assets/images/homePage/buyNowSection/dlc/title_dlc_04.png","assets/images/homePage/mediaSection/title_media.png","assets/images/creditsPage/CitroenLogo.png","assets/images/creditsPage/FordOfficialLicensedProduct.png","assets/images/creditsPage/PirelliLogo.jpg","assets/images/creditsPage/RenaultLogo.jpg","assets/images/creditsPage/VWLogo.jpg","assets/images/newsPage/title_relatedarticles.png","assets/images/common/yellowJaggyEdges/yellow_jaggy_top_hires.png","assets/images/common/yellowJaggyEdges/yellow_jaggy_bottom_hires.png","routes.ts","components/layout/StickyFooter.tsx","theme.ts","components/SkewedSection.tsx","components/layout/PageSection.tsx","components/links/LinkWrapper.tsx","components/links/NewTabLink.tsx","components/links/RouterLink.tsx","components/links/LinkableItem.tsx","utils/isExternalLink.ts","components/Spacer.tsx","links.ts","components/cookieConsent/CookieContext.tsx","components/footer/codemasters/LegalLinks.tsx","components/footer/codemasters/CodemastersSection.tsx","components/footer/licensing/CopyrightText.tsx","components/footer/licensing/logos/LogoLink.tsx","assets/svgs/logos/VwLogo.tsx","components/footer/licensing/logos/GamePlatformLogos.tsx","components/footer/licensing/logos/RatingLogo.tsx","components/footer/licensing/LicensingSection.tsx","assets/svgs/icons/socialMedia/TwitterIcon.tsx","assets/svgs/icons/socialMedia/FacebookIcon.tsx","assets/svgs/icons/socialMedia/InstagramIcon.tsx","assets/svgs/icons/socialMedia/YouTubeIcon.tsx","assets/svgs/icons/socialMedia/DiscordIcon.tsx","components/SocialMediaIcons.tsx","components/footer/Footer.tsx","utils/getAnchorRoute.ts","components/links/RouterAnchorLink.tsx","components/HomeLogo.tsx","components/links/RouterAnchorNavLink.tsx","components/navigationBar/NavigationItem.tsx","components/rotate/Rotate.tsx","assetLocations.ts","components/buttons/StyledButton.tsx","components/buttons/RouterAnchorLinkButton.tsx","components/navigationBar/NavigationBar.tsx","components/layout/PageLayout.tsx","components/buttons/RouterLinkButton.tsx","components/aos/AosWrapper.tsx","utils/arrayUtils.ts","components/aos/RandomFlip.tsx","components/aos/DefaultAosAnimation.tsx","components/textBoxes/whiteTextBox/WhiteTextBox.tsx","components/textBoxes/whiteTextBox/WhiteTextBoxWithAdornments.tsx","pages/errorPages/ErrorCodeTitle.tsx","pages/errorPages/ErrorCodeComponent.tsx","components/scribble/ScribbleImage.tsx","components/scribble/Scribble.tsx","components/rotate/RandomRotate.tsx","components/backgrounds/useBackgroundStyles.ts","pages/errorPages/ErrorPage.tsx","pages/errorPages/NotFoundPage.tsx","imageSizes.ts","utils/calculateAspectRatioVwHeight.ts","contexts/ConfigContext.ts","utils/calculateAspectRatioPaddingTopPercentage.ts","components/skeletons/MediaSkeleton.tsx","utils/calculateAspectRatio.ts","assets/svgs/icons/PlayButtonOutline.tsx","components/glitch/Glitch.tsx","components/YouTubeVideo.tsx","components/dialogs/DialogTransition.tsx","components/dialogs/DialogCloseButton.tsx","components/dialogs/MediaDialog.tsx","components/dialogs/VideoDialog.tsx","pages/home/sections/banner/components/BannerVideo.tsx","pages/home/sections/banner/components/BuyNowWidget.tsx","pages/home/sections/banner/BannerSection.tsx","models/CountryCode.ts","apiConsumers/EndpointsBaseClass.ts","apiConsumers/backendApiConsumer/ConfigEndpoints.ts","apiConsumers/backendApiConsumer/LocationEndpoints.ts","utils/getLocationCountryCode.ts","apiConsumers/backendApiConsumer/EmailSubscriptionEndpoints.ts","apiConsumers/backendApiConsumer/BackendApiConsumer.ts","apiConsumers/newsApiConsumer/converters/utils.ts","apiConsumers/newsApiConsumer/converters/artictleContentResponseConverter.ts","apiConsumers/newsApiConsumer/converters/convertArticleResponse.ts","apiConsumers/QueryParameter.ts","apiConsumers/newsApiConsumer/NewsApiConsumer.ts","apiConsumers/kenticoApiConsumer/converters/utils.ts","apiConsumers/kenticoApiConsumer/converters/mediaPage/convertMediapageTagsResponse.ts","apiConsumers/kenticoApiConsumer/converters/mediaPage/convertMediapageVideosResponse.ts","apiConsumers/kenticoApiConsumer/converters/mediaPage/convertMediapageScreenshotsResponse.ts","apiConsumers/kenticoApiConsumer/converters/quotes/convertQuoteResponse.ts","apiConsumers/kenticoApiConsumer/KenticoApiConsumer.ts","apiConsumers/index.ts","assets/svgs/backgrounds/zigzag_pattern_invert.svg","components/backgrounds/ZigZagPatternBackground.tsx","pages/home/sections/quotes/Quote.tsx","components/pagination/PaginationButton.tsx","components/selectableCollection/SelectableCollectionPagination.tsx","components/selectableCollection/SelectableCollection.tsx","pages/home/sections/quotes/QuotesSection.tsx","components/skeletons/ImageSkeleton.tsx","components/textBoxes/textboxWithImage/TextBoxWithImage.tsx","pages/home/sections/gameInfo/featureTile/FeatureTile.tsx","pages/home/sections/gameInfo/GameInfoSection.tsx","pages/home/sections/nextGen/NextGenUpgradeTextBox.tsx","pages/home/sections/nextGen/textBoxes/NextGenTextBox.tsx","pages/home/sections/nextGen/textBoxes/XboxSeriesXTextBox.tsx","pages/home/sections/nextGen/textBoxes/Playstation5TextBox.tsx","pages/home/sections/nextGen/NextGenSection.tsx","components/backgrounds/BuyNowTextBoxBackground.tsx","components/textBoxes/buyNow/BuyNowTextBox.tsx","components/textBoxes/buyNow/BuyNowTextBoxWithAdornments.tsx","pages/home/sections/buynow/editions/Edition.tsx","components/dialogs/styledDialog/PlaceholderPaper.tsx","components/dialogs/styledDialog/StyledDialog.tsx","hooks/useCountrySelect/CountryOption.tsx","errors/NonIntegerError.ts","errors/NonPositiveNumberError.ts","utils/splitArray.ts","utils/splitNumberLine.ts","components/listDisplay/ListDisplayController.ts","components/listDisplay/ListDisplay.tsx","utils/noop.ts","hooks/useCountrySelect/useCountrySelect.tsx","hooks/useCountrySelect/index.ts","components/buttons/NewTabLinkButton.tsx","pages/home/sections/buynow/dialog/platformSelection/SelectionButton.tsx","pages/home/sections/buynow/dialog/platformSelection/PlatformSelect.tsx","components/inputs/StyledTextField.tsx","assets/svgs/icons/CheckboxTickIcon.tsx","components/inputs/StyledCheckBox.tsx","hooks/useSubscriptionForm.tsx","pages/home/sections/buynow/dialog/platformSelection/PurchaseSubscriptionInput.tsx","pages/home/sections/buynow/dialog/platformSelection/StoreSelect.tsx","assets/svgs/icons/BackArrowIcon.tsx","pages/home/sections/buynow/dialog/platformSelection/usePlatformSelectionLinks.tsx","hooks/useCountrySelect/defaultCountries.tsx","pages/home/sections/buynow/dialog/BuyNowDialogController.tsx","pages/home/sections/buynow/dialog/BuyNowDialog.tsx","models/EditionType.ts","pages/home/sections/buynow/BuyNowButton.tsx","pages/home/sections/buynow/editions/NextGenUpgradeText.tsx","pages/home/sections/buynow/editions/StandardEdition.tsx","pages/home/sections/buynow/editions/SpecialEdition.tsx","pages/home/sections/buynow/addons/AddonsTitle.tsx","pages/home/sections/buynow/addons/Addon.tsx","pages/home/sections/buynow/addons/Addons.tsx","pages/home/sections/buynow/BuyNowSection.tsx","pages/home/sections/media/itemGrid/ItemGrid.tsx","pages/home/sections/media/ClickableMediaItem.tsx","components/Img/Img.tsx","components/YouTubeVideoDialogThumbnail.tsx","pages/home/sections/media/Videos.tsx","components/dialogs/ImageDialog.tsx","utils/getKenticoImageSrc.ts","components/Img/KenticoImg.tsx","pages/home/sections/media/Screenshots.tsx","pages/home/sections/media/MediaSection.tsx","pages/home/HomePage.tsx","pages/credits/CreditsPage.tsx","components/news/articleContentResolver/widgets/YoutubeVideoWidget.tsx","components/news/articleContentResolver/utils/decodeUnderline.ts","components/news/articleContentResolver/widgets/TextBlockWidget.tsx","components/news/articleContentResolver/widgets/ButtonsWidget.tsx","components/news/articleContentResolver/widgets/HtmlWidget.tsx","components/news/articleContentResolver/widgets/gallery/GallerySwiper.tsx","components/news/articleContentResolver/widgets/gallery/GalleryWidget.tsx","components/news/articleContentResolver/ContentResolver.tsx","components/news/ArticleContent.tsx","components/news/articleOverviewWidgets/ArticleOverviewWithDescription.tsx","components/news/articleOverviewWidgets/SubArticleOverviewWithTitle.tsx","components/buttons/LoadableButton.tsx","pages/news/pages/NewsPage.tsx","components/news/ArticleTitle.tsx","pages/news/pages/NewsArticlePage/NewsArticleSection.tsx","pages/news/pages/NewsArticlePage/NewsArticlePageContent.tsx","pages/news/pages/NewsArticlePage/RelatedNews.tsx","pages/news/pages/NewsArticlePage/NewsArticleBackButton.tsx","pages/news/pages/NewsArticlePage/NewsArticlePage.tsx","pages/news/routes.tsx","App.tsx","serviceWorker.ts","components/GlobalCss.tsx","index.tsx"],"names":["module","exports","routes","home","route","anchors","root","gameInfo","nextGen","buy","media","news","credits","useStyles","makeStyles","theme","createStyles","display","flex","flexDirection","minHeight","overflowY","content","backgroundColor","palette","background","paper","color","common","black","StickyFooter","props","classes","children","footer","className","rest","clsx","socialMediaColours","transition","tileHoverEffect","fonts","createMuiTheme","primary","main","secondary","default","white","typography","fontFamily","body1","fontWeight","fontSize","body2","button","navBarColour","layoutConsts","skeletonColour","grey","gutterPadding","xl","spacing","lg","md","sm","xs","horizontalPadding","articleContentLayout","maxWidth","topBottomPadding","getSkew","skewAmount","axis","SkewedSection","skewChildren","overrideClasses","transform","childContainer","undefined","PageSection","variant","skewed","topSeparatorVariant","disablePadding","position","skewedSectionRoot","justifyContent","padding","breakpoints","down","topTear","zIndex","width","top","height","stripImageSrc","primaryDivideImage","secondaryDivideImage","blackDivideImage","stripImageAlt","src","alt","LinkWrapper","Link","NewTabLink","href","target","rel","underlineNone","textDecoration","underlineHover","underlineAlways","RouterLink","underline","LinkableItem","to","link","startsWith","style","Spacer","useTheme","size","dimension","links","socialMedia","twitter","facebook","youtube","instagram","discord","legal","termsAndConditions","privacyPolicy","cookiePolicy","contactUs","licensing","playstation","xbox","steam","stadia","pegi","amd","nvidia","vw","codemasters","rikAstley","defaultCookieContext","cookieBannerIsOpen","preferencesDialogIsOpen","openPreferencesDialog","closePreferencesDialog","preferences","savePreferences","CookieContext","createContext","alignItems","cursor","LegalLinks","smallScreen","useMediaQuery","legalLinks","useContext","label","map","legalLink","i","showBar","length","key","Typography","margin","id","lineHeight","logoContainer","opacity","CodemastersSection","codemastersLogo","textAlign","CopyrightText","LogoLink","logoLink","logo","VwLogo","SvgIcon","d","platformLogoContainer","platformLicenseLogoContainer","marginBottom","amdLogo","nvidiaLogo","vwLogo","item","vwItem","platformItem","firstItem","marginLeft","lastItem","marginRight","GamePlatformLogos","logoLinks","xboxSeriesXSLogo","xboxOneLogo","playstationLogo","steamLogo","stadiaLogo","rating","RatingLogo","pegiLogo","ratingLogoContainer","LicensingSection","TwitterIcon","InstagramIcon","cx","cy","r","YouTubeIcon","DiscordIcon","hoverBackgroundColour","icon","transitions","create","duration","easing","easeInOut","SocialMediaIcons","iconLinks","iconLink","borderRadius","IconButton","marginTop","contentContainer","paddingTop","Footer","overideClasses","getAnchorRoute","anchor","RouterAnchorLink","smooth","HomeLogo","dirt5Logo","RouterAnchorNavLink","spritePositioning","activeNavLink","textTransform","visibility","sprite","NavigationItem","spriteSrc","matchExactPath","clickable","navItemContent","ListItemText","disableTypography","overflow","MenuItem","component","exact","activeClassName","disabled","Rotate","amount","publicAssetsDirectory","process","buttonBackgroundsLocation","errorCodeTitlesLocation","flagsLocation","scribblesLocation","assetLocations","buttonBackgrounds","errorCodeTitles","404","flags","AU","AT","BE","CA","DK","FI","FR","DE","IT","NL","NZ","NO","PL","ES","SE","CH","GB","US","scribbles","v1","v2","v3","StyledButton","uppercase","textStyle","backgroundImageSrc","getButtonPadding","backgroundImage","backgroundSize","border","fade","textShadow","transparent","small","medium","large","extralarge","text","ButtonBase","RouterAnchorLinkButton","menuButton","up","desktopNavItemsContainer","mobileNavItemsContainer","homeLogoContainer","drawer","appBar","drawerPaper","borderBottom","NavigationBar","mdScreen","smScreen","xsScreen","xxsScreen","hideAppBarTrigger","useScrollTrigger","navItems","homeSprite","newsSprite","React","useState","mobileOpen","setMobileOpen","handleDrawerToggle","homeLogoWidth","buyNowButton","onClick","Slide","appear","direction","in","backgroundPositionX","AppBar","elevation","Toolbar","aria-label","edge","List","Fragment","Hidden","smUp","implementation","Drawer","open","onClose","ModalProps","keepMounted","transitionDuration","standard","PageLayout","toolbarProps","footerProps","toolbarStyles","toolbarRest","RouterLinkButton","AosWrapper","animation","offset","delay","easingFunction","mirror","once","anchorPlacement","data-aos","data-aos-offset","data-aos-delay","data-aos-duration","data-aos-easing","data-aos-mirror","data-aos-once","data-aos-anchor-placement","getRandomElement","array","Math","floor","random","RandomFlip","DefaultAosAnimation","order","topPadding","left","bottom","texBoxContainer","WhiteTextBox","WhiteTextBoxWithAdornmentsIcons","titleContainer","title","titlePrefix","titleSuffix","textBox","WhiteTextBoxWithAdornments","titlePrefixComponent","titleSuffixComponent","textContainerClasses","CONTROLLER","iconComponent","controllerIconImage","WARNING","warningIconImage","ErrorCodeTitle","code","errorCode","ErrorCodeComponent","ScribbleImage","scribbleContainer","pointerEvents","Scribble","randomIntFromInterval","min","max","RandomRotate","absMin","abs","absMax","Error","randomRotateAmount","useBackgroundStyles","defaultBackground","backgroundPosition","mediaBackground","errorCodeContainer","iconContainer","homeButtonContainer","ErrorPage","backgrounds","useEffect","window","scrollTo","Grid","container","NotFoundPage","imageSizes","newsArticle","homePage","bannerVideo","launch","announcement","playgrounds","featuresTile","buyNowSection","mobileBackground","editionKeyart","mediaSection","screenshot","youtubeVideo","calculateAspectRatioVwHeight","ConfigContext","calculateAspectRatioPaddingTopPercentage","MediaSkeleton","aspectRatio","isLoading","hideBackground","imageSkeleton","paddingContainer","paddingTopPercentage","Skeleton","calculateAspectRatio","PlayButtonOutline","viewBox","fill","mainItem","glitchItem","glitchColouredBackground","glitchColouredBackgroundPrimary","glitchColouredBackgroundSecondary","glitchPositionPrimary","clip","glitchPositionSecondary","glitchShadowPrimary","glitchShadowSecondary","Glitch","youtubeAspectRatioPercentage","paddingBottom","videoContainer","YouTubeVideo","videoId","opts","playerVars","controls","fs","modestbranding","autoplay","DialogTransition","forwardRef","ref","DialogCloseButton","filter","closeIcon","closeButton","right","backdropRoot","MediaDialog","Dialog","TransitionComponent","fullWidth","scroll","PaperProps","square","BackdropProps","VideoDialog","videoBackgroundImageSrc","paddingLeft","paddingRight","videoFrame","videoZIndex","playButton","playButtonOutline","playButtonGlitchOutline","BannerVideo","videoDialogIsOpen","setVideoDialogIsOpen","config","videoFrameImage","video","poster","videoPlaceholder","autoPlay","loop","muted","playsInline","playButtonBackground","homepageYouTubeVideoId","image","minWidth","buttonContainer","packshotImageZIndex","BuyNowWidget","smMdScreen","packshotImage","backgroundContainer","mobileBackGround","textBoxContainer","videoScribbleContainer","mobileTextBoxContainer","accoladeContainer","BannerSection","accoladeImg","CountryCode","EndpointsBaseClass","rootUrl","axios","defaults","baseURL","this","removeSlash","url","queryParameters","queryParameterString","constructCliParamString","get","response","data","post","params","builtParams","forEach","param","builtParam","buildParamString","push","join","trim","str","replace","ConfigEndpoints","getCDNEndpoint","cdnEndpoint","makeGetRequest","cdnEnpoint","LocationEndpoints","convertIsoLoactionResponse","defaultLocation","locationValue","defaultCountryCode","countryCodeKeys","Object","keys","value","toUpperCase","getLocationCountryCode","EmailSubscriptionEndpoints","email","list","termsLabel","makePostRequest","emailAddress","termsAndConditionsText","BackendApiConsumer","configEndpoints","emailSubscriptionEndpoints","locationEndpoints","getConfig","getIsoLocation","postEmail","parseStringResponse","console","log","parseArrayResponse","Array","isArray","parseDateResponse","date","Date","isNaN","allAreUndefined","artictleContentResponseConverter","contentResponse","_contentItem","convertContentItemResponse","contentItemResponse","contentItemArrayResponse","type","system","convertYoutubeWidgetResponse","textBlock","convertTextBlockWidgetResponse","html","convertHtmlWidgetResponse","buttons","convertButtonsWidgetResponse","galleryImages","convertGalleryWidgetResponse","convertContentItemArrayResponse","description","_html","_url","_description","altText","youtubeWidgetResponse","playerOptions","videoType","videoWidth","youtubeUrl","_width","_response","parseNumberResponse","options","convertYoutubeWidgetOptionsResponseResponse","convertYoutubeWidgetTypeResponseResponse","playerOptionsResponse","fullscreen","parsedResponse","playerOption","codename","videoTypeResponse","textBlockWidgetResponse","_content","textBlockContentResponse","contentItem","convertTextBlockContentResponse","_align","getTextAlignment","align","htmlWidgetResponse","htmlItem","parsedHtml","buttonsWidgetResponse","alignement","_direction","buttonWidgets","convertButtonWidgetResponse","getAlignFromButtonResponse","getSizeFromButtonResponse","_button","getHrefFromButtonResponse","alignResponse","sizeResponse","getWidgetSize","_href","file","parsedUrl","parsedFile","parsedFileUrl","galleryWidgetResponse","parsedImageArray","images","imageSizeArray","_size","_image","input","convertArticleResponse","author","publicationDate","featureImage","convertAuthorResponse","convertFeatureImageResponse","authorResponse","name","profilePicture","_name","_profilePictureUrl","_socialMedia","_twitterUrl","_facebookUrl","_instagramUrl","twitterUrl","facebookUrl","instagramUrl","convertAuthorSocialMediaResponse","profilePictureUrl","featureImageResponse","QueryParameter","getParamString","toString","NewsApiConsumer","pagination","pageOffset","pageSize","queryParams","convertMediapageTagsResponse","tagsResponse","parsedTagsResponse","_tags","parsedTag","_id","_displayName","displayName","convertMediapageVideosResponse","parsedItems","items","_videos","_video","videoResponse","mediaItemTagListMediaItemTag","asset","tags","convertMediapageVideoResponse","videos","convertMediapageScreenshotsResponse","_screenshots","_screenshot","screenshotResponse","_src","_alt","convertMediapageScreenshot","screenshots","convertQuoteResponse","_quotes","quote","_quote","quoteResponse","source","_source","convertQuote","KenticoApiConsumer","baseUrl","location","protocol","host","backendApi","newsApi","kenticoApi","_extends","assign","arguments","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","createElement","_ref","svgRef","preserveAspectRatio","x","y","ForwardRef","static","whiteNoise","ZigZagPatternBackground","quoteContentText","Quote","PaginationButton","btnLeftImgSrc","btnRightImgSrc","defaultCircleSize","selectedCircleSize","circleSizeDiff","defaultCircleMargin","selectedCircleMargin","paginationCircle","selectedCircle","SelectableCollectionPagination","numberOfItems","onPaginationClick","currentlySelectedItemIndex","disableArrows","buttonSpacing","from","_","itemContainer","gridColumn","gridRow","showItem","fadeTransition","showFadedItem","offScreenItemPrevious","offScreenItemNext","showOffscreenItem","SelectableCollection","renderItem","autoTransitionDuration","setCurrentlySelectedItemIndex","interval","setInterval","nextIndex","updateCurrentlySelectedIndex","clearInterval","itemIndex","QuotesSection","quotes","setQuotes","setIsLoading","getQuotes","then","finally","ImageSkeleton","getDescriptionBackgroundPosition","descriptionBackgroundVariant","TextBoxWithImage","heading","imageProps","mobile","getImageBorder","imageBorder","desktopHeading","descriptionContainer","descriptionBackground","backgroundPositionY","descriptionContainerContent","headingComponent","jaggyTop","jaggyBottom","useScribbleStyles","v1ScribbleContainer","v2ScribbleContainer","v3ScribbleContainer","FeatureTile","feature","scribbleVariant","imgSrc","articleRoute","scribbleClasses","scribble","featureTileMargin","featureTilesContainer","flexWrap","featureTile","boxSizing","features","featuresImage01","rotateAmount","featuresImage02","featuresImage03","featuresImage04","featuresImage05","featuresImage06","GameInfoSection","titleImage","NextGenUpgradeTextBox","isMobile","imageMarginTop","NextGenTextBox","platformText","XboxSeriesXTextBox","typographyVariant","xboxSeriesXLogo","Playstation5TextBox","ps5Logo","xboxMobileBackground","ps5MobileBackground","mobileNextGenTextBox","NextGenSection","backgroundRepeat","BuyNowTextBoxBackground","BuyNowTextBox","textBoxRoot","BuyNowTextBoxWithAdornments","Edition","keyArt","editionTitle","placement","placementMarginAmount","scribbleContainerLeft","scribbleContainerRight","textBoxChildContainer","maxHeight","overflowX","PlaceholderPaper","StyledDialog","paperProps","PaperComponent","CountryOption","country","flagImageLocation","NonIntegerError","propertyName","receivedValue","constructor","NonPositiveNumberError","propName","recevedValue","splitArray","numberOfOutputArrays","Number","isInteger","splitPoints","lineLength","numberOfSections","l","pointsArray","point","splitNumberLine","outputArray","start","ceil","end","slice","ListDisplayController","_list","_cachedColumns","numberOfColumns","calculateColumns","column","ListDisplay","listDisplayController","breakpoint","DisplayGrid","breakPoint","columns","getColumns","numberOfColums","matches","only","selectedCountryContainer","iconArrow","iconRotate","countryListContainer","labelText","countryOption","displayListRoot","displayListColumn","useCountrySelect","countries","defaultCountry","defaultShowOptions","onSelectedCountryChange","noop","onShowOptionsChange","_selectedCountryCode","_setSelectedCountryCode","_showOptions","_setShowOptions","setShowOptions","showOptions","countryList","coutryCode","countrySelectLabel","event","countrySelectOptions","countryCode","NewTabLinkButton","SelectionButton","gtmSelector","commonProps","PlatformSelect","purchaseLinkConfig","onPlatformSelect","platform","platformCode","isDisabled","storeLinks","StyledTextField","TextField","CheckboxTickIcon","iconBackground","StyledCheckBox","Checkbox","checkedIcon","textField","snackBar","subscriptionContainer","inputContainer","signuptButtonContainer","PurchaseSubscriptionInput","subscriptionConfig","listName","checkboxLabel","agreed","setAgreed","setEmail","errorMessage","setErrorMessage","modalMessage","setModalMessage","postData","termsLabelText","includes","serialize","subscribeEmail","catch","err","inputComponent","Snackbar","autoHideDuration","noValidate","onSubmit","preventDefault","error","helperText","placeholder","onChange","toLowerCase","FormGroup","FormControlLabel","control","checked","signUpButton","useSubscriptionForm","StoreSelect","stores","onSubscriptionStoreTabClick","currentlySelectedStore","store","storeCode","subscription","showEmailCapture","Collapse","BackArrowIcon","backButton","defaultCountries","assetsLocations","headerContainer","BuyNowDialogController","editionPurchaseLinkConfig","useLocation","queryStringCountry","queryString","parse","search","possibleCountries","getDefaultCountry","selectedCountryCode","setSelectedCountryCode","_selectedCountry","currentSelectedPlatform","setCurrentSelectedPlatform","selectedCountry","onBack","setCurrentlySelectedStore","platformLinks","backButtonOnClick","usePlatformSelectionLinks","showStoreLinks","EditionType","BuyNowDialog","dialogText","BuyNowButton","edition","setOpen","purchaseLinks","NextGenUpgradeText","gutterBottom","StandardEdition","STANDARD","SpecialEdition","SPECIAL","AddonsTitle","imageContainer","textbox","imageContainerZIndex","Addon","keyartSrc","titleContainerSpacingPlaceholder","addons","Addons","dlc04","dlc04Title","textContent","editionType","WILD_SPIRITS_CONTENT_PACK","dlc03","dlc03Title","SUPER_SIZE_CONTENT_PACK","dlc02","dlc02Title","UPROAR_CONTENT_PACK","dlc01","dlc01Title","ENERGY_CONTENT_PACK","addon","editionsContainer","BuyNowSection","ItemGrid","itemsInGrid","itemMinWidth","itemMargin","placeholderItem","numberOfExtraItems","ClickableMediaItem","Img","srcSet","sizes","loading","loadingOpacity","hoverable","hoverState","progressiveImageDelay","disableLazyLoad","lazyLoadOffset","properties","hoverableImageHoverStateStyles","zoomPercentageAmount","absoluteFull","property","hoverableImage","imageStyle","imageClassName","imagePropsRest","placeholderComponent","loadingStyles","_loading","opacityImageTransition","imageContent","srcSetData","playButtonContainer","YouTubeVideoDialogThumbnail","thumbnailSize","getThumbnailImage","getSizePrefix","objectFit","Videos","numberOfItemsToDisplay","currentPage","setCurrentPage","showPagination","ImageDialog","initialImageIndex","currentImage","setCurrentImage","getKenticoImageSrc","KenticoImg","widthFactor","widths","getSrcSetForWidths","Screenshots","openImageIndex","setOpenImageIndex","dialogIsOpen","setDialogIsOpen","imageWidthFactor","mainMailingListScribble","mainMailingList","tabsContainer","MediaSection","selectedTab","setSelectedTab","setVideos","videosIsLoading","setVideosIsLoading","videosIsError","setVideosIsError","setScreenshots","screenshotsIsLoading","setScreenshotsIsLoading","screenshotsIsError","setScreenshotsIsError","getMediaPageVideos","getMediaPageScreenshots","buttonSize","mediaTitle","HomePage","CreditsPage","citroenLogo","fordOfficialLicensedProduct","pirelliLogo","renaultLogo","YoutubeVideoWidget","getVideoId","getListId","listType","videoUrl","param_l","substring","param_v","param_embed","param_be","decodeUnderline","split","count","decoded","TextBlock","dangerouslySetInnerHTML","__html","ButtonsWidget","HtmlWidget","decodeHTML","document","innerHTML","buttonBackgroundColour","swipperContainer","previousButtonContainer","nextButtonContainer","iconButton","previousButton","nextButton","GallerySwiper","slides","swiper","setSwiper","containerClass","slidesPerView","loopedSlides","slidePrev","slideNext","getSwiper","GalleryWidget","ContentResolver","contentType","ArticleContent","articleContent","linkContainer","textContainer","blurField","ArticleOverviewWithDescription","article","featureImageSrc","setArticleContent","isArticleContentLoading","setIsArticleContentLoading","getArticle","_article","CircularProgress","articleLink","pathname","useTextBoxWithImageStyles","SubArticleWithTitle","textBoxWithImageClasses","buttonProgress","LoadableButton","subArticleSpacing","subArticleContainer","subArticle","loadMoreButtonContainer","NewsPage","newsArticles","setNewsArticles","isLoadingNewsArticles","setIsLoadingNewsArticles","isError","setIsErrror","totalNumberOfArticles","setTotalNumberOfArticles","isLoadingMoreArticles","setIsLoadingMoreArticles","getAllArticles","newsResponse","total","rotateDirection","nextPage","loadNextPageOfNews","ArticleTitle","contentWrapper","maxWidthContainer","NewsArticleSection","noPadding","articleSection","articleTitle","NewsArticlePageContent","RelatedNews","articleUrl","numberOfArticles","relatedNewsTitle","NewsArticleBackButton","getFeatureImageBorder","articleContainer","articleHeaderImage","featureImageContainer","topBackbuttonContainer","NewsArticlePage","articleId","useParams","setArticle","footerBackground","NewsPageRoutes","path","useRouteMatch","render","App","setConfig","Provider","Boolean","hostname","match","body","GlobalCss","AOS","init","isIE","documentMode","ReactDOM","StrictMode","basename","getElementById","navigator","serviceWorker","ready","registration","unregister","message"],"mappings":"+GAAAA,EAAOC,QAAU,IAA0B,qC,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,0C,kBCA3CD,EAAOC,QAAU,09M,kBCAjBD,EAAOC,QAAU,89N,oBCAjBD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,kBCA3CD,EAAOC,QAAU,kzP,kBCAjBD,EAAOC,QAAU,0iQ,kBCAjBD,EAAOC,QAAU,s6Q,oBCAjBD,EAAOC,QAAU,IAA0B,+C,kBCA3CD,EAAOC,QAAU,07Q,kBCAjBD,EAAOC,QAAU,kyQ,oBCAjBD,EAAOC,QAAU,IAA0B,yC,kBCA3CD,EAAOC,QAAU,8rZ,oBCAjBD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,oC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,kBCA3CD,EAAOC,QAAU,shQ,kBCAjBD,EAAOC,QAAU,84O,oBCAjBD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,qD,oBCA3CD,EAAOC,QAAU,IAA0B,2D,oBCA3CD,EAAOC,QAAU,IAA0B,uC,kBCA3CD,EAAOC,QAAU,8yJ,oBCAjBD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,uC,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B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","file":"static/js/main.61d7d5b7.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/bg_main.4ef49d03.jpg\";","module.exports = __webpack_public_path__ + \"static/media/btn_play_bg.1e588f0e.png\";","module.exports = __webpack_public_path__ + \"static/media/divide_black.10984943.png\";","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADiGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDODJEQTA3RUMwRjgxMUVBQkJDMTk2QTYwMkI0RDkyMiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDODJEQTA3REMwRjgxMUVBQkJDMTk2QTYwMkI0RDkyMiIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzYxOTA5NGUtMTFkYS1jZjQ4LWFlNzctNWUzZTk1MjIxOTkxIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NmExNWQ1OTEtMTlmNi03NjRiLWFhZjQtNzk3N2M4ZWVlOWI2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+34ypMAAABQ1JREFUeNrsmltoXFUUhvfkNq1JxmTSVLFatVK0VRHU0vqi4ouCIFIQEREq9EGLFCmKLz6o+CAo6oNXREUR8QLi3byIVZG2aLRVqbcWNTFtmqalySQ2GdMZ/+X8my4PJ3M5M0lOZtYPH+cyZ87s2bP2up1J5PN5F0XZnSucyWQymUymhlYCJEEO5Ln1+6Fq2zBU/IbTO86waTWZTCaTqbHVDTaA78Bwme+5CrwCzg55bRt4IspAWuy3MJlMpnnTleABVpkj5CAY5VaOD5HjNl2meZLY40vgRh4fAP1gN/iG+7rNsQQ8zOQjMcs9Hweng6fBOBhzRbooVNN/g7GOicm0YFrJgPS3TUXdaxV4FGys4D0TrFwPM2k5zIRFzn0PdoITDTJ/54ABV3hEEAyot7HSH1bJnp832WbqbC7aQZcrdDi61X6ONiMJ7TQTgSyYpI+ZJGG6u4zuhsznt+QGcGGEsU8wSZFtkr/fqUxIOnnNO5aYmEwLp+vA21yUB5UjDTrXrwLVSjF1gNWu0I4N0wXg1xAHryUOormMz2pWzkQ7zVaOow2kWF0t4X4Tr8sGvu8QnVW9SZzu/WAr56OWOgI+Ah+CPgbgNeAOsIm/ja9UM5zfDBknmcBrYypw6NfClK0wqZbxvAsuBoMBBtRW1sKMel8a7ABbwKfqvHzXZ8DVJT53Sq2nUbXWJEgvA8u5leq+F7wO7i2xRrT9d9Lu27mfmKUzcIBrL0yyZs5iAiacS5aFJCGtEe1FkpV7wFPqnNxzPXi/ivvWvn1jicm86EzwGHgObC/jenFgp9DQ2+jc9LlWGugIs9fhGH7ndmXolTqwebF9tdi7GUi1w/mHDvoYt0fnaBxr6axXF7lGxvIWbWh3keuuAK+xElnLcWvd6Qrt1dvBG0XuI0Ht5QX4TSRY7Ce/gZ/Az3TmUzG0cR+YOph4dXBdpnheAs02Bru5VpbzdNECzMMwq+1ni3QneplErSvjfjkG8b/An1wbl7rCfxk28ZrNTErmKph+yc8OSzz8cTLCfcWe36M9+yREumkrVNI+1+qnva4MKSwsMWmgpESSkfN4/Dl4EHwWcu1NDBiVGqh/HujbbP0VVNi1VJrf4RZXeJbunz2eYFX3Aiu7WrWfmwLJRTG6Qo4r0QyrLV/h+/b6qOpsHCGHXGXtY1mEH4NLyrj2C/B7yHlJWjeqTsfzrvBfhh5WXVvdyccIe8Bd7v9t33EmQH7cj4D7YrKGpPr8A+wFv3C7j0Sx8wTnRbOc9uvtQ+93qo5PS1ydeQw0xmThSa4RL6n8PwHnV3l/sdfTuBYH+ZuZ6lA+MWkJybSnIlQpM67ydmyeBr2YlWSg62JlsIpcxgCdCnnPLgaOvsD5612hvb+0yjFNs9ofCzDB896R5BmUcvzMFAOZr/IGmOVvZ0DQ1WIvnYME1JvBta70H6qlCnqRDKqg6oNBmoEiHTin9z1xDhA5d7IVPjnLWvJzHbfvMU1Si2DtHWfSMsTkcETZ9lKVdPQo2+pxs/9hz1S9xNY/oH9Yw2SiVrqVvudVm+b6TkzexPYh8OMiG3vGlX4GWItEqqNEsE2ymooqCfbyH4Kv2en4AVzOhd0Tsznfz4DlE5dqnHuOnYW0i9YSNZlMjac++sV1NhX1nZhIxSyt9dEaZ7am6NXGHlbZ19h0mEwmk6mR5DsBzZaUxEbSfVlv02AymUymRlSTTYHJZDKZTKa46F8BBgBbVEn+q5i2eAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADiGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MjE3NzcxNEMxMDgxMUVBOTJGM0JCOEM4Qjk1ODJDNCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MjE3NzcxM0MxMDgxMUVBOTJGM0JCOEM4Qjk1ODJDNCIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzI1NGQxOTItMmFlYS0yNTQyLWFhZjUtNmE5NWVhOTU1ZmI2IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NmExNWQ1OTEtMTlmNi03NjRiLWFhZjQtNzk3N2M4ZWVlOWI2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xpl80wAABpJJREFUeNrsm3lsFVUUxucJtuxQBdGCqAhSweAWZFERJC64RTEaQUNwTSiKRo1giPqHxviHGKOYaFwSl4AawcS4oAIBt6KoiYiIoiJQSkWB8oo++iit54TfxMt1+pbyWqZwvuTLzNyZe+e+u5zz3XPnJeoqShsDg8FgMBgMhhjgMGsCg8FgMBgMcUF7awJDjLBbuF64TjhQeHyBy98prBNqlLBnAcr7WbhcOFF4eI55GqhHt1Zu23+Y70UtVP46uEVYLfxD2El4r7BjDMfaOsZXopn5dQz9JqwR7vCO/rkuABfY9D4k8IZwtvA7YdpJ17S7M+T7UTgoj2CBzrGUsG8etie0P7m8Yxe/Qes1OWjlIIYJE0MuSApvRjR0hurguguLcTxdSevKdTH3i7w86qw2Cn+HoUPT8yomTkDeF4VXe3XRvEuEvwprcbh1OIIU5zUcU9Rdz/8mfy/y5ypMUpSdpNwVwk9gNc+sFD7O+XbhQtqqGkcdOus/oTq1s4TXwWPyEBe7MRq7MHxbKVOFwF/QPa/mGf0d7YTHCcswguFRefR+jpEraQcfrwpfEI5uYUH7Dm2epC6nNfGsjrN7EAqljK9rhWfnKVL02VH0bTZMjEjb6IiV4gziTefNRcyrQxU6hutxwnGF2oZy4bwm7j8lvJM5GKJS+BpzZLVwDNd9vLG9GpGw0jluccahzt1+wpmM/SjUUYdHsTfnMubPYR5oud/Ar3lnPXlXOfYtG9TOLuL8CN4T5U82cr9E2MG7n07UVZRWUdEUhi406PWs7BoxzGGBDbx8t+MI0hjNPTiLsKMCrvdwP80E08r0gCXOscRLy2cy3iecLxzPRB7LD07CHbDWSUs611H3tcMvFV6O8fYN3BPCbcJxwvMx+gcbdABdwuA8EJjG5FksXCr8ZT/Lm8UkdvvcFR7u9Q7GeS5OahYTenGOeULoSuQMjmlnLjVQh4B6tPS3YN0dgZJ03h8ei3DgUzFkPnpncNIJjPZjwi5ZIlrPCW+hPlGoZUyW0WYfYfDXeM+dIuzv2RNtx2cRdT5KMepDcRgbeI/aujMx4iMp0xUcr3tjdTQGV3kk9H/zy8LpTv9mgzqr6w8CW6J+4DPhB/TBk56z0gjkT8K1nIespW/ezlK+9u+HlHE7/V4IpBj305mrPtQRTxFuylLOXOFl+KlXhMuchVjgOPOp+JeVjOts9qQDouPWDFGcmZTZXKh4uiHLM2sQ+qudtBuFc1iQuu15onAz1x3pq1ColKgwae8oo7ihnSNg+nkrvDKEQILBfl5EJxcSAxEp6iTfZLXjt9sARMo4VmxFTvSgOEIZZkPaE0813nUy4n7gCcNCXRsMAWP6GsTAMNLUEA3JIW8/oicXNHF/Ck5b5/td0BcoKhqOZV6d4BnB1kBvIiUjES9znHs6xx8mIhMV+tZI1m1Ed/LBTUQP64nULeD9k4L8t6LW4rxrsKEnYbc65eigK4lgVMHqDIJUBVl7p98WeXZFt0GH46gnBftuffjoQeTPb9cfhO8L3xN+7thkjYg+Qnsn9qO/1XlewaJDF/BfOZEb/S0PMgZyWTgcha1OFXA89mc8nBpx7wvG4vICvEfn22zGvLaFRo6XOEJtAfO3NiJvGeJoqJOmbXZHkyu9xsbmLcTSy/vEwUh2YGKFofK2YtjVCOi+YGfEV1cmXIMnNOrMDxpijCGsEvMRsQmiGScLB3NUfh8RFejCyvdiL8I0OubtolGnXoiqbhy7YLy3NqM8jeaMJ2KwzUkfjBCakCFvDQ5kIdGl9U30SV8WX4NY8G2nb6s5bm6BxcoYVvmTiabkIqoGEBF5GjGSLQqg0bfnm1E3jd6tQoRXOuk9seFbY2KfVQxfSETpKiIOujU+Q/hW0LKR1mlEamYgWhqz+Gp9ppxrjQINKBqxacPBKEwMBoPhUMfpXnRJFz1fIkRW5Oj0DxTCBVkUdAtZPzDWLYIRwgrSNboyL0u5uuC7X/hQsO+3lPo9lkadPg3++yZpJ4vBWs7barRY+304UZ10K7xPo1i6M7A0jzwT6Fet47siTKpMmBgMBoOhrWAYAksjRRqFGoV40O20qO2QB4K92+gBz2v0R6PpHyNElgX//xbJcAAggiTjfftXjsFgMBjiCI32fBvsu1U1P2j6Gw3dKhgLFfrRcHkQ/d2DIcYwYWIwGAyGuOKZYO93DBo50Y84X8rwrP6bLfzXi/6LZK41X9tEs7dyDAaDwWAwGAqNfwUYALxA4OkHZFfSAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/divide_pink.2c503b53.png\";","module.exports = __webpack_public_path__ + \"static/media/divide_yellow.e22c5694.png\";","module.exports = __webpack_public_path__ + \"static/media/logo_codemasters.8078e965.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALEAAAAyCAYAAAATDTqzAAAKQ2lDQ1BJQ0MgcHJvZmlsZQAAeNqdU3dYk/cWPt/3ZQ9WQtjwsZdsgQAiI6wIyBBZohCSAGGEEBJAxYWIClYUFRGcSFXEgtUKSJ2I4qAouGdBiohai1VcOO4f3Ke1fXrv7e371/u855zn/M55zw+AERImkeaiagA5UoU8Otgfj09IxMm9gAIVSOAEIBDmy8JnBcUAAPADeXh+dLA//AGvbwACAHDVLiQSx+H/g7pQJlcAIJEA4CIS5wsBkFIAyC5UyBQAyBgAsFOzZAoAlAAAbHl8QiIAqg0A7PRJPgUA2KmT3BcA2KIcqQgAjQEAmShHJAJAuwBgVYFSLALAwgCgrEAiLgTArgGAWbYyRwKAvQUAdo5YkA9AYACAmUIszAAgOAIAQx4TzQMgTAOgMNK/4KlfcIW4SAEAwMuVzZdL0jMUuJXQGnfy8ODiIeLCbLFCYRcpEGYJ5CKcl5sjE0jnA0zODAAAGvnRwf44P5Dn5uTh5mbnbO/0xaL+a/BvIj4h8d/+vIwCBAAQTs/v2l/l5dYDcMcBsHW/a6lbANpWAGjf+V0z2wmgWgrQevmLeTj8QB6eoVDIPB0cCgsL7SViob0w44s+/zPhb+CLfvb8QB7+23rwAHGaQJmtwKOD/XFhbnauUo7nywRCMW735yP+x4V//Y4p0eI0sVwsFYrxWIm4UCJNx3m5UpFEIcmV4hLpfzLxH5b9CZN3DQCshk/ATrYHtctswH7uAQKLDljSdgBAfvMtjBoLkQAQZzQyefcAAJO/+Y9AKwEAzZek4wAAvOgYXKiUF0zGCAAARKCBKrBBBwzBFKzADpzBHbzAFwJhBkRADCTAPBBCBuSAHAqhGJZBGVTAOtgEtbADGqARmuEQtMExOA3n4BJcgetwFwZgGJ7CGLyGCQRByAgTYSE6iBFijtgizggXmY4EImFINJKApCDpiBRRIsXIcqQCqUJqkV1II/ItchQ5jVxA+pDbyCAyivyKvEcxlIGyUQPUAnVAuagfGorGoHPRdDQPXYCWomvRGrQePYC2oqfRS+h1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3dhUbwJ5h7wgkAouAE+wIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE+0JXoS+cR4YjqxkFhGrCbuIR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCsIJeRt5APkE+S+8nD5LcUOsWI4kwJoiRSpJQSSjVlP+UEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAvU4epEzR1miXNmxZDy6Qto9XQmmlnafdoL+l0ugndgx5Fl9CX0mvoB+nn6YP0dwwNhg2Dx0hiKBlrGXsZpxi3GS+ZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U/1XmqC1SrVQ+rXlZ9pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O+X/2C+mMNsoaFRqCGSKNUY7fGGY0hFsYyZfFYQtZyVgPrLGuYTWJbsvnsTHYF+xt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4NznstAy0/LbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7TY+t56Qn1yvUO6d3RR/Vt9KP1F+rv1u/RHzcwNAg2kBlsMThj8MyQY+hrmGm40fCE4agRy2i6kcRoo9FJoye4Ju6HZ+M1eBc+ZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNisyeyOOdWca55hvtm82/yNhaVFnMVKizaLx5balnzLBZZNlvesmFY+VnlW9VbXrEnWXOss623WV2xQG1ebDJs6m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7fHJ0dcx2bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10/Wjm7ub3K3ZbdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYwbcjbxFvgvct7YDo+PWX6zukDPsY+Ap96n4e+pr4i3z2+I37Wfpl+B/ye+zv6y/2P+L/hefIW8U4FYAHBAeUBvYEagbMDawMfBJkEpQc1BY0FuwYvDD4VQgwJDVkfcpNvwBfyG/ljM9xnLJrRFcoInRVaG/owzCZMHtYRjobPCN8Qfm+m+UzpzLYIiOBHbIi4H2kZmRf5fRQpKjKqLupRtFN0cXT3LNas5Fn7Z72O8Y+pjLk722q2cnZnrGpsUmxj7Ju4gLiquIF4h/hF8ZcSdBMkCe2J5MTYxD2J43MC52yaM5zkmlSWdGOu5dyiuRfm6c7Lnnc8WTVZkHw4hZgSl7I/5YMgQlAvGE/lp25NHRPyhJuFT0W+oo2iUbG3uEo8kuadVpX2ON07fUP6aIZPRnXGMwlPUit5kRmSuSPzTVZE1t6sz9lx2S05lJyUnKNSDWmWtCvXMLcot09mKyuTDeR55m3KG5OHyvfkI/lz89sVbIVM0aO0Uq5QDhZML6greFsYW3i4SL1IWtQz32b+6vkjC4IWfL2QsFC4sLPYuHhZ8eAiv0W7FiOLUxd3LjFdUrpkeGnw0n3LaMuylv1Q4lhSVfJqedzyjlKD0qWlQyuCVzSVqZTJy26u9Fq5YxVhlWRV72qX1VtWfyoXlV+scKyorviwRrjm4ldOX9V89Xlt2treSrfK7etI66Trbqz3Wb+vSr1qQdXQhvANrRvxjeUbX21K3nShemr1js20zcrNAzVhNe1bzLas2/KhNqP2ep1/XctW/a2rt77ZJtrWv913e/MOgx0VO97vlOy8tSt4V2u9RX31btLugt2PGmIbur/mft24R3dPxZ6Pe6V7B/ZF7+tqdG9s3K+/v7IJbVI2jR5IOnDlm4Bv2pvtmne1cFoqDsJB5cEn36Z8e+NQ6KHOw9zDzd+Zf7f1COtIeSvSOr91rC2jbaA9ob3v6IyjnR1eHUe+t/9+7zHjY3XHNY9XnqCdKD3x+eSCk+OnZKeenU4/PdSZ3Hn3TPyZa11RXb1nQ8+ePxd07ky3X/fJ897nj13wvHD0Ivdi2yW3S609rj1HfnD94UivW2/rZffL7Vc8rnT0Tes70e/Tf/pqwNVz1/jXLl2feb3vxuwbt24m3Ry4Jbr1+Hb27Rd3Cu5M3F16j3iv/L7a/eoH+g/qf7T+sWXAbeD4YMBgz8NZD+8OCYee/pT/04fh0kfMR9UjRiONj50fHxsNGr3yZM6T4aeypxPPyn5W/3nrc6vn3/3i+0vPWPzY8Av5i8+/rnmp83Lvq6mvOscjxx+8znk98ab8rc7bfe+477rfx70fmSj8QP5Q89H6Y8en0E/3Pud8/vwv94Tz+4A5JREAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADiGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowRDI5M0RGRDgyRjcxMUVBODBCM0QxNTJDQ0M0Q0ZBMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRDI5M0RGQzgyRjcxMUVBODBCM0QxNTJDQ0M0Q0ZBMSIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGFmMDdmZGItZTc0MS03MDQwLThhMzAtOGU5YjZlYmUwMTUwIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWEwZjdiYTYtZWIyZC00YjRkLTllZDctYmQwNmEyMjMzZGZiIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRh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\"","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADiGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowRDI5M0RGOTgyRjcxMUVBODBCM0QxNTJDQ0M0Q0ZBMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRDI5M0RGODgyRjcxMUVBODBCM0QxNTJDQ0M0Q0ZBMSIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGFmMDdmZGItZTc0MS03MDQwLThhMzAtOGU5YjZlYmUwMTUwIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWEwZjdiYTYtZWIyZC00YjRkLTllZDctYmQwNmEyMjMzZGZiIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRh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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKYAAAAyCAYAAADWf6AiAAAKQ2lDQ1BJQ0MgcHJvZmlsZQAAeNqdU3dYk/cWPt/3ZQ9WQtjwsZdsgQAiI6wIyBBZohCSAGGEEBJAxYWIClYUFRGcSFXEgtUKSJ2I4qAouGdBiohai1VcOO4f3Ke1fXrv7e371/u855zn/M55zw+AERImkeaiagA5UoU8Otgfj09IxMm9gAIVSOAEIBDmy8JnBcUAAPADeXh+dLA//AGvbwACAHDVLiQSx+H/g7pQJlcAIJEA4CIS5wsBkFIAyC5UyBQAyBgAsFOzZAoAlAAAbHl8QiIAqg0A7PRJPgUA2KmT3BcA2KIcqQgAjQEAmShHJAJAuwBgVYFSLALAwgCgrEAiLgTArgGAWbYyRwKAvQUAdo5YkA9AYACAmUIszAAgOAIAQx4TzQMgTAOgMNK/4KlfcIW4SAEAwMuVzZdL0jMUuJXQGnfy8ODiIeLCbLFCYRcpEGYJ5CKcl5sjE0jnA0zODAAAGvnRwf44P5Dn5uTh5mbnbO/0xaL+a/BvIj4h8d/+vIwCBAAQTs/v2l/l5dYDcMcBsHW/a6lbANpWAGjf+V0z2wmgWgrQevmLeTj8QB6eoVDIPB0cCgsL7SViob0w44s+/zPhb+CLfvb8QB7+23rwAHGaQJmtwKOD/XFhbnauUo7nywRCMW735yP+x4V//Y4p0eI0sVwsFYrxWIm4UCJNx3m5UpFEIcmV4hLpfzLxH5b9CZN3DQCshk/ATrYHtctswH7uAQKLDljSdgBAfvMtjBoLkQAQZzQyefcAAJO/+Y9AKwEAzZek4wAAvOgYXKiUF0zGCAAARKCBKrBBBwzBFKzADpzBHbzAFwJhBkRADCTAPBBCBuSAHAqhGJZBGVTAOtgEtbADGqARmuEQtMExOA3n4BJcgetwFwZgGJ7CGLyGCQRByAgTYSE6iBFijtgizggXmY4EImFINJKApCDpiBRRIsXIcqQCqUJqkV1II/ItchQ5jVxA+pDbyCAyivyKvEcxlIGyUQPUAnVAuagfGorGoHPRdDQPXYCWomvRGrQePYC2oqfRS+h1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3dhUbwJ5h7wgkAouAE+wIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE+0JXoS+cR4YjqxkFhGrCbuIR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCsIJeRt5APkE+S+8nD5LcUOsWI4kwJoiRSpJQSSjVlP+UEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAvU4epEzR1miXNmxZDy6Qto9XQmmlnafdoL+l0ugndgx5Fl9CX0mvoB+nn6YP0dwwNhg2Dx0hiKBlrGXsZpxi3GS+ZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U/1XmqC1SrVQ+rXlZ9pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O+X/2C+mMNsoaFRqCGSKNUY7fGGY0hFsYyZfFYQtZyVgPrLGuYTWJbsvnsTHYF+xt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4NznstAy0/LbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7TY+t56Qn1yvUO6d3RR/Vt9KP1F+rv1u/RHzcwNAg2kBlsMThj8MyQY+hrmGm40fCE4agRy2i6kcRoo9FJoye4Ju6HZ+M1eBc+ZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNisyeyOOdWca55hvtm82/yNhaVFnMVKizaLx5balnzLBZZNlvesmFY+VnlW9VbXrEnWXOss623WV2xQG1ebDJs6m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7fHJ0dcx2bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10/Wjm7ub3K3ZbdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYwbcjbxFvgvct7YDo+PWX6zukDPsY+Ap96n4e+pr4i3z2+I37Wfpl+B/ye+zv6y/2P+L/hefIW8U4FYAHBAeUBvYEagbMDawMfBJkEpQc1BY0FuwYvDD4VQgwJDVkfcpNvwBfyG/ljM9xnLJrRFcoInRVaG/owzCZMHtYRjobPCN8Qfm+m+UzpzLYIiOBHbIi4H2kZmRf5fRQpKjKqLupRtFN0cXT3LNas5Fn7Z72O8Y+pjLk722q2cnZnrGpsUmxj7Ju4gLiquIF4h/hF8ZcSdBMkCe2J5MTYxD2J43MC52yaM5zkmlSWdGOu5dyiuRfm6c7Lnnc8WTVZkHw4hZgSl7I/5YMgQlAvGE/lp25NHRPyhJuFT0W+oo2iUbG3uEo8kuadVpX2ON07fUP6aIZPRnXGMwlPUit5kRmSuSPzTVZE1t6sz9lx2S05lJyUnKNSDWmWtCvXMLcot09mKyuTDeR55m3KG5OHyvfkI/lz89sVbIVM0aO0Uq5QDhZML6greFsYW3i4SL1IWtQz32b+6vkjC4IWfL2QsFC4sLPYuHhZ8eAiv0W7FiOLUxd3LjFdUrpkeGnw0n3LaMuylv1Q4lhSVfJqedzyjlKD0qWlQyuCVzSVqZTJy26u9Fq5YxVhlWRV72qX1VtWfyoXlV+scKyorviwRrjm4ldOX9V89Xlt2treSrfK7etI66Trbqz3Wb+vSr1qQdXQhvANrRvxjeUbX21K3nShemr1js20zcrNAzVhNe1bzLas2/KhNqP2ep1/XctW/a2rt77ZJtrWv913e/MOgx0VO97vlOy8tSt4V2u9RX31btLugt2PGmIbur/mft24R3dPxZ6Pe6V7B/ZF7+tqdG9s3K+/v7IJbVI2jR5IOnDlm4Bv2pvtmne1cFoqDsJB5cEn36Z8e+NQ6KHOw9zDzd+Zf7f1COtIeSvSOr91rC2jbaA9ob3v6IyjnR1eHUe+t/9+7zHjY3XHNY9XnqCdKD3x+eSCk+OnZKeenU4/PdSZ3Hn3TPyZa11RXb1nQ8+ePxd07ky3X/fJ897nj13wvHD0Ivdi2yW3S609rj1HfnD94UivW2/rZffL7Vc8rnT0Tes70e/Tf/pqwNVz1/jXLl2feb3vxuwbt24m3Ry4Jbr1+Hb27Rd3Cu5M3F16j3iv/L7a/eoH+g/qf7T+sWXAbeD4YMBgz8NZD+8OCYee/pT/04fh0kfMR9UjRiONj50fHxsNGr3yZM6T4aeypxPPyn5W/3nrc6vn3/3i+0vPWPzY8Av5i8+/rnmp83Lvq6mvOscjxx+8znk98ab8rc7bfe+477rfx70fmSj8QP5Q89H6Y8en0E/3Pud8/vwv94Tz+4A5JREAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADiGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQTZCMTU5RjgyRjcxMUVBODBCM0QxNTJDQ0M0Q0ZBMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQTZCMTU5RTgyRjcxMUVBODBCM0QxNTJDQ0M0Q0ZBMSIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGFmMDdmZGItZTc0MS03MDQwLThhMzAtOGU5YjZlYmUwMTUwIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWEwZjdiYTYtZWIyZC00YjRkLTllZDctYmQwNmEyMjMzZGZiIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRh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\"","module.exports = __webpack_public_path__ + \"static/media/logo_xboxseriesxs.a5fb38ed.png\";","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADiGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5QjE2RUVEMjhCQkMxMUVBODI5MURGM0RGQ0Y1NzhFQyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5QjE2RUVEMThCQkMxMUVBODI5MURGM0RGQ0Y1NzhFQyIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTQzZTljNDUtNDRiNy1mODQ4LWI0MTYtOWQ3YmE5OWVmZTgyIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWEwZjdiYTYtZWIyZC00YjRkLTllZDctYmQwNmEyMjMzZGZiIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KhBojgAACvVJREFUeNrsXQmQXFUVvT3JhCRmgZAMSIAsxSJgiKigQZBFQZQYxYxxJZZbqaAFFJuKC0iCKCCIpYDFZqklCaJBECFuhFBGESQKipYJJJWgJBnBMGGSmQzT3sM/XXm++T39+/d/3b+n76k6Venfmf//28679777XheKxaIYDAZD3tBmVWAwGEycDAaDwcTJYDCYOBkMBoOJk8FgMHEyGAyGYSJOJyj/pvyh8gzlEcqRVs2GjHGK8jqrhuGNrIVjlPIQ8v1KJFE9rlyp/IXyD8otVu2GGrGbcoJVg4lTNfAzOgvKWSQsqc0UqruUy5X/tiYwpOxnL1o1mFuXJTqU85W3Kh+jaf4aawaDwdBocXKxp/KTylXKG5VTrTkMBkOjxOnvyp8pB5xr7cqPKh9UHmlNYjAYgHqupO1Unq58WPkF5aXe99MlikUdq/xnoHeYqRwTuJx9yo3K7QEszY4UE8oO5Vrv2n7KiTI4RhgS7nuMYFv0Kv/LyQrv8kIDxsB45f4Z3atcfQ6wnM8EKkM7PY+xEsV5q33nNey3ITGdz/hXHsWpm5UA3K78cszz91JerzxZsg94YlDfoXxVoPINkHjvDcolysuV22q87yuUX1S+WbkHy9FWRSdcrXy1N3CuVc51PhcoGCGBVVuklvQ75drJNu+nVf1IA8TpLcqlAe9fCt5DeP/M/n1bhsJ6gfJdHPyj2I7VCBTaYLbyiUDlP1x5Ccd0D991Zd7EyXUj+1gpcc8/kdbT/YGst74AFkOBHaONZTpAeZFEeV/vUHalvO+xFNQpMULYl/C9dpaZaf267w3Y7v57vEjrEtbUNM74v2+Q91DkuxUzKqd7X7df7K48jsQE+dkanzWZnsbrU/YNd0yEsKDHKc9Vnsd/C9v59LyKU1wjxmF+AHFCo50mUY5M1p27QKvmQ8rPON8dLdGK5IIUHWBvWl+uMD2rvFj5Kw7sJDNkb8yzB7zPv1V+LHCb9zpWE/APvsdmluP5BvXFeyXKy5NA/QLu+NkS5f2VcCHFeFkN9/+qJ0zoD19S3l1F3yi958aMy44JebHysJjvxubRrasGswPd9+nA7w23ZKtEMbUSOpWvVf6xynthkeDl3uDupJCEcLmfrHMb9ziDqpF4IXDZce8PUgCPcK5/ogZx2s8TO+AKspGYoVzkvFsPxe9lQ0yMFd2svGFf5WhpTlyt/I937U0p7nOc93lFIGHKcz8YLijGCNEsb9BWG8cZ6w34OxpYPoQJzlI+5AjTnbTsHh1unRKBvjFN2hGfo6viYkqK++zufV5jY7yp0RUTkxlTw/hw0SeNWekE3ihRDOkaieJg6ylQ75Qo0Tq1d5ZXtw7vNaJJO+E+MjihdEPK2dZFIeA7D5h2BMf+MZNYWkGJi18W6lwexESx6PMpjlUscnxbeZlyU1YikEfAV+1t0k6IQKC7KRWNdl/O3rGtgpVmyBao3wXeNcQgtzdpeT4s0cJMSXAfoFA9mLWFkkdg9WBbHZ6DJf8OKn8ty6mYtfZio73N++47Ei6HJC38hQHEBhDEXyHZLSsj0P2UDI6/5R0HS7pk13KAFY0V3Bne9W81oShhoQqrhG91XNXFLEvmG7HzKk6rJGz2MvKPkNg4R8IG3pEKcEEO6xeC+QHZFZBFLs6lAZ6DUyeWsgPn/aicVyqvVB4v2aebuIBHgNSCldI8mMB+fI7sCsR/X6LUhXWhHppHcUL845aA93+3RIfhtXvXkWfTX8N9i47FAEvpB8rv5bSzIVP5VHauw5x+kEXcYrxTt0iFwCrOibQoN+a0PrCVZrn8f+oGgLhQX431UmSf3kJX7gapPq2kkcBOgq8pD+VnZPp/XqIE0KDIWpyqacRyKxWf4+AJ5cbd7AkT8lDOV/5Oao9zlTKhu5ug08GFQ4rDxAzcWrf8HXRvz3f6wyzW+ymSz+D7VZ4wIVB9pvIeyWbPWZFhimZaeDiA1vR7nTpBPV1Rp5BLJuI0kbPwY5I8oQ4xDxyXchoVGWKBjOHr6AqFAp45zrOW5in/Kq2LrRnfD1nsyIDeTDephJMoTvfkcBDO9a5dlmOrNzRG0X2DGzeJ12AlXcQxXjekFSf45Nia0Ulhwv6o90kUAE3qd99A1hP+PqTlLS5MIYHNxWfQZXJdhLyJ00HeOIB1c3eLthlisYgPzuHndRKtyjVEqKsRJ5jo2IYxn53M3zeTxDd3v5/CjoFA5IESZYVPonL306rZQsFbTRHZUENZ22Rw8tr6HHeUeuY5hQDc27WeOO2dw/ccF9OPt+W8brPOc0JuHk4J+Tjvs4NezCJawlm+a+LwQRJxOpBi9B7lUUNUwsgED0ahERw9m1ZMNZnTECv8QMKPJTqw7pkMKirP2zbGx9Rds2Gy97m7BQZ6vVyvuMkgDRAf/AqNAwBH15xFrwJjekyN9eEnU7fL4Hjzjrh2KCdOWGJGPAjHGxwjlXcSr6EV0p5AnBBge3uFzvI0YxYj6TIirjWBcYuTWJnfYExjOGY3H0Or0sVfmqwMaKdZ3rUHzNvNBEd7nzdJuqxsjJ9zYyaUqzMQpRL8FVA/xotEVJyptdHRpP5y4oT8F+QAHVzhoRCPX0q0LI9Oh2j+yQncunIWAF4YmxeXUey6ncJhJW2683+R8IjlTcSuvjnMOh4OhrvJaxvU9V1NVAb0g1u9MsA9X2q6UjOQkrHQu4a+0ZPiXoeXsXYnB3x/GD4zYizBETSIYMH9CZriixP8zouHuHE3hQgnWd4bo9aVlLbodViI0M+VP5Eo8dI1TRF0fwOtt33K3O+oJjC/sSGyI+H/n8RZ0U0ChGWIwHJXhu91IesuxKF7yIh+nXd9O+MZ3aYtLwGeCE7E3KPKv9uTdeuGI5AKc3nK98CC1pESbpN9gdaZ6wXcL1FKQkkr+ukpTaMhglDPoXHidGaZhzxH4fqpDE6kw/4arNStSKDeeB6C3Mgu/VGZv0FlLaD5d9AQ98JZxNWeX+PHcUKffAA39yOSPuP4SZrdyzJ+LxwGNqdOAxGz4Dk5dun8UMRoCR+L3I2Tbq3AD9V+WtKfU4Y47q8Dl3VxjAsatxo6QOPkIWrKILfuuxLlM/joYufaSrXHqgt+bw4rdycwJoRY0roEJt0iGRy8O4RxqPkUp6EsMLiFyIW6RJKnLpSstmscK6xQhwHTRxd5Uoq/QyLqbyQ6GD9rXM+yh9wihBWvhzlT5nkT96PsS+LM5F2Bn4kJ+byYyTIJMIixGPSINObM9WpxrewKtgOry/y/9fSeoC0vpZsUisWib4ZhkyKi9TPLWFConAkxM04nFXxVmYc/S0uotBF0Gv3nTrpvlawLdPQ7GZd6QgytjHnsNwutKoYvRsZYF1C6Wxj7mEfhmEmVH8pHTrIvDVYPVqKwteF4qfx7909RkJbQ3LNzhwyGFhWnEhC4vI+E/z2VAjWVLspo2fU7Y4ghITnycQpZJXFaSNErB5isyLG4nS6BnxAHs2+7ZL/twmAwNIE4+T7uBkmWnZ0kQ3xHGR8c8ZXbKIhxPj9EErkzsymeELC11oQGQ+uKUzVAvAmB8bl02/aNeVYptoTDqfDzOEgjQMZ3pTOyEXQfS/dyEy05E6fWRD1+BNQwzMQJFs0SEkeTYrkaq3A4mqOUaIX0+K9LlEqwuop79/DvYWEh9vW8NV/LotfavwVmIG+1zmAwGHIB+70yg8Fg4mQwGAwmTgaDwcTJYDAYTJwMBoOJk8FgMJg4GQwGg4mTwWDIO/4nwADmvDiGvIQf5AAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADiGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowODRERDU2QzgyRjcxMUVBODBCM0QxNTJDQ0M0Q0ZBMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowODRERDU2QjgyRjcxMUVBODBCM0QxNTJDQ0M0Q0ZBMSIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGFmMDdmZGItZTc0MS03MDQwLThhMzAtOGU5YjZlYmUwMTUwIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWEwZjdiYTYtZWIyZC00YjRkLTllZDctYmQwNmEyMjMzZGZiIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRh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\"","module.exports = __webpack_public_path__ + \"static/media/logo_nvidia.5413d715.png\";","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADcmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMUUxNTVFNkUyRTAxMUVBQTc5NUVBODAzOTQyMTQzRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMUUxNTVFNUUyRTAxMUVBQTc5NUVBODAzOTQyMTQzRiIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzdCRDgyNEZDMTA1MTFFQTgxNTdDNDA2ODBFQTg2QzIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzdCRDgyNTBDMTA1MTFFQTgxNTdDNDA2ODBFQTg2QzIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5q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\"","module.exports = __webpack_public_path__ + \"static/media/logo_dirt5.bca7d7c9.png\";","module.exports = __webpack_public_path__ + \"static/media/nav_bg.45c1574e.png\";","module.exports = __webpack_public_path__ + \"static/media/nav_home.59f7d314.png\";","module.exports = __webpack_public_path__ + \"static/media/nav_news.5c5cdeb9.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK0AAACeCAMAAAB3n3pyAAABGlBMVEUAAAAcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxuy9xjscBerrxpwtJsyNhtydpqxNRhsL9sxtdktcRrxdVjs8Jnu8tpwNBlt8ZluMdovs5nu8pmuslov89muchnvc1jtMRpwdFgr74dHx9gssFfr75FdHwzTlNRjplfq7lcprMrPUBaoa5NhpA3VltMg4wiKis8YmlKgIo5W2EoNjkkLi8fIiNXnKlWmKRPipRTkZ1CbXU/aG8mMzUhJidUlaFJfYZIeoMxSEwgJCVGdn9EcXouQkZPiJNttPhkAAAAH3RSTlMAeRKbolnElY09I8u7HOnctKtmUEka+tCzgWEyKYULQro4QQAAFIxJREFUeNrk12lv00AQBuAFmnDTUMoljplh1rtrr6/YsR2ElFBIOcQpFRAF/v/vIA6JvUEc/UIcieejP70ar17NiP/b9d7Z/pUbcONK/2zvuthm1/d2dsG1u7O3rYn3B/Arg32xfXp9+J1+T2yX+2fgT87cF1tkfxf+bHeLnsNt+LvbYjtcHsBJDC6LLXD5EpzMpW2IO4CTGojOnYJ1x7MXT0KDJnvzYnYM606Jjt2BNQcTgz8YhfzgxQGsuSO6dREcR29xxWNpcq31uyNwXBSdOgeO5wE2jPK4DBOtpy/BcU506Dy0Hh5iSyppMp8j0poOH0LrvOjOVSfsBB2GsaKceaQ1pRMn7lXRmT1ofUKHVMYkI2auiMjSF2jtia7chMYMXYoxsmnOzCHVZtC4KTpyDxrP0p9H6/u6ZGZpiVKZPoPGPdGJC9A6/Hm0hdWamAMMiRjxKbQuiC44K+2BRIfHRtpE17P1MCAKUKoDZ9kVHdiH1kd0KfYK39e6YIVmSDRMiN5Dq4td9xY0Zun6aJUsc9IJc511aQaNW2LT3G3m9TRAR8BeERfaVpyXtBQb/3WH281paH1N0FUXQeTrkAta8hkRv0LrtNgod0F4pSnAlsllGGdaFyH9YCOsqVedrQt3oTVR2bBMUiU9nPPSMBzrOZ801VIPazI+hNZdsUFue33DXCEGhV+PsYytpvFYL9DcSOJCUJL91lGLXYPWY8yW04tia5AzeqCbtBUueCER8WNoXROb4xyOLxOZ4IqhJMva0VqDNZlaIioQXzonpdgUt72O/YR8D5dS0hQ+akZbBCbgIqZagojT4w5azG2vL4gFldEyb0S+Su0qrKuUiCF10GJuex0ZxNRUpS3Mj0JgHrevduTTikGMyI6PNt5i7pn7HhFHiJhbsklYzOPpB01Ym0sTWqoxIhOxP9n4AbwDjc+4TIteQXNaLwqhHGnKlIpG5IfVsO7cRVgyUfUZGjtiA3rOLTatcw5xQYZ12nq0Mae6SmnE9bfaEDEnS2QCnjo3Wk/8e32nvRQimgiXAn8+2rHWEYcaMSWyWVVZohF6Q6I0IyNzfA6NvvjX3Pb6oBe/WDVpOfLno6WKR4SY5ENaiNH4RBQoCrwhhh822GJue33CihKvkKuwir0kpvrdlhSgly7DyoJqnkeMMX7n1U6ao4aBMAxzgiq4UXCAi7+mJY1k2bLldSgIWwiEfV+Kgv//N7Blz0QXPIeMeSqX3DoqpR2/Ezz8j1vsWrL3WgCptV2KQCpWmvq8CAshY0eByTsKAJfDStjXyd61K6uK40yIXrrbUlfL+WizgpnLbkMXLI2cJQnfwij4R8vpZp3tdYJAb6gxtpTj0Qqb86i0dKEYv8lykig9igwlnfynLXY32l5PEOjWeWhvs5RFaTiAaMKc3me51jRoYTXyAr4D07Noi929sp4bUVAUCDiVzgloY3phWh5pAL0tJIKWBiW8Ajv0lAqil/+lkd6J4sxjTEoB6WyqdWUzywFGQmLSTWfb11AG0nqYxr/4D5/13I63V4WJByAdtcxqa+ajjaVE5ChD6pEaICeppPmRXFjrg+BrUZwp6mhayEfnZ39Oz8/PTgd/PsTOzs/OT8/P3gsD4QCwgqfs6epbLN5e72waT4vnyQEnkiQaAFoyFXi39haL0/KJIImBRJgA4mVywEtQCoYsvKZOAicrB+ib8fZig5HMszBt/is54CG6HEBTSUMagL2/aoCO0/JnzipMUtMIoD1NDjiF80DZoCLG6NOqATpOy4/F/pdM5booVf0+OeAbvAMXKKlFwGsG6OvxORE6hUnPQN7lj5MDnqG2uQu/YcG6ATpOy6URJDCpU0BWnUkOeIyUjNBkJHbWC9C34mMqKmUxazXQc1q9TRbdJ8AJYa3A3rPVAnSclmHbusAsE0DLkl8ni74Qdak0lCKyVoCO07LRrvQZZl5CZqnmn8mi30Q5HDFiCwH6aGkZfVuaHrMKqHvJfOBh9pwqFFQiIjV/WuWlJ07LJDPVko6mbZXm8vOBR5kVFWW4oBUrwWsE6Dgtn1HhZEUSMw+dCebix4FHWe6pwY5MWQkMHsUBeoW0TERWNgY7FcpeMHePkkWnnhxmQrGWmMQB+vhp+T0NWldhpxCtUFwW75JFH/eLViglsHf8AB2nZWQ0KpFiUqlWMDft9sCjzIh41j0VB+hjp+UG0JboXg3hdV0w0NRKM3d9myzaiik5KImYsE/iAH30tAx0aXMvBTwNUrhKKK4d84tkwVcrwx4QiDCkoYUAfYS0DF2gtOFYiMimJhsvQsb8NFnwmnIIJRDL0/ATLwToy6dl5CUqh4GigFNm0zOfJAt+Uqc0EEs9ehqdxgH6yGkZXsF5jMoxLz9g5tww8+K7ziva9IhNf+NQEAfo46ZlwEmYGkFFm82WKs4y5vxTsuDzhhwQq3MUNHl/tAB9NX4PDAxAu6rohmk3G2NyZvU9WfCDiBQiwqGnnThAHysttxhpD9C+2FL4mGGbMctvyYI/RFQgkilpaedJHKCPlZYDziE2mKXtOO12u+lqPF58K6OBxp5oUNKFX/EWO1JaDtoUiqBCkpO+NeO0Y14uTLLgCQ0q7HmNjva8igP0kdJyUEjUJIkYgDZNNkw7fI15+f7Ce86GRgIznSGlPQW8j9PNcdJyUADe8HQLlXH5NpwtDb4k//SGggyzRkQXIdcA4gB9+bS8xUR4wDkXHrqCGxpuwnae9nfyT09pIhFwDTja0ZQD20sH6BvRvsRM5QBVPvz/SZ278RqEazt4vpDsaFLuthck7diOGMDnKEBfNi3XmNUagjI088ekw7TjtZ235j+93E0mMSgY8bV1CoM6DtCXS8tn2PGAor+km9mKFDEUhlG8FfTOO//jSTJZK6mty11R3BUUVxTf/zU0qerp0lgl6AfTDMxM83Pm5CT1TWb+RU7dQEttKXN35zmHFgKQDRMQ6Ahj5kkloP9VLct12t4kQB7IWOF9V8IWnuxsDi3NHICWNPLrkYAZWQnof1XLWKdtuxGAprNDisHfPDYCvd1O++Z84+rjbO0MHRkw818C+lo1vTI6ADGl0mi5a392wnnaR9tpb0DRQlHNkHQCR+79s7q5sJpeDudMFnA8ApCqozPq/G23hKWdrTcB3S99quiExcLZaopd+NcDwjuc8BKSdOkEFubsrGM3qoFmPmyFfQ1A0HqKJYqDcVQYsdCvDcrFf1TLjBMdYEkmAFbLfOHe3B7lccm83FR2JQtl3DzFmkYAExUaLMSHawH9j2oZJ2QHTAckQLAQbPJpsQOWNbQp7r7gtLAmCkuhD7QgMXP7xue1gP4ntYwVIQEp5tpqJRU35uxwdrPpGiq82FR2yGjKeD4AnozSdvK/TFxx48aNtYD+J7WMFZ6BzssAqbRgbgKdeUOujY6co01xt3T+HE6OLBzFxFokKrQoTD/T3v8HAX1l6x8DcreZIENuBM1h4OFGahvSkA0N46a4+3T88XmVDZF+waHQ3fjJ6rBx5R/UMtY4AKRkgM6l9Z7DzThoMhpMlDbF3X0UioJwDkwLbbOeYbdz2kd7AvrvanmNaABBQoS5Ebqex0g3HRGVj4ebEgwL1pFsAmjGw5E7zbAbhf0ptq+WFdaocqaBCEIJy9xMHLm56UPoqLCV1uGINkI0mEtqYCm182cA1Jz24a6A3r+1XDkABAPRay2ZuWE20t5Mx2HabD3raJwjgTA5CoZowuBhzh+B0o2Z5zsCel8t41daBfgIkViIknYyQK5NnItbylLzFL9iSllJsIGmeDyHxRsLewJ6/9YyqpEweIhRCcUcIo8e6M565Y0jMrQh7l5GjTWBBOBJOYYfZE4byyJb+LgtoPfVMlCNBBOgfWmE1HLHQHAHLrN0kBvi7p6nVuCEdCm/kIMwUlJGQt44Z0tA76vlDqhGAkhBe6GZ2Y+ci60GWvDPtq4maG+xwsdS4Yh2gqUMQ53S3t4W0PtquRoJggTsmBuBu8A5vvDRCj35aGZxXPOteiNX2rdlEojLdpZOacWWutlXy7/R94AlgJNkxRx5KtUfklrasSznmif4DVmGABsi0VLBIZ5KC70loPfVcj0SpgMwJc2c04YeAKKg2HNoie5vSDD8jhutABwdHC3YssgKEXi7IaD31XI9ElKEUEmpknZUpbZHk3F4+O7dt7s/effu3d0VEb9jO0ONoR7oacafGqEHsCGg99VyPRJaD6tSboQp8iABwIuJyFOUQN84i/JAHPA3EtG82ArulFYD2LgBva2WK4QB0PSS9ZjTpk43yAQFdoZdEpKFOgyTRk9O4G808zk8loP52XnYO8jUAnpfLVfoAYBhYbXPjeC97c5lk2gOk6E4ASKWu3U0YJ9SVYUITeQQTmkPyIyVgN5VyzU8AiBrrRjKAOu5P4q8ZNGS785K/I4OpjOk8Bck0QhiDESM0yLzKHyqptieWq7ppzJuldYl7aDSEihCUSsDGa+Q6R48uv/9yeNHA/ZpqZFUTO6Aw3naCQVRCeg9tVzTWsCSsEJ1ZYCJQaIwIDeq1QcnAfH2xavzA+eLtwLbKCJJETDkcGe1yDKVgN5XyzVRAHzQVvKcFs3qao0ylHia9KdXv3nmzxqbOFKNKw0sf1tkqAT0tlo+A2pKuL5RWsxpOxkxM6l50Rj56P0fZMKjnVZIgQQkkV7tZEfOKgG9r5brM40flLY85LTejpixPSAEQvya37/i1megvz2hRtGANuTUar2TFSoBvaWWw5/TDgCit5JVSTsGXjkRxC5sCtx3t3PNaiQ5QALahfVIOBK2BPTl6hBSoTwAU9KWTgitxkIs+9fznT9Flhg1cfE0fjxPG5CpBfTlPbVcEwIAGrWea6u4wZFOAvLBzm27129+Lh+Fip4sOgDydExQWKgF9L5ark9gkoJQqqwyZU9pewXoe7s3m/Nqr6eZpYBgATTnacs37Qvoq5WcqWk0YM9Y8jFthyMq5es8u3zMy72OSx52AsJpKwM27g5erUpb1PIG+Qt8ZsWc1k6ccEQOkM/2074o00lXjTtAJ1i6U4/bgrtVF/dSJdhqZE4bnC5PZMwi9IxzIvSr/bRP5yyMXxkNbCvdZlq8q7aIi7VartENIJPJbZtri9TqVU+Ls+t/4U01oDJMP7o7sx2nYSgMs4hFLDMsYhFC6u8e23VSZ2vaFCgMMGLfhBDDzvu/BthJ5NhtUq6g4rsZaUYafUpPchaftogzaDbusy2fhcXNqU2j5Y0tZBEJam1T4f6Y0NHWvfG2IOTooJjgEUSnFoeHSD+FZflJV3sJ9JHkJkHMubHVpMxr6FB665b7p1ZnlaADUyiE1/Ciy5xNXgWTm/3+xOBYEMDTQtrSlrjQGTpEW22/OaGoYxRJAN3RRwyLm0+7qfC+H7Z3S/QyiyF4lTe24HPt2R5ss30xdqxKd/EIBlcwktddGO56gXt1uFJ0DS9X0yU1tipNvBricJvtwbhLpVCjExgmXsfbIJnlgTcVOzvQ3zgqgMdM1rYxZCThUHnfNNS9+2TssVrAUuYwBI2ORa0t3Zz15nRvt9jKSWOrQN69LWXxY9j2sefqUgXVdtV6xcinrObAm+HtjVoK9MIzgC8nNmypUCAv55EqXgzbfh+vscrtHCSwrVAjItbgcvreb9vro5YYvcQFOC8ZWbRC2bXlxBP9cUj2qx8I7tmrMhjStd4hY1GSLDKzPjtquf7b1v1P9EM5uEqYDQQqY/9xGxPU8LugPow3spI8rd3CZFYwVixjLrjuHmd415ajlzKBUklV2y4l8gwOkkChHg8stD4c9+iWte0sSGY5c9xx1/ZP41ZLKFlGJBNbiWOmvQ+BAuboP0P/+G7cx6qCIUhmxAyZEjxeBnHr+sdH6GWuwGUSSSrJFGBISy9sbUXulqp93hyM+5nCsPSGdjFrqbKIHXm95BmXb9BLJASnJI2tLUp0H7eKBKA08HBj2fj6aEC2qm1j9xtZP7scn71u51R/3+CYgte2OZFEDtaJcUltK1m+3HCAvsgGbJcMQaEgm2fXrHV+4hVhF118qYHkoBSVWUwLImVsg5sM0Nb/0QM/qT04BFCu+mQjMASFgj11yZYsouYm++j3vft903sHT42tnsWUlMS7tgKCVLPqauCH9x808fv1wecpLG5O73NPgIkg9c6YgRNDFKyV7weNzg/0oOZQUqZaEiUkkPOOrSLeNGcWxpbQDw8O3hYwDOne4xCNbTRuYRaNTOTM8CNoda4MDBfd6EPJ2L4pPicgj6tW1oatpbGNmAZQp1AHVRtlwRvbWWDLuFzqYMvsSjioeRX3pTLBSU3L1pYiZ0uEdqJvyKM0tLXI8PJWxlMxHjxwJ8ySY2qj9tXauObCtokdyoRz4szYLksgLzPUcICkW3Y1LBkgQltecpEFNY0hbmwptJ2KlLGqu/1ywZ1Eb7nRFqQ4CWtLxlbPWwt7k9VksAimjG0aHpzPeLJaK8eptb3T/uUOqykjFs1+bjqhPt0dWW2eixvbSWJsEyCfzVpbe5PV5DEsKQFrtpJF02LZRIObjyas1o4nLnBb5vz9m01HO6e6efJoY+J1tipGkmpYhEBMAjVqAUtROltHqiEjNlmN72XUedEaWz4JQyEiHDhZ79jsZLcpuS8QknKliE/IIGJQWsDC3SPBhYIugNWarWQcSKbM/HDMGluwsR8KGuJ7N9GcDE6fHI8PERBBKVKTZWMrowUsSoAkWrSqf2SbbJGaWBU5W/hHfG343PFCIcehX4GeGPhk6y/veGAbxzKubQElM93YckFxd9ZoKFKTm6oNRzizpIz8izttbbUfCu++DH6a9s1wzPb86UOtnK2SUnZsi9aWk0IQCospUG0Y3aeRTt1ClUWw1la2ofDw8Ojzy2eBzc1wTfz0aHc5fW1tL3R/tKvsn9uwxnp+tJucP9fzXQK7yKWLvRtLu8fxgaXmy6Pd4vLwivOVG6Pd4caV7W/c3JVn2R9+Vcy545f3Rv+WvcvHXQxs5/atkzf2ro/+Ptf3bpy8dfvY/8AvhcSVYiP1i9YAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/bg_media.a0fb20df.jpg\";","module.exports = __webpack_public_path__ + \"static/media/BannerSectionBackground.d5cdc692.jpg\";","module.exports = __webpack_public_path__ + \"static/media/BannerSectionBackgroundMobile.7b7d8e0c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/ign_badge.0735dfe3.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAABTCAMAAAA7rqAMAAAC/VBMVEUAAAAAAAAAAAAAAAABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw8fL09fYAAAAAAAAAAAAAAAAAAAD19vcAAAAAAAAAAAAAAADh4uIDAwMAAADl5uf19vf09fYAAAAAAAD19vfg4eLBwsP09faAgIE7Ozv19vf19vcBAQEAAAAAAAD19vfi4+Tw8fLd3t/b3N3U1db09fbHyMm7vL24ubr19vfT1NWpqqukpaZRUlL19vciIyM/P0AeHh4SEhLx8vM3ODjx8vP19vfl5ufX19jv8PHo6On19vfj5OXY2drh4uPo6env8PHh4uOampuvsLCKiov19vdsbW319vf09fbKy8stLS0wMDCSkpP19vc6Ozv19vf19vf19veio6SKioscHBz19vfs7e7r7O3q6+zm5+jz9PXq6+z19vff4OHT1NX19vfs7e6vsLCsra3f4OGenp+8vb6ampu2trePkJD19vd4eXn19vfp6erGx8h7e3zl5udhYWLe3+C7vL3q6+w/QEB/f4B9fX5oaGktLS7v8PE9Pj52d3fw8fL19vcGBgbf4OHf4OFra2xsbGzLzMygoaKDg4Tw8fIcHBxPT0+JioteX18gHx/19vf///8iISEkIyMmJSUqKSktLSwoJycwLy4pKCjz9PUsKys0MzMyMTE4Nzc2NTX9/f3x8vPk5OU6Ojmzs7M/Pj48PDxZWVlHRkdCQkLS0tLLy8upqqqbm5tqampkY2REQ0P6+vrl5ubh4uPd3d6IiIhSUlJKSUnt7e7m5+jb3N3Ozs61tbWioqKUlJWSkZF9fX1vbm9sbGxnZmdhYWFAPz/q6+zo6ere3t/Z2trU1dbJyMmjpKSfnp+FhYVeXV1WVlZPTk7u7/DX2NnBwcK/vr+8vb2Xl5eOjo+AgIB/f395eXpaWlrQ0dLExMW3t7etra2mpqaMi4t2dXVzc3O4uLl3dnZMTEyCgoLhJsrWAAAApXRSTlMABQEDCwduE3IPJBEadWpOFjlnWkUsKTI9IP76WFRRJx3rYUldPwNgHArdsGM1I+XKuKOFgXBDQi706ePj49vXzsjFvru7uI2Kf3x7eFpOLR8eGvfn4+Lg3NrYsrGlo6GZl5GKcmFST0dCPTUsKSQP9PTw7uPU0tLOycG/ubW0srKvq6Wfnp2WlpWVjYyJiIeHhIJ3d3RrYltZV1dLRkA6NzQfGQ34L8OQAAAKWklEQVRYw8WYdVgcRxTAe8WPAw6XYoWS0DbWpE1Sd3d3d3d3d3fXOWZ2b/eMIzgkAUIChBAgoRBpvE2bpkldv743s3ezGy5Q2j/6vuNYmfnt85m9Hf4PmXTlXpdcuPuhuz968VF7XTlp3H+kjbt2z0N3dllk70P3vGbcv+Zd/bjEWWTnSz76N8Bd99rNNYIc+MauYwaGFJy1fP6i2iWfL+3o2NxX+8X87llhVV/ddccxEI8/XUxb+MMvg3/WeYhKDHE3rfu222tAbzs+6p9CT9pD6PdV7zq3ICn4AWEAJY0dv883oHucHPWPiG/uzYcv2lxPtidq65xqYf07ttEV3fVCocCPXYRQdVsWDf9rXL2Qj3vis9EUPeVuPnDFHwxnwlSk6ixEVwy0Bh4Y7OFD7/l0ZEVPPhBHeX+ukXpxwDDxMUr8czjznOtGYk7iubh8i2BhMBgVuvkkzIi9CkP6efD3vS4mars68tyZv25YNABqFepWiFtRyEA3Z16/PeaNd+D9L7qIFMFS5YnxRdG3HuohnV/hnNs/icwcx9Px+3qyXaEGkSoqI0xRCVM9jV/grPudMZH8uSfP70GYwyRFHiOJ+PyMIlhFzVVFI8zfxvW8NC5CjK7xInGNG6YySaE6TKVCQcadyNCLjCg6XvPA19DXMHGnKxJtw1Icg+39TiPoo2HJzRijwCJuyjRKKhleB08K8a+CqWffkBAVyezvh2cgM8BBIz3R4lDWqlRkQifW/JPl0VbmpJ1AxwXrrTiVho8QSEOnVGX4MAoJLx77LZr+ntPqzt3h4pfrmRUpTxVLOTZtrKhao8uSV2qwiRxWZDH9WnRke4OZ96uronpAUN2E8koyCoctqgDZGH5gwE/moprvlkfvuI2Sc9qIEFTguyqYNm+pjBKA/Qoe1FVXcGnmFQDRUlVS341qZsbZpCd596knnnDhLa0Q8ou5kgIADrLZFYZ0SP8wruYJuVLNozAltxAUYWil15hW1Re+auTMqoqQzBb6MzSqHr15/sywmuNw7VpMGQ1buaEiLL1UPgnm18o7tQrCFEwulXvztLLikJpXo92taILiQ/coZKjKNNNDpKa98vq8GoYzCAuiEoN5wHg9M9EI+sVwthJrxkeNwtN+qJDyDVeEYfPZJB9VNejxC38wnVZCGgDkwVRHjEBiLa4OqFC39YjEP48IgoytSjENTBc/10Ql0EpdoXCMLf6MDLuw/CS0uwVqlVK3DO/vZmYdzg0skVeq/iA+hfFKqqeqBpW/BNvO5dkiQMdjK68MgP/BAAIfyiOx2MSsDsLsdaYLawkJdw2iqFol2YyKvZSDlosU+obAo3gXpOg0FDrXhFj4Z6DVdNqvG7waBTLdV6dp+m/tmEZgOSKxm3dAS6NtiEQdRWKTfhNk2a9eebLa1PvAMrqh009oH2AOSsnCQsfo5HVSKKugSD8eCg/S11ZElJ8CCFPEYEUPEp3Bwa+AnFwgnAl9rRr8r7gDmJOqSGo4pjT4mysC8Wvi0YkaWoB1fw3zgAqsFZA3pac6AHmjC5D1QEOOB4cTJtSVtW6WVWrArREWaqaVYB5zU510YnzGlxXHiBzKazJSB3tN45ASbr5s/axtiIt8cDNAGBUdVNegQXkUVfc14tbzsoxciM+JuMFApApZhFSqYPH6ud5MXz/PQlwRhDDzzZJAkjaqg4cYVboQ+Vqp3UAuqJetBgRIaLWKZciG8swJWqNrNDQG56hMVXRKapj2G+b6MSlFCQK5cggyPCiRbj+fp3rwC+pdyhroLFK00AoF+H6BzALkKaglVpwcq1CRyhT/frT6crFb9jo+J0CEY1u4LwszE6FbwtGyDZpgGUR+oHCF5g7LIctG1oNkHWc2YMSTOTIKGrB3q9hbeMxLIqMWouzmTGopPA4RhXwD4s0CueOBgBwg1m2GYRSVzcckC2rkoEB4S4KL+f7J4EuxPHrXMs3QTSoAymyOXJErdclkoUmLscbTIOKAfB6Of/aEbKbAFtJEBk05ubbXxHQ1Coul+UTBXeERE0p5K3objnuClMCHmoZQS4Psp/QX04K0vA3NFZYLaVwGmItKsHpEFuU1KHiPyc2BRja4TOmIKfit2fhOGUtGoWssAYr3WKxxQNrOgbNNhtl6KOJqnXmVZLw1DZiQ81rFOEPaqjE6sdiJEPk0nDVrMs7Ck17zGsn9FiQtVSZoKzgn7KQtWDuHJxv9Mup93GxsFRbTULa1y7k9fiAK9RvMtm8wbfFWu0COTDO6+o7R+8LpHKMImCgKE7HZZ0zTwGvrF8obP8vkpLMBsU88jw5KzLP4otwkljshDdLCap2hPzQjp7tM5Y4ZJ3ToxAJ/QLgSxXb9Trg5IG4+ZxsD5/uJVfwrwrsD2VtQybyjkwtnxoHdaHnCuahml+hWQb6Y5oUC22QFenRmbDCr5uiVxJAWDM7BYDfuNoTlH6Bza3nwDEW3COKXXWS4aM3cbOpWjJjTZtxeTovNN+zGmCeiml4wREorT6KtqpUmEO65VfP6TXv5AaEkxFvs3HjMP9wbezsYIqVrVVVPHbW+/yjyNpOOr8TyPvWV2PScYrkNtsVd6sJE8jOLSlBnIYAWbo7WksAB/L38PFBSbtZRzRvOxube02oCMhUbzejSgcQzk6xKoppX7MTf+Cy2KRodjcfI2llo9rT4CaWZ/D1Sqln+HP+VxGo4Ch0Z2efFeVPjkwtSHdY36KgE+2H48jMgF3S5CI4gS2ch8ZCk2F2m27d9MbU5P74TbrabM4lKXSMJU0jjAiQekARmi9hY1Iwuv+osXNJbAORjaji+LCJO3G1oRuL+x8anFU50yNhI03OvOgMGdPe1kSDltTkikWjuvuVI3O/o+OT8nFz57izFllh0AurpWrSmnntS8iKJ0jDbxdMHiOkz7DLa5qjb4opOuIsPm71Vl2+j3MZhEpybx4cedBwQpxfhbxuRmVkZD/OkWLZqiewzUlu5yrYs4EDvEUlAzMiKTERmTFzW9BdvcXFZ2TFkLJZ8G23ZjjT1ChVvvQiI+TOy4mRGDgtRTFxR2eVTXEK6a1vqQEOmWFxY2fBX71diwJRjk2LTCsqKJDGi7Yn21MKX93MZ0r5x0+dtNT7Grff5G1s2bVwRurffM0nxsSUpqRAZII7ETCjOLn3rgskuKdU9X9f+9FPtN9+3my5OngrAtPTS7OIEJI7MjHZk5RSOf+oA1whywGNJ4MXxhTlZzugRiNKhibnZ0wtKjrlvn8i8yYe/kBQfn1xSkJGdmyh/wBtFUad9YkbB+LRpF0w5zWvB7TPlkWlJaPL4goyJdqni6IraEpz27Bkp6SVpsccdOfW8I+495OBDDn9o6pHHAQ54JekpM7LtzgQbV3EM0NzM1IyU/F0mpCXHhiU5bcIu+SkZqZm5EjgGaHScw545saw0pTA/P30XkPT8/IKU0rKJmXZHXPRYgNKnUTHRic5ie9HM7NTUHJDU1OyZWfZiZ2J0jPzhf+xUW0x0QqLT6XCUlzscDmdcQnSMTfL+A9dmiwGBf/+A9jd9Kgr2btgQgQAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/video_bg.82194379.png\";","module.exports = __webpack_public_path__ + \"static/media/video_innerframe.76e17bb3.png\";","module.exports = __webpack_public_path__ + \"static/media/launchVideoLoop.852c2ace.mp4\";","module.exports = __webpack_public_path__ + \"static/media/launchVideoLoop.851a60d0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img_packshot_all.da9bd9f9.png\";","module.exports = __webpack_public_path__ + \"static/media/whitenoise.7f6e5cb1.jpg\";","module.exports = __webpack_public_path__ + \"static/media/btn_left.0d2013aa.png\";","module.exports = __webpack_public_path__ + \"static/media/btn_right.a0fc2eaa.png\";","module.exports = __webpack_public_path__ + \"static/media/features_bg_zigzag.432e3ec0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img_features_01.ac976ed4.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img_features_02.45ef63c9.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img_features_03.3fc06588.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img_features_04.203d5421.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img_features_05.1e795bc0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img_features_06.91fddb14.jpg\";","module.exports = __webpack_public_path__ + \"static/media/title_gameinfo.89c54bd3.png\";","module.exports = __webpack_public_path__ + \"static/media/title_nextgen.a63cf770.png\";","module.exports = __webpack_public_path__ + \"static/media/bg_nextgen.437e2f0d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/bg_nextgen_mob_xbox.ac90ee7e.jpg\";","module.exports = __webpack_public_path__ + \"static/media/bg_nextgen_mob_ps.ac295220.jpg\";","module.exports = __webpack_public_path__ + \"static/media/title_freeupgrade.d8c6d498.png\";","module.exports = __webpack_public_path__ + \"static/media/bg_textbox.82194379.png\";","module.exports = __webpack_public_path__ + \"static/media/logo_xsx.aff1b7d5.png\";","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADI2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTAzNkUwMzlFMUYzMTFFQTgzQ0ZFRDlFQUQwMUExMzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTAzNkUwM0FFMUYzMTFFQTgzQ0ZFRDlFQUQwMUExMzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1MDM2RTAzN0UxRjMxMUVBODNDRkVEOUVBRDAxQTEzMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1MDM2RTAzOEUxRjMxMUVBODNDRkVEOUVBRDAxQTEzMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgB6wDYAAArqSURBVHja7J0JkB1VFYbPJEAEE8AhBCQqA6JgSERDCC6Aka2AJODCYhQ1BSq4oFAUhRsQFLGwQFKFaCmF4IYYBTSAgFAwIEJI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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/standardEditionKeyart.c097c61e.png\";","module.exports = __webpack_public_path__ + \"static/media/standardEditionTitle.f5a585c1.png\";","module.exports = __webpack_public_path__ + \"static/media/specialEditionKeyart.ba5efdcb.png\";","module.exports = __webpack_public_path__ + \"static/media/specialEditionTitle.fad1d4df.png\";","module.exports = __webpack_public_path__ + \"static/media/title_buynow.4af9ad1d.png\";","module.exports = __webpack_public_path__ + \"static/media/title_addons.7a177770.png\";","module.exports = __webpack_public_path__ + \"static/media/dlc_01.e276cfca.png\";","module.exports = __webpack_public_path__ + \"static/media/title_dlc_01.f44f61dc.png\";","module.exports = __webpack_public_path__ + \"static/media/dlc_02.d354456b.png\";","module.exports = __webpack_public_path__ + \"static/media/title_dlc_02.0bd5dc81.png\";","module.exports = __webpack_public_path__ + \"static/media/dlc_03.9ca42a39.png\";","module.exports = __webpack_public_path__ + \"static/media/title_dlc_03.a7154d6c.png\";","module.exports = __webpack_public_path__ + \"static/media/dlc_04.a10f1bee.png\";","module.exports = __webpack_public_path__ + \"static/media/title_dlc_04.828ffa36.png\";","module.exports = __webpack_public_path__ + \"static/media/title_media.31a754b9.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/FordOfficialLicensedProduct.17b82ba7.png\";","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCAAUAFcBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APjn9pf47fEnSv2iPidYWfxB8V2FlbeJdShgtYdauUSKNLp9iIm/5AMV3/wL8d2vizwL9s8ceOf2irnWhdshfwXcPc2PlfLs+d3zv616H/angb/ocP2t/wAxSf2p4I/6HD9rj8xS/wBqeBv+hw/a3/MUn9qeCP8AocP2uPzFL/angb/ocP2t/wAxR/angb/ocP2t/wAxR/angb/ocP2t/wAxXg/xK8T/ABdTxjqC+Atb+NMvhRWX7I+v3F4t63y/P5nlHZ9/f0r6V/4Jmal+0XqH7QQ/ty68YXXglbOb+2f+EkkuHgX92/k+V5/Hmeds+7/Dvr4l/aq/5Oa+K3/Y06l/6UyV9sfA/wAZa98Pf+CSHjnXvDGs3uha5b+J/wB1f2EzwzJvns0fY6f7BNdb+x/8dviF4y/Yb/aG8Sa3431zVPEGj28x07U7y+d5rQiz3jy3P3fn5r5Y+E/7U3ivWtJ8TS+Pv2iviR4cvrW3V9Gh02aa7W9mw+Ud9/yc7P8Avs+lfWf/AASp+O/xi+KWveObXxZr+reLfCFjp/mLqeqzNO9peZGxElb5/mXedv8As18g/Dn9pT4yeNfilBoV78TvilqVnLLcf6N4Tu5ry/fajn93Dv8Amxgf8BFfox+zFrvim3+Bvxl1HUda+LUt7Z6bLNaXXxOs/sc1u6W0zh7b53743/8AAK8L/wCCS/x4+I/xY+OHinTvGXjfXvE+n23h57iG31a+e5VX+0wpuG8+jmuj/wCCu3xs+IHwm8a/Dq38GeNNc8K297p95JcppN89usrrImwttPJ5r7a/Zx13U9e/Zc+HutapqFxqGr3nhazu7i8uJN800z2yPvdv73NfCH/BJ746fEP4qfGrxzpvjPxprvinT7TRPPt7bVr+S4SN/tMab0V+nHFe2eO/+CWHwc8fePtf8R6nfeKl1HWdQn1C5+z6hCieZLKWcKPJ4XLHjNeiaL+w38PNK/Z21v4JwXWvf8IhqWofbZ5mvEN55nmxHAfy9oGYk42Uvwl/Yp+H3ww+B/j7wFo0+tf2F4qjlTUPtF2jzAGHyz5b+WNvy8dDWB8Pf+CbPwg8G+APHXhG3Gt32leLILaO+e/uYZZojBI7xvC/lDYwZic81037Ov7E/gn9ljXNZn8Gaz4mlg1azkju7LUr6OS3cpt2PsSJPmXe+D/tGvK9M/4JS/CLRPEjX2leIPHWkaj5rFL2w1mOGaPf97ayw8V7J8Kf2QvDvw1tfFlpF4w8b+IYPEGlNptwviDWzd+THIDuaHKDY/vzXj/hv/glP8JvCsxutD8T+P8ARbqZ/IefT9cjgdk/ukrCOK6X4if8E2/hp8QvCfhfSPEPiDxpqy+H450tLy71aOW5YTyhn8x2hO7B+7xxVz4WfsC+Dfh74i0DVNL8cfER4tKWKS30u58Ql7LaOkbReWAY/wDZ6Vt/s3fsT/D39lbxzres+DZ9auL3UrD7LMdVu0lUR+ZG2FCRpjkCv//Z\"","module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/VWLogo.f2d598ce.jpg\";","module.exports = __webpack_public_path__ + \"static/media/title_relatedarticles.36086c07.png\";","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADiGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMkFGMzI3Q0VDNjUxMUVBQkZCMUFCQzUwMjQ1OTA3MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMkFGMzI3QkVDNjUxMUVBQkZCMUFCQzUwMjQ1OTA3MyIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Y2Y0MGI2NWQtYTk1MC0xNTRhLWJkYTAtMjlmMzVjNGJmZWU2IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MTYyYzA2NTAtNDgzYi1lYTRhLWE1YWYtMTI4OTAwY2NhZjU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hbtVygAAEHVJREFUeNrs3XmQXFUVx/EzSSCQhCwTEpaQTRZZhVJAAcFYIiWbLEWJAlWiYCkiiuX2B4gLiwtKsYgiYBUKKu4iylaWRkXZSRBMAEUDAUIIkEkmJJkAGe+Pex795vG6Z3qm+/X2/VSder1NT8/tN69f33PvuV39/f0GAAAAAAAAAAAAoBijaAIAAAAAAAAAAACgOCToAAAAAAAAAAAAgAKRoAMAAAAAAAAAAAAKNGbDnTNoBQAAAAAAAAAAADSbrhCbhtiYiv52+MPG8N4CAAAAAAAAAACgyewR4toQe+bctzZET4iVg2wXhbirGf84EnQAAAAAAAAAAABoFlqe7TMhzrM4ey7POI9tB3kuzbY7M8SlzfhHAgAAAAAAAAAAoL1tZ7FkZDObG2J+iG9a+eRcNfT3XhLi3Gb720nQAQAAAAAAAAAAtLcjQyy1WPbxryEuCnFiiN1CjG6S13hKiAdCHFiH5z47xFVN9LdaV98d27JbAgAAAAAAFE8Dpw+3uATJ8hArQjwd4kWaBgAA1NBMi4mvKWXu13puC0PcH2JBiHstrt32ckGvb3qIqy0mEevthhAn+N/cUCToAAAAAAAAivf2EBeHeEvOfetDPGOlpN0y3+q2Z/325X75eZoSAABUoIFA80McUOXP6XzkoRD3edzv1/tq/PqOCXFliC0LbJPbQxwRYlUj3xgSdAAAAAAAAMXRuipaU+W4Gj2fRrank3hK3D1j+Yk9XX6FtwAAgI7y9RBfqOF5x4MWE3YLfauZeeuG8VwTLa4Nd3KD2kXJxg/5udNqa0CyjgQdAAAAAABA/akT6qwQZ4bYtEGvoT/Ec1YqpanLlWbq9fG2AQDQ0g4NcVOdf4cG/yy2UmlMzbRT0q63ws/MC/HDELOarL30mlentunLPZnr6ces9p/X+nZbpLaavTih3JYEHQAAAAAAQP2og+bUEOeGmNZir10jyZNSmtlZeclMPSX5WDcPaCx1cL/PYsnb9P+ltiTagc61ncVZblMb8Ls1KOhRizPslLi73y/rmHR+iE+H6Or0N4gEHQAAAAAAQH28O8RFIXbvgL9Vpa3Sa+QtCnFjiDtDbGRXAF4tb7tXiN/U8Dk1A0Ozcr8cYnyZx/RYqcRtOsGenjn7nG97eZvQppQImhxiSmpb7vJmFgeo9Pln25oQGyzOkFrv0eu39fpj+vz+Df74tX65kTRAaL7FNW+bidppIruk75gk6AAAAIBco0KcHeIEe30nRrr8VzKrgJkDAIDEG0N8O8ThNMWrHf9/sJisu81qnwBQp+shIQ7yz2J1jCbryPT69V4bWIaKhGFrU6fzSRZniy31eKHJX7M6/u/w88l5NXrO/UNcEWKPGr7OPhs4YzZ7vvtc6lx4RQP/l8aG2DLENt6mS/m36AgqD10psZa+nL1tcoNec5K0e9Fjg38+abvWSsk/lXr8S41/93kWS2ujiZGgAwAAACo7PcSlFhN2lWjkZLmyX9k1fp6nWQGgLXVbnMlymsWZLRhInZDqgLzRY8kI2/pkb+sdqvxZdYqmk3fqLF1tr0/orUpdTt/Xk7pO+cBibR7i+hDvzXlPlaR53EpJu3Q87udqjbBJiJtDvMtiybe5/npGsu9/3WLp3EaWh+u3UqIub2ZeNsm3vsJz6XiphJvKAG+dc3m6h27byuK6TomVIY4K8Tf+PVqK/i9mhpgTYoa/z4Ml3TZv4/ZQsvtLIb5mcT23kdLAlVuMEpJNjwQdAAAAMLjDQvzcypcOqtZLVhqBnB6VnO3g+J+VFptuNirRNDvEDXX8HftYXFx8A7tg3WiBcnWQTLLY2TXeYwu/Lbk+wa93+Tb52TFWmo2ijuqXLY4OVue1ZjM8n4nlNDnalP6PNKDjHIudiBiahywm6n5vQy+F+eYQnwjxfmuOzlp9pucl9JJkXjKbb03mvryk4Bp2iYr0+fM7i7Mlh0OfS0+EeNK3S1NbxVP+ftbaVRaTaQnNaLlgGM+jz2DNHNTs3Gkt+P71ps53n/Nj5TSPqTX4Pzw5xE9afB/XOdc43yYzrMpJSi02K50jav2zOZmY66Gk3ChD1p9CnOj/K8OlhM/CFj1OdBwSdAAAAMDQKCGlZNSsAn+nEh3XhLg4xH+apB30RfpzIb7qr2/XEX6BLPc7Ph/iXIudsN8v6G/TaPzuAttSHfrlkr5JMixNSbPRZX42777Rfns6qZY870RrzIhadaApCa2ZpU/6ZXWOLrGYkFa8wOEGLUbHjgtD7ERTjEilUpgqZ3d8iI+HeGubt8NQZu1pu3aQ5+gvc1+/31+OkqTZwUH3WuOTh9N8v9irjr+j389pnrCBibskdNvyCm2bR+cz38jc9nCIXap8bXr8d6125THb1RctlvUrwmQrDWQaN4LrSUJuUo1fn5J3fR5/trj24U1WuzLDOl9XYiFJuM3JhGbHMZN8eJTEPsmPeeWM9vaf7d9PZ6fiTX4fWgAJOgBF2DfEGyzOPKDWPwCglamkzi+t+IW21RGk5KBGTN/ewL9fX/5+FOIdqdv0+X58DX+HShldG+Jgv/5YiJ0tzsyqt3eGuNVigguNo46jJf7eKzH9qG8VT1p1HaNAPakD7CKLZetQW5o5Mt9isk4zME6xWP4MjaGBE98JcZnFRGrR5oT4Y4jtm6AtNNBkqZVm4WmbLau50h97rJ835g2IUT/JPUP4fZolqhl3Ghy1KbvikFwT4qNWqsCgdksSYONTMZLrrVpqcYP/LylZp9moz1Z4rPbbbez1M9+S67M4Z6779z+VslVZ6GwSTpc1A5EEaBsgQQeg3vbwL1Yajb7Y4mj7TkvUpUtH6cRwrZ/EAwBak47ll9vAUkVF0ih2JerU4fNygb/3BIsjt/NG9x7lX/JH6j0WE4DZciwq81JUyaKPhLiS3bxpaTS4EnWPhFhkMXmXbCkNh3rR7C3NRp3oMdmPiUoaUZ4LnUQz53/g5yFPFNinoPXbZrRQO63x7/zqSC+XyNH6xp8aQl+CytRtz65XtRV+zq42HE1z5FIC6O8hfmuxvOscG5iIm20khYG6I0EHoN4n0qqdnB3p2AyJus089EV7E/+inXfbWD+hzrttgp+sZG9LknFj/fnyaNThfalYYLGkE9rfnEHu12LAvZZfWgbtRR16yWLXkzOX826b4MebUVYqTZckSlZnjqfqwF5nsXzRWo90eaSVHskaUS/4cUnxEm/NkJ1hsYOqUSNH1TGmkexX1vl4of3vexbX+ilHX+p3HcHr0Ofp+SE+W+Z+nTvsZsXNnLqwwmtB89KshYdTsdi3y2iajpKUeE3O78f55+Vmfr4+2bebWWk2xEQrJeCS9Rcnpq7TQQkMpPPFn1os3biojr/nbRZL8rXjuo5KIM0Y5NxbJV0vZ3cDgPZFgg5AvZRLzqXVM1GnL9EqwbGvDUy8JSOompE6y9MJu/stjhCnjFPrU/kBdWx/wKpbM0ElT7Tu0vUWR6ui+eh4MlhiLbmcvb5FEx+LkoXbn8lcTpJ4y1KXX+nwfUAdR5rJ1shR3Uq8Xm1xJPaSGj/3PIvlJrcbwmOvCHHaMH7H9n6c23uQxx1jcYRvETTSWqV/juQw1xaUOE4SdknSTh3KGhz1Ms1TiLGpz8Lu1OUJ/nmYDEKZZKUBb5P9Z8fknL+n12BMBsqNsfJrOgKoD31X1Qx6lWG7s8bPrVn1v7bWLSU4FEdYXHcxT5d/Vu3MbgYA7YsEHYB6GEpyLq1eibqpFtcs2K+F21IdSkrYKVm3wC8/aqzl1wqmhzjOYlJupGtVqfNdI1Sv9H0AtaUv/enOwil+/JiSc3v2eqeXS1GnjBJ4WrtgmV9+2rfL/HZFkuhr147waf4/2ug1iJQs/ZeVBnZou6rC4webqavBLYdY/rop5faHg6y6NfJUIk4DEYYyeEalPfcpsD0n+N+yJ4fJtvWSn1clCbtHrJTAW0vzlD2/7q7wudid+RxNbtucpgPantZJUqLuVhv5IFMNblTJ63Zf36rSOr6HeFsCANoYCToAtVZtci6tHok6lbT5mcWRae1CZeoWWClhp1BH0ivsfg2nUd9ah0kdzgdbfZI3StaqM1vJgF6a/DX68l4ukdad2ubdPpbmK8wKKyXvnvdIbkuua1bes355XQvtf5oFpjVZ9u/w91gJDiW0+lLHRSUwp6Zium939WNmNTQ7/jGLC9wrgaLZxUqy9Pj2Rb9d96/y20ayLplmQN8dYiv+fTvO4yH+7edYyZp3j/rt7XDONco/B/P+N5OY5uf0U1OPZb01AIPRmmkqffmLYR4vT7dYFaATjjcqS7+15Q+o0sy6w9idAKC9kaADUCs6qTw6xLk2vORc2mJ/Hp3Q12K2hZIkmnn04TZuf3VG/tNiR1KyntTKTKxORQ+7bM1ohsnhFpNyh1n5dQdrTR3Oyay6e9uoPSf6MSSbWMtLvqUTbhPYFduSEnRK1C23UgJvlUdyPFuV2q7xz40e3+p6n1WX6NvCPzeSdYu6c/Y5dVLrJHqmxdKW2xmzKdO0Nt5Yb6cxTfKa1vu+oH1FSbve1L6xxm/TPpSX+FNp4g/ytsJpv1gS4r858aTFQQZFG20DE2tJcq1S8m0qbyWAOtOAmm+FuMY/h7NUxlbry+7s2108ZndYO51qcZBX2o4WB4Z0sRsBQHsjQQdgOMb7SfTeHvv5CXU9TujPC3Gd1SZR95UQ5/D2vUadk6srRE/qcp8/fq1fXmWljk3dv9FKMxaGQx3iSsxohsJM/1I2x2IHuGZfJGWR9MVOHalPWRzBrk5gjWZfZMWWzlOHs2bIqXzl0f7aG+kBi4m666xyuboi2yebQOu2gcmNcvczMh/19mLO8WKUNe+agABai86PllpM1inSM4aTwQY9qXOqdX5+o3MpDQpI1lMbZ69PrOlzUoNYssm3bpodQBNTqfPL/DtkOhm3NU3zKpUGnZe57ZIQn6RpAKD9kaADkGesdwbMysQOfkI9q+DXU8tE3cdCXG4kAepNnU4v+eVkFkLS4ZSl5NZIRwaqY0tJKi1MrhKr8622iSp1km1jMXF4nMe0Jm336y2WwLy7Bs+XrM2WJNHSM9uys9vSyTcSHQAAAAAwOK3XN9fiAFTz71JP8Z0KADqDEnT9mQ+F4XZoJiWFqlVt2aH0a11V4Gut9nVuHEZbJrNQhmqdldb3GIpkXY5qVFsGb73lly4YjqRTvxaqbdtavq8joTVtxg/yGJV1S5ePGp1zIqfn2NwfO8m341PXk7UltN3KmrdUXK0SdceG+LEVV4oQxdNaBxqJ+CuLaxrmlZvSvq9Rm0q0bZPaTvfYOrUd14JtoISlSqVc65+ZyQj7ama2sTYbAAAAANTXWSEu8MtnWFyDDwDQAbIJOgBoBU+H+IfFdbfuCXGfVZ+wPzDEjRaTNGhvSvTfZnGWXjoZR/IJAAAAANBoD1ss+9nll3eiSQCgM5CgA9AutA6ZEnZK1t0VYqENPmN09xC3hJhB8wEAAAAAgAbZ12JFk5tpCgDoHCToALQrlSPVyDMl65S0U/JOSbtsWdiZIW61OFoNAAAAAACgaCpruWOIQ2kKAOgcJOgAdBKtW/dgiLutlLTTda3Zp3KXB9BEAAAAAACgYKst9k100RQA0Dn+L8AAW08riFU/mKwAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADiGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmYyNTY4OTk1LWQyMTYtMjM0Yy1iYWE4LTliNmUwYjg3ODM1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMkFGMzI3OEVDNjUxMUVBQkZCMUFCQzUwMjQ1OTA3MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMkFGMzI3N0VDNjUxMUVBQkZCMUFCQzUwMjQ1OTA3MyIgeG1wOkNyZWF0b3JUb29sPSJXaW5kb3dzIFBob3RvIEVkaXRvciAxMC4wLjEwMDExLjE2Mzg0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Y2Y0MGI2NWQtYTk1MC0xNTRhLWJkYTAtMjlmMzVjNGJmZWU2IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MTYyYzA2NTAtNDgzYi1lYTRhLWE1YWYtMTI4OTAwY2NhZjU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRh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\"","const routes = {\r\n home: {\r\n route: \"/\",\r\n anchors: {\r\n root: \"home\",\r\n gameInfo: \"gameinfo\",\r\n nextGen: \"nextgen\",\r\n buy: \"buy\",\r\n media: \"media\",\r\n },\r\n },\r\n news: {\r\n route: \"/news\",\r\n },\r\n credits: { route: \"/credits\" },\r\n};\r\n\r\nexport default routes;\r\n","import React, { ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n flex: \"1 1 auto\",\r\n flexDirection: \"column\",\r\n minHeight: \"100vh\",\r\n overflowY: \"hidden\",\r\n },\r\n content: {\r\n flex: \"1 1 auto\",\r\n display: \"flex\",\r\n backgroundColor: theme.palette.background.paper,\r\n color: theme.palette.common.black,\r\n },\r\n })\r\n);\r\n\r\ninterface IStickyFooterProps extends React.HTMLAttributes {\r\n footer: ReactNode;\r\n}\r\n\r\nexport default function StickyFooter(props: IStickyFooterProps) {\r\n const classes = useStyles();\r\n const { children, footer, className, ...rest } = props;\r\n\r\n return (\r\n
\r\n
{children}
\r\n {footer}\r\n
\r\n );\r\n}\r\n","import { createMuiTheme, Theme } from \"@material-ui/core/styles\";\r\nimport { Breakpoint } from \"@material-ui/core/styles/createBreakpoints\";\r\n\r\nconst white = \"#F9F9F9\";\r\nconst black = \"#000\";\r\nexport const featureTileYellow = \"#F9C71A\";\r\nexport const zigzagBackgroundBlack = \"#1a1b1f\";\r\n\r\nexport const footerItemHoverOpacity = 0.8;\r\nexport const newsItemHoverOpacity = 0.8;\r\nexport const mediaItemHoverOpacity = 0.8;\r\nexport const buttonHoverOpacity = 0.8;\r\n\r\nexport const darkTextBoxBackgroundColour = \"#1C1C1C\";\r\n\r\nexport const socialMediaColours = {\r\n twitter: \"#1da1f2\",\r\n facebook: \"#3d5a99\",\r\n youtube: \"#f00\",\r\n instagram: \"#ea0d78\",\r\n discord: \"#7289DA\",\r\n};\r\n\r\n// TODO: look at transitions\r\nexport const transition = {\r\n delay: \"0s\",\r\n duration: \"0.15s\",\r\n property: \"all\",\r\n timingFunction: \"ease-in-out\",\r\n};\r\n\r\nexport const tileHoverEffect = {\r\n duration: 300,\r\n};\r\n\r\nexport const cssImportant = \" !important\";\r\nexport const transparentColour = \"transparent\";\r\n\r\nexport const skeletonAnimation = \"wave\";\r\n\r\nexport const fonts = {\r\n primary: \"permanent-marker, sans-serif\",\r\n secondary: \"montserrat, sans-serif\",\r\n};\r\n\r\nconst theme: Theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: \"#FF1CD7\",\r\n },\r\n secondary: {\r\n main: \"#F9C71A\",\r\n },\r\n background: {\r\n default: \"#202020\",\r\n paper: \"#E0E0E0\",\r\n },\r\n common: {\r\n white: white,\r\n black: black,\r\n },\r\n },\r\n typography: {\r\n fontFamily: fonts.primary,\r\n body1: {\r\n fontFamily: fonts.secondary,\r\n fontWeight: 700,\r\n fontSize: \"0.875rem\",\r\n },\r\n body2: {\r\n fontFamily: fonts.primary,\r\n },\r\n button: {\r\n fontFamily: fonts.secondary,\r\n fontWeight: 900,\r\n },\r\n },\r\n});\r\n\r\nexport const navBarColour = theme.palette.common.black;\r\n\r\nexport const layoutConsts = {\r\n siteContentMaxWidth: 1200,\r\n defaultSkewDegrees: -0.5,\r\n defaultTiltDegrees: -1,\r\n};\r\n\r\nexport const skeletonColour = theme.palette.grey[200];\r\n\r\ntype BreakpointPadding = {\r\n [key in Breakpoint]: number;\r\n};\r\n\r\nexport const gutterPadding: BreakpointPadding = {\r\n xl: theme.spacing(6),\r\n lg: theme.spacing(6),\r\n md: theme.spacing(6),\r\n sm: theme.spacing(4),\r\n xs: theme.spacing(1),\r\n};\r\n\r\nexport const horizontalPadding: BreakpointPadding = {\r\n xl: theme.spacing(4),\r\n lg: theme.spacing(4),\r\n md: theme.spacing(4),\r\n sm: theme.spacing(3),\r\n xs: theme.spacing(2),\r\n};\r\n\r\nexport const articleContentLayout = {\r\n maxWidth: 1000,\r\n gutterPadding: theme.spacing(10),\r\n topBottomPadding: theme.spacing(6),\r\n};\r\n\r\nexport default theme;\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { layoutConsts } from \"theme\";\r\nimport clsx from \"clsx\";\r\n\r\ntype SkewAxis = \"x\" | \"y\" | \"both\";\r\n\r\ninterface IUseStyleProps {\r\n axis: SkewAxis;\r\n skewAmount: number;\r\n skewChildren: boolean;\r\n}\r\n\r\nfunction getSkew(skewAmount: number, axis: SkewAxis) {\r\n if (axis === \"y\") return `skewY(${skewAmount}deg)`;\r\n if (axis === \"x\") return `skewX(${skewAmount}deg)`;\r\n\r\n return `skew(${skewAmount}deg)`;\r\n}\r\n\r\nconst useStyles = (props: IUseStyleProps) =>\r\n makeStyles((theme: Theme) => {\r\n const { axis, skewAmount, skewChildren } = props;\r\n\r\n return createStyles({\r\n root: {\r\n transform: getSkew(skewAmount, axis),\r\n },\r\n childContainer: {\r\n transform: skewChildren ? undefined : getSkew(-skewAmount, axis),\r\n },\r\n });\r\n });\r\n\r\ntype IClasses = Partial>>;\r\n\r\ninterface IProps extends React.HTMLAttributes {\r\n axis?: SkewAxis;\r\n skewAmount?: number;\r\n classes?: IClasses;\r\n skewChildren?: boolean;\r\n}\r\n\r\nexport default function SkewedSection(props: IProps) {\r\n const {\r\n skewAmount = layoutConsts.defaultSkewDegrees,\r\n skewChildren = false,\r\n classes: overrideClasses,\r\n children,\r\n className,\r\n axis = \"both\",\r\n ...rest\r\n } = props;\r\n const classes = useStyles({ axis, skewAmount, skewChildren })();\r\n\r\n return (\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { layoutConsts, horizontalPadding, gutterPadding } from \"theme\";\r\nimport clsx from \"clsx\";\r\nimport SkewedSection from \"components/SkewedSection\";\r\nimport primaryDivideImage from \"assets/images/pageSectionSeparators/divide_pink.png\";\r\nimport secondaryDivideImage from \"assets/images/pageSectionSeparators/divide_yellow.png\";\r\nimport blackDivideImage from \"assets/images/pageSectionSeparators/divide_black.png\";\r\n\r\nconst useStyles = (maxWidth: number | \"unset\") =>\r\n makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n flex: \"1 1 auto\",\r\n display: \"flex\",\r\n },\r\n skewedSectionRoot: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n flex: \"1 1 auto\",\r\n },\r\n childContainer: {\r\n flex: \"1 1 auto\",\r\n display: \"flex\",\r\n maxWidth: maxWidth,\r\n },\r\n padding: {\r\n padding: `${horizontalPadding.md}px ${gutterPadding.md}px`,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: `${horizontalPadding.sm}px ${gutterPadding.sm}px`,\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n padding: `${horizontalPadding.xs}px ${gutterPadding.xs}px`,\r\n },\r\n },\r\n topTear: {\r\n zIndex: 1000,\r\n position: \"absolute\",\r\n width: \"100%\",\r\n top: -13,\r\n \"& img\": {\r\n height: theme.spacing(3),\r\n width: \"100%\",\r\n },\r\n },\r\n });\r\n });\r\n\r\ntype IClasses = Partial>>;\r\n\r\ntype TopSeparatorVariant = \"black\" | \"primary\" | \"secondary\";\r\n\r\ninterface IProps extends React.HTMLAttributes {\r\n skewed?: boolean;\r\n classes?: IClasses;\r\n topSeparatorVariant?: \"none\" | TopSeparatorVariant;\r\n maxWidth?: number | \"unset\";\r\n disablePadding?: boolean;\r\n}\r\n\r\nexport default function PageSection(props: IProps) {\r\n const {\r\n skewed = false,\r\n topSeparatorVariant = \"none\",\r\n maxWidth = layoutConsts.siteContentMaxWidth,\r\n children,\r\n classes: overrideClasses,\r\n className,\r\n disablePadding = false,\r\n ...rest\r\n } = props;\r\n\r\n const classes = useStyles(maxWidth)();\r\n\r\n const getStripImageSrc = (variant: TopSeparatorVariant): string => {\r\n if (variant === \"primary\") return primaryDivideImage;\r\n if (variant === \"secondary\") return secondaryDivideImage;\r\n if (variant === \"black\") return blackDivideImage;\r\n\r\n return blackDivideImage;\r\n };\r\n\r\n const stripImageSrc =\r\n topSeparatorVariant === \"none\" ? undefined : getStripImageSrc(topSeparatorVariant);\r\n const stripImageAlt = `Page section ${topSeparatorVariant} Strip`;\r\n\r\n return (\r\n
\r\n {typeof stripImageSrc === \"undefined\" ? null : (\r\n \r\n {stripImageAlt}\r\n \r\n )}\r\n \r\n {children}\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Link, { LinkProps } from \"@material-ui/core/Link\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n color: theme.palette.secondary.main,\r\n \"&:hover\": {\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n });\r\n});\r\n\r\nexport interface ILinkWrapperProps extends LinkProps {}\r\n\r\nexport default function LinkWrapper(props: ILinkWrapperProps) {\r\n const { children, className, ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport LinkWrapper, { ILinkWrapperProps } from \"./LinkWrapper\";\r\n\r\ninterface IProps extends ILinkWrapperProps {}\r\n\r\nexport default function NewTabLink(props: IProps) {\r\n const { children, href, ...rest } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { Link, LinkProps } from \"react-router-dom\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n underlineNone: {\r\n textDecoration: \"none\",\r\n },\r\n underlineHover: {\r\n textDecoration: \"none\",\r\n \"&:hover\": {\r\n textDecoration: \"underline\",\r\n },\r\n },\r\n underlineAlways: {\r\n textDecoration: \"underline\",\r\n },\r\n })\r\n);\r\ninterface IProps extends LinkProps {\r\n underline?: \"none\" | \"hover\" | \"always\";\r\n}\r\n\r\nexport default function RouterLink(props: IProps) {\r\n const classes = useStyles();\r\n const { children, underline = \"none\", className, ...rest } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport isExternalLink from \"utils/isExternalLink\";\r\nimport NewTabLink from \"components/links/NewTabLink\";\r\nimport RouterLink from \"components/links/RouterLink\";\r\n\r\ninterface IProps extends HTMLAttributes {\r\n to?: string;\r\n}\r\n\r\nexport default function LinkableItem(props: IProps) {\r\n const { children, to, ...rest } = props;\r\n\r\n if (typeof to === \"undefined\") return
{children}
;\r\n\r\n const underline = \"hover\";\r\n\r\n if (isExternalLink(to))\r\n return (\r\n
\r\n \r\n {children}\r\n \r\n
\r\n );\r\n\r\n return (\r\n
\r\n \r\n {children}\r\n \r\n
\r\n );\r\n}\r\n","export default function isExternalLink(link: string) {\r\n return link.startsWith(\"http://\") || link.startsWith(\"https://\");\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { useTheme } from \"@material-ui/core/styles\";\r\n\r\ninterface IProps extends HTMLAttributes {\r\n size?: number;\r\n}\r\n\r\nexport default function Spacer(props: IProps) {\r\n const theme = useTheme();\r\n const { size = 1, style, ...rest } = props;\r\n\r\n const dimension = theme.spacing(size);\r\n\r\n return (\r\n \r\n );\r\n}\r\n","const links = {\r\n socialMedia: {\r\n twitter: \"https://twitter.com/dirtgame\",\r\n facebook: \"https://www.facebook.com/dirtgame\",\r\n youtube: \"https://www.youtube.com/dirtgame\",\r\n instagram: \"https://www.instagram.com/dirtgame\",\r\n discord: \"https://discord.gg/BYGnqQB\",\r\n },\r\n legal: {\r\n termsAndConditions: \"https://www.ea.com/terms-of-service.\",\r\n privacyPolicy: \"https://www.ea.com/en-gb/legal/privacy-policy\",\r\n cookiePolicy: \"https://www.ea.com/en-gb/legal/privacy-policy\",\r\n contactUs: \"https://www.codemasters.com/contact-us/\",\r\n },\r\n licensing: {\r\n playstation: \"http://playstation.com/\",\r\n xbox: \"https://www.xbox.com/\",\r\n steam: \"https://store.steampowered.com/\",\r\n stadia: \"https://stadia.google.com/\",\r\n pegi: \"https://pegi.info/\",\r\n amd: \"https://www.amd.com/\",\r\n nvidia: \"http://www.nvidia.com/\",\r\n vw: \"https://www.vw.com/\",\r\n },\r\n codemasters: \"https://www.codemasters.com/\",\r\n rikAstley: \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\",\r\n};\r\n\r\nexport default links;\r\n","import React, { createContext, useEffect, useState } from \"react\";\r\nimport ICookiePreferences from \"./ICookiePreferences\";\r\nimport {\r\n getCookiePreferences,\r\n setCookiePreferences,\r\n removeCookiePreferences,\r\n} from \"./CookiePreferenceStorageService\";\r\n\r\ninterface IProps {\r\n children: React.ReactNode;\r\n onPreferencesUpdate: (preferences: ICookiePreferences) => void;\r\n}\r\n\r\nexport interface ICookieContext {\r\n cookieBannerIsOpen: boolean;\r\n\r\n preferencesDialogIsOpen: boolean;\r\n openPreferencesDialog: () => void;\r\n closePreferencesDialog: () => void;\r\n\r\n preferences?: ICookiePreferences;\r\n savePreferences: (preferences: ICookiePreferences) => void;\r\n}\r\n\r\nconst defaultCookieContext: ICookieContext = {\r\n cookieBannerIsOpen: false,\r\n\r\n preferencesDialogIsOpen: false,\r\n openPreferencesDialog: () => {},\r\n closePreferencesDialog: () => {},\r\n\r\n preferences: undefined,\r\n savePreferences: () => {},\r\n};\r\n\r\nexport const CookieContext = createContext(defaultCookieContext);\r\n\r\nexport const CookieContextProvider = (props: IProps) => {\r\n const { onPreferencesUpdate, children } = props;\r\n\r\n const localStoragePreferences = getCookiePreferences();\r\n\r\n const [cookieBannerIsOpen, setCookieBannerIsOpen] = useState(\r\n typeof localStoragePreferences === \"undefined\"\r\n );\r\n\r\n const [preferencesDialogIsOpen, setPreferencesDialogIsOpen] = useState(\r\n defaultCookieContext.preferencesDialogIsOpen\r\n );\r\n\r\n const [preferences, setPreferences] = useState(\r\n localStoragePreferences\r\n );\r\n\r\n useEffect(() => {\r\n if (typeof preferences === \"undefined\") return;\r\n\r\n onPreferencesUpdate(preferences);\r\n }, []);\r\n\r\n const savePreferences = (_preferences: ICookiePreferences) => {\r\n setPreferences(_preferences);\r\n onPreferencesUpdate(_preferences);\r\n\r\n if (_preferences.prefenceCookies.isEnabled) {\r\n setCookiePreferences(_preferences);\r\n } else {\r\n removeCookiePreferences();\r\n }\r\n\r\n setPreferencesDialogIsOpen(false);\r\n setCookieBannerIsOpen(false);\r\n };\r\n\r\n const openPreferencesDialog = () => {\r\n closeCookieBanner();\r\n setPreferencesDialogIsOpen(true);\r\n };\r\n\r\n const closePreferencesDialog = () => {\r\n setPreferencesDialogIsOpen(false);\r\n\r\n if (typeof preferences === \"undefined\") openCookieBanner();\r\n };\r\n\r\n const openCookieBanner = () => {\r\n setCookieBannerIsOpen(true);\r\n };\r\n\r\n const closeCookieBanner = () => {\r\n setCookieBannerIsOpen(false);\r\n };\r\n\r\n const cookieStore: ICookieContext = {\r\n cookieBannerIsOpen: cookieBannerIsOpen,\r\n\r\n preferencesDialogIsOpen: preferencesDialogIsOpen,\r\n openPreferencesDialog: openPreferencesDialog,\r\n closePreferencesDialog: closePreferencesDialog,\r\n\r\n preferences: preferences,\r\n savePreferences: (preferences: ICookiePreferences) => savePreferences(preferences),\r\n };\r\n\r\n return {children} ;\r\n};\r\n","import React, { useContext } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport LinkableItem from \"components/links/LinkableItem\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\nimport Spacer from \"components/Spacer\";\r\nimport links from \"links\";\r\nimport { ICookieContext, CookieContext } from \"components/cookieConsent/CookieContext\";\r\nimport routes from \"routes\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n [theme.breakpoints.down(\"xs\")]: { flexDirection: \"column\", alignItems: \"center\" },\r\n },\r\n link: {\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n textDecoration: \"underline\",\r\n },\r\n },\r\n })\r\n);\r\n\r\ninterface ILegalLink {\r\n link: string;\r\n label: string;\r\n}\r\n\r\nexport default function LegalLinks() {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const smallScreen = useMediaQuery(theme.breakpoints.down(\"xs\"));\r\n\r\n const cookieContext = useContext(CookieContext);\r\n\r\n const legalLinks: ILegalLink[] = [\r\n {\r\n link: links.legal.termsAndConditions,\r\n label: \"Terms & Conditions\",\r\n },\r\n {\r\n link: links.legal.privacyPolicy,\r\n label: \"Privacy Policy\",\r\n },\r\n {\r\n link: links.legal.contactUs,\r\n label: \"Contact Us\",\r\n },\r\n {\r\n label: \"Credits\",\r\n link: routes.credits.route,\r\n },\r\n ];\r\n\r\n return (\r\n
\r\n {legalLinks.map((legalLink: ILegalLink, i) => {\r\n const { link, label } = legalLink;\r\n\r\n const showBar = i !== legalLinks.length;\r\n\r\n return (\r\n
\r\n \r\n \r\n {label}\r\n \r\n \r\n {showBar ? (\r\n smallScreen ? (\r\n \r\n ) : (\r\n |\r\n )\r\n ) : null}\r\n
\r\n );\r\n })}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport codemastersLogo from \"assets/images/logos/logo_codemasters.png\";\r\nimport LegalLinks from \"./LegalLinks\";\r\nimport NewTabLink from \"components/links/NewTabLink\";\r\nimport links from \"links\";\r\nimport Spacer from \"components/Spacer\";\r\nimport { footerItemHoverOpacity } from \"theme\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n flex: \"1 1 auto\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n logoContainer: {\r\n \"&:hover\": {\r\n opacity: footerItemHoverOpacity,\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default function CodemastersSection() {\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n \"Codemasters\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Spacer from \"components/Spacer\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: { display: \"flex\", flexDirection: \"column\", textAlign: \"center\" },\r\n })\r\n);\r\n\r\nexport default function CopyrightText() {\r\n const classes = useStyles();\r\n\r\n const typographyVariant = \"body2\";\r\n\r\n return (\r\n
\r\n \r\n © 2020 The Codemasters Software Company Limited (\"Codemasters\"). All rights\r\n reserved. \"Codemasters\"®, the Codemasters logo and “DiRT”® are registered trademarks\r\n owned by Codemasters. “DIRT 5”™ and “RaceNet”™ are trademarks of Codemasters. All\r\n rights reserved. All other copyrights or trademarks are the property of their\r\n respective owners and are being used under license. Developed by Codemasters.\r\n \r\n\r\n \r\n\r\n \r\n Developed and published by Codemasters. Disc version distributed 2020 by Koch Media\r\n GMBH, Gewerbegebiet 1, 6604 Höfen, Austria.\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport NewTabLink from \"components/links/NewTabLink\";\r\nimport ILogoLink from \"./ILogoLink\";\r\nimport clsx from \"clsx\";\r\nimport { footerItemHoverOpacity } from \"theme\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n \"&:hover\": {\r\n opacity: footerItemHoverOpacity,\r\n },\r\n },\r\n })\r\n);\r\n\r\ninterface IProps {\r\n logoLink: ILogoLink;\r\n key?: any;\r\n className?: string;\r\n}\r\n\r\nexport default function LogoLink(props: IProps) {\r\n const classes = useStyles();\r\n const { logoLink, className, key } = props;\r\n\r\n return (\r\n \r\n {logoLink.logo}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport SvgIcon, { SvgIconProps } from \"@material-ui/core/SvgIcon\";\r\n\r\nexport default function VwLogo(props: SvgIconProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport links from \"links\";\r\nimport LogoLink from \"./LogoLink\";\r\nimport clsx from \"clsx\";\r\nimport stadiaLogo from \"assets/images/logos/licensing/logo_stadia.png\";\r\nimport steamLogo from \"assets/images/logos/licensing/logo_steam.png\";\r\nimport xboxOneLogo from \"assets/images/logos/licensing/logo_xboxone.png\";\r\nimport xboxSeriesXSLogo from \"assets/images/logos/licensing/logo_xboxseriesxs.png\";\r\nimport playstationLogo from \"assets/images/logos/licensing/logo_playstation.png\";\r\nimport amdLogo from \"assets/images/logos/licensing/logo_amd.png\";\r\nimport nvidiaLogo from \"assets/images/logos/licensing/logo_nvidia.png\";\r\nimport VwLogo from \"assets/svgs/logos/VwLogo\";\r\nimport Spacer from \"components/Spacer\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n platformLogoContainer: {\r\n flex: \"1 1 auto\",\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n },\r\n platformLicenseLogoContainer: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"center\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n marginBottom: \"20px\",\r\n },\r\n },\r\n amdLogo: {\r\n maxWidth: \"125px !important\",\r\n },\r\n nvidiaLogo: {\r\n maxWidth: \"125px !important\",\r\n },\r\n vwLogo: {\r\n width: \"initial !important\",\r\n },\r\n item: {\r\n maxWidth: 200,\r\n flex: \"1 1 auto\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n \"& img\": {\r\n width: \"100%\",\r\n height: \"unset\",\r\n },\r\n },\r\n vwItem: {\r\n maxWidth: 200,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n \"& img\": {\r\n width: \"100%\",\r\n height: \"unset\",\r\n },\r\n },\r\n platformItem: {\r\n margin: \"0px 3%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n margin: 0,\r\n },\r\n },\r\n firstItem: { marginLeft: 0 },\r\n lastItem: { marginRight: 0 },\r\n })\r\n);\r\n\r\ninterface ILogoLink {\r\n logo: ReactNode;\r\n link: string;\r\n className?: string;\r\n}\r\n\r\nexport default function GamePlatformLogos() {\r\n const classes = useStyles();\r\n\r\n const logoLinks: ILogoLink[] = [\r\n {\r\n logo: \"Xbox,\r\n link: links.licensing.xbox,\r\n },\r\n {\r\n logo: \"Xbox,\r\n link: links.licensing.xbox,\r\n },\r\n {\r\n logo: \"Playstation,\r\n link: links.licensing.playstation,\r\n },\r\n {\r\n logo: \"Steam,\r\n link: links.licensing.steam,\r\n },\r\n {\r\n logo: \"Stadia,\r\n link: links.licensing.stadia,\r\n },\r\n ];\r\n\r\n return (\r\n
\r\n
\r\n ,\r\n link: links.licensing.amd,\r\n }}\r\n className={clsx(classes.item, classes.platformItem, classes.amdLogo)}\r\n />\r\n \r\n ,\r\n link: links.licensing.nvidia,\r\n }}\r\n className={clsx(classes.item, classes.platformItem, classes.nvidiaLogo)}\r\n />\r\n \r\n ,\r\n link: links.licensing.vw,\r\n }}\r\n className={clsx(classes.vwItem, classes.platformItem, classes.vwLogo)}\r\n />\r\n
\r\n\r\n \r\n\r\n
\r\n {logoLinks.map((logoLink: ILogoLink, i) => {\r\n const firstItem = i === 0;\r\n const lastItem = i === logoLinks.length - 1;\r\n\r\n return (\r\n \r\n \r\n
\r\n );\r\n })}\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport pegiLogo from \"assets/images/logos/licensing/logo_pegi.png\";\r\nimport links from \"links\";\r\nimport ILogoLink from \"./ILogoLink\";\r\nimport LogoLink from \"./LogoLink\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: { maxWidth: 65, \"& img\": { width: \"100%\" } },\r\n rating: {\r\n flex: \"unset\",\r\n },\r\n })\r\n);\r\n\r\nexport default function RatingLogo() {\r\n const classes = useStyles();\r\n\r\n const logoLink: ILogoLink = {\r\n logo: \"Pegi,\r\n link: links.licensing.pegi,\r\n className: classes.rating,\r\n };\r\n\r\n return ;\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport CopyrightText from \"./CopyrightText\";\r\nimport Spacer from \"components/Spacer\";\r\nimport GamePlatformLogos from \"./logos/GamePlatformLogos\";\r\nimport RatingLogo from \"./logos/RatingLogo\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n flex: \"1 1 auto\",\r\n flexDirection: \"column\",\r\n },\r\n ratingLogoContainer: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n },\r\n })\r\n);\r\n\r\nexport default function LicensingSection() {\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport SvgIcon, { SvgIconProps } from \"@material-ui/core/SvgIcon\";\r\n\r\nexport default function TwitterIcon(props: SvgIconProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport SvgIcon, { SvgIconProps } from \"@material-ui/core/SvgIcon\";\r\n\r\nexport default function TwitterIcon(props: SvgIconProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport SvgIcon, { SvgIconProps } from \"@material-ui/core/SvgIcon\";\r\n\r\nexport default function InstagramIcon(props: SvgIconProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport SvgIcon, { SvgIconProps } from \"@material-ui/core/SvgIcon\";\r\n\r\nexport default function YouTubeIcon(props: SvgIconProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport SvgIcon, { SvgIconProps } from \"@material-ui/core/SvgIcon\";\r\n\r\nexport default function DiscordIcon(props: SvgIconProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport TwitterIcon from \"assets/svgs/icons/socialMedia/TwitterIcon\";\r\nimport FacebookIcon from \"assets/svgs/icons/socialMedia/FacebookIcon\";\r\nimport InstagramIcon from \"assets/svgs/icons/socialMedia/InstagramIcon\";\r\nimport YouTubeIcon from \"assets/svgs/icons/socialMedia/YouTubeIcon\";\r\nimport DiscordIcon from \"assets/svgs/icons/socialMedia/DiscordIcon\";\r\n\r\nimport NewTabLink from \"./links/NewTabLink\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { transition, socialMediaColours } from \"theme\";\r\nimport links from \"links\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const hoverBackgroundColour = theme.palette.common.white;\r\n\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n },\r\n icon: {\r\n color: theme.palette.common.white,\r\n transition: theme.transitions.create(\"all\", {\r\n duration: transition.duration,\r\n easing: theme.transitions.easing.easeInOut,\r\n }),\r\n },\r\n twitter: {\r\n \"&:hover\": {\r\n color: socialMediaColours.twitter,\r\n backgroundColor: hoverBackgroundColour,\r\n },\r\n },\r\n facebook: {\r\n \"&:hover\": {\r\n color: socialMediaColours.facebook,\r\n backgroundColor: hoverBackgroundColour,\r\n },\r\n },\r\n youtube: {\r\n \"&:hover\": {\r\n color: socialMediaColours.youtube,\r\n backgroundColor: hoverBackgroundColour,\r\n },\r\n },\r\n instagram: {\r\n \"&:hover\": {\r\n color: socialMediaColours.instagram,\r\n backgroundColor: hoverBackgroundColour,\r\n },\r\n },\r\n discord: {\r\n \"&:hover\": {\r\n color: socialMediaColours.discord,\r\n backgroundColor: hoverBackgroundColour,\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IIconLink {\r\n icon: ReactNode;\r\n link: string;\r\n className?: string;\r\n}\r\n\r\nexport default function SocialMediaIcons() {\r\n const classes = useStyles();\r\n\r\n const iconLinks: IIconLink[] = [\r\n {\r\n icon: ,\r\n link: links.socialMedia.twitter,\r\n className: classes.twitter,\r\n },\r\n {\r\n icon: ,\r\n link: links.socialMedia.facebook,\r\n className: classes.facebook,\r\n },\r\n {\r\n icon: ,\r\n link: links.socialMedia.youtube,\r\n className: classes.youtube,\r\n },\r\n {\r\n icon: ,\r\n link: links.socialMedia.instagram,\r\n className: classes.instagram,\r\n },\r\n {\r\n icon: ,\r\n link: links.socialMedia.discord,\r\n className: classes.discord,\r\n },\r\n ];\r\n\r\n return (\r\n
\r\n {iconLinks.map((iconLink: IIconLink, i) => {\r\n const { link, icon, className = \"\" } = iconLink;\r\n return (\r\n \r\n \r\n {icon}\r\n \r\n \r\n );\r\n })}\r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport CodemastersSection from \"./codemasters/CodemastersSection\";\r\nimport LicensingSection from \"./licensing/LicensingSection\";\r\nimport Spacer from \"components/Spacer\";\r\nimport SocialMediaIcons from \"components/SocialMediaIcons\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n flex: 0,\r\n marginTop: -10,\r\n },\r\n background: {\r\n backgroundColor: theme.palette.background.default,\r\n color: theme.palette.common.white,\r\n },\r\n contentContainer: {\r\n flex: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n paddingTop: theme.spacing(1),\r\n },\r\n });\r\n});\r\n\r\ntype IClasses = Partial>;\r\n\r\nexport interface IFooterProps extends HTMLAttributes {\r\n classes?: IClasses;\r\n}\r\n\r\nexport default function Footer(props: IFooterProps) {\r\n const { className, classes: overideClasses, ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n}\r\n","export default function getAnchorRoute(route: string, anchor: string) {\r\n return `${route}#${anchor}`;\r\n}\r\n","import React from \"react\";\r\nimport { HashLink, HashLinkProps } from \"react-router-hash-link\";\r\n\r\ninterface IProps extends HashLinkProps {}\r\n\r\nexport default function RouterAnchorLink(props: IProps) {\r\n const { children, smooth = true, ...rest } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport dirt5Logo from \"assets/images/logos/logo_dirt5.png\";\r\nimport routes from \"routes\";\r\nimport getAnchorRoute from \"utils/getAnchorRoute\";\r\nimport RouterAnchorLink from \"components/links/RouterAnchorLink\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: { \"&:hover\": { \"& img\": { opacity: 0.9 } } },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n size?: number;\r\n}\r\n\r\nexport default function HomeLogo(props: IProps) {\r\n const { size, ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { NavHashLink, NavHashLinkProps } from \"react-router-hash-link\";\r\n\r\ninterface IProps extends NavHashLinkProps {}\r\n\r\nexport default function RouterAnchorNavLink(props: IProps) {\r\n const { children, smooth = true, ...rest } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport RouterAnchorNavLink from \"components/links/RouterAnchorNavLink\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { fonts } from \"theme\";\r\nimport INavigationItem from \"./models/INavigationItem\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const spritePositioning = {\r\n default: 0,\r\n hover: -33,\r\n active: -66,\r\n };\r\n\r\n return createStyles({\r\n root: {\r\n color: theme.palette.common.white,\r\n \"&:hover:not($activeNavLink) $sprite\": {\r\n top: spritePositioning.hover,\r\n },\r\n },\r\n activeNavLink: {\r\n \"& $sprite\": {\r\n top: spritePositioning.active,\r\n },\r\n },\r\n label: {\r\n fontFamily: fonts.secondary,\r\n fontWeight: 900,\r\n textTransform: \"uppercase\",\r\n padding: \"0px 4px\",\r\n visibility: \"hidden\",\r\n },\r\n sprite: {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n top: spritePositioning.default,\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n item: INavigationItem;\r\n}\r\n\r\nexport default function NavigationItem(props: IProps) {\r\n const classes = useStyles();\r\n const { item, ...rest } = props;\r\n const { spriteSrc, label, href, matchExactPath = false } = item;\r\n\r\n const clickable = typeof href !== \"undefined\" && href.length > 0;\r\n\r\n const navItemContent = (\r\n \r\n
\r\n {label}\r\n \r\n {label}\r\n \r\n
\r\n
\r\n );\r\n\r\n return (\r\n <>\r\n {typeof href !== \"undefined\" && clickable ? (\r\n \r\n {navItemContent}\r\n \r\n ) : (\r\n \r\n {navItemContent}\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { layoutConsts } from \"theme\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = (amount: number) =>\r\n makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n transform: `rotate(${amount}deg)`,\r\n },\r\n });\r\n });\r\n\r\ntype IClasses = Partial>>;\r\n\r\nexport interface IRotateProps extends React.HTMLAttributes {\r\n amount: number;\r\n classes?: IClasses;\r\n}\r\n\r\nexport default function Rotate(props: IRotateProps) {\r\n const {\r\n amount = layoutConsts.defaultTiltDegrees,\r\n classes: overrideClasses,\r\n children,\r\n className,\r\n ...rest\r\n } = props;\r\n const classes = useStyles(amount)();\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n","const publicAssetsDirectory = `${process.env.PUBLIC_URL}/assets`;\r\n\r\nconst buttonBackgroundsLocation = `${publicAssetsDirectory}/buttonBackgrounds`;\r\nconst errorCodeTitlesLocation = `${publicAssetsDirectory}/errorCodeTitles`;\r\nconst flagsLocation = `${publicAssetsDirectory}/flags`;\r\nconst scribblesLocation = `${publicAssetsDirectory}/scribbles`;\r\n\r\nconst assetLocations = {\r\n buttonBackgrounds: {\r\n primary: `${buttonBackgroundsLocation}/bg_button.png`,\r\n secondary: `${buttonBackgroundsLocation}/bg_button_secondary.png`,\r\n white: `${buttonBackgroundsLocation}/bg_button_white.png`,\r\n disabled: `${buttonBackgroundsLocation}/bg_button_inactive.png`,\r\n },\r\n errorCodeTitles: {\r\n 404: `${errorCodeTitlesLocation}/title_404.png`,\r\n },\r\n flags: {\r\n AU: `${flagsLocation}/australia.png`,\r\n AT: `${flagsLocation}/austria.png`,\r\n BE: `${flagsLocation}/belgium.png`,\r\n CA: `${flagsLocation}/canada.png`,\r\n DK: `${flagsLocation}/denmark.png`,\r\n FI: `${flagsLocation}/finland.png`,\r\n FR: `${flagsLocation}/france.png`,\r\n DE: `${flagsLocation}/germany.png`,\r\n IT: `${flagsLocation}/italy.png`,\r\n NL: `${flagsLocation}/netherlands.png`,\r\n NZ: `${flagsLocation}/newzealand.png`,\r\n NO: `${flagsLocation}/norway.png`,\r\n PL: `${flagsLocation}/poland.png`,\r\n ES: `${flagsLocation}/spain.png`,\r\n SE: `${flagsLocation}/sweden.png`,\r\n CH: `${flagsLocation}/switzerland.png`,\r\n GB: `${flagsLocation}/unitedKingdom.png`,\r\n US: `${flagsLocation}/unitedStates.png`,\r\n },\r\n scribbles: {\r\n v1: `${scribblesLocation}/scribble_v1.png`,\r\n v2: `${scribblesLocation}/scribble_v2.png`,\r\n v3: `${scribblesLocation}/scribble_v3.png`,\r\n },\r\n};\r\n\r\nexport default assetLocations;\r\n","import React, { ReactNode, CSSProperties } from \"react\";\r\nimport ButtonBase, { ButtonBaseProps } from \"@material-ui/core/ButtonBase\";\r\nimport { makeStyles, createStyles, Theme, fade } from \"@material-ui/core/styles\";\r\nimport { transition, fonts } from \"theme\";\r\nimport clsx from \"clsx\";\r\nimport assetLocations from \"assetLocations\";\r\n\r\nexport type StyledButtonVariant = \"primary\" | \"secondary\" | \"white\" | \"transparent\";\r\nexport type StyledButtonSize = \"small\" | \"medium\" | \"large\" | \"extralarge\";\r\n\r\nconst useStyles = (uppercase: boolean, backgroundImageSrc?: string) =>\r\n makeStyles((theme: Theme) => {\r\n const getButtonPadding = (height: number, width: number) => `${height}px ${width}px`;\r\n\r\n return createStyles({\r\n root: {\r\n transition: `all ${transition.duration} ease-in-out`,\r\n backgroundImage:\r\n typeof backgroundImageSrc === \"undefined\"\r\n ? \"unset\"\r\n : `url(${backgroundImageSrc})`,\r\n backgroundSize: \"100% 100%\",\r\n },\r\n primary: {\r\n color: theme.palette.common.black,\r\n \"& $text\": {\r\n border: `1px solid ${fade(theme.palette.common.white, 96)}`,\r\n textShadow: \"0px 0px 8px orangered\",\r\n },\r\n \"&:hover $text\": {\r\n backgroundColor: theme.palette.common.black,\r\n color: theme.palette.common.white,\r\n opacity: 0.9,\r\n },\r\n },\r\n secondary: {\r\n color: theme.palette.common.white,\r\n \"&:hover $text\": {\r\n color: theme.palette.secondary.main,\r\n },\r\n },\r\n white: {\r\n color: theme.palette.common.black,\r\n \"& $text\": {\r\n border: `1px solid ${fade(theme.palette.common.black, 96)}`,\r\n },\r\n \"&:hover $text\": {\r\n backgroundColor: theme.palette.common.black,\r\n color: theme.palette.common.white,\r\n textShadow: \"0px 0px 8px orangered\",\r\n opacity: 0.9,\r\n },\r\n },\r\n transparent: {\r\n color: theme.palette.secondary.main,\r\n border: `1px solid ${theme.palette.secondary.main}`,\r\n \"&:hover\": {\r\n color: theme.palette.common.black,\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n },\r\n small: {\r\n padding: getButtonPadding(5, 4),\r\n fontSize: \"100%\", // bug in firefox with weird positioning on hover if fontweight is a whole number\r\n \"& $text\": {\r\n padding: getButtonPadding(1, 8),\r\n },\r\n },\r\n medium: {\r\n padding: getButtonPadding(6, 6),\r\n fontSize: \"135%\",\r\n \"& $text\": {\r\n padding: getButtonPadding(3, 10),\r\n },\r\n },\r\n large: {\r\n padding: getButtonPadding(6, 8),\r\n fontSize: \"170%\",\r\n \"& $text\": {\r\n padding: getButtonPadding(4, 12),\r\n },\r\n },\r\n extralarge: {\r\n padding: getButtonPadding(10, 12),\r\n fontSize: \"250%\",\r\n \"& $text\": {\r\n padding: getButtonPadding(4, 12),\r\n },\r\n },\r\n text: {\r\n width: \"100%\",\r\n lineHeight: 1,\r\n textAlign: \"center\",\r\n textTransform: uppercase ? \"uppercase\" : \"none\",\r\n transition: `all ${transition.duration} ease-in-out`,\r\n fontFamily: fonts.secondary,\r\n fontWeight: 900,\r\n },\r\n disabled: {\r\n color: theme.palette.common.white,\r\n \"& $text\": {\r\n textShadow: \"none\",\r\n },\r\n },\r\n });\r\n });\r\n\r\nexport interface IStyledButtonProps extends ButtonBaseProps {\r\n children?: ReactNode;\r\n uppercase?: boolean;\r\n variant?: StyledButtonVariant;\r\n size?: StyledButtonSize;\r\n textStyle?: CSSProperties;\r\n}\r\n\r\nexport default function StyledButton(props: IStyledButtonProps) {\r\n const {\r\n children,\r\n className = \"\",\r\n uppercase = true,\r\n variant = \"primary\",\r\n disabled = false,\r\n size = \"medium\",\r\n textStyle = {},\r\n ...rest\r\n } = props;\r\n\r\n const backgroundImageSrc = disabled\r\n ? assetLocations.buttonBackgrounds.disabled\r\n : variant === \"transparent\"\r\n ? undefined\r\n : assetLocations.buttonBackgrounds[variant];\r\n\r\n const classes = useStyles(uppercase, backgroundImageSrc)();\r\n return (\r\n \r\n
\r\n {children}\r\n
\r\n \r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport StyledButton, { IStyledButtonProps } from \"./StyledButton\";\r\nimport RouterAnchorLink from \"components/links/RouterAnchorLink\";\r\nimport getAnchorRoute from \"utils/getAnchorRoute\";\r\n\r\ninterface IProps extends IStyledButtonProps {\r\n children?: ReactNode;\r\n route: string;\r\n anchor: string;\r\n}\r\n\r\nexport default function RouterAnchorLinkButton(props: IProps) {\r\n const { children, route, anchor, ...rest } = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport useScrollTrigger from \"@material-ui/core/useScrollTrigger\";\r\nimport Slide from \"@material-ui/core/Slide\";\r\nimport HomeLogo from \"components/HomeLogo\";\r\nimport List from \"@material-ui/core/List\";\r\nimport routes from \"routes\";\r\nimport NavigationItem from \"./NavigationItem\";\r\nimport INavigationItem from \"./models/INavigationItem\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport { navBarColour, cssImportant, transparentColour } from \"theme\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport Spacer from \"components/Spacer\";\r\nimport { useMediaQuery } from \"@material-ui/core\";\r\nimport background from \"assets/images/navigationBar/nav_bg.png\";\r\nimport RouterAnchorLinkButton from \"components/buttons/RouterAnchorLinkButton\";\r\n\r\nimport homeSprite from \"assets/images/navigationBar/navigationItemSprites/nav_home.png\";\r\nimport newsSprite from \"assets/images/navigationBar/navigationItemSprites/nav_news.png\";\r\nimport getAnchorRoute from \"utils/getAnchorRoute\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n flex: \"1 1 auto\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n menuButton: {\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\",\r\n flex: 1,\r\n color: theme.palette.common.white,\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n desktopNavItemsContainer: {\r\n display: \"flex\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n mobileNavItemsContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n homeLogoContainer: {\r\n position: \"absolute\",\r\n },\r\n drawer: {\r\n zIndex: ((theme.zIndex.appBar - 1 + cssImportant) as unknown) as number,\r\n },\r\n drawerPaper: {\r\n backgroundColor: navBarColour,\r\n borderBottom: `3px solid ${theme.palette.common.white}`,\r\n },\r\n });\r\n});\r\n\r\nexport default function NavigationBar() {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const mdScreen = useMediaQuery(theme.breakpoints.down(\"md\"));\r\n const smScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const xsScreen = useMediaQuery(theme.breakpoints.down(\"xs\"));\r\n const xxsScreen = useMediaQuery(\"@media (max-width:400px)\");\r\n\r\n const hideAppBarTrigger = useScrollTrigger();\r\n\r\n const navItems: INavigationItem[] = [\r\n {\r\n spriteSrc: homeSprite,\r\n label: \"Home\",\r\n href: getAnchorRoute(routes.home.route, routes.home.anchors.root),\r\n matchExactPath: true,\r\n },\r\n {\r\n spriteSrc: newsSprite,\r\n label: \"News\",\r\n href: routes.news.route,\r\n },\r\n ];\r\n\r\n const [mobileOpen, setMobileOpen] = React.useState(false);\r\n\r\n const handleDrawerToggle = () => {\r\n setMobileOpen(!mobileOpen);\r\n };\r\n\r\n const homeLogoWidth = xxsScreen ? 130 : xsScreen ? 165 : smScreen ? 200 : 225;\r\n\r\n const buyNowButton = (\r\n
\r\n \r\n setMobileOpen(false)}\r\n >\r\n Buy Now\r\n \r\n \r\n
\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n {navItems.map((item, i) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n {buyNowButton}\r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {navItems.map((item, i) => {\r\n return (\r\n \r\n setMobileOpen(false)}\r\n />\r\n \r\n );\r\n })}\r\n {buyNowButton}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport StickyFooter from \"./StickyFooter\";\r\nimport Footer, { IFooterProps } from \"components/footer/Footer\";\r\nimport NavigationBar from \"components/navigationBar/NavigationBar\";\r\nimport Toolbar, { ToolbarProps } from \"@material-ui/core/Toolbar\";\r\nimport { transparentColour } from \"theme\";\r\n\r\ninterface IProps extends React.HTMLAttributes {\r\n toolbarProps?: ToolbarProps;\r\n footerProps?: IFooterProps;\r\n}\r\n\r\nexport default function PageLayout(props: IProps) {\r\n const { children, toolbarProps = {}, footerProps = {}, ...rest } = props;\r\n\r\n const { style: toolbarStyles, ...toolbarRest } = toolbarProps;\r\n\r\n return (\r\n } {...rest}>\r\n \r\n \r\n \r\n\r\n \r\n {children}\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport StyledButton, { IStyledButtonProps } from \"./StyledButton\";\r\nimport RouterLink from \"components/links/RouterLink\";\r\n\r\ninterface IProps extends IStyledButtonProps {\r\n children?: ReactNode;\r\n to: string;\r\n}\r\n\r\nexport default function RouterLinkButton(props: IProps) {\r\n const { children, to, ...rest } = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React, { HtmlHTMLAttributes } from \"react\";\r\n\r\nexport type FadeAnimation =\r\n | \"fade\"\r\n | \"fade-up\"\r\n | \"fade-down\"\r\n | \"fade-left\"\r\n | \"fade-right\"\r\n | \"fade-up-right\"\r\n | \"fade-up-left\"\r\n | \"fade-down-right\"\r\n | \"fade-down-left\";\r\n\r\nexport type FlipAnimation = \"flip-up\" | \"flip-down\" | \"flip-left\" | \"flip-right\";\r\n\r\nexport type SlideAnimation = \"slide-up\" | \"slide-down\" | \"slide-left\" | \"slide-right\";\r\n\r\nexport type ZoomAnimation =\r\n | \"zoom-in\"\r\n | \"zoom-in-up\"\r\n | \"zoom-in-down\"\r\n | \"zoom-in-left\"\r\n | \"zoom-in-right\"\r\n | \"zoom-out\"\r\n | \"zoom-out-up\"\r\n | \"zoom-out-down\"\r\n | \"zoom-out-left\"\r\n | \"zoom-out-right\";\r\n\r\nexport type AosAnimation = FadeAnimation | FlipAnimation | SlideAnimation | ZoomAnimation;\r\n\r\nexport type AnchorPlacement =\r\n | \"top-bottom\"\r\n | \"top-center\"\r\n | \"top-top\"\r\n | \"center-bottom\"\r\n | \"center-center\"\r\n | \"center-top\"\r\n | \"bottom-bottom\"\r\n | \"bottom-center\"\r\n | \"bottom-top\";\r\n\r\nexport type EasingFunction =\r\n | \"linear\"\r\n | \"ease\"\r\n | \"ease-in\"\r\n | \"ease-out\"\r\n | \"ease-in-out\"\r\n | \"ease-in-back\"\r\n | \"ease-out-back\"\r\n | \"ease-in-out-back\"\r\n | \"ease-in-sine\"\r\n | \"ease-out-sine\"\r\n | \"ease-in-out-sine\"\r\n | \"ease-in-quad\"\r\n | \"ease-out-quad\"\r\n | \"ease-in-out-quad\"\r\n | \"ease-in-cubic\"\r\n | \"ease-out-cubic\"\r\n | \"ease-in-out-cubic\"\r\n | \"ease-in-quart\"\r\n | \"ease-out-quart\"\r\n | \"ease-in-out-quart\";\r\n\r\nexport interface IAosWrapperProps extends HtmlHTMLAttributes {\r\n animation: AosAnimation;\r\n offset?: number;\r\n delay?: number;\r\n duration?: number;\r\n easingFunction?: EasingFunction;\r\n mirror?: boolean;\r\n once?: boolean;\r\n anchorPlacement?: AnchorPlacement;\r\n}\r\n\r\nexport default function AosWrapper(props: IAosWrapperProps) {\r\n const {\r\n animation,\r\n offset = 120,\r\n delay = 0,\r\n duration = 400,\r\n easingFunction = \"ease\",\r\n mirror = false,\r\n once = false,\r\n anchorPlacement = \"top-bottom\",\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","export function getRandomElement(array: T[]): T {\r\n const randomIndex = Math.floor(Math.random() * array.length);\r\n\r\n return array[randomIndex];\r\n}\r\n","import React from \"react\";\r\nimport OmitType from \"customTypes/OmitType\";\r\nimport AosWrapper, { IAosWrapperProps, FlipAnimation } from \"./AosWrapper\";\r\nimport { getRandomElement } from \"utils/arrayUtils\";\r\n\r\nexport interface IRandomFlipProps extends OmitType {}\r\n\r\nexport default function RandomFlip(props: IRandomFlipProps) {\r\n const animations: FlipAnimation[] = [\"flip-up\", \"flip-down\", \"flip-left\", \"flip-right\"];\r\n\r\n return ;\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport RandomFlip, { IRandomFlipProps } from \"./RandomFlip\";\r\nimport AosWrapper from \"./AosWrapper\";\r\n\r\ninterface IProps extends IRandomFlipProps {\r\n order: number;\r\n children: ReactNode;\r\n}\r\n\r\nexport default function DefaultAosAnimation(props: IProps) {\r\n const { order, children, ...rest } = props;\r\n const delay = 150 * order;\r\n const duration = 400;\r\n const once = true;\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const topPadding = theme.spacing(3);\r\n\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n },\r\n border: {\r\n left: -3,\r\n bottom: -7,\r\n transform: \"skewY(1deg)\",\r\n position: \"absolute\",\r\n width: \"102%\",\r\n height: \"100%\",\r\n backgroundColor: theme.palette.common.black,\r\n },\r\n texBoxContainer: {\r\n zIndex: 100,\r\n position: \"relative\",\r\n padding: theme.spacing(3),\r\n backgroundColor: theme.palette.common.white,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: `${topPadding}px ${theme.spacing(2)}px`,\r\n },\r\n },\r\n childContainer: {},\r\n });\r\n});\r\n\r\nexport type IWhiteTextBoxClasses = Partial>;\r\n\r\ninterface IProps extends React.HTMLAttributes {\r\n classes?: IWhiteTextBoxClasses;\r\n}\r\n\r\nexport default function WhiteTextBox(props: IProps) {\r\n const classes = useStyles();\r\n const { className, classes: overrideClasses, children, ...rest } = props;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport WhiteTextBox, { IWhiteTextBoxClasses } from \"./WhiteTextBox\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport controllerIconImage from \"assets/images/icons/icon_controller.png\";\r\nimport warningIconImage from \"assets/images/icons/icon_warning.png\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n titleContainer: {\r\n position: \"relative\",\r\n zIndex: 1000,\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n \"& img\": { width: \"100%\" },\r\n },\r\n title: {\r\n zIndex: 100,\r\n },\r\n titlePrefix: {\r\n flex: \"1\",\r\n },\r\n titleSuffix: {},\r\n textBox: { marginTop: -12, width: \"95%\" },\r\n icon: {\r\n marginLeft: \"-6%\",\r\n\r\n [theme.breakpoints.down(\"sm\")]: { \"& img\": { width: 115 } },\r\n [theme.breakpoints.down(\"xs\")]: { \"& img\": { width: \"20vw\" } },\r\n },\r\n });\r\n});\r\n\r\nexport enum WhiteTextBoxWithAdornmentsIcons {\r\n CONTROLLER = \"CONTROLLER\",\r\n WARNING = \"WARNING\",\r\n}\r\n\r\ntype IClasses = Partial>;\r\n\r\ninterface IProps extends React.HTMLAttributes {\r\n children?: ReactNode;\r\n titlePrefixComponent?: ReactNode;\r\n titleSuffixComponent?: ReactNode;\r\n textContainerClasses?: IWhiteTextBoxClasses;\r\n classes?: IClasses;\r\n icon?: WhiteTextBoxWithAdornmentsIcons;\r\n}\r\n\r\nexport default function WhiteTextBoxWithAdornments(props: IProps) {\r\n const classes = useStyles();\r\n const {\r\n className,\r\n children,\r\n titlePrefixComponent,\r\n titleSuffixComponent,\r\n textContainerClasses,\r\n classes: overrideClasses,\r\n icon = WhiteTextBoxWithAdornmentsIcons.CONTROLLER,\r\n ...rest\r\n } = props;\r\n\r\n let iconComponent = (\r\n \r\n \"Controller\r\n \r\n );\r\n\r\n if (icon === WhiteTextBoxWithAdornmentsIcons.WARNING) {\r\n iconComponent = \"Warning;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {titlePrefixComponent}\r\n
\r\n
{iconComponent}
\r\n\r\n {typeof titleSuffixComponent === \"undefined\" ? null : (\r\n \r\n {titleSuffixComponent}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport assetLocations from \"assetLocations\";\r\n\r\nexport type SupportedImageErrorCodes = 404;\r\n\r\ninterface IProps {\r\n code: SupportedImageErrorCodes;\r\n}\r\n\r\nexport default function ErrorCodeTitle(props: IProps) {\r\n const { code } = props;\r\n\r\n return {`${code};\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport ErrorCodeTitle from \"./ErrorCodeTitle\";\r\nimport { fonts } from \"theme\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n errorCode: {\r\n color: theme.palette.secondary.main,\r\n \"-webkit-text-stroke\": `4px ${theme.palette.common.black}`,\r\n fontFamily: fonts.secondary,\r\n fontWeight: 900,\r\n },\r\n });\r\n});\r\n\r\ninterface IProps {\r\n errorCode: number;\r\n}\r\n\r\nexport default function ErrorCodeComponent(props: IProps) {\r\n const classes = useStyles();\r\n const { errorCode } = props;\r\n\r\n if (errorCode === 404) return ;\r\n\r\n return (\r\n \r\n {errorCode}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport assetLocations from \"assetLocations\";\r\n\r\nexport type ScribbleVariant = \"v1\" | \"v2\" | \"v3\";\r\n\r\ninterface IProps {\r\n variant: ScribbleVariant;\r\n}\r\n\r\nexport default function ScribbleImage(props: IProps) {\r\n const { variant } = props;\r\n\r\n return {`${variant};\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport ScribbleImage, { ScribbleVariant } from \"./ScribbleImage\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n },\r\n childContainer: {\r\n position: \"relative\",\r\n zIndex: 50,\r\n },\r\n scribbleContainer: {\r\n position: \"absolute\",\r\n pointerEvents: \"none\",\r\n zIndex: 10,\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ntype IClasses = Partial>;\r\n\r\ninterface IProps extends React.HTMLAttributes {\r\n variant?: ScribbleVariant;\r\n classes?: IClasses;\r\n}\r\n\r\nexport default function Scribble(props: IProps) {\r\n const { variant = \"v1\", className, children, classes: overrideClasses, ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport OmitType from \"customTypes/OmitType\";\r\nimport Rotate, { IRotateProps } from \"./Rotate\";\r\n\r\nfunction randomIntFromInterval(min: number, max: number) {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n}\r\n\r\ninterface IProps extends OmitType {\r\n min?: number;\r\n max: number;\r\n direction?: \"clockwise\" | \"anticlockwise\" | \"both\";\r\n}\r\n\r\nexport default function RandomRotate(props: IProps) {\r\n const { min = 0, max, direction = \"both\", ...rest } = props;\r\n\r\n const absMin = Math.abs(min);\r\n const absMax = Math.abs(max);\r\n\r\n if (absMax < absMin)\r\n throw new Error(`RandomRotate: max (${absMax}) must be greater than min (${absMin})`);\r\n\r\n let randomRotateAmount = randomIntFromInterval(absMin, absMax);\r\n\r\n if (direction === \"anticlockwise\") randomRotateAmount = -randomRotateAmount;\r\n\r\n if (direction === \"both\")\r\n randomRotateAmount =\r\n randomIntFromInterval(0, 1) < 0.5 ? randomRotateAmount : -randomRotateAmount;\r\n\r\n return ;\r\n}\r\n","import { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport mediaBackground from \"assets/images/backgrounds/bg_media.jpg\";\r\nimport defaultBackground from \"assets/images/backgrounds/bg_main.jpg\";\r\n\r\nconst useBackgroundStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n default: {\r\n backgroundImage: `url(${defaultBackground})`,\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n },\r\n\r\n media: {\r\n backgroundImage: `url(${mediaBackground})`,\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n },\r\n })\r\n);\r\n\r\nexport default useBackgroundStyles;\r\n","import React, { useEffect } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport RouterLinkButton from \"components/buttons/RouterLinkButton\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport Spacer from \"components/Spacer\";\r\nimport DefaultAosAnimation from \"components/aos/DefaultAosAnimation\";\r\nimport routes from \"routes\";\r\nimport WhiteTextBoxWithAdornments, {\r\n WhiteTextBoxWithAdornmentsIcons,\r\n} from \"components/textBoxes/whiteTextBox/WhiteTextBoxWithAdornments\";\r\nimport ErrorCodeComponent from \"./ErrorCodeComponent\";\r\nimport Scribble from \"components/scribble/Scribble\";\r\nimport RandomRotate from \"components/rotate/RandomRotate\";\r\nimport useBackgroundStyles from \"components/backgrounds/useBackgroundStyles\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n minHeight: \"50vh\",\r\n },\r\n errorCodeContainer: {\r\n marginLeft: 40,\r\n },\r\n errorCode: {\r\n maxWidth: 250,\r\n },\r\n iconContainer: {\r\n marginRight: 15,\r\n },\r\n title: {},\r\n text: {},\r\n homeButtonContainer: {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n left: 0,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n },\r\n scribbleContainer: {\r\n top: \"5%\",\r\n left: \"-10%\",\r\n height: \"130%\",\r\n width: \"90%\",\r\n },\r\n });\r\n});\r\n\r\ninterface IProps {\r\n errorCode: number;\r\n title: string;\r\n text?: string;\r\n}\r\n\r\nexport default function ErrorPage(props: IProps) {\r\n const { errorCode, title, text } = props;\r\n const classes = useStyles();\r\n const backgrounds = useBackgroundStyles();\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n icon={WhiteTextBoxWithAdornmentsIcons.WARNING}\r\n classes={{\r\n title: classes.errorCodeContainer,\r\n icon: classes.iconContainer,\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n\r\n {typeof text === \"undefined\" ? null : (\r\n <>\r\n \r\n \r\n \r\n {text}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n Home Page\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport ErrorPage from \"./ErrorPage\";\r\n\r\nexport default function NotFoundPage() {\r\n return (\r\n \r\n );\r\n}\r\n","const imageSizes = {\r\n newsArticle: {\r\n width: 1920,\r\n height: 1080,\r\n },\r\n homePage: {\r\n bannerVideo: {\r\n launch: {\r\n width: 853,\r\n height: 480,\r\n },\r\n announcement: {\r\n width: 2500,\r\n height: 1016,\r\n },\r\n playgrounds: {\r\n width: 853,\r\n height: 480,\r\n },\r\n },\r\n featuresTile: {\r\n width: 550,\r\n height: 254,\r\n },\r\n buyNowSection: {\r\n background: {\r\n width: 2500,\r\n height: 1085,\r\n },\r\n mobileBackground: {\r\n width: 1000,\r\n height: 1000,\r\n },\r\n editionKeyart: {\r\n width: 827,\r\n height: 463,\r\n },\r\n },\r\n mediaSection: {\r\n screenshot: {\r\n width: 3814,\r\n height: 2160,\r\n },\r\n },\r\n },\r\n youtubeVideo: {\r\n width: 16,\r\n height: 9,\r\n },\r\n};\r\n\r\nexport default imageSizes;\r\n","// https://css-tricks.com/aspect-ratio-boxes/#article-header-id-3\r\ninterface IProps {\r\n height: number;\r\n width: number;\r\n}\r\n\r\nexport default function calculateAspectRatioVwHeight(props: IProps): string {\r\n const { height, width } = props;\r\n\r\n return `${(height / width) * 100}vw`;\r\n}\r\n","import { createContext } from \"react\";\r\nimport IAppConfig from \"models/IAppConfig\";\r\n\r\nconst ConfigContext = createContext(undefined);\r\n\r\nexport default ConfigContext;\r\n","// https://css-tricks.com/aspect-ratio-boxes/#article-header-id-3\r\ninterface IProps {\r\n height: number;\r\n width: number;\r\n}\r\n\r\nexport default function calculateAspectRatioPaddingTopPercentage(props: IProps): string {\r\n const { height, width } = props;\r\n\r\n return `${(height / width) * 100}%`;\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Skeleton from \"@material-ui/lab/Skeleton\";\r\nimport clsx from \"clsx\";\r\nimport { skeletonAnimation, skeletonColour, transparentColour } from \"theme\";\r\nimport calculateAspectRatioPaddingTopPercentage from \"utils/calculateAspectRatioPaddingTopPercentage\";\r\n\r\nconst useStyles = (hideBackground: boolean) =>\r\n makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n overflow: \"hidden\",\r\n display: \"flex\",\r\n flex: \"1 0 auto\",\r\n backgroundColor: hideBackground ? transparentColour : skeletonColour,\r\n position: \"relative\",\r\n },\r\n imageSkeleton: { backgroundColor: hideBackground ? transparentColour : skeletonColour },\r\n paddingContainer: {\r\n flex: 1,\r\n },\r\n childContainer: {\r\n position: \"absolute\",\r\n top: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n },\r\n });\r\n });\r\n\r\ntype IClasses = Partial>>;\r\n\r\nexport interface IMediaSkeletonProps extends HTMLAttributes {\r\n aspectRatio: number;\r\n isLoading?: boolean;\r\n classes?: IClasses;\r\n hideBackground?: boolean;\r\n}\r\n\r\nexport default function MediaSkeleton(props: IMediaSkeletonProps) {\r\n const {\r\n aspectRatio,\r\n isLoading = false,\r\n hideBackground = false,\r\n className,\r\n children,\r\n classes: overrideClasses,\r\n ...rest\r\n } = props;\r\n\r\n const classes = useStyles(hideBackground)();\r\n\r\n const paddingTopPercentage = calculateAspectRatioPaddingTopPercentage({\r\n width: aspectRatio,\r\n height: 1,\r\n });\r\n\r\n return (\r\n
\r\n {isLoading ? (\r\n \r\n ) : (\r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n}\r\n","interface IProps {\r\n height: number;\r\n width: number;\r\n}\r\n\r\nexport default function calculateAspectRatio(props: IProps): number {\r\n const { height, width } = props;\r\n\r\n return width / height;\r\n}\r\n","import React from \"react\";\r\n\r\ninterface IProps extends React.HTMLAttributes {}\r\n\r\nexport default function PlayButtonOutline(props: IProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport \"./Glitch.css\";\r\nimport clsx from \"clsx\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n },\r\n mainItem: {\r\n position: \"relative\",\r\n zIndex: 20,\r\n },\r\n glitchItem: {\r\n display: \"block\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n height: \"100%\",\r\n width: \"100%\",\r\n },\r\n glitchColouredBackground: { opacity: 0.8 },\r\n glitchColouredBackgroundPrimary: {\r\n left: 5,\r\n color: theme.palette.primary.main,\r\n zIndex: 2,\r\n animation:\r\n \"glitch-one 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94) alternate-reverse infinite\",\r\n },\r\n glitchColouredBackgroundSecondary: {\r\n color: theme.palette.secondary.main,\r\n left: 4,\r\n zIndex: 1,\r\n animation:\r\n \"glitch-one 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) alternate-reverse both infinite\",\r\n },\r\n glitchPositionPrimary: {\r\n left: 2,\r\n textShadow: `-4px 0 ${theme.palette.primary.main}`,\r\n clip: \"rect(24px, 550px, 90px, 0)\",\r\n animation: \"glitch-two-primary 3s infinite linear alternate-reverse\",\r\n zIndex: 10,\r\n },\r\n glitchPositionSecondary: {\r\n left: 1,\r\n textShadow: `-3px 0 ${theme.palette.secondary.main}`,\r\n clip: \"rect(85px, 550px, 140px, 0)\",\r\n animation: \"glitch-two-secondary 2.5s infinite linear alternate-reverse\",\r\n zIndex: 11,\r\n },\r\n glitchShadowPrimary: {\r\n left: -2,\r\n color: theme.palette.primary.main,\r\n clip: \"rect(24px, 550px, 90px, 0)\",\r\n animation: \"glitch-two-primary 3s infinite linear alternate-reverse\",\r\n zIndex: 10,\r\n },\r\n glitchShadowSecondary: {\r\n left: -2,\r\n color: theme.palette.secondary.main,\r\n clip: \"rect(85px, 550px, 140px, 0)\",\r\n animation: \"glitch-two-secondary 2.5s infinite linear alternate-reverse\",\r\n zIndex: 11,\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function Glitch(props: IProps) {\r\n const { className, children, ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n
{children}
\r\n\r\n \r\n {children}\r\n
\r\n \r\n {children}\r\n
\r\n\r\n
\r\n {children}\r\n
\r\n
\r\n {children}\r\n
\r\n\r\n
{children}
\r\n
\r\n {children}\r\n
\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport YouTube from \"react-youtube\";\r\nimport calculateAspectRatioPaddingTopPercentage from \"utils/calculateAspectRatioPaddingTopPercentage\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const youtubeAspectRatioPercentage = calculateAspectRatioPaddingTopPercentage({\r\n height: 9,\r\n width: 16,\r\n });\r\n\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n paddingBottom: youtubeAspectRatioPercentage,\r\n },\r\n videoContainer: {\r\n \"& iframe\": {\r\n width: \"100%\",\r\n height: \"100%\",\r\n position: \"absolute\",\r\n },\r\n },\r\n });\r\n});\r\n\r\nexport interface IYouTubeVideoProps extends HTMLAttributes {\r\n videoId: string;\r\n}\r\n\r\nexport default function YouTubeVideo(props: IYouTubeVideoProps) {\r\n const { videoId, className, ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Slide from \"@material-ui/core/Slide\";\r\nimport { TransitionProps } from \"@material-ui/core/transitions\";\r\nimport { getRandomElement } from \"utils/arrayUtils\";\r\n\r\nexport type DialogTransitionDirection = \"left\" | \"right\" | \"up\" | \"down\";\r\n\r\nconst DialogTransition = React.forwardRef(function Transition(\r\n props: TransitionProps & { children?: React.ReactElement },\r\n ref: React.Ref\r\n) {\r\n const directions: DialogTransitionDirection[] = [\"left\", \"right\", \"up\", \"down\"];\r\n return ;\r\n});\r\n\r\nexport default DialogTransition;\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport closeIcon from \"assets/images/icons/btn_close.png\";\r\nimport ButtonBase, { ButtonBaseProps } from \"@material-ui/core/ButtonBase\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = (width: number) =>\r\n makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n borderRadius: \"50%\",\r\n maxWidth: width,\r\n transition: \"transform 0.05s ease-in-out\",\r\n \"&:hover\": {\r\n transform: \"rotate(15deg)\",\r\n },\r\n \"& img\": { width: \"100%\" },\r\n },\r\n disabled: {\r\n \"& img\": {\r\n filter: \"grayscale(100%)\",\r\n },\r\n },\r\n });\r\n });\r\n\r\ninterface IProps extends ButtonBaseProps {\r\n width?: number;\r\n}\r\n\r\nexport default function DialogCloseButton(props: IProps) {\r\n const { className, disabled = false, width = 50, ...rest } = props;\r\n const classes = useStyles(width)();\r\n\r\n return (\r\n \r\n \"Close\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Dialog, { DialogProps } from \"@material-ui/core/Dialog\";\r\nimport background from \"assets/images/backgrounds/bg_main.jpg\";\r\nimport { cssImportant } from \"theme\";\r\nimport DialogTransition from \"./DialogTransition\";\r\nimport clsx from \"clsx\";\r\nimport DialogCloseButton from \"./DialogCloseButton\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n },\r\n closeButton: {\r\n position: \"absolute\",\r\n top: -20,\r\n right: -20,\r\n zIndex: 100,\r\n },\r\n backdropRoot: {\r\n backgroundImage: `url(${background})`,\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n opacity: 0.8 + cssImportant,\r\n },\r\n });\r\n});\r\n\r\nexport interface IMediaDialogProps extends DialogProps {}\r\n\r\nexport default function MediaDialog(props: IMediaDialogProps) {\r\n const classes = useStyles();\r\n const { children, className, open, onClose = () => {}, ...rest } = props;\r\n\r\n return (\r\n \r\n
\r\n onClose({}, \"backdropClick\")} />\r\n
\r\n {children}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport YouTubeVideo from \"components/YouTubeVideo\";\r\nimport MediaDialog, { IMediaDialogProps } from \"./MediaDialog\";\r\n\r\ninterface IProps extends IMediaDialogProps {\r\n videoId: string;\r\n}\r\n\r\nexport default function VideoDialog(props: IProps) {\r\n const { videoId, ...rest } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes, useContext, useState } from \"react\";\r\nimport ConfigContext from \"contexts/ConfigContext\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport MediaSkeleton from \"components/skeletons/MediaSkeleton\";\r\nimport calculateAspectRatio from \"utils/calculateAspectRatio\";\r\nimport imageSizes from \"imageSizes\";\r\nimport playButtonBackground from \"assets/images/homePage/bannerSection/video/btn_play_bg.png\";\r\nimport PlayButtonOutline from \"assets/svgs/icons/PlayButtonOutline\";\r\nimport Glitch from \"components/glitch/Glitch\";\r\nimport VideoDialog from \"components/dialogs/VideoDialog\";\r\nimport videoBackgroundImageSrc from \"assets/videos/homepage/video_bg.png\";\r\nimport videoFrameImage from \"assets/videos/homepage/video_innerframe.png\";\r\n\r\n// import video from \"assets/videos/homepage/playgrounds/playgroundsHompageVideo.mp4\";\r\n// import videoPlaceholder from \"assets/videos/homepage/playgrounds/playgroundsHompageVideo.jpg\";\r\n// const aspectRatio = calculateAspectRatio(imageSizes.homePage.bannerVideo.playgrounds);\r\n\r\n// import video from \"assets/videos/homepage/announcement/announcementHompageVideo.mp4\";\r\n// import videoPlaceholder from \"assets/videos/homepage/announcement/announcementHompageVideo.jpg\";\r\n// const aspectRatio = calculateAspectRatio(imageSizes.homePage.bannerVideo.announcement);\r\n\r\nimport video from \"assets/videos/homepage/launch/launchVideoLoop.mp4\";\r\nimport videoPlaceholder from \"assets/videos/homepage/launch/launchVideoLoop.jpg\";\r\nconst aspectRatio = calculateAspectRatio(imageSizes.homePage.bannerVideo.launch);\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const videoZIndex = 5;\r\n\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n display: \"flex\",\r\n },\r\n videoContainer: {\r\n flex: \"1\",\r\n zIndex: videoZIndex,\r\n \"& video\": {\r\n width: \"100%\",\r\n },\r\n backgroundImage: `url(${videoBackgroundImageSrc})`,\r\n backgroundSize: \"100% 100%\",\r\n paddingTop: \"1.2%\",\r\n paddingLeft: \"1.3%\",\r\n paddingBottom: \"1.8%\",\r\n paddingRight: \"2.5%\",\r\n position: \"relative\",\r\n },\r\n videoFrame: {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n top: 0,\r\n left: 0,\r\n zIndex: videoZIndex + 1,\r\n },\r\n\r\n content: {\r\n cursor: \"pointer\",\r\n position: \"absolute\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n zIndex: videoZIndex + 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: theme.palette.common.white,\r\n \"&:hover\": {\r\n \"& $playButton\": { opacity: 1 },\r\n \"& $playButtonOutline\": { display: \"none\" },\r\n \"& $playButtonGlitchOutline\": { display: \"block\" },\r\n },\r\n },\r\n playButton: {\r\n width: 100,\r\n position: \"relative\",\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n opacity: 0.8,\r\n },\r\n playButtonOutline: {},\r\n playButtonGlitchOutline: { display: \"none\" },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function BannerVideo(props: IProps) {\r\n const classes = useStyles();\r\n const { className, ...rest } = props;\r\n\r\n const [videoDialogIsOpen, setVideoDialogIsOpen] = useState(false);\r\n\r\n const config = useContext(ConfigContext);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \"\"\r\n \r\n {/* https://stackoverflow.com/questions/34764876/html-5-video-autoplay-not-automatically-starting-in-chrome */}\r\n \r\n \r\n
\r\n
\r\n {typeof config === \"undefined\" ? null : (\r\n <>\r\n
setVideoDialogIsOpen(true)} className={classes.content}>\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \"Play\r\n
\r\n
\r\n setVideoDialogIsOpen(false)}\r\n />\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\nimport RouterAnchorLinkButton from \"components/buttons/RouterAnchorLinkButton\";\r\nimport routes from \"routes\";\r\nimport packshotImage from \"assets/images/homePage/bannerSection/img_packshot_all.png\";\r\nimport SkewedSection from \"components/SkewedSection\";\r\nimport { darkTextBoxBackgroundColour } from \"theme\";\r\nimport { StyledButtonSize } from \"components/buttons/StyledButton\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const packshotImageZIndex = 100;\r\n\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n image: {\r\n zIndex: packshotImageZIndex,\r\n maxWidth: \"45%\",\r\n \"& img\": {\r\n width: \"100%\",\r\n maxWidth: 250,\r\n minWidth: 125,\r\n },\r\n },\r\n buttonContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: darkTextBoxBackgroundColour,\r\n marginLeft: -5,\r\n zIndex: packshotImageZIndex - 1,\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n });\r\n});\r\n\r\ninterface IProps {}\r\n\r\nexport default function BuyNowWidget(props: IProps) {\r\n const classes = useStyles();\r\n\r\n const theme = useTheme();\r\n const xxsScreen = useMediaQuery(\"@media (max-width:420px)\");\r\n const xsScreen = useMediaQuery(theme.breakpoints.down(\"xs\"));\r\n const smScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const smMdScreen = useMediaQuery(\"@media (max-width:1000px)\");\r\n const mdScreen = useMediaQuery(theme.breakpoints.down(\"md\"));\r\n\r\n const getButtonSize = (): StyledButtonSize => {\r\n if (xxsScreen) return \"small\";\r\n if (xsScreen) return \"large\";\r\n if (smScreen) return \"extralarge\";\r\n if (smMdScreen) return \"medium\";\r\n if (mdScreen) return \"large\";\r\n\r\n return \"extralarge\";\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \"Packshot\"\r\n
\r\n \r\n \r\n Buy Now\r\n \r\n \r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport background from \"assets/images/homePage/bannerSection/BannerSectionBackground.jpg\";\r\nimport mobileBackGround from \"assets/images/homePage/bannerSection/BannerSectionBackgroundMobile.jpg\";\r\nimport accoladeImg from \"assets/images/homePage/bannerSection/ign_badge.png\";\r\nimport imageSizes from \"imageSizes\";\r\nimport calculateAspectRatioVwHeight from \"utils/calculateAspectRatioVwHeight\";\r\nimport DefaultAosAnimation from \"components/aos/DefaultAosAnimation\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport Scribble from \"components/scribble/Scribble\";\r\nimport BannerVideo from \"./components/BannerVideo\";\r\nimport BuyNowWidget from \"./components/BuyNowWidget\";\r\nimport clsx from \"clsx\";\r\nimport { useMediaQuery } from \"@material-ui/core\";\r\nimport Spacer from \"components/Spacer\";\r\nimport { layoutConsts } from \"theme\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n backgroundColor: \"#4c2166\",\r\n },\r\n backgroundContainer: {\r\n backgroundImage: `url(${background})`,\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n minHeight: calculateAspectRatioVwHeight(imageSizes.homePage.buyNowSection.background),\r\n [theme.breakpoints.down(\"sm\")]: {\r\n backgroundImage: `url(${mobileBackGround})`,\r\n minHeight: calculateAspectRatioVwHeight(\r\n imageSizes.homePage.buyNowSection.mobileBackground\r\n ),\r\n },\r\n },\r\n textBoxContainer: {\r\n flex: \"1\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n marginBottom: \"-30vw\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n padding: theme.spacing(1),\r\n marginBottom: \"-36vw\",\r\n },\r\n },\r\n videoScribbleContainer: {\r\n top: \"-10%\",\r\n left: \"-12%\",\r\n height: \"110%\",\r\n width: \"110%\",\r\n },\r\n videoContainer: { position: \"relative\" },\r\n mobileTextBoxContainer: {\r\n zIndex: 100,\r\n },\r\n accoladeContainer: {\r\n position: \"absolute\",\r\n left: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: \"2vw\",\r\n \"& img\": {\r\n width: \"10.5vw\",\r\n minWidth: 150,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n minWidth: 100,\r\n },\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function BannerSection(props: IProps) {\r\n const classes = useStyles();\r\n const { className, ...rest } = props;\r\n\r\n const theme = useTheme();\r\n const smScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const xsScreen = useMediaQuery(theme.breakpoints.down(\"xs\"));\r\n\r\n const videoFlexSize = 9;\r\n\r\n const textBox = (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n\r\n return (\r\n
\r\n {smScreen ? (\r\n \r\n
\r\n \r\n
\r\n \r\n {textBox}\r\n
\r\n
\r\n
\r\n \r\n ) : null}\r\n \r\n {smScreen ? null : (\r\n
\r\n
\r\n\r\n
\r\n \r\n {textBox}\r\n
\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n}\r\n","// ISO 3166 complient\r\n// https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes\r\nenum CountryCode {\r\n AU = \"AU\", // Australia\r\n AT = \"AT\", // Austria\r\n BE = \"BE\", // Belgium\r\n CA = \"CA\", // Canada\r\n DK = \"DK\", // Denmark\r\n FI = \"FI\", // Finland\r\n FR = \"FR\", // France\r\n DE = \"DE\", // Germany\r\n IT = \"IT\", // Italy\r\n NL = \"NL\", // Netherlands\r\n NZ = \"NZ\", // New Zealand\r\n NO = \"NO\", // Norway\r\n PL = \"PL\", // Poland\r\n ES = \"ES\", // Spain\r\n SE = \"SE\", // Sweden\r\n CH = \"CH\", // Switzerland\r\n GB = \"GB\", // Great Britain\r\n US = \"US\", // The United States of America\r\n}\r\n\r\nexport default CountryCode;\r\n","import axios from \"axios\";\r\nimport QueryParameter from \"./QueryParameter\";\r\n\r\nexport interface IEndpointProps {\r\n rootUrl: string;\r\n}\r\n\r\nexport default class EndpointsBaseClass {\r\n constructor(props: IEndpointProps) {\r\n const { rootUrl } = props;\r\n\r\n axios.defaults.baseURL = this.removeSlash(`${this.removeSlash(rootUrl)}`);\r\n }\r\n\r\n protected async makeGetRequest(url: string, queryParameters?: QueryParameter[]) {\r\n const queryParameterString: string = this.constructCliParamString(queryParameters);\r\n\r\n const response = await axios.get(`${url}${queryParameterString}`);\r\n\r\n return response.data;\r\n }\r\n\r\n protected async makePostRequest(url: string, data: T) {\r\n const response = await axios.post(url, data);\r\n\r\n return response.data;\r\n }\r\n\r\n private constructCliParamString(params?: QueryParameter[]): string {\r\n if (!params) return \"\";\r\n\r\n let builtParams: string[] = [];\r\n params.forEach((param) => {\r\n const builtParam = param.buildParamString();\r\n\r\n if (builtParam.length === 0) return;\r\n\r\n builtParams.push(builtParam);\r\n });\r\n\r\n if (builtParams.length === 0) return \"\";\r\n\r\n return `?${builtParams.join(\"&\").trim()}`;\r\n }\r\n\r\n private removeSlash(str: string) {\r\n return str\r\n .replace(/^\\/*/gm, \"\") // remove slash prefix\r\n .replace(/\\/*$/gm, \"\"); // remove slash suffix;\r\n }\r\n}\r\n","import IConfigEndpoints from \"./framework/IConfigEndpoints\";\r\nimport IAppConfig from \"models/IAppConfig\";\r\nimport EndpointsBaseClass from \"apiConsumers/EndpointsBaseClass\";\r\n\r\nexport default class ConfigEndpoints extends EndpointsBaseClass implements IConfigEndpoints {\r\n public async getConfig(): Promise {\r\n const cdnEndpoint = await this.getCDNEndpoint();\r\n\r\n const response = await this.makeGetRequest(`${cdnEndpoint}/config.json`);\r\n\r\n return response as IAppConfig;\r\n }\r\n\r\n private async getCDNEndpoint(): Promise {\r\n let url = `/config`;\r\n\r\n const response = await this.makeGetRequest(url);\r\n\r\n return response.cdnEnpoint as string;\r\n }\r\n}\r\n","import ILocationEndpoints from \"./framework/ILocationEndpoints\";\r\nimport EndpointsBaseClass from \"apiConsumers/EndpointsBaseClass\";\r\nimport CountryCode from \"models/CountryCode\";\r\nimport getLocationCountryCode from \"utils/getLocationCountryCode\";\r\n\r\nexport default class LocationEndpoints extends EndpointsBaseClass implements ILocationEndpoints {\r\n public async getIsoLocation(): Promise {\r\n const response = await this.makeGetRequest(`location`);\r\n\r\n return this.convertIsoLoactionResponse(response);\r\n }\r\n\r\n private convertIsoLoactionResponse(response: any): CountryCode {\r\n const defaultLocation = CountryCode.GB;\r\n\r\n if (typeof response !== \"string\") return defaultLocation;\r\n\r\n return getLocationCountryCode(response, defaultLocation);\r\n }\r\n}\r\n","import CountryCode from \"models/CountryCode\";\r\n\r\nexport default function getLocationCountryCode(\r\n locationValue: string,\r\n defaultCountryCode: CountryCode = CountryCode.GB\r\n) {\r\n if (locationValue.length !== 2) return defaultCountryCode;\r\n\r\n const countryCodeKeys = Object.keys(CountryCode);\r\n\r\n for (let i = 0; i < countryCodeKeys.length; i++) {\r\n const key = countryCodeKeys[i];\r\n\r\n // @ts-ignore\r\n const value: CountryCode = CountryCode[key];\r\n\r\n if (value.toUpperCase() === locationValue.toUpperCase()) return value;\r\n }\r\n\r\n return defaultCountryCode;\r\n}\r\n","import IEmailSubscriptionEndpoints from \"./framework/IEmailSubscriptionEndpoints\";\r\nimport EndpointsBaseClass from \"apiConsumers/EndpointsBaseClass\";\r\nimport EmailSubscriptionListType from \"models/EmailSubscriptionListType\";\r\n\r\nexport default class EmailSubscriptionEndpoints extends EndpointsBaseClass\r\n implements IEmailSubscriptionEndpoints {\r\n public async postEmail(\r\n email: string,\r\n list: EmailSubscriptionListType,\r\n termsLabel?: string\r\n ): Promise {\r\n let url = \"/subscribe\";\r\n\r\n const response = await this.makePostRequest(url, {\r\n emailAddress: email,\r\n list: list,\r\n termsAndConditionsText: termsLabel,\r\n });\r\n\r\n return response;\r\n }\r\n}\r\n","import ConfigEndpoints from \"./ConfigEndpoints\";\r\nimport LocationEndpoints from \"./LocationEndpoints\";\r\nimport IConfigEndpoints from \"./framework/IConfigEndpoints\";\r\nimport ILocationEndpoints from \"./framework/ILocationEndpoints\";\r\nimport IAppConfig from \"models/IAppConfig\";\r\nimport { IEndpointProps } from \"apiConsumers/EndpointsBaseClass\";\r\nimport EmailSubscriptionEndpoints from \"./EmailSubscriptionEndpoints\";\r\nimport IEmailSubscriptionEndpoints from \"./framework/IEmailSubscriptionEndpoints\";\r\nimport EmailSubscriptionListType from \"models/EmailSubscriptionListType\";\r\nimport CountryCode from \"models/CountryCode\";\r\n\r\ninterface IProps extends IEndpointProps {}\r\n\r\nexport default class BackendApiConsumer {\r\n private configEndpoints: IConfigEndpoints;\r\n private emailSubscriptionEndpoints: IEmailSubscriptionEndpoints;\r\n private locationEndpoints: ILocationEndpoints;\r\n\r\n constructor(props: IProps) {\r\n this.configEndpoints = new ConfigEndpoints(props);\r\n this.locationEndpoints = new LocationEndpoints(props);\r\n this.emailSubscriptionEndpoints = new EmailSubscriptionEndpoints(props);\r\n }\r\n\r\n public async getConfig(): Promise {\r\n return await this.configEndpoints.getConfig();\r\n }\r\n\r\n public async getIsoLocation(): Promise {\r\n return await this.locationEndpoints.getIsoLocation();\r\n }\r\n\r\n public async subscribeEmail(\r\n email: string,\r\n list: EmailSubscriptionListType,\r\n termsLabel?: string\r\n ): Promise {\r\n return await this.emailSubscriptionEndpoints.postEmail(email, list, termsLabel);\r\n }\r\n}\r\n","export function parseStringResponse(response: any): string | undefined {\r\n if (response === null || typeof response === \"undefined\") return undefined;\r\n\r\n if (typeof response !== \"string\") {\r\n console.log(\"Response item is not a string\");\r\n return undefined;\r\n }\r\n\r\n if (response.length === 0) return undefined;\r\n\r\n return response;\r\n}\r\n\r\nexport function parseNumberResponse(response: any): number | undefined {\r\n if (response === null || typeof response === \"undefined\") return undefined;\r\n\r\n const _response = +response;\r\n\r\n if (isNaN(_response)) {\r\n console.log(\"Response item is not a number\");\r\n return undefined;\r\n }\r\n\r\n return _response;\r\n}\r\n\r\nexport function parseArrayResponse(response: any): any[] | undefined {\r\n if (response === null || typeof response === \"undefined\") return undefined;\r\n\r\n if (!Array.isArray(response)) {\r\n console.log(\"Response item is not an array\");\r\n return undefined;\r\n }\r\n\r\n return response;\r\n}\r\n\r\nexport function parseDateResponse(response: any): Date | undefined {\r\n if (response === null || typeof response === \"undefined\") return undefined;\r\n\r\n const date = new Date(response);\r\n\r\n return isValidDate(date) ? date : undefined;\r\n}\r\n\r\nfunction isValidDate(d: any) {\r\n return d instanceof Date && !isNaN(+d);\r\n}\r\n\r\nexport function allAreUndefined(...testItems: any[]) {\r\n for (let i = 0; i < testItems.length; i++) {\r\n const item = testItems[i];\r\n\r\n if (typeof item !== \"undefined\") return false;\r\n }\r\n\r\n return true;\r\n}\r\n","import {\r\n IWidget,\r\n IVideoWidget,\r\n IVideoWidgetOptions,\r\n VideoWidgetType,\r\n ITextAlignment,\r\n ITextBlockWidget,\r\n IButtonWidget,\r\n WidgetSize,\r\n IGalleryWidgetImage,\r\n IButtons,\r\n} from \"../models/INewsArticle\";\r\nimport {\r\n parseStringResponse,\r\n parseNumberResponse,\r\n allAreUndefined,\r\n parseArrayResponse,\r\n} from \"./utils\";\r\n\r\nexport default function artictleContentResponseConverter(\r\n contentResponse: any[]\r\n): IWidget[] | undefined {\r\n let content: IWidget[] = [];\r\n for (let i = 0; i < contentResponse.length; i++) {\r\n const contentItemResponse = contentResponse[i];\r\n\r\n const _contentItem = convertContentItemResponse(contentItemResponse);\r\n\r\n if (typeof _contentItem !== \"undefined\") content.push(_contentItem);\r\n }\r\n\r\n return content;\r\n}\r\n\r\nfunction convertContentItemResponse(contentItemResponse: any): IWidget | undefined {\r\n if (Array.isArray(contentItemResponse)) {\r\n return convertContentItemArrayResponse(contentItemResponse);\r\n }\r\n\r\n const { html, url, description } = contentItemResponse;\r\n\r\n const _html = parseStringResponse(html);\r\n const _url = parseStringResponse(url);\r\n const _description = parseStringResponse(description);\r\n\r\n if (typeof _html !== \"undefined\") {\r\n return {\r\n type: \"html_widget\",\r\n html: [_html],\r\n };\r\n }\r\n\r\n if (typeof _url !== \"undefined\") {\r\n return {\r\n type: \"gallery_widget\",\r\n galleryImages: [\r\n {\r\n src: _url,\r\n altText: _description,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction convertContentItemArrayResponse(contentItemArrayResponse: any): IWidget | undefined {\r\n const item = contentItemArrayResponse[0]; // only ever 1 item in the array\r\n\r\n const type = parseStringResponse(item.system.type);\r\n\r\n if (type === \"youtube_video_widget\")\r\n return {\r\n type,\r\n video: convertYoutubeWidgetResponse(item),\r\n };\r\n\r\n if (type === \"text_block_widget\")\r\n return {\r\n type,\r\n textBlock: convertTextBlockWidgetResponse(item),\r\n };\r\n\r\n if (type === \"html_widget\")\r\n return {\r\n type,\r\n html: convertHtmlWidgetResponse(item),\r\n };\r\n\r\n if (type === \"button_widget\")\r\n return {\r\n type,\r\n buttons: convertButtonsWidgetResponse(item),\r\n };\r\n\r\n if (type === \"gallery_widget\")\r\n return {\r\n type,\r\n galleryImages: convertGalleryWidgetResponse(item),\r\n };\r\n\r\n return undefined;\r\n}\r\n\r\nfunction convertYoutubeWidgetResponse(youtubeWidgetResponse: any): IVideoWidget | undefined {\r\n const { playerOptions, videoType, videoWidth, youtubeUrl } = youtubeWidgetResponse;\r\n\r\n const _width = parseNumberResponse(videoWidth);\r\n const _url = parseStringResponse(youtubeUrl);\r\n\r\n if (allAreUndefined(_url, _width)) return undefined;\r\n\r\n return {\r\n url: _url,\r\n options: convertYoutubeWidgetOptionsResponseResponse(playerOptions),\r\n type: convertYoutubeWidgetTypeResponseResponse(videoType),\r\n };\r\n}\r\n\r\nfunction convertYoutubeWidgetOptionsResponseResponse(\r\n playerOptionsResponse: any\r\n): IVideoWidgetOptions {\r\n let options: IVideoWidgetOptions = {\r\n controls: false,\r\n fullscreen: false,\r\n };\r\n\r\n const parsedResponse = parseArrayResponse(playerOptionsResponse);\r\n\r\n if (typeof parsedResponse === \"undefined\" || parsedResponse.length === 0) return options;\r\n\r\n parsedResponse.forEach((playerOption) => {\r\n const { codename } = playerOption;\r\n\r\n if (codename === \"controls\") options.controls = true;\r\n if (codename === \"fullscreen\") options.fullscreen = true;\r\n });\r\n\r\n return options;\r\n}\r\n\r\nfunction convertYoutubeWidgetTypeResponseResponse(\r\n videoTypeResponse: any\r\n): VideoWidgetType | undefined {\r\n const parsedResponse = parseArrayResponse(videoTypeResponse);\r\n if (typeof parsedResponse === \"undefined\" || parsedResponse.length === 0) return undefined;\r\n\r\n const type = parsedResponse[0].codename;\r\n\r\n if (type === \"single_video\" || type === \"playlist\") return type;\r\n\r\n return undefined;\r\n}\r\n\r\nfunction convertTextBlockWidgetResponse(\r\n textBlockWidgetResponse: any\r\n): ITextBlockWidget | undefined {\r\n const { content, textAlign } = textBlockWidgetResponse;\r\n\r\n const _content = convertTextBlockContentResponse(content);\r\n const _align = convertTextBlockAlignResponse(textAlign);\r\n\r\n if (allAreUndefined(_content, _align)) return undefined;\r\n\r\n return {\r\n content: _content,\r\n align: _align,\r\n };\r\n}\r\n\r\nfunction convertTextBlockContentResponse(textBlockContentResponse: any): string[] | undefined {\r\n const parsedResponse = parseArrayResponse(textBlockContentResponse);\r\n if (typeof parsedResponse === \"undefined\" || parsedResponse.length === 0) return undefined;\r\n\r\n let content: string[] = [];\r\n parsedResponse.forEach((contentItem) => {\r\n const { html } = contentItem;\r\n const _html = parseStringResponse(html);\r\n\r\n if (typeof _html === \"undefined\") return;\r\n\r\n content.push(_html);\r\n });\r\n\r\n if (content.length === 0) return undefined;\r\n\r\n return content;\r\n}\r\n\r\nfunction convertTextBlockAlignResponse(textBlockAlignResponse: any): ITextAlignment | undefined {\r\n const parsedResponse = parseStringResponse(textBlockAlignResponse[0].codename);\r\n\r\n return getTextAlignment(parsedResponse);\r\n}\r\n\r\nfunction convertHtmlWidgetResponse(htmlWidgetResponse: any): string[] | undefined {\r\n const parsedResponse = parseArrayResponse(htmlWidgetResponse.code);\r\n if (typeof parsedResponse === \"undefined\" || parsedResponse.length === 0) return undefined;\r\n\r\n let content: string[] = [];\r\n parsedResponse.forEach((htmlItem) => {\r\n const { html } = htmlItem;\r\n\r\n const parsedHtml = parseStringResponse(html);\r\n\r\n if (typeof parsedHtml === \"undefined\") return;\r\n\r\n content.push(parsedHtml);\r\n });\r\n\r\n if (content.length === 0) return undefined;\r\n\r\n return content;\r\n}\r\n\r\nfunction convertButtonsWidgetResponse(buttonsWidgetResponse: any): IButtons | undefined {\r\n const { alignement, position, size, buttons } = buttonsWidgetResponse;\r\n\r\n const _direction =\r\n alignement.length > 0 ? parseStringResponse(alignement[0].codename) : undefined;\r\n\r\n return {\r\n buttonWidgets: convertButtonWidgetResponse(buttons),\r\n direction: _direction === \"inline\" ? \"row\" : \"column\",\r\n align: getAlignFromButtonResponse(position),\r\n size: getSizeFromButtonResponse(size),\r\n };\r\n}\r\n\r\nfunction convertButtonWidgetResponse(buttons: any): IButtonWidget[] | undefined {\r\n const parsedResponse = parseArrayResponse(buttons);\r\n if (typeof parsedResponse === \"undefined\" || parsedResponse.length === 0) return undefined;\r\n\r\n let content: IButtonWidget[] = [];\r\n\r\n parsedResponse.forEach((button) => {\r\n const _button: IButtonWidget = {\r\n href: getHrefFromButtonResponse(button[0]),\r\n text: parseStringResponse(button[0].text),\r\n };\r\n\r\n content.push(_button);\r\n });\r\n\r\n if (content.length === 0) return undefined;\r\n\r\n return content;\r\n}\r\n\r\nfunction getAlignFromButtonResponse(alignResponse: any): ITextAlignment | undefined {\r\n const _align =\r\n alignResponse.length > 0 ? parseStringResponse(alignResponse[0].codename) : undefined;\r\n\r\n return getTextAlignment(_align);\r\n}\r\n\r\nfunction getSizeFromButtonResponse(sizeResponse: any): WidgetSize | undefined {\r\n const _size = parseStringResponse(sizeResponse[0].codename);\r\n\r\n return getWidgetSize(_size);\r\n}\r\n\r\nfunction getHrefFromButtonResponse(button: any): string | undefined {\r\n const { url, file } = button;\r\n\r\n let _href: string | undefined;\r\n\r\n const parsedUrl = parseStringResponse(url);\r\n\r\n const parsedFile = parseArrayResponse(file);\r\n const parsedFileUrl = parsedFile?.length === 0 ? undefined : parseStringResponse(file[0].url);\r\n\r\n if (typeof parsedUrl !== \"undefined\") _href = parsedUrl;\r\n else if (typeof parsedFileUrl !== \"undefined\") _href = parsedFileUrl;\r\n\r\n return _href;\r\n}\r\n\r\nfunction convertGalleryWidgetResponse(\r\n galleryWidgetResponse: any\r\n): IGalleryWidgetImage[] | undefined {\r\n const parsedImageArray = parseArrayResponse(galleryWidgetResponse.images);\r\n if (typeof parsedImageArray === \"undefined\" || parsedImageArray.length === 0) return undefined;\r\n\r\n const imageSizeArray = parseArrayResponse(galleryWidgetResponse.size);\r\n const _size =\r\n typeof imageSizeArray === \"undefined\"\r\n ? undefined\r\n : imageSizeArray.length === 0\r\n ? undefined\r\n : imageSizeArray[0].codename;\r\n\r\n let images: IGalleryWidgetImage[] = [];\r\n parsedImageArray.forEach((image) => {\r\n const { url, description } = image;\r\n const _image: IGalleryWidgetImage = {\r\n size: getWidgetSize(_size),\r\n altText: parseStringResponse(description),\r\n src: parseStringResponse(url),\r\n };\r\n\r\n images.push(_image);\r\n });\r\n\r\n if (images.length === 0) return undefined;\r\n\r\n return images;\r\n}\r\n\r\nfunction getWidgetSize(input?: string): WidgetSize | undefined {\r\n if (input === \"small\") return \"small\";\r\n if (input === \"medium\") return \"medium\";\r\n if (input === \"large\") return \"large\";\r\n\r\n return undefined;\r\n}\r\n\r\nfunction getTextAlignment(input?: string): ITextAlignment | undefined {\r\n if (input === \"left\") return \"left\";\r\n if (input === \"right\") return \"right\";\r\n if (input === \"centered\") return \"center\";\r\n if (input === \"justified\") return \"justify\";\r\n\r\n return undefined;\r\n}\r\n","import INewsArticle, {\r\n INewsArticleAuthor,\r\n IAuthorSocialMedia,\r\n INewsArticleFeatureImage,\r\n} from \"../models/INewsArticle\";\r\nimport { allAreUndefined, parseStringResponse, parseDateResponse } from \"./utils\";\r\nimport artictleContentResponseConverter from \"./artictleContentResponseConverter\";\r\n\r\nexport default function convertArticleResponse(response: any): INewsArticle {\r\n const { author, codename, content, title, publicationDate, featureImage, url } = response;\r\n\r\n return {\r\n author: convertAuthorResponse(author),\r\n codename: parseStringResponse(codename),\r\n content: artictleContentResponseConverter(content),\r\n title: parseStringResponse(title),\r\n publicationDate: parseDateResponse(publicationDate),\r\n featureImage: convertFeatureImageResponse(featureImage),\r\n url: parseStringResponse(url),\r\n };\r\n}\r\n\r\nfunction convertAuthorResponse(authorResponse: any): INewsArticleAuthor | undefined {\r\n const { name, description, profilePicture } = authorResponse;\r\n\r\n const _name = parseStringResponse(name);\r\n const _description = parseStringResponse(description);\r\n const _profilePictureUrl = parseStringResponse(profilePicture);\r\n const _socialMedia = convertAuthorSocialMediaResponse(authorResponse);\r\n\r\n if (allAreUndefined(_name, _description, _profilePictureUrl, _socialMedia)) return undefined;\r\n\r\n return {\r\n name: _name,\r\n description: _description,\r\n profilePictureUrl: _profilePictureUrl,\r\n socialMedia: _socialMedia,\r\n };\r\n}\r\n\r\nfunction convertAuthorSocialMediaResponse(authorResponse: any): IAuthorSocialMedia | undefined {\r\n const { twitter, facebook, instagram } = authorResponse;\r\n\r\n const _twitterUrl = parseStringResponse(twitter);\r\n const _facebookUrl = parseStringResponse(facebook);\r\n const _instagramUrl = parseStringResponse(instagram);\r\n\r\n if (allAreUndefined(_twitterUrl, _facebookUrl, _instagramUrl)) return undefined;\r\n\r\n return {\r\n twitterUrl: _twitterUrl,\r\n facebookUrl: _facebookUrl,\r\n instagramUrl: _instagramUrl,\r\n };\r\n}\r\n\r\nfunction convertFeatureImageResponse(\r\n featureImageResponse: any\r\n): INewsArticleFeatureImage | undefined {\r\n const { name, description, url } = featureImageResponse;\r\n\r\n const _name = parseStringResponse(name);\r\n const _description = parseStringResponse(description);\r\n const _url = parseStringResponse(url);\r\n\r\n if (allAreUndefined(_name, _description, _url)) return undefined;\r\n\r\n return {\r\n name: _name,\r\n description: _description,\r\n url: _url,\r\n };\r\n}\r\n","type QueryParameterType = string | number | boolean;\r\n\r\nexport default class QueryParameter {\r\n readonly name: string;\r\n readonly value: QueryParameterType | undefined;\r\n\r\n constructor(name: string, value?: QueryParameterType | undefined) {\r\n this.name = name;\r\n this.value = value;\r\n }\r\n\r\n public buildParamString = () => {\r\n return this.getParamString(this.name, this.value).trim();\r\n };\r\n\r\n private getParamString = (name: string, value?: string | number | boolean) => {\r\n if (typeof value === \"string\" && value.length > 0) return `${name}=${value}`;\r\n else if (typeof value === \"number\") return `${name}=${value.toString()}`;\r\n else if (typeof value === \"boolean\" && value) return `${name}`;\r\n\r\n return \"\";\r\n };\r\n}\r\n","import INewsResponse from \"./models/INewsResponse\";\r\nimport IPagination from \"./models/IPagination\";\r\nimport INewsArticle from \"./models/INewsArticle\";\r\nimport INewsApiConsumer from \"./INewsApiConsumer\";\r\nimport convertArticleResponse from \"./converters/convertArticleResponse\";\r\nimport EndpointsBaseClass from \"apiConsumers/EndpointsBaseClass\";\r\nimport QueryParameter from \"apiConsumers/QueryParameter\";\r\n\r\nexport default class NewsApiConsumer extends EndpointsBaseClass implements INewsApiConsumer {\r\n public async getAllArticles(pagination: IPagination = {}): Promise {\r\n let url = \"/news\";\r\n\r\n const { pageOffset, pageSize } = pagination;\r\n\r\n const queryParams = [\r\n new QueryParameter(\"pageOffset\", pageOffset),\r\n new QueryParameter(\"pageSize\", pageSize),\r\n ];\r\n\r\n const response = await this.makeGetRequest(url, queryParams);\r\n\r\n return response as INewsResponse;\r\n }\r\n\r\n public async getArticle(id: string): Promise {\r\n let url = `/news/article/${id}`;\r\n\r\n const response = await this.makeGetRequest(url);\r\n\r\n return convertArticleResponse(response);\r\n }\r\n}\r\n","export function parseStringResponse(response: any): string | undefined {\r\n if (response === null || typeof response === \"undefined\") return undefined;\r\n\r\n if (typeof response !== \"string\") {\r\n console.log(\"Response item is not a string\");\r\n return undefined;\r\n }\r\n\r\n if (response.length === 0) return undefined;\r\n\r\n return response;\r\n}\r\n\r\nexport function parseNumberResponse(response: any): number | undefined {\r\n if (response === null || typeof response === \"undefined\") return undefined;\r\n\r\n const _response = +response;\r\n\r\n if (isNaN(_response)) {\r\n console.log(\"Response item is not a number\");\r\n return undefined;\r\n }\r\n\r\n return _response;\r\n}\r\n\r\nexport function parseArrayResponse(response: any): any[] | undefined {\r\n if (response === null || typeof response === \"undefined\") return undefined;\r\n\r\n if (!Array.isArray(response)) {\r\n console.log(\"Response item is not an array\");\r\n return undefined;\r\n }\r\n\r\n return response;\r\n}\r\n\r\nexport function parseDateResponse(response: any): Date | undefined {\r\n if (response === null || typeof response === \"undefined\") return undefined;\r\n\r\n const date = new Date(response);\r\n\r\n return isValidDate(date) ? date : undefined;\r\n}\r\n\r\nfunction isValidDate(d: any) {\r\n return d instanceof Date && !isNaN(+d);\r\n}\r\n\r\nexport function allAreUndefined(...testItems: any[]) {\r\n for (let i = 0; i < testItems.length; i++) {\r\n const item = testItems[i];\r\n\r\n if (typeof item !== \"undefined\") return false;\r\n }\r\n\r\n return true;\r\n}\r\n","import IMediaPageItemTag from \"../../models/mediaPage/IMediaPageItemTag\";\r\nimport { parseArrayResponse, parseStringResponse } from \"../utils\";\r\n\r\nexport default function convertMediapageTagsResponse(\r\n tagsResponse: any\r\n): IMediaPageItemTag[] | undefined {\r\n const parsedTagsResponse = parseArrayResponse(tagsResponse);\r\n if (typeof parsedTagsResponse === \"undefined\") return undefined;\r\n\r\n let _tags: IMediaPageItemTag[] = [];\r\n parsedTagsResponse.forEach((parsedTag) => {\r\n const { name, codename } = parsedTag;\r\n\r\n const _id = parseStringResponse(codename);\r\n if (typeof _id === \"undefined\") return;\r\n\r\n const _displayName = parseStringResponse(name);\r\n if (typeof _displayName === \"undefined\") return;\r\n\r\n _tags.push({\r\n displayName: _displayName,\r\n id: _id,\r\n });\r\n });\r\n\r\n return _tags;\r\n}\r\n","import IMediaPageVideos, { IMediaPageVideo } from \"../../models/mediaPage/IMediaPageVideos\";\r\nimport { parseArrayResponse, parseStringResponse } from \"../utils\";\r\nimport convertMediapageTagsResponse from \"./convertMediapageTagsResponse\";\r\n\r\nexport default function convertMediapageVideosResponse(\r\n response: any\r\n): IMediaPageVideos | undefined {\r\n const { items } = response;\r\n\r\n const parsedItems = parseArrayResponse(items);\r\n if (typeof parsedItems === \"undefined\") return undefined;\r\n\r\n let _videos: IMediaPageVideo[] = [];\r\n parsedItems.forEach((video) => {\r\n const _video = convertMediapageVideoResponse(video);\r\n if (typeof _video === \"undefined\") return;\r\n\r\n _videos.push(_video);\r\n });\r\n\r\n return {\r\n videos: _videos,\r\n };\r\n}\r\n\r\nfunction convertMediapageVideoResponse(videoResponse: any): IMediaPageVideo | undefined {\r\n const { mediaItemTagListMediaItemTag, asset } = videoResponse;\r\n\r\n const { videoId } = asset[0];\r\n\r\n const _id = parseStringResponse(videoId);\r\n if (typeof _id === \"undefined\") return undefined;\r\n\r\n const _tags = convertMediapageTagsResponse(mediaItemTagListMediaItemTag);\r\n\r\n return { id: _id, tags: _tags };\r\n}\r\n","import { parseArrayResponse, parseStringResponse } from \"../utils\";\r\nimport IMediaPageScreenshots, {\r\n IMediaPageScreenshot,\r\n} from \"apiConsumers/kenticoApiConsumer/models/mediaPage/IMediaPageScreenshots\";\r\nimport convertMediapageTagsResponse from \"./convertMediapageTagsResponse\";\r\n\r\nexport default function convertMediapageScreenshotsResponse(\r\n response: any\r\n): IMediaPageScreenshots | undefined {\r\n const { items } = response;\r\n\r\n const parsedItems = parseArrayResponse(items);\r\n if (typeof parsedItems === \"undefined\") return undefined;\r\n\r\n let _screenshots: IMediaPageScreenshot[] = [];\r\n parsedItems.forEach((screenshot) => {\r\n const _screenshot = convertMediapageScreenshot(screenshot);\r\n if (typeof _screenshot === \"undefined\") return;\r\n\r\n _screenshots.push(_screenshot);\r\n });\r\n\r\n return {\r\n screenshots: _screenshots,\r\n };\r\n}\r\n\r\nfunction convertMediapageScreenshot(screenshotResponse: any): IMediaPageScreenshot | undefined {\r\n const { mediaItemTagListMediaItemTag, asset } = screenshotResponse;\r\n\r\n const { description, url } = asset[0].asset[0];\r\n\r\n const _src = parseStringResponse(url);\r\n if (typeof _src === \"undefined\") return undefined;\r\n\r\n const _alt = parseStringResponse(description);\r\n\r\n const _tags = convertMediapageTagsResponse(mediaItemTagListMediaItemTag);\r\n\r\n return { src: _src, alt: _alt, tags: _tags };\r\n}\r\n","import { parseArrayResponse, parseStringResponse } from \"../utils\";\r\n\r\nimport IQuote from \"apiConsumers/kenticoApiConsumer/models/quotes/IQuote\";\r\n\r\nexport default function convertQuoteResponse(response: any): IQuote[] | undefined {\r\n const { items } = response;\r\n\r\n const parsedItems = parseArrayResponse(items);\r\n if (typeof parsedItems === \"undefined\") return undefined;\r\n\r\n let _quotes: IQuote[] = [];\r\n parsedItems.forEach((quote) => {\r\n const _quote = convertQuote(quote);\r\n if (typeof _quote === \"undefined\") return;\r\n\r\n _quotes.push(_quote);\r\n });\r\n\r\n return _quotes;\r\n}\r\n\r\nfunction convertQuote(quoteResponse: any): IQuote | undefined {\r\n const { content, source } = quoteResponse;\r\n\r\n const _content = parseStringResponse(content);\r\n if (typeof _content === \"undefined\") return undefined;\r\n\r\n const _source = parseStringResponse(source);\r\n if (typeof _source === \"undefined\") return undefined;\r\n\r\n return { content: _content, source: _source };\r\n}\r\n","import EndpointsBaseClass from \"apiConsumers/EndpointsBaseClass\";\r\nimport IMediaPageVideos from \"./models/mediaPage/IMediaPageVideos\";\r\nimport convertMediapageVideosResponse from \"./converters/mediaPage/convertMediapageVideosResponse\";\r\nimport IMediaPageScreenshots from \"./models/mediaPage/IMediaPageScreenshots\";\r\nimport convertMediapageScreenshotsResponse from \"./converters/mediaPage/convertMediapageScreenshotsResponse\";\r\nimport IQuote from \"./models/quotes/IQuote\";\r\nimport convertQuoteResponse from \"./converters/quotes/convertQuoteResponse\";\r\n\r\nexport default class KenticoApiConsumer extends EndpointsBaseClass {\r\n public async getMediaPageVideos(): Promise {\r\n try {\r\n const response = await this.makeGetRequest(`/website/media_videos`);\r\n\r\n return convertMediapageVideosResponse(response);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n\r\n public async getMediaPageScreenshots(): Promise {\r\n try {\r\n const response = await this.makeGetRequest(`/website/media_screenshots`);\r\n\r\n return convertMediapageScreenshotsResponse(response);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n\r\n public async getQuotes(): Promise {\r\n try {\r\n const response = await this.makeGetRequest(`/website/homepage_quotes`);\r\n\r\n return convertQuoteResponse(response);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import BackendApiConsumer from \"apiConsumers/backendApiConsumer/BackendApiConsumer\";\r\nimport NewsApiConsumer from \"apiConsumers/newsApiConsumer/NewsApiConsumer\";\r\nimport KenticoApiConsumer from \"apiConsumers/kenticoApiConsumer/KenticoApiConsumer\";\r\n\r\nconst baseUrl = window.location.protocol + \"//\" + window.location.host;\r\n\r\nconst { PUBLIC_URL } = process.env;\r\n\r\nconst rootUrl = `${baseUrl}${PUBLIC_URL}/api`;\r\n\r\nexport const backendApi = new BackendApiConsumer({ rootUrl });\r\nexport const newsApi = new NewsApiConsumer({ rootUrl });\r\nexport const kenticoApi = new KenticoApiConsumer({ rootUrl });\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M33.17,10.88c-3.83,0-6.93,3.1-6.93,6.93c0,3.83,3.11,6.93,6.93,6.93c3.83,0,6.93-3.1,6.93-6.93 C40.1,13.98,37,10.88,33.17,10.88z M33.17,21.39c-1.98,0-3.58-1.6-3.58-3.58c0-1.98,1.6-3.58,3.58-3.58c1.98,0,3.58,1.6,3.58,3.58 C36.75,19.79,35.15,21.39,33.17,21.39z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M424.89,337.27c0.42-0.98,0.66-2.04,0.66-3.17c0-4.42-3.59-8.01-8.01-8.01c-4.42,0-8.01,3.59-8.01,8.01 c0,1.13,0.24,2.2,0.66,3.17h4.66c-0.9-0.77-1.49-1.9-1.49-3.18c0-2.31,1.87-4.18,4.18-4.18s4.18,1.87,4.18,4.18 c0,1.28-0.59,2.42-1.5,3.18H424.89z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M156.05,247.11c3.69,0,6.68-2.99,6.68-6.68c0-3.69-2.99-6.68-6.68-6.68c-3.68,0-6.68,2.99-6.68,6.68 C149.37,244.12,152.36,247.11,156.05,247.11z M156.05,237.13c1.82,0,3.29,1.48,3.29,3.29c0,1.82-1.48,3.29-3.29,3.29 s-3.28-1.47-3.29-3.29C152.76,238.6,154.23,237.13,156.05,237.13z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M177.61,178.91c0,1.99,1.62,3.61,3.61,3.61c1.99,0,3.61-1.62,3.61-3.61s-1.62-3.61-3.61-3.61 C179.23,175.3,177.61,176.92,177.61,178.91z M181.22,176.47c1.35,0,2.44,1.09,2.44,2.44s-1.09,2.44-2.44,2.44 c-1.35,0-2.44-1.09-2.44-2.44S179.87,176.47,181.22,176.47z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M103.29,261.56c1.89,0,3.42-1.53,3.42-3.42s-1.53-3.42-3.42-3.42c-1.89,0-3.42,1.53-3.42,3.42S101.4,261.56,103.29,261.56z M103.29,256.06c1.15,0,2.08,0.93,2.08,2.08c0,1.15-0.93,2.08-2.08,2.08c-1.15,0-2.09-0.93-2.08-2.08 C101.21,256.99,102.14,256.06,103.29,256.06z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M254.35,337.27h25.72c-1.76-2.37-3.5-4.75-5.23-7.14C268.03,332.57,261.2,334.94,254.35,337.27z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M382.11,49.58c2,0,3.62-1.62,3.62-3.62s-1.62-3.62-3.62-3.62s-3.62,1.62-3.62,3.62S380.11,49.58,382.11,49.58z M382.11,44.11c1.02,0,1.85,0.83,1.85,1.85c0,1.02-0.83,1.85-1.85,1.85c-1.02,0-1.85-0.83-1.85-1.85 C380.26,44.94,381.09,44.11,382.11,44.11z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M463.38,196.79c-3.97,0-7.19,3.22-7.19,7.19c0,3.97,3.22,7.19,7.19,7.19c3.98,0,7.2-3.22,7.19-7.19 C470.57,200.01,467.35,196.79,463.38,196.79z M463.38,207.75c-2.09,0-3.78-1.69-3.78-3.78c0-2.09,1.69-3.78,3.78-3.78 c2.09,0,3.78,1.69,3.78,3.78C467.16,206.06,465.47,207.75,463.38,207.75z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M335.98,279.69c0,3.85,3.11,6.96,6.96,6.96c3.85,0,6.96-3.12,6.96-6.96c0-3.84-3.11-6.96-6.96-6.96 C339.09,272.73,335.98,275.84,335.98,279.69z M348.38,279.69c0,3-2.44,5.44-5.44,5.44s-5.44-2.43-5.44-5.44s2.44-5.44,5.44-5.44 S348.38,276.69,348.38,279.69z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M445.69,88.91c0,1.84,1.51,3.34,3.35,3.34c1.84,0,3.34-1.49,3.34-3.34c0-1.85-1.49-3.35-3.34-3.35 C447.19,85.56,445.69,87.07,445.69,88.91z M451.33,88.91c0,1.27-1.02,2.29-2.29,2.29s-2.29-1.03-2.29-2.29s1.02-2.29,2.29-2.29 S451.33,87.65,451.33,88.91z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M440.69,25.35c2.19,0,3.96-1.77,3.96-3.96s-1.77-3.96-3.96-3.96s-3.96,1.77-3.96,3.96S438.5,25.35,440.69,25.35z M440.69,19.44c1.08,0,1.95,0.87,1.95,1.95c0,1.08-0.87,1.95-1.95,1.95s-1.95-0.87-1.95-1.95 C438.74,20.31,439.61,19.44,440.69,19.44z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M265.45,113.85c0,2.89,2.35,5.24,5.24,5.24c2.89,0,5.24-2.35,5.24-5.24s-2.35-5.24-5.24-5.24 C267.8,108.61,265.45,110.96,265.45,113.85z M273.4,113.85c0,1.5-1.22,2.71-2.71,2.71c-1.5,0-2.71-1.22-2.71-2.71 c0-1.5,1.22-2.71,2.71-2.71C272.19,111.14,273.4,112.35,273.4,113.85z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M376.21,195.15c0-2.73-2.21-4.94-4.94-4.94c-2.73,0-4.94,2.21-4.94,4.94s2.21,4.94,4.94,4.94 C374,200.09,376.21,197.88,376.21,195.15z M368.73,195.15c0-1.4,1.14-2.54,2.54-2.54c1.4,0,2.54,1.14,2.54,2.54 c0,1.41-1.14,2.54-2.54,2.54C369.87,197.69,368.73,196.55,368.73,195.15z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M256.72,169.89c0-2.25-1.82-4.07-4.07-4.07s-4.07,1.82-4.07,4.07s1.82,4.07,4.07,4.07S256.72,172.14,256.72,169.89z M250.38,169.89c0-1.26,1.02-2.28,2.28-2.28c1.26,0,2.28,1.02,2.28,2.28s-1.03,2.28-2.28,2.28 C251.4,172.17,250.38,171.15,250.38,169.89z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M115.06,137.7c-2.84,0-5.14,2.3-5.14,5.14c0,2.84,2.3,5.14,5.14,5.14c2.84,0,5.14-2.3,5.14-5.14 C120.2,140,117.9,137.7,115.06,137.7z M115.06,145.07c-1.23,0-2.23-1-2.23-2.23s1-2.23,2.23-2.23s2.23,1,2.23,2.23 S116.29,145.07,115.06,145.07z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M226.04,234.88c0,2.77,2.25,5.02,5.02,5.02s5.02-2.25,5.02-5.02c0-2.77-2.25-5.02-5.02-5.02S226.04,232.11,226.04,234.88z M234.03,234.88c0,1.64-1.33,2.97-2.97,2.97s-2.97-1.33-2.97-2.97c0-1.64,1.33-2.96,2.97-2.97 C232.7,231.91,234.03,233.24,234.03,234.88z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M422.64,281.68c-1.61,0-2.91,1.3-2.91,2.91s1.3,2.91,2.91,2.91s2.91-1.3,2.91-2.91 C425.55,282.98,424.25,281.68,422.64,281.68z M422.64,286.64c-1.13,0-2.05-0.92-2.05-2.05c0-1.13,0.92-2.05,2.05-2.05 s2.05,0.92,2.05,2.05C424.69,285.72,423.77,286.64,422.64,286.64z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M252.88,270.27c0,1.54,1.24,2.78,2.77,2.78c1.54,0,2.78-1.25,2.78-2.78c0-1.54-1.24-2.78-2.78-2.78 C254.12,267.49,252.88,268.73,252.88,270.27z M257.19,270.27c0,0.85-0.69,1.54-1.54,1.54c-0.85,0-1.54-0.69-1.54-1.54 s0.69-1.54,1.54-1.54C256.5,268.73,257.19,269.42,257.19,270.27z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M28.21,292.47c3.12-5.74,6.34-11.42,9.63-17.06c-4.21-2.64-8.41-5.31-12.56-8.05c-3.46-2.28-6.9-4.6-10.32-6.95 c-3.4-2.38-6.82-4.73-10.18-7.18c-1.6-1.14-3.19-2.3-4.77-3.47v87.51h6.02c2.78-6.33,5.69-12.58,8.72-18.76 C19.01,309.7,23.54,301.04,28.21,292.47z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M161.96,334.5c-1.67,0-3.07,1.19-3.39,2.77h0.88c0.3-1.1,1.31-1.92,2.51-1.92s2.21,0.82,2.52,1.92h0.87 C165.03,335.69,163.63,334.5,161.96,334.5z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M0.01-0.17v67.54c8.48-1.91,16.95-3.85,25.46-5.69c8.86-1.94,17.72-3.89,26.6-5.76c8.87-1.91,17.75-3.74,26.64-5.58 c6.7-1.38,13.42-2.71,20.13-4.05l-5.73-10.2l-8.99-16.21L75.13,3.67l-1.95-3.58h8.62l9.55,15.55l9.7,15.79l9.61,15.85l3.46,5.71 l-6.66,1.57c-8.83,2.08-17.67,4.12-26.52,6.13c-8.85,1.99-17.7,3.99-26.57,5.91c-8.86,1.96-17.74,3.84-26.61,5.73 c-3.12,0.66-6.24,1.31-9.36,1.96l24.44,9.55c13.66,5.33,27.26,10.81,40.89,16.23l20.43,8.16l20.38,8.29 c13.6,5.48,27.15,11.12,40.7,16.74l2.87,1.19l-2.22,1.97c-4.19,3.72-8.47,7.36-12.7,11.05c-4.24,3.67-8.53,7.31-12.83,10.92 c3.77-4.18,7.55-8.32,11.38-12.43c3.15-3.36,6.27-6.74,9.42-10.08c-12.96-4.44-25.93-8.89-38.85-13.46l-20.76-7.29l-20.71-7.41 c-13.8-4.96-27.63-9.86-41.4-14.9L0.01,78.34v26.64l106.41,26.68L0.01,141.21v21.75c1.24-0.12,2.47-0.24,3.71-0.36 c5.7-0.58,11.42-1.01,17.13-1.5c5.71-0.5,11.44-0.84,17.16-1.27c5.73-0.35,11.45-0.72,17.19-0.99c11.47-0.58,22.97-0.93,34.49-1.08 c11.52-0.11,23.06-0.07,34.68,0.61c-11.16,3.32-22.39,5.99-33.63,8.52c-11.25,2.48-22.52,4.77-33.82,6.82 c-5.65,1.05-11.3,2-16.96,2.97c-5.66,0.89-11.32,1.87-16.99,2.69c-1.41,0.21-2.83,0.42-4.24,0.63l0.33,0.19l8.75,5.05 c5.86,3.33,11.61,6.84,17.42,10.26l8.64,5.26c2.88,1.75,5.75,3.51,8.6,5.32c11.45,7.13,22.77,14.5,33.94,22.14 c5.58,3.82,11.13,7.71,16.62,11.7c5.49,3.98,10.94,8.05,16.26,12.35c-6.47-2.2-12.82-4.64-19.12-7.16 c-6.3-2.52-12.55-5.13-18.76-7.82c-12.42-5.38-24.69-11.01-36.83-16.9c-3.05-1.45-6.07-2.94-9.09-4.44l-9.05-4.5 c-5.99-3.08-12.03-6.08-17.97-9.26l-8.94-4.71l-8.89-4.82c-0.21-0.12-0.42-0.23-0.63-0.34v42.36c4.16,1.84,8.29,3.72,12.38,5.68 c3.76,1.77,7.47,3.63,11.2,5.46c3.7,1.87,7.4,3.76,11.06,5.7c7.33,3.87,14.58,7.88,21.76,12.01l8.47,4.88l-4.95,8.7 c-4.82,8.48-9.81,16.87-14.98,25.15c-5.17,8.28-10.5,16.47-16.07,24.51c-2.42,3.53-4.9,7.03-7.42,10.5H52l0.36-0.5l4.48-6.07 c2.97-4.06,6.01-8.07,9.06-12.08c3.06-4,6.14-7.98,9.31-11.91c-2.47,4.4-5.02,8.74-7.6,13.07c-2.59,4.32-5.19,8.63-7.85,12.9 l-2.84,4.59h32.29c0.01-0.01,0.01-0.01,0.02-0.01l16.35-5.28l7.49-2.42l-4.5,6.36c-0.32,0.46-0.66,0.9-0.98,1.35h48.51 c0.35-2.93,2.83-5.21,5.86-5.21c3.02,0,5.51,2.28,5.86,5.21h38.64c0.57-0.25,1.13-0.51,1.7-0.76c5.5-2.48,11.05-4.84,16.58-7.25 c5.56-2.32,11.1-4.72,16.68-6.98c11.15-4.58,22.35-9.02,33.61-13.31l6.97-2.65l4.5,6.08c3.63,4.91,7.32,9.77,10.88,14.74 c2.43,3.38,4.89,6.75,7.32,10.13h52.21c5.44-4.25,10.91-8.46,16.47-12.58c6.62-4.88,13.29-9.73,20.2-14.3 c-5.04,6.59-10.32,12.91-15.65,19.18c-2.2,2.59-4.44,5.15-6.68,7.7h34.93c-0.29-1.01-0.45-2.07-0.45-3.17 c0-6.52,5.29-11.81,11.81-11.81c6.52,0,11.81,5.28,11.81,11.81c0,1.1-0.17,2.16-0.45,3.17h72.29V-0.17H0.01z M33.18,29.62 c-6.52,0-11.81-5.29-11.81-11.81C21.37,11.29,26.66,6,33.18,6s11.8,5.29,11.8,11.81C44.98,24.33,39.7,29.62,33.18,29.62z M115.06,151.2c-4.61,0-8.35-3.74-8.35-8.35s3.74-8.35,8.35-8.35s8.35,3.73,8.35,8.35C123.41,147.46,119.67,151.2,115.06,151.2z M472.46,28.3l2.38,4.86L480,43.68l5.06,10.57c1.68,3.53,3.42,7.03,5.05,10.58l4.96,10.62l1.24,2.65l-2.73,0.42 c-2.94,0.46-5.9,0.86-8.85,1.27l-8.86,1.23c-5.91,0.76-11.83,1.53-17.77,2.17c5.75-1.62,11.52-3.11,17.3-4.6l8.68-2.15 c1.94-0.48,3.88-0.96,5.83-1.43l-4.45-7.79c-1.95-3.39-3.81-6.82-5.72-10.23l-5.69-10.25l-2.97-5.45 c-3.31,4.19-6.62,8.37-9.97,12.53c-4.44,5.57-8.95,11.1-13.44,16.63c-4.52,5.5-9.02,11.03-13.59,16.5 c-3.79,4.59-7.63,9.14-11.48,13.68l8.42,7.22l11.1,9.72c3.72,3.22,7.38,6.5,11.04,9.79c3.06,2.75,6.13,5.49,9.17,8.27l1.55-3.95 c0.82-2.12,1.69-4.22,2.54-6.33c0.86-2.11,1.69-4.22,2.57-6.32l2.65-6.3l-1.66,6.63c-0.55,2.21-1.15,4.4-1.73,6.6 c-0.59,2.2-1.15,4.4-1.77,6.59l-1.82,6.57l-0.64,2.31l-2.08-1.53c-3.96-2.92-7.87-5.91-11.79-8.88c-3.92-2.97-7.84-5.94-11.71-8.97 L426.79,113l-11.55-9.17l-2.76-2.19l2.26-2.88c4.41-5.61,8.82-11.21,13.3-16.75c4.45-5.57,8.96-11.08,13.46-16.61 c4.53-5.51,9.04-11.02,13.61-16.49c4.55-5.49,9.16-10.93,13.76-16.37L472.46,28.3z M453.77,88.91c0,2.61-2.12,4.73-4.73,4.73 c-2.61,0-4.73-2.12-4.73-4.73s2.12-4.73,4.73-4.73C451.65,84.18,453.77,86.3,453.77,88.91z M440.69,13.04 c4.61,0,8.35,3.74,8.35,8.35s-3.74,8.35-8.35,8.35s-8.35-3.74-8.35-8.35S436.08,13.04,440.69,13.04z M438.45,48.8l9.86-10.42 c6.6-6.93,13.24-13.82,20.01-20.6c-5.68,7.71-11.5,15.31-17.36,22.87l-8.83,11.31l-8.9,11.24c-5.97,7.47-11.97,14.91-18.01,22.32 c-5.09,6.23-10.21,12.44-15.34,18.64c5.2,4.44,10.4,8.88,15.57,13.36c6.28,5.43,12.55,10.86,18.78,16.33 c6.26,5.45,12.47,10.95,18.68,16.45c4.48,3.95,8.93,7.93,13.38,11.92l3.98-10.65l6.56-17.24l6.67-17.2 c1.72-4.4,3.46-8.8,5.21-13.19l-10.44-0.41l-14.92-0.71c-4.97-0.21-9.95-0.53-14.92-0.81c-4.97-0.27-9.95-0.62-14.92-0.99 c4.97-0.36,9.95-0.72,14.92-0.99c4.97-0.28,9.95-0.6,14.92-0.81l14.92-0.71l14.92-0.58l4.28-0.17l-1.37,4.3 c-1.86,5.86-3.75,11.72-5.66,17.56l-5.77,17.52l-5.88,17.48l-5.98,17.44l-2.28,6.65l-5.38-4.67c-6.26-5.43-12.57-10.83-18.8-16.3 c-6.24-5.45-12.49-10.91-18.69-16.42c-6.23-5.48-12.41-11.01-18.59-16.54c-6.18-5.52-12.32-11.1-18.47-16.67l-3.36-3.04l2.92-3.28 c6.35-7.13,12.73-14.25,19.14-21.35c6.42-7.08,12.88-14.13,19.37-21.15L438.45,48.8z M346.51,263.14l0.32-14.36l0.36-16.36 l0.45-16.36l0.54-16.36l0.55-14.05c-5.02-4.48-10-9-14.95-13.56c-5.51-5.12-11-10.27-16.41-15.51 c-5.42-5.23-10.78-10.53-16.04-15.94c-5.27-5.4-10.5-10.85-15.52-16.53c6.3,4.22,12.4,8.67,18.46,13.17 c6.06,4.49,12.03,9.1,17.94,13.77c5.92,4.66,11.76,9.41,17.57,14.19c5.79,4.8,11.54,9.65,17.25,14.55l1.77,1.52l-0.08,2.39 l-0.54,16.36l-0.64,16.36l-0.72,16.35l-0.12,2.4l0.37-0.45l9.33-11.36l9.4-11.31l9.48-11.25l4.96-5.89l0.31,7.48l0.63,15.43 l0.55,15.44c0.19,5.15,0.29,10.3,0.44,15.45c0.14,5.15,0.23,10.3,0.28,15.46c-0.75-5.1-1.47-10.2-2.14-15.31 c-0.65-5.1-1.36-10.21-1.98-15.32l-1.87-15.33l-0.9-7.69l-4.24,5.86l-8.69,11.86l-8.76,11.81l-8.83,11.72L346.51,263.14z M354.75,279.69c0,6.52-5.29,11.81-11.81,11.81c-6.52,0-11.81-5.29-11.81-11.81c0-6.52,5.29-11.81,11.81-11.81 C349.46,267.88,354.75,273.17,354.75,279.69z M236.55,201.88c-4.03-0.01-8.06-0.03-12.09-0.09c-4.03-0.05-8.06-0.14-12.09-0.25 l-5.82-0.16l3.78-4.19c3.25-3.61,6.58-7.16,10.01-10.63c1.7-1.74,3.47-3.44,5.22-5.14c1.78-1.68,3.57-3.36,5.44-4.96 c-1.24,2.13-2.55,4.2-3.88,6.25c-1.35,2.04-2.69,4.08-4.09,6.08c-1.71,2.47-3.48,4.9-5.26,7.31c2.23-0.05,4.46-0.09,6.69-0.12 c4.03-0.06,8.06-0.08,12.09-0.09c4.03,0.01,8.06,0.01,12.09,0.07c4.03,0.04,8.06,0.13,12.09,0.22l4.83,0.11l-2.49,3.95 c-2.67,4.21-5.42,8.37-8.28,12.47c-1.43,2.05-2.91,4.06-4.4,6.08c-1.5,2.01-3.03,4-4.65,5.94c0.88-2.36,1.84-4.68,2.84-6.98 c1.01-2.29,2.02-4.58,3.09-6.84c1.46-3.1,3-6.17,4.56-9.22c-2.54,0.05-5.07,0.1-7.59,0.12 C244.61,201.87,240.58,201.87,236.55,201.88z M239.41,234.88c0,4.61-3.74,8.35-8.35,8.35c-4.61,0-8.35-3.74-8.35-8.35 c0-4.61,3.74-8.35,8.35-8.35C235.67,226.53,239.41,230.27,239.41,234.88z M244.59,169.89c0-4.45,3.61-8.06,8.06-8.06 s8.06,3.61,8.06,8.06s-3.61,8.06-8.06,8.06C248.2,177.95,244.59,174.34,244.59,169.89z M254.62,224.68 c3.16-4.54,6.44-8.97,9.83-13.32c5.54-7.09,11.34-13.97,17.43-20.62c-0.77,0.12-1.53,0.25-2.31,0.36c-2.89,0.44-5.8,0.82-8.74,1.06 c2.66-1.27,5.36-2.42,8.08-3.49c2.71-1.11,5.45-2.11,8.19-3.09l6.07-2.18l-3.89,5.55c-6.35,9.05-13.17,17.72-20.36,26.08 c-3.6,4.18-7.3,8.28-11.13,12.26c-3.85,3.97-7.8,7.85-12.07,11.48C248.45,233.88,251.49,229.24,254.62,224.68z M282.97,167.6 c-9.91-9.44-19.62-19.08-29.18-28.84c-9.58-9.74-18.97-19.67-28.26-29.68c-4.63-5.02-9.26-10.03-13.82-15.12 c-4.6-5.05-9.11-10.18-13.64-15.29L184.56,63.4l19.7,4.1c5.23,1.08,10.45,2.2,15.67,3.37l7.82,1.78l7.8,1.87 c5.19,1.27,10.39,2.57,15.56,3.98c5.03,1.33,10.04,2.74,15.04,4.19c5.2-1.19,10.4-2.35,15.62-3.48c2.77-0.58,5.53-1.19,8.31-1.73 c2.78-0.55,5.55-1.13,8.34-1.63c-2.6,1.14-5.22,2.21-7.83,3.3c-2.61,1.1-5.24,2.13-7.86,3.2c-5.25,2.1-10.51,4.15-15.79,6.17 l-0.41,0.16l-0.98-0.08c-5.35-0.43-10.69-0.91-16.02-1.47c-5.33-0.54-10.65-1.17-15.96-1.82l-7.96-1.02l-4.48-0.63 c0.29,0.31,0.58,0.61,0.86,0.92c4.65,5,9.21,10.08,13.79,15.15c9.11,10.17,18.14,20.42,26.97,30.85 c8.85,10.42,17.55,20.96,26.05,31.7c8.48,10.75,16.85,21.61,24.7,32.93C302.95,186.35,292.9,177.03,282.97,167.6z M304.59,61.92 c2.25,1.25,4.47,2.57,6.69,3.88c2.2,1.34,4.4,2.69,6.57,4.09l4.29,2.78l-3.54,2.97c-2.64,2.22-5.31,4.41-7.99,6.58 s-5.38,4.32-8.1,6.45c-5.46,4.24-10.97,8.43-16.7,12.37c4.39-5.4,9.01-10.54,13.68-15.64c2.35-2.53,4.71-5.06,7.09-7.55 c1.16-1.22,2.34-2.41,3.51-3.62c-0.88-0.39-1.76-0.79-2.64-1.19c-2.33-1.1-4.66-2.19-6.96-3.35c-2.32-1.12-4.59-2.35-6.88-3.52 c-2.26-1.23-4.55-2.43-6.79-3.71l-8.43-4.86l8.98-3.14c5.37-1.88,10.76-3.7,16.17-5.45c5.41-1.78,10.85-3.46,16.3-5.1 c10.92-3.24,21.9-6.32,33.13-8.72c-10.14,5.39-20.52,10.11-30.96,14.66c-5.23,2.26-10.47,4.47-15.75,6.6 c-2.24,0.91-4.48,1.8-6.73,2.69C301.23,60.05,302.92,60.96,304.59,61.92z M280.34,113.85c0,5.33-4.32,9.65-9.65,9.65 c-5.33,0-9.65-4.32-9.65-9.65s4.32-9.65,9.65-9.65S280.34,108.52,280.34,113.85z M362.92,195.15c0-4.61,3.74-8.35,8.35-8.35 c4.61,0,8.35,3.74,8.35,8.35s-3.74,8.35-8.35,8.35C366.66,203.5,362.92,199.76,362.92,195.15z M381.2,179.64 c-7.04-4.88-14-9.89-20.96-14.88l-10.37-7.58c-3.46-2.53-6.92-5.05-10.33-7.64l-10.27-7.71c-3.42-2.57-6.8-5.21-10.2-7.81 c-6.82-5.18-13.52-10.51-20.26-15.8l-8.75-6.87l7.67-7.47l12.89-12.56l13.04-12.41c4.41-4.08,8.77-8.2,13.22-12.24 c2-1.81,3.99-3.63,5.99-5.44l-5.52-2.11l-12.33-4.71l11.48-4.51c6.65-2.61,13.31-5.2,20.04-7.66c3.36-1.25,6.74-2.45,10.12-3.64 c3.4-1.17,6.79-2.35,10.23-3.42c-2.92,2.12-5.89,4.14-8.85,6.16c-2.98,2-5.96,3.99-8.96,5.94c-2.4,1.57-4.82,3.11-7.24,4.65 c1.57,0.32,3.13,0.66,4.7,0.99l9.75,2.08l-6.98,8.37c-3.85,4.62-7.77,9.17-11.69,13.72c-3.92,4.56-7.92,9.03-11.87,13.55 l-12.04,13.38l-4.74,5.14c4.06,2.98,8.11,5.98,12.13,9.02c3.42,2.58,6.86,5.12,10.26,7.73l10.19,7.83c3.4,2.6,6.77,5.25,10.13,7.9 l10.09,7.96c6.68,5.37,13.37,10.72,19.96,16.2c13.22,10.91,26.28,22.04,39.09,33.49c12.79,11.48,25.44,23.14,37.48,35.59 c-15.23-8.27-29.86-17.33-44.35-26.57C409.48,199.04,395.26,189.45,381.2,179.64z M382.11,40.06c3.26,0,5.9,2.64,5.9,5.9 s-2.64,5.9-5.9,5.9c-3.26,0-5.9-2.64-5.9-5.9S378.85,40.06,382.11,40.06z M463.38,215.78c-6.52,0-11.81-5.29-11.81-11.81 s5.29-11.81,11.81-11.81c6.52,0,11.81,5.29,11.81,11.81C475.19,210.5,469.91,215.78,463.38,215.78z M419.72,0.83 c0.15-0.25,0.3-0.49,0.45-0.74h2.61c-0.48,0.62-0.96,1.24-1.44,1.86c-2.91,3.72-5.84,7.44-8.85,11.09 C414.84,8.93,417.28,4.88,419.72,0.83z M369.15,20.44c5.55,0.93,11.09,1.91,16.62,2.92c5.52,1.02,11.05,2.05,16.56,3.14 c5.52,1.06,11.01,2.21,16.52,3.31l7.45,1.49l-5.02,6.3l-7.75,9.73l-7.82,9.68c-2.59,3.24-5.24,6.42-7.87,9.63 c-2.63,3.2-5.25,6.41-7.92,9.58l-7.97,9.54l-8.04,9.48c-3.74,4.43-7.52,8.81-11.31,13.2l6.09,4.6c4.02,3.03,8.02,6.1,12,9.18 c8,6.12,15.92,12.34,23.84,18.57l11.83,9.41l11.76,9.5c7.8,6.38,15.58,12.79,23.29,19.3l9.14,7.72l-11.5-0.66 c-4.03-0.23-8.05-0.46-12.08-0.73c-1.88-0.12-3.76-0.26-5.64-0.39c1.62,1.52,3.24,3.03,4.84,4.56l4.84,4.68 c1.61,1.56,3.22,3.12,4.81,4.72c-1.91-1.2-3.78-2.43-5.66-3.66l-5.62-3.71c-3.73-2.49-7.44-5.01-11.13-7.55l-5.41-3.72l6.89-0.51 c4.03-0.3,8.05-0.58,12.08-0.83c0.09-0.01,0.19-0.01,0.28-0.02c-5.21-3.53-10.4-7.08-15.58-10.65l-12.39-8.65l-12.33-8.75 c-8.19-5.88-16.36-11.76-24.47-17.74c-4.07-2.97-8.12-5.96-12.15-8.98l-12.1-9.04l-6.05-4.52l4.97-5.66 c5.47-6.22,10.89-12.5,16.42-18.67l8.27-9.29l8.34-9.22c2.77-3.08,5.58-6.13,8.38-9.18c2.8-3.05,5.59-6.12,8.43-9.14l8.49-9.09 l3.4-3.59c-2.84-0.87-5.67-1.75-8.5-2.66c-5.36-1.68-10.71-3.42-16.05-5.16c-5.34-1.77-10.67-3.56-15.97-5.36 c-5.32-1.85-10.62-3.74-15.91-5.71C358.03,18.64,363.6,19.52,369.15,20.44z M335.91,0.09L335.91,0.09c0.23-0.05,0.46-0.09,0.7-0.09 c0.25,0,0.48,0.04,0.7,0.09c1.32,0.32,2.3,1.49,2.3,2.91c0,1.66-1.34,3-3,3c-1.66,0-3-1.34-3-3C333.61,1.59,334.6,0.41,335.91,0.09 z M328.4,0.09h4.56c-0.64,0.8-1.04,1.8-1.04,2.91c0,2.59,2.1,4.69,4.69,4.69c2.59,0,4.69-2.1,4.69-4.69c0-1.1-0.4-2.11-1.04-2.91 h4.56c0.32,0.91,0.51,1.89,0.51,2.91c0,4.82-3.9,8.72-8.72,8.72c-4.81,0-8.71-3.9-8.71-8.72C327.9,1.98,328.08,1,328.4,0.09z M289.16,16.17l2.47,0.25l6.85,0.69l6.85,0.78l4.94,0.62c-0.25-0.42-0.51-0.84-0.76-1.26c-1.83-3.07-3.62-6.17-5.33-9.26 c-1.47-2.6-2.89-5.23-4.29-7.87h4.8c1.36,1.56,2.71,3.12,4.04,4.71c2.31,2.74,4.58,5.5,6.81,8.29c2.25,2.77,4.43,5.6,6.61,8.42 l5.56,7.2l-9.48-0.49c-2.3-0.12-4.6-0.2-6.89-0.35l-6.88-0.43l-6.87-0.51l-4.37-0.38c-2.19,2.43-4.38,4.86-6.6,7.27l-4.2,4.51 l-4.26,4.45c-2.86,2.96-5.74,5.89-8.67,8.78c-2.12,2.1-4.27,4.18-6.44,6.24c0.61,0.47,1.21,0.93,1.82,1.39 c1.63,1.28,3.27,2.53,4.88,3.84c1.62,1.29,3.23,2.6,4.82,3.94c1.59,1.33,3.17,2.7,4.72,4.1c-1.95-0.77-3.88-1.57-5.78-2.4 c-1.91-0.83-3.8-1.68-5.68-2.56c-1.89-0.86-3.75-1.77-5.62-2.66c-1.85-0.92-3.71-1.82-5.55-2.76l-3.03-1.56l2.35-3.13 c2.47-3.3,4.99-6.56,7.55-9.78c2.55-3.23,5.16-6.41,7.78-9.57l3.96-4.72l4.02-4.67c2.7-3.1,5.42-6.18,8.17-9.23L289.16,16.17z M215.55,0.09h2.92c1.07,0.54,1.81,1.63,1.81,2.91c0,1.81-1.46,3.27-3.27,3.27s-3.27-1.46-3.27-3.27 C213.74,1.72,214.48,0.63,215.55,0.09z M208.8,0.09h3.28c-0.5,0.85-0.8,1.85-0.8,2.91c0,3.17,2.56,5.73,5.73,5.73 s5.73-2.57,5.73-5.73c0-1.06-0.29-2.06-0.8-2.91h3.28c0.32,0.91,0.51,1.89,0.51,2.91c0,4.82-3.9,8.72-8.72,8.72 s-8.72-3.9-8.72-8.72C208.29,1.98,208.47,1,208.8,0.09z M165.37,14.82c1.27-4.19,2.67-8.34,4.01-12.54 c0.23-0.74,0.48-1.47,0.72-2.21h4.39c-0.29,1.15-0.56,2.3-0.86,3.44c-0.88,3.38-1.72,6.77-2.6,10.14l10.46,2.66 c4.3,1.14,8.61,2.26,12.9,3.44c4.3,1.16,8.59,2.34,12.87,3.57l11.87,3.36l14.39-6.36L249,13.71c5.19-2.13,10.36-4.3,15.59-6.35 c2.61-1.05,5.22-2.07,7.85-3.07c2.62-1.01,5.25-2,7.9-2.95c-2.44,1.41-4.89,2.8-7.35,4.15c-2.45,1.37-4.92,2.71-7.4,4.03 c-4.93,2.68-9.93,5.24-14.9,7.84l-15.02,7.59l-15.11,7.39l-0.92,0.45l-1.06-0.28l-12.89-3.47c-4.31-1.14-8.6-2.32-12.88-3.53 c-4.29-1.19-8.56-2.43-12.84-3.66l-12.8-3.8l-2.55-0.76L165.37,14.82z M169.79,35.67l17,4.48l16.98,4.55l15.4,4.2 c4.59-2.61,9.21-5.19,13.85-7.73l7.73-4.16l7.79-4.06c2.59-1.37,5.21-2.68,7.84-3.98s5.23-2.64,7.89-3.88 c5.3-2.53,10.62-5.02,16.06-7.29c-4.66,3.62-9.45,7.02-14.26,10.38c-2.39,1.71-4.84,3.31-7.26,4.96s-4.85,3.28-7.32,4.86 l-7.37,4.78l-7.43,4.68c-4.98,3.08-9.97,6.12-15,9.11l-1.4,0.84l-1.62-0.43l-16.98-4.55l-16.96-4.62l-16.94-4.69 c-2.38-0.65-4.76-1.33-7.13-2c4.62,6.6,9.23,13.21,13.77,19.87c6.48,9.47,13.03,18.9,19.43,28.44l9.65,14.27l9.55,14.34 c6.35,9.56,12.65,19.18,18.84,28.86c-7.16-8.99-14.21-18.07-21.2-27.18l-10.47-13.68l-10.37-13.75 c-6.95-9.15-13.75-18.4-20.61-27.61c-6.88-9.19-13.6-18.49-20.39-27.75l-6.02-8.2l9.93,2.56 C158.44,32.75,164.13,34.17,169.79,35.67z M140.79,0.09h4.49c0.88,0.67,1.45,1.72,1.45,2.91c0,2.04-1.65,3.69-3.69,3.69 c-2.04,0-3.69-1.65-3.69-3.69C139.35,1.81,139.92,0.77,140.79,0.09z M135.22,0.09h3.82c-0.6,0.82-0.96,1.82-0.96,2.91 c0,2.74,2.22,4.96,4.96,4.96c2.74,0,4.96-2.22,4.96-4.96c0-1.09-0.36-2.09-0.96-2.91h3.82C151.2,1,151.39,1.97,151.39,3 c0,4.61-3.74,8.35-8.35,8.35c-4.61,0-8.35-3.74-8.35-8.35C134.69,1.98,134.88,1,135.22,0.09z M124.34,97.72l-9.31-2.61l-9.28-2.71 c-6.2-1.78-12.35-3.69-18.51-5.56c-6.17-1.86-12.31-3.8-18.45-5.74l-12.34-3.9l12.85-2.29c10.84-1.94,21.7-3.78,32.57-5.55 c9.52-1.53,19.06-3.01,28.61-4.42c-2.02-5.05-4.02-10.11-5.98-15.19c-2.43-6.39-4.95-12.74-7.31-19.16l-3.57-9.61l-3.47-9.62 c-1.35-3.73-2.65-7.48-3.94-11.24h1.36c1.69,3.4,3.35,6.81,4.99,10.23l4.41,9.26l4.33,9.3c2.9,6.19,5.65,12.45,8.48,18.67 c2.81,6.23,5.56,12.48,8.28,18.75l1.63,3.75l-4.12,0.73c-10.84,1.93-21.71,3.73-32.58,5.48c-6.7,1.06-13.4,2.09-20.1,3.1 c2.04,0.74,4.08,1.47,6.11,2.23c6.04,2.23,12.1,4.42,18.11,6.75l9.03,3.44l9,3.54c6,2.37,11.97,4.8,17.91,7.34 C136.78,101.12,130.55,99.45,124.34,97.72z M177.3,161.86c3.34-1.46,6.68-2.91,10.04-4.33l-4.98-10.68l-5.51-12.07 c-3.71-8.03-7.25-16.14-10.86-24.21c-3.62-8.07-7.14-16.18-10.66-24.29l-5.25-12.18l-5.2-12.2l-12.22-28.71l18.97,24.83 c6.48,8.48,12.95,16.98,19.35,25.52l9.59,12.82c3.18,4.28,6.38,8.55,9.52,12.87l9.46,12.92c3.16,4.3,6.31,8.61,9.41,12.96 c6.23,8.67,12.47,17.33,18.59,26.09l1.26,1.8l-1.54,1.3c-2.8,2.35-5.57,4.75-8.41,7.07l-8.47,7.01l-8.53,6.94 c-2.86,2.3-5.73,4.59-8.62,6.85c2.52-2.67,5.06-5.31,7.62-7.94l7.71-7.85l7.77-7.78c2.07-2.1,4.17-4.14,6.27-6.2 c-6.31-7.76-12.53-15.6-18.75-23.44c-3.33-4.17-6.62-8.37-9.89-12.59l-9.84-12.64c-3.29-4.2-6.53-8.44-9.78-12.68l-9.71-12.73 c-0.42-0.55-0.83-1.1-1.24-1.64c2.85,7.13,5.7,14.26,8.47,21.42c3.2,8.25,6.47,16.46,9.57,24.75l4.7,12.41l4.61,12.45l0.57,1.53 l-1.44,0.46c-3.99,1.27-8,2.49-12.01,3.72c-4,1.23-8.03,2.41-12.06,3.56C169.63,165.24,173.45,163.52,177.3,161.86z M187.11,178.91 c0,3.26-2.64,5.9-5.9,5.9c-3.26,0-5.9-2.64-5.9-5.9s2.65-5.9,5.9-5.9C184.47,173.01,187.11,175.65,187.11,178.91z M131.14,182.87 c2.48-2.87,4.99-5.71,7.55-8.51c2.54-2.81,5.15-5.57,7.78-8.31c2.65-2.72,5.33-5.42,8.08-8.06c2.76-2.62,5.53-5.24,8.48-7.71 c-1.99,3.29-4.16,6.43-6.33,9.56c-2.19,3.12-4.45,6.18-6.74,9.21c-2.31,3.02-4.64,6.02-7.03,8.96c-1.42,1.77-2.87,3.52-4.32,5.26 c6.4,1.94,12.76,4.02,19.07,6.28c3.87,1.38,7.72,2.83,11.54,4.37c3.81,1.58,7.63,3.13,11.36,4.97c-4.13-0.5-8.18-1.29-12.23-2.06 c-4.04-0.81-8.06-1.71-12.05-2.67c-7.99-1.91-15.9-4.1-23.74-6.48l-4.42-1.34L131.14,182.87z M118.32,229.96 c-6.08-3.2-12.01-6.61-17.85-10.16c-2.94-1.76-5.8-3.61-8.69-5.43c-2.85-1.87-5.72-3.72-8.54-5.64 c-5.65-3.82-11.19-7.8-16.67-11.87l-9.62-7.14l11.16-3l6.34-1.7l6.37-1.6l6.4-1.5c2.15-0.45,4.28-0.95,6.44-1.38 c4.3-0.9,8.63-1.69,12.99-2.4c4.36-0.71,8.76-1.3,13.22-1.67c-3.87,2.24-7.82,4.27-11.8,6.18c-3.98,1.9-7.99,3.73-12.03,5.45 c-2.02,0.88-4.06,1.69-6.08,2.54l-6.11,2.43l-1.46,0.55c2.57,1.74,5.12,3.49,7.65,5.29c2.79,1.96,5.52,4,8.28,6.01 c2.72,2.07,5.46,4.1,8.13,6.23c5.38,4.21,10.66,8.57,15.79,13.14c5.12,4.59,10.16,9.29,14.87,14.48 C130.59,236.21,124.41,233.14,118.32,229.96z M103.29,252.24c3.26,0,5.9,2.64,5.9,5.9c0,3.26-2.64,5.9-5.9,5.9 c-3.26,0-5.91-2.64-5.9-5.9C97.39,254.88,100.03,252.24,103.29,252.24z M82.75,318.31c1.67-3.4,3.39-6.78,5.14-10.13 c1.73-3.37,3.51-6.7,5.3-10.03l2.67-5l2.73-4.96l0.79-1.44c-4.99,2.72-9.99,5.42-15.01,8.08L72.64,301l-11.78,6.07l-11.28,5.82 l6.02-11.23l6.03-11.25l6.11-11.21l6.18-11.17l4.42-7.84c-4.3-2.06-8.6-4.13-12.88-6.23c-5.46-2.68-10.9-5.4-16.31-8.17l-8.13-4.15 l-8.09-4.24c-5.38-2.86-10.74-5.75-16.05-8.76c5.78,1.99,11.49,4.09,17.19,6.23l8.53,3.25l8.49,3.34c5.66,2.22,11.3,4.5,16.92,6.81 s11.23,4.66,16.82,7.04l3.5,1.49l-1.81,3.5l-5.87,11.34l-5.95,11.29l-6.03,11.25l-0.17,0.3l0.7-0.34l11.94-5.74 c7.98-3.79,15.98-7.53,24.03-11.19l9.1-4.14l-5.48,8.07l-6.36,9.38l-3.19,4.68l-3.23,4.69c-2.16,3.1-4.33,6.2-6.55,9.26 C87.26,312.23,85.03,315.28,82.75,318.31z M222.34,302.34c-11.14,2.53-22.31,4.82-33.5,6.93c-11.19,2.15-22.4,4.06-33.63,5.89 c-5.62,0.92-11.24,1.74-16.86,2.61l-16.88,2.4l-29.84,4.23l21.89-21.15c6.79-6.57,13.63-13.1,20.48-19.62l10.34-9.71l5.17-4.85 l5.22-4.8l10.43-9.61l10.53-9.51c3.5-3.18,7.03-6.33,10.58-9.46c0.29-0.26,0.58-0.51,0.87-0.77l-10.23-4.33 c-7.61-3.26-15.21-6.58-22.77-9.99c-7.56-3.39-15.09-6.9-22.59-10.48c-7.49-3.61-14.96-7.28-22.33-11.23 c8.2,1.62,16.3,3.52,24.38,5.49c8.07,1.99,16.11,4.06,24.11,6.24c8.01,2.16,15.99,4.42,23.94,6.73l11.91,3.52l11.87,3.63 l12.59,3.84l-9.67,10.02c-3.29,3.4-6.64,6.74-9.95,10.12c-3.32,3.38-6.65,6.74-10.01,10.06l-10.06,10l-10.15,9.91l-5.08,4.95 l-5.12,4.91l-9.9,9.48c1.65-0.14,3.3-0.3,4.95-0.43c11.34-0.92,22.68-1.78,34.06-2.38c11.37-0.64,22.77-1.1,34.19-1.33 c11.42-0.22,22.86-0.29,34.38,0.21C244.6,297.12,233.48,299.8,222.34,302.34z M144.24,240.42c0-6.52,5.29-11.81,11.81-11.81 c6.52,0,11.81,5.29,11.81,11.81c0,6.52-5.29,11.81-11.81,11.81C149.53,252.23,144.24,246.94,144.24,240.42z M255.45,284.08 l-10.46-0.36l-10.45-0.43c-6.96-0.27-13.93-0.65-20.89-0.98c-6.96-0.32-13.92-0.76-20.88-1.14l-9.69-0.53l8.97-3.87 c6.32-2.74,12.69-5.38,19.05-8.03c6.36-2.66,12.72-5.31,19.11-7.89c6.39-2.58,12.75-5.23,19.16-7.76 c6.18-2.44,12.35-4.93,18.55-7.34l2.36-4.52l2.87-5.25c0.97-1.74,1.97-3.47,2.98-5.2l1.55-2.57l1.61-2.55l-0.87,2.88l-0.94,2.85 c-0.65,1.89-1.3,3.78-1.98,5.66l-2.09,5.61l-2.2,5.56l-0.27,0.68l-0.81,0.35c-6.31,2.77-12.67,5.44-19,8.16 c-6.33,2.73-12.72,5.33-19.07,8c-6.35,2.68-12.73,5.28-19.12,7.87c-3.37,1.37-6.74,2.74-10.12,4.11c3.69,0.29,7.38,0.59,11.07,0.93 c6.94,0.63,13.89,1.19,20.83,1.88l10.41,0.99l10.45,1.07c6.94,0.72,13.87,1.5,20.8,2.34C269.4,284.48,262.42,284.32,255.45,284.08z M261.55,270.27c0,3.26-2.64,5.9-5.9,5.9s-5.9-2.64-5.9-5.9s2.64-5.91,5.9-5.9C258.91,264.37,261.55,267.01,261.55,270.27z M289.46,250.98l-0.85,0.55c-2.18,1.41-4.37,2.79-6.58,4.15c-1.48,0.91-2.98,1.79-4.48,2.68c0.99,0.66,1.98,1.33,2.96,2.01 c1.78,1.23,3.56,2.47,5.29,3.8c-2.09-0.63-4.13-1.35-6.17-2.08c-2.04-0.72-4.06-1.5-6.07-2.28l-2.44-0.94l2.22-1.98 c1.94-1.73,3.9-3.43,5.88-5.11c1.65-1.39,3.31-2.75,4.97-4.11c0.83-6.55,1.82-13.07,2.96-19.56c0.59-3.41,1.23-6.81,1.9-10.21 c0.24-1.18,0.48-2.36,0.72-3.53c-0.38,0.21-0.75,0.42-1.12,0.63c-2.45,1.33-4.9,2.63-7.38,3.91c-2.48,1.26-4.97,2.52-7.5,3.71 c-2.53,1.18-5.07,2.35-7.68,3.42c2.09-1.9,4.24-3.68,6.4-5.46c2.16-1.77,4.37-3.47,6.58-5.17c2.22-1.68,4.46-3.34,6.71-4.97 c2.26-1.62,4.52-3.23,6.81-4.8l5.72-3.94l-0.98,7.13c-0.47,3.44-0.98,6.86-1.54,10.28c-0.56,3.42-1.14,6.83-1.79,10.23 c-1.25,6.82-2.65,13.6-4.24,20.35L289.46,250.98z M329.71,322.39c-4.33-3.37-8.61-6.79-12.84-10.27c-4.24-3.47-8.42-7-12.58-10.56 c-4.15-3.57-8.27-7.17-12.36-10.81l-1.34-1.19l0.23-1.83c0.83-6.66,1.69-13.32,2.66-19.97c0.94-6.65,1.99-13.28,3.1-19.91 c1.11-6.62,2.33-13.24,3.64-19.84c1.33-6.6,2.73-13.19,4.42-19.74c-0.04,6.77-0.37,13.5-0.77,20.22 c-0.42,6.72-0.93,13.43-1.55,20.12c-0.62,6.7-1.3,13.38-2.09,20.05c-0.7,6.09-1.48,12.16-2.3,18.23c3.57,3.3,7.12,6.61,10.64,9.96 c3.95,3.78,7.88,7.59,11.76,11.46c3.89,3.86,7.71,7.78,11.5,11.74c3.77,3.98,7.51,8.01,11.11,12.18 C338.43,329.06,334.05,325.75,329.71,322.39z M355.87,302.53c-0.68,1.92-1.37,3.84-2.08,5.74c-1.41,3.81-2.89,7.59-4.39,11.36 l-1.55,3.91l-3.38-3.33c-3.03-2.99-6.05-5.99-9.03-9.02c-2.99-3.02-5.95-6.08-8.88-9.15c-5.87-6.15-11.64-12.38-17.34-18.67 l-1.76-1.94l0.49-2.85c1.21-7.07,2.48-14.14,3.85-21.18c0.66-3.53,1.36-7.05,2.08-10.56c0.72-3.51,1.41-7.03,2.18-10.54 c1.48-7.02,3.04-14.03,4.67-21.02c1.51-6.44,3.07-12.87,4.73-19.28c-1.52-2.24-3.02-4.5-4.53-6.76c-1.89-2.91-3.79-5.8-5.63-8.74 c-3.7-5.87-7.31-11.8-10.67-17.93c5.14,4.74,10.02,9.68,14.82,14.69c2.41,2.5,4.76,5.04,7.12,7.57c2.33,2.56,4.67,5.1,6.96,7.69 l1.13,1.28l-0.3,2.22c-0.95,7.13-2.03,14.23-3.16,21.32c-1.13,7.09-2.34,14.17-3.63,21.23c-0.62,3.53-1.31,7.06-1.98,10.58 c-0.67,3.52-1.36,7.05-2.08,10.56c-1.23,6.19-2.55,12.36-3.9,18.52c4.75,5.84,9.46,11.71,14.07,17.67 c2.61,3.36,5.19,6.74,7.74,10.14c1.74,2.31,3.46,4.64,5.17,6.97c1.37-2.1,2.75-4.21,4.17-6.29c1.13-1.68,2.29-3.35,3.47-5.04 c1.2-1.65,2.35-3.33,3.59-4.96C357.21,298.68,356.52,300.59,355.87,302.53z M411.29,302.99c-1.99-2.51-3.96-5.05-5.86-7.62 c-1.91-2.57-3.78-5.16-5.61-7.77c-0.84-1.18-1.66-2.36-2.47-3.55c-1.2,1.11-2.41,2.22-3.63,3.31c-2.37,2.19-4.82,4.28-7.23,6.42 c-2.46,2.08-4.88,4.21-7.37,6.26c-2.47,2.06-4.95,4.12-7.47,6.13l-9.53,7.59l1.57-11.86c0.3-2.22,0.62-4.44,0.97-6.66 c0.33-2.22,0.68-4.44,1.06-6.65c0.73-4.44,1.56-8.86,2.43-13.27c1.81-8.83,3.78-17.63,6.55-26.34c0.7,9.11,0.63,18.13,0.37,27.13 c-0.16,4.5-0.35,8.99-0.66,13.47c-0.03,0.5-0.08,0.99-0.11,1.48c1.93-1.63,3.88-3.23,5.82-4.85c2.52-2.01,5-4.07,7.55-6.04 c2.53-2,5.09-3.96,7.67-5.9l4.23-3.19l2.2,4.28c1.46,2.83,2.92,5.67,4.31,8.54c1.42,2.86,2.78,5.75,4.11,8.66 c1.34,2.9,2.61,5.85,3.84,8.8c1.24,2.97,2.41,5.97,3.49,9.03C415.36,307.98,413.29,305.5,411.29,302.99z M414.91,239.78 c-1.83-4.59-3.55-9.22-5.2-13.87c-1.64-4.65-3.24-9.32-4.73-14.02l-3.43-10.81l9.4,6.25c1.85,1.23,3.69,2.47,5.51,3.74 c1.83,1.25,3.64,2.53,5.45,3.82c3.63,2.56,7.2,5.21,10.74,7.89c3.54,2.7,7.03,5.46,10.47,8.3c1.71,1.43,3.43,2.86,5.1,4.35 c1.69,1.47,3.36,2.97,4.98,4.54c-2.08-0.88-4.11-1.82-6.13-2.79c-2.03-0.95-4.02-1.96-6.01-2.98c-3.97-2.04-7.88-4.16-11.75-6.35 c-3.86-2.21-7.69-4.45-11.48-6.78c-0.64-0.39-1.28-0.79-1.92-1.19c0.37,1.21,0.75,2.42,1.12,3.63c1.42,4.73,2.77,9.48,4.02,14.26 c1.27,4.77,2.43,9.58,3.48,14.43c0.52,2.43,1.03,4.86,1.47,7.31l0.65,3.68c0.18,1.23,0.4,2.46,0.55,3.71 c-0.62-1.1-1.18-2.21-1.76-3.32l-1.65-3.35c-1.09-2.24-2.12-4.5-3.14-6.76C418.62,248.94,416.72,244.38,414.91,239.78z M417.6,284.59c0-2.78,2.26-5.04,5.04-5.04c2.78,0,5.04,2.26,5.04,5.04c0,2.78-2.26,5.04-5.04,5.04S417.6,287.37,417.6,284.59z M452.41,281.29l9.35,14.41c3.08,4.83,6.15,9.66,9.19,14.52l9.03,14.62l4.14,6.7l-7.25-2.86c-4.39-1.73-8.74-3.59-13.1-5.38 c-4.36-1.79-8.7-3.66-13.04-5.52c-4.35-1.83-8.66-3.78-12.98-5.68c-4.31-1.95-8.61-3.9-12.88-5.95c4.55,1.3,9.07,2.69,13.58,4.1 c4.5,1.45,9.01,2.86,13.48,4.37c4.48,1.49,8.97,2.97,13.42,4.53c1.99,0.7,3.97,1.38,5.96,2.06l-5.23-7.85 c-3.14-4.79-6.26-9.59-9.36-14.41l-9.2-14.51c-3.09-4.82-6.07-9.72-9.08-14.59l-4.22-6.82l7.38,2.89l7.03,2.75l7,2.83l7,2.83 l6.97,2.9c4.65,1.92,9.28,3.92,13.9,5.92c4.61,2.02,9.22,4.06,13.79,6.2c-4.86-1.35-9.69-2.79-14.51-4.26 c-4.81-1.49-9.62-2.98-14.4-4.55l-7.18-2.33l-7.16-2.43l-6.73-2.26C449.03,276.1,450.74,278.68,452.41,281.29z M491.73,271.72 c-4.93-2.37-9.85-4.75-14.76-7.17c-4.91-2.42-9.8-4.88-14.66-7.39l-7.3-3.76l-7.26-3.85c-4.83-2.6-9.64-5.23-14.39-7.99 c5.22,1.72,10.38,3.57,15.53,5.45l7.7,2.86l7.66,2.96c5.12,1.96,10.2,3.98,15.27,6.04c2.1,0.86,4.21,1.72,6.31,2.59l-1.02-2.12 l-5.04-10.64l-4.96-10.67l-4.89-10.71l-1.52-3.33l3.15-1.77l8.66-4.86l7.02-3.9c0.59-6.05,1.22-12.1,1.89-18.14 c0.75-6.72,1.51-13.43,2.38-20.13l1.28-10.06c0.43-3.36,0.93-6.7,1.39-10.05c0.94-6.69,1.97-13.38,3.13-20.06 c0.06,6.78,0,13.55-0.15,20.31c-0.09,3.38-0.14,6.76-0.25,10.14l-0.36,10.13c-0.23,6.76-0.56,13.51-0.91,20.25 c-0.35,6.74-0.74,13.48-1.18,20.22l-0.13,1.91l-1.74,1.03l-8.55,5.06l-5.43,3.18l3.45,7.42l4.88,10.71l4.81,10.75l4.75,10.79 l3.92,8.95L491.73,271.72z M501.19,47.37c-0.71-1.05-1.43-2.08-2.13-3.13c-3.4-5.1-6.77-10.21-10.05-15.38 c-3.3-5.15-6.52-10.36-9.72-15.58l-0.46-0.74l0.01-0.82c0.04-3.88,0.11-7.75,0.2-11.63h5.53c0.09,3.59,0.15,7.17,0.19,10.76 c3.12,4.95,6.21,9.91,9.23,14.92c2.45,4.03,4.83,8.09,7.2,12.16V47.37z\"\n}));\n\nvar SvgZigzagPatternInvert = function SvgZigzagPatternInvert(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_2_1_\",\n preserveAspectRatio: \"xMidYMid slice\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 501.19 337.27\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgZigzagPatternInvert, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/zigzag_pattern_invert.2d5b535e.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport { ReactComponent as Background } from \"assets/svgs/backgrounds/zigzag_pattern_invert.svg\";\r\nimport whiteNoise from \"assets/images/backgrounds/whitenoise.jpg\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n backgroundContainer: {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n static: {\r\n backgroundImage: `url(${whiteNoise})`,\r\n opacity: 0.04,\r\n },\r\n })\r\n);\r\n\r\nexport default function ZigZagPatternBackground() {\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport clsx from \"clsx\";\r\nimport IQuote from \"apiConsumers/kenticoApiConsumer/models/quotes/IQuote\";\r\nimport { fonts } from \"theme\";\r\nimport { useMediaQuery } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n quoteContentText: {\r\n fontWeight: 900,\r\n fontFamily: fonts.secondary,\r\n textTransform: \"uppercase\",\r\n },\r\n })\r\n);\r\n\r\ninterface IProps extends HTMLAttributes {\r\n quote: IQuote;\r\n}\r\n\r\nexport default function Quote(props: IProps) {\r\n const classes = useStyles();\r\n const { quote, className, ...rest } = props;\r\n\r\n const theme = useTheme();\r\n const smScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const xsScreen = useMediaQuery(theme.breakpoints.down(\"xs\"));\r\n\r\n return (\r\n
\r\n \r\n {quote.content}\r\n \r\n \r\n {\"- \"}\r\n {quote.source}\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport ButtonBase, { ButtonBaseProps } from \"@material-ui/core/ButtonBase\";\r\nimport clsx from \"clsx\";\r\nimport btnLeftImgSrc from \"assets/images/icons/btn_left.png\";\r\nimport btnRightImgSrc from \"assets/images/icons/btn_right.png\";\r\nimport { buttonHoverOpacity } from \"theme\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n flex: \"1 0 auto\",\r\n width: theme.spacing(4),\r\n borderRadius: \"50%\",\r\n \"&:hover\": {\r\n opacity: buttonHoverOpacity,\r\n },\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n },\r\n disabled: {\r\n \"& img\": {\r\n filter: \"grayscale(100%)\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ntype PaginationButtonVariant = \"previous\" | \"next\";\r\n\r\ninterface IProps extends ButtonBaseProps {\r\n variant: PaginationButtonVariant;\r\n}\r\n\r\nexport default function PaginationButton(props: IProps) {\r\n const { variant, className, disabled = false, ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \"\"\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport { featureTileYellow } from \"theme\";\r\nimport PaginationButton from \"components/pagination/PaginationButton\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const defaultCircleSize = theme.spacing(1.5);\r\n const selectedCircleSize = theme.spacing(1.8);\r\n const circleSizeDiff = selectedCircleSize - defaultCircleSize;\r\n\r\n const defaultCircleMargin = theme.spacing(0.5);\r\n const selectedCircleMargin = defaultCircleMargin - circleSizeDiff;\r\n\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n },\r\n paginationCircle: {\r\n height: defaultCircleSize,\r\n width: defaultCircleSize,\r\n borderRadius: defaultCircleSize / 2,\r\n cursor: \"pointer\",\r\n backgroundColor: theme.palette.common.white,\r\n margin: defaultCircleMargin,\r\n \"&:hover\": {\r\n backgroundColor: featureTileYellow,\r\n },\r\n },\r\n selectedCircle: {\r\n cursor: \"default\",\r\n height: selectedCircleSize,\r\n width: selectedCircleSize,\r\n borderRadius: selectedCircleSize / 2,\r\n backgroundColor: featureTileYellow,\r\n margin: selectedCircleMargin,\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n numberOfItems: number;\r\n onPaginationClick: (itemIndex: number) => void;\r\n currentlySelectedItemIndex: number;\r\n disableArrows?: boolean;\r\n}\r\n\r\nexport default function SelectableCollectionPagination(props: IProps) {\r\n const classes = useStyles();\r\n const {\r\n numberOfItems,\r\n onPaginationClick,\r\n currentlySelectedItemIndex,\r\n disableArrows = false,\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n const theme = useTheme();\r\n const buttonSpacing = theme.spacing(1);\r\n\r\n return (\r\n
\r\n {disableArrows ? null : (\r\n
\r\n onPaginationClick(currentlySelectedItemIndex - 1)}\r\n />\r\n
\r\n )}\r\n {Array.from(Array(numberOfItems)).map((_, i) => {\r\n return (\r\n onPaginationClick(i)}\r\n />\r\n );\r\n })}\r\n {disableArrows ? null : (\r\n
\r\n onPaginationClick(currentlySelectedItemIndex + 1)}\r\n />\r\n
\r\n )}\r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes, ReactElement, useEffect, useState } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport SelectableCollectionPagination from \"./SelectableCollectionPagination\";\r\nimport Spacer from \"components/Spacer\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n itemContainer: { display: \"grid\" },\r\n item: {\r\n gridColumn: 1,\r\n gridRow: 1,\r\n transition: theme.transitions.create([\"opacity\", \"transform\"], {\r\n duration: theme.transitions.duration.standard * 2,\r\n }),\r\n pointerEvents: \"none\",\r\n },\r\n showItem: {\r\n pointerEvents: \"all\",\r\n },\r\n fadeTransition: {\r\n opacity: 0,\r\n },\r\n showFadedItem: {\r\n opacity: 1,\r\n },\r\n offScreenItemPrevious: {\r\n transform: \"translateX(-100vw)\",\r\n },\r\n offScreenItemNext: {\r\n transform: \"translateX(100vw)\",\r\n },\r\n showOffscreenItem: {\r\n transform: \"translateX(0vw)\",\r\n },\r\n })\r\n);\r\n\r\ninterface IProps extends HTMLAttributes {\r\n items: T[];\r\n renderItem: (item: T) => ReactElement;\r\n autoTransitionDuration?: number;\r\n transition?: \"fade\" | \"slide\";\r\n disableArrows?: boolean;\r\n}\r\n\r\nexport default function SelectableCollection(props: IProps) {\r\n const classes = useStyles();\r\n const {\r\n items,\r\n renderItem,\r\n autoTransitionDuration,\r\n transition = \"fade\",\r\n disableArrows = false,\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n const [currentlySelectedItemIndex, setCurrentlySelectedItemIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n if (\r\n items.length <= 1 ||\r\n autoTransitionDuration === undefined ||\r\n autoTransitionDuration <= 0\r\n )\r\n return;\r\n\r\n const updateCurrentlySelectedIndex = () => {\r\n const nextIndex = (currentlySelectedItemIndex + 1) % items.length;\r\n\r\n setCurrentlySelectedItemIndex(nextIndex);\r\n };\r\n\r\n const interval = setInterval(() => {\r\n updateCurrentlySelectedIndex();\r\n }, autoTransitionDuration);\r\n\r\n return () => clearInterval(interval);\r\n }, [currentlySelectedItemIndex]);\r\n\r\n return (\r\n
\r\n
\r\n {items.map((item, i) => (\r\n currentlySelectedItemIndex,\r\n [classes.showOffscreenItem]: i === currentlySelectedItemIndex,\r\n }\r\n )}\r\n >\r\n {renderItem(item)}\r\n
\r\n ))}\r\n
\r\n\r\n {items.length > 1 ? (\r\n <>\r\n \r\n\r\n \r\n setCurrentlySelectedItemIndex(itemIndex)\r\n }\r\n currentlySelectedItemIndex={currentlySelectedItemIndex}\r\n disableArrows={disableArrows}\r\n />\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { kenticoApi } from \"apiConsumers\";\r\nimport ZigZagPatternBackground from \"components/backgrounds/ZigZagPatternBackground\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport { featureTileYellow, layoutConsts, zigzagBackgroundBlack } from \"theme\";\r\nimport IQuote from \"apiConsumers/kenticoApiConsumer/models/quotes/IQuote\";\r\nimport Quote from \"./Quote\";\r\nimport SelectableCollection from \"components/selectableCollection/SelectableCollection\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n color: theme.palette.common.black,\r\n backgroundColor: zigzagBackgroundBlack,\r\n position: \"relative\",\r\n },\r\n contentContainer: {\r\n flex: \"1\",\r\n color: featureTileYellow,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n zIndex: 1,\r\n },\r\n })\r\n);\r\n\r\nexport default function QuotesSection() {\r\n const classes = useStyles();\r\n\r\n const [quotes, setQuotes] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n setIsLoading(true);\r\n kenticoApi\r\n .getQuotes()\r\n .then((response) => {\r\n if (typeof response === \"undefined\") return;\r\n\r\n setQuotes(response);\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }, []);\r\n\r\n return isLoading || quotes.length === 0 ? null : (\r\n \r\n \r\n
\r\n (\r\n \r\n \r\n
\r\n )}\r\n autoTransitionDuration={5000}\r\n disableArrows\r\n />\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport MediaSkeleton, { IMediaSkeletonProps } from \"./MediaSkeleton\";\r\n\r\nexport interface ImageSkeletonProps extends IMediaSkeletonProps {\r\n src: string;\r\n alt?: string;\r\n}\r\n\r\nexport default function ImageSkeleton(props: ImageSkeletonProps) {\r\n const { src, alt = \"\", children, ...rest } = props;\r\n\r\n return (\r\n \r\n {alt}\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes, ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport ImageSkeleton, { ImageSkeletonProps } from \"components/skeletons/ImageSkeleton\";\r\nimport descriptionBackground from \"assets/images/homePage/gameInfoSection/featuresTile/features_bg_zigzag.jpg\";\r\n\r\nimport jaggyTop from \"assets/images/common/yellowJaggyEdges/yellow_jaggy_top.png\";\r\nimport jaggyBottom from \"assets/images/common/yellowJaggyEdges/yellow_jaggy_bottom.png\";\r\nimport Spacer from \"components/Spacer\";\r\nimport { featureTileYellow } from \"theme\";\r\n\r\nfunction getDescriptionBackgroundPosition(\r\n descriptionBackgroundVariant: TextBoxWithImageDescriptionBackgroundVariant\r\n) {\r\n if (descriptionBackgroundVariant === \"v1\") return \"top\";\r\n if (descriptionBackgroundVariant === \"v2\") return \"center\";\r\n if (descriptionBackgroundVariant === \"v3\") return \"bottom\";\r\n\r\n return \"top\";\r\n}\r\n\r\ninterface IStylesProps {\r\n mobile: boolean;\r\n descriptionBackgroundVariant: TextBoxWithImageDescriptionBackgroundVariant;\r\n}\r\n\r\nconst useStyles = (props: IStylesProps) =>\r\n makeStyles((theme: Theme) => {\r\n const { mobile, descriptionBackgroundVariant } = props;\r\n\r\n const horizontalPadding = theme.spacing(1);\r\n const gutterPadding = theme.spacing(3);\r\n\r\n const getImageBorder = (size: number) => `${size}px solid ${featureTileYellow}`;\r\n\r\n const imageBorder = mobile ? getImageBorder(5) : getImageBorder(8);\r\n\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n flexDirection: mobile ? \"column\" : \"row\",\r\n },\r\n image: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n border: imageBorder,\r\n borderBottom: mobile ? 0 : imageBorder,\r\n position: \"relative\",\r\n flex: mobile ? \"unset\" : 2,\r\n },\r\n titleContainer: {\r\n padding: `${horizontalPadding}px ${gutterPadding}px`,\r\n backgroundColor: featureTileYellow,\r\n },\r\n title: {\r\n lineHeight: 1,\r\n },\r\n desktopHeading: {\r\n color: featureTileYellow,\r\n },\r\n descriptionContainer: {\r\n display: \"flex\",\r\n flex: 1,\r\n color: theme.palette.common.white,\r\n backgroundImage: `url(${descriptionBackground})`,\r\n backgroundColor: \"#0E0E10\",\r\n position: \"relative\",\r\n backgroundSize: \"100% auto\",\r\n backgroundPositionX: \"center\",\r\n backgroundPositionY: getDescriptionBackgroundPosition(descriptionBackgroundVariant),\r\n },\r\n descriptionContainerContent: {\r\n padding: `${horizontalPadding}px ${gutterPadding}px`,\r\n flex: 1,\r\n },\r\n description: {\r\n color: theme.palette.common.white,\r\n lineHeight: 1.35,\r\n },\r\n });\r\n });\r\n\r\nexport type TextBoxWithImageDescriptionBackgroundVariant = \"v1\" | \"v2\" | \"v3\";\r\ntype IClasses = Partial>>;\r\n\r\ninterface IProps extends HTMLAttributes {\r\n heading?: ReactNode; // TODO: what if it's undefined?\r\n imageProps: ImageSkeletonProps;\r\n descriptionBackgroundVariant?: TextBoxWithImageDescriptionBackgroundVariant;\r\n mobile?: boolean;\r\n // loading?: boolean;\r\n // hoverable?: boolean;\r\n classes?: IClasses;\r\n}\r\n\r\nexport default function TextBoxWithImage(props: IProps) {\r\n const {\r\n className,\r\n heading,\r\n imageProps,\r\n descriptionBackgroundVariant = \"v1\",\r\n children,\r\n mobile = false,\r\n classes: overrideClasses,\r\n ...rest\r\n } = props;\r\n\r\n const classes = useStyles({ mobile, descriptionBackgroundVariant })();\r\n\r\n const headingComponent =\r\n typeof heading === \"string\" ? (\r\n \r\n {heading}\r\n \r\n ) : (\r\n heading\r\n );\r\n\r\n return (\r\n
\r\n
\r\n \r\n {mobile ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n )}\r\n
\r\n\r\n {mobile ? (\r\n
\r\n {headingComponent}\r\n
\r\n ) : null}\r\n\r\n \r\n {mobile ? (\r\n \r\n ) : null}\r\n\r\n {mobile && typeof children === \"undefined\" ? null : (\r\n \r\n {mobile ? (\r\n \r\n ) : (\r\n <>\r\n \r\n {headingComponent}\r\n
\r\n \r\n \r\n )}\r\n {typeof children === \"string\" ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n children\r\n )}\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport calculateAspectRatio from \"utils/calculateAspectRatio\";\r\nimport imageSizes from \"imageSizes\";\r\nimport TextBoxWithImage, {\r\n TextBoxWithImageDescriptionBackgroundVariant,\r\n} from \"components/textBoxes/textboxWithImage/TextBoxWithImage\";\r\nimport Scribble from \"components/scribble/Scribble\";\r\nimport { ScribbleVariant } from \"components/scribble/ScribbleImage\";\r\nimport Spacer from \"components/Spacer\";\r\nimport RouterLinkButton from \"components/buttons/RouterLinkButton\";\r\nimport { Typography } from \"@material-ui/core\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\n\r\nconst useScribbleStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n v1ScribbleContainer: {\r\n top: \"-4%\",\r\n left: \"-11%\",\r\n width: \"100%\",\r\n },\r\n v2ScribbleContainer: {\r\n bottom: \"-8%\",\r\n left: \"-11%\",\r\n width: \"100%\",\r\n },\r\n v3ScribbleContainer: {\r\n top: \"30%\",\r\n left: \"-14%\",\r\n width: \"100%\",\r\n },\r\n });\r\n});\r\n\r\nexport type DescriptionBackgroundVariant = TextBoxWithImageDescriptionBackgroundVariant;\r\nexport type FeatureTileScribbleVariant = \"v1\" | \"v2\" | \"v3\" | \"none\";\r\n\r\ntype IScribbleClasses = Partial>;\r\n\r\ninterface IScribble {\r\n className?: string;\r\n variant: ScribbleVariant;\r\n}\r\n\r\nfunction getScribble(\r\n variant: FeatureTileScribbleVariant,\r\n classes: IScribbleClasses\r\n): IScribble | undefined {\r\n if (variant === \"v1\") return { variant: \"v1\", className: classes.v1ScribbleContainer };\r\n if (variant === \"v2\") return { variant: \"v1\", className: classes.v2ScribbleContainer };\r\n if (variant === \"v3\") return { variant: \"v3\", className: classes.v3ScribbleContainer };\r\n}\r\n\r\nexport interface IFeature {\r\n title: string;\r\n description: string;\r\n imgSrc: string;\r\n articleRoute?: string;\r\n}\r\n\r\ninterface IProps extends HTMLAttributes {\r\n feature: IFeature;\r\n descriptionBackgroundVariant?: TextBoxWithImageDescriptionBackgroundVariant;\r\n scribbleVariant?: FeatureTileScribbleVariant;\r\n}\r\n\r\nexport default function FeatureTile(props: IProps) {\r\n const {\r\n feature,\r\n descriptionBackgroundVariant = \"v1\",\r\n scribbleVariant = \"none\",\r\n ...rest\r\n } = props;\r\n\r\n const { title, description, imgSrc, articleRoute } = feature;\r\n\r\n const scribbleClasses = useScribbleStyles();\r\n const scribble = getScribble(scribbleVariant, scribbleClasses);\r\n\r\n const content = (\r\n \r\n {typeof description === \"string\" ? (\r\n {description}\r\n ) : (\r\n description\r\n )}\r\n {typeof articleRoute === \"undefined\" ? null : (\r\n <>\r\n \r\n \r\n Learn More\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n\r\n return scribbleVariant === \"none\" ? (\r\n content\r\n ) : (\r\n \r\n {content}\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport DefaultAosAnimation from \"components/aos/DefaultAosAnimation\";\r\nimport FeatureTile, {\r\n IFeature,\r\n DescriptionBackgroundVariant,\r\n FeatureTileScribbleVariant,\r\n} from \"./featureTile/FeatureTile\";\r\n\r\nimport featuresImage01 from \"assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_01.jpg\";\r\nimport featuresImage02 from \"assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_02.jpg\";\r\nimport featuresImage03 from \"assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_03.jpg\";\r\nimport featuresImage04 from \"assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_04.jpg\";\r\nimport featuresImage05 from \"assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_05.jpg\";\r\nimport featuresImage06 from \"assets/images/homePage/gameInfoSection/featuresTile/screenShots/img_features_06.jpg\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport Spacer from \"components/Spacer\";\r\nimport titleImage from \"assets/images/homePage/gameInfoSection/title_gameinfo.png\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport clsx from \"clsx\";\r\nimport useBackgroundStyles from \"components/backgrounds/useBackgroundStyles\";\r\nimport routes from \"routes\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const featureTileMargin = theme.spacing(2);\r\n\r\n return createStyles({\r\n root: {},\r\n titleContainer: {\r\n paddingTop: theme.spacing(2),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n descriptionContainer: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n color: theme.palette.common.white,\r\n textAlign: \"center\",\r\n },\r\n description: {\r\n maxWidth: 975,\r\n lineHeight: 1.35,\r\n },\r\n featureTilesContainer: {\r\n flex: \"1 1 auto\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n flexWrap: \"wrap\",\r\n },\r\n },\r\n featureTile: {\r\n margin: featureTileMargin,\r\n boxSizing: \"border-box\",\r\n width: 330,\r\n \"@media (max-width: 800px)\": {\r\n width: 475,\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"unset\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IFeatureTile extends IFeature {\r\n rotateAmount?: number;\r\n descriptionBackgroundVariant?: DescriptionBackgroundVariant;\r\n scribbleVariant?: FeatureTileScribbleVariant;\r\n}\r\n\r\nconst features: IFeatureTile[] = [\r\n {\r\n title: \"Push The Limits with Incredible Cars\",\r\n description:\r\n \"900bhp sprint cars, incredible rock bouncers, modern rallycross, classic rally, GT, muscle cars, trucks, buggies and more are yours to let loose with.\",\r\n imgSrc: featuresImage01,\r\n rotateAmount: -1,\r\n descriptionBackgroundVariant: \"v2\",\r\n scribbleVariant: \"v1\",\r\n articleRoute: `${routes.news.route}/push-the-limits`,\r\n },\r\n {\r\n title: \"Blaze a Trail Across the Globe\",\r\n description:\r\n \"Over 70 routes across 10 global locations - from racing on New York's frozen East River, to under Norway's Northern Lights.\",\r\n imgSrc: featuresImage02,\r\n rotateAmount: 0,\r\n descriptionBackgroundVariant: \"v3\",\r\n articleRoute: `${routes.news.route}/blaze-a-trail`,\r\n },\r\n {\r\n title: \"Exciting and Diverse Game Modes \",\r\n description:\r\n \"Enjoy four-player split-screen, the all-new Playgrounds mode, a narrative-driven Career, fun multiplayer action and more.\",\r\n imgSrc: featuresImage03,\r\n rotateAmount: 1,\r\n descriptionBackgroundVariant: \"v1\",\r\n scribbleVariant: \"v2\",\r\n articleRoute: `${routes.news.route}/exciting-and-diverse`,\r\n },\r\n {\r\n title: \"Own the Spotlight in a Star-Studded Career\",\r\n description:\r\n \"Troy Baker and Nolan North star in DIRT 5's Career mode, featuring choice-driven progression, real-world sponsors and a huge variety of events.\",\r\n imgSrc: featuresImage04,\r\n rotateAmount: -1,\r\n descriptionBackgroundVariant: \"v2\",\r\n articleRoute: `${routes.news.route}/own-the-spotlight`,\r\n },\r\n {\r\n title: \"Create, Share, Discover\",\r\n description:\r\n \"Build up and throw down in Gymkhana, Gate Crasher and Smash Attack events on player-made racing arenas.\",\r\n imgSrc: featuresImage05,\r\n rotateAmount: 1,\r\n descriptionBackgroundVariant: \"v3\",\r\n scribbleVariant: \"v3\",\r\n articleRoute: `${routes.news.route}/create-share-discover`,\r\n },\r\n {\r\n title: \"Innovative online racing\",\r\n description:\r\n \"Thrilling races, unlockable rewards and the return of online party modes - DIRT 5's multiplayer action doubles down on fun, exhilarating racing.\",\r\n imgSrc: featuresImage06,\r\n rotateAmount: -1,\r\n descriptionBackgroundVariant: \"v2\",\r\n articleRoute: `${routes.news.route}/dirt-5-online-multiplayer`,\r\n },\r\n];\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function GameInfoSection(props: IProps) {\r\n const { className, id, ...rest } = props;\r\n const classes = useStyles();\r\n const backgrounds = useBackgroundStyles();\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n DIRT 5 is the bold new off-road arcade racing experience created by\r\n Codemasters. Conquer stunning global routes and drive an iconic roster\r\n of cars. Experience a star-studded Career mode, four-player\r\n split-screen, the Playgrounds arena creator mode and much more!\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n {features.map((feature, i) => {\r\n const {\r\n rotateAmount = 0,\r\n descriptionBackgroundVariant,\r\n scribbleVariant,\r\n ...rest\r\n } = feature;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { darkTextBoxBackgroundColour, featureTileYellow } from \"theme\";\r\nimport title from \"assets/images/homePage/nextGenSection/title_freeupgrade.png\";\r\nimport Spacer from \"components/Spacer\";\r\nimport SkewedSection from \"components/SkewedSection\";\r\nimport routes from \"routes\";\r\nimport RouterLink from \"components/links/RouterLink\";\r\n\r\nconst useStyles = (isMobile: boolean) =>\r\n makeStyles((theme: Theme) => {\r\n const imageMarginTop = isMobile ? 0 : theme.spacing(6);\r\n\r\n return createStyles({\r\n root: {\r\n backgroundColor: darkTextBoxBackgroundColour,\r\n color: featureTileYellow,\r\n padding: theme.spacing(3),\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n marginTop: imageMarginTop,\r\n },\r\n image: {\r\n marginTop: -imageMarginTop,\r\n maxWidth: 500,\r\n width: \"100%\",\r\n },\r\n text: {\r\n lineHeight: 1.35,\r\n textAlign: \"center\",\r\n maxWidth: 600,\r\n },\r\n });\r\n });\r\n\r\ninterface IProps extends HTMLAttributes {\r\n isMobile?: boolean;\r\n}\r\n\r\nexport default function NextGenUpgradeTextBox(props: IProps) {\r\n const { isMobile = false, className, ...rest } = props;\r\n const classes = useStyles(isMobile)();\r\n\r\n const content = (\r\n <>\r\n
\r\n \"\"\r\n
\r\n {isMobile ? : null}\r\n \r\n \r\n *Discless consoles require a digital entitlement to upgrade.\r\n \r\n\r\n \r\n\r\n \r\n \r\n See{\" \"}\r\n \r\n News\r\n {\" \"}\r\n for details\r\n \r\n \r\n \r\n );\r\n\r\n return isMobile ? (\r\n \r\n {content}\r\n \r\n ) : (\r\n
\r\n {content}\r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport background from \"assets/images/homePage/nextGenSection/bg_textbox.png\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n backgroundImage: `url(${background})`,\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"100% 100%\",\r\n padding: theme.spacing(3),\r\n boxSizing: \"border-box\"\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function NextGenTextBox(props: IProps) {\r\n const classes = useStyles();\r\n const { children, className, ...rest } = props;\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport NextGenTextBox from \"./NextGenTextBox\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { TypographyVariant } from \"@material-ui/core\";\r\nimport Spacer from \"components/Spacer\";\r\nimport xboxSeriesXLogo from \"assets/images/homePage/nextGenSection/logos/logo_xsx.png\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {},\r\n platformText: {\r\n lineHeight: 1.35,\r\n textAlign: \"center\",\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n typographyVariant: TypographyVariant;\r\n}\r\n\r\nexport default function XboxSeriesXTextBox(props: IProps) {\r\n const classes = useStyles();\r\n const { typographyVariant, className, ...rest } = props;\r\n\r\n return (\r\n \r\n \r\n \"Xbox\r\n\r\n \r\n\r\n \r\n 120fps option\r\n \r\n \r\n Faster loading\r\n \r\n \r\n Greater graphical fidelity\r\n \r\n \r\n Smart Delivery\r\n \r\n \r\n Optimised for Xbox Series X\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport NextGenTextBox from \"./NextGenTextBox\";\r\nimport ps5Logo from \"assets/images/homePage/nextGenSection/logos/logo_ps5.png\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { TypographyVariant } from \"@material-ui/core\";\r\nimport Spacer from \"components/Spacer\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: { width: \"100%\" },\r\n platformText: {\r\n lineHeight: 1.35,\r\n textAlign: \"center\",\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n typographyVariant: TypographyVariant;\r\n}\r\n\r\nexport default function Playstation5TextBox(props: IProps) {\r\n const classes = useStyles();\r\n const { typographyVariant, className, ...rest } = props;\r\n\r\n return (\r\n \r\n \r\n \"Playstation\r\n\r\n \r\n\r\n \r\n 120fps option\r\n \r\n\r\n \r\n Faster loading\r\n \r\n\r\n \r\n Greater graphical fidelity\r\n \r\n\r\n \r\n PlayStation 4 FREE upgrade to PlayStation 5\r\n \r\n\r\n \r\n Haptic Feedback\r\n \r\n\r\n \r\n Adaptive triggers\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport clsx from \"clsx\";\r\nimport titleImage from \"assets/images/homePage/nextGenSection/title_nextgen.png\";\r\n\r\nimport background from \"assets/images/homePage/nextGenSection/bg_nextgen.jpg\";\r\nimport xboxMobileBackground from \"assets/images/homePage/nextGenSection/bg_nextgen_mob_xbox.jpg\";\r\nimport ps5MobileBackground from \"assets/images/homePage/nextGenSection/bg_nextgen_mob_ps.jpg\";\r\n\r\nimport Spacer from \"components/Spacer\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport NextGenUpgradeTextBox from \"./NextGenUpgradeTextBox\";\r\nimport XboxSeriesXTextBox from \"./textBoxes/XboxSeriesXTextBox\";\r\nimport Playstation5TextBox from \"./textBoxes/Playstation5TextBox\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {},\r\n background: {\r\n backgroundImage: `url(${background})`,\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n },\r\n xboxMobileBackground: {\r\n backgroundImage: `url(${xboxMobileBackground})`,\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n },\r\n ps5MobileBackground: {\r\n backgroundImage: `url(${ps5MobileBackground})`,\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n },\r\n mobileNextGenTextBox: {\r\n maxWidth: 550,\r\n flex: \"1\",\r\n width: \"100%\",\r\n },\r\n titleContainer: {\r\n paddingTop: theme.spacing(2),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function NextGenSection(props: IProps) {\r\n const classes = useStyles();\r\n const { className, id, ...rest } = props;\r\n\r\n const theme = useTheme();\r\n const mdScreen = useMediaQuery(theme.breakpoints.down(\"md\"));\r\n\r\n const itemTypography = \"h6\";\r\n\r\n const title = (\r\n
\r\n \"\"\r\n
\r\n );\r\n\r\n return (\r\n
\r\n {mdScreen ? (\r\n <>\r\n \r\n
\r\n {title}\r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n
\r\n {title}\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n {mdScreen ? null : (\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n )}\r\n
\r\n \r\n )}\r\n {mdScreen ? : null}\r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport background from \"assets/images/backgrounds/bg_buy_now_text_box.png\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n backgroundImage: `url(${background})`,\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"100% 100%\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundColor: \"transparent\",\r\n },\r\n });\r\n});\r\n\r\nexport interface IBuyNowTextBoxBackgroundProps extends HTMLAttributes {}\r\n\r\nexport default function BuyNowTextBoxBackground(props: IBuyNowTextBoxBackgroundProps) {\r\n const classes = useStyles();\r\n const { className, ...rest } = props;\r\n\r\n return
;\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport BuyNowTextBoxBackground, {\r\n IBuyNowTextBoxBackgroundProps,\r\n} from \"components/backgrounds/BuyNowTextBoxBackground\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n padding: theme.spacing(3),\r\n color: theme.palette.common.white,\r\n },\r\n });\r\n});\r\n\r\nexport type IBuyNowTextBoxClasses = Partial>;\r\n\r\nexport interface IBuyNowTextBoxProps extends IBuyNowTextBoxBackgroundProps {\r\n classes?: IBuyNowTextBoxClasses;\r\n}\r\n\r\nexport default function BuyNowTextBox(props: IBuyNowTextBoxProps) {\r\n const classes = useStyles();\r\n const { className, classes: overrideClasses, children, ...rest } = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport BuyNowTextBox, { IBuyNowTextBoxClasses, IBuyNowTextBoxProps } from \"./BuyNowTextBox\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n titleContainer: {\r\n position: \"relative\",\r\n zIndex: 1000,\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n \"& img\": { width: \"100%\" },\r\n },\r\n title: {\r\n zIndex: 100,\r\n },\r\n titlePrefix: {\r\n flex: \"2\",\r\n marginLeft: theme.spacing(2),\r\n },\r\n titleSuffix: { flex: \"1\" },\r\n textBox: { marginTop: -theme.spacing(4), flex: \"1\" },\r\n textBoxRoot: { paddingTop: theme.spacing(4) },\r\n });\r\n});\r\n\r\ntype IClasses = Partial>;\r\n\r\ninterface IProps extends IBuyNowTextBoxProps {\r\n children?: ReactNode;\r\n titlePrefixComponent?: ReactNode;\r\n titleSuffixComponent?: ReactNode;\r\n textContainerClasses?: IBuyNowTextBoxClasses;\r\n classes?: IClasses;\r\n}\r\n\r\nexport default function BuyNowTextBoxWithAdornments(props: IProps) {\r\n const classes = useStyles();\r\n const {\r\n className,\r\n children,\r\n titlePrefixComponent,\r\n titleSuffixComponent,\r\n textContainerClasses,\r\n classes: overrideClasses,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n
\r\n
\r\n \r\n {titlePrefixComponent}\r\n
\r\n\r\n {typeof titleSuffixComponent === \"undefined\" ? null : (\r\n \r\n {titleSuffixComponent}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n \r\n {children}\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React, { ReactNode, HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport BuyNowTextBoxWithAdornments from \"components/textBoxes/buyNow/BuyNowTextBoxWithAdornments\";\r\nimport Scribble from \"components/scribble/Scribble\";\r\nimport clsx from \"clsx\";\r\nimport { ScribbleVariant } from \"components/scribble/ScribbleImage\";\r\n\r\ntype EditionPlacement = \"left\" | \"right\";\r\n\r\nconst useStyles = (placement: EditionPlacement) =>\r\n makeStyles((theme: Theme) => {\r\n const placementMarginAmount = theme.spacing(2);\r\n\r\n return createStyles({\r\n root: {},\r\n keyArt: {\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n marginRight: placement === \"left\" ? placementMarginAmount : 0,\r\n marginLeft: placement === \"right\" ? placementMarginAmount : 0,\r\n },\r\n title: {},\r\n textBox: {\r\n marginTop: \"-14%\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n marginTop: \"-13%\",\r\n },\r\n marginLeft: placement === \"left\" ? placementMarginAmount : 0,\r\n marginRight: placement === \"right\" ? placementMarginAmount : 0,\r\n },\r\n scribbleContainer: {\r\n width: \"75%\",\r\n height: \"auto\",\r\n },\r\n scribbleContainerLeft: {\r\n top: \"-1%\",\r\n left: \"-12%\",\r\n },\r\n scribbleContainerRight: {\r\n right: \"-35px\",\r\n bottom: \"-50px\",\r\n },\r\n childContainer: {},\r\n });\r\n });\r\n\r\ninterface IProps extends HTMLAttributes {\r\n keyArt: ReactNode;\r\n editionTitle: ReactNode;\r\n placement: EditionPlacement;\r\n}\r\n\r\nexport default function Edition(props: IProps) {\r\n const { keyArt, editionTitle, placement, children, ...rest } = props;\r\n\r\n const classes = useStyles(placement)();\r\n\r\n const scribbleVariant: ScribbleVariant = placement === \"left\" ? \"v1\" : \"v2\";\r\n\r\n return (\r\n
\r\n
{keyArt}
\r\n \r\n {editionTitle}
}\r\n >\r\n {children}\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\nimport WhiteTextBoxWithAdornments from \"components/textBoxes/whiteTextBox/WhiteTextBoxWithAdornments\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { PaperProps } from \"@material-ui/core/Paper\";\r\nimport { fonts } from \"theme\";\r\nimport RandomRotate from \"components/rotate/RandomRotate\";\r\nimport DialogCloseButton from \"../DialogCloseButton\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n maxWidth: 600,\r\n marginRight: 30,\r\n [theme.breakpoints.down(\"sm\")]: { boxSizing: \"border-box\" },\r\n },\r\n title: {\r\n padding: \"3px 12px\",\r\n backgroundColor: theme.palette.background.default,\r\n color: theme.palette.common.white,\r\n textTransform: \"uppercase\",\r\n fontWeight: 900,\r\n fontSize: \"2.5rem\",\r\n lineHeight: \"2.5rem\",\r\n fontFamily: fonts.secondary,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n fontSize: \"2rem\",\r\n lineHeight: \"2rem\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n fontSize: \"1.5rem\",\r\n lineHeight: \"1.5rem\",\r\n },\r\n },\r\n closeButton: {\r\n position: \"absolute\",\r\n bottom: -13,\r\n right: -22,\r\n },\r\n icon: {\r\n marginRight: 50,\r\n },\r\n textBoxChildContainer: {\r\n marginTop: theme.spacing(1),\r\n maxHeight: \"80vh\",\r\n overflowY: \"auto\",\r\n overflowX: \"hidden\",\r\n \"@media (max-height: 700px)\": {\r\n maxHeight: \"75vh\",\r\n },\r\n \"@media (max-height: 600px)\": {\r\n maxHeight: \"70vh\",\r\n },\r\n \"@media (max-height: 500px)\": {\r\n maxHeight: \"65vh\",\r\n },\r\n \"@media (max-height: 400px)\": {\r\n maxHeight: \"60vh\",\r\n },\r\n },\r\n });\r\n});\r\n\r\nexport interface IPlaceholderPaperProps extends PaperProps {\r\n title?: string;\r\n onClose?: () => void;\r\n}\r\n\r\nexport default function PlaceholderPaper(props: IPlaceholderPaperProps) {\r\n const classes = useStyles();\r\n const { title, onClose = () => {}, children } = props;\r\n\r\n const theme = useTheme();\r\n const xsScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n\r\n const textBox = (\r\n \r\n {title}\r\n \r\n )\r\n }\r\n titleSuffixComponent={\r\n
\r\n onClose()} />\r\n
\r\n }\r\n classes={{\r\n titleSuffix: classes.closeButton,\r\n icon: classes.icon,\r\n }}\r\n textContainerClasses={{ childContainer: classes.textBoxChildContainer }}\r\n >\r\n {children}\r\n \r\n );\r\n\r\n return xsScreen ? (\r\n textBox\r\n ) : (\r\n \r\n {textBox}\r\n \r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Dialog, { DialogProps } from \"@material-ui/core/Dialog\";\r\nimport PlaceholderPaper, { IPlaceholderPaperProps } from \"./PlaceholderPaper\";\r\nimport DialogTransition from \"../DialogTransition\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n color: theme.palette.common.black,\r\n },\r\n });\r\n});\r\n\r\nexport interface IStyledDialogProps extends DialogProps {\r\n onClose: () => void;\r\n title?: string;\r\n children?: ReactNode;\r\n}\r\n\r\nexport default function StyledDialog(props: IStyledDialogProps) {\r\n const classes = useStyles();\r\n const { onClose, title, children, className, ...rest } = props;\r\n\r\n const paperProps: IPlaceholderPaperProps = {\r\n title,\r\n onClose,\r\n };\r\n\r\n const handleClose = () => {\r\n onClose();\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport ICountry from \"./models/ICountry\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n \"& img\": {\r\n height: \"unset\",\r\n },\r\n },\r\n label: {\r\n lineHeight: \"inherit\",\r\n marginLeft: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\ninterface IProps extends HTMLAttributes {\r\n country: ICountry;\r\n}\r\n\r\nexport default function CountryOption(props: IProps) {\r\n const classes = useStyles();\r\n const { country, className = \"\", ...rest } = props;\r\n\r\n return (\r\n
\r\n {`${country.label.replace(\"\r\n \r\n {country.label}\r\n \r\n
\r\n );\r\n}\r\n","export default class NonIntegerError extends Error {\r\n constructor(propertyName: string, receivedValue: number) {\r\n super(\r\n `${propertyName} parameter is not an integer. ${propertyName} must be a whole number. Received: \"${receivedValue}\"`\r\n );\r\n this.name = this.constructor.name;\r\n }\r\n}\r\n","export default class NonPositiveNumberError extends Error {\r\n constructor(propName: string, recevedValue: number) {\r\n super(`expected ${propName} to be a positive number, received ${recevedValue}`);\r\n this.name = this.constructor.name;\r\n }\r\n}\r\n","import NonIntegerError from \"errors/NonIntegerError\";\r\nimport NonPositiveNumberError from \"errors/NonPositiveNumberError\";\r\nimport splitNumberLine from \"./splitNumberLine\";\r\n\r\nexport default function splitArray(array: T[], numberOfOutputArrays: number): T[][] {\r\n if (numberOfOutputArrays <= 0)\r\n throw new NonPositiveNumberError(\"numberOfOutputArrays\", numberOfOutputArrays);\r\n\r\n if (!Number.isInteger(numberOfOutputArrays))\r\n throw new NonIntegerError(\"numberOfOutputArrays\", numberOfOutputArrays);\r\n\r\n if (array.length === 0) return [];\r\n\r\n if (numberOfOutputArrays >= array.length) return array.map(item => [item]);\r\n\r\n const splitPoints = splitNumberLine(array.length, numberOfOutputArrays);\r\n\r\n let outputArray: T[][] = [];\r\n for (let i = 0; i <= splitPoints.length; i++) {\r\n const start = i === 0 ? 0 : Math.ceil(splitPoints[i - 1]);\r\n const end = i === splitPoints.length ? array.length : Math.ceil(splitPoints[i]);\r\n\r\n outputArray.push(array.slice(start, end));\r\n }\r\n\r\n return outputArray;\r\n}\r\n","import NonPositiveNumberError from \"errors/NonPositiveNumberError\";\r\n\r\nexport default function splitNumberLine(lineLength: number, numberOfSections: number): number[] {\r\n if (lineLength <= 0) throw new NonPositiveNumberError(\"lineLength\", lineLength);\r\n if (numberOfSections <= 0)\r\n throw new NonPositiveNumberError(\"numberOfSections\", numberOfSections);\r\n\r\n const l = lineLength / numberOfSections;\r\n\r\n let pointsArray: number[] = [];\r\n for (let i = 1; i < numberOfSections; i++) {\r\n const point = i * l;\r\n pointsArray.push(point);\r\n }\r\n\r\n return pointsArray;\r\n}\r\n","import splitArray from \"utils/splitArray\";\r\n\r\nexport type IColumn = T[];\r\n\r\ntype ICachedColumns = {\r\n [numberOfColumns: number]: IColumn[];\r\n};\r\n\r\nexport default class ListDisplayController {\r\n private readonly _list: T[];\r\n private _cachedColumns: ICachedColumns;\r\n\r\n constructor(list: T[]) {\r\n this._list = list;\r\n this._cachedColumns = {};\r\n }\r\n\r\n public getColumns(numberOfColumns: number): IColumn[] {\r\n if (this._cachedColumns.hasOwnProperty(numberOfColumns))\r\n return this._cachedColumns[numberOfColumns];\r\n\r\n this._cachedColumns[numberOfColumns] = this.calculateColumns(numberOfColumns);\r\n\r\n return this._cachedColumns[numberOfColumns];\r\n }\r\n\r\n private calculateColumns(numberOfColumns: number): IColumn[] {\r\n return splitArray(this._list, numberOfColumns);\r\n }\r\n}\r\n","import React, { HTMLAttributes, ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { Breakpoint } from \"@material-ui/core/styles/createBreakpoints\";\r\nimport ListDisplayController, { IColumn } from \"./ListDisplayController\";\r\nimport clsx from \"clsx\";\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: { display: \"flex\" },\r\n column: {\r\n // flex: 1,\r\n padding: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\ninterface IBreakPoint {\r\n breakpoint: Breakpoint;\r\n numberOfColums: number;\r\n}\r\n\r\ntype IClasses = Partial>;\r\n\r\ninterface IProps extends HTMLAttributes {\r\n breakpoints: IBreakPoint[]; // all brakpoints are calculated using up\r\n items: T[];\r\n classes?: IClasses;\r\n renderItem: (item: T) => ReactNode;\r\n}\r\n\r\nexport default function ListDisplay(props: IProps) {\r\n const classes = useStyles();\r\n const { breakpoints, items, renderItem, className = \"\", classes: overideClasses } = props;\r\n\r\n const listDisplayController = new ListDisplayController(items);\r\n\r\n return (\r\n
\r\n {breakpoints.map((breakpoint: IBreakPoint) => (\r\n \r\n ))}\r\n
\r\n );\r\n}\r\n\r\ninterface IDisplayGridProps extends HTMLAttributes {\r\n breakPoint: IBreakPoint;\r\n columns: IColumn[];\r\n renderItem: (item: T) => ReactNode;\r\n}\r\n\r\nfunction DisplayGrid(props: IDisplayGridProps) {\r\n const { columns, renderItem, breakPoint, className = \"\" } = props;\r\n\r\n const matches = useMediaQuery((theme: Theme) => theme.breakpoints.only(breakPoint.breakpoint));\r\n\r\n return (\r\n <>\r\n {matches\r\n ? columns.map((column: T[], i: number) => (\r\n
\r\n {column.map((item: T) => renderItem(item))}\r\n
\r\n ))\r\n : null}\r\n \r\n );\r\n}\r\n","export default () => {};\r\n","import React, { useState } from \"react\";\r\nimport CountryCode from \"models/CountryCode\";\r\nimport ICountry from \"./models/ICountry\";\r\nimport CountryOption from \"./CountryOption\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport ArrowDownwardRoundedIcon from \"@material-ui/icons/ArrowDownwardRounded\";\r\nimport Spacer from \"components/Spacer\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport ListDisplay from \"components/listDisplay/ListDisplay\";\r\nimport noop from \"utils/noop\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n selectedCountryContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderBottom: `1px solid ${theme.palette.common.black}`,\r\n cursor: \"pointer\",\r\n },\r\n iconArrow: {\r\n width: 20,\r\n height: 20,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n transition: `all 0.3s ease-in-out`,\r\n \"& svg\": {\r\n width: \"100%\",\r\n },\r\n },\r\n iconRotate: { transform: \"rotate(180deg)\" },\r\n countryListContainer: {\r\n padding: `${theme.spacing(1)}px 0px`,\r\n },\r\n labelText: {\r\n lineHeight: 1,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n fontSize: \"0.8rem !important\",\r\n \"& p\": {\r\n fontSize: \"0.8rem !important\",\r\n },\r\n },\r\n },\r\n countryOption: {\r\n lineHeight: 2,\r\n \"&:hover\": {\r\n textDecoration: \"underline\",\r\n cursor: \"pointer\",\r\n },\r\n },\r\n displayListRoot: {\r\n justifyContent: \"center\",\r\n },\r\n displayListColumn: {\r\n padding: `0px ${theme.spacing(4)}px`,\r\n },\r\n })\r\n);\r\n\r\nexport type ICountries = {\r\n [key in CountryCode]?: ICountry;\r\n};\r\n\r\ninterface ICoutryListItem {\r\n code: CountryCode;\r\n country: ICountry;\r\n}\r\n\r\ninterface IProps {\r\n countries: ICountries;\r\n defaultCountry: CountryCode;\r\n defaultShowOptions?: boolean;\r\n onSelectedCountryChange?: (selectedCountry: CountryCode) => void;\r\n onShowOptionsChange?: (showOptions: boolean) => void;\r\n}\r\n\r\nexport default function useCountrySelect(props: IProps) {\r\n const classes = useStyles();\r\n const {\r\n countries,\r\n defaultCountry,\r\n defaultShowOptions = false,\r\n onSelectedCountryChange = noop,\r\n onShowOptionsChange = noop,\r\n } = props;\r\n const [_selectedCountryCode, _setSelectedCountryCode] = useState(defaultCountry);\r\n const [_showOptions, _setShowOptions] = useState(defaultShowOptions);\r\n\r\n const setShowOptions = (showOptions: boolean) => {\r\n _setShowOptions(showOptions);\r\n onShowOptionsChange(showOptions);\r\n };\r\n\r\n const onCountryClick = (countryCode: CountryCode) => {\r\n _setSelectedCountryCode(countryCode);\r\n onSelectedCountryChange(countryCode);\r\n setShowOptions(false);\r\n };\r\n\r\n const toggleSelect = (event: React.MouseEvent) => {\r\n setShowOptions(!_showOptions);\r\n };\r\n\r\n let countryList: ICoutryListItem[] = [];\r\n for (const key in countries) {\r\n if (countries.hasOwnProperty(key)) {\r\n const coutryCode = key as CountryCode;\r\n const country: ICountry = countries[coutryCode] as ICountry;\r\n\r\n countryList.push({\r\n code: coutryCode,\r\n country: country,\r\n });\r\n }\r\n }\r\n\r\n return {\r\n countrySelectLabel: (\r\n
\r\n
\r\n {_showOptions ? (\r\n \r\n Select Your Country\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n ),\r\n countrySelectOptions: (\r\n
\r\n (\r\n onCountryClick(item.code)}\r\n />\r\n )}\r\n breakpoints={[\r\n { breakpoint: \"xs\", numberOfColums: 1 },\r\n { breakpoint: \"sm\", numberOfColums: 2 },\r\n { breakpoint: \"md\", numberOfColums: 2 },\r\n { breakpoint: \"lg\", numberOfColums: 2 },\r\n { breakpoint: \"xl\", numberOfColums: 2 },\r\n ]}\r\n />\r\n
\r\n ),\r\n };\r\n}\r\n","import useCountrySelect from \"./useCountrySelect\";\r\n\r\nexport * from \"./useCountrySelect\";\r\nexport default useCountrySelect;\r\n","import React, { ReactNode } from \"react\";\r\nimport StyledButton, { IStyledButtonProps } from \"./StyledButton\";\r\nimport NewTabLink from \"components/links/NewTabLink\";\r\n\r\ninterface IProps extends IStyledButtonProps {\r\n children?: ReactNode;\r\n href: string;\r\n}\r\n\r\nexport default function NewTabLinkButton(props: IProps) {\r\n const { children, href, ...rest } = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport StyledButton, { IStyledButtonProps } from \"components/buttons/StyledButton\";\r\nimport OmitType from \"customTypes/OmitType\";\r\nimport NewTabLinkButton from \"components/buttons/NewTabLinkButton\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n minWidth: 175,\r\n marginRight: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\ninterface IProps extends OmitType, \"id\"> {\r\n href?: string;\r\n gtmSelector: string;\r\n}\r\n\r\nexport default function SelectionButton(props: IProps) {\r\n const classes = useStyles();\r\n\r\n const { href, className, gtmSelector, ...rest } = props;\r\n\r\n const commonProps = {\r\n size: \"medium\" as \"medium\",\r\n className: clsx(className, classes.root, gtmSelector),\r\n };\r\n\r\n return typeof href === \"undefined\" ? (\r\n \r\n ) : (\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { IPlatformPurchaseLinkConfig } from \"models/IAppConfig\";\r\nimport SelectionButton from \"./SelectionButton\";\r\n\r\ninterface IProps {\r\n purchaseLinkConfig: IPlatformPurchaseLinkConfig[];\r\n onPlatformSelect: (platform: IPlatformPurchaseLinkConfig) => void;\r\n}\r\n\r\nexport default function PlatformSelect(props: IProps) {\r\n const { purchaseLinkConfig, onPlatformSelect } = props;\r\n\r\n if (purchaseLinkConfig.length === 0) {\r\n console.log(\"no platforms\");\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {purchaseLinkConfig.map((platform) => {\r\n if (typeof platform.displayName === \"undefined\") {\r\n console.log(\"Platform displayName is undefined\");\r\n return null;\r\n }\r\n if (typeof platform.platformCode === \"undefined\") {\r\n console.log(\"Platform platformCode is undefined\");\r\n return null;\r\n }\r\n\r\n const isDisabled =\r\n typeof platform.link === \"undefined\" &&\r\n (typeof platform.storeLinks === \"undefined\" ||\r\n platform.storeLinks.length === 0);\r\n\r\n const onClick =\r\n typeof platform.link !== \"undefined\"\r\n ? undefined\r\n : () => onPlatformSelect(platform);\r\n\r\n return (\r\n
\r\n \r\n {platform.displayName}\r\n \r\n
\r\n );\r\n })}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport OmitType from \"customTypes/OmitType\";\r\nimport TextField, { TextFieldProps } from \"@material-ui/core/TextField\";\r\nimport clsx from \"clsx\";\r\nimport { fonts } from \"theme\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n \"& .MuiOutlinedInput-root:hover:not(.Mui-focused) .MuiOutlinedInput-notchedOutline\": {\r\n border: `2px solid ${theme.palette.secondary.main}`,\r\n },\r\n \"& .MuiInputBase-root\": {\r\n backgroundColor: theme.palette.background.paper,\r\n fontFamily: fonts.primary,\r\n textTransform: \"uppercase\",\r\n borderRadius: 0,\r\n fontSize: \"1.5rem\",\r\n },\r\n \"& .MuiInputBase-input\": {\r\n padding: \"5px 10px\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends OmitType {}\r\n\r\nexport default function StyledTextField(props: IProps) {\r\n const { className = \"\", ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\ninterface IProps extends React.HTMLAttributes {\r\n color?: string;\r\n}\r\n\r\nexport default function CheckboxTickIcon(props: IProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport OmitType from \"customTypes/OmitType\";\r\nimport Checkbox, { CheckboxProps } from \"@material-ui/core/Checkbox\";\r\nimport CheckboxTickIcon from \"assets/svgs/icons/CheckboxTickIcon\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n color: \"#0d6b6b\",\r\n },\r\n iconBackground: {\r\n display: \"flex\",\r\n width: 18,\r\n height: 18,\r\n backgroundColor: theme.palette.common.white,\r\n border: `1px solid ${theme.palette.common.black}`,\r\n },\r\n icon: {\r\n padding: 2,\r\n flex: \"1 1 auto\",\r\n },\r\n \"&$checked\": {\r\n color: \"#0d6b6b\",\r\n },\r\n })\r\n);\r\n\r\ninterface IProps extends OmitType {}\r\n\r\nexport default function StyledCheckBox(props: IProps) {\r\n const { className = \"\", ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n icon={}\r\n {...rest}\r\n />\r\n );\r\n}\r\n","import React, { useState, ReactElement } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport StyledButton from \"components/buttons/StyledButton\";\r\nimport StyledTextField from \"components/inputs/StyledTextField\";\r\nimport FormGroup from \"@material-ui/core/FormGroup\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport StyledCheckBox from \"components/inputs/StyledCheckBox\";\r\nimport EmailSubscriptionListType from \"models/EmailSubscriptionListType\";\r\nimport { backendApi } from \"apiConsumers\";\r\n\r\n// @ts-ignore\r\nimport { serialize } from \"react-serialize\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n textField: {\r\n flex: \"1 1 auto\",\r\n },\r\n snackBar: {\r\n border: `2px solid ${theme.palette.common.black}`,\r\n backgroundColor: theme.palette.common.white,\r\n color: theme.palette.common.black,\r\n padding: theme.spacing(2),\r\n },\r\n });\r\n});\r\n\r\ninterface IProps {\r\n list: EmailSubscriptionListType;\r\n termsLabel?: ReactElement;\r\n}\r\n\r\nexport default function useSubscriptionForm(props: IProps) {\r\n const classes = useStyles();\r\n const { list, termsLabel } = props;\r\n\r\n const defaultAgreed = false;\r\n const defaultEmail = \"\";\r\n\r\n const [agreed, setAgreed] = useState(defaultAgreed);\r\n const [email, setEmail] = useState(defaultEmail);\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n const [modalMessage, setModalMessage] = useState(\"\");\r\n\r\n const onCheckboxClick = (event: React.ChangeEvent) => {\r\n setAgreed(event.target.checked);\r\n };\r\n\r\n const validateEmail = (_email: string) => {\r\n return _email.includes(\"@\");\r\n };\r\n\r\n const onsubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n postData();\r\n };\r\n const onSignUp = (event: React.MouseEvent) => {\r\n postData();\r\n };\r\n\r\n const postData = () => {\r\n const validEmail = validateEmail(email);\r\n if (!validEmail) {\r\n setErrorMessage(\"Please enter a valid email\");\r\n return;\r\n }\r\n\r\n if (typeof termsLabel !== \"undefined\" && !agreed) {\r\n setErrorMessage(\"You must agree to the terms\");\r\n return;\r\n }\r\n\r\n setAgreed(defaultAgreed);\r\n setEmail(defaultEmail);\r\n setErrorMessage(\"\");\r\n\r\n let termsLabelText: string | undefined;\r\n if (typeof termsLabel !== \"undefined\") {\r\n termsLabelText = serialize(termsLabel.props.children);\r\n }\r\n\r\n backendApi\r\n .subscribeEmail(email, list, termsLabelText)\r\n .then(() => {\r\n setModalMessage(\"Succesfully registered \" + email);\r\n })\r\n .catch((err) => {\r\n setModalMessage(\"We couldn't process your request, please try again\");\r\n });\r\n };\r\n\r\n const handleEmailChange = (\r\n event: React.ChangeEvent\r\n ) => {\r\n const email = event.target.value.toLowerCase();\r\n\r\n setEmail(email);\r\n };\r\n\r\n const onSnackbarClose = () => {\r\n setModalMessage(\"\");\r\n };\r\n\r\n return {\r\n inputComponent: (\r\n <>\r\n 0}\r\n autoHideDuration={6000}\r\n onClose={onSnackbarClose}\r\n className={classes.snackBar}\r\n >\r\n {modalMessage}\r\n \r\n\r\n
\r\n 0}\r\n helperText={errorMessage.length > 0 ? errorMessage : \" \"}\r\n className={classes.textField}\r\n value={email}\r\n id=\"email-text-field\"\r\n placeholder=\"email address\"\r\n onChange={handleEmailChange}\r\n margin=\"dense\"\r\n />\r\n \r\n \r\n ),\r\n termsLabel:\r\n typeof termsLabel === \"undefined\" ? undefined : (\r\n \r\n \r\n }\r\n label={termsLabel}\r\n />\r\n \r\n ),\r\n signUpButton: Sign Up,\r\n };\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport useSubscriptionForm from \"hooks/useSubscriptionForm\";\r\nimport Spacer from \"components/Spacer\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { ISubscriptionConfig } from \"models/IAppConfig\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n subscriptionContainer: {\r\n display: \"flex\",\r\n [theme.breakpoints.down(\"sm\")]: { flexDirection: \"column\" },\r\n },\r\n inputContainer: {},\r\n signuptButtonContainer: {\r\n marginLeft: theme.spacing(2),\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: 0,\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n },\r\n },\r\n })\r\n);\r\n\r\ninterface IProps {\r\n subscriptionConfig?: ISubscriptionConfig;\r\n}\r\n\r\nexport default function PurchaseSubscriptionInput(props: IProps) {\r\n const classes = useStyles();\r\n\r\n const { subscriptionConfig = {} } = props;\r\n\r\n const { listName = \"dirt5\", checkboxLabel, description } = subscriptionConfig;\r\n\r\n const { inputComponent, signUpButton, termsLabel } = useSubscriptionForm({\r\n list: listName,\r\n termsLabel: {checkboxLabel},\r\n });\r\n\r\n return (\r\n
\r\n {description}\r\n\r\n \r\n\r\n
\r\n
{inputComponent}
\r\n
{signUpButton}
\r\n
\r\n\r\n
{termsLabel}
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { IStorePurchaseLinkConfig } from \"models/IAppConfig\";\r\nimport SelectionButton from \"./SelectionButton\";\r\nimport clsx from \"clsx\";\r\nimport Collapse from \"@material-ui/core/Collapse\";\r\nimport PurchaseSubscriptionInput from \"./PurchaseSubscriptionInput\";\r\n\r\ninterface IProps {\r\n stores: IStorePurchaseLinkConfig[];\r\n platformCode?: string;\r\n currentlySelectedStore?: IStorePurchaseLinkConfig;\r\n onSubscriptionStoreTabClick: (store: IStorePurchaseLinkConfig) => void;\r\n}\r\n\r\nexport default function StoreSelect(props: IProps) {\r\n const { stores, platformCode, onSubscriptionStoreTabClick, currentlySelectedStore } = props;\r\n\r\n if (stores.length === 0) {\r\n console.log(`no stores provided`);\r\n return
;\r\n }\r\n\r\n const buttons = stores.map((store) => {\r\n if (typeof store.storeCode === \"undefined\") {\r\n console.log(\"Store storeCode is undefined\");\r\n return null;\r\n }\r\n if (typeof store.displayName === \"undefined\") {\r\n console.log(\"Store displayName is undefined\");\r\n return null;\r\n }\r\n\r\n if (typeof store.subscription !== \"undefined\") {\r\n return (\r\n
\r\n onSubscriptionStoreTabClick(store)}\r\n >\r\n {store.displayName}\r\n \r\n
\r\n );\r\n }\r\n\r\n const isDisabled = typeof store.link === \"undefined\" || store.link.length === 0;\r\n\r\n return (\r\n
\r\n \r\n {store.displayName}\r\n \r\n
\r\n );\r\n });\r\n\r\n const showEmailCapture = typeof currentlySelectedStore !== \"undefined\";\r\n\r\n return (\r\n
\r\n \r\n
\r\n {buttons}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\ninterface IProps extends React.HTMLAttributes {\r\n color?: string;\r\n}\r\n\r\nexport default function BackArrowIcon(props: IProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { ReactNode, useState, useEffect } from \"react\";\r\nimport CountryCode from \"models/CountryCode\";\r\nimport PlatformSelect from \"./PlatformSelect\";\r\nimport StoreSelect from \"./StoreSelect\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport {\r\n IEditionPurchaseLinkConfig,\r\n IPlatformPurchaseLinkConfig,\r\n IStorePurchaseLinkConfig,\r\n} from \"models/IAppConfig\";\r\nimport BackArrowIcon from \"assets/svgs/icons/BackArrowIcon\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n backButton: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n \"&:hover\": {\r\n textDecoration: \"underline\",\r\n },\r\n },\r\n })\r\n);\r\n\r\ninterface IUsePlatformLinksConfigResponse {\r\n platformLinks: ReactNode;\r\n storeLinks: ReactNode;\r\n backButton: ReactNode;\r\n}\r\n\r\ninterface IProps {\r\n selectedCountry: CountryCode;\r\n editionPurchaseLinkConfig?: IEditionPurchaseLinkConfig;\r\n currentSelectedPlatform?: IPlatformPurchaseLinkConfig;\r\n onPlatformSelect: (platform: IPlatformPurchaseLinkConfig) => void;\r\n onBack: () => void;\r\n}\r\n\r\nexport default function usePlatformSelectionLinks(props: IProps): IUsePlatformLinksConfigResponse {\r\n const classes = useStyles();\r\n const {\r\n selectedCountry,\r\n editionPurchaseLinkConfig = {},\r\n currentSelectedPlatform,\r\n onPlatformSelect,\r\n onBack,\r\n } = props;\r\n\r\n const purchaseLinkConfig = editionPurchaseLinkConfig[selectedCountry];\r\n const [currentlySelectedStore, setCurrentlySelectedStore] = useState<\r\n IStorePurchaseLinkConfig | undefined\r\n >(undefined);\r\n\r\n useEffect(() => {\r\n setCurrentlySelectedStore(undefined);\r\n }, [selectedCountry]);\r\n\r\n if (typeof purchaseLinkConfig === \"undefined\") {\r\n console.log(`purchaseLinkConfig for ${selectedCountry} is undefined`);\r\n return {\r\n platformLinks: null,\r\n storeLinks: null,\r\n backButton: null,\r\n };\r\n }\r\n\r\n const backButtonOnClick =\r\n typeof currentlySelectedStore === \"undefined\"\r\n ? onBack\r\n : () => setCurrentlySelectedStore(undefined);\r\n\r\n return {\r\n platformLinks: (\r\n \r\n ),\r\n storeLinks:\r\n typeof currentSelectedPlatform?.storeLinks === \"undefined\" ? null : (\r\n setCurrentlySelectedStore(store)}\r\n />\r\n ),\r\n backButton:\r\n typeof currentSelectedPlatform === \"undefined\" ? null : (\r\n
\r\n
\r\n \r\n \r\n
\r\n Back\r\n
\r\n \r\n ),\r\n };\r\n}\r\n","import CountryCode from \"models/CountryCode\";\r\nimport { ICountries } from \"./useCountrySelect\";\r\nimport assetsLocations from \"assetLocations\";\r\n\r\nconst defaultCountries: ICountries = {\r\n [CountryCode.AU]: {\r\n label: \"Australia\",\r\n flagImageLocation: assetsLocations.flags.AU,\r\n },\r\n [CountryCode.AT]: {\r\n label: \"Austria\",\r\n flagImageLocation: assetsLocations.flags.AT,\r\n },\r\n [CountryCode.BE]: {\r\n label: \"Belgium\",\r\n flagImageLocation: assetsLocations.flags.BE,\r\n },\r\n [CountryCode.CA]: {\r\n label: \"Canada\",\r\n flagImageLocation: assetsLocations.flags.CA,\r\n },\r\n [CountryCode.DK]: {\r\n label: \"Denmark\",\r\n flagImageLocation: assetsLocations.flags.DK,\r\n },\r\n [CountryCode.FI]: {\r\n label: \"Finland\",\r\n flagImageLocation: assetsLocations.flags.FI,\r\n },\r\n [CountryCode.FR]: {\r\n label: \"France\",\r\n flagImageLocation: assetsLocations.flags.FR,\r\n },\r\n [CountryCode.DE]: {\r\n label: \"Germany\",\r\n flagImageLocation: assetsLocations.flags.DE,\r\n },\r\n [CountryCode.IT]: {\r\n label: \"Italy\",\r\n flagImageLocation: assetsLocations.flags.IT,\r\n },\r\n [CountryCode.NL]: {\r\n label: \"Netherlands\",\r\n flagImageLocation: assetsLocations.flags.NL,\r\n },\r\n [CountryCode.NZ]: {\r\n label: \"New Zealand\",\r\n flagImageLocation: assetsLocations.flags.NZ,\r\n },\r\n [CountryCode.NO]: {\r\n label: \"Norway\",\r\n flagImageLocation: assetsLocations.flags.NO,\r\n },\r\n [CountryCode.PL]: {\r\n label: \"Poland\",\r\n flagImageLocation: assetsLocations.flags.PL,\r\n },\r\n [CountryCode.ES]: {\r\n label: \"Spain\",\r\n flagImageLocation: assetsLocations.flags.ES,\r\n },\r\n [CountryCode.SE]: {\r\n label: \"Sweden\",\r\n flagImageLocation: assetsLocations.flags.SE,\r\n },\r\n [CountryCode.CH]: {\r\n label: \"Switzerland\",\r\n flagImageLocation: assetsLocations.flags.CH,\r\n },\r\n [CountryCode.GB]: {\r\n label: \"United Kingdom\",\r\n flagImageLocation: assetsLocations.flags.GB,\r\n },\r\n [CountryCode.US]: {\r\n label: \"United States\",\r\n flagImageLocation: assetsLocations.flags.US,\r\n },\r\n};\r\n\r\nexport default defaultCountries;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { IEditionPurchaseLinkConfig, IPlatformPurchaseLinkConfig } from \"models/IAppConfig\";\r\nimport Collapse from \"@material-ui/core/Collapse\";\r\nimport CountryCode from \"models/CountryCode\";\r\nimport useCountrySelect, { ICountries } from \"hooks/useCountrySelect\";\r\nimport usePlatformSelectionLinks from \"./platformSelection/usePlatformSelectionLinks\";\r\nimport Spacer from \"components/Spacer\";\r\nimport defaultCountries from \"hooks/useCountrySelect/defaultCountries\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport queryString from \"query-string\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n headerContainer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n minHeight: 35,\r\n },\r\n })\r\n);\r\n\r\ninterface IProps {\r\n editionPurchaseLinkConfig: IEditionPurchaseLinkConfig;\r\n}\r\n\r\nfunction getDefaultCountry(country: any, possibleCountries: ICountries): CountryCode {\r\n const defaultCountry = CountryCode.GB;\r\n\r\n if (typeof country !== \"string\") return defaultCountry;\r\n if (country.length !== 2) return defaultCountry;\r\n\r\n const countryCode = country.toUpperCase() as CountryCode;\r\n const parsedCountry = possibleCountries[countryCode];\r\n\r\n if (typeof parsedCountry === \"undefined\") return defaultCountry;\r\n\r\n return countryCode;\r\n}\r\n\r\nexport default function BuyNowDialogController(props: IProps) {\r\n const classes = useStyles();\r\n const { editionPurchaseLinkConfig } = props;\r\n let location = useLocation();\r\n\r\n const queryStringCountry = queryString.parse(location.search).country;\r\n\r\n const possibleCountries = defaultCountries;\r\n const defaultCountry = getDefaultCountry(queryStringCountry, possibleCountries);\r\n\r\n const defaultShowOptions = false;\r\n const [selectedCountryCode, setSelectedCountryCode] = useState(defaultCountry);\r\n const [showOptions, setShowOptions] = useState(false);\r\n\r\n const { countrySelectLabel, countrySelectOptions } = useCountrySelect({\r\n onSelectedCountryChange: (_selectedCountry: CountryCode) =>\r\n setSelectedCountryCode(_selectedCountry),\r\n onShowOptionsChange: (_showOptions: boolean) => setShowOptions(_showOptions),\r\n countries: possibleCountries,\r\n defaultCountry,\r\n defaultShowOptions,\r\n });\r\n\r\n const [currentSelectedPlatform, setCurrentSelectedPlatform] = useState<\r\n IPlatformPurchaseLinkConfig | undefined\r\n >();\r\n\r\n useEffect(() => {\r\n setCurrentSelectedPlatform(undefined);\r\n }, [selectedCountryCode]);\r\n\r\n const selectPlatform = (platform: IPlatformPurchaseLinkConfig) => {\r\n if (platform.platformCode === currentSelectedPlatform?.platformCode) {\r\n setCurrentSelectedPlatform(undefined);\r\n } else {\r\n setCurrentSelectedPlatform(platform);\r\n }\r\n };\r\n\r\n const { platformLinks, storeLinks, backButton } = usePlatformSelectionLinks({\r\n selectedCountry: selectedCountryCode,\r\n editionPurchaseLinkConfig: editionPurchaseLinkConfig,\r\n currentSelectedPlatform: currentSelectedPlatform,\r\n onPlatformSelect: selectPlatform,\r\n onBack: () => {\r\n setCurrentSelectedPlatform(undefined);\r\n },\r\n });\r\n\r\n const showStoreLinks = storeLinks !== null;\r\n\r\n return (\r\n
\r\n
\r\n
{showOptions ? null : backButton}
\r\n
{countrySelectLabel}
\r\n
\r\n\r\n \r\n\r\n {countrySelectOptions}\r\n\r\n \r\n {typeof editionPurchaseLinkConfig === \"undefined\" ? (\r\n
\r\n ) : (\r\n <>\r\n {platformLinks}\r\n {storeLinks}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport StyledDialog, { IStyledDialogProps } from \"components/dialogs/styledDialog/StyledDialog\";\r\nimport OmitType from \"customTypes/OmitType\";\r\nimport BuyNowDialogController from \"./BuyNowDialogController\";\r\nimport { IEditionPurchaseLinkConfig } from \"models/IAppConfig\";\r\nimport Spacer from \"components/Spacer\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: { minHeight: 225 },\r\n })\r\n);\r\n\r\ninterface IProps extends OmitType {\r\n editionPurchaseLinkConfig: IEditionPurchaseLinkConfig;\r\n dialogText?: ReactNode;\r\n}\r\n\r\nexport default function BuyNowDialog(props: IProps) {\r\n const classes = useStyles();\r\n const { editionPurchaseLinkConfig, dialogText, ...rest } = props;\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n {dialogText}\r\n
\r\n
\r\n );\r\n}\r\n","enum EditionType {\r\n STANDARD = \"standard\",\r\n SPECIAL = \"special\",\r\n ENERGY_CONTENT_PACK = \"energyContentPack\",\r\n UPROAR_CONTENT_PACK = \"uproarContentPack\",\r\n SUPER_SIZE_CONTENT_PACK = \"superSizeContentPack\",\r\n WILD_SPIRITS_CONTENT_PACK = \"wildSpiritsContentPack\",\r\n}\r\n\r\nexport default EditionType;\r\n","import React, { useState, useContext, ReactNode } from \"react\";\r\nimport ConfigContext from \"contexts/ConfigContext\";\r\nimport StyledButton from \"components/buttons/StyledButton\";\r\nimport BuyNowDialog from \"./dialog/BuyNowDialog\";\r\nimport EditionType from \"models/EditionType\";\r\n\r\ninterface IProps {\r\n edition: EditionType;\r\n dialogText?: ReactNode;\r\n children?: ReactNode;\r\n}\r\n\r\nexport default function BuyNowButton(props: IProps) {\r\n const { edition, dialogText, children = \"Buy Now\", ...rest } = props;\r\n const [open, setOpen] = useState(false);\r\n const config = useContext(ConfigContext);\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (typeof config === \"undefined\") return null;\r\n\r\n const { purchaseLinks } = config;\r\n\r\n const editionPurchaseLinkConfig = purchaseLinks[edition];\r\n\r\n if (typeof editionPurchaseLinkConfig === \"undefined\") return null;\r\n\r\n return (\r\n <>\r\n \r\n {children}\r\n \r\n\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nexport default function NextGenUpgradeText() {\r\n return (\r\n <>\r\n \r\n DIRT 5 supports the FREE upgrade system for next-gen consoles, so grab the\r\n game on Xbox One and PlayStation 4, and get the next-gen optimised version, free of\r\n charge.\r\n \r\n \r\n Discless consoles require a digital entitlement to upgrade.\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Edition from \"./Edition\";\r\nimport Spacer from \"components/Spacer\";\r\nimport BuyNowButton from \"../BuyNowButton\";\r\nimport EditionType from \"models/EditionType\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport keyArt from \"assets/images/homePage/buyNowSection/standardEditionKeyart.png\";\r\nimport titleImage from \"assets/images/homePage/buyNowSection/standardEditionTitle.png\";\r\nimport ImageSkeleton from \"components/skeletons/ImageSkeleton\";\r\nimport calculateAspectRatio from \"utils/calculateAspectRatio\";\r\nimport imageSizes from \"imageSizes\";\r\nimport NextGenUpgradeText from \"./NextGenUpgradeText\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n title: {\r\n \"& img\": {\r\n width: \"65%\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n },\r\n });\r\n});\r\n\r\nexport default function StandardEdition() {\r\n const classes = useStyles();\r\n\r\n const textVariant = \"body1\";\r\n\r\n return (\r\n \r\n }\r\n editionTitle={\r\n
\r\n \"Standard\r\n
\r\n }\r\n placement=\"left\"\r\n >\r\n
    \r\n
  • \r\n Full Game\r\n
  • \r\n
  • \r\n Snow Limits Content Pack\r\n
  • \r\n
  • \r\n Junkyard Playgrounds Update\r\n
  • \r\n
  • \r\n After Dark Playgrounds Update\r\n
  • \r\n
  • \r\n Red Bull Revolution Update\r\n
  • \r\n
  • \r\n Parts Unknown Playgrounds Update\r\n
  • \r\n
  • \r\n \r\n Tricks N Treats Halloween Playgrounds Update\r\n \r\n
  • \r\n
\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n Buy Standard Edition\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Edition from \"./Edition\";\r\nimport Spacer from \"components/Spacer\";\r\nimport BuyNowButton from \"../BuyNowButton\";\r\nimport EditionType from \"models/EditionType\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport keyArt from \"assets/images/homePage/buyNowSection/specialEditionKeyart.png\";\r\nimport titleImage from \"assets/images/homePage/buyNowSection/specialEditionTitle.png\";\r\nimport ImageSkeleton from \"components/skeletons/ImageSkeleton\";\r\nimport calculateAspectRatio from \"utils/calculateAspectRatio\";\r\nimport imageSizes from \"imageSizes\";\r\nimport NextGenUpgradeText from \"./NextGenUpgradeText\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n title: {\r\n \"& img\": {\r\n width: \"65%\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n },\r\n });\r\n});\r\n\r\nexport default function SpecialEdition() {\r\n const classes = useStyles();\r\n\r\n const textVariant = \"body1\";\r\n\r\n return (\r\n \r\n }\r\n editionTitle={\r\n
\r\n \"Special\r\n
\r\n }\r\n placement=\"right\"\r\n >\r\n DIRT 5 Standard Edition, plus…\r\n\r\n
    \r\n
  • \r\n \r\n Access to every Year 1 post-launch addition to DIRT 5\r\n \r\n
  • \r\n
  • \r\n \r\n 3 exclusive vehicles: Ariel Nomad Tactical, Audi TT Safari, VW Beetle\r\n Rallycross\r\n \r\n
  • \r\n
  • \r\n \r\n 3 exclusive player sponsors with fresh objectives, rewards and liveries\r\n \r\n
  • \r\n
  • \r\n Currency and XP boosts\r\n
  • \r\n
  • \r\n Energy Content Pack\r\n
  • \r\n
  • \r\n Uproar Content Pack\r\n
  • \r\n
  • \r\n Super Size Content Pack\r\n
  • \r\n
  • \r\n Wild Spirits Content Pack\r\n
  • \r\n
\r\n\r\n \r\n \r\n \r\n The Year 1 Edition is digital only and not available to purchase at\r\n retail.\r\n \r\n \r\n \r\n }\r\n >\r\n Buy Year 1 Edition\r\n \r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport BuyNowTextBoxWithAdornments from \"components/textBoxes/buyNow/BuyNowTextBoxWithAdornments\";\r\nimport title from \"assets/images/homePage/buyNowSection/title_addons.png\";\r\nimport clsx from \"clsx\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {},\r\n title: {},\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function AddonsTitle(props: IProps) {\r\n const classes = useStyles();\r\n const { className, ...rest } = props;\r\n\r\n return (\r\n }\r\n {...rest}\r\n >\r\n \r\n Take your DIRT 5 experience up another notch with our content packs, filled with new\r\n cars, events, liveries, customisation items and much more!\r\n \r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport BuyNowTextBox from \"components/textBoxes/buyNow/BuyNowTextBox\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport Scribble from \"components/scribble/Scribble\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const imageContainerZIndex = 10;\r\n\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n maxWidth: 600,\r\n },\r\n },\r\n imageContainer: {\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n zIndex: imageContainerZIndex,\r\n },\r\n textbox: {\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginLeft: -theme.spacing(2),\r\n zIndex: imageContainerZIndex - 1,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginTop: -theme.spacing(3),\r\n marginLeft: theme.spacing(2),\r\n zIndex: imageContainerZIndex + 1,\r\n },\r\n },\r\n scribbleContainer: {\r\n width: \"75%\",\r\n height: \"auto\",\r\n top: \"-16%\",\r\n left: \"-23%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"75%\",\r\n height: \"auto\",\r\n bottom: \"-12%\",\r\n left: \"-15%\",\r\n top: \"unset\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n keyartSrc: string;\r\n}\r\n\r\nexport default function Addon(props: IProps) {\r\n const classes = useStyles();\r\n const { keyartSrc, className, children, ...rest } = props;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n {children}\r\n \r\n \r\n
\r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport AddonsTitle from \"./AddonsTitle\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport Spacer from \"components/Spacer\";\r\nimport Addon from \"./Addon\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport dlc01 from \"assets/images/homePage/buyNowSection/dlc/dlc_01.png\";\r\nimport dlc01Title from \"assets/images/homePage/buyNowSection/dlc/title_dlc_01.png\";\r\nimport dlc02 from \"assets/images/homePage/buyNowSection/dlc/dlc_02.png\";\r\nimport dlc02Title from \"assets/images/homePage/buyNowSection/dlc/title_dlc_02.png\";\r\nimport dlc03 from \"assets/images/homePage/buyNowSection/dlc/dlc_03.png\";\r\nimport dlc03Title from \"assets/images/homePage/buyNowSection/dlc/title_dlc_03.png\";\r\nimport dlc04 from \"assets/images/homePage/buyNowSection/dlc/dlc_04.png\";\r\nimport dlc04Title from \"assets/images/homePage/buyNowSection/dlc/title_dlc_04.png\";\r\nimport BuyNowButton from \"../BuyNowButton\";\r\nimport EditionType from \"models/EditionType\";\r\nimport SelectableCollection from \"components/selectableCollection/SelectableCollection\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n titleContainer: { display: \"flex\" },\r\n titleContainerSpacingPlaceholder: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n addons: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n },\r\n });\r\n});\r\n\r\ninterface IAddon {\r\n keyartSrc: string;\r\n titleImage: ReactNode;\r\n textContent: ReactNode;\r\n editionType: EditionType;\r\n}\r\n\r\nexport default function Addons() {\r\n const classes = useStyles();\r\n\r\n const addons: IAddon[] = [\r\n {\r\n keyartSrc: dlc04,\r\n titleImage: ,\r\n textContent: (\r\n <>\r\n \r\n A pair of eye-catching off-road machines, purpose-built to overcome any\r\n terrain, are added to DIRT 5 in the Wild Spirits Content Pack. First up: the\r\n hotly-anticipated Ford Bronco Wildtrak 2021 – the perfect addition to take\r\n on our extreme events. Alongside the Bronco is the Prodrive Hunter: billed\r\n as a ‘Desert Hypercar’, the Hunter has all the power you need to dominate\r\n DIRT 5’s global off-road routes.\r\n \r\n \r\n The Wild Spirits Content Pack also further expands our Career mode with\r\n another 25 bespoke events, and two additional Career Sponsors are also\r\n added: Alpinestars and VP Racing Fuels. Select either of these sponsors to\r\n unlock new rewards and content, including fresh liveries and customisation\r\n items.\r\n \r\n \r\n ),\r\n editionType: EditionType.WILD_SPIRITS_CONTENT_PACK,\r\n },\r\n {\r\n keyartSrc: dlc03,\r\n titleImage: ,\r\n textContent: (\r\n <>\r\n \r\n The Super Size Content Pack certainly lives up to its name, with four huge\r\n off-road machines ready to take on all terrain and all challengers – the\r\n Bentley Continental GT Ice Race Car, Armada Rock Racer, Volkswagen Atlas\r\n Cross Sport Baja Concept and Rezvani Tank – and another 27 bespoke events to\r\n take on in a new career chapter.\r\n \r\n \r\n Two more sponsors – Toblerone and Power Maxed – are available to sign for\r\n and earn exclusive rewards for, including liveries, by completing their\r\n objectives. More customisation items also arrive, such as stickers,\r\n lanyards, and more patterns for custom liveries.\r\n \r\n \r\n ),\r\n editionType: EditionType.SUPER_SIZE_CONTENT_PACK,\r\n },\r\n {\r\n keyartSrc: dlc02,\r\n titleImage: ,\r\n textContent: (\r\n <>\r\n \r\n Turn up the volume on your DIRT 5 experience with the Uproar Content Pack!\r\n Race four legendary cars returning from ‘DiRT: Showdown’ – the Duke Coupe,\r\n Jackson Adventurer, Zenden Cup and Jackson Eulogy – and take on 25 thrilling\r\n new Career events set at night-time with dynamic weather scenarios.\r\n \r\n \r\n Two Career sponsors – Puma and OffRoad Xtreme – are also included, with\r\n connected rewards including fresh liveries. Race hard and win big to unlock\r\n new Achievements/Trophies connected to Career mode!\r\n \r\n \r\n ),\r\n editionType: EditionType.UPROAR_CONTENT_PACK,\r\n },\r\n {\r\n keyartSrc: dlc01,\r\n titleImage: ,\r\n textContent: (\r\n <>\r\n \r\n Continue your journey in the DIRT Off-Road Series with the Energy Content\r\n Pack! Take control of four incredible new cars – the Porsche Taycan Turbo S,\r\n Alpine A110 Sports X, GMC Sierra Pre-Runner, and Chevrolet Silverado 1500 –\r\n and compete in 25 new Career events with extreme dynamic weather and\r\n multi-class race options.\r\n \r\n \r\n Race for two new sponsors – Xite and MadCroc – and unlock new\r\n personalisation items, such as bespoke liveries, stickers, lanyards, and\r\n custom livery editor options, to show off your style on the track.\r\n \r\n \r\n ),\r\n editionType: EditionType.ENERGY_CONTENT_PACK,\r\n },\r\n ];\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n (\r\n \r\n \r\n
\r\n {addon.titleImage}\r\n
\r\n\r\n \r\n {addon.textContent}\r\n \r\n\r\n \r\n
\r\n
\r\n )}\r\n transition=\"slide\"\r\n />\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useContext, HTMLAttributes } from \"react\";\r\nimport ConfigContext from \"contexts/ConfigContext\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport Spacer from \"components/Spacer\";\r\nimport DefaultAosAnimation from \"components/aos/DefaultAosAnimation\";\r\nimport StandardEdition from \"./editions/StandardEdition\";\r\nimport SpecialEdition from \"./editions/SpecialEdition\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport clsx from \"clsx\";\r\nimport titleImage from \"assets/images/homePage/buyNowSection/title_buynow.png\";\r\nimport useBackgroundStyles from \"components/backgrounds/useBackgroundStyles\";\r\nimport Addons from \"./addons/Addons\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {},\r\n childContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n alignItems: \"center\",\r\n },\r\n },\r\n titleContainer: {\r\n paddingTop: theme.spacing(2),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n editionsContainer: {\r\n paddingTop: theme.spacing(1),\r\n display: \"flex\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n },\r\n },\r\n edition: {\r\n maxWidth: 600,\r\n width: \"50%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function BuyNowSection(props: IProps) {\r\n const { className, id, ...rest } = props;\r\n const classes = useStyles();\r\n const backgrounds = useBackgroundStyles();\r\n\r\n const config = useContext(ConfigContext);\r\n\r\n const theme = useTheme();\r\n const mdScreen = useMediaQuery(theme.breakpoints.down(\"md\"));\r\n const smScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n\r\n return (\r\n \r\n
\r\n \r\n \"\"\r\n \r\n
\r\n\r\n \r\n\r\n {typeof config === \"undefined\" ? null : (\r\n <>\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n {smScreen ? : null}\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes, ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\n\r\ninterface IClassesProps {\r\n itemMinWidth: number;\r\n}\r\n\r\nconst useStyles = (props: IClassesProps) =>\r\n makeStyles((theme: Theme) => {\r\n const itemMargin = theme.spacing(1);\r\n const { itemMinWidth } = props;\r\n\r\n return createStyles({\r\n root: { display: \"flex\", flexWrap: \"wrap\", margin: -itemMargin },\r\n item: {\r\n flex: \"1 0 30%\",\r\n minWidth: itemMinWidth,\r\n margin: itemMargin,\r\n },\r\n placeholderItem: {\r\n marginTop: 0,\r\n marginBottom: 0,\r\n },\r\n });\r\n });\r\n\r\ninterface IProps extends HTMLAttributes {\r\n items: ReactNode[];\r\n itemsInGrid?: number;\r\n itemMinWidth?: number;\r\n}\r\n\r\nexport default function ItemGrid(props: IProps) {\r\n const { items, itemsInGrid = 6, itemMinWidth = 300, className, ...rest } = props;\r\n const classes = useStyles({ itemMinWidth })();\r\n\r\n const numberOfExtraItems = (itemsInGrid - (items.length % itemsInGrid)) % itemsInGrid;\r\n\r\n return (\r\n
\r\n {items.map((item) => {\r\n return
{item}
;\r\n })}\r\n {Array.from(Array(numberOfExtraItems)).map((item) => (\r\n
{item}
\r\n ))}\r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\n\r\nimport { mediaItemHoverOpacity } from \"theme\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const imageContainerBorder = (borderColor: string) => `2px solid ${borderColor}`;\r\n\r\n return createStyles({\r\n root: {\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n opacity: mediaItemHoverOpacity,\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function ClickableMediaItem(props: IProps) {\r\n const classes = useStyles();\r\n const { className, children, ...rest } = props;\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n","import React, { ImgHTMLAttributes, HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport LazyLoad from \"react-lazyload\";\r\nimport ProgressiveImage from \"react-progressive-image\";\r\nimport calculateAspectRatio from \"utils/calculateAspectRatio\";\r\nimport calculateAspectRatioPaddingTopPercentage from \"utils/calculateAspectRatioPaddingTopPercentage\";\r\nimport clsx from \"clsx\";\r\nimport OmitType from \"customTypes/OmitType\";\r\nimport Skeleton from \"@material-ui/lab/Skeleton\";\r\nimport { skeletonAnimation, skeletonColour, tileHoverEffect } from \"theme\";\r\n\r\nconst useStyles = (hoverState: boolean) =>\r\n makeStyles((theme: Theme) => {\r\n const zoomPercentageAmount = 5;\r\n\r\n const hoverableImageHoverStateStyles = {\r\n height: `${100 + zoomPercentageAmount}%`,\r\n width: `${100 + zoomPercentageAmount}%`,\r\n top: `-${zoomPercentageAmount / 2}%`,\r\n left: `-${zoomPercentageAmount / 2}%`,\r\n };\r\n\r\n const getBackgroundImageTransitions = (properties: string[]) =>\r\n properties\r\n .map((property) =>\r\n theme.transitions.create(property, {\r\n duration: tileHoverEffect.duration,\r\n easing: theme.transitions.easing.easeInOut,\r\n })\r\n )\r\n .join(\", \");\r\n\r\n return createStyles({\r\n root: {\r\n overflow: \"hidden\",\r\n display: \"flex\",\r\n position: \"relative\",\r\n \"& .lazyload-wrapper\": {\r\n display: \"flex\",\r\n flex: \"1\",\r\n },\r\n },\r\n hoverable: {\r\n \"&:hover\": {\r\n \"& $hoverableImage\": {\r\n ...hoverableImageHoverStateStyles,\r\n },\r\n },\r\n },\r\n absoluteFull: {\r\n position: \"absolute\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n top: 0,\r\n left: 0,\r\n },\r\n imageContainer: {\r\n display: \"flex\",\r\n transition: getBackgroundImageTransitions([\"height\", \"width\", \"top\", \"left\"]),\r\n },\r\n hoverableImage: hoverState\r\n ? {\r\n ...hoverableImageHoverStateStyles,\r\n }\r\n : {},\r\n });\r\n });\r\n\r\ntype ImagePropsTypes = OmitType<\r\n OmitType<\r\n OmitType<\r\n OmitType<\r\n OmitType<\r\n OmitType, \"src\">, \"placeholder\">,\r\n \"alt\"\r\n >,\r\n \"height\"\r\n >,\r\n \"width\"\r\n >,\r\n \"srcSet\"\r\n >,\r\n \"sizes\"\r\n>;\r\n\r\nexport interface IImgProps extends HTMLAttributes {\r\n src: string;\r\n height: number;\r\n width: number;\r\n placeholder?: string;\r\n alt?: string;\r\n srcSet?: string;\r\n sizes?: string;\r\n loading?: boolean;\r\n imageProps?: ImagePropsTypes;\r\n loadingOpacity?: number;\r\n hoverable?: boolean;\r\n hoverState?: boolean;\r\n progressiveImageDelay?: number;\r\n disableLazyLoad?: boolean;\r\n lazyLoadOffset?: number;\r\n}\r\n\r\nexport default function Img(props: IImgProps) {\r\n const {\r\n src,\r\n placeholder = \"\",\r\n alt,\r\n srcSet = \"\",\r\n sizes = \"\",\r\n width,\r\n height,\r\n loading,\r\n imageProps = {},\r\n loadingOpacity = 0.8,\r\n hoverable,\r\n hoverState = false,\r\n progressiveImageDelay = 0,\r\n disableLazyLoad,\r\n lazyLoadOffset = 500,\r\n children,\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n const classes = useStyles(hoverState)();\r\n const theme = useTheme();\r\n\r\n const { style: imageStyle, className: imageClassName, ...imagePropsRest } = imageProps;\r\n\r\n const aspectRatio = calculateAspectRatio({ height, width });\r\n\r\n const paddingTopPercentage = calculateAspectRatioPaddingTopPercentage({\r\n width: aspectRatio,\r\n height: 1,\r\n });\r\n\r\n const placeholderComponent = (\r\n \r\n );\r\n\r\n const loadingStyles = (_loading: boolean) => {\r\n const opacityImageTransition = theme.transitions.create(\"all\", {\r\n duration: 150,\r\n easing: theme.transitions.easing.easeInOut,\r\n });\r\n\r\n return {\r\n opacity: _loading ? loadingOpacity : 1,\r\n filter: `blur(${_loading ? 10 : 0}px)`,\r\n transition: opacityImageTransition,\r\n };\r\n };\r\n\r\n const imageContent = (\r\n \r\n {(_src: string, _loading: boolean, srcSetData: { srcSet: string; sizes: string }) => (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n\r\n return (\r\n \r\n
\r\n {loading ? (\r\n placeholderComponent\r\n ) : disableLazyLoad ? (\r\n imageContent\r\n ) : (\r\n \r\n {imageContent}\r\n \r\n )}\r\n
\r\n \r\n );\r\n}\r\n","import React, { useState, HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport imageSizes from \"imageSizes\";\r\nimport VideoDialog from \"components/dialogs/VideoDialog\";\r\nimport clsx from \"clsx\";\r\nimport Img from \"./Img/Img\";\r\nimport PlayButtonOutline from \"assets/svgs/icons/PlayButtonOutline\";\r\nimport Glitch from \"./glitch/Glitch\";\r\nimport playButtonBackground from \"assets/images/homePage/bannerSection/video/btn_play_bg.png\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n cursor: \"pointer\",\r\n position: \"relative\",\r\n \"&:hover\": {\r\n \"& $playButton\": { opacity: 1 },\r\n \"& $playButtonOutline\": { display: \"none\" },\r\n \"& $playButtonGlitchOutline\": { display: \"block\" },\r\n },\r\n },\r\n playButtonContainer: {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n top: 0,\r\n left: 0,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n color: theme.palette.common.white,\r\n },\r\n playButton: {\r\n width: 100,\r\n position: \"relative\",\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n opacity: 0.8,\r\n },\r\n playButtonOutline: {},\r\n playButtonGlitchOutline: { display: \"none\" },\r\n });\r\n});\r\n\r\ntype ThumbnailSize = \"tiny\" | \"small\" | \"medium\" | \"large\";\r\n\r\ninterface IProps extends HTMLAttributes {\r\n videoId: string;\r\n isLoading?: boolean;\r\n thumbnailSize?: ThumbnailSize;\r\n}\r\n\r\nexport default function YouTubeVideoDialogThumbnail(props: IProps) {\r\n const classes = useStyles();\r\n const {\r\n videoId,\r\n isLoading,\r\n thumbnailSize = \"medium\",\r\n className,\r\n children,\r\n onClick = () => {},\r\n ...rest\r\n } = props;\r\n\r\n const [videoDialogIsOpen, setVideoDialogIsOpen] = useState(false);\r\n\r\n // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api\r\n const getThumbnailImage = (size: ThumbnailSize) =>\r\n `https://img.youtube.com/vi/${videoId}/${getSizePrefix(size)}default.jpg`;\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n setVideoDialogIsOpen(true);\r\n onClick(event);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \"Play\r\n
\r\n
\r\n \r\n\r\n setVideoDialogIsOpen(false)}\r\n />\r\n \r\n );\r\n}\r\n\r\nfunction getSizePrefix(size: ThumbnailSize): \"\" | \"mq\" | \"hq\" | \"maxres\" {\r\n // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api\r\n if (size === \"tiny\") return \"\";\r\n if (size === \"small\") return \"mq\";\r\n if (size === \"medium\") return \"hq\";\r\n if (size === \"large\") return \"maxres\";\r\n\r\n return \"hq\";\r\n}\r\n","import React, { HTMLAttributes, useState } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport { IMediaPageVideo } from \"apiConsumers/kenticoApiConsumer/models/mediaPage/IMediaPageVideos\";\r\nimport ItemGrid from \"./itemGrid/ItemGrid\";\r\nimport ClickableMediaItem from \"./ClickableMediaItem\";\r\nimport YouTubeVideoDialogThumbnail from \"components/YouTubeVideoDialogThumbnail\";\r\nimport PaginationButton from \"components/pagination/PaginationButton\";\r\nimport Spacer from \"components/Spacer\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n videos: IMediaPageVideo[];\r\n isLoading?: boolean;\r\n numberOfItemsToDisplay: number;\r\n}\r\n\r\nexport default function Videos(props: IProps) {\r\n const classes = useStyles();\r\n const { videos, isLoading = false, numberOfItemsToDisplay, className, ...rest } = props;\r\n\r\n const [currentPage, setCurrentPage] = useState(0);\r\n\r\n const showPagination = videos.length > numberOfItemsToDisplay;\r\n\r\n return (\r\n
\r\n {showPagination ? (\r\n <>\r\n setCurrentPage(currentPage - 1)}\r\n />\r\n \r\n \r\n ) : null}\r\n\r\n {isLoading ? (\r\n {\r\n return ;\r\n })}\r\n />\r\n ) : (\r\n {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n />\r\n )}\r\n\r\n {showPagination ? (\r\n <>\r\n \r\n setCurrentPage(currentPage + 1)}\r\n />\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport MediaDialog, { IMediaDialogProps } from \"./MediaDialog\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IImage {\r\n src: string;\r\n alt?: string;\r\n}\r\n\r\ninterface IProps extends IMediaDialogProps {\r\n images: IImage[];\r\n initialImageIndex?: number;\r\n}\r\n\r\nexport default function ImageDialog(props: IProps) {\r\n const classes = useStyles();\r\n const { images, initialImageIndex = 0, ...rest } = props;\r\n\r\n const [currentImage, setCurrentImage] = useState();\r\n\r\n useEffect(() => {\r\n setCurrentImage(images[initialImageIndex % images.length]);\r\n }, [images, initialImageIndex]);\r\n\r\n if (typeof currentImage === \"undefined\") return null;\r\n\r\n return (\r\n \r\n
\r\n {currentImage.alt}\r\n
\r\n
\r\n );\r\n}\r\n","export default function getKenticoImageSrc(src: string, width: number) {\r\n return `${src}?w=${width}`;\r\n}\r\n","import React from \"react\";\r\nimport Img, { IImgProps } from \"./Img\";\r\nimport getKenticoImageSrc from \"utils/getKenticoImageSrc\";\r\n\r\ninterface IProps extends IImgProps {\r\n widthFactor?: number;\r\n}\r\n\r\nfunction getSrcSetForWidths(src: string, widths: number[], widthFactor: number = 1) {\r\n return widths\r\n .map((width) => `${getKenticoImageSrc(src, width / widthFactor)} ${width}w`)\r\n .join(\", \");\r\n}\r\n\r\nexport default function KenticoImg(props: IProps) {\r\n const placeholderImageSize = 150;\r\n\r\n const {\r\n src,\r\n widthFactor,\r\n placeholder = getKenticoImageSrc(src, placeholderImageSize),\r\n srcSet = getSrcSetForWidths(\r\n src,\r\n [400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000],\r\n widthFactor\r\n ),\r\n ...rest\r\n } = props;\r\n\r\n return ;\r\n}\r\n","import React, { HTMLAttributes, useState } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport { IMediaPageScreenshot } from \"apiConsumers/kenticoApiConsumer/models/mediaPage/IMediaPageScreenshots\";\r\nimport ItemGrid from \"./itemGrid/ItemGrid\";\r\nimport ImageSkeleton from \"components/skeletons/ImageSkeleton\";\r\nimport imageSizes from \"imageSizes\";\r\nimport calculateAspectRatio from \"utils/calculateAspectRatio\";\r\nimport ImageDialog from \"components/dialogs/ImageDialog\";\r\nimport ClickableMediaItem from \"./ClickableMediaItem\";\r\nimport KenticoImg from \"components/Img/KenticoImg\";\r\nimport { useMediaQuery } from \"@material-ui/core\";\r\nimport PaginationButton from \"components/pagination/PaginationButton\";\r\nimport Spacer from \"components/Spacer\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n screenshots: IMediaPageScreenshot[];\r\n isLoading?: boolean;\r\n numberOfItemsToDisplay: number;\r\n}\r\n\r\nexport default function Screenshots(props: IProps) {\r\n const classes = useStyles();\r\n const { screenshots, isLoading = false, numberOfItemsToDisplay, className, ...rest } = props;\r\n\r\n const [openImageIndex, setOpenImageIndex] = useState();\r\n const [dialogIsOpen, setDialogIsOpen] = useState(false);\r\n\r\n const onImageClick = (imageIndex: number) => {\r\n setOpenImageIndex(imageIndex);\r\n setDialogIsOpen(true);\r\n };\r\n\r\n const [currentPage, setCurrentPage] = useState(0);\r\n const showPagination = screenshots.length > numberOfItemsToDisplay;\r\n\r\n const theme = useTheme();\r\n const lgScreen = useMediaQuery(theme.breakpoints.up(\"lg\"));\r\n const imageWidthFactor = lgScreen ? 3 : 1;\r\n\r\n return (\r\n
\r\n {showPagination ? (\r\n <>\r\n setCurrentPage(currentPage - 1)}\r\n />\r\n \r\n \r\n ) : null}\r\n\r\n {isLoading ? (\r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n ) : (\r\n <>\r\n {\r\n return { src: screenshot.src, alt: screenshot.alt };\r\n })}\r\n initialImageIndex={openImageIndex}\r\n onClose={() => setDialogIsOpen(false)}\r\n />\r\n {\r\n return (\r\n \r\n onImageClick(i + currentPage * numberOfItemsToDisplay)\r\n }\r\n >\r\n \r\n \r\n );\r\n })}\r\n />\r\n \r\n )}\r\n\r\n {showPagination ? (\r\n <>\r\n \r\n setCurrentPage(currentPage + 1)}\r\n />\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes, useState, useEffect } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport clsx from \"clsx\";\r\nimport useBackgroundStyles from \"components/backgrounds/useBackgroundStyles\";\r\nimport StyledButton from \"components/buttons/StyledButton\";\r\nimport mediaTitle from \"assets/images/homePage/mediaSection/title_media.png\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport Spacer from \"components/Spacer\";\r\nimport { IMediaPageVideo } from \"apiConsumers/kenticoApiConsumer/models/mediaPage/IMediaPageVideos\";\r\nimport { kenticoApi } from \"apiConsumers\";\r\nimport Videos from \"./Videos\";\r\nimport { IMediaPageScreenshot } from \"apiConsumers/kenticoApiConsumer/models/mediaPage/IMediaPageScreenshots\";\r\nimport Screenshots from \"./Screenshots\";\r\n// import MainMailingListSubscription from \"./supscription/MainMailingListSubscription\";\r\nimport Scribble from \"components/scribble/Scribble\";\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {},\r\n childContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n alignItems: \"center\",\r\n },\r\n },\r\n mainMailingListScribble: {\r\n left: \"-75px\",\r\n top: \"0px\",\r\n height: \"auto\",\r\n },\r\n mainMailingList: {\r\n maxWidth: 750,\r\n marginRight: 28,\r\n },\r\n tabsContainer: {\r\n display: \"flex\",\r\n },\r\n });\r\n});\r\n\r\ntype Tab = \"videos\" | \"screenshots\";\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function MediaSection(props: IProps) {\r\n const { className, id, ...rest } = props;\r\n const classes = useStyles();\r\n const backgrounds = useBackgroundStyles();\r\n\r\n const [selectedTab, setSelectedTab] = useState(\"videos\");\r\n\r\n const [videos, setVideos] = useState([]);\r\n const [videosIsLoading, setVideosIsLoading] = useState(false);\r\n const [videosIsError, setVideosIsError] = useState(false);\r\n\r\n const [screenshots, setScreenshots] = useState([]);\r\n const [screenshotsIsLoading, setScreenshotsIsLoading] = useState(false);\r\n const [screenshotsIsError, setScreenshotsIsError] = useState(false);\r\n\r\n const theme = useTheme();\r\n const xsScreen = useMediaQuery(theme.breakpoints.down(\"xs\"));\r\n\r\n const itemsInGrid = 6;\r\n\r\n useEffect(() => {\r\n setVideosIsLoading(true);\r\n kenticoApi\r\n .getMediaPageVideos()\r\n .then((response) => {\r\n if (typeof response === \"undefined\") return;\r\n\r\n setVideos(response.videos);\r\n setVideosIsError(false);\r\n })\r\n .catch((err) => {\r\n setVideosIsError(true);\r\n })\r\n .finally(() => {\r\n setVideosIsLoading(false);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n setScreenshotsIsLoading(true);\r\n kenticoApi\r\n .getMediaPageScreenshots()\r\n .then((response) => {\r\n if (typeof response === \"undefined\") return;\r\n\r\n setScreenshots(response.screenshots);\r\n setScreenshotsIsError(false);\r\n })\r\n .catch((err) => {\r\n setScreenshotsIsError(true);\r\n })\r\n .finally(() => {\r\n setScreenshotsIsLoading(false);\r\n });\r\n }, []);\r\n\r\n const buttonSize = xsScreen ? \"small\" : \"medium\";\r\n\r\n return (\r\n \r\n \r\n
\r\n \"\"\r\n
\r\n \r\n
\r\n \r\n setSelectedTab(\"videos\")}\r\n style={{ minWidth: xsScreen ? \"unset\" : 175 }}\r\n size={buttonSize}\r\n >\r\n Videos\r\n \r\n \r\n \r\n setSelectedTab(\"screenshots\")}\r\n size={buttonSize}\r\n >\r\n Screenshots\r\n \r\n
\r\n
\r\n \r\n
\r\n {selectedTab === \"videos\" ? (\r\n videosIsError ? (\r\n
There has been an error fetching the videos. Please try again.
\r\n ) : (\r\n \r\n )\r\n ) : null}\r\n {selectedTab === \"screenshots\" ? (\r\n screenshotsIsError ? (\r\n
\r\n There has been an error fetching the screenshots. Please try again.\r\n
\r\n ) : (\r\n \r\n )\r\n ) : null}\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n {/* */}\r\n \r\n
\r\n \r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport BannerSection from \"./sections/banner/BannerSection\";\r\nimport QuotesSection from \"./sections/quotes/QuotesSection\";\r\nimport GameInfoSection from \"./sections/gameInfo/GameInfoSection\";\r\nimport NextGenSection from \"./sections/nextGen/NextGenSection\";\r\nimport BuyNowSection from \"./sections/buynow/BuyNowSection\";\r\nimport MediaSection from \"./sections/media/MediaSection\";\r\nimport routes from \"routes\";\r\n// import TypographyShowcase from \"components/showcases/TypographyShowcase\";\r\n// import ButtonShowcase from \"components/showcases/ButtonShowcase\";\r\n// import GlitchShowcase from \"components/showcases/GlitchShowcase\";\r\n// import PageSectionShowcase from \"components/showcases/PageSectionShowcase\";\r\n\r\nexport default function HomePage() {\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Spacer from \"components/Spacer\";\r\n\r\nimport citroenLogo from \"assets/images/creditsPage/CitroenLogo.png\";\r\nimport fordOfficialLicensedProduct from \"assets/images/creditsPage/FordOfficialLicensedProduct.png\";\r\nimport pirelliLogo from \"assets/images/creditsPage/PirelliLogo.jpg\";\r\nimport renaultLogo from \"assets/images/creditsPage/RenaultLogo.jpg\";\r\nimport vwLogo from \"assets/images/creditsPage/VWLogo.jpg\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n paddingTop: theme.spacing(4),\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n \"& img\": {\r\n maxWidth: 200,\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default function CreditsPage() {\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, []);\r\n\r\n const spacerSize = 2;\r\n\r\n return (\r\n <>\r\n \r\n
\r\n \r\n DIRT 5 Credits\r\n \r\n \r\n\r\n \r\n Manufactured under license from Ariel Limited\r\n \r\n\r\n \r\n\r\n \r\n Armor All and STP are trademarks of Energizer Auto and are used with\r\n permission by The Codemasters Software Company Limited. All other brand\r\n names or trademarks are marks of their respective owners and Energizer Auto\r\n is not affiliated with such owners or their marks.\r\n \r\n\r\n \r\n\r\n \r\n \"Aston Martin\". \"Aston Martin Racing\" and related logos and other trade\r\n marks are owned, licensed and/or used by Aston Martin and Aston Martin\r\n Racing. These trade marks may not be used, amended and/or reproduced without\r\n permission. All rights are reserved.\r\n \r\n\r\n \r\n\r\n \r\n Trademarks, design patents and copyrights are used with the approval of the\r\n owner AUDI AG.\r\n \r\n\r\n \r\n\r\n \r\n Manufactured under license from BLITZWORLD BUGGIES LTD\r\n \r\n\r\n \r\n\r\n \r\n The BMW logo, the MINI Logo, the BMW word mark and the MINI word mark as\r\n well as the BMW and MINI model designations are trademarks of BMW AG and are\r\n used under License.\r\n \r\n\r\n \r\n\r\n \r\n The HELIOTROPE BP and BP ULTIMATE ARE trade marks and are used with\r\n permission from BP p.l.c.\r\n \r\n\r\n \r\n\r\n \r\n Manufactured under license from Brenthel Industries\r\n \r\n\r\n \r\n\r\n \r\n \"Citroen\r\n \r\n\r\n \r\n The CASTROL logo is a trade mark and is used with permission from Castrol\r\n Limited\r\n \r\n\r\n \r\n\r\n \r\n Manufactured under license from Cosworth Group Holdings Limited\r\n \r\n\r\n \r\n\r\n Manufactured under license from Exomotive\r\n\r\n \r\n\r\n \r\n Firestone and the Firestone and F-shield logos are registered trademarks of\r\n Bridgestone Brands, LLC and Bridgestone Licensing Services, Inc., and are\r\n used with permission.\r\n \r\n\r\n \r\n\r\n \r\n Manufactured under license of FCA Italy S.p.A., “FIAT” and “LANCIA” are\r\n trademarks of FCA Group Companies.\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n Ford Motor Company Trademarks and Trade Dress used under license to The\r\n Codemasters Software Company Limited.\r\n \r\n\r\n \r\n\r\n \r\n General Motors Trademarks used under license to The Codemasters Software\r\n Company Limited.\r\n \r\n\r\n \r\n\r\n \r\n Manufactured under license from Laffite LLC\r\n \r\n\r\n \r\n\r\n \r\n Produced under licence from Group Lotus plc. LOTUS, the Lotus Roundel, car\r\n names and all associated logos and distinctive designs are trade marks of\r\n Group Lotus plc.\r\n \r\n\r\n \r\n\r\n \r\n MITSUBISHI MOTORS CORPORATION trademarks, designs, copyrights and/or other\r\n intellectual property rights are used under license.\r\n \r\n\r\n \r\n\r\n \r\n MOTUL and the MOTUL LOGO are registered trademarks of MOTUL (SA). All rights\r\n reserved\r\n \r\n\r\n \r\n\r\n \r\n The NO FEAR™ trade mark and copyright © belong to No Fear International\r\n Limited and are used under license by The Codemasters Software Company\r\n Limited\r\n \r\n\r\n \r\n\r\n \r\n PIRELLI and \"Pirelli are registered\r\n trademarks of Pirelli {\"&\"} C. S.p.A. and are used under license.\r\n \r\n\r\n \r\n\r\n \r\n The trademarks Porsche, Porsche Crest, Porsche Logotype, Carrera, and 911\r\n are used under license of Porsche AG.\r\n \r\n\r\n \r\n\r\n \r\n Produced under license of PUMA SE. PUMA® (wordmark) and the Cat logo are\r\n trademarks of PUMA SE.\r\n \r\n\r\n \r\n\r\n \r\n Manufactured under license from Automobiles Peugeot.\r\n \r\n\r\n \r\n\r\n \r\n Red Bull® Marks are licensed by Red Bull GmbH/Austria\r\n \r\n\r\n \r\n\r\n \r\n \"Renault\r\n \r\n\r\n \r\n\r\n \r\n RENAULT Official License Products. Vehicle models and trademarks protected\r\n by intellectual property laws. Used with permission of RENAULT. All rights\r\n reserved.\r\n \r\n\r\n \r\n\r\n \r\n ŠKODA and the “winged arrow in the circle” (ŠKODA logo) are registered\r\n trademarks owned and licensed by ŠKODA AUTO a.s. www.skoda-auto.com{\" \"}\r\n \r\n\r\n \r\n\r\n \r\n “SUBARU”, “IMPREZA”, “WRX”, \"STI\", all other associated marks, emblems and\r\n body designs are properties of SUBARU CORPORATION and used with permission.\r\n \r\n\r\n \r\n\r\n \r\n Shelby® and GT-350® are registered trademarks and/or intellectual property\r\n of Carroll Shelby Licensing, Inc. and are used under license.\r\n \r\n\r\n \r\n\r\n \r\n Toyo Tires is a trademark belonging to Toyo Tire Corporation\r\n \r\n\r\n \r\n\r\n \r\n Trademarks, design patents and copyrights are used with the permission of\r\n the owner Volkswagen AG\r\n \r\n\r\n \r\n\r\n \r\n \"VW\r\n \r\n\r\n \r\n\r\n \r\n Any liveries that appear on Volkswagen vehicles are fictional unless stated\r\n that they are Official VW Motorsport Partners\r\n \r\n\r\n \r\n\r\n \r\n With Special Thanks To:\r\n \r\n\r\n James Pumphrey\r\n Nolan Sykes\r\n\r\n \r\n\r\n \r\n Livery Artists:\r\n \r\n\r\n Death Spray Custom\r\n Sean Bull – Sean Bull Design Limited\r\n\r\n \r\n\r\n \r\n Locations:\r\n \r\n\r\n \r\n Cape Town Stadium – The Cape Town Stadium Company (RF) SOC\r\n \r\n Triangle House, Cape Town – Louis Karol Architects\r\n \r\n Monumento do Cristo Redentor, Rio de Janeiro - Arquidiocese do Rio de\r\n Janeiro\r\n \r\n\r\n \r\n\r\n \r\n Manufacturers:\r\n \r\n\r\n Ariel Limited\r\n\r\n Armada Engineering, Inc.\r\n\r\n Audi AG\r\n\r\n Automobiles Citroën\r\n\r\n Automobiles Peugeot\r\n\r\n Blitzworld Buggies Limited\r\n\r\n Brenthel Industries\r\n\r\n BMW AG\r\n\r\n Carroll Shelby Licensing, Inc.\r\n\r\n Cosworth Group Holdings Limited\r\n\r\n DeBerti Designs\r\n\r\n Exomotive\r\n\r\n FCA Italy S.p.A.\r\n\r\n Fibrewerx Incorporated\r\n\r\n Ford Motor Company\r\n\r\n Industrias Lahoz 2004 S.L.\r\n\r\n Jimco Racing Inc\r\n\r\n Laffite LLC\r\n\r\n Lance Smith, Inc.\r\n\r\n LP Racing\r\n\r\n MITSUBISHI MOTORS CORPORATION\r\n\r\n M Sport Ltd\r\n\r\n Prodrive (Holdings) Ltd\r\n\r\n ŠKODA AUTO a. s.\r\n\r\n Sodicars Racing\r\n\r\n Williams Grand Prix Engineering Limited\r\n\r\n \r\n\r\n \r\n Sponsors:\r\n \r\n\r\n 3M Svenska AB\r\n\r\n AccuWeather, Inc.\r\n\r\n \r\n Adolf Würth GmbH {\"&\"} Co. KH and Würth International AG\r\n \r\n\r\n Advanced Clutch Technology Incorporated\r\n\r\n AEM Performance Electronics\r\n\r\n Alcon Components Limited\r\n\r\n Alpinestars S.p.A.\r\n\r\n Apple Inc.\r\n\r\n Arai Helmet (Europe) B.V.\r\n\r\n Autometer Products, Inc.\r\n\r\n Bardahl Manufacturing Corporation\r\n\r\n Basic Trademark S.r.l\r\n\r\n BBS GmbH\r\n\r\n Bella-Veneet Oy\r\n\r\n Bioextra Co. Ltd.\r\n\r\n BMC Srl\r\n\r\n Borla Performance Industries, Inc.\r\n\r\n Braille Battery, Inc.\r\n\r\n Brembo S.p.A.\r\n\r\n BRIDGESTONE BRANDS, LLC\r\n\r\n BRIDGESTONE LICENSING SERVICES, INC\r\n\r\n Bridgestone Corporation\r\n\r\n Bronco ATV Technologies\r\n\r\n Bullet Race Engineering\r\n\r\n Castrol Limited\r\n\r\n Cobra Seats Limited\r\n\r\n Cobra Sport Exhausts UK Ltd\r\n\r\n Compomotive International Limited\r\n\r\n Cooper Tire {\"&\"} Rubber Company\r\n\r\n Corbeau Seats Ltd.\r\n\r\n Custom Wheel House, LLC\r\n\r\n DirtFish, LLC\r\n\r\n DT (Automotives) Ltd T/A Demon Tweeks\r\n\r\n Enkei International\r\n\r\n EXEDY Globalparts Corporation\r\n\r\n Fatlace LLC\r\n\r\n Fitment Industries\r\n\r\n Fondmetal S.p.A.\r\n\r\n Forge Motorsport Inc.\r\n\r\n Francis Tuthill Limited\r\n\r\n GIP Development SARL\r\n\r\n The Goodyear Tire {\"&\"} Rubber Company\r\n\r\n \r\n H{\"&\"}R Spezialfedern GmbH {\"&\"} Co. KG\r\n \r\n\r\n Heinrich Eibach GmbH\r\n\r\n HKS Co., Ltd.\r\n\r\n Holinger Engineering\r\n\r\n Hoosier Racing Tire Corporation\r\n\r\n Innov8 Racing Inc.\r\n\r\n ITT Ltd\r\n\r\n ITW Global Tire Repair Inc.\r\n\r\n JNC Wheels\r\n\r\n JVCKENWOOD Corporation\r\n\r\n K{\"&\"}N Engineering, Inc.\r\n\r\n König American\r\n\r\n Kumho Tyre (UK) Ltd\r\n\r\n LeMans Corporation\r\n\r\n Liqui Moly GmbH\r\n\r\n Logitech Europe S.A.\r\n\r\n Luigi Lavazza S.p.A.\r\n\r\n Mad Croc / Ultra Premium Brands Ltd.\r\n\r\n Mäkelä Auto Tuning Oy\r\n\r\n Marelli Europe S.p.A.\r\n\r\n Michelin Lifestyle Ltd\r\n\r\n Millers Oils Limited\r\n\r\n Mondelez Europe GmbH\r\n\r\n Monster Energy Company\r\n\r\n MoTeC Pty Ltd\r\n\r\n MOTUL S.A.\r\n\r\n Mountune Limited\r\n\r\n © M-Sport Ltd 2019\r\n\r\n No Fear International Limited\r\n \r\n Oakley Inc.\r\n\r\n Öhlins Racing AB\r\n\r\n OMP Racing S.p.A.\r\n\r\n Oy Poppamies\r\n\r\n OZ S.p.A\r\n\r\n PepsiCo\r\n\r\n PIAA UK LTD\r\n\r\n Pipercross Performance Filters\r\n\r\n Pit Viper LLC\r\n\r\n Playseat ® B.V.\r\n\r\n Power Automedia, LLC\r\n\r\n Prodrive (Holdings) Ltd\r\n\r\n Puma SE\r\n\r\n Ravensberger Schmierstoffvertrieb GmbH\r\n\r\n Rimstock Limited\r\n\r\n RONAL AG\r\n\r\n R.T. Quaife Engineering Ltd\r\n\r\n Sabelt S.p.A.\r\n\r\n Shure Incorporated\r\n\r\n Simpson Performance Products, Inc.\r\n\r\n Skyjacker Suspensions\r\n\r\n Snap-on Incorporated\r\n\r\n Sparco S.p.A.\r\n\r\n Spax Performances\r\n\r\n S.P.E.C., Inc.\r\n\r\n Spy Optic Inc.\r\n\r\n Stand 21 Racewear\r\n\r\n Stanley Black {\"&\"} Decker, Inc.\r\n\r\n SteelSeal Ltd\r\n\r\n Stillwater Designs\r\n\r\n Stilo S.r.l.\r\n\r\n Sumitomo Rubber Industries, Ltd.\r\n\r\n Sunoco LP\r\n\r\n Tecnología y Fabricación, S.A.\r\n\r\n TEIN, INC.\r\n\r\n Teng Tools UK Limited\r\n\r\n ThyssenKrupp Bilstein GmbH\r\n\r\n Toyo Tire Corporation\r\n\r\n TrailReady Products LLC\r\n\r\n Trust Co. Ltd Japan\r\n\r\n Unil Lubricants N.V.\r\n\r\n Valvoline LLC\r\n\r\n VP Racing Fuels, Inc.\r\n\r\n Wheelpros LLC\r\n\r\n Xite Energy\r\n\r\n The Yokohama Rubber Co., Ltd.\r\n\r\n ZF Friedrichshafen AG\r\n\r\n ZF Services UK Limited\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { IVideoWidget, VideoWidgetType } from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport YouTube from \"react-youtube\";\r\nimport calculateAspectRatioPaddingTopPercentage from \"utils/calculateAspectRatioPaddingTopPercentage\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const youtubeAspectRatioPercentage = calculateAspectRatioPaddingTopPercentage({\r\n height: 9,\r\n width: 16,\r\n });\r\n\r\n return createStyles({\r\n root: {\r\n position: \"relative\",\r\n paddingBottom: youtubeAspectRatioPercentage,\r\n marginBottom: theme.spacing(1),\r\n },\r\n videoContainer: {\r\n \"& iframe\": {\r\n width: \"100%\",\r\n height: \"100%\",\r\n position: \"absolute\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IProps {\r\n video?: IVideoWidget;\r\n}\r\n\r\nexport default function YoutubeVideoWidget(props: IProps) {\r\n const { video } = props;\r\n\r\n const classes = useStyles();\r\n\r\n if (typeof video === \"undefined\") return null;\r\n\r\n const { options, type: videoType, url } = video;\r\n\r\n if (typeof url === \"undefined\") return null;\r\n\r\n const { controls, fullscreen } = options;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction getListId(videoUrl: string) {\r\n const listUrlTerm = \"&list=\";\r\n\r\n let param_l = videoUrl.indexOf(listUrlTerm);\r\n\r\n if (param_l <= -1) {\r\n return undefined;\r\n }\r\n\r\n return videoUrl.substring(param_l + listUrlTerm.length, videoUrl.length);\r\n}\r\n\r\nfunction getVideoId(videoUrl: string, videoType?: VideoWidgetType) {\r\n let param_v = videoUrl.indexOf(\"v=\");\r\n\r\n if (param_v > -1) {\r\n if (videoType && videoType !== \"single_video\") {\r\n let param_l = videoUrl.indexOf(\"&list=\");\r\n\r\n return videoUrl.substring(param_v + 2, param_l);\r\n }\r\n return videoUrl.substring(param_v + 2, videoUrl.length);\r\n }\r\n\r\n let param_embed = videoUrl.indexOf(\"/embed/\");\r\n\r\n if (param_embed > -1) {\r\n return videoUrl.substring(param_embed + 7, videoUrl.length);\r\n }\r\n\r\n let param_be = videoUrl.indexOf(\"youtu.be/\");\r\n\r\n if (param_be > -1) {\r\n return videoUrl.substring(param_be + 9, videoUrl.length);\r\n }\r\n}\r\n","export default function decodeUnderline(text: string) {\r\n let split = text.split(\"__\");\r\n let count = split.length;\r\n if (split.length > 1) {\r\n let decoded = \"\";\r\n for (let i = 0; i < count; i++) {\r\n if (count - 1 !== i) {\r\n decoded += i % 2 === 0 ? `${split[i]}` : `${split[i]}`;\r\n } else {\r\n decoded += split[i];\r\n }\r\n }\r\n return decoded;\r\n }\r\n return text;\r\n}\r\n","import React from \"react\";\r\nimport { ITextBlockWidget } from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport decodeUnderline from \"../utils/decodeUnderline\";\r\n\r\ninterface IProps {\r\n text?: ITextBlockWidget;\r\n}\r\n\r\nexport default function TextBlock(props: IProps) {\r\n const { text } = props;\r\n\r\n if (typeof text === \"undefined\") return null;\r\n\r\n const { align, content } = text;\r\n\r\n if (typeof align === \"undefined\" || typeof content === \"undefined\") return null;\r\n\r\n return (\r\n
\r\n {content.map((item, i) => (\r\n \r\n ))}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { IButtons } from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport NewTabLinkButton from \"components/buttons/NewTabLinkButton\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const buttonSpacing = theme.spacing(1);\r\n\r\n return createStyles({\r\n button: { marginBottom: buttonSpacing, marginRight: buttonSpacing },\r\n });\r\n});\r\n\r\ninterface IProps {\r\n buttons?: IButtons;\r\n}\r\n\r\nexport default function ButtonsWidget(props: IProps) {\r\n const { buttons } = props;\r\n const classes = useStyles();\r\n\r\n if (typeof buttons === \"undefined\") return null;\r\n\r\n const { direction = \"row\", size = \"medium\", buttonWidgets } = buttons;\r\n\r\n if (typeof buttonWidgets === \"undefined\") return null;\r\n\r\n return (\r\n \r\n {buttonWidgets.map((button, i) => {\r\n const { text, href } = button;\r\n\r\n if (typeof text === \"undefined\" || typeof href === \"undefined\") return null;\r\n\r\n return (\r\n
\r\n \r\n {text}\r\n \r\n
\r\n );\r\n })}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport decodeUnderline from \"../utils/decodeUnderline\";\r\n\r\ninterface IProps {\r\n html?: string[];\r\n}\r\n\r\nexport default function HtmlWidget(props: IProps) {\r\n const { html } = props;\r\n\r\n if (typeof html === \"undefined\") return null;\r\n\r\n return (\r\n <>\r\n {html.map((item, i) => (\r\n \r\n
\r\n \r\n ))}\r\n \r\n );\r\n}\r\n\r\nfunction decodeHTML(html: string) {\r\n let text = document.createElement(\"textarea\");\r\n text.innerHTML = html;\r\n\r\n return text.value;\r\n}\r\n","import React, { HTMLAttributes, useState } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { fade } from \"@material-ui/core/styles\";\r\n\r\n// import PrevArrow from \"assets/svgs/icons/swiperArrows/PrevArrow\";\r\n// import NextArrow from \"assets/svgs/icons/swiperArrows/NextArrow\";\r\n\r\nimport Swiper, { SwiperInstance } from \"react-id-swiper\";\r\nimport \"swiper/css/swiper.css\";\r\nimport clsx from \"clsx\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const buttonBackgroundColour = theme.palette.common.white;\r\n\r\n return createStyles({\r\n root: {\r\n overflow: \"hidden\",\r\n position: \"relative\",\r\n },\r\n swipperContainer: {},\r\n buttonContainer: {\r\n position: \"absolute\",\r\n zIndex: 200,\r\n height: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n previousButtonContainer: {\r\n left: 0,\r\n },\r\n nextButtonContainer: {\r\n right: 0,\r\n },\r\n iconButton: {\r\n backgroundColor: fade(buttonBackgroundColour, 0.7),\r\n \"&:hover\": {\r\n backgroundColor: fade(buttonBackgroundColour, 0.9),\r\n },\r\n margin: theme.spacing(1),\r\n cursor: \"pointer\",\r\n borderRadius: 0,\r\n },\r\n button: { fontSize: 50, color: theme.palette.primary.main },\r\n previousButton: {},\r\n nextButton: {},\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n slides: JSX.Element[];\r\n}\r\n\r\nexport default function GallerySwiper(props: IProps) {\r\n const { slides, className, ...rest } = props;\r\n const classes = useStyles();\r\n\r\n const [swiper, setSwiper] = useState();\r\n\r\n const goNext = () => {\r\n if (swiper !== null) {\r\n swiper.slideNext();\r\n }\r\n };\r\n\r\n const goPrev = () => {\r\n if (swiper !== null) {\r\n swiper.slidePrev();\r\n }\r\n };\r\n\r\n const params = {\r\n containerClass: classes.swipperContainer,\r\n slidesPerView: \"auto\",\r\n loop: true,\r\n loopedSlides: 1,\r\n };\r\n\r\n return (\r\n
\r\n {slides.length > 1 ? (\r\n <>\r\n
\r\n goPrev()}\r\n >\r\n {/* */}\r\n prev\r\n \r\n
\r\n
\r\n goNext()}\r\n >\r\n {/* */}\r\n next\r\n \r\n
\r\n \r\n {slides}\r\n \r\n \r\n ) : (\r\n slides\r\n )}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { IGalleryWidgetImage } from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport GallerySwiper from \"./GallerySwiper\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n screenshot: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n height: \"unset\",\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IProps {\r\n images?: IGalleryWidgetImage[];\r\n}\r\n\r\nexport default function GalleryWidget(props: IProps) {\r\n const { images } = props;\r\n const classes = useStyles();\r\n\r\n if (typeof images === \"undefined\") return null;\r\n\r\n let slides = [];\r\n for (let i = 0; i < images.length; i++) {\r\n const image = images[i];\r\n\r\n const { src, altText = `Gallery item ${i}` } = image;\r\n\r\n if (typeof src === \"undefined\") continue;\r\n\r\n slides.push(\r\n
\r\n \r\n {altText}\r\n \r\n
\r\n );\r\n }\r\n\r\n return ;\r\n}\r\n","import React from \"react\";\r\nimport { IWidget } from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport YoutubeVideoWidget from \"./widgets/YoutubeVideoWidget\";\r\nimport TextBlockWidget from \"./widgets/TextBlockWidget\";\r\nimport ButtonsWidget from \"./widgets/ButtonsWidget\";\r\nimport HtmlWidget from \"./widgets/HtmlWidget\";\r\nimport GalleryWidget from \"./widgets/gallery/GalleryWidget\";\r\n\r\ninterface IProps {\r\n content: IWidget;\r\n}\r\n\r\nexport default function ContentResolver(props: IProps) {\r\n const { content } = props;\r\n\r\n const { type: contentType, video, textBlock, html, buttons, galleryImages } = content;\r\n\r\n if (contentType === \"youtube_video_widget\") return ;\r\n if (contentType === \"text_block_widget\") return ;\r\n if (contentType === \"button_widget\") return ;\r\n if (contentType === \"html_widget\") return ;\r\n if (contentType === \"gallery_widget\") return ;\r\n\r\n return null;\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { IWidget } from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport ContentResolver from \"./articleContentResolver/ContentResolver\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n \"& p\": {\r\n margin: 0,\r\n },\r\n \"& a\": {\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n });\r\n});\r\ninterface IProps {\r\n articleContent: IWidget[];\r\n}\r\n\r\nexport default function ArticleContent(props: IProps) {\r\n const { articleContent } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n {articleContent.map((content, i) => (\r\n \r\n \r\n \r\n ))}\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport Spacer from \"components/Spacer\";\r\nimport StyledButton from \"components/buttons/StyledButton\";\r\nimport INewsArticle, { IWidget } from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport { newsApi } from \"apiConsumers\";\r\nimport RouterLink from \"components/links/RouterLink\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport ArticleContent from \"../ArticleContent\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport calculateAspectRatio from \"utils/calculateAspectRatio\";\r\nimport imageSizes from \"imageSizes\";\r\nimport TextBoxWithImage from \"components/textBoxes/textboxWithImage/TextBoxWithImage\";\r\nimport { transparentColour, fonts, newsItemHoverOpacity } from \"theme\";\r\nimport { useMediaQuery } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {},\r\n linkContainer: {\r\n \"&:hover\": {\r\n opacity: newsItemHoverOpacity,\r\n },\r\n },\r\n textContainer: {\r\n [theme.breakpoints.up(\"lg\")]: {\r\n maxWidth: 450,\r\n },\r\n [theme.breakpoints.down(\"md\")]: {\r\n minWidth: 200,\r\n },\r\n color: theme.palette.common.white,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n },\r\n articleContent: {\r\n overflow: \"hidden\",\r\n position: \"relative\",\r\n fontFamily: fonts.secondary,\r\n height: 90,\r\n padding: theme.spacing(1),\r\n },\r\n blurField: {\r\n width: \"100%\",\r\n bottom: 0,\r\n position: \"absolute\",\r\n maxWidth: \"inherit\",\r\n height: \"100%\",\r\n backgroundImage: `linear-gradient(${transparentColour}, #000000b0)`,\r\n pointerEvents: \"none\",\r\n },\r\n descriptionContainerContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n },\r\n });\r\n});\r\n\r\ninterface IProps {\r\n article?: INewsArticle;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport default function ArticleOverviewWithDescription(props: IProps) {\r\n const { article = {}, isLoading } = props;\r\n const location = useLocation();\r\n\r\n const theme = useTheme();\r\n const smScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n\r\n const { featureImage = {}, title, url } = article;\r\n const { url: featureImageSrc = \"\" } = featureImage;\r\n const classes = useStyles();\r\n\r\n const [articleContent, setArticleContent] = useState>();\r\n const [isArticleContentLoading, setIsArticleContentLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n setIsArticleContentLoading(true);\r\n if (typeof url === \"undefined\") {\r\n setArticleContent(undefined);\r\n setIsArticleContentLoading(false);\r\n } else {\r\n newsApi.getArticle(url).then((_article) => {\r\n const { content } = _article;\r\n\r\n if (typeof content !== \"undefined\") setArticleContent(content);\r\n\r\n setIsArticleContentLoading(false);\r\n });\r\n }\r\n }, [url]);\r\n\r\n const content = (\r\n \r\n
\r\n {isLoading ? null : (\r\n <>\r\n
\r\n {isArticleContentLoading ? (\r\n
\r\n \r\n
\r\n ) : typeof articleContent === \"undefined\" ? null : (\r\n \r\n )}\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n Learn More\r\n
\r\n \r\n )}\r\n
\r\n \r\n );\r\n\r\n if (typeof url === \"undefined\") return
{content}
;\r\n\r\n const articleLink = `${location.pathname}/${url}`;\r\n\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport INewsArticle from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport routes from \"routes\";\r\nimport RouterLink from \"components/links/RouterLink\";\r\nimport TextBoxWithImage from \"components/textBoxes/textboxWithImage/TextBoxWithImage\";\r\nimport calculateAspectRatio from \"utils/calculateAspectRatio\";\r\nimport imageSizes from \"imageSizes\";\r\nimport clsx from \"clsx\";\r\nimport { cssImportant, newsItemHoverOpacity } from \"theme\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: { display: \"flex\", flex: \"1\" },\r\n });\r\n});\r\n\r\nconst useTextBoxWithImageStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n flex: \"1\",\r\n \"&:hover\": {\r\n opacity: newsItemHoverOpacity,\r\n },\r\n },\r\n titleContainer: {\r\n flex: \"1\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n descriptionContainer: { flex: \"0\" + cssImportant },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n isLoading?: boolean;\r\n article?: INewsArticle;\r\n}\r\n\r\nexport default function SubArticleWithTitle(props: IProps) {\r\n const classes = useStyles();\r\n const textBoxWithImageClasses = useTextBoxWithImageStyles();\r\n\r\n const { className, isLoading = false, article = {}, ...rest } = props;\r\n\r\n const { featureImage = {}, title, url } = article;\r\n const { url: featureImageSrc = \"\" } = featureImage;\r\n\r\n const { route } = routes.news;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport StyledButton, { IStyledButtonProps } from \"./StyledButton\";\r\nimport clsx from \"clsx\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: { position: \"relative\" },\r\n buttonProgress: {\r\n color: theme.palette.common.white,\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends IStyledButtonProps {\r\n children?: ReactNode;\r\n isLoading: boolean;\r\n}\r\n\r\nexport default function LoadableButton(props: IProps) {\r\n const classes = useStyles();\r\n const { children, isLoading, disabled, className, ...rest } = props;\r\n\r\n return (\r\n \r\n {children}\r\n {isLoading && }\r\n \r\n );\r\n}\r\n","import React, { HTMLAttributes, useEffect, useState } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport clsx from \"clsx\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Spacer from \"components/Spacer\";\r\nimport INewsArticle from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport { newsApi } from \"apiConsumers\";\r\nimport ArticleOverviewWithDescription from \"components/news/articleOverviewWidgets/ArticleOverviewWithDescription\";\r\nimport SubArticleWithTitle from \"components/news/articleOverviewWidgets/SubArticleOverviewWithTitle\";\r\nimport LoadableButton from \"components/buttons/LoadableButton\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const subArticleSpacing = theme.spacing(4);\r\n\r\n return createStyles({\r\n root: {},\r\n content: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n flex: \"1\",\r\n },\r\n subArticleContainer: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n marginBottom: -subArticleSpacing,\r\n marginRight: -subArticleSpacing,\r\n },\r\n subArticle: {\r\n display: \"flex\",\r\n flex: \"1\",\r\n minWidth: 350,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n minWidth: 250,\r\n },\r\n marginRight: subArticleSpacing,\r\n marginBottom: subArticleSpacing,\r\n },\r\n loadMoreButtonContainer: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function NewsPage(props: IProps) {\r\n const classes = useStyles();\r\n const { className, ...rest } = props;\r\n\r\n const [newsArticles, setNewsArticles] = useState([]);\r\n const [isLoadingNewsArticles, setIsLoadingNewsArticles] = useState(true);\r\n const [isError, setIsErrror] = useState(false);\r\n\r\n const [totalNumberOfArticles, setTotalNumberOfArticles] = useState();\r\n\r\n const [currentPage, setCurrentPage] = useState(0);\r\n const [isLoadingMoreArticles, setIsLoadingMoreArticles] = useState(false);\r\n\r\n const pageSize = 7;\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n setIsLoadingNewsArticles(true);\r\n newsApi\r\n .getAllArticles({ pageOffset: 0, pageSize: pageSize })\r\n .then((newsResponse) => {\r\n setTotalNumberOfArticles(newsResponse.total);\r\n setNewsArticles(newsResponse.news);\r\n setIsErrror(false);\r\n })\r\n .catch((err) => {\r\n setIsErrror(true);\r\n })\r\n .finally(() => {\r\n setIsLoadingNewsArticles(false);\r\n });\r\n }, []);\r\n\r\n const loadNextPageOfNews = () => {\r\n if (isLoadingNewsArticles || isLoadingMoreArticles) return;\r\n\r\n const nextPage = currentPage + 1;\r\n\r\n setIsLoadingMoreArticles(true);\r\n newsApi\r\n .getAllArticles({ pageOffset: nextPage, pageSize: pageSize })\r\n .then((newsResponse) => {\r\n setTotalNumberOfArticles(newsResponse.total);\r\n setNewsArticles([...newsArticles, ...newsResponse.news]);\r\n setIsErrror(false);\r\n setCurrentPage(nextPage);\r\n })\r\n .catch((err) => {\r\n setIsErrror(true);\r\n })\r\n .finally(() => {\r\n setIsLoadingMoreArticles(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n {isError ? (\r\n \r\n There has been an error fetching the news. Please try again.\r\n \r\n ) : newsArticles?.length === 0 && !isLoadingNewsArticles ? (\r\n No recent news\r\n ) : (\r\n <>\r\n \r\n \r\n \r\n\r\n {newsArticles.length > 1 ? (\r\n <>\r\n \r\n
\r\n {newsArticles.map((article, i) => {\r\n if (i === 0)\r\n return ;\r\n\r\n const rotateDirection = i % 3 === 0 || i % 3 === 1 ? -1 : 1;\r\n const rotateAmount = i % 2 === 0 ? 0.5 : 1;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n {typeof totalNumberOfArticles ===\r\n \"undefined\" ? null : totalNumberOfArticles > newsArticles.length ? (\r\n <>\r\n \r\n
\r\n loadNextPageOfNews()}\r\n isLoading={isLoadingMoreArticles}\r\n >\r\n Load More\r\n \r\n
\r\n \r\n ) : null}\r\n \r\n ) : null}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {},\r\n title: {\r\n lineHeight: 1,\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n title?: string;\r\n}\r\n\r\nexport default function ArticleTitle(props: IProps) {\r\n const { title, className, ...rest } = props;\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n {typeof title === \"undefined\" ? null : (\r\n \r\n {title}\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport { articleContentLayout } from \"theme\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n contentWrapper: {\r\n flex: 1,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n },\r\n maxWidthContainer: {\r\n flex: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n maxWidth: articleContentLayout.maxWidth,\r\n },\r\n padding: {\r\n padding: `${articleContentLayout.topBottomPadding}px ${articleContentLayout.gutterPadding}px`,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: theme.spacing(4),\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n padding: theme.spacing(2),\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends React.HTMLAttributes {\r\n children?: ReactNode;\r\n noPadding?: boolean;\r\n}\r\n\r\nexport default function NewsArticleSection(props: IProps) {\r\n const { children, className, noPadding = false, ...rest } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n {children}\r\n
\r\n
\r\n );\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport INewsArticle from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport ArticleTitle from \"components/news/ArticleTitle\";\r\nimport ArticleContent from \"components/news/ArticleContent\";\r\nimport { fonts, skeletonAnimation, skeletonColour, featureTileYellow, zigzagBackgroundBlack } from \"theme\";\r\nimport Spacer from \"components/Spacer\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Skeleton from \"@material-ui/lab/Skeleton\";\r\nimport NewsArticleSection from \"./NewsArticleSection\";\r\nimport clsx from \"clsx\";\r\nimport ZigZagPatternBackground from \"components/backgrounds/ZigZagPatternBackground\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n root: {\r\n // backgroundColor: theme.palette.common.white,\r\n color: theme.palette.common.black,\r\n backgroundColor: zigzagBackgroundBlack,\r\n fontFamily: fonts.secondary,\r\n position: \"relative\",\r\n \"@media (max-width: 500px)\": { fontSize: \"13px\" },\r\n },\r\n imageSkeleton: { backgroundColor: skeletonColour },\r\n articleSection: {\r\n color: theme.palette.common.white,\r\n zIndex: 1,\r\n position: \"relative\",\r\n },\r\n articleTitle: {\r\n color: featureTileYellow,\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n article?: INewsArticle;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport default function NewsArticlePageContent(props: IProps) {\r\n const classes = useStyles();\r\n\r\n const { article = {}, isLoading, className, ...rest } = props;\r\n const { title, content = [] } = article;\r\n\r\n return (\r\n
\r\n \r\n \r\n {isLoading ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : typeof props.article === \"undefined\" ? (\r\n Article not found\r\n ) : (\r\n <>\r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n}\r\n","import React, { useEffect, useState, HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport INewsArticle from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport { newsApi } from \"apiConsumers\";\r\nimport clsx from \"clsx\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport SubArticleWithTitle from \"components/news/articleOverviewWidgets/SubArticleOverviewWithTitle\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport relatedNewsTitle from \"assets/images/newsPage/title_relatedarticles.png\";\r\nimport Spacer from \"components/Spacer\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const subArticleSpacing = theme.spacing(4);\r\n\r\n return createStyles({\r\n root: {},\r\n subArticleContainer: {\r\n display: \"flex\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n },\r\n marginBottom: -subArticleSpacing,\r\n marginRight: -subArticleSpacing,\r\n },\r\n subArticle: {\r\n flex: \"1\",\r\n marginRight: subArticleSpacing,\r\n marginBottom: subArticleSpacing,\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {\r\n articleUrl: string;\r\n}\r\n\r\nexport default function RelatedNews(props: IProps) {\r\n const { articleUrl, className, ...rest } = props;\r\n\r\n const classes = useStyles();\r\n\r\n const [newsArticles, setNewsArticles] = useState([]);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isError, setIsErrror] = useState(false);\r\n\r\n const numberOfArticles = 3;\r\n\r\n useEffect(() => {\r\n setIsLoading(true);\r\n newsApi\r\n .getAllArticles({ pageOffset: 0, pageSize: numberOfArticles + 1 })\r\n .then((newsResponse) => {\r\n setNewsArticles(newsResponse.news.filter((article) => article.url !== articleUrl));\r\n setIsErrror(false);\r\n })\r\n .catch((err) => {\r\n setIsErrror(true);\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }, [articleUrl]);\r\n\r\n return (\r\n
\r\n {isError ? (\r\n \r\n There has been an error fetching the news. Please try again.\r\n \r\n ) : newsArticles?.length === 0 && !isLoading ? (\r\n No recent news\r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n
\r\n {newsArticles.map((article, i) => {\r\n if (i === numberOfArticles)\r\n return ;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport RouterLinkButton from \"components/buttons/RouterLinkButton\";\r\nimport routes from \"routes\";\r\nimport { IStyledButtonProps } from \"components/buttons/StyledButton\";\r\n\r\ninterface IProps extends IStyledButtonProps {}\r\n\r\nexport default function NewsArticleBackButton(props: IProps) {\r\n return (\r\n \r\n All News\r\n \r\n );\r\n}\r\n","import React, { useEffect, useState, HTMLAttributes } from \"react\";\r\nimport { makeStyles, createStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport INewsArticle from \"apiConsumers/newsApiConsumer/models/INewsArticle\";\r\nimport PageSection from \"components/layout/PageSection\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { newsApi } from \"apiConsumers\";\r\nimport clsx from \"clsx\";\r\nimport NewsArticlePageContent from \"./NewsArticlePageContent\";\r\nimport imageSizes from \"imageSizes\";\r\nimport RelatedNews from \"./RelatedNews\";\r\nimport NewsArticleBackButton from \"./NewsArticleBackButton\";\r\nimport KenticoImg from \"components/Img/KenticoImg\";\r\nimport Spacer from \"components/Spacer\";\r\nimport { featureTileYellow } from \"theme\";\r\nimport jaggyTop from \"assets/images/common/yellowJaggyEdges/yellow_jaggy_top_hires.png\";\r\nimport jaggyBottom from \"assets/images/common/yellowJaggyEdges/yellow_jaggy_bottom_hires.png\";\r\nimport Rotate from \"components/rotate/Rotate\";\r\nimport { useMediaQuery } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n const getFeatureImageBorder = (size: number) => `${size}px solid ${featureTileYellow}`;\r\n\r\n return createStyles({\r\n root: {},\r\n childContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n articleContainer: {\r\n flex: \"1 1 auto\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n articleHeaderImage: {},\r\n featureImageContainer: {\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n border: getFeatureImageBorder(8),\r\n [theme.breakpoints.down(\"xs\")]: {\r\n border: getFeatureImageBorder(4),\r\n },\r\n },\r\n topBackbuttonContainer: {\r\n position: \"absolute\",\r\n left: -25,\r\n top: -25,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n left: -8,\r\n top: -17,\r\n },\r\n },\r\n articleContent: {\r\n margin: theme.spacing(0, 2),\r\n [theme.breakpoints.down(\"sm\")]: {\r\n margin: theme.spacing(0, 1),\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n margin: theme.spacing(0),\r\n },\r\n },\r\n });\r\n});\r\n\r\ninterface IProps extends HTMLAttributes {}\r\n\r\nexport default function NewsArticlePage(props: IProps) {\r\n const { className, ...rest } = props;\r\n const theme = useTheme();\r\n const xsScreen = useMediaQuery(theme.breakpoints.down(\"xs\"));\r\n\r\n const classes = useStyles();\r\n const { articleId } = useParams();\r\n\r\n const [article, setArticle] = useState();\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isError, setIsErrror] = useState(false);\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n setIsLoading(true);\r\n if (typeof articleId === \"undefined\") {\r\n setArticle(undefined);\r\n setIsLoading(false);\r\n } else {\r\n newsApi\r\n .getArticle(articleId)\r\n .then((_article) => {\r\n setArticle(_article);\r\n setIsErrror(false);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n setIsErrror(true);\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }\r\n }, [articleId]);\r\n\r\n return (\r\n \r\n \r\n\r\n
\r\n {isError ? (\r\n \r\n There has been an error fetching the article. Please try again.\r\n \r\n ) : (\r\n <>\r\n
\r\n {typeof article?.featureImage?.url === \"undefined\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n )}\r\n\r\n {typeof article?.url === \"undefined\" ? null : (\r\n <>\r\n \r\n \r\n \r\n )}\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\nimport NewsPage from \"./pages/NewsPage\";\r\nimport { Switch, Route, useRouteMatch } from \"react-router-dom\";\r\nimport NewsArticlePage from \"./pages/NewsArticlePage/NewsArticlePage\";\r\nimport defaultBackground from \"assets/images/backgrounds/bg_main.jpg\";\r\nimport PageLayout from \"components/layout/PageLayout\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return createStyles({\r\n footerBackground: {\r\n marginBottom: -100,\r\n paddingBottom: 100,\r\n },\r\n });\r\n});\r\n\r\ninterface IProps {}\r\n\r\nexport default function NewsPageRoutes(props: IProps) {\r\n let { path } = useRouteMatch();\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n } />\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport routes from \"routes\";\r\nimport { Switch, Route, Redirect } from \"react-router-dom\";\r\nimport PageLayout from \"components/layout/PageLayout\";\r\nimport NotFoundPage from \"pages/errorPages/NotFoundPage\";\r\nimport HomePage from \"pages/home/HomePage\";\r\nimport CreditsPage from \"pages/credits/CreditsPage\";\r\nimport ConfigContext from \"contexts/ConfigContext\";\r\nimport IAppConfig from \"models/IAppConfig\";\r\nimport NewsPageRoutes from \"pages/news/routes\";\r\nimport { backendApi } from \"apiConsumers\";\r\n\r\nexport default function App() {\r\n const [config, setConfig] = useState(undefined);\r\n // const [location, setLocation] = useState(undefined);\r\n\r\n useEffect(() => {\r\n backendApi.getConfig().then((config) => {\r\n setConfig(config);\r\n });\r\n\r\n // backendApi.getIsoLocation().then((location) => setLocation(location));\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n {routes.home.route !== \"/\" ? (\r\n } />\r\n ) : null}\r\n (\r\n \r\n \r\n \r\n )}\r\n />\r\n } />\r\n (\r\n \r\n \r\n \r\n )}\r\n />\r\n (\r\n \r\n \r\n \r\n )}\r\n />\r\n \r\n \r\n );\r\n}\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === \"localhost\" ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === \"[::1]\" ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener(\"load\", () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n \"This web app is being served cache-first by a service \" +\r\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === \"installed\") {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n \"New content is available and will be used when all \" +\r\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log(\"Content is cached for offline use.\");\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error(\"Error during service worker registration:\", error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { \"Service-Worker\": \"script\" },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get(\"content-type\");\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\"No internet connection found. App is running in offline mode.\");\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if (\"serviceWorker\" in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, createStyles, Theme } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n \"@global\": {\r\n body: {\r\n backgroundColor: theme.palette.background.default,\r\n color: theme.palette.common.white,\r\n },\r\n \"::selection\": {\r\n backgroundColor: theme.palette.common.white,\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n })\r\n);\r\n\r\ninterface IProps extends React.HTMLAttributes {}\r\n\r\nexport default function GlobalCss(props: IProps) {\r\n useStyles();\r\n\r\n return
;\r\n}\r\n","import \"react-app-polyfill/ie11\";\r\nimport \"react-app-polyfill/stable\";\r\n\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport App from \"./App\";\r\n// import CookieConsent from \"components/cookieConsent/CookieConsent\";\r\nimport \"index.css\";\r\nimport * as serviceWorker from \"serviceWorker\";\r\nimport { MuiThemeProvider } from \"@material-ui/core/styles\";\r\nimport theme from \"theme\";\r\nimport GlobalCss from \"components/GlobalCss\";\r\nimport AOS from \"aos\";\r\nimport \"aos/dist/aos.css\";\r\n// import { CookieContextProvider } from \"./components/cookieConsent/CookieContext\";\r\n\r\n//@ts-ignore\r\n// import TagManager from \"react-gtm-module\";\r\n\r\nAOS.init();\r\n\r\n// Internet Explorer 6-11\r\n// @ts-ignore\r\nconst isIE = /*@cc_on!@*/ false || !!document.documentMode;\r\n\r\nReactDOM.render(\r\n \r\n {isIE ? (\r\n
\r\n Internet Explorer 11 is not supported, please use another browser.\r\n
\r\n ) : (\r\n \r\n \r\n {/* {\r\n if (preferences.marketingCookies.isEnabled) {\r\n TagManager.initialize({\r\n gtmId: \"GTM-MFLVJPP\",\r\n });\r\n }\r\n }}\r\n > */}\r\n {/* */}\r\n \r\n \r\n
\r\n \r\n {/* */}\r\n \r\n \r\n )}\r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}