{"version":3,"sources":["../external \"React\"","config/env/index.ts","../../../../libs/framework/utils/lib/index.es.js","models/settings/index.ts","config/constants.ts","models/features/index.ts","ducks/request/index.ts","models/features/searchBar/index.ts","ducks/recents/index.ts","ducks/search/index.ts","utils/getMiniShoppingbagItemImageUrl/index.ts","utils/getOrigin/index.ts","utils/excludeIncentives/index.tsx","ducks/shoppingbag/index.ts","utils/getRegExValue/index.ts","../../../../libs/framework/themes/lib/index.es.js","utils/window/index.ts","utils/axios/index.ts","../../../../libs/config/apiconfig/lib/index.es.js","config/api/headerdata/index.ts","api/headerdata/defaultHeaderData.ts","ducks/headerdata/index.ts","ducks/user/index.ts","config/api/autocomplete/index.ts","api/autocomplete/index.ts","ducks/autocomplete/index.ts","ducks/languages/index.ts","ducks/text-alignment/index.ts","ducks/text/index.ts","ducks/favourites/index.ts","ducks/feature-switch/index.ts","config/api/countries/index.ts","api/countries/index.ts","utils/getCdnUrl/index.ts","ducks/country-selector/index.ts","ducks/template/index.ts","ducks/settings/index.ts","config/api/meganavdata/index.ts","api/primary-nav/defaultPrimaryNavData.ts","utils/personalisePrimaryNav/index.ts","models/secondary-nav/index.ts","api/secondary-nav/index.ts","ducks/secondary-nav/index.ts","ducks/primary-nav/index.ts","ducks/accordion-activity/index.ts","ducks/tabs-activity/index.ts","ducks/compositionSettings/index.ts","ducks/index.ts","client/utils.ts","../../../../libs/framework/ThemeProvider/lib/index.es.js","../../../../libs/framework/eventservice/lib/index.es.js","GlobalStyle.tsx","components/BackToSiteBanner/components.tsx","utils/backToSiteBanner/index.ts","components/BackToSiteBanner/index.tsx","components/BackToSiteBanner/connect.ts","../../../../libs/ui-components/animations/lib/index.es.js","components/CookieConsent/connect.ts","utils/featureSwitch/index.ts","components/CookieConsent/component.tsx","utils/favourites/index.ts","api/favourites/index.ts","events/favouritesGetEvent/index.ts","events/favouritesAddEvent/index.ts","events/favouritesRemoveEvent/index.ts","utils/setMainSiteBagCookie/index.ts","api/shoppingbag/index.ts","events/shoppingBagAddEvent/index.ts","events/shoppingBagAddCistEvent/index.ts","utils/gtmSdkShoppingBagCallback/index.ts","events/shoppingBagGetEvent/index.ts","models/regions/index.ts","events/shoppingBagAddEVoucherEvent/index.ts","events/shoppingBagAddLinkedItemEvent/index.ts","events/shoppingBagAddMultipleEvent/index.ts","events/shoppingBagAddWarrantyEvent/index.ts","events/shoppingBagRemoveEvent/index.ts","events/shoppingBagUpdateSizeEvent/index.ts","events/shoppingBagUpdateQuantityEvent/index.ts","events/shoppingBagAcceptEvent/index.ts","events/shoppingBagRejectEvent/index.ts","events/modalsClosed/index.ts","events/cookiePolicyOpen/index.ts","events/cookiePolicyClose/index.ts","events/cookiePolicyRedirect/index.ts","components/CookieConsent/index.tsx","components/WidescreenCookieConsent/connect.ts","components/WidescreenCookieConsent/component.tsx","components/WidescreenCookieConsent/index.tsx","components/CountryChangeConfirmPopup/component.tsx","components/Modal/component.tsx","utils/handlePropagation/index.ts","components/Modal/index.tsx","components/CountryChangeConfirmPopup/connect.ts","events/countrySelectorRedirect/index.ts","utils/redirectPage/index.tsx","components/CountryChangeConfirmPopup/index.tsx","compositions/header/default-composition/components.tsx","components/Icon/component.tsx","components/Icon/index.tsx","components/Brand/connect.ts","components/Brand/component.tsx","utils/removeDeptFromSessionStorage/index.ts","components/Brand/index.tsx","utils/debounce/index.ts","components/SearchBox/component.tsx","config/urls/index.ts","utils/cookies/index.ts","components/SearchBox/connect.ts","components/SearchBox/index.tsx","components/Drawer/component.tsx","components/Drawer/index.tsx","Features/SearchBar/connect.ts","components/Autocomplete/connect.ts","components/Autocomplete/components.tsx","components/TextMatcher/component.tsx","components/TextMatcher/index.tsx","utils/autocomplete/index.ts","components/Autocomplete/index.tsx","Features/SearchBar/simple/AutoComplete/connect.ts","Features/SearchBar/simple/components.tsx","Features/SearchBar/simple/AutoComplete/index.tsx","components/RecentSearches/connect.ts","components/RecentSearches/components.tsx","utils/capitaliseEachWord/index.ts","components/RecentSearches/index.tsx","Features/SearchBar/simple/RecentSearches/connect.ts","Features/SearchBar/simple/RecentSearches/index.tsx","Features/SearchBar/simple/Modal/components.tsx","Features/SearchBar/simple/Modal/index.tsx","Features/SearchBar/enriched/AutoComplete/connect.ts","Features/SearchBar/enriched/components.tsx","Features/SearchBar/enriched/AutoComplete/component.tsx","components/AutocompleteProducts/connect.ts","components/AutocompleteProducts/components.tsx","utils/configUrlPath/index.ts","components/AutocompleteProducts/index.tsx","Features/SearchBar/enriched/AutoComplete/index.tsx","Features/SearchBar/enriched/RecentSearches/components.tsx","Features/SearchBar/enriched/RecentSearches/connect.ts","Features/SearchBar/enriched/RecentSearches/index.tsx","Features/SearchBar/enriched/Modal/component.tsx","Features/SearchBar/enriched/Modal/index.tsx","Features/SearchBar/index.tsx","components/Search/connect.ts","components/Search/component.tsx","components/Search/index.tsx","../../../../libs/ui-components/Tooltip/lib/index.es.js","../../../../libs/ui-components/CTA/lib/index.es.js","components/MyAccount/connect.ts","components/Link/component.tsx","components/Link/index.tsx","components/MyAccount/component.tsx","components/MyAccount/index.tsx","components/QuickLink/templates/default-template/component.tsx","utils/dataGA/index.ts","components/QuickLink/templates/default-template/index.tsx","components/QuickLink/templates/burgermenu-template/component.tsx","components/QuickLink/templates/burgermenu-template/index.tsx","components/QuickLink/connect.ts","components/QuickLink/index.tsx","components/QuickLinks/component.tsx","components/QuickLinks/index.tsx","components/QuickLinksContainer/component.tsx","components/QuickLinksContainer/index.tsx","components/QuickLinksContainer/connect.ts","components/Favourites/components.tsx","components/Favourites/index.tsx","components/Favourites/connect.ts","components/ShoppingBag/connect.ts","components/ShoppingBag/components.tsx","components/MiniShoppingBag/connect.ts","components/MiniShoppingBagCheckout/connect.ts","components/MiniShoppingBagCheckout/component.tsx","components/MiniShoppingBagCheckout/index.tsx","components/MiniShoppingBagItems/connect.ts","components/MiniShoppingBagItem/component.tsx","components/ProductImage/component.tsx","components/ProductImage/index.tsx","components/MiniShoppingBagItem/templates/default-template/component.tsx","components/MiniShoppingBagItem/templates/burgermenu-template/component.tsx","components/MiniShoppingBagItem/connect.ts","components/MiniShoppingBagItem/templates/default-template/index.tsx","components/MiniShoppingBagItem/templates/burgermenu-template/index.tsx","components/MiniShoppingBagItem/index.tsx","components/MiniShoppingBagItems/component.tsx","components/ChargesAndIncentiveItem/index.tsx","components/ChargesAndIncentiveList/index.tsx","components/MiniShoppingBagItems/index.tsx","utils/wheelLock/index.ts","components/MiniShoppingBag/component.tsx","components/MiniShoppingBag/index.tsx","components/ShoppingBagNotification/connect.ts","components/ShoppingBagNotification/component.tsx","components/ShoppingBagNotification/index.tsx","components/ShoppingBag/index.tsx","components/Checkout/connect.ts","components/Checkout/component.tsx","components/Checkout/index.tsx","utils/getBaseSiteUrl/index.ts","events/countrySelectorClosed/index.ts","components/CountrySelectDropdown/component.tsx","components/CountrySelectDropdown/connect.ts","components/CountrySelectDropdown/index.tsx","utils/useSearchCountrySelectorByKeyPress/index.tsx","components/CountryLangSelector/templates/default-template/component.tsx","components/CountryLangSelector/templates/default-template/index.tsx","components/CountryLangSelector/templates/burgermenu-template/component.tsx","components/CountryLangSelector/templates/burgermenu-template/index.tsx","components/CountryLangSelector/connect.ts","components/CountryLangSelector/component.tsx","components/CountryLangSelector/index.tsx","server/core/xhr/index.ts","utils/calculate/index.ts","components/TestTools/BagTriggers/index.tsx","components/TestTools/Auth/index.tsx","components/TestTools/countrySelector/index.tsx","components/TestTools/index.tsx","components/TimeMachineDate/components.tsx","components/TimeMachineDate/index.tsx","components/TimeMachineDate/connect.ts","components/UpperHeader/component.tsx","components/UpperHeader/index.tsx","components/LowerHeader/component.tsx","components/LowerHeader/index.tsx","components/CTA/component.tsx","components/CTA/index.tsx","utils/nextSaleBagWarning/index.ts","components/SaleBagWarningModal/connect.ts","components/SaleBagWarningModal/components.tsx","components/SaleBagWarningModal/index.tsx","components/StaticHeaderBanner/connect.ts","components/StaticHeaderBanner/components.tsx","components/StaticHeaderBanner/index.tsx","compositions/header/default-composition/index.tsx","compositions/header/burgermenu-composition/components.tsx","compositions/header/burgermenu-composition/index.tsx","utils/is-touch-device/index.ts","utils/excludeFrom/index.ts","components/SnailTrail/connect.ts","components/SnailTrail/component.tsx","components/SnailItem/component.tsx","components/SnailItem/index.tsx","components/SnailItem/connect.ts","components/FadeInAnimation/index.tsx","components/NavIcon/component.tsx","components/NavIcon/index.tsx","components/Chevron/component.tsx","components/Chevron/index.tsx","components/Chevron/connect.ts","components/Scroller/component.tsx","utils/calculatePrimaryNavPadding/index.ts","components/Scroller/index.tsx","utils/calculateWindowOffsets/index.ts","utils/setDepartment/index.ts","components/SnailTrail/index.tsx","components/PrimaryNav/component.tsx","components/PrimaryNav/index.tsx","components/PrimaryNav/connect.ts","components/SecondaryNav/connect.ts","components/SecondaryNavDrawer/component.tsx","components/SecondaryNavDrawer/connect.ts","components/SecondaryNavDrawer/index.tsx","components/SecondaryNavOverlay/component.tsx","components/SecondaryNavOverlay/index.tsx","components/SecondaryNav/component.tsx","components/SecondaryNavContent/component.tsx","components/SecondaryNavContent/connect.ts","components/CatalogueItem/component.tsx","components/SnailItemIcon/component.ts","components/SnailItemIcon/index.tsx","components/CatalogueItem/connect.ts","components/PromoIcon/component.tsx","components/PromoIcon/index.tsx","components/CatalogueItem/index.tsx","components/CatalogueList/component.tsx","components/CatalogueList/connect.ts","components/CatalogueList/index.tsx","components/Catalogue/component.tsx","components/Catalogue/index.tsx","components/Tab/component.tsx","components/Tab/index.tsx","components/Tabs/component.tsx","components/Tabs/index.tsx","components/Banner/component.tsx","utils/prefixPath/index.ts","components/Banner/index.tsx","components/Banner/connect.ts","components/MissionsTitle/component.tsx","components/MissionsTitle/index.tsx","components/MissionsCTA/component.tsx","components/MissionsCTA/connect.ts","components/MissionsCTA/index.tsx","components/MissionsItem/component.tsx","components/MissionsItem/connect.ts","components/MissionsItem/index.tsx","components/MissionsItemList/component.tsx","components/MissionsItemList/index.tsx","components/Missions/component.tsx","utils/chunk-array/index.ts","components/Missions/index.tsx","hooks/useSetSecondaryNavFocus/index.ts","components/SecondaryNavContent/index.tsx","components/SecondaryNav/index.tsx","components/BurgerButton/component.tsx","components/BurgerButton/index.tsx","compositions/meganav/burgermenu-composition/component.tsx","compositions/meganav/burgermenu-composition/index.tsx","compositions/header/connect.ts","compositions/meganav/burgermenu-composition/connect.ts","config/api/countryRedirect/index.ts","api/countryRedirect/index.ts","utils/GA/index.ts","events/countrySelectorOpen/index.ts","utils/countryRedirect/utils.ts","utils/countryRedirect/sessionUpdate.ts","utils/countryRedirect/openCountrySelector.ts","utils/countryRedirect/index.ts","utils/setBloomreachCookie/index.tsx","hooks/useBloomreachCookieCheck/index.tsx","utils/useIsOnClient/index.ts","events/trackingEvent/index.ts","hooks/useTrackingEvents/usePushBloomreachDetails/index.tsx","events/trackingEvent/bloomreachInfo/index.ts","hooks/useSetSegmentCookie/index.ts","compositions/header/index.tsx","components/SkipContent/component.tsx","components/SkipContent/index.tsx","components/SkipContent/connect.ts","App.tsx","compositions/meganav/default-composition/index.tsx","client/ClientApp.tsx","events/initialiseGlobalEvents/index.ts","utils/redirectToAlternativeLanguage/index.ts","client/index.tsx","../external \"ReactDOM\"","../../../../libs/framework/logger/lib/index.es.js"],"names":["module","exports","React","INTERNAL","Object","freeze","PRODUCTION","process","DEVELOPMENT","DEV_URL_OVERRIDE","NODE_ENV","REACT_APP_BLOB_STORAGE_PATH","USEDEVESI","ENV_VARS","REACT_APP_BLOB_STORAGE_SSR_BASEURL","PORT","REACT_APP_CDN_BASEURL","REACT_APP_API_BASEURL","REACT_APP_MEGANAV_API_BASEURL","POD_NAME","REACT_APP_SERVE_PATH_PREFIX","ASSETS_PATH","LOG_LEVEL","FNC_NAME","REACT_APP_APPINSIGHTS_KEY","BLOOMREACH_BASE_URL","REACT_APP_MEGANAV_BASEURL","REACT_APP_MEGANAV_ASSETS_PATH","GEOLOCATION_BASEURL","REACT_APP_GEOLOCATION_BASEURL","ENVIRONMENT","REACT_APP_USE_TIME_MACHINE_COOKIE","USE_LOCAL_STATIC_CONTENT","VARS","replaceText","string","replaceValue","regex","replace","formatTextTestIds","toLocaleLowerCase","_assign","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","getSettingsHeaders","headers","validateHeaders","caller","Error","realms","next","ae","en","currencies","id","ar","am","at","de","au","az","ru","be","fr","bg","bh","br","by","ca","ch","cl","cy","cz","cs","dk","da","ee","eg","es","fi","gb","ge","gi","gr","el","hk","zh","hr","hu","ie","il","he","is","it","jp","ja","kr","ko","kw","kz","lb","lt","lu","lv","mt","mx","my","ms","nl","no","nz","om","pe","ph","pk","pl","pt","qa","ro","rs","sa","se","sv","sg","si","sl","sk","th","tr","tw","ua","us","za","childsplay","currencySymbol","spaceRequired","position","decimalSeparatorSymbol","groupSeparatorSymbol","showNumOfDecimalDigits","forceEnglish","Intl","NODE_ICU_DATA","error","SettingsSdkKeys","formatNumber","price","currency","locale","realm","configuredCurrency","_a","_b","_c","_d","splitLocale","split","territory","language","getId","getCurrencyConfig","formattedPrice","requiredSpacing","localeParts","numberFormatOptions","style","minimumFractionDigits","useGrouping","maximumFractionDigits","configPrice","NumberFormat","resolvedOptions","numberingSystem","displayedPrice","format","formatToParts","map","type","value","reduce","part","numberOnlyLatinCharacterPrice","join","getConfiguredCurrency","localeNumberFormat","latinCharacterNumberFormat","currencyPattern","forEach","endsWith","substring","getCurrency","MyAccount","Link","TYPING_STATE","SUPPORTED_MY_ACCOUNT_TYPES","loggedIn","loggedOut","SupportedFeatureTypes","initialState","siteUrl","url","timeMachineDate","isInternationalCountry","geolocationBaseUrl","geolocationVersion","bloomReachCachingCookieList","bloomReachCachingEnabled","bloomreachGroupLocation","bloomreachDomainKey","useTimeMachineCookie","currencyCode","fullTerritoryName","monetateSDK","accountMonetateSDK","cookieDomain","showSaleWarningBag","privacyUrl","showBackToSiteBanner","backToSite","setShowBackToSite","payload","reducer","state","action","query","toLowerCase","version","monetateEnabled","SupportedSearchBar","setRecent","createRecentQuery","term","dispatch","getState","request","oldQueryIds","recents","queryIds","MaxItems","features","SearchBar","RecentSearch","startIndex","slice","concat","filter","trim","Cookies","set","domain","deleteRecentQueries","remove","showAutoComplete","showRecentSearch","getPlpUrl","plpUrl","encodeURIComponent","search","plpUrlPath","window","location","href","openDrawer","typedCharacters","autocompleteFeature","Autocomplete","isAutocompleteEnabled","Value","closeAllPanels","showAutocomplete","getImageUrl","fields","imageField","find","f","Field","getItemImageUrl","item","LinkedItems","ItemNumber","OptionNo","ItemCategory","Personalisation","PersonalisationFields","CustomItemFields","linkedItemNumber","itemImageUrl","env","itemUrl","getOrigin","URL","origin","parser","document","createElement","protocol","hostname","e","excludeIncentives","incentives","exclusions","x","includes","Type","setBag","itemCount","bag","loading","getRegExValue","valueIn","name","pattern","RegExp","exec","unescape","breakpoints","values","xs","sm","md","lg","xl","IS_BROWSER","getWindow","screenIsSmallerThanLarge","innerWidth","screenIsBiggerOrEqualToLarge","axiosInstance","defaults","baseURL","interceptors","use","config","setAxiosDefaultsFromNextRequest","logger","Promise","reject","response","externalCallAxiosInstance","create","HTTPMethod","req","nextVisitorCookie","cookie","undefined","common","apiURL","api","realmOnly","endpoint","apiUrlSettings","params","_i","configUrl","endpoints","getRemoteURL","apiMethod","method","localEndpoint","getLocalURL","routeDefinition","buildExport","getHeaderData","headerName","get","data","firstName","userUpdated","setUser","user","autocompleteApi","getAutocompleteData","searchValue","accountId","date","domainKey","authKey","uid2","bloomreachBaseUrl","getAutocompleteDataApi","Date","getTime","axios","parameters","q","suggestions","isLoading","numFound","products","setIsLoading","getAutoCompleteThunk","updateProductsOnly","autocomplete","currentLanguageText","altLanguageName","altLanguageUrl","currentLanguageName","direction","languageSelectorData","textAlignment","setFavourites","enableFavourites","hasFavourites","featureSwitchData","countriesApi","getCountriesListData","getCountriesList","baseUrl","_headers","countrySelectorEndpoint","getCountriesListDataApi","formatCdnPath","icon","formatCdnPathWithVariant","variant","assetName","pop","iconPath","getMeganavIconPath","changeCountry","countryCode","countriesList","countrySelector","searchCountryCode","selected","c","CountryCode","selectCountry","selectLanguage","DefaultLanguageName","setDefaultCountryCodeAction","isShowCountrySelector","requestCountryChange","closeCountrySelector","getCountriesListThunk","showBFPOFlag","filteredData","HideInDropdown","Languages","getIconUrl","area","country","countryObject","Name","filteredDataWithIconUrl","iconUrl","finalFilteredData","toUpperCase","defaultCountryCode","initialCountryCode","isActive","isShowOverlay","selectedCountry","selectedLanguage","isLoaded","requestedCountryChange","template","saleName","showCloseButtonMobileSearch","rememberSelectedDepartment","meganavApi","getPrimaryNavData","getSecondaryNavData","page","department","getSeoData","shufflePrimaryNav","items","newList","MasIDCookie","mapped","newItemsList","orderingTags","match","arr","Array","j","index","pin","dataset","splice","mapping","unpinnedList","from","v","shift","SecondaryNav","title","target","viewType","Tab","banner","Banner","imageUrl","Column","missions","excludeFrom","Category","icons","linkColour","fontWeight","rest","getAppDataApi","AppApiConfig","departmentIds","catalogues","isPending","isInSecondaryNav","isImagePlaceholderEnabled","setIsInSecondaryMeganav","makeRequest","getSecondaryNavDataThunk","secondarynav","dept","mergeData","oldData","newData","lowercaseTitle","newDepartmentIds","activeDepartment","active","activeDepartmentIndex","isInPrimaryNav","setIsInPrimaryNav","setPrimaryNavIndex","closeSecondaryNav","showSecondaryNavArrow","rootReducer","combineReducers","userReducer","recentsReducer","requestReducer","searchReducer","shoppingBag","shoppingBagReducer","languages","languageReducer","headerReducer","textAlignmentReducer","autocompleteReducer","favourites","favouritesReducer","featuresReducer","countrySelectorReducer","text","textReducer","templateReducer","settings","primarynav","primarynavReducer","secondarynavReducer","accordionActivity","accordionActivityReducer","tabsActivity","tabsActivityReducer","compositionSettings","_STATE_","ssrClientSettings","header","__spreadArrays","r","k","a","jl","_extends","bind","source","key","_typeof","Symbol","iterator","obj","constructor","isBrowser","nodeType","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","_createClass","Constructor","protoProps","staticProps","_setPrototypeOf","o","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","_assertThisInitialized","self","ReferenceError","plainObjectConstrurctor","cloneStyle","isArray","newStyle","createRule","decl","options","jss","declCopy","rule","plugins","onCreateRule","result","toCssValue","ignoreImportant","cssValue","getWhitespaceSymbols","linebreak","space","indentStr","str","indent","toCss","selector","_options$indent","fallbacks","Infinity","_getWhitespaceSymbols","fallback","prop","_prop","_value","_prop2","_value2","allowEmpty","nativeEscape","CSS","escape","BaseStyleRule","isProcessed","sheet","Renderer","renderer","force","newValue","onChangeValue","isEmpty","isDefined","renderable","removeProperty","setProperty","attached","StyleRule","_BaseStyleRule","_this","scoped","generateId","selectorText","_proto2","applyTo","json","toJSON","toString","opts","link","setSelector","replaceRule","pluginStyleRule","parent","defaultToStringOptions","children","atRegExp","ConditionalRule","styles","atMatch","rules","RuleList","add","_proto","getRule","indexOf","addRule","onProcessRule","newRule","keyRegExp","pluginConditionalRule","test","defaultToStringOptions$1","nameRegExp","KeyframesRule","frames","nameMatch","keyRegExp$1","refRegExp","findReferencedKeyframe","val","keyframes","replaceRef","refKeyframe","pluginKeyframesRule","onProcessStyle","KeyframeRule","pluginKeyframeRule","FontFaceRule","keyRegExp$2","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","defaultUpdateOptions","forceUpdateOptions","raw","counter","classes","ruleOptions","_this$options","register","oldRule","oldIndex","nameOrSelector","unregister","update","updateOne","_this$options2","onUpdate","nextValue","_nextValue","_prevValue","css","StyleSheet","deployed","attach","deploy","detach","queue","push","insertRule","deleteRule","addRules","added","_this$rules","PluginsRegistry","internal","external","registry","onProcessSheet","processedValue","newPlugin","plugin","sheets","SheetsRegistry","reset","_temp","_ref","excluded","sourceKeys","keys","_objectWithoutPropertiesLoose","globalThis$1","globalThis","Math","Function","ns","moduleId","createGenerateId","ruleCounter","jssId","prefix","classNamePrefix","String","minify","memoize","fn","getPropertyValue","cssRule","attributeStyleMap","err","delete","getHead","querySelector","findPrevNode","insertionPoint","findHigherSheet","element","parentNode","node","findHighestSheet","nextSibling","comment","head","childNodes","nodeValue","findCommentNode","getNonce","getAttribute","_insertRule","container","appendRule","cssRules","getValidRuleInsertionIndex","maxIndex","DomRenderer","hasInsertedRules","media","meta","textContent","createStyle","setAttribute","nonce","nextNode","insertBefore","insertionPointElement","appendChild","insertStyle","Boolean","removeChild","insertRules","nativeParent","latestNativeParent","_insertionIndex","refCssRule","ruleStr","insertionIndex","nativeRule","getRules","instanceCounter","Jss","setup","createStyleSheet","removeStyleSheet","_len","_key","createJss","stylisPlugins","Fragment","canUseDOM","getElementById","noRenderer","jssPreset","themeColor","classname","disableGlobal","generateClassName","createGenerateClassName","productionPrefix","StylesProvider","ThemeProvider","theme","defaultProps","GlobalStyle","createGlobalStyle","UpperHeader","default","height","PrimaryNav","BannerContainer","styled","div","colours","utilities","backgroundAccent","hide","BrandIcon","img","Title","span","BannerBackToSite","button","font","secondary","light","family","BrandTextGrid","Grid","CloseButtonGrid","removeShowBackToCookie","jscookie","removeBackToUrlCookie","removeBackToTpClientCookie","connect","showBanner","backToSiteBanner","closeBanner","_dispatch","useState","bannerShow","updateBannerShow","tpClient","setTpClient","useScrollTrigger","threshold","useEffect","tpClientName","backToSiteUrl","matchingTpClient","searchParams","tpClientParam","tpClientUrlParam","tpClients","getTpBannerSettings","clientName","circleLeftArrowText","titleIconText","closeIconText","data-testid","alignItems","onClick","width","src","alt","backToText","aria-label","show","timeout","defaultStyle","transition","opacity","transitionStyles","entering","entered","exiting","exited","Transition","in","unmountOnExit","cookiePolicy","cookieName","hasConsentCookie","doCountryRedirect","w","platmodflags","countryRedirect","doCookiePolicy","modernisedCookieConsent","doGTMDataLayerEvents","gtmDataLayerEvents","Container","borders","primary","radius","form","background","divider","StyledTitle","Typography","Header","UnstyledButton","BodyText","_extendStatics","d","b","__extends","__","hasOwnProp","subjects","setupEvent","eventName","ReplaySubject","Events","Emitter$1","Emitter","instance","createName","emit","fnName","listen","handler","subscribe","dispose","Instance","CommonESB","subscriptions","PublishData","event","SubscribeToEvent","cb","subscription","UnsubscribeAll","unsubscribe","Events$1","GetFavourites","_super","SearchESB","publish","SEARCH","callback","FAVOURITES_GET","GetFavouritesCallback","FAVOURITES_GET_CALLBACK","AddFavourites","FAVOURITES_ADD","AddFavouritesCallback","FAVOURITES_ADD_CALLBACK","RemoveFavourites","FAVOURITES_REMOVE","RemoveFavouritesCallback","FAVOURITES_REMOVE_CALLBACK","GetBag","PageLandingESB","SEARCH_LANDING_BLOOMREACH_CATEGORY","SHOPPING_BAG_GET","GetBagCallback","SHOPPING_BAG_GET_CALLBACK","AddBag","SHOPPING_BAG_ADD","AddBagCallback","SHOPPING_BAG_ADD_CALLBACK","AddCistBag","SHOPPING_BAG_ADD_CIST","AddCistBagCallback","SHOPPING_BAG_ADD_CIST_CALLBACK","AddEVoucher","SHOPPING_BAG_ADD_EVOUCHER","AddEVoucherCallback","SHOPPING_BAG_ADD_EVOUCHER_CALLBACK","AddLinkedItem","SHOPPING_BAG_ADD_LINKED_ITEM","AddLinkedItemCallback","SHOPPING_BAG_ADD_LINKED_ITEM_CALLBACK","AddMultiple","SHOPPING_BAG_ADD_MULTIPLE","AddMultipleCallback","SHOPPING_BAG_ADD_MULTIPLE_CALLBACK","AddWarranty","AddVoucher","SHOPPING_BAG_ADD_VOUCHER","AddVoucherCallback","SHOPPING_BAG_ADD_VOUCHER_CALLBACK","SHOPPING_BAG_ADD_WARRANTY","AddWarrantyCallback","SHOPPING_BAG_ADD_WARRANTY_CALLBACK","RemoveBag","SHOPPING_BAG_REMOVE","RemoveBagCallback","SHOPPING_BAG_REMOVE_CALLBACK","UpdateQuantity","SHOPPING_BAG_UPDATE_QUANTITY","UpdateQuantityCallback","SHOPPING_BAG_UPDATE_QUANTITY_CALLBACK","UpdateSize","SHOPPING_BAG_UPDATE_SIZE","UpdateSizeCallback","SHOPPING_BAG_UPDATE_SIZE_CALLBACK","AcceptBag","SHOPPING_BAG_ACCEPT","AcceptBagCallback","SHOPPING_BAG_ACCEPT_CALLBACK","RejectBag","SHOPPING_BAG_REJECT","RejectBagCallback","SHOPPING_BAG_REJECT_CALLBACK","CountrySelectorOpenESB","GetVisitorToken","VISITOR_TOKEN_GET","GetVisitorTokenCallback","VISITOR_TOKEN_GET_CALLBACK","ClearVisitorTokenCallback","VISITOR_TOKEN_CLEAR_CALLBACK","UpgradeVisitorToken","VISITOR_TOKEN_UPGRADE","ClearVisitorToken","VISITOR_TOKEN_CLEAR","COUNTRY_SELECTOR_OPEN","CountrySelectorClosedESB","COUNTRY_SELECTOR_CLOSED","CountrySelectorRedirectESB","COUNTRY_SELECTOR_REDIRECT","CountrySelectorRedirectToAlternativeLanguageESB","COUNTRY_SELECTOR_REDIRECT_TO_ALTERNATIVE_LANGUAGE","ModalsCloseESB","HydrateProductSummaryESB","PRODUCT_SUMMARY_HYDRATE","ProductSummaryToDataLayer","PRODUCT_SUMMARY_DEBOUNCE_TO_DATALAYER","ProductSummaryTrackPage","PRODUCT_SUMMARY_TRACK_PAGE","AddProductsToMonetate","PLP_ADD_PRODUCTS_TO_MONETATE","MODALS_CLOSE","TrackEvent","TRACK_EVENT","CookiePolicyCloseESB","TrackSiteDetailsEvent","TRACK_SITE_DETAILS_EVENT","COOKIE_POLICY_CLOSE","CookiePolicyOpenESB","COOKIE_POLICY_OPEN","CookiePolicyRedirectESB","COOKIE_POLICY_REDIRECT","esb","useShoppingBagGetCallbackObservable","useModalsCloseObservable","shouldUseSessionStorage","useSessionStorage","Storage","sessionStorage","setItem","removeItem","setCacheVersion","shouldSetCacheVersion","favouriteCacheVersion","localStorage","getItem","cacheBuster","round","getFormattedItemNumber","itemNumber","substr","FavouritesApiPost","apiModel","callbackEventService","eventId","post","withCredentials","Pragma","then","handleSuccess","catch","handleError","defaultEventData","status","textStatus","statusText","success","Success","errorMessage","ErrorMessage","callbackEventData","ShoppingListItems","setSessionStorageHasFavouriteItems","message","Logger","getFavouritesESB","getFavouritesCallbackESB","LoadFavouritesApiData","queryString","buildQueryString","FavouritesApiGet","isAccountPage","cacheVersion","rpidCookie","rpid","addFavouritesESB","addFavouritesCallbackESB","FavouritesAddApiModel","optionCode","linkedOptionNo","listId","removeFavouritesESB","removeFavouritesCallbackESB","FavouritesRemoveApiModel","setMainSiteBagCookie","ShoppingBag","ItemCount","OrderGoodsValue","mainSiteBagCookie","expires","ShoppingBagApiPost","qs","stringify","Bag","getBagESB","getBagCallbackESB","BagAddApiModel","option","chain","quantity","modalItemUrl","SaleClearanceSofaImage","LoadShoppingBagApiData","optionNumber","saleClearanceSofaImage","addBagESB","addBagCallbackESB","ciststoreid","cistStoreId","setBackDataInSession","userVariables","doUserVariables","RoamingProfileId","Authenticated","AccountType","NextUnlimitedStatus","SupportedRegionTypes","guestAccountConverted","sdkCallback","cacheBustedParams","_","now","ShoppingBagApiGet","skipRebuild","shouldSkipRebuild","ap","skipRebuildUrls","some","matchHref","eVoucherTo","eVoucherFrom","eVoucherEmail","eVoucherMessage","ecardDeliveryDate","linkeditem","linkeditemoption","LoadApiData","linkedItemId","linkedItemOption","BagAddMultipleApiModel","pageurl","deliveryweeks","grouped","groupType","pageUrl","deliveryWeeks","isGrouped","BagAddWarrantyApiModel","warranty","warrantyoptionno","warrantyId","warrantyOptionNumber","BagRemoveApiModel","UpdateSizeApiModel","UpdateQuantityApiModel","BagAcceptApiModel","BagRejectApiModel","modalsCloseESB","PublishToModalsClosed","openedESB","PublishCookiePolicyOpen","closedESB","PublishCookiePolicyClose","redirectESB","PublishCookiePolicyRedirect","showPopUp","setShowPopUp","body","linkText","closeIconAltText","popover","backgroundColour","borderBottom","BodyContainer","StyledText","StyledButtonWrapper","StyledButtonConfirm","Button","medium","weight","buttonPrimary","color","border","StyledButtonCancel","buttonSecondary","$darkerBackdrop","palette","modal","backdrop","handlePropagation","stopPropagation","innerModalDefaultProps","disableRestoreFocus","disableAutoFocus","disableEnforceFocus","disablePortal","keepMounted","disableScrollLock","Modal","open","handleClose","darkerBackdrop","hideBackdrop","onClose","closeAfterTransition","BackdropComponent","Backdrop","BackdropProps","countryChangeModal","SubscribeCountrySelectorRedirect","PublishCountrySelectorRedirect","redirectPage","selectedLang","l","TargetUrl","showModal","closeModal","titleText","bodyTextPt1","bodyTextPt2","confirm","cancel","InnerContainer","nav","padding","Brand","order","flex","Search","margin","Quicklinks","Checkout","Favourites","CountryLangSelector","Img","Icon","REGION","brand","regions","region","elements","narrowModeIcon","wideModeIcon","accessibilityText","tooltip","WideViewIconContainer","NarrowViewIconContainer","removeDeptFromSessionStorage","className","useDebounce","delay","debouncedValue","setDebouncedValue","setTimeout","clearTimeout","input","SearchBox","pseudoClass","hover","borderWidth","focusWithin","focusActive","boxShadow","Form","HiddenLabel","label","InputContainer","InputBase","letterSpacing","fontSize","placeholder","Divider","borderRight","display","SubmitButton","ClearButton","searchBox","searchIconUrl","searchInputButtonUrl","clearButton","path","myAccount","loginUrl","signoutUrl","tooltipIconUrl","checkout","autoComplete","images","oldDirectoryName","newDirectoryName","drawer","activeIconUrl","inactiveIconUrl","countryLangSelector","countrySelectUrl","burgerMenu","queueIt","host","clientUrl","configLoader","abPlatformTesting","configsPath","personasConfigPath","baseFile","configFile","dynatrace","scriptUrl","environmentId","applicationId","drawerCloseIcon","arrowIconUrl","leftWhiteArrowIconUrl","rightWhiteArrowIconUrl","getCookieValue","cookieList","autocompleteParameters","backgroundImage","urls","stateProps","ownProps","handleSubmit","searchTerm","typing","chars","autocompleteTyping","setAutoCompleteIsLoading","clearButtonUrl","showAutocompletePanel","labelId","autoFocus","searchDisabled","setSearchDisabled","IDLE","searchState","setSearchState","debounce","AUTO_COMPLETE","RECENT_SEARCH","onSubmit","preventDefault","cleanSearchTerm","htmlFor","disabled","required","inputProps","onChange","onFocus","data-ga-v1","data-ga-v3","tabIndex","orientation","DrawerContainer","MUIDrawer","Drawer","firstChild","CloseIcon","anchor","modalProps","useMediaQuery","ModalProps","data-ga-v2","closeText","closeButton","handleSuggestionClick","suggestion","getConnectedPlpUrl","Li","li","Ul","ul","Span","TextMatcher","textToMatch","regExp","replaced","matchedText","ind","handleClick","Focus","handleFocus","handleKeyboardTapping","dq","onMouseEnter","data-ga-v4","MUIButton","attrs","disableRipple","hyperlink","HeaderContainer","Wrapper","listitem","flexBasis","SeeAllLinkContainer","NoResultText","regular","Hidden","mdUp","implementation","headerText","Content","searchLinktext","noResults","enriched","recentSearches","reverse","P","capitaliseEachWord","words","noSearchesCompleted","textContainsNoValue","simple","showClearAll","clear","mobileHeader","desktopHeader","smDown","SimpleModal","role","isNoResults","NumFoundContainer","HeaderWrapper","TitleContainerStyled","ContentContainerStyled","GridContent","MuiGrid","borderRadius","pointerEvents","GridWrapper","$isNoResults","$isRecentSearches","AutocompleteContainer","AutocompleteContent","AutocompleteGrid","AutocompleteProductsGrid","termTitle","enrich","ProductsMaxItems","maxItems","Div","AutoCompleteButton","textTransform","textDecoration","autoCompleteButton","backgroundcolor","ButtonContainer","textAlign","List","AutocompleteProducts","transform","paddingTop","hideNumberOfItems","ListContainer","justifyContent","maxWidth","maxitems","marginRight","ProductDetailsContainer","configRelativePathURL","validUrl","isRelativePath","removeHostFromURL","Url","pathname","hash","charAt","product","pid","sale_price","newImagePath","thumb_image","minPrice","maxPrice","formatPrice","NoResults","loadingText","showContent","RecentSearchContent","RecentSearches","flexDirection","EnrichModal","AutoCompleteComponent","RecentSearchesComponent","ModalComponent","smallPlaceholder","bigPlaceholder","checkRecentSearch","searchBarType","showCloseButton","BigScreenContainer","searchbartype","IconContainer","SearchArea","CloseButton","SmallScreens","close","onKeyDown","BigScreens","showDrawer","showPanelBigScreen","ClickAwayListener","onClickAway","__makeTemplateObject","cooked","templateObject_1","templateObject_2","Popper","withConfig","displayName","componentId","Arrow","arrow","positionTop","anchorEl","animationTimeout","placement","_e","enableModArrow","modifiers","_f","arrowRef","setArrow","setMouseOut","onMouseLeave","enabled","ref","themeType","showOpacity","getOwnPropertySymbols","propertyIsEnumerable","__rest","enable","testId","dataGaV1","dataGaV2","dataGaV3","rel","isLoggedIn","quickLinks","QuickLinks","reducedState","acc","loggedInMyAccountText","loggedOutMyAccountText","myAccountText","tooltipIcon","updateShoppingBag","getBagData","FirstName","Anchor","alignTop","dataTestId","linkProps","navigation","Username","ViewAccountSummaryLink","SignoutButton","CTAButton","CTA","ToolTipContent","ToolTipTitle","ToolTipUsername","TooltipHeader","TooltipFooter","MyAccountLink","hideText","LoggedInTooltip","notText","buttonText","setAnchorEl","setOpen","addEventListener","removeEventListener","currentTarget","lgUp","mdDown","showContainer","Quicklink","buildGaTags","headerQuicklink","DefaultQuickLink","BurgerMenuQuickLink","components","componentName","getComponent","ComponentName","quickLink","quickLinkObject","hiddenProps","altText","favouritesUrl","updateFavourites","getFavouritesData","NextFavourites","Data","useFavouritesAddCallbackObservable","useFavouritesRemoveCallbackObservable","aria-hidden","isBagLoading","shoppingBagUrl","Items","ChargesAndIncentives","addEVoucherToBag","bagForEVoucher","ShoppingBagLink","Label","top","fontType","miniShoppingBag","minWidth","ItemWrapper","Image","ProductImage","ImageWrapper","description","imageContainer","PriceParentWrapper","StatusWrapper","warning","ProductDetails","muted","ProductDetailItem","Summary","h2","SearchDescription","Price","SaleLabel","AlternativeDescription","Description","IsDiscount","PriceFormatted","SizeDescription","Quantity","StockMessage","StockStatus","ciStoreName","sizeText","qtyText","align","ProductName","TPSearchDescription","CistStoreName","ItemID","MiniShoppingBagContainer","PriceWrapperItem","MiniShoppingBagItems","TotalText","PromotionWrapper","promotionColor","PromotionDiscount","PromotionText","StandardDeliveryContainer","deliveryColor","dividerDark","ItemsContainer","maxHeight","ChargesAndIncentiveItem","incentive","OfferTypeDescription","AdditionalAmountFormatted","ChargesAndIncentiveList","OfferShortDescription","MultiBuyDiscount","FinalOrderValueFormatted","MultiBuyDiscountFormatted","bagItemsContainerRef","useRef","bagItemsRef","handleWheelLock","isBagItemsContainer","current","contains","isBagItemsRef","deltaY","scrollHeight","scrollTop","clientHeight","bagItemsWheelLock","bagItemsContainer","passive","promotionalText","negative","totalText","MiniShoppingBag","MiniShoppingBagPriceWrapper","ItemCountWrapper","EmptyBagWrapper","fontVariant","CTAContainer","ActionWrapper","CartItemsContainer","showEmpty","bagContainerRef","isBagContainerRef","shoppingBagwheelLock","bagContainer","itemText","itemsText","inBagText","emptyBagText","viewAndEditBag","checkoutUrl","NotificationMessage","youhaveText","inYourBagText","miniBagTooltipPlacement","tooltipModifiers","isBagVisible","setIsBagVisible","shouldShowbagNotification","setShouldShowbagNotification","openBag","RecreatedFromPreviousSession","UserNotifiedOfSessionRecreation","handleShowMinibagNotification","useShoppingBagAddCistCallbackObservable","useShoppingBagAddEVoucherCallbackObservable","useShoppingBagAddLinkedItemCallbackObservable","useShoppingBagAddMultipleCallbackObservable","useShoppingBagAddWarrantyCallbackObservable","useShoppingBagRemoveCallbackObservable","useShoppingBagUpdateSizeCallbackObservable","useShoppingBagUpdateQuantityCallbackObservable","useShoppingBagAcceptCallbackObservable","useShoppingBagRejectCallbackObservable","handleOpen","thisElement","getBaseSiteUrl","newSiteUrl","lastIndexOfLanuage","lastIndexOf","PublishCountrySelectorClosed","ElementProps","makeStyles","createStyles","root","backgroundColor","menuPaper","StyledSelect","Select","CountrySelectDropdown","countrySelectDrawerBreakpoint","StyledOutlinedInput","OutlinedInput","SelectedFormControl","FormControl","SelectedMenuItem","MenuItem","StyledIcon","MenuItemCountryFlagImg","CHEVRON_ICON","timerId","countryRef","anchorDirectionBreakpoint","itemAligment","elementProps","onKeyPress","typedKeys","setTypedKeys","filteredCountry","letters","Country","useSearchCountrySelectorByKeyPress","setCountryRef","onOpen","focus","MenuProps","paper","anchorOrigin","vertical","horizontal","transformOrigin","getContentAnchorEl","IconComponent","DisplayText","ListItemIcon","CountrySelectorContainer","CountrySelectorContainerHeader","CountrySelectorContainerElement","CountrySelectorCTAWrapper","LanguageButtonsContainer","StayText","component","CountrySelectorBottomText","StayButton","ROWLink","CountrySelectorROW","LanguageButton","selectedAccent","DefaultCountrySelectorTemplate","shopNowText","onCTAClick","headerTitle","closePanel","stayText","isOpeningFromBottom","locationText","ROWText","ROWLinkText","ROWLinkUrl","languageText","lan","AccountDomainUrl","CountrySelectorROWText","CountrySelectorROWLink","BurgerMenuCountrySelectorTemplate","showLanguageSelector","justify","selectDefaultCountry","formattedCountryCode","setDefaultCountryCode","shopNowOnClick","redirectPageToAlternativeLanguage","ImageContainer","navUpperBackground","isMobile","trigger","templateProps","isoCountryCode","useCountrySelectorRedirectToAlternativeLanguageObservable","debug","JSON","info","y","toFixed","btnStyle","right","promotionalStyle","addMultiBuyDiscount","multiBuyDiscount","totalDiscount","floor","addWelcomeChargesAndIncentives","welcomeOffer","AdditionalAmount","AdditionalCode","MaximumOrderValue","MinimumOrderValue","calculateTotal","total","calculate","discount","finalOrderValue","FinalOrderValue","groupHelper","newItem","foundItem","seletedItem","setMultiBuyDiscount","inStoreMessaging","setinStoreMessaging","setWelcomeOffer","withAlternativeMsg","setAlternativeMsg","withSalePrice","setSalePrice","handleAdd","withAlternative","bagHasProperties","newBag","CountrySelector","setCountryCode","containerStyle","TestTools","setState","dateString","setDateString","timeMachineDateCookieValue","OuterContainer","lineHeight","UpperHeaderWrapper","useDispatch","closePanelsOnBlur","visitedPages","parse","depth","storedQueries","getJSON","queryId","LowerHeaderWrapper","isCountrySelectorCTA","pathToVipSite","saleBagWarning","textOne","textTwo","primaryButtonText","secondaryButtonText","openModal","splitValue","getReadOnMainSite","vipSitePath","remainOnMainSiteAction","updateReadOnMainSite","ModalContainer","isOpen","setOpenModal","remainOnMainSiteLogic","BannerInnerContainer","BannerLink","BannerPromoText","QuickLinksContainer","QuickLinkContainer","QuickLinkDivider","plp","facetDivider","DefaultHeader","closeModalHandler","enableCookieConsent","useDevEsi","showStaticHeaderBanner","widescreenCookieConsent","MeganavComponent","dir","LowerHeader","WidescreenCookieConsent","VerticalDivider","Links","BurgerMenuHeader","offset","isTouchDevice","DocumentTouch","navigator","maxTouchPoints","msMaxTouchPoints","excludeFromAccordion","exclude","excludeFromDrawer","filterByExcludeFrom","showAsDrawer","classNames","firstItemAccordion","firstItemDrawer","lastItemAccordion","lastItemDrawer","firstVisibleAccordionIndex","findIndex","firstVisibleDrawerIndex","lastItems","lastVisibleAccordionIndex","lastVisibleDrawerIndex","setActiveItem","isAlreadyActive","isNotTheSameIndex","loaded","navLowerBackground","SnailItem","marketingStyles","linkActive","handleMouseEnter","handleKeyboardEnter","linkRef","hasBeenActiveRef","data-index","data-pin","data-mapping","FadeInAnimation","rotationDegrees","NavIcon","Gradient","isShown","flip","gradient","doRotate","desktop","chevronIconAltText","chevron","isRTL","onClient","setOnClient","touchDevice","rotate","IconButton","PositionedChevron","isright","calcPrimaryNavLinkMetrics","primaryNavLinkMetrics","snailTrailElement","meganavElement","childrenArray","documentElement","clientWidth","runningWidth","$link","textWidth","textStartAt","textEndAt","noChangeFrom","noChangeTo","updatePrimaryNavLinkSpacing","screenWidth","newMargin","parseInt","TabsScroll","snailTrailRef","canScrollRight","setCanScrollRight","canScrollLeft","setCanScrollLeft","setChevronVisibility","useCallback","scrollLeftPixels","abs","scrollLeft","scrollRight","scrollWidth","resizeTimer","debounceObserver","handleChevronClick","amountOfPixelsToScrollBy","getBoundingClientRect","rightPlacement","leftPlacement","onScroll","calcScrollOffset","clickedElement","snapPosition","rightBorder","leftBorder","left","elementWidth","cursorPosition","clientX","drawerEnd","linkSize","sign","DRAWER_GAP","setDepartment","clearHoverTimeout","currentlyActiveSnailItemRef","isProgrammaticScrolling","setIsProgrammaticScrolling","setLoaded","timeOutDelay","memoizedCalcScrollOffset","delayExecution","functionToExecute","setActiveItemAndScroll","persist","scrollOffset","doScroll","functionToExecuteLater","_event","SnailTrailWrapper","closeNav","deactivateIndex","drawerIconAltText","secondaryNavDrawer","showCloseIcon","transitionDuration","innerOverlayDefaultProps","disableEscapeKeyDown","SecondaryNavOverlay","delayedOpen","BackgroundContainer","CatalogueContainer","section","hasMissions","hasBanner","MissionsContainer","CatalogueAndMissionsContainer","activeTabIndex","tabs","filteredExcludedTabs","tabIds","activeTab","hasTabs","columns","column","category","filterColumnsByExcludeFrom","tab","setTabIndex","setActiveTab","setIsInSecondaryMeganavTrue","setIsInSecondaryMeganavFalse","setNextPrimaryNav","nextDepartment","setPreviousPrimaryNav","isDirectLink","DirectLink","TertiaryNav","ItemHref","TitleContainer","isFirstElement","TitleAndImageContainer","ImagePlaceholder","SnailItemIcon","icon1xRes","icon2xRes","icon3xRes","srcSet","onError","onerror","srcset","catalogueItem","PromoIcon","iconSrc","catalogueListTitle","promotionalIcon","columnIndex","isIconEnabled","showIcon","Accordion","ExpansionPanel","AccordionPanelDetails","ExpansionPanelDetails","AccordionPanelSummary","ExpansionPanelSummary","MUIHidden","opened","catalogueList","setOpened","currentActivity","setActivity","CatalogueListTitle","catalogueMarketingStyles","CatalogueListContent","catalogueIndex","marketingstyles","SmallScreen","square","expanded","expandIcon","BigScreen","smallScreenProps","Hr","numberofcolumns","Catalogue","lastColumnIndex","lastCatalogueIndex","isLastColumnIndex","columnKey","itemTitle","listItems","showHr","handleTabClick","aria-controls","TabShocks","noOfTabs","Tabs","activeIndex","prefixImagePath","splitSiteUrl","configureSiteUrl","bannerAltText","validTarget","h4","MissionsTitle","alignment","arrowIconUrlAltText","missionsCTA","ImageTitle","Missions","Item","numberOfColumns","noOfColumns","MissionsItemList","reversed","secondChild","chunkArray","splitNo","allChunkedItems","chunkedItems","RowsOfMissionsItemList","categoryLink","useSetSecondaryNavFocus","secondaryNavContainerRef","isReverseTabbingRef","focussableChildren","querySelectorAll","lastChild","onkeydown","shiftKey","aria-labelledby","isDrawerOpen","BurgerButton","NavigationBar","BurgerMenuMegaNav","setCompositionSettings","hasRegions","geolocationUrl","countryRedirectApi","getGeolocationData","ipAddress","sessionUpdate","getGeolocation","getGeolocationDataApi","GeolocationApiConfig","updateSession","TrackGAEventWrapper","TrackGAEvent","console","log","openESB","PublishCountrySelectorOpen","fetchRetry","apiCall","retries","IsApplicable","isApplicable","userAgent","GetDevOverrideIpAddress","results","decodeURIComponent","SessionUpdate","popupDisplayed","showPopup","countryData","GeolocationVersion","attempt","ISOCountryCode","ISOCountryName","RedirectUrl","postData","Version","PopupDisplayed","ShowPopup","ISOCode","CountryName","Attempt","openCountrySelector","closedSubscription","redirectSubscription","PerformCountryRedirectCheck","countryRedirectParams","callGeolocationApi","currentDate","popupDate","PopupDate","geolocationData","setBloomreachCookie","isEnabled","bruidCookie","cookieJarSplit","parts","uid","check","segment","useBloomreachCookieCheck","count","isOnClient","callBack","setIsOnClient","useIsOnClient","cookieHandlerCallback","intervalId","exsitingCookie","clearInterval","searchABAdaptor","doSearchABAdaptor","setInterval","TrackingEvent","publishTrackingEvent","selectStateForGTM","usePushBloomreachDetails","useSelector","paramObj","br_rpid","br_pot_id","br_pixel_enabled","br_view_id","br_domain_key","useSetSegmentCookie","masIdCoookieValue","segmentCookieValue","segmentValue","headerComponent","meganavComponent","setShowModal","SubscribeToFavouritesGet","SubscribeToFavouritesAdd","SubscribeToFavouritesRemove","SubscribeToShoppingBagGet","SubscribeToShoppingBagAdd","SubscribeToShoppingBagAddCist","SubscribeToShoppingBagAddEVoucher","SubscribeToShoppingBagAddLinkedItem","SubscribeToShoppingBagAddMultiple","SubscribeToShoppingBagAddWarranty","SubscribeToShoppingBagRemove","SubscribeToShoppingBagUpdateSize","SubscribeToShoppingBagUpdateQuantity","SubscribeToShoppingBagAccept","SubscribeToShoppingBagReject","CountryRedirect","HeaderComponent","fontWeightMedium","res","skipToMainContent","headerTemplates","meganavTemplates","App","themeColours","themeVersion","headerProps","appScope","ClientApp","hasError","errorInfo","Component","inialiseGlobalEvents","subscribeRedirectToAlternativeLangeuage","redirectToAlternateLanguage","getElementsByClassName","click","store","masIDCookie","createStore","composeWithDevTools","applyMiddleware","thunk","getStore","appProps","getProps","ReactDOM","hydrate","googleAnalytics","GoogleAnalyticsNext","Init","monetateEvents","MonetateShoppingBagSDK","InitialiseEvents","logLevels","warn","correlationId","appInsights","trackTrace","severityLevel","trackException","stream","write"],"mappings":"qGAAAA,EAAOC,QAAUC,O,qMCAXC,EAAWC,OAAOC,OAAO,CAC3BC,YAAYC,EACZC,aAAaD,EACbE,iBAAkBF,8HAAYE,kBAAoB,GAClDC,SAAUH,aACVI,EAA6B,kBAC7BC,UAAWL,8HAAYK,YAGrBC,EAAWT,OAAOC,OAAO,CAC3BS,EACIP,uCACJQ,KAA0B,KAC1BC,EAAuBT,8HAAYS,EAC7BT,8HAAYS,EACZ,kCACNC,EAAuBV,8HAAYU,EAC7BV,8HAAYU,EACZ,sDACNC,EAA+BX,8HAAYW,EACrCX,8HAAYW,EACZ,uDACNC,SAAUZ,8HAAYY,SACtBC,EAA6Bb,8HAAYa,GAA+B,GACxEC,YAAad,gBACbe,UAAWf,OACXgB,SAAUhB,8HAAYgB,SACtBC,EAA2BjB,8HAAYiB,EACvCC,oBAAqBlB,8HAAYkB,qBAAuB,mDACxDC,EACInB,8HAAYmB,IACXvB,EAASK,aAAeL,EAASS,UAAY,wBAA0B,IAC5Ee,EAA+BpB,8HAAYoB,GAAiC,iBAC5EC,oBACIrB,8HAAYsB,+BAAiC,2DACjDC,YAAavB,8HAAYuB,aAAe,MACxCC,EAAmCxB,8HAAYwB,GAAqC,QACpFC,yBAA0BzB,8HAAYyB,0BAA4B,SAKvDC,EAFL,2BAAO9B,GAAaU,GCtC1BqB,EAAc,SAAqBC,EAAQC,EAAcC,GAC3D,OAAOF,EAAOG,QAAQD,EAAOD,IAG3BG,EAAoB,SAA2BJ,GAGjD,OAAOA,EAAOG,QAFF,MACO,KACwBE,qBAkBzCC,EAAU,WAaZ,OAZAA,EAAUrC,OAAOsC,QAAU,SAAkBC,GAC3C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAG9C,IAAK,IAAII,KAFTL,EAAIG,UAAUF,GAGRzC,OAAO8C,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAI7D,OAAON,IAGMU,MAAMC,KAAMP,YASzBQ,EAAqB,SAA4BC,GAEnD,OADAC,EAAgBD,EAAS,sBAClBf,EAAQA,EAAQA,EAAQ,GAAIe,EAAQ,mBAAqB,CAC9D,iBAAkBA,EAAQ,oBACxBA,EAAQ,6BAA+B,CACzC,2BAA4BA,EAAQ,8BAClC,CACF,kBAAmBA,EAAQ,mBAC3B,eAAgBA,EAAQ,gBACxB,mBAAoBA,EAAQ,oBAC5B,wBAAyBA,EAAQ,yBACjC,uBAAwBA,EAAQ,yBAA2B,GAC3D,iBAAkBA,EAAQ,mBAAqB,MAgB/CC,EAAkB,SAAyBD,EAASE,GACtD,IAAKF,IAAYA,EAAQ,qBAAuBA,EAAQ,kBAAoBA,EAAQ,sBAAwBA,EAAQ,yBAA0B,MAAM,IAAIG,MAAMD,EAAS,4BAqlDrK,EAAS,CACXE,OAnlDW,CACXC,KAAM,CACJC,GAAI,CACFC,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,QAIVE,GAAI,CACFJ,GAAI,CACFC,WAAY,CACVC,GAAI,SAIVC,GAAI,CACFH,GAAI,CACFC,WAAY,CACVC,GAAI,SAIVG,GAAI,CACFL,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRI,GAAI,CACFL,WAAY,CACVC,GAAI,QAIVK,GAAI,CACFP,GAAI,CACFC,WAAY,CACVC,GAAI,MAIVM,GAAI,CACFR,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRO,GAAI,CACFR,WAAY,CACVC,GAAI,MAIVQ,GAAI,CACFV,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRS,GAAI,CACFV,WAAY,CACVC,GAAI,QAIVU,GAAI,CACFZ,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRU,GAAI,CACFX,WAAY,CACVC,GAAI,QAIVW,GAAI,CACFb,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,QAIVY,GAAI,CACFd,GAAI,CACFC,WAAY,CACVC,GAAI,SAIVa,GAAI,CACFf,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRO,GAAI,CACFR,WAAY,CACVC,GAAI,MAIVc,GAAI,CACFhB,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRS,GAAI,CACFV,WAAY,CACVC,GAAI,QAIVe,GAAI,CACFjB,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRI,GAAI,CACFL,WAAY,CACVC,GAAI,QAIVgB,GAAI,CACFlB,GAAI,CACFC,WAAY,CACVC,GAAI,SAIViB,GAAI,CACFnB,GAAI,CACFC,WAAY,CACVC,GAAI,QAIVkB,GAAI,CACFpB,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRmB,GAAI,CACFpB,WAAY,CACVC,GAAI,QAIVI,GAAI,CACFN,GAAI,CACFC,WAAY,CACVC,GAAI,MAGRI,GAAI,CACFL,WAAY,CACVC,GAAI,OAIVoB,GAAI,CACFtB,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRqB,GAAI,CACFtB,WAAY,CACVC,GAAI,QAIVsB,GAAI,CACFxB,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRO,GAAI,CACFR,WAAY,CACVC,GAAI,SAIVuB,GAAI,CACFzB,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,QAIVwB,GAAI,CACF1B,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRwB,GAAI,CACFzB,WAAY,CACVC,GAAI,OAIVyB,GAAI,CACF3B,GAAI,CACFC,WAAY,CACVC,GAAI,QAIVS,GAAI,CACFX,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRS,GAAI,CACFV,WAAY,CACVC,GAAI,QAIV0B,GAAI,CACF5B,GAAI,CACFC,WAAY,CACVC,GAAI,MAIV2B,GAAI,CACF7B,GAAI,CACFC,WAAY,CACVC,GAAI,SAIV4B,GAAI,CACF9B,GAAI,CACFC,WAAY,CACVC,GAAI,QAIV6B,GAAI,CACF/B,GAAI,CACFC,WAAY,CACVC,GAAI,OAGR8B,GAAI,CACF/B,WAAY,CACVC,GAAI,QAIV+B,GAAI,CACFjC,GAAI,CACFC,WAAY,CACVC,GAAI,KAGRgC,GAAI,CACFjC,WAAY,CACVC,GAAI,MAIViC,GAAI,CACFnC,GAAI,CACFC,WAAY,CACVC,GAAI,QAIVkC,GAAI,CACFpC,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRkC,GAAI,CACFnC,WAAY,CACVC,GAAI,QAIVA,GAAI,CACFF,GAAI,CACFC,WAAY,CACVC,GAAI,SAIVmC,GAAI,CACFrC,GAAI,CACFC,WAAY,CACVC,GAAI,MAIVoC,GAAI,CACFtC,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRqC,GAAI,CACFtC,WAAY,CACVC,GAAI,MAIV,GAAM,CACJF,GAAI,CACFC,WAAY,CACVC,GAAI,QAIVsC,GAAI,CACFxC,GAAI,CACFC,WAAY,CACVC,GAAI,SAIVuC,GAAI,CACFzC,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRuC,GAAI,CACFxC,WAAY,CACVC,GAAI,OAIVwC,GAAI,CACF1C,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRyC,GAAI,CACF1C,WAAY,CACVC,GAAI,MAIV0C,GAAI,CACF5C,GAAI,CACFC,WAAY,CACVC,GAAI,OAGR2C,GAAI,CACF5C,WAAY,CACVC,GAAI,QAIV4C,GAAI,CACF9C,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,QAIV6C,GAAI,CACF/C,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRO,GAAI,CACFR,WAAY,CACVC,GAAI,QAIV8C,GAAI,CACFhD,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,QAIV+C,GAAI,CACFjD,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRO,GAAI,CACFR,WAAY,CACVC,GAAI,SAIVgD,GAAI,CACFlD,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRS,GAAI,CACFV,WAAY,CACVC,GAAI,QAIViD,GAAI,CACFnD,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRO,GAAI,CACFR,WAAY,CACVC,GAAI,SAIVkD,GAAI,CACFpD,GAAI,CACFC,WAAY,CACVC,GAAI,MAIVmD,GAAI,CACFrD,GAAI,CACFC,WAAY,CACVC,GAAI,SAIVoD,GAAI,CACFtD,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRqD,GAAI,CACFtD,WAAY,CACVC,GAAI,QAIVsD,GAAI,CACFxD,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRsD,GAAI,CACFvD,WAAY,CACVC,GAAI,QAIVuD,GAAI,CACFzD,GAAI,CACFC,WAAY,CACVC,GAAI,QAIVwD,GAAI,CACF1D,GAAI,CACFC,WAAY,CACVC,GAAI,QAIVyD,GAAI,CACF3D,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,QAIV0D,GAAI,CACF5D,GAAI,CACFC,WAAY,CACVC,GAAI,SAIV2D,GAAI,CACF7D,GAAI,CACFC,WAAY,CACVC,GAAI,SAIV4D,GAAI,CACF9D,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRS,GAAI,CACFV,WAAY,CACVC,GAAI,QAIV6D,GAAI,CACF/D,GAAI,CACFC,WAAY,CACVC,GAAI,OAGR6D,GAAI,CACF9D,WAAY,CACVC,GAAI,QAIV8D,GAAI,CACFhE,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRS,GAAI,CACFV,WAAY,CACVC,GAAI,QAIV+D,GAAI,CACFjE,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,QAIVgE,GAAI,CACFlE,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRgE,GAAI,CACFjE,WAAY,CACVC,GAAI,QAIViE,GAAI,CACFnE,GAAI,CACFC,WAAY,CACVC,GAAI,QAIVO,GAAI,CACFT,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRO,GAAI,CACFR,WAAY,CACVC,GAAI,QAIVkE,GAAI,CACFpE,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,MAIVmE,GAAI,CACFrE,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRoE,GAAI,CACFrE,WAAY,CACVC,GAAI,QAIVqE,GAAI,CACFvE,GAAI,CACFC,WAAY,CACVC,GAAI,QAIVsE,GAAI,CACFxE,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRuE,GAAI,CACFxE,WAAY,CACVC,GAAI,QAIVwE,GAAI,CACF1E,GAAI,CACFC,WAAY,CACVC,GAAI,QAGRwE,GAAI,CACFzE,WAAY,CACVC,GAAI,QAIVyE,GAAI,CACF3E,GAAI,CACFC,WAAY,CACVC,GAAI,SAIV0E,GAAI,CACF5E,GAAI,CACFC,WAAY,CACVC,GAAI,QAIV2E,GAAI,CACF7E,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRgC,GAAI,CACFjC,WAAY,CACVC,GAAI,QAIV4E,GAAI,CACF9E,GAAI,CACFC,WAAY,CACVC,GAAI,OAGRO,GAAI,CACFR,WAAY,CACVC,GAAI,QAIV6E,GAAI,CACF/E,GAAI,CACFC,WAAY,CACVC,GAAI,MAIV8E,GAAI,CACFhF,GAAI,CACFC,WAAY,CACVC,GAAI,SAKZ+E,WAAY,CACVlF,GAAI,CACFC,GAAI,CACFC,WAAY,CACVC,GAAI,KAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,MAIVI,GAAI,CACFA,GAAI,CACFL,WAAY,CACVC,GAAI,MAIV0B,GAAI,CACF5B,GAAI,CACFC,WAAY,CACVC,GAAI,MAIV+B,GAAI,CACFjC,GAAI,CACFC,WAAY,CACVC,GAAI,MAIVmC,GAAI,CACFrC,GAAI,CACFC,WAAY,CACVC,GAAI,MAIVoC,GAAI,CACFtC,GAAI,CACFC,WAAY,CACVC,GAAI,MAIVwC,GAAI,CACF1C,GAAI,CACFC,WAAY,CACVC,GAAI,MAIV0C,GAAI,CACF5C,GAAI,CACFC,WAAY,CACVC,GAAI,QAIV4C,GAAI,CACF9C,GAAI,CACFC,WAAY,CACVC,GAAI,MAIV+D,GAAI,CACFjE,GAAI,CACFC,WAAY,CACVC,GAAI,MAIVkE,GAAI,CACFpE,GAAI,CACFC,WAAY,CACVC,GAAI,KAGRC,GAAI,CACFF,WAAY,CACVC,GAAI,MAIV2E,GAAI,CACF7E,GAAI,CACFC,WAAY,CACVC,GAAI,QAIV6E,GAAI,CACF/E,GAAI,CACFC,WAAY,CACVC,GAAI,QAkyBZD,WA5xBe,CACf,EAAK,CACHiF,eAAgB,SAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,EAAK,CACHL,eAAgB,SAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,EAAK,CACHL,eAAgB,SAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,EAAK,CACHL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,UAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,UAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,gBAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,eAChBC,eAAe,EACfC,SAAU,QACVE,qBAAsB,IACtBD,uBAAwB,IACxBE,uBAAwB,GAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,GAE1B,GAAM,CACJL,eAAgB,gBAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,GAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,GAE1B,GAAM,CACJL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,KACxBC,cAAc,GAEhB,GAAM,CACJN,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,KAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,gBAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,UAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,UAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,SAEZ,GAAM,CACJF,eAAgB,gBAChBC,eAAe,EACfC,SAAU,QAEZ,GAAM,CACJF,eAAgB,MAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,qBAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,IACtBC,uBAAwB,GAE1B,GAAM,CACJL,eAAgB,qBAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,IACtBC,uBAAwB,GAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,GAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,KAExB,GAAM,CACJJ,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,qBAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,IACtBC,uBAAwB,EACxBC,cAAc,GAEhB,GAAM,CACJN,eAAgB,MAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,IACtBC,uBAAwB,GAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,gBAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,KAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,KAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,KAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,gBAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,KAChBC,eAAe,EACfC,SAAU,QACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,MAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,GAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,KAExB,GAAM,CACJJ,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,KAExB,GAAM,CACJJ,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,GAAM,CACJL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,KAExB,IAAO,CACLJ,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,SAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,KACxBC,qBAAsB,KACtBC,uBAAwB,MAE1B,IAAO,CACLL,eAAgB,IAChBC,eAAe,EACfC,SAAU,OACVC,uBAAwB,IACxBC,qBAAsB,IACtBC,uBAAwB,QAe5B,GAAoB,kBAATE,KAAmB,CAG5B,IAAK,8HAAYC,eAFG,0BAEc,8HAAYA,cAC5C,MAAM,IAAI9F,MAAM,2GAGlB,IAAI,EAAM,IAAIA,MAAM,8DAEpB,MADA,IAAO+F,MAAM,GACP,EAGR,IC3rDYC,ED60DRC,EAAe,SAAsBC,EAAOC,EAAUC,EAAQC,GAChE,IAAIC,EA/IkB,SAA2BD,EAAOD,GACxD,IAAIG,EAAIC,EAAIC,EAAIC,EAEZC,EAAyB,OAAXP,QAA8B,IAAXA,OAAoB,EAASA,EAAOvH,oBAAoB+H,MAAM,KAC/FC,EAAYF,EAAY,GACxBG,EAAWH,EAAY,GACvBI,EAAqN,QAA5ML,EAAwJ,QAAlJD,EAA+F,QAAzFD,EAAqC,QAA/BD,EAAK,EAAOtG,OAAOoG,UAA2B,IAAPE,OAAgB,EAASA,EAAGM,UAA+B,IAAPL,OAAgB,EAASA,EAAGM,UAA8B,IAAPL,OAAgB,EAASA,EAAGpG,kBAA+B,IAAPqG,OAAgB,EAASA,EAAGpG,GAC7P,OAAO,EAAOD,WAAW0G,GAwIAC,CAAkBX,EAAOD,GAClD,OAAIE,EAtIsB,SAA+BJ,EAAOE,EAAQE,GACxE,IAOIW,EAPA3B,EAAiBgB,EAAmBhB,eACpCC,EAAgBe,EAAmBf,cACnCC,EAAWc,EAAmBd,SAC9BG,EAAyBW,EAAmBX,uBAC5CF,EAAyBa,EAAmBb,uBAC5CC,EAAuBY,EAAmBZ,qBAG1CwB,EAAkB3B,EAAgB,IAAM,GAE5C,GAJmBe,EAAmBV,aAIpB,CAChB,IAAIuB,EAAcf,EAAOQ,MAAM,KAC/BR,EAAS,MAAQe,EAAY,GAG/B,IAAIC,EAAsB,CACxBC,MAAO,UACPC,sBAAkD,OAA3B3B,QAA8D,IAA3BA,EAAoCA,EAlDzE,EAmDrB4B,aAAa,GAGXrB,EAAQ,IAAM,IAChBkB,EAAoBE,sBAAwB,EAC5CF,EAAoBI,sBAAwB,GAG9C,IAAIC,EAAc,IAAI5B,KAAK6B,aAAatB,EAAQgB,GAEhD,GAAsD,SAAlDK,EAAYE,kBAAkBC,gBAA4B,CAC5D,IAAIC,EAAiBJ,EAAYK,OAAO5B,GAqBxC,QAnBIR,GAAwBD,KAC1BoC,EAAiBJ,EAAYM,cAAc7B,GAAO8B,KAAI,SAAUzB,GAC9D,IAAI0B,EAAO1B,EAAG0B,KACVC,EAAQ3B,EAAG2B,MAUf,OARIxC,GAlEK,UAkEmBuC,IAC1BC,EAAQxC,GAGND,GArEO,YAqEmBwC,IAC5BC,EAAQzC,GAGHyC,KACNC,QAAO,SAAU3J,EAAQ4J,GAC1B,MAAO,GAAK5J,EAAS4J,MAIjB5C,GACN,IAtFW,OAuFTyB,EAAiB,GAAK3B,EAAiB4B,EAAkBW,EACzD,MAEF,IAzFY,QA0FVZ,EAAiB,GAAKY,EAAiBX,EAAkB5B,EACzD,MAEF,QACE2B,EAAiB,GAAK3B,EAAiB4B,EAAkBW,OAGxD,CACL,IACIQ,EAD6B,IAAIxC,KAAK6B,aAAatB,EAAS,aAAcgB,GAAqBW,cAAc7B,GAClD8B,KAAI,SAAUI,GAC3E,MAlGc,aAkGVA,EAAKH,MAjGI,YAiGsBG,EAAKH,KAA8BG,EAAKF,MACpE,MACNI,KAAK,IAER,OAAQ9C,GACN,IA1GW,OA2GTyB,EAAiB,GAAK3B,EAAiB4B,EAAkBmB,EACzD,MAEF,IA7GY,QA8GVpB,EAAiB,GAAKoB,EAAgCnB,EAAkB5B,EACxE,MAEF,QACE2B,EAAiB,GAAK3B,EAAiB4B,EAAkBmB,GAK/D,OAAOpB,EAgDwBsB,CAAsBrC,EAAOE,EAAQE,GA7CpD,SAAqBJ,EAAOC,EAAUC,GACtD,IAAIgB,EAAsB,CACxBC,MAAO,WACPlB,SAAUA,GAGRD,EAAQ,IAAM,IAChBkB,EAAoBE,sBAAwB,EAC5CF,EAAoBI,sBAAwB,GAG9C,IAAIgB,EAAqB,IAAI3C,KAAK6B,aAAa,GAAKtB,EAAQgB,GAC5D,GAA6D,SAAzDoB,EAAmBb,kBAAkBC,gBAA4B,OAAOY,EAAmBV,OAAO5B,GACtG,IAAIuC,EAA6B,IAAI5C,KAAK6B,aAAatB,EAAS,aAAcgB,GAC9E,GAAwD,oBAA7CqB,EAA2BV,cAA8B,OAAOU,EAA2BX,OAAO5B,GAC7G,IACImC,EADuBI,EAA2BV,cAAc7B,GACX8B,KAAI,SAAUI,GACrE,MAzIgB,aAyIZA,EAAKH,MAxIM,YAwIoBG,EAAKH,KAA8BG,EAAKF,MACpE,MACNI,KAAK,IACJI,EAAkB,IAAI7C,KAAK6B,aAAatB,EAAQ,CAClDiB,MAAO,WACPlB,SAAUA,EACVmB,sBAAuB,EACvBE,sBAAuB,IACtBO,cAAc,GACbd,EAAiB,GAcrB,OAbAyB,EAAgBC,SAAQ,SAAUP,GACd,aAAdA,EAAKH,KACHG,EAAKF,MAAMU,SAAS,KACtB3B,GAAkBmB,EAAKF,MAAMW,UAAU,EAAGT,EAAKF,MAAM7I,OAAS,GAE9D4H,GAAkBmB,EAAKF,MAEF,YAAdE,EAAKH,KACdhB,GAAkBmB,EAAKF,MAEvBjB,GAAkBoB,KAGfpB,EAMA6B,CAAY5C,EAAOC,EAAUC,K,SCh1D1BJ,K,qDAAAA,E,2DAAAA,E,iDAAAA,E,yDAAAA,E,qEAAAA,E,uDAAAA,E,wDAAAA,E,8CAAAA,E,sDAAAA,E,oEAAAA,E,0FAAAA,E,mEAAAA,E,6DAAAA,E,2DAAAA,E,6CAAAA,E,mDAAAA,E,iEAAAA,E,+EAAAA,E,uEAAAA,E,uEAAAA,E,iEAAAA,E,mFAAAA,E,yDAAAA,E,2DAAAA,E,yFAAAA,E,mFAAAA,E,iFAAAA,E,yEAAAA,E,6DAAAA,E,6DAAAA,E,qFAAAA,E,mDAAAA,E,iDAAAA,E,2EAAAA,E,+EAAAA,E,iFAAAA,E,uDAAAA,E,2EAAAA,E,uDAAAA,E,mDAAAA,E,qDAAAA,E,uFAAAA,E,yFAAAA,E,mEAAAA,E,sGAAAA,E,2EAAAA,E,+EAAAA,E,wFAAAA,M,KCU6BvJ,OAAOC,OAAO,CACnDqM,UAAW,YACXC,KAAM,SAZH,IAoBKC,EALCC,EAA6BzM,OAAOC,OAAO,CACpDyM,SAAU,oBACVC,UAAW,wB,SAGHH,K,8BAAAA,E,8BAAAA,E,aAAAA,M,KAML,ICxBKI,ECsHNC,EAAiC,CACnCzJ,QAAS,KACT0J,QAAS,GACTC,IAAK,KACLC,gBAAiB,KACjBC,wBAAwB,EACxBC,mBAAoB,GACpBC,mBAAoB,EACpBC,4BAA6B,GAC7BC,0BAA0B,EAC1BC,wBAAyB,GACzBC,oBAAqB,GACrBC,sBAAsB,EACtBC,aAAc,GACdC,kBAAmB,GACnBC,aAAa,EACbC,mBAAoB,GACpBC,aAAc,GACdC,oBAAoB,EACpBC,WAAY,GACZC,sBAAsB,EACtBC,WAAY,IAoHVC,EAAoB,SAACC,GAAD,MAAgC,CACtD3C,KA9OiC,wBA+OjC2C,YAyHWC,EApDC,WAAgF,IAA/EC,EAA8E,uDAApDxB,EAAcyB,EAAsC,uCAC3F,OAAQA,EAAO9C,MACX,IAhUmB,cAiUf,OAAO,2BACA6C,GADP,IAEIjL,QAASD,EAAmBmL,EAAOH,QAAQ/K,SAC3C0J,QAASwB,EAAOH,QAAQrB,QAAQC,IAChCA,IAAKuB,EAAOH,QAAQpB,IACpBC,gBAAiBsB,EAAOH,QAAQI,MF7RC,qBE8RjCtB,uBACIqB,EAAOH,QAAQ/K,QFtTH,qBAYN,OE2SNkL,EAAOH,QAAQ/K,QFvTH,oBEuT8BoL,gBAEtD,IA1UyB,oBA2UrB,OAAO,2BAAIH,GAAX,IAAkBR,aAAcS,EAAOH,UAC3C,IA3UuB,kBA4UnB,OAAO,2BAAIE,GAAX,IAAkBnB,mBAAoBoB,EAAOH,QAAQpB,IAAKI,mBAAoBmB,EAAOH,QAAQM,UACjG,IA3UmC,8BA4U/B,OAAO,2BAAIJ,GAAX,IAAkBb,qBAAsBc,EAAOH,UACnD,IA9UuB,kBA+UnB,OAAO,2BACAE,GADP,IAEIjB,4BAA6BkB,EAAOH,QAAQf,4BAC5CC,yBAA0BiB,EAAOH,QAAQd,2BAEjD,IAjV2B,qBAkVvB,OAAO,2BACAgB,GADP,IAEIf,wBAAyBgB,EAAOH,QAAQb,wBACxCC,oBAAqBe,EAAOH,QAAQZ,sBAE5C,IAxV6B,wBAyVzB,OAAO,2BACAc,GADP,IAEIZ,aAAca,EAAOH,QAAQV,aAC7BC,kBAAmBY,EAAOH,QAAQT,oBAE1C,IA5VyB,oBA6VrB,OAAO,2BAAIW,GAAX,IAAkBV,YAAaW,EAAOH,QAAQO,kBAClD,IA7V8B,yBA8V1B,OAAO,2BAAIL,GAAX,IAAkBP,mBAAoBQ,EAAOH,UACjD,IA9VwB,mBA+VpB,OAAO,2BAAIE,GAAX,IAAkBN,WAAYO,EAAOH,UACzC,IA/V6B,wBAgWzB,OAAO,2BAAIE,GAAX,IAAkBL,qBAAsBM,EAAOH,UACnD,IAhWwB,mBAiWpB,OAAO,2BAAIE,GAAX,IAAkBJ,WAAYK,EAAOH,UACzC,QACI,OAAOE,I,eClWNM,EACK,eADLA,EAEK,gB,SFtBN/B,K,uBAAAA,M,KAIL,IGcMgC,EAAY,SAACT,GAAD,MAA4B,CACjD3C,KAR6B,oBAS7B2C,YAGSU,EAAoB,SAACC,GAAD,OAAkB,SAACC,EAAoBC,GAAwB,IAAD,IAC3F,EAGIA,IAFUnB,EADd,EACIoB,QAAUpB,aACUqB,EAFxB,EAEIC,QAAUC,SAERC,EAAQ,UAAGL,IAAWM,SAAS1C,EAAsB2C,kBAA7C,iBAAG,EAAsDC,oBAAzD,aAAG,EAAoEH,SAE/EI,EAAaP,EAAYtM,QAAUyM,EAAW,EAAI,EAClDD,EAAWF,EAAYQ,MAAMD,EAAYJ,GAAUM,OAAOb,GAAMc,QAAO,SAAA/L,GAAE,MAAkB,KAAdA,EAAGgM,UAChF1B,EAAU,CAACiB,YAEjBL,EAASH,EAAUT,IAEfiB,IAAa,IACbU,IAAQC,IAnCG,iBAmCa5B,EAAQiB,SAAU,CAACY,OAAQnC,MAG9CoC,EAAsB,kBAAM,SAAClB,EAAoBC,GAC1D,IAAOnB,EAAgBmB,IAAWC,QAA3BpB,aACDM,EAAO,eAAOtB,GACpBkC,EAASH,EAAUT,IACnB2B,IAAQI,OA1CO,iBA0Ca,CAACF,OAAQnC,MAanChB,EAAiC,CACnCuC,SAAU,IAWChB,EARoC,WAAmC,IAAlCC,EAAiC,uDAAzBxB,EAAcyB,EAAW,uCACjF,OAAQA,EAAO9C,MACX,IApDyB,oBAqDrB,OAAO,2BAAI6C,GAAUC,EAAOH,SAChC,QACI,OAAOE,IC9CN8B,EAAmB,SAAChC,GAAD,MAAgC,CAC5D3C,KAdmC,0BAenC2C,YAGSiC,EAAmB,SAACjC,GAAD,MAAgC,CAC5D3C,KAlBmC,0BAmBnC2C,YAGSkC,EAAY,SAACC,GAAD,OAAoB,SAACxB,GAAD,gBAAqBwB,EAArB,qBAAwCC,mBAAmBzB,MAE3F0B,EAAS,SAACF,EAAgBxB,GAAjB,OAAkC,WACpD,IAAM2B,EAAaJ,EAAUC,EAAVD,CAAkBvB,GACrC4B,OAAOC,SAASC,KAAOH,IAQdI,EAAa,kBAAM,SAAC9B,EAAeC,GAC5C,IAAO8B,EAAmB9B,IAAWwB,OAA9BM,gBACDC,EAAsB/B,IAAWM,SAASC,UAAUyB,aACpDC,GAAwBF,GAAsBA,EAAoBG,MACpEJ,EAAgBlO,QLT4B,GKSsBqO,GAClElC,EAASoB,GAAiB,IAC1BpB,EAASqB,GAAiB,MAE1BrB,EAASqB,GAAiB,IAC1BrB,EAASoB,GAAiB,OAIrBgB,EAAiB,kBAAM,SAACpC,GACjCA,EAASqB,GAAiB,IAC1BrB,EAASoB,GAAiB,MAGxBtD,EAAgC,CAClCiE,gBAAiB,GACjBM,kBAAkB,EAClBhB,kBAAkB,GAePhC,EAZC,WAAoD,IAAnDC,EAAkD,uDAAzBxB,EAAcyB,EAAW,uCAC/D,OAAQA,EAAO9C,MACX,IA9DwB,mBA+DpB,OAAO,2BAAI6C,GAAX,IAAkByC,gBAAiBxC,EAAOH,UAC9C,IA/D+B,0BAgE3B,OAAO,2BAAIE,GAAX,IAAkB+C,iBAAkB9C,EAAOH,UAC/C,IAhE+B,0BAiE3B,OAAO,2BAAIE,GAAX,IAAkB+B,iBAAkB9B,EAAOH,UAC/C,QACI,OAAOE,ICjENgD,EAAc,SAACC,GACxB,IAAMC,EAAaD,EAAOE,MAAK,SAAAC,GAAC,MN4Cf,UM5CmBA,EAAEC,SACtC,GAAIH,EAAY,cAAOA,QAAP,IAAOA,OAAP,EAAOA,EAAYL,OAG1BS,EAAkB,SAACC,GAC5B,IACIC,EAOAD,EAPAC,YACAC,EAMAF,EANAE,WACAC,EAKAH,EALAG,SACAC,EAIAJ,EAJAI,aACAC,EAGAL,EAHAK,gBACAC,EAEAN,EAFAM,sBACAC,EACAP,EADAO,iBAEEC,EACFP,IAA0B,OAAXA,QAAW,IAAXA,OAAA,EAAAA,EAAajP,QAAS,GAAmC,KAA9BiP,EAAY,GAAGC,WAAzD,UN8BkB,KM9BlB,OACsBD,EAAY,GAAGC,YAC/B,GACNO,EAAY,UAAMC,EAAI1R,GAAV,ON+BiB,wDM/BjB,OAA0DkR,GAA1D,ONiCD,QMhCTS,EAAO,UN+BkB,mBM/BlB,OAA4BT,GAA5B,ON0BS,KM1BT,OAAsDC,GAAtD,OAAiEK,GAAjE,ONgCE,QMrBf,MNayB,UMtBrBJ,EACAK,EAAY,UAAMC,EAAI1R,EAAV,YNyBQ,eMzBR,OAAkD2R,GACnC,MAApBN,IACHC,EAAsBtP,OAAS,EAC/ByP,EAAehB,EAAYa,IAA0BG,EAC9CF,EAAiBvP,OAAS,IACjCyP,EAAehB,EAAYc,IAAqBE,IAGjDA,GC3CEG,EAAY,SAACzF,GACtB,IAAKA,EAAK,OAAO,KACjB,IACI,GAAmB,oBAAR0F,IAAoB,OAAO,IAAIA,IAAI1F,GAAK2F,OAEnD,IAAMC,EAASC,SAASC,cAAc,KAEtC,OADAF,EAAO/B,KAAO7D,EACR,GAAN,OAAU4F,EAAOG,SAAjB,aAA8BH,EAAOI,UACvC,MAAOC,GACL,OAAO,OCPFC,EAAoB,SAACC,GAC9B,IAAMC,EAAa,CAAC,MAAO,MAAO,OAElC,OAAOD,EAAWtD,QAAO,SAAAwD,GAAC,OAAKD,EAAWE,SAASD,EAAEE,UCiB5CC,GAAS,SAACpF,GAAD,MAAoC,CACtD3C,KARmB,UASnB2C,YAiDEtB,GAAqC,CACvC2G,UAAW,EACXC,IAAK,GACLC,SAAS,GAYEtF,GATwC,WAAmC,IAAlCC,EAAiC,uDAAzBxB,GAAcyB,EAAW,uCACrF,OAAQA,EAAO9C,MACX,IAlEe,UAmEX,OAAO,2BAAI6C,GAAUC,EAAOH,SAChC,QACI,OAAOE,I,6BCpFNsF,GAAgB,SAACC,EAAcC,EAAcC,GACtD,IACMrI,EADK,IAAIsI,OAAOF,EAAOC,GACZE,KAAKJ,GACtB,OAAOnI,EAAQwI,SAASxI,EAAM,IAAM,MC+RpCyI,I,MAAc,CAChBC,OAAQ,CACNC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,QC9RKC,GAAa,iBAAwB,qBAAX/D,QAEhC,SAASgE,KACZ,OAAOD,KAAe/D,OAAS,KAG5B,IAAMiE,GAA2B,mBAAOF,MAAe/D,OAAOkE,WAAaV,GAAYC,OAAOI,IACxFM,GAA+B,mBAAOJ,MAAe/D,OAAOkE,YAAcV,GAAYC,OAAOI,IAE3FG,MCZR/T,GAA0B2R,EAA1B3R,KAAMN,GAAoBiS,EAApBjS,iBACbyU,KAAcC,SAASC,QAAUP,KAAepU,GAAL,2BAA4CM,IACvFmU,KAAcG,aAAahG,QAAQiG,KAC/B,SAAAC,GAEI,OADAC,GAAgCD,GACzBA,KAEX,SAAA7L,GAEI,OADA+L,IAAO/L,MAAMA,EAAO,uBACbgM,QAAQC,OAAOjM,MAI9BwL,KAAcG,aAAaO,SAASN,KAChC,SAAAM,GAGI,OAAOA,KAEX,SAAAlM,GAII,OADA+L,IAAO/L,MAAMA,EAAO,wBACbgM,QAAQC,OAAOjM,MAI9B,IAAMmM,GAA4BX,KAAcY,OAAO,IACvDD,GAA0BR,aAAaO,SAASN,KAC5C,SAAAM,GAGI,OAAOA,KAEX,SAAAlM,GAII,OADA+L,IAAO/L,MAAMA,EAAO,wBACbgM,QAAQC,OAAOjM,MAIvB,IC3CHqM,GD2CSP,GAAkC,SAACQ,GAAc,IAAD,EACnDC,EAAoB,UAAAD,EAAIxS,eAAJ,SAAa0S,OACjCnC,GAAciC,EAAIxS,QAAQ0S,OAAQ,cAAe,iBACjDC,EACFH,EAAIxS,QAAQ,2BACZ0R,KAAcC,SAAS3R,QAAQ4S,OAAO,yBAA2BJ,EAAIxS,QAAQ,0BAG7EwS,EAAIxS,QAAQ,8BACZ0R,KAAcC,SAAS3R,QAAQ4S,OAAO,4BAA8BJ,EAAIxS,QAAQ,6BAEpF0R,KAAcC,SAAS3R,QAAQ4S,OAAO,qBAAuBH,EACvDlC,GAAckC,EAAmB,kBAAmB,gCACpD,IC9CV,SAASI,GAAOC,EAAKC,GACnB,OAAO,SAAUC,GACf,OAAO,SAAUC,GACf,OAAO,WAKL,IAJA,IAAIvM,EAEAwM,EAAS,GAEJC,EAAK,EAAGA,EAAK5T,UAAUC,OAAQ2T,IACtCD,EAAOC,GAAM5T,UAAU4T,GAGzB,IAAIC,EAAY,GAUhB,OARIH,IAEAG,EADEL,EACU,IAAME,EAAezM,MAErB,IAAMyM,EAAezM,MAAQ,IAAMyM,EAAejM,UAAY,IAAMiM,EAAehM,UAI5F,GAAK6L,EAAIlB,QAAUwB,EAAY,IAAMN,EAAIzH,SAAW3E,EAAKoM,EAAIO,UAAUL,IAAWM,aAAazT,MAAM6G,EAAIwM,MAMxH,SAASK,GAAUT,GACjB,OAAO,SAAUE,GACf,OAAOT,GAAWO,EAAIO,UAAUL,GAAUQ,SAI9C,SAASC,GAAcX,GACrB,OAAO,SAAUE,GACf,OAAO,WAKL,IAJA,IAAItM,EAEAwM,EAAS,GAEJC,EAAK,EAAGA,EAAK5T,UAAUC,OAAQ2T,IACtCD,EAAOC,GAAM5T,UAAU4T,GAGzB,OAAQzM,EAAKoM,EAAIO,UAAUL,IAAWU,YAAY7T,MAAM6G,EAAIwM,KAKlE,SAASS,GAAgBb,GACvB,OAAO,SAAUE,GACf,OAAOF,EAAIO,UAAUL,GAAUW,iBAInC,SAASC,GAAYd,EAAKE,EAAUD,GAClC,MAAO,CACLpJ,IAAKkJ,GAAOC,EAAKC,EAAZF,CAAuBG,GAC5BQ,OAAQD,GAAUT,EAAVS,CAAeP,GACvBS,cAAeX,EAAIO,UAAUL,GAAUU,YAAcD,GAAcX,EAAdW,CAAmBT,GAAY,KACpFW,gBAAiBb,EAAIO,UAAUL,GAAUU,YAAcC,GAAgBb,EAAhBa,CAAqBX,GAAY,OArE5F,SAAWT,GACTA,EAAWA,EAAgB,IAAI,GAAK,MACpCA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAmB,OAAI,GAAK,SACvCA,EAAWA,EAAgB,IAAI,GAAK,MACpCA,EAAWA,EAAkB,MAAI,GAAK,QALxC,CAMGA,KAAeA,GAAa,KCX/B,IAAO9U,GAAyByR,EAAzBzR,EAeW,IAblB,mDACImU,QADJ,UACiBnU,IADjB,KAEI4N,QAAU,KAFd,KAGIgI,UAAY,CACRQ,cAAe,CACXF,gBAAgB,GAAD,OAAKzE,EAAItR,EAAT,2BACf8V,YAAa,SAACI,GAAD,gBAA0B5E,EAAItR,EAA9B,uBAAwEkW,IACrFR,aAAc,SAACQ,GAAD,yBAAmCA,IACjDN,OAAQjB,GAAWwB,UCR2C7E,EAAnE/R,EAAmE+R,EAAtC5R,ECA7B,IA4CQ0N,GAdC,WAAoF,IAAnFC,EAAkF,uDArB7D,KAqBkBC,EAA2C,uCACxF8I,EAAQ9I,EAAR8I,KAEP,OAAQ9I,EAAO9C,MACX,IAlCuB,kBAmCnB,OAAO,2BACA6C,GACA+I,GAEX,QACI,OAAO/I,IC7BbxB,GAA8B,CAACwK,UAAW,GAAI3K,UAAU,EAAO4K,aAAa,GAErEC,GAAU,SAACC,GAAD,MAAmC,CACtDhM,KAhBoB,WAiBpBgM,SAoBWpJ,GATC,WAA0E,IAAzEC,EAAwE,uDAAjDxB,GAAcyB,EAAmC,uCACrF,OAAQA,EAAO9C,MACX,IA9BgB,WA+BZ,OAAO,eAAI8C,EAAOkJ,MACtB,QACI,OAAOnJ,ICjCZhN,GAAuBiR,EAAvBjR,oBAgBDoW,GAAkB,IAdxB,mDACIzC,QADJ,UACiB3T,IADjB,KAEIoN,QAAU,KAFd,KAGIgI,UAAY,CACRiB,oBAAqB,CACjBX,gBAAiB,gBACjBD,YAAa,SAACa,EAAaC,EAAWC,EAAMC,EAAWC,EAASC,EAAM5N,GAAzD,4BACMwN,EADN,qBAC4BG,EAD5B,uBACkDD,EADlD,uBAC0ED,EAD1E,sBAC4FG,EAD5F,mCAC2HL,EAD3H,oBACkJvN,IAC/JsM,aAAc,iBAAM,IACpBE,OAAQjB,GAAWwB,U,2yMCTxB,IAAMO,GAAmB,yCAAG,WAC/BO,EACAN,EACAC,EACAE,EACAC,EACAC,EACA5N,GAP+B,4FAUrB8N,EDKuDlB,GAAYS,GCLpB,uBAC/CI,GAAO,IAAIM,MAAOC,UAXG,SAYJC,GAAMlB,IAAN,UAChBc,GADgB,OACIC,EAAuBrB,cAC1Cc,EACAC,EACAC,EACAC,EACAC,EACAC,EACA5N,KApBmB,cAYrBoL,EAZqB,yBAwBpBA,EAAS4B,MAxBW,sCA0B3B/B,IAAO/L,MAAP,MA1B2B,8DAAH,kE,2yMCIhC,IAAOjI,GAAuBiR,EAAvBjR,oBAWMwL,GAAuC,CAChDyL,WAAY,CACRV,UAAW,GACXE,UAAW,GACXC,QAAS,GACT3N,UAAW,IAEfmO,EAAG,GACHC,YAAa,KACbC,WAAW,EACXC,SAAU,EACVC,SAAU,MAgBDC,GAAe,SAACzK,GAAD,MAAgC,CACxD3C,KArCuB,cAsCvB2C,YAGS0K,GACT,SACIlB,EACAC,EACAE,EACAC,EACAC,EACA5N,GANJ,IAOI0O,EAPJ,wGASA,WAAO/J,EAAeC,GAAtB,0FAEc+B,EAAsB/B,IAAWM,SAASC,UAAUyB,gBAC5BD,GAAsBA,EAAoBG,OAHhF,wBAKYnC,EAAS6J,IAAa,IACtB7J,EAASqB,GAAiB,IAC1BrB,EAASoB,GAAiB,IAPtC,EASmCnB,IAAhB+J,EATnB,EASmBA,aATnB,UAU+BrB,GACfrW,GACAsW,EACAC,EACAE,EACAC,EACAC,EACA5N,GAjBhB,QAUkBgN,EAVlB,OAqBgBrI,EADA+J,EACS,CACLtN,KAxEc,yBAyEd2C,QAAS,CACLqH,SAAS,2BACFuD,GADC,IAEJJ,SAAUvB,EAAK5B,SAASmD,SACxBJ,EAAGnB,EAAK5B,SAAS+C,MAKpB,CACL/M,KAnFc,yBAoFd2C,QAASiJ,IAGjBrI,EAAS6J,IAAa,IArClC,wBAuCY7J,EAASqB,GAAiB,IAC1BrB,EAASoB,GAAiB,IAxCtC,0DA2CQkF,IAAO/L,MAAP,MACAyF,EAASoB,GAAiB,IAC1BpB,EAAS,CACLvD,KAhGsB,yBAiGtB2C,QAAStB,KAEbkC,EAAS6J,IAAa,IAjD9B,0DATA,yDAwGWxK,GA9BC,WAAmF,IAAD,QAAjFC,EAAiF,uDAAjDxB,GAAcyB,EAAmC,uCACvFH,EAAWG,EAAXH,QACP,OAAQG,EAAO9C,MACX,IAvHmB,cAwHf,OAAO,2BACA6C,GADP,IAEIoK,UAAWnK,EAAOH,UAE1B,IA3H8B,yBA4H1B,OAAO,2BACAE,GADP,IAEIkK,GAAU,OAAPpK,QAAO,IAAPA,GAAA,UAAAA,EAASqH,gBAAT,eAAmB+C,IAAK,GAC3BC,aAAoB,OAAPrK,QAAO,IAAPA,GAAA,UAAAA,EAASqH,gBAAT,eAAmBgD,cAAe,GAC/CE,UAAiB,OAAPvK,QAAO,IAAPA,GAAA,UAAAA,EAASqH,gBAAT,eAAmBkD,WAAY,EACzCC,UAAiB,OAAPxK,QAAO,IAAPA,GAAA,UAAAA,EAASqH,gBAAT,eAAmBmD,WAAY,KAEjD,IAjIyB,oBAkIrB,OAAO,2BACAtK,GADP,IAEIkK,EAAG,GACHC,YAAa,GACbE,SAAU,IAElB,IAzI4B,uBA0IxB,OAAO,2BAAIrK,GAAX,IAAkBiK,WAAYnK,IAClC,QACI,OAAOE,ICvINxB,GAAkC,CAC3CmM,oBAAqB,GACrBC,gBAAiB,GACjBC,eAAgB,GAChBC,oBAAqB,GACrBC,UAAW,MACXtM,QAAS,IAqBEsB,GAbC,WAAsF,IAArFC,EAAoF,uDAAzDxB,GAAcyB,EAA2C,uCACjG,OAAQA,EAAO9C,MACX,IAhCoB,eAiChB,OAAO,eAAI8C,EAAO+K,sBACtB,QACI,OAAOhL,ICCJD,GApBC,WAA2E,IAA1EC,EAAyE,uDAP9D,GAOmBC,EAA2C,uCACtF,OAAQA,EAAO9C,MACX,IAhB0B,qBAiBtB,OAAO8C,EAAOgL,cAClB,QACI,OAAOjL,ICXbxB,GAA8B,GA6BrBuB,GATC,WAAgF,IAA/EC,EAA8E,uDAAvDxB,GAAcyB,EAAyC,uCAC3F,OAAQA,EAAO9C,MACX,IA9BgB,WA+BZ,OAAO8C,EAAO8I,KAClB,QACI,OAAO/I,ICbNkL,GAAgB,SAACpL,GAAD,MAA4B,CACrD3C,KAhB0B,iBAiB1B2C,YA2BEtB,GAAoC,CACtC2M,kBAAkB,EAClBC,eAAe,GAYJrL,GATuC,WAAwD,IAAvDC,EAAsD,uDAAzBxB,GAAcyB,EAAW,uCACzG,OAAQA,EAAO9C,MACX,IAnDsB,iBAoDlB,OAAO,2BAAI6C,GAAUC,EAAOH,SAChC,QACI,OAAOE,I,SChBbxB,GAAkC,CACpC0C,UAAW,CACP2B,MAAO,KAiBA9C,GAbC,WAAiF,IAAhFC,EAA+E,uDAApDxB,GAAcyB,EAAsC,uCACrF9C,EAA2B8C,EAA3B9C,KAAMkO,EAAqBpL,EAArBoL,kBACb,OAAQlO,GACJ,IA/C0B,eAgDtB,OAAO,2BACA6C,GACAqL,GAEX,QACI,OAAOrL,IC3DZxN,GAAyByR,EAAzBzR,EAeD8Y,GAAe,IAbrB,mDACI3E,QADJ,UACiBnU,IADjB,KAEI4N,QAAU,KAFd,KAGIgI,UAAY,CACRmD,qBAAsB,CAClB7C,gBAAiB,uCACjBD,YAAa,iBAAM,IACnBJ,aAAc,iBAAM,IACpBE,OAAQjB,GAAWwB,U,2yMCPxB,IAAM0C,GAAgB,yCAAG,WAC5BC,EACAC,EACAC,GAH4B,0FAMlBC,EDOoDjD,GAAY2C,GCPnB,wBAN3B,SAODtB,KAAM,CACzBzB,OAAQqD,EAAwBrD,OAChC7J,IAAI,GAAD,OAAK+M,GAAL,OAAeE,KATE,cAOlBxE,EAPkB,yBAWjBA,EAAS4B,MAXQ,sCAaxB/B,IAAO/L,MAAP,MAbwB,8DAAH,0DCJhB4Q,GAAgB,SAACC,GAAD,gBAA6B7H,EAAI/R,EAA4B2B,QAAQ,MAAO,KAA5E,OAAkFiY,IAElGC,GAA2B,SAACD,EAAcvQ,EAAeyQ,GAClE,IAAMC,EAAYH,EAAKhQ,MAAM,KAAKoQ,MAC5BC,EAAQ,wBAAoB5Q,EAApB,YAA6ByQ,EAA7B,YAAwCC,GACtD,OAAOJ,GAAcM,IAGZC,GAAqB,SAACN,EAAcvQ,GAC7C,OACWsQ,GADPtQ,EACqB,kBAAD,OAAmBA,EAAnB,YAA4BuQ,GAE/B,iBAAD,OAAkBA,K,2yMCLnC,IAoDMO,GAAgB,SAACC,GAAD,OAAyB,SAAC5L,EAAeC,GAClE,IACsB4L,EAClB5L,IADA6L,gBAAkBD,cAEhBE,EAAoBH,EAEpBI,EAAQ,OAAGH,QAAH,IAAGA,OAAH,EAAGA,EAAepJ,MAAK,SAAAwJ,GAAC,OAAIA,EAAEC,cAAgBH,KACxDC,IACAhM,EAASmM,GAAcH,IACvBhM,EAASoM,GAAeJ,EAASK,yBAU5BF,GAAgB,SAAC/M,GAAD,MAAoC,CAC7D3C,KApE0B,iBAqE1B2C,YAGSgN,GAAiB,SAAChN,GAAD,MAA+B,CACzD3C,KAvE2B,kBAwE3B2C,YAGEkN,GAA8B,SAAClN,GAAD,MAA+B,CAC/D3C,KA7EoC,2BA8EpC2C,YAGSmN,GAAwB,SAACnN,GAAD,MAAgC,CACjE3C,KAvF+B,sBAwF/B2C,YA4BSoN,GAAuB,SAAC9P,GAAD,OAAoB,SAACsD,GACrDA,EANkE,CAClEvD,KAvG8B,qBAwG9B2C,QAIgC1C,MAGvB+P,GAAuB,kBAAM,SAACzM,GACvCA,EAASuM,IAAsB,MAQtBG,GAAwB,2DAAM,WAAO1M,EAAeC,GAAtB,4HAK/BA,IAL+B,IAG/BC,QAAU7L,EAHqB,EAGrBA,QAAS0J,EAHY,EAGZA,QAHY,IAI/B+N,gBAAkBa,EAJa,EAIbA,aAAc1B,EAJD,EAICA,wBAJD,SAMhBH,GAAiB/M,EAAS1J,EAAU4W,GANpB,OAM7B5C,EAN6B,OAQ/BuE,EAAevE,EAAKxH,QAAO,SAAAoL,GAAC,aAAKA,EAAEY,gBAA0C,KAAxB,UAAAZ,EAAEa,iBAAF,eAAajZ,WAEhEkZ,EAAa,SAACC,GAAD,OAAkB7B,GAAc,8BAAD,OAA+B6B,EAAKvN,cAApC,UAG9CmN,EADAD,EACeC,EAAapQ,KAAI,SAAAyQ,GAC5B,IAAMC,EAAa,eAAOD,GAM1B,MAL2B,KAAvBC,EAAcC,OACdD,EAAcC,K9BtFd,O8BuFAD,EAAchB,Y9BvFd,O8BwFAgB,EAAcb,oB9BvFG,M8ByFda,KAGIN,EAAa/L,QAAO,SAAAoL,GAAC,MAAe,KAAXA,EAAEkB,QAExCC,EAA0BR,EAAapQ,KAAI,SAAAyQ,GAAO,kCACjDA,GADiD,IAEpDI,QAASN,EAAWE,EAAQE,WAE1BG,EAAoBF,EAAwB5Q,KAAI,SAAAyP,GAAC,kCAASA,GAAT,IAAYC,YAAaD,EAAEC,YAAYqB,mBACxFlS,EAAYhH,E9B5IM,oB8B6IlBiH,EAAWjH,E9B5IM,mB8B6GY,EAmC/B4L,IADkBuN,EAlCa,EAkC/B1B,gBAAkB0B,mBAEhBC,GAAqB,OAACD,QAAD,IAACA,IAAsBnS,GAAWkS,eACvDN,EAAUK,EAAkB7K,MAAK,SAAAwJ,GAAC,OAAIA,EAAEC,cAAgBuB,OAE1DzN,EAASmM,GAAcc,IAGvBjN,EAASoM,GADTa,GAAWO,EACaP,EAAQZ,oBAER/Q,IAE5B0E,EAAS,CACLvD,KA9KsB,qBA+KtB2C,QAASkO,IAhDsB,kDAmDnCtN,EAAS,CACLvD,KAnLsB,qBAoLtB2C,QAAS,OAEbkH,IAAO/L,MAAP,MAvDmC,0DAAN,yDA8E/BuD,GAAyC,CAC3CyO,uBAAuB,EACvBV,cAAe,KACf6B,UAAU,EACVC,eAAe,EACfC,gBAAiB,KACjBC,iBAAkB,KAClBL,mBAAoB,KACpBb,cAAc,EACdmB,UAAU,EACVC,wBAAwB,EACxB9C,wBAAyB,wCA6Bd5L,GA1BC,WAA6D,IAA5DC,EAA2D,uDAAzBxB,GAAcyB,EAAW,uCACxE,OAAQA,EAAO9C,MACX,IA/N2B,sBAgOvB,OAAO,2BAAI6C,GAAX,IAAkBiN,sBAAuBhN,EAAOH,UACpD,IA7NsB,iBA8NlB,OAAO,2BAAIE,GAAX,IAAkBsO,gBAAiBrO,EAAOH,UAC9C,IA7NuB,kBA8NnB,OAAO,2BAAIE,GAAX,IAAkBuO,iBAAkBtO,EAAOH,UAC/C,IAnO0B,qBAoOtB,OAAO,2BAAIE,GAAX,IAAkBuM,cAAetM,EAAOH,QAAS0O,UAAU,IAC/D,IApO4B,uBAqOxB,OAAO,2BAAIxO,GAAX,IAAkBoO,SAAUnO,EAAOH,UACvC,IApOgC,2BAqO5B,OAAO,2BAAIE,GAAX,IAAkBkO,mBAAoBjO,EAAOH,UACjD,IA1OmB,cA2Of,OAAO,2BAAIE,GAAX,IAAkBqO,cAAepO,EAAOH,UAC5C,IAtOsB,iBAuOlB,OAAO,2BAAIE,GAAX,IAAkBqN,aAAcpN,EAAOH,UAC3C,IAtO0B,qBAuOtB,OAAO,2BAAIE,GAAX,IAAkByO,uBAAwBxO,EAAOH,UACrD,IAzOqC,gCA0OjC,OAAO,2BAAIE,GAAX,IAAkB2L,wBAAyB1L,EAAOH,UACtD,QACI,OAAOE,ICtNJD,GApBC,WAAmE,IAAlEC,EAAiE,uD/B6GlD,U+B7GYC,EAAsC,uCAC9E,OAAQA,EAAO9C,MACX,IAfoB,eAgBhB,OAAO8C,EAAOyO,SAClB,QACI,OAAO1O,ICPbxB,GAAe,IAVrB,mDACIwN,QhCyH2B,UgC1H/B,KAEI,kCAAkC,EAFtC,KAGI,mCAAmC,EAHvC,KAII2C,cAJJ,OAKIC,6BAA8B,EALlC,KAMIF,SAAW,UANf,KAOIG,4BAA6B,MCX1Bpc,GAA8CwR,EAA9CxR,EAA+BG,GAAeqR,EAAfrR,YA2BhCkc,GAAa,IAzBnB,mDACInI,QADJ,UACiBlU,IADjB,KAEI2N,QAAU,KAFd,KAGIgI,UAAY,CACR2G,kBAAmB,CACfrG,gBAAiB,eACjBD,YAAa,iCACbJ,aAAc,wCACdE,OAAQjB,GAAWwB,KAEvBkG,oBAAqB,CACjBtG,gBAAiB,qCACjBD,YAAa,SAACwG,EAAcC,GAAf,iCAA0DD,EAA1D,YAAkEC,IAC/E7G,aAAc,SAAC4G,EAAcC,GAAf,+BAAwDD,EAAxD,4BAAgFC,IAC9F3G,OAAQjB,GAAWwB,KAEvBqG,WAAY,CACRzG,gBAAgB,GAAD,OAAK9V,GAAL,oCACf6V,YAAa,iBAAM,IACnBJ,aAAc,SAAC4G,EAAcC,GAAf,6BAAsDD,EAAtD,YAA8DC,IAC5E3G,OAAQjB,GAAWwB,UAMhB,YAACf,GAAD,OAAiDY,GAAYmG,GAAY/G,ICzBd9D,EAAnE/R,EAAmE+R,EAAtC5R,ECsB7B,SAAS+c,GAAkBC,EAAO5H,GACrC,IAAI6H,EAAUD,EACd,GAAI5H,EAAQ,CACR,IAAM8H,EAAc9H,EAAO3L,MAAM,UAAU,GACrC0T,EAAS,GACTC,EAAoB,GAC1B9d,OAAOsC,OAAOwb,EAAcJ,GAI5B,IAHA,IAAMK,EAAY,OAAGH,QAAH,IAAGA,OAAH,EAAGA,EAAaI,MAAM,SAClCC,EAAM,IAAIC,MAAMJ,EAAalb,QAE1BH,EAAI,EAAGA,GAAC,OAAGsb,QAAH,IAAGA,OAAH,EAAGA,EAAcnb,QAAQH,GAAK,EAC3C,IAAK,IAAI0b,EAAI,EAAGA,EAAIL,EAAalb,OAAQub,GAAK,EAAG,CAAC,IAAD,IACvCC,EAAQN,EAAaK,GAAGE,MAAhB,UAAuBP,EAAaK,GAAGG,eAAvC,aAAuB,EAAyBD,KAC1DD,GACAH,EAAIG,GAASN,EAAaK,GAC1BL,EAAaS,OAAOJ,EAAG,KAEvB,UAAAL,EAAaK,GAAGG,eAAhB,eAAyBE,WAAYT,EAAatb,IAClDqb,EAAaK,GAAGK,UAAYT,EAAatb,KAEzCob,EAAOA,EAAOjb,QAAUkb,EAAaK,GACrCL,EAAaS,OAAOJ,EAAG,IAKnC,IAAMM,EAAe,GAAG9O,OAAOkO,EAAOlO,OAAOmO,IAC7CH,EAAUO,MAAMQ,KAAKT,GAAK,SAACU,EAAGlc,GAAJ,OAAWA,KAAKwb,EAAMU,EAAIF,EAAaG,WAAUhP,QAAO,SAAAgC,GAAI,OAAIA,KAG9F,OAAO+L,EAiBJ,I,SCzEMkB,GAAb,mDACWhb,GAAK,GADhB,KAEWib,MAAQ,GAFnB,KAGWC,OAAS,GAHpB,KAIWC,SAAW,GAJtB,KAKWpV,MAAQ,GALnB,KAMWQ,UAAY,GANvB,KAOWC,SAAW,GAPtB,KAQWqT,MAAe,CAAC,IAAIuB,IAR/B,KASWC,OAAwB,IAAIC,MAE1BA,GAAb,mDACIC,SAAW,GADf,KAEIL,OAAS,MAEAE,GAAb,mDACWH,MAAQ,GADnB,KAEWtT,KAAO,GAFlB,KAGWkS,MAAkB,CAAC,IAAI2B,IAHlC,KAIWC,SAA2B,KAJtC,KAKWC,iBALX,KAOaF,GAAb,mDACWP,MAAuB,GADlC,KAEWtT,KAAsB,GAFjC,KAGWkS,MAAoB,CAAC,IAAI8B,IAHpC,KAIWD,iBAJX,KAMaC,GAAb,mDACW9B,MAAgB,CAAC,IAAInR,IADhC,KAEWkT,MAAkB,GAF7B,KAGWX,MAAuB,GAHlC,KAIWtT,KAAO,GAJlB,KAKWkU,WAAa,GALxB,KAMWC,WAAa,GANxB,KAOWJ,iBAPX,KASahT,GAAb,mDACWwS,OAAS,GADpB,KAEWD,MAAQ,GAFnB,KAGWW,MAAkB,GAH7B,KAIWjU,KAAO,GAJlB,KAKWkU,WAAa,GALxB,KAMWC,WAAa,GANxB,KAOWJ,iBAPX,OAQWpF,KAAQ,M,yzMCzCZ,IAAMkD,GAAmB,yCAAG,WAC/BvD,EACA1W,EACAma,GAH+B,4FAMd,OACana,EAAnB0S,OAAW8J,EAPS,aAODxc,EAPC,IAQrByc,EAAgBC,GAAa,uBARR,SASJzH,KAAM,CACzBzB,OAAQiJ,EAAcjJ,OACtB7J,IAAI,GAAD,OAAK+M,GAAL,OAAe+F,EAAchJ,cALvB,OAK2C0G,IACpDna,QAASwc,IAZc,cASrBpK,EATqB,yBAepBA,EAAS4B,MAfW,wCAiB3B/B,IAAO/L,MAAP,MAjB2B,+DAAH,0D,2yMCGzB,IA0CMuD,GAAsC,CAC/CkT,cAAe,GACfC,WAAY,GACZC,WAAW,EACXC,kBAAkB,EAClBC,2BAA2B,EAC3BhL,OAAQ,CACJ1G,QtCgGqC,SsC/FrCuN,QAAS,KAsBJoE,GAA0B,SAACF,GAAD,OAA+B,SAAAnR,GAAQ,OAC1EA,EAAS,CACLvD,KAxE+B,0BAyE/B2C,QAAS+R,MAGXG,GAAW,yCAAG,WAAOvT,EAAiB1J,EAAS2L,EAAUwO,GAA3C,iGAEWF,GAAoBvQ,EAAS1J,EAASma,GAFjD,OAEN/H,EAFM,OAGZzG,EAAS,CAACvD,KAjFoB,yBAiFU2C,QAASqH,IAHrC,gDAKZH,IAAO/L,MAAP,MACAyF,EAAS,CAACvD,KApFoB,yBAoFU2C,QAAS,IAAI0Q,KANzC,yDAAH,4DAUJyB,GAA2B,SAAC/C,GAAD,gDAAwB,WAAOxO,EAAUC,GAAjB,uFAIxDA,IAJwD,IAExDC,QAAU7L,EAF8C,EAE9CA,QAAS0J,EAFqC,EAErCA,QACJkT,EAHyC,EAGxDO,aAAeP,WAEbQ,EAAOjD,EAAW/O,eACUwR,EAAWQ,GANe,wDAS5DzR,EAAS,CAACvD,KAhGwB,yBAgGM2C,SAAS,IATW,SAUtDkS,GAAYvT,EAAS1J,EAAS2L,EAAUyR,GAVc,2CAAxB,yDAalCC,GAAY,SAACC,EAAgCC,GAC/C,IAAMC,EAAyBD,EAAQ7B,MAAMtQ,cACvCwR,EAAU,2BAAOU,EAAQV,YAAf,mBAA4BY,EAAiBD,IACvDE,EAA6BH,EAAQV,WAAWY,GAAkB,GAAK,CAACA,GACxEb,EAA0BW,EAAQX,cAAcpQ,OAAOkR,GAE7D,OAAO,2BACAH,GADP,IAEIV,aACAD,gBACAE,WAAW,KAwCJ7R,GApCC,WAQa,IAPzBC,EAOwB,uDAPOxB,GAC/ByB,EAMwB,uCACxB,OAAQA,EAAO9C,MACX,IA5H8B,yBA6H1B,OAAO,2BAAI6C,GAAX,IAAkB4R,UAAW3R,EAAOH,UAExC,IAhI8B,yBAiI1B,OAAOsS,GAAUpS,EAAOC,EAAOH,SAEnC,IAjI+B,0BAkI3B,OAAO,2BACAE,GADP,IAEI6R,iBAAkB5R,EAAOH,UAEjC,IApIwC,mCAqIpC,OAAO,2BACAE,GADP,IAEI8R,0BAA2B7R,EAAOH,UAE1C,IA1IoC,+BA2IhC,OAAO,2BACAE,GADP,IAEI8G,OAAQ7G,EAAOH,UAEvB,QACI,OAAOE,ICnJZ,IA4CMxB,GAAoC,CAC7CiU,iBAAkB,GAClBC,QAAQ,EACRC,uBAAwB,EACxBtD,MAAO,GACPuD,gBAAgB,EAChB9L,OAAQ,CACJ1G,QvC6FmC,SuC5FnCuN,QAAS,KAUJkF,GAAoB,SAACD,GAAD,OAA6B,SAAAlS,GAAQ,OAClEA,EAAS,CACLvD,KA9D6B,wBA+D7B2C,QAAS8S,MAGJE,GAAqB,SAACH,EAA+BF,GAAhC,OAA6D,SAAA/R,GAAQ,OACnGA,EAAS,CACLvD,KAtEoC,+BAuEpC2C,QAAS,CACL2S,iBAAkBA,EAAiBtS,cACnCwS,wBACAD,OAAQC,GAAyB,OAkCvCI,GAAoB,SAAArS,GACtBA,EAASoS,IAAoB,EAAG,KAChCpS,EAASqR,IAAwB,IACjCrR,EAASmS,IAAkB,KAmDhB9S,GA9BC,WAGW,IAFvBC,EAEsB,uDAFOxB,GAC7ByB,EACsB,uCACtB,OAAQA,EAAO9C,MACX,IAzIoC,+BA0IhC,OAAO,2BACA6C,GACAC,EAAOH,SAElB,IA7I4B,uBA8IxB,OAAO,2BACAE,GADP,IAEIqP,MAAOpP,EAAOH,UAEtB,IAjJ6B,wBAkJzB,OAAO,2BACAE,GADP,IAEI4S,eAAgB3S,EAAOH,UAE/B,IArJkC,6BAsJ9B,OAAO,2BACAE,GADP,IAEI8G,OAAQ7G,EAAOH,UAEvB,QACI,OAAOE,IC5JNxB,GAA2C,GAoBzCuB,GAVC,WAAmG,IAAlGC,EAAiG,uDAA7DxB,GAAcyB,EAA+C,uCAC9G,OAAQA,EAAO9C,MACX,IAvBkB,aAwBd,OAAO,2BAAI6C,GAAUC,EAAOH,SAEhC,QACI,OAAOE,IChBNxB,GAAsC,GAkBpCuB,GAVC,WAAyF,IAAxFC,EAAuF,uDAAxDxB,GAAcyB,EAA0C,uCACpG,OAAQA,EAAO9C,MACX,IArBkB,aAsBd,OAAO,2BAAI6C,GAAUC,EAAOH,SAEhC,QACI,OAAOE,ICnBbxB,GAAe,IAJrB,mDACIwU,uBAAwB,MCyBrBjhB,GAAekS,EAAflS,YAEMkhB,GAAcC,0BAAgB,CACvC/J,KAAMgK,GACNrS,QAASsS,EACTxS,QAASyS,EACTlR,OAAQmR,EACRC,YAAaC,GACbC,UAAWC,GACX3K,KAAM4K,GACN1I,cAAe2I,GACflJ,aAAcmJ,GACdC,WAAYC,GACZ9S,SAAU+S,GACVxH,gBAAiByH,GACjBC,KAAMC,GACNzF,SAAU0F,GACVC,SXR2B,WAAkF,IAAjFrU,EAAgF,uDAAzDxB,GAAcyB,EAA2C,uCAC5G,OAAQA,EAAO9C,MACX,IArCoB,eAuChB,OAAO,2BACA6C,GACAC,EAAO7C,OAElB,QACI,OAAO4C,IWAfsU,WAAYC,GACZrC,aAAcsC,GACdC,kBAAmBC,GACnBC,aAAcC,GACdC,oBD5BsC,WAGN,IAFhC7U,EAE+B,uDAFOxB,GACtCyB,EAC+B,uCAC/B,OAAQA,EAAO9C,MACX,IA3BgC,2BA4B5B,OAAO,2BACA6C,GACAC,EAAO7C,OAElB,QACI,OAAO4C,MEXbW,GAAW,WAEb,IAAOmU,EAAYzS,OAAe0S,kBAAkBC,OAA7CF,QAIP,cADQzS,OAAe0S,kBAAkBC,OAAOF,QACzCA,G,gICPX,SAASG,KACP,IAAK,IAAI9gB,EAAI,EAAGC,EAAI,EAAGwD,EAAKtD,UAAUC,OAAQH,EAAIwD,EAAIxD,IACpDD,GAAKG,UAAUF,GAAGG,OAGf,IAAI2gB,EAAIrF,MAAM1b,GAAIghB,EAAI,EAA3B,IAA8B/gB,EAAI,EAAGA,EAAIwD,EAAIxD,IAC3C,IAAK,IAAIghB,EAAI9gB,UAAUF,GAAI0b,EAAI,EAAGuF,EAAKD,EAAE7gB,OAAQub,EAAIuF,EAAIvF,IAAKqF,IAC5DD,EAAEC,GAAKC,EAAEtF,GAIb,OAAOoF,EAGT,SAASI,KAcP,OAbAA,GAAW3jB,OAAOsC,OAAStC,OAAOsC,OAAOshB,OAAS,SAAU7E,GAC1D,IAAK,IAAItc,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAIohB,EAASlhB,UAAUF,GAEvB,IAAK,IAAIqhB,KAAOD,EACV7jB,OAAO8C,UAAUC,eAAeC,KAAK6gB,EAAQC,KAC/C/E,EAAO+E,GAAOD,EAAOC,IAK3B,OAAO/E,IAEO9b,MAAMC,KAAMP,WAG9B,IAAIohB,GAA4B,oBAAXC,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUC,GAC5F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAyB,oBAAXF,QAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOlhB,UAAY,gBAAkBohB,GAGvHE,GAAgF,YAAjD,qBAAX1T,OAAyB,YAAcqT,GAAQrT,UAAiG,YAAnD,qBAAbkC,SAA2B,YAAcmR,GAAQnR,YAAiD,IAAtBA,SAASyR,SAqB7L,SAASC,GAAkBvF,EAAQwF,GACjC,IAAK,IAAI9hB,EAAI,EAAGA,EAAI8hB,EAAM3hB,OAAQH,IAAK,CACrC,IAAI+hB,EAAaD,EAAM9hB,GACvB+hB,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjD3kB,OAAO4kB,eAAe7F,EAAQyF,EAAWV,IAAKU,IAIlD,SAASK,GAAaC,EAAaC,EAAYC,GAM7C,OALID,GAAYT,GAAkBQ,EAAYhiB,UAAWiiB,GACrDC,GAAaV,GAAkBQ,EAAaE,GAChDhlB,OAAO4kB,eAAeE,EAAa,YAAa,CAC9CH,UAAU,IAELG,EAGT,SAASG,GAAgBC,EAAGriB,GAK1B,OAJAoiB,GAAkBjlB,OAAOmlB,eAAiBnlB,OAAOmlB,eAAevB,OAAS,SAAyBsB,EAAGriB,GAEnG,OADAqiB,EAAEE,UAAYviB,EACPqiB,IAEcA,EAAGriB,GAG5B,SAASwiB,GAAeC,EAAUC,GAChCD,EAASxiB,UAAY9C,OAAO0V,OAAO6P,EAAWziB,WAC9CwiB,EAASxiB,UAAUqhB,YAAcmB,EAEjCL,GAAgBK,EAAUC,GAG5B,SAASC,GAAuBC,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,EAkBT,IAAIE,GAA0B,GAAGxB,YAEjC,SAASyB,GAAWhb,GAClB,GAAa,MAATA,GAAkC,kBAAVA,EAAoB,OAAOA,EACvD,GAAIsT,MAAM2H,QAAQjb,GAAQ,OAAOA,EAAMW,IAAIqa,IAC3C,GAAIhb,EAAMuZ,cAAgBwB,GAAyB,OAAO/a,EAC1D,IAAIkb,EAAW,GAEf,IAAK,IAAIjS,KAAQjJ,EACfkb,EAASjS,GAAQ+R,GAAWhb,EAAMiJ,IAGpC,OAAOiS,EAOT,SAASC,GAAWlS,EAAMmS,EAAMC,QACjB,IAATpS,IACFA,EAAO,WAGT,IAAIqS,EAAMD,EAAQC,IACdC,EAAWP,GAAWI,GACtBI,EAAOF,EAAIG,QAAQC,aAAazS,EAAMsS,EAAUF,GACpD,OAAIG,IAEAvS,EAAK,GAIF,MAGT,IAAIhI,GAAO,SAAcJ,EAAO/G,GAG9B,IAFA,IAAI6hB,EAAS,GAEJ9jB,EAAI,EAAGA,EAAIgJ,EAAM7I,QAEP,eAAb6I,EAAMhJ,GAFsBA,IAG5B8jB,IAAQA,GAAU7hB,GACtB6hB,GAAU9a,EAAMhJ,GAGlB,OAAO8jB,GAYLC,GAAa,SAAoB/a,EAAOgb,GAK1C,QAJwB,IAApBA,IACFA,GAAkB,IAGfvI,MAAM2H,QAAQpa,GAAQ,OAAOA,EAClC,IAAIib,EAAW,GAEf,GAAIxI,MAAM2H,QAAQpa,EAAM,IACtB,IAAK,IAAIhJ,EAAI,EAAGA,EAAIgJ,EAAM7I,QACP,eAAb6I,EAAMhJ,GADsBA,IAE5BikB,IAAUA,GAAY,MAC1BA,GAAY7a,GAAKJ,EAAMhJ,GAAI,UAExBikB,EAAW7a,GAAKJ,EAAO,MAO9B,OAJKgb,GAA+C,eAA5Bhb,EAAMA,EAAM7I,OAAS,KAC3C8jB,GAAY,eAGPA,GAGT,SAASC,GAAqBV,GAC5B,OAAIA,IAA8B,IAAnBA,EAAQ5a,OACd,CACLub,UAAW,GACXC,MAAO,IAIJ,CACLD,UAAW,KACXC,MAAO,KASX,SAASC,GAAUC,EAAKC,GAGtB,IAFA,IAAIT,EAAS,GAEJnI,EAAQ,EAAGA,EAAQ4I,EAAQ5I,IAClCmI,GAAU,KAGZ,OAAOA,EAASQ,EAOlB,SAASE,GAAMC,EAAUtc,EAAOqb,QACd,IAAZA,IACFA,EAAU,IAGZ,IAAIM,EAAS,GACb,IAAK3b,EAAO,OAAO2b,EACnB,IACIY,EADWlB,EACgBe,OAC3BA,OAA6B,IAApBG,EAA6B,EAAIA,EAC1CC,EAAYxc,EAAMwc,WAEC,IAAnBnB,EAAQ5a,SACV2b,GAAUK,KAGZ,IAAIC,EAAwBX,GAAqBV,GAC7CW,EAAYU,EAAsBV,UAClCC,EAAQS,EAAsBT,MAIlC,GAFIK,GAAUF,IAEVI,EAEF,GAAIlJ,MAAM2H,QAAQuB,GAChB,IAAK,IAAIhJ,EAAQ,EAAGA,EAAQgJ,EAAUxkB,OAAQwb,IAAS,CACrD,IAAImJ,EAAWH,EAAUhJ,GAEzB,IAAK,IAAIoJ,KAAQD,EAAU,CACzB,IAAI9b,EAAQ8b,EAASC,GAER,MAAT/b,IACE8a,IAAQA,GAAUK,GACtBL,GAAUO,GAAUU,EAAO,IAAMX,EAAQL,GAAW/a,GAAS,IAAKub,UAMxE,IAAK,IAAIS,KAASL,EAAW,CAC3B,IAAIM,EAASN,EAAUK,GAET,MAAVC,IACEnB,IAAQA,GAAUK,GACtBL,GAAUO,GAAUW,EAAQ,IAAMZ,EAAQL,GAAWkB,GAAU,IAAKV,IAM5E,IAAK,IAAIW,KAAU/c,EAAO,CACxB,IAAIgd,EAAUhd,EAAM+c,GAEL,MAAXC,GAA8B,cAAXD,IACjBpB,IAAQA,GAAUK,GACtBL,GAAUO,GAAUa,EAAS,IAAMd,EAAQL,GAAWoB,GAAW,IAAKZ,IAK1E,OAAKT,GAAWN,EAAQ4B,aAEnBX,GAEDX,IAAQA,EAAS,GAAKK,EAAYL,EAASK,GACxCE,GAAU,GAAKI,EAAWL,EAAQ,IAAMN,IAF/CS,GAEiEF,GAAU,IAAKE,IALrCT,EAQ7C,IAAI,GAAc,+BACduB,GAA8B,qBAARC,KAAuBA,IAAIC,OAEjD,GAAS,SAAgBjB,GAC3B,OAAOe,GAAeA,GAAaf,GAAOA,EAAI7kB,QAAQ,GAAa,SAGjE+lB,GAA6B,WAC/B,SAASA,EAAcnE,EAAKlZ,EAAOqb,GACjC/iB,KAAKsI,KAAO,QACZtI,KAAKglB,aAAc,EACnB,IAAIC,EAAQlC,EAAQkC,MAChBC,EAAWnC,EAAQmC,SACvBllB,KAAK4gB,IAAMA,EACX5gB,KAAK+iB,QAAUA,EACf/iB,KAAK0H,MAAQA,EACTud,EAAOjlB,KAAKmlB,SAAWF,EAAME,SAAkBD,IAAUllB,KAAKmlB,SAAW,IAAID,GA2CnF,OApCaH,EAAcnlB,UAEpB0kB,KAAO,SAAc3T,EAAMpI,EAAOwa,GAEvC,QAAclQ,IAAVtK,EAAqB,OAAOvI,KAAK0H,MAAMiJ,GAE3C,IAAIyU,IAAQrC,GAAUA,EAAQqC,MAC9B,IAAKA,GAASplB,KAAK0H,MAAMiJ,KAAUpI,EAAO,OAAOvI,KACjD,IAAIqlB,EAAW9c,EAEVwa,IAA+B,IAApBA,EAAQ9lB,UACtBooB,EAAWrlB,KAAK+iB,QAAQC,IAAIG,QAAQmC,cAAc/c,EAAOoI,EAAM3Q,OAGjE,IAAIulB,EAAsB,MAAZF,IAAiC,IAAbA,EAC9BG,EAAa7U,KAAQ3Q,KAAK0H,MAE9B,GAAI6d,IAAYC,IAAcJ,EAAO,OAAOplB,KAE5C,IAAIgN,EAASuY,GAAWC,EAGxB,GAFIxY,SAAehN,KAAK0H,MAAMiJ,GAAW3Q,KAAK0H,MAAMiJ,GAAQ0U,EAExDrlB,KAAKylB,YAAczlB,KAAKmlB,SAE1B,OADInY,EAAQhN,KAAKmlB,SAASO,eAAe1lB,KAAKylB,WAAY9U,GAAW3Q,KAAKmlB,SAASQ,YAAY3lB,KAAKylB,WAAY9U,EAAM0U,GAC/GrlB,KAGT,IAAIilB,EAAQjlB,KAAK+iB,QAAQkC,MAMzB,OAJIA,GAASA,EAAMW,SAIZ5lB,MAGF+kB,EApDwB,GAuD7Bc,GAAyB,SAAUC,GAGrC,SAASD,EAAUjF,EAAKlZ,EAAOqb,GAC7B,IAAIgD,EAEJA,EAAQD,EAAehmB,KAAKE,KAAM4gB,EAAKlZ,EAAOqb,IAAY/iB,KAC1D,IAAIgkB,EAAWjB,EAAQiB,SACnBgC,EAASjD,EAAQiD,OACjBf,EAAQlC,EAAQkC,MAChBgB,EAAalD,EAAQkD,WASzB,OAPIjC,EACF+B,EAAMG,aAAelC,GACD,IAAXgC,IACTD,EAAMplB,GAAKslB,EAAW3D,GAAuBA,GAAuByD,IAASd,GAC7Ec,EAAMG,aAAe,IAAM,GAAOH,EAAMplB,KAGnColB,EAlBT5D,GAAe0D,EAAWC,GA2B1B,IAAIK,EAAUN,EAAUjmB,UAwExB,OAnEAumB,EAAQC,QAAU,SAAiBX,GACjC,IAAIN,EAAWnlB,KAAKmlB,SAEpB,GAAIA,EAAU,CACZ,IAAIkB,EAAOrmB,KAAKsmB,SAEhB,IAAK,IAAIhC,KAAQ+B,EACflB,EAASQ,YAAYF,EAAYnB,EAAM+B,EAAK/B,IAIhD,OAAOtkB,MASTmmB,EAAQG,OAAS,WACf,IAAID,EAAO,GAEX,IAAK,IAAI/B,KAAQtkB,KAAK0H,MAAO,CAC3B,IAAIa,EAAQvI,KAAK0H,MAAM4c,GACF,kBAAV/b,EAAoB8d,EAAK/B,GAAQ/b,EAAeyS,MAAM2H,QAAQpa,KAAQ8d,EAAK/B,GAAQhB,GAAW/a,IAG3G,OAAO8d,GAOTF,EAAQI,SAAW,SAAkBxD,GACnC,IAAIkC,EAAQjlB,KAAK+iB,QAAQkC,MAErBuB,IADOvB,GAAQA,EAAMlC,QAAQ0D,KACfhG,GAAS,GAAIsC,EAAS,CACtC4B,YAAY,IACT5B,EACL,OAAOgB,GAAM/jB,KAAKkmB,aAAclmB,KAAK0H,MAAO8e,IAG9C7E,GAAakE,EAAW,CAAC,CACvBjF,IAAK,WACL/T,IAAK,SAAamX,GAChB,GAAIA,IAAahkB,KAAKkmB,aAAtB,CACAlmB,KAAKkmB,aAAelC,EACpB,IAAImB,EAAWnlB,KAAKmlB,SAChBM,EAAazlB,KAAKylB,WACtB,GAAKA,GAAeN,EACHA,EAASuB,YAAYjB,EAAYzB,IAGhDmB,EAASwB,YAAYlB,EAAYzlB,QAOrCiU,IAAK,WACH,OAAOjU,KAAKkmB,iBAITL,EApGoB,CAqG3Bd,IAEE6B,GAAkB,CACpBxD,aAAc,SAAsBxC,EAAKlZ,EAAOqb,GAC9C,MAAe,MAAXnC,EAAI,IAAcmC,EAAQ8D,QAAkC,cAAxB9D,EAAQ8D,OAAOve,KAC9C,KAGF,IAAIud,GAAUjF,EAAKlZ,EAAOqb,KAGjC+D,GAAyB,CAC3BhD,OAAQ,EACRiD,UAAU,GAERC,GAAW,YAKXC,GAA+B,WACjC,SAASA,EAAgBrG,EAAKsG,EAAQnE,GACpC/iB,KAAKsI,KAAO,cACZtI,KAAKglB,aAAc,EACnBhlB,KAAK4gB,IAAMA,EACX,IAAIuG,EAAUvG,EAAI9F,MAAMkM,IASxB,IAAK,IAAIrW,KART3Q,KAAKc,GAAKqmB,EAAUA,EAAQ,GAAK,UAEjCnnB,KAAKqL,MAAQ0X,EAAQpS,MAAQ,IAAM3Q,KAAKc,GACxCd,KAAK+iB,QAAUA,EACf/iB,KAAKonB,MAAQ,IAAIC,GAAS5G,GAAS,GAAIsC,EAAS,CAC9C8D,OAAQ7mB,QAGOknB,EACflnB,KAAKonB,MAAME,IAAI3W,EAAMuW,EAAOvW,IAG9B3Q,KAAKonB,MAAMnqB,UAOb,IAAIsqB,EAASN,EAAgBrnB,UA0D7B,OAxDA2nB,EAAOC,QAAU,SAAiB7W,GAChC,OAAO3Q,KAAKonB,MAAMnT,IAAItD,IAOxB4W,EAAOE,QAAU,SAAiBvE,GAChC,OAAOljB,KAAKonB,MAAMK,QAAQvE,IAO5BqE,EAAOG,QAAU,SAAiB/W,EAAMjJ,EAAOqb,GAC7C,IAAIG,EAAOljB,KAAKonB,MAAME,IAAI3W,EAAMjJ,EAAOqb,GACvC,OAAKG,GACLljB,KAAK+iB,QAAQC,IAAIG,QAAQwE,cAAczE,GAChCA,GAFW,MASpBqE,EAAOZ,YAAc,SAAqBhW,EAAMjJ,EAAOqb,GACrD,IAAI6E,EAAU5nB,KAAKonB,MAAMpoB,QAAQ2R,EAAMjJ,EAAOqb,GAE9C,OADI6E,GAAS5nB,KAAK+iB,QAAQC,IAAIG,QAAQwE,cAAcC,GAC7CA,GAOTL,EAAOhB,SAAW,SAAkBxD,QAClB,IAAZA,IACFA,EAAU+D,IAGZ,IACIpD,EADwBD,GAAqBV,GACXW,UAKtC,GAHsB,MAAlBX,EAAQe,SAAgBf,EAAQe,OAASgD,GAAuBhD,QAC5C,MAApBf,EAAQgE,WAAkBhE,EAAQgE,SAAWD,GAAuBC,WAE/C,IAArBhE,EAAQgE,SACV,OAAO/mB,KAAKqL,MAAQ,MAGtB,IAAI0b,EAAW/mB,KAAKonB,MAAMb,SAASxD,GACnC,OAAOgE,EAAW/mB,KAAKqL,MAAQ,KAAOqY,EAAYqD,EAAWrD,EAAY,IAAM,IAG1EuD,EAnF0B,GAsF/BY,GAAY,sBACZC,GAAwB,CAC1B1E,aAAc,SAAsBxC,EAAKsG,EAAQnE,GAC/C,OAAO8E,GAAUE,KAAKnH,GAAO,IAAIqG,GAAgBrG,EAAKsG,EAAQnE,GAAW,OAGzEiF,GAA2B,CAC7BlE,OAAQ,EACRiD,UAAU,GAERkB,GAAa,wBAKbC,GAA6B,WAC/B,SAASA,EAActH,EAAKuH,EAAQpF,GAClC/iB,KAAKsI,KAAO,YACZtI,KAAKc,GAAK,aACVd,KAAKglB,aAAc,EACnB,IAAIoD,EAAYxH,EAAI9F,MAAMmN,IAEtBG,GAAaA,EAAU,GACzBpoB,KAAK2Q,KAAOyX,EAAU,GAEtBpoB,KAAK2Q,KAAO,SAId3Q,KAAK4gB,IAAM5gB,KAAKsI,KAAO,IAAMtI,KAAK2Q,KAClC3Q,KAAK+iB,QAAUA,EACf,IAAIiD,EAASjD,EAAQiD,OACjBf,EAAQlC,EAAQkC,MAChBgB,EAAalD,EAAQkD,WAMzB,IAAK,IAAItV,KALT3Q,KAAKW,IAAgB,IAAXqlB,EAAmBhmB,KAAK2Q,KAAO,GAAOsV,EAAWjmB,KAAMilB,IACjEjlB,KAAKonB,MAAQ,IAAIC,GAAS5G,GAAS,GAAIsC,EAAS,CAC9C8D,OAAQ7mB,QAGOmoB,EACfnoB,KAAKonB,MAAME,IAAI3W,EAAMwX,EAAOxX,GAAO8P,GAAS,GAAIsC,EAAS,CACvD8D,OAAQ7mB,QAIZA,KAAKonB,MAAMnqB,UA6Bb,OAtBairB,EAActoB,UAEpB2mB,SAAW,SAAkBxD,QAClB,IAAZA,IACFA,EAAUiF,IAGZ,IACItE,EADwBD,GAAqBV,GACXW,UAKtC,GAHsB,MAAlBX,EAAQe,SAAgBf,EAAQe,OAASkE,GAAyBlE,QAC9C,MAApBf,EAAQgE,WAAkBhE,EAAQgE,SAAWiB,GAAyBjB,WAEjD,IAArBhE,EAAQgE,SACV,OAAO/mB,KAAKc,GAAK,IAAMd,KAAKW,GAAK,MAGnC,IAAIomB,EAAW/mB,KAAKonB,MAAMb,SAASxD,GAEnC,OADIgE,IAAUA,EAAW,GAAKrD,EAAYqD,EAAWrD,GAC9C1jB,KAAKc,GAAK,IAAMd,KAAKW,GAAK,KAAOomB,EAAW,KAG9CmB,EA3DwB,GA8D7BG,GAAc,gBACdC,GAAY,cAEZC,GAAyB,SAAgCC,EAAKC,GAChE,MAAmB,kBAARD,EACFA,EAAIxpB,QAAQspB,IAAW,SAAUxN,EAAOnK,GAC7C,OAAIA,KAAQ8X,EACHA,EAAU9X,GAIZmK,KAIJ0N,GAOLE,GAAa,SAAoBhhB,EAAO4c,EAAMmE,GAChD,IAAIlgB,EAAQb,EAAM4c,GACdqE,EAAcJ,GAAuBhgB,EAAOkgB,GAE5CE,IAAgBpgB,IAClBb,EAAM4c,GAAQqE,IAIdC,GAAsB,CACxBxF,aAAc,SAAsBxC,EAAKuH,EAAQpF,GAC/C,MAAsB,kBAARnC,GAAoByH,GAAYN,KAAKnH,GAAO,IAAIsH,GAActH,EAAKuH,EAAQpF,GAAW,MAGtG8F,eAAgB,SAAwBnhB,EAAOwb,EAAM+B,GACnD,MAAkB,UAAd/B,EAAK5a,MAAqB2c,GAC1B,mBAAoBvd,GAAOghB,GAAWhhB,EAAO,iBAAkBud,EAAMwD,WACrE,cAAe/gB,GAAOghB,GAAWhhB,EAAO,YAAaud,EAAMwD,WACxD/gB,GAHqCA,GAK9C4d,cAAe,SAAuBkD,EAAKlE,EAAMpB,GAC/C,IAAI+B,EAAQ/B,EAAKH,QAAQkC,MAEzB,IAAKA,EACH,OAAOuD,EAGT,OAAQlE,GACN,IAAK,YAGL,IAAK,iBACH,OAAOiE,GAAuBC,EAAKvD,EAAMwD,WAE3C,QACE,OAAOD,KAKXM,GAA4B,SAAUhD,GAGxC,SAASgD,IACP,OAAOhD,EAAe/lB,MAAMC,KAAMP,YAAcO,KAiBlD,OApBAmiB,GAAe2G,EAAchD,GAMhBgD,EAAalpB,UAKnB2mB,SAAW,SAAkBxD,GAClC,IAAIkC,EAAQjlB,KAAK+iB,QAAQkC,MAErBuB,IADOvB,GAAQA,EAAMlC,QAAQ0D,KACfhG,GAAS,GAAIsC,EAAS,CACtC4B,YAAY,IACT5B,EACL,OAAOgB,GAAM/jB,KAAK4gB,IAAK5gB,KAAK0H,MAAO8e,IAG9BsC,EArBuB,CAsB9B/D,IAEEgE,GAAqB,CACvB3F,aAAc,SAAsBxC,EAAKlZ,EAAOqb,GAC9C,OAAIA,EAAQ8D,QAAkC,cAAxB9D,EAAQ8D,OAAOve,KAC5B,IAAIwgB,GAAalI,EAAKlZ,EAAOqb,GAG/B,OAIPiG,GAA4B,WAC9B,SAASA,EAAapI,EAAKlZ,EAAOqb,GAChC/iB,KAAKsI,KAAO,YACZtI,KAAKc,GAAK,aACVd,KAAKglB,aAAc,EACnBhlB,KAAK4gB,IAAMA,EACX5gB,KAAK0H,MAAQA,EACb1H,KAAK+iB,QAAUA,EA2BjB,OApBaiG,EAAappB,UAEnB2mB,SAAW,SAAkBxD,GAClC,IACIW,EADwBD,GAAqBV,GACXW,UAEtC,GAAI1I,MAAM2H,QAAQ3iB,KAAK0H,OAAQ,CAG7B,IAFA,IAAImc,EAAM,GAED3I,EAAQ,EAAGA,EAAQlb,KAAK0H,MAAMhI,OAAQwb,IAC7C2I,GAAOE,GAAM/jB,KAAKc,GAAId,KAAK0H,MAAMwT,IAC7Blb,KAAK0H,MAAMwT,EAAQ,KAAI2I,GAAOH,GAGpC,OAAOG,EAGT,OAAOE,GAAM/jB,KAAKc,GAAId,KAAK0H,MAAOqb,IAG7BiG,EAlCuB,GAqC5BC,GAAc,aACdC,GAAqB,CACvB9F,aAAc,SAAsBxC,EAAKlZ,EAAOqb,GAC9C,OAAOkG,GAAYlB,KAAKnH,GAAO,IAAIoI,GAAapI,EAAKlZ,EAAOqb,GAAW,OAIvEoG,GAA4B,WAC9B,SAASA,EAAavI,EAAKlZ,EAAOqb,GAChC/iB,KAAKsI,KAAO,WACZtI,KAAKc,GAAK,YACVd,KAAKglB,aAAc,EACnBhlB,KAAK4gB,IAAMA,EACX5gB,KAAK0H,MAAQA,EACb1H,KAAK+iB,QAAUA,EAajB,OANaoG,EAAavpB,UAEnB2mB,SAAW,SAAkBxD,GAClC,OAAOgB,GAAM/jB,KAAK4gB,IAAK5gB,KAAK0H,MAAOqb,IAG9BoG,EApBuB,GAuB5BC,GAAqB,CACvBhG,aAAc,SAAsBxC,EAAKlZ,EAAOqb,GAC9C,MAAe,cAARnC,GAA+B,kBAARA,EAA0B,IAAIuI,GAAavI,EAAKlZ,EAAOqb,GAAW,OAIhGsG,GAA0B,WAC5B,SAASA,EAAWzI,EAAKrY,EAAOwa,GAC9B/iB,KAAKsI,KAAO,SACZtI,KAAKglB,aAAc,EACnBhlB,KAAK4gB,IAAMA,EACX5gB,KAAKuI,MAAQA,EACbvI,KAAK+iB,QAAUA,EAyBjB,OAjBasG,EAAWzpB,UAEjB2mB,SAAW,SAAkBxD,GAClC,GAAI/H,MAAM2H,QAAQ3iB,KAAKuI,OAAQ,CAG7B,IAFA,IAAIsb,EAAM,GAED3I,EAAQ,EAAGA,EAAQlb,KAAKuI,MAAM7I,OAAQwb,IAC7C2I,GAAO7jB,KAAK4gB,IAAM,IAAM5gB,KAAKuI,MAAM2S,GAAS,IACxClb,KAAKuI,MAAM2S,EAAQ,KAAI2I,GAAO,MAGpC,OAAOA,EAGT,OAAO7jB,KAAK4gB,IAAM,IAAM5gB,KAAKuI,MAAQ,KAGhC8gB,EA/BqB,GAkC1BC,GAAU,CACZ,YAAY,EACZ,WAAW,EACX,cAAc,GAOZnG,GAAU,CAACyD,GAAiBkB,GAAuBc,GAAqBG,GAAoBG,GAAoBE,GAL7F,CACrBhG,aAAc,SAAsBxC,EAAKrY,EAAOwa,GAC9C,OAAOnC,KAAO0I,GAAU,IAAID,GAAWzI,EAAKrY,EAAOwa,GAAW,QAI9DwG,GAAuB,CACzBtsB,SAAS,GAEPusB,GAAqB,CACvBpE,OAAO,EACPnoB,SAAS,GAQPoqB,GAAwB,WAK1B,SAASA,EAAStE,GAChB/iB,KAAKqI,IAAM,GACXrI,KAAKypB,IAAM,GACXzpB,KAAKkb,MAAQ,GACblb,KAAK0pB,QAAU,EACf1pB,KAAK+iB,QAAUA,EACf/iB,KAAK2pB,QAAU5G,EAAQ4G,QACvB3pB,KAAKyoB,UAAY1F,EAAQ0F,UAS3B,IAAIlB,EAASF,EAASznB,UA8OtB,OA5OA2nB,EAAOD,IAAM,SAAa3W,EAAMmS,EAAM8G,GACpC,IAAIC,EAAgB7pB,KAAK+iB,QACrB8D,EAASgD,EAAchD,OACvB5B,EAAQ4E,EAAc5E,MACtBjC,EAAM6G,EAAc7G,IACpBkC,EAAW2E,EAAc3E,SACzBe,EAAa4D,EAAc5D,WAC3BD,EAAS6D,EAAc7D,OAEvBjD,EAAUtC,GAAS,CACrBkJ,QAAS3pB,KAAK2pB,QACd9C,OAAQA,EACR5B,MAAOA,EACPjC,IAAKA,EACLkC,SAAUA,EACVe,WAAYA,EACZD,OAAQA,EACRrV,KAAMA,EACN8X,UAAWzoB,KAAKyoB,UAChBzE,cAAUnR,GACT+W,GAKChJ,EAAMjQ,EAENA,KAAQ3Q,KAAKypB,MACf7I,EAAMjQ,EAAO,KAAO3Q,KAAK0pB,WAK3B1pB,KAAKypB,IAAI7I,GAAOkC,EAEZlC,KAAO5gB,KAAK2pB,UAEd5G,EAAQiB,SAAW,IAAM,GAAOhkB,KAAK2pB,QAAQ/I,KAG/C,IAAIsC,EAAOL,GAAWjC,EAAKkC,EAAMC,GACjC,IAAKG,EAAM,OAAO,KAClBljB,KAAK8pB,SAAS5G,GACd,IAAIhI,OAA0BrI,IAAlBkQ,EAAQ7H,MAAsBlb,KAAKkb,MAAMxb,OAASqjB,EAAQ7H,MAEtE,OADAlb,KAAKkb,MAAMG,OAAOH,EAAO,EAAGgI,GACrBA,GASTqE,EAAOvoB,QAAU,SAAiB2R,EAAMmS,EAAM8G,GAC5C,IAAIG,EAAU/pB,KAAKiU,IAAItD,GACnBqZ,EAAWhqB,KAAKkb,MAAMuM,QAAQsC,GAE9BA,GACF/pB,KAAKgN,OAAO+c,GAGd,IAAIhH,EAAU6G,EAId,OAHkB,IAAdI,IAAiBjH,EAAUtC,GAAS,GAAImJ,EAAa,CACvD1O,MAAO8O,KAEFhqB,KAAKsnB,IAAI3W,EAAMmS,EAAMC,IAO9BwE,EAAOtT,IAAM,SAAagW,GACxB,OAAOjqB,KAAKqI,IAAI4hB,IAOlB1C,EAAOva,OAAS,SAAgBkW,GAC9BljB,KAAKkqB,WAAWhH,UACTljB,KAAKypB,IAAIvG,EAAKtC,KACrB5gB,KAAKkb,MAAMG,OAAOrb,KAAKkb,MAAMuM,QAAQvE,GAAO,IAO9CqE,EAAOE,QAAU,SAAiBvE,GAChC,OAAOljB,KAAKkb,MAAMuM,QAAQvE,IAO5BqE,EAAOtqB,QAAU,WACf,IAAIkmB,EAAUnjB,KAAK+iB,QAAQC,IAAIG,QAG/BnjB,KAAKkb,MAAM1O,MAAM,GAAGxD,QAAQma,EAAQwE,cAAexE,IAOrDoE,EAAOuC,SAAW,SAAkB5G,GAClCljB,KAAKqI,IAAI6a,EAAKtC,KAAOsC,EAEjBA,aAAgB2C,IAClB7lB,KAAKqI,IAAI6a,EAAKc,UAAYd,EACtBA,EAAKviB,KAAIX,KAAK2pB,QAAQzG,EAAKtC,KAAOsC,EAAKviB,KAClCuiB,aAAgBgF,IAAiBloB,KAAKyoB,YAC/CzoB,KAAKyoB,UAAUvF,EAAKvS,MAAQuS,EAAKviB,KAQrC4mB,EAAO2C,WAAa,SAAoBhH,UAC/BljB,KAAKqI,IAAI6a,EAAKtC,KAEjBsC,aAAgB2C,WACX7lB,KAAKqI,IAAI6a,EAAKc,iBACdhkB,KAAK2pB,QAAQzG,EAAKtC,MAChBsC,aAAgBgF,WAClBloB,KAAKyoB,UAAUvF,EAAKvS,OAQ/B4W,EAAO4C,OAAS,WACd,IAAIxZ,EACAuD,EACA6O,EAYJ,GAVkE,kBAAtDtjB,UAAUC,QAAU,OAAImT,EAAYpT,UAAU,KACxDkR,EAAOlR,UAAUC,QAAU,OAAImT,EAAYpT,UAAU,GACrDyU,EAAOzU,UAAUC,QAAU,OAAImT,EAAYpT,UAAU,GACrDsjB,EAAUtjB,UAAUC,QAAU,OAAImT,EAAYpT,UAAU,KAExDyU,EAAOzU,UAAUC,QAAU,OAAImT,EAAYpT,UAAU,GACrDsjB,EAAUtjB,UAAUC,QAAU,OAAImT,EAAYpT,UAAU,GACxDkR,EAAO,MAGLA,EACF3Q,KAAKoqB,UAAUpqB,KAAKiU,IAAItD,GAAOuD,EAAM6O,QAErC,IAAK,IAAI7H,EAAQ,EAAGA,EAAQlb,KAAKkb,MAAMxb,OAAQwb,IAC7Clb,KAAKoqB,UAAUpqB,KAAKkb,MAAMA,GAAQhH,EAAM6O,IAS9CwE,EAAO6C,UAAY,SAAmBlH,EAAMhP,EAAM6O,QAChC,IAAZA,IACFA,EAAUwG,IAGZ,IAAIc,EAAiBrqB,KAAK+iB,QACtBI,EAAUkH,EAAerH,IAAIG,QAC7B8B,EAAQoF,EAAepF,MAE3B,GAAI/B,EAAKkE,iBAAiBC,EACxBnE,EAAKkE,MAAM+C,OAAOjW,EAAM6O,OAD1B,CAKA,IAAIrb,EAAQwb,EAAKxb,MAGjB,GAFAyb,EAAQmH,SAASpW,EAAMgP,EAAM+B,EAAOlC,GAEhCA,EAAQ9lB,SAAWyK,GAASA,IAAUwb,EAAKxb,MAAO,CAIpD,IAAK,IAAI4c,KAFTnB,EAAQ0F,eAAe3F,EAAKxb,MAAOwb,EAAM+B,GAExB/B,EAAKxb,MAAO,CAC3B,IAAI6iB,EAAYrH,EAAKxb,MAAM4c,GAIvBiG,IAHY7iB,EAAM4c,IAIpBpB,EAAKoB,KAAKA,EAAMiG,EAAWf,IAK/B,IAAK,IAAIjF,KAAS7c,EAAO,CACvB,IAAI8iB,EAAatH,EAAKxb,MAAM6c,GACxBkG,EAAa/iB,EAAM6c,GAGL,MAAdiG,GAAsBA,IAAeC,GACvCvH,EAAKoB,KAAKC,EAAO,KAAMiF,QAU/BjC,EAAOhB,SAAW,SAAkBxD,GAQlC,IAPA,IAAIc,EAAM,GACNoB,EAAQjlB,KAAK+iB,QAAQkC,MACrBwB,IAAOxB,GAAQA,EAAMlC,QAAQ0D,KAG7B/C,EADwBD,GAAqBV,GACXW,UAE7BxI,EAAQ,EAAGA,EAAQlb,KAAKkb,MAAMxb,OAAQwb,IAAS,CACtD,IACIwP,EADO1qB,KAAKkb,MAAMA,GACPqL,SAASxD,IAEnB2H,GAAQjE,KACT5C,IAAKA,GAAOH,GAChBG,GAAO6G,GAGT,OAAO7G,GAGFwD,EAnQmB,GAsQxBsD,GAA0B,WAC5B,SAASA,EAAWzD,EAAQnE,GAkB1B,IAAK,IAAIpS,KAjBT3Q,KAAK4lB,UAAW,EAChB5lB,KAAK4qB,UAAW,EAChB5qB,KAAK2pB,QAAU,GACf3pB,KAAKyoB,UAAY,GACjBzoB,KAAK+iB,QAAUtC,GAAS,GAAIsC,EAAS,CACnCkC,MAAOjlB,KACP6mB,OAAQ7mB,KACR2pB,QAAS3pB,KAAK2pB,QACdlB,UAAWzoB,KAAKyoB,YAGd1F,EAAQmC,WACVllB,KAAKmlB,SAAW,IAAIpC,EAAQmC,SAASllB,OAGvCA,KAAKonB,MAAQ,IAAIC,GAASrnB,KAAK+iB,SAEdmE,EACflnB,KAAKonB,MAAME,IAAI3W,EAAMuW,EAAOvW,IAG9B3Q,KAAKonB,MAAMnqB,UAOb,IAAIsqB,EAASoD,EAAW/qB,UAoMxB,OAlMA2nB,EAAOsD,OAAS,WACd,OAAI7qB,KAAK4lB,WACL5lB,KAAKmlB,UAAUnlB,KAAKmlB,SAAS0F,SACjC7qB,KAAK4lB,UAAW,EAEX5lB,KAAK4qB,UAAU5qB,KAAK8qB,UAJC9qB,MAY5BunB,EAAOwD,OAAS,WACd,OAAK/qB,KAAK4lB,UACN5lB,KAAKmlB,UAAUnlB,KAAKmlB,SAAS4F,SACjC/qB,KAAK4lB,UAAW,EACT5lB,MAHoBA,MAW7BunB,EAAOG,QAAU,SAAiB/W,EAAMmS,EAAMC,GAC5C,IAAIiI,EAAQhrB,KAAKgrB,MAIbhrB,KAAK4lB,WAAaoF,IAAOhrB,KAAKgrB,MAAQ,IAC1C,IAAI9H,EAAOljB,KAAKonB,MAAME,IAAI3W,EAAMmS,EAAMC,GACtC,OAAKG,GACLljB,KAAK+iB,QAAQC,IAAIG,QAAQwE,cAAczE,GAEnCljB,KAAK4lB,SACF5lB,KAAK4qB,UAGNI,EAAOA,EAAMC,KAAK/H,IACpBljB,KAAKkrB,WAAWhI,GAEZljB,KAAKgrB,QACPhrB,KAAKgrB,MAAMhiB,QAAQhJ,KAAKkrB,WAAYlrB,MACpCA,KAAKgrB,WAAQnY,IAGVqQ,GAXoBA,GAgB7BljB,KAAK4qB,UAAW,EACT1H,IArBW,MA4BpBqE,EAAOZ,YAAc,SAAqBsD,EAAgBnH,EAAMC,GAC9D,IAAIgH,EAAU/pB,KAAKonB,MAAMnT,IAAIgW,GAC7B,IAAKF,EAAS,OAAO/pB,KAAK0nB,QAAQuC,EAAgBnH,EAAMC,GACxD,IAAI6E,EAAU5nB,KAAKonB,MAAMpoB,QAAQirB,EAAgBnH,EAAMC,GAMvD,OAJI6E,GACF5nB,KAAK+iB,QAAQC,IAAIG,QAAQwE,cAAcC,GAGrC5nB,KAAK4lB,SACF5lB,KAAK4qB,UAGN5qB,KAAKmlB,WACFyC,EAEMmC,EAAQtE,YACjBzlB,KAAKmlB,SAASwB,YAAYoD,EAAQtE,WAAYmC,GAF9C5nB,KAAKmlB,SAASgG,WAAWpB,IAMtBnC,GAXoBA,GAgB7B5nB,KAAK4qB,UAAW,EACThD,IAOTL,EAAO2D,WAAa,SAAoBhI,GAClCljB,KAAKmlB,UACPnlB,KAAKmlB,SAAS+F,WAAWhI,IAS7BqE,EAAO6D,SAAW,SAAkBlE,EAAQnE,GAC1C,IAAIsI,EAAQ,GAEZ,IAAK,IAAI1a,KAAQuW,EAAQ,CACvB,IAAIhE,EAAOljB,KAAK0nB,QAAQ/W,EAAMuW,EAAOvW,GAAOoS,GACxCG,GAAMmI,EAAMJ,KAAK/H,GAGvB,OAAOmI,GAOT9D,EAAOC,QAAU,SAAiByC,GAChC,OAAOjqB,KAAKonB,MAAMnT,IAAIgW,IAQxB1C,EAAO4D,WAAa,SAAoBxa,GACtC,IAAIuS,EAAuB,kBAATvS,EAAoBA,EAAO3Q,KAAKonB,MAAMnT,IAAItD,GAE5D,SAAKuS,GAELljB,KAAK4lB,WAAa1C,EAAKuC,cAIvBzlB,KAAKonB,MAAMpa,OAAOkW,KAEdljB,KAAK4lB,UAAY1C,EAAKuC,YAAczlB,KAAKmlB,WACpCnlB,KAAKmlB,SAASgG,WAAWjI,EAAKuC,cAUzC8B,EAAOE,QAAU,SAAiBvE,GAChC,OAAOljB,KAAKonB,MAAMK,QAAQvE,IAO5BqE,EAAOuD,OAAS,WAGd,OAFI9qB,KAAKmlB,UAAUnlB,KAAKmlB,SAAS2F,SACjC9qB,KAAK4qB,UAAW,EACT5qB,MAOTunB,EAAO4C,OAAS,WACd,IAAImB,EAIJ,OAFCA,EAActrB,KAAKonB,OAAO+C,OAAOpqB,MAAMurB,EAAa7rB,WAE9CO,MAOTunB,EAAO6C,UAAY,SAAmBlH,EAAMhP,EAAM6O,GAEhD,OADA/iB,KAAKonB,MAAMgD,UAAUlH,EAAMhP,EAAM6O,GAC1B/iB,MAOTunB,EAAOhB,SAAW,SAAkBxD,GAClC,OAAO/iB,KAAKonB,MAAMb,SAASxD,IAGtB4H,EAlOqB,GAqO1BY,GAA+B,WACjC,SAASA,IACPvrB,KAAKmjB,QAAU,CACbqI,SAAU,GACVC,SAAU,IAEZzrB,KAAK0rB,SAAW,GAGlB,IAAInE,EAASgE,EAAgB3rB,UAgH7B,OA3GA2nB,EAAOnE,aAAe,SAAsBzS,EAAMmS,EAAMC,GACtD,IAAK,IAAIxjB,EAAI,EAAGA,EAAIS,KAAK0rB,SAAStI,aAAa1jB,OAAQH,IAAK,CAC1D,IAAI2jB,EAAOljB,KAAK0rB,SAAStI,aAAa7jB,GAAGoR,EAAMmS,EAAMC,GACrD,GAAIG,EAAM,OAAOA,EAGnB,OAAO,MAOTqE,EAAOI,cAAgB,SAAuBzE,GAC5C,IAAIA,EAAK8B,YAAT,CAGA,IAFA,IAAIC,EAAQ/B,EAAKH,QAAQkC,MAEhB1lB,EAAI,EAAGA,EAAIS,KAAK0rB,SAAS/D,cAAcjoB,OAAQH,IACtDS,KAAK0rB,SAAS/D,cAAcpoB,GAAG2jB,EAAM+B,GAGnC/B,EAAKxb,OAAO1H,KAAK6oB,eAAe3F,EAAKxb,MAAOwb,EAAM+B,GACtD/B,EAAK8B,aAAc,IAOrBuC,EAAOsB,eAAiB,SAAwBnhB,EAAOwb,EAAM+B,GAC3D,IAAK,IAAI1lB,EAAI,EAAGA,EAAIS,KAAK0rB,SAAS7C,eAAenpB,OAAQH,IACvD2jB,EAAKxb,MAAQ1H,KAAK0rB,SAAS7C,eAAetpB,GAAG2jB,EAAKxb,MAAOwb,EAAM+B,IAQnEsC,EAAOoE,eAAiB,SAAwB1G,GAC9C,IAAK,IAAI1lB,EAAI,EAAGA,EAAIS,KAAK0rB,SAASC,eAAejsB,OAAQH,IACvDS,KAAK0rB,SAASC,eAAepsB,GAAG0lB,IAQpCsC,EAAO+C,SAAW,SAAkBpW,EAAMgP,EAAM+B,EAAOlC,GACrD,IAAK,IAAIxjB,EAAI,EAAGA,EAAIS,KAAK0rB,SAASpB,SAAS5qB,OAAQH,IACjDS,KAAK0rB,SAASpB,SAAS/qB,GAAG2U,EAAMgP,EAAM+B,EAAOlC,IAQjDwE,EAAOjC,cAAgB,SAAuB/c,EAAO+b,EAAMpB,GAGzD,IAFA,IAAI0I,EAAiBrjB,EAEZhJ,EAAI,EAAGA,EAAIS,KAAK0rB,SAASpG,cAAc5lB,OAAQH,IACtDqsB,EAAiB5rB,KAAK0rB,SAASpG,cAAc/lB,GAAGqsB,EAAgBtH,EAAMpB,GAGxE,OAAO0I,GAOTrE,EAAOvV,IAAM,SAAa6Z,EAAW9I,QACnB,IAAZA,IACFA,EAAU,CACRiI,MAAO,aAIX,IAAI7H,EAAUnjB,KAAKmjB,QAAQJ,EAAQiI,QAEC,IAAhC7H,EAAQsE,QAAQoE,KAIpB1I,EAAQ8H,KAAKY,GACb7rB,KAAK0rB,SAAW,GAAGjf,OAAOzM,KAAKmjB,QAAQsI,SAAUzrB,KAAKmjB,QAAQqI,UAAUhjB,QAAO,SAAUkjB,EAAUI,GACjG,IAAK,IAAInb,KAAQmb,EACXnb,KAAQ+a,GACVA,EAAS/a,GAAMsa,KAAKa,EAAOnb,IAM/B,OAAO+a,IACN,CACDtI,aAAc,GACduE,cAAe,GACfkB,eAAgB,GAChB8C,eAAgB,GAChBrG,cAAe,GACfgF,SAAU,OAIPiB,EAzH0B,GA+N/BQ,GAAS,IA/FqB,WAChC,SAASC,IACPhsB,KAAK0rB,SAAW,GAGlB,IAAInE,EAASyE,EAAepsB,UAgF5B,OA3EA2nB,EAAOD,IAAM,SAAarC,GACxB,IAAIyG,EAAW1rB,KAAK0rB,SAChBxQ,EAAQ+J,EAAMlC,QAAQ7H,MAC1B,IAAiC,IAA7BwQ,EAASjE,QAAQxC,GAErB,GAAwB,IAApByG,EAAShsB,QAAgBwb,GAASlb,KAAKkb,MACzCwQ,EAAST,KAAKhG,QAKhB,IAAK,IAAI1lB,EAAI,EAAGA,EAAImsB,EAAShsB,OAAQH,IACnC,GAAImsB,EAASnsB,GAAGwjB,QAAQ7H,MAAQA,EAE9B,YADAwQ,EAASrQ,OAAO9b,EAAG,EAAG0lB,IAU5BsC,EAAO0E,MAAQ,WACbjsB,KAAK0rB,SAAW,IAOlBnE,EAAOva,OAAS,SAAgBiY,GAC9B,IAAI/J,EAAQlb,KAAK0rB,SAASjE,QAAQxC,GAClCjlB,KAAK0rB,SAASrQ,OAAOH,EAAO,IAO9BqM,EAAOhB,SAAW,SAAkB2F,GAUlC,IATA,IAAIC,OAAiB,IAAVD,EAAmB,GAAKA,EAC/BtG,EAAWuG,EAAKvG,SAChB7C,EAn6CR,SAAuCpC,EAAQyL,GAC7C,GAAc,MAAVzL,EAAgB,MAAO,GAC3B,IAEIC,EAAKrhB,EAFLsc,EAAS,GACTwQ,EAAavvB,OAAOwvB,KAAK3L,GAG7B,IAAKphB,EAAI,EAAGA,EAAI8sB,EAAW3sB,OAAQH,IACjCqhB,EAAMyL,EAAW9sB,GACb6sB,EAAS3E,QAAQ7G,IAAQ,IAC7B/E,EAAO+E,GAAOD,EAAOC,IAGvB,OAAO/E,EAu5CS0Q,CAA8BJ,EAAM,CAAC,aAG/CzI,EADwBD,GAAqBV,GACXW,UAElCgH,EAAM,GAEDnrB,EAAI,EAAGA,EAAIS,KAAK0rB,SAAShsB,OAAQH,IAAK,CAC7C,IAAI0lB,EAAQjlB,KAAK0rB,SAASnsB,GAEV,MAAZqmB,GAAoBX,EAAMW,WAAaA,IAIvC8E,IAAKA,GAAOhH,GAChBgH,GAAOzF,EAAMsB,SAASxD,IAGxB,OAAO2H,GAGT/I,GAAaqK,EAAgB,CAAC,CAC5BpL,IAAK,QAKL3M,IAAK,WACH,OAAgC,IAAzBjU,KAAK0rB,SAAShsB,OAAe,EAAIM,KAAK0rB,SAAS1rB,KAAK0rB,SAAShsB,OAAS,GAAGqjB,QAAQ7H,UAIrF8Q,EArFyB,IA6G9BQ,GAAqC,qBAAfC,WAA6BA,WAA+B,qBAAXjf,QAA0BA,OAAOkf,OAASA,KAAOlf,OAAyB,qBAAT+U,MAAwBA,KAAKmK,OAASA,KAAOnK,KAAOoK,SAAS,cAATA,GAC5LC,GAAK,mCACe,MAApBJ,GAAaI,MAAaJ,GAAaI,IAAM,GAKjD,IAAIC,GAAWL,GAAaI,MAQxBE,GAAmB,SAA0B/J,QAC/B,IAAZA,IACFA,EAAU,IAGZ,IAAIgK,EAAc,EA8BlB,OA5BiB,SAAoB7J,EAAM+B,GACzC8H,GAAe,EAMf,IAAIC,EAAQ,GACRC,EAAS,GAYb,OAVIhI,IACEA,EAAMlC,QAAQmK,kBAChBD,EAAShI,EAAMlC,QAAQmK,iBAGG,MAAxBjI,EAAMlC,QAAQC,IAAIriB,KACpBqsB,EAAQG,OAAOlI,EAAMlC,QAAQC,IAAIriB,MAIjCoiB,EAAQqK,OAEH,IAAMH,GAAU,KAAOJ,GAAWG,EAAQD,EAG5CE,EAAS/J,EAAKtC,IAAM,IAAMiM,IAAYG,EAAQ,IAAMA,EAAQ,IAAM,IAAMD,IAU/EM,GAAU,SAAiBC,GAC7B,IAAI/kB,EACJ,OAAO,WAEL,OADKA,IAAOA,EAAQ+kB,KACb/kB,IAQPglB,GAAmB,SAA0BC,EAASlJ,GACxD,IAEE,OAAIkJ,EAAQC,kBACHD,EAAQC,kBAAkBxZ,IAAIqQ,GAGhCkJ,EAAQ9lB,MAAM6lB,iBAAiBjJ,GACtC,MAAOoJ,GAEP,MAAO,KAQP/H,GAAc,SAAqB6H,EAASlJ,EAAM/b,GACpD,IACE,IAAIib,EAAWjb,EAEf,GAAIyS,MAAM2H,QAAQpa,KAChBib,EAAWF,GAAW/a,GAAO,GAEG,eAA5BA,EAAMA,EAAM7I,OAAS,IAEvB,OADA8tB,EAAQ9lB,MAAMie,YAAYrB,EAAMd,EAAU,cACnC,EAKPgK,EAAQC,kBACVD,EAAQC,kBAAkB5gB,IAAIyX,EAAMd,GAEpCgK,EAAQ9lB,MAAMie,YAAYrB,EAAMd,GAElC,MAAOkK,GAEP,OAAO,EAGT,OAAO,GAOLhI,GAAiB,SAAwB8H,EAASlJ,GACpD,IAEMkJ,EAAQC,kBACVD,EAAQC,kBAAkBE,OAAOrJ,GAEjCkJ,EAAQ9lB,MAAMge,eAAepB,GAE/B,MAAOoJ,MASPhH,GAAc,SAAqB8G,EAAStH,GAI9C,OAHAsH,EAAQtH,aAAeA,EAGhBsH,EAAQtH,eAAiBA,GAQ9B0H,GAAUP,IAAQ,WACpB,OAAO3d,SAASme,cAAc,WAwDhC,SAASC,GAAa/K,GACpB,IAAI2I,EAAWK,GAAOL,SAEtB,GAAIA,EAAShsB,OAAS,EAAG,CAEvB,IAAIulB,EAvDR,SAAyByG,EAAU3I,GACjC,IAAK,IAAIxjB,EAAI,EAAGA,EAAImsB,EAAShsB,OAAQH,IAAK,CACxC,IAAI0lB,EAAQyG,EAASnsB,GAErB,GAAI0lB,EAAMW,UAAYX,EAAMlC,QAAQ7H,MAAQ6H,EAAQ7H,OAAS+J,EAAMlC,QAAQgL,iBAAmBhL,EAAQgL,eACpG,OAAO9I,EAIX,OAAO,KA8CO+I,CAAgBtC,EAAU3I,GAEtC,GAAIkC,GAASA,EAAME,SACjB,MAAO,CACL0B,OAAQ5B,EAAME,SAAS8I,QAAQC,WAC/BC,KAAMlJ,EAAME,SAAS8I,SAOzB,IAFAhJ,EAjDJ,SAA0ByG,EAAU3I,GAClC,IAAK,IAAIxjB,EAAImsB,EAAShsB,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAC7C,IAAI0lB,EAAQyG,EAASnsB,GAErB,GAAI0lB,EAAMW,UAAYX,EAAMlC,QAAQgL,iBAAmBhL,EAAQgL,eAC7D,OAAO9I,EAIX,OAAO,KAwCGmJ,CAAiB1C,EAAU3I,KAEtBkC,EAAME,SACjB,MAAO,CACL0B,OAAQ5B,EAAME,SAAS8I,QAAQC,WAC/BC,KAAMlJ,EAAME,SAAS8I,QAAQI,aAMnC,IAAIN,EAAiBhL,EAAQgL,eAE7B,GAAIA,GAA4C,kBAAnBA,EAA6B,CACxD,IAAIO,EA/CR,SAAyBjP,GAGvB,IAFA,IAAIkP,EAAOX,KAEFruB,EAAI,EAAGA,EAAIgvB,EAAKC,WAAW9uB,OAAQH,IAAK,CAC/C,IAAI4uB,EAAOI,EAAKC,WAAWjvB,GAE3B,GAAsB,IAAlB4uB,EAAKhN,UAAkBgN,EAAKM,UAAU9hB,SAAW0S,EACnD,OAAO8O,EAIX,OAAO,KAoCSO,CAAgBX,GAE9B,GAAIO,EACF,MAAO,CACLzH,OAAQyH,EAAQJ,WAChBC,KAAMG,EAAQD,aASpB,OAAO,EA+BT,IAAIM,GAAWtB,IAAQ,WACrB,IAAIc,EAAOze,SAASme,cAAc,8BAClC,OAAOM,EAAOA,EAAKS,aAAa,WAAa,QAG3CC,GAAc,SAAoBC,EAAW5L,EAAMhI,GACrD,IACM,eAAgB4T,EAClBA,EAAU5D,WAAWhI,EAAMhI,GAEpB,eAAgB4T,GACvBA,EAAUC,WAAW7L,GAEvB,MAAOwK,GAEP,OAAO,EAGT,OAAOoB,EAAUE,SAAS9T,IAGxB+T,GAA6B,SAAoCH,EAAW5T,GAC9E,IAAIgU,EAAWJ,EAAUE,SAAStvB,OAElC,YAAcmT,IAAVqI,GAAuBA,EAAQgU,EAE1BA,EAGFhU,GAYLiU,GAA2B,WAG7B,SAASA,EAAYlK,GACnBjlB,KAAKutB,iBAAmBA,GACxBvtB,KAAK2lB,YAAcA,GACnB3lB,KAAK0lB,eAAiBA,GACtB1lB,KAAK0mB,YAAcA,GACnB1mB,KAAKovB,kBAAmB,EACxBpvB,KAAKgvB,SAAW,GAEZ/J,GAAO8G,GAAOzE,IAAIrC,GACtBjlB,KAAKilB,MAAQA,EAEb,IAAIkH,EAAOnsB,KAAKilB,MAAQjlB,KAAKilB,MAAMlC,QAAU,GACzCsM,EAAQlD,EAAKkD,MACbC,EAAOnD,EAAKmD,KACZrB,EAAU9B,EAAK8B,QAEnBjuB,KAAKiuB,QAAUA,GA5BD,WAChB,IAAIxrB,EAAKiN,SAASC,cAAc,SAKhC,OADAlN,EAAG8sB,YAAc,KACV9sB,EAsBqB+sB,GAC1BxvB,KAAKiuB,QAAQwB,aAAa,WAAY,IAClCJ,GAAOrvB,KAAKiuB,QAAQwB,aAAa,QAASJ,GAC1CC,GAAMtvB,KAAKiuB,QAAQwB,aAAa,YAAaH,GACjD,IAAII,EAAQf,KACRe,GAAO1vB,KAAKiuB,QAAQwB,aAAa,QAASC,GAOhD,IAAInI,EAAS4H,EAAYvvB,UA2JzB,OAzJA2nB,EAAOsD,OAAS,WAEd,IAAI7qB,KAAKiuB,QAAQC,YAAeluB,KAAKilB,MAArC,EApGJ,SAAqBvd,EAAOqb,GAC1B,IAAIgL,EAAiBhL,EAAQgL,eACzB4B,EAAW7B,GAAa/K,GAE5B,IAAiB,IAAb4M,GAAsBA,EAAS9I,OACjC8I,EAAS9I,OAAO+I,aAAaloB,EAAOioB,EAASxB,WAK/C,GAAIJ,GAAqD,kBAA5BA,EAAe5M,SAA5C,CACE,IAAI0O,EAAwB9B,EACxBG,EAAa2B,EAAsB3B,WACnCA,GAAYA,EAAW0B,aAAaloB,EAAOmoB,EAAsBxB,kBAIvET,KAAUkC,YAAYpoB,GAoFpBqoB,CAAY/vB,KAAKiuB,QAASjuB,KAAKilB,MAAMlC,SAGrC,IAAI6H,EAAWoF,QAAQhwB,KAAKilB,OAASjlB,KAAKilB,MAAM2F,UAE5C5qB,KAAKovB,kBAAoBxE,IAC3B5qB,KAAKovB,kBAAmB,EACxBpvB,KAAK8qB,YAQTvD,EAAOwD,OAAS,WACd,GAAK/qB,KAAKilB,MAAV,CACA,IAAIiJ,EAAaluB,KAAKiuB,QAAQC,WAC1BA,GAAYA,EAAW+B,YAAYjwB,KAAKiuB,SAGxCjuB,KAAKilB,MAAMlC,QAAQ0D,OACrBzmB,KAAKgvB,SAAW,GAChBhvB,KAAKiuB,QAAQsB,YAAc,QAQ/BhI,EAAOuD,OAAS,WACd,IAAI7F,EAAQjlB,KAAKilB,MACZA,IAEDA,EAAMlC,QAAQ0D,KAChBzmB,KAAKkwB,YAAYjL,EAAMmC,OAIzBpnB,KAAKiuB,QAAQsB,YAAc,KAAOtK,EAAMsB,WAAa,OAOvDgB,EAAO2I,YAAc,SAAqB9I,EAAO+I,GAC/C,IAAK,IAAI5wB,EAAI,EAAGA,EAAI6nB,EAAMlM,MAAMxb,OAAQH,IACtCS,KAAKkrB,WAAW9D,EAAMlM,MAAM3b,GAAIA,EAAG4wB,IAQvC5I,EAAO2D,WAAa,SAAoBhI,EAAMhI,EAAOiV,GAKnD,QAJqB,IAAjBA,IACFA,EAAenwB,KAAKiuB,QAAQhJ,OAG1B/B,EAAKkE,MAAO,CACd,IAAIP,EAAS3D,EACTkN,EAAqBD,EAEzB,GAAkB,gBAAdjN,EAAK5a,MAAwC,cAAd4a,EAAK5a,KAAsB,CAC5D,IAAI+nB,EAAkBpB,GAA2BkB,EAAcjV,GAO/D,IAA2B,KAJ3BkV,EAAqBvB,GAAYsB,EAActJ,EAAON,SAAS,CAC7DQ,UAAU,IACRsJ,IAGF,OAAO,EAGTrwB,KAAKswB,WAAWpN,EAAMmN,EAAiBD,GAIzC,OADApwB,KAAKkwB,YAAYrJ,EAAOO,MAAOgJ,GACxBA,EAGT,IAAIG,EAAUrN,EAAKqD,WACnB,IAAKgK,EAAS,OAAO,EACrB,IAAIC,EAAiBvB,GAA2BkB,EAAcjV,GAE1DuV,EAAa5B,GAAYsB,EAAcI,EAASC,GAEpD,OAAmB,IAAfC,IAIJzwB,KAAKovB,kBAAmB,EACxBpvB,KAAKswB,WAAWpN,EAAMsN,EAAgBC,GAC/BA,IAGTlJ,EAAO+I,WAAa,SAAoBpN,EAAMhI,EAAOsS,GACnDtK,EAAKuC,WAAa+H,EAGdtK,EAAKH,QAAQ8D,kBAAkB8D,IACjC3qB,KAAKgvB,SAAS3T,OAAOH,EAAO,EAAGsS,IAQnCjG,EAAO4D,WAAa,SAAoBqC,GACtC,IAAIvI,EAAQjlB,KAAKiuB,QAAQhJ,MACrB/J,EAAQlb,KAAKynB,QAAQ+F,GACzB,OAAe,IAAXtS,IACJ+J,EAAMkG,WAAWjQ,GACjBlb,KAAKgvB,SAAS3T,OAAOH,EAAO,IACrB,IAOTqM,EAAOE,QAAU,SAAiB+F,GAChC,OAAOxtB,KAAKgvB,SAASvH,QAAQ+F,IAO/BjG,EAAOZ,YAAc,SAAqB6G,EAAStK,GACjD,IAAIhI,EAAQlb,KAAKynB,QAAQ+F,GACzB,OAAe,IAAXtS,IACJlb,KAAKiuB,QAAQhJ,MAAMkG,WAAWjQ,GAC9Blb,KAAKgvB,SAAS3T,OAAOH,EAAO,GACrBlb,KAAKkrB,WAAWhI,EAAMhI,KAO/BqM,EAAOmJ,SAAW,WAChB,OAAO1wB,KAAKiuB,QAAQhJ,MAAM+J,UAGrBG,EA1LsB,GA6L3BwB,GAAkB,EAElBC,GAAmB,WACrB,SAASA,EAAI7N,GACX/iB,KAAKW,GAAKgwB,KACV3wB,KAAKuL,QAAU,SACfvL,KAAKmjB,QAAU,IAAIoI,GACnBvrB,KAAK+iB,QAAU,CACbpiB,GAAI,CACFysB,QAAQ,GAEVN,iBAAkBA,GAClB5H,SAAUhE,GAAYiO,GAAc,KACpChM,QAAS,IAEXnjB,KAAKimB,WAAa6G,GAAiB,CACjCM,QAAQ,IAGV,IAAK,IAAI7tB,EAAI,EAAGA,EAAI4jB,GAAQzjB,OAAQH,IAClCS,KAAKmjB,QAAQnR,IAAImR,GAAQ5jB,GAAI,CAC3ByrB,MAAO,aAIXhrB,KAAK6wB,MAAM9N,GASb,IAAIwE,EAASqJ,EAAIhxB,UAqHjB,OAnHA2nB,EAAOsJ,MAAQ,SAAe9N,GAyB5B,YAxBgB,IAAZA,IACFA,EAAU,IAGRA,EAAQ+J,mBACV9sB,KAAK+iB,QAAQ+J,iBAAmB/J,EAAQ+J,kBAGtC/J,EAAQpiB,KACVX,KAAK+iB,QAAQpiB,GAAK8f,GAAS,GAAIzgB,KAAK+iB,QAAQpiB,GAAIoiB,EAAQpiB,MAGtDoiB,EAAQ+J,kBAAoB/J,EAAQpiB,MACtCX,KAAKimB,WAAajmB,KAAK+iB,QAAQ+J,iBAAiB9sB,KAAK+iB,QAAQpiB,KAGjC,MAA1BoiB,EAAQgL,iBAAwB/tB,KAAK+iB,QAAQgL,eAAiBhL,EAAQgL,gBAEtE,aAAchL,IAChB/iB,KAAK+iB,QAAQmC,SAAWnC,EAAQmC,UAI9BnC,EAAQI,SAASnjB,KAAKgS,IAAIjS,MAAMC,KAAM+iB,EAAQI,SAC3CnjB,MAOTunB,EAAOuJ,iBAAmB,SAA0B5J,EAAQnE,QAC1C,IAAZA,IACFA,EAAU,IAGZ,IACI7H,EADW6H,EACM7H,MAEA,kBAAVA,IACTA,EAAyB,IAAjB6Q,GAAO7Q,MAAc,EAAI6Q,GAAO7Q,MAAQ,GAGlD,IAAI+J,EAAQ,IAAI0F,GAAWzD,EAAQzG,GAAS,GAAIsC,EAAS,CACvDC,IAAKhjB,KACLimB,WAAYlD,EAAQkD,YAAcjmB,KAAKimB,WACvC8H,eAAgB/tB,KAAK+iB,QAAQgL,eAC7B7I,SAAUllB,KAAK+iB,QAAQmC,SACvBhK,MAAOA,KAGT,OADAlb,KAAKmjB,QAAQwI,eAAe1G,GACrBA,GAOTsC,EAAOwJ,iBAAmB,SAA0B9L,GAGlD,OAFAA,EAAM8F,SACNgB,GAAO/e,OAAOiY,GACPjlB,MAQTunB,EAAO1E,WAAa,SAAsBlS,EAAMjJ,EAAOqb,GAUrD,QATc,IAAVrb,IACFA,EAAQ,SAGM,IAAZqb,IACFA,EAAU,IAIQ,kBAATpS,EACT,OAAO3Q,KAAK6iB,gBAAWhQ,EAAWlC,EAAMjJ,GAG1C,IAAIkiB,EAAcnJ,GAAS,GAAIsC,EAAS,CACtCpS,KAAMA,EACNqS,IAAKhjB,KACLklB,SAAUllB,KAAK+iB,QAAQmC,WAGpB0E,EAAY3D,aAAY2D,EAAY3D,WAAajmB,KAAKimB,YACtD2D,EAAYD,UAASC,EAAYD,QAAU,IAC3CC,EAAYnB,YAAWmB,EAAYnB,UAAY,IACpD,IAAIvF,EAAOL,GAAWlS,EAAMjJ,EAAOkiB,GAEnC,OADI1G,GAAMljB,KAAKmjB,QAAQwE,cAAczE,GAC9BA,GAOTqE,EAAOvV,IAAM,WAGX,IAFA,IAAI+T,EAAQ/lB,KAEHgxB,EAAOvxB,UAAUC,OAAQyjB,EAAU,IAAInI,MAAMgW,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClF9N,EAAQ8N,GAAQxxB,UAAUwxB,GAM5B,OAHA9N,EAAQna,SAAQ,SAAU8iB,GACxB/F,EAAM5C,QAAQnR,IAAI8Z,MAEb9rB,MAGF4wB,EArJc,GAwJnBM,GAAY,SAAmBnO,GACjC,OAAO,IAAI6N,GAAI7N,IAWLmO,KACZp0B,OAAO4kB,eAAe,KAAiB,OAAQ,CAC7CnZ,MAAO,eAGT,IAAI,GAAiB,SAAwB3B,GAC3C,IAAIwP,EAAgBxP,EAAGwP,cACnB2Q,EAAWngB,EAAGmgB,SAElB,MAD4C,QAAhC3Q,EAAc9K,cACX,IAAMqE,cAAc,KAAmB,CACpDwhB,cAAe,CAAC,OACfpK,GAAY,IAAMpX,cAAc,IAAMyhB,SAAU,KAAMrK,IAGvDsK,KAAiC,qBAAX7jB,SAA0BA,OAAOkC,WAAYlC,OAAOkC,SAAS4hB,gBAEnF,GAAc,SAAqBC,QAClB,IAAfA,IACFA,GAAa,GAGf,IAAIxO,EAAU,CACZI,QAAS/C,GAAe,OAAAoR,GAAA,KAAYrO,QAAS,CAAC,SAC9C4K,eAAgBsD,GAAY3hB,SAAS4hB,eAAe,4BAAyBze,GAO/E,OAJI0e,IACFxO,EAAQmC,SAAW,MAGdgM,GAAUnO,IAGf,GAAoB,SAA2Bnc,GACjD,IAAI6qB,EAAa7qB,EAAG6qB,WAChBrb,EAAgBxP,EAAGwP,cACnB2Q,EAAWngB,EAAGmgB,SACd2K,EAAY9qB,EAAG8qB,UACfC,EAAgB/qB,EAAG+qB,cACnBJ,EAAa3qB,EAAG2qB,WAChBK,EAAoB,OAAAC,GAAA,GAAwB,CAC9CC,iBAAkBJ,EAClBC,cAAeA,IAEjB,OAAO,IAAMhiB,cAAcoiB,GAAA,EAAgB,CACzC/O,IAAK,GAAYuO,GACjBK,kBAAmBA,GAClB,IAAMjiB,cAAcqiB,GAAA,EAAe,CACpCC,MAAO,aAAoBR,EAAYrb,IACtC,IAAMzG,cAAc,GAAgB,CACrCyG,cAAeA,GACd2Q,MAGL,GAAkBmL,aAAe,CAC/BP,eAAe,EACfJ,YAAY,GAGd,ICtwEI,GDswEA,GAAkB,SAAyB3qB,GAC7C,IAAIqrB,EAAQrrB,EAAGqrB,MACXlL,EAAWngB,EAAGmgB,SAClB,OAAO,IAAMpX,cAAc,KAAiB,CAC1CsiB,MAAOA,GACNlL,IAGU,MErzEFoL,GAAcC,aAAH,qqBAmCN,SAAC/Q,GAAD,qBACNA,EAAM4Q,MAAM/K,OAAOmL,YAAYC,QAAQC,OADjC,cAC6ClR,EAAM4Q,MAAM/K,OAAOsL,WAAWF,QAAQC,OADnF,OAGOvhB,GAAYC,OAAOG,IACxB,SAACiQ,GAAD,qBACRA,EAAM4Q,MAAM/K,OAAOmL,YAAYjhB,GAAGmhB,OAD1B,cACsClR,EAAM4Q,MAAM/K,OAAOsL,WAAWphB,GAAGmhB,OADvE,OAIKvhB,GAAYC,OAAOI,IACxB,SAACgQ,GAAD,qBACRA,EAAM4Q,MAAM/K,OAAOmL,YAAYhhB,GAAGkhB,OAD1B,cACsClR,EAAM4Q,MAAM/K,OAAOsL,WAAWnhB,GAAGkhB,OADvE,QAMM,SAAClR,GAAD,qBACdA,EAAM4Q,MAAM/K,OAAOmL,YAAYC,QAAQC,OADzB,cACqClR,EAAM4Q,MAAM/K,OAAOsL,WAAWF,QAAQC,OAD3E,QAEG,SAAClR,GAAD,qBACjBA,EAAM4Q,MAAM/K,OAAOmL,YAAYjhB,GAAGmhB,OADjB,cAC6BlR,EAAM4Q,MAAM/K,OAAOsL,WAAWphB,GAAGmhB,OAD9D,QAEA,SAAClR,GAAD,qBACjBA,EAAM4Q,MAAM/K,OAAOmL,YAAYhhB,GAAGkhB,OADjB,cAC6BlR,EAAM4Q,MAAM/K,OAAOsL,WAAWnhB,GAAGkhB,OAD9D,Q,uCClDhBE,GAAkBC,KAAOC,IAAV,iFAAGD,CAAH,oUAUJ,qBAAET,MAAiBW,QAAQC,UAAUC,mBATpC9hB,GAAYC,OAAOG,IACzB,qBAAE2hB,KAAkB,OAAS,UAiBnCC,GAAYN,KAAOO,IAAV,2EAAGP,CAAH,0JAIG1hB,GAAYC,OAAOG,IAM/B8hB,GAAQR,KAAOS,KAAV,uEAAGT,CAAH,8NAML,qBAAET,MAAiBW,QAAQvT,KAAKiT,UACpBthB,GAAYC,OAAOG,IAK/BgiB,GAAmBV,KAAOW,OAAV,kFAAGX,CAAH,mRAQN,SAAArR,GAAK,gBACbA,EAAM4Q,MAAMW,QAAQU,KAAKC,UAAUC,MAAMC,OAD5B,aACuCpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAU/EoB,GAAgBhB,aAAOiB,MAAV,+EAAGjB,CAAH,4EAKbkB,GAAkBlB,aAAOiB,MAAV,iFAAGjB,CAAH,8EC7DfmB,GAAyB,kBAAMC,IAAS9mB,OjDyHlB,yBiDrHtB+mB,GAAwB,kBAAMD,IAAS9mB,OjDsHlB,kBiDlHrBgnB,GAA6B,kBAAMF,IAAS9mB,OjDmHjB,mBkDtBzBinB,GCxFAA,aApBgB,SAAC9oB,GAC5B,MAA2CA,EAAMY,QAGjD,MAAO,CACHmoB,WAJJ,EAAOppB,qBAKHC,WALJ,EAA6BA,WAMzBsU,KALuBlU,EAAMkU,KAA1B8U,qBASuB,SAACtoB,GAAD,MAAoB,CAClDuoB,YAAa,WACTvoB,GjDkT+B,SAACwoB,GACpCA,EAAUrpB,GAAkB,OiDlTxB6oB,KACAE,KACAC,SD4FOC,EAtFiB,SAAC,GAAmE,IAAlEC,EAAiE,EAAjEA,WAAYnpB,EAAqD,EAArDA,WAAYqpB,EAAyC,EAAzCA,YAAa/U,EAA4B,EAA5BA,KACnE,EAAuCiV,oBAAS,GAAhD,oBAAOC,EAAP,KAAmBC,EAAnB,KACA,EAAgCF,qBAAhC,oBAAOG,EAAP,KAAiBC,EAAjB,KACM3B,EAAO4B,aAAiB,CAACC,UlD5BS,KkDwDxC,GA1BAC,qBAAU,WACN,GAAIX,EAEA,GAA8B,SDzBDJ,IAAS7f,IjD2Hf,wBkDjGdwgB,IACDC,EAAY,CAACI,aDnBYhB,IAAS7f,IjDqHd,kBkDlGkC8gB,cDvBlCjB,IAAS7f,IjDwHf,mBkDhGdugB,GAAiB,QAIpB,CACD,IAAMQ,EDda,SAACjqB,GAChC,IAAIiqB,EAEE5hB,EAAS,IAAI7D,IAAI/B,OAAOC,SAASC,KAAKxO,qBAAqB+1B,aAC3DC,EAAgB9hB,EAAOa,IjDwGQ,YiDvG/BkhB,EAAmB/hB,EAAOa,IjDwGE,eiD3FlC,OAXIlJ,EAAWqqB,WACXrqB,EAAWqqB,UAAUpsB,SAAQ,SAAAyrB,GACrBA,EAASK,cAAT,OAAyBI,QAAzB,IAAyBA,KAAe/kB,SAASskB,EAASK,eACtDK,KACAH,EAAmBP,GACFM,cAAgBI,MAM1CH,ECJ8BK,CAAoBtqB,GAC7C2pB,EAAYM,GAERP,GAAYA,EAASK,cAAgBL,EAASM,gBDnCzBjB,IAASjnB,IjD0Hf,uBiD1HM,QAQDyoB,EC6BIb,EAASK,aD7BUhB,IAASjnB,IjDoHhC,iBiDpH8DyoB,GAJnEzrB,ECkCI4qB,EAASM,cDlCGjB,IAASjnB,IjDuH1B,gBiDvHkDhD,GCmChE2qB,GAAiB,SAIzBA,GAAiB,GDvCK,IAAC3qB,EAIKyrB,ICqCjC,CAACpB,EAAYnpB,EAAY0pB,KAEvBF,EAAY,OAAO,KACxB,IAAOgB,EAAqDlW,EAArDkW,oBAAqBC,EAAgCnW,EAAhCmW,cAAeC,EAAiBpW,EAAjBoW,cAQ3C,OACI,kBAAChD,GAAD,CAAiBM,KAAMA,EAAM2C,cAAY,iBACrC,kBAAC/B,GAAA,EAAD,CAAM7E,WAAS,EAAC5Y,UAAU,MAAMyf,WAAW,UACvC,kBAAChC,GAAA,EAAD,CAAMjlB,MAAI,EAACwC,GAAI,EAAGC,GAAI,GAClB,kBAACiiB,GAAD,CAAkB9qB,KAAK,SAASstB,QAV/B,WDvCG,IAAC/rB,ECwCb4qB,GAAYA,EAASM,gBDxCRlrB,ECyCE4qB,EAASM,cDxChClB,KACAE,KACAC,KACAxmB,OAAOC,SAASC,KAAO7D,IC6C4C6rB,cAAY,oCAC3D,yBACIG,MAAM,KACNtD,OAAO,KACPuD,IAAK9e,GAAc,uCACnB+e,IAAKR,IAET,8BACKlW,EAAK2W,WACN,yBACIF,IAAK9e,GAAc,iBAAD,cAAkByd,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAUK,aAA5B,8BAClBiB,IAAG,iBAAKtB,QAAL,IAAKA,OAAL,EAAKA,EAAUK,aAAf,cAKnB,kBAACpB,GAAD,CAAehlB,MAAI,EAACwC,GAAI,EAAGC,GAAI,GAC3B,kBAAC+hB,GAAD,KACI,kBAACF,GAAD,CACI6C,MAAM,KACNtD,OAAO,KACPuD,IAAK9e,GAAc,wCACnB+e,IAAKP,IAERnW,EAAKzD,QAGd,kBAACgY,GAAD,CAAiBllB,MAAI,EAACwC,GAAI,EAAGC,GAAI,GAC7B,4BACI7I,KAAK,SACLstB,QAASxB,EACTsB,cAAY,6BACZO,aAAYR,GAEZ,yBAAKK,IAAK9e,GAAc,2BAA4B+e,IAAKN,W,UExF7E,GAAU,WAaZ,OAZA,GAAU34B,OAAOsC,QAAU,SAAkBC,GAC3C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAG9C,IAAK,IAAII,KAFTL,EAAIG,UAAUF,GAGRzC,OAAO8C,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAI7D,OAAON,IAGMU,MAAMC,KAAMP,YAGzB,GAAkB,SAAyBmH,GAC7C,IAAIsvB,EAAOtvB,EAAGsvB,KACVnP,EAAWngB,EAAGmgB,SACdoP,EAAUvvB,EAAGuvB,QACbC,EAAe,CACjBC,WAAY,WAAaF,EAAU,iBACnCG,QAAS,GAEPC,EAAmB,CACrBC,SAAU,CACRF,QAAS,GAEXG,QAAS,CACPH,QAAS,GAEXI,QAAS,CACPJ,QAAS,GAEXK,OAAQ,CACNL,QAAS,IAGb,OAAO,IAAM3mB,cAAcinB,GAAA,EAAY,CACrCC,GAAIX,EACJC,QAASA,EACTW,eAAe,IACd,SAAU3rB,GACX,OAAO,IAAMwE,cAAc,MAAO,CAChCjI,MAAO,GAAQ,GAAQ,GAAI0uB,GAAeG,EAAiBprB,KAC1D4b,OCzCQkN,gBAhBgB,SAAC9oB,GAC5B,MAA2DA,EAAMY,QAA1DhC,EAAP,EAAOA,uBAAwBY,EAA/B,EAA+BA,aAAcE,EAA7C,EAA6CA,WAC9BksB,EAAiB5rB,EAAxBkU,KAAO0X,aAETC,EAAajtB,ErDgGW,0BAFP,oBqD3FvB,MAAO,CACHY,eACAssB,mBAJuBrqB,IAAQqH,IAAI+iB,GAKnCnsB,aACAmsB,aACA3X,KAAM0X,MCdDG,GAAoB,WAC7B,IAAMC,EAAI3lB,KACV,SAAI2lB,KAAMA,EAAEznB,SAAS4hB,etD8HQ,wBsD9H8B6F,EAAEC,cAAgBD,EAAEC,aAAaC,mBAInFC,GAAiB,WAC1B,IAAMH,EAAI3lB,KACV,SAAI2lB,KAAMA,EAAEznB,SAAS4hB,etDwHQ,wBsDxH8B6F,EAAEC,cAAgBD,EAAEC,aAAaG,2BAWnFC,GAAuB,WAChC,IAAML,EAAI3lB,KACV,SAAI2lB,KAAMA,EAAEznB,SAAS4hB,etD2GQ,wBsD3G8B6F,EAAEC,cAAgBD,EAAEC,aAAaK,sB,UCpBnFC,GAAYhF,KAAOC,IAAV,0EAAGD,CAAH,wLAOD,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ+E,QAAQC,QAAQC,UAC1D,SAACxW,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAKxF,QAAQyF,cACpE,SAAC1W,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUmF,WAGxDC,GAAcvF,aAAOwF,MAAV,4EAAGxF,CAAH,wEAKXyF,GAASzF,KAAOC,IAAV,uEAAGD,CAAH,6EAKN0F,GAAiB1F,KAAOW,OAAV,+EAAGX,CAAH,6LAQd,qBAAET,MAAiBW,QAAQvT,KAAKiT,WAKhC+F,GAAW3F,aAAOwF,MAAV,yEAAGxF,CAAH,oD,UTpBjB4F,GAAiB,SAAuBC,EAAGC,GAW7C,OAVAF,GAAiBx7B,OAAOmlB,gBAAkB,CACxCC,UAAW,cACAlH,OAAS,SAAUud,EAAGC,GACjCD,EAAErW,UAAYsW,IACX,SAAUD,EAAGC,GAChB,IAAK,IAAI74B,KAAK64B,EACRA,EAAE34B,eAAeF,KAAI44B,EAAE54B,GAAK64B,EAAE74B,MAIhB44B,EAAGC,IAG3B,SAASC,GAAUF,EAAGC,GAGpB,SAASE,IACP14B,KAAKihB,YAAcsX,EAHrBD,GAAeC,EAAGC,GAMlBD,EAAE34B,UAAkB,OAAN44B,EAAa17B,OAAO0V,OAAOgmB,IAAME,EAAG94B,UAAY44B,EAAE54B,UAAW,IAAI84B,GAKjF,IAAIC,GAAa,GAAG94B,eAEE,qBAAX2N,SACTA,OAAOorB,SAAsC,QAA1B,GAAKprB,OAAOorB,gBAA6B,IAAP,GAAgB,GAAK,CACxEC,WAAY,SAAoBC,GACzBtrB,OAAOorB,SAASE,KACnBtrB,OAAOorB,SAASE,GAAa,IAAIC,GAAA,EAAc,OAMvD,IAgFIC,GArCAC,GA3CU,WACZ,SAASC,KAuCT,OArCAp8B,OAAO4kB,eAAewX,EAAS,WAAY,CACzCjlB,IAAK,WAEH,OADKjU,KAAKm5B,WAAUn5B,KAAKm5B,SAAW,IAAIn5B,MACjCA,KAAKm5B,UAEd5X,YAAY,EACZC,cAAc,IAGhB0X,EAAQt5B,UAAUw5B,WAAa,SAAUzoB,GACvC,MAAO,KAAOA,GAGhBuoB,EAAQt5B,UAAUy5B,KAAO,SAAU1oB,EAAMuD,GACvC,IAAIolB,EAASt5B,KAAKo5B,WAAWzoB,GAC7BnD,OAAOorB,SAASU,KAAY9rB,OAAOorB,SAASU,GAAU,IAAIP,GAAA,EAAc,IACxEvrB,OAAOorB,SAASU,GAAQ/4B,KAAK2T,IAG/BglB,EAAQt5B,UAAU25B,OAAS,SAAU5oB,EAAM6oB,GACzC,IAAIF,EAASt5B,KAAKo5B,WAAWzoB,GAE7B,OADAnD,OAAOorB,SAASU,KAAY9rB,OAAOorB,SAASU,GAAU,IAAIP,GAAA,EAAc,IACjEvrB,OAAOorB,SAASU,GAAQG,UAAUD,IAG3CN,EAAQt5B,UAAU85B,QAAU,WAC1B,IAAId,EAAWprB,OAAOorB,SAEtB,IAAK,IAAItU,KAAQsU,EACXD,GAAW74B,KAAK84B,EAAUtU,IAC5BsU,EAAStU,GAAMoV,UAInBlsB,OAAOorB,SAAW,IAGbM,EAxCK,GA2CUS,SAEpBC,GAAY,WACd,SAASA,IACP55B,KAAK65B,cAAgB,GA8BvB,OA3BAD,EAAUh6B,UAAUk6B,YAAc,SAAUC,EAAO7lB,GACjD+kB,GAAUI,KAAKU,EAAO7lB,IAGxB0lB,EAAUh6B,UAAUo6B,iBAAmB,SAAUD,EAAOE,GACtD,IAAIC,EAAejB,GAAUM,OAAOQ,EAAOE,GAC3C,GAAIF,KAAS/5B,KAAK65B,cAAe,MAAM,IAAIx5B,MAAM,4CAA8C05B,GAE/F,OADA/5B,KAAK65B,cAAcE,GAASG,EACrB,CACLA,aAAcA,IAIlBN,EAAUh6B,UAAUu6B,eAAiB,WACnC,IAAIpU,EAAQ/lB,KAEZ,IACElD,OAAOwvB,KAAKtsB,KAAK65B,eAAe7wB,SAAQ,SAAU4X,GAChDmF,EAAM8T,cAAcjZ,GAAKwZ,qBAElBrU,EAAM8T,cAAcjZ,MAE7B,MAAOha,GACP,MAAM,IAAIvG,MAAM,gDAIbu5B,EAhCO,IAqChB,SAAWZ,GACTA,EAAe,OAAI,SACnBA,EAAgB,QAAI,UACpBA,EAAyB,iBAAI,mBAC7BA,EAAkC,0BAAI,4BACtCA,EAA4B,oBAAI,sBAChCA,EAAqC,6BAAI,+BACzCA,EAAyB,iBAAI,mBAC7BA,EAAkC,0BAAI,4BACtCA,EAA8B,sBAAI,wBAClCA,EAAuC,+BAAI,iCAC3CA,EAAkC,0BAAI,4BACtCA,EAA2C,mCAAI,qCAC/CA,EAAkC,0BAAI,4BACtCA,EAA2C,mCAAI,qCAC/CA,EAAqC,6BAAI,+BACzCA,EAA8C,sCAAI,wCAClDA,EAAiC,yBAAI,2BACrCA,EAA0C,kCAAI,oCAC9CA,EAAqC,6BAAI,+BACzCA,EAA8C,sCAAI,wCAClDA,EAAiC,yBAAI,2BACrCA,EAA0C,kCAAI,oCAC9CA,EAAkC,0BAAI,4BACtCA,EAA2C,mCAAI,qCAC/CA,EAA4B,oBAAI,sBAChCA,EAAqC,6BAAI,+BACzCA,EAA4B,oBAAI,sBAChCA,EAAqC,6BAAI,+BACzCA,EAAuB,eAAI,iBAC3BA,EAAgC,wBAAI,0BACpCA,EAAuB,eAAI,iBAC3BA,EAAgC,wBAAI,0BACpCA,EAA0B,kBAAI,oBAC9BA,EAAmC,2BAAI,6BACvCA,EAA0B,kBAAI,oBAC9BA,EAAmC,2BAAI,6BACvCA,EAA8B,sBAAI,wBAClCA,EAA4B,oBAAI,sBAChCA,EAAqC,6BAAI,+BACzCA,EAA8B,sBAAI,wBAClCA,EAAgC,wBAAI,0BACpCA,EAAkC,0BAAI,4BACtCA,EAA0D,kDAAI,oDAC9DA,EAAgC,wBAAI,0BACpCA,EAA8C,sCAAI,wCAClDA,EAAmC,2BAAI,6BACvCA,EAAqC,6BAAI,+BACzCA,EAA2C,mCAAI,qCAC/CA,EAAqB,aAAI,eACzBA,EAAoB,YAAI,cACxBA,EAAiC,yBAAI,2BACrCA,EAA4B,oBAAI,sBAChCA,EAA2B,mBAAI,qBAC/BA,EAA+B,uBAAI,yBAtDrC,CAuDGA,KAAWA,GAAS,KAEvB,IAAIqB,GAAWrB,GAoBXsB,IAlBY,SAAUC,GAGxB,SAASC,IACP,OAAkB,OAAXD,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAU+B,EAAWD,GAMrBC,EAAU56B,UAAU66B,QAAU,SAAUvmB,GACtCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASK,OAAQxmB,IAG3DsmB,EAAU56B,UAAU65B,UAAY,SAAUkB,GACxC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASK,OAAQC,IAZzD,CAgBdf,IAEkB,SAAUW,GAG5B,SAASD,IACP,OAAkB,OAAXC,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU6B,EAAeC,GAMzBD,EAAc16B,UAAU66B,QAAU,WAChCF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASO,iBAGnDN,EAAc16B,UAAU65B,UAAY,SAAUkB,GAC5C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASO,eAAgBD,IAGxEL,EAfW,CAgBlBV,KAEEiB,GAAwB,SAAUN,GAGpC,SAASM,IACP,OAAkB,OAAXN,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUoC,EAAuBN,GAMjCM,EAAsBj7B,UAAU66B,QAAU,SAAUvmB,GAClDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASS,wBAAyB5mB,IAG5E2mB,EAAsBj7B,UAAU65B,UAAY,SAAUkB,GACpD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASS,wBAAyBH,IAGjFE,EAfmB,CAgB1BjB,IAEEmB,GAAgB,SAAUR,GAG5B,SAASQ,IACP,OAAkB,OAAXR,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUsC,EAAeR,GAMzBQ,EAAcn7B,UAAU66B,QAAU,SAAUvmB,GAC1CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASW,eAAgB9mB,IAGnE6mB,EAAcn7B,UAAU65B,UAAY,SAAUkB,GAC5C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASW,eAAgBL,IAGxEI,EAfW,CAgBlBnB,IAEEqB,GAAwB,SAAUV,GAGpC,SAASU,IACP,OAAkB,OAAXV,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUwC,EAAuBV,GAMjCU,EAAsBr7B,UAAU66B,QAAU,SAAUvmB,GAClDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASa,wBAAyBhnB,IAG5E+mB,EAAsBr7B,UAAU65B,UAAY,SAAUkB,GACpD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASa,wBAAyBP,IAGjFM,EAfmB,CAgB1BrB,IAEEuB,GAAmB,SAAUZ,GAG/B,SAASY,IACP,OAAkB,OAAXZ,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU0C,EAAkBZ,GAM5BY,EAAiBv7B,UAAU66B,QAAU,SAAUvmB,GAC7CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASe,kBAAmBlnB,IAGtEinB,EAAiBv7B,UAAU65B,UAAY,SAAUkB,GAC/C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASe,kBAAmBT,IAG3EQ,EAfc,CAgBrBvB,IAEEyB,GAA2B,SAAUd,GAGvC,SAASc,IACP,OAAkB,OAAXd,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU4C,EAA0Bd,GAMpCc,EAAyBz7B,UAAU66B,QAAU,SAAUvmB,GACrDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASiB,2BAA4BpnB,IAG/EmnB,EAAyBz7B,UAAU65B,UAAY,SAAUkB,GACvD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASiB,2BAA4BX,IAGpFU,EAfsB,CAgB7BzB,IAoBE2B,IAlBiB,SAAUhB,GAG7B,SAASiB,IACP,OAAkB,OAAXjB,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAU+C,EAAgBjB,GAM1BiB,EAAe57B,UAAU66B,QAAU,SAAUvmB,GAC3CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASoB,mCAAoCvnB,IAGvFsnB,EAAe57B,UAAU65B,UAAY,SAAUkB,GAC7C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASoB,mCAAoCd,IAZhF,CAgBnBf,IAEW,SAAUW,GAGrB,SAASgB,IACP,OAAkB,OAAXhB,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU8C,EAAQhB,GAMlBgB,EAAO37B,UAAU66B,QAAU,SAAUvmB,GACnCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASqB,iBAAkBxnB,IAGrEqnB,EAAO37B,UAAU65B,UAAY,SAAUkB,GACrC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASqB,iBAAkBf,IAG1EY,EAfI,CAgBX3B,KAEE+B,GAAiB,SAAUpB,GAG7B,SAASoB,IACP,OAAkB,OAAXpB,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUkD,EAAgBpB,GAM1BoB,EAAe/7B,UAAU66B,QAAU,SAAUvmB,GAC3CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASuB,0BAA2B1nB,IAG9EynB,EAAe/7B,UAAU65B,UAAY,SAAUkB,GAC7C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASuB,0BAA2BjB,IAGnFgB,EAfY,CAgBnB/B,IAEEiC,GAAS,SAAUtB,GAGrB,SAASsB,IACP,OAAkB,OAAXtB,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUoD,EAAQtB,GAMlBsB,EAAOj8B,UAAU66B,QAAU,SAAUvmB,GACnCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASyB,iBAAkB5nB,IAGrE2nB,EAAOj8B,UAAU65B,UAAY,SAAUkB,GACrC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASyB,iBAAkBnB,IAG1EkB,EAfI,CAgBXjC,IAEEmC,GAAiB,SAAUxB,GAG7B,SAASwB,IACP,OAAkB,OAAXxB,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUsD,EAAgBxB,GAM1BwB,EAAen8B,UAAU66B,QAAU,SAAUvmB,GAC3CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS2B,0BAA2B9nB,IAG9E6nB,EAAen8B,UAAU65B,UAAY,SAAUkB,GAC7C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS2B,0BAA2BrB,IAGnFoB,EAfY,CAgBnBnC,IAEEqC,GAAa,SAAU1B,GAGzB,SAAS0B,IACP,OAAkB,OAAX1B,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUwD,EAAY1B,GAMtB0B,EAAWr8B,UAAU66B,QAAU,SAAUvmB,GACvCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS6B,sBAAuBhoB,IAG1E+nB,EAAWr8B,UAAU65B,UAAY,SAAUkB,GACzC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS6B,sBAAuBvB,IAG/EsB,EAfQ,CAgBfrC,IAEEuC,GAAqB,SAAU5B,GAGjC,SAAS4B,IACP,OAAkB,OAAX5B,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU0D,EAAoB5B,GAM9B4B,EAAmBv8B,UAAU66B,QAAU,SAAUvmB,GAC/CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS+B,+BAAgCloB,IAGnFioB,EAAmBv8B,UAAU65B,UAAY,SAAUkB,GACjD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS+B,+BAAgCzB,IAGxFwB,EAfgB,CAgBvBvC,IAEEyC,GAAc,SAAU9B,GAG1B,SAAS8B,IACP,OAAkB,OAAX9B,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU4D,EAAa9B,GAMvB8B,EAAYz8B,UAAU66B,QAAU,SAAUvmB,GACxCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASiC,0BAA2BpoB,IAG9EmoB,EAAYz8B,UAAU65B,UAAY,SAAUkB,GAC1C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASiC,0BAA2B3B,IAGnF0B,EAfS,CAgBhBzC,IAEE2C,GAAsB,SAAUhC,GAGlC,SAASgC,IACP,OAAkB,OAAXhC,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU8D,EAAqBhC,GAM/BgC,EAAoB38B,UAAU66B,QAAU,SAAUvmB,GAChDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASmC,mCAAoCtoB,IAGvFqoB,EAAoB38B,UAAU65B,UAAY,SAAUkB,GAClD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASmC,mCAAoC7B,IAG5F4B,EAfiB,CAgBxB3C,IAEE6C,GAAgB,SAAUlC,GAG5B,SAASkC,IACP,OAAkB,OAAXlC,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUgE,EAAelC,GAMzBkC,EAAc78B,UAAU66B,QAAU,SAAUvmB,GAC1CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASqC,6BAA8BxoB,IAGjFuoB,EAAc78B,UAAU65B,UAAY,SAAUkB,GAC5C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASqC,6BAA8B/B,IAGtF8B,EAfW,CAgBlB7C,IAEE+C,GAAwB,SAAUpC,GAGpC,SAASoC,IACP,OAAkB,OAAXpC,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUkE,EAAuBpC,GAMjCoC,EAAsB/8B,UAAU66B,QAAU,SAAUvmB,GAClDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASuC,sCAAuC1oB,IAG1FyoB,EAAsB/8B,UAAU65B,UAAY,SAAUkB,GACpD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASuC,sCAAuCjC,IAG/FgC,EAfmB,CAgB1B/C,IAEEiD,GAAc,SAAUtC,GAG1B,SAASsC,IACP,OAAkB,OAAXtC,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUoE,EAAatC,GAMvBsC,EAAYj9B,UAAU66B,QAAU,SAAUvmB,GACxCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASyC,0BAA2B5oB,IAG9E2oB,EAAYj9B,UAAU65B,UAAY,SAAUkB,GAC1C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASyC,0BAA2BnC,IAGnFkC,EAfS,CAgBhBjD,IAEEmD,GAAsB,SAAUxC,GAGlC,SAASwC,IACP,OAAkB,OAAXxC,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUsE,EAAqBxC,GAM/BwC,EAAoBn9B,UAAU66B,QAAU,SAAUvmB,GAChDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS2C,mCAAoC9oB,IAGvF6oB,EAAoBn9B,UAAU65B,UAAY,SAAUkB,GAClD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS2C,mCAAoCrC,IAG5FoC,EAfiB,CAgBxBnD,IAsCEqD,IApCa,SAAU1C,GAGzB,SAAS2C,IACP,OAAkB,OAAX3C,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAUyE,EAAY3C,GAMtB2C,EAAWt9B,UAAU66B,QAAU,SAAUvmB,GACvCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS8C,yBAA0BjpB,IAG7EgpB,EAAWt9B,UAAU65B,UAAY,SAAUkB,GACzC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS8C,yBAA0BxC,IAZ1E,CAgBff,IAEuB,SAAUW,GAGjC,SAAS6C,IACP,OAAkB,OAAX7C,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAU2E,EAAoB7C,GAM9B6C,EAAmBx9B,UAAU66B,QAAU,SAAUvmB,GAC/CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASgD,kCAAmCnpB,IAGtFkpB,EAAmBx9B,UAAU65B,UAAY,SAAUkB,GACjD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASgD,kCAAmC1C,IAZ3E,CAgBvBf,IAEgB,SAAUW,GAG1B,SAAS0C,IACP,OAAkB,OAAX1C,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUwE,EAAa1C,GAMvB0C,EAAYr9B,UAAU66B,QAAU,SAAUvmB,GACxCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASiD,0BAA2BppB,IAG9E+oB,EAAYr9B,UAAU65B,UAAY,SAAUkB,GAC1C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASiD,0BAA2B3C,IAGnFsC,EAfS,CAgBhBrD,KAEE2D,GAAsB,SAAUhD,GAGlC,SAASgD,IACP,OAAkB,OAAXhD,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU8E,EAAqBhD,GAM/BgD,EAAoB39B,UAAU66B,QAAU,SAAUvmB,GAChDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASmD,mCAAoCtpB,IAGvFqpB,EAAoB39B,UAAU65B,UAAY,SAAUkB,GAClD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASmD,mCAAoC7C,IAG5F4C,EAfiB,CAgBxB3D,IAEE6D,GAAY,SAAUlD,GAGxB,SAASkD,IACP,OAAkB,OAAXlD,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUgF,EAAWlD,GAMrBkD,EAAU79B,UAAU66B,QAAU,SAAUvmB,GACtCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASqD,oBAAqBxpB,IAGxEupB,EAAU79B,UAAU65B,UAAY,SAAUkB,GACxC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASqD,oBAAqB/C,IAG7E8C,EAfO,CAgBd7D,IAEE+D,GAAoB,SAAUpD,GAGhC,SAASoD,IACP,OAAkB,OAAXpD,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUkF,EAAmBpD,GAM7BoD,EAAkB/9B,UAAU66B,QAAU,SAAUvmB,GAC9CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASuD,6BAA8B1pB,IAGjFypB,EAAkB/9B,UAAU65B,UAAY,SAAUkB,GAChD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASuD,6BAA8BjD,IAGtFgD,EAfe,CAgBtB/D,IAEEiE,GAAiB,SAAUtD,GAG7B,SAASsD,IACP,OAAkB,OAAXtD,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUoF,EAAgBtD,GAM1BsD,EAAej+B,UAAU66B,QAAU,SAAUvmB,GAC3CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASyD,6BAA8B5pB,IAGjF2pB,EAAej+B,UAAU65B,UAAY,SAAUkB,GAC7C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASyD,6BAA8BnD,IAGtFkD,EAfY,CAgBnBjE,IAEEmE,GAAyB,SAAUxD,GAGrC,SAASwD,IACP,OAAkB,OAAXxD,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUsF,EAAwBxD,GAMlCwD,EAAuBn+B,UAAU66B,QAAU,SAAUvmB,GACnDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS2D,sCAAuC9pB,IAG1F6pB,EAAuBn+B,UAAU65B,UAAY,SAAUkB,GACrD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS2D,sCAAuCrD,IAG/FoD,EAfoB,CAgB3BnE,IAEEqE,GAAa,SAAU1D,GAGzB,SAAS0D,IACP,OAAkB,OAAX1D,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUwF,EAAY1D,GAMtB0D,EAAWr+B,UAAU66B,QAAU,SAAUvmB,GACvCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS6D,yBAA0BhqB,IAG7E+pB,EAAWr+B,UAAU65B,UAAY,SAAUkB,GACzC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS6D,yBAA0BvD,IAGlFsD,EAfQ,CAgBfrE,IAEEuE,GAAqB,SAAU5D,GAGjC,SAAS4D,IACP,OAAkB,OAAX5D,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU0F,EAAoB5D,GAM9B4D,EAAmBv+B,UAAU66B,QAAU,SAAUvmB,GAC/CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS+D,kCAAmClqB,IAGtFiqB,EAAmBv+B,UAAU65B,UAAY,SAAUkB,GACjD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS+D,kCAAmCzD,IAG3FwD,EAfgB,CAgBvBvE,IAEEyE,GAAY,SAAU9D,GAGxB,SAAS8D,IACP,OAAkB,OAAX9D,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU4F,EAAW9D,GAMrB8D,EAAUz+B,UAAU66B,QAAU,SAAUvmB,GACtCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASiE,oBAAqBpqB,IAGxEmqB,EAAUz+B,UAAU65B,UAAY,SAAUkB,GACxC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASiE,oBAAqB3D,IAG7E0D,EAfO,CAgBdzE,IAEE2E,GAAoB,SAAUhE,GAGhC,SAASgE,IACP,OAAkB,OAAXhE,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAU8F,EAAmBhE,GAM7BgE,EAAkB3+B,UAAU66B,QAAU,SAAUvmB,GAC9CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASmE,6BAA8BtqB,IAGjFqqB,EAAkB3+B,UAAU65B,UAAY,SAAUkB,GAChD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASmE,6BAA8B7D,IAGtF4D,EAfe,CAgBtB3E,IAEE6E,GAAY,SAAUlE,GAGxB,SAASkE,IACP,OAAkB,OAAXlE,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUgG,EAAWlE,GAMrBkE,EAAU7+B,UAAU66B,QAAU,SAAUvmB,GACtCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASqE,oBAAqBxqB,IAGxEuqB,EAAU7+B,UAAU65B,UAAY,SAAUkB,GACxC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASqE,oBAAqB/D,IAG7E8D,EAfO,CAgBd7E,IAEE+E,GAAoB,SAAUpE,GAGhC,SAASoE,IACP,OAAkB,OAAXpE,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUkG,EAAmBpE,GAM7BoE,EAAkB/+B,UAAU66B,QAAU,SAAUvmB,GAC9CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASuE,6BAA8B1qB,IAGjFyqB,EAAkB/+B,UAAU65B,UAAY,SAAUkB,GAChD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASuE,6BAA8BjE,IAGtFgE,EAfe,CAgBtB/E,IA4FEiF,IA1FkB,SAAUtE,GAG9B,SAASuE,IACP,OAAkB,OAAXvE,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAUqG,EAAiBvE,GAM3BuE,EAAgBl/B,UAAU66B,QAAU,SAAUvmB,GAC5CqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS0E,kBAAmB7qB,IAGtE4qB,EAAgBl/B,UAAU65B,UAAY,SAAUkB,GAC9C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS0E,kBAAmBpE,IAZ9D,CAgBpBf,IAE4B,SAAUW,GAGtC,SAASyE,IACP,OAAkB,OAAXzE,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAUuG,EAAyBzE,GAMnCyE,EAAwBp/B,UAAU66B,QAAU,SAAUvmB,GACpDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS4E,2BAA4B/qB,IAG/E8qB,EAAwBp/B,UAAU65B,UAAY,SAAUkB,GACtD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS4E,2BAA4BtE,IAZ/D,CAgB5Bf,IAE8B,SAAUW,GAGxC,SAAS2E,IACP,OAAkB,OAAX3E,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAUyG,EAA2B3E,GAMrC2E,EAA0Bt/B,UAAU66B,QAAU,WAC5CF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS8E,+BAGnDD,EAA0Bt/B,UAAU65B,UAAY,SAAUkB,GACxD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS8E,6BAA8BxE,IAZ/D,CAgB9Bf,IAEwB,SAAUW,GAGlC,SAAS6E,IACP,OAAkB,OAAX7E,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAU2G,EAAqB7E,GAM/B6E,EAAoBx/B,UAAU66B,QAAU,SAAUvmB,GAChDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASgF,sBAAuBnrB,IAG1EkrB,EAAoBx/B,UAAU65B,UAAY,SAAUkB,GAClD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASgF,sBAAuB1E,IAZ9D,CAgBxBf,IAEsB,SAAUW,GAGhC,SAAS+E,IACP,OAAkB,OAAX/E,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAU6G,EAAmB/E,GAM7B+E,EAAkB1/B,UAAU66B,QAAU,WACpCF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASkF,sBAGnDD,EAAkB1/B,UAAU65B,UAAY,SAAUkB,GAChD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASkF,oBAAqB5E,IAZ9D,CAgBtBf,IAE2B,SAAUW,GAGrC,SAASsE,IACP,OAAkB,OAAXtE,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUoG,EAAwBtE,GAMlCsE,EAAuBj/B,UAAU66B,QAAU,SAAUvmB,GACnDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASmF,sBAAuBtrB,IAG1E2qB,EAAuBj/B,UAAU65B,UAAY,SAAUkB,GACrD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASmF,sBAAuB7E,IAG/EkE,EAfoB,CAgB3BjF,KAEE6F,GAA2B,SAAUlF,GAGvC,SAASkF,IACP,OAAkB,OAAXlF,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUgH,EAA0BlF,GAMpCkF,EAAyB7/B,UAAU66B,QAAU,WAC3CF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASqF,0BAGnDD,EAAyB7/B,UAAU65B,UAAY,SAAUkB,GACvD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASqF,wBAAyB/E,IAGjF8E,EAfsB,CAgB7B7F,IAEE+F,GAA6B,SAAUpF,GAGzC,SAASoF,IACP,OAAkB,OAAXpF,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUkH,EAA4BpF,GAMtCoF,EAA2B//B,UAAU66B,QAAU,WAC7CF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASuF,4BAGnDD,EAA2B//B,UAAU65B,UAAY,SAAUkB,GACzD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASuF,0BAA2BjF,IAGnFgF,EAfwB,CAgB/B/F,IAEEiG,GAAkD,SAAUtF,GAG9D,SAASsF,IACP,OAAkB,OAAXtF,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUoH,EAAiDtF,GAM3DsF,EAAgDjgC,UAAU66B,QAAU,WAClEF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASyF,oDAGnDD,EAAgDjgC,UAAU65B,UAAY,SAAUkB,GAC9E,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASyF,kDAAmDnF,IAG3GkF,EAf6C,CAgBpDjG,IA0EEmG,IAxE2B,SAAUxF,GAGvC,SAASyF,IACP,OAAkB,OAAXzF,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAUuH,EAA0BzF,GAMpCyF,EAAyBpgC,UAAU66B,QAAU,WAC3CF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS4F,0BAGnDD,EAAyBpgC,UAAU65B,UAAY,SAAUkB,GACvD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS4F,wBAAyBtF,IAZ3D,CAgB7Bf,IAE8B,SAAUW,GAGxC,SAAS2F,IACP,OAAkB,OAAX3F,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAUyH,EAA2B3F,GAMrC2F,EAA0BtgC,UAAU66B,QAAU,SAAUvmB,GACtDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS8F,sCAAuCjsB,IAG1FgsB,EAA0BtgC,UAAU65B,UAAY,SAAUkB,GACxD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS8F,sCAAuCxF,IAZxE,CAgB9Bf,IAE4B,SAAUW,GAGtC,SAAS6F,IACP,OAAkB,OAAX7F,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAU2H,EAAyB7F,GAMnC6F,EAAwBxgC,UAAU66B,QAAU,SAAUvmB,GACpDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASgG,2BAA4BnsB,IAG/EksB,EAAwBxgC,UAAU65B,UAAY,SAAUkB,GACtD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASgG,2BAA4B1F,IAZ/D,CAgB5Bf,IAE0B,SAAUW,GAGpC,SAAS+F,IACP,OAAkB,OAAX/F,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAU6H,EAAuB/F,GAMjC+F,EAAsB1gC,UAAU66B,QAAU,SAAUvmB,GAClDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASkG,6BAA8BrsB,IAGjFosB,EAAsB1gC,UAAU65B,UAAY,SAAUkB,GACpD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASkG,6BAA8B5F,IAZnE,CAgB1Bf,IAEmB,SAAUW,GAG7B,SAASwF,IACP,OAAkB,OAAXxF,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUsH,EAAgBxF,GAM1BwF,EAAengC,UAAU66B,QAAU,WACjCF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASmG,eAGnDT,EAAengC,UAAU65B,UAAY,SAAUkB,GAC7C,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASmG,aAAc7F,IAGtEoF,EAfY,CAgBnBnG,KAEE6G,GAAa,SAAUlG,GAGzB,SAASkG,IACP,OAAkB,OAAXlG,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUgI,EAAYlG,GAMtBkG,EAAW7gC,UAAU66B,QAAU,SAAUvmB,GACvCqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASqG,YAAaxsB,IAGhEusB,EAAW7gC,UAAU65B,UAAY,SAAUkB,GACzC,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASqG,YAAa/F,IAGrE8F,EAfQ,CAgBf7G,IAoBE+G,IAlBwB,SAAUpG,GAGpC,SAASqG,IACP,OAAkB,OAAXrG,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAH7Dy4B,GAAUmI,EAAuBrG,GAMjCqG,EAAsBhhC,UAAU66B,QAAU,SAAUvmB,GAClDqmB,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASwG,yBAA0B3sB,IAG7E0sB,EAAsBhhC,UAAU65B,UAAY,SAAUkB,GACpD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASwG,yBAA0BlG,IAZ/D,CAgB1Bf,IAEyB,SAAUW,GAGnC,SAASoG,IACP,OAAkB,OAAXpG,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUkI,EAAsBpG,GAMhCoG,EAAqB/gC,UAAU66B,QAAU,WACvCF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAASyG,sBAGnDH,EAAqB/gC,UAAU65B,UAAY,SAAUkB,GACnD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAASyG,oBAAqBnG,IAG7EgG,EAfkB,CAgBzB/G,KAEEmH,GAAsB,SAAUxG,GAGlC,SAASwG,IACP,OAAkB,OAAXxG,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUsI,EAAqBxG,GAM/BwG,EAAoBnhC,UAAU66B,QAAU,WACtCF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS2G,qBAGnDD,EAAoBnhC,UAAU65B,UAAY,SAAUkB,GAClD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS2G,mBAAoBrG,IAG5EoG,EAfiB,CAgBxBnH,IAEEqH,GAA0B,SAAU1G,GAGtC,SAAS0G,IACP,OAAkB,OAAX1G,GAAmBA,EAAOx6B,MAAMC,KAAMP,YAAcO,KAW7D,OAdAy4B,GAAUwI,EAAyB1G,GAMnC0G,EAAwBrhC,UAAU66B,QAAU,WAC1CF,EAAO36B,UAAUk6B,YAAYh6B,KAAKE,KAAMq6B,GAAS6G,yBAGnDD,EAAwBrhC,UAAU65B,UAAY,SAAUkB,GACtD,OAAOJ,EAAO36B,UAAUo6B,iBAAiBl6B,KAAKE,KAAMq6B,GAAS6G,uBAAwBvG,IAGhFsG,EAfqB,CAgB5BrH,IAEE,GAAsB,SAA6BuH,EAAKxG,GAC1D,OAAO,qBAAU,WACf,IAAIT,EAAeiH,EAAI1H,UAAUkB,GAAUT,aAC3C,OAAO,WACLA,EAAaE,iBAEd,KAmBDgH,GAAsC,SAA6CzG,GACrF,OAAO,GAAoB,IAAIgB,GAAkBhB,IAmE/C0G,GAA2B,SAAkC1G,GAC/D,OAAO,GAAoB,IAAIoF,GAAkBpF,IU7tCtC2G,GAA0B,WACnC,IAAIC,GAAoB,EACxB,GAAuB,qBAAZC,QACP,IAEIh0B,OAAOi0B,eAAeC,QADN,OACuB,KACvCl0B,OAAOi0B,eAAeE,WAFN,QAGhBJ,GAAoB,EACtB,MAAOn7B,GACLm7B,GAAoB,EAI5B,OAAOA,GAGEK,GAAkB,WAAoC,IAAnCC,EAAkC,wDACxDC,EAAwB,wBAC9B,GAAoD,OAAhDC,aAAaC,QAAQF,IAAmCD,EAAuB,CAC/E,IAAMI,EAAcvV,KAAKwV,OAAM,IAAIjtB,MAAOC,UAAY,KAAMqR,WAC5Dwb,aAAaL,QAAQI,EAAuBG,GAEhD,OAAOF,aAAaC,QAAQF,IAQnBK,GAAyB,SAACC,GAGnC,OAAkC,IAFVA,EAAWn7B,MAAM,KAElBvH,OACrB,CAAC0iC,EAAWC,OAAO,EAAG,GAAID,EAAWC,OAAO,EAAG,IAAI15B,KAAK,KACtDy5B,GCnBKE,GAAoB,SAACC,EAAe14B,EAAa24B,EAA2BC,GACrFttB,KACKutB,KAAK74B,EAAK04B,EAAU,CACjBI,iBAAiB,EACjBziC,QAAS,CAAC0iC,OAAQ,cAErBC,MAAK,SAAAvwB,GACFwwB,GAAcxwB,EAAUkwB,EAAsBC,GAC1CnB,MACAM,IAAgB,MAGvBmB,OAAM,SAAA38B,GAAK,OAAI48B,GAAY58B,EAAOo8B,EAAsBC,OAG3DK,GAAgB,SAACxwB,EAAUkwB,EAA2BC,GAAsB,IAAD,UAsBpB,EArBnDQ,EAAmB,CACrBC,OAAQ5wB,EAAS4wB,OACjBC,WAAY7wB,EAAS8wB,WACrBX,QAAO,OAAEA,QAAF,IAAEA,IAAW,IAGlBvuB,GAAO,UAAA5B,EAAS4B,YAAT,eAAeA,OAAQ,KAE9BmvB,EAAO,UAAG/wB,EAAS4B,YAAZ,aAAG,EAAeovB,QAEzBC,EAAe,UAAAjxB,EAAS4B,YAAT,SAAeovB,QAC9B,MACA,UAAAhxB,EAAS4B,YAAT,eAAesvB,eAAgB,qCAE/BC,EAAyD,2BACxDR,GADwD,IAE3D/uB,OACAmvB,UACAE,iBAGA,UAAAjxB,EAAS4B,YAAT,SAAeovB,SAAWhC,MD5BgB,SAAAptB,GAAS,IAAD,IAChDqC,GAAoB,OAAJrC,QAAI,IAAJA,GAAA,UAAAA,EAAMwvB,yBAAN,eAAyBhkC,QAAS,EAAI,OAAS,QACrE,UAAA8N,OAAOi0B,sBAAP,SAAuBC,QAAQ,mCAAoCnrB,GC2B/DotB,CAAkC,UAACrxB,EAAS4B,YAAV,aAAC,EAAeA,MAEtDsuB,EAAqB/H,QAAQgJ,IAG3BT,GAAc,SAAC58B,EAAOo8B,EAA2BC,GACnD,IAAIgB,EAEAA,EADAr9B,EAAMkM,SACc,CAChB4B,KAAM9N,EAAMkM,SAAS4B,KACrBgvB,OAAQ98B,EAAMkM,SAAS4wB,OACvBG,SAAS,EACTF,WAAY/8B,EAAMkM,SAAS8wB,WAC3BX,QAAO,OAAEA,QAAF,IAAEA,IAAW,IAEjBr8B,EAAM2F,QACO,CAChBmI,KAAM,KACNgvB,OAAQ98B,EAAM2F,QAAQm3B,OACtBG,SAAS,EACTF,WAAY/8B,EAAM2F,QAAQq3B,WAC1BX,QAAO,OAAEA,QAAF,IAAEA,IAAW,IAGJ,CAChBvuB,KAAM,KACNgvB,OAAQ,IACRG,SAAS,EACTF,WAAY/8B,EAAMw9B,QAClBnB,QAAO,OAAEA,QAAF,IAAEA,IAAW,IAG5BoB,IAAOz9B,MAAM,IAAI/F,MAAM+F,IACvBo8B,EAAqB/H,QAAQgJ,IClF3BK,GAAmB,IAAIxJ,GACvByJ,GAA2B,IAAIlJ,GAQxBmJ,GAAwB,SAACn6B,GAClC,IAAMo6B,EAAsBC,MDVA,SAACr6B,EAAa24B,GAC1CrtB,KACKlB,IAAIpK,EAAK,CACN84B,iBAAiB,IAEpBE,MAAK,SAAAvwB,GACFwwB,GAAcxwB,EAAUkwB,MAE3BO,OAAM,SAAA38B,GAAK,OAAI48B,GAAY58B,EAAOo8B,MCGvC2B,CAAiB,GAAD,OAAIt6B,EAAJ,qBAAoBo6B,GAAeF,KAGjDG,GAAmB,WAAO,IAAD,EACrBx2B,EAAI,UAAGF,cAAH,aAAG,EAAQC,SAASC,KAAKpC,cAC7B84B,EAAa,OAAG12B,QAAH,IAAGA,OAAH,EAAGA,EAAMyC,S1D8EF,c0D5EpBk0B,EAAe/C,KADM8C,EAAgBxC,IAAgB,GAAQA,KACF,GAC3D0C,EAAa13B,IAAQqH,I1DmBJ,Q0DlBvB,QAAmBpB,IAAfyxB,EAA0B,CAC1B,IAAMppB,EAAQopB,EAAW7c,QAAQ,KAC3B8c,EAAOD,EAAWp7B,UAAUgS,EAAQ,GAC1C,MAAM,OAAN,OAAcqpB,EAAd,cAAwBF,GAE5B,MAAM,MAAN,OAAaA,IC3BXG,GAAmB,IAAIzJ,GACvB0J,GAA2B,IAAIxJ,GAS/ByJ,G,mDACFtC,WAAa,E,KACbuC,WAAa,G,KACbt1B,QAAU,G,KACVH,iBAAmB,G,KACnB01B,eAAiB,G,KACjBC,OAAS,KAGPb,GAAwB,SAACn6B,EAAaqK,GACxC,IAAMquB,EAAW,IAAImC,GACrBnC,EAASH,WAAaD,GAAuBjuB,EAAKkuB,YAClDG,EAASoC,WAAazwB,EAAKywB,WAC3BpC,EAASlzB,QAAU6E,EAAK7E,QACxBkzB,EAASrzB,iBAAmBgF,EAAKhF,iBACjCqzB,EAASqC,eAAiB1wB,EAAK0wB,eAC/BrC,EAASsC,OAAS3wB,EAAK2wB,OAEvBvC,GAAkBC,EAAD,UAAc14B,EAAd,cAA+B46B,GAA0BvwB,EAAKuuB,UC5B7EqC,GAAsB,IAAI3J,GAC1B4J,GAA8B,IAAI1J,GASlC2J,G,mDACF5C,WAAa,E,KACbuC,WAAa,G,KACbz1B,iBAAmB,G,KACnB01B,eAAiB,G,KACjBC,OAAS,KAGPb,GAAwB,SAACn6B,EAAaqK,GACxC,IAAMquB,EAAW,IAAIyC,GACrBzC,EAASH,WAAaD,GAAuBjuB,EAAKkuB,YAClDG,EAASoC,WAAazwB,EAAKywB,WAC3BpC,EAASrzB,iBAAmBgF,EAAKhF,iBACjCqzB,EAASqC,eAAiB1wB,EAAK0wB,eAC/BrC,EAASsC,OAAS3wB,EAAK2wB,OACvBvC,GAAkBC,EAAD,UAAc14B,EAAd,qBAAsCk7B,GAA6B7wB,EAAKuuB,U,qBCb9EwC,GAZc,SAAC,GAAiC,IAC3D,EAD0D,EAA/B/wB,KAEvBgxB,YAAcC,EADlB,EACkBA,UAAWC,EAD7B,EAC6BA,gBAE7B,GAAID,EAAY,EACZrR,IAASjnB,IAPoB,cAO7B,mBAAgDs4B,EAAhD,uBAAwEC,EAAxE,4BACG,CACH,IAAMC,EAAoBvR,IAAS7f,IATN,eAUzBoxB,GAAmBvR,IAASjnB,IAVH,cAU8Bw4B,EAAmB,CAACC,QAAS,MCenFC,GAAqB,SAAChD,EAAe14B,EAAa24B,EAA2BC,GACtF,IAAMrvB,EAASoyB,KAAGC,UAAUlD,GAE5BptB,KACKutB,KAAK74B,EAAKuJ,EAAQ,CACfuvB,iBAAiB,IAEpBE,MAAK,SAAAvwB,GACFwwB,GAAcxwB,EAAUkwB,EAAsBC,GAE1CnwB,EAAS4B,KAAKwxB,MAEdpzB,EAAS4B,KAAKgxB,YAAc5yB,EAAS4B,KAAKwxB,KAE9CT,GAAqB3yB,MAExBywB,OAAM,SAAA38B,GAAK,OAAI48B,GAAY58B,EAAOo8B,EAAsBC,OAG3DK,GAAgB,SAACxwB,EAAUkwB,EAA2BC,GACxD,IAAMgB,EAAkD,CACpDhB,UACAvuB,KAAM5B,EAAS4B,KACfgvB,OAAQ5wB,EAAS4wB,OACjBG,SAAS,EACTF,WAAY7wB,EAAS8wB,YAGzBZ,EAAqB/H,QAAQgJ,IAG3BT,GAAc,SAAC58B,EAAOo8B,EAA2BC,GACnD,IAAIgB,EAEAA,EADAr9B,EAAMkM,SACc,CAChBmwB,UACAvuB,KAAM9N,EAAMkM,SAAS4B,KACrBgvB,OAAQ98B,EAAMkM,SAAS4wB,OACvBG,SAAS,EACTF,WAAY/8B,EAAMkM,SAAS8wB,YAExBh9B,EAAM2F,QACO,CAChB02B,UACAvuB,KAAM,KACNgvB,OAAQ98B,EAAM2F,QAAQm3B,OACtBG,SAAS,EACTF,WAAY/8B,EAAM2F,QAAQq3B,YAGV,CAChBX,UACAvuB,KAAM,KACNgvB,OAAQ,IACRG,SAAS,EACTF,WAAY/8B,EAAMw9B,SAG1BC,IAAOz9B,MAAM,IAAI/F,MAAM+F,IACvBo8B,EAAqB/H,QAAQgJ,ICnF3BkC,GAAY,IAAI9J,GAChB+J,GAAoB,IAAI7J,GASxB8J,G,mDACFllC,GAAK,G,KACLmlC,OAAS,G,KACTC,MAAQ,G,KACRC,SAAW,E,KACXC,aAAe,G,KACfC,uBAAyB,MAGvBC,GAAyB,SAACt8B,EAAaqK,GACzC,IAAMquB,EAAW,IAAIsD,GACrBtD,EAAS5hC,GAAKuT,EAAKvT,GACnB4hC,EAASuD,OAAS5xB,EAAKkyB,aACvB7D,EAASwD,MAAQ7xB,EAAK6xB,MACtBxD,EAASyD,SAAW9xB,EAAK8xB,SACzBzD,EAAS0D,aAAe/xB,EAAK+xB,aAC7B1D,EAAS2D,uBAAyBhyB,EAAKmyB,uBAEvCd,GAAmBhD,EAAD,UAAc14B,EAAd,YAA6B+7B,GAAmB1xB,EAAKuuB,UC5BrE6D,GAAY,IAAIrK,GAChBsK,GAAoB,IAAIpK,GAQxB0J,G,mDACFllC,GAAK,G,KACLmlC,OAAS,G,KACTC,MAAQ,G,KACRC,SAAW,E,KACXQ,YAAc,MAGZL,GAAyB,SAACt8B,EAAaqK,GACzC,IAAMquB,EAAW,IAAIsD,GACrBtD,EAAS5hC,GAAKuT,EAAKvT,GACnB4hC,EAASuD,OAAS5xB,EAAKkyB,aACvB7D,EAASwD,MAAQ7xB,EAAK6xB,MACtBxD,EAASyD,SAAW9xB,EAAK8xB,SACzBzD,EAASiE,YAActyB,EAAKuyB,YAE5BlB,GAAmBhD,EAAD,UAAc14B,EAAd,gBAAiC08B,GAAmBryB,EAAKuuB,UCxBxE,SAASiE,GAAT,GAA4D,IAA7BxyB,EAA4B,EAA5BA,KAClC,GXmC2B,WAC3B,IAAMijB,EAAI3lB,KACV,SAAI2lB,KAAMA,EAAEznB,SAAS4hB,etDyFQ,wBsDzF8B6F,EAAEC,cAAgBD,EAAEC,aAAauP,gBWrCxFC,GAAmB,CACnB,IAAOnF,EAAkBjwB,KAAlBiwB,eAEAoF,EAAiC3yB,EAAjC2yB,iBAAkB3B,EAAehxB,EAAfgxB,YACzBzD,EAAeC,QjEkHH,OiElHiBmF,GAEzB3B,EAAY4B,gBACZrF,EAAeC,QjEgHC,WiEhHqBwD,EAAY6B,aACjDtF,EAAeC,QjEgHO,qBiEhH0D,IAApCwD,EAAY8B,qBAA2BzgB,cCT/F,ICJY0gB,GDINtB,GAAY,IAAIpK,GAChBqK,GAAoB,IAAIjK,GAQjBwK,GAAyB,SAACt8B,EAAaq9B,GAChD,IAAMx5B,EAAOF,OAAOC,SAASC,KAAKpC,eJPL,SAC7Bi3B,EACA14B,EACA24B,EACA2E,GAEA,IAAMC,EAAiB,2BAAO7E,GAAP,IAAiB8E,EAAGpyB,KAAKqyB,QAChDnyB,KACKlB,IAAIpK,EAAK,CACN84B,iBAAiB,EACjBvvB,OAAQg0B,IAEXvE,MAAK,SAAAvwB,GACFwwB,GAAcxwB,EAAUkwB,GACxB2E,EAAY70B,GACZ2yB,GAAqB3yB,MAExBywB,OAAM,SAAA38B,GAAK,OAAI48B,GAAY58B,EAAOo8B,MINvC+E,CAAkB,CAACC,YAHCC,GAAkB/5B,EAAMw5B,GAGZQ,GADrBh6B,EAAKyC,SAAS,WACR,UAAuBtG,EAAvB,YAAsC+7B,GAAmBc,KAGxEiB,GAAkB,CAAC,WAAY,WAAY,sBAAuB,oBAAqB,YAEhFF,GAAoB,SAAC/5B,EAAcw5B,GAC5C,OAC8B,IAA1BA,GACAS,GAAgBC,MAAK,SAAAC,GAAS,OAAIn6B,EAAKyC,SAAS03B,QAC/Cn6B,EAAKyC,SAAS,6BExBjBw1B,GAAY,IAAItJ,GAChBuJ,GAAoB,IAAIrJ,GAOxBsJ,G,mDACFllC,GAAK,G,KACLmlC,OAAS,G,KACTgC,WAAa,G,KACbC,aAAe,G,KACfC,cAAgB,G,KAChBC,gBAAkB,G,KAClBC,kBAAoB,MAGlB/B,GAAyB,SAACt8B,EAAaqK,GACzC,IAAMquB,EAAW,IAAIsD,GACrBtD,EAAS5hC,GAAKuT,EAAKvT,GACnB4hC,EAASuD,OAAS5xB,EAAK4xB,OACvBvD,EAASuF,WAAa5zB,EAAK4zB,WAC3BvF,EAASwF,aAAe7zB,EAAK6zB,aAC7BxF,EAASyF,cAAgB9zB,EAAK8zB,cAC9BzF,EAAS0F,gBAAkB/zB,EAAK+zB,gBAChC1F,EAAS2F,kBAAoBh0B,EAAKg0B,kBAElC3C,GAAmBhD,EAAD,UAAc14B,EAAd,oBAAqC+7B,GAAmB1xB,EAAKuuB,UC5B7EkD,GAAY,IAAIlJ,GAChBmJ,GAAoB,IAAIjJ,GAQxBkJ,G,mDACFllC,GAAK,G,KACLmlC,OAAS,G,KACTqC,WAAa,G,KACbC,iBAAmB,MAGjBC,GAAc,SAACx+B,EAAaqK,GAC9B,IAAMquB,EAAW,IAAIsD,GACrBtD,EAAS5hC,GAAKuT,EAAKvT,GACnB4hC,EAASuD,OAAS5xB,EAAKkyB,aACvB7D,EAAS4F,WAAaj0B,EAAKo0B,aAC3B/F,EAAS6F,iBAAmBl0B,EAAKq0B,iBAEjChD,GAAmBhD,EAAD,UAAc14B,EAAd,sBAAuC+7B,GAAmB1xB,EAAKuuB,UCvB/EkD,GAAY,IAAI9I,GAChB+I,GAAoB,IAAI7I,GAQxByL,G,mDACFt0B,U,OACAu0B,QAAyB,K,KACzBC,cAA+B,K,KAC/BC,SAAU,E,KACVC,UAA2B,QAGzBP,GAAc,SAACx+B,EAAaqK,GAC9B,IAAMquB,EAAW,IAAIiG,GACrBjG,EAASruB,KAAOA,EAAKA,KACrBquB,EAASkG,QAAUv0B,EAAK20B,QACxBtG,EAASmG,cAAgBx0B,EAAK40B,cAC9BvG,EAASoG,QAAUz0B,EAAK60B,UACxBxG,EAASqG,UAAY10B,EAAK00B,UAE1BrD,GAAmBhD,EAAD,UAAc14B,EAAd,oBAAqC+7B,GAAmB1xB,EAAKuuB,UCzB7EkD,GAAY,IAAI1I,GAChB2I,GAAoB,IAAIrI,GAQxByL,G,mDACFroC,GAAK,G,KACLmlC,OAAS,G,KACTmD,SAAW,G,KACXC,iBAAmB,MAGjBb,GAAc,SAACx+B,EAAaqK,GAC9B,IAAMquB,EAAW,IAAIyG,GACrBzG,EAAS5hC,GAAKuT,EAAKvT,GACnB4hC,EAASuD,OAAS5xB,EAAKkyB,aACvB7D,EAAS0G,SAAW/0B,EAAKi1B,WACzB5G,EAAS2G,iBAAmBh1B,EAAKk1B,qBAEjC7D,GAAmBhD,EAAD,UAAc14B,EAAd,oBAAqC+7B,GAAmB1xB,EAAKuuB,UCvB7EkD,GAAY,IAAIlI,GAChBmI,GAAoB,IAAIjI,GAQxB0L,G,mDACF1oC,GAAK,MAGH0nC,GAAc,SAACx+B,EAAaqK,GAC9B,IAAMquB,EAAW,IAAI8G,GACrB9G,EAAS5hC,GAAKuT,EAAKvT,GAEnB4kC,GAAmBhD,EAAD,UAAc14B,EAAd,eAAgC+7B,GAAmB1xB,EAAKuuB,UCjBxEkD,GAAY,IAAI1H,GAChB2H,GAAoB,IAAIzH,GAQxBmL,G,mDACF3oC,GAAK,G,KACLmlC,OAAS,G,KACT1D,WAAa,MAGXiG,GAAc,SAACx+B,EAAaqK,GAC9B,IAAMquB,EAAW,IAAI+G,GACrB/G,EAAS5hC,GAAKuT,EAAKvT,GACnB4hC,EAASuD,OAAS5xB,EAAKkyB,aACvB7D,EAASH,WAAaluB,EAAKkuB,WAE3BmD,GAAmBhD,EAAD,UAAc14B,EAAd,mBAAoC+7B,GAAmB1xB,EAAKuuB,UCrB5EkD,GAAY,IAAI9H,GAChB+H,GAAoB,IAAI7H,GAQxBwL,G,mDACF5oC,GAAK,G,KACLqlC,SAAW,KAGTqC,GAAc,SAACx+B,EAAaqK,GAC9B,IAAMquB,EAAW,IAAIgH,GACrBhH,EAAS5hC,GAAKuT,EAAKvT,GACnB4hC,EAASyD,SAAW9xB,EAAK8xB,SAEzBT,GAAmBhD,EAAD,UAAc14B,EAAd,uBAAwC+7B,GAAmB1xB,EAAKuuB,UCnBhFkD,GAAY,IAAItH,GAChBuH,GAAoB,IAAIrH,GAQxBiL,G,mDACF7oC,GAAK,MAGH0nC,GAAc,SAACx+B,EAAaqK,GAC9B,IAAMquB,EAAW,IAAIiH,GACrBjH,EAAS5hC,GAAKuT,EAAKvT,GAEnB4kC,GAAmBhD,EAAD,UAAc14B,EAAd,eAAgC+7B,GAAmB1xB,EAAKuuB,UCjBxEkD,GAAY,IAAIlH,GAChBmH,GAAoB,IAAIjH,GAQxB8K,G,mDACF9oC,GAAK,MAGH0nC,GAAc,SAACx+B,EAAaqK,GAC9B,IAAMquB,EAAW,IAAIkH,GACrBlH,EAAS5hC,GAAKuT,EAAKvT,GAEnB4kC,GAAmBhD,EAAD,UAAc14B,EAAd,eAAgC+7B,GAAmB1xB,EAAKuuB,UClBxEiH,GAAiB,IAAI3J,GAEd4J,GAAwB,WACjCD,GAAejP,WCHbmP,GAAY,IAAI7I,GAET8I,GAA0B,WACnCD,GAAUnP,WCHRqP,GAAY,IAAInJ,GAEToJ,GAA2B,WACpCD,GAAUrP,WCHRuP,GAAc,IAAI/I,GAEXgJ,GAA8B,WACvCD,GAAYvP,WCiEDxG,OAjDc,SAAC,GAAwF,IAAvFtpB,EAAsF,EAAtFA,aAAcssB,EAAwE,EAAxEA,iBAAkBpsB,EAAsD,EAAtDA,WAAYmsB,EAA0C,EAA1CA,WAAY3X,EAA8B,EAA9BA,KACnF,EAAkCiV,oBAAS,GAA3C,oBAAO4V,EAAP,KAAkBC,EAAlB,KACOvuB,EAAiDyD,EAAjDzD,MAAOwuB,EAA0C/qB,EAA1C+qB,KAAM3jB,EAAoCpH,EAApCoH,KAAM4jB,EAA8BhrB,EAA9BgrB,SAAUC,EAAoBjrB,EAApBirB,iBAoBpC,OARAzV,qBAAU,WACFyC,OAAqBL,GAAoB1lB,OACzC3E,IAAQC,IAAImqB,EjFqEI,4BiFrEsB,CAACsO,QA1B3B,IA0BqDx4B,OAAQnC,IACzEw/B,GAAa,GACbN,QAEL,CAAC5S,EAAkBD,EAAYrsB,IAG9B,kBAAC,GAAD,CAAiBurB,KAAMgU,EAAW/T,QAAS,KACvC,kBAACuB,GAAD,CAAW/2B,GAAG,iBAAiB+0B,cAAY,yBACvC,kBAAC,GAAD,KACI,kBAACuC,GAAD,CAAa9gB,QAAQ,MAAMyE,GAC3B,kBAACwc,GAAD,CAAgBxC,QAvBhB,WACZuU,GAAa,GACbJ,OAsBc,yBACIrU,cAAY,8BACZI,IAAG,UAAK9e,GjFGJ,4BiFFJ+e,IAAKuU,MAIf,6BACI,kBAACjS,GAAD,KAAW+R,EAAX,QACA,kBAAC/R,GAAD,KACI,kBAACD,GAAD,CAAgB1C,cAAY,qCAAqCE,QA7BjE,WAChBqU,KACAz8B,OAAOC,SAASC,KAAO7C,IA4BF4b,GAFT,OAIW4jB,SCzChBpW,gBAhBgB,SAAC9oB,GAC5B,MAA2DA,EAAMY,QAA1DhC,EAAP,EAAOA,uBAAwBY,EAA/B,EAA+BA,aAAcE,EAA7C,EAA6CA,WAC9BksB,EAAiB5rB,EAAxBkU,KAAO0X,aAETC,EAAajtB,ElFgGW,0BAFP,oBkF3FvB,MAAO,CACHY,eACAssB,mBAJuBrqB,IAAQqH,IAAI+iB,GAKnCnsB,aACAmsB,aACA3X,KAAM0X,MCdDW,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,0KAQE,qBAAET,MAAiBW,QAAQkF,KAAKxF,QAAQyF,cAClD,qBAAE9F,MAAiBW,QAAQC,UAAUmF,WAGtCC,GAAcvF,aAAOwF,MAAV,6EAAGxF,CAAH,wEAKXyF,GAASzF,KAAOC,IAAV,wEAAGD,CAAH,6FAEb,gBAAET,EAAF,EAAEA,MAAF,0CACoBA,EAAMW,QAAQ2X,QAAQpqB,OAAOqqB,iBADjD,mCAEiBvY,EAAMW,QAAQ2X,QAAQpqB,OAAOsqB,aAF9C,cAQOrS,GAAiB1F,KAAOW,OAAV,gFAAGX,CAAH,4KAQd,qBAAET,MAAiBW,QAAQvT,KAAKiT,WAIhCoY,GAAgBhY,KAAOC,IAAV,+EAAGD,CAAH,uEAKb2F,GAAW3F,aAAOwF,MAAV,0EAAGxF,CAAH,mFCuBNuB,OAjDc,SAAC,GAAwF,IAAvFtpB,EAAsF,EAAtFA,aAAcssB,EAAwE,EAAxEA,iBAAkBpsB,EAAsD,EAAtDA,WAAYmsB,EAA0C,EAA1CA,WAAY3X,EAA8B,EAA9BA,KACnF,EAAkCiV,oBAAS,GAA3C,oBAAO4V,EAAP,KAAkBC,EAAlB,KACOvuB,EAAiDyD,EAAjDzD,MAAOwuB,EAA0C/qB,EAA1C+qB,KAAM3jB,EAAoCpH,EAApCoH,KAAM4jB,EAA8BhrB,EAA9BgrB,SAAUC,EAAoBjrB,EAApBirB,iBAoBpC,OARAzV,qBAAU,WACFyC,OAAqBL,GAAoB1lB,OACzC3E,IAAQC,IAAImqB,EpFqEI,4BoFrEsB,CAACsO,QA1B3B,IA0BqDx4B,OAAQnC,IACzEw/B,GAAa,GACbN,QAEL,CAAC5S,EAAkBD,EAAYrsB,IAG9B,kBAAC,GAAD,CAAiBurB,KAAMgU,EAAW/T,QAAS,KACvC,kBAAC,GAAD,CAAWx1B,GAAG,iBAAiB+0B,cAAY,oCACvC,kBAAC,GAAD,KACI,kBAAC,GAAD,CAAave,QAAQ,MAAMyE,GAC3B,kBAAC,GAAD,CAAgBga,QAvBhB,WACZuU,GAAa,GACbJ,OAsBc,yBACIrU,cAAY,yCACZI,IAAG,UAAK9e,GpFGJ,4BoFFJ+e,IAAKuU,MAIf,kBAACI,GAAD,KACI,kBAAC,GAAD,KAAWN,EAAX,QACA,kBAAC,GAAD,KACI,kBAAC,GAAD,CAAgB1U,cAAY,gDAAgDE,QA7B5E,WAChBqU,KACAz8B,OAAOC,SAASC,KAAO7C,IA4BF4b,GAFT,OAIW4jB,S,UCzDlB3S,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,oSASE,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAKxF,QAAQyF,cACrE,SAAC1W,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQC,UAAUmF,UAG7ChnB,GAAYC,OAAOG,IAM/B6mB,GAAcvF,aAAOwF,MAAV,6EAAGxF,CAAH,oKAUXiY,GAAajY,aAAOwF,MAAV,4EAAGxF,CAAH,oPASE1hB,GAAYC,OAAOG,IAK/Bw5B,GAAsBlY,KAAOC,IAAV,qFAAGD,CAAH,wJAGP1hB,GAAYC,OAAOG,IAM/By5B,GAAsBnY,aAAOoY,MAAV,qFAAGpY,CAAH,weAGb,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,UAIxE,SAAC3pB,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAKmT,cAAcC,SAG5D,SAAC7pB,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAKmT,cAAclT,aAG1D/mB,GAAYC,OAAOG,IAStB,SAACiQ,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAKmT,cAAclT,cACrE,SAAC1W,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAKmT,cAAcE,UAClE,SAAC9pB,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAKmT,cAAcC,SAIrEE,GAAqB1Y,aAAOoY,MAAV,oFAAGpY,CAAH,qUAGZ,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,UAIxE,SAAC3pB,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAKuT,gBAAgBH,SAI9D,SAAC7pB,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAKuT,gBAAgBtT,aAG5D/mB,GAAYC,OAAOG,I,oBC5E/BsmB,GAAYhF,cAAO,gBAAKhW,EAAL,2BAAe,kBAAC,KAAUA,MAApC,0EAAGgW,CAAH,oaASA,SAAArR,GAAK,gBAEXA,EAAMiqB,gBAAN,eACcjqB,EAAM4Q,MAAMW,QAAQ2Y,QAAQC,MAAMC,SAASlY,UADzD,oBAEclS,EAAM4Q,MAAMW,QAAQ2Y,QAAQC,MAAMC,SAAS7T,QAFzD,QAMS5mB,GAAYC,OAAOG,IAEzB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOmL,YAAYjhB,GAAGmhB,SAIrDvhB,GAAYC,OAAOI,IAEzB,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOmL,YAAYhhB,GAAGkhB,UChDjEmZ,GAAoB,SAAA57B,GAAC,OAAIA,EAAE67B,mBCalCC,GAAyB,CAC3BC,qBAAqB,EACrBC,kBAAkB,EAClBC,qBAAqB,EACrBC,eAAe,EACfC,aAAa,EACbC,mBAAmB,GAoBRC,GAjBD,SAAC,GAAD,IAAEC,EAAF,EAAEA,KAAMC,EAAR,EAAQA,YAAatlB,EAArB,EAAqBA,SAAUulB,EAA/B,EAA+BA,eAA/B,IAA+CC,oBAA/C,gBACV,kBAAC,GAAD,iBACQX,GADR,CAEIlW,cAAY,QACZ0W,KAAMA,EACNI,QAASH,EACTzW,QAAS8V,GACTe,sBAAoB,EACpBC,kBAAmBC,KACnBC,cAAe,CAACzW,QxF/BK,KwFgCrBmV,gBAAiBgB,EACjBC,aAAcA,IAEd,oCAAGxlB,KCtBIkN,gBAVgB,SAAC9oB,GAC5B,IAAOwM,EAA+CxM,EAA/CwM,gBAAwBk1B,EAAuB1hC,EAA9BkU,KAAOwtB,mBAE/B,MAAO,CACHpzB,gBAAiB9B,EAAgB8B,gBACjCC,iBAAkB/B,EAAgB+B,iBAClC2F,KAAMwtB,MCPR7C,GAAc,IAAIrK,GAMXmN,GAAmC,SAAC7S,GAC7C,OAAO+P,GAAYvQ,UAAUQ,IAGlB8S,GARwB,WACnC/C,GAAYvP,WCMDuS,GATM,SAACvzB,EAAiBC,GACnCqzB,KAEA,IAAME,EAAY,OAAGxzB,QAAH,IAAGA,OAAH,EAAGA,EAAiBd,UAAUrK,MAAK,SAAA4+B,GAAC,OAAIA,EAAEl0B,OAASU,KACjEuzB,IACAz/B,OAAOC,SAASC,KAAOu/B,EAAaE,YCqD7BlZ,OAtC0B,SAAC,GAMH,IALnCmZ,EAKkC,EALlCA,UACA3zB,EAIkC,EAJlCA,gBACAC,EAGkC,EAHlCA,iBACA2zB,EAEkC,EAFlCA,WACAhuB,EACkC,EADlCA,KAEOiuB,EAAwDjuB,EAAxDiuB,UAAWC,EAA6CluB,EAA7CkuB,YAAaC,EAAgCnuB,EAAhCmuB,YAAaC,EAAmBpuB,EAAnBouB,QAASC,EAAUruB,EAAVquB,OAMrD,OACI,kBAAC,GAAD,CAAOhY,cAAY,8BAA8B0W,KAAMgB,EAAWf,YAAagB,EAAYf,gBAAc,GACrG,kBAAC,GAAD,CAAW5W,cAAY,uCACnB,kBAAC,GAAD,CAAave,QAAQ,MAAMm2B,GAC3B,kBAAC3C,GAAD,KAAa4C,GACb,kBAAC5C,GAAD,KAAa6C,GACb,kBAAC5C,GAAD,KACI,kBAACC,GAAD,CACInV,cAAY,sCACZE,QAbQ,WACxBoX,GAAavzB,EAAiBC,KAcb+zB,GAEL,kBAACrC,GAAD,CACI1V,cAAY,qCACZE,QAASyX,GAERK,SChDZC,GAAiBjb,KAAOkb,IAAV,gFAAGlb,CAAH,8pCASV1hB,GAAYC,OAAOK,IAErB,SAAC+P,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOmL,YAAYC,QAAQub,UAEtD78B,GAAYC,OAAOG,IACzB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOmL,YAAYjhB,GAAGy8B,UAGrD78B,GAAYC,OAAOI,IACzB,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOmL,YAAYhhB,GAAGw8B,UAGrD78B,GAAYC,OAAOK,IACzB,SAAC+P,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOmL,YAAY/gB,GAAGu8B,WAI7D,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUpF,QAAQyb,SACrE,SAAC1sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUpF,QAAQ0b,QAGnE,SAAC3sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUkpB,QAAQyb,SAG9D,SAAC1sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+mB,OAAO3b,QAAQyb,SAC1D,SAAC1sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+mB,OAAO3b,QAAQ4b,UAG5D,SAAC7sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOinB,WAAW7b,QAAQyb,SAI/D,SAAC1sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUpF,QAAQyb,SAGvE,SAAC1sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOmnB,WAAW/b,QAAQyb,SAG/D,SAAC1sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOonB,oBAAoBhc,QAAQuD,SACxE,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOonB,oBAAoBhc,QAAQyb,SAIxE,SAAC1sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAY5S,QAAQyb,QAGxD/8B,GAAYC,OAAOG,IAC1B,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOmL,YAAYjhB,GAAGmhB,UAGxD,SAAClR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUgI,GAAG28B,SAGxD,SAAC1sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+mB,OAAO78B,GAAG88B,UChE/DK,GAAM7b,KAAOO,IAAV,qEAAGP,CAAH,uDCQD8b,GAFF,SAAC,GAAD,IAAE1Y,EAAF,EAAEA,IAAKC,EAAP,EAAOA,IAAP,OAA2B,kBAACwY,GAAD,CAAKzY,IAAKA,EAAKC,IAAKA,M,S5BRhDkR,K,cAAAA,E,sBAAAA,E,wBAAAA,E,oBAAAA,E,0CAAAA,E,wBAAAA,E,0BAAAA,E,yBAAAA,Q,K6BML,IAkBQhT,gBAlBgB,SAAC9oB,GAAkB,IAAD,EACvCsjC,EAASxH,GAAqB6G,MAC9BY,EAAK,UAAGvjC,EAAM+I,YAAT,aAAG,EAAYy6B,QAAQrgC,MAAK,SAAAsgC,GAAM,OAAIA,EAAOtmC,OAASmmC,KAC1D7kC,EAAWuB,EAAMY,QAAjBnC,QACP,EAA8E8kC,EAAOG,SAAS,GAAvF53B,EAAP,EAAOA,KAAM63B,EAAb,EAAaA,eAAgBC,EAA7B,EAA6BA,aAAcC,EAA3C,EAA2CA,kBAAmBC,EAA9D,EAA8DA,QAASplC,EAAvE,EAAuEA,IAChEsN,EAAWhM,EAAMqU,SAAjBrI,QACDzQ,EAAQyE,EAAMY,QAAQ7L,QhGeJ,gBgGbxB,MAAO,CACH+W,KAAMC,GAAyBD,EAAgBvQ,EAAOyQ,GACtD43B,aAAc73B,GAAyB63B,EAAwBroC,EAAOyQ,GACtE23B,eAAgB53B,GAAyB43B,EAA0BpoC,EAAOyQ,GAC1E63B,kBAAmBA,EACnBC,QAASA,EACTplC,IAAI,GAAD,OAAKD,GAAL,OAAeC,OChBb6tB,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,0hBACR,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUpF,QAAQ4b,SAIzDl9B,GAAYC,OAAOI,IACzB,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUrmB,GAAGw8B,UAGzD78B,GAAYC,OAAOK,IACzB,SAAC+P,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUpmB,GAAGu8B,WAI/D,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUjR,KAAK6L,QAAQub,WAK1E,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUzE,IAAIX,QAAQC,UACzE,SAAClR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUzE,IAAIX,QAAQuD,QAG5D7kB,GAAYC,OAAOG,IAC1B,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUzE,IAAI7hB,GAAGmhB,UACpE,SAAClR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUzE,IAAI5hB,GAAGwkB,QAG3D7kB,GAAYC,OAAOI,IAC1B,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUzE,IAAI5hB,GAAGkhB,UACpE,SAAClR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUzE,IAAI5hB,GAAGwkB,SAK3EqZ,GAAwBxc,KAAOC,IAAV,uFAAGD,CAAH,4HAET1hB,GAAYC,OAAOG,GAAK,GAIpC+9B,GAA0Bzc,KAAOC,IAAV,yFAAGD,CAAH,4HAEX1hB,GAAYC,OAAOG,ICvCtCg+B,GAAgC,WAClC3N,eAAeE,WlGkG2B,0BkGhG1CI,aAAaJ,WlGgG6B,2BmGhF/B1N,OAbM,SAAC,GAAD,IAAE+a,EAAF,EAAEA,kBAAmBC,EAArB,EAAqBA,QAASplC,EAA9B,EAA8BA,IAAKilC,EAAnC,EAAmCA,eAAgBC,EAAnD,EAAmDA,aAAnD,OACjB,kBAAC,GAAD,CAAWM,UAAU,wBAAwB3Z,cAAY,wBAAwBE,QAASwZ,IACtF,uBAAGnZ,aAAY+Y,EAAmBpzB,MAAOqzB,EAASvhC,KAAM7D,GACpD,kBAACslC,GAAD,KACI,kBAAC,GAAD,CAAMrZ,IAAKgZ,EAAgB/Y,IAAKiZ,KAEpC,kBAACE,GAAD,KACI,kBAAC,GAAD,CAAMpZ,IAAKiZ,EAAchZ,IAAKiZ,U,oBChB/B,SAASM,GAAY/mC,EAAOgnC,GAEvC,MAA4Cjb,mBAAS/rB,GAArD,oBAAOinC,EAAP,KAAuBC,EAAvB,KA2BA,OAzBA5a,qBACI,WAEI,IAAM2E,EAAUkW,YAAW,WACvBD,EAAkBlnC,KACnBgnC,GAUH,OAAO,WACHI,aAAanW,MAMrB,CAAC+V,EAAOhnC,IAGLinC,E,wBC3BE9X,GAAYhF,KAAOC,IAAV,0EAAGD,CAAH,sgCAMT,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM1E,SACnD,SAAC7pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM7X,cAGxD,SAAC1W,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUoY,YAAYC,MAAMzd,QAAQ6Y,UACpF,SAAC9pB,GAAD,OACZA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUoY,YAAYC,MAAMzd,QAAQ0d,eAGrD,SAAC3uB,GAAD,OACZA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUoY,YAAYG,YAAY3d,QAAQ0d,cAG1Dh/B,GAAYC,OAAOG,IAC1B,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUpF,QAAQ6Y,UAClE,SAAC9pB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUtmB,GAAG4+B,eAClE,SAAC3uB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM/X,SAGxD7mB,GAAYC,OAAOG,IAElB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMM,YAAYnY,cACxE,SAAC1W,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUoY,YAAYC,MAAM3+B,GAAG+5B,UAC/E,SAAC9pB,GAAD,OACZA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUoY,YAAYC,MAAM3+B,GAAG4+B,eAIlD,SAAC3uB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUpF,QAAQ6d,aACxE,SAAC9uB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMM,YAAYnY,cACxE,SAAC1W,GAAD,OACNA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUoY,YAAYG,YAAY7+B,GAAG+5B,UACtD,SAAC9pB,GAAD,OACZA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUoY,YAAYG,YAAY7+B,GAAG4+B,eASpD,SAAC3uB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMM,YAAYnY,cAFhE,SAAC1W,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMM,YAAYnY,aAO7E/mB,GAAYC,OAAOG,GAAK,GAE3B,SAACiQ,GAAD,OACNA,EAAM4Q,MAAM/K,OAAO2oB,UAAUnY,UAAUoY,YAAYG,YAAY3d,QAAQ6Y,UAK1EiF,GAAO1d,KAAOoF,KAAV,qEAAGpF,CAAH,oKAaJ2d,GAAc3d,KAAO4d,MAAV,4EAAG5d,CAAH,iJAWX6d,GAAiB7d,aAAO8d,MAAV,+EAAG9d,CAAH,quBACd,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeje,QAAQuD,SAIpE,SAACxU,GAAD,uBACdA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeje,QAAQme,qBADtC,qBAHGz/B,GAAYC,OAAOG,IAC3B,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAen/B,GAAGykB,SAOhE,SAAAxU,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM/X,UAG9C,SAACxW,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeX,MAAMtd,QAAQub,WACrF,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeX,MAAMtd,QAAQuD,SAEnF,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM1E,SACpD,SAAC7pB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeX,MAAMtd,QAAQoe,YAOnF,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMe,eACtD,SAACtvB,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMe,YAAc,EAAI,OAGrE3/B,GAAYC,OAAOG,IACzB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeX,MAAMx+B,GAAGy8B,WAChF,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeX,MAAMx+B,GAAGykB,SAC1E,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeX,MAAMx+B,GAAGs/B,WAG1E1/B,GAAYC,OAAOI,IAC3B,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeX,MAAMv+B,GAAGwkB,QAGtE7kB,GAAYC,OAAOK,IAC3B,SAAC+P,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUU,eAAeX,MAAMt+B,GAAGukB,SAKtF+a,GAAUle,cAAO,gBAAKhW,EAAL,2BAAe,kBAAC,KAAeA,MAAzC,wEAAGgW,CAAH,2LAIS1hB,GAAYC,OAAOG,IACpB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUe,QAAQte,QAAQue,eAC3E,SAACxvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUe,QAAQte,QAAQwe,WACvE,SAACzvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUe,QAAQte,QAAQC,UAM/Ewe,GAAere,aAAOoY,MAAV,6EAAGpY,CAAH,0dAER,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUkB,aAAaze,QAAQuD,SACzE,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUkB,aAAaze,QAAQub,WACxE,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM7X,cACrD,SAAC1W,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM/X,UAOvD,SAACxW,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM7X,cAErD,SAAA1W,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM/X,SAGxC7mB,GAAYC,OAAOG,IAC3B,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUkB,aAAa3/B,GAAGykB,QAG9D7kB,GAAYC,OAAOI,IAC3B,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO2oB,UAAUkB,aAAa1/B,GAAGwkB,SAK9D,SAAAxU,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM/X,UAKxDmZ,GAActe,KAAOnS,EAAV,4EAAGmS,CAAH,iQAGX,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,UAQtCthB,GAAYC,OAAOG,IC9L7BtU,UAAOC,OAAO,CACzBk0C,UAAW,CACPC,cAAe,SAACxqC,EAAeyQ,GAAhB,OAAoCD,GAAyB,aAAcxQ,EAAOyQ,IACjGg6B,qBAAsB,SAACzqC,EAAeyQ,GAAhB,OAClBD,GAAyB,0BAA2BxQ,EAAOyQ,IAC/Di6B,YAAa,CACTC,KAAMr6B,GAAc,6BAG5Bs6B,UAAW,CACPC,SAAU,4BACVC,WAAY,aACZC,eAAgB,SAAC/qC,EAAeyQ,GAAhB,OACZD,GAAyB,sBAAuBxQ,EAAOyQ,KAE/Du6B,SAAU,CACN7nC,IAAK,yCAET8nC,aAAc,CACVC,OAAQ,CACJC,iBAAkB,cAClBC,iBAAkB,mBAG1BC,OAAQ,CACJ74B,QAASlC,GAAc,uCAE3BiI,WAAY,CACRpV,IAAK,cACLmoC,cAAe,SAACtrC,EAAeyQ,GAAhB,OACXD,GAAyB,wBAAyBxQ,EAAOyQ,IAC7D86B,gBAAiB,SAACvrC,EAAeyQ,GAAhB,OACbD,GAAyB,0BAA2BxQ,EAAOyQ,KAEnEuH,YAAa,CACTxF,QAAS,SAACxS,EAAeyQ,GAAhB,OAAoCD,GAAyB,mBAAoBxQ,EAAOyQ,IACjGtN,IAAK,gBAETqoC,oBAAqB,CACjBC,iBAAkB,kBAEtBC,WAAY,CACRl5B,QAAS,SAACxS,EAAeyQ,GAAhB,OAAoCD,GAAyB,WAAYxQ,EAAOyQ,KAE7Fk7B,QAAS,CACLC,KAAM,8BACNC,UAAW,kDACXC,aAAc,qDAElBC,kBAAmB,CACfC,YAAa,uBACbC,mBAAoB,qCACpBC,SAAU,gBACVC,WAAY,uBAEhBC,UAAW,CACPC,UAAW,SAACrsC,EAAessC,EAAuBC,GAAvC,OACPj8B,GAAc,sBAAD,OAAuBtQ,EAAvB,YAAgCssC,EAAhC,YAAiDC,EAAjD,cAErBC,gBAAiBl8B,GAAc,sCAC/Bm8B,aAAcn8B,GAAc,6BAC5Bo8B,sBAAuBp8B,GAAc,wCACrCq8B,uBAAwBr8B,GAAc,2CC/D7Bs8B,GAAiB,SAACtc,EAAYuc,GACvC,IAAM/a,EAAI+a,EAAWz4B,MAAX,aAAuBkc,EAAvB,gBACV,OAAOwB,EAAIA,EAAEnhB,MAAQ,IC6DV4c,gBArDgB,SAAC9oB,GAAkB,IAAD,MACvCqoC,EAAyBroC,EAAM0K,aAAaT,WAC5CxC,EAAM,UAAGzH,EAAMY,eAAT,iBAAG,EAAe7L,eAAlB,aAAG,EAAwB0S,OACjClM,EAAK,UAAGyE,EAAM+I,YAAT,aAAG,EAAYxN,MAAM4E,cACzB6L,EAAWhM,EAAMqU,SAAjBrI,QAIP,MAAO,CACHkI,KAFAlU,EADAkU,KAAO4xB,UAIPr+B,SACA4gC,yBACAC,gBAAiBC,GAAKzC,UAAUE,qBAAqBzqC,EAAOyQ,GAC5DvN,QAASuB,EAAMY,QAAQnC,QACvBgE,gBAAiBzC,EAAMmC,OAAOM,mBAuCE,MAhCd,SAAC+lC,EAAD,EAAmCC,GAAmB,IAAnC/nC,EAAkC,EAAlCA,SACzC,OAAO,uCACA8nC,GADP,IAEI9nC,YACG+nC,GAHP,IAIIC,aAAc,SAACC,GACXjoC,EAASF,EAAkBmoC,IAC3BjoC,EAASyB,EAAOqmC,EAAW/pC,QAASkqC,IACpCjoC,EAASqB,GAAiB,KAE9B6mC,OAAQ,SAACC,GnGHK,IAACpmC,EmGIX/B,GnGJW+B,EmGIKomC,EnGJuB,SAACnoC,GAChDA,EAvBoD,CACpDvD,KAV4B,mBAW5B2C,QAqBmB2C,IACnB/B,EAAS8B,QmGGGqmC,GAASA,EAAMt0C,QxGLqB,GwGMpCmM,EnFFuB,CACnCvD,KA9B6B,uBmFkCzB2rC,mBAAoB,SAACD,GACjB,MAAmDL,EAAWH,uBAAvD9+B,EAAP,EAAOA,UAAWE,EAAlB,EAAkBA,UAAWC,EAA7B,EAA6BA,QAAS3N,EAAtC,EAAsCA,UAC/B0L,EAAU+gC,EAAV/gC,OACDkC,EAAOlC,EAAS0gC,GnFnCV,YmFmCmC1gC,GAAUhG,IAAQqH,InFnCrD,amFoCZpI,EAAS8J,GAAqBq+B,EAAOt/B,EAAWE,EAAWC,EAASC,EAAM5N,KAE9EyG,WAAY,WAER,OADAg8B,KACO99B,EAAS8B,MAEpBumC,yBAA0B,WACtBroC,EAAS6J,IAAa,UCxBdy+B,GAAkBT,GAAKzC,UAApCG,YAEDgD,GAAwB,SAAC/0B,GAAD,OAAkBA,EAAK3f,QzGED,GyGqHrCu0B,OArHU,SAAC,GAYH,IAXnB0c,EAWkB,EAXlBA,YACAoD,EAUkB,EAVlBA,OACAE,EASkB,EATlBA,mBACAR,EAQkB,EARlBA,gBACAI,EAOkB,EAPlBA,aACAlmC,EAMkB,EANlBA,WACAC,EAKkB,EALlBA,gBACAymC,EAIkB,EAJlBA,QACAh1B,EAGkB,EAHlBA,KACAi1B,EAEkB,EAFlBA,UACAJ,EACkB,EADlBA,yBAEA,EAA4C5f,oBAAkB,GAA9D,oBAAOigB,EAAP,KAAuBC,EAAvB,KACA,EAAsClgB,mBAAShrB,EAAamrC,MAA5D,oBAAOC,EAAP,KAAoBC,EAApB,KACOrE,EAAsBjxB,EAAtBixB,MAAOc,EAAe/xB,EAAf+xB,YAERxlC,EAAOwoC,GAAsBxmC,GAC7BgnC,GAAShnC,EzGxDU,KyGyDnBgnC,GAAShnC,EAAiB,GAEhCinB,qBAAU,WACFtjB,MAAcijC,GAAkB,KACrC,IAEH3f,qBAAU,WACF6f,IAAgBprC,EAAamrC,OAC7BP,IACAH,EAAOnmC,GACHwmC,GAAsBxoC,GAClBA,IAASgC,IACTqmC,EAAmBroC,GACnB+oC,EAAerrC,EAAaurC,gBAGhCF,EAAerrC,EAAawrC,eAGhCnnC,OAEL,CAAC/B,EAAMgC,EAAiBqmC,EAAoBtmC,EAAY+mC,EAAaX,EAAQG,IA0BhF,OACI,kBAAC,GAAD,CAAWte,QAAS8V,IAChB,kBAAC0E,GAAD,CAAM2E,SAfW,SAAChb,GACtBA,EAAMib,iBACN5F,KACA,IAAM6F,EAAkBrnC,EAAgBtC,cACvB2pC,EAAgBv1C,OAAS,GAC5Bm0C,EAAaoB,IAUWt0C,GAAG,sBACjC,kBAAC0vC,GAAD,CAAa6E,QAASb,GAAU1D,GAChC,kBAACJ,GAAD,CACI4E,SAAUZ,EACVa,UAAQ,EACRzD,aAAa,MACb0D,WAAY,CACR/E,QACA,cAAc,+BACd,azG1CM,SyG2CN,sBzGnCsB,mByGqC1BgF,SA7BO,SAAAxlC,GAAC,OAAIikC,GADHvrB,EAC2B1Y,EAAE+L,OAAOtT,QADnBigB,EAAI7b,OAAc6b,EAAL,IAA9B,IAAAA,GA+BTmoB,YAAaA,EACb4E,QAxCI,WAChB5nC,IACIymC,GAAsBxmC,GACtB+mC,EAAerrC,EAAaurC,eAE5BF,EAAerrC,EAAawrC,gBAoCpBvsC,MAAOqF,EACP+C,KAAM0jC,EACN1zC,GAAI0zC,EACJC,UAAWA,IAGd1mC,GACG,kBAACojC,GAAD,CACItjC,KAAK,IACLgoB,cAAY,sCACZE,QAhCA,WAChB+e,EAAerrC,EAAamrC,MAC5BV,EAAO,KA+BSyB,azG3DM,SyG4DNC,azGvD4B,wByGwD5BC,SAAU,GAEV,yBAAK5f,IAAKqe,GAAe9C,KAAMtb,IAAKqb,EAAYrb,OAGxD,kBAAC,GAAD,CAAS4f,YAAY,aACrB,kBAAC5E,GAAD,CACIzoC,KAAK,SACLC,MAAM,GACNmtB,cAAY,2BACZ8f,azGvEU,SyGwEVC,azGtEe,ayGuEfC,SAAU,GAEV,yBAAK5f,IAAK2d,EAAiB1d,IAAI,sB,UCjJtC6f,GAAkBljB,aAAOmjB,MAAV,iFAAGnjB,CAAH,kKAEN,SAACrR,GAAD,OAClBA,EAAM4Q,MAAM/K,OAAO4uB,OAAOF,gBAAgB9F,YAAYiG,WAAWzjB,QAAQyF,cAOhEie,GAAYtjB,KAAOO,IAAV,2EAAGP,CAAH,6HC0BPojB,GA5BA,SAAC,GAA0D,IAAzDG,EAAwD,EAAxDA,OAAQ7J,EAAgD,EAAhDA,KAAMI,EAA0C,EAA1CA,QAASzlB,EAAiC,EAAjCA,SAAU1H,EAAuB,EAAvBA,KAGxC62B,EAAa,CACfjK,aAAa,EACbJ,qBAAqB,EACrBC,kBAAkB,EAClBC,qBAAqB,EACrBU,sBAAsB,EACtBT,eAAe,EACfE,kBAT4BiK,aAAc,cAAD,OAAenlC,GAAYC,OAAOG,GAAlC,QAUzCm7B,cAAc,GAGlB,OACI,kBAACqJ,GAAD,CAAiBvG,UAAU,SAAS4G,OAAQA,EAAQ7J,KAAMA,EAAMI,QAASA,EAAS4J,WAAYF,GAC1F,kBAACF,GAAD,CACIlgB,IAAG,UAAK9e,GAAc,uCACtB4e,QAAS4W,EACTzW,IAAK1W,EAAKoW,cACV+f,a3G0Cc,S2GzCda,a3G6CoB,iB2G3CvBtvB,IC3BEkN,gBALgB,SAAC9oB,GAAD,MAAmB,CAC9CiB,SAAUjB,EAAMiB,SAChBkqC,UAAWnrC,EAAMkU,KAAK4xB,UAAUsF,YAAYl3B,SCkCjC4U,gBAlCgB,SAAC9oB,GAAkB,IAAD,IACtCmK,EAAenK,EAAM0K,aAArBP,YACA1L,EAAWuB,EAAMY,QAAjBnC,QACAgE,EAAmBzC,EAAMmC,OAAzBM,gBAIDzB,GAAW,UAAAhB,EAAMiB,SAASC,iBAAf,mBAA0ByB,oBAA1B,eAAwC3B,WAFpC,GAMrB,MAAO,CACHmJ,YAHkB,OAAGA,QAAH,IAAGA,OAAH,EAAGA,EAAa9I,MAAM,EAAGL,GAI3CP,KAAMgC,EACNhE,aAoBgC,MAbd,SAAC+pC,EAAD,EAAmCC,GAAmB,IAAnC/nC,EAAkC,EAAlCA,SACzC,OAAO,uCACA8nC,GADP,IAEI9nC,YACG+nC,GAHP,IAII4C,sBAAuB,SAACC,GACpB5qC,EAASF,EAAkB8qC,IAC3B5qC,EAASyB,EAAOqmC,EAAW/pC,QAAS6sC,KAExCC,mBAAoB,SAACD,GAAD,OAAwBtpC,EAAUwmC,EAAW/pC,QAArBuD,CAA8BspC,SChCrEE,GAAKjkB,KAAOkkB,GAAV,oEAAGlkB,CAAH,iVAEE,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,WAkBvDukB,GAAKnkB,KAAOokB,GAAV,oEAAGpkB,CAAH,2ECpBFqkB,GAAOrkB,KAAOS,KAAV,qEAAGT,CAAH,wDACE,SAACrR,GAAD,gBAA6BA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAArE,aAAgFpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YCwB7G0kB,GArBK,SAAC,GAA2C,IAA1C33B,EAAyC,EAAzCA,KAAM43B,EAAmC,EAAnCA,YAClBC,EAAS,IAAIrmC,OAAmBomC,EtGDzBj4C,QAAQ,uBAAwB,QsGCO,MAC9Cm4C,EAAW93B,EACZrgB,QAAQk4C,EADI,WACQD,EADR,MAEZhwC,MAAM,KACNyF,QAAO,SAAAoO,GAAK,MAAc,KAAVA,KAErB,OACI,oCACKq8B,EAAS9uC,KAAI,SAAC+uC,EAAaC,GAAd,OACV,kBAAC,IAAMjmB,SAAP,CAAgBxQ,IAAKw2B,EAAcC,GAC9BD,EAAY9rC,gBAAkB2rC,EAAY3rC,cACvC,kBAACyrC,GAAD,KAAOK,GAEP,8BAAOA,SCnBlBE,GAAc,SAACb,EAAoBD,GAC5C,OAAO,SAACzc,GACJA,EAAMib,iBACN5F,KACAoH,EAAsBC,KAYjBc,GAAQ,SAAC3rC,EAAc6qC,EAAoBe,GACpD,OAAO,SAACzd,GACJA,EAAMib,iBACFwC,GAAaA,EAAY5rC,EAAM6qC,KAY9BgB,GAAwB,SACjC7rC,EACA6qC,EACAe,GAEA,OAAO,SAACzd,GACJA,EAAMib,iBACFwC,GAAaA,EAAY5rC,EAAM6qC,KCU5BxiB,OAhCa,SAAC,GAMH,IALtBuiB,EAKqB,EALrBA,sBACAgB,EAIqB,EAJrBA,YACAliC,EAGqB,EAHrBA,YACA1J,EAEqB,EAFrBA,KACA8qC,EACqB,EADrBA,mBAEA,OACI,kBAACG,GAAD,CAAInhB,cAAY,yBACXpgB,EAAYjN,KAAI,YAAuB,IAAjBouC,EAAgB,EAApBiB,GACf,OACI,kBAACf,GAAD,CAAI/1B,IAAK61B,GACL,uBACI/gB,cAAaz2B,EAAkB,uBAAD,OAAwBw3C,IACtD7gB,QAAS0hB,GAAYb,EAAYD,GACjC9oC,KAAMgpC,EAAmBD,GACzBkB,aAAcJ,GAAM3rC,EAAM6qC,EAAYe,GACtCjC,QAASkC,GAAsB7rC,EAAM6qC,EAAYe,GACjDhC,alHsCE,SkHrCFa,aAAYzqC,EACZ6pC,alH8CyB,OkH7CzBmC,aAAYnB,GAEZ,kBAAC,GAAD,CAAap3B,KAAMo3B,EAAYQ,YAAarrC,aCRzDqoB,gBA7BgB,SAAC9oB,GAC5B,MAA8CA,EAAM0K,aAA7CR,EAAP,EAAOA,EAAGG,EAAV,EAAUA,SAAUF,EAApB,EAAoBA,YAAaC,EAAjC,EAAiCA,UAC1B3L,EAAWuB,EAAMY,QAAjBnC,QAIP,MAAO,CACHyV,KAFAlU,EADAkU,KAAOsyB,aAIP/jC,gBAAiBzC,EAAMmC,OAAOM,gBAC9BhE,UACAgC,KAAMyJ,EACNG,WACAF,cACAC,eAgBgC,MATd,SAACo+B,EAAD,EAAmCC,GAAmB,IAAnC/nC,EAAkC,EAAlCA,SACzC,OAAO,uCACA8nC,GADP,IAEI9nC,YACG+nC,GAHP,IAII8C,mBAAoB,SAACD,GAAD,OAAwBtpC,EAAUwmC,EAAW/pC,QAArBuD,CAA8BspC,SCbrEzF,IAVYte,KAAOO,IAAV,2EAAGP,CAAH,6HAUKA,aAAOmlB,MAAWC,MAAM,CAACC,eAAe,IAA3C,6EAAGrlB,CAAH,mWAEP,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAK24B,aAE5C,SAAC32B,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAEpE,SAACjR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,WAmB3E9X,GAAQR,aAAOwF,MAAV,uEAAGxF,CAAH,2NAEQ,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO7a,UAAU6mB,MAAMZ,QAAQme,gBACjEz/B,GAAYC,OAAOG,IAUnC6mC,GAAkBvlB,KAAOC,IAAV,iFAAGD,CAAH,8UAEV,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUC,oBACvD,SAACzR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMzE,UACrD,SAAC9pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMzE,UAIhE,SAAC9pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,UAEtCthB,GAAYC,OAAOG,IACtB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUC,oBAMhEolB,GAAUxlB,KAAOC,IAAV,yEAAGD,CAAH,qgBAQP,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,UAEtCthB,GAAYC,OAAOG,GAQfJ,GAAYC,OAAOE,GAAyBH,GAAYC,OAAOG,GAAK,GAMnE,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO7a,UAAU6rC,QAAQC,SAAS7lB,QAAQ8lB,aAOhG1gB,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,6MAGG1hB,GAAYC,OAAOG,IACnB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM/X,UAG/D,SAACxW,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMzE,UACzD,SAAC9pB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO7a,UAAUqrB,UAAUtmB,GAAGykB,SAIvEwiB,GAAsB3lB,KAAOC,IAAV,qFAAGD,CAAH,ySACd,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUmF,WAOxD,SAAC3W,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAK24B,YAItChnC,GAAYC,OAAOG,IAMnCknC,GAAe5lB,KAAOS,KAAV,8EAAGT,CAAH,yMAIN,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OADjC,aAC4CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAKjE,SAACjR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YCzHrF6F,GAAS,SAAC,GAAD,IAAE9Y,EAAF,EAAEA,KAAF,OACX,kBAACm5B,GAAA,EAAD,CAAQC,MAAI,EAACC,eAAe,OACxB,kBAACT,GAAD,CAAiBviB,cAAY,oCACzB,kBAAC,GAAD,CAAOve,QAAQ,MAAMkI,EAAKs5B,eAIhCC,GAAU,SAAC,GAQe,IAP5BlC,EAO2B,EAP3BA,mBACA9qC,EAM2B,EAN3BA,KACA4J,EAK2B,EAL3BA,SACAF,EAI2B,EAJ3BA,YACAC,EAG2B,EAH3BA,UACA3H,EAE2B,EAF3BA,gBACAyR,EAC2B,EAD3BA,KAEOw5B,EAA6Bx5B,EAA7Bw5B,eAAgBC,EAAaz5B,EAAby5B,UAEvB,OACI,kBAACZ,GAAD,CAASxiB,cAAY,gBAChBlgB,EAAW,GACR,oCACI,kBAAC,GAAD,MACA,kBAACgjC,GAAA,EAAD,CAAQC,MAAI,EAACC,eAAe,OACxB,kBAACL,GAAD,KACI,uBACI3iB,cAAY,kDACZ8f,arHwBF,SqHvBEC,arHgC2B,kBqH/B3B/nC,KAAMgpC,EAAmB9qC,IAExBitC,OAOnBtjC,GAAaD,GAAsC,IAAvBA,EAAY5V,QAA6B,IAAb8V,GACtD,kBAAC8iC,GAAD,KACKQ,EADL,KACsB,gCAASlrC,GAD/B,OAeDqmB,OAPmB,SAAC5S,GAAD,OAC9B,kBAAC,GAAD,CAAWqU,cAAY,+BACnB,kBAAC,GAAD,CAAQrW,KAAMgC,EAAMhC,OACpB,kBAAC,GAAYgC,OClDN4S,gBApBgB,SAAC9oB,GAAkB,IAAD,IACtC4tC,EAAY5tC,EAAMkU,KAAK25B,eAAvBD,SACA7sC,EAAYf,EAAMc,QAAlBC,SAGDC,GAAW,UAAAhB,EAAMiB,SAASC,iBAAf,mBAA0BC,oBAA1B,eAAwCH,WAFpC,EAIfqO,EAAQtO,EACTM,QACAnE,KAAI,SAAAqG,GAAI,MAAK,CAACA,OAAM7E,IAAI,GAAD,OAAKsB,EAAMY,QAAQnC,QAAnB,qBAAuCyD,mBAAmBqB,QACjFuqC,UAGL,MAAO,CACHz+B,MAFqB,OAAGA,QAAH,IAAGA,OAAH,EAAGA,EAAOhO,MAAM,EAAGL,GAGxCyB,gBAAiBzC,EAAMmC,OAAOM,gBAC9ByR,KAAM05B,MCfDpC,GAAKjkB,KAAOkkB,GAAV,qEAAGlkB,CAAH,ybAIE,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,UAWtCthB,GAAYC,OAAOG,IASnCylC,GAAKnkB,KAAOokB,GAAV,qEAAGpkB,CAAH,2EACU1hB,GAAYC,OAAOG,IAK/B8nC,GAAIxmB,KAAO/yB,EAAV,oEAAG+yB,CAAH,8EClCDymB,GAAqB,SAAC95B,GAE/B,IADA,IAAM+5B,EAAQ/5B,EAAK1S,OAAO1F,MAAM,KACvB1H,EAAI,EAAGA,EAAI65C,EAAM15C,OAAQH,GAAK,EAC/B65C,EAAM75C,GAAG,KACT65C,EAAM75C,GAAK65C,EAAM75C,GAAG,GAAG6Z,cAAgBggC,EAAM75C,GAAG8iC,OAAO,IAI/D,OAAO+W,EAAMzwC,KAAK,MCmCPsrB,OAzBe,SAAC,GAAyD,IAAxDzZ,EAAuD,EAAvDA,MAAO5M,EAAgD,EAAhDA,gBAC5ByrC,EAD4E,EAA/Bh6B,KAC7Cg6B,oBACDC,GAAuBD,EAE7B,OAAO7+B,EAAM9a,QAAU45C,EACnB,kBAAC,GAAD,KACK9+B,EAAMnS,KAAI,gBAAEqG,EAAF,EAAEA,KAAM7E,EAAR,EAAQA,IAAR,OACP,kBAAC,GAAD,CAAI+W,IAAKlS,EAAMknB,QAASwZ,IACpB,uBACI1hC,KAAM7D,EACN6rB,cAAA,iCAAuChnB,GACvC8mC,azH6CM,SyH5CNa,aAAY3nC,EACZ+mC,azH4CoB,iByH1CpB,kBAAC,GAAD,CAAap2B,KAAM85B,GAAmBzqC,GAAOuoC,YAAarpC,UAM1E,kBAACsrC,GAAD,KAAIG,MCbGplB,gBAtBgB,SAAC9oB,GAC5B,IAEyBouC,EAGrBpuC,EAJAkU,KACI25B,eAAiBO,OAEXrtC,EACVf,EADAc,QAAUC,SAKd,MAAO,CACHmT,KAAMk6B,EACNC,aAJiBttC,GAAYA,EAASxM,OAAS,MAQrB,SAACmM,GAAD,MAAoB,CAClD4tC,MAAO,WACH5tC,EAASkB,UCJXorB,GAAS,SAAC,GAA8C,IAA7CshB,EAA4C,EAA5CA,MAAOp6B,EAAqC,EAArCA,KAAMm6B,EAA+B,EAA/BA,aACnBE,EAA+Br6B,EAA/Bq6B,aAAcC,EAAiBt6B,EAAjBs6B,cAErB,OACI,kBAAC1B,GAAD,CAAiB5I,UAAU,iBAAiB3Z,cAAY,kBACpD,kBAAC,GAAD,CAAOve,QAAQ,MACX,kBAACqhC,GAAA,EAAD,CAAQC,MAAI,EAACC,eAAe,OACvBgB,GAEL,kBAAClB,GAAA,EAAD,CAAQoB,QAAM,EAAClB,eAAe,OACzBiB,IAGRH,GACG,kBAAC,GAAD,CACI9jB,cAAY,sCACZE,QAAS6jB,EACTjE,a3HuCU,S2HtCVa,a3H6CgC,4B2H5ChCZ,a3H2C0B,uBA9BrB,e2HLnBmD,GAAU,kBACZ,kBAACV,GAAD,CAASxiB,cAAY,gBACjB,kBAAC,GAAD,QAiBOzB,OAPqB,SAAC5S,GAAD,OAChC,kBAAC,GAAD,CAAWqU,cAAY,iCACnB,kBAAC,GAAWrU,GACZ,kBAAC,GAAD,UC5CK62B,GAAUxlB,KAAOC,IAAV,0EAAGD,CAAH,ieAcS1hB,GAAYC,OAAOG,IAEzB,SAACiQ,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmL,YAAYjhB,GAAGmhB,SAItDvhB,GAAYC,OAAOI,IAEzB,SAACgQ,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmL,YAAYhhB,GAAGkhB,UCXpEsnB,GAdK,SAAC,GAA0D,IAAzDzN,EAAwD,EAAxDA,KAAMC,EAAkD,EAAlDA,YAAatlB,EAAqC,EAArCA,SAAUuvB,EAA2B,EAA3BA,UAC/C,OACI,kBAAC,GAAD,KACI,kBAAC,GAAD,CAAOlK,KAAMA,EAAMC,YAAaA,EAAaE,cAAY,GACrD,oCACKxlB,EAED,yBAAK2uB,SAAU,EAAGoE,KAAK,SAASvE,QAASlJ,EAAapW,aAAYqgB,QCwBvEriB,gBAtCgB,SAAC9oB,GAAkB,IAAD,IAC7C,EAAuDA,EAAM0K,aAAtDT,EAAP,EAAOA,WAAYI,EAAnB,EAAmBA,SAAUF,EAA7B,EAA6BA,YAAaC,EAA1C,EAA0CA,UACpC3C,EAAM,UAAGzH,EAAMY,eAAT,iBAAG,EAAe7L,eAAlB,aAAG,EAAwB0S,OAE5B++B,EACPxmC,EADAkU,KAAOsyB,aAELoI,GAAexkC,GAAaD,GAAsC,IAAvBA,EAAY5V,QAA6B,IAAb8V,EAE7E,MAAO,CACH6J,KAAMsyB,EACN/jC,gBAAiBzC,EAAMmC,OAAOM,gBAC9B2H,YACAH,aACAI,WACAF,cACA1C,SACAmnC,iBAsBgC,MAfd,SAACpG,EAAD,EAAmCC,GAAmB,IAAnC/nC,EAAkC,EAAlCA,SACzC,OAAO,uCACA8nC,GADP,IAEI9nC,YACG+nC,GAHP,IAIIj+B,qBAAsB,SAAC/J,GACnB,MAAmD+nC,EAAWv+B,WAAvDV,EAAP,EAAOA,UAAWE,EAAlB,EAAkBA,UAAWC,EAA7B,EAA6BA,QAAS3N,EAAtC,EAAsCA,UAC/B0L,EAAU+gC,EAAV/gC,OACDkC,EAAOlC,EAAS0gC,GzGrBV,YyGqBmC1gC,GAAUhG,IAAQqH,IzGrBrD,ayGuBZpI,EAAS8J,GAAqB/J,EAAM8I,EAAWE,EAAWC,EAASC,EAAM5N,GAD9C,U,UC1B1B8yC,GAAoBtnB,KAAOC,IAAV,mFAAGD,CAAH,wIAGL1hB,GAAYC,OAAOG,IAM/B6mC,GAAkBvlB,KAAOC,IAAV,iFAAGD,CAAH,gOAEV,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUC,oBACpD,SAACzR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMzE,UAC3D,SAAC9pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAMzE,UAC7D,SAAC9pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,UAEtCthB,GAAYC,OAAOG,IAM/B6oC,GAAgBvnB,KAAOC,IAAV,+EAAGD,CAAH,mFAebse,IAVYte,KAAOO,IAAV,2EAAGP,CAAH,6HAUKA,aAAOmlB,MAAWC,MAAM,CAACC,eAAe,IAA3C,6EAAGrlB,CAAH,mWAEP,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAK24B,aAE5C,SAAC32B,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAEpE,SAACjR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,WAkB3E9X,GAAQR,aAAOwF,MAAV,uEAAGxF,CAAH,iLAEK,gBAAET,EAAF,EAAEA,MAAF,gBACRA,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAD1B,aACqCxB,EAAMW,QAAQU,KAAKhB,YACxD,qBAAEL,MAA+BW,QAAQU,KAAKsE,QAAQmT,OAAOC,UAC1D,qBAAE/Y,MAA+B/K,OAAOknB,SAAS1W,UAAUpF,QAAQme,gBAEhEz/B,GAAYC,OAAOG,IAOnC8oC,GAAuBxnB,aAAOgF,MAAV,sFAAGhF,CAAH,qMAEd,qBAAET,MAA+B/K,OAAO7a,UAAU6tC,qBAAqB5nB,QAAQub,UAErE78B,GAAYC,OAAOG,IACzB,qBAAE6gB,MAA+B/K,OAAO7a,UAAU6tC,qBAAqB9oC,GAAGy8B,UAGpE78B,GAAYC,OAAOK,IACzB,qBAAE2gB,MAA+B/K,OAAO7a,UAAU6tC,qBAAqB5oC,GAAGu8B,WAIpFsM,GAAyBznB,aAAOgF,MAAV,wFAAGhF,CAAH,qNAIN1hB,GAAYC,OAAOG,GAInBJ,GAAYC,OAAOK,IAKnC8oC,GAAc1nB,aAAO2nB,MAAV,6EAAG3nB,CAAH,0RACV,qBAAET,MAA+B/K,OAAO7a,UAAU+tC,YAAY9nB,QAAQ4b,UAC/D,qBAAEjc,MAA+B/K,OAAO7a,UAAU+tC,YAAY9nB,QAAQgoB,gBAE9E,SAACj5B,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,UAEtCthB,GAAYC,OAAOI,IAC3B,qBAAE4gB,MAA+B/K,OAAO7a,UAAU+tC,YAAY/oC,GAAGwkB,SAChE,qBAAE5D,MAA+B/K,OAAO7a,UAAU+tC,YAAY/oC,GAAG68B,UAC1D,qBAAEjc,MAA+B/K,OAAO7a,UAAU+tC,YAAY/oC,GAAGipC,gBAChE,qBAAEroB,MAA+B/K,OAAO7a,UAAU+tC,YAAY/oC,GAAGkpC,gBAGlEvpC,GAAYC,OAAOK,IAC3B,qBAAE2gB,MAA+B/K,OAAO7a,UAAU+tC,YAAY9oC,GAAGukB,SAIrE2kB,GAAc9nB,aAAO2nB,MAAV,6EAAG3nB,CAAH,wQACC1hB,GAAYC,OAAOG,IAEtB,gBAAEqpC,EAAF,EAAEA,aAAcC,EAAhB,EAAgBA,kBAAhB,OACVD,GAAgBC,EAAoB,OAAS,eACtC,qBAAEA,kBAA4C,SAAW,OCpI/DC,GAAwBjoB,KAAOC,IAAV,uFAAGD,CAAH,wOACT1hB,GAAYC,OAAOI,IAClB,qBAAE4gB,MAA+B/K,OAAO7a,UAAUqrB,UAAUrmB,GAAGkpC,iBAE7D,qBAAEtoB,MAA+B/K,OAAO7a,UAAU+tC,YAAY/oC,GAAGwkB,QAGpE7kB,GAAYC,OAAOK,IAEhB,qBAAE2gB,MAA+B/K,OAAO7a,UAAU+tC,YAAY9oC,GAAGukB,SAIhF+kB,GAAsBloB,KAAOC,IAAV,qFAAGD,CAAH,gOAEH1hB,GAAYC,OAAOE,GAAyBH,GAAYC,OAAOG,GAAK,GAYpFypC,GAAmBnoB,aAAOiB,MAAV,kFAAGjB,CAAH,8LACR,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUmF,UAGnDhnB,GAAYC,OAAOG,IAIpB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUmF,WAIlE8iB,GAA2BpoB,aAAOiB,MAAV,0FAAGjB,CAAH,oKAGZ1hB,GAAYC,OAAOG,IAM/BknC,GAAe5lB,KAAOS,KAAV,8EAAGT,CAAH,sSAIN,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OADjC,aAC4CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAKjE,SAACjR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,WAGlEthB,GAAYC,OAAOG,ICP7B6iB,gBAvDgB,SAAC9oB,GAAkB,IAAD,QAC7C,EAKIA,EAAMkU,KAJNsyB,aACIkH,EAFR,EAEQA,eACSkC,EAHjB,EAGQC,OAASD,UAGjB,EAAsB5vC,EAAM0K,aAArBJ,EAAP,EAAOA,SAAUJ,EAAjB,EAAiBA,EACjB,EAAgClK,EAAMY,QAA/BnC,EAAP,EAAOA,QAASW,EAAhB,EAAgBA,aACVpD,EAAQ,UAAGgE,EAAM+I,YAAT,aAAG,EAAY/M,SACvBD,EAAS,UAAGiE,EAAM+I,YAAT,aAAG,EAAYhN,UACxBT,EAAM,UAAMU,EAAN,YAAkBD,GACxB+zC,EAAgB,UAAG9vC,EAAMiB,SAASC,UAAUyB,oBAA5B,aAAG,EAAuCmtC,iBAC1Dv0C,EAAK,UAAGyE,EAAM+I,YAAT,aAAG,EAAYxN,MAe1B,OAbIu0C,GAAoBxlC,GAAYA,EAAS/V,OAAS,GAClD5C,OAAOwvB,KAAK2uB,GAAkBjyC,SAAQ,SAAA4X,GAClC,GAAInL,EAAS/V,QAAU,EAAG,CAGtB,OADAu7C,EAAiBr6B,GAAOq6B,EAAiBr6B,GADlB,EAC0Cq6B,EAAiBr6B,GAD3D,GAEhB,EAEPq6B,EAAiBr6B,GAAOnL,EAAS/V,SACjCu7C,EAAiBr6B,GAAOnL,EAAS/V,WAKtC,CACH+V,WACA7J,KAAMyJ,EACNzL,UACAsxC,SAAUD,EACV57B,KAAM,CAACw5B,iBAAgBkC,aACvBxwC,eACA9D,SACAC,WAmBgC,MAZd,SAACitC,EAAD,EAAmCC,GAAmB,IAAnC/nC,EAAkC,EAAlCA,SACzC,OAAO,uCACA8nC,GADP,IAEI9nC,YACG+nC,GAHP,IAII4C,sBAAuB,SAACC,GACpB5qC,EAASF,EAAkB8qC,IAC3B5qC,EAASyB,EAAOqmC,EAAW/pC,QAAS6sC,UC7CnC/e,GAAYhF,KAAOC,IAAV,4EAAGD,CAAH,8TAQK,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,WAIlEthB,GAAYC,OAAOG,IAOnC+pC,GAAMzoB,KAAOC,IAAV,sEAAGD,CAAH,6YAGH,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAK24B,YAKtChnC,GAAYC,OAAOG,IAClB,SAACiQ,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOk0B,0BAA5C,aAAyB,EAAuClqC,GAAGmqC,gBAGpErqC,GAAYC,OAAOG,IACzB,SAACiQ,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOk0B,0BAA5C,aAAyB,EAAuChqC,GAAG0/B,WAC3D,SAACzvB,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOk0B,0BAA5C,aAAyB,EAAuChqC,GAAGkqC,kBAC7E,SAACj6B,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOo7B,mBAAmBrQ,SAC5D,SAAC7pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOo7B,mBAAmBC,mBAChF,SAACn6B,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOk0B,0BAA5C,aAAyB,EAAuChqC,GAAGy8B,WAC7D,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOo7B,mBAAmB1jB,UACtE,SAACxW,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOk0B,0BAA5C,aAAyB,EAAuChqC,GAAGiqC,iBAGhFI,GAAkB/oB,KAAOC,IAAV,kFAAGD,CAAH,uDACV,SAACrR,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOk0B,0BAA5C,aAAyB,EAAuChqC,GAAGsqC,aAExEC,GAAOjpB,KAAOkkB,GAAV,uEAAGlkB,CAAH,s8BAMY1hB,GAAYC,OAAOE,GAAK,GAC/B,SAACkQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKrpB,QAAQ4b,UAC3E,SAAC7sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKrpB,QAAQupB,YAG1E7qC,GAAYC,OAAOE,GAAyBH,GAAYC,OAAOG,IACtE,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKxqC,GAAG+8B,UACtE,SAAC7sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKxqC,GAAG0qC,aAQ7E,SAACx6B,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,WAO7C,SAACjR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUC,oBAKtD,SAACzR,GAAD,OACXA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKtyC,KAAKipB,QAAQwpB,cACrD,SAACz6B,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKtyC,KAAKipB,QAAQuD,SAClF,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKtyC,KAAKipB,QAAQC,SAExEvhB,GAAYC,OAAOG,IACrB,SAACiQ,GAAD,OACXA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKtyC,KAAK+H,GAAG0qC,cAChD,SAACz6B,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKtyC,KAAK+H,GAAGykB,SAC7E,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBD,KAAKtyC,KAAK+H,GAAGmhB,UAmBzE,SAAClR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAM7FypB,GAAoB,SAAAb,GAEtB,MAAM,OAAN,OADcA,EAAW,IAGhBc,GAAgBtpB,KAAOokB,GAAV,gFAAGpkB,CAAH,w2CAMH,SAACrR,GAAD,gBACZA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBI,cAAc1pB,QAAQ2pB,kBAUhDjrC,GAAYC,OAAOG,IAKvB,SAAAiQ,GAAK,OACdA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBI,cAAcL,KAAKrpB,QAAQ4pB,UAAnE,wBACiB76B,EAAM86B,SAAShrC,GADhC,QAEyB,SAAAkQ,GAAK,OAAIA,EAAM86B,SAAShrC,KAEhCH,GAAYC,OAAOE,GAAK,GAC3B,SAAAkQ,GAAK,OAAI06B,GAAkB16B,EAAM86B,SAASjrC,MAIvCF,GAAYC,OAAOG,GAAK,EAIxBJ,GAAYC,OAAOE,GAAyBH,GAAYC,OAAOG,GAAK,GAC5D,SAAAiQ,GAAK,OAAIA,EAAM86B,SAAShrC,MACvB,SAAAkQ,GAAK,OAAIA,EAAM86B,SAAShrC,MAEpC,SAAAkQ,GAAK,OAAI06B,GAAkB16B,EAAM86B,SAAShrC,MAIvCH,GAAYC,OAAOG,GAAyBJ,GAAYC,OAAOI,GAAK,GAC3D,SAAAgQ,GAAK,OAAIA,EAAM86B,SAAS/qC,MACrC,SAAAiQ,GAAK,OACdA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBI,cAAcL,KAAKvqC,GAAG8qC,UAA9D,sBACe76B,EAAM86B,SAAS/qC,GAD9B,QAEY,SAACiQ,GAAD,OACZA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBI,cAAcL,KAAKvqC,GAAGgrC,eAEpD,SAAA/6B,GAAK,OAAI06B,GAAkB16B,EAAM86B,SAAS/qC,MAIvCJ,GAAYC,OAAOI,GAAyBL,GAAYC,OAAOK,GAAK,GACxE,SAAA+P,GAAK,OACdA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBI,cAAcL,KAAKtqC,GAAG6qC,UAA9D,sBACe76B,EAAM86B,SAAS9qC,GAD9B,QAEY,SAACgQ,GAAD,OACZA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBI,cAAcL,KAAKtqC,GAAG+qC,eACxC,SAAA/6B,GAAK,OAAIA,EAAM86B,SAAS9qC,MAEpC,SAAAgQ,GAAK,OAAI06B,GAAkB16B,EAAM86B,SAAS9qC,MAIvCL,GAAYC,OAAOK,IACvB,SAAA+P,GAAK,OACdA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBI,cAAcL,KAAKrqC,GAAG4qC,UAA9D,sBACe76B,EAAM86B,SAAS7qC,GAD9B,QAEY,SAAC+P,GAAD,OACZA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBI,cAAcL,KAAKrqC,GAAG8qC,eACxC,SAAA/6B,GAAK,OAAIA,EAAM86B,SAAS7qC,MAEpC,SAAA+P,GAAK,OAAI06B,GAAkB16B,EAAM86B,SAAS7qC,OAOvD4hB,GAAQR,aAAOwF,MAAV,wEAAGxF,CAAH,0KAQG,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO00B,qBAAqB1oB,MAAMZ,QAAQoe,YAGvF2L,GAA0B3pB,KAAOC,IAAV,0FAAGD,CAAH,uDAClB,SAACrR,GAAD,OACVA,EAAM4Q,MAAM/K,OAAO00B,qBAAqBS,wBAAwB/pB,QAAQopB,aC5NnEY,GAAwB,SAACzyC,EAAaD,GAC/C,IAAKC,EAAK,MAAO,GACjB,IAAM0yC,EAAQ,UAAM3yC,GAAN,OAAgBC,GAC9B,OAAI2yC,GAAe3yC,GACR0H,MAAgB/D,OAAOC,SAAS6kC,KAAKniC,SAAS,WAAaosC,EAAWE,GAAkBF,GAE5F1yC,GAGL4yC,GAAoB,SAAC5gC,GACvB,IACI,IAAM6gC,EAAM,IAAIntC,IAAIsM,GACpB,MAAM,GAAN,OAAU6gC,EAAIC,UAAd,OAAyBD,EAAIpvC,QAA7B,OAAsCovC,EAAIE,MAC5C,SACE,OAAO/gC,IAIT2gC,GAAiB,SAAA3yC,GAAG,MAAsB,MAAlBA,EAAIgzC,OAAO,IAAgC,MAAlBhzC,EAAIgzC,OAAO,ICHlE,GAIInJ,GAHA/B,aACIC,OAASC,GAFjB,GAEiBA,iBAAkBC,GAFnC,GAEmCA,iBAyEpB7d,OAzDqB,SAAC,GAAD,IAChCxe,EADgC,EAChCA,SACA7J,EAFgC,EAEhCA,KACA4qC,EAHgC,EAGhCA,sBACA0E,EAJgC,EAIhCA,SACA77B,EALgC,EAKhCA,KACAzV,EANgC,EAMhCA,QACAW,EAPgC,EAOhCA,aACA9D,EARgC,EAQhCA,OACAC,EATgC,EAShCA,MATgC,OAWhC,kBAAC,GAAD,KACI,0BAAMgvB,cAAY,sCACbrW,EAAK07B,UACN,oCAAenvC,EAAf,MAEJ,kBAACowC,GAAD,CAAetmB,cAAY,qBAAqBymB,SAAUjB,GACrDzlC,EAASpN,KAAI,SAACy0C,GACX,IAAOjzC,EAA4CizC,EAA5CjzC,IAAK+R,EAAuCkhC,EAAvClhC,MAAOmhC,EAAgCD,EAAhCC,IAAKC,EAA2BF,EAA3BE,WAElBC,EAF6CH,EAAfI,YAEHl+C,QAAQ6yC,GAAkBC,IAC3D,OACI,kBAAC6J,GAAD,CAAM/6B,IAAKm8B,EAAKnnB,QAASwZ,IACrB,uBACI1Z,cAAaz2B,EAAkB,+BAAD,OAAgC2c,IAC9DlO,KAAM4uC,GAAsBzyC,EAAKD,GACjC4rC,apIYE,SoIXFa,aAAYzqC,EACZ6pC,apIqBqB,QoIpBrBmC,aAAYh8B,GAEZ,yBAAKka,IAAKmnB,EAAclnB,IAAKna,IAC7B,kBAACygC,GAAD,KACI,kBAAC,GAAD,CAAOllC,QAAQ,aAAayE,GAC5B,kBAACsc,GAAA,EAAD,CAAY/gB,QAAQ,MtIqnDlC,SAAqBgmC,EAAUC,EAAU52C,EAAUC,EAAQC,GAC3E,OAAOy2C,IAAaC,EAAW92C,EAAa62C,EAAU32C,EAAUC,EAAQC,GAASJ,EAAa62C,EAAU32C,EAAUC,EAAQC,GAAS,MAAQJ,EAAa82C,EAAU52C,EAAUC,EAAQC,GsIrnDjJ22C,CAAYL,EAAYA,EAAYzyC,EAAc9D,EAAQC,WAQvF,kBAAC+0C,GAAD,KACI,kBAACN,GAAD,CACIzlB,cAAY,qCACZE,QAAS,kBAAM4gB,EAAsB5qC,IACrC4pC,apITc,SoIUda,aAAYzqC,EACZ6pC,apIF2C,mBoII1Cp2B,EAAKw5B,qBC/ChB1gB,GAAS,SAAC,GAAD,IAAE9Y,EAAF,EAAEA,KAAF,OACX,kBAACm5B,GAAA,EAAD,CAAQC,MAAI,EAACC,eAAe,OACxB,kBAAC,GAAD,CAAiBrJ,UAAU,sBAAsB3Z,cAAY,uBACzD,kBAACwkB,GAAD,CAAsBgC,SAAS,MAC3B,kBAACjC,GAAD,KACI,kBAAC,GAAD,CAAO9iC,QAAQ,MAAMkI,EAAKs5B,iBAOjC2E,GAAY,SAAC,GAAD,IAAEj+B,EAAF,EAAEA,KAAMzR,EAAR,EAAQA,gBAAR,OACrB,kBAAC,GAAD,KACKyR,EADL,KACiB,gCAASzR,GAD1B,MAKSgrC,GAAU,SAAC,GAA6E,IAA5ErjC,EAA2E,EAA3EA,UAAWI,EAAgE,EAAhEA,qBAAsB0J,EAA0C,EAA1CA,KAAM06B,EAAoC,EAApCA,YAK5D,OACI,kBAACK,GAAD,KACI,kBAACD,GAAD,CAAwB+B,SAAS,MAC7B,kBAAC1B,GAAD,CAAaC,aAAcV,EAAaW,mBAAmB,GACvD,kBAACV,GAAD,KACI,kBAACa,GAAD,CAAkBnsC,MAAI,EAAC0C,GAAI,GACvB,kBAACwpC,GAAD,KACI,kBAAC,GAAD,CAAcpD,YAXtB,SAAC5rC,EAAc6qC,GAC3B7qC,IAAS6qC,GACb9gC,EAAqB8gC,QAaL,kBAACqE,GAAD,CAA0BpsC,MAAI,EAAC0C,GAAI,GAC9BmE,GAAa8J,EAAKk+B,aACjBhoC,GAAa,kBAAC,GAAD,YAgC5B0e,OAvBmB,SAAC5S,GAC/B,IAAMm8B,EAAcn8B,EAAM7L,SAAW,GAAK6L,EAAM/L,aAAe+L,EAAM/L,YAAY5V,OAAS,EAC1F,OACI,kBAACi7C,GAAD,CAAuBjlB,cAAY,+BAC9B8nB,EACG,oCACI,kBAAC,GAAD,CAAQn+B,KAAMgC,EAAMhC,OACpB,kBAAC,GAAYgC,IAGjB,oCACKA,EAAM04B,aACH,oCACI,kBAAC,GAAD,CAAQ16B,KAAMgC,EAAMhC,OACpB,kBAAC,GAAD,CAAWA,KAAMgC,EAAMhC,KAAKy5B,UAAWlrC,gBAAiByT,EAAMzT,wBC9F7E6vC,GAAsB/qB,KAAOC,IAAV,qFAAGD,CAAH,wlBAUf,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,UAEtCthB,GAAYC,OAAOE,IAClB,SAACkQ,GAAD,OACdA,EAAM4Q,MAAM/K,OAAO7a,UAAUqxC,eAAeD,oBAAoBtsC,GAAGwsC,gBAMlD3sC,GAAYC,OAAOE,GAGnBH,GAAYC,OAAOG,GAGnBJ,GAAYC,OAAOI,ICLrC4iB,gBAtBgB,SAAC9oB,GAC5B,IAEyB4tC,EAGrB5tC,EAJAkU,KACI25B,eAAiBD,SAEX7sC,EACVf,EADAc,QAAUC,SAKd,MAAO,CACHmT,KAAM05B,EACNS,aAJiBttC,GAAYA,EAASxM,OAAS,MAQrB,SAACmM,GAAD,MAAoB,CAClD4tC,MAAO,WACH5tC,EAASkB,UCMXorB,GAAS,SAAC,GAA8C,IAA7CshB,EAA4C,EAA5CA,MAAOp6B,EAAqC,EAArCA,KAAMm6B,EAA+B,EAA/BA,aACnBE,EAA+Br6B,EAA/Bq6B,aAAcC,EAAiBt6B,EAAjBs6B,cAErB,OACI,kBAAC,GAAD,CAAiBtK,UAAU,iBAAiB3Z,cAAY,kBACpD,kBAACwkB,GAAD,CAAsBgC,SAAS,MAC3B,kBAACjC,GAAD,KACI,kBAAC,GAAD,CAAO9iC,QAAQ,MACX,kBAACqhC,GAAA,EAAD,CAAQC,MAAI,EAACC,eAAe,OACvBgB,GAEL,kBAAClB,GAAA,EAAD,CAAQoB,QAAM,EAAClB,eAAe,OACzBiB,IAGRH,GACG,kBAAC,GAAD,CACI9jB,cAAY,sCACZE,QAAS6jB,EACTjE,axI2BE,SwI1BFa,axIiCwB,4BwIhCxBZ,axI+BkB,uBA9BrB,iBwISnBmD,GAAU,SAACv3B,GAAD,OACZ,kBAAC+4B,GAAD,KACI,kBAAC,GAAW/4B,GACZ,kBAAC84B,GAAD,CAAwB+B,SAAS,MAC7B,kBAAC1B,GAAD,CAAaE,mBAAiB,GAC1B,kBAAC+C,GAAD,CAAqB/nB,cAAY,gBAC7B,kBAAC,GAAD,WAmBLzB,OANqB,SAAC5S,GAAD,OAChC,yBAAKqU,cAAY,iCACb,kBAAC,GAAYrU,OChER62B,GAAUxlB,KAAOC,IAAV,wEAAGD,CAAH,kXAWS1hB,GAAYC,OAAOG,IAC7B,SAACiQ,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmL,YAAYjhB,GAAGmhB,SAGlDvhB,GAAYC,OAAOI,IAC7B,SAACgQ,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmL,YAAYhhB,GAAGkhB,UCRhEqrB,GAZK,SAAC,GAAD,IAAExR,EAAF,EAAEA,KAAMC,EAAR,EAAQA,YAAatlB,EAArB,EAAqBA,SAAUuvB,EAA/B,EAA+BA,UAAW/J,EAA1C,EAA0CA,aAA1C,OAChB,kBAAC,GAAD,KACI,kBAAC,GAAD,CAAOH,KAAMA,EAAMC,YAAaA,EAAaE,aAA+B,OAAjBA,GAA+BA,GACtF,oCACKxlB,EAED,yBAAK2uB,SAAU,EAAGoE,KAAK,SAASvE,QAASlJ,EAAapW,aAAYqgB,QCmDrEuH,GAAwB5pB,IAvDG,SAAC,GACrC,OADoF,EAA9C7nB,SAAWC,UAC/B2B,OACd,KAAKvC,EACD,OAAO,kBAAC,GAAD,MACX,KAAKA,EACD,OAAO,kBAAC,GAAD,MACX,QACI,OAAO,kBAAC,GAAD,UAiDNqyC,GAA0B7pB,IA9CG,SAAC,GACvC,OADsF,EAA9C7nB,SAAWC,UACjC2B,OACd,KAAKvC,EACD,OAAO,kBAAC,GAAD,MACX,KAAKA,EACD,OAAO,kBAAC,GAAD,MACX,QACI,OAAO,kBAAC,GAAD,UAwCNsyC,GAAiB9pB,IA5BG,SAAC,GAON,IANb5nB,EAMY,EANvBD,SAAWC,UACX+/B,EAKuB,EALvBA,KACAC,EAIuB,EAJvBA,YACAtlB,EAGuB,EAHvBA,SACAuvB,EAEuB,EAFvBA,UACA/J,EACuB,EADvBA,aAEA,OAAQlgC,EAAU2B,OACd,KAAKvC,EACD,OACI,kBAAC,GAAD,CAAa2gC,KAAMA,EAAMC,YAAaA,EAAaiK,UAAWA,GACzDvvB,GAGb,KAAKtb,EACD,OACI,kBAAC,GAAD,CAAe2gC,KAAMA,EAAMC,YAAaA,EAAaiK,UAAWA,EAAW/J,aAAcA,GACpFxlB,GAGb,QACI,OAAO,4CCzBJkN,gBAhCgB,SAAC9oB,GAC5B,IAAMzE,EAAQyE,EAAMY,QAAQ7L,Q5IkBJ,gB4IjBxB,EAA+CiL,EAAMqU,SAA9CrI,EAAP,EAAOA,QAAS4C,EAAhB,EAAgBA,4BACVk8B,EAAuD,QAAtC9qC,EAAMiL,cAAc9K,cAA0B,OAAS,QAC9E,EAGIH,EAAMkU,KAHV,IACI4xB,UAAYsF,EADhB,EACgBA,YAAayH,EAD7B,EAC6BA,iBAAkBC,EAD/C,EAC+CA,eAC3ClM,EAFJ,EAEIA,OAEJ,EAAgC5mC,EAAM0K,aAA/BL,EAAP,EAAOA,SAAUF,EAAjB,EAAiBA,YACXykC,EAAczkC,GAAsC,IAAvBA,EAAY5V,QAA6B,IAAb8V,EACzD3H,EAAsB1C,EAAMiB,SAASC,UAAUyB,aAE/Cb,IADwBY,GAAsBA,EAAoBG,QACtB7C,EAAMmC,OAAOY,iBAC/D,MAAO,CACHgwC,kBAAmB/yC,EAAMc,QAAQC,SAASxM,OAAS,EACnDuN,mBACAC,iBAAkB/B,EAAMmC,OAAOJ,iBAC/BgM,QAASw6B,GAAKzC,UAAUC,cAAcxqC,EAAOyQ,GAC7C8+B,SACAkI,cAAehzC,EAAMiB,SAAS1C,EAAsB2C,WAAW2B,MAC/DJ,gBAAiBzC,EAAMmC,OAAOM,gBAC9ByR,KAAM,CAACk3B,cAAayH,mBAAkBjM,SAAQkM,kBAC9ClE,cACAqE,gBAAiBrkC,MAIS,SAAClO,GAAD,MAAoB,CAClDwgC,YAAa,kBAAMxgC,EAASoC,MAC5BN,WAAY,kBAAM9B,EAAS8B,UCrBlB0wC,GAAqB3rB,KAAOC,IAAV,mFAAGD,CAAH,2GAEM,SAACrR,GAAD,OACzBA,EAAMi9B,gBAAkB7yC,GAAmC4V,EAAM+qB,KAC3D,IACA/qB,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM/X,UACX,SAACxW,GAAD,OAC1BA,EAAMi9B,gBAAkB7yC,GAAmC4V,EAAM+qB,KAC3D,IACA/qB,EAAM4Q,MAAMW,QAAQkF,KAAK8X,MAAM/X,UAGpC0mB,GAAgB7rB,KAAOC,IAAV,8EAAGD,CAAH,2IACX,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+mB,OAAOsQ,cAAcjsB,QAAQub,WAIvE,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+mB,OAAOsQ,cAAcjsB,QAAQuD,SACxE,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+mB,OAAOsQ,cAAcjsB,QAAQC,UAI9EisB,GAAa9rB,KAAOC,IAAV,2EAAGD,CAAH,oEAEL,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+mB,OAAOuQ,WAAWlsB,QAAQC,UAG3EksB,GAAc/rB,aAAOmlB,MAAV,4EAAGnlB,CAAH,+SAGN,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+mB,OAAOwQ,YAAYnsB,QAAQC,UACnE,SAAClR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUC,oBAC5D,SAACzR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAK24B,aAC5C,SAAC32B,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAMjE,SAACjR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUC,oBCnC3E4rB,GAAe,SAAC,GASI,IARtBzI,EAQqB,EARrBA,OACA/8B,EAOqB,EAPrBA,QACAkzB,EAMqB,EANrBA,KACAuS,EAKqB,EALrBA,MACAhxC,EAIqB,EAJrBA,WACAV,EAGqB,EAHrBA,iBACAoS,EAEqB,EAFrBA,KACA++B,EACqB,EADrBA,gBAGM9G,EAAc,WAChB3N,KACAh8B,KAGJ,OACI,yBAAK+nB,cAAY,8BACb,kBAAC6oB,GAAD,CACIzE,KAAK,OACL8E,UAAWtH,EACX1hB,QAAS0hB,EACT9B,a9I+Bc,S8I9Bda,a9IiCmB,c8IhCnB3gB,cAAY,4BAEZ,yBAAKI,IAAK5c,EAAS6c,IAAI,iBAE3B,kBAACyiB,GAAA,EAAD,CAAQC,MAAI,EAACC,eAAe,MACxB,kBAAC,GAAD,CAAQzC,OAAQA,EAAQ7J,KAAMA,EAAMI,QAASmS,EAAOt/B,KAAMA,EAAK0yB,QAC3D,kBAACyM,GAAD,KACI,kBAAC,GAAD,CACIlK,WAAS,EACT3D,YAAatxB,EAAK2+B,iBAClB3J,QAAQ,mCAEX+J,GACG,kBAACK,GAAD,CACI1G,eAAa,EACbriB,cAAY,0CACZE,QAAS+oB,EACTnJ,a9IYF,S8IXEa,a9IeI,gB8IbHh3B,EAAKk3B,YAAYl3B,OAI7BpS,EAAmB,kBAAC4wC,GAAD,MAA4B,kBAACC,GAAD,UAgB9De,GAAa,SAAC,GAAkG,IAAjGzS,EAAgG,EAAhGA,KAAMuS,EAA0F,EAA1FA,MAAO1xC,EAAmF,EAAnFA,iBAAkBkxC,EAAiE,EAAjEA,cAAeF,EAAkD,EAAlDA,eAAgBlE,EAAkC,EAAlCA,YAC/E,OACI,kBAACsE,GAAD,CAAoBC,cAAeH,EAAe/R,KAAMA,EAAM1W,cAAY,4BACtE,kBAAC,GAAD,CAAW4e,WAAW,EAAO3D,YAAasN,EAAgB5J,QAAQ,iCAClE,kBAACmE,GAAA,EAAD,CAAQoB,QAAM,EAAClB,eAAe,MAC1B,kBAACqF,GAAD,CAAgB3R,KAAMA,EAAMC,YAAasS,EAAOpS,eAAct/B,GAAmB8sC,GAC5E9sC,EAAmB,kBAAC4wC,GAAD,MAA4B,kBAACC,GAAD,UAkErD7pB,OA7CO,SAAC,GAYH,IAXhB/a,EAWe,EAXfA,QACAmzB,EAUe,EAVfA,YACA1+B,EASe,EATfA,WACAV,EAQe,EARfA,iBACAC,EAOe,EAPfA,iBACA+oC,EAMe,EANfA,OACAkI,EAKe,EALfA,cACAD,EAIe,EAJfA,kBACA7+B,EAGe,EAHfA,KACA06B,EAEe,EAFfA,YACAqE,EACe,EADfA,gBAEMU,EAAsB7xC,GAAoBC,EAC1C6xC,EAAsB7xC,GAAoBgxC,GAAsBjxC,EACtE,OACI,kBAAC+xC,GAAA,EAAD,CAAmBC,YAAa5S,GAC5B,yBAAK3W,cAAY,yBAAyB2Z,UAAU,0BAChD,kBAACmJ,GAAA,EAAD,CAAQC,MAAI,EAACC,eAAe,OACxB,kBAAC,GAAD,CACIx/B,QAASA,EACTvL,WAAYA,EACZy+B,KAAM0S,EACNH,MAAOtS,EACPp/B,iBAAkBA,EAClBgpC,OAAQA,EACR52B,KAAMA,EACN++B,gBAAiBA,KAGzB,kBAAC5F,GAAA,EAAD,CAAQoB,QAAM,EAAClB,eAAe,OAC1B,kBAAC,GAAD,CACItM,KAAM2S,EACNJ,MAAOtS,EACPp/B,iBAAkBA,EAClBkxC,cAAeA,EACfF,eAAgB5+B,EAAK4+B,eACrBlE,YAAaA,U,UClIjC,GAAU,WAaZ,OAZA,GAAUj9C,OAAOsC,QAAU,SAAkBC,GAC3C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAG9C,IAAK,IAAII,KAFTL,EAAIG,UAAUF,GAGRzC,OAAO8C,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAI7D,OAAON,IAGMU,MAAMC,KAAMP,YAG7B,SAASy/C,GAAqBC,EAAQ11B,GASpC,OARI3sB,OAAO4kB,eACT5kB,OAAO4kB,eAAey9B,EAAQ,MAAO,CACnC52C,MAAOkhB,IAGT01B,EAAO11B,IAAMA,EAGR01B,EAGT,IAkCIC,GAAkBC,GAlClB,GAAS,aAAOC,GAAA,GAAUC,WAAW,CACvCC,YAAa,iBACbC,YAAa,aAFF,CAGVL,KAAqBA,GAAmBF,GAAqB,CAAC,aAAc,wMAAyM,CAAC,GAAI,OAAO,SAAU79B,GAC5S,IAAIza,EAAIC,EAER,OAA0C,QAArCD,EAAKya,EAAM4Q,MAAM/K,OAAO+nB,eAA4B,IAAProC,OAAgB,EAASA,EAAGsnC,QAC/B,QAArCrnC,EAAKwa,EAAM4Q,MAAM/K,OAAO+nB,eAA4B,IAAPpoC,OAAgB,EAASA,EAAGqnC,OAG5E,kBAELwR,GAAQ,KAAO/sB,IAAI4sB,WAAW,CAChCC,YAAa,gBACbC,YAAa,cAFH,CAGTJ,KAAqBA,GAAmBH,GAAqB,CAAC,OAAQ,8GAA+G,uBAAwB,UAAW,WAAY,oDAAuD,gEAAiE,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,OAAO,SAAU79B,GACvY,IAAIza,EAAIC,EAER,OAAmG,QAA1FA,EAA2C,QAArCD,EAAKya,EAAM4Q,MAAM/K,OAAO+nB,eAA4B,IAAProC,OAAgB,EAASA,EAAG+4C,aAA0B,IAAP94C,OAAgB,EAASA,EAAG+4C,cAAgB,cACtJ,SAAUv+B,GACX,OAAOA,EAAM4Q,MAAMW,QAAQ2X,QAAQY,UAClC,SAAU9pB,GACX,MAAiC,QAA1BA,EAAM4Q,MAAM/b,UAAsB,oBAAsB,wBAC9D,SAAUmL,GACX,IAAIza,EAAIC,EAER,OAAmG,QAA1FA,EAA2C,QAArCD,EAAKya,EAAM4Q,MAAM/K,OAAO+nB,eAA4B,IAAProC,OAAgB,EAASA,EAAG+4C,aAA0B,IAAP94C,OAAgB,EAASA,EAAGgvB,QAAU,cAChJ,SAAUxU,GACX,IAAIza,EAAIC,EAER,OAAmG,QAA1FA,EAA2C,QAArCD,EAAKya,EAAM4Q,MAAM/K,OAAO+nB,eAA4B,IAAProC,OAAgB,EAASA,EAAG+4C,aAA0B,IAAP94C,OAAgB,EAASA,EAAGgvB,QAAU,cAChJ,SAAUxU,GACX,OAAOA,EAAM4Q,MAAMW,QAAQ2X,QAAQC,kBAAoB,WAGrD,GAAU,EA6DC,GA3DD,SAAiB5jC,GAC7B,IAAIwlC,EAAOxlC,EAAGwlC,KACVyT,EAAWj5C,EAAGi5C,SACd94B,EAAWngB,EAAGmgB,SACdslB,EAAczlC,EAAGylC,YACjBxlC,EAAKD,EAAGuvB,QACRA,OAAiB,IAAPtvB,OAAgBgM,EAAYhM,EACtCC,EAAKF,EAAGk5C,iBACRA,OAA0B,IAAPh5C,EAAgB,IAAMA,EACzCC,EAAKH,EAAGm5C,UACRA,OAAmB,IAAPh5C,EAAgB,SAAWA,EACvCi5C,EAAKp5C,EAAGq5C,eACRA,OAAwB,IAAPD,GAAwBA,EACzCE,EAAYt5C,EAAGs5C,UAEfC,EAAK,mBAAS,MACdC,EAAWD,EAAG,GACdE,EAAWF,EAAG,GAEdG,EAAc,WACZnqB,IACFwZ,aAAa,IACb,GAAUD,WAAWrD,EAAalW,KAItC,qBAAU,WACRmqB,OAOF,OAAO,IAAM3wC,cAAc,GAAiB,CAC1CumB,KAAMkW,EACNjW,QAAS2pB,GACR,IAAMnwC,cAAc,GAAQ,CAC7B4wC,aAAcD,EACd3I,aATe,WACXxhB,GAASwZ,aAAa,KAS1BvD,KAAMA,EACNyT,SAAUA,EACV5T,aAAa,EACbD,eAAe,EACf3V,YAAY,EACZ6pB,UAAW,GAAQ,GAAQ,GAAIA,GAAY,CACzCP,MAAO,CACLa,QAASP,EACThyB,QAASmyB,KAGbL,UAAWA,GACV,IAAMpwC,cAAc+vC,GAAO,CAC5Be,IAAKR,EAAiBI,EAAW,OAC/B,IAAM1wC,cAAcqvC,GAAA,EAAmB,CACzCC,YAAa5S,GACZtlB,MC1HD,GAAU,WAaZ,OAZA,GAAUjqB,OAAOsC,QAAU,SAAkBC,GAC3C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAG9C,IAAK,IAAII,KAFTL,EAAIG,UAAUF,GAGRzC,OAAO8C,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAI7D,OAAON,IAGMU,MAAMC,KAAMP,YA4B7B,IAZ8B0/C,GAAQ11B,GA+DlC,G,SAzCA,GAAS,cAVQ,SAAwB7iB,GAC/BA,EAAGqrB,MACCrrB,EAAG85C,UACD95C,EAAG+5C,YAFrB,IAGI55B,EAAWngB,EAAGmgB,SACdrK,EA9BN,SAAgBpd,EAAGwQ,GACjB,IAAIzQ,EAAI,GAER,IAAK,IAAIM,KAAKL,EACRxC,OAAO8C,UAAUC,eAAeC,KAAKR,EAAGK,IAAMmQ,EAAE2X,QAAQ9nB,GAAK,IAAGN,EAAEM,GAAKL,EAAEK,IAG/E,GAAS,MAALL,GAAqD,oBAAjCxC,OAAO8jD,sBAA2C,KAAIrhD,EAAI,EAAb,IAAgBI,EAAI7C,OAAO8jD,sBAAsBthD,GAAIC,EAAII,EAAED,OAAQH,IAClIuQ,EAAE2X,QAAQ9nB,EAAEJ,IAAM,GAAKzC,OAAO8C,UAAUihD,qBAAqB/gD,KAAKR,EAAGK,EAAEJ,MAAKF,EAAEM,EAAEJ,IAAMD,EAAEK,EAAEJ,KAEhG,OAAOF,EAoBIyhD,CAAOl6C,EAAI,CAAC,QAAS,YAAa,cAAe,aAE5D,OAAO,IAAM+I,cAAcm7B,GAAA,EAAU,GAAQ,GAAIpuB,GAAOqK,MAGtBw4B,WAAW,CAC7CC,YAAa,aACbC,YAAa,cAFF,CAGV,KAzB2BN,GAyBkC,CAAC,yCAA0C,iFAAkF,UAAW,YAAa,kBAAmB,qBAAsB,4BAA6B,6BAA8B,4DAA6D,MAzBhV11B,GAyBuV,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAxB5Z3sB,OAAO4kB,eACT5kB,OAAO4kB,eAAey9B,GAAQ,MAAO,CACnC52C,MAAOkhB,KAGT01B,GAAO11B,IAAMA,GAmBO,GAhBf01B,KAgBga,SAAUv4C,GACjb,IAAIqrB,EAAQrrB,EAAGqrB,MACf,OAAOA,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAAS,KAAOxB,EAAMW,QAAQU,KAAKhB,WAC3E,SAAU1rB,GACX,IAAIqrB,EAAQrrB,EAAGqrB,MACXyuB,EAAY95C,EAAG85C,UACnB,OAAOzuB,EAAMW,QAAQkF,KAAK,SAAW4oB,GAAWvV,UAC/C,SAAUvkC,GACX,IAAI+5C,EAAc/5C,EAAG+5C,YACjB1uB,EAAQrrB,EAAGqrB,MACXyuB,EAAY95C,EAAG85C,UACnB,OAAOC,EAAc1uB,EAAMW,QAAQkF,KAAK,SAAW4oB,GAAWxV,MAAQ,WACrE,SAAUtkC,GACX,IAAI+5C,EAAc/5C,EAAG+5C,YACjB1uB,EAAQrrB,EAAGqrB,MACXyuB,EAAY95C,EAAG85C,UACnB,OAAOC,EAAc1uB,EAAMW,QAAQkF,KAAK,SAAW4oB,GAAWpqB,QAAU,KACvE,SAAU1vB,GACX,IAAIqrB,EAAQrrB,EAAGqrB,MACXyuB,EAAY95C,EAAG85C,UACnB,OAAOzuB,EAAMW,QAAQkF,KAAK,SAAW4oB,GAAW7oB,UAC/C,SAAUjxB,GACX,IAAIqrB,EAAQrrB,EAAGqrB,MACXyuB,EAAY95C,EAAG85C,UACnB,OAAOzuB,EAAMW,QAAQkF,KAAK,SAAW4oB,GAAW3oB,cAC/C,SAAUnxB,GACX,IAAIqrB,EAAQrrB,EAAGqrB,MACXyuB,EAAY95C,EAAG85C,UACnB,OAAOzuB,EAAMW,QAAQkF,KAAK,SAAW4oB,GAAW3oB,cAC/C,SAAUnxB,GACX,IAAIqrB,EAAQrrB,EAAGqrB,MACXyuB,EAAY95C,EAAG85C,UACnB,OAAOzuB,EAAMW,QAAQkF,KAAK,SAAW4oB,GAAW3oB,cAC/C,SAAUnxB,GACX,IAAIqrB,EAAQrrB,EAAGqrB,MACXyuB,EAAY95C,EAAG85C,UACnB,OAAOzuB,EAAMW,QAAQkF,KAAK,SAAW4oB,GAAWxV,SAI9C,GAAM,SAAatkC,GACrB,IAAIm6C,EAASn6C,EAAGm6C,OACZl3C,EAAMjD,EAAGiD,IACTwV,EAAOzY,EAAGyY,KACVqhC,EAAY95C,EAAG85C,UACf9qB,EAAUhvB,EAAGgvB,QACborB,EAASp6C,EAAGo6C,OACZC,EAAWr6C,EAAGq6C,SACdC,EAAWt6C,EAAGs6C,SACdC,EAAWv6C,EAAGu6C,SACdC,EAAMx6C,EAAGw6C,IACb,OAAO,IAAMzxC,cAAc,GAAQ,CACjCjC,KAAM7D,EACN+rB,QAASA,EACTuf,UAAW4L,EACXJ,aAAcI,EACdL,UAAWA,EACX3I,eAAe,EACf,cAAeiJ,EACf,aAAcC,EACd,aAAcC,EACd,aAAcC,EACdC,IAAKA,GACJ/hC,IAGU,MClEA4U,gBA/DgB,SAAC9oB,GAAkB,IAAD,MAEzCmJ,EAKAnJ,EALAmJ,KACAJ,EAIA/I,EAJA+I,KACUtK,EAGVuB,EAHAY,QAAUnC,QACH0nC,EAEPnmC,EAFAkU,KAAOiyB,UACP9xB,EACArU,EADAqU,SAGE9Y,EAAK,OAAGwN,QAAH,IAAGA,OAAH,EAAGA,EAAMxN,MACd26C,EAAa/sC,EAAK9K,SACjB2K,EAA0BG,EAA1BH,UAAWC,EAAeE,EAAfF,YACX+C,EAAWqI,EAAXrI,QAEDmqC,EAAU,OAAGptC,QAAH,IAAGA,GAAH,UAAGA,EAAMy6B,eAAT,iBAAG,EACbjiC,QAAO,SAAAkiC,GAAM,OAAIA,EAAOtmC,OAAS2+B,GAAqBsa,cAAY,UADxD,iBAAG,EAEb1S,gBAFU,aAAG,EAEHniC,QAAO,SAAA+Z,GAAI,MAAkB,cAAdA,EAAKne,QAAsB,GAAGumC,SAEvD2S,EAAiB,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAY94C,QAAO,SAACi5C,EAAKlhD,GAC/C,OAAIA,EAAK+H,OAASiB,EAA2BC,SAClC,2BACAi4C,GADP,IAEIj4C,SAAS,2BACFjJ,GADC,IAEJ8e,KAAMzgB,EAAY2B,EAAK8e,KAAgBlL,EAAW,cAClD86B,QAASrwC,EAAY2B,EAAK0uC,QAAmB96B,EAAW,kBAIhE5T,EAAK+H,OAASiB,EAA2BE,UAClC,2BAAIg4C,GAAX,IAAgBh4C,UAAU,2BAAKlJ,GAAN,IAAY8e,KAAM9e,EAAK8e,OAAO4vB,QAAS,KAE7DwS,IACR,IAEGp+B,EAASg+B,EAAaG,EAAah4C,SAAWg4C,EAAa/3C,UAC3Di4C,EAAwBttC,EAAcotC,EAAah4C,SAAS6V,KAAO,GACnEsiC,EAAyBvtC,EAAcotC,EAAa/3C,UAAU4V,KAAO,GACrEuiC,EAAgBF,GAAyBC,EAE/C,MAAO,CACH3S,kBAAmB3rB,EAAO2rB,kBAC1BqS,WAAYl2C,EAAMmJ,KAAK9K,SACvBslC,eAAgB53B,GAAyBmM,EAAOyrB,eAAgBpoC,EAAOyQ,GACvEq6B,WAAW,GAAD,OAAK5nC,GAAL,OAAe8pC,GAAKpC,UAAUE,YACxCqQ,YAAanO,GAAKpC,UAAUG,eAAe/qC,EAAOyQ,GAClDtN,IAAI,GAAD,OAAKD,GAAL,OAAe8pC,GAAKpC,UAAUC,UACjCqQ,gBACA7S,aAAc73B,GAAyBmM,EAAO0rB,aAAcroC,EAAOyQ,GACnEhD,YACAC,cACAiL,KAAMiyB,KAY0B,MARd,SAACnmC,EAAD,EAA8ByoC,GAA9B,IAAc/nC,EAAd,EAAcA,SAAd,mBAAC,2BACpBV,GACAyoC,GAFmB,IAGtBkO,kBAAmB,SAAC5tC,G/H7CQ,IAAC6tC,E+H8CzBl2C,G/H9CyBk2C,E+H8CC7tC,E/H9C2C,SAACrI,GAC1E,GAAIk2C,EAAW1e,QAAS,CACpB,IAAMlvB,EAAY4tC,EAAW7tC,KAAKgxB,YAAY8c,UAC9Cn2C,EAASwI,GAAQ,CAACF,UAAS,OAAEA,QAAF,IAAEA,IAAa,GAAI3K,WAAY2K,EAAWC,aAAa,UAElFvI,EAASwI,GAAQ,CAACF,UAAW,GAAI3K,UAAU,EAAO4K,aAAa,cgIpB1D6tC,GAASvvB,KAAOnS,EAAV,uEAAGmS,CAAH,+PAMA,qBAAEwvB,SAAiC,QAAU,YAK1C,SAAC7gC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO7d,KAAKipB,QAAQqrB,iBCahEt0C,GAlBF,SAAC,GAAgF,IAA/EqE,EAA8E,EAA9EA,KAAMqZ,EAAwE,EAAxEA,SAAUk6B,EAA8D,EAA9DA,SAAUC,EAAoD,EAApDA,SAAUE,EAA0C,EAA1CA,IAAKe,EAAqC,EAArCA,WAC9CC,EAAY,CACd10C,OACAw0C,SAHqF,EAAzBA,SAI5D,aAAcjB,EACd,aAAcC,GAMlB,OAFIE,IAAKgB,EAAS,IAAUhB,GAGxB,kBAACa,GAAD,iBAAYG,EAAZ,CAAuB1sB,cAAaysB,IAC/Bp7B,ICtBAmoB,GAAwBxc,KAAOC,IAAV,sFAAGD,CAAH,yeACrB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAU8lC,sBAAsB5c,QAAQuD,SACnF,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAU8lC,sBAAsB5c,QAAQ4b,UAK/E,SAAC7sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAU8lC,sBAAsBzoB,KAAK6L,QAAQub,WAW3F,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQvT,KAAKgjC,WAAW57B,QAIjD0oB,GAA0Bzc,KAAOC,IAAV,wFAAGD,CAAH,yKACtB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAU+lC,wBAAwB7c,QAAQ4b,SAE3El9B,GAAYC,OAAOG,IAC1B,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAU+lC,wBAAwB/9B,GAAG88B,UAIhF,SAAC7sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAU+lC,wBAAwB7c,QAAQub,WAI5FU,GAAM7b,KAAOO,IAAV,oEAAGP,CAAH,wOACH,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUmlC,IAAIjc,QAAQuD,SACjE,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUmlC,IAAIjc,QAAQC,SAEvDvhB,GAAYC,OAAOI,IAC3B,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUmlC,IAAIl9B,GAAGwkB,SAC5D,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUmlC,IAAIl9B,GAAGkhB,UAC7D,SAAClR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUmlC,IAAIl9B,GAAG68B,SAGtDl9B,GAAYC,OAAOG,GAAK,GAChC,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUmlC,IAAIn9B,GAAGykB,SAC5D,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUmlC,IAAIn9B,GAAGmhB,UAIlE+vB,GAAW5vB,KAAOS,KAAV,yEAAGT,CAAH,iSACP,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUk5C,SAAShwB,QAAQ4b,UAIpE,SAAC7sB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUk5C,SAAShwB,QAAQuD,SAClE,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUk5C,SAAShwB,QAAQopB,aAGtE,SAACr6B,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQpE,MAAMC,OAD/B,aAC0CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YACzE,SAACjR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUkpB,QAAQ4Y,QAElDl6B,GAAYC,OAAOK,IAMnCixC,GAAyB7vB,KAAOC,IAAV,uFAAGD,CAAH,6aAUlB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,WAKlD,SAACjR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,WAQtDse,GAAUle,KAAO9vB,GAAV,wEAAG8vB,CAAH,mDACN,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUwnC,QAAQte,QAAQ4b,UAGvEsU,GAAgB9vB,KAAOC,IAAV,8EAAGD,CAAH,+IAET,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQoe,YAC5D,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQ7V,cAE1D,SAAC4E,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO9d,UAAUs5C,IAAIpwB,QAAQ7V,cAG5EkmC,GAAiBjwB,KAAOC,IAAV,+EAAGD,CAAH,+aACV,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQmG,YAGxD,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQY,UACjD,SAAC9pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOmxB,UAAUvZ,cAC3D,SAAC1W,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQ1S,UAGxD,SAACxW,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQ4F,aAQrD,SAAC9uB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUmF,WAI5D4qB,GAAelwB,KAAOS,KAAV,6EAAGT,CAAH,gIAKN,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAG1EuwB,GAAkBnwB,KAAOC,IAAV,gFAAGD,CAAH,6JAOT,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OADjC,aAC4CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAG3EwwB,GAAgBpwB,KAAOC,IAAV,+EAAGD,CAAH,sDAIbqwB,GAAgBrwB,KAAOC,IAAV,+EAAGD,CAAH,oJAObwlB,GAAUxlB,KAAOC,IAAV,yEAAGD,CAAH,wECxBdswB,GAAgB,SAAC,GAAqF,IAApFltB,EAAmF,EAAnFA,IAAKkZ,EAA8E,EAA9EA,kBAAmBnlC,EAA2D,EAA3DA,IAAKs4C,EAAsD,EAAtDA,WAAsD,IAA1Cc,gBAA0C,aAAxBrB,qBAAwB,MAAR,GAAQ,EACvG,OACI,kBAAC,GAAD,CACIl0C,KAAM7D,EACNo3C,SrJjD8B,cqJkD9BC,SrJ/CyC,aqJgDzCE,IrJzCa,WqJ0Cbe,WAAYA,GAEZ,kBAAC,GAAD,CAAKrsB,IAAKA,EAAKC,IAAKiZ,KAClBiU,GAAY,kBAACX,GAAD,SAAYV,EAAZ,OAKpBsB,GAAkB,SAAC,GAUlB,IATH9W,EASE,EATFA,KACAyT,EAQE,EARFA,SACAxT,EAOE,EAPFA,YACAwV,EAME,EANFA,YACA7S,EAKE,EALFA,kBACAnlC,EAIE,EAJFA,IACAwV,EAGE,EAHFA,KACAlL,EAEE,EAFFA,UACAq9B,EACE,EADFA,WAEA,OACI,kBAAC,GAAD,CAASpF,KAAMA,EAAMyT,SAAUA,EAAUxT,YAAaA,EAAayT,iBAAkB,KACjF,kBAAC6C,GAAD,CAAgBjtB,cAAY,+BACxB,kBAACotB,GAAD,KACI,kBAACP,GAAD,CACI3sB,QAASwZ,GACT1Z,cAAY,4CAEZ,kBAAC,GAAD,CAAMI,IAAK+rB,EAAa9rB,IAAKiZ,IAC7B,kBAAC4T,GAAD,KACI,uBAAGl1C,KAAM7D,EAAKu3C,IrJvEjB,YqJwEQ/hC,EAAKzD,SAIlB,kBAAC,GAAD,OAEJ,kBAACmnC,GAAD,KACI,kBAACF,GAAD,KACI,wCAAUxjC,EAAK8jC,QAAf,YAA0BhvC,EAA1B,OAEJ,kBAACquC,GAAD,KACI,kBAAC,GAAD,CAAKzB,QAAM,EAACL,UAAU,YAAY72C,IAAK2nC,EAAYnyB,KAAMA,EAAK+jC,kBAQvEnvB,OArJU,SAAC,GAcH,IAbnBgvB,EAakB,EAblBA,SACAjU,EAYkB,EAZlBA,kBACA4S,EAWkB,EAXlBA,cACAP,EAUkB,EAVlBA,WACAx3C,EASkB,EATlBA,IACA2nC,EAQkB,EARlBA,WACA1C,EAOkB,EAPlBA,eACA+S,EAMkB,EANlBA,YACA9S,EAKkB,EALlBA,aACA+S,EAIkB,EAJlBA,kBACA1tC,EAGkB,EAHlBA,YACAiL,EAEkB,EAFlBA,KACAlL,EACkB,EADlBA,UAEAitB,IAAoC,SAAAltB,GAChC,OAAO4tC,EAAkB5tC,MAG7B,MAAgCogB,mBAAS,MAAzC,oBAAOurB,EAAP,KAAiBwD,EAAjB,KACA,EAAwB/uB,oBAAS,GAAjC,oBAAO8X,EAAP,KAAakX,EAAb,KAEMjX,EAAc,SAAAtS,GACZA,GAAOA,EAAMib,iBACG,YAAX,OAALjb,QAAK,IAALA,OAAA,EAAAA,EAAOzxB,QAA0B,OAALyxB,QAAK,IAALA,OAAA,EAAAA,EAAOle,UAAWnM,UAClD4zC,GAAQ,IAWZzuB,qBAAU,WACFuX,EAAM5+B,OAAO+1C,iBAAiB,SAAUlX,GAAa,GACpD7+B,OAAOg2C,oBAAoB,SAAUnX,KAC3C,CAACD,IAEJ/K,IAAyB,kBAAMgL,EAAY,SAE3C,IAAMzW,EAAUyrB,EAAa,CAACzrB,QAfV,SAAAmE,GACXqS,GAAMzC,KAEX0Z,EAAYtpB,EAAM0pB,eAClB1pB,EAAMib,iBACNsO,GAASlX,KAUyC,CAACxW,QAASwZ,IAEhE,OACI,kBAAC,GAAD,CAASC,UAAU,6BAA6B3Z,cAAY,8BACxD,kBAAC8iB,GAAA,EAAD,CAAQkL,MAAI,EAAChL,eAAe,OACxB,kBAAC,GAAD,CAAyB9iB,QAASwZ,GAA8B1Z,cAAY,wCACxE,kBAAC,GAAD,CACII,IAAKgZ,EACLE,kBAAmBA,EACnBnlC,IAAKA,EACLo5C,UAAQ,EACRd,WAAW,0DAKvB,kBAAC3J,GAAA,EAAD,CAAQmL,QAAM,EAACjL,eAAe,OACtB,kBAAC,GAAD,iBACQ9iB,EADR,CAEIguB,cAAeX,GAAY7uC,EAC3BshB,cAAY,8CAEZ,kBAAC,GAAD,CACII,IAAKiZ,EACLC,kBAAmBA,EACnBnlC,IAAKA,EACLo5C,SAAUA,EACVrB,cAAeA,EACfO,WAAW,oDAIlBd,GACG,kBAAC,GAAD,CACIjV,KAAMA,EACNyT,SAAUA,EACVxT,YAAaA,EACbwV,YAAaA,EACb7S,kBAAmBA,EACnBnlC,IAAKA,EACLwV,KAAMA,EACNlL,UAAWA,EACXq9B,WAAYA,SC7H3BmF,GAAKjkB,KAAOkkB,GAAV,oEAAGlkB,CAAH,idAED,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAO28B,UAAUvxB,QAAQ4b,UAI1D,SAAC7sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAO28B,UAAUp9B,KAAK6L,QAAQub,WAWtE,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQvT,KAAKgjC,WAAW57B,QClBjDq9B,GAAc,SAACzkC,GACxB,IAAI0kC,EACJ,GAAI1kC,EACA,OAAQA,EAAK1S,OAAOyM,eAChB,IvJ2FuB,OuJ3FEA,cACrB2qC,EvJ0FmB,OuJzFnB,MACJ,IvJyFgC,gBuJzFE3qC,cAC9B2qC,EvJwF4B,gBuJvF5B,MACJ,QACIA,EAAkB,KAG9B,OAAOA,EACD,CACI9C,SvJyE4B,cuJxE5BC,SAAU6C,GAEd,CACI9C,cAAUpuC,EACVquC,cAAUruC,ICMTmxC,GAdU,SAAC,GAA0D,IAAzD3kC,EAAwD,EAAxDA,KAAMxV,EAAkD,EAAlDA,IAAKoN,EAA6C,EAA7CA,KAAM+3B,EAAuC,EAAvCA,kBACxC,OACI,kBAAC,GAAD,KAEI,yBAAKpZ,QAASwZ,GAA8B1Z,cAAY,uBACpD,kBAAC,GAAD,eAAMhoB,KAAM7D,EAAKu3C,IxJiFR,YwJjF4B0C,GAAYzkC,IAC5CA,GAAQ,8BAAOA,GACfpI,GAAQ,kBAAC,GAAD,CAAM6e,IAAK7e,EAAM8e,IAAKiZ,QCnBtC2H,GAAKjkB,KAAOkkB,GAAV,mEAAGlkB,CAAH,idAED,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAO28B,UAAUvxB,QAAQ4b,UAI1D,SAAC7sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAO28B,UAAUp9B,KAAK6L,QAAQub,WAWtE,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQvT,KAAKgjC,WAAW57B,QAIjD8nB,GAAM7b,KAAOO,IAAV,oEAAGP,CAAH,+DCGDuxB,GAba,SAAC,GAA0D,IAAzD5kC,EAAwD,EAAxDA,KAAMxV,EAAkD,EAAlDA,IAAKoN,EAA6C,EAA7CA,KAAM+3B,EAAuC,EAAvCA,kBAC3C,OACI,kBAAC,GAAD,KAEI,yBAAKpZ,QAASwZ,GAA8B1Z,cAAY,uBACpD,kBAAC,GAAD,eAAMhoB,KAAM7D,EAAKu3C,I1JkFR,Y0JlF4B0C,GAAYzkC,IAC5CpI,GAAQ,kBAAC,GAAD,CAAK6e,IAAK7e,EAAM8e,IAAKiZ,QCd5CkV,IAAU,sB3J0HgB,U2JzHRF,IADR,gB3JyHoB,a2JvHRC,IAFZ,ICUDhwB,GDKAA,aARgB,SAAC9oB,GAG5B,MAAO,CACHg5C,cANoB,SAACtqC,GAAD,uBAAsBqqC,GAAWrqC,UAAjC,QAA8CqqC,GAAU,QAI1DE,CADHj5C,EAAZ0O,aCEIoa,EALG,SAAC,GAAyE,IAAxE5U,EAAuE,EAAvEA,KAAMxV,EAAiE,EAAjEA,IAAKoN,EAA4D,EAA5DA,KAAM+3B,EAAsD,EAAtDA,kBAC3BqV,EADiF,EAAnCF,cAEpD,OAAO,kBAACE,EAAD,CAAehlC,KAAMA,EAAMxV,IAAKA,EAAKoN,KAAMA,EAAM+3B,kBAAmBA,OCXlE2M,GAAOjpB,KAAOokB,GAAV,qEAAGpkB,CAAH,yGCcF6uB,GARI,SAAC,GAAD,IAAED,EAAF,EAAEA,WAAF,OACf,kBAAC,GAAD,KACKA,EAAWj5C,KAAI,SAAAi8C,GAAS,OACjB,kBAAC,GAAD,eAAW1jC,IAAK0jC,EAAUtV,mBAAuBsV,SCRpD5sB,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,mFACG1hB,GAAYC,OAAOG,IAK/B8mC,GAAUxlB,KAAOC,IAAV,yEAAGD,CAAH,wECkBLuB,GCEAA,aAtBgB,SAAC9oB,GAAkB,IAAD,EACtCvB,EAAWuB,EAAMY,QAAjBnC,QACAuN,EAAWhM,EAAMqU,SAAjBrI,QACDzQ,EAAQyE,EAAMY,QAAQ7L,QjKiBJ,gBiKhBlBqkD,EAAe,UAAGp5C,EAAM+I,YAAT,aAAG,EAAYy6B,QAAQrgC,MAAK,SAAAsgC,GAAM,OAAIA,EAAOtmC,OAAS2+B,GAAqBsa,cAahG,MAAO,CACHD,WAbY,OAAGiD,QAAH,IAAGA,OAAH,EAAGA,EAAiB1V,SAC/BniC,QAAO,SAAA+Z,GAAI,MAAkB,SAAdA,EAAKne,QACpBD,KAAI,YAA2C,IAAzCgX,EAAwC,EAAxCA,KAAMxV,EAAkC,EAAlCA,IAAKmlC,EAA6B,EAA7BA,kBAAmB/3B,EAAU,EAAVA,KAC3BiC,EAAUjC,EAAOC,GAAyBD,EAAMvQ,EAAOyQ,GAAW,KACxE,MAAO,CACHkI,OACAxV,IAAI,GAAD,OAAKD,GAAL,OAAeC,GAClBmlC,kBAAiB,OAAEA,QAAF,IAAEA,IAAqB,GACxC/3B,KAAMiC,SDOP+a,EAfoB,SAAC,GAAyD,IAAxDuwB,EAAuD,EAAvDA,YAAalD,EAA0C,EAA1CA,WAC9C,OAAIA,GAAoC,IAAtBA,EAAW5hD,OAAqB,KAE9C,kBAAC,GAAD,CAASg2B,cAAY,wBAAwB2Z,UAAU,yBACnD,kBAACmJ,GAAA,EAAD,iBAAYgM,EAAZ,CAAyB9L,eAAe,QACpC,kBAAC,GAAD,KACI,yBAAKrJ,UAAU,6BAA6B3Z,cAAY,8BACpD,kBAAC,GAAD,CAAY4rB,WAAYA,WEfnCpJ,GAAUxlB,KAAOC,IAAV,0EAAGD,CAAH,2UAKN,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmnB,WAAW6J,QAAQ5lB,QAAQ4b,UAInE,SAAC7sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmnB,WAAW5nB,KAAK6L,QAAQub,WAIvE,SAACxsB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmnB,WAAWpb,IAAIX,QAAQuD,SACnE,SAACxU,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmnB,WAAWpb,IAAIX,QAAQC,SAEzDvhB,GAAYC,OAAOG,IAC3B,SAACiQ,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmnB,WAAWpb,IAAI7hB,GAAGykB,SAC9D,SAACxU,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmnB,WAAWpb,IAAI7hB,GAAGmhB,UCiCtE0B,GCpBAA,aA7BgB,SAAC9oB,GAAkB,IAAD,IACtCvB,EAAWuB,EAAMY,QAAjBnC,QACAuN,EAAWhM,EAAMqU,SAAjBrI,QACDzQ,EAAQyE,EAAMY,QAAQ7L,QpKkBJ,gBoKjBlB+W,EAAO,UAAA9L,EAAM8T,kBAAN,SAAkB1I,cACzBm9B,GAAKz0B,WAAW+yB,cAActrC,EAAOyQ,GACrCu8B,GAAKz0B,WAAWgzB,gBAAgBvrC,EAAOyQ,GACvCb,EAAgB,UAAGnL,EAAM8T,kBAAT,aAAG,EAAkB3I,iBAM3C,MAAO,CACHmuC,QAFAt5C,EAHAkU,KACIJ,WAAawlC,QAKjBvrC,QAASjC,EACTX,mBACAouC,cAAc,GAAD,OAAK96C,GAAL,OAAe8pC,GAAKz0B,WAAWpV,QAYZ,MARd,SAACsB,EAAD,EAA8ByoC,GAA9B,IAAc/nC,EAAd,EAAcA,SAAd,mBAAC,2BACpBV,GACAyoC,GAFmB,IAGtB+Q,iBAAkB,SAACzwC,G3IOnB,IAAC0wC,E2ING/4C,G3IMH+4C,E2INoC1wC,E3IMsB,SAACrI,EAAeC,GACvE,GAAI84C,EAAkBvhB,QAAS,CAAC,IAAD,IAEV/sB,EACbxK,IADAmT,WAAa3I,iBAEXC,GAAiC,OAAjBquC,QAAiB,IAAjBA,GAAA,UAAAA,EAAmB1wC,YAAnB,mBAAyBwvB,yBAAzB,eAA4ChkC,QAAS,EAC3E8N,OAAOq3C,eAAeC,KAAOF,EAAkB1wC,KAC/CrI,EAASwK,GAAc,CAACE,gBAAeD,0BACpC,CACH,MAEIxK,IADAmT,WAAa3I,EADjB,EACiBA,iBAAkBC,EADnC,EACmCA,cAEnC1K,EAASwK,GAAc,CAACE,gBAAeD,+B0IMpC2d,EAhCW,SAAC,GAOH,IrH+mC6D0G,EqHrnCjF6pB,EAMmB,EANnBA,YACAtrC,EAKmB,EALnBA,QACAurC,EAImB,EAJnBA,QACAnuC,EAGmB,EAHnBA,iBACAquC,EAEmB,EAFnBA,iBACAD,EACmB,EADnBA,cAEA,OAAKpuC,GrH8mC4EqkB,EqH5mC9C,SAAAzmB,GAAI,OAAIywC,EAAiBzwC,IrH6mCvD,GAAoB,IAAI2mB,GAAyBF,GAGjB,SAA4CA,GAC5E,GAAoB,IAAIM,GAAyBN,GqHhnCtDoqB,EAAmC,SAAA7wC,GAAI,OAAIywC,EAAiBzwC,MrHmnCpB,SAA+CymB,GAClF,GAAoB,IAAIU,GAA4BV,GqHnnCzDqqB,EAAsC,SAAA9wC,GAAI,OAAIywC,EAAiBzwC,MAG3D,kBAAC,GAAD,CAAS0hB,QAASwZ,GAA8BC,UAAU,aAAa3Z,cAAY,qBAC/E,kBAAC8iB,GAAA,EAAD,iBAAYgM,EAAZ,CAAyB9L,eAAe,QACpC,uBACIhrC,KAAMg3C,EACNlP,anKiDsB,cmKhDtBa,anKkDiC,amKjDjC+K,InKyDK,WmKxDLnrB,anKgDiC,amK/CjCra,MnK+CiC,cmK7CjC,yBAAKka,IAAK5c,EAAS6c,IAAK0uB,EAASQ,eAAA,QAjBnB,QEInBhxB,gBA7BgB,SAAC9oB,GAC5B,IAAMzE,EAAQyE,EAAMY,QAAQ7L,QrKoBJ,gBqKnBjBiX,EAAWhM,EAAMqU,SAAjBrI,QAGestC,EAElBt5C,EAHAkU,KACIX,YAAc+lC,QAGtB,EAA6Bt5C,EAAMuT,YAA5BpO,EAAP,EAAOA,UAAWE,EAAlB,EAAkBA,QAClB,MAAO,CACHi0C,UACAvrC,QAASw6B,GAAKh1B,YAAYxF,QAAQxS,EAAOyQ,GACzC7G,YACA40C,aAAc10C,EACd20C,eAAe,GAAD,OAAKh6C,EAAMY,QAAQnC,SAAnB,OAA6B8pC,GAAKh1B,YAAY7U,QAe5B,MAXd,SAACsB,EAAD,EAA8ByoC,GAA9B,IAAc/nC,EAAd,EAAcA,SAAd,mBAAC,2BACpBV,GACAyoC,GAFmB,IAGtBkO,kBAAmB,SAAC5tC,G5JAC,IAAC6tC,E4JClBl2C,G5JDkBk2C,E4JCC7tC,E5JD2C,SAACrI,EAAeC,GAClF,IACclC,EACVkC,IADAC,QAAUnC,QAGd,GAAIm4C,EAAW1e,QAAS,CACpB,IAAM9yB,EAAMwxC,EAAW7tC,KAAKgxB,YAC5B30B,EAAI60C,MAAQ70C,EAAI60C,MAAMnM,UAAU5wC,KAAI,SAAAqG,GAAI,kCACjCA,GADiC,IAEpCS,aAAcV,EAAgBC,GAC9BguC,IAAI,GAAD,OAAK9yC,EAAU0F,EAAU1F,GAAW,IAApC,OAAyC8E,EAAKguC,UAErD,IAAMpsC,EAAYyxC,EAAW7tC,KAAKgxB,YAAYC,UAC1C50B,EAAI80C,sBAAwB90C,EAAI80C,qBAAqB3lD,OAAS,IAC9D6Q,EAAI80C,qBAAuBt1C,EAAkBQ,EAAI80C,uBAErDx5C,EAASwE,GAAO,CAACC,YAAWC,MAAKC,SAAS,UAE1C3E,EAASwE,GAAO1G,S4JfpB27C,iBAAkB,SAACpxC,G5JmBS,IAAC6tC,E4JlBzBl2C,G5JkByBk2C,E4JlBC7tC,E5JkB2C,SAACrI,EAAeC,GACzF,MAGIA,IAFcyE,EADlB,EACImO,YAAcnO,IACJ3G,EAFd,EAEImC,QAAUnC,QAEd,GAAIm4C,EAAW1e,QAAS,CACpB,IAAMkiB,EAAwC,MAAvBxD,EAAW7tC,KAAKwxB,IAAcqc,EAAW7tC,KAAKwxB,IAAMn1B,EACpE40B,EAAaogB,EAAbpgB,UAEPogB,EAAeH,MAAQG,EAAeH,MAAMnM,UAAU5wC,KAAI,SAAAqG,GAAI,kCACvDA,GADuD,IAE1DS,aAAcV,EAAgBC,GAC9BguC,IAAI,GAAD,OAAK9yC,EAAU0F,EAAU1F,GAAW,IAApC,OAAyC8E,EAAKguC,UAEjD6I,EAAeF,sBAAwBE,EAAeF,qBAAqB3lD,OAAS,IACpF6lD,EAAeF,qBAAuBt1C,EAAkBw1C,EAAeF,uBAG3Ex5C,EAASwE,GAAO,CAACC,UAAW60B,EAAW50B,IAAKg1C,EAAgB/0C,SAAS,UAErE3E,EAASwE,GAAO1G,c6JjEX+tB,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,+LACR,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYxN,UAAUpF,QAAQ4b,SAC/Dl9B,GAAYC,OAAOG,IAC1B,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYxN,UAAUtmB,GAAG88B,SAG9Dl9B,GAAYC,OAAOI,IAC1B,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYxN,UAAUrmB,GAAG68B,UAI1EsX,GAAkB9yB,KAAOC,IAAV,iFAAGD,CAAH,gWAQT,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYsgB,gBAAgB/+B,KAAK6L,QAAQub,WACrF,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYsgB,gBAAgB/+B,KAAK6L,QAAQwe,WACjF,SAACzvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYsgB,gBAAgB/+B,KAAK6L,QAAQqD,cAI3F,SAACtU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYsgB,gBAAgBvyB,IAAIX,QAAQuD,SACnF,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYsgB,gBAAgBvyB,IAAIX,QAAQC,UACpF,SAAClR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYsgB,gBAAgBvyB,IAAIX,QAAQ4b,SAEzEl9B,GAAYC,OAAOG,IAC3B,SAACiQ,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYsgB,gBAAgBvyB,IAAI7hB,UAA5E,aAAyB,EAAuDykB,SAC/E,SAACxU,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYsgB,gBAAgBvyB,IAAI7hB,UAA5E,aAAyB,EAAuDmhB,UAMzFkzB,GAAQ/yB,KAAOS,KAAV,uEAAGT,CAAH,uUAIF,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYugB,MAAMnzB,QAAQzsB,YAC3E,SAACwb,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYugB,MAAMnzB,QAAQozB,OACpE,SAACrkC,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOzB,YAAYwsB,SAC/D,SAAC7pB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYugB,MAAMnzB,QAAQ4b,UACnE,SAAC7sB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOzB,YAAYgyB,YAC9D,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOzB,YAAYjC,cAChE,SAAA4E,GAAK,gBACbA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQvW,EAAM4Q,MAAM/K,OAAOge,YAAYugB,MAAMnzB,QAAQqzB,UAAUlyB,OAD3E,aAEZpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,WAGZthB,GAAYC,OAAOG,IAC7B,SAACiQ,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYugB,MAAMr0C,UAA9D,aAAyB,EAAyCs0C,MAGxD10C,GAAYC,OAAOI,IAC7B,SAACgQ,GAAD,uBAAyBA,EAAM4Q,MAAM/K,OAAOge,YAAYugB,MAAMp0C,UAA9D,aAAyB,EAAyCq0C,OAIpE/C,GAAiBjwB,KAAOC,IAAV,gFAAGD,CAAH,yHAEb,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQY,UACjD,SAAC9pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOmxB,UAAUvZ,cAC3D,SAAC1W,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQ1S,UACxD,SAACxW,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQ4F,aCnDxDlc,gBAfgB,SAAC9oB,GAC5B,MAAyBA,EAAMuT,YAAxBnO,EAAP,EAAOA,IAAKD,EAAZ,EAAYA,UAEL1G,EAAWuB,EAAMY,QAAjBnC,QAIP,MAAO,CACHyV,KAFAlU,EADAkU,KAAOumC,gBAIPt1C,YACAC,MACA40C,eAAe,GAAD,OAAKv7C,GAAL,OAAe8pC,GAAKh1B,YAAY7U,SCGvCoqB,gBAdgB,SAAC9oB,GAC5B,IAAOvB,EAAWuB,EAAMY,QAAjBnC,QAGYyV,EAEflU,EAHAkU,KACIqyB,SAAWryB,KAGnB,MAAO,CACH0hC,OAAQ51C,EAAMuT,YAAYpO,UAAY,EACtC+O,OACAxV,IAAI,GAAD,OAAKD,GAAL,OAAe8pC,GAAKhC,SAAS7nC,SCV3B6tB,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,gWAGL,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQoe,YAC5D,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQ7V,aAExDzL,GAAYC,OAAOG,IACvB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUtmB,GAAGy0C,YACrE,SAACxkC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUtmB,GAAGmhB,SAG3DvhB,GAAYC,OAAOI,IACvB,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUrmB,GAAGw0C,YACrE,SAACxkC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUrmB,GAAGkhB,SAG3DvhB,GAAYC,OAAOK,IACvB,SAAA+P,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUpmB,GAAGu0C,YACrD,SAACxkC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUpmB,GAAGihB,UCSrE0B,OAhBwB,SAAC5S,GACpC,OACI,kBAAC,GAAD,CAAWqU,cAAY,4BAA4B2Z,UAAU,4BACzD,kBAAC,GAAD,iBACQhuB,EADR,CAEIq/B,UAAU,UACVO,SAAU5/B,EAAM4/B,SAChBC,SAAU7/B,EAAM6/B,SAChBC,SAAU9/B,EAAM8/B,SAChBC,IAAI,WACJxrB,QAASwZ,UCXVnb,gBAXgB,SAAC9oB,GAC5B,IAAOoF,EAAOpF,EAAMuT,YAAbnO,IAIP,MAAO,CACH8O,KAFAlU,EADAkU,KAAOumC,gBAIPr1C,UCPKu1C,GAAcpzB,KAAOC,IAAV,6EAAGD,CAAH,oEAEN,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQC,UAAUmF,WCF7D+tB,GAAQrzB,KAAOO,IAAV,sEAAGP,CAAH,6DACJ,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO8+B,aAAaD,MAAMzzB,QAAQC,UACxE,SAAClR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO8+B,aAAaD,MAAMzzB,QAAQuD,SAGvEowB,GAAevzB,KAAOC,IAAV,6EAAGD,CAAH,qDCqBVszB,GAlBa,SAAC,GAAqE,IAApE72C,EAAmE,EAAnEA,aAActF,EAAqD,EAArDA,IAAKq8C,EAAgD,EAAhDA,YAAa9jB,EAAmC,EAAnCA,WACpDnP,EACF,kBAACgzB,GAAD,KACI,kBAACF,GAAD,CAAOrwB,cAAY,sCAAsCI,IAAK3mB,EAAc4mB,IAAKmwB,KAGrFC,EAAiBlzB,EASrB,MARY,KAARppB,IACAs8C,EACI,kBAAC,GAAD,CAAMz4C,KAAI,UAAK7D,EAAL,YAAYu4B,GAAc8f,UAAQ,GACvCjvB,IAKNkzB,GCZEC,GAAqB1zB,KAAOC,IAAV,oFAAGD,CAAH,kFAKlB2zB,GAAgB3zB,KAAOC,IAAV,+EAAGD,CAAH,mKACP,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OADjC,aAC4CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAM3E,SAACjR,GACN,OAAQA,EAAM6hB,QACV,I/KoBY,U+KnBR,OAAO7hB,EAAM4Q,MAAMW,QAAQvT,KAAKgkB,QACpC,I/KiBY,U+KhBR,OAAOhiB,EAAM4Q,MAAMW,QAAQvT,KAAKjZ,MACpC,QACI,OAAOib,EAAM4Q,MAAMW,QAAQvT,KAAKinC,YAUnCC,IALO7zB,KAAO/yB,EAAV,sEAAG+yB,CAAH,yFAKaA,KAAOC,IAAV,gFAAGD,CAAH,+KAKJ,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OADjC,aAC4CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAC3E,SAACjR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKmnC,UAKtDC,GAAoB/zB,KAAOC,IAAV,mFAAGD,CAAH,4QC1CjB6zB,GAAiB7zB,KAAOC,IAAV,gFAAGD,CAAH,6PAgBdg0B,GAAUh0B,KAAOC,IAAV,yEAAGD,CAAH,wDAIPQ,GAAQR,KAAOi0B,GAAV,uEAAGj0B,CAAH,6GACC,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAM1Es0B,GAAoBl0B,KAAOC,IAAV,mFAAGD,CAAH,kDACjB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQvT,KAAKmnC,SAGlDK,GAAQn0B,KAAO/yB,EAAV,uEAAG+yB,CAAH,4GACC,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAM1E+zB,GAAgB3zB,KAAOS,KAAV,+EAAGT,CAAH,8KAEP,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAM1E,SAACjR,GACN,OAAQA,EAAM6hB,QACV,IhLhBY,UgLiBR,MAAO,QACX,IhLnBY,UgLoBR,OAAO7hB,EAAM4Q,MAAMW,QAAQvT,KAAKjZ,MACpC,QACI,MAAO,YAIV0gD,GAAYp0B,KAAO/yB,EAAV,2EAAG+yB,CAAH,uFACH,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,UCrE9EkZ,IAAU,sBjL0HgB,WkL5GU,SAAC,GAYH,IAXpC6C,EAWmC,EAXnCA,uBACAC,EAUmC,EAVnCA,YACAC,EASmC,EATnCA,WACAC,EAQmC,EARnCA,eACAC,EAOmC,EAPnCA,gBACAC,EAMmC,EANnCA,SACAC,EAKmC,EALnCA,aACAC,EAImC,EAJnCA,YACAC,EAGmC,EAHnCA,YACAloC,EAEmC,EAFnCA,KACAvF,EACmC,EADnCA,SAEO0tC,EAA4BnoC,EAA5BmoC,SAAUC,EAAkBpoC,EAAlBooC,QAASlhD,EAAS8Y,EAAT9Y,MAE1B,OACI,kBAACggD,GAAD,KACI,kBAACE,GAAD,KACI,kBAACvuB,GAAA,EAAD,CAAY/gB,QAAQ,KAAKue,cAAY,6CAChCqxB,GAA0BC,GAE/B,kBAACZ,GAAD,KACI,kBAACluB,GAAA,EAAD,CAAY/gB,QAAQ,KAAKuwC,MAAM,SAC1BR,GAEJD,GACG,kBAAC/uB,GAAA,EAAD,CAAY/gB,QAAQ,KAAK+zB,MAAM,QAAQxV,cAAY,4CAAnD,UACQ5b,EADR,YACoBvT,MAMhC,kBAAC2xB,GAAA,EAAD,CAAY/gB,QAAQ,SACfqwC,EADL,IACgBL,GAGhB,kBAACjvB,GAAA,EAAD,CAAY/gB,QAAQ,SACfswC,EADL,IACeL,GAGf,kBAACf,GAAD,CAAenjB,OAAQokB,GAAvB,UAAwCD,EAAxC,YAAwDE,QDvDpD,gBjLyHoB,cmL5GgB,SAAC,GAaH,IAZ9CI,EAY6C,EAZ7CA,YACAT,EAW6C,EAX7CA,eACAU,EAU6C,EAV7CA,oBACAZ,EAS6C,EAT7CA,YACAC,EAQ6C,EAR7CA,WACAE,EAO6C,EAP7CA,gBACAC,EAM6C,EAN7CA,SACAC,EAK6C,EAL7CA,aACAC,EAI6C,EAJ7CA,YACAC,EAG6C,EAH7CA,YACAloC,EAE6C,EAF7CA,KACAvF,EAC6C,EAD7CA,SAEO0tC,EAA4BnoC,EAA5BmoC,SAAUC,EAAkBpoC,EAAlBooC,QAASlhD,EAAS8Y,EAAT9Y,MAE1B,OACI,kBAAC,GAAD,KACI,kBAACmgD,GAAD,KACI,kBAAC,GAAD,CAAOhxB,cAAY,sCACf,8BAAOiyB,IAEX,kBAACf,GAAD,CAAmBlxB,cAAY,6CAC1BkyB,GAAuBZ,IAGhC,kBAACH,GAAD,CAAOnxB,cAAY,uCACdwxB,EACAD,GAAc,kBAACH,GAAD,eAAehtC,EAAf,YAA2BvT,KAE9C,6BACI,0BAAM8oC,UAAU,SACXmY,EADL,IACgBL,GAEhB,0BAAM9X,UAAU,gBACXoY,EADL,IACeL,IAGnB,kBAAC,GAAD,CAAelkB,OAAQokB,GAAvB,UAAwCD,EAAxC,YAAwDE,QFnDpD,IGyDDtzB,GHxCAA,aAVgB,SAAC9oB,GAC5B,IAAO2O,EAAY3O,EAAMqU,SAAlB1F,SAGP,MAAO,CACHuqC,cAPoB,SAACxqC,GAAD,uBAAsBqqC,GAAWrqC,UAAjC,QAA8CqqC,GAAU,QAK1DE,CADHj5C,EAAZ0O,UAIHC,cG4COma,EAjDoB,SAAC,GAqBH,IAAD,IApB5BvlB,KACIm5C,EAmBwB,EAnBxBA,cACAC,EAkBwB,EAlBxBA,OACA34C,EAiBwB,EAjBxBA,aACA63C,EAgBwB,EAhBxBA,YACAD,EAewB,EAfxBA,uBACAG,EAcwB,EAdxBA,eACAC,EAawB,EAbxBA,gBACAC,EAYwB,EAZxBA,SACAC,EAWwB,EAXxBA,aACAC,EAUwB,EAVxBA,YACA5K,EASwB,EATxBA,IACAuK,EAQwB,EARxBA,WACAr4C,EAOwB,EAPxBA,WACA+4C,EAMwB,EANxBA,YACAC,EAKwB,EALxBA,oBAEJvoC,EAG4B,EAH5BA,KACAglC,EAE4B,EAF5BA,cACAvqC,EAC4B,EAD5BA,SAEOhZ,EAAMue,EAANve,GACDymD,EAAcM,EAAa,UAAM/mD,EAAN,YAAY+mD,GAAkB,GAE/D,OACI,kBAAC/B,GAAD,CAAallC,IAAKknC,GACd,kBAAC,GAAD,CAAc34C,aAAcA,EAActF,IAAK6yC,EAAKwJ,YAAac,EAAa5kB,WAAYxzB,IAE1F,kBAACy1C,EAAD,CACIsD,YAAaA,EACbV,WAAYA,EACZK,YAAaA,EACbD,aAAcA,EACdD,SAAUA,EACVD,gBAAiBA,EACjBH,YAAaA,EACbE,eAAgBA,EAChBH,uBAAwBA,EACxB1nC,KAAMA,EACNxV,IAAK6yC,EACLkL,oBAAqBA,EACrBL,YAAaA,EACbztC,SAAUA,QCtDbiuC,GAA2Br1B,KAAOC,IAAV,yFAAGD,CAAH,gIACxB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOmxB,UAAUpG,SAInD,SAAC7pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQC,oBAEhEwd,GAAmBt1B,KAAOC,IAAV,iFAAGD,CAAH,6HAGd,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBD,iBAAiB11B,QAAQub,WACtF,SAACxsB,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YACtE,SAACjR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBD,iBAAiB11B,QAAQoe,YAI9FwX,GAAYx1B,KAAOC,IAAV,0EAAGD,CAAH,wDACH,SAACrR,GAAD,gBAEPA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQvW,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBC,UAAU51B,QAAQqzB,UAAUlyB,OAF9F,aAGNpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAGzB61B,GAAmBz1B,KAAOC,IAAV,iFAAGD,CAAH,uHAGd,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBE,iBAAiB71B,QAAQub,WAC5F,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOzB,YAAY0pC,kBAC5D,SAAC/mC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBE,iBAAiB71B,QAAQoe,YAG9F2X,GAAoB31B,KAAOC,IAAV,kFAAGD,CAAH,wDACX,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAI1Eg2B,GAAgB51B,KAAOC,IAAV,8EAAGD,CAAH,wDACP,SAACrR,GAAD,gBAEPA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQvW,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBK,cAAch2B,QAAQqzB,UAC1FlyB,OAHE,aAINpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAGzBi2B,GAA4B71B,KAAOC,IAAV,0FAAGD,CAAH,0QACzB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOzB,YAAY8pC,iBAC5D,SAACnnC,GAAD,OACTA,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBM,0BAA0Bj2B,QAAQoe,YACnE,SAACrvB,GAAD,OACPA,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBM,0BAA0Bj2B,QAAQub,WAC7D,SAACxsB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAU41B,eAEvD,SAACpnC,GAAD,OACTA,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBM,0BAA0Bj2B,QAAQoe,YAazEgY,IAJQh2B,KAAOS,KAAV,sEAAGT,CAAH,sDAIYA,KAAOC,IAAV,+EAAGD,CAAH,igBAqBT,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBS,eAAep2B,QAAQq2B,aAErF,SAACtnC,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUmF,WACpD,SAAC3W,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUC,oBACjE,SAACzR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO+gC,qBAAqBS,eAAep2B,QAAQ4b,WC5EvF0a,GAXwB,SAAC,GAA+C,IAA9CC,EAA6C,EAA7CA,UACrC,OACI,kBAACV,GAAD,KACI,kBAACG,GAAD,KAAgBO,EAAUC,sBAC1B,kBAACT,GAAD,CAAmB3yB,cAAaz2B,EAAkB,kDAC7C4pD,EAAUE,6BCIZC,GAVwB,SAAC,GAAgD,IAA/Ch5C,EAA8C,EAA9CA,WACrC,OACI,oCACKA,EAAW3H,KAAI,SAAA6H,GAAC,OACb,kBAAC,GAAD,CAAyB24C,UAAW34C,EAAG0Q,IAAG,UAAK1Q,EAAEE,KAAP,YAAeF,EAAE+4C,8BCgE5Dh1B,OAtDqB,SAAC,GAA4C,IAA3C5U,EAA0C,EAA1CA,KAAM9O,EAAoC,EAApCA,IAE7BiK,EAMPjK,EANA60C,MACA4B,EAKAz2C,EALAy2C,YACAkC,EAIA34C,EAJA24C,iBACAC,EAGA54C,EAHA44C,yBACAC,EAEA74C,EAFA64C,0BACA/D,EACA90C,EADA80C,qBAEEgE,EAAuBC,iBAA8B,MACrDC,EAAcD,iBAA8B,MAE5CE,EAAkB,SAAA15C,GAAC,OClCI,SAC7BA,EACAu5C,EACAE,GACE,IAAD,IACD,GAAKz5C,GAAgB,UAAXA,EAAExH,KAAZ,CAEA,IAAMmhD,EAAmB,UAAGJ,EAAqBK,eAAxB,aAAG,EAA8BC,SAAS75C,EAAE+L,QAC/D+tC,EAAa,UAAGL,EAAYG,eAAf,aAAG,EAAqBC,SAAS75C,EAAE+L,QAChDoS,EAAUs7B,EAAYG,QAE5B,IAAKz7B,IAAa27B,GAAiBH,EAAsB,OAAO35C,EAAEklC,iBAElE,IAAO6U,EAAU/5C,EAAV+5C,OACP,OACK57B,EAAQ67B,aAAe77B,EAAQ87B,YAAc97B,EAAQ+7B,cAAgBH,EAAS,GACxD,IAAtB57B,EAAQ87B,WAAmBF,EAAS,EAE9B/5C,EAAEklC,sBAJb,GDoB6BiV,CAAkBn6C,EAAGu5C,EAAsBE,IAYxE,OAVA10B,qBAAU,WACN,IAAMq1B,EAAoBb,EAAqBK,QAG/C,OADiB,OAAjBQ,QAAiB,IAAjBA,KAAmB3G,iBAAiB,QAASiG,EAAiB,CAACW,SAAS,IACjE,WAEc,OAAjBD,QAAiB,IAAjBA,KAAmB1G,oBAAoB,QAASgG,MAErD,IAGC,kBAACzB,GAAD,CAA0BtH,IAAK4I,GAC3B,kBAACX,GAAD,CAAgBhzB,cAAY,iCAAiC+qB,IAAK8I,GAC7D/uC,EAAMnS,KAAI,SAAAqG,GAAI,OACX,kBAAC,GAAD,CAAqBA,KAAMA,EAAMkS,IAAKlS,EAAKo5C,OAAQzoC,KAAMA,QAGhE6pC,EAAmB,GAChB,kBAACf,GAAD,KACI,kBAACG,GAAD,KAAgBjpC,EAAK+qC,iBACrB,kBAAC/B,GAAD,CAAmB3yB,cAAY,8CAA/B,UACQrW,EAAKgrC,UADb,OACwBjB,KAI/B/D,KAA0BA,EAAqB3lD,QAC5C,kBAAC,GAAD,CAAyBsQ,WAAYq1C,IAGzC,kBAAC2C,GAAD,KACI,kBAACE,GAAD,KAAY7oC,EAAKirC,WACjB,0BAAM50B,cAAY,kCAAkCyzB,IAExD,kBAACZ,GAAD,KACI,8BAAOvB,QElEVe,GAA2Br1B,KAAOC,IAAV,0FAAGD,CAAH,sIACxB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOmxB,UAAUpG,SAGnD,SAAC7pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQC,oBACxD,qBAAEvY,MAA+BW,QAAQ2X,QAAQ1S,UACzD,SAACxW,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBxC,yBAAyBz1B,QAAQuD,SAG7FqyB,GAAYx1B,KAAOC,IAAV,2EAAGD,CAAH,wDACH,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQvW,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBrC,UAAU51B,QAAQqzB,UAAUlyB,OADxF,aAEPpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAIxBk4B,GAA8B93B,KAAOC,IAAV,6FAAGD,CAAH,4KAInB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAU41B,eACpD,SAACpnC,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQ2X,QAAQC,oBAC1D,SAACnpB,GAAD,gBAEPA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QACrBvW,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBC,4BAA4Bl4B,QAAQqzB,UACzElyB,OAJK,aAKNpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YACrB,SAACjR,GAAD,OACTA,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBC,4BAA4Bl4B,QAAQoe,YAGlE+Z,GAAmB/3B,KAAOC,IAAV,kFAAGD,CAAH,6LACV,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADhC,aAC2CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YACtE,SAACjR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBE,iBAAiBn4B,QAAQoe,YAGhF,SAACrvB,GAAD,OACdA,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBE,iBAAiBn4B,QAAQ+oB,iBAC/C,SAACh6B,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBE,iBAAiBn4B,QAAQmY,gBACrF,YAA4B,IAClC5S,EADiC,EAAzB5F,MACQW,QAAQ2X,QAAxB1S,OACP,MAAM,GAAN,OAAUA,EAAV,YAAoBA,EAApB,WAEc,SAACxW,GAAD,OACdA,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBE,iBAAiBn4B,QAAQme,iBAIvDia,GAAkBh4B,KAAOC,IAAV,iFAAGD,CAAH,sPAEJ,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUC,oBAC1D,SAACzR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQC,UAAUmF,WAKrD,SAAC3W,GAAD,gBAEPA,EAAM4Q,MAAMW,QAAQU,KAAKjS,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBG,gBAAgBp4B,QAAQq4B,aAChFtpC,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBG,gBAAgBp4B,QAAQqzB,UAC7DlyB,OAJK,aAKNpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YACnB,SAACjR,GAAD,gBAEPA,EAAM4Q,MAAMW,QAAQU,KAAKjS,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBG,gBAAgBp4B,QAAQq4B,aAChFtpC,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBG,gBAAgBp4B,QAAQqzB,UAC7D3a,WAEG,SAAC3pB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBG,gBAAgBp4B,QAAQoe,YACxF,SAACrvB,GAAD,gBAA4BA,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBG,gBAAgBp4B,QAAQ4Y,UAI3F0f,GAAel4B,KAAOC,IAAV,8EAAGD,CAAH,kXAIR,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQoe,YAC5D,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQ7V,aAExDzL,GAAYC,OAAOG,IACvB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUtmB,GAAGy0C,YACrE,SAACxkC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUtmB,GAAGmhB,SAG3DvhB,GAAYC,OAAOI,IACvB,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUrmB,GAAGw0C,YACrE,SAACxkC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUrmB,GAAGkhB,SAG3DvhB,GAAYC,OAAOK,IACvB,SAAA+P,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUpmB,GAAGu0C,YACrD,SAACxkC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUpmB,GAAGihB,UAIvEs4B,GAAgBn4B,KAAOC,IAAV,+EAAGD,CAAH,oQAQR,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOqjC,gBAAgBM,cAAcpkC,KAAK6L,QAAQC,UAO5Fu4B,GAAqBp4B,KAAOC,IAAV,oFAAGD,CAAH,2ECjBhBuB,OAnEgB,SAAC,GAAkE,IAAD,EAAhE5U,EAAgE,EAAhEA,KAAM/O,EAA0D,EAA1DA,UAAWC,EAA+C,EAA/CA,IAAK40C,EAA0C,EAA1CA,eAC7C4F,GAAaz6C,MAAc,OAACC,QAAD,IAACA,KAAK60C,SAAY,OAAH70C,QAAG,IAAHA,GAAA,UAAAA,EAAK60C,aAAL,eAAY1lD,QAAS,GAC/DsrD,EAAkB1B,iBAA8B,MAChDC,EAAcD,iBAA8B,MAE5CE,EAAkB,SAAA15C,GAAC,OFjBO,SAChCA,EACAk7C,EACAzB,GACE,IAAD,IACD,GAAKz5C,GAAgB,UAAXA,EAAExH,KAAZ,CAEA,IAAM2iD,EAAiB,UAAGD,EAAgBtB,eAAnB,aAAG,EAAyBC,SAAS75C,EAAE+L,SAC3C,UAAG0tC,EAAYG,eAAf,aAAG,EAAqBC,SAAS75C,EAAE+L,UAGlDovC,GAAmBn7C,EAAEklC,kBEMIkW,CAAqBp7C,EAAGk7C,EAAiBzB,IAatE,OAXA10B,qBAAU,WACN,IAAMs2B,EAAeH,EAAgBtB,QAIrC,OAFY,OAAZyB,QAAY,IAAZA,KAAc5H,iBAAiB,QAASiG,EAAiB,CAACW,SAAS,IAE5D,WAES,OAAZgB,QAAY,IAAZA,KAAc3H,oBAAoB,QAASgG,MAEhD,IAGC,kBAAC,GAAD,CAA0B9zB,cAAY,2BAA2B+qB,IAAKuK,GAClE,kBAACP,GAAD,CAAkB/0B,cAAY,uCAA9B,UACQplB,EADR,YACmC,IAAdA,EAAkB+O,EAAK+rC,SAAW/rC,EAAKgsC,UAD5D,YACyEhsC,EAAKisC,YAG7EP,EACG,oCACI,kBAACL,GAAD,KACI,kBAACxyB,GAAA,EAAD,CAAY/gB,QAAQ,KAAKue,cAAY,kCAChCrW,EAAKksC,eAGd,kBAACf,GAAD,KACI,kBAAC,GAAD,KAAYnrC,EAAKirC,WACjB,8BAAO/5C,EAAI44C,4BAInB,oCACI,kBAAC2B,GAAD,CAAoBp1B,cAAY,gCAAgC+qB,IAAK8I,GACjE,kBAAC,GAAD,QAKZ,kBAACsB,GAAD,KACI,kBAACD,GAAD,KACI,kBAAC,GAAD,CACI7J,QAAM,EACN1hC,KAAMA,EAAKmsC,eACX3hD,IAAKs7C,EACLzE,UAAU,YACVO,S3LOkB,c2LNlBC,S3LO+B,e2LN/BC,S3LS4B,W2LR5BvrB,QAASwZ,MAGjB,kBAAC,GAAD,CACI6R,S3LAsB,c2LCtBC,S3LAmC,e2LCnCC,S3LGgC,kB4LtFrCltB,gBANgB,SAAC9oB,GAAD,MAAmB,CAC9CkU,KAAM,CAACumC,gBAAiBz6C,EAAMkU,KAAKumC,gBAAiBlnC,YAAavT,EAAMkU,KAAKX,aAC5EpO,UAAWnF,EAAMuT,YAAYpO,UAC7Bm7C,YAAY,GAAD,OAAKtgD,EAAMY,QAAQnC,SAAnB,OAA6B8pC,GAAKh1B,YAAY7U,SCFhD6tB,GAAYhF,KAAOC,IAAV,0EAAGD,CAAH,6MACT,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,WAG9C,SAACjR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQ2X,QAAQC,kBAAoB,UAGnEx5B,GAAYC,OAAOG,GAAK,GAKpCs6C,GAAsBh5B,aAAOwF,MAAV,oFAAGxF,CAAH,qKAIH1hB,GAAYC,OAAOG,GAAK,GAMxCy5C,GAAgBn4B,KAAOC,IAAV,8EAAGD,CAAH,gZAKT,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQoe,YAC5D,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQ7V,cAC/D,SAAC4E,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQC,UAAU41B,cAI7Cz3C,GAAYC,OAAOG,GAAK,GCVtC6iB,OAjBwB,SAAC,GAAkE,IAAjE5U,EAAgE,EAAhEA,KAAM/O,EAA0D,EAA1DA,UAAWm7C,EAA+C,EAA/CA,YACtD,OAAqB,IAAdn7C,EAAkB,KACrB,kBAAC,GAAD,CAAWolB,cAAY,oCACnB,kBAACg2B,GAAD,CAAqBv0C,QAAQ,KAAKue,cAAY,4CAA9C,UACQrW,EAAKX,YAAYitC,YADzB,YACwCr7C,EADxC,YACmE,IAAdA,EAC7C+O,EAAKX,YAAY0sC,SACjB/rC,EAAKX,YAAY2sC,UAHzB,YAIQhsC,EAAKX,YAAYktC,gBAGzB,kBAAC,GAAD,CAAel2B,cAAY,sDACvB,kBAAC,GAAD,CAAKqrB,QAAM,EAAC1hC,KAAMA,EAAKumC,gBAAgB4F,eAAgB3hD,IAAK4hD,EAAa/K,UAAU,mBCoLpFzsB,OAnKY,SAAC,GAUH,IjJ4mC8D0G,EiJ5mC/D,IATpBkxB,+BASoB,MATM,SASN,EARpBpH,EAQoB,EARpBA,QACAvrC,EAOoB,EAPpBA,QACA5I,EAMoB,EANpBA,UACAwxC,EAKoB,EALpBA,kBACAwD,EAIoB,EAJpBA,iBACAJ,EAGoB,EAHpBA,aACAC,EAEoB,EAFpBA,eACA2G,EACoB,EADpBA,iBAEA,EAAwCx3B,oBAAS,GAAjD,oBAAOy3B,EAAP,KAAqBC,EAArB,KACA,EAAkE13B,oBAAS,GAA3E,oBAAO23B,EAAP,KAAkCC,EAAlC,KAEMC,EAAU,WACPJ,GAAcC,GAAgB,IAavC5qB,IAAoC,SAAAltB,GAChC4tC,EAAkB5tC,GAXgB,SAAC,GAAY,IAAXA,EAAU,EAAVA,KACpC,GAAI,OAACA,QAAD,IAACA,KAAMgxB,YAAX,CAEA,MACIhxB,EAAKgxB,YADFknB,EAAP,EAAOA,6BAA8BC,EAArC,EAAqCA,gCAAiCvlB,EAAtE,EAAsEA,cAAe3B,EAArF,EAAqFA,UAGjFinB,IAAiCC,GAAmCvlB,GAAiB3B,GACrF+mB,GAA6B,IAKjCI,CAA8Bp4C,MjJwlCiDymB,EiJtlC/C,SAAAzmB,GAChC4tC,EAAkB5tC,GAClBi4C,KjJqlCC,GAAoB,IAAIpwB,GAAkBpB,GAGL,SAAiDA,GACtF,GAAoB,IAAIwB,GAAsBxB,GiJvlCnD4xB,EAAwC,SAAAr4C,GACpC4tC,EAAkB5tC,GAClBi4C,OjJwlC0C,SAAqDxxB,GAC9F,GAAoB,IAAI4B,GAAuB5B,GiJtlCpD6xB,EAA4C,SAAAt4C,GACxCoxC,EAAiBpxC,GACjBi4C,OjJulC4C,SAAuDxxB,GAClG,GAAoB,IAAIgC,GAAyBhC,GiJtlCtD8xB,EAA8C,SAAAv4C,GAC1C4tC,EAAkB5tC,GAClBi4C,OjJulC0C,SAAqDxxB,GAC9F,GAAoB,IAAIoC,GAAuBpC,GiJtlCpD+xB,EAA4C,SAAAx4C,GACxC4tC,EAAkB5tC,GAClBi4C,OjJulC0C,SAAqDxxB,GAC9F,GAAoB,IAAI4C,GAAuB5C,GiJtlCpDgyB,EAA4C,SAAAz4C,GACxC4tC,EAAkB5tC,MjJwlCmB,SAAgDymB,GACpF,GAAoB,IAAIgD,GAAqBhD,GiJvlClDiyB,EAAuC,SAAA14C,GACnC4tC,EAAkB5tC,MjJylCuB,SAAoDymB,GAC5F,GAAoB,IAAIwD,GAAsBxD,GiJxlCnDkyB,EAA2C,SAAA34C,GACvC4tC,EAAkB5tC,MjJ0lC2B,SAAwDymB,GACpG,GAAoB,IAAIoD,GAA0BpD,GiJzlCvDmyB,EAA+C,SAAA54C,GAC3C4tC,EAAkB5tC,MAGtBmtB,IAAyB,WACrB2qB,GAAgB,MjJulCqB,SAAgDrxB,GACpF,GAAoB,IAAI4D,GAAqB5D,GiJrlClDoyB,EAAuC,SAAA74C,GACnC4tC,EAAkB5tC,MjJulCmB,SAAgDymB,GACpF,GAAoB,IAAIgE,GAAqBhE,GiJrlClDqyB,EAAuC,SAAA94C,GACnC4tC,EAAkB5tC,MAGtB,IAAM+4C,EAAa,SAAAlzB,GACf4P,KACA5P,EAAMib,iBACNgX,GAAgB,GAChBE,GAA6B,IAG3B7f,EAAc,SAAAtS,GACI,YAAX,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOzxB,QAA0B,OAALyxB,QAAK,IAALA,OAAA,EAAAA,EAAOle,UAAWnM,UAClDs8C,GAAgB,IAGpBn3B,qBAAU,WAEN,OADArnB,OAAO+1C,iBAAiB,SAAUlX,GAAa,GACxC,WACH7+B,OAAOg2C,oBAAoB,SAAUnX,MAE1C,IAEH,IAAM6gB,EAAc5D,iBAAO,MACrB9uC,EAAQ0qC,EAAe,GAAK50C,EAClC,OACI,kBAAC,GAAD,CAAW++B,UAAU,cAAc3Z,cAAY,sBAAsB+qB,IAAKyM,GACtE,kBAAC1U,GAAA,EAAD,CAAQC,MAAI,EAACC,eAAe,OACxB,kBAAC8M,GAAD,CAAiB5vB,QAASwZ,GAA8B1Z,cAAY,+BAChE,uBACIhoB,KAAMy3C,EACN3P,a/LrDkB,c+LsDlBa,a/LrD+B,e+LsD/BpgB,a/LtD+B,e+LuD/Bra,M/LvD+B,e+LwD/BwlC,IAAI,YAEJ,kBAACqE,GAAD,KAAQjrC,GACR,yBAAKsb,IAAK5c,EAAS6c,IAAK0uB,EAASQ,eAAA,OAI7C,kBAACzM,GAAA,EAAD,CAAQoB,QAAM,EAAClB,eAAe,OAC1B,kBAAC8M,GAAD,CAAiB5vB,QAASq3B,EAAYv3B,cAAY,4BAC9C,4BACIptB,KAAK,SACLstB,QAASq3B,EACTzX,a/LrEkB,c+LsElBa,a/LrE+B,e+LsE/BpgB,a/LtE+B,e+LuE/Bra,M/LvE+B,gB+LyE/B,kBAAC6pC,GAAD,KAAQjrC,GACR,yBAAKsb,IAAK5c,EAAS6c,IAAK0uB,EAASQ,eAAA,MAIzC,kBAAC,GAAD,CACI7Y,KAAM2f,EACNlM,SAAUqN,EAAYxD,QACtBrd,YAAaA,EACblW,QAAS,IACT4pB,UAAW8L,EACX/L,iBAAkB,IAClBG,gBAAc,EACdC,UAAW4L,GAEX,kBAAC,GAAD,KACI,kBAAC,GAAD,SAKZ,kBAAC,GAAD,CACI1f,KAAM6f,EACNpM,SAAUqN,EAAYxD,QACtBrd,YAAa,kBAAM6f,GAA6B,IAChD/1B,QAAS,IACT4pB,UAAU,aACVE,gBAAc,GAEd,kBAAC,GAAD,KACI,kBAAC,GAAD,YCjLLhsB,gBAdgB,SAAC9oB,GAC5B,IAAOvB,EAAWuB,EAAMY,QAAjBnC,QAGYyV,EAEflU,EAHAkU,KACIqyB,SAAWryB,KAGnB,MAAO,CACH0hC,OAAQ51C,EAAMuT,YAAYpO,UAAY,EACtC+O,OACAxV,IAAI,GAAD,OAAKD,GAAL,OAAe8pC,GAAKhC,SAAS7nC,SCV3B6tB,GAAYhF,KAAOC,IAAV,0EAAGD,CAAH,gWAGL,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQoe,YAC5D,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQ7V,aAExDzL,GAAYC,OAAOG,IACvB,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUtmB,GAAGy0C,YACrE,SAACxkC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUtmB,GAAGmhB,SAG3DvhB,GAAYC,OAAOI,IACvB,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUrmB,GAAGw0C,YACrE,SAACxkC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUrmB,GAAGkhB,SAG3DvhB,GAAYC,OAAOK,IACvB,SAAA+P,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUpmB,GAAGu0C,YACrD,SAACxkC,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUpmB,GAAGihB,UCYrE0B,OAlBS,SAAC5S,GACrB,OACI,kBAAC,GAAD,CAAWqU,cAAY,2BAA2B2Z,UAAU,4BACxD,kBAACmJ,GAAA,EAAD,CAAQoB,QAAM,EAAClB,eAAe,OAC1B,kBAAC,GAAD,iBACQr3B,EADR,CAEIq/B,UAAU,UACVO,SAAU5/B,EAAM4/B,SAChBC,SAAU7/B,EAAM6/B,SAChBC,SAAU9/B,EAAM8/B,SAChBC,IAAI,WACJxrB,QAASwZ,WC3BhB+d,GAAiB,SAACvjD,EAAiB1C,EAAmBC,GAC/D,IAAIimD,EAAaxjD,EAAQ0B,cAIzB,IAFA8hD,EAAaA,EAAWpuD,QAAX,WAAuBkI,EAAUoE,cAAjC,KAAmD,MAEjD6E,SAAX,UAAuBhJ,GAAvB,OADS,SACkC,CAC3C,IAAMiyC,EAAQgU,EAAWnmD,MAFhB,QAIT,OADAmyC,EAAM,GAAGp6C,QAAT,WAAqBmI,EAASmE,eAAiB,IACzC,GAAN,OAAU8tC,EAAM,IAAhB,OAJS,QAIT,OAA4BA,EAAM,GAAGp6C,QAAT,WAAqBmI,EAASmE,eAAiB,KAE/E,IAAM+hD,EAAqBD,EAAWE,YAAX,WAA2BnmD,EAASmE,gBAI/D,OAFA8hD,EAAaA,EAAWlkD,UAAU,EAAGmkD,EAAqB,EAAIA,EAAsBD,EAAW1tD,SCV7FoqC,GAAY,IAAIrK,GAUP8tB,GARsB,WACjCzjB,GAAUrP,W,sECCD+yB,GAAeC,cAAW,kBACnCC,aAAa,CACTC,KAAM,CACF,KAAM,CACF93B,MAAO,OACPtD,OAAQ,OACRue,QAAS,OACTmL,eAAgB,aAChBpO,QAAS,YAEb,cAAe,CACX+f,gBAAiB,UACjB1iB,MAAO,WAEX,oBAAqB,CACjB0iB,gBAAiB,UACjB1iB,MAAO,WAEX,WAAY,CACR0iB,gBAAiB,UACjB1iB,MAAO,YAGfrzB,SAAU,CACN+1C,gBAAiB,UACjB1iB,MAAO,WAEX2iB,UAAW,CACPlF,UAAW,IACX9yB,MAAO,SAEX5e,KAAM,CACF4uC,SAAU,aAKTiI,GAAep7B,aAAOq7B,MAAV,8EAAGr7B,CAAH,+kBAEX,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO8mC,sBAAsBF,aAAax7B,QAAQC,SrMCnD,SqMCjC,SAAClR,GAAD,OACLA,EAAM4Q,MAAM/K,OAAO8mC,sBAAsBF,aAAaG,8BAA8Bp4B,QAEvE7kB,GAAYC,OAAOI,IAC1B,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO8mC,sBAAsBF,aAAaz8C,GAAGkhB,UAoBvF27B,GAAsBx7B,aAAOy7B,MAAV,qFAAGz7B,CAAH,+MAKP,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAKxF,QAAQuF,UAGjE,SAACxW,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAKxF,QAAQ6Y,UAI/DijB,GAAsB17B,aAAO27B,MAAV,qFAAG37B,CAAH,0DAMnB47B,GAAmB57B,aAAO67B,MAAV,kFAAG77B,CAAH,oJAQhB87B,GAAa97B,KAAOO,IAAV,4EAAGP,CAAH,2EAKV+7B,GAAyB/7B,KAAOO,IAAV,wFAAGP,CAAH,6IACrB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO8mC,sBAAsBS,uBAAuBn8B,QAAQuD,SAClG,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO8mC,sBAAsBS,uBAAuBn8B,QAAQuD,QAErF7kB,GAAYC,OAAOI,IAC1B,SAACgQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO8mC,sBAAsBS,uBAAuBp9C,GAAGwkB,SAC7F,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAO8mC,sBAAsBS,uBAAuBp9C,GAAGwkB,SCtF9F5B,gBAjBgB,SAAC9oB,GAAkB,IAAD,EACvCjE,EAAS,UAAGiE,EAAMY,eAAT,aAAG,EAAe7L,QtMsBL,oBsMrBrBkW,EAAiBjL,EAAjBiL,cACP,EAAyCjL,EAAMwM,gBAAxCD,EAAP,EAAOA,cAAe+B,EAAtB,EAAsBA,gBAEtB,MAAO,CACH/B,gBACAtB,gBACAlP,UAAWA,EAAUkS,cACrBK,sBAI0B,SAAC5N,GAAD,MAAoB,CAClDmM,cAAe,SAACP,GAAD,OAAyB5L,EAAS2L,GAAcC,SCG7Di3C,GAAY,UAAMt/C,EAAI/R,GAAV,OvM+Bc,6BuMrB5BsxD,GAAmC,EA8FxB16B,OA5FsB,SAAC,GAMJ,IAL9B/sB,EAK6B,EAL7BA,UACAkP,EAI6B,EAJ7BA,cACAsB,EAG6B,EAH7BA,cACA+B,EAE6B,EAF7BA,gBACAzB,EAC6B,EAD7BA,cAEM42C,EAAatF,mBACbuF,EAA4B1Y,aAAc,cAAD,OvMID,QuMJC,MACzC2Y,EAAiC,QAAlB14C,EAA0B,OAAS,QAClD24C,EAAevB,KAEdwB,EC1CuC,SAACt3C,EAAqCM,GACpF,MAAkCsc,mBAAS,IAA3C,oBAAO26B,EAAP,KAAkBC,EAAlB,KAEIP,EAAmC,EAuBvC,MAAO,CAACK,WAtBW,SAAApuC,GACf,GAAIlJ,EAAe,CACf,IAEIy3C,EAKqB,EAPnBC,EAAoBH,EAG1B,GAFAG,EAAQnkC,KAAKrK,GAETwuC,EAAQ1vD,OAAS,EAIjB,GAHAyvD,EAAe,OAAGz3C,QAAH,IAAGA,OAAH,EAAGA,EAAepJ,MAC7B,SAAAwJ,GAAC,OAAIA,EAAEu3C,QAAQ7iD,MAAM,EAAG4iD,EAAQ1vD,QAAQ4L,gBAAkB8jD,EAAQzmD,KAAK,OAGvEqP,EAAa,UAACm3C,SAAD,aAAC,EAAiBp3C,aAC/B42C,EAAUjf,YAAW,WACjBwf,EAAa,IACbvf,aAAagf,KxMoGa,UwMjG9BO,EAAa,ODsBRI,CAAmC53C,EAAeM,GAAhEg3C,WAeDO,EAAgB,SAAAz3C,GAAC,OAAI,SAAA2oC,IACJ,OAAfhnC,QAAe,IAAfA,OAAA,EAAAA,EAAiB1B,eAAgBD,EAAEC,cACnC62C,EAAWlF,QAAUjJ,KAI7B,OACI,kBAAC2N,GAAD,CAAqBj3C,QAAQ,YACzB,kBAAC22C,GAAD,CACIvlD,MAAOkR,EAAkBA,EAAgB1B,YAAc7Q,EACvDouC,SAvBS,SAACvb,GAClB/hB,EAAc+hB,EAAMle,OAAOtT,QAuBnBinD,OApBG,WACXb,GAAUjf,YAAW,WACbkf,EAAWlF,SACXkF,EAAWlF,QAAQ+F,QAEvB9f,aAAagf,MACd,MAeKK,WAAY,SAAAl/C,GAAC,OAAIk/C,EAAWl/C,EAAE8Q,MAC9B8uC,UAAW,CACPzjB,aAAa,EACbD,eAAe,EACfriB,QAAS,CAACgmC,MAAOZ,EAAalB,WAC9B+B,aAAc,CACVC,SAAUhB,EAA4B,SAAW,MACjDiB,WAAYhB,GAEhBiB,gBAAiB,CACbF,SAAUhB,EAA4B,MAAQ,SAC9CiB,WAAYhB,GAEhBkB,mBAAoB,MAExBpgB,MACI,kBAACse,GAAD,CACIx4B,cAAY,gCACZ/kB,KAAK,0BACLhQ,GAAG,4BAGXsvD,cAAe,SAAA5uC,GAAK,OAChB,kBAACmtC,GAAD,iBAAgBntC,EAAhB,CAAuBguB,UAAS,yBAAoBhuB,EAAMguB,WAAavZ,IAAK44B,OAEhFh5B,cAAY,gCA7BhB,OAgCKhe,QAhCL,IAgCKA,OAhCL,EAgCKA,EAAerP,KAAI,SAACyP,GAAD,OAChB,kBAACw2C,GAAD,CACI54B,cAAA,2BAAiC5d,EAAEkB,MACnCw8B,avMjBuB,iBuMkBvBa,aAAYv+B,EAAEo4C,YACdtvC,IAAK9I,EAAEu3C,QACP9mD,MAAOuP,EAAEC,YACTs3B,UAAW0f,EAAapB,KACxBlN,IAAK8O,EAAcz3C,IAEnB,kBAACq4C,GAAA,EAAD,CAAc9gB,UAAW0f,EAAa93C,MAClC,kBAACw3C,GAAD,CACI14B,IAAKje,EAAEC,YACP+d,IAAKhe,EAAEoB,QACPwc,cAAaz2B,EAAkB,+BAGtC6Y,EAAEo4C,qBEhHdE,GAA2B19B,KAAOC,IAAV,yFAAGD,CAAH,qNzMwCa,SyMhCjC,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOonB,oBAAoB8hB,yBAAyB99B,QAAQuD,SAKtGw6B,GAAiC39B,KAAOC,IAAV,+FAAGD,CAAH,8JAS9B49B,GAAkC59B,KAAOC,IAAV,gGAAGD,CAAH,qPzMkBM,SyMLrC69B,GAA4B79B,KAAOC,IAAV,0FAAGD,CAAH,kPAIrB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQoe,YAC5D,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQ7V,aACxDzL,GAAYC,OAAOI,IAQ/Bm/C,GAA2B99B,KAAOC,IAAV,yFAAGD,CAAH,8JASxB87B,GAAa97B,KAAOO,IAAV,2EAAGP,CAAH,yFACN,gBAAEtc,EAAF,EAAEA,cAAF,uBAAiD,QAAlBA,EAA0B,KAAO,MAAhE,WAKJqoC,GAAc/rB,aAAOmlB,MAAV,4EAAGnlB,CAAH,mXAKD,gBAAET,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAAlD,aAA6DxB,EAAMW,QAAQU,KAAKhB,YAe5E,gBAAEL,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAAlD,aAA6DxB,EAAMW,QAAQU,KAAKhB,YAK9FY,GAAQR,KAAOC,IAAV,sEAAGD,CAAH,mHAIC,gBAAET,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAAlD,aAA6DxB,EAAMW,QAAQU,KAAKhB,YAItFm+B,GAAW/9B,aAAOwF,MAAY4f,MAAM,CAAC4Y,UAAW,SAAxC,yEAAGh+B,CAAH,yGAEJ,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQvT,KAAK24B,aAC7C,gBAAE/lB,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OAAnD,aAA8DxB,EAAMW,QAAQU,KAAKhB,YACjF,SAACjR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,UAK5E2lB,GAA4Bj+B,KAAOC,IAAV,0FAAGD,CAAH,qGAMzBk+B,GAAal+B,KAAOW,OAAV,4EAAGX,CAAH,kLAUVm+B,GAAUn+B,KAAOnS,EAAV,yEAAGmS,CAAH,+JACD,SAAArR,GAAK,gBAAOA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OAAhD,aAA2DpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAC/F,SAACjR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQvT,KAAK24B,aAI/C,SAAC32B,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQvT,KAAK24B,aAIvD8Y,GAAqBp+B,KAAOC,IAAV,oFAAGD,CAAH,wIAQlBq+B,GAAiBr+B,KAAOW,OAAV,gFAAGX,CAAH,kXAIb,gBAAET,EAAF,EAAEA,MAAF,SAASpa,SACJoa,EAAMW,QAAQkF,KAAKk5B,eAAe7lB,OAASlZ,EAAMW,QAAQkF,KAAKxF,QAAQ6Y,UACvE,gBAAElZ,EAAF,EAAEA,MAAF,SAASpa,SAA0B,UAAYoa,EAAMW,QAAQkF,KAAKuT,gBAAgBtT,cACjF,gBAAE9F,EAAF,EAAEA,MAAF,SAASpa,SACToa,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,OAAS/Y,EAAMW,QAAQU,KAAKsE,QAAQpE,MAAMwX,UAC1E,SAAC3pB,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQkF,KAAKmT,cAAcpT,UACnE,gBAAE5F,EAAF,EAAEA,MAAF,SAASpa,SACZ,UACCoa,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADnC,aAC8CxB,EAAMW,QAAQU,KAAKhB,SADjE,UAECL,EAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OAFpC,aAE+CxB,EAAMW,QAAQU,KAAKhB,WAIzDthB,GAAYC,OAAOI,ICxD7B4/C,GAlFwB,SAAC,GAkBR,IAjB5Bx3C,EAiB2B,EAjB3BA,gBACAC,EAgB2B,EAhB3BA,iBACAzB,EAe2B,EAf3BA,eACAi5C,EAc2B,EAd3BA,YACAC,EAa2B,EAb3BA,WACAC,EAY2B,EAZ3BA,YACA9a,EAW2B,EAX3BA,UACA+a,EAU2B,EAV3BA,WACAC,EAS2B,EAT3BA,SACAC,EAQ2B,EAR3BA,oBACAxnD,EAO2B,EAP3BA,uBACAqM,EAM2B,EAN3BA,cACAo7C,EAK2B,EAL3BA,aACAC,EAI2B,EAJ3BA,QACAC,EAG2B,EAH3BA,YACAC,EAE2B,EAF3BA,WACAC,EAC2B,EAD3BA,aAEMlD,EAAY,UAAMt/C,EAAI/R,GAAV,O1MSU,6B0MR5B,OACI,kBAAC2hD,GAAA,EAAD,CAAmBC,YAAaoS,GAC5B,kBAACjB,GAAD,KACI,kBAACC,GAAD,KACI,kBAAC,GAAD,KAAQe,GACR,kBAAC,GAAD,CAAarZ,eAAa,EAACriB,cAAY,gCAAgCE,QAASy7B,GAC3E/a,IAGT,kBAACga,GAAD,KACKkB,GAAgB,kBAACt5B,GAAA,EAAD,KAAas5B,GAC9B,kBAAC,GAAD,OAEHC,GACG,kBAACX,GAAD,KACI,kBAAC54B,GAAA,EAAD,KAAau5B,GACb,kBAACZ,GAAD,CAASn7B,cAAY,2BAA2BhoB,KAAMikD,GACjDD,IAIb,kBAACpB,GAAD,KACKsB,GAAgB,kBAAC15B,GAAA,EAAD,KAAa05B,GAC9B,kBAACpB,GAAD,YAEK/2C,QAFL,IAEKA,OAFL,EAEKA,EAAiBd,UAAUtQ,KAAI,SAACwpD,EAAsBtyD,GAAvB,OAC5B,kBAACwxD,GAAD,CACInwC,IAAKixC,EAAIC,iBACTj6C,SAAU6B,IAAqBm4C,EAAI74C,KACnC4c,QAAS,kBAAM3d,EAAe45C,EAAI74C,OAClC0c,cAAA,2CAAiDn2B,GACjDi2C,a1MUa,mB0MTba,aAAY58B,EAAgB41C,QAC5B5Z,aAAYoc,EAAI7jD,OAEf6jD,EAAI7jD,YAKrB,kBAACuiD,GAAD,KACI,kBAAC,GAAD,CACIlxC,KAAM6xC,EACNxQ,UAAU,UACVK,QAAM,EACNnrB,QAASu7B,EACTnQ,OAAO,kCAGbuQ,IAAwBxnD,GACtB,kBAAC4mD,GAAD,KACI,kBAACC,GAAD,CAAYh7B,QAASy7B,EAAY37B,cAAY,8BACzC,kBAAC+6B,GAAD,KAAWa,GACX,kBAAC,GAAD,CAAYl7C,cAAeA,EAAe0f,IAAK44B,SC5F9D/gB,GAAiBjb,KAAOC,IAAV,+EAAGD,CAAH,wIAEF1hB,GAAYC,OAAOG,IAK/Bg/C,GAA2B19B,KAAOC,IAAV,yFAAGD,CAAH,8L3MiCa,S2M1BjC,SAACrR,GAAD,OACLA,EAAM4Q,MAAM/K,OAAOonB,oBAAoB8hB,yBAAyB99B,QAAQuD,SAIvE3C,GAAQR,KAAOC,IAAV,sEAAGD,CAAH,qSAOC,gBAAET,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKC,UAAUglB,QAAQ9kB,OAArD,aAAgExB,EAAMW,QAAQU,KAAKhB,WAI7EthB,GAAYC,OAAOG,IAK/Bm/C,GAA4B79B,KAAOC,IAAV,0FAAGD,CAAH,sTAGrB,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQoe,YAC5D,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQ7V,aACxDzL,GAAYC,OAAOG,IAY/BqtC,GAAc/rB,aAAOmlB,MAAV,4EAAGnlB,CAAH,2iBAcD,gBAAET,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAAlD,aAA6DxB,EAAMW,QAAQU,KAAKhB,WAR1EthB,GAAYC,OAAOG,IAuBrB,gBAAE6gB,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAAlD,aAA6DxB,EAAMW,QAAQU,KAAKhB,YAK9Fk+B,GAA2B99B,KAAOC,IAAV,yFAAGD,CAAH,+OAIZ1hB,GAAYC,OAAOG,IAQ/B2/C,GAAiBr+B,KAAOW,OAAV,+EAAGX,CAAH,0TAGb,gBAAET,EAAF,EAAEA,MAAF,SAASpa,SACJoa,EAAMW,QAAQkF,KAAKk5B,eAAe7lB,OAASlZ,EAAMW,QAAQkF,KAAKxF,QAAQ6Y,UAE5E,qBAAEtzB,SAA0B,UAAY,aAChC,SAACwJ,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAKmT,cAAcpT,UAKlE,gBAAE5F,EAAF,EAAEA,MAAF,SAASpa,SACZ,UACCoa,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADnC,aAC8CxB,EAAMW,QAAQU,KAAKhB,SADjE,UAECL,EAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OAFpC,aAE+CxB,EAAMW,QAAQU,KAAKhB,YAC/D,gBAAEL,EAAF,EAAEA,MAAF,SAASpa,SACToa,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,OAAS/Y,EAAMW,QAAQU,KAAKsE,QAAQpE,MAAMwX,SARtEh6B,GAAYC,OAAOG,IAe/Bk/C,GAAkC59B,KAAOC,IAAV,gGAAGD,CAAH,+MAGnB1hB,GAAYC,OAAOG,IAQ/B2gD,GAAyBr/B,KAAOS,KAAV,uFAAGT,CAAH,wFAGhB,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKC,UAAUglB,QAAQ9kB,OADnC,aAC8CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAG7E0/B,GAAyBt/B,KAAOnS,EAAV,uFAAGmS,CAAH,+bAIhB,SAACrR,GAAD,gBACRA,EAAM4Q,MAAMW,QAAQU,KAAKC,UAAUglB,QAAQ9kB,OADnC,aAC8CpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAa7Ew+B,GAAqBp+B,KAAOC,IAAV,oFAAGD,CAAH,yNAIN1hB,GAAYC,OAAOG,GAAK,GCvElC6gD,GA5E2B,SAAC,GAYD,IAXtCx4C,EAWqC,EAXrCA,gBACAC,EAUqC,EAVrCA,iBACAzB,EASqC,EATrCA,eACAi5C,EAQqC,EARrCA,YACAC,EAOqC,EAPrCA,WACAC,EAMqC,EANrCA,YACA9a,EAKqC,EALrCA,UACA+a,EAIqC,EAJrCA,WACAI,EAGqC,EAHrCA,QACAC,EAEqC,EAFrCA,YACAC,EACqC,EADrCA,WAEMO,GAAsC,OAAfz4C,QAAe,IAAfA,OAAA,EAAAA,EAAiBd,UAAUjZ,QAAS,EAEjE,OACI,kBAACs/C,GAAA,EAAD,CAAmBC,YAAaoS,GAC5B,kBAAC,GAAD,KACI,kBAAC,GAAD,KACI,kBAAC,GAAD,KAAQD,GACR,kBAACz9B,GAAA,EAAD,CAAM7E,WAAS,EAAC5Y,UAAU,MAAMi8C,QAAQ,UACpC,kBAACx+B,GAAA,EAAD,CAAMjlB,MAAI,EAACwC,GAAI,GAAIE,GAAI,GACnB,kBAAC,GAAD,KACI,kBAAC,GAAD,QAGP8gD,GACG,kBAACv+B,GAAA,EAAD,CAAMjlB,MAAI,EAACwC,GAAI,GAAIE,GAAI,GACnB,kBAAC,GAAD,CAA0BskB,cAAY,8BAAtC,OACKjc,QADL,IACKA,OADL,EACKA,EAAiBd,UAAUtQ,KAAI,SAACwpD,EAAsBtyD,GAAvB,OAC5B,kBAAC,GAAD,CACIqhB,IAAKixC,EAAIC,iBACTj6C,SAAU6B,IAAqBm4C,EAAI74C,KACnC4c,QAAS,kBAAM3d,EAAe45C,EAAI74C,OAClC0c,cAAA,2CAAiDn2B,GACjDi2C,a5M8BC,mB4M7BDa,aAAY58B,EAAgB41C,QAC5B5Z,aAAYoc,EAAI7jD,OAEf6jD,EAAI7jD,YAMzB,kBAAC2lB,GAAA,EAAD,CAAMjlB,MAAI,EAACwC,GAAI,GAAIE,GAAI,GACnB,kBAAC,GAAD,KACI,kBAAC,GAAD,CACIiO,KAAM6xC,EACNxQ,UAAU,UACVK,QAAM,EACNnrB,QAASu7B,EACTnQ,OAAO,kCAIlByQ,GACG,kBAAC99B,GAAA,EAAD,CAAMjlB,MAAI,EAACwC,GAAI,IACX,kBAAC,GAAD,KACI,kBAAC6gD,GAAD,KAAyBN,GACzB,kBAACO,GAAD,CAAwBt8B,cAAY,2BAA2BhoB,KAAMikD,GAChED,OAOzB,kBAAC,GAAD,CAAa3Z,eAAa,EAACriB,cAAY,gCAAgCE,QAASy7B,GAC3E/a,MClEdnE,GAAoBuB,GAAKxB,oBAAzBC,iBAED+R,IAAU,sB7MsGgB,U6MrGR+M,IADR,gB7MqGoB,a6MnGRgB,IAFZ,IA2EDh+B,gBApEgB,SAAC9oB,GAAkB,IAAD,IAX7B0N,EAYV3R,EAAS,UAAGiE,EAAMY,eAAT,aAAG,EAAe7L,Q7MNL,oB6MOtBiH,EAAQ,UAAGgE,EAAMY,eAAT,aAAG,EAAe7L,Q7MNL,mB6MOrBmf,EAAOlU,EAAMkU,KAAK6yB,oBACjB97B,EAAiBjL,EAAjBiL,cACP,EAA0CjL,EAAMY,QAAzCnC,EAAP,EAAOA,QAASG,EAAhB,EAAgBA,uBACTuG,EAAanF,EAAMuT,YAAnBpO,UAEP,EACInF,EAAMwM,gBADHS,EAAP,EAAOA,sBAAuBmB,EAA9B,EAA8BA,SAAUG,EAAxC,EAAwCA,iBAAkBD,EAA1D,EAA0DA,gBAAiBD,EAA3E,EAA2EA,cAAeG,EAA1F,EAA0FA,SAIpFwqC,EAdkB,SAACtqC,GAAD,uBAAsBqqC,GAAWrqC,UAAjC,QAA8CqqC,GAAU,QAc1DE,CADHj5C,EAAZ0O,UAGP,MAAO,CACHzB,wBACAc,SA3BYL,EA2BQ3R,EA3BS8P,GAAc,8BAAD,OAA+B6B,EAAKvN,cAApC,UA4B1CiO,WACAC,gBACApD,gBACAlP,UAAWA,EAAUkS,cACrBjS,WACAuS,mBACAD,kBACA1P,yBACA4P,WACArJ,YACAqhD,WAAYxE,GAAevjD,EAAS1C,EAAWC,GAAYgrC,GAC3D9yB,OACA8kC,mBAuCgC,MAnCd,SAACh5C,EAAD,EAA8ByoC,GAA9B,IAAc/nC,EAAd,EAAcA,SAAd,mBAAC,2BACpBV,GACAyoC,GAFmB,IAGtByd,WAAY,WAER,OADA9D,KACO1hD,EAASyM,OAEpB3K,WAAY,SAAC6L,GAET,OADAmwB,KACO99B,E/K0DW,SAAC2N,GAAD,OAA4B,SAAC3N,GACnDA,EAlCqD,CACrDvD,KA3FuB,cA4FvB2C,QAgC0BuO,IAC1B3N,EAASuM,IAAsB,K+K5DXzK,CAAW6L,KAE/B44C,qBAAsB,SAAC36C,GAAD,OAAyB5L,E/KHd,SAAC4L,GAAD,OAAyB,SAAC5L,GAC3D,IAAMwmD,EAAuB56C,EAAY9K,OAAOyM,cAChDvN,EAASsM,GAA4Bk6C,IACrCxmD,EAAS2L,GAAc66C,K+KAiCC,CAAsB76C,KAC9EQ,eAAgB,SAAC9Q,GAAD,OAAsB0E,EAASoM,GAAe9Q,KAC9D4F,oBAAqB,WACjBlB,EAASkB,MAEbwlD,eAAgB,SAACjiD,GAAuB,IAAD,EACnC,OAAI,UAAAnF,EAAMsO,uBAAN,eAAuB1B,eAAgB5M,EAAMjE,UACzCiE,EAAMuO,mBAAqBvO,EAAMhE,SAC1B6lC,GAAa7hC,EAAMsO,gBAAiBtO,EAAMuO,mBAErD6zC,KACO1hD,EAASyM,OAEhBhI,EAAY,GACZzE,EAASyM,WACTzM,EAASwM,IAAqB,KAEvB20B,GAAa7hC,EAAMsO,gBAAiBtO,EAAMuO,mBAGzDnB,sBAAuB,kBAAM1M,EAAS0M,OACtCi6C,kCAAmC,kBAAM3mD,E/KmGK,yCAAM,WAAOA,EAAeC,GAAtB,mFAGhDA,IADA6L,gBAAkBgC,SAF8B,gCAM1C9N,EAAS0M,MANiC,SAWhDzM,IAXgD,IAUhD6L,gBAAkB8B,EAV8B,EAU9BA,gBAAiBC,EAVa,EAUbA,kBAGjCuzB,EAb8C,OAa/BxzB,QAb+B,IAa/BA,OAb+B,EAa/BA,EAAiBd,UAAUrK,MAAK,SAAA4+B,GAAC,OAAIA,EAAEl0B,OAASU,QAEjElM,OAAOC,SAASC,KAAOu/B,EAAaE,WAfY,2CAAN,+DgL/LrCyI,GAAkBljB,aAAOmjB,MAAV,iFAAGnjB,CAAH,wTAGN,SAACrR,GAAD,+BAAoCA,EAAM4Q,MAAMW,QAAQ2Y,QAAQC,MAAMC,SAASlY,UAA/E,Q9MqC4B,S8M7B7B,SAAClS,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOonB,oBAAoBsH,gBAAgBtjB,QAAQuD,SAKhG48B,GAAiB//B,KAAOW,OAAV,gFAAGX,CAAH,2MAGZ,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOonB,oBAAoBmkB,eAAengC,QAAQub,WASzFqK,GAAUxlB,KAAOC,IAAV,yEAAGD,CAAH,2EAKP6b,GAAM7b,KAAOO,IAAV,qEAAGP,CAAH,gNAEF,SAACrR,GACP,MAAM,GAAN,OACIA,EAAM4Q,MAAM/K,OAAOonB,oBAAoBC,IAAIjc,QAAQ0d,YAC7C3uB,EAAM4Q,MAAM/K,OAAOonB,oBAAoBC,IAAIjc,QAAQ0d,YACnD,WAHV,kBAIU3uB,EAAM4Q,MAAMW,QAAQzS,OAAOuyC,mBAAmBxnB,UAM9C,SAAC7pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQzS,OAAOuyC,mBAAmBxnB,QAChEl6B,GAAYC,OAAOG,IAC3B,SAACiQ,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOonB,oBAAoBC,IAAIn9B,GAAGykB,SACtE,SAACxU,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOonB,oBAAoBC,IAAIn9B,GAAGmhB,UCyH1E0B,OAlHoB,SAAC,GAyBJ,IjKknCiD0G,EiK1oC7EzzB,EAwB2B,EAxB3BA,UACAkP,EAuB2B,EAvB3BA,cACA8C,EAsB2B,EAtB3BA,QACAd,EAqB2B,EArB3BA,sBACAmB,EAoB2B,EApB3BA,SACA64C,EAmB2B,EAnB3BA,qBACA54C,EAkB2B,EAlB3BA,cACAzP,EAiB2B,EAjB3BA,uBACA2P,EAgB2B,EAhB3BA,iBACAD,EAe2B,EAf3BA,gBACAnJ,EAc2B,EAd3BA,UACAiiD,EAa2B,EAb3BA,eACA5kD,EAY2B,EAZ3BA,WACAsK,EAW2B,EAX3BA,eACAo5C,EAU2B,EAV3BA,WACAtkD,EAS2B,EAT3BA,oBACAwL,EAQ2B,EAR3BA,sBACAoB,EAO2B,EAP3BA,SACAg4C,EAM2B,EAN3BA,WACAa,EAK2B,EAL3BA,kCACAnzC,EAI2B,EAJ3BA,KACAmlC,EAG2B,EAH3BA,YACA+M,EAE2B,EAF3BA,oBACApN,EAC2B,EAD3BA,cAEMwO,EAAWxc,aAAc,cAAD,OAAenlC,GAAYC,OAAOG,GAAlC,QACxBwhD,EAAUj+B,aAAiB,CAC7BC,UAAW,IAGTyvB,EAAgBF,EAChB0O,EAAa,2BACZxzC,GADY,IAEf3F,mBACAD,kBACAxB,iBACA05C,aACAN,aACAtnD,yBACAqM,gBACAm7C,wBAGErb,EAAa,CACfjK,aAAa,EACbD,eAAe,EACfO,cAAe/yB,EACf0yB,kBAAmBymB,GAGvB99B,qBAAU,WACF+9B,GAAWD,GACXtB,MAEL,CAACA,EAAYsB,EAAUC,IAE1B/9B,qBAAU,WACFzc,IAA0BuB,GAC1BpB,MAEL,CAACH,EAAuBuB,EAAUpB,IjK8kCwCoiB,EiK5kC5C,SAAAzmB,GAC7Bk+C,EAAqBl+C,EAAK4+C,gBAC1BnlD,GAAW,IjK2kCV,GAAoB,IAAIkxB,GAA0BlE,GAGK,SAAmEA,GAC1H,GAAoB,IAAIkF,GAAmDlF,GiK5kChFo4B,EAA0D,WACtDP,OAGJnxB,GAAyBgwB,GAYzB,OAAK93C,EAED,oCACI,yBAAK81B,UAAU,sBAAsB3Z,cAAaz2B,EAAkB,iCAChE,kBAACu5C,GAAA,EAAD,iBAAYgM,EAAZ,CAAyB9L,eAAe,QACpC,kBAAC+Z,GAAD,CAAgB78B,QAAS,kBAAMjoB,GAAW,KACtC,kBAAC,GAAD,CACIooB,IAAK7uB,EACL4uB,IAAK5c,EACLwc,cAAaz2B,EAAkB,iCAK/C,kBAAC,GAAD,KACI,kBAAC,GAAD,CACIy2B,cAAaz2B,EAAkB,kCAC/Bg3C,OApBLsb,EAAsB,SAAW,QAqB5BnlB,KAAMh0B,EACNo0B,QAAS6kB,EACTjb,WAAYF,EACZxuC,MAAO,CAAC7B,SAAU2T,EAAgB,QAAU,YAE5C,kBAAC6qC,EAAD,iBAAmBwO,EAAnB,CAAkC1B,WAjC/B,WACf/hB,KACAmjB,EAAejiD,GACfvD,WAOkB,Q,SC9I1B6E,KAAcG,aAAahG,QAAQiG,KAC/B,SAAAC,GAQI,OANAE,IAAO6gD,MAAP,eACY/gD,EAAOpI,IADnB,sBACoCopD,KAAKxtB,UAAUxzB,EAAO/R,UACtD+R,EAAO/R,QAAQ,0BAEnBiS,IAAO+gD,KAAKjhD,EAAOpI,IAAKoI,EAAO/R,QAAQ,6BAEhC+R,KAEX,SAAA7L,GAGI,OADA+L,IAAO/L,MAAMA,EAAO,8BACbgM,QAAQC,OAAOjM,MAI9BwL,KAAcG,aAAaO,SAASN,KAChC,SAAAM,GAII,OADAH,IAAO6gD,MAAP,UAAgB1gD,EAASL,OAAOpI,IAAhC,cAAyCyI,EAAS4wB,QAAU5wB,EAASpS,QAAQ,0BACtEoS,KAEX,SAAAlM,GAII,OADA+L,IAAO/L,MAAMA,EAAO,+BACbgM,QAAQC,OAAOjM,MAIfwL,UAAf,ECxBe,GAVD,SAAC4I,GACX,GAAKA,EAAM9a,OAEX,OAAO8a,EACF9N,QAAO,SAAAwD,GAAC,MjNyCO,YiNzCHA,EAAEo3C,eACdj/C,KAAI,SAAA6H,GAAC,OAAIA,EAAEk3C,UAAYl3C,EAAE22C,SACzBr+C,QAAO,SAAC0H,EAAGijD,GAAJ,OAAUjjD,EAAIijD,KACrBC,QAAQ,I,2yMCAjB,IAAMC,GAAW,CAACx9B,MAAO,OACnBnuB,GAA6B,CAC/ByjC,OAAQ,kBACR2F,QAAS,OACTwiB,MAAO,EACPplB,OAAQ,EACRL,QAAS,GAEP0lB,GAAmB,CAACroB,MAAO,QAAS0iB,gBAAiB,QAErD4F,GAAsB,SAACjjD,EAAkBkjD,GAE3C,IACIztB,EAAW,EACfz1B,EAAI60C,MAAMp8C,SAAQ,SAACkH,GACf81B,IAAa91B,EAAEk3C,YAEnB,IAAMsM,EALW,EAKKhnC,KAAKinC,MAAM3tB,EAAW,GAC5C,OAAO,2BACAz1B,GADP,IAEI24C,iBAAkBuK,EAAmBC,EAAgB,EACrDtK,0BAA2BqK,EAAgB,cAAOC,EAAcN,QAAQ,IAAO,MAIjFQ,GAAiC,SAACrjD,EAAkBsjD,GAEtD,IACKxO,EAAwB90C,EAAxB80C,qBACL,IAAKA,EAAqBh9C,KAAI,SAAA6H,GAAC,OAAIA,EAAEE,QAAMD,SAF9B,QAEgD0jD,EAAc,CACvE,IACMhL,EAAY,CACdiL,kBAFa,GAGb/K,0BAA0B,QAAD,OAHZ,IAG4BqK,QAAQ,IACjDW,eAAgB,QAChBC,kBAAmB,EACnBC,kBAAmB,GACnBhL,sBAAuB,gBACvBH,qBAAsB,gBACtB14C,KAAM,OAGVi1C,EAAqBp6B,KAAK49B,QAClBgL,IACRxO,EAAuBA,EAAqB34C,QAAO,SAAAwD,GAAC,MAjB3C,QAiB+CA,EAAEE,SAG9D,OAAO,2BACAG,GADP,IAEI80C,qBAAqB,aAAKA,MAI5B6O,GAAiB,SAAC3jD,GACpB,IAAM4jD,EAAQC,GAAgB7jD,EAAI60C,QAAU,EACtCiP,EAAW9jD,EAAI24C,iBAEd7D,EAAwB90C,EAAxB80C,qBACHr1C,EAAa,EACjBq1C,EAAqBr8C,SAAQ,SAAAkH,GACzBF,GAAcE,EAAE4jD,oBAGpB,IAAMQ,GAAmBH,EAAQ,GAAKA,EAAQE,EAAWrkD,EAAa,EAEtE,OAAO,2BACAO,GADP,IAEIgkD,gBAAiBD,EACjBnL,yBAAyB,OAAD,OAAMmL,EAAgBlB,QAAQ,OAIxDoB,GAAc,SAACh6C,EAAei6C,GAChC,IAAMC,EAAYl6C,EAAM9N,QACpB,SAAAwD,GAAC,OACGA,EAAE43C,SAAW2M,EAAQ3M,QACrB53C,EAAEtB,aAAe6lD,EAAQ7lD,YACzBsB,EAAEi3C,kBAAoBsN,EAAQtN,mBAGtC,IAAKuN,EAAUh1D,OAAQ,MAAM,GAAN,oBAAW8a,GAAX,CAAkBi6C,IACzC,IAAMrN,EAAWqN,EAAQrN,SAAWsN,EAAU,GAAGtN,SAE3CuN,EAAW,2BAAOF,GAAP,IAAgB3M,OAAQ4M,EAAU,GAAG5M,OAAQV,aAC9D,MAAM,GAAN,oBAAW5sC,EAAM9N,QAAO,SAAAwD,GAAC,OAAIA,EAAE43C,SAAW6M,EAAY7M,WAAtD,CAA+D6M,KA8JpD1gC,gBAHS,SAAC9oB,GACrB,OAAO,eAAIA,EAAMuT,eAENuV,EA3JK,SAAC,GAA6B,IAA5B3jB,EAA2B,EAA3BA,UAAWC,EAAgB,EAAhBA,IACvB4mB,EAAS3pB,OACf,EAAgD8mB,oBAAS,GAAzD,oBAAOm/B,EAAP,KAAyBmB,EAAzB,KACA,EAAgDtgC,oBAAS,GAAzD,oBAAOugC,EAAP,KAAyBC,EAAzB,KACA,EAAwCxgC,oBAAS,GAAjD,oBAAOu/B,EAAP,KAAqBkB,EAArB,KACA,EAAgDzgC,oBAAS,GAAzD,oBAAO0gC,EAAP,KAA2BC,EAA3B,KACA,EAAsC3gC,oBAAS,GAA/C,oBAAO4gC,EAAP,KAAsBC,EAAtB,KAEMC,EAAS,yCAAG,yHAMSjgD,GAAMlB,IAAI,YANnB,OAMR3B,EANQ,OAQR+Q,EAAS/Q,EAAS4B,KAClB4zC,EAASx3C,EAAY,EACrBu3C,EAAgBgN,EAAmB,yCAA2C,GAC9EQ,EAAkBL,EAAqB,eAAiB,GACxDhO,EACF12C,EAAY,EAAZ,UACS+kD,EADT,2FAESA,EAFT,YAE4BhyC,EAAO6hB,YAAYkgB,MAAM,GAAG4B,aACxC,SACQ,6BACtBsO,EAAmBx4D,OAAOwvB,KAAK/b,GAAK7Q,OACtCsmC,EAAW,EAEXsvB,GACA/kD,EAAI60C,MAAMp8C,SAAQ,SAACkH,GACf81B,IAAa91B,EAAEk3C,YAEfD,EAAkB,GAEjBA,EADA72C,GACmB01B,EAAW,IAAM,EAAI,OAAS,OADpB,OAG5ByuB,EARY,2BASXpxC,EAAO6hB,YAAYkgB,MAAM,IATd,IAUd0C,SACAX,kBACAH,cACAY,oBAjBoB,6BAkBpBD,YAnBY,SAoBZE,gBACAZ,WAAYiO,IAEhBK,EAAM,2BAAOhlD,GAAP,IAAY60C,MAAOoP,GAAYjkD,EAAI60C,MAAOqP,MAC7Cc,EAAM,eAAOlyC,EAAO6hB,aAG3BqwB,EAAS/B,GAAoB+B,EAAQ9B,GAErC8B,EAAS3B,GAA+B2B,EAAQ1B,GAEhD0B,EAASrB,GAAeqB,GAExBp+B,EAAEyB,SAAS,+BAA+Br4B,KAAK,CAC3C8iC,SAAS,EACTnvB,KAAM,CAACgxB,YAAY,2BAAKqwB,GAAN,IAAcpwB,UAAW70B,EAAY,OAnD7C,4CAAH,qDA4Ef,OACI,oCACI,yBAAK5I,MAAOA,IACR,4BAAQY,KAAK,SAASZ,MAAO2rD,GAAUz9B,QAASw/B,GAAhD,QAGA,4BAAQ9sD,KAAK,SAASZ,MAAO2rD,GAAUz9B,QA3B9B,WAEjB,IAAI2/B,EAAM,eAAOhlD,GACjBglD,EAAOnQ,MAAQ70C,EAAI60C,MAAM14C,QAAO,SAAC26B,EAAG8rB,GAAJ,OAAUA,IAAMr2D,OAAOwvB,KAAK/b,EAAI60C,OAAO1lD,OAAS,KAChF,IAAIgqB,EAAU,EACd6rC,EAAOnQ,MAAMp8C,SAAQ,SAAAkH,GACjBwZ,GAAWxZ,EAAEk3C,YAIjBmO,EAAS/B,GAAoB+B,EAAQ9B,GAErC8B,EAAS3B,GAA+B2B,EAAQ1B,GAEhD0B,EAASrB,GAAeqB,GAExBp+B,EAAEyB,SAAS,+BAA+Br4B,KAAK,CAC3C8iC,SAAS,EACTnvB,KAAM,CAACgxB,YAAY,2BAAKqwB,GAAN,IAAcpwB,UAAWzb,SASvC,QAGA,kCAAQpZ,IAEZ,yBAAK5I,MAAO6rD,IACR,6BACI,2BACIjrD,KAAK,WACL3H,GAAG,YACHgQ,KAAK,YACLpI,MAAM,YACN+sC,SAAU,kBAAMsf,GAAqBnB,MAEzC,qDAEJ,6BACI,2BACInrD,KAAK,WACL3H,GAAG,aACHgQ,KAAK,aACLpI,MAAM,aACN+sC,SAAU,kBAAMwf,GAAqBD,MAEzC,uDAGJ,6BACI,2BACIvsD,KAAK,WACL3H,GAAG,eACHgQ,KAAK,eACLpI,MAAM,eACN+sC,SAAU,kBAAMyf,GAAiBlB,MAErC,iDAEJ,6BACI,2BACIvrD,KAAK,WACL3H,GAAG,qBACHgQ,KAAK,qBACLpI,MAAM,qBACN+sC,SAAU,kBAAM2f,GAAmBD,MAEvC,wDAEJ,6BACI,2BACI1sD,KAAK,WACL3H,GAAG,gBACHgQ,KAAK,gBACLpI,MAAM,gBACN+sC,SAAU,kBAAM6f,GAAcD,MAElC,yDC7Od7B,GAAW,CAACx9B,MAAO,OAEnBnuB,GAA6B,CAC/ByjC,OAAQ,kBACRmoB,MAAO,EACPplB,OAAQ,EACRL,QAAS,GA8BE5Z,gBAHS,SAAC9oB,GACrB,MAAO,CAACmF,UAAWnF,EAAMuT,YAAYpO,UAAWC,IAAKpF,EAAMuT,YAAYnO,OAE5D0jB,EA3BF,SAAC,GAAsB,IAArB1jB,EAAoB,EAApBA,IAAKD,EAAe,EAAfA,UAahB,OACI,yBAAK5I,MAAOA,IACR,4BAAQY,KAAK,SAASZ,MAAO2rD,GAAUz9B,QAd3B,WACdpoB,OAAeorB,SAAS,+BAA+Br4B,KAAK,CAC1D8iC,SAAS,EACTnvB,KAAM,CAACgxB,YAAY,2BAAK30B,GAAN,IAAWyxC,UAAW,eAAgB7c,UAAW70B,SAWnE,SAGA,4BAAQhI,KAAK,SAASZ,MAAO2rD,GAAUz9B,QAX1B,WACfpoB,OAAeorB,SAAS,+BAA+Br4B,KAAK,CAC1D8iC,SAAS,EACTnvB,KAAM,CAACgxB,YAAY,2BAAK30B,GAAN,IAAWyxC,UAAW,KAAM7c,UAAW70B,SAQzD,cC7BN+iD,GAAW,CAACx9B,MAAO,OAEnBnuB,GAA6B,CAC/ByjC,OAAQ,kBACRmoB,MAAO,EACPplB,OAAQ,EACRL,QAAS,EACTiD,QAAS,QAqBE0kB,GAlBS,WACpB,MAAsClhC,mBAAS,MAA/C,oBAAO7c,EAAP,KAAoBg+C,EAApB,KAOA,OACI,yBAAK/tD,MAAOA,IACR,4BAAQY,KAAK,SAASZ,MAAO2rD,GAAUz9B,QAP5B,WACbpoB,OAAeorB,SAAS,2BAA2Br4B,KAAK,CACtDuyD,eAAgBr7C,MAKhB,gBAGA,2BAAOlP,MAAOkP,EAAa69B,SAAU,SAAAxlC,GAAC,OAAI2lD,EAAe3lD,EAAE+L,OAAOtT,YClBxEb,GAAuB,CAAC7B,SAAU,QAASytD,MAAO,KAClDD,GAA0B,CAACt7B,WAAY,MAAOoT,OAAQ,MAAOD,MAAO,SACpEwqB,GAAgC,CAClCpC,MAAO,OACPxiB,QAAS,OACT6M,cAAe,SACf93C,SAAU,SAoBC8vD,GAlBG,WACd,MAAyBrhC,oBAAS,GAAlC,oBAAO8X,EAAP,KAAawpB,EAAb,KACA,OACI,yBAAKluD,MAAOA,IACR,4BAAQA,MAAO2rD,GAAUz9B,QAAS,kBAAMggC,GAAUxpB,IAAO9jC,KAAK,UAA9D,KAGC8jC,GACG,yBAAK1kC,MAAOguD,IACR,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,SCzBPh+B,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,kICwBPuB,GCnBAA,aAJgB,SAAC9oB,GAAD,MAAmB,CAC9Cb,qBAAsBa,EAAMY,QAAQzB,wBDsBzB2pB,EAfgB,SAAC,GAAkD,IAAjD3pB,EAAgD,EAAhDA,qBAC7B,EAAoCgqB,mBAAS,IAA7C,oBAAOuhC,EAAP,KAAmBC,EAAnB,KASA,OAPAjhC,qBAAU,WACN,IAAMkhC,EAA6BnpD,IAAQqH,IvNyGX,qBuNxG5B8hD,GAA8BzrD,GAC9BwrD,EAAcC,KAEnB,CAACzrD,IAECurD,EAEE,kBAAC,GAAD,CAAWngC,cAAY,qBAAvB,oBAA6DmgC,GAF5C,QEZfG,GAAiBtjC,KAAOC,IAAV,+EAAGD,CAAH,iPACZ,gBAAEK,EAAF,EAAEA,KAAM4/B,EAAR,EAAQA,SAAR,OAAuB5/B,GAAQ4/B,EAAW,OAAS,UAC1C,SAACtxC,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQzS,OAAOuyC,mBAAmBpgC,WACnF,SAACjR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQzS,OAAOuyC,mBAAmBxnB,SACvE,SAAC7pB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmL,YAAYC,QAAQC,UAC5D,SAAClR,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmL,YAAYC,QAAQ2jC,aAM3DjlD,GAAYC,OAAOG,IAC1B,SAACiQ,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmL,YAAYjhB,GAAGmhB,UCgC/D2jC,GArCmB,SAAC70C,GAC/B,IAAMxV,EAAWsqD,cACXpjC,EAAO4B,aAAiB,CAACC,U1NhBS,K0NiBlC+9B,EAAWxc,aAAc,cAAD,OAAenlC,GAAYC,OAAOG,GAAlC,QAExBglD,EAAoBjgB,aAAc,cAAD,O1NoEL,Q0NpEK,MAEvC9U,GAAyBpzB,GAEzB4mB,qBAAU,WACN,IAAMwhC,EAAepD,KAAKqD,MAAMv0B,aAAaC,Q1NkFxB,iB0NlFkD,MACnEq0B,EAAa32D,OAAS,GACtBkN,IAAQI,O1N+E0B,0B0N9ElC+0B,aAAaJ,W1N+EI,kB0N7EjB00B,EAAaprC,KAAK,CAACsrC,MAAOF,EAAa32D,SACvCqiC,aAAaL,Q1N4EI,e0N5EmBuxB,KAAKxtB,UAAU4wB,OAExD,IAEHxhC,qBAAU,WACNhpB,GtNWiC,SAACA,GACtC,IAAI2qD,EAAgB5pD,IAAQ6pD,QA7Cb,mBA6CoC,KAC9Cz7C,MAAM2H,QAAQ6zC,IAAmBA,EAAc92D,OAAS,GAAiC,kBAArB82D,EAAc,MACnFzpD,IACAypD,EAAgB,IAEpB,IAAMtqD,EAAWsqD,EAAcnuD,KAAI,SAAAquD,GAAO,OAAIA,KAE9C7qD,EAASH,EADO,CAACQ,mBsNjBd,CAACL,IAQJ,OACI,kBAACmqD,GAAD,CAAgBjjC,KAAMA,EAAM2C,cAAY,qBAAqBi9B,SAAUA,EAAU/8B,QAPjE,WACXwgC,GAELvqD,EAASoC,OAKJoT,EAAM0F,WC5CNivC,GAAiBtjC,KAAOC,IAAV,+EAAGD,CAAH,wCCQZikC,GARmB,SAACt1C,GAC/B,OACI,kBAAC,GAAD,CAAgBqU,cAAY,qBAAqB/0B,GAAG,kCAC/C0gB,EAAM0F,W,8DCIN+jB,GAASpY,cAAO,cAAET,MAAF,EAASyuB,UAAT,EAAoBkW,qBAApB,EAA0CjW,YAA1C,IAA0DjkC,EAA1D,0BACzB,kBAAC,KAAcA,MADA,uEAAGgW,CAAH,mbAMI,gBAAET,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAAlD,aAA6DxB,EAAMW,QAAQU,KAAKhB,YAClF,qBAAEskC,qBAAkD,WAAa,aAGpE,gBAAE3kC,EAAF,EAAEA,MAAOyuB,EAAT,EAASA,UAAT,OAAwBzuB,EAAMW,QAAQkF,KAAd,gBAA4B4oB,IAAavV,UAClE,gBAAEwV,EAAF,EAAEA,YAAa1uB,EAAf,EAAeA,MAAOyuB,EAAtB,EAAsBA,UAAtB,OACLC,EAAc1uB,EAAMW,QAAQkF,KAAd,gBAA4B4oB,IAAaxV,MAAQ,WACxD,qBAAEyV,YAAgC,GAAM,KAClC,gBAAE1uB,EAAF,EAAEA,MAAOyuB,EAAT,EAASA,UAAT,OAAwBzuB,EAAMW,QAAQkF,KAAd,gBAA4B4oB,IAAa7oB,UAC9D,gBAAE5F,EAAF,EAAEA,MAAOyuB,EAAT,EAASA,UAAT,OAAwBzuB,EAAMW,QAAQkF,KAAd,gBAA4B4oB,IAAa3oB,cAE7D,gBAAE9F,EAAF,EAAEA,MAAOyuB,EAAT,EAASA,UAAT,OAAwBzuB,EAAMW,QAAQkF,KAAd,gBAA4B4oB,IAAa3oB,cAGjE,gBAAE9F,EAAF,EAAEA,MAAOyuB,EAAT,EAASA,UAAT,OAAwBzuB,EAAMW,QAAQkF,KAAd,gBAA4B4oB,IAAa3oB,cAIhF,gBAAE9F,EAAF,EAAEA,MAAOyuB,EAAT,EAASA,UAAT,OAAwBzuB,EAAMW,QAAQkF,KAAd,gBAA4B4oB,IAAaxV,SCiBnEwX,GAjCH,SAAC,GAYI,IAXb3B,EAWY,EAXZA,OACAl3C,EAUY,EAVZA,IACAwV,EASY,EATZA,KACAqhC,EAQY,EARZA,UACA9qB,EAOY,EAPZA,QACAorB,EAMY,EANZA,OACAC,EAKY,EALZA,SACAC,EAIY,EAJZA,SACAC,EAGY,EAHZA,SACAC,EAEY,EAFZA,IACAwV,EACY,EADZA,qBAEA,OACI,kBAAC,GAAD,CACIlpD,KAAM7D,EACN+rB,QAASA,EACTuf,UAAW4L,EACXJ,aAAcI,EACdL,UAAWA,EACX3I,eAAa,EACbriB,cAAasrB,EACbxL,aAAYyL,EACZ5K,aAAY6K,EACZzL,aAAY0L,EACZC,IAAKA,EACLwV,qBAAsBA,GAErBv3C,ICvBAw3C,GAAgB,SAACjtD,GAAD,gBAAwBA,GAAxB,OApBb,UCuBDqqB,gBAvBgB,SAAC9oB,GAC5B,MAEIA,EAAMkU,KADNy3C,eAAiBl7C,EADrB,EACqBA,MAAOm7C,EAD5B,EAC4BA,QAASC,EADrC,EACqCA,QAASC,EAD9C,EAC8CA,kBAAmBC,EADjE,EACiEA,oBAE1DttD,EAAWuB,EAAMY,QAAjBnC,QAGP,MAAO,CACHutD,UDCyB,WAC7B,IAAM5uD,EAAQqE,IAAQqH,IAZP,sBAaf,IAAK1L,EAAO,OAAO,EACnB,IAAM6uD,EAAa7uD,EAAMtB,MAAM,KAAKyF,QAAO,SAAAkU,GAAG,OAAIA,EAAIzQ,SAbnC,qBAcnB,SAAIinD,GAAcA,EAAW13D,OAAS,IAEP,UADN03D,EAAW,GAAGnwD,MAAM,KACrB,GCVNowD,GAIdztD,UACAyV,KAAM,CAACzD,QAAOm7C,UAASC,UAASC,oBAAmBC,uBACnDI,YAAaT,GAAcjtD,MAYK,MARd,SAACuB,EAAYkpB,EAAWuf,GAAxB,mBAAC,2BACpBzoC,GACAyoC,GAFmB,IAGtB2jB,uBAAwB,YDhBQ,WAChC,IAAMhvD,EAAQqE,IAAQqH,IALP,sBAMf,IAAK1L,EAAO,OAAO,EACnB,IAAMzJ,EAAeyJ,EAAMvJ,QAAN,UANF,iBAME,oBANF,iBAME,UACrB4N,IAAQC,IARO,qBAQS/N,GCapB04D,SCnBKC,GAAiB/kC,KAAOC,IAAV,gFAAGD,CAAH,yWAMT,SAACrR,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQzS,OAAOuyC,mBAAmBxnB,SAC7E,SAAC7pB,GAAD,OAA0BA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,UAIvCthB,GAAYC,OAAOG,GAInBJ,GAAYC,OAAOI,IAK/BoqC,GAAkB/oB,KAAOC,IAAV,iFAAGD,CAAH,2bAEX,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQoe,YAC5D,SAACrvB,GAAD,OAAyBA,EAAM4Q,MAAM/K,OAAOu7B,UAAUnwB,QAAQ7V,aAKxDzL,GAAYC,OAAOG,GAYnBJ,GAAYC,OAAOI,ICc7B4iB,OA3CoB,SAAC,GAKH,IAAD,IAJ5B5U,KAAOzD,EAIqB,EAJrBA,MAAOm7C,EAIc,EAJdA,QAASC,EAIK,EAJLA,QAASC,EAIJ,EAJIA,kBAAmBC,EAIvB,EAJuBA,oBACnDK,EAG4B,EAH5BA,uBAG4B,IAF5BJ,iBAE4B,SAD5BG,EAC4B,EAD5BA,YAEA,EAA+BhjC,mBAAS6iC,GAAxC,oBAAOO,EAAP,KAAeC,EAAf,KAEMC,EAAwB,WAC1BL,IACAI,GAAa,IAMjB,OACI,kBAAC,GAAD,CAAOvrB,KAAMsrB,EAAQrrB,YAAaurB,EAAuBrrB,cAAc,GACnE,kBAACkrB,GAAD,KACI,kBAACv/B,GAAA,EAAD,CAAY/gB,QAAQ,MAAMyE,GAC1B,2BAAIm7C,GACJ,2BAAIC,GACJ,kBAAC,GAAD,KACI,kBAAC,GAAD,CACIhW,OAAO,2CACPD,QAAM,EACNnrB,QAbA,WAChBpoB,OAAOC,SAASC,KAAO4pD,GAaP5W,UAAU,YACVrhC,KAAM43C,IAEV,kBAAC,GAAD,CACIjW,OAAO,gDACPD,QAAM,EACNnrB,QAASgiC,EACTlX,UAAU,UACVrhC,KAAM63C,UC1BfjjC,gBAnBgB,SAAC9oB,GAAkB,IAAD,EACtCvB,EAAWuB,EAAMY,QAAjBnC,QACD26C,EAAe,UAAGp5C,EAAM+I,YAAT,aAAG,EAAYy6B,QAAQrgC,MAAK,SAAAsgC,GAAM,OAAIA,EAAOtmC,OAAS2+B,GAAqBsa,cAYhG,MAAO,CACHD,WAZY,OAAGiD,QAAH,IAAGA,OAAH,EAAGA,EAAiB1V,SAC/BniC,QAAO,SAAA+Z,GAAI,MAAkB,SAAdA,EAAKne,QACpBD,KAAI,YAA2C,IAAzCgX,EAAwC,EAAxCA,KAAMxV,EAAkC,EAAlCA,IAAKmlC,EAA6B,EAA7BA,kBAAmB/3B,EAAU,EAAVA,KACjC,MAAO,CACHoI,OACAxV,IAAI,GAAD,OAAKD,GAAL,OAAeC,GAClBmlC,kBAAiB,OAAEA,QAAF,IAAEA,IAAqB,GACxC/3B,eCZHwb,GAAkBC,KAAOC,IAAV,iFAAGD,CAAH,uLAGV,qBAAET,MAAiBW,QAAQC,UAAUC,mBAG9B9hB,GAAYC,OAAOG,IAI/BymD,GAAuBnlC,KAAOC,IAAV,sFAAGD,CAAH,qYAKhB1hB,GAAYC,OAAOK,GACvBN,GAAYC,OAAOK,IAGjB,qBAAE2gB,MAAiB/K,OAAOmL,YAAYC,QAAQub,UAEpC78B,GAAYC,OAAOG,IACzB,qBAAE6gB,MAAiB/K,OAAOmL,YAAYjhB,GAAGy8B,UAGnC78B,GAAYC,OAAOI,IACzB,qBAAE4gB,MAAiB/K,OAAOmL,YAAYhhB,GAAGw8B,UAGnC78B,GAAYC,OAAOK,IACzB,qBAAE2gB,MAAiB/K,OAAOmL,YAAY/gB,GAAGu8B,WAG/CiqB,GAAaplC,KAAOnS,EAAV,4EAAGmS,CAAH,yGACV,qBAAET,MAAiBW,QAAQvT,KAAKiT,WAG1B,qBAAEL,MAAiBW,QAAQU,KAAKsE,QAAQmT,OAAOC,UAErD+sB,GAAkBrlC,KAAOS,KAAV,iFAAGT,CAAH,yGACf,qBAAET,MAAiBW,QAAQvT,KAAKiT,WAG1B,qBAAEL,MAAiBW,QAAQU,KAAKsE,QAAQmT,OAAOC,UAErDgtB,GAAsBtlC,KAAOC,IAAV,qFAAGD,CAAH,8GAMnBulC,GAAqBvlC,KAAOC,IAAV,oFAAGD,CAAH,qDAGlBwlC,GAAmBxlC,KAAOC,IAAV,kFAAGD,CAAH,qGAGV,qBAAET,MAAiBW,QAAQulC,IAAIC,gBCjCnCnkC,OAlBmB,SAAC,GAA2C,IAA1CqtB,EAAyC,EAAzCA,WAChC,OACI,kBAAC,GAAD,CAAiB5rB,cAAY,6BACzB,kBAACmiC,GAAD,KACI,kBAACE,GAAD,CAAiBp3D,GAAG,4BACpB,kBAAC,GAAD,YACK2gD,QADL,IACKA,OADL,EACKA,EAAYj5C,KAAI,SAACi8C,EAAWppC,GAAZ,OACb,kBAAC+8C,GAAD,CAAoBr3C,IAAK1F,GACrB,kBAAC48C,GAAD,CAAYpqD,KAAM42C,EAAUz6C,IAAK+R,MAAO0oC,EAAUtV,mBAAoBsV,EAAUjlC,MAC/EnE,IAAUomC,EAAW5hD,OAAS,GAAK,kBAACw4D,GAAD,gBCsBnDG,GAAgB,SAAC,GAWH,IAVvBjiD,EAUsB,EAVtBA,cACAg3B,EASsB,EATtBA,UACAkrB,EAQsB,EARtBA,kBAGAC,GAKsB,EANtBC,UAMsB,EALtBD,qBACAE,EAIsB,EAJtBA,uBACA7tD,EAGsB,EAHtBA,mBACA8tD,EAEsB,EAFtBA,wBACAC,EACsB,EADtBA,iBAEOz7D,EAAekS,EAAflS,YACDq0D,GAAuBpb,aAAc,cAAD,OtOPI,QsOOJ,MAE1C,OACI,4BAAQyiB,IAAKxiD,GACT,kBAAC,GAAD,MACA,kBAACic,GAAD,KACKomC,GAA0B,kBAAC,GAAD,MAC3B,kBAAC9qB,GAAD,KACI,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,OACE8qB,GAA0B,kBAAC,GAAD,CAAqBjU,YAAa,CAACb,QAAQ,KACvE,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,CAAU1C,StOwBY,csOxB0BC,StO6BhB,asO5BhC,kBAAC,GAAD,CAAqBqQ,oBAAqBA,IACzCr0D,GAAe,kBAAC,GAAD,MAChB,kBAAC,GAAD,MACC0N,GAAsB,kBAAC,GAAD,QAG/B,kBAACiuD,GAAD,KACI,kBAACF,EAAD,OAEHvrB,GAAa,kBAAC,GAAD,CAA2BA,UAAWA,EAAWC,WAAYirB,IAC1EC,IAAwBG,EAA0B,kBAACI,GAAD,MAA8B,kBAAC,GAAD,SC1EhF3gC,GAASzF,KAAOvS,OAAV,yEAAGuS,CAAH,wGACM1hB,GAAYC,OAAOG,GAAK,GAKpC2nD,GAAkBrmC,KAAOC,IAAV,kFAAGD,CAAH,uIACH1hB,GAAYC,OAAOG,GAAK,GAQpCu8B,GAAiBjb,KAAOkb,IAAV,iFAAGlb,CAAH,47CAUV1hB,GAAYC,OAAOK,GAEXN,GAAYC,OAAOG,GAInBJ,GAAYC,OAAOG,GAAK,GAKhC,SAACiQ,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUpF,QAAQyb,SAMrE,SAAC1sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAO9d,UAAUkpB,QAAQyb,SAG/D,SAAC1sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAO+mB,OAAO3b,QAAQyb,SAG5D,SAAC1sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOinB,WAAW7b,QAAQyb,SAIhE,SAAC1sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOknB,SAAS1W,UAAUpF,QAAQyb,SAGxE,SAAC1sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmnB,WAAW/b,QAAQyb,SAMhE,SAAC1sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOonB,oBAAoBhc,QAAQyb,SAMzE,SAAC1sB,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOge,YAAY5S,QAAQyb,QAGzD/8B,GAAYC,OAAOG,IAC1B,SAACiQ,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAOmL,YAAYjhB,GAAGmhB,UAOzD,SAAClR,GAAD,OAA0BA,EAAM4Q,MAAM/K,OAAO4mB,MAAMpW,UAAUtmB,GAAG28B,QAI5D/8B,GAAYC,OAAOG,GAAK,GAepC4nD,GAAQtmC,KAAOC,IAAV,wEAAGD,CAAH,iLAMO1hB,GAAYC,OAAOG,IC7E/B6nD,GAAmB,SAAC,GAWH,IAV1B7iD,EAUyB,EAVzBA,cACAg3B,EASyB,EATzBA,UACAkrB,EAQyB,EARzBA,kBAGAC,GAKyB,EANzBC,UAMyB,EALzBD,qBACA3tD,EAIyB,EAJzBA,mBAGA+tD,GACyB,EAFzBF,uBAEyB,EADzBE,kBAEOz7D,EAAekS,EAAflS,YACP,OACI,kBAAC,GAAD,CAAQ07D,IAAKxiD,GACT,kBAAC,GAAD,MACA,kBAACic,GAAD,KACI,kBAAC,GAAD,KACI,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC2mC,GAAD,KACI,kBAAC,GAAD,CAAW/V,UAAQ,IACnB,kBAAC,GAAD,CAAqBuB,YAAa,CAAC5K,QAAQ,KAC3C,kBAAC,GAAD,CAAY4K,YAAa,CAAC5K,QAAQ,KAClC,kBAAC,GAAD,CACIkS,iBAAkB,CACdoN,OAAQ,CACJA,OAAQ,aAIpB,kBAACH,GAAD,CAAiBrjC,cAAY,gBAC7B,kBAAC,GAAD,CAAqB8uB,YAAa,CAAC5K,QAAQ,GAAO2X,qBAAmB,KAExEr0D,GAAe,kBAAC,GAAD,MAChB,kBAAC,GAAD,MACC0N,GAAsB,kBAAC,GAAD,QAG/B,kBAACiuD,GAAD,KACI,kBAACF,EAAD,OAEHvrB,GAAa,kBAAC,GAAD,CAA2BA,UAAWA,EAAWC,WAAYirB,IAC1EC,GAAuB,kBAAC,GAAD,QCxErB,SAASY,KACpB,QAE0B,qBAAX3rD,UACN,iBAAkBA,QACbA,OAAe4rD,eAAqC,qBAAb1pD,UAA4BA,oBAAqBlC,OAAe4rD,mBACpF,qBAAdC,YAA8BA,UAAUC,iBAAkBD,UAAUE,kBCJpF,IAAMC,GAAuB,SAACC,GAAD,MAA4C,eAAZA,GACvDC,GAAoB,SAACD,GAAD,MAA4C,aAAZA,GAKpDE,GAAsB,SAACC,GAAD,OAA2B,SAAClrD,GAAD,OACzDA,EAAK2N,aACLu9C,IAAiBlrD,EAAK2N,YAAYurB,KAAK8xB,MACtCE,IAAiBlrD,EAAK2N,YAAYurB,KAAK4xB,MCJvCK,GAAa,SACfC,EACAC,EACAC,EACAC,EACA59C,GAEA,IAAIsN,EAAU,GAOd,OALAA,GAAWmwC,EAAqB,yBAA2B,GAC3DnwC,GAAWowC,EAAkB,sBAAwB,GACrDpwC,GAAWqwC,EAAoB,wBAA0B,GACzDrwC,GAAWswC,EAAiB,qBAAuB,IAE9C59C,GAAeA,EAAY3c,QAAU,EAC/BiqB,GAGXA,GAAWtN,EAAYurB,KAAK4xB,IAAwB,mBAAqB,GACzE7vC,GAAWtN,EAAYurB,KAAK8xB,IAAqB,gBAAkB,KA6DxDzlC,gBAzDgB,SAAC9oB,GAC5B,MAAuDA,EAAMsU,WAAtDjF,EAAP,EAAOA,MAAOsD,EAAd,EAAcA,sBAAuBC,EAArC,EAAqCA,eAC/B66C,EAAMztD,EAAMiL,cACX4D,EAA8B7O,EAAMqU,SAApCxF,2BAEP,IAAKQ,GAA0B,IAAjBA,EAAM9a,OAChB,MAAM,IAAIW,MAAM,iDAGpB,IAAM65D,EAA6B1/C,EAAM2/C,WACrC,SAAAzrD,GAAI,OAAKA,EAAK2N,cAAgB3N,EAAK2N,YAAYurB,KAAK4xB,OAElDY,EAA0B5/C,EAAM2/C,WAClC,SAAAzrD,GAAI,OAAKA,EAAK2N,cAAgB3N,EAAK2N,YAAYurB,KAAK8xB,OAGlDW,EAAY7/C,EAAMhO,QAAQysC,UAE1BqhB,EACF9/C,EAAM9a,OACN,EACA26D,EAAUF,WAAU,SAAAzrD,GAAI,OAAKA,EAAK2N,cAAgB3N,EAAK2N,YAAYurB,KAAK4xB,OACtEe,EACF//C,EAAM9a,OAAS,EAAI26D,EAAUF,WAAU,SAAAzrD,GAAI,OAAKA,EAAK2N,cAAgB3N,EAAK2N,YAAYurB,KAAK8xB,OAe/F,MAAO,CAACd,MAAKp+C,MAbK,OAAGA,QAAH,IAAGA,OAAH,EAAGA,EAAOnS,KAAI,SAACqG,EAAMwM,GACnC,OAAO,2BACAxM,GADP,IAEImrD,WAAYA,GACR3+C,IAAUg/C,EACVh/C,IAAUk/C,EACVl/C,IAAUo/C,EACVp/C,IAAUq/C,EAJQ,OAKlB7rD,QALkB,IAKlBA,OALkB,EAKlBA,EAAM2N,kBAKgByB,wBAAuBC,iBAAgB/D,gCAmBrC,MAhBd,SAAC7O,EAAD,EAA8ByoC,GAA9B,IAAc/nC,EAAd,EAAcA,SAAd,mBAAC,2BACpBV,GACAyoC,GAFmB,IAGtB4mB,cAAe,SAACt/C,EAAexM,GAC3B,IAAM+rD,EAAkBv/C,GAAS,EAC3Bw/C,EAAoBvvD,EAAM2S,wBAA0B5C,GACrDu/C,GAAmBC,GAAsBjpD,QAC1C5F,EAASoS,GAAmB/C,EAAOxM,EAAKkN,QACpCV,GAAS,GAAGrP,EAASuR,GAAyB1O,EAAK2iC,SAG/DrzB,kBAAmB,SAAAzV,GACfsD,EAASmS,GAAkBzV,UClFtBmvB,GAAYhF,KAAOokB,GAAV,0EAAGpkB,CAAH,mZAQC,SAAArR,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWphB,GAAG6qC,kBAM1C,qBAAE0e,OAAsB,SAAW,UCP7CjjC,GAAYhF,KAAOkkB,GAAV,0EAAGlkB,CAAH,6zDAOP,qBAAEnZ,SAA0B,EAAI,KAEzB,gBAAEA,EAAF,EAAEA,SAAU0Y,EAAZ,EAAYA,MAAZ,OAAwB1Y,EAAW0Y,EAAMW,QAAQzS,OAAOy6C,mBAAmB/8C,OAAS,aACjF,gBAAEtE,EAAF,EAAEA,SAAU0Y,EAAZ,EAAYA,MAAZ,OACb1Y,EAAW0Y,EAAM/K,OAAO2zC,UAAUzpD,GAAG+5B,OAASlZ,EAAM/K,OAAO2zC,UAAU3pD,GAAGi6B,UAC9D,SAAA9pB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO2zC,UAAU3pD,GAAGi6B,UAC5C,SAAA9pB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO2zC,UAAU3pD,GAAG28B,WAO3C,gBAAEt0B,EAAF,EAAEA,SAAU0Y,EAAZ,EAAYA,MAAyBzV,EAArC,EAAmBs+C,gBAAkBt+C,WAArC,OACLjD,EACM0Y,EAAMW,QAAQvT,KAAKgjC,WAAW0Y,WAC9Bv+C,GAAcyV,EAAMW,QAAQvT,KAAKgjC,WAAW57B,QAEzC,SAAApF,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO2zC,UAAU3pD,GAAGw/B,YAEvC,gBAAEze,EAAF,EAAEA,MAAF,gBACRA,EAAMW,QAAQU,KAAKsE,QAAQ3F,EAAM/K,OAAOsL,WAAWF,QAAQqzB,UAAUlyB,OAD7D,aAEPxB,EAAMW,QAAQU,KAAKhB,YAEZ,gBAAEL,EAAF,EAAEA,MAAF,SAAS6oC,gBAAkBr+C,YAA+BwV,EAAM/K,OAAOsL,WAAWthB,GAAGuL,cAClF,SAAA4E,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWF,QAAQ+oB,gBAE5CrqC,GAAYC,OAAOK,IACzB,SAAA+P,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO2zC,UAAUvpD,GAAGu8B,UAGnC78B,GAAYC,OAAOI,IACrB,gBAAE4gB,EAAF,EAAEA,MAAF,SAAS6oC,gBAAkBr+C,YACxBwV,EAAM/K,OAAOsL,WAAWnhB,GAAGoL,aAM5BzL,GAAYC,OAAOI,GAAK,GAE1B,qBAAEkI,SAA0B,QAAU,SAQxCvI,GAAYC,OAAOI,GAAK,GAMrB,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWthB,GAAG28B,WAGzC,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWthB,GAAG28B,UAG1C78B,GAAYC,OAAOG,IAEhB,SAAAiQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWphB,GAAGy8B,WAGzC,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWphB,GAAGy8B,UAI9C78B,GAAYC,OAAOG,GAAK,GAGjB,SAAAiQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWnhB,GAAGw8B,WAKzC,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWnhB,GAAGw8B,UAMtD78B,GAAYC,OAAOI,GAKfL,GAAYC,OAAOG,IAEhB,SAAAiQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWphB,GAAGy8B,WAGzC,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWphB,GAAGy8B,UAI9C78B,GAAYC,OAAOK,IAEhB,SAAA+P,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWlhB,GAAGu8B,WAGzC,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWlhB,GAAGu8B,WAK9D3a,GAAQR,KAAOC,IAAV,sEAAGD,CAAH,wFACL,gBAAEnZ,EAAF,EAAEA,SAAU0Y,EAAZ,EAAYA,MAAyBzV,EAArC,EAAmBs+C,gBAAkBt+C,WAArC,OACLjD,EAAW0Y,EAAMW,QAAQvT,KAAKgjC,WAAW0Y,WAAav+C,GAAcyV,EAAMW,QAAQvT,KAAKgjC,WAAW57B,QAEpF,SAAApF,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO2zC,UAAUvoC,QAAQme,iBAIvDiP,GAAQhtB,KAAOnzB,EAAV,sEAAGmzB,CAAH,6MC1BHuB,GClGAA,aALgB,SAAC9oB,GAAD,MAAmB,CAC9CvB,QAASuB,EAAMY,QAAQnC,QACvBuU,sBAAuBhT,EAAM6U,oBAAoB7B,yBDqGtC8V,EArFU,SAAC,GAgBH,IAfnB/Y,EAekB,EAflBA,MACA3B,EAckB,EAdlBA,SACAsC,EAakB,EAblBA,OACAD,EAYkB,EAZlBA,MACAy1B,EAWkB,EAXlBA,KACAiG,EAUkB,EAVlBA,YACA0jB,EASkB,EATlBA,iBACAC,EAQkB,EARlBA,oBACAz+C,EAOkB,EAPlBA,WACAC,EAMkB,EANlBA,WACA7S,EAKkB,EALlBA,QACAiwD,EAIkB,EAJlBA,WACA17C,EAGkB,EAHlBA,sBACA7C,EAEkB,EAFlBA,QACAH,EACkB,EADlBA,IAEMslC,EAAM7jD,IAAM0sD,OAAsB,MAClC4R,EAAUt+D,IAAM0sD,OAA0B,MAG1C6R,EAAmB7R,kBAAO,GAChCz0B,qBAAU,WACFtb,GAAY2hD,EAAQxR,QACpByR,EAAiBzR,SAAU,GAEvByR,EAAiBzR,SAAWwR,EAAQxR,SACpCwR,EAAQxR,QAAQ+F,QAEpB0L,EAAiBzR,SAAU,KAEhC,CAACnwC,IAEJ,IAWMuhD,EAAkB,CACpBt+C,aACAC,cAGE2lC,EAAY,CACd,a9O+Ee,U8O9Ef,aAAcxmC,GAGlB,OACI,kBAAC,GAAD,CACI6kC,IAAKA,EACLlnC,SAAUA,EACVqc,QAtBY,SAACmE,GACjBud,EAAYvd,EAAO0mB,EAAK,CAAC/xC,KAAM,CAAC2iC,OAAMz1B,SAAQV,WAsB1Cy8B,aA1BiB,SAAC5d,GACtBihC,EAAiBjhC,EAAO0mB,EAAK,CAAC/xC,KAAM,CAAC2iC,OAAMz1B,SAAQV,WA0B/C4/C,gBAAiBA,EACjBplC,cAAaz2B,EAAkB,2BAAD,OAA4B2c,IAC1DyzB,UAAWwqB,EACXuB,aAAYlgD,EACZmgD,WAAUlgD,EACVmgD,eAAchgD,GAEd,qCACImlC,IAAKya,EACLtc,UA7BW,SAAC7kB,GACpBkhC,EAAoBlhC,EAAO0mB,EAAK,CAAC/xC,KAAM,CAAC2iC,OAAMz1B,SAAQV,WA6B9CxN,KAAI,UAAK9D,GAAL,OAAeiS,GACnBD,MAAOA,GACHwmC,EALR,CAMIzhD,GAAE,uBAAkBua,KAEpB,kBAAC,GAAD,CAAO3B,SAAUA,EAAUuhD,gBAAiBA,GAEvCl/C,EAAMtQ,eAEV6S,GAAyB,kBAAC,GAAD,W,UEvE3Bo9C,GApBgB,SAAC,GAAqD,IAApDrlC,EAAmD,EAAnDA,KAAMnP,EAA6C,EAA7CA,SAAUoP,EAAmC,EAAnCA,QACvCC,EAAe,CACjBC,WAAW,WAAD,OAAaF,EAAb,kBACVG,QAAS,GAGPC,EAAmB,CACrBC,SAAU,CAACF,QAAS,GACpBG,QAAS,CAACH,QAAS,GACnBI,QAAS,CAACJ,QAAS,GACnBK,OAAQ,CAACL,QAAS,IAGtB,OACI,kBAACM,GAAA,EAAD,CAAYC,GAAIX,EAAMC,QAASA,IAC1B,SAAAhrB,GAAK,OAAI,yBAAKzD,MAAK,2BAAM0uB,GAAiBG,EAAiBprB,KAAU4b,OCjBrE2Q,GAAYhF,KAAOO,IAAV,0EAAGP,CAAH,+EACL,gBAAE8oC,EAAF,EAAEA,gBAAF,wBAAkCA,EAAlC,WAEJ,gBAAE3lC,EAAF,EAAEA,MAAF,gBAAgBA,EAAhB,UCIE4lC,GAJC,SAAC,GAAD,IAAEv/C,EAAF,EAAEA,SAAUuoC,EAAZ,EAAYA,QAAZ,IAAqB+W,uBAArB,MAAuC,EAAvC,MAA0C3lC,aAA1C,MAAkD,MAAlD,SACZ,kBAAC,GAAD,CAAW2lC,gBAAiBA,EAAiB1lC,IAAK5Z,EAAU6Z,IAAK0uB,EAAS5uB,MAAOA,KCgBxE6lC,GAAWhpC,KAAOC,IAAV,0EAAGD,CAAH,gPAGR,qBAAEipC,QAAwB,OAAS,OAEvB,qBAAEC,KAAkB,SAAW,OACrC,SAAAv6C,GAAK,OAxBIu6C,EAwBmBv6C,EAAMu6C,KAxBVzC,EAwBgB93C,EAAM83C,cAvBzDyC,EACIzC,EACO,QAEJ,QAEJ,IAPgB,IAACyC,EAAezC,KAyBvB,SAAA93C,GAAK,OAfIu6C,EAeoBv6C,EAAMu6C,KAfXzC,EAeiB93C,EAAM83C,cAd3DyC,EAAa,IACbzC,EACO,QAEJ,QALiB,IAACyC,EAAezC,KAgB1B,SAAA93C,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWphB,GAAGyqD,WAEnC7qD,GAAYC,OAAOI,IACtB,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWnhB,GAAGwqD,YAInDnkC,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,icAOG,qBAAEopC,SAA0B,SAAW,OAW1C,SAAAz6C,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQzS,OAAOy6C,mBAAmBtoC,UAChDthB,GAAYC,OAAOI,IACtB,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQzS,OAAOy6C,mBAAmBmB,WCZlE9nC,GCtCAA,aARgB,SAAC9oB,GAE5B,MAAO,CACHzE,MAFUyE,EAAMY,QAAQ7L,QrPsBJ,gBqPnBpBmf,KAAM,CAAC28C,mBAAoB7wD,EAAMkU,KAAK48C,QAAQD,uBD0CvC/nC,EAhCC,SAAC,GAA8E,IAAD,IAA5EioC,aAA4E,SAA7Dnc,EAA6D,EAA7DA,UAAWzI,EAAkD,EAAlDA,YAAaphB,EAAqC,EAArCA,KAAM7W,EAA+B,EAA/BA,KAAM3Y,EAAyB,EAAzBA,MACjE,EAAgC4tB,oBAAS,GAAzC,oBAAO6nC,EAAP,KAAiBC,EAAjB,KACAvnC,qBAAU,WACNunC,GAAY,KACb,IACH,IAAMjD,EAAgBkD,KAEhBC,IADuB,SAAdvc,GAGf,OACI,kBAAC,GAAD,CAAiB7pB,KAAMA,EAAMC,QAAS,KAClC,kBAAC,GAAD,CAAW2lC,SAAUQ,IACfnD,GAAiBgD,GACf,kBAACI,GAAA,EAAD,CACIxkB,eAAa,EACbniB,QAAS0hB,EACT5hB,cAAA,mCAAyCqqB,GACzCrK,UAAW,GAEX,kBAAC,GAAD,CACIx5B,SAAU3E,GAAmB,mBAAoB7Q,GACjD+9C,QAASplC,EAAK28C,mBACdR,gBAAiBU,EAAQ,IAAM,KAI3C,kBAACR,GAAD,CAAUE,MAAM,EAAOD,QAASzlC,EAAMijC,cAAeA,SErCxDzhC,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,8FAUT8pC,GAAoB9pC,KAAOC,IAAV,mFAAGD,CAAH,iIAIjB,SAAArR,GAAK,OAAKA,EAAMo7C,QAAU,EAAI,WChBpC,SAASC,KACZ,IAAMC,EAA6B,GAC7BC,EAAoBltD,SAAS4hB,eAAe,yBAC5CurC,EAAiBntD,SAAS4hB,eAAe,kCACzCwrC,EAAgBF,EAAkB71C,SAExC,GAAIrX,SAASqtD,gBAAgBC,YAAc,KACvCH,EAAen1D,MAAMie,YAAY,YAAa,WADlD,CAOA,IAFA,IAAIs3C,EAAe,EAEV19D,EAAI,EAAGA,EAAIu9D,EAAcp9D,OAAQH,IAAK,CAC3C,IAAM29D,EAAQJ,EAAcv9D,GACtB8f,EAAO69C,EAAM3tC,YACb4tC,EAAaD,EAAM1uC,WAAW,GAAmBwuC,YAEjDI,EAAcH,EACdI,EAAYJ,EAAeE,EAE7BG,EAAeF,EAA0B,GAAZD,EAC7BI,EAAaF,EAAwB,GAAZF,EACzBG,GAAgBC,IAEhBD,EAAeF,EAAcD,EAAY,EACzCI,EAAaH,EAAcD,EAAY,GAG3CF,GAAgBE,EAEhBR,EAAsB1xC,KAAK,CACvBiyC,QACA79C,OACA89C,YACAC,cACAC,YACAC,eACAC,eAGRC,GAA4Bb,EAAuBE,IAGhD,SAASW,GAA4Bb,EAAuBC,GAM/D,IALA,IAAMa,EAAc/tD,SAAS4hB,eAAe,yBAAyB0rC,YACjEU,EAAY,EAIPn+D,EAAI,EAAGA,EAAIo9D,EAAsBj9D,OAAQH,IAAK,CACnD,IAAMknB,EAAOk2C,EAAsBp9D,GACnC,KAAIknB,EAAK42C,UAAYI,GAArB,CAgBA,GAAIA,EAAch3C,EAAK62C,aAEnB,GAAI/9D,EAAI,EAMJm+D,GAFmBD,EAFFd,EAAsBp9D,EAAI,GAEDg+D,aACrB,EAAJh+D,EAAQ,QAIzBm+D,EAAY,OAMhBA,EAJOD,EAAch3C,EAAK82C,YAEPE,EAAch3C,EAAK82C,aACjB,EAAJh+D,EAAQ,GAIb,EAGhB,MAnCI,GAAIA,IAAMo9D,EAAsBj9D,OAAS,EAAG,CAGxCg+D,GAFmBD,EAAch3C,EAAK42C,YACU,EAA/BV,EAAsBj9D,QAEvC,OAkCM,IAAdg+D,IAEAA,GAAwB,GAExBA,EAAYC,SAAS,GAAiB,GAAZD,GAAkB,IAIhDd,EAAkBl1D,MAAMie,YAAY,YAAa+3C,EAAUtK,QAAQ,GAAG7sC,WAAa,MACnF7W,SAAS4hB,eAAe,kCAAkC5pB,MAAMie,YAAY,wBAAyB,KAmBlG,ICZQi4C,GAtGW,SAAC,GAAmE,IAAlEhF,EAAiE,EAAjEA,IAAKiF,EAA4D,EAA5DA,cAAe92C,EAA6C,EAA7CA,SAAUw5B,EAAmC,EAAnCA,aACtD,EAA4CjsB,oBAAS,GAArD,oBAAOwpC,EAAP,KAAuBC,EAAvB,KACA,EAA0CzpC,oBAAS,GAAnD,oBAAO0pC,EAAP,KAAsBC,EAAtB,KACM9E,EAAgBkD,KAChB6B,EAAuBC,uBAAY,WACrC,GAAIN,EAAe,CAEf,IAAMjB,EAAoBiB,EAAcnU,QAElC0U,EAAmB1xC,KAAK2xC,IAAIzB,EAAkB0B,YAG9CA,EAAaF,EAAmB,EAAI,EAGpCG,EACF3B,EAAkB4B,aAAeJ,EAAmBxB,EAAkBI,aAAe,EAAI,EAE7Fe,EAAkBQ,GAClBN,EAAiBK,MAEtB,CAACT,IAEJhpC,qBAAU,WACN,GAAKipC,GAAmB3E,EAAxB,CAIA,IAAIsF,EACEC,EAAmB,WACrB/uB,aAAa8uB,GACbA,EAAc/uB,YAAW,WACrBgtB,OACD,KAKP,OAFAlvD,OAAO+1C,iBAAiB,SAAUmb,GAE3B,WACHlxD,OAAOg2C,oBAAoB,SAAUkb,OAE1C,CAACZ,EAAgB3E,IAEpBtkC,qBAAU,WAIN,OAHAqpC,IACA1wD,OAAO+1C,iBAAiB,SAAU2a,GAE3B,WACH1wD,OAAOg2C,oBAAoB,SAAU0a,MAE1C,CAACA,IAEJ,IAIMS,EAAqB,SAAC5e,GAExB,IAAM6c,EAAoBiB,EAAcnU,QAGlCkV,EAD8BhC,EAAkBiC,wBAA/ChpC,MAC+C,EAEpC,UAAdkqB,EAGA6c,EAAkB0B,YAAcM,EAEhChC,EAAkB0B,YAAcM,GAIlC1C,EAAgB,QAARtD,EACRkG,EAAiB5C,EAAQ,OAAS,QAClC6C,EAAgB7C,EAAQ,QAAU,OAUxC,OACI,kBAAC,GAAD,CACI8B,cAAeA,EACfF,eAAgBA,EAChBkB,SApCa,WACjBd,KAoCI3d,aAAcA,GAEd,kBAACic,GAAD,CAAmBC,SAAS,GACxB,kBAAC,GAAD,CAASvmC,KAAM8nC,EAAe9B,MAAOA,EAAOnc,UAAU,OAAOzI,YAZjD,WACpBqnB,EAAmBI,OAadh4C,EACD,kBAACy1C,GAAD,CAAmBC,SAAO,GACtB,kBAAC,GAAD,CAASvmC,KAAM4nC,EAAgB5B,MAAOA,EAAOnc,UAAU,QAAQzI,YApBlD,WACrBqnB,EAAmBG,SCvFdG,GAAmB,SAC5BllC,EACAmlC,EACAC,GAEA,MAAoED,EAAeL,wBAArEO,EAAd,EAAO9L,MAA0B+L,EAAjC,EAA2BC,KAAyBC,EAApD,EAA6C1pC,MACvC2pC,EAAiBzlC,EAAM0lC,QACvBC,EAAYlyD,OAAOkE,WAAaytD,GAAgBxtD,KzP0IhC,GyP1I8E,GAG9FguD,EAAWP,EAAcC,EACzBnG,EAF0BsG,EAAiBE,GADfN,EAAcI,IAGqC,UAAfzlC,EAAMzxB,KAAmB,EAAIq3D,EAAW,GAE9G,OAAIP,GAAeM,GAAmC,IAAtBhzC,KAAKkzC,KAAK1G,IAItCmG,EzPiIqB,GyPjIO1tD,KAAiCkuD,GAAiC,KACvE,IAAvBnzC,KAAKkzC,KAAK1G,GAJH,GAQgB,IAAvBxsC,KAAKkzC,KAAK1G,IACFqG,EAELrG,GC1BE4G,GAAgB,SAACzuB,EAAc/zB,EAActD,GAClDA,IACAynB,eAAeC,Q1PgKoB,yB0PhKiBuxB,KAAKxtB,UAAU,CAAC4L,OAAM/zB,UAE1EykB,aAAaL,Q1P8JsB,yB0P9JeuxB,KAAKxtB,UAAU,CAAC4L,OAAM/zB,YC0B5EqxC,GAAmC,EACjCoR,GAAoB,kBAAMpwB,aAAagf,KAoK9B16B,OAlKW,SAAC,GAOH,IAOhB+rC,EAbJpH,EAMmB,EANnBA,IACAp+C,EAKmB,EALnBA,MACAggD,EAImB,EAJnBA,cACA18C,EAGmB,EAHnBA,sBACAE,EAEmB,EAFnBA,kBACAhE,EACmB,EADnBA,2BAEA,EAA8Dsa,oBAAS,GAAvE,oBAAO2rC,EAAP,KAAgCC,EAAhC,KACA,EAA4B5rC,oBAAS,GAArC,oBAAOqmC,EAAP,KAAewF,EAAf,KACMhH,EAAgBkD,KAChB+D,EAAejH,EAAgB,E3PmGG,I2PjGlC0E,EAAgBjhE,IAAM0sD,OAAyB,MAGrDz0B,qBAAU,WACNsrC,GAAU,KACX,IAEH,IAAMxhB,EAAQ,WACV6b,GAAe,EAAG,CAAC5+C,MAAO,GAAIy1B,KAAM,MASlCgvB,EAA2BzjE,IAAMuhE,YAAYc,GAAkB,IAW/DqB,EAAiB,SAACC,EAA+BhxB,GACnDwwB,KACApR,GAAUjf,YAAW,WACjB6wB,IACAR,OACDxwB,IAGDixB,EAAyB,SAACtsD,EAAY6lB,GAExC,OADAA,EAAM0mC,UACC,WACH,IAAOvlD,EAAehH,EAAfgH,MAAOxM,EAAQwF,EAARxF,KACRwwD,EAAiBc,EAA4BtW,QACnD8Q,EAAct/C,EAAOxM,GAtBZ,SAACqrB,EAAsCmlC,GACpDgB,GAA2B,GAC3B,IAAMQ,EAAeL,EAAyBtmC,EAAOmlC,E3P+EnC,I2P9EQrB,EAAcnU,QACtB4U,YAAcoC,EAEhCJ,GAAe,kBAAMJ,GAA2B,K3PyEN,K2PxDtCS,CAAS5mC,EAAOmlC,KAIlB5nB,EAAc,SAChBvd,EACA0mB,EACAvsC,GAGA,GADA8rD,EAA8Bvf,EAC1BhvC,MAA8B0nD,EAC9Bp/B,EAAMib,iBACF9gC,EAAKgH,QAAU4C,EACf6gC,KAEAhV,KACA3rB,GAAkB,GAClBwiD,EAAuBtsD,EAAM6lB,EAA7BymC,SAED,GAAItsD,EAAKgH,QAAU4C,EACtBikB,aAAaJ,W3PFI,gB2PGjBm+B,GAAc5rD,EAAKxF,KAAK2iC,KAAMn9B,EAAKxF,KAAKkN,MAAMtQ,cAAe0O,OAC1D,CACHgmD,EAA8Bvf,EAC9BziC,GAAkB,GAClB+b,EAAMib,iBACN,IAAO95B,EAAehH,EAAfgH,MAAOxM,EAAQwF,EAARxF,KACd8rD,EAAct/C,EAAOxM,GACrBi7B,OAIRtI,GAAyBsd,GAEzB,IAAMqc,EAAmB,SACrBjhC,EACA0mB,EACAvsC,GAIA,GAFA8rD,EAA8Bvf,EAE1B9uC,KAAgC,CAChC,IAAMivD,EAAyBJ,EAAuBtsD,EAAM6lB,GAC5DumC,EAAeM,EAAwBR,GACvCpiD,GAAkB,GAClB2rB,OAIFsxB,EAAsB,SACxBlhC,EACA0mB,EACAvsC,GAEA,GAAkB,UAAd6lB,EAAMnZ,KAINjP,MACIuC,EAAKgH,QAAU4C,EAAuB,CACtCkiD,EAA8Bvf,EAE9BziC,GAAkB,GAClB+b,EAAMib,iBACN,IAAO95B,EAAehH,EAAfgH,MAAOxM,EAAQwF,EAARxF,KACd8rD,EAAct/C,EAAOxM,GACrBi7B,OASZ,OACI,kBAAC,GAAD,CAAYivB,IAAKA,EAAKiF,cAAeA,EAAetd,aAL/B,SAACsgB,GACtBd,KACA/hD,GAAkB,KAId,kBAAC,GAAD,CACIyiC,IAAKod,EACLmB,SA9GK,WACRiB,GACDthB,KA6GIjpB,cAAY,wBACZ/0B,GAAG,wBACHg6D,OAAQA,GAEPngD,EAAMnS,KAAI,WAA0E6S,GAAW,IAAnFW,EAAkF,EAAlFA,OAAQD,EAA0E,EAA1EA,MAAOy1B,EAAmE,EAAnEA,KAAM70B,EAA6D,EAA7DA,WAAYC,EAAiD,EAAjDA,WAAYo9C,EAAqC,EAArCA,WAAYv+C,EAAyB,EAAzBA,QAASH,EAAgB,EAAhBA,IACrEkG,EAAQ,CACVnG,QACA3B,SAAUuE,IAA0B5C,EACpCW,SACAD,QACAy1B,OACAiG,cACA0jB,mBACAC,sBACAz+C,aACAC,aACAo9C,aACAv+C,UACAH,OAEJ,OAAO,kBAAC,GAAD,eAAWyF,IAAKhF,GAAWyF,YC3LzCqW,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,kSAGJ,SAAArR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQzS,OAAOy6C,mBAAmBtoC,WAEvD,SAAAjR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQzS,OAAOy6C,mBAAmBzvB,UACpD,SAAA9pB,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQzS,OAAOy6C,mBAAmBzvB,UAC9D,SAAA9pB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWF,QAAQC,SACpCvhB,GAAYC,OAAOG,IAC1B,SAAAiQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOsL,WAAWphB,GAAGmhB,SAEnCvhB,GAAYC,OAAOI,IACtB,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQzS,OAAOy6C,mBAAmBmB,WAGhE+E,GAAoBpuC,KAAOC,IAAV,mFAAGD,CAAH,gKAEb1hB,GAAYC,OAAOK,GAIXN,GAAYC,OAAOI,IACtB,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQzS,OAAOy6C,mBAAmBmB,WCR9D9nC,GCHAA,YAAQ,KAAM,MAXH,SAAC9oB,EAAD,EAA8ByoC,GAA9B,IAAc/nC,EAAd,EAAcA,SAAd,mBAAC,2BACpBV,GACAyoC,GAFmB,IAGtBmtB,SAAU,SAACjxD,GAC4B,IAA/BA,EAAE2zC,cAAc6a,aAChBzyD,EAASoS,IAAoB,EAAG,KAChCpS,EAASmS,IAAkB,UDQxBiW,EARW,SAAC,GAAD,IAAE8sC,EAAF,EAAEA,SAAF,OACtB,kBAAC,GAAD,CAAWrrC,cAAY,mBACnB,kBAACorC,GAAD,CAAmB9B,SAAU+B,GACzB,kBAAC,GAAD,WEqBG9sC,gBA1BgB,SAAC9oB,GAC5B,IAAO4S,EAAkB5S,EAAMsU,WAAxB1B,eACAf,EAAoB7R,EAAMkS,aAA1BL,iBACDovB,EAAOjhC,EAAMsU,WAAW5B,OAC1Bo4B,EAAiB,OAKrB,OAJmB9qC,EAAMsU,WAAW3B,uBAAyB3S,EAAMsU,WAAWjF,MAAM9a,OAAS,IAEzFu2C,EAAS,SAEN,CACHA,SACA7J,OACApvB,mBACAe,qBAI0B,SAAAlS,GAC9B,MAAO,CACHm1D,gBAAiB,WACbn1D,EAASoS,IAAoB,EAAG,KAChCpS,EAASqR,IAAwB,IACjCrR,EAASmS,IAAkB,SCd1B43B,GAAkBljB,aAAOmjB,MAAV,iFAAGnjB,CAAH,8TAkBfsjB,GAAYtjB,KAAOO,IAAV,2EAAGP,CAAH,sHC1BPuB,gBAJgB,SAAC9oB,GAAD,MAAmB,CAC9CkU,KAAM,CAAC4hD,kBAAmB91D,EAAMkU,KAAK6hD,mBAAmBD,uBCQtD/qB,GAAa,CACfjK,aAAa,EACbJ,qBAAqB,EACrBC,kBAAkB,EAClBC,qBAAqB,EACrBU,sBAAsB,EACtBT,eAAe,GAkBJ/X,OAfY,SAAC,GAAD,IAAEgiB,EAAF,EAAEA,OAAQ7J,EAAV,EAAUA,KAAMI,EAAhB,EAAgBA,QAAhB,IAAyB20B,qBAAzB,SAA+Cp6C,EAA/C,EAA+CA,SAAU1H,EAAzD,EAAyDA,KAAzD,OACvB,kBAAC,GAAD,CACIqW,cAAY,SACZ2Z,UAAU,SACV4G,OAAQA,EACR7J,KAAMA,EACNI,QAASA,EACT40B,mBAAoB,EACpBhrB,WAAYF,IAEXirB,GAAiB,kBAAC,GAAD,CAAWprC,IAAK1W,EAAK4hD,kBAAmBnrC,IAAG,UAAK4d,GAAKR,iBAAmBtd,QAAS4W,IAClGzlB,MCjBI2Q,GAAYhF,aAAOyZ,MAAV,2EAAGzZ,CAAH,gbCLhB2uC,GAA2B,CAC7Bx1B,qBAAqB,EACrBC,kBAAkB,EAClBC,qBAAqB,EACrBC,eAAe,EACfC,aAAa,EACbQ,sBAAsB,EACtBP,mBAAmB,EACnBo1B,sBAAsB,GAGtB3S,GAAmC,EA0BxB4S,GAxBa,SAAC,GAAiD,IAAhDn1B,EAA+C,EAA/CA,KAAMrlB,EAAyC,EAAzCA,SAAUslB,EAA+B,EAA/BA,YAC1C,EAA+B/X,oBAAS,GAAxC,oBAAOktC,EAAP,KAAoBle,EAApB,KASA,OARAzuB,qBAAU,WAEN,OADA85B,GAAUjf,YAAW,kBAAM4T,EAAQlX,KpQuHC,KoQtH7B,WACHC,IACAsD,aAAagf,OAElB,CAACviB,EAAMC,IAGN,kBAAC,GAAD,iBACQg1B,GADR,CAEI3rC,cAAY,UACZ0W,KAAMo1B,EACN90B,kBAAmBC,KACnBC,cAAe,CAACzW,QpQyGG,GoQxGnBqW,QAASH,IAET,oCAAGtlB,KCvCF2Q,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,0JAEJ,SAAArR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQ2Y,QAAQC,MAAMzT,WAAWH,UAC/C5mB,GAAYC,OAAOI,IAEtB,SAAAgQ,GAAK,4BAAmBA,EAAM4Q,MAAM/K,OAAOsL,WAAWthB,GAAGqhB,OAApD,QAIdyjC,GAAiBtjC,KAAOC,IAAV,gFAAGD,CAAH,yECTdgF,GAAYhF,KAAOkb,IAAV,2EAAGlb,CAAH,0YAIL1hB,GAAYC,OAAOK,IACrB,SAAA+P,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOvL,aAAa+b,UAAUxmB,GAAG28B,UAC5C78B,GAAYC,OAAOG,GAGnBJ,GAAYC,OAAOI,IAIzB,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOvL,aAAa+b,UAAUrmB,GAAGw8B,UAEhD78B,GAAYC,OAAOK,IACzB,SAAA+P,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOvL,aAAa+b,UAAUpmB,GAAGu8B,WAI5D4zB,GAAsB/uC,KAAOC,IAAV,qFAAGD,CAAH,wQAGP1hB,GAAYC,OAAOG,GAGnBJ,GAAYC,OAAOI,IAY/BqwD,GAAqBhvC,KAAOivC,QAAV,oFAAGjvC,CAAH,uYAIT,qBAAEkvC,YAAgC,EAAI,UACvC,qBAAEC,UAA4B,OAAS,IAMnC7wD,GAAYC,OAAOG,IACzB,SAAAiQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOvL,aAAa+lD,mBAAmBtwD,GAAGy8B,UAOzD78B,GAAYC,OAAOI,IAK/BywD,GAAoBpvC,KAAOivC,QAAV,mFAAGjvC,CAAH,8PAEL1hB,GAAYC,OAAOG,GAKnBJ,GAAYC,OAAOI,IAK/B0wD,GAAgCrvC,KAAOC,IAAV,+FAAGD,CAAH,0ZASjB1hB,GAAYC,OAAOG,IAClB,SAAAiQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOvL,aAAaomD,8BAA8B3wD,GAAGusC,gBAI3E3sC,GAAYC,OAAOI,ICjB7B4iB,gBAnEgB,SAAC9oB,EAAD,GAA4D,IAA5CyuD,EAA2C,EAA3CA,aAE3C,EAAkEzuD,EAAMsU,WAAjE7B,EAAP,EAAOA,iBAAkBG,EAAzB,EAAyBA,eAAgBD,EAAzC,EAAyCA,sBACzC,EAAgC3S,EAAMkS,aAA/BP,EAAP,EAAOA,WAAYC,EAAnB,EAAmBA,UACbilD,EAAkBpI,GAElBzuD,EAAM2U,aAAalC,IALI,EAO7B,EAA+Bd,GAAcA,EAAWc,IAAsB,CAC1EpD,MAAO,GACPwB,OAAQ,MAFEimD,EAAd,EAAOznD,MAAawB,EAApB,EAAoBA,OAKdkmD,EAAuBD,EAAKv1D,OAAOitD,GAAoBC,IACvDuI,EAAmBD,EAAqBx1D,QAAO,SAAAgC,GAAI,OAAIA,EAAKkN,SAAOvT,KAAI,SAAAqG,GAAI,OAAIA,EAAKkN,MAAMtQ,iBAE1F82D,EAAYF,EAAqBF,GAEjC5lD,EACFgmD,GAAaA,EAAUhmD,SAAvB,2BACUgmD,EAAUhmD,UADpB,IAC8B5B,MAAO4nD,EAAUhmD,SAAS5B,MAAM9N,OAAOitD,GAAoBC,MACnF,KAEJgI,EACDxlD,GAAYtf,OAAOwvB,KAAKlQ,GAAU1c,OAAS,GAAKi6D,GAAoBC,EAApBD,CAAkCv9C,KAAc,EAE/FimD,EAAmBF,EAAOziE,OAAS,EAKzC,MAAO,CACHkiE,cACAC,UANe7lD,GAAUlf,OAAOwvB,KAAKtQ,GAAQtc,OAAS,IAAM,EAO5D2iE,UACAF,SACAH,iBACAlkD,wBACAwkD,QAVaF,G7BrBqB,SAACxI,EAAuB0I,GAAxB,OACtCA,EACMA,EAAQ51D,OAAOitD,GAAoBC,IAAevxD,KAAI,SAAAk6D,GAAM,kCACrDA,GADqD,IAExD/nD,MAAO+nD,EAAO/nD,MAAM9N,OAAOitD,GAAoBC,IAAevxD,KAAI,SAAAm6D,GAAQ,kCACnEA,GADmE,IAEtEhoD,MAAOgoD,EAAShoD,MAAM9N,OAAOitD,GAAoBC,cAGzD,G6BYwB6I,CAA2B7I,EAAcwI,EAAU5nD,QAAW,GAWxFH,WAAYuD,EACZ8kD,IAXSL,GAAWF,EAAOH,IAAoB,KAY/CjlD,YACAgB,iBACA3B,eAI0B,SAAAvQ,GAC9B,MAAO,CACH82D,YAAa,SAACjtB,GACV7pC,E9N5CgB,SAAC6pC,GAAD,OAAsB,SAAC7pC,EAAUC,GACzD,IAAMuO,EAAavO,IAAW2T,WAAW7B,iBAEzC/R,EAAS,CAACvD,KAhBY,aAgBM2C,QADf,gBAAKoP,EAAaq7B,M8N0CdktB,CAAaltB,KAE1BmtB,4BAA6B,WACzBh3D,EAASqR,IAAwB,KAErC4lD,6BAA8B,WAC1Bj3D,EAASqR,IAAwB,KAErC6lD,kBAAmB,WACfl3D,GhOsBD,SAACA,EAAUC,GACd,IAAMX,EAAQW,IAEd,GAAIX,EAAMsU,WAAW3B,sBAAwB,GAAK3S,EAAMsU,WAAWjF,MAAM9a,OACrEwe,GAAkBrS,OADtB,CAIA,IAAMm3D,EAAiB73D,EAAMsU,WAAWjF,MAAMrP,EAAMsU,WAAW3B,sBAAwB,GAEvFjS,EAASoS,GAAmB9S,EAAMsU,WAAW3B,sBAAwB,EAAGklD,EAAepnD,QACvF/P,EAASuR,GAAyB4lD,EAAe3xB,YgO9BjD4xB,sBAAuB,WACnBp3D,GhOkCD,SAACA,EAAUC,GACd,IAAMX,EAAQW,IAEd,GAA+C,IAA3CX,EAAMsU,WAAW3B,sBAArB,CAIA,IAAMklD,EAAiB73D,EAAMsU,WAAWjF,MAAMrP,EAAMsU,WAAW3B,sBAAwB,GAEvFjS,EAASoS,GAAmB9S,EAAMsU,WAAW3B,sBAAwB,EAAGklD,EAAepnD,QACvF/P,EAASuR,GAAyB4lD,EAAe3xB,YAN7CnzB,GAAkBrS,WiOlGjB6rB,GAAYhF,KAAOkkB,GAAV,yEAAGlkB,CAAH,kuBASD,gBAAEwwC,EAAF,EAAEA,aAAsBh8C,EAAxB,EAAgB+K,MAAQ/K,OAAxB,OACTg8C,EAAeh8C,EAAOi8C,WAAW7wC,QAAQoe,SAAWxpB,EAAOk8C,YAAY9wC,QAAQoe,YACpE,SAAArvB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOk8C,YAAY9wC,QAAQ2jC,cAC7C,SAAA50C,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOk8C,YAAY9wC,QAAQme,iBAEzD,gBAAExe,EAAF,EAAEA,MAAF,SAASzV,YAA8ByV,EAAMW,QAAQvT,KAAKiT,WACpD,gBAAEL,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKC,UAAUglB,QAAQ9kB,OAArD,aAAgExB,EAAMW,QAAQU,KAAKhB,YACnF,gBAAEL,EAAF,EAAEA,MAAOxV,EAAT,EAASA,WAAYymD,EAArB,EAAqBA,aAArB,OACXzmD,IACCymD,EAAejxC,EAAM/K,OAAOi8C,WAAW7wC,QAAQ7V,WAAawV,EAAM/K,OAAOk8C,YAAY9wC,QAAQ7V,cAE7EzL,GAAYC,OAAOI,IACvB,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOk8C,YAAY/xD,GAAGq/B,YACzC,gBAAEze,EAAF,EAAEA,MAAF,SAASxV,YAA8BwV,EAAM/K,OAAOk8C,YAAY/xD,GAAGoL,aAQrEzL,GAAYC,OAAOC,IAEnB,SAAAmQ,GAAK,OAAIA,EAAM6hD,cAAgB,IAG/BlyD,GAAYC,OAAOE,IAC3B,qBAAE+xD,aAAkC,OAAS,QAGrClyD,GAAYC,OAAOI,IAIzB,qBAAE4gB,MAAiB/K,OAAOk8C,YAAY/xD,GAAGw8B,SAAW,OAI1Dw1B,GAAW3wC,KAAOnS,EAAV,wEAAGmS,CAAH,kDACR,qBAAEwwC,aAAkC,OAAS,UAG7CI,GAAiB5wC,KAAOS,KAAV,8EAAGT,CAAH,4NAGb,qBAAEwwC,aAAkC,OAAS,YAEzC,qBAAEK,eAAsC,MAAQ,OAK5C,SAAAliD,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO2zC,UAAU3pD,GAAGmqC,gBAHtCrqC,GAAYC,OAAOI,IAM/BktC,GAAgB7rB,KAAOC,IAAV,6EAAGD,CAAH,8EAMb8wC,GAAyB9wC,KAAOC,IAAV,sFAAGD,CAAH,wEC7EtBgF,GAAYhF,KAAOC,IAAV,0EAAGD,CAAH,uFAMT+wC,GAAmB/wC,KAAOO,IAAV,iFAAGP,CAAH,2MCkCdgxC,GA3Bc,SAAC,GAA+B,IAA9BnnD,EAA6B,EAA7BA,MAAO7V,EAAsB,EAAtBA,MAC5Bi9D,EAAiB,OAALpnD,QAAK,IAALA,KAAO7c,QAAU6c,EAAM,IAAMA,EAAM,GAAG1S,IAAInK,OAAS6c,EAAM,GAAG1S,SAAMgJ,EAC9E+wD,EAAiB,OAALrnD,QAAK,IAALA,KAAO7c,QAAU6c,EAAM,IAAMA,EAAM,GAAG1S,IAAInK,OAA1C,UAAsD6c,EAAM,GAAG1S,IAA/D,YAA0EgJ,EACtFgxD,EAAiB,OAALtnD,QAAK,IAALA,KAAO7c,QAAU6c,EAAM,IAAMA,EAAM,GAAG1S,IAAInK,OAA1C,YAAwD6c,EAAM,GAAG1S,IAAjE,YAA4EgJ,EAW9F,OACI,kBAAC,GAAD,KACI,kBAAC4wD,GAAD,CACI3tC,IAAK6tC,GAAS,UAAOpsD,G1Q8HI,oB0Q9H0C7Q,IACnEo9D,OAAM,UAAKF,GAAa,IAAlB,OAAuBC,GAAa,IAC1C9tC,IAAI,GACJL,cAAA,mDAAyDiuC,EAAY,OAAS,eAC9EI,QAhBgB,SAACj0D,GACzBA,EAAE2zC,cAAcugB,QAAU,KAC1Bl0D,EAAE2zC,cAAc3tB,IAAhB,UAAyBve,G1QwIQ,oB0QxIsC7Q,IACvEoJ,EAAE2zC,cAAcwgB,OAAhB,UAA4B1sD,G1QwIQ,uB0QxIyC7Q,GAA7E,gBAA2F6Q,G1QyIvD,uB0QvIhC7Q,GAFJ,YCXOutB,gBARgB,SAAC9oB,GAAD,MAAmB,CAC9CiL,cAAejL,EAAMiL,cACrBiJ,KAAM,CAAC28C,mBAAoB7wD,EAAMkU,KAAK6kD,cAAclI,oBACpDpyD,QAASuB,EAAMY,QAAQnC,QACvBlD,MAAOyE,EAAMY,QAAQ7L,Q3QmBG,gB2QlBxB8Z,2BAA4B7O,EAAMqU,SAASxF,+BCPlC+rC,GAAQrzB,KAAOO,IAAV,uEAAGP,CAAH,gECUHyxC,GAJG,SAAC,GAAsC,IAArCC,EAAoC,EAApCA,QAASxoD,EAA2B,EAA3BA,MACzB,OAAO,kBAAC,GAAD,CAAOka,IAAKsuC,EAASruC,IAAG,UAAKna,EAAL,wBC+FpBqY,OAjEc,SAAC,GAkBH,IAjBvBpY,EAiBsB,EAjBtBA,OACAD,EAgBsB,EAhBtBA,MACAY,EAesB,EAftBA,WACAC,EAcsB,EAdtBA,WACA4nD,EAasB,EAbtBA,mBACAhqD,EAYsB,EAZtBA,WACAqoD,EAWsB,EAXtBA,IACAtsD,EAUsB,EAVtBA,cACAkuD,EASsB,EATtBA,gBACA/nD,EAQsB,EARtBA,MACA8C,EAOsB,EAPtBA,KACAklD,EAMsB,EANtBA,YACA36D,EAKsB,EALtBA,QACA46D,EAIsB,EAJtBA,cACA99D,EAGsB,EAHtBA,MACAsT,EAEsB,EAFtBA,2BACAupD,EACsB,EADtBA,eAEML,GAAgBmB,GAAsC,IAAhBE,EACtCE,EAAWD,GAAiBtB,EAC5BpI,EAAkB,CACpBt+C,aACAC,aACAymD,gBAGJ,OACI,kBAAC,GAAD,iBACQpI,EADR,CAEIllC,QAAS,kBApCL,SAAC/Z,EAAQxB,EAAYzQ,EAASoQ,GAC1C+nB,aAAaJ,W9Q0EY,gB8QzEzB,IAAM0P,EAAOiL,GAAsBzgC,EAAQjS,GAC3Ck2D,GAAczuB,EAAMh3B,EAAYL,GAiCT4b,CAAQ/Z,EAAQxB,EAAYzQ,EAASoQ,MAEpD,kBAACqpD,GAAD,CACI31D,KAAM4uC,GAAsBzgC,EAAQjS,GACpCgS,MAAOA,EACPsnD,aAAcA,EACd1tB,aAAYn7B,EACZg8B,aAAYqsB,GAAO2B,EACnB5uB,aAAY75B,EACZ8Z,cAAY,sBAEZ,kBAAC8tC,GAAD,KACKiB,GAAY,kBAAC,GAAD,CAAeloD,MAAOA,EAAO7V,MAAOA,IACjD,kBAAC48D,GAAD,CAAgBJ,aAAcA,EAAcK,eAAgBA,GACvD3nD,GAEJ0oD,GAAmB,kBAAC,GAAD,CAAW1oD,MAAOA,EAAOwoD,QAASE,MAG7DpB,GACG,kBAAC1qB,GAAA,EAAD,CAAQkL,MAAI,EAAChL,eAAe,MACxB,kBAAC,GAAD,KACI,kBAAC,GAAD,CACIx8B,SAAUw3B,GAAKP,aACfsR,QAASplC,EAAK28C,mBACdnmC,MAAO,IACP2lC,gB9QmET,Q8QnE0BplD,GAAyB,GAAK,W,8BCrF9DsuD,GAAYhyC,aAAOiyC,MAAV,0EAAGjyC,CAAH,2HAIR,SAAArR,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOw9C,UAAUpyC,QAAQ6Y,UAG/Cy5B,GAAwBlyC,aAAOmyC,MAAV,sFAAGnyC,CAAH,yDAKrBoyC,GAAwBpyC,aAAOqyC,MAAV,sFAAGryC,CAAH,wVAEZ,SAAArR,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOw9C,UAAUpyC,QAAQyF,aACvC/mB,GAAYC,OAAOG,IAkBnConC,GAAS9lB,aAAOsyC,MAAV,uEAAGtyC,CAAH,mDAINgF,GAAYhF,KAAOC,IAAV,0EAAGD,CAAH,+KAKG1hB,GAAYC,OAAOI,IAI/B6hB,GAAQR,KAAOC,IAAV,sEAAGD,CAAH,ghBACJ,SAAArR,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOw9C,UAAUpyC,QAAQC,UAOtC,SAAAlR,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOvL,aAAauX,MAAMhiB,GAAGu/B,iBAE3D,gBAAExe,EAAF,EAAEA,MAAF,SAASzV,YAA8ByV,EAAMW,QAAQvT,KAAKiT,WACpD,gBAAEL,EAAF,EAAEA,MAAF,gBAAgBA,EAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAAlD,aAA6DxB,EAAMW,QAAQU,KAAKhB,YAChF,gBAAEL,EAAF,EAAEA,MAAF,SAASxV,YAA8BwV,EAAM/K,OAAOvL,aAAauX,MAAM9hB,GAAGqL,cAC5E,SAAA4E,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOvL,aAAauX,MAAMhiB,GAAGw/B,WAE1C1/B,GAAYC,OAAOG,GAAK,GAC/B,SAAAiQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOw9C,UAAUxzD,GAAGqhB,SAElCvhB,GAAYC,OAAOG,GAGnBJ,GAAYC,OAAOI,IAGvB,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAOvL,aAAauX,MAAM7hB,GAAGq/B,YAChD,gBAAEze,EAAF,EAAEA,MAAF,SAASxV,YAA8BwV,EAAM/K,OAAOvL,aAAauX,MAAM7hB,GAAGoL,cAC/E,qBAAE8mD,eAAsC,gBAAkB,uBAS/D5nB,GAAOjpB,KAAOokB,GAAV,qEAAGpkB,CAAH,+bAKI,SAAArR,GAAK,OAAKA,EAAM6hD,aAAe,EAAI,YAK/BlyD,GAAYC,OAAOG,GAGnBJ,GAAYC,OAAOI,GAKnBL,GAAYC,OAAOI,GAAK,GAC/B,gBAAE4gB,EAAF,EAAEA,MAAF,SAASixC,aAAkCjxC,EAAM/K,OAAOi8C,WAAWjyD,GAAGqhB,OAAS,aCpFlF0B,gBArBgB,SAAC9oB,EAAckW,GAC1C,IAAMhH,EAAalP,EAAMsU,WAAW7B,iBAC9BgD,EAAG,UAAMvG,EAAN,YAAoBgH,EAAMzF,OAC5BqB,EAA6B9R,EAAMkS,aAAnCJ,0BACDvW,EAAQyE,EAAMY,QAAQ7L,QhRkBJ,gBgRjBxB,MAAO,CACH+c,4BACAgoD,OAAQ95D,EAAMyU,kBAAkBgB,KAAQ,EACxCvB,KAAM,CAAC28C,mBAAoB7wD,EAAMkU,KAAK6lD,cAAclJ,oBACpDt1D,YAI0B,SAAAmF,GAC9B,MAAO,CACHs5D,UAAW,SAACvpD,GACR/P,ExORe,SAAC+P,GAAD,OAA0B,SAAC/P,EAAUC,GAC5D,IAAMuO,EAAavO,IAAW2T,WAAW7B,iBACnCgD,EAAG,UAAMvG,EAAN,YAAoBuB,GACvBwpD,EAAkBt5D,IAAW8T,kBAAkBgB,KAAQ,EAE7D/U,EAAS,CAACvD,KAlBY,aAkBM2C,QADf,gBAAK2V,GAAOwkD,MwOIRC,CAAYzpD,SCCpB0pD,GAAqB,SAAC,GAOH,IAN5B1pD,EAM2B,EAN3BA,MACAW,EAK2B,EAL3BA,MACAioD,EAI2B,EAJ3BA,cACAe,EAG2B,EAH3BA,yBACAhC,EAE2B,EAF3BA,eACA78D,EAC2B,EAD3BA,MAEA,OAAKkV,EAED,kBAAC,GAAD,iBAAW2pD,EAAX,CAAqChC,eAAgBA,IAChDiB,GAAiB,kBAAC,GAAD,CAAejoD,MAAOA,EAAO7V,MAAOA,IAD1D,IACqE,kCAAQkV,EAAR,MAHtD,MAmBV4pD,GAAuB,SAAC,GASH,IAR9BhrD,EAQ6B,EAR7BA,MACA6pD,EAO6B,EAP7BA,mBACAhqD,EAM6B,EAN7BA,WACAqoD,EAK6B,EAL7BA,IACA6B,EAI6B,EAJ7BA,YACAC,EAG6B,EAH7BA,cACAjoD,EAE6B,EAF7BA,MACAkpD,EAC6B,EAD7BA,eAEMvC,GAAgBmB,GAAsC,IAAhBE,EAE5C,OACI,kBAAC,GAAD,CAAM7uC,cAAY,kBAAkBwtC,aAAcA,GAC7C1oD,EAAMnS,KAAI,WAAiE6S,GAAW,IAA1EU,EAAyE,EAAzEA,MAAOC,EAAkE,EAAlEA,OAAQW,EAA0D,EAA1DA,WAAYC,EAA8C,EAA9CA,WAAkB6nD,EAA4B,EAAlCrtD,KAC1CyuD,EAAkB,CACpBlpD,aACAC,cAEE8mD,GAAkBL,IAAiBmB,GAAyC,IAAnBoB,GAAkC,IAAVvqD,EACjF0F,EAAG,UAAMhF,EAAN,YAAeC,GACxB,OACI,kBAAC,GAAD,eACIxB,WAAYA,EACZqoD,IAAKA,EACL2B,mBAAoBA,EACpBzoD,MAAOA,EACPC,OAAQA,EACR+E,IAAKA,EACLrE,MAAOA,EACPgoD,YAAaA,EACbC,cAAeA,GACXkB,EAVR,CAWIpB,gBAAiBA,EACjBf,eAAgBA,UAuB3BoC,GAAc,SAAC,GAaH,IAZrBppD,EAYoB,EAZpBA,MACAX,EAWoB,EAXpBA,MACApB,EAUoB,EAVpBA,MACAyC,EASoB,EATpBA,0BACAsoD,EAQoB,EARpBA,yBACAN,EAOoB,EAPpBA,OACAE,EAMoB,EANpBA,UACA9qD,EAKoB,EALpBA,WACAqoD,EAIoB,EAJpBA,IACArjD,EAGoB,EAHpBA,KACAklD,EAEoB,EAFpBA,YACA79D,EACoB,EADpBA,MAMA,OACI,oCACKkV,EACG,kBAAC8oD,GAAD,CAAWkB,QAAM,EAACC,SAAUZ,EAAQ3vB,SAP3B,SAACurB,GAClBsE,EAAUvpD,KAOE,kBAACkpD,GAAD,CACIgB,WAAY,kBAAC,GAAD,CAAS5pD,SAAUw3B,GAAKP,aAAcsR,QAASplC,EAAK28C,sBAEhE,kBAAC,GAAD,CACIpgD,MAAOA,EACP2pD,yBAA0BA,EAC1BhpD,MAAOA,EACPioD,cAAevnD,EACfvW,MAAOA,KAGf,kBAACk+D,GAAD,KACI,kBAAC,GAAD,CACIvqD,WAAYA,EACZqoD,IAAKA,EACL2B,mBAAoBzoD,EACpBpB,MAAOA,EACP+pD,YAAaA,EACbC,cAAevnD,MAK3B,kBAAC,GAAD,CACI5C,WAAYA,EACZqoD,IAAKA,EACL2B,mBAAoBzoD,EACpBpB,MAAOA,EACP+pD,YAAaA,EACbC,cAAevnD,EACfV,MAAOA,MAiBdwpD,GAAY,SAAC,GASH,IARnBnqD,EAQkB,EARlBA,MACA2pD,EAOkB,EAPlBA,yBACA/qD,EAMkB,EANlBA,MACAH,EAKkB,EALlBA,WACAqoD,EAIkB,EAJlBA,IACA6B,EAGkB,EAHlBA,YACAkB,EAEkB,EAFlBA,eACA/+D,EACkB,EADlBA,MAEA,OACI,oCACKkV,GACG,kBAAC,GAAD,CACI2pD,yBAA0BA,EAC1B3pD,MAAOA,EACP4oD,eAAe,EACfjB,eAAmC,IAAnBkC,EAChB/+D,MAAOA,IAGf,kBAAC,GAAD,CACI2T,WAAYA,EACZqoD,IAAKA,EACL2B,mBAAoBzoD,EACpBpB,MAAOA,EACP+pD,YAAaA,EACbC,eAAe,EACfiB,eAAgBA,MAgEjBxxC,OA9Cc,SAAC,GAeH,IAdvB1X,EAcsB,EAdtBA,MACA/B,EAasB,EAbtBA,MACAoB,EAYsB,EAZtBA,MACAY,EAWsB,EAXtBA,WACAC,EAUsB,EAVtBA,WAUsB,IATtBwoD,cASsB,SARtBE,EAQsB,EARtBA,UACA9qD,EAOsB,EAPtBA,WACAqoD,EAMsB,EANtBA,IACAzlD,EAKsB,EALtBA,0BACAoC,EAIsB,EAJtBA,KAKMgC,EAAQ,CACVkkD,yBAA0B,CACtB/oD,aACAC,cAEJF,QACA/B,QACAoB,QACAvB,aACAqoD,MACAzlD,4BACAsnD,YAZkB,EAHtBA,YAgBIkB,eAbkB,EAFtBA,eAgBI/+D,MAdkB,EADtBA,OAiBMs/D,EAAgB,2BAAO3kD,GAAP,IAAchC,SAEpC,OACI,kBAAC,GAAD,KACI,kBAAC,GAAD,CAAQqkC,MAAI,EAAChL,eAAe,MACxB,kBAAC,GAAD,iBAAiBstB,EAAjB,CAAmCf,OAAQA,EAAQE,UAAWA,MAGlE,kBAAC,GAAD,CAAQxhB,QAAM,EAACjL,eAAe,MAC1B,kBAAC,GAAcr3B,QClQlB4kD,GAAKvzC,KAAO9vB,GAAV,oEAAG8vB,CAAH,4KAMU1hB,GAAYC,OAAOI,IAI/BqmB,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,+SAIA,qBAAEkvC,YAAgC,EAAI,SACnC5wD,GAAYC,OAAOI,IAe/B8K,GAASuW,KAAOC,IAAV,wEAAGD,CAAH,8KAGM1hB,GAAYC,OAAOI,IAC3B,SAAAgQ,GAAK,4BAAmBA,EAAM6kD,gBAAzB,QCiBPC,GA1CU,SAAC,GAA6D,IAA5D7D,EAA2D,EAA3DA,QAASjoD,EAAkD,EAAlDA,WAAYqoD,EAAsC,EAAtCA,IAAKd,EAAiC,EAAjCA,YAC3CwE,EAAkB9D,EAAQ5iE,OAAS,EACzC,OACI,kBAAC,GAAD,CAAWg2B,cAAY,YAAY/0B,GAAG,YAAYihE,YAAaA,GAC1DU,EAAQj6D,KAAI,WAAiBk8D,GAAiB,IAAhC/pD,EAA+B,EAA/BA,MAAOoB,EAAwB,EAAxBA,MACZyqD,EAAqB7rD,EAAM9a,OAAS,EACpC4mE,EAAoB/B,GAAe6B,EACnCG,EAAS,UAAM3qD,EAAN,YAAe2oD,GAC9B,OACI,kBAAC,GAAD,CAAQ3jD,IAAK2lD,EAAWL,gBAAiB5D,EAAQ5iE,QAC5C8a,EAAMnS,KACH,WAAsEo9D,GAAoB,IAAjFe,EAAgF,EAAvF5qD,MAAyB6qD,EAA8D,EAArEjsD,MAAkBgC,EAAmD,EAAnDA,WAAYC,EAAuC,EAAvCA,WAAYF,EAA2B,EAA3BA,MACpDqE,EAAG,UAAM4lD,EAAN,YAAmBf,GAEtBiB,IADuBjB,GAAkBY,GACNC,GACnCjlD,EAAQ,CACV9E,QACAC,aACAC,aACAb,MAAO4qD,EACPhsD,MAAOisD,EACPpsD,aACAqoD,MACA6B,cACAkB,kBAGJ,OACI,kBAAC,IAAMr0C,SAAP,CAAgBxQ,IAAKA,GACjB,kBAAC,GAAkBS,GAClBqlD,GAAU,kBAACT,GAAD,gBCpCtCvuC,GAAYhF,KAAOC,IAAV,0EAAGD,CAAH,yQASH,SAAArR,GAAK,OAAKA,EAAM9H,SAAW,SAAjB,UAA+B8H,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,WACjF,SAAA3pB,GAAK,OAChBA,EAAM9H,SAAN,UACS8H,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OADjD,aAC4DpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,SADrF,UAESjR,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OAFlD,aAE6DpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YACjF,SAAAjR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,WACjC,qBAAE/Y,SAA0B,yBAA2B,uBACnD,qBAAEA,SAA0B,oBAAsB,uBAC/C,qBAAEA,SAA0B,OAAS,4BCZ3CwC,GANH,SAAC,GAAD,IAAEsD,EAAF,EAAEA,KAAMsnD,EAAR,EAAQA,eAAgBptD,EAAxB,EAAwBA,SAAxB,OACR,kBAAC,GAAD,CAAWugC,KAAK,MAAM8sB,gBAAA,gBAAwBvnD,GAAQ9F,SAAUA,EAAUo+B,aAAcgvB,GACpF,8BAAOtnD,KCAFwnD,GAAYn0C,KAAOC,IAAV,2EAAGD,CAAH,oGAMTgF,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,oaAIF,qBAAEsvC,eAAqC,KAGvC,qBAAEA,eAAqC,KAQpC,qBAAE8E,SAAyB,KCZnCC,GAVF,SAAC,GAAD,IAAEvsD,EAAF,EAAEA,MAAOmsD,EAAT,EAASA,eAAgBK,EAAzB,EAAyBA,YAAzB,OACT,kBAAC,GAAD,CAAWltB,KAAK,UAAU7jB,aAAW,OAAO+rC,eAAgBgF,EAAaF,SAAUtsD,EAAM9a,QACrF,kBAACmnE,GAAD,MACCrsD,EAAMnS,KAAI,SAACqG,EAAMwM,GAAP,OACP,kBAAC,GAAD,CAAK0F,IAAKlS,EAAM2Q,KAAM3Q,EAAM6K,SAAUytD,IAAgB9rD,EAAOyrD,eAAgB,kBAAMA,EAAezrD,SAEtG,kBAAC2rD,GAAD,QCRKnvC,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,6PAIG1hB,GAAYC,OAAOI,ICD/B41D,GAAkB,SAACr9D,GAAD,OAAqB,SAAAC,GAChD,IAAKA,EAAK,MAAO,GACjB,GAA4B,IAAxBA,EAAI4d,QAAQ,SAAuC,IAAtB5d,EAAI4d,QAAQ,MAAa,OAAO5d,EAEjE,IAAMujD,EAXe,SAACxjD,GACtB,IAAMs9D,EAAet9D,EAAQ3C,MAAM,KAGnC,MAFgB,UAAMigE,EAAa,GAAnB,aAA0BA,EAAa,IASpCC,CAAiBv9D,GAEpC,MAAM,GAAN,OAAUwjD,GAAV,OAAuBvjD,KCUZoqB,GCJAA,aAfgB,SAAC9oB,GAC5B,IAAOyS,EAAoBzS,EAAMsU,WAA1B7B,iBAEA5B,EADc7Q,EAAMkS,aAApBP,WACqBc,GAArB5B,OACAqD,EAAQlU,EAARkU,KACAzV,EAAWuB,EAAMY,QAAjBnC,QAEP,MAAO,CACHsS,SAFqB+qD,GAAgBr9D,EAAhBq9D,CAAA,OAAyBjrD,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAQE,UAGtDL,QAAc,OAANG,QAAM,IAANA,OAAA,EAAAA,EAAQH,SAAU,KAC1BwD,KAAM,CAAC+nD,cAAe/nD,EAAKrD,OAAOorD,eAClCx9D,aDQOqqB,EAXO,SAAC,GAA6D,IAA5D/X,EAA2D,EAA3DA,SAAUL,EAAiD,EAAjDA,OAAQwD,EAAyC,EAAzCA,KAAMzV,EAAmC,EAAnCA,QACtCy9D,EAAc/qB,GAAqB,OAACzgC,QAAD,IAACA,IAAU,GAAIjS,GACxD,OACI,kBAAC,GAAD,CAAW8rB,cAAY,UACnB,uBAAGhoB,KAAM25D,GACL,yBAAKtxC,IAAK1W,EAAK+nD,cAAetxC,IAAK5Z,SEftCwb,GAAYhF,KAAO40C,GAAV,2EAAG50C,CAAH,+JAIT,SAAArR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,WAE5B,SAAAjR,GAAK,gBAAOA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOtX,OAA/C,aAA0DpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YACxF,SAAAjR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQmT,OAAOC,UCDrDu8B,GAFO,SAAC,GAAD,IAAE3rD,EAAF,EAAEA,MAAF,OAAiC,kBAAC,GAAD,KAAYA,ICHtD8b,GAAYhF,KAAOC,IAAV,0EAAGD,CAAH,wNAOL,SAAArR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQkF,KAAKuT,gBAAgBH,SAC7C,SAAA7pB,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQkF,KAAKxF,QAAQyF,cAC9C,SAAA1W,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQkF,KAAKxF,QAAQ6Y,UAS/C4a,GAAQrzB,KAAOO,IAAV,sEAAGP,CAAH,uEACD,kB9R4IE,Q8R5IF,EAAE80C,UAAoC,iBAAmB,mBCZ3DvzC,gBAPgB,SAAC9oB,GAAD,MAAmB,CAC9CvB,QAASuB,EAAMY,QAAQnC,QACvBwM,cAAejL,EAAMiL,cACrBiJ,KAAM,CAACooD,oBAAqBt8D,EAAMkU,KAAKqoD,YAAYD,qBACnDztD,2BAA4B7O,EAAMqU,SAASxF,+BCwChCia,OAzBY,SAAC,GAQH,IAPrBrY,EAOoB,EAPpBA,MACAC,EAMoB,EANpBA,OACAjS,EAKoB,EALpBA,QACAyQ,EAIoB,EAJpBA,WACAgF,EAGoB,EAHpBA,KACAjJ,EAEoB,EAFpBA,cACA4D,EACoB,EADpBA,2BAEA,OACI,kBAAC,GAAD,CAAW0b,cAAY,eAAeE,QAAS,kBAfvC,SAAC/Z,EAAgBxB,EAAoBL,GACjD+nB,aAAaJ,WhS0FY,gBgSzFzBm+B,GAAcjkD,EAAQxB,EAAYL,GAauB4b,CAAQ/Z,EAAQxB,EAAYL,KAC7E,kBAAC8wB,GAAA,EAAD,CACIp9B,KAAI,UAAK9D,GAAL,OAAeiS,GACnB25B,ahSyHqB,gBgSxHrBa,aAAYh8B,EACZo7B,aAAY75B,EACZlU,MAAO,CAAC2zC,cAAe,SAEvB,0BAAM3lB,cAAY,2BAA2B9Z,GAC7C,kBAAC,GAAD,CAAO4rD,UAAWpxD,EAAe2f,IAAK1W,EAAKooD,oBAAqB3xC,IAAK4d,GAAKP,oBCtC7Ew0B,GAAaj1C,KAAOS,KAAV,4EAAGT,CAAH,0GACV,SAAArR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQvT,KAAKiT,WAE5B,SAAAjR,GAAK,gBAAOA,EAAM4Q,MAAMW,QAAQU,KAAKsE,QAAQ2gB,QAAQ9kB,OAAhD,aAA2DpS,EAAM4Q,MAAMW,QAAQU,KAAKhB,YAG/F2zB,GAAevzB,KAAOC,IAAV,8EAAGD,CAAH,oKAGV,SAAArR,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASC,KAAK32D,GAAG28B,WAGvC,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQ+E,QAAQC,QAAQC,UAKrD46B,GAAiB//B,KAAOO,IAAV,gFAAGP,CAAH,4fAIN,SAAArR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQ+E,QAAQC,QAAQC,SAEzC7mB,GAAYC,OAAOC,IAC3B,SAAAmQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAevhD,GAAG2kB,SACtD,SAAAxU,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAevhD,GAAGqhB,SAEhDvhB,GAAYC,OAAOE,IAC3B,SAAAkQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAethD,GAAG0kB,SACtD,SAAAxU,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAethD,GAAGohB,SAEhDvhB,GAAYC,OAAOG,IAC3B,SAAAiQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAerhD,GAAGykB,SACtD,SAAAxU,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAerhD,GAAGmhB,SAEhDvhB,GAAYC,OAAOI,IAC3B,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAephD,GAAGwkB,SACtD,SAAAxU,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAephD,GAAGkhB,SAEhDvhB,GAAYC,OAAOK,IAC3B,SAAA+P,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAenhD,GAAGukB,SACtD,SAAAxU,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASnV,eAAenhD,GAAGihB,UAI5DmF,GAAYhF,KAAOnS,EAAV,2EAAGmS,CAAH,wTAQT,gBAAEo1C,EAAF,EAAEA,gBAAF,8BAAwCA,EAAkB,EAA1D,mBAAsEA,EAAtE,QClCE7zC,gBAZgB,SAAC9oB,EAAcyoC,GAC1C,IAAM13B,EAAmB+qD,GAAgB97D,EAAMY,QAAQnC,QAA9Bq9D,CAAuCrzB,EAAS13B,UAClEtS,EAAWuB,EAAMY,QAAjBnC,QACAoQ,EAA8B7O,EAAMqU,SAApCxF,2BACP,OAAO,2BACA45B,GADP,IAEIhqC,UACAsS,WACAlC,kCC+BOia,OA5Ba,SAAC,GAQH,IAPtB/X,EAOqB,EAPrBA,SACAL,EAMqB,EANrBA,OACAD,EAKqB,EALrBA,MACAvB,EAIqB,EAJrBA,WACA0tD,EAGqB,EAHrBA,YACAn+D,EAEqB,EAFrBA,QACAoQ,EACqB,EADrBA,2BAEMqtD,EAAc/qB,GAAqB,OAACzgC,QAAD,IAACA,IAAU,GAAIjS,GACxD,OACI,kBAAC,GAAD,CACIgsB,QAAS,kBAjBL,SAAC/Z,EAAQxB,EAAYL,GACjC+nB,aAAaJ,WnS2FY,gBmS1FzBm+B,GAAcjkD,EAAQxB,EAAYL,GAeX4b,CAAQyxC,EAAahtD,EAAYL,IAChDtM,KAAM25D,EACNS,gBAAiBC,EAAc,EAAI,EAAIA,EACvCryC,cAAY,gBACZ8f,anSuHyB,gBmStHzBa,aAAYh8B,EACZo7B,aAAY75B,GAEZ,kBAAC,GAAD,KACI,kBAAC,GAAD,CAAgBma,IAAKna,EAAOka,IAAK5Z,KAErC,kBAACyrD,GAAD,SAAc/rD,EAAd,SC1CC8b,GAAYhF,KAAOC,IAAV,2EAAGD,CAAH,wGAGR,SAAArR,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASC,KAAK32D,GAAGg9B,UAC9C,SAAA7sB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASC,KAAK32D,GAAG2kB,SCc3CmyC,GATU,SAAC,GAAD,IAAExtD,EAAF,EAAEA,MAAOH,EAAT,EAASA,WAAY0tD,EAArB,EAAqBA,YAArB,OACrB,kBAAC,GAAD,KACKvtD,EAAMnS,KAAI,SAACqG,EAAMwM,GACd,IAAM0F,EAAG,UAAMlS,EAAKkN,MAAX,YAAoBV,GAC7B,OAAO,kBAAC,GAAD,eAAc0F,IAAKA,EAAKvG,WAAYA,GAAgB3L,EAApD,CAA0Dq5D,YAAaA,UCZ7ErwC,GAAYhF,KAAOC,IAAV,0EAAGD,CAAH,qlBACJ,SAAArR,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQvT,KAAK4oD,YAKrC,SAAA5mD,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASlwC,UAAUxmB,GAAG28B,WACnD,SAAAxsB,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASlwC,UAAUxmB,GAAGg9B,SAIvCl9B,GAAYC,OAAOG,IAC3B,SAAAiQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASlwC,UAAUtmB,GAAGykB,SAE7C,SAAAxU,GAAK,OAAIA,EAAM4Q,MAAMW,QAAQ2Y,QAAQC,MAAMzT,WAAWxE,aAClD,SAAAlS,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASlwC,UAAUtmB,GAAGusC,iBAEtD,SAAAt8B,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASlwC,UAAUoY,YAAYo4B,YAAY92D,GAAG88B,SAGvEl9B,GAAYC,OAAOI,IAC3B,SAAAgQ,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASlwC,UAAUrmB,GAAGwkB,SAG7C,SAAAxU,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASlwC,UAAUoY,YAAYo4B,YAAY72D,GAAG68B,SAGvEl9B,GAAYC,OAAOK,IAC3B,SAAA+P,GAAK,OAAIA,EAAM4Q,MAAM/K,OAAO0gD,SAASlwC,UAAUpmB,GAAGukB,SCfpDsyC,GAdI,SAAC3tD,EAAc4tD,GAC9B,IAAMC,EAAyB,GAC3BC,EAAsB,GAS1B,OARA9tD,EAAMxR,SAAQ,SAAC0F,EAAMwM,GACjBotD,EAAar9C,KAAKvc,IACCwM,EAAQ,GAAKktD,IAAY,IAExCC,EAAgBp9C,KAAKq9C,GACrBA,EAAe,OAGhBD,GCMLE,GAAyB,SAAC,GAAuD,IAAtD/tD,EAAqD,EAArDA,MAAOH,EAA8C,EAA9CA,WAA8C,IAAlC0tD,mBAAkC,MAApB,EAAoB,EAC5EO,EAAeH,GAAW3tD,EAAOutD,GACvC,OACI,oCACKO,EAAajgE,KAAI,SAACqG,EAAMwM,GACrB,IAAM0F,EAAG,cAAU1F,GACnB,OAAO,kBAAC,GAAD,CAAkB0F,IAAKA,EAAKvG,WAAYA,EAAYG,MAAO9L,EAAMq5D,YAAaA,SAoBtFH,GAdS,SAAC,GAAuC,IAAtC1zD,EAAqC,EAArCA,KAAMmG,EAA+B,EAA/BA,WAC5B,IAAKnG,EAAM,OAAO,qCAClB,IAAOsG,EAA2CtG,EAA3CsG,MAAOoB,EAAoC1H,EAApC0H,MAAO4sD,EAA6Bt0D,EAA7Bs0D,aAAcT,EAAe7zD,EAAf6zD,YACnC,OACI,kBAAC,GAAD,CAAWryC,cAAY,WAAW/0B,GAAG,YAChCib,GAAS,kBAAC,GAAD,CAAeA,MAAOA,IAChC,kBAAC,GAAD,CAAwBvB,WAAYA,EAAYG,MAAOA,EAAOutD,YAAaA,IAC1ES,GACG,kBAAC,GAAD,CAAa5sD,MAAO4sD,EAAa5sD,MAAOvB,WAAYA,EAAYwB,OAAQ2sD,EAAa3sD,WCzBrG,IA6Ce4sD,GA7CiB,SAC5B1rD,EACAe,EACA4qD,EACAzF,EACAF,GAEA,IAAM4F,EAAsBrf,kBAAgB,GAmC5C,OAjCAz0B,qBAAU,WACD9X,IAAwC,IAA3Be,GACd4xB,YAAW,WACP,IAxBsBzhB,EAwBhB26C,GAxBgB36C,EAwBkCy6C,EAAyBhf,SApBtFz7B,EAAQ46C,iBACX,qFAHO,KAuBC,GAAID,GAAsBA,EAAmBlpE,OAAS,EAAG,CACrD,IAAMq2C,EAAa6yB,EAAmB,GAChCE,EAAYF,EAAmBA,EAAmBlpE,OAAS,GAC7DipE,EAAoBjf,QACpBof,EAAUrZ,QAEV1Z,EAAW0Z,QAEf1Z,EAAWgzB,UAAY,SAAAhvC,GACD,QAAdA,EAAMnZ,KAAiBmZ,EAAMivC,WAC7BjvC,EAAMib,iBACN2zB,EAAoBjf,SAAU,EAC9BuZ,MAIR6F,EAAUC,UAAY,SAAAhvC,GACA,QAAdA,EAAMnZ,KAAkBmZ,EAAMivC,WAC9BjvC,EAAMib,iBACN2zB,EAAoBjf,SAAU,EAC9BqZ,SAIb,KAGR,CAACjlD,EAAuBf,EAAWgmD,EAAmBE,IAElD,IChBPtU,GAAmC,EA+ExB16B,OA7EoB,SAAC,GAiBH,IAhB7BlX,EAgB4B,EAhB5BA,UACAslD,EAe4B,EAf5BA,QACAF,EAc4B,EAd5BA,OACAG,EAa4B,EAb5BA,QACAjoD,EAY4B,EAZ5BA,WACAqoD,EAW4B,EAX5BA,IACAC,EAU4B,EAV5BA,YACAX,EAS4B,EAT5BA,eACAlkD,EAQ4B,EAR5BA,sBACA+kD,EAO4B,EAP5BA,4BACAC,EAM4B,EAN5BA,6BACAC,EAK4B,EAL5BA,kBACAE,EAI4B,EAJ5BA,sBACApB,EAG4B,EAH5BA,UACAD,EAE4B,EAF5BA,YACAxlD,EAC4B,EAD5BA,SAEMqkC,EAAM6I,iBAA8B,MAE1Cmf,GAAwB1rD,EAAWe,EAAuB2iC,EAAKwiB,EAAuBF,GAStF,OACI,kBAAC,GAAD,CACIpiE,GAAG,kBACHg3C,aAAckrB,EACdntC,cAAY,kBACZ6qB,aAZiB,WACjB5uC,OACAg+B,aAAagf,IACbA,GAAUjf,YAAW,kBAAMozB,M1S8EK,O0SpEhCriB,IAAKA,EACLwoB,kBAAA,uBAAiCnrD,IAEjC,kBAAC2jD,GAAD,KACI,kBAAC,GAAD,CAAiBvrC,MAAOnZ,IAAwC,IAA3Be,EAA8BqY,QAAS,MACtEpZ,GACE,oCACK8kD,GAAa,kBAAC,GAAD,MACd,kBAACrpB,GAAA,EAAD,CAAQmL,QAAM,EAACjL,eAAe,MAC1B,oCACK2pB,GACG,kBAAC,GAAD,CACI2E,YAAahF,EACbxnD,MAAO2nD,EACPwE,eAAgBhE,MAKhC,kBAACZ,GAAD,KACI,kBAACL,GAAD,CAAoBE,YAAaA,EAAaC,UAAWA,GACrD,kBAAC,GAAD,CACIxnD,WAAYA,EACZqoD,IAAKA,EACLJ,QAASA,EACTV,YAAaA,KAGpBA,GACG,kBAACE,GAAD,KACI,kBAAC,GAAD,CAAUznD,WAAYA,EAAYnG,KAAMkI,aCrDjE6X,OAvCa,SAAC,GAMH,IALtBgiB,EAKqB,EALrBA,OACMizB,EAIe,EAJrB98B,KACA40B,EAGqB,EAHrBA,gBACAhkD,EAEqB,EAFrBA,iBACAe,EACqB,EADrBA,eAEM25C,EAAS16C,GAAoBe,EACnC,OACI,oCACKmrD,EACG,kBAAC1wB,GAAA,EAAD,CAAQkL,MAAI,EAAChL,eAAe,MACxB,kBAAC,GAAD,CACIyoB,eAAe,EACflrB,OAAQA,EACR7J,KAAM88B,EACN18B,QAASw0B,GAET,kBAAC,GAAD,CAAWtrC,cAAY,4BACnB,kBAAC,GAAD,CAAqBkkC,cAAc,OAI/C,KACHlC,EACG,kBAAClf,GAAA,EAAD,CAAQmL,QAAM,EAACjL,eAAe,MAC1B,kBAAC,GAAD,CAAqBtM,KAAMsrB,EAAQrrB,YAAa20B,GAC5C,kBAAC,GAAD,KACI,kBAAC,GAAD,CAAWtrC,cAAY,0BACnB,kBAAC,GAAD,CAAqBkkC,cAAY,QAKjD,SC/CH9uB,GAASpY,KAAOW,OAAV,uEAAGX,CAAH,oOCeJy2C,GARa,SAAC9nD,GACzB,OACI,kBAAC,GAAD,CAAQ4U,aAAW,qBAAqB3tB,KAAK,UACzC,yBAAKytB,IAAI,cAAcD,IAAK4d,GAAKtB,WAAWl5B,QAAQmI,EAAM3a,MAAO2a,EAAMlK,aCTtEiyD,GAAgB12C,KAAOC,IAAV,+EAAGD,CAAH,6EACD1hB,GAAYC,OAAOG,GAAK,GCUpCi4D,GAAoB,SAAC,GAAsE,IAArEC,EAAoE,EAApEA,uBAAwB5iE,EAA4C,EAA5CA,MAAOyQ,EAAqC,EAArCA,QAG9D,OAFImyD,GAAwBA,IAGxB,oCACI,kBAAC9wB,GAAA,EAAD,CAAQC,MAAI,EAACC,eAAe,OACxB,kBAAC,GAAD,CAAchyC,MAAOA,EAAOyQ,QAASA,KAEzC,kBAACiyD,GAAD,KACI,kBAAC,GAAD,MACA,kBAAC,GAAD,SCaDn1C,ICdAA,aAlBgB,SAAC9oB,GAI5B,MAAO,CACHzE,MAJUyE,EAAMY,QAAQ7L,QjTqBJ,gBiThBpBiX,QAJchM,EAAMqU,SAAjBrI,YAQuB,SAAAtL,GAC9B,IAAMmU,EAAoD,CACtD7B,uBAAuB,GAE3B,MAAO,CACHmrD,uBAAwB,kBAAMz9D,EvQJ3B,CACHvD,KAjBgC,2BAkBhCC,MuQEoEyX,QFU7DiU,CAAQo1C,ICORp1C,aAhCgB,SAAC9oB,GAAkB,IAAD,QAEtC+I,EAAqD/I,EAArD+I,KAAMkC,EAA+CjL,EAA/CiL,cAAesI,EAAgCvT,EAAhCuT,YAAa/G,EAAmBxM,EAAnBwM,gBACnCg3B,GAAc,OAAJz6B,QAAI,IAAJA,OAAA,EAAAA,EAAMy6B,UAAW,GAC3B46B,EAAa56B,EAAQjvC,OAAS,EAEpC,IAAKwU,IAASy6B,IAAY46B,EACtB,MAAM,IAAIlpE,MAAM,iDAGpB,MAAO,CACH+V,gBACAxM,QAASuB,EAAMY,QAAQnC,QACvB4/D,eAAgBr+D,EAAMY,QAAQ/B,mBAC9BC,mBAAoBkB,EAAMY,QAAQ9B,mBAClC/C,UAAS,UAAEiE,EAAMY,eAAR,aAAE,EAAe7L,QhTQF,oBgTPxBiK,yBAAwB,UAAEgB,EAAMY,eAAR,aAAE,EAAe5B,yBACzCD,4BAA2B,UAAEiB,EAAMY,eAAR,aAAE,EAAe7B,4BAC5CoG,UAAWoO,EAAYpO,UACvBsJ,uBAAwBjC,EAAgBiC,uBACxC2+C,qBAAsBptD,EAAMqU,SAAS,iCACrCi5C,uBAAwBttD,EAAMqU,SAAS,kCACvC7U,aAAcQ,EAAMY,QAAQpB,aAC5B2L,iBAAgB,UAAEnL,EAAM8T,kBAAR,aAAE,EAAkB3I,iBACpC1L,mBAAoBO,EAAMY,QAAQnB,uBAIR,SAACiB,GAAD,MAAoB,CAClDwM,qBAAsB,kBAAMxM,EAASwM,IAAqB,UEZxDoxD,GAAqB,IApB3B,mDACI33D,QADJ,QAEIvG,QAAU,KAFd,KAGIgI,UAAY,CACRm2D,mBAAoB,CAChB71D,gBAAiB,GACjBD,YAAa,SAAC+1D,GAAD,mCACaA,EAAS,qBAAiBA,GAAc,KAClEn2D,aAAc,iBAAM,IACpBE,OAAQjB,GAAWwB,KAEvB21D,cAAe,CACX/1D,gBAAiB,GACjBD,YAAa,iBAAM,2BACnBJ,aAAc,iBAAM,IACpBE,OAAQjB,GAAWiwB,WAMhB,YAACxvB,GAAD,OAAyDY,GAAY21D,GAAoBv2D,I,2yMClBjG,IAAM22D,GAAc,yCAAG,WAAOjzD,EAAiB+yD,GAAxB,0FAEhBG,EAAwBC,GAAqB,sBAF7B,SAGC50D,KAAM,CACzBzB,OAAQo2D,EAAsBp2D,OAC9B7J,IAAI,GAAD,OAAK+M,GAAL,OAAekzD,EAAsBn2D,cAAcg2D,MALpC,cAGhBr3D,EAHgB,yBAOfA,EAAS4B,MAPM,sCAStB/B,IAAO/L,MAAP,MATsB,8DAAH,wDAwBd4jE,GAAa,yCAAG,WAAOpzD,EAAiB1C,GAAxB,wFAEf41D,EAAwBC,GAAqB,iBAF9B,SAGf50D,KAAM,CACRzB,OAAQo2D,EAAsBp2D,OAC9B7J,IAAI,GAAD,OAAK+M,GAAL,OAAekzD,EAAsBn2D,iBACxCO,SANiB,6DASrB/B,IAAO/L,MAAP,MATqB,8DAAH,wDAcXyjE,MC9BAI,GAToB,SAACzH,EAAkBp3D,EAAgBklC,EAAe/nC,GACrD,qBAAjB2hE,cAAsE,oBAA/BA,aAAa9hE,cAC3D8hE,aAAa1H,EAAUp3D,EAAQklC,EAAO/nC,GAGtC4hE,QAAQC,IAAI,WAAY5H,EAAUp3D,EAAQklC,EAAO/nC,ICPnD8hE,GAAU,IAAIxrC,GAKLyrC,GAHoB,SAACp2D,GAChCm2D,GAAQ5vC,QAAQvmB,I,2yMCHb,IAAMq2D,GAAU,yCAAG,WAAOC,GAAP,uFAAoDC,EAApD,+BAA8D,EAA9D,WAEdA,GAAW,GAFG,gCAGRD,EAAQC,GAHA,wEAMZF,GAAWC,EAASC,EAAU,GANlB,yDAAH,sDAUVC,GAAe,WACxB,IAAIC,GAAe,EACbxzC,EAAI3lB,KAMV,OAJK2lB,IAAK,WAAWpP,KAAKoP,EAAEkiC,UAAUuR,aAClCD,GAAe,GAGZA,GAIEE,GAA0B,WACnC,IAAM1zC,EAAI3lB,KAGJs5D,EAFQ,IAAIj6D,OAAO,4BAEHC,KAAKqmB,EAAG1pB,SAASH,QACvC,OAAkB,MAAXw9D,EAAkB,KAAOC,mBAAmBD,EAAQ,GAAG9rE,QAAQ,MAAO,O,2yMC1B1E,IAAMgsE,GAAa,yCAAG,WACzBC,EACAC,EACAC,EACAC,EACAxhE,EACAyhE,GANyB,iFAQpBF,IAAiBA,EAAYG,gBAAmBH,EAAYI,gBAAmBJ,EAAYK,aARvE,wDAYnBC,EAAW,CACbC,QAASN,EACTO,eAAgBV,EAChBW,UAAWV,EACXW,QAAO,UAAEV,EAAYG,sBAAd,QAAgC,KACvCQ,YAAW,UAAEX,EAAYI,sBAAd,QAAgC,KAC3CC,YAAW,UAAEL,EAAYK,mBAAd,QAA6B,KACxCO,QAASV,GAnBY,SAsBnBrB,GAAcpgE,EAAS6hE,GAtBJ,2CAAH,gE,2yMCKnB,IAAMO,GAAmB,yCAAG,WAC/Bv0D,EACAqB,EACAsyD,EACAxhE,GAJ+B,6EASX,KAAhB6N,GAAiD,KAA3BqB,EAAQwyD,eATH,oDAW3B7zD,IAAgBqB,EAAQwyD,eAXG,gCAYrBf,IAAW,SAACc,GAAD,OACbL,IAAc,GAAO,EAAOlyD,EAASsyD,EAAoBxhE,EAASyhE,MAb3C,+CAkB/Bf,GAA2B,CAACxX,eAAgBh6C,EAAQwyD,iBAlBrB,SAoBzBf,GAAU,yCAAC,WAAOc,GAAP,kFACPL,IAAc,GAAM,EAAMlyD,EAASsyD,EAAoBxhE,EAASyhE,GADzD,OAEbpB,GAAoB,kBAAmB,kBAAmBnxD,EAAQyyD,eAAiB,GAFtE,2CAAD,uDApBe,OpHAYtxC,EoHyBe,WAClDgyC,GAAoBA,EAAmB/xC,aAAaE,cAGxDmwC,GAAU,yCAAC,WAAOc,GAAP,kFACDL,IAAc,GAAM,EAAOlyD,EAASsyD,EAAoBxhE,EAASyhE,GADhE,OAEPpB,GAAoB,kBAAmB,eAAgBnxD,EAAQyyD,eAAiB,GAFzE,2CAAD,wDAJRU,EpHxBCniC,GAAUrQ,UAAUQ,GoHkCrBiyC,EAAuBp/B,IAAiC,WACtDo/B,GAAsBA,EAAqBhyC,aAAaE,cAE5DmwC,GAAU,yCAAC,WAAOc,GAAP,kFACDL,IAAc,GAAM,EAAMlyD,EAASsyD,EAAoBxhE,EAASyhE,GAD/D,OAEPpB,GAAoB,kBAAmB,iCAAkCnxD,EAAQyyD,eAAiB,GAF3F,2CAAD,0DAtCiB,kCpHAW,IAACtxC,IoHAZ,OAAH,4D,2yMCazB,I,YAAMkyC,GAA2B,yCAAG,WACvCC,EACAllE,EACAkkE,EACAxhE,EACA4/D,GALuC,iFAOlCtyC,KAPkC,oDASjCzf,EAAcvQ,EAAUkS,cACzBsxD,KAVkC,oDAclC0B,EAdkC,gCAe7BC,GAAmBjB,EAAoBxhE,EAAS6N,EAAa+xD,GAfhC,6CAkBnC4C,EAAsBV,QAAUN,IAAuBgB,EAAsBT,eAlB1C,kCAmB7BU,GAAmBjB,EAAoBxhE,EAAS6N,EAAa+xD,GAnBhC,8CAuBnC4C,EAAsBR,UAvBa,oBAwB7BU,EAAc,IAAIr3D,MAClBs3D,EAAYH,EAAsBI,UAClC,IAAIv3D,KAAK0oD,SAASyO,EAAsBI,UAAUnqC,OAAO,GAAI,KAC7D,SACYkqC,EAAYD,GA5BK,wBA6BzBxzD,EAAU,CACZwyD,eAAgBc,EAAsBP,QACtCN,eAAgBa,EAAsBN,YACtCN,YAAaY,EAAsBZ,aAhCR,UAkCzBQ,GAAoBv0D,EAAaqB,EAASsyD,EAAoBxhE,GAlCrC,4CAAH,8DAuC3ByiE,GAAkB,yCAAG,WAC9BjB,EACAxhE,EACA6N,EACA+xD,GAJ8B,wFAMAK,GAAeL,EAAgBqB,MAN/B,WAMxB4B,EANwB,SAQLA,EAAgBnB,gBAAmBmB,EAAgBlB,eAR9C,gCASpBhB,IAAW,SAACc,GAAD,OACbL,IAAc,GAAO,EAAOyB,EAAiBrB,EAAoBxhE,EAASyhE,MAVpD,wDAcxBW,GAAoBv0D,EAAag1D,EAAiBrB,EAAoBxhE,GAd9C,2CAAH,4DCnBhB8iE,GApCa,SAACxiE,EAAqCC,EAAmCQ,GACjG,IACI,IAAMgiE,EAAYxiE,EACZyiE,EAAchgE,IAAQqH,I1T6GO,a0T5G7B44D,EAAiB3iE,EAA4BjD,MAAM,KAIzD,GACI0lE,GACgB,OAAhBC,QAAwC/5D,IAAhB+5D,GACL,OAAnBC,QAA8Ch6D,IAAnBg6D,GAAgCA,EAAentE,OAAS,EACrF,CACE,IAAMotE,EAAQ/B,mBAAmB6B,GAAa3lE,MAAM,KAGpD,GAAa,OAAV6lE,QAA4Bj6D,IAAVi6D,G1TyFY,I0TzFWA,EAAMptE,OAA0C,CACxF,IAAMqtE,EAAMD,EAAM,GAAG7lE,MAAM,KAC3B,GAAW,OAAR8lE,QAAwBl6D,IAARk6D,G1TwFO,I0TxFcA,EAAIrtE,QAAyCqtE,EAAI,GAAGrtE,O1TyFjE,E0TzFuG,CAE9H,IAAMstE,EAAQrP,SAASoP,EAAI,GAAG1qC,OAAO0qC,EAAI,GAAGrtE,O1TuFrB,G0TvF4D,IAC7EutE,EAAUvgD,KAAKinC,M1TuFE,I0TvFkCkZ,EAAentE,QACpEwb,EAAQwR,KAAKinC,MAAMqZ,EAAQC,IAE3B/xD,GAAS,GAAKA,GAAS2xD,EAAentE,UAAQwb,EAAQ,GAC1DtO,IAAQC,I1TqFS,gB0TrFOggE,EAAe3xD,GAAQ,CAACoqB,Q1TsFrB,E0TtF4Cx4B,OAAQnC,WAIvFiC,IAAQI,O1TiFiB,iB0T/E/B,MAAO5G,GACL+L,IAAO/L,MAAMA,KCgBN8mE,GAxCkB,SAAC,GAIhB,IAHdviE,EAGa,EAHbA,aACAT,EAEa,EAFbA,4BACAC,EACa,EADbA,yBAEMgjE,EAAQ7jB,iBAAO,GACd8jB,ECfkB,SAACC,GAC1B,MAAoC/4C,oBAAS,GAA7C,oBAAO84C,EAAP,KAAmBE,EAAnB,KAWA,OATAz4C,qBAAU,WACFtjB,OACI87D,GACAA,IAEJC,GAAc,MAEnB,CAACD,IAEG,CAACD,cDGaG,GAAdH,WACDI,EAAwBrP,uBAC1B,SAACsP,GACG,IAAMC,EAAiB9gE,IAAQqH,I3T+FA,a2T7F3Bk5D,EAAMzjB,SAAW,GACjBikB,cAAcF,IAETC,GAAkB9gE,IAAQqH,I3TwFV,kB2TvFjBrH,IAAQI,O3TuFS,kB2TrFd0gE,GrQIU,WAC7B,IAAMv2C,EAAI3lB,KACV,SAAI2lB,KAAMA,EAAEznB,SAAS4hB,etD+FQ,wBsD/F8B6F,EAAEC,cAAgBD,EAAEC,aAAaw2C,kBqQNvDC,KACzBnB,GAAoBxiE,EAA6BC,EAA0BQ,GAC3EwiE,EAAMzjB,QAAU,GAGpByjB,EAAMzjB,SAAW,IAErB,CAAC/+C,EAAcT,EAA6BC,IAGhD0qB,qBAAU,WACN,GAAKu4C,EAAL,CAEA,IAAMK,EAAaK,aAAY,WAC3BN,EAAsBC,KACvB,KAEH,OAAO,WACHE,cAAcF,OAEnB,CAACL,EAAYljE,EAA6BC,EAA0BQ,EAAc6iE,KEhDnFO,GAAgB,IAAIttC,GAEbutC,GAAuB,SAACl1C,EAAmB5kB,GACpD65D,GAActzC,QAAQ,CAACV,MAAOjB,EAAW5kB,UCEvC+5D,GAAoB,SAAC9iE,GACvB,MAAuDA,EAAMY,QAAtD3B,EAAP,EAAOA,wBAAyBC,EAAhC,EAAgCA,oBAGhC,MAAO,CACHD,0BACAlD,UAHciE,EAAMY,QAAQ7L,Q9TkBJ,oB8TdxBmK,wBAUK6jE,GAA2B,WACpC,IAAM/iE,EALQgjE,YAAYF,IAAmB,kBAAM,KAOnDp5C,qBAAU,WCjB8B,IAACu5C,EDkBhCjjE,GAAUqsB,MCjBnBw2C,G/T4D+B,a+T5DW,CACtCK,QAAS,GACTC,WAHqCF,EDoBRjjE,GCjBTf,wBACpBmkE,iBAAkB,OAClBC,WAAYJ,EAASlnE,UACrBunE,cAAeL,EAAS/jE,wBDezB,CAACc,KEbOujE,GAdoB,WAC/B75C,qBAAU,WACN,IAAM85C,EAAoB/hE,IAAQqH,IhUsIT,SgUrIzB,GAAK06D,EAAL,CAEA,IACMC,EADQ,IAAI/9D,OAAJ,WhUoIuB,MgUpIvB,2BACmBC,KAAK69D,GACtC,GAAKC,EAAL,CAEA,IAAMC,EAAeD,EAAmB,GAAG5vE,QAAtB,UhUgIgB,MgUhIhB,KAAkE,IACvF4N,IAAQC,IhUwG6B,agUxGMgiE,OAC5C,KCqHQ56C,OAjFO,SAAC,GAqBH,IApBhB66C,EAoBe,EApBfA,gBACA14D,EAmBe,EAnBfA,cACAxM,EAkBe,EAlBfA,QACAe,EAiBe,EAjBfA,aACA6+D,EAgBe,EAhBfA,eACAv/D,EAee,EAffA,mBACA/C,EAce,EAdfA,UACAsxD,EAae,EAbfA,UACAtuD,EAYe,EAZfA,4BACAC,EAWe,EAXfA,yBACAmG,EAUe,EAVfA,UACAsJ,EASe,EATfA,uBACAvB,EAQe,EARfA,qBACAkgD,EAOe,EAPfA,oBACAE,EAMe,EANfA,uBACAniD,EAKe,EALfA,iBACA1L,EAIe,EAJfA,mBACA8tD,EAGe,EAHfA,wBACA7tD,EAEe,EAFfA,WACAkkE,EACe,EADfA,iBAEA,EAAkCz6C,oBAAS,GAA3C,oBAAO8Y,EAAP,KAAkB4hC,EAAlB,KACAN,KACA75C,qBAAU,WACFvkB,EAAY,GAAKsJ,IACjB2zC,KACAyhB,GAAa,MAElB,CAAC1+D,EAAWsJ,IAOfib,qBAAU,YvQ9E0B,SAACjrB,GACrCk6B,GAAiBrK,WAAU,WACvBuK,GAAsBp6B,MuQ6EtBqlE,CAAyBrlE,GtQhFO,SAACA,GACrC46B,GAAiB/K,WAAU,SAACvlB,GACxB8vB,GAAsBp6B,EAASsK,MsQ+E/Bg7D,CAAyBtlE,GrQjFU,SAACA,GACxCk7B,GAAoBrL,WAAU,SAACvlB,GAC3B8vB,GAAsBp6B,EAASsK,MqQgF/Bi7D,CAA4BvlE,G/PnFK,SAACA,GACtC+7B,GAAUlM,WAAU,SAAAvlB,GAChBiyB,GAAuBv8B,EAASsK,EAAKgzB,0B+PkFrCkoC,CAA0BxlE,GlQrFO,SAACA,GACtC+7B,GAAUlM,WAAU,SAAAvlB,GAChBiyB,GAAuBv8B,EAASsK,MkQoFhCm7D,CAA0BzlE,GjQtFW,SAACA,GAC1C08B,GAAU7M,WAAU,SAAAvlB,GAChBiyB,GAAuBv8B,EAASsK,MiQqFhCo7D,CAA8B1lE,G7PvFW,SAACA,GAC9C+7B,GAAUlM,WAAU,SAAAvlB,GAChBiyB,GAAuBv8B,EAASsK,M6PsFhCq7D,CAAkC3lE,G5PxFS,SAACA,GAChD+7B,GAAUlM,WAAU,SAAAvlB,GAChBm0B,GAAYz+B,EAASsK,M4PuFrBs7D,CAAoC5lE,G3PzFK,SAACA,GAC9C+7B,GAAUlM,WAAU,SAAAvlB,GAChBm0B,GAAYz+B,EAASsK,M2PwFrBu7D,CAAkC7lE,G1P1FO,SAACA,GAC9C+7B,GAAUlM,WAAU,SAAAvlB,GAChBm0B,GAAYz+B,EAASsK,M0PyFrBw7D,CAAkC9lE,GzP3FE,SAACA,GACzC+7B,GAAUlM,WAAU,SAAAvlB,GAChBm0B,GAAYz+B,EAASsK,MyP0FrBy7D,CAA6B/lE,GxP5FW,SAACA,GAC7C+7B,GAAUlM,WAAU,SAAAvlB,GAChBm0B,GAAYz+B,EAASsK,MwP2FrB07D,CAAiChmE,GvP7FW,SAACA,GACjD+7B,GAAUlM,WAAU,SAAAvlB,GAChBm0B,GAAYz+B,EAASsK,MuP4FrB27D,CAAqCjmE,GtP9FD,SAACA,GACzC+7B,GAAUlM,WAAU,SAAAvlB,GAChBm0B,GAAYz+B,EAASsK,MsP6FrB47D,CAA6BlmE,GrP/FO,SAACA,GACzC+7B,GAAUlM,WAAU,SAAAvlB,GAChBm0B,GAAYz+B,EAASsK,MqP8FrB67D,CAA6BnmE,GAC7Bu8B,GAAuBv8B,GAAS,GAE5B0M,GAAkB0tB,GAAsBp6B,KAC7C,CAAC0M,EAAkB1M,IAEtBsjE,GAAyB,CAACviE,eAAcT,8BAA6BC,6BACrE+jE,KAEA9sC,IAAoC,SAAAltB,GAAS,IAAD,EAExCi4D,GAA2B,UAACj4D,EAAKA,YAAN,aAAC,EAAW87D,gBAAiB9oE,EAAW+C,EAAoBL,EAAS4/D,MAEpG,IAAMyG,EAAkBnB,EACxB,OACI,kBAACmB,EAAD,CACI75D,cAAeA,EACfoiD,UAAWA,EACXprB,UAAWA,EACXkrB,kBAvCkB,WACtBjgD,IACA22D,GAAa,IAsCTzW,oBAAqBA,EACrBE,uBAAwBA,EACxB7tD,mBAAoBA,EACpB8tD,wBAAyBA,EACzB7tD,WAAYA,EACZ8tD,iBAAkBoW,OC5HjBr3C,GAAYhF,KAAOW,OAAV,2EAAGX,CAAH,oSAIT,SAACrR,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAKuT,gBAAgBH,SAC7D,SAAC7pB,GAAD,OAAyBA,EAAM4Q,MAAMW,QAAQkF,KAAKuT,gBAAgBtT,cACjE,SAAC1W,GAAD,OAAWA,EAAM4Q,MAAMW,QAAQvT,KAAK6wD,oBC2BxCj8C,GC1BAA,aAPgB,SAAC9oB,GAE5B,MAAO,CACHkU,KAFWlU,EAARkU,QDgCI4U,EA9BY,SAAC,GAAY,IAAX5U,EAAU,EAAVA,KACzB,IAAK9N,KAAc,OAAO,KAC1B,IAAM4+D,EAAMzgE,SAASme,cAAT,WnU2HiB,wBmU1H7B,IAAKsiD,EAAK,OAAO,KAajB,OACI,kBAAC,GAAD,CACIxvE,GAAG,8BACH+0B,cAAY,8BACZggB,SAAU,EACVkJ,UAjBmB,SAAA9uC,GACT,UAAVA,EAAE8Q,MACFuvD,EAAIz6B,SAAW,EACfy6B,EAAI1gB,UAeJ75B,QAXgB,WACpBu6C,EAAIz6B,SAAW,EACfy6B,EAAI1gB,SAUAx5B,aAAY5W,EAAK+wD,mBAEhB/wD,EAAK+wD,sBEFZC,IAAe,sBrUmGW,UqUlGRhY,IADH,gBrUkGe,aqUhGRY,IAFP,IAKfqX,IAAgB,sBrU8FU,WsU5HF,kBAC1B,oCACI,kBAAC,GAAD,MACA,kBAAC,GAAD,UD2Bc,gBrU6Fc,aqU3FRjH,IAFN,IAIhBjlB,GAAe,SAACvqC,EAAkBqqC,GAAnB,uBAAkCA,EAAWrqC,UAA7C,QAA0DqqC,EAAU,SA2B1EqsB,GAzBgC,SAAClvD,GAC5C,IAAMuR,EAAUrhB,KAAgB/D,OAAegjE,aAAanvD,EAAMovD,cAAgBpvD,EAAMmvD,aAClFv+C,EAAe,CAAC/K,OAAQ7F,EAAM6F,OAAQ0L,UAAS1c,UAAWmL,EAAMjL,eAChE04D,EAAkB1qB,GAAa/iC,EAAMxH,SAAUw2D,IAC/CtB,EAAmB3qB,GAAa/iC,EAAMxH,SAAUy2D,IAChDI,EAAW,2BAAOrvD,GAAP,IAAcytD,kBAAiBC,qBAEhD,OACI,kBAAC,GAAD,CAAiB98C,MAAOA,GACpB,kBAAC,GAAD,CACI7b,cAAeiL,EAAMjL,cACrBqb,WAAYmB,EACZlB,UAAWrQ,EAAMsvD,SACjBh/C,eAAa,GAEb,6BAAShxB,GAAG,gCAAgC0uC,UAAU,mBAClD,kBAAC,GAAD,MACA,kBAAC,GAAWqhC,KAGpB,kBAACv+C,GAAD,QElBGy+C,GA9Bf,oDACI,WAAYvvD,GAAa,IAAD,8BACpB,cAAMA,IACDlW,MAAQ,CAET0lE,UAAU,GAJM,EAD5B,qDAqBI,SAAkBzqE,EAAO0qE,GACrB3+D,IAAO/L,MAAP,UAAgBA,EAAhB,aAA0B0qE,GAAaphE,SAASkD,UAtBxD,oBAyBI,WACI,OAAO,kBAAC,GAAQ5S,KAAKqhB,UA1B7B,uCAcI,SAAgCjb,GAC5B,MAAO,CACHyqE,UAAU,EACVzqE,aAjBZ,GAA+BxJ,IAAMm0E,WCyBtBC,GA9Bc,WACzB,IAAMxjE,EAASgE,KACVhE,IACLA,EAAOorB,SAASC,WAAW,sBAC3BrrB,EAAOorB,SAASC,WAAW,+BAC3BrrB,EAAOorB,SAASC,WAAW,oBAC3BrrB,EAAOorB,SAASC,WAAW,6BAE3BrrB,EAAOorB,SAASC,WAAW,uCAC3BrrB,EAAOorB,SAASC,WAAW,2CAC3BrrB,EAAOorB,SAASC,WAAW,+BAC3BrrB,EAAOorB,SAASC,WAAW,oCAC3BrrB,EAAOorB,SAASC,WAAW,wCAC3BrrB,EAAOorB,SAASC,WAAW,2CAC3BrrB,EAAOorB,SAASC,WAAW,wCAC3BrrB,EAAOorB,SAASC,WAAW,wCAC3BrrB,EAAOorB,SAASC,WAAW,kCAC3BrrB,EAAOorB,SAASC,WAAW,sBAC3BrrB,EAAOorB,SAASC,WAAW,2BAC3BrrB,EAAOorB,SAASC,WAAW,+BAC3BrrB,EAAOorB,SAASC,WAAW,kCAC3BrrB,EAAOorB,SAASC,WAAW,+BAC3BrrB,EAAOorB,SAASC,WAAW,+BAC3BrrB,EAAOorB,SAASC,WAAW,yBAC3BrrB,EAAOorB,SAASC,WAAW,yBAC3BrrB,EAAOorB,SAASC,WAAW,kCAC3BrrB,EAAOorB,SAASC,WAAW,yBAC3BrrB,EAAOorB,SAASC,WAAW,oCCxBhBo4C,GAPiC,WACtCzjE,OAAe0jE,8BACf1jE,OAAe0jE,4BAA8B,WACzCxhE,SAASyhE,uBAAuB,mBAAmB,GAAmBC,WCM9EC,G9RPkB,SAACpxD,GACrB,ID+CsBtW,EC/ChBwB,EAAQ8U,GAAWnU,KACnBwlE,EAAc1kE,IAAQqH,I5C+JX,S4C9JXuG,EAAQD,GAAkBpP,EAAMsU,WAAWjF,MAAO82D,GAGxD,OD0CsB3nE,EC3CE,2BAAIwB,GAAL,IAAYsU,WAAW,2BAAKtU,EAAMsU,YAAZ,IAAwBjF,YD4C9D+2D,sBACHnzD,GACAzU,EACAzM,GAAcs0E,8BAAoBC,0BAAgBC,MAAUD,0BAAgBC,M+R7CtEC,GACRC,G9RCkB,WAEpB,IAAOA,EAAapkE,OAAe0S,kBAAkBC,OAA9CyxD,SAGP,cADQpkE,OAAe0S,kBAAkBC,OAAOyxD,SACzCA,E8RNMC,GACjBhuC,IAAOmvB,MAAP,oBAUAge,KAEAthC,YAXgB,WACZoiC,IAASC,QACL,kBAAC,IAAD,CAAUV,MAAOA,IACb,kBAAC,GAAcO,KAEnBliE,SAAS4hB,eAAe,6BAMZ,GAEpB2/C,MAIIzjE,OAAOkC,SAAS4hB,eAFA,2BAEhB,WAA+C9jB,OAAO4pB,oBAAtD,QAA+C,GAAqB46C,uBACjCn/D,IAA/BrF,OAAOykE,qBACPzkE,OAAOykE,oBAAoBC,KAAKN,GAAShoE,UAI7C4D,OAAOkC,SAAS4hB,eARA,2BAQhB,WAA+C9jB,OAAO4pB,oBAAtD,QAA+C,GAAqB+6C,sBAC9Bt/D,IAAlCrF,OAAO4kE,wBACP5kE,OAAO4kE,uBAAuBC,oB,iBCxCtC31E,EAAOC,QAAUm1E,U,+BCAjB,IACIQ,EAAYx1E,OAAOC,OAAO,CAC5Bm2D,KAAM,EACNF,MAAO,EACPuf,KAAM,EACNnsE,MAAO,IAGL+L,EACI,SAAcyxB,EAAS4uC,GACU,IAAxBF,EAAkB,MAASnI,QAAQC,IAAIoI,EAAe5uC,IAFnEzxB,EAIK,SAAeyxB,EAAS4uC,GAChBF,EAAkB,MAAK,GAAGnI,QAAQnX,MAAMwf,EAAe5uC,IALpEzxB,EAOI,SAAcyxB,EAAS4uC,GACdF,EAAkB,MAAK,GAClCnI,QAAQoI,KAAKC,EAAe5uC,GAGR,qBAAXp2B,QAA0BA,OAAOilE,aAC1CjlE,OAAOilE,YAAYC,WAAW,CAC5B9uC,QAASA,EACT+uC,cAAe,KAfnBxgE,EAmBK,SAAeyxB,EAAS4uC,GAC7B,IAAI5rE,EAES0rE,EAAkB,MAAK,GAClCnI,QAAQ/jE,MAAMosE,EAAe5uC,GAGT,qBAAXp2B,SAA6C,QAAjB5G,EAAK4G,cAA2B,IAAP5G,OAAgB,EAASA,EAAG6rE,cAC1FjlE,OAAOilE,YAAYG,eAAe,CAChCxsE,MAAO,IAAI/F,MAAMujC,GACjB+uC,cAAe,KAKnB9uC,EAAS,CACXqvB,KAAM,SAActvB,EAAS4uC,QACL,IAAlBA,IACFA,EAAgB,QAGlBrgE,EAAYyxB,EAAS4uC,IAEvBxf,MAAO,SAAepvB,EAAS4uC,QACP,IAAlBA,IACFA,EAAgB,QAGlBrgE,EAAayxB,EAAS4uC,IAExBD,KAAM,SAAc3uC,EAAS4uC,QACL,IAAlBA,IACFA,EAAgB,QAGlBrgE,EAAYyxB,EAAS4uC,IAEvBpsE,MAAO,SAAew9B,EAAS4uC,QACP,IAAlBA,IACFA,EAAgB,QAGlBrgE,EAAayxB,EAAS4uC,IAExBK,OAAQ,CACNC,MAAO,SAAelvC,GACpBzxB,EAAayxB,EAAS,WAIb,Q","file":"static/js/main.3.1.10.chunk.js","sourcesContent":["module.exports = React;","const INTERNAL = Object.freeze({\n PRODUCTION: process.env.NODE_ENV === \"production\",\n DEVELOPMENT: process.env.NODE_ENV === \"development\",\n DEV_URL_OVERRIDE: process.env.DEV_URL_OVERRIDE || \"\",\n NODE_ENV: process.env.NODE_ENV,\n REACT_APP_BLOB_STORAGE_PATH: \"/static-content\",\n USEDEVESI: process.env.USEDEVESI,\n})\n\nconst ENV_VARS = Object.freeze({\n REACT_APP_BLOB_STORAGE_SSR_BASEURL:\n process.env.REACT_APP_BLOB_STORAGE_SSR_BASEURL || \"https://ecmbrowsefdsxeuw.azurefd.net\",\n PORT: process.env.PORT || 3004,\n REACT_APP_CDN_BASEURL: process.env.REACT_APP_CDN_BASEURL\n ? process.env.REACT_APP_CDN_BASEURL\n : \"https://xcdn.next.co.uk/content\",\n REACT_APP_API_BASEURL: process.env.REACT_APP_API_BASEURL\n ? process.env.REACT_APP_API_BASEURL\n : \"http://origin-sx-eun.deploy.systems.next/api/header\",\n REACT_APP_MEGANAV_API_BASEURL: process.env.REACT_APP_MEGANAV_API_BASEURL\n ? process.env.REACT_APP_MEGANAV_API_BASEURL\n : \"http://origin-sx-eun.deploy.systems.next/api/meganav\",\n POD_NAME: process.env.POD_NAME,\n REACT_APP_SERVE_PATH_PREFIX: process.env.REACT_APP_SERVE_PATH_PREFIX || \"\",\n ASSETS_PATH: process.env.ASSETS_PATH || \"/headerstatic\",\n LOG_LEVEL: process.env.LOG_LEVEL,\n FNC_NAME: process.env.FNC_NAME,\n REACT_APP_APPINSIGHTS_KEY: process.env.REACT_APP_APPINSIGHTS_KEY,\n BLOOMREACH_BASE_URL: process.env.BLOOMREACH_BASE_URL || \"https://brm-suggest-0.brsrvr.com/api/v1/suggest/\",\n REACT_APP_MEGANAV_BASEURL:\n process.env.REACT_APP_MEGANAV_BASEURL ||\n (INTERNAL.DEVELOPMENT || INTERNAL.USEDEVESI ? \"http://localhost:3005\" : \"\"),\n REACT_APP_MEGANAV_ASSETS_PATH: process.env.REACT_APP_MEGANAV_ASSETS_PATH || \"/meganavstatic\",\n GEOLOCATION_BASEURL:\n process.env.REACT_APP_GEOLOCATION_BASEURL || \"https://services-uat.test.ecomm.systems.next/geolocation\",\n ENVIRONMENT: process.env.ENVIRONMENT || \"dev\",\n REACT_APP_USE_TIME_MACHINE_COOKIE: process.env.REACT_APP_USE_TIME_MACHINE_COOKIE || \"false\",\n USE_LOCAL_STATIC_CONTENT: process.env.USE_LOCAL_STATIC_CONTENT || \"true\",\n})\n\nconst VARS = {...INTERNAL, ...ENV_VARS}\n\nexport default VARS\n","import logger from '@next/core-logger';\n\nvar replaceText = function replaceText(string, replaceValue, regex) {\n return string.replace(regex, replaceValue);\n};\n\nvar formatTextTestIds = function formatTextTestIds(string) {\n var regex = / /gi;\n var replaceValue = \"-\";\n return string.replace(regex, replaceValue).toLocaleLowerCase();\n};\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nvar getCustomHeader = function getCustomHeader(headers, customHeader) {\n var _a;\n\n return _a = {}, _a[customHeader] = headers[customHeader], _a;\n};\n\nvar getSettingsHeaders = function getSettingsHeaders(headers) {\n validateHeaders(headers, \"getSettingsHeaders\");\n return _assign(_assign(_assign({}, headers[\"x-next-persona\"] && {\n \"x-next-persona\": headers[\"x-next-persona\"]\n }), headers[\"x-next-time-machine-date\"] && {\n \"x-next-time-machine-date\": headers[\"x-next-time-machine-date\"]\n }), {\n \"x-next-language\": headers[\"x-next-language\"],\n \"x-next-realm\": headers[\"x-next-realm\"],\n \"x-next-territory\": headers[\"x-next-territory\"],\n \"x-next-correlation-id\": headers[\"x-next-correlation-id\"],\n \"x-next-viewport-size\": headers[\"x-next-viewport-size\"] || \"\",\n \"x-next-siteurl\": headers[\"x-next-siteurl\"] || \"\"\n });\n};\n\nvar getSettingsHeadersAsObject = function getSettingsHeadersAsObject(headers) {\n validateHeaders(headers, \"getSettingsHeadersAsObject\");\n return {\n language: headers[\"x-next-language\"],\n realm: headers[\"x-next-realm\"],\n territory: headers[\"x-next-territory\"],\n viewportSize: headers[\"x-next-viewport-size\"] || \"\",\n persona: headers[\"x-next-persona\"] || undefined,\n timeMachine: headers[\"x-next-time-machine-date\"] || undefined\n };\n};\n\nvar validateHeaders = function validateHeaders(headers, caller) {\n if (!headers || !headers[\"x-next-language\"] || !headers[\"x-next-realm\"] || !headers[\"x-next-territory\"] || !headers[\"x-next-correlation-id\"]) throw new Error(caller + \" called with no headers\");\n};\n\nvar realms = {\n next: {\n ae: {\n en: {\n currencies: {\n id: \"66\"\n }\n },\n ar: {\n currencies: {\n id: \"67\"\n }\n }\n },\n am: {\n en: {\n currencies: {\n id: \"124\"\n }\n }\n },\n ar: {\n en: {\n currencies: {\n id: \"107\"\n }\n }\n },\n at: {\n en: {\n currencies: {\n id: \"95\"\n }\n },\n de: {\n currencies: {\n id: \"11\"\n }\n }\n },\n au: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n az: {\n en: {\n currencies: {\n id: \"121\"\n }\n },\n ru: {\n currencies: {\n id: \"\"\n }\n }\n },\n be: {\n en: {\n currencies: {\n id: \"88\"\n }\n },\n fr: {\n currencies: {\n id: \"87\"\n }\n }\n },\n bg: {\n en: {\n currencies: {\n id: \"14\"\n }\n },\n bg: {\n currencies: {\n id: \"77\"\n }\n }\n },\n bh: {\n en: {\n currencies: {\n id: \"70\"\n }\n },\n ar: {\n currencies: {\n id: \"78\"\n }\n }\n },\n br: {\n en: {\n currencies: {\n id: \"106\"\n }\n }\n },\n by: {\n en: {\n currencies: {\n id: \"123\"\n }\n },\n ru: {\n currencies: {\n id: \"\"\n }\n }\n },\n ca: {\n en: {\n currencies: {\n id: \"15\"\n }\n },\n fr: {\n currencies: {\n id: \"16\"\n }\n }\n },\n ch: {\n en: {\n currencies: {\n id: \"60\"\n }\n },\n de: {\n currencies: {\n id: \"59\"\n }\n }\n },\n cl: {\n en: {\n currencies: {\n id: \"104\"\n }\n }\n },\n cy: {\n en: {\n currencies: {\n id: \"97\"\n }\n }\n },\n cz: {\n en: {\n currencies: {\n id: \"19\"\n }\n },\n cs: {\n currencies: {\n id: \"18\"\n }\n }\n },\n de: {\n en: {\n currencies: {\n id: \"4\"\n }\n },\n de: {\n currencies: {\n id: \"3\"\n }\n }\n },\n dk: {\n en: {\n currencies: {\n id: \"20\"\n }\n },\n da: {\n currencies: {\n id: \"80\"\n }\n }\n },\n ee: {\n en: {\n currencies: {\n id: \"119\"\n }\n },\n ru: {\n currencies: {\n id: \"118\"\n }\n }\n },\n eg: {\n en: {\n currencies: {\n id: \"21\"\n }\n },\n ar: {\n currencies: {\n id: \"22\"\n }\n }\n },\n es: {\n en: {\n currencies: {\n id: \"91\"\n }\n },\n es: {\n currencies: {\n id: \"1\"\n }\n }\n },\n fi: {\n en: {\n currencies: {\n id: \"98\"\n }\n }\n },\n fr: {\n en: {\n currencies: {\n id: \"90\"\n }\n },\n fr: {\n currencies: {\n id: \"89\"\n }\n }\n },\n gb: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n ge: {\n en: {\n currencies: {\n id: \"125\"\n }\n }\n },\n gi: {\n en: {\n currencies: {\n id: \"99\"\n }\n }\n },\n gr: {\n en: {\n currencies: {\n id: \"96\"\n }\n },\n el: {\n currencies: {\n id: \"81\"\n }\n }\n },\n hk: {\n en: {\n currencies: {\n id: \"\"\n }\n },\n zh: {\n currencies: {\n id: \"\"\n }\n }\n },\n hr: {\n en: {\n currencies: {\n id: \"17\"\n }\n }\n },\n hu: {\n en: {\n currencies: {\n id: \"79\"\n }\n },\n hu: {\n currencies: {\n id: \"75\"\n }\n }\n },\n id: {\n en: {\n currencies: {\n id: \"110\"\n }\n }\n },\n ie: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n il: {\n en: {\n currencies: {\n id: \"27\"\n }\n },\n he: {\n currencies: {\n id: \"\"\n }\n }\n },\n \"in\": {\n en: {\n currencies: {\n id: \"26\"\n }\n }\n },\n is: {\n en: {\n currencies: {\n id: \"101\"\n }\n }\n },\n it: {\n en: {\n currencies: {\n id: \"94\"\n }\n },\n it: {\n currencies: {\n id: \"6\"\n }\n }\n },\n jp: {\n en: {\n currencies: {\n id: \"31\"\n }\n },\n ja: {\n currencies: {\n id: \"\"\n }\n }\n },\n kr: {\n en: {\n currencies: {\n id: \"73\"\n }\n },\n ko: {\n currencies: {\n id: \"76\"\n }\n }\n },\n kw: {\n en: {\n currencies: {\n id: \"35\"\n }\n },\n ar: {\n currencies: {\n id: \"34\"\n }\n }\n },\n kz: {\n en: {\n currencies: {\n id: \"33\"\n }\n },\n ru: {\n currencies: {\n id: \"32\"\n }\n }\n },\n lb: {\n en: {\n currencies: {\n id: \"102\"\n }\n },\n ar: {\n currencies: {\n id: \"36\"\n }\n }\n },\n lt: {\n en: {\n currencies: {\n id: \"117\"\n }\n },\n ru: {\n currencies: {\n id: \"116\"\n }\n }\n },\n lu: {\n en: {\n currencies: {\n id: \"93\"\n }\n },\n fr: {\n currencies: {\n id: \"92\"\n }\n }\n },\n lv: {\n en: {\n currencies: {\n id: \"115\"\n }\n },\n ru: {\n currencies: {\n id: \"114\"\n }\n }\n },\n mt: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n mx: {\n en: {\n currencies: {\n id: \"103\"\n }\n }\n },\n my: {\n en: {\n currencies: {\n id: \"37\"\n }\n },\n ms: {\n currencies: {\n id: \"82\"\n }\n }\n },\n nl: {\n en: {\n currencies: {\n id: \"86\"\n }\n },\n nl: {\n currencies: {\n id: \"39\"\n }\n }\n },\n no: {\n en: {\n currencies: {\n id: \"40\"\n }\n }\n },\n nz: {\n en: {\n currencies: {\n id: \"69\"\n }\n }\n },\n om: {\n en: {\n currencies: {\n id: \"42\"\n }\n },\n ar: {\n currencies: {\n id: \"41\"\n }\n }\n },\n pe: {\n en: {\n currencies: {\n id: \"105\"\n }\n }\n },\n ph: {\n en: {\n currencies: {\n id: \"111\"\n }\n }\n },\n pk: {\n en: {\n currencies: {\n id: \"108\"\n }\n },\n fr: {\n currencies: {\n id: \"89\"\n }\n }\n },\n pl: {\n en: {\n currencies: {\n id: \"44\"\n }\n },\n pl: {\n currencies: {\n id: \"43\"\n }\n }\n },\n pt: {\n en: {\n currencies: {\n id: \"100\"\n }\n },\n fr: {\n currencies: {\n id: \"89\"\n }\n }\n },\n qa: {\n en: {\n currencies: {\n id: \"45\"\n }\n },\n ar: {\n currencies: {\n id: \"46\"\n }\n }\n },\n ro: {\n en: {\n currencies: {\n id: \"48\"\n }\n },\n ro: {\n currencies: {\n id: \"47\"\n }\n }\n },\n rs: {\n en: {\n currencies: {\n id: \"72\"\n }\n }\n },\n ru: {\n en: {\n currencies: {\n id: \"50\"\n }\n },\n ru: {\n currencies: {\n id: \"49\"\n }\n }\n },\n sa: {\n en: {\n currencies: {\n id: \"52\"\n }\n },\n ar: {\n currencies: {\n id: \"\"\n }\n }\n },\n se: {\n en: {\n currencies: {\n id: \"74\"\n }\n },\n sv: {\n currencies: {\n id: \"74\"\n }\n }\n },\n sg: {\n en: {\n currencies: {\n id: \"53\"\n }\n }\n },\n si: {\n en: {\n currencies: {\n id: \"113\"\n }\n },\n sl: {\n currencies: {\n id: \"56\"\n }\n }\n },\n sk: {\n en: {\n currencies: {\n id: \"112\"\n }\n },\n sk: {\n currencies: {\n id: \"55\"\n }\n }\n },\n th: {\n en: {\n currencies: {\n id: \"109\"\n }\n }\n },\n tr: {\n en: {\n currencies: {\n id: \"63\"\n }\n }\n },\n tw: {\n en: {\n currencies: {\n id: \"62\"\n }\n },\n zh: {\n currencies: {\n id: \"61\"\n }\n }\n },\n ua: {\n en: {\n currencies: {\n id: \"65\"\n }\n },\n ru: {\n currencies: {\n id: \"64\"\n }\n }\n },\n us: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n za: {\n en: {\n currencies: {\n id: \"57\"\n }\n }\n }\n },\n childsplay: {\n ae: {\n en: {\n currencies: {\n id: \"\"\n }\n },\n ar: {\n currencies: {\n id: \"\"\n }\n }\n },\n de: {\n de: {\n currencies: {\n id: \"\"\n }\n }\n },\n gb: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n hk: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n ie: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n il: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n jp: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n kr: {\n en: {\n currencies: {\n id: \"73\"\n }\n }\n },\n kw: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n qa: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n },\n sa: {\n en: {\n currencies: {\n id: \"\"\n }\n },\n ar: {\n currencies: {\n id: \"\"\n }\n }\n },\n tw: {\n en: {\n currencies: {\n id: \"62\"\n }\n }\n },\n us: {\n en: {\n currencies: {\n id: \"\"\n }\n }\n }\n }\n};\nvar currencies = {\n \"1\": {\n currencySymbol: \"€\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"3\": {\n currencySymbol: \"€\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"4\": {\n currencySymbol: \"€\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"6\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"11\": {\n currencySymbol: \"€\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"14\": {\n currencySymbol: \"BGN\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"15\": {\n currencySymbol: \"CA$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"16\": {\n currencySymbol: \"CA$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"17\": {\n currencySymbol: \"HRK\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"18\": {\n currencySymbol: \"Kč\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"19\": {\n currencySymbol: \"Kč\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"20\": {\n currencySymbol: \"DKK\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"21\": {\n currencySymbol: \"EGP\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"22\": {\n currencySymbol: \"ج.م\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"26\": {\n currencySymbol: \"INR\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"27\": {\n currencySymbol: \"₪\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"31\": {\n currencySymbol: \"¥\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"32\": {\n currencySymbol: \"тг\",\n spaceRequired: true,\n position: \"right\",\n groupSeparatorSymbol: \" \",\n decimalSeparatorSymbol: \",\",\n showNumOfDecimalDigits: 0\n },\n \"33\": {\n currencySymbol: \"KZT\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: \",\",\n groupSeparatorSymbol: \" \",\n showNumOfDecimalDigits: 0\n },\n \"34\": {\n currencySymbol: \"د.ك\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: 3\n },\n \"35\": {\n currencySymbol: \"KWD\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: 3\n },\n \"36\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null,\n forceEnglish: true\n },\n \"37\": {\n currencySymbol: \"MYR\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"39\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"40\": {\n currencySymbol: \"kr\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"41\": {\n currencySymbol: \"ر.ع\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"42\": {\n currencySymbol: \"OMR\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"43\": {\n currencySymbol: \"zł\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"44\": {\n currencySymbol: \"zł\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"45\": {\n currencySymbol: \"QAR\",\n spaceRequired: true,\n position: \"right\"\n },\n \"46\": {\n currencySymbol: \"ر.ق\",\n spaceRequired: false,\n position: \"left\"\n },\n \"47\": {\n currencySymbol: \"LEI\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"48\": {\n currencySymbol: \"LEI\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"49\": {\n currencySymbol: \"руб\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: \" \",\n showNumOfDecimalDigits: 0\n },\n \"50\": {\n currencySymbol: \"руб\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: 0\n },\n \"52\": {\n currencySymbol: \"SAR\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: 0\n },\n \"53\": {\n currencySymbol: \"SGD\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"55\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\"\n },\n \"56\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"57\": {\n currencySymbol: \"R\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"59\": {\n currencySymbol: \"CHF\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: \",\",\n groupSeparatorSymbol: \".\",\n showNumOfDecimalDigits: null\n },\n \"60\": {\n currencySymbol: \"CHF\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"61\": {\n currencySymbol: \"NT$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"62\": {\n currencySymbol: \"NT$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"63\": {\n currencySymbol: \"TRY\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: \",\",\n groupSeparatorSymbol: \".\",\n showNumOfDecimalDigits: null\n },\n \"64\": {\n currencySymbol: \"грн\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: \" \",\n showNumOfDecimalDigits: 0,\n forceEnglish: true\n },\n \"65\": {\n currencySymbol: \"UAH\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: 0\n },\n \"66\": {\n currencySymbol: \"AED\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"67\": {\n currencySymbol: \"د.إ\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"69\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"70\": {\n currencySymbol: \"BD\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"72\": {\n currencySymbol: \"RSD\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"73\": {\n currencySymbol: \"KRW\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"74\": {\n currencySymbol: \"kr\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \" \",\n showNumOfDecimalDigits: null\n },\n \"75\": {\n currencySymbol: \"Ft\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"76\": {\n currencySymbol: \"KRW\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"77\": {\n currencySymbol: \"BGN\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"78\": {\n currencySymbol: \"د.ب\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"79\": {\n currencySymbol: \"Ft\",\n spaceRequired: true,\n position: \"right\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"80\": {\n currencySymbol: \"DKK\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"81\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"82\": {\n currencySymbol: \"MYR\",\n spaceRequired: true,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: 2\n },\n \"86\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"87\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\"\n },\n \"88\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\"\n },\n \"89\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"90\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"91\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"92\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"93\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"94\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"95\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"96\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"97\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"98\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"99\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"100\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"101\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"102\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"103\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"104\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"105\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"106\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"107\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"108\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"109\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"110\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"111\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"112\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\"\n },\n \"113\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"114\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"115\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"116\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"117\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n },\n \"118\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"119\": {\n currencySymbol: \"€\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"121\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"123\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"124\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: null,\n groupSeparatorSymbol: null,\n showNumOfDecimalDigits: null\n },\n \"125\": {\n currencySymbol: \"$\",\n spaceRequired: false,\n position: \"left\",\n decimalSeparatorSymbol: \".\",\n groupSeparatorSymbol: \",\",\n showNumOfDecimalDigits: null\n }\n};\nvar config = {\n realms: realms,\n currencies: currencies\n};\nvar LEFT_ALIGN = \"left\";\nvar RIGHT_ALIGN = \"right\";\nvar DEFAULT_MIN_DIGITS = 2;\nvar TYPE_CURRENCY = \"currency\";\nvar TYPE_LITERAL = \"literal\";\nvar TYPE_GROUP = \"group\";\nvar TYPE_DECIMAL = \"decimal\";\n\nif (typeof Intl !== \"object\") {\n var expectedValue = \"node_modules/full-icu\";\n\n if (!process.env.NODE_ICU_DATA || process.env.NODE_ICU_DATA !== expectedValue) {\n throw new Error(\"NODE_ICU_DATA environment variable is not set, or not set to the correct value of \" + expectedValue);\n }\n\n var err = new Error(\"Intl is not available. Please install the full-icu module.\");\n logger.error(err);\n throw err;\n}\n\nvar formatPrice = function formatPrice(minPrice, maxPrice, currency, locale, realm) {\n return minPrice === maxPrice ? formatNumber(minPrice, currency, locale, realm) : formatNumber(minPrice, currency, locale, realm) + \" - \" + formatNumber(maxPrice, currency, locale, realm);\n};\n\nvar getCurrencyConfig = function getCurrencyConfig(realm, locale) {\n var _a, _b, _c, _d;\n\n var splitLocale = locale === null || locale === void 0 ? void 0 : locale.toLocaleLowerCase().split(\"-\");\n var territory = splitLocale[1];\n var language = splitLocale[0];\n var getId = (_d = (_c = (_b = (_a = config.realms[realm]) === null || _a === void 0 ? void 0 : _a[territory]) === null || _b === void 0 ? void 0 : _b[language]) === null || _c === void 0 ? void 0 : _c.currencies) === null || _d === void 0 ? void 0 : _d.id;\n return config.currencies[getId];\n};\n\nvar getConfiguredCurrency = function getConfiguredCurrency(price, locale, configuredCurrency) {\n var currencySymbol = configuredCurrency.currencySymbol,\n spaceRequired = configuredCurrency.spaceRequired,\n position = configuredCurrency.position,\n showNumOfDecimalDigits = configuredCurrency.showNumOfDecimalDigits,\n decimalSeparatorSymbol = configuredCurrency.decimalSeparatorSymbol,\n groupSeparatorSymbol = configuredCurrency.groupSeparatorSymbol,\n forceEnglish = configuredCurrency.forceEnglish;\n var formattedPrice;\n var requiredSpacing = spaceRequired ? \" \" : \"\";\n\n if (forceEnglish) {\n var localeParts = locale.split(\"-\");\n locale = \"en-\" + localeParts[1];\n }\n\n var numberFormatOptions = {\n style: \"decimal\",\n minimumFractionDigits: showNumOfDecimalDigits !== null && showNumOfDecimalDigits !== void 0 ? showNumOfDecimalDigits : DEFAULT_MIN_DIGITS,\n useGrouping: true\n };\n\n if (price % 1 === 0) {\n numberFormatOptions.minimumFractionDigits = 0;\n numberFormatOptions.maximumFractionDigits = 0;\n }\n\n var configPrice = new Intl.NumberFormat(locale, numberFormatOptions);\n\n if (configPrice.resolvedOptions().numberingSystem === \"latn\") {\n var displayedPrice = configPrice.format(price);\n\n if (groupSeparatorSymbol || decimalSeparatorSymbol) {\n displayedPrice = configPrice.formatToParts(price).map(function (_a) {\n var type = _a.type,\n value = _a.value;\n\n if (groupSeparatorSymbol && type === TYPE_GROUP) {\n value = groupSeparatorSymbol;\n }\n\n if (decimalSeparatorSymbol && type === TYPE_DECIMAL) {\n value = decimalSeparatorSymbol;\n }\n\n return value;\n }).reduce(function (string, part) {\n return \"\" + string + part;\n });\n }\n\n switch (position) {\n case LEFT_ALIGN:\n formattedPrice = \"\" + currencySymbol + requiredSpacing + displayedPrice;\n break;\n\n case RIGHT_ALIGN:\n formattedPrice = \"\" + displayedPrice + requiredSpacing + currencySymbol;\n break;\n\n default:\n formattedPrice = \"\" + currencySymbol + requiredSpacing + displayedPrice;\n break;\n }\n } else {\n var latinCharacterNumberFormat = new Intl.NumberFormat(locale + \"-u-nu-latn\", numberFormatOptions).formatToParts(price);\n var numberOnlyLatinCharacterPrice = latinCharacterNumberFormat.map(function (part) {\n if (part.type !== TYPE_CURRENCY && part.type !== TYPE_LITERAL) return part.value;\n return \"\";\n }).join(\"\");\n\n switch (position) {\n case LEFT_ALIGN:\n formattedPrice = \"\" + currencySymbol + requiredSpacing + numberOnlyLatinCharacterPrice;\n break;\n\n case RIGHT_ALIGN:\n formattedPrice = \"\" + numberOnlyLatinCharacterPrice + requiredSpacing + currencySymbol;\n break;\n\n default:\n formattedPrice = \"\" + currencySymbol + requiredSpacing + numberOnlyLatinCharacterPrice;\n break;\n }\n }\n\n return formattedPrice;\n};\n\nvar getCurrency = function getCurrency(price, currency, locale) {\n var numberFormatOptions = {\n style: \"currency\",\n currency: currency\n };\n\n if (price % 1 === 0) {\n numberFormatOptions.minimumFractionDigits = 0;\n numberFormatOptions.maximumFractionDigits = 0;\n }\n\n var localeNumberFormat = new Intl.NumberFormat(\"\" + locale, numberFormatOptions);\n if (localeNumberFormat.resolvedOptions().numberingSystem === \"latn\") return localeNumberFormat.format(price);\n var latinCharacterNumberFormat = new Intl.NumberFormat(locale + \"-u-nu-latn\", numberFormatOptions);\n if (typeof latinCharacterNumberFormat.formatToParts !== \"function\") return latinCharacterNumberFormat.format(price);\n var latinCharacterNumber = latinCharacterNumberFormat.formatToParts(price);\n var numberOnlyLatinCharacterPrice = latinCharacterNumber.map(function (part) {\n if (part.type !== TYPE_CURRENCY && part.type !== TYPE_LITERAL) return part.value;\n return \"\";\n }).join(\"\");\n var currencyPattern = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency: currency,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n }).formatToParts(1);\n var formattedPrice = \"\";\n currencyPattern.forEach(function (part) {\n if (part.type === \"currency\") {\n if (part.value.endsWith(\".\")) {\n formattedPrice += part.value.substring(0, part.value.length - 1);\n } else {\n formattedPrice += part.value;\n }\n } else if (part.type === \"literal\") {\n formattedPrice += part.value;\n } else {\n formattedPrice += numberOnlyLatinCharacterPrice;\n }\n });\n return formattedPrice;\n};\n\nvar formatNumber = function formatNumber(price, currency, locale, realm) {\n var configuredCurrency = getCurrencyConfig(realm, locale);\n if (configuredCurrency) return getConfiguredCurrency(price, locale, configuredCurrency);\n return getCurrency(price, currency, locale);\n};\n\nexport { formatPrice, formatTextTestIds, getCustomHeader, getSettingsHeaders, getSettingsHeadersAsObject, replaceText };","export enum SettingsSdkKeys {\n direction = \"next.ecommerce.header.frontend.direction\",\n autoComplete = \"next.ecommerce.header.frontend.autoComplete\",\n realm = \"next.ecommerce.header.frontend.realmName\",\n territory = \"next.ecommerce.header.frontend.territoryName\",\n fullTerritoryName = \"next.ecommerce.header.frontend.fullTerritoryName\",\n language = \"next.ecommerce.header.frontend.languageName\",\n languageId = \"next.ecommerce.header.alternativeLanguages\",\n correlationHeaderName = \"x-next-correlation-id\",\n appCache = \"next.ecommerce.header.frontend.appCacheTTL\",\n cacheControl = \"next.ecommerce.header.frontend.cache-control.max-age\",\n cacheControlDefault = \"next.ecommerce.header.frontend.cache-control.default-header.max-age\",\n enableFavourites = \"next.ecommerce.header.frontend.enableFavourites\",\n featureSwitch = \"next.ecommerce.header.frontend.featureSwitch\",\n themeVersion = \"next.ecommerce.header.frontend.themeVersion\",\n style = \"next.ecommerce.header.frontend.style\",\n textData = \"next.ecommerce.header.frontend.textData\",\n countrySelector = \"next.ecommerce.header.frontend.countrySelector\",\n countrySelectorVersion = \"next.ecommerce.header.frontend.countrySelectorVersion\",\n defaultDataVersion = \"next.ecommerce.header.frontend.defaultDataVersion\",\n geolocationVersion = \"next.ecommerce.header.frontend.geolocationVersion\",\n googleAnalytics = \"next.ecommerce.header.frontend.googleAnalytics\",\n enableGoogleAnalyticsSDK = \"next.ecommerce.header.frontend.enableGoogleAnalyticsSDK\",\n monetateSDK = \"next.ecommerce.header.frontend.monetateSDK\",\n currencyCode = \"next.ecommerce.header.frontend.currencyCode\",\n bloomReachCachingCookieList = \"next.ecommerce.header.frontend.bloomReachCachingCookieList\",\n bloomReachCachingEnabled = \"next.ecommerce.header.frontend.bloomReachCachingEnabled\",\n bloomreachGroupLocation = \"next.ecommerce.header.frontend.bloomreachGroupLocation\",\n bloomreachDomainKey = \"next.ecommerce.header.frontend.bloomreachDomainKey\",\n enableQueueIt = \"next.ecommerce.header.frontend.enableQueueIt\",\n bookmarkTitle = \"next.ecommerce.header.frontend.bookmarkTitle\",\n userConsentManagement = \"next.ecommerce.header.frontend.userConsentManagement.enabled\",\n template = \"next.ecommerce.header.frontend.template\",\n variant = \"next.ecommerce.header.frontend.variant\",\n enableABPlatformTesting = \"next.ecommerce.header.frontend.abPlatformTesting\",\n enableSaleWarningModal = \"next.ecommerce.header.frontend.enableSaleWarningModal\",\n widescreenCookieConsent = \"next.ecommerce.header.frontend.widescreenCookieConsent\",\n privacyUrl = \"next.ecommerce.header.frontend.privacyUrl\",\n showBackToSiteBanner = \"next.ecommerce.header.frontend.showBackToSiteBanner\",\n backToSite = \"next.ecommerce.header.frontend.backToSite\",\n saleName = \"next.ecommerce.header.frontend.saleName\",\n dynatrace = \"next.ecommerce.header.frontend.dynatrace\",\n showStaticHeaderBanner = \"next.ecommerce.header.frontend.showStaticHeaderBanner.enabled\",\n showCloseButtonMobileSearch = \"next.ecommerce.header.frontend.showCloseButtonMobileSearch\",\n imagePlaceHolder = \"next.ecommerce.header.frontend.ImagePlaceholder\",\n secondaryMeganavCacheControl = \"next.ecommerce.header.frontend.cache-control.secondary-meganav.max-age\",\n defaultPrimaryConfig = \"next.ecommerce.header.frontend.defaultPrimaryConfig\",\n defaultSecondaryConfig = \"next.ecommerce.header.frontend.defaultSecondaryConfig\",\n rememberSelectedDepartment = \"next.ecommerce.header.frontend.rememberSelectedDepartment\",\n}\n\nexport interface SettingsModel {\n realm: string\n alignment: string\n territory: string\n language: string\n autocomplete: string\n favourites: string\n}\n","export const MODAL_TIMEOUT = 500\nexport const DEBOUNCE_TIME = 500\nexport const STICKY_HEADER_SCROLL_TRIGGER = 47\n\nexport const LIMIT_AUTO_COMPLETE_SUGGESTIONS = 10\n\nexport const BASELINECSS_MATERIALUI = \"materialui\"\nexport const BASELINECSS_CUSTOM = \"custom\"\nexport const JSS_SERVERSIDE = \"header-jss-server-side-\"\n\nexport const SUPPORTED_QUICKLINK_TYPES = Object.freeze({\n MyAccount: \"MyAccount\",\n Link: \"link\",\n})\n\nexport const SUPPORTED_MY_ACCOUNT_TYPES = Object.freeze({\n loggedIn: \"MyAccountLoggedIn\",\n loggedOut: \"MyAccountLoggedOut\",\n})\n\nexport enum TYPING_STATE {\n AUTO_COMPLETE = \"AUTO_COMPLETE\",\n RECENT_SEARCH = \"RECENT_SEARCH\",\n IDLE = \"IDLE\",\n}\n\nexport const SITE_URL_HEADER = \"x-next-siteurl\"\nexport const REALM_HEADER = \"x-next-realm\"\nexport const TERRITORY_HEADER = \"x-next-territory\"\nexport const LANGUAGE_HEADER = \"x-next-language\"\nexport const SITE_LAYOUT_HEADER = \"x-next-viewport-size\"\nexport const DEV_ESI_HEADER = \"test-with-local-esi\"\nexport const LOCALHOST = \"localhost\"\n\nexport const NEXT_REALM = \"next\"\nexport const CHILDSPLAY_REALM = \"childsplay\"\n\nexport type Anchor = \"top\" | \"bottom\" | \"left\" | \"right\"\n\nexport const MIN_NUMBER_CHAR_TO_SHOW_AUTOCOMPLETE = 3\nexport const COUNTRY_GB = \"gb\"\nexport const REGION_UK = \"uk\"\nexport const REGION_INTERNATIONAL = \"international\"\n\nexport const RPID_COOKIE = \"RPId\"\n\nexport const COUNTRY_SELECTOR_DRAWER_BREAKPOINT = \"524px\"\n\nexport const SOLD_OUT = \"soldout\"\nexport const IN_STOCK = \"instock\"\nexport const CLEAR_ALL = \"Clear all\"\nexport const QUERY_PARAMETER_TIME_MACHINE_DATE = \"time-machine-date\"\n\nexport const CHEVRON_ICON_URL = \"/icons/shared/chevron.svg\"\nexport const CLOSE_ICON_URL = \"/icons/shared/close.svg\"\n\nexport const SOFA_CATEGORY = \"sofas\"\nexport const IMAGE = \"image\"\nexport const UNDERSCORE = \"_\"\n\nexport const SOFA_CONTENT = \"SofaContent\"\n\nexport const COMMON_ITEM_IMAGE_URL = \"/common/items/default/default/itemimages/altitembag/\"\nexport const ITEM_ADD_TO_BAG_URL = \"/Item_AddToBag/\"\nexport const JPG = \".jpg\"\n\nexport const DEFAULT_HEADER_FILE_NAME = \"default-header.json\"\n\nexport const BFPO = \"bfpo\"\nexport const ENGLISH_LANGUAGE_CODE = \"en\"\n\nexport const GTM_BLOOMREACH_INFO = \"bloomreach\"\nexport const GTM_MONETATE_INFO = \"monetateEnabled\"\nexport const GTM_UCM_INFO = \"isUserConsentFeatureEnabled\"\nexport const SEARCH_DATA_GA = \"Search\"\nexport const SEARCH_DATA_GA_RECENT_SEARCH = \"Recent Search\"\nexport const SEARCH_ICON_DATA_GA = \"Press Icon\"\nexport const OPEN_SEARCH_DATA_GA = \"Open Search\"\nexport const CLOSE_SEARCH_DATA_GA = \"Close Search\"\nexport const SEARCH_DELETE_CURRENT_SEARCH_DATA_GA = \"Delete Current Search\"\nexport const SEARCH_PREVIOUS_SEARCH_DATA_GA = \"Previously Searched\"\nexport const SEARCH_CLEAR_PREVIOUS_SEARCH_DATA_GA = \"Clear All Previous Search\"\nexport const SEARCH_KEY_PRESS_ENTER_DATA_GA = \"Key Press Enter\"\nexport const HEADER_AUTOCOMPLETE_SEE_ALL_RESULTS_DATA_GA = \"See All Results\"\nexport const HEADER_AUTOCOMPLETE_LIST_ITEM_DATA_GA = \"list\"\nexport const HEADER_AUTOCOMPLETE_IMAGE_DATA_GA = \"image\"\nexport const COUNTRY_LANG_SELECTOR_DATA_GA = \"Country Language\"\nexport const COUNTRY_SELECT_DROPDOWN_DATA_GA = \"Country Select\"\n\nexport const SEARCH_BLUR_BREAKPOINT = \"768px\"\n\nexport const HEADER_NAV_BAR_QUICK_LINKS = \"Quick Links\"\nexport const HEADER_NAV_BAR_QUICK_LINKS_SHOPPING_BAG = \"Shopping bag\"\nexport const HEADER_NAV_BAR_QUICK_LINKS_FAVOURITES = \"Favourites\"\nexport const HEADER_NAV_BAR_QUICK_LINKS_MY_ACCOUNT = \"My Account\"\nexport const HEADER_NAV_BAR_SHOPPING_BAG_VIEW_BAG = \"View Bag\"\nexport const HEADER_NAV_BAR_SHOPPING_BAG_CHECKOUT = \"Checkout\"\nexport const HEADER_NAV_BAR_HELP = \"Help\"\nexport const HEADER_NAV_BAR_STORE_LOCATOR = \"Store Locator\"\n\nexport const MY_ACCOUNT_URL = \"/myaccount\"\nexport const NO_FOLLOW = \"nofollow\"\n\nexport const NEXT_COOKIE = \"NextConsentCookie\"\nexport const NEXT_DEVICE_TYPE_COOKIE = \"NextDeviceType\"\nexport const NEXT_DIRECT_COOKIE = \"NextDirectConsentCookie\"\nexport const COOKIE_VALUE = \"AllowCookiesFromNext=True\"\nexport const LOCAL_STORAGE_ACTIVE_DEPT_NAME = \"PrimaryNavDeptSelector\"\nexport const VISITED_PAGES = \"VisitedPages\"\n\nexport const BR_COOKIE_COOKIE_PARTS_LENGTH = 4\nexport const BR_COOKIE_COOKIE_UID_PARTS = 2\nexport const BR_COOKIE_COOKIE_UID_LENGTH = 2\nexport const BR_COOKIE_COOKIE_FULL_RANGE = 100\n\nexport const BR_COOKIE_COOKIE_NAME = \"_br_mt_search\"\nexport const BR_COOKIE_COOKIE_NUMBER_OF_DAYS = 1\nexport const BR_COOKIE_COOKIE_CACHING_ID = \"_br_uid_2\"\nexport const BR_SEARCH_VARIANT_COOKIE_NAME = \"_br_seg_id\"\n\nexport const TIME_MACHINE_DATE_COOKIE = \"time-machine-date\"\nexport const COUNTRY_SELECTOR_TYPING_DELAY_TIME = 2000\n\nexport const RPID = \"RPID\"\nexport const ACCOUNT_TYPE = \"AcctType\"\nexport const UNLIMITED_CUSTOMER = \"unlimitedCustomer\"\n\nexport const BURGER_MENU_TEMPLATE = \"burgerMenu\"\nexport const DEFAULT_TEMPLATE = \"default\"\nexport const VARIANT_DEFAULT = \"default\"\n\nexport const PLP_ENTRYPOINT_ID = \"next-plp-entrypoint\"\n\nexport const SHOW_BACK_TO_COOKIE = \"showBackToSiteBanner\"\nexport const BACK_TO_URL_COOKIE = \"backToSiteUrl\"\nexport const BACK_TO_TP_CLIENT_COOKIE = \"backToTpClient\"\n\nexport const BACK_TO_SITE_CLIENT_PARAM = \"fromsite\"\nexport const BACK_TO_SITE_URL_PARAM = \"fromsiteurl\"\n\nexport const MASID_COOKIE_NAME = \"MASId\"\nexport const MASID_COOKIE_SEGMENT_KEY_NAME = \"PS1\"\n\nexport const DRAWER_RESET_HEIGHT_SCROLL_TRIGGER = 47\nexport const OVERLAY_TIMEOUT = 0\nexport const PRIMARY_NAV_ITEM_HOVER_DELAY = 300\nexport const PRIMARY_NAV_SCROLL_ANIMATION_DELAY = 400\nexport const PRIMARY_NAV_ITEM_ACTIVE_HOVER_DELAY = 50\nexport const DRAWER_GAP = 48\nexport const CHEVRON_WIDTH = 8\nexport const NAV_BAR = \"Nav Bar\"\nexport const DEFAULT_PRIMARY_NAV_TYPE = \"primary\"\nexport const DEFAULT_SECONDARY_NAV_TYPE = \"secondary\"\nexport const DEFAULT_PRIMARY_NAV_VERSION = \"v1.0.0\"\nexport const DEFAULT_SECONDARY_NAV_VERSION = \"v1.0.0\"\n\nexport const MISSION_BLOCK_DATA_GA = \"Mission Block\"\n\nexport const DEFAULT_IMAGE_PLACEHOLDER = \"snail-default.png\"\nexport const DEFAULT_IMAGE_PLACEHOLDER_2X = \"snail-default-2x.png\"\nexport const DEFAULT_IMAGE_PLACEHOLDER_3X = \"snail-default-3x.png\"\n\nexport const LTR = \"ltr\"\nexport const RTL = \"rtl\"\nexport const SELECTED_DEPARTMENT_DETAILS = \"PrimaryNavDeptSelector\"\nexport const NEXT_DIRECT_PATH = \"nextdirect\"\nexport const MASID = \"MasID\"\nexport const MASIDCookieCutoff = \"| NV1_\"\nexport const SNAIL_TRAIL_CONTAINER = \"snail-trail-container\"\nexport const PLATFORM_MODERNISATION_MEGANAV = \"platform_modernisation_meganav\"\n\nexport const DEPENDENCIES_PRELOADVENDOR = \"preloadvendor\"\nexport const DEPENDENCIES_BUNDLEVENDOR = \"bundlevendor\"\n","import {FeatureSwitchData} from \"./searchBar\"\n\nexport enum SupportedFeatureTypes {\n SearchBar = \"SearchBar\",\n}\n\nexport class SupportedFeatures {\n public features = new SupportedFeatureSwitch()\n}\n\nexport class SupportedFeatureSwitch {\n public SearchBar = new FeatureSwitchData()\n}\n","import {getSettingsHeaders} from \"@next/utils\"\nimport {IncomingHttpHeaders} from \"http\"\nimport {Store} from \"redux\"\nimport logger from \"@next/core-logger\"\nimport {SettingsSdkKeys} from \"../../models/settings\"\nimport {BackToSite} from \"../../models/backToSite\"\nimport {QUERY_PARAMETER_TIME_MACHINE_DATE, COUNTRY_GB, TERRITORY_HEADER} from \"../../config/constants\"\n\nimport getConfigurationValue from \"../../utils/getConfigurationValue\"\n\nexport const SET_REQUEST = \"SET_REQUEST\"\nexport const SET_COOKIE_DOMAIN = \"SET_COOKIE_DOMAIN\"\nexport const SET_GEOLOCATION = \"SET_GEOLOCATION\"\nexport const SET_COOKIE_INFO = \"SET_COOKIE_INFO\"\nexport const SET_USE_TIME_MACHINE_COOKIE = \"SET_USE_TIME_MACHINE_COOKIE\"\nexport const SET_TERRITORY_DETAILS = \"SET_TERRITORY_DETAILS\"\nexport const SET_BLOOMREACH_INFO = \"SET_BLOMREACH_INFO\"\nexport const SET_MONETATE_INFO = \"SET_MONETATE_INFO\"\nexport const SET_SALE_WARNING_MODAL = \"SET_SALE_WARNING_MODAL\"\nexport const SET_PRIVACY_LINK = \"SET_PRIVACY_LINK\"\nexport const SET_SHOW_BACK_TO_SITE = \"SET_SHOW_BACK_TO_SITE\"\nexport const SET_BACK_TO_SITE = \"SET_BACK_TO_SITE\"\n\ninterface SetRequest {\n type: typeof SET_REQUEST\n payload: any\n}\n\ninterface SetCookieDomain {\n type: typeof SET_COOKIE_DOMAIN\n payload: string\n}\n\ninterface SetGeolocationData {\n type: typeof SET_GEOLOCATION\n payload: GeolocationData\n}\n\ninterface SetUseTimeMachineCookie {\n type: typeof SET_USE_TIME_MACHINE_COOKIE\n payload: boolean\n}\n\ninterface SetBrCookieInfo {\n type: typeof SET_COOKIE_INFO\n payload: CookieData\n}\n\ninterface SetBloomreachInfo {\n type: typeof SET_BLOOMREACH_INFO\n payload: BloomreachData\n}\n\ninterface SetTerritoryDetails {\n type: typeof SET_TERRITORY_DETAILS\n payload: TerritoryDetails\n}\n\ninterface SetMonetateInfo {\n type: typeof SET_MONETATE_INFO\n payload: MonetateData\n}\ninterface SetSaleWarningBag {\n type: typeof SET_SALE_WARNING_MODAL\n payload: boolean\n}\n\ninterface SetPrivacyUrl {\n type: typeof SET_PRIVACY_LINK\n payload: string\n}\n\ninterface SetShowBackToSite {\n type: typeof SET_SHOW_BACK_TO_SITE\n payload: boolean\n}\n\ninterface SetBackToSite {\n type: typeof SET_BACK_TO_SITE\n payload: BackToSite\n}\n\ntype Actions =\n | SetRequest\n | SetGeolocationData\n | SetBrCookieInfo\n | SetUseTimeMachineCookie\n | SetTerritoryDetails\n | SetBloomreachInfo\n | SetMonetateInfo\n | SetCookieDomain\n | SetSaleWarningBag\n | SetPrivacyUrl\n | SetShowBackToSite\n | SetBackToSite\n\nexport interface RequestDuckState {\n headers: IncomingHttpHeaders | null\n siteUrl: string\n url: string | null\n timeMachineDate: string | null\n isInternationalCountry: boolean\n geolocationBaseUrl: string\n geolocationVersion: number\n bloomReachCachingCookieList: string\n bloomReachCachingEnabled: boolean\n bloomreachGroupLocation: string\n bloomreachDomainKey: string\n useTimeMachineCookie: boolean\n currencyCode: string\n fullTerritoryName: string\n monetateSDK: boolean\n accountMonetateSDK: string\n cookieDomain: string\n showSaleWarningBag: boolean\n privacyUrl: string\n showBackToSiteBanner: boolean\n backToSite: BackToSite\n}\n\nconst initialState: RequestDuckState = {\n headers: null,\n siteUrl: \"\",\n url: null,\n timeMachineDate: null,\n isInternationalCountry: false,\n geolocationBaseUrl: \"\",\n geolocationVersion: 0,\n bloomReachCachingCookieList: \"\",\n bloomReachCachingEnabled: false,\n bloomreachGroupLocation: \"\",\n bloomreachDomainKey: \"\",\n useTimeMachineCookie: false,\n currencyCode: \"\",\n fullTerritoryName: \"\",\n monetateSDK: false,\n accountMonetateSDK: \"\",\n cookieDomain: \"\",\n showSaleWarningBag: false,\n privacyUrl: \"\",\n showBackToSiteBanner: false,\n backToSite: {} as BackToSite,\n}\n\nexport const setRequestAction = (store: Store, request: any) => {\n store.dispatch({\n type: SET_REQUEST,\n payload: request,\n })\n}\n\nexport const setCokieDomainAction = (store: Store, cookieDomain: string) => {\n store.dispatch({\n type: SET_COOKIE_DOMAIN,\n payload: cookieDomain,\n })\n}\n\nexport const setSaleWarningModalAction = (store: Store, conf) => {\n const enableSaleWarningModal = getConfigurationValue(conf, SettingsSdkKeys.enableSaleWarningModal, \"Value\")\n store.dispatch({\n type: SET_SALE_WARNING_MODAL,\n payload: enableSaleWarningModal,\n })\n}\n\ninterface GeolocationData {\n url: string\n version: number\n}\n\ninterface CookieData {\n bloomReachCachingCookieList: string\n bloomReachCachingEnabled: boolean\n}\n\ninterface BloomreachData {\n bloomreachGroupLocation: string\n bloomreachDomainKey: string\n}\n\ninterface MonetateData {\n monetateEnabled: boolean\n}\n\ninterface TerritoryDetails {\n currencyCode: string\n fullTerritoryName: string\n}\n\ntype BrCookieConf = {\n [SettingsSdkKeys.bloomReachCachingCookieList]: any\n [SettingsSdkKeys.bloomReachCachingEnabled]: any\n}\n\ntype BloomreachConf = {\n [SettingsSdkKeys.bloomreachGroupLocation]: any\n [SettingsSdkKeys.bloomreachDomainKey]: any\n}\n\ntype MonetateConf = {\n [SettingsSdkKeys.monetateSDK]: any\n}\n\ntype privacyUrlConf = {\n [SettingsSdkKeys.privacyUrl]: any\n}\n\ntype BackToSiteConf = {\n [SettingsSdkKeys.backToSite]: any\n}\n\ntype TerritoryDetailsConf = {\n [SettingsSdkKeys.currencyCode]: any\n [SettingsSdkKeys.fullTerritoryName]: any\n}\n\ntype ShowBannerConf = {\n [SettingsSdkKeys.showBackToSiteBanner]: {\n Value: boolean\n }\n}\n\nconst setUseTimeMachineCookie = (payload: boolean): Actions => ({\n type: SET_USE_TIME_MACHINE_COOKIE,\n payload,\n})\nconst setGeolocationUrl = (payload: GeolocationData): Actions => ({\n type: SET_GEOLOCATION,\n payload,\n})\n\nconst setBrCookieInfo = (payload: CookieData): Actions => ({\n type: SET_COOKIE_INFO,\n payload,\n})\n\nconst setBloomreachInfo = (payload: BloomreachData): Actions => ({\n type: SET_BLOOMREACH_INFO,\n payload,\n})\n\nconst setTerritoryDetails = (payload: TerritoryDetails): Actions => ({\n type: SET_TERRITORY_DETAILS,\n payload,\n})\n\nconst setMonetateInfo = (payload: MonetateData): Actions => ({\n type: SET_MONETATE_INFO,\n payload,\n})\n\nconst setPrivacyUrl = (payload: string): Actions => ({\n type: SET_PRIVACY_LINK,\n payload,\n})\n\nconst setShowBackToSite = (payload: boolean): Actions => ({\n type: SET_SHOW_BACK_TO_SITE,\n payload,\n})\n\nconst setBackToSite = (payload: BackToSite): Actions => ({\n type: SET_BACK_TO_SITE,\n payload,\n})\n\nexport const setTerritoryDetailsAction = (store: Store, configuration: TerritoryDetailsConf) => {\n const currencyCode = configuration[SettingsSdkKeys.currencyCode]?.Value\n const fullTerritoryName = configuration[SettingsSdkKeys.fullTerritoryName]?.Value\n store.dispatch(setTerritoryDetails({currencyCode, fullTerritoryName}))\n}\n\nexport const setMonetateInfoAction = (store: Store, configuration: MonetateConf) => {\n const monetateSDK = configuration[SettingsSdkKeys.monetateSDK]?.enabled\n store.dispatch(setMonetateInfo({monetateEnabled: monetateSDK}))\n}\n\nexport const setBackToSiteAction = (store: Store, configuration: BackToSiteConf) => {\n const backToSite = configuration[SettingsSdkKeys.backToSite]\n store.dispatch(setBackToSite(backToSite))\n}\n\nexport const setBrCookieInfoAction = (store: Store, configuration: BrCookieConf) => {\n const bloomReachCachingCookieList = configuration[SettingsSdkKeys.bloomReachCachingCookieList]?.Value\n const bloomReachCachingEnabled = configuration[SettingsSdkKeys.bloomReachCachingEnabled]?.Value\n store.dispatch(setBrCookieInfo({bloomReachCachingCookieList, bloomReachCachingEnabled}))\n}\n\nexport const setBloomreachInfoAction = (store: Store, configuration: BloomreachConf) => {\n const bloomreachGroupLocation = configuration[SettingsSdkKeys.bloomreachGroupLocation]?.Value\n const bloomreachDomainKey = configuration[SettingsSdkKeys.bloomreachDomainKey]?.Value\n store.dispatch(setBloomreachInfo({bloomreachGroupLocation, bloomreachDomainKey}))\n}\n\nconst getGeolocationVersion = (configuration: any) => configuration[SettingsSdkKeys.geolocationVersion]?.Value\n\nexport const setGeolocationUrlAction = (store: Store, url: string, configuration: any) => {\n const version = getGeolocationVersion(configuration)\n store.dispatch(setGeolocationUrl({url, version}))\n}\nexport const setUseTimeMachineCookieAction = (store: Store, useTimeMachineCookie: string) => {\n const acceptableValues = [\"true\", \"false\"]\n const lowerCaseUseTMCookie = useTimeMachineCookie.toLowerCase()\n if (acceptableValues.includes(lowerCaseUseTMCookie)) {\n const useTimeMachineCookieValue = lowerCaseUseTMCookie === \"true\"\n store.dispatch(setUseTimeMachineCookie(useTimeMachineCookieValue))\n } else {\n logger.warn(\n `Warning: invalid value set for use time machine cookie: ${useTimeMachineCookie} should be either 'true' or 'false'. useTimeMachineCookie is set to false`,\n )\n }\n}\n\nexport const setPrivacyUrlAction = (store: Store, configuration: privacyUrlConf) => {\n const url = configuration[SettingsSdkKeys.privacyUrl]?.Value\n store.dispatch(setPrivacyUrl(url))\n}\n\nexport const setShowBackToSiteBannerAction = (store: Store, conf: ShowBannerConf) => {\n const showBanner = conf[SettingsSdkKeys.showBackToSiteBanner].Value\n if (showBanner) store.dispatch(setShowBackToSite(true))\n}\n\nexport const closeBannerAction = () => (_dispatch: any) => {\n _dispatch(setShowBackToSite(false))\n}\n\nconst reducer = (state: RequestDuckState = initialState, action: Actions): RequestDuckState => {\n switch (action.type) {\n case SET_REQUEST:\n return {\n ...state,\n headers: getSettingsHeaders(action.payload.headers),\n siteUrl: action.payload.siteUrl.url,\n url: action.payload.url,\n timeMachineDate: action.payload.query[QUERY_PARAMETER_TIME_MACHINE_DATE],\n isInternationalCountry:\n action.payload.headers![TERRITORY_HEADER] &&\n action.payload.headers![TERRITORY_HEADER].toLowerCase() !== COUNTRY_GB,\n }\n case SET_COOKIE_DOMAIN:\n return {...state, cookieDomain: action.payload}\n case SET_GEOLOCATION:\n return {...state, geolocationBaseUrl: action.payload.url, geolocationVersion: action.payload.version}\n case SET_USE_TIME_MACHINE_COOKIE:\n return {...state, useTimeMachineCookie: action.payload}\n case SET_COOKIE_INFO:\n return {\n ...state,\n bloomReachCachingCookieList: action.payload.bloomReachCachingCookieList,\n bloomReachCachingEnabled: action.payload.bloomReachCachingEnabled,\n }\n case SET_BLOOMREACH_INFO:\n return {\n ...state,\n bloomreachGroupLocation: action.payload.bloomreachGroupLocation,\n bloomreachDomainKey: action.payload.bloomreachDomainKey,\n }\n case SET_TERRITORY_DETAILS:\n return {\n ...state,\n currencyCode: action.payload.currencyCode,\n fullTerritoryName: action.payload.fullTerritoryName,\n }\n case SET_MONETATE_INFO:\n return {...state, monetateSDK: action.payload.monetateEnabled}\n case SET_SALE_WARNING_MODAL:\n return {...state, showSaleWarningBag: action.payload}\n case SET_PRIVACY_LINK:\n return {...state, privacyUrl: action.payload}\n case SET_SHOW_BACK_TO_SITE:\n return {...state, showBackToSiteBanner: action.payload}\n case SET_BACK_TO_SITE:\n return {...state, backToSite: action.payload}\n default:\n return state\n }\n}\n\nexport default reducer\n","export class ProductsMaxItemsData {\n public xs = 0\n public sm = 0\n public md = 0\n public lg = 0\n public xl = 0\n}\n\nexport class SearchBarType {\n [key: string]: any\n public MaxItems = 0\n public ProductsMaxItems? = new ProductsMaxItemsData()\n public Value = true\n}\n\nexport class FeatureSwitchData {\n [key: string]: any\n public Value = \"\"\n public Autocomplete? = new SearchBarType()\n public RecentSearch? = new SearchBarType()\n}\n\nexport const SupportedSearchBar = {\n SimpleSearch: \"SimpleSearch\",\n EnrichSearch: \"EnrichSearch\",\n}\n","import {Reducer, Dispatch} from \"redux\"\nimport Cookies from \"js-cookie\"\nimport {SupportedFeatureTypes} from \"../../models/features\"\n\nconst COOKIE_KEY = \"recentSearches\"\n\nexport type RecentsDuckState = {\n queryIds: string[]\n}\n\ntype PartialState = Partial\ntype GetState = any\n\nexport const SET_RECENT_SEARCH = \"SET_RECENT_SEARCH\"\n\ntype Action = {\n type: typeof SET_RECENT_SEARCH\n payload: PartialState\n}\n\nexport const setRecent = (payload: PartialState) => ({\n type: SET_RECENT_SEARCH,\n payload,\n})\n\nexport const createRecentQuery = (term: string) => (dispatch: Dispatch, getState: GetState) => {\n const {\n request: {cookieDomain},\n recents: {queryIds: oldQueryIds},\n } = getState()\n const MaxItems = getState().features[SupportedFeatureTypes.SearchBar]?.RecentSearch?.MaxItems\n\n const startIndex = oldQueryIds.length >= MaxItems ? 1 : 0\n const queryIds = oldQueryIds.slice(startIndex, MaxItems).concat(term).filter(id => id.trim() !== \"\")\n const payload = {queryIds}\n\n dispatch(setRecent(payload))\n\n if (queryIds !== []) {\n Cookies.set(COOKIE_KEY, payload.queryIds, {domain: cookieDomain})\n }\n}\nexport const deleteRecentQueries = () => (dispatch: Dispatch, getState: GetState) => {\n const {cookieDomain} = getState().request\n const payload = {...initialState}\n dispatch(setRecent(payload))\n Cookies.remove(COOKIE_KEY, {domain: cookieDomain})\n}\nexport const updateRecentQueries = () => (dispatch: Dispatch) => {\n let storedQueries = Cookies.getJSON(COOKIE_KEY) || []\n if (!Array.isArray(storedQueries) || (storedQueries.length > 0 && typeof storedQueries[0] !== \"string\")) {\n deleteRecentQueries()\n storedQueries = []\n }\n const queryIds = storedQueries.map(queryId => queryId)\n const payload = {queryIds}\n dispatch(setRecent(payload))\n}\n\nconst initialState: RecentsDuckState = {\n queryIds: [],\n}\n\nconst reducer: Reducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_RECENT_SEARCH:\n return {...state, ...action.payload}\n default:\n return state\n }\n}\nexport default reducer\n","import {MIN_NUMBER_CHAR_TO_SHOW_AUTOCOMPLETE} from \"../../config/constants\"\n\nexport type SearchDuckState = {\n typedCharacters: string\n showAutocomplete: boolean\n showRecentSearch: boolean\n}\n\nexport const SET_TYPED_SEARCH = \"SET_TYPED_SEARCH\"\nexport const SHOW_AUTOCOMPLETE_PANEL = \"SHOW_AUTOCOMPLETE_PANEL\"\nexport const SHOW_RECENTSEARCH_PANEL = \"SHOW_RECENTSEARCH_PANEL\"\n\ntype Actions = {\n type: typeof SET_TYPED_SEARCH | typeof SHOW_AUTOCOMPLETE_PANEL | typeof SHOW_RECENTSEARCH_PANEL\n payload: string | boolean\n}\n\nexport const setSearch = (payload: string): Actions => ({\n type: SET_TYPED_SEARCH,\n payload,\n})\n\nexport const showAutoComplete = (payload: boolean): Actions => ({\n type: SHOW_AUTOCOMPLETE_PANEL,\n payload,\n})\n\nexport const showRecentSearch = (payload: boolean): Actions => ({\n type: SHOW_RECENTSEARCH_PANEL,\n payload,\n})\n\nexport const getPlpUrl = (plpUrl: string) => (term: string) => `${plpUrl}/search?w=${encodeURIComponent(term)}`\n\nexport const search = (plpUrl: string, term: string) => () => {\n const plpUrlPath = getPlpUrl(plpUrl)(term)\n window.location.href = plpUrlPath\n}\n\nexport const typing = (typedCharacters: string) => (dispatch: any) => {\n dispatch(setSearch(typedCharacters))\n dispatch(openDrawer())\n}\n\nexport const openDrawer = () => (dispatch: any, getState: any) => {\n const {typedCharacters} = getState().search\n const autocompleteFeature = getState().features.SearchBar.Autocomplete\n const isAutocompleteEnabled = autocompleteFeature ? autocompleteFeature.Value : true\n if (typedCharacters.length >= MIN_NUMBER_CHAR_TO_SHOW_AUTOCOMPLETE && isAutocompleteEnabled) {\n dispatch(showAutoComplete(true))\n dispatch(showRecentSearch(false))\n } else {\n dispatch(showRecentSearch(true))\n dispatch(showAutoComplete(false))\n }\n}\n\nexport const closeAllPanels = () => (dispatch: any) => {\n dispatch(showRecentSearch(false))\n dispatch(showAutoComplete(false))\n}\n\nconst initialState: SearchDuckState = {\n typedCharacters: \"\",\n showAutocomplete: false,\n showRecentSearch: false,\n}\n\nconst reducer = (state: SearchDuckState = initialState, action) => {\n switch (action.type) {\n case SET_TYPED_SEARCH:\n return {...state, typedCharacters: action.payload}\n case SHOW_AUTOCOMPLETE_PANEL:\n return {...state, showAutocomplete: action.payload}\n case SHOW_RECENTSEARCH_PANEL:\n return {...state, showRecentSearch: action.payload}\n default:\n return state\n }\n}\nexport default reducer\n","import env from \"../../config/env\"\nimport {\n SOFA_CATEGORY,\n SOFA_CONTENT,\n COMMON_ITEM_IMAGE_URL,\n ITEM_ADD_TO_BAG_URL,\n JPG,\n IMAGE,\n UNDERSCORE,\n} from \"../../config/constants\"\nimport {Item, FieldValue} from \"../../models/shoppingbag\"\n\nexport const getImageUrl = (fields: FieldValue[]) => {\n const imageField = fields.find(f => f.Field === IMAGE)\n if (imageField) return imageField?.Value\n}\n\nexport const getItemImageUrl = (item: Item): string => {\n const {\n LinkedItems,\n ItemNumber,\n OptionNo,\n ItemCategory,\n Personalisation,\n PersonalisationFields,\n CustomItemFields,\n } = item\n const linkedItemNumber =\n LinkedItems && LinkedItems?.length > 0 && LinkedItems[0].ItemNumber !== \"\"\n ? `${UNDERSCORE}${LinkedItems[0].ItemNumber}`\n : \"\"\n let itemImageUrl = `${env.REACT_APP_CDN_BASEURL}${COMMON_ITEM_IMAGE_URL}${ItemNumber}${JPG}`\n const itemUrl = `${ITEM_ADD_TO_BAG_URL}${ItemNumber}${UNDERSCORE}${OptionNo}${linkedItemNumber}${JPG}`\n\n if (ItemCategory === SOFA_CATEGORY) {\n itemImageUrl = `${env.REACT_APP_CDN_BASEURL}/${SOFA_CONTENT}${itemUrl}`\n } else if (Personalisation === \"Y\") {\n if (PersonalisationFields.length > 0) {\n itemImageUrl = getImageUrl(PersonalisationFields) || itemImageUrl\n } else if (CustomItemFields.length > 0) {\n itemImageUrl = getImageUrl(CustomItemFields) || itemImageUrl\n }\n }\n return itemImageUrl\n}\n","export const getOrigin = (url: string): string | null => {\n if (!url) return null\n try {\n if (typeof URL === \"function\") return new URL(url).origin\n // FIX for IE 11, alternative is to use polyfill .\n const parser = document.createElement(\"a\")\n parser.href = url\n return `${parser.protocol}//${parser.hostname}`\n } catch (e) {\n return null\n }\n}\n","import {ChargesAndIncentive} from \"../../models/shoppingbag\"\n\nexport const excludeIncentives = (incentives: ChargesAndIncentive[]) => {\n const exclusions = [\"CMO\", \"CSR\", \"CTC\"]\n\n return incentives.filter(x => !exclusions.includes(x.Type))\n}\n\nexport default excludeIncentives\n","// TODO scaffold shopping bag to be implement in minibag PBI\nimport {Reducer} from \"redux\"\nimport {GetBagCallbackContractModel} from \"@next/eventservice\"\nimport {ShoppingBag} from \"../../models/shoppingbag\"\nimport type State from \"../state\"\nimport {getItemImageUrl} from \"../../utils/getMiniShoppingbagItemImageUrl\"\nimport {getOrigin} from \"../../utils/getOrigin\"\nimport {excludeIncentives} from \"../../utils/excludeIncentives\"\n\nexport type ShoppingBagDuckState = {\n itemCount: number\n bag: ShoppingBag\n loading: boolean\n}\n\nexport const SET_BAG = \"SET_BAG\"\n\ntype Action = {\n type: typeof SET_BAG\n payload: ShoppingBagDuckState\n}\n\nexport const setBag = (payload: ShoppingBagDuckState) => ({\n type: SET_BAG,\n payload,\n})\n\nexport const updateBag = (getBagData: GetBagCallbackContractModel) => (dispatch: any, getState: any) => {\n const {\n request: {siteUrl},\n } = getState() as State\n\n if (getBagData.success) {\n const bag = getBagData.data.ShoppingBag\n bag.Items = bag.Items.reverse().map(item => ({\n ...item,\n itemImageUrl: getItemImageUrl(item),\n Url: `${siteUrl ? getOrigin(siteUrl) : \"\"}${item.Url}`,\n }))\n const itemCount = getBagData.data.ShoppingBag.ItemCount\n if (bag.ChargesAndIncentives && bag.ChargesAndIncentives.length > 0) {\n bag.ChargesAndIncentives = excludeIncentives(bag.ChargesAndIncentives)\n }\n dispatch(setBag({itemCount, bag, loading: false}))\n } else {\n dispatch(setBag(initialState))\n }\n}\n\nexport const addEVoucherToBag = (getBagData: GetBagCallbackContractModel) => (dispatch: any, getState: any) => {\n const {\n shoppingBag: {bag},\n request: {siteUrl},\n } = getState() as State\n if (getBagData.success) {\n const bagForEVoucher = getBagData.data.Bag != null ? getBagData.data.Bag : bag\n const {ItemCount} = bagForEVoucher\n\n bagForEVoucher.Items = bagForEVoucher.Items.reverse().map(item => ({\n ...item,\n itemImageUrl: getItemImageUrl(item),\n Url: `${siteUrl ? getOrigin(siteUrl) : \"\"}${item.Url}`,\n }))\n if (bagForEVoucher.ChargesAndIncentives && bagForEVoucher.ChargesAndIncentives.length > 0) {\n bagForEVoucher.ChargesAndIncentives = excludeIncentives(bagForEVoucher.ChargesAndIncentives)\n }\n\n dispatch(setBag({itemCount: ItemCount, bag: bagForEVoucher, loading: false}))\n } else {\n dispatch(setBag(initialState))\n }\n}\n\nconst initialState: ShoppingBagDuckState = {\n itemCount: 0,\n bag: {} as ShoppingBag,\n loading: true,\n}\n\nconst reducer: Reducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_BAG:\n return {...state, ...action.payload}\n default:\n return state\n }\n}\n\nexport default reducer\n","export const getRegExValue = (valueIn: any, name: string, pattern: string) => {\n const re = new RegExp(name + pattern)\n const value = re.exec(valueIn)\n return value ? unescape(value[1]) : null\n}\n\nexport const escapeRegex = (value: string) => {\n return value.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\")\n}\n","import { createMuiTheme } from '@material-ui/core/styles';\nimport logger from '@next/core-logger';\n\nvar ThemeColor = function () {\n function ThemeColor() {\n this.font = {\n primary: {\n regular: {\n family: \"\",\n filename: \"\",\n formats: [],\n weight: 400\n },\n light: {\n family: \"\",\n filename: \"\",\n formats: [],\n weight: 400\n },\n medium: {\n family: \"\",\n filename: \"\",\n formats: [],\n weight: 400\n },\n italic: {\n family: \"\",\n filename: \"\",\n formats: [],\n weight: 400\n }\n },\n secondary: {\n regular: {\n family: \"\",\n filename: \"\",\n formats: [],\n weight: 400\n },\n light: {\n family: \"\",\n filename: \"\",\n formats: [],\n weight: 400\n },\n medium: {\n family: \"\",\n filename: \"\",\n formats: [],\n weight: 400\n },\n italic: {\n family: \"\",\n filename: \"\",\n formats: [],\n weight: 400\n }\n },\n default: '\"Helvetica Neue\", Arial, sans-serif'\n };\n this.form = {\n buttonPrimary: {\n border: \"\",\n background: \"\",\n color: \"\",\n radius: \"\",\n opacity: \"\"\n },\n buttonSecondary: {\n border: \"\",\n background: \"\",\n color: \"\",\n radius: \"\",\n opacity: \"\"\n },\n buttonTertiary: {\n border: \"\",\n background: \"\",\n color: \"\",\n radius: \"\",\n opacity: \"\"\n },\n input: {\n radius: \"\",\n background: \"\",\n color: \"\",\n border: \"\",\n placeholder: \"\",\n focusActive: {\n background: \"\"\n }\n },\n default: {\n border: \"\",\n background: \"\",\n radius: \"\"\n },\n disabled: {\n border: \"\",\n background: \"\",\n radius: \"\"\n },\n focusActive: {\n border: \"\",\n background: \"\",\n radius: \"\"\n },\n invalid: {\n border: \"\",\n background: \"\",\n radius: \"\"\n },\n selectedAccent: {\n border: \"\",\n background: \"\",\n radius: \"\"\n },\n selectedBlock: {\n border: \"\",\n background: \"\",\n radius: \"\"\n },\n success: {\n border: \"\",\n background: \"\",\n radius: \"\"\n }\n };\n this.borders = {\n primary: {\n border: \"\",\n radius: \"\"\n },\n secondary: {\n border: \"\",\n radius: \"\"\n }\n };\n this.palette = {\n modal: {\n backdrop: {\n primary: \"\",\n secondary: \"\"\n },\n background: {\n primary: \"\",\n secondary: \"\"\n }\n }\n };\n this.text = {\n default: \"\",\n disabled: \"\",\n reversed: \"\",\n error: \"\",\n hyperlink: \"\",\n muted: \"\",\n strong: \"\",\n success: \"\",\n warning: \"\",\n navigation: {\n link: \"\",\n linkActive: \"\",\n linkClearance: \"\",\n fontWeight: 0\n }\n };\n this.drawer = {\n headerBorder: \"\",\n headerBackground: \"\"\n };\n this.plp = {\n layout: {\n flexDirection: \"\",\n hasColourChips: \"\",\n hasBrandName: \"\"\n },\n listing: {\n textAlign: \"\"\n },\n facetDivider: \"\",\n filters: {\n titleTransform: \"\",\n clearBtnBorderWidth: \"\"\n }\n };\n this.footer = {\n socialMedia: {\n background: \"\"\n },\n quickLinks: {\n background: \"\"\n },\n mainLinks: {\n background: \"\"\n },\n copyright: {\n background: \"\"\n }\n };\n this.header = {\n navUpperBackground: {\n default: \"\",\n color: \"\"\n },\n navLowerBackground: {\n default: \"\",\n desktop: \"\",\n active: \"\",\n border: \"\"\n },\n shoppingBag: {\n color: \"\",\n fontWeight: \"\",\n fontSize: \"\",\n promotionColor: \"\",\n deliveryColor: \"\"\n },\n myAccount: {\n background: \"\",\n radius: \"\",\n color: \"\"\n },\n autoCompleteButton: {\n backgroundcolor: \"\",\n color: \"\",\n radius: \"\"\n },\n snailItemUnderline: {\n border: \"\"\n }\n };\n this.popover = {\n border: \"\",\n radius: \"\",\n backgroundColour: \"\",\n fontSize: \"\",\n boxShadow: \"\",\n header: {\n backgroundColour: \"\",\n borderBottom: \"\"\n }\n };\n this.utilities = {\n divider: \"\",\n dividerDark: \"\",\n backgroundAccent: \"\",\n activeBorder: \"\",\n chipBorderRadius: \"\"\n };\n this.countrySelect = {\n logoPosition: \"\",\n headerBarHeight: \"\",\n headerBackground: \"\",\n headerBorderBottom: \"\",\n accordionHeaderTransform: \"\",\n accordionHeaderLetterSpacing: \"\"\n };\n }\n\n return ThemeColor;\n}();\n\nvar buildFont = function buildFont(fontFamily, format, url) {\n return \"url(\\\"\" + url + \"/\" + fontFamily + \".\" + format + \"\\\") format('\" + format + \"')\";\n};\n\nvar fontBuilder = function fontBuilder(fontFamily, url) {\n return function () {\n var formats = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n formats[_i] = arguments[_i];\n }\n\n return formats.map(function (format) {\n return buildFont(fontFamily, format, url);\n }).join(\", \");\n };\n};\n\nvar str = function str(family, filename, formats, url) {\n if (filename) return \"src: \" + fontBuilder(filename, url).apply(void 0, formats) + \";\";\n return \"src: local(\" + family + \");\";\n};\n\nvar FONTS = function FONTS(theme, url, containerId) {\n return \"\\n \";\n};\n\nvar breakpoints = {\n values: {\n xs: 0,\n sm: 400,\n md: 768,\n lg: 1024,\n xl: 1280\n }\n};\n\nvar nextMaterialUITheme = function nextMaterialUITheme(theme, textAlignment) {\n return createMuiTheme({\n direction: textAlignment,\n breakpoints: breakpoints,\n typography: {\n fontFamily: theme.font.primary.regular.family + \", \" + theme.font.default,\n h1: {\n fontFamily: theme.font.primary.medium.family + \", \" + theme.font.default,\n color: theme.text.default,\n fontSize: \"1.5rem\",\n letterSpacing: \"0.12px\",\n lineHeight: 1.5,\n fontWeight: theme.font.primary.medium.weight\n },\n h2: {\n fontFamily: theme.font.primary.medium.family + \", \" + theme.font.default,\n color: theme.text.default,\n fontSize: \"1.25rem\",\n letterSpacing: \"0.12px\",\n lineHeight: 1.5,\n fontWeight: theme.font.primary.medium.weight\n },\n h3: {\n fontFamily: theme.font.primary.medium.family + \", \" + theme.font.default,\n color: theme.text.default,\n fontSize: \"1rem\",\n letterSpacing: \"0.12px\",\n lineHeight: 1.5,\n fontWeight: theme.font.primary.medium.weight\n },\n h4: {\n fontFamily: theme.font.primary.medium.family + \", \" + theme.font.default,\n color: theme.text.default,\n fontSize: \"0.938rem\",\n lineHeight: 1.5,\n letterSpacing: \"0.12px\",\n fontWeight: theme.font.primary.medium.weight\n },\n h5: {\n fontFamily: theme.font.primary.medium.family + \", \" + theme.font.default,\n color: theme.text.default,\n fontSize: \"0.875rem\",\n letterSpacing: \"0.12px\",\n lineHeight: 1.5,\n fontWeight: theme.font.primary.medium.weight\n },\n h6: {\n fontFamily: theme.font.primary.medium.family + \", \" + theme.font.default,\n color: theme.text.default,\n fontSize: \"0.75rem\",\n lineHeight: 1.5,\n letterSpacing: \"0.12px\",\n fontWeight: theme.font.primary.medium.weight\n },\n subtitle1: {\n color: theme.text.default,\n fontSize: \"0.875rem\",\n lineHeight: 1.5,\n letterSpacing: \"0.12px\"\n },\n subtitle2: {\n color: theme.text.default,\n fontSize: \"0.875rem\",\n lineHeight: 1.5,\n letterSpacing: \"0.12px\"\n },\n body1: {\n color: theme.text.default,\n fontSize: \"0.875rem\",\n lineHeight: 1.5,\n letterSpacing: \"0.12px\"\n },\n body2: {\n color: theme.text.default,\n fontSize: \"0.75rem\",\n lineHeight: 1.5,\n letterSpacing: \"0.12px\"\n }\n },\n palette: {\n primary: {\n main: theme.text.default\n },\n secondary: {\n main: theme.text.reversed\n },\n error: {\n main: theme.text.error\n },\n warning: {\n main: theme.text.warning\n },\n success: {\n main: theme.text.success\n },\n action: {\n disabledOpacity: 0.5\n }\n },\n overrides: {\n MuiButton: {\n root: {\n fontFamily: theme.font.primary.medium.family + \", \" + theme.font.default,\n textTransform: \"none\",\n fontSize: \"0.875rem\",\n lineHeight: 1.5,\n letterSpacing: \"0.12px\",\n fontWeight: theme.font.primary.medium.weight,\n background: theme.form.buttonPrimary.background,\n color: theme.form.buttonPrimary.color,\n borderRadius: theme.form.buttonPrimary.radius,\n border: theme.form.buttonPrimary.border,\n \"&:focus\": {\n border: theme.form.focusActive.border,\n background: theme.form.focusActive.background,\n borderRadius: theme.form.focusActive.radius\n },\n \"&:active\": {\n border: theme.form.selectedBlock.border,\n background: theme.form.selectedBlock.background,\n borderRadius: theme.form.selectedBlock.radius\n },\n \"&:disabled\": {\n border: theme.form.disabled.border,\n background: theme.form.disabled.background,\n borderRadius: theme.form.disabled.radius\n }\n }\n },\n MuiExpansionPanel: {\n root: {\n backgroundColor: theme.utilities.backgroundAccent\n }\n },\n MuiListItem: {\n root: {\n \"&$selected\": {\n backgroundColor: theme.utilities.backgroundAccent\n },\n \"&$selected:hover\": {\n backgroundColor: theme.utilities.backgroundAccent\n }\n }\n }\n },\n props: {\n MuiTypography: {\n variantMapping: {\n h1: \"h1\",\n h2: \"h1\",\n h3: \"h1\",\n h4: \"h2\",\n h5: \"h3\",\n h6: \"h4\"\n }\n }\n }\n });\n};\n\nvar isThemeValid = function isThemeValid(theme) {\n if (!theme) {\n logger.error(\"Feature Settings - Theme is not provided\");\n return false;\n }\n\n return !validateSettings(new ThemeColor(), theme, \"\");\n};\n\nvar validateSettings = function validateSettings(theme, themeToTest, parentKey) {\n return Object.keys(theme).some(function (key) {\n var combinedKey = formatKey(parentKey, key);\n\n if (!themeToTest[key]) {\n logger.error(\"Feature Setting - Theme: \" + combinedKey + \" is not provided\");\n return true;\n }\n\n if (typeof theme[key] === \"object\") {\n return validateSettings(theme[key], themeToTest[key], combinedKey) > 0;\n }\n\n return false;\n });\n};\n\nvar formatKey = function formatKey(oldKey, newKey) {\n return oldKey ? oldKey + \" - \" + newKey : newKey;\n};\n\nvar mockColors = {\n font: {\n primary: {\n regular: {\n family: '\"AzoSansRegular\"',\n filename: \"AzoSans-Regular-webfont\",\n formats: [\"woff\", \"woff2\"],\n weight: 700\n },\n light: {\n family: '\"AzoSans\"',\n filename: \"AzoSans-Light-webfont\",\n formats: [\"woff\", \"woff2\", \"eot\"],\n weight: 400\n },\n medium: {\n family: '\"AzoSansMedium\"',\n filename: \"AzoSans-Medium-webfont\",\n formats: [\"woff\", \"woff2\", \"eot\"],\n weight: 500\n },\n italic: {\n family: '\"AzoSansItalic\"',\n filename: \"AzoSans-Italic-webfont\",\n formats: [\"woff\", \"woff2\", \"eot\"],\n weight: 400\n }\n },\n secondary: {\n regular: {\n family: '\"AzoSansRegular\"',\n filename: \"AzoSans-Regular-webfont\",\n formats: [\"woff\", \"woff2\"],\n weight: 700\n },\n light: {\n family: '\"AzoSans\"',\n filename: \"AzoSans-Light-webfont\",\n formats: [\"woff\", \"woff2\", \"eot\"],\n weight: 400\n },\n medium: {\n family: '\"AzoSansMedium\"',\n filename: \"AzoSans-Medium-webfont\",\n formats: [\"woff\", \"woff2\", \"eot\"],\n weight: 500\n },\n italic: {\n family: '\"AzoSansItalic\"',\n filename: \"AzoSans-Italic-webfont\",\n formats: [\"woff\", \"woff2\", \"eot\"],\n weight: 400\n }\n },\n default: '\"Helvetica Neue\", Arial, sans-serif'\n },\n form: {\n buttonPrimary: {\n border: \"0\",\n background: \"#30a74b\",\n color: \"#ffffff\",\n radius: \"0.25rem\",\n opacity: \"0.5\"\n },\n buttonSecondary: {\n border: \".0625rem solid #000000\",\n background: \"#ffffff\",\n color: \"#000000\",\n radius: \"0.25rem\",\n opacity: \"0.5\"\n },\n buttonTertiary: {\n border: \"0\",\n background: \"#000000\",\n color: \"#ffffff\",\n radius: \"0.25rem\",\n opacity: \"0.5\"\n },\n input: {\n radius: \"0.25rem\",\n color: \"#000\",\n background: \"#fff\",\n border: \"0.0625rem solid #eaeaea\",\n placeholder: \"#515151\",\n focusActive: {\n background: \"#ffffff\"\n }\n },\n default: {\n border: \".0625rem solid #9e9e9e\",\n background: \"#ffffff\",\n radius: \"0.25rem\"\n },\n disabled: {\n border: \".0625rem solid #dedede\",\n background: \"#ffffff\",\n radius: \"0.25rem\"\n },\n focusActive: {\n border: \".0625rem solid #000000\",\n background: \"#ffffff\",\n radius: \"0.25rem\"\n },\n invalid: {\n border: \".0625rem solid #d91440\",\n background: \"#ffffff\",\n radius: \"0.25rem\"\n },\n selectedAccent: {\n border: \".125rem solid #257F39\",\n background: \"#ffffff\",\n radius: \"0.25rem\"\n },\n selectedBlock: {\n border: \".125rem solid #257F39\",\n background: \"rgba(255, 226, 216, 0.39)\",\n radius: \"0.25rem\"\n },\n success: {\n border: \".0625rem solid #109449\",\n background: \"#ffffff\",\n radius: \"0.25rem\"\n }\n },\n text: {\n default: \"#000000\",\n disabled: \"#c5c5c5\",\n reversed: \"#ffffff\",\n error: \"#d91440\",\n hyperlink: \"#257f39\",\n muted: \"#515151\",\n strong: \"#000000\",\n success: \"#257f39\",\n warning: \"#d88f31\",\n navigation: {\n link: \"#ffffff\",\n linkActive: \"#000000\",\n linkClearance: \"#f28500\",\n fontWeight: 500\n }\n },\n borders: {\n primary: {\n border: \"0.0625rem solid #9e9e9e\",\n radius: \"0.125rem\"\n },\n secondary: {\n border: \"0.0625rem solid #9e9e9e\",\n radius: \"0.3125rem\"\n }\n },\n palette: {\n modal: {\n backdrop: {\n primary: \"0, 0, 0, 0.5\",\n secondary: \"0, 0, 0, 0.9\"\n },\n background: {\n primary: \"#ffffff\",\n secondary: \"#f7f7f7\"\n }\n }\n },\n footer: {\n socialMedia: {\n background: \"initial\"\n },\n quickLinks: {\n background: \"#f7f7f7\"\n },\n mainLinks: {\n background: \"#f7f7f7\"\n },\n copyright: {\n background: \"#f7f7f7\"\n }\n },\n header: {\n navUpperBackground: {\n default: \"#000000\",\n color: \"#ffffff\"\n },\n navLowerBackground: {\n default: \"#1e1e1e\",\n desktop: \"#000000\",\n active: \"#ffffff\",\n border: \"0\"\n },\n shoppingBag: {\n color: \"#fff\",\n fontWeight: \"bold\",\n fontSize: \"0.688rem\",\n promotionColor: \"#000\",\n deliveryColor: \"#000\"\n },\n myAccount: {\n background: \"#fff\",\n radius: \"0.25rem\",\n color: \"#000\"\n },\n autoCompleteButton: {\n backgroundcolor: \"#282828\",\n color: \"white\",\n radius: \"2px\"\n },\n snailItemUnderline: {\n border: \"0.0625rem solid white\"\n }\n },\n popover: {\n border: \"0.0625rem solid #9e9e9e\",\n radius: \"0.25rem\",\n backgroundColour: \"#f7f7f7\",\n fontSize: \"0.75rem\",\n boxShadow: \"0px 3px 4px 1px rgba(0, 0, 0, 0.4)\",\n header: {\n backgroundColour: \"#f7f7f7\",\n borderBottom: \".0625rem solid #d8d8d8\"\n }\n },\n utilities: {\n divider: \"0.0625rem solid #eaeaea\",\n dividerDark: \".0625rem solid #9e9e9e\",\n backgroundAccent: \"#f7f7f7\",\n activeBorder: \"0.125rem solid #257f39\",\n chipBorderRadius: \"0.25rem\"\n },\n drawer: {\n headerBorder: \"#f7f7f7\",\n headerBackground: \".0625rem solid #d8d8d8\"\n },\n plp: {\n layout: {\n flexDirection: \"initial\",\n hasColourChips: \"none\",\n hasBrandName: \"none\"\n },\n listing: {\n textAlign: \"left\"\n },\n facetDivider: \"0.0625rem solid #d1d1d1\",\n filters: {\n titleTransform: \"uppercase\",\n clearBtnBorderWidth: \"0\"\n }\n },\n countrySelect: {\n logoPosition: \"flex-start\",\n headerBarHeight: \"2.75rem\",\n headerBackground: \"#000000\",\n headerBorderBottom: \"none\",\n accordionHeaderTransform: \"capitalize\",\n accordionHeaderLetterSpacing: \"0.0075rem\"\n }\n};\nvar mockTheme = {\n styles: \"\",\n colours: mockColors,\n direction: \"ltr\"\n};\nexport { FONTS, ThemeColor, breakpoints, buildFont, fontBuilder, isThemeValid, mockColors, mockTheme, nextMaterialUITheme };","import {breakpoints} from \"@next/themes\"\n\ndeclare global {\n export interface Window {\n appInsights?: any\n platmodflags?: any\n NextFavourites?: any\n }\n}\n\nexport const IS_BROWSER = () => typeof window !== \"undefined\"\n\nexport function getWindow() {\n return IS_BROWSER() ? window : null\n}\n\nexport const screenIsSmallerThanLarge = () => (IS_BROWSER() ? window.innerWidth < breakpoints.values.lg : false)\nexport const screenIsBiggerOrEqualToLarge = () => (IS_BROWSER() ? window.innerWidth >= breakpoints.values.lg : false)\n\nexport default getWindow\n","/* istanbul ignore file */\nimport axiosInstance from \"axios\"\nimport logger from \"@next/core-logger\"\nimport {getRegExValue} from \"../getRegExValue\"\nimport env from \"../../config/env\"\nimport {IS_BROWSER} from \"../window\"\n\nconst {PORT, DEV_URL_OVERRIDE} = env\naxiosInstance.defaults.baseURL = IS_BROWSER() ? DEV_URL_OVERRIDE : `http://localhost:${PORT}`\naxiosInstance.interceptors.request.use(\n config => {\n setAxiosDefaultsFromNextRequest(config)\n return config\n },\n error => {\n logger.error(error, \"axios-request-error\")\n return Promise.reject(error)\n },\n)\n\naxiosInstance.interceptors.response.use(\n response => {\n // Any status code that lie within the range of 2xx cause this function to trigger\n // Do something with response data\n return response\n },\n error => {\n // Any status codes that falls outside the range of 2xx cause this function to trigger\n // Do something with response error\n logger.error(error, \"axios-response-error\")\n return Promise.reject(error)\n },\n)\n\nconst externalCallAxiosInstance = axiosInstance.create({})\nexternalCallAxiosInstance.interceptors.response.use(\n response => {\n // Any status code that lie within the range of 2xx cause this function to trigger\n // Do something with response data\n return response\n },\n error => {\n // Any status codes that falls outside the range of 2xx cause this function to trigger\n // Do something with response error\n logger.error(error, \"axios-response-error\")\n return Promise.reject(error)\n },\n)\n\nexport const setAxiosDefaultsFromNextRequest = (req: any) => {\n const nextVisitorCookie = req.headers?.cookie\n ? getRegExValue(req.headers.cookie, \"NextVisitor\", \"=([^;]+)\")\n : undefined\n if (req.headers[\"x-next-correlation-id\"]) {\n axiosInstance.defaults.headers.common[\"x-next-correlation-id\"] = req.headers[\"x-next-correlation-id\"]\n }\n\n if (req.headers[\"x-next-time-machine-date\"])\n axiosInstance.defaults.headers.common[\"x-next-time-machine-date\"] = req.headers[\"x-next-time-machine-date\"]\n\n axiosInstance.defaults.headers.common[\"x-next-session-id\"] = nextVisitorCookie\n ? getRegExValue(nextVisitorCookie, \"LatestSessionID\", \"=(.*)&LatestSessionTimestamp\")\n : \"\"\n}\n\nexport {axiosInstance, externalCallAxiosInstance}\n","var HeadersModel = function () {\n function HeadersModel() {}\n\n return HeadersModel;\n}();\n\nvar HTTPMethod;\n\n(function (HTTPMethod) {\n HTTPMethod[HTTPMethod[\"get\"] = 0] = \"get\";\n HTTPMethod[HTTPMethod[\"post\"] = 1] = \"post\";\n HTTPMethod[HTTPMethod[\"delete\"] = 2] = \"delete\";\n HTTPMethod[HTTPMethod[\"put\"] = 3] = \"put\";\n HTTPMethod[HTTPMethod[\"patch\"] = 4] = \"patch\";\n})(HTTPMethod || (HTTPMethod = {}));\n\nfunction apiURL(api, realmOnly) {\n return function (endpoint) {\n return function (apiUrlSettings) {\n return function () {\n var _a;\n\n var params = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n\n var configUrl = \"\";\n\n if (apiUrlSettings) {\n if (realmOnly) {\n configUrl = \"/\" + apiUrlSettings.realm;\n } else {\n configUrl = \"/\" + apiUrlSettings.realm + \"/\" + apiUrlSettings.territory + \"/\" + apiUrlSettings.language;\n }\n }\n\n return \"\" + api.baseURL + configUrl + \"/\" + api.version + (_a = api.endpoints[endpoint]).getRemoteURL.apply(_a, params);\n };\n };\n };\n}\n\nfunction apiMethod(api) {\n return function (endpoint) {\n return HTTPMethod[api.endpoints[endpoint].method];\n };\n}\n\nfunction localEndpoint(api) {\n return function (endpoint) {\n return function () {\n var _a;\n\n var params = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n\n return (_a = api.endpoints[endpoint]).getLocalURL.apply(_a, params);\n };\n };\n}\n\nfunction routeDefinition(api) {\n return function (endpoint) {\n return api.endpoints[endpoint].routeDefinition;\n };\n}\n\nfunction buildExport(api, endpoint, realmOnly) {\n return {\n url: apiURL(api, realmOnly)(endpoint),\n method: apiMethod(api)(endpoint),\n localEndpoint: api.endpoints[endpoint].getLocalURL ? localEndpoint(api)(endpoint) : null,\n routeDefinition: api.endpoints[endpoint].getLocalURL ? routeDefinition(api)(endpoint) : null\n };\n}\n\nexport { HTTPMethod, HeadersModel, apiMethod, apiURL, buildExport, localEndpoint, routeDefinition };","import {Api, HTTPMethod, buildExport} from \"@next/apiconfig\"\nimport env from \"../../env\"\n\nconst {REACT_APP_API_BASEURL} = env\n\nexport class HeaderApi implements Api {\n baseURL = `${REACT_APP_API_BASEURL}`\n version = \"v1\"\n endpoints = {\n getHeaderData: {\n routeDefinition: `${env.REACT_APP_SERVE_PATH_PREFIX}/headerdata/:headerName`,\n getLocalURL: (headerName:string) => `${env.REACT_APP_SERVE_PATH_PREFIX}/headerdata/${headerName}`,\n getRemoteURL: (headerName:string) => `/headers/${headerName}`,\n method: HTTPMethod.get,\n },\n }\n}\n\nconst headerApi = new HeaderApi()\nexport default (endpoint: keyof typeof headerApi.endpoints) => buildExport(headerApi, endpoint)\n","import logger from \"@next/core-logger\"\nimport env from \"../../config/env\"\nimport {DEFAULT_HEADER_FILE_NAME} from \"../../config/constants\"\nimport {axiosInstance} from \"../../utils/axios\"\n\nconst {REACT_APP_BLOB_STORAGE_PATH, REACT_APP_BLOB_STORAGE_SSR_BASEURL} = env\n\nconst defaultHeaderData = (realm, defaultHeaderVersion) =>\n axiosInstance\n .get(\n `${REACT_APP_BLOB_STORAGE_SSR_BASEURL}${REACT_APP_BLOB_STORAGE_PATH}/fallback-api-data/header/${defaultHeaderVersion}/${realm}/${DEFAULT_HEADER_FILE_NAME}`,\n )\n .then(response => response.data)\n .catch(err => {\n logger.error(err)\n throw new Error(err)\n })\n\nexport default defaultHeaderData\n","import logger from \"@next/core-logger\"\nimport {Store} from \"redux\"\nimport {HeaderModel} from \"../../models/headerModel\"\nimport {getHeaderData} from \"../../api/headerdata\"\n\nexport const SET_HEADER_DATA = \"SET_HEADER_DATA\"\n\ninterface SetHeaderData {\n type: typeof SET_HEADER_DATA\n data: HeaderModel\n}\n\nexport type HeaderDuckState = HeaderModel | null\n\nconst initialState: HeaderDuckState = null\n\nconst setHeaderDataAction = (data: HeaderModel) => {\n return {\n type: SET_HEADER_DATA,\n data,\n }\n}\n\nexport const getHeaderDataThunk = async ({dispatch, getState}: Store, defaultHeaderVersion: string) => {\n try {\n const {request, settings} = getState()\n const response = await getHeaderData(request.headers!, defaultHeaderVersion, settings.variant)\n\n dispatch(setHeaderDataAction(response))\n } catch (error) {\n logger.error(error)\n dispatch(setHeaderDataAction(new HeaderModel()))\n }\n}\n\nconst reducer = (state: HeaderDuckState = initialState, action: SetHeaderData): HeaderDuckState => {\n const {data} = action\n\n switch (action.type) {\n case SET_HEADER_DATA:\n return {\n ...state,\n ...data,\n }\n default:\n return state\n }\n}\n\nexport default reducer\n","import {GetBagCallbackContractModel} from \"@next/eventservice\"\nimport {Dispatch} from \"redux\"\n\nexport const SET_USER = \"SET_USER\"\n\ninterface SetUser {\n type: typeof SET_USER\n user: UserDuckState\n}\n\nexport interface UserDuckState {\n firstName: string\n loggedIn: boolean\n userUpdated: boolean\n}\n\nconst initialState: UserDuckState = {firstName: \"\", loggedIn: false, userUpdated: false}\n\nexport const setUser = (user: UserDuckState): SetUser => ({\n type: SET_USER,\n user,\n})\nexport const updateUserStatus = (getBagData: GetBagCallbackContractModel) => (dispatch: Dispatch) => {\n if (getBagData.success) {\n const firstName = getBagData.data.ShoppingBag.FirstName\n dispatch(setUser({firstName: firstName ?? \"\", loggedIn: !!firstName, userUpdated: true}))\n } else {\n dispatch(setUser({firstName: \"\", loggedIn: false, userUpdated: true}))\n }\n}\n\nconst reducer = (state: UserDuckState = initialState, action: SetUser): UserDuckState => {\n switch (action.type) {\n case SET_USER:\n return {...action.user}\n default:\n return state\n }\n}\n\nexport default reducer\n","import {Api, HTTPMethod, buildExport} from \"@next/apiconfig\"\nimport env from \"../../env\"\n\nconst {BLOOMREACH_BASE_URL} = env\n\nexport class AutocompleteApi implements Api {\n baseURL = `${BLOOMREACH_BASE_URL}`\n version = \"v1\"\n endpoints = {\n getAutocompleteData: {\n routeDefinition: \"/autocomplete\",\n getLocalURL: (searchValue, accountId, date, domainKey, authKey, uid2, territory) =>\n `?account_id=${accountId}&auth_key=${authKey}&domain_key=${domainKey}&request_id=${date}&_br_uid_2=${uid2}&request_type=suggest&q=${searchValue}&view_id=${territory}`,\n getRemoteURL: () => \"\",\n method: HTTPMethod.get,\n },\n }\n}\n\nconst autocompleteApi = new AutocompleteApi()\nexport default (endpoint: keyof typeof autocompleteApi.endpoints) => buildExport(autocompleteApi, endpoint)\n","import logger from \"@next/core-logger\"\nimport {externalCallAxiosInstance as axios} from \"../../utils/axios\"\n\nimport AutocompleteApiConfig from \"../../config/api/autocomplete\"\n\nexport const getAutocompleteData = async (\n bloomreachBaseUrl: string,\n searchValue: string | number,\n accountId: string,\n domainKey: string,\n authKey: string,\n uid2: string,\n territory: string,\n): Promise => {\n try {\n const getAutocompleteDataApi = AutocompleteApiConfig(\"getAutocompleteData\")\n const date = new Date().getTime()\n const response = await axios.get(\n `${bloomreachBaseUrl}${getAutocompleteDataApi.localEndpoint(\n searchValue,\n accountId,\n date,\n domainKey,\n authKey,\n uid2,\n territory,\n )}`,\n )\n\n return response.data\n } catch (ex) {\n logger.error(ex)\n throw ex\n }\n}\n","import {Store} from \"redux\"\nimport logger from \"@next/core-logger\"\nimport {getAutocompleteData} from \"../../api/autocomplete\"\nimport {AutoCompleteInitial, AutoCompleteStateModel} from \"../../models/autocomplete\"\nimport {showAutoComplete, showRecentSearch} from \"../search\"\nimport {SettingsSdkKeys} from \"../../models/settings\"\n\nimport env from \"../../config/env\"\n\nconst {BLOOMREACH_BASE_URL} = env\n\nexport const SET_LOADING = \"SET_LOADING\"\nexport const SET_AUTO_COMPLETE_DATA = \"SET_AUTO_COMPLETE_DATA\"\nexport const SET_PARAMETER_VALUES = \"SET_PARAMETER_VALUES\"\nexport const CLEAR_SUGGESTIONS = \"CLEAR_SUGGESTIONS\"\n\nexport const BR_UID_2 = \"_br_uid_2\"\n\nexport type AutoCompleteDuckState = AutoCompleteStateModel\n\nexport const initialState: AutoCompleteStateModel = {\n parameters: {\n accountId: \"\",\n domainKey: \"\",\n authKey: \"\",\n territory: \"\",\n },\n q: \"\",\n suggestions: null,\n isLoading: false,\n numFound: 0,\n products: null,\n}\ninterface Actions {\n type: typeof SET_AUTO_COMPLETE_DATA | typeof SET_PARAMETER_VALUES | typeof CLEAR_SUGGESTIONS | typeof SET_LOADING\n payload: AutoCompleteInitial | boolean | any\n}\n\nexport const setAutoCompleteData = (payload: AutoCompleteInitial): Actions => ({\n type: SET_AUTO_COMPLETE_DATA,\n payload,\n})\n\nexport const clearSuggestions = () => ({\n type: CLEAR_SUGGESTIONS,\n})\n\nexport const setIsLoading = (payload: boolean): Actions => ({\n type: SET_LOADING,\n payload,\n})\n\nexport const getAutoCompleteThunk =\n (\n searchValue: number | string,\n accountId: string,\n domainKey: string,\n authKey: string,\n uid2: string,\n territory: string,\n updateProductsOnly = false,\n ) =>\n async (dispatch: any, getState: any) => {\n try {\n const autocompleteFeature = getState().features.SearchBar.Autocomplete\n const isAutocompleteEnabled = autocompleteFeature ? autocompleteFeature.Value : true\n if (isAutocompleteEnabled) {\n dispatch(setIsLoading(true))\n dispatch(showRecentSearch(false))\n dispatch(showAutoComplete(true))\n\n const {autocomplete} = getState()\n const data = await getAutocompleteData(\n BLOOMREACH_BASE_URL,\n searchValue,\n accountId,\n domainKey,\n authKey,\n uid2,\n territory,\n )\n\n if (updateProductsOnly) {\n dispatch({\n type: SET_AUTO_COMPLETE_DATA,\n payload: {\n response: {\n ...autocomplete,\n products: data.response.products,\n q: data.response.q,\n },\n },\n })\n } else {\n dispatch({\n type: SET_AUTO_COMPLETE_DATA,\n payload: data,\n })\n }\n dispatch(setIsLoading(false))\n } else {\n dispatch(showRecentSearch(true))\n dispatch(showAutoComplete(false))\n }\n } catch (e) {\n logger.error(e)\n dispatch(showAutoComplete(false))\n dispatch({\n type: SET_AUTO_COMPLETE_DATA,\n payload: initialState,\n })\n dispatch(setIsLoading(false))\n }\n }\n\nexport const setAutoCompleteParameters = (store: Store, configuration: any) => {\n const payload = {\n ...configuration[SettingsSdkKeys.autoComplete],\n territory: configuration[SettingsSdkKeys.territory].Value.toLowerCase(),\n }\n\n store.dispatch({\n type: SET_PARAMETER_VALUES,\n payload,\n })\n}\n\nconst reducer = (state: AutoCompleteStateModel = initialState, action): AutoCompleteStateModel => {\n const {payload} = action\n switch (action.type) {\n case SET_LOADING:\n return {\n ...state,\n isLoading: action.payload,\n }\n case SET_AUTO_COMPLETE_DATA:\n return {\n ...state,\n q: payload?.response?.q || \"\",\n suggestions: payload?.response?.suggestions || [],\n numFound: payload?.response?.numFound || 0,\n products: payload?.response?.products || [],\n }\n case CLEAR_SUGGESTIONS:\n return {\n ...state,\n q: \"\",\n suggestions: [],\n numFound: 0,\n }\n case SET_PARAMETER_VALUES:\n return {...state, parameters: payload}\n default:\n return state\n }\n}\n\nexport default reducer\n","import {Store} from \"redux\"\n\nexport const SET_LANGUAGE = \"SET_LANGUAGE\"\n\ninterface SetLanguage {\n type: typeof SET_LANGUAGE\n languageSelectorData: LanguageDuckState\n}\n\nexport interface LanguageDuckState {\n currentLanguageText: string\n altLanguageName: string\n altLanguageUrl: string\n currentLanguageName: string\n direction: string\n siteUrl: string\n}\n\nexport const initialState: LanguageDuckState = {\n currentLanguageText: \"\",\n altLanguageName: \"\",\n altLanguageUrl: \"\",\n currentLanguageName: \"\",\n direction: \"ltr\",\n siteUrl: \"\",\n}\n\nexport const setLanguageIds = (languageSelectorData: LanguageDuckState): SetLanguage => ({\n type: SET_LANGUAGE,\n languageSelectorData,\n})\n\nconst reducer = (state: LanguageDuckState = initialState, action: SetLanguage): LanguageDuckState => {\n switch (action.type) {\n case SET_LANGUAGE:\n return {...action.languageSelectorData}\n default:\n return state\n }\n}\n\nexport const updateLanguage = (store: Store, languageSelectorData: LanguageDuckState) => {\n store.dispatch(setLanguageIds(languageSelectorData))\n}\n\nexport default reducer\n","import Logger from \"@next/core-logger\"\nimport {Store} from \"redux\"\nimport getTextAlignment from \"../../utils/getTextAlignment\"\n\nexport const SET_TEXT_ALIGNMENT = \"SET_TEXT_ALIGNMENT\"\n\ninterface SetTextAlignmentAction {\n type: typeof SET_TEXT_ALIGNMENT\n textAlignment: string\n}\n\nexport const initialState = \"\"\n\nexport const setTextAlignment = (textAlignment: string): SetTextAlignmentAction => ({\n type: SET_TEXT_ALIGNMENT,\n textAlignment,\n})\n\nconst reducer = (state: string = initialState, action: SetTextAlignmentAction): string => {\n switch (action.type) {\n case SET_TEXT_ALIGNMENT:\n return action.textAlignment\n default:\n return state\n }\n}\n\nexport const updateTextAlignment = (store: Store, configuration: any) => {\n try {\n const direction = getTextAlignment(configuration)\n store.dispatch(setTextAlignment(direction))\n } catch (err) {\n Logger.error(new Error(err))\n Logger.info(\"alignment set to LTR\")\n store.dispatch(setTextAlignment(\"ltr\"))\n }\n}\n\nexport default reducer\n","import logger from \"@next/core-logger\"\nimport {Store} from \"redux\"\nimport {TextModel} from \"../../models/text\"\n\nexport const SET_TEXT = \"SET_TEXT\"\n\ninterface SetTextAction {\n type: typeof SET_TEXT\n data: TextModel\n}\n\nexport type TextDuckState = TextModel\nconst initialState: TextDuckState = {} as TextModel\n\nconst SetTextAction = (data: TextDuckState) => {\n return {\n type: SET_TEXT,\n data,\n }\n}\n\nexport const updateText = (store: Store, text: TextModel) => {\n try {\n if(text) return store.dispatch(SetTextAction(text))\n logger.error(\"Text object not defined\")\n store.dispatch(SetTextAction(initialState))\n } catch (err) {\n logger.error(new Error(err))\n store.dispatch(SetTextAction(initialState))\n }\n}\n\nconst reducer = (state: TextDuckState = initialState, action: SetTextAction): TextDuckState => {\n switch (action.type) {\n case SET_TEXT:\n return action.data\n default:\n return state\n }\n}\n\nexport default reducer\n","import {Store, Reducer} from \"redux\"\nimport {GetFavouritesCallbackContractModel} from \"@next/eventservice\"\nimport {SettingsSdkKeys} from \"../../models/settings\"\n\nexport interface FavouritesDuckState {\n enableFavourites: boolean\n hasFavourites: boolean\n}\n\nexport const SET_FAVOURITES = \"SET_FAVOURITES\"\n\ntype Action = {\n type: typeof SET_FAVOURITES\n payload: PartialState\n}\n\ntype PartialState = Partial\n\ntype FavouritesConf = {\n [SettingsSdkKeys.enableFavourites]: {\n Value: boolean\n }\n}\n\nexport const setFavourites = (payload: PartialState) => ({\n type: SET_FAVOURITES,\n payload,\n})\n\nexport const setFavouritesSettings = (store: Store, configuration: FavouritesConf) => {\n const payload: Partial = {\n enableFavourites: configuration[SettingsSdkKeys.enableFavourites].Value,\n }\n store.dispatch(setFavourites(payload))\n}\n\nexport const updateFavouritesInState =\n (getFavouritesData: GetFavouritesCallbackContractModel) => (dispatch: any, getState: any) => {\n if (getFavouritesData.success) {\n const {\n favourites: {enableFavourites},\n } = getState()\n const hasFavourites = getFavouritesData?.data?.ShoppingListItems?.length > 0\n window.NextFavourites.Data = getFavouritesData.data\n dispatch(setFavourites({hasFavourites, enableFavourites}))\n } else {\n const {\n favourites: {enableFavourites, hasFavourites},\n } = getState()\n dispatch(setFavourites({hasFavourites, enableFavourites}))\n }\n }\n\nconst initialState: FavouritesDuckState = {\n enableFavourites: false,\n hasFavourites: false,\n}\n\nconst reducer: Reducer = (state: FavouritesDuckState = initialState, action) => {\n switch (action.type) {\n case SET_FAVOURITES:\n return {...state, ...action.payload}\n default:\n return state\n }\n}\n\nexport default reducer\n","import {Store} from \"redux\"\nimport Logger from \"@next/core-logger\"\nimport {SettingsSdkKeys} from \"../../models/settings\"\nimport {FeatureSwitchData} from \"../../models/features/searchBar\"\n\nexport interface FeaturesDuckState {\n SearchBar: FeatureSwitchData\n}\n\nexport const SET_FEATURE_SWITCH = \"SET_FEATURES\"\n\ntype Action = {\n type: typeof SET_FEATURE_SWITCH\n featureSwitchData: any\n}\nexport const updateFeatureSwitch = (store: Store, configuration: any) => {\n const featureSwitchData = {}\n const getAllFeatureSwitch = configuration[SettingsSdkKeys.featureSwitch]\n\n Object.keys(getAllFeatureSwitch).forEach((featureSwitchType: string) => {\n let getType\n const featureKey = getAllFeatureSwitch[featureSwitchType]\n\n getType = Object.keys(featureKey).find((featureType: string) =>\n featureKey[featureType].Value ? featureType : \"\",\n )\n\n if (!getType) {\n // eslint-disable-next-line prefer-destructuring\n getType = Object.keys(featureKey)[0]\n Logger.error(`Header: Incorrect set up for feature switch ${featureSwitchType}, default to ${getType}`)\n }\n\n const {Value, ...otherProps} = featureKey[getType]\n\n featureSwitchData[featureSwitchType] = {\n ...otherProps,\n Value: getType,\n }\n })\n\n store.dispatch({\n type: SET_FEATURE_SWITCH,\n featureSwitchData,\n })\n}\n\nconst initialState: FeaturesDuckState = {\n SearchBar: {\n Value: \"\",\n },\n}\n\nconst reducer = (state: FeaturesDuckState = initialState, action: Action): FeaturesDuckState => {\n const {type, featureSwitchData} = action\n switch (type) {\n case SET_FEATURE_SWITCH:\n return {\n ...state,\n ...featureSwitchData,\n }\n default:\n return state\n }\n}\n\nexport default reducer\n","import {Api, HTTPMethod, buildExport} from \"@next/apiconfig\"\nimport env from \"../../env\"\n\nconst {REACT_APP_API_BASEURL} = env\n\nexport class CountriesApi implements Api {\n baseURL = `${REACT_APP_API_BASEURL}`\n version = \"v1\"\n endpoints = {\n getCountriesListData: {\n routeDefinition: \"/ChannelSelector/GetCountrySelection\",\n getLocalURL: () => \"\",\n getRemoteURL: () => \"\",\n method: HTTPMethod.get,\n },\n }\n}\n\nconst countriesApi = new CountriesApi()\nexport default (endpoint: keyof typeof countriesApi.endpoints) => buildExport(countriesApi, endpoint)\n","import logger from \"@next/core-logger\"\nimport {IncomingHttpHeaders} from \"http\"\nimport {axiosInstance as axios} from \"../../utils/axios\"\nimport CountriesApiConfig from \"../../config/api/countries\"\nimport {Country as CountryType} from \"../../models/countryselector\"\n\nexport const getCountriesList = async (\n baseUrl: string,\n _headers: IncomingHttpHeaders,\n countrySelectorEndpoint: string,\n): Promise => {\n try {\n const getCountriesListDataApi = CountriesApiConfig(\"getCountriesListData\")\n const response = await axios({\n method: getCountriesListDataApi.method,\n url: `${baseUrl}${countrySelectorEndpoint}`,\n })\n return response.data\n } catch (ex) {\n logger.error(ex)\n throw ex\n }\n}\n\nexport default getCountriesList\n","import env from \"../../config/env\"\n\nexport const formatCdnPath = (icon: string): string => `${env.REACT_APP_BLOB_STORAGE_PATH.replace(/\\/$/, \"\")}${icon}`\n\nexport const formatCdnPathWithVariant = (icon: string, realm: string, variant: string): string => {\n const assetName = icon.split(\"/\").pop()\n const iconPath = `/icons/header/${realm}/${variant}/${assetName}`\n return formatCdnPath(iconPath)\n}\n\nexport const getMeganavIconPath = (icon: string, realm?: string | undefined): string => {\n if (realm) {\n return formatCdnPath(`/icons/meganav/${realm}/${icon}`)\n }\n return formatCdnPath(`/icons/shared/${icon}`)\n}\n","import {Store} from \"redux\"\nimport logger from \"@next/core-logger\"\nimport {getCountriesList} from \"../../api/countries\"\nimport {Country as CountryType} from \"../../models/countryselector\"\nimport {SettingsSdkKeys} from \"../../models/settings\"\nimport {TERRITORY_HEADER, LANGUAGE_HEADER, BFPO, ENGLISH_LANGUAGE_CODE} from \"../../config/constants\"\nimport type State from \"../state\"\nimport {formatCdnPath} from \"../../utils/getCdnUrl\"\n\nexport const SHOW_COUNTRY_SELECT = \"SHOW_COUNTRY_SELECT\"\nexport const SHOW_DRAWER = \"SHOW_DRAWER\"\nexport const GET_COUNTRIES_LIST = \"GET_COUNTRIES_LIST\"\nexport const SET_COUNTRY_SELECTOR = \"SET_COUNTRY_SELECTOR\"\nexport const SELECT_COUNTRY = \"SELECT_COUNTRY\"\nexport const SET_DEFAULT_COUNTRY_CODE = \"SET_DEFAULT_COUNTRY_CODE\"\nexport const SELECT_LANGUAGE = \"SELECT_LANGUAGE\"\nexport const SHOW_BFPO_FLAG = \"SHOW_BFPO_FLAG\"\nexport const SET_COUNTRY_SELECTOR_ENDPOINT = \"SET_COUNTRY_SELECTOR_ENDPOINT\"\nexport const COUNTRY_CHANGE_REQ = \"COUNTRY_CHANGE_REQ\"\n\nexport type CountrySelectorDuckState = {\n isShowCountrySelector: boolean\n countriesList: CountryType[] | null\n isActive: boolean\n isShowOverlay: boolean\n selectedCountry: CountryType | null\n selectedLanguage: string | null\n defaultCountryCode: string | null\n showBFPOFlag: boolean\n isLoaded: boolean\n requestedCountryChange: boolean\n countrySelectorEndpoint: string\n}\n\ntype Actions = {\n type:\n | typeof SHOW_COUNTRY_SELECT\n | typeof SET_COUNTRY_SELECTOR\n | typeof SELECT_LANGUAGE\n | typeof SELECT_COUNTRY\n | typeof SET_DEFAULT_COUNTRY_CODE\n | typeof SHOW_DRAWER\n | typeof SHOW_BFPO_FLAG\n | typeof GET_COUNTRIES_LIST\n | typeof COUNTRY_CHANGE_REQ\n | typeof SET_COUNTRY_SELECTOR_ENDPOINT\n payload: boolean | string | CountryType\n}\n\nconst getCountrySelectorActive = (configuration: any) =>\n configuration[SettingsSdkKeys.countrySelector]?.ShowCountrySelector === true\n\nconst getBFPOActive = (configuration: any) => configuration[SettingsSdkKeys.countrySelector]?.ShowBFPOFlag === true\nconst getCountrySelectorEndpoint = (configuration: any) => configuration[SettingsSdkKeys.countrySelector]?.Endpoint\n\nexport const updateCountrySelectorSettings = (store: Store, configuration: any) => {\n store.dispatch(setCountrySelectorActive(getCountrySelectorActive(configuration)))\n store.dispatch(setShowBFPO(getBFPOActive(configuration)))\n store.dispatch(setCountrySelectorEndpoint(getCountrySelectorEndpoint(configuration)))\n}\n\nexport const changeCountry = (countryCode: string) => (dispatch: any, getState: any) => {\n const {\n countrySelector: {countriesList},\n } = getState() as State\n const searchCountryCode = countryCode\n\n const selected = countriesList?.find(c => c.CountryCode === searchCountryCode)\n if (selected) {\n dispatch(selectCountry(selected))\n dispatch(selectLanguage(selected.DefaultLanguageName))\n }\n}\n\nexport const setDefaultCountryCode = (countryCode: string) => (dispatch: any) => {\n const formattedCountryCode = countryCode.trim().toUpperCase()\n dispatch(setDefaultCountryCodeAction(formattedCountryCode))\n dispatch(changeCountry(formattedCountryCode))\n}\n\nexport const selectCountry = (payload: CountryType): Actions => ({\n type: SELECT_COUNTRY,\n payload,\n})\n\nexport const selectLanguage = (payload: string): Actions => ({\n type: SELECT_LANGUAGE,\n payload,\n})\n\nconst setDefaultCountryCodeAction = (payload: string): Actions => ({\n type: SET_DEFAULT_COUNTRY_CODE,\n payload,\n})\n\nexport const isShowCountrySelector = (payload: boolean): Actions => ({\n type: SHOW_COUNTRY_SELECT,\n payload,\n})\n\nconst showDrawerAction = (payload: boolean): Actions => ({\n type: SHOW_DRAWER,\n payload,\n})\n\nexport const setCountrySelectorActive = (payload: boolean): Actions => ({\n type: SET_COUNTRY_SELECTOR,\n payload,\n})\n\nexport const setShowBFPO = (payload: boolean): Actions => ({\n type: SHOW_BFPO_FLAG,\n payload,\n})\n\nexport const setCountrySelectorEndpoint = (payload: string): Actions => ({\n type: SET_COUNTRY_SELECTOR_ENDPOINT,\n payload,\n})\n\nexport const toggleCountryChangeReq = (payload: boolean): Actions => ({\n type: COUNTRY_CHANGE_REQ,\n payload,\n})\n\nexport const requestCountryChange = (value: boolean) => (dispatch: any) => {\n dispatch(toggleCountryChangeReq(value))\n}\n\nexport const closeCountrySelector = () => (dispatch: any) => {\n dispatch(isShowCountrySelector(false))\n}\n\nexport const openDrawer = (isShowOverlay: boolean) => (dispatch: any) => {\n dispatch(showDrawerAction(isShowOverlay))\n dispatch(isShowCountrySelector(true))\n}\n\nexport const getCountriesListThunk = () => async (dispatch: any, getState: () => State) => {\n try {\n const {\n request: {headers, siteUrl},\n countrySelector: {showBFPOFlag, countrySelectorEndpoint},\n } = getState()\n const data = await getCountriesList(siteUrl, headers!, countrySelectorEndpoint)\n\n let filteredData = data.filter(c => !c.HideInDropdown && c.Languages?.length !== 0)\n\n const getIconUrl = (area: string) => formatCdnPath(`/icons/shared/countryflags/${area.toLowerCase()}.png`)\n\n if (showBFPOFlag) {\n filteredData = filteredData.map(country => {\n const countryObject = {...country}\n if (countryObject.Name === \"\") {\n countryObject.Name = BFPO\n countryObject.CountryCode = BFPO\n countryObject.DefaultLanguageName = ENGLISH_LANGUAGE_CODE\n }\n return countryObject\n })\n } else {\n filteredData = filteredData.filter(c => c.Name !== \"\")\n }\n const filteredDataWithIconUrl = filteredData.map(country => ({\n ...country,\n iconUrl: getIconUrl(country.Name),\n }))\n const finalFilteredData = filteredDataWithIconUrl.map(c => ({...c, CountryCode: c.CountryCode.toUpperCase()}))\n const territory = headers![TERRITORY_HEADER] as string\n const language = headers![LANGUAGE_HEADER] as string\n // latest state is needed after the API is called to get the correct defaultCountryCode\n const {\n countrySelector: {defaultCountryCode},\n } = getState()\n const initialCountryCode = (defaultCountryCode ?? territory).toUpperCase()\n const country = finalFilteredData.find(c => c.CountryCode === initialCountryCode)\n if (country) {\n dispatch(selectCountry(country))\n }\n if (country && defaultCountryCode) {\n dispatch(selectLanguage(country.DefaultLanguageName))\n } else {\n dispatch(selectLanguage(language))\n }\n dispatch({\n type: GET_COUNTRIES_LIST,\n payload: finalFilteredData,\n })\n } catch (error) {\n dispatch({\n type: GET_COUNTRIES_LIST,\n payload: null,\n })\n logger.error(error)\n }\n}\n\nexport const redirectToAlternativeLanguageThunk = () => async (dispatch: any, getState: () => State) => {\n const {\n countrySelector: {isLoaded},\n } = getState()\n\n if (!isLoaded) {\n await dispatch(getCountriesListThunk())\n }\n\n const {\n countrySelector: {selectedCountry, selectedLanguage},\n } = getState()\n\n const selectedLang = selectedCountry?.Languages.find(l => l.Name !== selectedLanguage)\n if (selectedLang) {\n window.location.href = selectedLang.TargetUrl\n }\n}\n\nconst initialState: CountrySelectorDuckState = {\n isShowCountrySelector: false,\n countriesList: null,\n isActive: true,\n isShowOverlay: true,\n selectedCountry: null,\n selectedLanguage: null,\n defaultCountryCode: null,\n showBFPOFlag: false,\n isLoaded: false,\n requestedCountryChange: false,\n countrySelectorEndpoint: \"/ChannelSelector/GetCountrySelection\",\n}\n\nconst reducer = (state: CountrySelectorDuckState = initialState, action) => {\n switch (action.type) {\n case SHOW_COUNTRY_SELECT:\n return {...state, isShowCountrySelector: action.payload}\n case SELECT_COUNTRY:\n return {...state, selectedCountry: action.payload}\n case SELECT_LANGUAGE:\n return {...state, selectedLanguage: action.payload}\n case GET_COUNTRIES_LIST:\n return {...state, countriesList: action.payload, isLoaded: true}\n case SET_COUNTRY_SELECTOR:\n return {...state, isActive: action.payload}\n case SET_DEFAULT_COUNTRY_CODE:\n return {...state, defaultCountryCode: action.payload}\n case SHOW_DRAWER:\n return {...state, isShowOverlay: action.payload}\n case SHOW_BFPO_FLAG:\n return {...state, showBFPOFlag: action.payload}\n case COUNTRY_CHANGE_REQ:\n return {...state, requestedCountryChange: action.payload}\n case SET_COUNTRY_SELECTOR_ENDPOINT:\n return {...state, countrySelectorEndpoint: action.payload}\n default:\n return state\n }\n}\nexport default reducer\n","import {Store} from \"redux\"\nimport Logger from \"@next/core-logger\"\nimport getConfigurationValue from \"../../utils/getConfigurationValue\"\nimport {SettingsSdkKeys} from \"../../models/settings\"\nimport {DEFAULT_TEMPLATE} from \"../../config/constants\"\n\nexport const SET_TEMPLATE = \"SET_TEMPLATE\"\ninterface SetTemplateAction {\n type: typeof SET_TEMPLATE\n template: string\n}\n\nexport const initialState = DEFAULT_TEMPLATE\n\nexport const setTemplateAction = (template: string): SetTemplateAction => ({\n type: SET_TEMPLATE,\n template,\n})\n\nconst reducer = (state: any = initialState, action: SetTemplateAction): string => {\n switch (action.type) {\n case SET_TEMPLATE:\n return action.template\n default:\n return state\n }\n}\n\nexport const updateTemplate = (store: Store, configuration: any) => {\n try {\n const templateConfigurationValue = getConfigurationValue(configuration, SettingsSdkKeys.template, \"Value\")\n store.dispatch(setTemplateAction(templateConfigurationValue))\n } catch (error) {\n Logger.error(new Error(error))\n Logger.info(`template set to default`)\n store.dispatch(setTemplateAction(DEFAULT_TEMPLATE))\n }\n}\n\nexport default reducer\n","import {VARIANT_DEFAULT} from \"../../config/constants\"\n\nexport const SET_SETTINGS = \"SET_SETTINGS\"\n\n/**\n * add as needed new feature settings\n */\nexport class SettingsModel {\n variant = VARIANT_DEFAULT\n \"userConsentManagement.enabled\" = false\n \"showStaticHeaderBanner.enabled\" = true\n saleName\n showCloseButtonMobileSearch = true\n template = \"default\"\n rememberSelectedDepartment = true\n}\n\nconst initialState = new SettingsModel()\n\ninterface SetSettings {\n type: typeof SET_SETTINGS\n value: SettingsModel\n}\n\ntype SettingsActions = SetSettings\n\nexport const setSettings = (value: SettingsModel): SetSettings => {\n return {\n type: SET_SETTINGS,\n value,\n }\n}\n\nexport const updateSettings = (store, settings) => {\n store.dispatch(setSettings(settings))\n}\n\nexport const settingsReducer = (state: SettingsModel = initialState, action: SettingsActions): SettingsModel => {\n switch (action.type) {\n case SET_SETTINGS:\n // If a setting is missing, then the default value will persist\n return {\n ...state,\n ...action.value,\n }\n default:\n return state\n }\n}\n","import {Api, HTTPMethod, buildExport} from \"@next/apiconfig\"\nimport env from \"../../env\"\n\nconst {REACT_APP_MEGANAV_API_BASEURL, ASSETS_PATH} = env\n\nexport class MegaNavApi implements Api {\n baseURL = `${REACT_APP_MEGANAV_API_BASEURL}`\n version = \"v1\"\n endpoints = {\n getPrimaryNavData: {\n routeDefinition: \"/primary-nav\",\n getLocalURL: () => `/primary-nav`,\n getRemoteURL: () => `/primary-items/Home`,\n method: HTTPMethod.get,\n },\n getSecondaryNavData: {\n routeDefinition: \"/secondary-items/:page/:department\",\n getLocalURL: (page: string, department: string) => `/secondary-items/${page}/${department}`,\n getRemoteURL: (page: string, department: string) => `/primary-items/${page}/secondary-items/${department}`,\n method: HTTPMethod.get,\n },\n getSeoData: {\n routeDefinition: `${ASSETS_PATH}/seo-content/:page/:department*?`,\n getLocalURL: () => \"\",\n getRemoteURL: (page: string, department: string) => `/seo-content/${page}/${department}`,\n method: HTTPMethod.get,\n },\n }\n}\n\nconst meganavApi = new MegaNavApi()\nexport default (endpoint: keyof typeof meganavApi.endpoints) => buildExport(meganavApi, endpoint)\n","import logger from \"@next/core-logger\"\nimport env from \"../../config/env\"\nimport {DEFAULT_PRIMARY_NAV_TYPE} from \"../../config/constants\"\nimport {axiosInstance} from \"../../utils/axios\"\nimport {PrimaryNav} from \"../../models/primary-nav\"\n\nconst {REACT_APP_BLOB_STORAGE_PATH, REACT_APP_BLOB_STORAGE_SSR_BASEURL} = env\n\nconst defaultPrimaryData = async (realm, {version}): Promise => {\n try {\n const url = `${REACT_APP_BLOB_STORAGE_SSR_BASEURL}${REACT_APP_BLOB_STORAGE_PATH}/fallback-api-data/meganav/${version}/${realm}/${DEFAULT_PRIMARY_NAV_TYPE}/fallback.json`\n const defaultDataResponse = await axiosInstance.get(url)\n\n return defaultDataResponse.data\n } catch (ex) {\n logger.error(ex)\n throw new Error(ex)\n }\n}\n\nexport {defaultPrimaryData}\n","declare let document: any\n\nexport function getCookie(name) {\n function escape(s) {\n return s.replace(/([.*+?^$(){}|[\\]/\\\\])/g, \"\\\\$1\")\n }\n const match = document.cookie.match(RegExp(`(?:^|;\\\\s*)${escape(name)}=([^;]*)`))\n return match ? match[1] : null\n}\n\nexport function reorderPinnedElements(itemsList: any){\n const pinnedItemsList: any = []\n\n for (let i = 0; i < itemsList.length; i += 1) {\n if (itemsList[i].pin) {\n pinnedItemsList.push(itemsList[i])\n itemsList.splice(i, 1)\n }\n }\n pinnedItemsList.sort((a, b) => a.pin - b.pin)\n\n for (let i = 0; i < pinnedItemsList.length; i += 1) {\n itemsList.splice(pinnedItemsList[i].pin, 0, pinnedItemsList[i])\n }\n\n return itemsList\n}\n\nexport function shufflePrimaryNav(items, cookie) {\n let newList = items\n if (cookie) {\n const MasIDCookie = cookie.split(\"| NV1_\")[1]\n const mapped = []\n const newItemsList: any = []\n Object.assign(newItemsList, items)\n const orderingTags = MasIDCookie?.match(/.{2}/g)\n const arr = new Array(newItemsList.length)\n\n for (let i = 0; i < orderingTags?.length; i += 1) {\n for (let j = 0; j < newItemsList.length; j += 1) {\n const index = newItemsList[j].pin || newItemsList[j].dataset?.pin\n if (index) {\n arr[index] = newItemsList[j]\n newItemsList.splice(j, 1)\n } else if (\n newItemsList[j].dataset?.mapping === orderingTags[i] ||\n newItemsList[j].mapping === orderingTags[i]\n ) {\n mapped[mapped.length] = newItemsList[j] as never\n newItemsList.splice(j, 1)\n }\n }\n }\n\n const unpinnedList = [].concat(mapped.concat(newItemsList))\n newList = Array.from(arr, (v, i) => (i in arr ? v : unpinnedList.shift())).filter(item => item)\n }\n\n return newList\n}\n\nexport function getCookieAndShufflePrimaryNav(cookieString?: string) {\n let cookie\n if (cookieString) {\n cookie = cookieString\n } else {\n const temp = getCookie(\"MasID\")\n cookie = decodeURIComponent(temp)\n }\n const snailTrailElement = document.getElementById(\"snail-trail-container\")\n const childrenArray = snailTrailElement.children\n const newList = shufflePrimaryNav(childrenArray, cookie)\n newList.forEach(child => snailTrailElement.appendChild(child))\n}\n\nexport const toString = () => {\n const init = {\n init: getCookieAndShufflePrimaryNav.name,\n }\n return `\n ${getCookie.toString()}\n ${reorderPinnedElements.toString()}\n ${shufflePrimaryNav.toString()}\n ${getCookieAndShufflePrimaryNav.toString()}\n\n var platmodMeganavPersInitObj = ${JSON.stringify(init)};\n var fn = window[platmodMeganavPersInitObj.init];\n if (typeof fn === \"function\") fn();\n`\n}\n","import {ExcludeFrom} from \"../excludeFrom\"\n\nexport class SecondaryNav {\n public id = \"\"\n public title = \"\"\n public target = \"\"\n public viewType = \"\"\n public realm = \"\"\n public territory = \"\"\n public language = \"\"\n public items: Tab[] = [new Tab()]\n public banner: Banner | null = new Banner()\n}\nexport class Banner {\n imageUrl = \"\"\n target = \"\"\n}\nexport class Tab {\n public title = \"\"\n public type = \"\"\n public items: Column[] = [new Column()]\n public missions: Mission | null = null\n public excludeFrom?: ExcludeFrom\n}\nexport class Column {\n public title: string | null = \"\"\n public type: string | null = \"\"\n public items: Category[] = [new Category()]\n public excludeFrom?: ExcludeFrom\n}\nexport class Category {\n public items: Link[] = [new Link()]\n public icons?: Icons[] = []\n public title: string | null = \"\"\n public type = \"\"\n public linkColour = \"\"\n public fontWeight = \"\"\n public excludeFrom?: ExcludeFrom\n}\nexport class Link {\n public target = \"\"\n public title = \"\"\n public icons?: Icons[] = []\n public type = \"\"\n public linkColour = \"\"\n public fontWeight = \"\"\n public excludeFrom?: ExcludeFrom\n public icon? = \"\"\n}\nexport class Mission {\n public noOfColumns = 0\n public title: string | null = \"\"\n public items: MissionItem[] = [new MissionItem()]\n public categoryLink: CategoryLink | null = new CategoryLink()\n public excludeFrom?: ExcludeFrom\n}\n\nexport class MissionItem {\n public title = \"\"\n public imageUrl = \"\"\n public target: string | null = \"\"\n public excludeFrom?: ExcludeFrom\n}\n\nexport class CategoryLink {\n public title = \"\"\n public target = \"\"\n}\n\nexport class DefaultConfig {\n public version = \"\"\n public country = \"\"\n}\n\nexport class Icons {\n public height = 0\n public url = \"\"\n public width = 0\n}\n","import logger from \"@next/core-logger\"\nimport {IncomingHttpHeaders} from \"http\"\nimport {axiosInstance as axios} from \"../../utils/axios\"\nimport {SecondaryNav} from \"../../models/secondary-nav\"\nimport AppApiConfig from \"../../config/api/meganavdata\"\n\nexport const getSecondaryNavData = async (\n baseUrl: string,\n headers: IncomingHttpHeaders,\n department: string,\n): Promise => {\n try {\n const page = \"home\" // FIXME hard coded for now until we can dynamically get the page\n const {cookie, ...rest} = headers\n const getAppDataApi = AppApiConfig(\"getSecondaryNavData\")\n const response = await axios({\n method: getAppDataApi.method,\n url: `${baseUrl}${getAppDataApi.localEndpoint(page, department)}`,\n headers: rest,\n })\n\n return response.data\n } catch (ex) {\n logger.error(ex)\n throw ex\n }\n}\n","import {Store} from \"redux\"\nimport logger from \"@next/core-logger\"\nimport {SecondaryNav, DefaultConfig} from \"../../models/secondary-nav\"\nimport {getSecondaryNavData} from \"../../api/secondary-nav\"\nimport {DEFAULT_SECONDARY_NAV_VERSION} from \"../../config/constants\"\nimport {SettingsSdkKeys} from \"../../models/settings\"\nimport {FeatureSettings} from \"../../models/feature-settings\"\nimport type State from \"../state\"\n\nexport const SET_SECONDARY_NAV_DATA = \"SET_SECONDARY_NAV_DATA\"\nexport const GET_SECONDARY_NAV_DATA = \"GET_SECONDARY_NAV_DATA\"\nexport const SET_IS_IN_SECONDARY_NAV = \"SET_IS_IN_SECONDARY_NAV\"\nexport const SET_DEFAULT_SECONDARY_CONFIG = \"SET_DEFAULT_SECONDARY_CONFIG\"\nexport const SET_IS_IMAGE_PLACEHOLDER_ENABLED = \"SET_IS_IMAGE_PLACEHOLDER_ENABLED\"\n\nclass Catalogues {\n [index: string]: SecondaryNav\n}\n\nexport type SecondaryNavDuckState = {\n departmentIds: string[]\n catalogues: Catalogues\n isPending: boolean\n isInSecondaryNav: boolean\n config: DefaultConfig\n isImagePlaceholderEnabled: boolean\n}\n\nexport interface SetSecondaryNavData {\n type: typeof SET_SECONDARY_NAV_DATA\n payload: SecondaryNav\n}\nexport interface GetSecondaryNavData {\n type: typeof GET_SECONDARY_NAV_DATA\n payload: boolean\n}\nexport interface SetIsInSecondaryNav {\n type: typeof SET_IS_IN_SECONDARY_NAV\n payload: boolean\n}\n\nexport interface SetIsImagePlaceholderEnabled {\n type: typeof SET_IS_IMAGE_PLACEHOLDER_ENABLED\n payload: boolean\n}\n\nexport interface SetDefaultSecondaryConfig {\n type: typeof SET_DEFAULT_SECONDARY_CONFIG\n payload: DefaultConfig\n}\n\nexport const initialState: SecondaryNavDuckState = {\n departmentIds: [],\n catalogues: {},\n isPending: false,\n isInSecondaryNav: false,\n isImagePlaceholderEnabled: false,\n config: {\n version: DEFAULT_SECONDARY_NAV_VERSION,\n country: \"\",\n },\n}\n\nconst getImagePlaceholderEnabled = (config: FeatureSettings): boolean =>\n !!config[SettingsSdkKeys.imagePlaceHolder]?.EnableImagePlaceholder\n\nconst setImagePlaceholderEnabled = (store: Store, isImagePlaceholderEnabled: boolean) =>\n store.dispatch({\n type: SET_IS_IMAGE_PLACEHOLDER_ENABLED,\n payload: isImagePlaceholderEnabled,\n })\n\nexport const updateImagePlaceholderSettings = (store: Store, config: FeatureSettings) =>\n setImagePlaceholderEnabled(store, getImagePlaceholderEnabled(config))\n\nexport const setDefaultConfig = (store: Store, config: DefaultConfig) =>\n store.dispatch({\n type: SET_DEFAULT_SECONDARY_CONFIG,\n payload: config,\n })\n\nexport const setIsInSecondaryMeganav = (isInSecondaryNav: boolean) => dispatch =>\n dispatch({\n type: SET_IS_IN_SECONDARY_NAV,\n payload: isInSecondaryNav,\n })\n\nconst makeRequest = async (siteUrl: string, headers, dispatch, department: string) => {\n try {\n const response = await getSecondaryNavData(siteUrl, headers, department)\n dispatch({type: SET_SECONDARY_NAV_DATA, payload: response})\n } catch (error) {\n logger.error(error)\n dispatch({type: SET_SECONDARY_NAV_DATA, payload: new SecondaryNav()})\n }\n}\n\nexport const getSecondaryNavDataThunk = (department: string) => async (dispatch, getState) => {\n const {\n request: {headers, siteUrl},\n secondarynav: {catalogues},\n } = getState() as State\n const dept = department.toLowerCase()\n const departmentCatalogueExists = catalogues[dept]\n if (departmentCatalogueExists) return\n\n dispatch({type: GET_SECONDARY_NAV_DATA, payload: true})\n await makeRequest(siteUrl, headers, dispatch, dept)\n}\n\nconst mergeData = (oldData: SecondaryNavDuckState, newData: SecondaryNav): SecondaryNavDuckState => {\n const lowercaseTitle: string = newData.title.toLowerCase()\n const catalogues = {...oldData.catalogues, [lowercaseTitle]: newData}\n const newDepartmentIds: string[] = oldData.catalogues[lowercaseTitle] ? [] : [lowercaseTitle]\n const departmentIds: string[] = oldData.departmentIds.concat(newDepartmentIds)\n\n return {\n ...oldData,\n catalogues,\n departmentIds,\n isPending: false,\n }\n}\n\nconst reducer = (\n state: SecondaryNavDuckState = initialState,\n action:\n | SetSecondaryNavData\n | GetSecondaryNavData\n | SetIsInSecondaryNav\n | SetDefaultSecondaryConfig\n | SetIsImagePlaceholderEnabled,\n): SecondaryNavDuckState => {\n switch (action.type) {\n case GET_SECONDARY_NAV_DATA: {\n return {...state, isPending: action.payload}\n }\n case SET_SECONDARY_NAV_DATA: {\n return mergeData(state, action.payload)\n }\n case SET_IS_IN_SECONDARY_NAV:\n return {\n ...state,\n isInSecondaryNav: action.payload,\n }\n case SET_IS_IMAGE_PLACEHOLDER_ENABLED:\n return {\n ...state,\n isImagePlaceholderEnabled: action.payload,\n }\n case SET_DEFAULT_SECONDARY_CONFIG:\n return {\n ...state,\n config: action.payload,\n }\n default:\n return state\n }\n}\n\nexport default reducer\n","import logger from \"@next/core-logger\"\nimport type State from \"ducks/state\"\nimport {Store} from \"redux\"\nimport {getPrimaryNavData} from \"../../api/primary-nav\"\nimport {PrimaryNavItem, DefaultConfig} from \"../../models/primary-nav\"\nimport {DEFAULT_PRIMARY_NAV_VERSION} from \"../../config/constants\"\nimport {reorderPinnedElements} from \"../../utils/personalisePrimaryNav\"\nimport {getSecondaryNavDataThunk, setIsInSecondaryMeganav} from \"../secondary-nav\"\n\nexport const SET_PRIMARY_NAV_ACTIVE_INDEX = \"SET_PRIMARY_NAV_ACTIVE_INDEX\"\nexport const SET_PRIMARY_NAV_DATA = \"SET_PRIMARY_NAV_DATA\"\nexport const SET_IS_IN_PRIMARY_NAV = \"SET_IS_IN_PRIMARY_NAV\"\nexport const SET_DEFAULT_PRIMARY_CONFIG = \"SET_DEFAULT_PRIMARY_CONFIG\"\n\nexport type PrimaryNavDuckState = {\n active: boolean\n activeDepartment: string\n activeDepartmentIndex: number\n items: PrimaryNavItem[]\n isInPrimaryNav: boolean\n config: DefaultConfig\n}\n\nexport interface Action {\n type:\n | typeof SET_PRIMARY_NAV_ACTIVE_INDEX\n | typeof SET_PRIMARY_NAV_DATA\n | typeof SET_IS_IN_PRIMARY_NAV\n | typeof SET_DEFAULT_PRIMARY_CONFIG\n payload: Partial\n}\n\nexport interface ActiveIndex {\n type: typeof SET_PRIMARY_NAV_ACTIVE_INDEX\n payload: {\n active: boolean\n activeDepartment: string\n activeDepartmentIndex: number\n }\n}\nexport interface NavData {\n type: typeof SET_PRIMARY_NAV_DATA\n payload: PrimaryNavItem[]\n}\nexport interface IsInPrimaryNav {\n type: typeof SET_IS_IN_PRIMARY_NAV\n payload: boolean\n}\nexport interface DefaultVersion {\n type: typeof SET_DEFAULT_PRIMARY_CONFIG\n payload: DefaultConfig\n}\n\nexport const initialState: PrimaryNavDuckState = {\n activeDepartment: \"\",\n active: false,\n activeDepartmentIndex: -1,\n items: [],\n isInPrimaryNav: false,\n config: {\n version: DEFAULT_PRIMARY_NAV_VERSION,\n country: \"\",\n },\n}\n\nexport const setDefaultConfig = (store: Store, config: DefaultConfig) =>\n store.dispatch({\n type: SET_DEFAULT_PRIMARY_CONFIG,\n payload: config,\n })\n\nexport const setIsInPrimaryNav = (isInPrimaryNav: boolean) => dispatch =>\n dispatch({\n type: SET_IS_IN_PRIMARY_NAV,\n payload: isInPrimaryNav,\n })\n\nexport const setPrimaryNavIndex = (activeDepartmentIndex: number, activeDepartment: string) => dispatch =>\n dispatch({\n type: SET_PRIMARY_NAV_ACTIVE_INDEX,\n payload: {\n activeDepartment: activeDepartment.toLowerCase(),\n activeDepartmentIndex,\n active: activeDepartmentIndex > -1,\n },\n })\n\nexport const setNextPrimaryNavIndex = () => {\n return (dispatch, getState) => {\n const state = getState() as State\n\n if (state.primarynav.activeDepartmentIndex + 1 >= state.primarynav.items.length) {\n closeSecondaryNav(dispatch)\n return\n }\n const nextDepartment = state.primarynav.items[state.primarynav.activeDepartmentIndex + 1]\n\n dispatch(setPrimaryNavIndex(state.primarynav.activeDepartmentIndex + 1, nextDepartment.title))\n dispatch(getSecondaryNavDataThunk(nextDepartment.path))\n }\n}\n\nexport const setPreviousPrimaryNavIndex = () => {\n return (dispatch, getState) => {\n const state = getState() as State\n\n if (state.primarynav.activeDepartmentIndex === 0) {\n closeSecondaryNav(dispatch)\n return\n }\n const nextDepartment = state.primarynav.items[state.primarynav.activeDepartmentIndex - 1]\n\n dispatch(setPrimaryNavIndex(state.primarynav.activeDepartmentIndex - 1, nextDepartment.title))\n dispatch(getSecondaryNavDataThunk(nextDepartment.path))\n }\n}\n\nconst closeSecondaryNav = dispatch => {\n dispatch(setPrimaryNavIndex(-1, \"\"))\n dispatch(setIsInSecondaryMeganav(false))\n dispatch(setIsInPrimaryNav(false))\n}\n\nexport const getPrimaryNavDataThunk = async ({dispatch, getState}: Store) => {\n try {\n const {\n request,\n primarynav: {config},\n } = getState() as State\n\n const response = await getPrimaryNavData(request.headers!, config)\n dispatch({\n type: SET_PRIMARY_NAV_DATA,\n payload: reorderPinnedElements(response.items) || [],\n })\n } catch (error) {\n logger.error(error)\n dispatch({type: SET_PRIMARY_NAV_DATA, payload: []})\n }\n}\n\nconst reducer = (\n state: PrimaryNavDuckState = initialState,\n action: ActiveIndex | NavData | IsInPrimaryNav | DefaultVersion,\n): PrimaryNavDuckState => {\n switch (action.type) {\n case SET_PRIMARY_NAV_ACTIVE_INDEX:\n return {\n ...state,\n ...action.payload,\n }\n case SET_PRIMARY_NAV_DATA:\n return {\n ...state,\n items: action.payload,\n }\n case SET_IS_IN_PRIMARY_NAV:\n return {\n ...state,\n isInPrimaryNav: action.payload,\n }\n case SET_DEFAULT_PRIMARY_CONFIG:\n return {\n ...state,\n config: action.payload,\n }\n default:\n return state\n }\n}\n\nexport default reducer\n","export const SET_ACTIVE = \"SET_ACTIVE\"\n\nexport type AccordionActivityDuckState = {\n [title: string]: boolean\n}\n\nexport interface Action {\n type: typeof SET_ACTIVE\n payload: AccordionActivityDuckState\n}\n\nexport const initialState: AccordionActivityDuckState = {}\n\nexport const setActivity = (title: string | null) => (dispatch, getState) => {\n const department = getState().primarynav.activeDepartment\n const key = `${department}-${title}`\n const currentActivity = getState().accordionActivity[key] || false\n const payload = {[key]: !currentActivity}\n dispatch({type: SET_ACTIVE, payload})\n}\n\nconst reducer = (state: AccordionActivityDuckState = initialState, action: Action): AccordionActivityDuckState => {\n switch (action.type) {\n case SET_ACTIVE: {\n return {...state, ...action.payload}\n }\n default:\n return state\n }\n}\n\nexport default reducer\n","export const SET_ACTIVE = \"SET_ACTIVE\"\n\nexport type TabsActivityDuckState = {\n [department: string]: number\n}\n\nexport interface Action {\n type: typeof SET_ACTIVE\n payload: TabsActivityDuckState\n}\n\nexport const initialState: TabsActivityDuckState = {}\n\nexport const setActiveTab = (tabIndex: number) => (dispatch, getState) => {\n const department = getState().primarynav.activeDepartment\n const payload = {[department]: tabIndex}\n dispatch({type: SET_ACTIVE, payload})\n}\n\nconst reducer = (state: TabsActivityDuckState = initialState, action: Action): TabsActivityDuckState => {\n switch (action.type) {\n case SET_ACTIVE: {\n return {...state, ...action.payload}\n }\n default:\n return state\n }\n}\n\nexport default reducer\n","export const SET_COMPOSITION_SETTINGS = \"SET_COMPOSITION_SETTINGS\"\n\nexport class CompositionSettingsDuckState {\n showSecondaryNavArrow = false\n}\n\nconst initialState = new CompositionSettingsDuckState()\n\ninterface SetCompositionSettings {\n type: typeof SET_COMPOSITION_SETTINGS\n value: CompositionSettingsDuckState\n}\n\ntype CompositionSettingsActions = SetCompositionSettings\n\nexport const setCompositionSettingsAction = (value: CompositionSettingsDuckState): SetCompositionSettings => {\n return {\n type: SET_COMPOSITION_SETTINGS,\n value,\n }\n}\n\nexport const compositionSettingsReducer = (\n state: CompositionSettingsDuckState = initialState,\n action: CompositionSettingsActions,\n): CompositionSettingsDuckState => {\n switch (action.type) {\n case SET_COMPOSITION_SETTINGS:\n return {\n ...state,\n ...action.value,\n }\n default:\n return state\n }\n}\n","import {combineReducers, createStore, applyMiddleware} from \"redux\"\nimport {composeWithDevTools} from \"redux-devtools-extension\"\nimport thunk from \"redux-thunk\"\nimport env from \"../config/env\"\nimport requestReducer from \"./request\"\nimport recentsReducer from \"./recents\"\nimport searchReducer from \"./search\"\nimport shoppingBagReducer from \"./shoppingbag\"\nimport headerReducer from \"./headerdata\"\nimport userReducer from \"./user\"\nimport autocompleteReducer from \"./autocomplete\"\nimport languageReducer from \"./languages\"\nimport textAlignmentReducer from \"./text-alignment\"\nimport textReducer from \"./text\"\nimport favouritesReducer from \"./favourites\"\nimport featuresReducer from \"./feature-switch\"\nimport countrySelectorReducer from \"./country-selector\"\nimport templateReducer from \"./template\"\nimport AppState from \"./state\"\nimport {settingsReducer} from \"./settings\"\nimport primarynavReducer from \"./primary-nav\"\nimport secondarynavReducer from \"./secondary-nav\"\nimport accordionActivityReducer from \"./accordion-activity\"\nimport tabsActivityReducer from \"./tabs-activity\"\nimport {compositionSettingsReducer} from \"./compositionSettings\"\n\nexport type State = AppState\n\nconst {DEVELOPMENT} = env\n\nexport const rootReducer = combineReducers({\n user: userReducer,\n recents: recentsReducer,\n request: requestReducer,\n search: searchReducer,\n shoppingBag: shoppingBagReducer,\n languages: languageReducer,\n data: headerReducer,\n textAlignment: textAlignmentReducer,\n autocomplete: autocompleteReducer,\n favourites: favouritesReducer,\n features: featuresReducer,\n countrySelector: countrySelectorReducer,\n text: textReducer,\n template: templateReducer,\n settings: settingsReducer,\n primarynav: primarynavReducer,\n secondarynav: secondarynavReducer,\n accordionActivity: accordionActivityReducer,\n tabsActivity: tabsActivityReducer,\n compositionSettings: compositionSettingsReducer,\n})\n\nexport const makeStore = (initialState?: State) => {\n return createStore(\n rootReducer,\n initialState,\n DEVELOPMENT ? composeWithDevTools(applyMiddleware(thunk)) : applyMiddleware(thunk),\n )\n}\n","import Cookies from \"js-cookie\"\nimport {makeStore, State} from \"../ducks\"\nimport {shufflePrimaryNav} from \"../utils/personalisePrimaryNav\"\nimport {MASID} from \"../config/constants\"\n\nexport const getStore = (_STATE_?: State) => {\n const state = _STATE_ || getState()\n const masIDCookie = Cookies.get(MASID)\n const items = shufflePrimaryNav(state.primarynav.items, masIDCookie)\n // reproduce the store used to render the page on server\n const store = makeStore({...state, primarynav: {...state.primarynav, items}})\n return store\n}\n\nexport const getProps = () => {\n // Read the initial props as set by the server\n const {appProps} = (window as any).ssrClientSettings.header\n // delete the initial props from global window object\n delete (window as any).ssrClientSettings.header.appProps\n return appProps\n}\n\nconst getState = () => {\n // Read the state sent with markup\n const {_STATE_} = (window as any).ssrClientSettings.header\n\n // delete the state from global window object\n delete (window as any).ssrClientSettings.header._STATE_\n return _STATE_\n}\n","import React from 'react';\nimport rtl from 'jss-rtl';\nimport { createGenerateClassName, StylesProvider, ThemeProvider, jssPreset } from '@material-ui/styles';\nimport { nextMaterialUITheme } from '@next/themes';\nimport { StyleSheetManager, ThemeProvider as ThemeProvider$1 } from 'styled-components';\nimport stylisRTLPlugin from 'stylis-plugin-rtl';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\nvar isProduction = process.env.NODE_ENV === 'production';\n\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar plainObjectConstrurctor = {}.constructor;\n\nfunction cloneStyle(style) {\n if (style == null || typeof style !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n\n return newStyle;\n}\n/**\n * Create a rule instance.\n */\n\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n\n return null;\n}\n\nvar join = function join(value, by) {\n var result = '';\n\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n\n return result;\n};\n/**\n * Converts JSS array value to a CSS string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\n\n\nvar toCssValue = function toCssValue(value, ignoreImportant) {\n if (ignoreImportant === void 0) {\n ignoreImportant = false;\n }\n\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (!ignoreImportant && value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n};\n\nfunction getWhitespaceSymbols(options) {\n if (options && options.format === false) {\n return {\n linebreak: '',\n space: ''\n };\n }\n\n return {\n linebreak: '\\n',\n space: ' '\n };\n}\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\n\n\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n\n if (options.format === false) {\n indent = -Infinity;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak,\n space = _getWhitespaceSymbols.space;\n\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += linebreak;\n result += indentStr(prop + \":\" + space + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += linebreak;\n result += indentStr(_prop + \":\" + space + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += linebreak;\n result += indentStr(_prop2 + \":\" + space + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\" + linebreak + result + linebreak;\n return indentStr(\"\" + selector + space + \"{\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\n\nvar escape = function escape(str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n};\n\nvar BaseStyleRule = /*#__PURE__*/function () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.isProcessed = false;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = (name in this.style); // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\n\nvar StyleRule = /*#__PURE__*/function (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n /**\n * Apply rule to an element inline.\n */\n\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\n\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (key[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(key, style, options);\n }\n};\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule = /*#__PURE__*/function () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.isProcessed = false;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */\n ;\n\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\" + linebreak + children + linebreak + \"}\" : '';\n };\n\n return ConditionalRule;\n}();\n\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule = /*#__PURE__*/function () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.isProcessed = false;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\" + linebreak + children + linebreak;\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\n\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar pluginKeyframesRule = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule = /*#__PURE__*/function (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\n return _BaseStyleRule.apply(this, arguments) || this;\n }\n\n var _proto = KeyframeRule.prototype;\n /**\n * Generates a CSS string.\n */\n\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\n\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule = /*#__PURE__*/function () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += linebreak;\n }\n\n return str;\n }\n\n return toCss(this.at, this.style, options);\n };\n\n return FontFaceRule;\n}();\n\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule = /*#__PURE__*/function () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\n\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule = /*#__PURE__*/function () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.isProcessed = false;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\n\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\nvar plugins = [pluginStyleRule, pluginConditionalRule, pluginKeyframesRule, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList = /*#__PURE__*/function () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Replace rule.\n * Create a new rule and remove old one instead of overwriting\n * because we want to invoke onCreateRule hook to make plugins work.\n */\n ;\n\n _proto.replace = function replace(name, decl, ruleOptions) {\n var oldRule = this.get(name);\n var oldIndex = this.index.indexOf(oldRule);\n\n if (oldRule) {\n this.remove(oldRule);\n }\n\n var options = ruleOptions;\n if (oldIndex !== -1) options = _extends({}, ruleOptions, {\n index: oldIndex\n });\n return this.add(name, decl, options);\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.get = function get(nameOrSelector) {\n return this.map[nameOrSelector];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0];\n data = arguments.length <= 1 ? undefined : arguments[1];\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0];\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.get(name), data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var style = rule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== rule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(rule.style, rule, sheet); // Update and add props.\n\n for (var prop in rule.style) {\n var nextValue = rule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n rule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = rule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n rule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += linebreak;\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet = /*#__PURE__*/function () {\n function StyleSheet(styles, options) {\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Replace a rule in the current stylesheet.\n */\n ;\n\n _proto.replaceRule = function replaceRule(nameOrSelector, decl, options) {\n var oldRule = this.rules.get(nameOrSelector);\n if (!oldRule) return this.addRule(nameOrSelector, decl, options);\n var newRule = this.rules.replace(nameOrSelector, decl, options);\n\n if (newRule) {\n this.options.jss.plugins.onProcessRule(newRule);\n }\n\n if (this.attached) {\n if (!this.deployed) return newRule; // Don't replace / delete rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (this.renderer) {\n if (!newRule) {\n this.renderer.deleteRule(oldRule);\n } else if (oldRule.renderable) {\n this.renderer.replaceRule(oldRule.renderable, newRule);\n }\n }\n\n return newRule;\n } // We can't replace rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return newRule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.getRule = function getRule(nameOrSelector) {\n return this.rules.get(nameOrSelector);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n if (!rule || // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry = /*#__PURE__*/function () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = {};\n }\n\n var _proto = PluginsRegistry.prototype;\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n/**\n * Sheets registry to access all instances in one place.\n */\n\n\nvar SheetsRegistry = /*#__PURE__*/function () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n /**\n * Register a Style Sheet.\n */\n\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += linebreak;\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\n\nvar sheets = new SheetsRegistry();\n/* eslint-disable */\n\n/**\n * Now that `globalThis` is available on most platforms\n * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis#browser_compatibility)\n * we check for `globalThis` first. `globalThis` is necessary for jss\n * to run in Agoric's secure version of JavaScript (SES). Under SES,\n * `globalThis` exists, but `window`, `self`, and `Function('return\n * this')()` are all undefined for security reasons.\n *\n * https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n */\n\nvar globalThis$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' && window.Math === Math ? window : typeof self !== 'undefined' && self.Math === Math ? self : Function('return this')();\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis$1[ns] == null) globalThis$1[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis$1[ns]++;\nvar maxRules = 1e10;\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\n\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n\n var generateId = function generateId(rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n\n return generateId;\n};\n/**\n * Cache the value from the first time a function is called.\n */\n\n\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n/**\n * Get a style property value.\n */\n\n\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n/**\n * Set a style property.\n */\n\n\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value, true);\n\n if (value[value.length - 1] === '!important') {\n cssRule.style.setProperty(prop, cssValue, 'important');\n return true;\n }\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n cssRule.style.setProperty(prop, cssValue);\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n};\n/**\n * Remove a style property.\n */\n\n\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n/**\n * Set the selector.\n */\n\n\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n/**\n * Find a node before which we can insert the sheet.\n */\n\n\nfunction findPrevNode(options) {\n var registry = sheets.registry;\n\n if (registry.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n container.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n container.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n\n return index;\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer = /*#__PURE__*/function () {\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.hasInsertedRules = false;\n this.cssRules = []; // There is no sheet when the renderer is used from a standalone StyleRule.\n\n if (sheet) sheets.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n\n if (latestNativeParent === false) {\n return false;\n }\n\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules.splice(index, 0, cssRule);\n }\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss = /*#__PURE__*/function () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.9.0\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = sheets.index === 0 ? 0 : sheets.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n sheets.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n } // Enable rule without name for inline styles.\n\n\n if (typeof name === 'object') {\n return this.createRule(undefined, name, style);\n }\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n var rule = createRule(name, style, ruleOptions);\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\nvar createJss = function createJss(options) {\n return new Jss(options);\n};\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\n\n\nvar index = createJss();\nObject.defineProperty(stylisRTLPlugin, \"name\", {\n value: \"stylis-rtl\"\n});\n\nvar WithStyleSheet = function WithStyleSheet(_a) {\n var textAlignment = _a.textAlignment,\n children = _a.children;\n var isRTL = textAlignment.toLowerCase() === \"rtl\";\n return isRTL ? React.createElement(StyleSheetManager, {\n stylisPlugins: [stylisRTLPlugin]\n }, children) : React.createElement(React.Fragment, null, children);\n};\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.getElementById);\n\nvar createJss$1 = function createJss$1(noRenderer) {\n if (noRenderer === void 0) {\n noRenderer = false;\n }\n\n var options = {\n plugins: __spreadArrays(jssPreset().plugins, [rtl()]),\n insertionPoint: canUseDOM ? document.getElementById(\"jss-insertion-point\") : undefined\n };\n\n if (noRenderer) {\n options.Renderer = null;\n }\n\n return createJss(options);\n};\n\nvar NextThemeProvider = function NextThemeProvider(_a) {\n var themeColor = _a.themeColor,\n textAlignment = _a.textAlignment,\n children = _a.children,\n classname = _a.classname,\n disableGlobal = _a.disableGlobal,\n noRenderer = _a.noRenderer;\n var generateClassName = createGenerateClassName({\n productionPrefix: classname,\n disableGlobal: disableGlobal\n });\n return React.createElement(StylesProvider, {\n jss: createJss$1(noRenderer),\n generateClassName: generateClassName\n }, React.createElement(ThemeProvider, {\n theme: nextMaterialUITheme(themeColor, textAlignment)\n }, React.createElement(WithStyleSheet, {\n textAlignment: textAlignment\n }, children)));\n};\n\nNextThemeProvider.defaultProps = {\n disableGlobal: false,\n noRenderer: false\n};\n\nvar SCThemeProvider = function SCThemeProvider(_a) {\n var theme = _a.theme,\n children = _a.children;\n return React.createElement(ThemeProvider$1, {\n theme: theme\n }, children);\n};\n\nexport default NextThemeProvider;\nexport { SCThemeProvider };","import { ReplaySubject } from 'rxjs';\nimport { useEffect } from 'react';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _a;\n\nvar hasOwnProp = {}.hasOwnProperty;\n\nif (typeof window !== \"undefined\") {\n window.subjects = (_a = window.subjects) !== null && _a !== void 0 ? _a : {\n setupEvent: function setupEvent(eventName) {\n if (!window.subjects[eventName]) {\n window.subjects[eventName] = new ReplaySubject(1);\n }\n }\n };\n}\n\nvar Emitter = function () {\n function Emitter() {}\n\n Object.defineProperty(Emitter, \"Instance\", {\n get: function get() {\n if (!this.instance) this.instance = new this();\n return this.instance;\n },\n enumerable: true,\n configurable: true\n });\n\n Emitter.prototype.createName = function (name) {\n return \"$ \" + name;\n };\n\n Emitter.prototype.emit = function (name, data) {\n var fnName = this.createName(name);\n window.subjects[fnName] || (window.subjects[fnName] = new ReplaySubject(1));\n window.subjects[fnName].next(data);\n };\n\n Emitter.prototype.listen = function (name, handler) {\n var fnName = this.createName(name);\n window.subjects[fnName] || (window.subjects[fnName] = new ReplaySubject(1));\n return window.subjects[fnName].subscribe(handler);\n };\n\n Emitter.prototype.dispose = function () {\n var subjects = window.subjects;\n\n for (var prop in subjects) {\n if (hasOwnProp.call(subjects, prop)) {\n subjects[prop].dispose();\n }\n }\n\n window.subjects = {};\n };\n\n return Emitter;\n}();\n\nvar Emitter$1 = Emitter.Instance;\n\nvar CommonESB = function () {\n function CommonESB() {\n this.subscriptions = {};\n }\n\n CommonESB.prototype.PublishData = function (event, data) {\n Emitter$1.emit(event, data);\n };\n\n CommonESB.prototype.SubscribeToEvent = function (event, cb) {\n var subscription = Emitter$1.listen(event, cb);\n if (event in this.subscriptions) throw new Error(\"A subscription already exists for event: \" + event);\n this.subscriptions[event] = subscription;\n return {\n subscription: subscription\n };\n };\n\n CommonESB.prototype.UnsubscribeAll = function () {\n var _this = this;\n\n try {\n Object.keys(this.subscriptions).forEach(function (key) {\n _this.subscriptions[key].unsubscribe();\n\n delete _this.subscriptions[key];\n });\n } catch (_a) {\n throw new Error(\"An error occurred unsubscribing from event\");\n }\n };\n\n return CommonESB;\n}();\n\nvar Events;\n\n(function (Events) {\n Events[\"SEARCH\"] = \"SEARCH\";\n Events[\"GET_BAG\"] = \"GET_BAG\";\n Events[\"SHOPPING_BAG_GET\"] = \"SHOPPING_BAG_GET\";\n Events[\"SHOPPING_BAG_GET_CALLBACK\"] = \"SHOPPING_BAG_GET_CALLBACK\";\n Events[\"SHOPPING_BAG_REMOVE\"] = \"SHOPPING_BAG_REMOVE\";\n Events[\"SHOPPING_BAG_REMOVE_CALLBACK\"] = \"SHOPPING_BAG_REMOVE_CALLBACK\";\n Events[\"SHOPPING_BAG_ADD\"] = \"SHOPPING_BAG_ADD\";\n Events[\"SHOPPING_BAG_ADD_CALLBACK\"] = \"SHOPPING_BAG_ADD_CALLBACK\";\n Events[\"SHOPPING_BAG_ADD_CIST\"] = \"SHOPPING_BAG_ADD_CIST\";\n Events[\"SHOPPING_BAG_ADD_CIST_CALLBACK\"] = \"SHOPPING_BAG_ADD_CIST_CALLBACK\";\n Events[\"SHOPPING_BAG_ADD_MULTIPLE\"] = \"SHOPPING_BAG_ADD_MULTIPLE\";\n Events[\"SHOPPING_BAG_ADD_MULTIPLE_CALLBACK\"] = \"SHOPPING_BAG_ADD_MULTIPLE_CALLBACK\";\n Events[\"SHOPPING_BAG_ADD_WARRANTY\"] = \"SHOPPING_BAG_ADD_WARRANTY\";\n Events[\"SHOPPING_BAG_ADD_WARRANTY_CALLBACK\"] = \"SHOPPING_BAG_ADD_WARRANTY_CALLBACK\";\n Events[\"SHOPPING_BAG_ADD_LINKED_ITEM\"] = \"SHOPPING_BAG_ADD_LINKED_ITEM\";\n Events[\"SHOPPING_BAG_ADD_LINKED_ITEM_CALLBACK\"] = \"SHOPPING_BAG_ADD_LINKED_ITEM_CALLBACK\";\n Events[\"SHOPPING_BAG_UPDATE_SIZE\"] = \"SHOPPING_BAG_UPDATE_SIZE\";\n Events[\"SHOPPING_BAG_UPDATE_SIZE_CALLBACK\"] = \"SHOPPING_BAG_UPDATE_SIZE_CALLBACK\";\n Events[\"SHOPPING_BAG_UPDATE_QUANTITY\"] = \"SHOPPING_BAG_UPDATE_QUANTITY\";\n Events[\"SHOPPING_BAG_UPDATE_QUANTITY_CALLBACK\"] = \"SHOPPING_BAG_UPDATE_QUANTITY_CALLBACK\";\n Events[\"SHOPPING_BAG_ADD_VOUCHER\"] = \"SHOPPING_BAG_ADD_VOUCHER\";\n Events[\"SHOPPING_BAG_ADD_VOUCHER_CALLBACK\"] = \"SHOPPING_BAG_ADD_VOUCHER_CALLBACK\";\n Events[\"SHOPPING_BAG_ADD_EVOUCHER\"] = \"SHOPPING_BAG_ADD_EVOUCHER\";\n Events[\"SHOPPING_BAG_ADD_EVOUCHER_CALLBACK\"] = \"SHOPPING_BAG_ADD_EVOUCHER_CALLBACK\";\n Events[\"SHOPPING_BAG_ACCEPT\"] = \"SHOPPING_BAG_ACCEPT\";\n Events[\"SHOPPING_BAG_ACCEPT_CALLBACK\"] = \"SHOPPING_BAG_ACCEPT_CALLBACK\";\n Events[\"SHOPPING_BAG_REJECT\"] = \"SHOPPING_BAG_REJECT\";\n Events[\"SHOPPING_BAG_REJECT_CALLBACK\"] = \"SHOPPING_BAG_REJECT_CALLBACK\";\n Events[\"FAVOURITES_GET\"] = \"FAVOURITES_GET\";\n Events[\"FAVOURITES_GET_CALLBACK\"] = \"FAVOURITES_GET_CALLBACK\";\n Events[\"FAVOURITES_ADD\"] = \"FAVOURITES_ADD\";\n Events[\"FAVOURITES_ADD_CALLBACK\"] = \"FAVOURITES_ADD_CALLBACK\";\n Events[\"FAVOURITES_REMOVE\"] = \"FAVOURITES_REMOVE\";\n Events[\"FAVOURITES_REMOVE_CALLBACK\"] = \"FAVOURITES_REMOVE_CALLBACK\";\n Events[\"VISITOR_TOKEN_GET\"] = \"VISITOR_TOKEN_GET\";\n Events[\"VISITOR_TOKEN_GET_CALLBACK\"] = \"VISITOR_TOKEN_GET_CALLBACK\";\n Events[\"VISITOR_TOKEN_UPGRADE\"] = \"VISITOR_TOKEN_UPGRADE\";\n Events[\"VISITOR_TOKEN_CLEAR\"] = \"VISITOR_TOKEN_CLEAR\";\n Events[\"VISITOR_TOKEN_CLEAR_CALLBACK\"] = \"VISITOR_TOKEN_CLEAR_CALLBACK\";\n Events[\"COUNTRY_SELECTOR_OPEN\"] = \"COUNTRY_SELECTOR_OPEN\";\n Events[\"COUNTRY_SELECTOR_CLOSED\"] = \"COUNTRY_SELECTOR_CLOSED\";\n Events[\"COUNTRY_SELECTOR_REDIRECT\"] = \"COUNTRY_SELECTOR_REDIRECT\";\n Events[\"COUNTRY_SELECTOR_REDIRECT_TO_ALTERNATIVE_LANGUAGE\"] = \"COUNTRY_SELECTOR_REDIRECT_TO_ALTERNATIVE_LANGUAGE\";\n Events[\"PRODUCT_SUMMARY_HYDRATE\"] = \"PRODUCT_SUMMARY_HYDRATE\";\n Events[\"PRODUCT_SUMMARY_DEBOUNCE_TO_DATALAYER\"] = \"PRODUCT_SUMMARY_DEBOUNCE_TO_DATALAYER\";\n Events[\"PRODUCT_SUMMARY_TRACK_PAGE\"] = \"PRODUCT_SUMMARY_TRACK_PAGE\";\n Events[\"PLP_ADD_PRODUCTS_TO_MONETATE\"] = \"PLP_ADD_PRODUCTS_TO_MONETATE\";\n Events[\"SEARCH_LANDING_BLOOMREACH_CATEGORY\"] = \"SEARCH_LANDING_BLOOMREACH_CATEGORY\";\n Events[\"MODALS_CLOSE\"] = \"MODALS_CLOSE\";\n Events[\"TRACK_EVENT\"] = \"TRACK_EVENT\";\n Events[\"TRACK_SITE_DETAILS_EVENT\"] = \"TRACK_SITE_DETAILS_EVENT\";\n Events[\"COOKIE_POLICY_CLOSE\"] = \"COOKIE_POLICY_CLOSE\";\n Events[\"COOKIE_POLICY_OPEN\"] = \"COOKIE_POLICY_OPEN\";\n Events[\"COOKIE_POLICY_REDIRECT\"] = \"COOKIE_POLICY_REDIRECT\";\n})(Events || (Events = {}));\n\nvar Events$1 = Events;\n\nvar SearchESB = function (_super) {\n __extends(SearchESB, _super);\n\n function SearchESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SearchESB.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SEARCH, data);\n };\n\n SearchESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SEARCH, callback);\n };\n\n return SearchESB;\n}(CommonESB);\n\nvar GetFavourites = function (_super) {\n __extends(GetFavourites, _super);\n\n function GetFavourites() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n GetFavourites.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.FAVOURITES_GET);\n };\n\n GetFavourites.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.FAVOURITES_GET, callback);\n };\n\n return GetFavourites;\n}(CommonESB);\n\nvar GetFavouritesCallback = function (_super) {\n __extends(GetFavouritesCallback, _super);\n\n function GetFavouritesCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n GetFavouritesCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.FAVOURITES_GET_CALLBACK, data);\n };\n\n GetFavouritesCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.FAVOURITES_GET_CALLBACK, callback);\n };\n\n return GetFavouritesCallback;\n}(CommonESB);\n\nvar AddFavourites = function (_super) {\n __extends(AddFavourites, _super);\n\n function AddFavourites() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddFavourites.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.FAVOURITES_ADD, data);\n };\n\n AddFavourites.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.FAVOURITES_ADD, callback);\n };\n\n return AddFavourites;\n}(CommonESB);\n\nvar AddFavouritesCallback = function (_super) {\n __extends(AddFavouritesCallback, _super);\n\n function AddFavouritesCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddFavouritesCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.FAVOURITES_ADD_CALLBACK, data);\n };\n\n AddFavouritesCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.FAVOURITES_ADD_CALLBACK, callback);\n };\n\n return AddFavouritesCallback;\n}(CommonESB);\n\nvar RemoveFavourites = function (_super) {\n __extends(RemoveFavourites, _super);\n\n function RemoveFavourites() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RemoveFavourites.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.FAVOURITES_REMOVE, data);\n };\n\n RemoveFavourites.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.FAVOURITES_REMOVE, callback);\n };\n\n return RemoveFavourites;\n}(CommonESB);\n\nvar RemoveFavouritesCallback = function (_super) {\n __extends(RemoveFavouritesCallback, _super);\n\n function RemoveFavouritesCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RemoveFavouritesCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.FAVOURITES_REMOVE_CALLBACK, data);\n };\n\n RemoveFavouritesCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.FAVOURITES_REMOVE_CALLBACK, callback);\n };\n\n return RemoveFavouritesCallback;\n}(CommonESB);\n\nvar PageLandingESB = function (_super) {\n __extends(PageLandingESB, _super);\n\n function PageLandingESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n PageLandingESB.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SEARCH_LANDING_BLOOMREACH_CATEGORY, data);\n };\n\n PageLandingESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SEARCH_LANDING_BLOOMREACH_CATEGORY, callback);\n };\n\n return PageLandingESB;\n}(CommonESB);\n\nvar GetBag = function (_super) {\n __extends(GetBag, _super);\n\n function GetBag() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n GetBag.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_GET, data);\n };\n\n GetBag.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_GET, callback);\n };\n\n return GetBag;\n}(CommonESB);\n\nvar GetBagCallback = function (_super) {\n __extends(GetBagCallback, _super);\n\n function GetBagCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n GetBagCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_GET_CALLBACK, data);\n };\n\n GetBagCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_GET_CALLBACK, callback);\n };\n\n return GetBagCallback;\n}(CommonESB);\n\nvar AddBag = function (_super) {\n __extends(AddBag, _super);\n\n function AddBag() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddBag.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD, data);\n };\n\n AddBag.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD, callback);\n };\n\n return AddBag;\n}(CommonESB);\n\nvar AddBagCallback = function (_super) {\n __extends(AddBagCallback, _super);\n\n function AddBagCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddBagCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_CALLBACK, data);\n };\n\n AddBagCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_CALLBACK, callback);\n };\n\n return AddBagCallback;\n}(CommonESB);\n\nvar AddCistBag = function (_super) {\n __extends(AddCistBag, _super);\n\n function AddCistBag() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddCistBag.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_CIST, data);\n };\n\n AddCistBag.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_CIST, callback);\n };\n\n return AddCistBag;\n}(CommonESB);\n\nvar AddCistBagCallback = function (_super) {\n __extends(AddCistBagCallback, _super);\n\n function AddCistBagCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddCistBagCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_CIST_CALLBACK, data);\n };\n\n AddCistBagCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_CIST_CALLBACK, callback);\n };\n\n return AddCistBagCallback;\n}(CommonESB);\n\nvar AddEVoucher = function (_super) {\n __extends(AddEVoucher, _super);\n\n function AddEVoucher() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddEVoucher.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_EVOUCHER, data);\n };\n\n AddEVoucher.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_EVOUCHER, callback);\n };\n\n return AddEVoucher;\n}(CommonESB);\n\nvar AddEVoucherCallback = function (_super) {\n __extends(AddEVoucherCallback, _super);\n\n function AddEVoucherCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddEVoucherCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_EVOUCHER_CALLBACK, data);\n };\n\n AddEVoucherCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_EVOUCHER_CALLBACK, callback);\n };\n\n return AddEVoucherCallback;\n}(CommonESB);\n\nvar AddLinkedItem = function (_super) {\n __extends(AddLinkedItem, _super);\n\n function AddLinkedItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddLinkedItem.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_LINKED_ITEM, data);\n };\n\n AddLinkedItem.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_LINKED_ITEM, callback);\n };\n\n return AddLinkedItem;\n}(CommonESB);\n\nvar AddLinkedItemCallback = function (_super) {\n __extends(AddLinkedItemCallback, _super);\n\n function AddLinkedItemCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddLinkedItemCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_LINKED_ITEM_CALLBACK, data);\n };\n\n AddLinkedItemCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_LINKED_ITEM_CALLBACK, callback);\n };\n\n return AddLinkedItemCallback;\n}(CommonESB);\n\nvar AddMultiple = function (_super) {\n __extends(AddMultiple, _super);\n\n function AddMultiple() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddMultiple.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_MULTIPLE, data);\n };\n\n AddMultiple.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_MULTIPLE, callback);\n };\n\n return AddMultiple;\n}(CommonESB);\n\nvar AddMultipleCallback = function (_super) {\n __extends(AddMultipleCallback, _super);\n\n function AddMultipleCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddMultipleCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_MULTIPLE_CALLBACK, data);\n };\n\n AddMultipleCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_MULTIPLE_CALLBACK, callback);\n };\n\n return AddMultipleCallback;\n}(CommonESB);\n\nvar AddVoucher = function (_super) {\n __extends(AddVoucher, _super);\n\n function AddVoucher() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddVoucher.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_VOUCHER, data);\n };\n\n AddVoucher.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_VOUCHER, callback);\n };\n\n return AddVoucher;\n}(CommonESB);\n\nvar AddVoucherCallback = function (_super) {\n __extends(AddVoucherCallback, _super);\n\n function AddVoucherCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddVoucherCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_VOUCHER_CALLBACK, data);\n };\n\n AddVoucherCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_VOUCHER_CALLBACK, callback);\n };\n\n return AddVoucherCallback;\n}(CommonESB);\n\nvar AddWarranty = function (_super) {\n __extends(AddWarranty, _super);\n\n function AddWarranty() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddWarranty.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_WARRANTY, data);\n };\n\n AddWarranty.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_WARRANTY, callback);\n };\n\n return AddWarranty;\n}(CommonESB);\n\nvar AddWarrantyCallback = function (_super) {\n __extends(AddWarrantyCallback, _super);\n\n function AddWarrantyCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddWarrantyCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ADD_WARRANTY_CALLBACK, data);\n };\n\n AddWarrantyCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ADD_WARRANTY_CALLBACK, callback);\n };\n\n return AddWarrantyCallback;\n}(CommonESB);\n\nvar RemoveBag = function (_super) {\n __extends(RemoveBag, _super);\n\n function RemoveBag() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RemoveBag.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_REMOVE, data);\n };\n\n RemoveBag.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_REMOVE, callback);\n };\n\n return RemoveBag;\n}(CommonESB);\n\nvar RemoveBagCallback = function (_super) {\n __extends(RemoveBagCallback, _super);\n\n function RemoveBagCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RemoveBagCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_REMOVE_CALLBACK, data);\n };\n\n RemoveBagCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_REMOVE_CALLBACK, callback);\n };\n\n return RemoveBagCallback;\n}(CommonESB);\n\nvar UpdateQuantity = function (_super) {\n __extends(UpdateQuantity, _super);\n\n function UpdateQuantity() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UpdateQuantity.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_UPDATE_QUANTITY, data);\n };\n\n UpdateQuantity.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_UPDATE_QUANTITY, callback);\n };\n\n return UpdateQuantity;\n}(CommonESB);\n\nvar UpdateQuantityCallback = function (_super) {\n __extends(UpdateQuantityCallback, _super);\n\n function UpdateQuantityCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UpdateQuantityCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_UPDATE_QUANTITY_CALLBACK, data);\n };\n\n UpdateQuantityCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_UPDATE_QUANTITY_CALLBACK, callback);\n };\n\n return UpdateQuantityCallback;\n}(CommonESB);\n\nvar UpdateSize = function (_super) {\n __extends(UpdateSize, _super);\n\n function UpdateSize() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UpdateSize.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_UPDATE_SIZE, data);\n };\n\n UpdateSize.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_UPDATE_SIZE, callback);\n };\n\n return UpdateSize;\n}(CommonESB);\n\nvar UpdateSizeCallback = function (_super) {\n __extends(UpdateSizeCallback, _super);\n\n function UpdateSizeCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UpdateSizeCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_UPDATE_SIZE_CALLBACK, data);\n };\n\n UpdateSizeCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_UPDATE_SIZE_CALLBACK, callback);\n };\n\n return UpdateSizeCallback;\n}(CommonESB);\n\nvar AcceptBag = function (_super) {\n __extends(AcceptBag, _super);\n\n function AcceptBag() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AcceptBag.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ACCEPT, data);\n };\n\n AcceptBag.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ACCEPT, callback);\n };\n\n return AcceptBag;\n}(CommonESB);\n\nvar AcceptBagCallback = function (_super) {\n __extends(AcceptBagCallback, _super);\n\n function AcceptBagCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AcceptBagCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_ACCEPT_CALLBACK, data);\n };\n\n AcceptBagCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_ACCEPT_CALLBACK, callback);\n };\n\n return AcceptBagCallback;\n}(CommonESB);\n\nvar RejectBag = function (_super) {\n __extends(RejectBag, _super);\n\n function RejectBag() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RejectBag.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_REJECT, data);\n };\n\n RejectBag.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_REJECT, callback);\n };\n\n return RejectBag;\n}(CommonESB);\n\nvar RejectBagCallback = function (_super) {\n __extends(RejectBagCallback, _super);\n\n function RejectBagCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RejectBagCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.SHOPPING_BAG_REJECT_CALLBACK, data);\n };\n\n RejectBagCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.SHOPPING_BAG_REJECT_CALLBACK, callback);\n };\n\n return RejectBagCallback;\n}(CommonESB);\n\nvar GetVisitorToken = function (_super) {\n __extends(GetVisitorToken, _super);\n\n function GetVisitorToken() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n GetVisitorToken.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.VISITOR_TOKEN_GET, data);\n };\n\n GetVisitorToken.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.VISITOR_TOKEN_GET, callback);\n };\n\n return GetVisitorToken;\n}(CommonESB);\n\nvar GetVisitorTokenCallback = function (_super) {\n __extends(GetVisitorTokenCallback, _super);\n\n function GetVisitorTokenCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n GetVisitorTokenCallback.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.VISITOR_TOKEN_GET_CALLBACK, data);\n };\n\n GetVisitorTokenCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.VISITOR_TOKEN_GET_CALLBACK, callback);\n };\n\n return GetVisitorTokenCallback;\n}(CommonESB);\n\nvar ClearVisitorTokenCallback = function (_super) {\n __extends(ClearVisitorTokenCallback, _super);\n\n function ClearVisitorTokenCallback() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ClearVisitorTokenCallback.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.VISITOR_TOKEN_CLEAR_CALLBACK);\n };\n\n ClearVisitorTokenCallback.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.VISITOR_TOKEN_CLEAR_CALLBACK, callback);\n };\n\n return ClearVisitorTokenCallback;\n}(CommonESB);\n\nvar UpgradeVisitorToken = function (_super) {\n __extends(UpgradeVisitorToken, _super);\n\n function UpgradeVisitorToken() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UpgradeVisitorToken.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.VISITOR_TOKEN_UPGRADE, data);\n };\n\n UpgradeVisitorToken.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.VISITOR_TOKEN_UPGRADE, callback);\n };\n\n return UpgradeVisitorToken;\n}(CommonESB);\n\nvar ClearVisitorToken = function (_super) {\n __extends(ClearVisitorToken, _super);\n\n function ClearVisitorToken() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ClearVisitorToken.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.VISITOR_TOKEN_CLEAR);\n };\n\n ClearVisitorToken.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.VISITOR_TOKEN_CLEAR, callback);\n };\n\n return ClearVisitorToken;\n}(CommonESB);\n\nvar CountrySelectorOpenESB = function (_super) {\n __extends(CountrySelectorOpenESB, _super);\n\n function CountrySelectorOpenESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CountrySelectorOpenESB.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.COUNTRY_SELECTOR_OPEN, data);\n };\n\n CountrySelectorOpenESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.COUNTRY_SELECTOR_OPEN, callback);\n };\n\n return CountrySelectorOpenESB;\n}(CommonESB);\n\nvar CountrySelectorClosedESB = function (_super) {\n __extends(CountrySelectorClosedESB, _super);\n\n function CountrySelectorClosedESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CountrySelectorClosedESB.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.COUNTRY_SELECTOR_CLOSED);\n };\n\n CountrySelectorClosedESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.COUNTRY_SELECTOR_CLOSED, callback);\n };\n\n return CountrySelectorClosedESB;\n}(CommonESB);\n\nvar CountrySelectorRedirectESB = function (_super) {\n __extends(CountrySelectorRedirectESB, _super);\n\n function CountrySelectorRedirectESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CountrySelectorRedirectESB.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.COUNTRY_SELECTOR_REDIRECT);\n };\n\n CountrySelectorRedirectESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.COUNTRY_SELECTOR_REDIRECT, callback);\n };\n\n return CountrySelectorRedirectESB;\n}(CommonESB);\n\nvar CountrySelectorRedirectToAlternativeLanguageESB = function (_super) {\n __extends(CountrySelectorRedirectToAlternativeLanguageESB, _super);\n\n function CountrySelectorRedirectToAlternativeLanguageESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CountrySelectorRedirectToAlternativeLanguageESB.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.COUNTRY_SELECTOR_REDIRECT_TO_ALTERNATIVE_LANGUAGE);\n };\n\n CountrySelectorRedirectToAlternativeLanguageESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.COUNTRY_SELECTOR_REDIRECT_TO_ALTERNATIVE_LANGUAGE, callback);\n };\n\n return CountrySelectorRedirectToAlternativeLanguageESB;\n}(CommonESB);\n\nvar HydrateProductSummaryESB = function (_super) {\n __extends(HydrateProductSummaryESB, _super);\n\n function HydrateProductSummaryESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n HydrateProductSummaryESB.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.PRODUCT_SUMMARY_HYDRATE);\n };\n\n HydrateProductSummaryESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.PRODUCT_SUMMARY_HYDRATE, callback);\n };\n\n return HydrateProductSummaryESB;\n}(CommonESB);\n\nvar ProductSummaryToDataLayer = function (_super) {\n __extends(ProductSummaryToDataLayer, _super);\n\n function ProductSummaryToDataLayer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ProductSummaryToDataLayer.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.PRODUCT_SUMMARY_DEBOUNCE_TO_DATALAYER, data);\n };\n\n ProductSummaryToDataLayer.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.PRODUCT_SUMMARY_DEBOUNCE_TO_DATALAYER, callback);\n };\n\n return ProductSummaryToDataLayer;\n}(CommonESB);\n\nvar ProductSummaryTrackPage = function (_super) {\n __extends(ProductSummaryTrackPage, _super);\n\n function ProductSummaryTrackPage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ProductSummaryTrackPage.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.PRODUCT_SUMMARY_TRACK_PAGE, data);\n };\n\n ProductSummaryTrackPage.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.PRODUCT_SUMMARY_TRACK_PAGE, callback);\n };\n\n return ProductSummaryTrackPage;\n}(CommonESB);\n\nvar AddProductsToMonetate = function (_super) {\n __extends(AddProductsToMonetate, _super);\n\n function AddProductsToMonetate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AddProductsToMonetate.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.PLP_ADD_PRODUCTS_TO_MONETATE, data);\n };\n\n AddProductsToMonetate.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.PLP_ADD_PRODUCTS_TO_MONETATE, callback);\n };\n\n return AddProductsToMonetate;\n}(CommonESB);\n\nvar ModalsCloseESB = function (_super) {\n __extends(ModalsCloseESB, _super);\n\n function ModalsCloseESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ModalsCloseESB.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.MODALS_CLOSE);\n };\n\n ModalsCloseESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.MODALS_CLOSE, callback);\n };\n\n return ModalsCloseESB;\n}(CommonESB);\n\nvar TrackEvent = function (_super) {\n __extends(TrackEvent, _super);\n\n function TrackEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TrackEvent.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.TRACK_EVENT, data);\n };\n\n TrackEvent.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.TRACK_EVENT, callback);\n };\n\n return TrackEvent;\n}(CommonESB);\n\nvar TrackSiteDetailsEvent = function (_super) {\n __extends(TrackSiteDetailsEvent, _super);\n\n function TrackSiteDetailsEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TrackSiteDetailsEvent.prototype.publish = function (data) {\n _super.prototype.PublishData.call(this, Events$1.TRACK_SITE_DETAILS_EVENT, data);\n };\n\n TrackSiteDetailsEvent.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.TRACK_SITE_DETAILS_EVENT, callback);\n };\n\n return TrackSiteDetailsEvent;\n}(CommonESB);\n\nvar CookiePolicyCloseESB = function (_super) {\n __extends(CookiePolicyCloseESB, _super);\n\n function CookiePolicyCloseESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CookiePolicyCloseESB.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.COOKIE_POLICY_CLOSE);\n };\n\n CookiePolicyCloseESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.COOKIE_POLICY_CLOSE, callback);\n };\n\n return CookiePolicyCloseESB;\n}(CommonESB);\n\nvar CookiePolicyOpenESB = function (_super) {\n __extends(CookiePolicyOpenESB, _super);\n\n function CookiePolicyOpenESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CookiePolicyOpenESB.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.COOKIE_POLICY_OPEN);\n };\n\n CookiePolicyOpenESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.COOKIE_POLICY_OPEN, callback);\n };\n\n return CookiePolicyOpenESB;\n}(CommonESB);\n\nvar CookiePolicyRedirectESB = function (_super) {\n __extends(CookiePolicyRedirectESB, _super);\n\n function CookiePolicyRedirectESB() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CookiePolicyRedirectESB.prototype.publish = function () {\n _super.prototype.PublishData.call(this, Events$1.COOKIE_POLICY_REDIRECT);\n };\n\n CookiePolicyRedirectESB.prototype.subscribe = function (callback) {\n return _super.prototype.SubscribeToEvent.call(this, Events$1.COOKIE_POLICY_REDIRECT, callback);\n };\n\n return CookiePolicyRedirectESB;\n}(CommonESB);\n\nvar useCommonObservable = function useCommonObservable(esb, callback) {\n return useEffect(function () {\n var subscription = esb.subscribe(callback).subscription;\n return function () {\n subscription.unsubscribe();\n };\n }, []);\n};\n\nvar useSearchObservable = function useSearchObservable(callback) {\n return useCommonObservable(new SearchESB(), callback);\n};\n\nvar useFavouritesGetCallbackObservable = function useFavouritesGetCallbackObservable(callback) {\n return useCommonObservable(new GetFavouritesCallback(), callback);\n};\n\nvar useFavouritesAddCallbackObservable = function useFavouritesAddCallbackObservable(callback) {\n return useCommonObservable(new AddFavouritesCallback(), callback);\n};\n\nvar useFavouritesRemoveCallbackObservable = function useFavouritesRemoveCallbackObservable(callback) {\n return useCommonObservable(new RemoveFavouritesCallback(), callback);\n};\n\nvar useShoppingBagGetCallbackObservable = function useShoppingBagGetCallbackObservable(callback) {\n return useCommonObservable(new GetBagCallback(), callback);\n};\n\nvar useShoppingBagAddCallbackObservable = function useShoppingBagAddCallbackObservable(callback) {\n return useCommonObservable(new AddBagCallback(), callback);\n};\n\nvar useShoppingBagAddCistCallbackObservable = function useShoppingBagAddCistCallbackObservable(callback) {\n return useCommonObservable(new AddCistBagCallback(), callback);\n};\n\nvar useShoppingBagAddEVoucherCallbackObservable = function useShoppingBagAddEVoucherCallbackObservable(callback) {\n return useCommonObservable(new AddEVoucherCallback(), callback);\n};\n\nvar useShoppingBagAddLinkedItemCallbackObservable = function useShoppingBagAddLinkedItemCallbackObservable(callback) {\n return useCommonObservable(new AddLinkedItemCallback(), callback);\n};\n\nvar useShoppingBagAddMultipleCallbackObservable = function useShoppingBagAddMultipleCallbackObservable(callback) {\n return useCommonObservable(new AddMultipleCallback(), callback);\n};\n\nvar useShoppingBagAddWarrantyCallbackObservable = function useShoppingBagAddWarrantyCallbackObservable(callback) {\n return useCommonObservable(new AddWarrantyCallback(), callback);\n};\n\nvar useShoppingBagRemoveCallbackObservable = function useShoppingBagRemoveCallbackObservable(callback) {\n return useCommonObservable(new RemoveBagCallback(), callback);\n};\n\nvar useShoppingBagUpdateSizeCallbackObservable = function useShoppingBagUpdateSizeCallbackObservable(callback) {\n return useCommonObservable(new UpdateSizeCallback(), callback);\n};\n\nvar useShoppingBagUpdateQuantityCallbackObservable = function useShoppingBagUpdateQuantityCallbackObservable(callback) {\n return useCommonObservable(new UpdateQuantityCallback(), callback);\n};\n\nvar useShoppingBagAcceptCallbackObservable = function useShoppingBagAcceptCallbackObservable(callback) {\n return useCommonObservable(new AcceptBagCallback(), callback);\n};\n\nvar useShoppingBagRejectCallbackObservable = function useShoppingBagRejectCallbackObservable(callback) {\n return useCommonObservable(new RejectBagCallback(), callback);\n};\n\nvar useCountrySelectorOpenObservable = function useCountrySelectorOpenObservable(callback) {\n return useCommonObservable(new CountrySelectorOpenESB(), callback);\n};\n\nvar useCountrySelectorRedirectToAlternativeLanguageObservable = function useCountrySelectorRedirectToAlternativeLanguageObservable(callback) {\n return useCommonObservable(new CountrySelectorRedirectToAlternativeLanguageESB(), callback);\n};\n\nvar useGetVisitorTokenCallbackObservable = function useGetVisitorTokenCallbackObservable(callback) {\n return useCommonObservable(new GetVisitorTokenCallback(), callback);\n};\n\nvar useClearVisitorTokenCallbackObservable = function useClearVisitorTokenCallbackObservable(callback) {\n return useCommonObservable(new ClearVisitorTokenCallback(), callback);\n};\n\nvar useProductSummaryHydrateObservable = function useProductSummaryHydrateObservable(callback) {\n return useCommonObservable(new HydrateProductSummaryESB(), callback);\n};\n\nvar useModalsCloseObservable = function useModalsCloseObservable(callback) {\n return useCommonObservable(new ModalsCloseESB(), callback);\n};\n\nexport { AcceptBag, AcceptBagCallback, AddBag, AddBagCallback, AddCistBag, AddCistBagCallback, AddEVoucher, AddEVoucherCallback, AddFavourites, AddFavouritesCallback, AddLinkedItem, AddLinkedItemCallback, AddMultiple, AddMultipleCallback, AddProductsToMonetate, AddVoucher, AddVoucherCallback, AddWarranty, AddWarrantyCallback, ClearVisitorToken, ClearVisitorTokenCallback, CookiePolicyCloseESB, CookiePolicyOpenESB, CookiePolicyRedirectESB, CountrySelectorClosedESB, CountrySelectorOpenESB, CountrySelectorRedirectESB, CountrySelectorRedirectToAlternativeLanguageESB, GetBag, GetBagCallback, GetFavourites, GetFavouritesCallback, GetVisitorToken, GetVisitorTokenCallback, HydrateProductSummaryESB, ModalsCloseESB, PageLandingESB, ProductSummaryToDataLayer, ProductSummaryTrackPage, RejectBag, RejectBagCallback, RemoveBag, RemoveBagCallback, RemoveFavourites, RemoveFavouritesCallback, SearchESB, TrackEvent, TrackSiteDetailsEvent, UpdateQuantity, UpdateQuantityCallback, UpdateSize, UpdateSizeCallback, UpgradeVisitorToken, useClearVisitorTokenCallbackObservable, useCountrySelectorOpenObservable, useCountrySelectorRedirectToAlternativeLanguageObservable, useFavouritesAddCallbackObservable, useFavouritesGetCallbackObservable, useFavouritesRemoveCallbackObservable, useGetVisitorTokenCallbackObservable, useModalsCloseObservable, useProductSummaryHydrateObservable, useSearchObservable, useShoppingBagAcceptCallbackObservable, useShoppingBagAddCallbackObservable, useShoppingBagAddCistCallbackObservable, useShoppingBagAddEVoucherCallbackObservable, useShoppingBagAddLinkedItemCallbackObservable, useShoppingBagAddMultipleCallbackObservable, useShoppingBagAddWarrantyCallbackObservable, useShoppingBagGetCallbackObservable, useShoppingBagRejectCallbackObservable, useShoppingBagRemoveCallbackObservable, useShoppingBagUpdateQuantityCallbackObservable, useShoppingBagUpdateSizeCallbackObservable };","import { createGlobalStyle } from \"styled-components\"\nimport { breakpoints } from \"@next/themes\"\nimport { GlobalStyles } from \"./models/globalStyles\"\n\nexport const GlobalStyle = createGlobalStyle`\nbody{\n margin: 0\n}\n\n#platform_modernisation_header {\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 9999;\n left: 0;\n \n font-size: 16px;\n * {\n box-sizing: border-box;\n }\n \n ul, ul li {\n list-style: none;\n }\n\n img, a img {\n display: inline;\n }\n\n & button:focus,\n a:focus {\n outline: none;\n }\n\n & *[data-focus-visible-added]:focus {outline: 2px solid #1d89dd;} \n & #header-big-screen-search-box:focus, #header-small-screen-search-box:focus {outline: none}\n}\n\n[data-container-page] {\n margin-top: ${(props: GlobalStyles) =>\n `calc(${props.theme.styles.UpperHeader.default.height} + ${props.theme.styles.PrimaryNav.default.height})`};\n\n @media (min-width: ${breakpoints.values.md}px) {\n margin-top: ${(props: GlobalStyles) =>\n `calc(${props.theme.styles.UpperHeader.md.height} + ${props.theme.styles.PrimaryNav.md.height})`};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n margin-top: ${(props: GlobalStyles) =>\n `calc(${props.theme.styles.UpperHeader.lg.height} + ${props.theme.styles.PrimaryNav.lg.height})`};\n }\n}\n\n:root {\n --next-header-height: ${(props: GlobalStyles) =>\n `calc(${props.theme.styles.UpperHeader.default.height} + ${props.theme.styles.PrimaryNav.default.height})`};\n --next-header-md-height: ${(props: GlobalStyles) =>\n `calc(${props.theme.styles.UpperHeader.md.height} + ${props.theme.styles.PrimaryNav.md.height})`};\n --next-header-lg-height: ${(props: GlobalStyles) =>\n `calc(${props.theme.styles.UpperHeader.lg.height} + ${props.theme.styles.PrimaryNav.lg.height})`};\n\n //TODO: Remove as part of a tech debt peice 49182\n //This is here as a hotfix to allow Vision header and EPM plp work together\n body header.PageHeader:not(.SecurePageHeader) .BreadcrumbNavigation {\n margin-top: 0px;\n }\n}\n\n\n\n`\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport Grid from \"@material-ui/core/Grid\"\n\nexport type BackToSiteBannerProps = {\n hide: boolean\n}\n\nexport const BannerContainer = styled.div`\n @media (max-width: ${breakpoints.values.md}px) {\n display: ${({hide}) => (hide ? \"none\" : \"flex\")};\n }\n display: flex;\n padding: 0.5rem;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n height: 2.75rem;\n background-color: ${({theme}) => theme.colours.utilities.backgroundAccent};\n\n button {\n border: 0;\n background: none;\n cursor: pointer;\n }\n`\n\nexport const BrandIcon = styled.img`\n visibility: hidden;\n width: 0;\n\n @media (min-width: ${breakpoints.values.md}px) {\n width: auto;\n visibility: visible;\n }\n`\n\nexport const Title = styled.span`\n font-size: 0.75rem;\n width: 9.375rem;\n display: flex;\n text-align: center;\n align-items: center;\n color: ${({theme}) => theme.colours.text.default};\n @media (min-width: ${breakpoints.values.md}px) {\n text-align: left;\n width: 17.5rem;\n }\n`\nexport const BannerBackToSite = styled.button`\n display: flex;\n\n span {\n font-size: 0.563rem;\n display: flex;\n flex-direction: column;\n padding-left: 0.313rem;\n font-family: ${props =>\n `${props.theme.colours.font.secondary.light.family}, ${props.theme.colours.font.default}`};\n text-align: left;\n\n > img {\n width: 2.688rem;\n height: 0.75rem;\n }\n }\n`\n\nexport const BrandTextGrid = styled(Grid)`\n display: flex;\n justify-content: center;\n`\n\nexport const CloseButtonGrid = styled(Grid)`\n display: flex;\n justify-content: flex-end;\n`\n","import jscookie from \"js-cookie\"\nimport {\n SHOW_BACK_TO_COOKIE,\n BACK_TO_URL_COOKIE,\n BACK_TO_TP_CLIENT_COOKIE,\n BACK_TO_SITE_CLIENT_PARAM,\n BACK_TO_SITE_URL_PARAM,\n} from \"../../config/constants\"\nimport {BackToSite} from \"../../models/backToSite\"\n\nexport const getShowBackToCookie = () => jscookie.get(SHOW_BACK_TO_COOKIE)\nexport const setShowBackToCookie = () => jscookie.set(SHOW_BACK_TO_COOKIE, `true`)\nexport const removeShowBackToCookie = () => jscookie.remove(SHOW_BACK_TO_COOKIE)\n\nexport const getBackToUrlCookie = () => jscookie.get(BACK_TO_URL_COOKIE)\nexport const setBackToUrlCookie = (url: string) => jscookie.set(BACK_TO_URL_COOKIE, url)\nexport const removeBackToUrlCookie = () => jscookie.remove(BACK_TO_URL_COOKIE)\n\nexport const getBackToTpClientCookie = () => jscookie.get(BACK_TO_TP_CLIENT_COOKIE)\nexport const setBackToTpClientCookie = (clientName: string) => jscookie.set(BACK_TO_TP_CLIENT_COOKIE, clientName)\nexport const removeBackToTpClientCookie = () => jscookie.remove(BACK_TO_TP_CLIENT_COOKIE)\n\nexport const redirect = (url: string) => {\n removeShowBackToCookie()\n removeBackToUrlCookie()\n removeBackToTpClientCookie()\n window.location.href = url\n}\n\nexport const getTpBannerSettings = (backToSite: BackToSite) => {\n let matchingTpClient: any\n\n const params = new URL(window.location.href.toLocaleLowerCase()).searchParams\n const tpClientParam = params.get(BACK_TO_SITE_CLIENT_PARAM)\n const tpClientUrlParam = params.get(BACK_TO_SITE_URL_PARAM)\n\n if (backToSite.tpClients) {\n backToSite.tpClients.forEach(tpClient => {\n if (tpClient.tpClientName && tpClientParam?.includes(tpClient.tpClientName)) {\n if (tpClientUrlParam) {\n matchingTpClient = tpClient\n matchingTpClient.backToSiteUrl = tpClientUrlParam\n }\n }\n })\n }\n\n return matchingTpClient\n}\n","import React, {useEffect, useState} from \"react\"\nimport {useScrollTrigger} from \"@material-ui/core\"\nimport Grid from \"@material-ui/core/Grid\"\nimport {BannerContainer, BrandIcon, Title, BannerBackToSite, BrandTextGrid, CloseButtonGrid} from \"./components\"\nimport connect from \"./connect\"\nimport {\n setShowBackToCookie,\n getShowBackToCookie,\n redirect as redirectToSite,\n getTpBannerSettings,\n setBackToUrlCookie,\n getBackToUrlCookie,\n getBackToTpClientCookie,\n setBackToTpClientCookie,\n} from \"../../utils/backToSiteBanner\"\nimport {BackToSiteBanner as BackToSiteBannerModel} from \"../../models/text\"\nimport {formatCdnPath} from \"../../utils/getCdnUrl\"\nimport {BackToSite, TPClient} from \"../../models/backToSite\"\nimport {STICKY_HEADER_SCROLL_TRIGGER} from \"../../config/constants\"\n\nexport type BackToAlertProps = {\n showBanner: boolean\n backToSite: BackToSite\n closeBanner: () => void\n text: BackToSiteBannerModel\n}\n\nexport const BackToSiteBanner = ({showBanner, backToSite, closeBanner, text}: BackToAlertProps) => {\n const [bannerShow, updateBannerShow] = useState(false)\n const [tpClient, setTpClient] = useState()\n const hide = useScrollTrigger({threshold: STICKY_HEADER_SCROLL_TRIGGER})\n\n useEffect(() => {\n if (showBanner) {\n // BackToSite Cookie is already set\n if (getShowBackToCookie() === \"true\") {\n if (!tpClient) {\n setTpClient({tpClientName: getBackToTpClientCookie(), backToSiteUrl: getBackToUrlCookie()})\n updateBannerShow(true)\n }\n }\n // BackToSite Cookie is not set\n else {\n const matchingTpClient = getTpBannerSettings(backToSite)\n setTpClient(matchingTpClient)\n\n if (tpClient && tpClient.tpClientName && tpClient.backToSiteUrl) {\n setShowBackToCookie()\n setBackToTpClientCookie(tpClient.tpClientName)\n setBackToUrlCookie(tpClient.backToSiteUrl)\n updateBannerShow(true)\n }\n }\n } else {\n updateBannerShow(false)\n }\n }, [showBanner, backToSite, tpClient])\n\n if (!bannerShow) return null\n const {circleLeftArrowText, titleIconText, closeIconText} = text\n\n const redirect = () => {\n if (tpClient && tpClient.backToSiteUrl) {\n redirectToSite(tpClient.backToSiteUrl)\n }\n }\n\n return (\n \n \n \n \n \n \n {text.backToText}\n \n \n \n \n \n \n <BrandIcon\n width=\"44\"\n height=\"44\"\n src={formatCdnPath(\"/icons/shared/back-to-brand-icon.svg\")}\n alt={titleIconText}\n />\n {text.title}\n \n \n \n \n {closeIconText}\n \n \n \n \n )\n}\n\nexport default connect(BackToSiteBanner)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {closeBannerAction} from \"../../ducks/request\"\nimport {removeShowBackToCookie, removeBackToUrlCookie, removeBackToTpClientCookie} from \"../../utils/backToSiteBanner\"\n\nexport const mapStateToProps = (state: State) => {\n const {showBackToSiteBanner, backToSite} = state.request\n const {backToSiteBanner} = state.text\n\n return {\n showBanner: showBackToSiteBanner,\n backToSite,\n text: backToSiteBanner,\n }\n}\n\nexport const mapDispatchToProps = (dispatch: any) => ({\n closeBanner: () => {\n dispatch(closeBannerAction())\n removeShowBackToCookie()\n removeBackToUrlCookie()\n removeBackToTpClientCookie()\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import React from 'react';\nimport { Transition } from 'react-transition-group';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nvar FadeInAnimation = function FadeInAnimation(_a) {\n var show = _a.show,\n children = _a.children,\n timeout = _a.timeout;\n var defaultStyle = {\n transition: \"opacity \" + timeout + \"ms ease-in-out\",\n opacity: 0\n };\n var transitionStyles = {\n entering: {\n opacity: 1\n },\n entered: {\n opacity: 1\n },\n exiting: {\n opacity: 0\n },\n exited: {\n opacity: 0\n }\n };\n return React.createElement(Transition, {\n in: show,\n timeout: timeout,\n unmountOnExit: true\n }, function (state) {\n return React.createElement(\"div\", {\n style: _assign(_assign({}, defaultStyle), transitionStyles[state])\n }, children);\n });\n};\n\nexport { FadeInAnimation };","import {connect} from \"react-redux\"\nimport Cookies from \"js-cookie\"\nimport State from \"../../ducks/state\"\nimport {NEXT_COOKIE, NEXT_DIRECT_COOKIE} from \"../../config/constants\"\n\nexport const mapStateToProps = (state: State) => {\n const {isInternationalCountry, cookieDomain, privacyUrl} = state.request\n const { text: {cookiePolicy}} = state\n\n const cookieName = isInternationalCountry ? NEXT_DIRECT_COOKIE : NEXT_COOKIE\n const hasConsentCookie = !!Cookies.get(cookieName)\n\n return {\n cookieDomain,\n hasConsentCookie,\n privacyUrl,\n cookieName,\n text: cookiePolicy\n }\n}\n\nexport default connect(mapStateToProps)\n","import {getWindow} from \"../window\"\nimport {PLP_ENTRYPOINT_ID} from \"../../config/constants\"\n\nexport const doCountryRedirect = (): boolean => {\n const w = getWindow()\n if (w && (w.document.getElementById(PLP_ENTRYPOINT_ID) || (w.platmodflags && w.platmodflags.countryRedirect))) return true\n return false\n}\n\nexport const doCookiePolicy = (): boolean => {\n const w = getWindow()\n if (w && (w.document.getElementById(PLP_ENTRYPOINT_ID) || (w.platmodflags && w.platmodflags.modernisedCookieConsent)))\n return true\n return false\n}\n\nexport const doGoogleAnalytics = (): boolean => {\n const w = getWindow()\n if (w && (w.document.getElementById(PLP_ENTRYPOINT_ID) || (w.platmodflags && w.platmodflags.googleAnalytics))) return true\n return false\n}\n\nexport const doGTMDataLayerEvents = (): boolean => {\n const w = getWindow()\n if (w && (w.document.getElementById(PLP_ENTRYPOINT_ID) || (w.platmodflags && w.platmodflags.gtmDataLayerEvents))) return true\n return false\n}\n\nexport const doMonetateEvents = (): boolean => {\n const w = getWindow()\n if (w && (w.document.getElementById(PLP_ENTRYPOINT_ID) || (w.platmodflags && w.platmodflags.monetateEvents))) return true\n return false\n}\n\nexport const doSearchABAdaptor = (): boolean => {\n const w = getWindow()\n if (w && (w.document.getElementById(PLP_ENTRYPOINT_ID) || (w.platmodflags && w.platmodflags.searchABAdaptor))) return true\n return false\n}\n\nexport const doUserVariables = (): boolean => {\n const w = getWindow()\n if (w && (w.document.getElementById(PLP_ENTRYPOINT_ID) || (w.platmodflags && w.platmodflags.userVariables))) return true\n return false\n}\n","import {Typography} from \"@material-ui/core\"\nimport styled from \"styled-components\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const Container = styled.div`\n position: fixed;\n bottom: 0.625rem;\n right: 0.625rem;\n width: 16.5rem;\n padding: 1rem;\n padding-top: 0.625rem;\n border-radius: ${(props: GlobalStyles) => props.theme.colours.borders.primary.radius};\n background-color: ${(props: GlobalStyles) => props.theme.colours.form.default.background};\n border: ${(props: GlobalStyles) => props.theme.colours.utilities.divider};\n`\n\nexport const StyledTitle = styled(Typography)`\n padding-bottom: 0rem;\n margin: 0rem;\n`\n\nexport const Header = styled.div`\n display: flex;\n padding-bottom: 0.625rem;\n`\n\nexport const UnstyledButton = styled.button`\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n font: inherit;\n cursor: pointer;\n outline: inherit;\n color: ${({theme}) => theme.colours.text.default};\n text-decoration: underline;\n margin-left: auto;\n`\n\nexport const BodyText = styled(Typography)`\n margin: 0rem;\n`","/* eslint-disable no-unused-expressions */\nexport const shouldUseSessionStorage = () => {\n let useSessionStorage = false\n if (typeof Storage !== \"undefined\") {\n try {\n const testKey = \"test\"\n window.sessionStorage.setItem(testKey, \"1\")\n window.sessionStorage.removeItem(testKey)\n useSessionStorage = true\n } catch (error) {\n useSessionStorage = false\n }\n }\n\n return useSessionStorage\n}\n\nexport const setCacheVersion = (shouldSetCacheVersion = false) => {\n const favouriteCacheVersion = \"favouriteCacheVersion\"\n if (localStorage.getItem(favouriteCacheVersion) === null || shouldSetCacheVersion) {\n const cacheBuster = Math.round(new Date().getTime() / 1000).toString()\n localStorage.setItem(favouriteCacheVersion, cacheBuster)\n }\n return localStorage.getItem(favouriteCacheVersion)\n}\n\nexport const setSessionStorageHasFavouriteItems = data => {\n const hasFavourites = data?.ShoppingListItems?.length > 0 ? \"true\" : \"false\"\n window.sessionStorage?.setItem(\"NextFavourites:HasFavouriteItems\", hasFavourites)\n}\n\nexport const getFormattedItemNumber = (itemNumber) => {\n const splitItemNumber = itemNumber.split(\"-\")\n\n return splitItemNumber.length === 1 ? \n [itemNumber.substr(0, 3), itemNumber.substr(3, 3)].join(\"-\") \n : itemNumber\n}","import Logger from \"@next/core-logger\"\nimport {ESB} from \"@next/eventservice/lib/esb\"\nimport {FavouritesGeneralCallbackContractModel} from \"@next/eventservice\"\nimport {axiosInstance as axios} from \"../../utils/axios\"\nimport {shouldUseSessionStorage, setCacheVersion, setSessionStorageHasFavouriteItems} from \"../../utils/favourites\"\n\nexport const FavouritesApiGet = (url: string, callbackEventService: ESB) => {\n axios\n .get(url, {\n withCredentials: true,\n })\n .then(response => {\n handleSuccess(response, callbackEventService)\n })\n .catch(error => handleError(error, callbackEventService))\n}\n\nexport const FavouritesApiPost = (apiModel: any, url: string, callbackEventService: ESB, eventId?: string) => {\n axios\n .post(url, apiModel, {\n withCredentials: true,\n headers: {Pragma: \"no-cache\"},\n })\n .then(response => {\n handleSuccess(response, callbackEventService, eventId)\n if (shouldUseSessionStorage()) {\n setCacheVersion(true)\n }\n })\n .catch(error => handleError(error, callbackEventService, eventId))\n}\n\nconst handleSuccess = (response, callbackEventService: ESB, eventId?: string) => {\n const defaultEventData = {\n status: response.status,\n textStatus: response.statusText,\n eventId: eventId ?? \"\",\n }\n\n const data = response.data?.data || null\n\n const success = response.data?.Success\n\n const errorMessage = response.data?.Success\n ? null\n : response.data?.ErrorMessage || \"Favourites - something went wrong!\"\n\n const callbackEventData: FavouritesGeneralCallbackContractModel = {\n ...defaultEventData,\n data,\n success,\n errorMessage,\n }\n\n if (response.data?.Success && shouldUseSessionStorage()) {\n setSessionStorageHasFavouriteItems(response.data?.data)\n }\n callbackEventService.publish(callbackEventData)\n}\n\nconst handleError = (error, callbackEventService: ESB, eventId?: string) => {\n let callbackEventData: FavouritesGeneralCallbackContractModel\n if (error.response) {\n callbackEventData = {\n data: error.response.data,\n status: error.response.status,\n success: false,\n textStatus: error.response.statusText,\n eventId: eventId ?? \"\",\n }\n } else if (error.request) {\n callbackEventData = {\n data: null,\n status: error.request.status,\n success: false,\n textStatus: error.request.statusText,\n eventId: eventId ?? \"\",\n }\n } else {\n callbackEventData = {\n data: null,\n status: 500,\n success: false,\n textStatus: error.message,\n eventId: eventId ?? \"\",\n }\n }\n Logger.error(new Error(error))\n callbackEventService.publish(callbackEventData)\n}\n","import {GetFavourites, GetFavouritesCallback} from \"@next/eventservice\"\nimport Cookies from \"js-cookie\"\nimport {FavouritesApiGet} from \"../../api/favourites\"\nimport {shouldUseSessionStorage, setCacheVersion} from \"../../utils/favourites\"\nimport {RPID_COOKIE, MY_ACCOUNT_URL} from \"../../config/constants\"\n\nconst getFavouritesESB = new GetFavourites()\nconst getFavouritesCallbackESB = new GetFavouritesCallback()\n\nexport const SubscribeToFavouritesGet = (siteUrl: string) => {\n getFavouritesESB.subscribe(() => {\n LoadFavouritesApiData(siteUrl)\n })\n}\n\nexport const LoadFavouritesApiData = (url: string) => {\n const queryString: string = buildQueryString()\n FavouritesApiGet(`${url}/favourite${queryString}`, getFavouritesCallbackESB)\n}\n\nconst buildQueryString = () => {\n const href = window?.location.href.toLowerCase()\n const isAccountPage = href?.includes(MY_ACCOUNT_URL)\n const shouldCache = () => (isAccountPage ? setCacheVersion(true) : setCacheVersion())\n const cacheVersion = shouldUseSessionStorage() ? shouldCache() : \"\"\n const rpidCookie = Cookies.get(RPID_COOKIE)\n if (rpidCookie !== undefined) {\n const index = rpidCookie.indexOf(\"=\")\n const rpid = rpidCookie.substring(index + 1)\n return `?id=${rpid}&_=${cacheVersion}`\n }\n return `?_=${cacheVersion}`\n}\n","import {AddFavourites, AddFavouritesCallback, AddFavouritesContractModel} from \"@next/eventservice\"\nimport {FavouritesApiPost} from \"../../api/favourites\"\nimport {getFormattedItemNumber} from \"../../utils/favourites\"\n\nconst addFavouritesESB = new AddFavourites()\nconst addFavouritesCallbackESB = new AddFavouritesCallback()\n\n\nexport const SubscribeToFavouritesAdd = (siteUrl: string) => {\n addFavouritesESB.subscribe((data) => {\n LoadFavouritesApiData(siteUrl, data)\n })\n}\n\nclass FavouritesAddApiModel {\n itemNumber = 0\n optionCode = \"\"\n itemUrl = \"\"\n linkedItemNumber = \"\"\n linkedOptionNo = \"\"\n listId = 0\n}\n\nconst LoadFavouritesApiData = (url: string, data: AddFavouritesContractModel) => {\n const apiModel = new FavouritesAddApiModel()\n apiModel.itemNumber = getFormattedItemNumber(data.itemNumber)\n apiModel.optionCode = data.optionCode\n apiModel.itemUrl = data.itemUrl\n apiModel.linkedItemNumber = data.linkedItemNumber\n apiModel.linkedOptionNo = data.linkedOptionNo\n apiModel.listId = data.listId \n \n FavouritesApiPost(apiModel, `${url}/favourite`, addFavouritesCallbackESB, data.eventId)\n}","import {RemoveFavourites, RemoveFavouritesCallback, RemoveFavouritesContractModel} from \"@next/eventservice\"\nimport {FavouritesApiPost} from \"../../api/favourites\"\nimport {getFormattedItemNumber} from \"../../utils/favourites\"\n\nconst removeFavouritesESB = new RemoveFavourites()\nconst removeFavouritesCallbackESB = new RemoveFavouritesCallback()\n\n\nexport const SubscribeToFavouritesRemove = (siteUrl: string) => {\n removeFavouritesESB.subscribe((data) => {\n LoadFavouritesApiData(siteUrl, data)\n })\n}\n\nclass FavouritesRemoveApiModel {\n itemNumber = 0\n optionCode = \"\"\n linkedItemNumber = \"\"\n linkedOptionNo = \"\"\n listId = 0\n}\n\nconst LoadFavouritesApiData = (url: string, data: RemoveFavouritesContractModel) => {\n const apiModel = new FavouritesRemoveApiModel()\n apiModel.itemNumber = getFormattedItemNumber(data.itemNumber)\n apiModel.optionCode = data.optionCode\n apiModel.linkedItemNumber = data.linkedItemNumber\n apiModel.linkedOptionNo = data.linkedOptionNo\n apiModel.listId = data.listId \n FavouritesApiPost(apiModel, `${url}/favourite/remove`, removeFavouritesCallbackESB, data.eventId)\n}","import jscookie from \"js-cookie\"\n\nexport const mainSiteBagCookieName = \"MainSiteBag\"\n\nconst setMainSiteBagCookie = ({data}: Record) => {\n const {\n ShoppingBag: {ItemCount, OrderGoodsValue},\n } = data\n if (ItemCount > 0) {\n jscookie.set(mainSiteBagCookieName, `Quantity=${ItemCount}&TotalValue=${OrderGoodsValue}&SaleSiteRead=False`)\n } else {\n const mainSiteBagCookie = jscookie.get(mainSiteBagCookieName)\n if (mainSiteBagCookie) jscookie.set(mainSiteBagCookieName, mainSiteBagCookie, {expires: 0})\n }\n}\n\nexport default setMainSiteBagCookie\n","import Logger from \"@next/core-logger\"\nimport qs from \"qs\"\nimport {ESB} from \"@next/eventservice/lib/esb\"\nimport {GeneralCallbackContractModel} from \"@next/eventservice\"\nimport {axiosInstance as axios} from \"../../utils/axios\"\nimport setMainSiteBagCookie from \"../../utils/setMainSiteBagCookie\"\n\nexport const ShoppingBagApiGet = (\n apiModel: any,\n url: string,\n callbackEventService: ESB,\n sdkCallback: (res) => void,\n) => {\n const cacheBustedParams = {...apiModel, _: Date.now()}\n axios\n .get(url, {\n withCredentials: true,\n params: cacheBustedParams,\n })\n .then(response => {\n handleSuccess(response, callbackEventService)\n sdkCallback(response)\n setMainSiteBagCookie(response)\n })\n .catch(error => handleError(error, callbackEventService))\n}\n\nexport const ShoppingBagApiPost = (apiModel: any, url: string, callbackEventService: ESB, eventId?: string) => {\n const params = qs.stringify(apiModel)\n\n axios\n .post(url, params, {\n withCredentials: true,\n })\n .then(response => {\n handleSuccess(response, callbackEventService, eventId)\n // Only addEVoucher api call will have `Bag` in response\n if (response.data.Bag) {\n // Translation is necessary as `setMainSiteBagCookie` expect \"ShoppingBag\"\n response.data.ShoppingBag = response.data.Bag\n }\n setMainSiteBagCookie(response)\n })\n .catch(error => handleError(error, callbackEventService, eventId))\n}\n\nconst handleSuccess = (response, callbackEventService: ESB, eventId?: string) => {\n const callbackEventData: GeneralCallbackContractModel = {\n eventId,\n data: response.data,\n status: response.status,\n success: true,\n textStatus: response.statusText,\n }\n\n callbackEventService.publish(callbackEventData)\n}\n\nconst handleError = (error, callbackEventService: ESB, eventId?: string) => {\n let callbackEventData: GeneralCallbackContractModel\n if (error.response) {\n callbackEventData = {\n eventId,\n data: error.response.data,\n status: error.response.status,\n success: false,\n textStatus: error.response.statusText,\n }\n } else if (error.request) {\n callbackEventData = {\n eventId,\n data: null,\n status: error.request.status,\n success: false,\n textStatus: error.request.statusText,\n }\n } else {\n callbackEventData = {\n eventId,\n data: null,\n status: 500,\n success: false,\n textStatus: error.message,\n }\n }\n Logger.error(new Error(error))\n callbackEventService.publish(callbackEventData)\n}\n","import {AddBag, AddBagCallback, AddBagContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new AddBag()\nconst getBagCallbackESB = new AddBagCallback()\n\nexport const SubscribeToShoppingBagAdd = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadShoppingBagApiData(siteUrl, data)\n })\n}\n\n// legacy model for MVC to work\nclass BagAddApiModel {\n id = \"\"\n option = \"\"\n chain = \"\"\n quantity = 0\n modalItemUrl = \"\"\n SaleClearanceSofaImage = \"\"\n}\n\nconst LoadShoppingBagApiData = (url: string, data: AddBagContractModel) => {\n const apiModel = new BagAddApiModel()\n apiModel.id = data.id\n apiModel.option = data.optionNumber\n apiModel.chain = data.chain\n apiModel.quantity = data.quantity\n apiModel.modalItemUrl = data.modalItemUrl\n apiModel.SaleClearanceSofaImage = data.saleClearanceSofaImage\n\n ShoppingBagApiPost(apiModel, `${url}/bag/add`, getBagCallbackESB, data.eventId)\n}\n","import {AddCistBag, AddCistBagCallback, AddCistBagContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst addBagESB = new AddCistBag()\nconst addBagCallbackESB = new AddCistBagCallback()\n\nexport const SubscribeToShoppingBagAddCist = (siteUrl: string) => {\n addBagESB.subscribe(data => {\n LoadShoppingBagApiData(siteUrl, data)\n })\n}\n\nclass BagAddApiModel {\n id = \"\"\n option = \"\"\n chain = \"\"\n quantity = 0\n ciststoreid = \"\"\n}\n\nconst LoadShoppingBagApiData = (url: string, data: AddCistBagContractModel) => {\n const apiModel = new BagAddApiModel()\n apiModel.id = data.id\n apiModel.option = data.optionNumber\n apiModel.chain = data.chain\n apiModel.quantity = data.quantity\n apiModel.ciststoreid = data.cistStoreId\n\n ShoppingBagApiPost(apiModel, `${url}/bag/AddCist`, addBagCallbackESB, data.eventId)\n}\n","import getWindow from \"../window\"\nimport {doUserVariables} from \"../featureSwitch\"\nimport {RPID, ACCOUNT_TYPE, UNLIMITED_CUSTOMER} from \"../../config/constants\"\n\nexport function setBackDataInSession({data}: Record) {\n if (doUserVariables()) {\n const {sessionStorage} = getWindow()!\n\n const {RoamingProfileId, ShoppingBag} = data\n sessionStorage.setItem(RPID, RoamingProfileId)\n\n if (ShoppingBag.Authenticated) {\n sessionStorage.setItem(ACCOUNT_TYPE, ShoppingBag.AccountType)\n sessionStorage.setItem(UNLIMITED_CUSTOMER, (ShoppingBag.NextUnlimitedStatus !== 0).toString())\n }\n }\n}\n","import {GetBag, GetBagCallback} from \"@next/eventservice\"\nimport {ShoppingBagApiGet} from \"../../api/shoppingbag\"\nimport {setBackDataInSession} from \"../../utils/gtmSdkShoppingBagCallback\"\n\nconst getBagESB = new GetBag()\nconst getBagCallbackESB = new GetBagCallback()\n\nexport const SubscribeToShoppingBagGet = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadShoppingBagApiData(siteUrl, data.guestAccountConverted)\n })\n}\n\nexport const LoadShoppingBagApiData = (url: string, guestAccountConverted: boolean) => {\n const href = window.location.href.toLowerCase()\n const skipRebuild = shouldSkipRebuild(href, guestAccountConverted)\n\n const ap = href.includes(\"/login\")\n ShoppingBagApiGet({skipRebuild, ap}, `${url}/bag/get`, getBagCallbackESB, setBackDataInSession)\n}\n\nconst skipRebuildUrls = [\"delivery\", \"checkout\", \"myaccount/addresses\", \"redirect_navigate\", \"navigate\"]\n\nexport const shouldSkipRebuild = (href: string, guestAccountConverted: boolean) => {\n return (\n guestAccountConverted === false &&\n skipRebuildUrls.some(matchHref => href.includes(matchHref)) &&\n !href.includes(\"secure/checkout/complete\")\n )\n}\n","export enum SupportedRegionTypes {\n Brand = \"Brand\",\n SearchBox = \"SearchBox\",\n QuickLinks = \"QuickLinks\",\n Checkout = \"Checkout\",\n CountryLangSelector = \"CountryLangSelector\",\n Favourites = \"Favourites\",\n ShoppingBag = \"ShoppingBag\",\n PrimaryNav = \"PrimaryNav\"\n}","import {AddEVoucher, AddEVoucherCallback, AddEVoucherContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new AddEVoucher()\nconst getBagCallbackESB = new AddEVoucherCallback()\n\nexport const SubscribeToShoppingBagAddEVoucher = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadShoppingBagApiData(siteUrl, data)\n })\n}\nclass BagAddApiModel {\n id = \"\"\n option = \"\"\n eVoucherTo = \"\"\n eVoucherFrom = \"\"\n eVoucherEmail = \"\"\n eVoucherMessage = \"\"\n ecardDeliveryDate = \"\"\n}\n\nconst LoadShoppingBagApiData = (url: string, data: AddEVoucherContractModel) => {\n const apiModel = new BagAddApiModel()\n apiModel.id = data.id\n apiModel.option = data.option\n apiModel.eVoucherTo = data.eVoucherTo\n apiModel.eVoucherFrom = data.eVoucherFrom\n apiModel.eVoucherEmail = data.eVoucherEmail\n apiModel.eVoucherMessage = data.eVoucherMessage\n apiModel.ecardDeliveryDate = data.ecardDeliveryDate\n\n ShoppingBagApiPost(apiModel, `${url}/bag/addevoucher`, getBagCallbackESB, data.eventId)\n}\n","import {AddLinkedItem, AddLinkedItemCallback, AddLinkedItemContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new AddLinkedItem()\nconst getBagCallbackESB = new AddLinkedItemCallback()\n\nexport const SubscribeToShoppingBagAddLinkedItem = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadApiData(siteUrl, data)\n })\n}\n\nclass BagAddApiModel {\n id = \"\"\n option = \"\"\n linkeditem = \"\"\n linkeditemoption = \"\"\n}\n\nconst LoadApiData = (url: string, data: AddLinkedItemContractModel) => {\n const apiModel = new BagAddApiModel()\n apiModel.id = data.id\n apiModel.option = data.optionNumber\n apiModel.linkeditem = data.linkedItemId\n apiModel.linkeditemoption = data.linkedItemOption\n\n ShoppingBagApiPost(apiModel, `${url}/bag/addlinkeditem`, getBagCallbackESB, data.eventId)\n}\n","import {AddMultiple, AddMultipleCallback, AddMultipleContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new AddMultiple()\nconst getBagCallbackESB = new AddMultipleCallback()\n\nexport const SubscribeToShoppingBagAddMultiple = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadApiData(siteUrl, data)\n })\n}\n\nclass BagAddMultipleApiModel {\n data: any\n pageurl: null | string = null\n deliveryweeks: null | string = null\n grouped = false\n groupType: null | string = null\n}\n\nconst LoadApiData = (url: string, data: AddMultipleContractModel) => {\n const apiModel = new BagAddMultipleApiModel()\n apiModel.data = data.data\n apiModel.pageurl = data.pageUrl\n apiModel.deliveryweeks = data.deliveryWeeks\n apiModel.grouped = data.isGrouped\n apiModel.groupType = data.groupType\n\n ShoppingBagApiPost(apiModel, `${url}/bag/addmultiple`, getBagCallbackESB, data.eventId)\n}\n","import {AddWarranty, AddWarrantyCallback, AddWarrantyContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new AddWarranty()\nconst getBagCallbackESB = new AddWarrantyCallback()\n\nexport const SubscribeToShoppingBagAddWarranty = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadApiData(siteUrl, data)\n })\n}\n\nclass BagAddWarrantyApiModel {\n id = \"\"\n option = \"\"\n warranty = \"\"\n warrantyoptionno = \"\"\n}\n\nconst LoadApiData = (url: string, data: AddWarrantyContractModel) => {\n const apiModel = new BagAddWarrantyApiModel()\n apiModel.id = data.id\n apiModel.option = data.optionNumber\n apiModel.warranty = data.warrantyId\n apiModel.warrantyoptionno = data.warrantyOptionNumber\n\n ShoppingBagApiPost(apiModel, `${url}/bag/addwarranty`, getBagCallbackESB, data.eventId)\n}\n","import {RemoveBag, RemoveBagCallback, RemoveBagContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new RemoveBag()\nconst getBagCallbackESB = new RemoveBagCallback()\n\nexport const SubscribeToShoppingBagRemove = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadApiData(siteUrl, data)\n })\n}\n\nclass BagRemoveApiModel {\n id = \"\"\n}\n\nconst LoadApiData = (url: string, data: RemoveBagContractModel) => {\n const apiModel = new BagRemoveApiModel()\n apiModel.id = data.id\n\n ShoppingBagApiPost(apiModel, `${url}/bag/Remove`, getBagCallbackESB, data.eventId)\n}\n","import {UpdateSize, UpdateSizeCallback, UpdateSizeContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new UpdateSize()\nconst getBagCallbackESB = new UpdateSizeCallback()\n\nexport const SubscribeToShoppingBagUpdateSize = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadApiData(siteUrl, data)\n })\n}\n\nclass UpdateSizeApiModel {\n id = \"\"\n option = \"\"\n itemNumber = \"\"\n}\n\nconst LoadApiData = (url: string, data: UpdateSizeContractModel) => {\n const apiModel = new UpdateSizeApiModel()\n apiModel.id = data.id\n apiModel.option = data.optionNumber\n apiModel.itemNumber = data.itemNumber\n\n ShoppingBagApiPost(apiModel, `${url}/bag/updatesize`, getBagCallbackESB, data.eventId)\n}\n","import {UpdateQuantity, UpdateQuantityCallback, UpdateQuantityContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new UpdateQuantity()\nconst getBagCallbackESB = new UpdateQuantityCallback()\n\nexport const SubscribeToShoppingBagUpdateQuantity = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadApiData(siteUrl, data)\n })\n}\n\nclass UpdateQuantityApiModel {\n id = \"\"\n quantity = 0\n}\n\nconst LoadApiData = (url: string, data: UpdateQuantityContractModel) => {\n const apiModel = new UpdateQuantityApiModel()\n apiModel.id = data.id\n apiModel.quantity = data.quantity\n\n ShoppingBagApiPost(apiModel, `${url}/bag/updatequantity`, getBagCallbackESB, data.eventId)\n}\n","import {AcceptBag, AcceptBagCallback, AcceptBagContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new AcceptBag()\nconst getBagCallbackESB = new AcceptBagCallback()\n\nexport const SubscribeToShoppingBagAccept = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadApiData(siteUrl, data)\n })\n}\n\nclass BagAcceptApiModel {\n id = \"\"\n}\n\nconst LoadApiData = (url: string, data: AcceptBagContractModel) => {\n const apiModel = new BagAcceptApiModel()\n apiModel.id = data.id\n\n ShoppingBagApiPost(apiModel, `${url}/bag/accept`, getBagCallbackESB, data.eventId)\n}\n","import {RejectBag, RejectBagCallback, RejectBagContractModel} from \"@next/eventservice\"\nimport {ShoppingBagApiPost} from \"../../api/shoppingbag\"\n\nconst getBagESB = new RejectBag()\nconst getBagCallbackESB = new RejectBagCallback()\n\nexport const SubscribeToShoppingBagReject = (siteUrl: string) => {\n getBagESB.subscribe(data => {\n LoadApiData(siteUrl, data)\n })\n}\n\nclass BagRejectApiModel {\n id = \"\"\n}\n\nconst LoadApiData = (url: string, data: RejectBagContractModel) => {\n const apiModel = new BagRejectApiModel()\n apiModel.id = data.id\n\n ShoppingBagApiPost(apiModel, `${url}/bag/reject`, getBagCallbackESB, data.eventId)\n}\n","import {ModalsCloseESB} from \"@next/eventservice\"\n\nconst modalsCloseESB = new ModalsCloseESB()\n\nexport const PublishToModalsClosed = () => {\n modalsCloseESB.publish()\n}\n\nexport default {PublishToModalsClosed}\n","import {CookiePolicyOpenESB} from \"@next/eventservice\"\n\nconst openedESB = new CookiePolicyOpenESB()\n\nexport const PublishCookiePolicyOpen = () => {\n openedESB.publish()\n}\n\nexport const SubscribeCookiePolicyOpen = (cb: () => void) => {\n return openedESB.subscribe(cb)\n}\n\n","import {CookiePolicyCloseESB} from \"@next/eventservice\"\n\nconst closedESB = new CookiePolicyCloseESB()\n\nexport const PublishCookiePolicyClose = () => {\n closedESB.publish()\n}\n\nexport const SubscribeCookiePolicyClose = (cb: () => void) => {\n return closedESB.subscribe(cb)\n}\n","import {CookiePolicyRedirectESB} from \"@next/eventservice\"\n\nconst redirectESB = new CookiePolicyRedirectESB()\n\nexport const PublishCookiePolicyRedirect = () => {\n redirectESB.publish()\n}\n\nexport const SubscribeCookiePolicyRedirect = (cb: () => void) => {\n return redirectESB.subscribe(cb)\n}\n","import React, {useEffect, useState} from \"react\"\nimport {FadeInAnimation} from \"@next/animations\"\nimport Cookies from \"js-cookie\"\nimport connect from \"./connect\"\nimport {CLOSE_ICON_URL, COOKIE_VALUE} from \"../../config/constants\"\nimport {formatCdnPath} from \"../../utils/getCdnUrl\"\nimport {IS_BROWSER} from \"../../utils/window\"\nimport {doCookiePolicy} from \"../../utils/featureSwitch\"\nimport {Container, StyledTitle, UnstyledButton, Header, BodyText} from \"./component\"\nimport {PublishCookiePolicyClose, PublishCookiePolicyOpen, PublishCookiePolicyRedirect} from \"../../events\"\n\nconst EXPIRATION_DAYS = 365\n\nexport type CookieConsentProps = {\n cookieDomain: string\n hasConsentCookie: boolean\n privacyUrl: string\n cookieName: string\n text: any\n}\n\nexport const CookieConsent = ({cookieDomain, hasConsentCookie, privacyUrl, cookieName, text}: CookieConsentProps) => {\n const [showPopUp, setShowPopUp] = useState(false)\n const {title, body, link, linkText, closeIconAltText} = text\n\n const onClose = () => {\n setShowPopUp(false)\n PublishCookiePolicyClose()\n }\n\n const onLinkClick = () => {\n PublishCookiePolicyRedirect()\n window.location.href = privacyUrl\n }\n\n useEffect(() => {\n if (doCookiePolicy() && !hasConsentCookie && IS_BROWSER()) {\n Cookies.set(cookieName, COOKIE_VALUE, {expires: EXPIRATION_DAYS, domain: cookieDomain})\n setShowPopUp(true)\n PublishCookiePolicyOpen()\n }\n }, [hasConsentCookie, cookieName, cookieDomain])\n\n return (\n \n \n
\n {title}\n \n \n \n
\n
\n {body} \n \n \n {link}\n \n  {linkText}\n \n
\n
\n
\n )\n}\n\nexport default connect(CookieConsent)\n","import {connect} from \"react-redux\"\nimport Cookies from \"js-cookie\"\nimport State from \"../../ducks/state\"\nimport {NEXT_COOKIE, NEXT_DIRECT_COOKIE} from \"../../config/constants\"\n\nexport const mapStateToProps = (state: State) => {\n const {isInternationalCountry, cookieDomain, privacyUrl} = state.request\n const { text: {cookiePolicy}} = state\n\n const cookieName = isInternationalCountry ? NEXT_DIRECT_COOKIE : NEXT_COOKIE\n const hasConsentCookie = !!Cookies.get(cookieName)\n\n return {\n cookieDomain,\n hasConsentCookie,\n privacyUrl,\n cookieName,\n text: cookiePolicy\n }\n}\n\nexport default connect(mapStateToProps)\n","import {Typography} from \"@material-ui/core\"\nimport styled from \"styled-components\"\n\nexport const Container = styled.div`\n position: fixed;\n bottom: 0rem;\n right: 0rem;\n width: 100%;\n padding: 0rem;\n padding-top: 0rem;\n border-radius: 0rem;\n background-color: ${({theme}) => theme.colours.form.default.background};\n border: ${({theme}) => theme.colours.utilities.divider};\n`\n\nexport const StyledTitle = styled(Typography)`\n padding-bottom: 0rem;\n margin: auto;\n`\n\nexport const Header = styled.div`\n display: flex;\n ${({theme}) => `\n background-color: ${theme.colours.popover.header.backgroundColour};\n border-bottom: ${theme.colours.popover.header.borderBottom};\n `};\n padding: 0.7rem;\n padding-bottom: 0.7rem\n`\n\nexport const UnstyledButton = styled.button`\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n font: inherit;\n cursor: pointer;\n outline: inherit;\n color: ${({theme}) => theme.colours.text.default};\n text-decoration: underline;\n`\n\nexport const BodyContainer = styled.div`\n text-align: center; \n padding: 1rem;\n`\n\nexport const BodyText = styled(Typography)`\n display: inline;\n font-size: 0.875rem;\n margin: 0;\n`","import React, {useEffect, useState} from \"react\"\nimport {FadeInAnimation} from \"@next/animations\"\nimport Cookies from \"js-cookie\"\nimport connect from \"./connect\"\nimport {CLOSE_ICON_URL, COOKIE_VALUE} from \"../../config/constants\"\nimport {formatCdnPath} from \"../../utils/getCdnUrl\"\nimport {IS_BROWSER} from \"../../utils/window\"\nimport {doCookiePolicy} from \"../../utils/featureSwitch\"\nimport {Container, StyledTitle, UnstyledButton, Header, BodyContainer, BodyText} from \"./component\"\nimport {PublishCookiePolicyClose, PublishCookiePolicyOpen, PublishCookiePolicyRedirect} from \"../../events\"\n\nconst EXPIRATION_DAYS = 365\n\nexport type CookieConsentProps = {\n cookieDomain: string\n hasConsentCookie: boolean\n privacyUrl: string\n cookieName: string\n text: any\n}\n\nexport const CookieConsent = ({cookieDomain, hasConsentCookie, privacyUrl, cookieName, text}: CookieConsentProps) => {\n const [showPopUp, setShowPopUp] = useState(false)\n const {title, body, link, linkText, closeIconAltText} = text\n\n const onClose = () => {\n setShowPopUp(false)\n PublishCookiePolicyClose()\n }\n\n const onLinkClick = () => {\n PublishCookiePolicyRedirect()\n window.location.href = privacyUrl\n }\n\n useEffect(() => {\n if (doCookiePolicy() && !hasConsentCookie && IS_BROWSER()) {\n Cookies.set(cookieName, COOKIE_VALUE, {expires: EXPIRATION_DAYS, domain: cookieDomain})\n setShowPopUp(true)\n PublishCookiePolicyOpen()\n }\n }, [hasConsentCookie, cookieName, cookieDomain])\n\n return (\n \n \n
\n {title}\n \n \n \n
\n \n {body} \n \n \n {link}\n \n  {linkText}\n \n \n
\n
\n )\n}\n\nexport default connect(CookieConsent)\n","import {Button, Typography} from \"@material-ui/core\"\nimport styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const Container = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n width: 18rem;\n height: 18.1875rem;\n padding: 1rem;\n background-color: ${(props: GlobalStyles) => props.theme.colours.form.default.background};\n border: ${(props: GlobalStyles) => props.theme.colours.utilities.divider};\n border-radius: 0.25rem;\n\n @media (min-width: ${breakpoints.values.md}px) {\n width: 35rem;\n height: 13.1875rem;\n }\n`\n\nexport const StyledTitle = styled(Typography)`\n width: 16rem;\n height: 1.625rem;\n margin: 0 0 0.4375rem;\n font-size: 1.0625rem;\n font-weight: bold;\n line-height: 1.5;\n letter-spacing: normal;\n`\n\nexport const StyledText = styled(Typography)`\n width: 16rem;\n margin: 0.4375rem 0 1rem;\n font-size: 0.875rem;\n font-weight: normal;\n font-style: normal;\n line-height: 1.43;\n letter-spacing: 0.0075rem;\n\n @media (min-width: ${breakpoints.values.md}px) {\n width: 34rem;\n }\n`\n\nexport const StyledButtonWrapper = styled.div`\n display: block;\n\n @media (min-width: ${breakpoints.values.md}px) {\n display: flex;\n flex-direction: row-reverse;\n }\n`\n\nexport const StyledButtonConfirm = styled(Button)`\n width: 100%;\n font-size: 0.75rem;\n font-weight: ${(props: GlobalStyles) => props.theme.colours.font.primary.medium.weight};\n letter-spacing: 0.0625rem;\n margin: 0rem 0rem 0.75rem;\n border: 0px;\n color: ${(props: GlobalStyles) => props.theme.colours.form.buttonPrimary.color};\n opacity: 1;\n border-radius: 0.25rem;\n background: ${(props: GlobalStyles) => props.theme.colours.form.buttonPrimary.background};\n padding: 0.5625rem 0.5rem;\n\n @media (min-width: ${breakpoints.values.md}px) {\n width: 12.5rem;\n height: 2.75rem;\n margin: 0rem 1rem;\n }\n\n &:hover,\n &:active,\n &:focus {\n background: ${(props: GlobalStyles) => props.theme.colours.form.buttonPrimary.background};\n border: ${(props: GlobalStyles) => props.theme.colours.form.buttonPrimary.border};\n color: ${(props: GlobalStyles) => props.theme.colours.form.buttonPrimary.color};\n }\n`\n\nexport const StyledButtonCancel = styled(Button)`\n width: 100%;\n font-size: 0.75rem;\n font-weight: ${(props: GlobalStyles) => props.theme.colours.font.primary.medium.weight};\n letter-spacing: 0.0625rem;\n margin: 0px;\n border: 0px;\n color: ${(props: GlobalStyles) => props.theme.colours.form.buttonSecondary.color};\n opacity: 1;\n border-radius: 0.25rem;\n border: 1px solid black;\n background: ${(props: GlobalStyles) => props.theme.colours.form.buttonSecondary.background};\n padding: 0.5625rem 0.5rem;\n\n @media (min-width: ${breakpoints.values.md}px) {\n width: 12.5rem;\n height: 2.75rem;\n }\n`\n","import React from \"react\"\nimport {Modal, ModalProps} from \"@material-ui/core\"\nimport styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {ComponentStyles} from \"models/styles\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\ntype Props = ModalProps & {\n styles: ComponentStyles\n}\n\n/*\n * Title: Using to style top !important\n * problem: we do not want to use !important but we want a modal and a modal is expected to cover the entire screen\n * in this case however, material UI probably assumes you'll have the entire screen covered and uses inline styles\n * to define this behaviour. But here the modal as it is the case of next, partially exposes the header area hence it\n * does not fully cover the entire screen.\n * Solution: for now we have to use !important\n * Refs:\n * https://github.com/mui-org/material-ui/issues/16441\n * https://github.com/mui-org/material-ui/issues/16442\n */\n\nexport const Container = styled(({...rest}) => )`\n transition: opacity 0.2s ease;\n animation-delay: 250ms;\n\n & > div:first-child {\n position: fixed;\n }\n\n && > div:first-child {\n background: ${props =>\n `${\n props.$darkerBackdrop\n ? `rgba(${props.theme.colours.palette.modal.backdrop.secondary})`\n : `rgba(${props.theme.colours.palette.modal.backdrop.primary})`\n }`};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n & > div:first-child {\n top: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.md.height} !important;\n }\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n & > div:first-child {\n top: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.lg.height} !important;\n }\n }\n`\n","export const handlePropagation = e => e.stopPropagation()\n","import React from \"react\"\nimport {Backdrop} from \"@material-ui/core\"\nimport {Container} from \"./component\"\nimport {MODAL_TIMEOUT} from \"../../config/constants\"\nimport {handlePropagation} from \"../../utils/handlePropagation\"\n\nexport type ModalProps = {\n open: boolean\n handleClose: () => void\n children: JSX.Element\n darkerBackdrop?: boolean\n hideBackdrop?: boolean\n}\nconst innerModalDefaultProps = {\n disableRestoreFocus: true,\n disableAutoFocus: true,\n disableEnforceFocus: true,\n disablePortal: true,\n keepMounted: false,\n disableScrollLock: true,\n}\n\nconst Modal = ({open, handleClose, children, darkerBackdrop, hideBackdrop = false}: ModalProps) => (\n \n <>{children}\n \n)\n\nexport default Modal\n","import {connect} from \"react-redux\"\nimport {State} from \"../../ducks\"\n\nexport const mapStateToProps = (state: State) => {\n const {countrySelector, text: {countryChangeModal}} = state\n \n return {\n selectedCountry: countrySelector.selectedCountry,\n selectedLanguage: countrySelector.selectedLanguage,\n text: countryChangeModal\n }\n}\n\nexport default connect(mapStateToProps)\n","import {CountrySelectorRedirectESB} from \"@next/eventservice\"\n\nconst redirectESB = new CountrySelectorRedirectESB()\n\nconst PublishCountrySelectorRedirect = () => {\n redirectESB.publish()\n}\n\nexport const SubscribeCountrySelectorRedirect = (cb: () => void) => {\n return redirectESB.subscribe(cb)\n}\n\nexport default PublishCountrySelectorRedirect\n","import PublishCountrySelectorRedirect from \"../../events/countrySelectorRedirect\"\n\nconst redirectPage = (selectedCountry, selectedLanguage) => {\n PublishCountrySelectorRedirect()\n\n const selectedLang = selectedCountry?.Languages.find(l => l.Name === selectedLanguage)\n if (selectedLang) {\n window.location.href = selectedLang.TargetUrl\n }\n}\n\nexport default redirectPage\n","import React from \"react\"\nimport {\n Container,\n StyledTitle,\n StyledText,\n StyledButtonWrapper,\n StyledButtonConfirm,\n StyledButtonCancel,\n} from \"./component\"\nimport Modal from \"../Modal\"\nimport {Country as CountryType} from \"../../models/countryselector\"\nimport connect from \"./connect\"\nimport redirectPage from \"../../utils/redirectPage\"\n\ntype CountryChangeConfirmPopupProps = {\n showModal: boolean\n selectedCountry: CountryType | null\n selectedLanguage: string | null\n closeModal: () => void\n text: any\n}\n\nexport const CountryChangeConfirmPopup = ({\n showModal,\n selectedCountry,\n selectedLanguage,\n closeModal,\n text\n}: CountryChangeConfirmPopupProps) => {\n const {titleText, bodyTextPt1, bodyTextPt2, confirm, cancel} = text\n\n const redirectPageHandler = () => {\n redirectPage(selectedCountry, selectedLanguage)\n }\n\n return (\n \n \n {titleText}\n {bodyTextPt1}\n {bodyTextPt2}\n \n \n {confirm}\n \n \n {cancel}\n \n \n \n \n )\n}\n\nexport default connect(CountryChangeConfirmPopup)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const InnerContainer = styled.nav`\n display: flex;\n height: 100%;\n background-color: inherit;\n z-index: 2;\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n align-items: center;\n max-width: ${breakpoints.values.xl}px;\n\n padding: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.default.padding};\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.md.padding};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n padding: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.lg.padding};\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n padding: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.xl.padding};\n }\n\n .header-adaptive-brand {\n order: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.default.order};\n flex: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.default.flex};\n }\n .header-adaptive-my-account {\n order: ${(props: GlobalStyles) => props.theme.styles.MyAccount.default.order};\n }\n .header-adaptive-search {\n order: ${(props: GlobalStyles) => props.theme.styles.Search.default.order};\n margin: ${(props: GlobalStyles) => props.theme.styles.Search.default.margin};\n }\n .header-adaptive-links {\n order: ${(props: GlobalStyles) => props.theme.styles.Quicklinks.default.order};\n }\n .header-adaptive-checkout {\n flex-shrink: 0;\n order: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.default.order};\n }\n .favourites {\n order: ${(props: GlobalStyles) => props.theme.styles.Favourites.default.order};\n }\n .countrylangselector {\n width: ${(props: GlobalStyles) => props.theme.styles.CountryLangSelector.default.width};\n order: ${(props: GlobalStyles) => props.theme.styles.CountryLangSelector.default.order};\n }\n\n .shoppingbag {\n order: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.default.order};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n height: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.md.height};\n\n .header-adaptive-my-account {\n order: ${(props: GlobalStyles) => props.theme.styles.MyAccount.md.order};\n }\n .header-adaptive-search {\n margin: ${(props: GlobalStyles) => props.theme.styles.Search.md.margin};\n }\n }\n`\n","import styled from \"styled-components\"\n\nexport const Img = styled.img`\n cursor: pointer;\n`\n","import React from \"react\"\nimport {Img} from \"./component\"\n\nexport type IconProps = {\n src: string\n alt: string\n}\n\nconst Icon = ({src, alt}: IconProps) => {alt}\n\nexport default Icon\n","import {connect} from \"react-redux\"\nimport {State} from \"../../ducks\"\nimport {SupportedRegionTypes} from \"../../models/regions\"\nimport {formatCdnPathWithVariant} from \"../../utils/getCdnUrl\"\nimport {REALM_HEADER} from \"../../config/constants\"\n\nexport const mapStateToProps = (state: State) => {\n const REGION = SupportedRegionTypes.Brand\n const brand = state.data?.regions.find(region => region.type === REGION)\n const {siteUrl} = state.request\n const {icon, narrowModeIcon, wideModeIcon, accessibilityText, tooltip, url} = brand!.elements[0]\n const {variant} = state.settings\n const realm = state.request.headers![REALM_HEADER] as string\n\n return {\n icon: formatCdnPathWithVariant(icon as string, realm, variant),\n wideModeIcon: formatCdnPathWithVariant(wideModeIcon as string, realm, variant),\n narrowModeIcon: formatCdnPathWithVariant(narrowModeIcon as string, realm, variant),\n accessibilityText: accessibilityText as string,\n tooltip: tooltip as string,\n url: `${siteUrl}${url}`,\n }\n}\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const Container = styled.div`\n margin: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.default.margin};\n display: flex;\n justify-content: center;\n\n @media (min-width: ${breakpoints.values.lg}px) {\n padding: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.lg.padding};\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n padding: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.xl.padding};\n }\n\n a {\n padding: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.link.default.padding};\n }\n\n img {\n display: block;\n height: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.img.default.height};\n width: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.img.default.width};\n font-size: 0.9375rem;\n\n @media (min-width: ${breakpoints.values.md}px) {\n height: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.img.md.height};\n width: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.img.lg.width};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n height: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.img.lg.height};\n width: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.img.lg.width};\n }\n }\n`\n\nexport const WideViewIconContainer = styled.div`\n display: flex;\n @media (max-width: ${breakpoints.values.md - 1}px) {\n display: none;\n }\n`\nexport const NarrowViewIconContainer = styled.div`\n display: flex;\n @media (min-width: ${breakpoints.values.md}px) {\n display: none;\n }\n`\n","import {LOCAL_STORAGE_ACTIVE_DEPT_NAME} from \"../../config/constants\"\n\nconst addDeptToSessionStorage = (target, department) => {\n sessionStorage.setItem(LOCAL_STORAGE_ACTIVE_DEPT_NAME, JSON.stringify({path: target, dept: department}))\n // PBI45843 - Remove localStorage references for \"primaryNavDeptSelector\" [Repo's: GTM, Header, Meganav, PLP]\n localStorage.setItem(LOCAL_STORAGE_ACTIVE_DEPT_NAME, JSON.stringify({path: target, dept: department}))\n}\n\nconst removeDeptFromSessionStorage = () => {\n sessionStorage.removeItem(LOCAL_STORAGE_ACTIVE_DEPT_NAME)\n // PBI45843 - Remove localStorage references for \"primaryNavDeptSelector\" [Repo's: GTM, Header, Meganav, PLP]\n localStorage.removeItem(LOCAL_STORAGE_ACTIVE_DEPT_NAME)\n}\n\nexport {addDeptToSessionStorage, removeDeptFromSessionStorage}\n","import React from \"react\"\nimport Icon from \"../Icon\"\nimport connect from \"./connect\"\nimport { WideViewIconContainer, NarrowViewIconContainer, Container } from \"./component\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\n\nexport type BrandProps = {\n narrowModeIcon: string\n wideModeIcon: string\n tooltip: string\n url: string\n accessibilityText: string\n}\n\nexport const Brand = ({accessibilityText, tooltip, url, narrowModeIcon, wideModeIcon}: BrandProps) => (\n \n \n \n \n \n \n \n \n \n \n)\n\nexport default connect(Brand)\n","// DOCS: https://dev.to/gabe_ragland/debouncing-with-react-hooks-jci\n\nimport {useState, useEffect} from \"react\"\n\n// Our hook\nexport default function useDebounce(value, delay) {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(\n () => {\n // Set debouncedValue to value (passed in) after the specified delay\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n // Return a cleanup function that will be called every time ...\n // ... useEffect is re-called. useEffect will only be re-called ...\n // ... if value changes (see the inputs array below).\n // This is how we prevent debouncedValue from changing if value is ...\n // ... changed within the delay period. Timeout gets cleared and restarted.\n // To put it in context, if the user is typing within our app's ...\n // ... search box, we don't want the debouncedValue to update until ...\n // ... they've stopped typing for more than 500ms.\n return () => {\n clearTimeout(handler)\n }\n },\n // Only re-call effect if value changes\n // You could also add the \"delay\" var to inputs array if you ...\n // ... need to be able to change that dynamically.\n [delay, value],\n )\n\n return debouncedValue\n}\n\n/* istanbul ignore file */\n","import React from \"react\"\nimport {InputBase, Divider as MuiDivider} from \"@material-ui/core\"\nimport styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport Button from \"@material-ui/core/Button\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const Container = styled.div`\n width: fit-content;\n width: min-content;\n display: flex;\n flex-shrink: 0;\n flex-grow: 1;\n color: ${(props: GlobalStyles) => props.theme.colours.form.input.color};\n background: ${(props: GlobalStyles) => props.theme.colours.form.input.background};\n\n &:hover {\n border: ${(props: GlobalStyles) => props.theme.styles.SearchBox.Container.pseudoClass.hover.default.border};\n border-width: ${(props: GlobalStyles) =>\n props.theme.styles.SearchBox.Container.pseudoClass.hover.default.borderWidth};\n }\n &:focus-within {\n border-width: ${(props: GlobalStyles) =>\n props.theme.styles.SearchBox.Container.pseudoClass.focusWithin.default.borderWidth};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n border: ${(props: GlobalStyles) => props.theme.styles.SearchBox.Container.default.border};\n border-width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.Container.md.borderWidth};\n border-radius: ${(props: GlobalStyles) => props.theme.colours.form.input.radius};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n &:hover {\n background: ${(props: GlobalStyles) => props.theme.colours.form.input.focusActive.background};\n border: ${(props: GlobalStyles) => props.theme.styles.SearchBox.Container.pseudoClass.hover.md.border};\n border-width: ${(props: GlobalStyles) =>\n props.theme.styles.SearchBox.Container.pseudoClass.hover.md.borderWidth};\n }\n\n &:focus-within {\n box-shadow: ${(props: GlobalStyles) => props.theme.styles.SearchBox.Container.default.boxShadow};\n background: ${(props: GlobalStyles) => props.theme.colours.form.input.focusActive.background};\n border: ${(props: GlobalStyles) =>\n props.theme.styles.SearchBox.Container.pseudoClass.focusWithin.md.border};\n border-width: ${(props: GlobalStyles) =>\n props.theme.styles.SearchBox.Container.pseudoClass.focusWithin.md.borderWidth};\n }\n &:focus-within,\n &:hover {\n button {\n &:hover,\n &:active {\n background: ${(props: GlobalStyles) => props.theme.colours.form.input.focusActive.background};\n }\n background: ${(props: GlobalStyles) => props.theme.colours.form.input.focusActive.background};\n }\n }\n }\n\n @media (max-width: ${breakpoints.values.md - 1}px) {\n &:focus-within {\n border: ${(props: GlobalStyles) =>\n props.theme.styles.SearchBox.Container.pseudoClass.focusWithin.default.border};\n }\n }\n`\n\nexport const Form = styled.form`\n height: 100%;\n width: 100%;\n position: relative;\n display: flex;\n\n div {\n margin: 0;\n }\n border-left: 0;\n margin: 0;\n`\n\nexport const HiddenLabel = styled.label`\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n`\n\nexport const InputContainer = styled(InputBase)`\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.default.width};\n @media (min-width: ${breakpoints.values.md}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.md.width};\n }\n letter-spacing: ${(props: GlobalStyles) =>\n props.theme.styles.SearchBox.InputContainer.default.letterSpacing ?? `0.008rem`};\n\n input:disabled {\n background-color: #f7f7f7;\n border-radius: ${props => props.theme.colours.form.input.radius};\n }\n input {\n padding: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.input.default.padding};\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.input.default.width};\n height: 100%;\n color: ${(props: GlobalStyles) => props.theme.colours.form.input.color};\n font-size: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.input.default.fontSize};\n border: none !important;\n &::-ms-clear {\n display: none;\n }\n\n ::placeholder {\n color: ${(props: GlobalStyles) => props.theme.colours.form.input.placeholder};\n opacity: ${(props: GlobalStyles) => (props.theme.colours.form.input.placeholder ? 1 : null)};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.input.md.padding};\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.input.md.width};\n font-size: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.input.md.fontSize};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.input.lg.width};\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.InputContainer.input.xl.width};\n }\n }\n`\n\nexport const Divider = styled(({...rest}) => )`\n && {\n display: none;\n background: none;\n @media (min-width: ${breakpoints.values.md}px) {\n border-right: ${(props: GlobalStyles) => props.theme.styles.SearchBox.Divider.default.borderRight};\n display: ${(props: GlobalStyles) => props.theme.styles.SearchBox.Divider.default.display};\n height: ${(props: GlobalStyles) => props.theme.styles.SearchBox.Divider.default.height};\n position: relative;\n }\n }\n`\n\nexport const SubmitButton = styled(Button)`\n && {\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.SubmitButton.default.width};\n padding: ${(props: GlobalStyles) => props.theme.styles.SearchBox.SubmitButton.default.padding};\n background: ${(props: GlobalStyles) => props.theme.colours.form.input.background};\n border-radius: ${(props: GlobalStyles) => props.theme.colours.form.input.radius};\n min-width: auto;\n border: inherit;\n transition: none;\n\n &:hover,\n &:active {\n background: ${(props: GlobalStyles) => props.theme.colours.form.input.background};\n border: 0;\n border-radius: ${props => props.theme.colours.form.input.radius};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.SubmitButton.md.width};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBox.SubmitButton.lg.width};\n }\n\n &:focus {\n border: 0;\n border-radius: ${props => props.theme.colours.form.input.radius};\n }\n }\n`\n\nexport const ClearButton = styled.a`\n position: absolute;\n right: 2.8rem;\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n height: inherit;\n width: 2.5rem;\n margin: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: 0.4375rem 0.5rem;\n }\n`\n","import {formatCdnPath, formatCdnPathWithVariant} from \"../../utils/getCdnUrl\"\n\nexport default Object.freeze({\n searchBox: {\n searchIconUrl: (realm: string, variant): string => formatCdnPathWithVariant(\"search.svg\", realm, variant),\n searchInputButtonUrl: (realm: string, variant): string =>\n formatCdnPathWithVariant(\"search-input-button.svg\", realm, variant),\n clearButton: {\n path: formatCdnPath(\"/icons/shared/clear.svg\"),\n },\n },\n myAccount: {\n loginUrl: \"/secure/accounts/transfer\",\n signoutUrl: \"/forget-me\",\n tooltipIconUrl: (realm: string, variant: string): string =>\n formatCdnPathWithVariant(\"account-tooltip.svg\", realm, variant),\n },\n checkout: {\n url: \"/secure/checkout/transfer/checkoutcta\",\n },\n autoComplete: {\n images: {\n oldDirectoryName: \"AltItemZoom\",\n newDirectoryName: \"search/224x336\",\n },\n },\n drawer: {\n iconUrl: formatCdnPath(\"/icons/shared/next_close-white.svg\"),\n },\n favourites: {\n url: \"/favourites\",\n activeIconUrl: (realm: string, variant: string) =>\n formatCdnPathWithVariant(\"favourites-active.svg\", realm, variant),\n inactiveIconUrl: (realm: string, variant: string) =>\n formatCdnPathWithVariant(\"favourites-inactive.svg\", realm, variant),\n },\n shoppingBag: {\n iconUrl: (realm: string, variant: string) => formatCdnPathWithVariant(\"shopping-bag.svg\", realm, variant),\n url: \"/shoppingbag\",\n },\n countryLangSelector: {\n countrySelectUrl: \"/countryselect\",\n },\n burgerMenu: {\n iconUrl: (realm: string, variant: string) => formatCdnPathWithVariant(\"menu.svg\", realm, variant),\n },\n queueIt: {\n host: \"https://static.queue-it.net\",\n clientUrl: \"//static.queue-it.net/script/queueclient.min.js\",\n configLoader: \"//static.queue-it.net/script/queueconfigloader.js\",\n },\n abPlatformTesting: {\n configsPath: \"/configs/abplatform/\",\n personasConfigPath: \"/configs/abplatform/personaconfig/\",\n baseFile: \"abplatform.js\",\n configFile: \"abplatformconfig.js\",\n },\n dynatrace: {\n scriptUrl: (realm: string, environmentId: string, applicationId: string) =>\n formatCdnPath(`/configs/dynatrace/${realm}/${environmentId}_${applicationId}_rum.js`),\n },\n drawerCloseIcon: formatCdnPath(\"/icons/shared/next_close-white.svg\"),\n arrowIconUrl: formatCdnPath(\"/icons/shared/chevron.svg\"),\n leftWhiteArrowIconUrl: formatCdnPath(\"/icons/shared/chevron-white-left.svg\"),\n rightWhiteArrowIconUrl: formatCdnPath(\"/icons/shared/chevron-white-right.svg\"),\n})\n","\nexport const getCookieValue = (cookieName, cookieList) => {\n const b = cookieList.match(`\\\\b${cookieName}=([^;]*)\\\\b`)\n return b ? b.pop() : \"\"\n}\n\n","import Cookies from \"js-cookie\"\nimport {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {typing, search, openDrawer, showRecentSearch} from \"../../ducks/search\"\nimport {createRecentQuery} from \"../../ducks/recents\"\nimport {getAutoCompleteThunk, BR_UID_2, clearSuggestions, setIsLoading} from \"../../ducks/autocomplete\"\nimport {getCookieValue} from \"../../utils/cookies\"\nimport urls from \"../../config/urls\"\nimport {PublishToModalsClosed} from \"../../events/modalsClosed\"\nimport {MIN_NUMBER_CHAR_TO_SHOW_AUTOCOMPLETE} from \"../../config/constants\"\n\nexport const mapStateToProps = (state: State) => {\n const autocompleteParameters = state.autocomplete.parameters\n const cookie = state.request?.headers?.cookie\n const realm = state.data?.realm.toLowerCase() as string\n const {variant} = state.settings\n const {\n text: {searchBox},\n } = state\n return {\n text: searchBox,\n cookie,\n autocompleteParameters,\n backgroundImage: urls.searchBox.searchInputButtonUrl(realm, variant),\n siteUrl: state.request.siteUrl,\n typedCharacters: state.search.typedCharacters,\n }\n}\n\n// stateProps is the result of mapStateToProps\n// {dispatch} is the object resultingfrom mapDispatchToProps\n// ownProps is the container component own props\nexport const mergeProps = (stateProps: any, {dispatch}: any, ownProps: any) => {\n return {\n ...stateProps,\n dispatch,\n ...ownProps,\n handleSubmit: (searchTerm: string) => {\n dispatch(createRecentQuery(searchTerm))\n dispatch(search(stateProps.siteUrl, searchTerm))\n dispatch(showRecentSearch(false))\n },\n typing: (chars: string) => {\n dispatch(typing(chars))\n if (chars && chars.length >= MIN_NUMBER_CHAR_TO_SHOW_AUTOCOMPLETE) {\n dispatch(clearSuggestions())\n }\n },\n autocompleteTyping: (chars: string) => {\n const {accountId, domainKey, authKey, territory} = stateProps.autocompleteParameters\n const {cookie} = stateProps\n const uid2 = cookie ? getCookieValue(BR_UID_2, cookie) : Cookies.get(BR_UID_2)\n dispatch(getAutoCompleteThunk(chars, accountId, domainKey, authKey, uid2, territory))\n },\n openDrawer: () => {\n PublishToModalsClosed()\n return dispatch(openDrawer())\n },\n setAutoCompleteIsLoading: () => {\n dispatch(setIsLoading(true))\n },\n }\n}\n\nexport default connect(mapStateToProps, null, mergeProps)\n","import React, {useState, useEffect, FormEvent} from \"react\"\nimport debounce from \"../../utils/debounce\"\nimport {\n DEBOUNCE_TIME,\n TYPING_STATE,\n MIN_NUMBER_CHAR_TO_SHOW_AUTOCOMPLETE,\n SEARCH_DATA_GA,\n SEARCH_ICON_DATA_GA,\n SEARCH_DELETE_CURRENT_SEARCH_DATA_GA,\n SEARCH_KEY_PRESS_ENTER_DATA_GA,\n} from \"../../config/constants\"\nimport {Divider, InputContainer, SubmitButton, Container, ClearButton, Form, HiddenLabel} from \"./component\"\nimport urls from \"../../config/urls\"\nimport {IS_BROWSER} from \"../../utils/window\"\nimport {handlePropagation} from \"../../utils/handlePropagation\"\nimport connect from \"./connect\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\n\ntype SubmitHandler = (searchTerm: string) => void\n\nexport type SearchBoxProps = {\n handleSubmit: SubmitHandler\n typing: (chars: string) => void\n autocompleteTyping: (chars: string) => void\n backgroundImage: string\n placeholder: string\n typedCharacters: any\n openDrawer: () => void\n labelId: string\n text: any\n realm: string\n autoFocus: boolean\n setAutoCompleteIsLoading: () => void\n}\n\nconst {clearButton: clearButtonUrl} = urls.searchBox\n\nconst showAutocompletePanel = (text: string) => text.length >= MIN_NUMBER_CHAR_TO_SHOW_AUTOCOMPLETE\n\nexport const SearchBox = ({\n placeholder,\n typing,\n autocompleteTyping,\n backgroundImage,\n handleSubmit,\n openDrawer,\n typedCharacters,\n labelId,\n text,\n autoFocus,\n setAutoCompleteIsLoading,\n}: SearchBoxProps) => {\n const [searchDisabled, setSearchDisabled] = useState(true)\n const [searchState, setSearchState] = useState(TYPING_STATE.IDLE)\n const {label, clearButton} = text\n\n const term = showAutocompletePanel(typedCharacters)\n ? debounce(typedCharacters, DEBOUNCE_TIME)\n : debounce(typedCharacters, 0)\n\n useEffect(() => {\n if (IS_BROWSER()) setSearchDisabled(false)\n }, [])\n\n useEffect(() => {\n if (searchState !== TYPING_STATE.IDLE) {\n setAutoCompleteIsLoading()\n typing(typedCharacters)\n if (showAutocompletePanel(term)) {\n if (term === typedCharacters) {\n autocompleteTyping(term)\n setSearchState(TYPING_STATE.AUTO_COMPLETE)\n }\n } else {\n setSearchState(TYPING_STATE.RECENT_SEARCH)\n }\n\n openDrawer()\n }\n }, [term, typedCharacters, autocompleteTyping, openDrawer, searchState, typing, setAutoCompleteIsLoading])\n\n const handleFocus = () => {\n openDrawer()\n if (showAutocompletePanel(typedCharacters)) {\n setSearchState(TYPING_STATE.AUTO_COMPLETE)\n } else {\n setSearchState(TYPING_STATE.RECENT_SEARCH)\n }\n }\n const handleEmptySpace = val => (!val || !val.trim() ? \"\" : val)\n const handleOnChange = e => typing(handleEmptySpace(e.target.value))\n\n const handleFormSubmit = (event: FormEvent) => {\n event.preventDefault()\n removeDeptFromSessionStorage()\n const cleanSearchTerm = typedCharacters.toLowerCase()\n const hasChars = cleanSearchTerm.length > 0\n if (hasChars) handleSubmit(cleanSearchTerm)\n }\n\n const handleClear = () => {\n setSearchState(TYPING_STATE.IDLE)\n typing(\"\")\n }\n\n return (\n \n
\n {placeholder}\n \n\n {typedCharacters && (\n \n {clearButton.alt}\n \n )}\n \n \n \"Search\n \n \n
\n )\n}\n\nexport default connect(SearchBox)\n","import styled from \"styled-components\"\nimport {Drawer as MUIDrawer} from \"@material-ui/core\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const DrawerContainer = styled(MUIDrawer)`\n && > div:first-child {\n background: ${(props: GlobalStyles) =>\n props.theme.styles.Drawer.DrawerContainer.pseudoClass.firstChild.default.background};\n }\n &&.drawer > div:nth-child(3) {\n width: calc(100% - 2.75rem);\n }\n`\n\nexport const CloseIcon = styled.img`\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n cursor: pointer;\n height: 2.75rem;\n width: 2.75rem;\n`\n","import React from \"react\"\nimport {DrawerProps as MuiDrawerProps, useMediaQuery} from \"@material-ui/core\"\nimport {breakpoints} from \"@next/themes\"\nimport {DrawerContainer, CloseIcon} from \"./component\"\nimport {formatCdnPath} from \"../../utils/getCdnUrl\"\nimport {SEARCH_DATA_GA, CLOSE_SEARCH_DATA_GA} from \"../../config/constants\"\n\nexport type DrawerProps = Pick & {\n onClose: () => void\n text: any\n}\n\nconst Drawer = ({anchor, open, onClose, children, text}: DrawerProps) => {\n const shouldDisableScrollLock = useMediaQuery(`(min-width:${breakpoints.values.md}px)`)\n\n const modalProps = {\n keepMounted: false,\n disableRestoreFocus: true,\n disableAutoFocus: true,\n disableEnforceFocus: true,\n closeAfterTransition: false,\n disablePortal: true,\n disableScrollLock: shouldDisableScrollLock,\n hideBackdrop: false\n }\n\n return (\n \n \n {children}\n \n )\n}\n\nexport default Drawer\n","import {connect} from \"react-redux\"\nimport {State} from \"../../ducks\"\n\nexport const mapStateToProps = (state: State) => ({\n features: state.features,\n closeText: state.text.searchBox.closeButton.text,\n})\n\nexport default connect(mapStateToProps)\n","import {connect} from \"react-redux\"\nimport {State} from \"../../ducks\"\nimport {createRecentQuery} from \"../../ducks/recents\"\nimport {search, getPlpUrl} from \"../../ducks/search\"\n\nexport const mapStateToProps = (state: State) => {\n const {suggestions} = state.autocomplete\n const {siteUrl} = state.request\n const {typedCharacters} = state.search\n\n const DefaultLimit = 10\n\n const MaxItems = state.features.SearchBar?.Autocomplete?.MaxItems || DefaultLimit\n\n const limitSuggestions = suggestions?.slice(0, MaxItems)\n\n return {\n suggestions: limitSuggestions,\n term: typedCharacters,\n siteUrl,\n }\n}\n\n// stateProps is the result of mapStateToProps\n// {dispatch} is the object resultingfrom mapDispatchToProps\n// ownProps is the container component own props\nexport const mergeProps = (stateProps: any, {dispatch}: any, ownProps: any) => {\n return {\n ...stateProps,\n dispatch,\n ...ownProps,\n handleSuggestionClick: (suggestion: string): void => {\n dispatch(createRecentQuery(suggestion))\n dispatch(search(stateProps.siteUrl, suggestion))\n },\n getConnectedPlpUrl: (suggestion: string) => getPlpUrl(stateProps.siteUrl)(suggestion),\n }\n}\n\nexport default connect(mapStateToProps, null, mergeProps)\n","import styled from \"styled-components\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const Li = styled.li`\n a {\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n text-decoration: none;\n padding: 0.375rem 0;\n margin: 0.125rem 0;\n display: inline-block;\n font-size: 0.875rem;\n letter-spacing: 0.12px;\n line-height: 1.5;\n\n > span:first-child {\n text-transform: capitalize;\n }\n\n &:hover {\n text-decoration: underline;\n }\n }\n`\nexport const Ul = styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n`\n","import styled from \"styled-components\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const Span = styled.span`\n font-family: ${(props: GlobalStyles) => `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n`\n","/* eslint-disable react/no-array-index-key */\nimport React from \"react\"\nimport {escapeRegex} from \"../../utils/getRegExValue\"\nimport {Span} from \"./component\"\n\nexport type TextMatcherProps = {text: string; textToMatch: string}\n\nconst TextMatcher = ({text, textToMatch}: TextMatcherProps) => {\n const regExp = new RegExp(escapeRegex(textToMatch), \"gi\")\n const replaced = text\n .replace(regExp, `,${textToMatch},`)\n .split(\",\")\n .filter(match => match !== \"\")\n\n return (\n <>\n {replaced.map((matchedText, ind) => (\n \n {matchedText.toLowerCase() === textToMatch.toLowerCase() ? (\n {matchedText}\n ) : (\n {matchedText}\n )}\n \n ))}\n \n )\n}\nexport default TextMatcher\n","import {removeDeptFromSessionStorage} from \"../removeDeptFromSessionStorage\"\n\nexport const handleClick = (suggestion: string, handleSuggestionClick) => {\n return (event: React.MouseEvent) => {\n event.preventDefault()\n removeDeptFromSessionStorage()\n handleSuggestionClick(suggestion)\n }\n}\n\n/**\n * Function to handle searchbar suggestions mouse over events.\n *\n * @param {string} term - the search term user searching for - example dress\n * @param {string} suggestion - suggestion for the search term - example dressing gown\n * @param {function(term: string, suggestion: string)} handleFocus - callback that runs when handleFocus exist\n *\n */\nexport const Focus = (term: string, suggestion: string, handleFocus?: (term: string, suggestion: string) => void) => {\n return (event: React.MouseEvent) => {\n event.preventDefault()\n if (handleFocus) handleFocus(term, suggestion)\n }\n}\n\n/**\n * Function to handle searchbar suggestions keyboard focus events.\n *\n * @param {string} term - the search term user searching for - example dress\n * @param {string} suggestion - suggestion for the search term - example dressing gown\n * @param {function(term: string, suggestion: string)} handleFocus - callback that runs when handleFocus exist\n *\n */\nexport const handleKeyboardTapping = (\n term: string,\n suggestion: string,\n handleFocus?: (term: string, suggestion: string) => void,\n) => {\n return (event: React.FocusEvent) => {\n event.preventDefault()\n if (handleFocus) handleFocus(term, suggestion)\n }\n}\n","import React from \"react\"\n\nimport {formatTextTestIds} from \"@next/utils\"\nimport connect from \"./connect\"\nimport {Ul, Li} from \"./components\"\nimport {SuggestionItem} from \"../../models/autocomplete\"\nimport TextMatcher from \"../TextMatcher\"\nimport {handleClick, Focus, handleKeyboardTapping} from \"../../utils/autocomplete\"\nimport {SEARCH_DATA_GA, HEADER_AUTOCOMPLETE_LIST_ITEM_DATA_GA} from \"../../config/constants\"\n\nexport type AutocompleteProps = {\n handleSuggestionClick: (suggestion: string) => void\n handleFocus?: (term: string, suggestion: string) => any\n suggestions: SuggestionItem[] | any\n term: string | any\n getConnectedPlpUrl: (suggestion: string) => string\n}\n\nexport const Autocomplete = ({\n handleSuggestionClick,\n handleFocus,\n suggestions,\n term,\n getConnectedPlpUrl,\n}: AutocompleteProps) => {\n return (\n
    \n {suggestions.map(({dq: suggestion}) => {\n return (\n
  • \n \n \n \n
  • \n )\n })}\n
\n )\n}\n\nexport default connect(Autocomplete)\n","import {connect} from \"react-redux\"\nimport {State} from \"../../../../ducks\"\nimport {getPlpUrl} from \"../../../../ducks/search\"\n\nexport const mapStateToProps = (state: State) => {\n const {q, numFound, suggestions, isLoading} = state.autocomplete\n const {siteUrl} = state.request\n const {\n text: {autoComplete},\n } = state\n return {\n text: autoComplete,\n typedCharacters: state.search.typedCharacters,\n siteUrl,\n term: q,\n numFound,\n suggestions,\n isLoading,\n }\n}\n\n// stateProps is the result of mapStateToProps\n// {dispatch} is the object resultingfrom mapDispatchToProps\n// ownProps is the container component own props\nexport const mergeProps = (stateProps: any, {dispatch}: any, ownProps: any) => {\n return {\n ...stateProps,\n dispatch,\n ...ownProps,\n getConnectedPlpUrl: (suggestion: string) => getPlpUrl(stateProps.siteUrl)(suggestion),\n }\n}\n\nexport default connect(mapStateToProps, null, mergeProps)\n","import styled from \"styled-components\"\nimport Typography from \"@material-ui/core/Typography\"\nimport {breakpoints} from \"@next/themes\"\nimport {Button as MUIButton} from \"@material-ui/core\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const CloseIcon = styled.img`\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n cursor: pointer;\n height: 2.75rem;\n width: 2.75rem;\n`\n\nexport const ClearButton = styled(MUIButton).attrs({disableRipple: true})`\n && {\n color: ${(props: GlobalStyles) => props.theme.colours.text.hyperlink};\n background: none;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n font-size: 0.875rem;\n font-weight: ${(props: GlobalStyles) => props.theme.colours.font.primary.medium.weight};\n line-height: 1.43;\n padding: 0;\n justify-content: flex-end;\n border: 0;\n\n &:hover,\n &:active {\n background: inherit;\n border: 0;\n }\n\n &:focus {\n border: 0;\n border-radius: 0;\n }\n }\n`\n\nexport const Title = styled(Typography)`\n && {\n letter-spacing: ${(props: GlobalStyles) => props.theme.styles.SearchBar.Title.default.letterSpacing};\n @media (min-width: ${breakpoints.values.md}px) {\n letter-spacing: normal;\n font-size: 0.875rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n`\n\nexport const HeaderContainer = styled.div`\n align-items: center;\n background: ${(props: GlobalStyles) => props.theme.colours.utilities.backgroundAccent};\n border-top: ${(props: GlobalStyles) => props.theme.colours.form.input.border};\n border-bottom: ${(props: GlobalStyles) => props.theme.colours.form.input.border};\n display: flex;\n justify-content: space-between;\n padding: calc(0.75rem - 1px) 1.025rem calc(0.812rem - 1px) 1rem;\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n\n @media (min-width: ${breakpoints.values.md}px) {\n background: ${(props: GlobalStyles) => props.theme.colours.utilities.backgroundAccent};\n padding: 0.5rem 0.625rem;\n border-top: 0;\n }\n`\n\nexport const Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n flex: 0 0 auto;\n justify-content: flex-start;\n margin: 0;\n padding: 0.25rem 1rem;\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: 0.125rem 0.625rem;\n }\n\n ul {\n margin: 0;\n padding: 0;\n\n @media (min-width: ${breakpoints.values.sm}px) and (max-width: ${breakpoints.values.md - 1}px) {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n li {\n flex-basis: ${(props: GlobalStyles) => props.theme.styles.SearchBar.Wrapper.listitem.default.flexBasis};\n padding-right: 1rem;\n }\n }\n }\n`\n\nexport const Container = styled.div`\n background: white;\n\n @media (min-width: ${breakpoints.values.md}px) {\n border-radius: ${(props: GlobalStyles) => props.theme.colours.form.input.radius};\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border: ${(props: GlobalStyles) => props.theme.colours.form.input.border};\n width: ${(props: GlobalStyles) => props.theme.styles.SearchBar.Container.md.width};\n }\n`\n\nexport const SeeAllLinkContainer = styled.div`\n border-top: ${(props: GlobalStyles) => props.theme.colours.utilities.divider};\n margin-top: 1rem;\n padding-top: 1rem;\n\n a {\n display: flex;\n justify-content: flex-end;\n color: ${(props: GlobalStyles) => props.theme.colours.text.hyperlink};\n text-decoration: underline;\n font-size: 0.875rem;\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding-right: 1rem;\n }\n }\n`\n\nexport const NoResultText = styled.span`\n padding: 0.5rem 0;\n display: block;\n font-size: 0.875rem;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.regular.family}, ${props.theme.colours.font.default}`};\n line-height: 1.5;\n word-break: break-word;\n\n strong {\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n }\n`\n","import React from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport Autocomplete from \"../../../../components/Autocomplete\"\nimport connect from \"./connect\"\nimport {Wrapper, Container, HeaderContainer, Title, SeeAllLinkContainer, NoResultText} from \"../components\"\nimport {SuggestionItem} from \"../../../../models/autocomplete\"\nimport {SEARCH_DATA_GA, HEADER_AUTOCOMPLETE_SEE_ALL_RESULTS_DATA_GA} from \"../../../../config/constants\"\nimport type {AutoComplete as AutoCompleteType} from \"../../../../models/text\"\n\nexport type SimpleAutocompleteProps = {\n getConnectedPlpUrl: (suggestion: string) => string\n term: string\n numFound: number\n suggestions: SuggestionItem[] | null\n isLoading: boolean\n typedCharacters: string | number\n text: AutoCompleteType\n}\n\ntype HeaderProps = {\n text: AutoCompleteType\n}\n\nconst Header = ({text}: HeaderProps) => (\n \n \n {text.headerText}\n \n \n)\nconst Content = ({\n getConnectedPlpUrl,\n term,\n numFound,\n suggestions,\n isLoading,\n typedCharacters,\n text,\n}: SimpleAutocompleteProps) => {\n const {searchLinktext, noResults} = text\n\n return (\n \n {numFound > 0 && (\n <>\n \n \n \n \n {searchLinktext}\n \n \n \n \n )}\n\n {!isLoading && suggestions && suggestions.length === 0 && numFound === 0 && (\n \n {noResults} '{typedCharacters}'\n \n )}\n \n )\n}\n\nexport const SimpleAutocomplete = (props: SimpleAutocompleteProps) => (\n \n
\n \n \n)\n\nexport default connect(SimpleAutocomplete)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\n\nexport const mapStateToProps = (state: State) => {\n const {enriched} = state.text.recentSearches\n const {queryIds} = state.recents\n const DefaultLimit = 6\n\n const MaxItems = state.features.SearchBar?.RecentSearch?.MaxItems || DefaultLimit\n\n const items = queryIds\n .slice()\n .map(item => ({item, url: `${state.request.siteUrl}/search?w=${encodeURIComponent(item)}`}))\n .reverse()\n\n const limitRecentSearches = items?.slice(0, MaxItems)\n return {\n items: limitRecentSearches,\n typedCharacters: state.search.typedCharacters,\n text: enriched,\n }\n}\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const Li = styled.li`\n width: 100%;\n\n a {\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n text-decoration: none;\n padding: 0.375rem 0.5rem 0.375rem 0;\n margin: 0.125rem 0;\n display: inline-block;\n font-size: 0.875rem;\n line-height: 1.5;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n @media (min-width: ${breakpoints.values.md}px) {\n width: 16.875rem;\n }\n :hover {\n text-decoration: underline;\n }\n }\n`\n\nexport const Ul = styled.ul`\n @media (max-width: ${breakpoints.values.md}px) {\n width: 100%;\n }\n`\n\nexport const P = styled.p`\n margin-top: 0.75rem;\n font-size: 0.875rem;\n`\n","export const capitaliseEachWord = (text: string): string => {\n const words = text.trim().split(\" \")\n for (let i = 0; i < words.length; i += 1) {\n if (words[i][0]) {\n words[i] = words[i][0].toUpperCase() + words[i].substr(1)\n }\n }\n\n return words.join(\" \")\n}\n","import React from \"react\"\nimport connect from \"./connect\"\nimport {Li, Ul, P} from \"./components\"\nimport TextMatcher from \"../TextMatcher\"\nimport {SEARCH_DATA_GA, SEARCH_DATA_GA_RECENT_SEARCH} from \"../../config/constants\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\nimport {capitaliseEachWord} from \"../../utils/capitaliseEachWord\"\nimport {EnrichedSearch} from \"../../models/text\"\n\ntype Item = {item: string; url: string}\n\nexport type RecentSearchesProps = {\n items: Item[]\n typedCharacters: string\n text: EnrichedSearch\n}\n\n// todo: template-tech-debt\nexport const RecentSearches = ({items, typedCharacters, text}: RecentSearchesProps) => {\n const {noSearchesCompleted} = text\n const textContainsNoValue = !noSearchesCompleted\n\n return items.length || textContainsNoValue ? (\n
    \n {items.map(({item, url}) => (\n
  • \n \n \n \n
  • \n ))}\n
\n ) : (\n

{noSearchesCompleted}

\n )\n}\n\nexport default connect(RecentSearches)\n","import {connect} from \"react-redux\"\nimport {State} from \"ducks\"\nimport {deleteRecentQueries} from \"../../../../ducks/recents\"\n\nexport const mapStateToProps = (state: State) => {\n const {\n text: {\n recentSearches: {simple},\n },\n recents: {queryIds},\n } = state\n\n const showClearAll = queryIds && queryIds.length > 0\n\n return {\n text: simple,\n showClearAll,\n }\n}\n\nexport const mapDispatchToProps = (dispatch: any) => ({\n clear: () => {\n dispatch(deleteRecentQueries())\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import React from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport RecentSearches from \"../../../../components/RecentSearches\"\nimport {Container, Wrapper, HeaderContainer, ClearButton, Title} from \"../components\"\nimport connect from \"./connect\"\nimport {\n SEARCH_DATA_GA,\n SEARCH_CLEAR_PREVIOUS_SEARCH_DATA_GA,\n SEARCH_PREVIOUS_SEARCH_DATA_GA,\n CLEAR_ALL,\n} from \"../../../../config/constants\"\n\ntype HeaderProps = {\n clear: () => void\n text: any\n showClearAll: boolean\n}\n\nconst Header = ({clear, text, showClearAll}: HeaderProps) => {\n const {mobileHeader, desktopHeader} = text\n\n return (\n \n \n <Hidden mdUp implementation=\"css\">\n {mobileHeader}\n </Hidden>\n <Hidden smDown implementation=\"css\">\n {desktopHeader}\n </Hidden>\n \n {showClearAll && (\n \n {CLEAR_ALL}\n \n )}\n \n )\n}\nconst Content = () => (\n \n \n \n)\n\nexport type RecentSearchesProps = {\n clear: () => void\n text: any\n showClearAll: boolean\n}\n\nexport const SimpleRecentSearches = (props: RecentSearchesProps) => (\n \n
\n \n \n)\n\nexport default connect(SimpleRecentSearches)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\n/*\n * Title: Using to style top !important\n * problem: we do not want to use !important but we want a modal and a modal is expected to cover the entire screen\n * in this case however, material UI probably assumes you'll have the entire screen covered and uses inline styles\n * to define this behaviour. But here the modal as it is the case of next, partially exposes the header area hence it\n * does not fully cover the entire screen.\n * Solution: for now we have to use !important\n * Refs:\n * https://github.com/mui-org/material-ui/issues/16441\n * https://github.com/mui-org/material-ui/issues/16442\n */\n\nexport const Wrapper = styled.div`\n & > div {\n position: absolute !important;\n right: auto !important;\n left: auto !important;\n top: 3rem !important;\n bottom: auto !important;\n\n & > div:first-child {\n top: 3rem;\n background: rgba(0, 0, 0, 0.9);\n opacity: 0 !important;\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n & > div:first-child {\n top: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.md.height} !important;\n }\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n & > div:first-child {\n top: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.lg.height} !important;\n }\n }\n }\n`\n","import React from \"react\"\n\nimport {Wrapper} from \"./components\"\n\nimport Modal from \"../../../../components/Modal\"\n\nexport type ModalProps = {\n open: boolean\n closeText: string\n handleClose: () => void\n children: JSX.Element\n}\n\nconst SimpleModal = ({open, handleClose, children, closeText}: ModalProps) => {\n return (\n \n \n <>\n {children}\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role */}\n
\n \n \n \n )\n}\n\nexport default SimpleModal\n","import {connect} from \"react-redux\"\nimport Cookies from \"js-cookie\"\nimport {getCookieValue} from \"../../../../utils/cookies\"\nimport {getAutoCompleteThunk, BR_UID_2} from \"../../../../ducks/autocomplete\"\nimport {State} from \"../../../../ducks\"\n\nexport const mapStateToProps = (state: State) => {\n const {parameters, numFound, suggestions, isLoading} = state.autocomplete\n const cookie = state.request?.headers?.cookie\n const {\n text: {autoComplete},\n } = state\n const isNoResults = !isLoading && suggestions && suggestions.length === 0 && numFound === 0\n\n return {\n text: autoComplete,\n typedCharacters: state.search.typedCharacters,\n isLoading,\n parameters,\n numFound,\n suggestions,\n cookie,\n isNoResults,\n }\n}\n\n// stateProps is the result of mapStateToProps\n// {dispatch} is the object resultingfrom mapDispatchToProps\n// ownProps is the container component own props\nexport const mergeProps = (stateProps: any, {dispatch}: any, ownProps: any) => {\n return {\n ...stateProps,\n dispatch,\n ...ownProps,\n getAutoCompleteThunk: (term: string) => {\n const {accountId, domainKey, authKey, territory} = stateProps.parameters\n const {cookie} = stateProps\n const uid2 = cookie ? getCookieValue(BR_UID_2, cookie) : Cookies.get(BR_UID_2)\n const updateProductsOnly = true\n dispatch(getAutoCompleteThunk(term, accountId, domainKey, authKey, uid2, territory, updateProductsOnly))\n },\n }\n}\n\nexport default connect(mapStateToProps, null, mergeProps)\n","import styled from \"styled-components\"\nimport Typography from \"@material-ui/core/Typography\"\nimport Container from \"@material-ui/core/Container\"\nimport {breakpoints} from \"@next/themes\"\nimport {Grid as MuiGrid, Button as MUIButton} from \"@material-ui/core\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\ninterface GridWrapperProps {\n $isNoResults?: boolean\n $isRecentSearches: boolean\n}\n\nexport const NumFoundContainer = styled.div`\n width: 100%;\n\n @media (min-width: ${breakpoints.values.md}px) {\n display: flex;\n margin: 1rem 0;\n }\n`\n\nexport const HeaderContainer = styled.div`\n align-items: center;\n background: ${(props: GlobalStyles) => props.theme.colours.utilities.backgroundAccent};\n border-bottom: ${(props: GlobalStyles) => props.theme.colours.form.input.border};\n border-top: ${(props: GlobalStyles) => props.theme.colours.form.input.border};\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n\n @media (min-width: ${breakpoints.values.md}px) {\n background: white;\n border: none;\n padding: 1.5rem 0 0;\n }\n`\nexport const HeaderWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n`\n\nexport const CloseIcon = styled.img`\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n cursor: pointer;\n height: 2.75rem;\n width: 2.75rem;\n`\n\nexport const ClearButton = styled(MUIButton).attrs({disableRipple: true})`\n && {\n color: ${(props: GlobalStyles) => props.theme.colours.text.hyperlink};\n background: none;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n font-size: 0.875rem;\n font-weight: ${(props: GlobalStyles) => props.theme.colours.font.primary.medium.weight};\n line-height: 1.43;\n padding: 0;\n justify-content: flex-end;\n border: 0;\n &:hover,\n &:active {\n background: inherit;\n border: 0;\n }\n\n &:focus {\n border: 0;\n border-radius: 0;\n }\n }\n`\n\nexport const Title = styled(Typography)`\n && {\n font-family: ${({theme}: GlobalStyles) =>\n `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`};\n font-weight: ${({theme}: GlobalStyles) => theme.colours.font.primary.medium.weight};\n letter-spacing: ${({theme}: GlobalStyles) => theme.styles.Checkout.Container.default.letterSpacing};\n\n @media (min-width: ${breakpoints.values.md}px) {\n letter-spacing: 0.0075rem;\n }\n }\n`\n\n// todo: template-tech-debt\nexport const TitleContainerStyled = styled(Container)`\n && {\n padding: ${({theme}: GlobalStyles) => theme.styles.SearchBar.TitleContainerStyled.default.padding};\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: ${({theme}: GlobalStyles) => theme.styles.SearchBar.TitleContainerStyled.md.padding};\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n padding: ${({theme}: GlobalStyles) => theme.styles.SearchBar.TitleContainerStyled.xl.padding};\n }\n }\n`\nexport const ContentContainerStyled = styled(Container)`\n && {\n padding: 0.25rem 1rem;\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: 0 2rem;\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n padding: 0 2.5rem;\n }\n }\n`\nexport const GridContent = styled(MuiGrid)`\n margin: ${({theme}: GlobalStyles) => theme.styles.SearchBar.GridContent.default.margin};\n border-radius: ${({theme}: GlobalStyles) => theme.styles.SearchBar.GridContent.default.borderRadius};\n background: white;\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n\n @media (min-width: ${breakpoints.values.lg}px) {\n width: ${({theme}: GlobalStyles) => theme.styles.SearchBar.GridContent.lg.width};\n margin: ${({theme}: GlobalStyles) => theme.styles.SearchBar.GridContent.lg.margin};\n border-radius: ${({theme}: GlobalStyles) => theme.styles.SearchBar.GridContent.lg.borderRadius};\n pointer-events: ${({theme}: GlobalStyles) => theme.styles.SearchBar.GridContent.lg.pointerEvents};\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n width: ${({theme}: GlobalStyles) => theme.styles.SearchBar.GridContent.xl.width};\n }\n`\n\nexport const GridWrapper = styled(MuiGrid)`\n @media (min-width: ${breakpoints.values.md}px) {\n display: flex;\n min-height: ${({$isNoResults, $isRecentSearches}) =>\n $isNoResults || $isRecentSearches ? \"0rem\" : \"25.125rem\"};\n padding: ${({$isRecentSearches}) => ($isRecentSearches ? \"1rem 0\" : \"0\")};\n }\n\n ul li a {\n transition: transform 0.1s ease, padding 0.15s ease;\n &:hover {\n padding-left: 0.5rem;\n }\n }\n`\n","import styled from \"styled-components\"\nimport Grid from \"@material-ui/core/Grid\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const AutocompleteContainer = styled.div`\n @media (min-width: ${breakpoints.values.lg}px) {\n pointer-events: ${({theme}: GlobalStyles) => theme.styles.SearchBar.Container.lg.pointerEvents};\n position: absolute;\n left: calc(50% - (${({theme}: GlobalStyles) => theme.styles.SearchBar.GridContent.lg.width} / 2));\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n position: absolute;\n left: calc(50% - (${({theme}: GlobalStyles) => theme.styles.SearchBar.GridContent.xl.width} / 2));\n }\n`\n\nexport const AutocompleteContent = styled.div`\n ul {\n @media (min-width: ${breakpoints.values.sm}px) and (max-width: ${breakpoints.values.md - 1}px) {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n\n li {\n flex-basis: calc(100% / 2);\n padding-right: 1rem;\n }\n }\n }\n`\nexport const AutocompleteGrid = styled(Grid)`\n border-bottom: ${(props: GlobalStyles) => props.theme.colours.utilities.divider};\n padding-bottom: 1rem;\n\n @media (min-width: ${breakpoints.values.md}px) {\n border-bottom: 0;\n padding-bottom: 0rem;\n\n border-right: ${(props: GlobalStyles) => props.theme.colours.utilities.divider};\n }\n`\n\nexport const AutocompleteProductsGrid = styled(Grid)`\n padding-top: 1rem;\n min-height: 300px;\n @media (min-width: ${breakpoints.values.md}px) {\n padding-top: 0;\n padding-left: 1rem;\n }\n`\n\nexport const NoResultText = styled.span`\n padding: 0.75rem 1rem;\n display: block;\n font-size: 0.875rem;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.regular.family}, ${props.theme.colours.font.default}`};\n line-height: 1.5;\n word-break: break-word;\n\n strong {\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: 0.5rem 0;\n display: none;\n }\n`\n","import {connect} from \"react-redux\"\nimport {State} from \"../../ducks\"\nimport {createRecentQuery} from \"../../ducks/recents\"\nimport {search} from \"../../ducks/search\"\n\nexport const mapStateToProps = (state: State) => {\n const {\n autoComplete: {\n searchLinktext,\n enrich: {termTitle},\n },\n } = state.text\n const {products, q} = state.autocomplete\n const {siteUrl, currencyCode} = state.request\n const language = state.data?.language\n const territory = state.data?.territory\n const locale = `${language}-${territory}`\n const ProductsMaxItems = state.features.SearchBar.Autocomplete?.ProductsMaxItems\n const realm = state.data?.realm\n\n if (ProductsMaxItems && products && products.length > 0) {\n Object.keys(ProductsMaxItems).forEach(key => {\n if (products.length <= 4) {\n const defaultMaxItem = 5\n ProductsMaxItems[key] = ProductsMaxItems[key] > defaultMaxItem ? ProductsMaxItems[key] : defaultMaxItem\n return false\n }\n if (ProductsMaxItems[key] > products.length) {\n ProductsMaxItems[key] = products.length\n }\n })\n }\n\n return {\n products,\n term: q,\n siteUrl,\n maxItems: ProductsMaxItems,\n text: {searchLinktext, termTitle},\n currencyCode,\n locale,\n realm,\n }\n}\n\n// stateProps is the result of mapStateToProps\n// {dispatch} is the object resultingfrom mapDispatchToProps\n// ownProps is the container component own props\nexport const mergeProps = (stateProps: any, {dispatch}: any, ownProps: any) => {\n return {\n ...stateProps,\n dispatch,\n ...ownProps,\n handleSuggestionClick: (suggestion: string): void => {\n dispatch(createRecentQuery(suggestion))\n dispatch(search(stateProps.siteUrl, suggestion))\n },\n }\n}\n\nexport default connect(mapStateToProps, null, mergeProps)\n","import styled from \"styled-components\"\nimport Typography from \"@material-ui/core/Typography\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\nimport {ProductsMaxItemsData} from \"../../models/features/searchBar\"\n\ntype UlProps = {\n maxitems: ProductsMaxItemsData\n}\n\nexport const Container = styled.div`\n span {\n font-size: 0.875rem;\n letter-spacing: 0.12px;\n line-height: 1.5;\n display: inline-block;\n\n > strong {\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n text-transform: capitalize;\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding-top: 0.375rem;\n margin-top: 0.125rem;\n }\n }\n`\n\nexport const Div = styled.div`\n display: flex;\n justify-content: flex-end;\n color: ${(props: GlobalStyles) => props.theme.colours.text.hyperlink};\n text-decoration: underline;\n font-size: 0.875rem;\n cursor: pointer;\n\n @media (min-width: ${breakpoints.values.md}px) {\n text-transform: ${(props: GlobalStyles) => props.theme.styles.AutoCompleteButton?.xs.textTransform};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n display: ${(props: GlobalStyles) => props.theme.styles.AutoCompleteButton?.md.display};\n text-decoration: ${(props: GlobalStyles) => props.theme.styles.AutoCompleteButton?.md.textDecoration};\n color: ${(props: GlobalStyles) => props.theme.colours.header.autoCompleteButton.color};\n background-color: ${(props: GlobalStyles) => props.theme.colours.header.autoCompleteButton.backgroundcolor};\n padding: ${(props: GlobalStyles) => props.theme.styles.AutoCompleteButton?.md.padding};\n border-radius: ${(props: GlobalStyles) => props.theme.colours.header.autoCompleteButton.radius};\n text-transform: ${(props: GlobalStyles) => props.theme.styles.AutoCompleteButton?.md.textTransform};\n }\n`\nexport const ButtonContainer = styled.div`\n text-align: ${(props: GlobalStyles) => props.theme.styles.AutoCompleteButton?.md.textAlign};\n`\nexport const List = styled.li`\n && {\n flex-grow: 0;\n padding: 1rem;\n padding-left: 0;\n\n @media (max-width: ${breakpoints.values.sm - 1}px) {\n margin: ${(props: GlobalStyles) => props.theme.styles.AutocompleteProducts.List.default.margin};\n transform: ${(props: GlobalStyles) => props.theme.styles.AutocompleteProducts.List.default.transform};\n }\n\n @media (min-width: ${breakpoints.values.sm}px) and (max-width: ${breakpoints.values.md}px) {\n margin: ${(props: GlobalStyles) => props.theme.styles.AutocompleteProducts.List.sm.margin};\n transform: ${(props: GlobalStyles) => props.theme.styles.AutocompleteProducts.List.sm.transform};\n }\n\n &:hover {\n text-decoration: underline;\n }\n\n a {\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n text-decoration: none;\n margin: 0.125rem 0;\n display: inline-block;\n margin: 0;\n height: 0px;\n position: relative;\n background: ${(props: GlobalStyles) => props.theme.colours.utilities.backgroundAccent};\n font-size: 0.875rem;\n letter-spacing: 0.12px;\n line-height: 1.5;\n\n padding-top: ${(props: GlobalStyles) =>\n props.theme.styles.AutocompleteProducts.List.Link.default.paddingTop};\n width: ${(props: GlobalStyles) => props.theme.styles.AutocompleteProducts.List.Link.default.width};\n height: ${(props: GlobalStyles) => props.theme.styles.AutocompleteProducts.List.Link.default.height};\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding-top: ${(props: GlobalStyles) =>\n props.theme.styles.AutocompleteProducts.List.Link.md.paddingTop};\n width: ${(props: GlobalStyles) => props.theme.styles.AutocompleteProducts.List.Link.md.width};\n height: ${(props: GlobalStyles) => props.theme.styles.AutocompleteProducts.List.Link.md.height};\n }\n img {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n height: 100%;\n width: 100%;\n }\n\n &:hover {\n text-decoration: underline;\n padding-left: 0;\n }\n\n h5 {\n align-self: flex-start;\n margin: 0;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n }\n }\n }\n`\n\nconst hideNumberOfItems = maxItems => {\n const total = maxItems + 1\n return `n + ${total}`\n}\nexport const ListContainer = styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n\n display: flex;\n justify-content: ${(props: GlobalStyles) =>\n `${props.theme.styles.AutocompleteProducts.ListContainer.default.justifyContent}`};\n width: 100%;\n overflow-x: scroll;\n &::-webkit-scrollbar {\n display: none;\n }\n\n -ms-overflow-style: none;\n scrollbar-width: none;\n\n @media (min-width: ${breakpoints.values.md}px) {\n overflow-x: initial;\n }\n\n li {\n max-width: ${props =>\n props.theme.styles.AutocompleteProducts.ListContainer.List.default.maxWidth ||\n `calc(1000px / ${props.maxitems.sm})`};\n flex-basis: calc(1000px / (${props => props.maxitems.sm}));\n\n @media (max-width: ${breakpoints.values.sm - 1}px) {\n &:nth-child(${props => hideNumberOfItems(props.maxitems.xs)}) {\n display: none;\n }\n }\n @media (max-width: ${breakpoints.values.md - 1}px) {\n min-width: 125px;\n }\n\n @media (min-width: ${breakpoints.values.sm}px) and (max-width: ${breakpoints.values.md - 1}px) {\n max-width: calc(100% / ${props => props.maxitems.sm});\n flex-basis: calc(100% / ${props => props.maxitems.sm});\n\n &:nth-child(${props => hideNumberOfItems(props.maxitems.sm)}) {\n display: none;\n }\n }\n @media (min-width: ${breakpoints.values.md}px) and (max-width: ${breakpoints.values.lg - 1}px) {\n flex-basis: calc(100% / ${props => props.maxitems.md});\n max-width: ${props =>\n props.theme.styles.AutocompleteProducts.ListContainer.List.md.maxWidth ||\n `calc(100% / ${props.maxitems.md})`};\n margin-right: ${(props: GlobalStyles) =>\n props.theme.styles.AutocompleteProducts.ListContainer.List.md.marginRight};\n\n &:nth-child(${props => hideNumberOfItems(props.maxitems.md)}) {\n display: none;\n }\n }\n @media (min-width: ${breakpoints.values.lg}px) and (max-width: ${breakpoints.values.xl - 1}px) {\n max-width: ${props =>\n props.theme.styles.AutocompleteProducts.ListContainer.List.lg.maxWidth ||\n `calc(100% / ${props.maxitems.lg})`};\n margin-right: ${(props: GlobalStyles) =>\n props.theme.styles.AutocompleteProducts.ListContainer.List.lg.marginRight};\n flex-basis: calc(100% / ${props => props.maxitems.lg});\n\n &:nth-child(${props => hideNumberOfItems(props.maxitems.lg)}) {\n display: none;\n }\n }\n @media (min-width: ${breakpoints.values.xl}px) {\n max-width: ${props =>\n props.theme.styles.AutocompleteProducts.ListContainer.List.xl.maxWidth ||\n `calc(100% / ${props.maxitems.xl})`};\n margin-right: ${(props: GlobalStyles) =>\n props.theme.styles.AutocompleteProducts.ListContainer.List.xl.marginRight};\n flex-basis: calc(100% / ${props => props.maxitems.xl});\n\n &:nth-child(${props => hideNumberOfItems(props.maxitems.xl)}) {\n display: none;\n }\n }\n }\n`\n\nexport const Title = styled(Typography)`\n && {\n white-space: nowrap;\n overflow: hidden;\n text-transform: capitalize;\n text-overflow: ellipsis;\n max-width: 100%;\n margin: 1rem 0 0;\n font-size: ${(props: GlobalStyles) => props.theme.styles.AutocompleteProducts.Title.default.fontSize};\n }\n`\nexport const ProductDetailsContainer = styled.div`\n text-align: ${(props: GlobalStyles) =>\n props.theme.styles.AutocompleteProducts.ProductDetailsContainer.default.textAlign};\n`\n","import {IS_BROWSER} from \"../window\"\n\n/* eslint-disable @typescript-eslint/prefer-string-starts-ends-with */\nexport const configRelativePathURL = (url: string, siteUrl: string): string => {\n if (!url) return \"\"\n const validUrl = `${siteUrl}${url}`\n if (isRelativePath(url)) {\n return IS_BROWSER() && window.location.host.includes(\"account\") ? validUrl : removeHostFromURL(validUrl)\n }\n return url\n}\n\nconst removeHostFromURL = (target: string) => {\n try {\n const Url = new URL(target)\n return `${Url.pathname}${Url.search}${Url.hash}`\n } catch {\n return target\n }\n}\n\nconst isRelativePath = url => url.charAt(0) === \"/\" && url.charAt(1) !== \"/\"\n\nexport default configRelativePathURL\n","/* eslint-disable @typescript-eslint/camelcase */\n\nimport React from \"react\"\nimport {formatTextTestIds, formatPrice} from \"@next/utils\"\nimport Typography from \"@material-ui/core/Typography\"\nimport connect from \"./connect\"\nimport {ListContainer, List, Container, Div, Title, ProductDetailsContainer, ButtonContainer} from \"./components\"\nimport {AutoCompleteProducts} from \"../../models/autocomplete\"\nimport {ProductsMaxItemsData} from \"../../models/features/searchBar\"\nimport urls from \"../../config/urls\"\nimport {\n SEARCH_DATA_GA,\n HEADER_AUTOCOMPLETE_IMAGE_DATA_GA,\n HEADER_AUTOCOMPLETE_SEE_ALL_RESULTS_DATA_GA,\n} from \"../../config/constants\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\nimport {configRelativePathURL} from \"../../utils/configUrlPath\"\n\nconst {\n autoComplete: {\n images: {oldDirectoryName, newDirectoryName},\n },\n} = urls\n\nexport type AutocompleteProductsProps = {\n products: AutoCompleteProducts[]\n term: string | any\n maxItems: ProductsMaxItemsData\n handleSuggestionClick: (suggestion: string) => void\n text: any\n currencyCode: string\n locale: string\n siteUrl: string\n realm: string\n}\n\nexport const AutocompleteProducts = ({\n products,\n term,\n handleSuggestionClick,\n maxItems,\n text,\n siteUrl,\n currencyCode,\n locale,\n realm,\n}: AutocompleteProductsProps) => (\n \n \n {text.termTitle}\n '{term}'\n \n \n {products.map((product: AutoCompleteProducts) => {\n const {url, title, pid, sale_price, thumb_image} = product\n\n const newImagePath = thumb_image.replace(oldDirectoryName, newDirectoryName)\n return (\n \n \n {title}\n \n {title}\n \n {formatPrice(sale_price, sale_price, currencyCode, locale, realm)}\n \n \n \n \n )\n })}\n \n \n handleSuggestionClick(term)}\n data-ga-v1={SEARCH_DATA_GA}\n data-ga-v2={term}\n data-ga-v3={HEADER_AUTOCOMPLETE_SEE_ALL_RESULTS_DATA_GA}\n >\n {text.searchLinktext}\n
\n \n \n)\n\nexport default connect(AutocompleteProducts)\n","import React from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport connect from \"./connect\"\nimport {\n NumFoundContainer,\n HeaderContainer,\n HeaderWrapper,\n Title,\n GridContent,\n GridWrapper,\n TitleContainerStyled,\n ContentContainerStyled,\n} from \"../components\"\nimport {\n AutocompleteProductsGrid,\n AutocompleteContent,\n AutocompleteGrid,\n NoResultText,\n AutocompleteContainer,\n} from \"./component\"\n\nimport Autocomplete from \"../../../../components/Autocomplete\"\nimport AutocompleteProducts from \"../../../../components/AutocompleteProducts\"\nimport {SuggestionItem} from \"../../../../models/autocomplete\"\n\nexport type AutoCompleteProps = {\n isLoading: boolean\n isNoResults: boolean\n getAutoCompleteThunk: (suggestion: string) => void\n numFound: number\n suggestions: SuggestionItem[] | null\n typedCharacters: string | number\n text: any\n}\n\nexport type NoResultsProps = {\n text: string\n typedCharacters: string | number\n}\n\nconst Header = ({text}: any) => (\n \n \n \n \n {text.headerText}\n \n \n \n \n)\n\nexport const NoResults = ({text, typedCharacters}: NoResultsProps) => (\n \n {text} '{typedCharacters}'\n \n)\n\nexport const Content = ({isLoading, getAutoCompleteThunk, text, isNoResults}: AutoCompleteProps) => {\n const handleFocus = (term: string, suggestion: string) => {\n if (term === suggestion) return\n getAutoCompleteThunk(suggestion)\n }\n return (\n \n \n \n \n \n \n \n \n \n\n \n {isLoading && text.loadingText}\n {!isLoading && }\n \n \n \n \n \n )\n}\n\nexport const EnrichAutoComplete = (props: AutoCompleteProps) => {\n const showContent = props.numFound > 0 && props.suggestions && props.suggestions.length > 0\n return (\n \n {showContent ? (\n <>\n
\n \n \n ) : (\n <>\n {props.isNoResults && (\n <>\n
\n \n \n )}\n \n )}\n \n )\n}\n\nexport default connect(EnrichAutoComplete)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\n// todo: template-tech-debt\nexport const RecentSearchContent = styled.div`\n > ul {\n background: white;\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n flex: 0 0 auto;\n justify-content: flex-start;\n margin: 0;\n padding: 0;\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n\n @media (min-width: ${breakpoints.values.sm}px) {\n flex-direction: ${(props: GlobalStyles) =>\n props.theme.styles.SearchBar.RecentSearches.RecentSearchContent.sm.flexDirection};\n }\n\n li {\n flex: 0 0 auto;\n\n @media (min-width: ${breakpoints.values.sm}px) {\n flex-basis: calc(100% / 2);\n }\n @media (min-width: ${breakpoints.values.md}px) {\n flex-basis: calc(100% / 3);\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n flex-basis: calc(100% / 4);\n }\n }\n }\n`\n","import {connect} from \"react-redux\"\nimport {State} from \"ducks\"\nimport {deleteRecentQueries} from \"../../../../ducks/recents/index\"\n\nexport const mapStateToProps = (state: State) => {\n const {\n text: {\n recentSearches: {enriched},\n },\n recents: {queryIds},\n } = state\n\n const showClearAll = queryIds && queryIds.length > 0\n\n return {\n text: enriched,\n showClearAll,\n }\n}\n\nexport const mapDispatchToProps = (dispatch: any) => ({\n clear: () => {\n dispatch(deleteRecentQueries())\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import React from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport RecentSearches from \"../../../../components/RecentSearches\"\nimport {RecentSearchContent} from \"./components\"\nimport {\n HeaderContainer,\n HeaderWrapper,\n ClearButton,\n Title,\n GridContent,\n GridWrapper,\n ContentContainerStyled,\n TitleContainerStyled,\n} from \"../components\"\nimport connect from \"./connect\"\nimport {\n SEARCH_DATA_GA,\n SEARCH_PREVIOUS_SEARCH_DATA_GA,\n SEARCH_CLEAR_PREVIOUS_SEARCH_DATA_GA,\n CLEAR_ALL,\n} from \"../../../../config/constants\"\n\ntype HeaderProps = {\n clear: () => void\n text: any\n showClearAll: boolean\n}\n\nconst Header = ({clear, text, showClearAll}: HeaderProps) => {\n const {mobileHeader, desktopHeader} = text\n\n return (\n \n \n \n \n <Hidden mdUp implementation=\"css\">\n {mobileHeader}\n </Hidden>\n <Hidden smDown implementation=\"css\">\n {desktopHeader}\n </Hidden>\n \n {showClearAll && (\n \n {CLEAR_ALL}\n \n )}\n \n \n \n )\n}\nconst Content = (props: RecentSearchesProps) => (\n \n
\n \n \n \n \n \n \n \n \n)\n\nexport type RecentSearchesProps = {\n clear: () => void\n text: any\n showClearAll: boolean\n}\n\nexport const EnrichRecentSearches = (props: RecentSearchesProps) => (\n
\n \n
\n)\n\nexport default connect(EnrichRecentSearches)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\n/*\n * Title: Using to style top !important\n * problem: we do not want to use !important but we want a modal and a modal is expected to cover the entire screen\n * in this case however, material UI probably assumes you'll have the entire screen covered and uses inline styles\n * to define this behaviour. But here the modal as it is the case of next, partially exposes the header area hence it\n * does not fully cover the entire screen.\n * Solution: for now we have to use !important\n * Refs:\n * https://github.com/mui-org/material-ui/issues/16441\n * https://github.com/mui-org/material-ui/issues/16442\n */\n\nexport const Wrapper = styled.div`\n & > div {\n transition: opacity 0.2s ease;\n animation-delay: 250ms;\n\n & > div:first-child {\n position: fixed;\n top: 0;\n background: rgba(0, 0, 0, 0.9);\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n top: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.md.height} !important;\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n top: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.lg.height} !important;\n }\n }\n`\n","import React from \"react\"\nimport {Wrapper} from \"./component\"\n\nimport Modal from \"../../../../components/Modal\"\n\nexport type ModalProps = {\n open: boolean\n closeText: string\n handleClose: () => void\n children: JSX.Element\n hideBackdrop: boolean | null\n}\nconst EnrichModal = ({open, handleClose, children, closeText, hideBackdrop}: ModalProps) => (\n \n \n <>\n {children}\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role */}\n
\n \n \n \n)\n\nexport default EnrichModal\n","import React from \"react\"\nimport connect from \"./connect\"\n\nimport SimpleAutoComplete from \"./simple/AutoComplete\"\nimport SimpleRecentSearches from \"./simple/RecentSearches\"\nimport SimpleModal from \"./simple/Modal\"\n\nimport EnrichedAutoComplete from \"./enriched/AutoComplete\"\nimport EnrichedRecentSearches from \"./enriched/RecentSearches\"\nimport EnrichedModal from \"./enriched/Modal\"\n\nimport {SupportedFeatures} from \"../../models/features\"\nimport {SupportedSearchBar} from \"../../models/features/searchBar\"\n\nexport const GetAutoCompleteComponent = ({features: {SearchBar}}: SupportedFeatures) => {\n switch (SearchBar.Value) {\n case SupportedSearchBar.SimpleSearch:\n return \n case SupportedSearchBar.EnrichSearch:\n return \n default:\n return \n }\n}\nexport const GetRecentSearchesComponent = ({features: {SearchBar}}: SupportedFeatures) => {\n switch (SearchBar.Value) {\n case SupportedSearchBar.SimpleSearch:\n return \n case SupportedSearchBar.EnrichSearch:\n return \n default:\n return \n }\n}\n\ninterface ModalComponentProps extends SupportedFeatures {\n open: boolean\n closeText: string\n handleClose: () => void\n children: JSX.Element\n hideBackdrop: boolean | null\n}\n\nexport const GetModalComponent = ({\n features: {SearchBar},\n open,\n handleClose,\n children,\n closeText,\n hideBackdrop,\n}: ModalComponentProps) => {\n switch (SearchBar.Value) {\n case SupportedSearchBar.SimpleSearch:\n return (\n \n {children}\n \n )\n case SupportedSearchBar.EnrichSearch:\n return (\n \n {children}\n \n )\n default:\n return
Default
\n }\n}\n\nexport const AutoCompleteComponent = connect(GetAutoCompleteComponent)\nexport const RecentSearchesComponent = connect(GetRecentSearchesComponent)\nexport const ModalComponent = connect(GetModalComponent)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\n\nimport urls from \"../../config/urls\"\nimport {Anchor, REALM_HEADER} from \"../../config/constants\"\nimport {closeAllPanels, openDrawer} from \"../../ducks/search\"\nimport {SupportedFeatureTypes} from \"../../models/features\"\n\nexport const mapStateToProps = (state: State) => {\n const realm = state.request.headers![REALM_HEADER] as string\n const {variant, showCloseButtonMobileSearch} = state.settings\n const anchor: Anchor = state.textAlignment.toLowerCase() === \"rtl\" ? \"left\" : \"right\"\n const {\n searchBox: {closeButton, smallPlaceholder, bigPlaceholder},\n drawer,\n } = state.text\n const {numFound, suggestions} = state.autocomplete\n const isNoResults = suggestions && suggestions.length === 0 && numFound === 0\n const autocompleteFeature = state.features.SearchBar.Autocomplete\n const isAutocompleteEnabled = autocompleteFeature ? autocompleteFeature.Value : true\n const showAutoComplete = isAutocompleteEnabled && state.search.showAutocomplete\n return {\n checkRecentSearch: state.recents.queryIds.length > 0,\n showAutoComplete,\n showRecentSearch: state.search.showRecentSearch,\n iconUrl: urls.searchBox.searchIconUrl(realm, variant),\n anchor,\n searchBarType: state.features[SupportedFeatureTypes.SearchBar].Value,\n typedCharacters: state.search.typedCharacters,\n text: {closeButton, smallPlaceholder, drawer, bigPlaceholder},\n isNoResults,\n showCloseButton: showCloseButtonMobileSearch,\n }\n}\n\nexport const mapDispatchToProps = (dispatch: any) => ({\n handleClose: () => dispatch(closeAllPanels()),\n openDrawer: () => dispatch(openDrawer()),\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import styled from \"styled-components\"\nimport {Button as MUIButton} from \"@material-ui/core\"\nimport {GlobalStyles} from \"models/globalStyles\"\nimport {RealmStyles} from \"models/styles\"\nimport {ThemeColor} from \"@next/themes\"\nimport {SupportedSearchBar} from \"../../models/features/searchBar\"\n\ntype BigScreenContainerProps = {\n theme: {\n styles: RealmStyles\n colours: ThemeColor\n }\n open: boolean\n searchbartype: string\n}\n\nexport const BigScreenContainer = styled.div`\n > div {\n border-bottom-left-radius: ${(props: BigScreenContainerProps) =>\n props.searchbartype === SupportedSearchBar.SimpleSearch && props.open\n ? \"0\"\n : props.theme.colours.form.input.radius};\n border-bottom-right-radius: ${(props: BigScreenContainerProps) =>\n props.searchbartype === SupportedSearchBar.SimpleSearch && props.open\n ? \"0\"\n : props.theme.colours.form.input.radius};\n }\n`\nexport const IconContainer = styled.div`\n padding: ${(props: GlobalStyles) => props.theme.styles.Search.IconContainer.default.padding};\n display: flex;\n cursor: pointer;\n img {\n width: ${(props: GlobalStyles) => props.theme.styles.Search.IconContainer.default.width};\n height: ${(props: GlobalStyles) => props.theme.styles.Search.IconContainer.default.height};\n }\n`\n\nexport const SearchArea = styled.div`\n display: flex;\n min-height: ${(props: GlobalStyles) => props.theme.styles.Search.SearchArea.default.height};\n`\n\nexport const CloseButton = styled(MUIButton)`\n && {\n width: 4.5rem;\n height: ${(props: GlobalStyles) => props.theme.styles.Search.CloseButton.default.height};\n background: ${(props: GlobalStyles) => props.theme.colours.utilities.backgroundAccent};\n color: ${(props: GlobalStyles) => props.theme.colours.text.hyperlink};\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n border-radius: 0;\n border: 0;\n\n &:hover,\n &:active {\n background: ${(props: GlobalStyles) => props.theme.colours.utilities.backgroundAccent};\n border: 0;\n }\n\n &:focus {\n border: 0;\n border-radius: 0;\n }\n }\n`\n","import React from \"react\"\nimport {ClickAwayListener, Hidden} from \"@material-ui/core\"\nimport SearchBox from \"../SearchBox\"\nimport Drawer from \"../Drawer\"\nimport {AutoCompleteComponent, RecentSearchesComponent, ModalComponent} from \"../../Features/SearchBar\"\nimport connect from \"./connect\"\nimport {CloseButton, SearchArea, IconContainer, BigScreenContainer} from \"./component\"\nimport {Anchor, SEARCH_DATA_GA, OPEN_SEARCH_DATA_GA, CLOSE_SEARCH_DATA_GA} from \"../../config/constants\"\nimport {PublishToModalsClosed} from \"../../events/modalsClosed\"\n\ntype SmallScreensProps = {\n iconUrl: string\n close: () => void\n openDrawer: () => void\n showAutoComplete: boolean\n anchor: Anchor\n open: boolean\n text: any\n showCloseButton: boolean\n}\n\nconst SmallScreens = ({\n anchor,\n iconUrl,\n open,\n close,\n openDrawer,\n showAutoComplete,\n text,\n showCloseButton,\n}: SmallScreensProps) => {\n\n const handleClick = () => {\n PublishToModalsClosed()\n openDrawer()\n }\n\n return (\n
\n \n \"Search\n \n \n \n \n \n {showCloseButton && (\n \n {text.closeButton.text}\n \n )}\n \n {showAutoComplete ? : }\n \n \n
\n )\n}\n\ntype BigScreensProps = {\n open: boolean\n close: () => void\n showAutoComplete: boolean\n searchBarType: string\n bigPlaceholder: string\n isNoResults: boolean | null\n}\n\nconst BigScreens = ({open, close, showAutoComplete, searchBarType, bigPlaceholder, isNoResults}: BigScreensProps) => {\n return (\n \n \n \n \n {showAutoComplete ? : }\n \n \n \n )\n}\n\nexport type SearchProps = {\n handleClose: () => void\n openDrawer: () => void\n showAutoComplete: boolean\n showRecentSearch: boolean\n iconUrl: string\n anchor: Anchor\n searchBarType: string\n checkRecentSearch: boolean\n text: any\n isNoResults: boolean | null\n showCloseButton: boolean\n}\n\nexport const Search = ({\n iconUrl,\n handleClose,\n openDrawer,\n showAutoComplete,\n showRecentSearch,\n anchor,\n searchBarType,\n checkRecentSearch,\n text,\n isNoResults,\n showCloseButton,\n}: SearchProps) => {\n const showDrawer: boolean = showAutoComplete || showRecentSearch\n const showPanelBigScreen = (showRecentSearch && checkRecentSearch) || showAutoComplete\n return (\n \n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nexport default connect(Search)\n","import React, { useState, useEffect } from 'react';\nimport { Popper as Popper$1, ClickAwayListener } from '@material-ui/core';\nimport { FadeInAnimation } from '@next/animations';\nimport styled from 'styled-components';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n\nvar Popper = styled(Popper$1).withConfig({\n displayName: \"tooltip-Popper\",\n componentId: \"sc-5zcwyh\"\n})(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"&&{margin:\", \";display:flex;justify-content:center;z-index:3;@media only screen and (device-width: 414px)and (device-height: 896px)and (-webkit-device-pixel-ratio: 2)and (orientation: landscape){top:3.125rem;}}\"], [\"\", \"\"])), function (props) {\n var _a, _b;\n\n if ((_a = props.theme.styles.tooltip) === null || _a === void 0 ? void 0 : _a.margin) {\n return (_b = props.theme.styles.tooltip) === null || _b === void 0 ? void 0 : _b.margin;\n }\n\n return \"1.5rem 0 0 0\";\n});\nvar Arrow = styled.div.withConfig({\n displayName: \"tooltip-Arrow\",\n componentId: \"sc-142914n\"\n})(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"top:\", \";width:4.75rem;height:1.125rem;margin-top:-1.0625rem;position:absolute;font-size:1.125rem;&&:before{border:\", \";border-bottom:none;\", \";width:\", \";height:\", \";margin:auto;content:\\\"\\\";display:block;background:\", \";transform:rotate(-45deg);-webkit-transform:rotate(-45deg);}\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\"])), function (props) {\n var _a, _b;\n\n return ((_b = (_a = props.theme.styles.tooltip) === null || _a === void 0 ? void 0 : _a.arrow) === null || _b === void 0 ? void 0 : _b.positionTop) || \"0.375rem\";\n}, function (props) {\n return props.theme.colours.popover.border;\n}, function (props) {\n return props.theme.direction === \"ltr\" ? \"border-left: none\" : \"border-right: none\";\n}, function (props) {\n var _a, _b;\n\n return ((_b = (_a = props.theme.styles.tooltip) === null || _a === void 0 ? void 0 : _a.arrow) === null || _b === void 0 ? void 0 : _b.width) || \"1.375rem\";\n}, function (props) {\n var _a, _b;\n\n return ((_b = (_a = props.theme.styles.tooltip) === null || _a === void 0 ? void 0 : _a.arrow) === null || _b === void 0 ? void 0 : _b.width) || \"1.375rem\";\n}, function (props) {\n return props.theme.colours.popover.backgroundColour || \"white\";\n});\nvar templateObject_1, templateObject_2;\nvar timerId = 0;\n\nvar ToolTip = function ToolTip(_a) {\n var open = _a.open,\n anchorEl = _a.anchorEl,\n children = _a.children,\n handleClose = _a.handleClose,\n _b = _a.timeout,\n timeout = _b === void 0 ? undefined : _b,\n _c = _a.animationTimeout,\n animationTimeout = _c === void 0 ? 350 : _c,\n _d = _a.placement,\n placement = _d === void 0 ? \"bottom\" : _d,\n _e = _a.enableModArrow,\n enableModArrow = _e === void 0 ? false : _e,\n modifiers = _a.modifiers;\n\n var _f = useState(null),\n arrowRef = _f[0],\n setArrow = _f[1];\n\n var setMouseOut = function setMouseOut() {\n if (timeout) {\n clearTimeout(timerId);\n timerId = setTimeout(handleClose, timeout);\n }\n };\n\n useEffect(function () {\n setMouseOut();\n });\n\n var setMouseIn = function setMouseIn() {\n if (timeout) clearTimeout(timerId);\n };\n\n return React.createElement(FadeInAnimation, {\n show: open,\n timeout: animationTimeout\n }, React.createElement(Popper, {\n onMouseLeave: setMouseOut,\n onMouseEnter: setMouseIn,\n open: open,\n anchorEl: anchorEl,\n keepMounted: true,\n disablePortal: true,\n transition: true,\n modifiers: _assign(_assign({}, modifiers), {\n arrow: {\n enabled: enableModArrow,\n element: arrowRef\n }\n }),\n placement: placement\n }, React.createElement(Arrow, {\n ref: enableModArrow ? setArrow : null\n }), React.createElement(ClickAwayListener, {\n onClickAway: handleClose\n }, children)));\n};\n\nexport default ToolTip;","import React from 'react';\nimport { Button as Button$1 } from '@material-ui/core';\nimport styled from 'styled-components';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n\nvar MaterialButton = function MaterialButton(_a) {\n var theme = _a.theme,\n themeType = _a.themeType,\n showOpacity = _a.showOpacity,\n children = _a.children,\n rest = __rest(_a, [\"theme\", \"themeType\", \"showOpacity\", \"children\"]);\n\n return React.createElement(Button$1, _assign({}, rest), children);\n};\n\nvar Button = styled(MaterialButton).withConfig({\n displayName: \"cta-Button\",\n componentId: \"sc-1wrc9rk\"\n})(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"&&{width:100%;height:100%;font-family:\", \";font-size:inherit;font-weight:inherit;letter-spacing:inherit;margin:0;border:\", \";color:\", \";opacity:\", \";border-radius:\", \";background-color:\", \";:hover{background-color:\", \";}:focus{background-color:\", \";}padding:0.5625rem 0.5rem;text-align:center;}span{color:\", \";}\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"])), function (_a) {\n var theme = _a.theme;\n return theme.colours.font.primary.medium.family + \", \" + theme.colours.font.default;\n}, function (_a) {\n var theme = _a.theme,\n themeType = _a.themeType;\n return theme.colours.form[\"button\" + themeType].border;\n}, function (_a) {\n var showOpacity = _a.showOpacity,\n theme = _a.theme,\n themeType = _a.themeType;\n return showOpacity ? theme.colours.form[\"button\" + themeType].color : \"black\";\n}, function (_a) {\n var showOpacity = _a.showOpacity,\n theme = _a.theme,\n themeType = _a.themeType;\n return showOpacity ? theme.colours.form[\"button\" + themeType].opacity : 1;\n}, function (_a) {\n var theme = _a.theme,\n themeType = _a.themeType;\n return theme.colours.form[\"button\" + themeType].radius;\n}, function (_a) {\n var theme = _a.theme,\n themeType = _a.themeType;\n return theme.colours.form[\"button\" + themeType].background;\n}, function (_a) {\n var theme = _a.theme,\n themeType = _a.themeType;\n return theme.colours.form[\"button\" + themeType].background;\n}, function (_a) {\n var theme = _a.theme,\n themeType = _a.themeType;\n return theme.colours.form[\"button\" + themeType].background;\n}, function (_a) {\n var theme = _a.theme,\n themeType = _a.themeType;\n return theme.colours.form[\"button\" + themeType].color;\n});\nvar templateObject_1;\n\nvar CTA = function CTA(_a) {\n var enable = _a.enable,\n url = _a.url,\n text = _a.text,\n themeType = _a.themeType,\n onClick = _a.onClick,\n testId = _a.testId,\n dataGaV1 = _a.dataGaV1,\n dataGaV2 = _a.dataGaV2,\n dataGaV3 = _a.dataGaV3,\n rel = _a.rel;\n return React.createElement(Button, {\n href: url,\n onClick: onClick,\n disabled: !enable,\n showOpacity: !enable,\n themeType: themeType,\n disableRipple: true,\n \"data-testid\": testId,\n \"data-ga-v1\": dataGaV1,\n \"data-ga-v2\": dataGaV2,\n \"data-ga-v3\": dataGaV3,\n rel: rel\n }, text);\n};\n\nexport default CTA;\nexport { CTA };","import {connect} from \"react-redux\"\nimport {replaceText} from \"@next/utils\"\nimport {formatCdnPathWithVariant} from \"../../utils/getCdnUrl\"\nimport {SupportedRegionTypes} from \"../../models/regions\"\nimport {SUPPORTED_MY_ACCOUNT_TYPES} from \"../../config/constants\"\nimport urls from \"../../config/urls\"\nimport {State} from \"../../ducks\"\nimport {updateUserStatus} from \"../../ducks/user\"\n\nexport const mapStateToProps = (state: State) => {\n const {\n user,\n data,\n request: {siteUrl},\n text: {myAccount},\n settings,\n } = state\n\n const realm = data?.realm as string\n const isLoggedIn = user.loggedIn\n const {firstName, userUpdated} = user\n const {variant} = settings\n\n const quickLinks = data?.regions\n ?.filter(region => region.type === SupportedRegionTypes.QuickLinks)[0]\n ?.elements?.filter(link => link.type === \"MyAccount\")[0].elements\n\n const reducedState: any = quickLinks?.reduce((acc, next) => {\n if (next.type === SUPPORTED_MY_ACCOUNT_TYPES.loggedIn) {\n return {\n ...acc,\n loggedIn: {\n ...next,\n text: replaceText(next.text as string, firstName, //),\n tooltip: replaceText(next.tooltip as string, firstName, //),\n },\n }\n }\n if (next.type === SUPPORTED_MY_ACCOUNT_TYPES.loggedOut) {\n return {...acc, loggedOut: {...next, text: next.text}, tooltip: \"\"}\n }\n return acc\n }, {})\n\n const result = isLoggedIn ? reducedState.loggedIn : reducedState.loggedOut\n const loggedInMyAccountText = userUpdated ? reducedState.loggedIn.text : \"\"\n const loggedOutMyAccountText = userUpdated ? reducedState.loggedOut.text : \"\"\n const myAccountText = loggedInMyAccountText || loggedOutMyAccountText\n\n return {\n accessibilityText: result.accessibilityText,\n isLoggedIn: state.user.loggedIn,\n narrowModeIcon: formatCdnPathWithVariant(result.narrowModeIcon, realm, variant),\n signoutUrl: `${siteUrl}${urls.myAccount.signoutUrl}`,\n tooltipIcon: urls.myAccount.tooltipIconUrl(realm, variant),\n url: `${siteUrl}${urls.myAccount.loginUrl}`,\n myAccountText,\n wideModeIcon: formatCdnPathWithVariant(result.wideModeIcon, realm, variant),\n firstName,\n userUpdated,\n text: myAccount,\n }\n}\n\nexport const mergeProps = (state: any, {dispatch}: any, ownProps) => ({\n ...state,\n ...ownProps,\n updateShoppingBag: (data: any) => {\n dispatch(updateUserStatus(data))\n },\n})\n\nexport default connect(mapStateToProps, null as any, mergeProps)\n","import styled from \"styled-components\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\ntype Props = {\n alignTop?: boolean\n}\n\nexport const Anchor = styled.a`\n color: inherit;\n font-size: 12px;\n text-decoration: none;\n text-transform: capitalize;\n display: flex;\n align-items: ${({alignTop}: Props) => (alignTop ? \"start\" : \"center\")};\n letter-spacing: 0.0075rem;\n &:hover {\n text-decoration: underline;\n }\n flex-direction: ${(props: GlobalStyles) => props.theme.styles.Link.default.flexDirection};\n`\n","import React, {ReactNode} from \"react\"\nimport {Anchor} from \"./component\"\n\nexport type LinkProps = {\n href: string\n children: ReactNode\n dataGaV1?: string\n dataGaV2?: string\n rel?: string\n dataTestId?: string\n alignTop?: boolean\n}\n\nconst Link = ({href, children, dataGaV1, dataGaV2, rel, dataTestId, alignTop}: LinkProps) => {\n const linkProps = {\n href,\n alignTop,\n \"data-ga-v1\": dataGaV1,\n \"data-ga-v2\": dataGaV2,\n }\n\n // eslint-disable-next-line dot-notation\n if (rel) linkProps[\"rel\"] = rel\n\n return (\n \n {children}\n \n )\n}\n\nexport default Link\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const WideViewIconContainer = styled.div<{showContainer: boolean}>`\n width: ${(props: GlobalStyles) => props.theme.styles.MyAccount.WideViewIconContainer.default.width};\n margin: ${(props: GlobalStyles) => props.theme.styles.MyAccount.WideViewIconContainer.default.margin};\n\n a {\n display: flex;\n justify-content: space-between;\n padding: ${(props: GlobalStyles) => props.theme.styles.MyAccount.WideViewIconContainer.link.default.padding};\n }\n\n a:active,\n a:hover,\n a:focus,\n a:active,\n a:hover,\n a:focus,\n a:visited,\n a {\n color: ${props => props.theme.colours.text.navigation.link};\n }\n`\n\nexport const NarrowViewIconContainer = styled.div`\n margin: ${(props: GlobalStyles) => props.theme.styles.MyAccount.NarrowViewIconContainer.default.margin};\n\n @media (min-width: ${breakpoints.values.md}px) {\n margin: ${(props: GlobalStyles) => props.theme.styles.MyAccount.NarrowViewIconContainer.md.margin};\n }\n\n a {\n padding: ${(props: GlobalStyles) => props.theme.styles.MyAccount.NarrowViewIconContainer.default.padding};\n }\n`\n\nexport const Img = styled.img`\n width: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Img.default.width};\n height: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Img.default.height};\n\n @media (min-width: ${breakpoints.values.lg}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Img.lg.width};\n height: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Img.lg.height};\n margin: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Img.lg.margin};\n }\n\n @media (max-width: ${breakpoints.values.md - 1}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Img.md.width};\n height: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Img.md.height};\n }\n`\n\nexport const Username = styled.span`\n margin: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Username.default.margin};\n && {\n text-overflow: ellipsis;\n max-width: 105px;\n width: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Username.default.width};\n text-align: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Username.default.textAlign};\n white-space: nowrap;\n overflow: hidden;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.light.family}, ${props.theme.colours.font.default}`};\n color: ${(props: GlobalStyles) => props.theme.styles.MyAccount.default.color};\n\n @media (min-width: ${breakpoints.values.xl}px) {\n white-space: unset;\n }\n }\n`\n\nexport const ViewAccountSummaryLink = styled.div`\n padding: 0.8rem 0.75rem 0 0.75rem;\n display: flex;\n text-decoration: none;\n cursor: pointer;\n align-items: center;\n justify-content: center;\n && a,\n && a:hover {\n position: initial;\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n text-decoration: none;\n font-size: inherit;\n }\n &&& a:hover {\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n }\n\n :hover {\n text-decoration: underline;\n }\n`\n\nexport const Divider = styled.hr`\n margin: ${(props: GlobalStyles) => props.theme.styles.MyAccount.Divider.default.margin};\n`\n\nexport const SignoutButton = styled.div`\n height: 2.25rem;\n font-size: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontSize};\n font-weight: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontWeight};\n && a span {\n font-weight: ${(props: GlobalStyles) => props.theme.styles.MyAccount.CTA.default.fontWeight};\n }\n`\nexport const ToolTipContent = styled.div`\n font-size: ${(props: GlobalStyles) => props.theme.colours.popover.fontSize};\n width: 16rem;\n height: 8.625rem;\n border: ${(props: GlobalStyles) => props.theme.colours.popover.border};\n background: ${(props: GlobalStyles) => props.theme.colours.header.myAccount.background};\n border-radius: ${(props: GlobalStyles) => props.theme.colours.popover.radius};\n text-transform: capitalize;\n text-align: center;\n box-shadow: ${(props: GlobalStyles) => props.theme.colours.popover.boxShadow};\n\n @media only screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape) {\n position: absolute;\n top: -3.75rem;\n }\n\n hr {\n border: ${(props: GlobalStyles) => props.theme.colours.utilities.divider};\n }\n`\n\nexport const ToolTipTitle = styled.span`\n color: #000000;\n line-height: 1.5;\n letter-spacing: 0.12px;\n padding-left: 0.6rem;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n`\n\nexport const ToolTipUsername = styled.div`\n height: 2.5rem;\n color: #000000;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 0.5rem;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.regular.family}, ${props.theme.colours.font.default}`};\n`\n\nexport const TooltipHeader = styled.div`\n height: 1.5rem;\n`\n\nexport const TooltipFooter = styled.div`\n padding: 0.75rem;\n height: calc(100% - 1.5rem);\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n`\nexport const Wrapper = styled.div`\n display: flex;\n align-items: center;\n`\n","import React, {useState, useEffect} from \"react\"\nimport ToolTip from \"@next/tooltip\"\nimport {CTA} from \"@next/cta\"\nimport {Hidden} from \"@material-ui/core\"\nimport {useShoppingBagGetCallbackObservable, useModalsCloseObservable} from \"@next/eventservice\"\nimport {PublishToModalsClosed} from \"../../events/modalsClosed\"\nimport Icon from \"../Icon\"\nimport connect from \"./connect\"\nimport Link from \"../Link\"\nimport {\n SignoutButton,\n WideViewIconContainer,\n ViewAccountSummaryLink,\n ToolTipContent,\n Username,\n Divider,\n NarrowViewIconContainer,\n ToolTipTitle,\n ToolTipUsername,\n TooltipFooter,\n TooltipHeader,\n Img,\n Wrapper\n} from \"./component\"\nimport {HEADER_NAV_BAR_QUICK_LINKS, HEADER_NAV_BAR_QUICK_LINKS_MY_ACCOUNT, NO_FOLLOW} from \"../../config/constants\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\n\nexport type MyAccountProps = {\n accessibilityText: string\n isLoggedIn: boolean\n myAccountText: string\n narrowModeIcon: string\n wideModeIcon: string\n tooltipIcon: string\n url: string\n signoutUrl: string\n updateShoppingBag: (data: any) => void\n userUpdated: boolean\n text: any\n firstName: string\n hideText: boolean\n}\n\nexport const MyAccount = ({\n hideText,\n accessibilityText,\n myAccountText,\n isLoggedIn,\n url,\n signoutUrl,\n narrowModeIcon,\n tooltipIcon,\n wideModeIcon,\n updateShoppingBag,\n userUpdated,\n text,\n firstName,\n}: MyAccountProps) => {\n useShoppingBagGetCallbackObservable(data => {\n return updateShoppingBag(data)\n })\n\n const [anchorEl, setAnchorEl] = useState(null)\n const [open, setOpen] = useState(false)\n\n const handleClose = event => {\n if (event) event.preventDefault()\n if (event?.type === \"scroll\" && event?.target !== document) return\n setOpen(false)\n }\n\n const handleClick = event => {\n if (!open) PublishToModalsClosed()\n\n setAnchorEl(event.currentTarget)\n event.preventDefault()\n setOpen(!open)\n }\n\n useEffect(() => {\n if (open) window.addEventListener(\"scroll\", handleClose, true)\n else window.removeEventListener(\"scroll\", handleClose)\n }, [open])\n\n useModalsCloseObservable(() => handleClose(null))\n\n const onClick = isLoggedIn ? {onClick: handleClick} : {onClick: removeDeptFromSessionStorage}\n\n return (\n \n \n \n \n \n \n\n \n \n \n \n\n {isLoggedIn && (\n \n )}\n \n \n )\n}\n\nconst MyAccountLink = ({src, accessibilityText, url, dataTestId, hideText = false, myAccountText = \"\"}) => {\n return (\n \n {accessibilityText}\n {!hideText && {myAccountText} }\n \n )\n}\n\nconst LoggedInTooltip = ({\n open,\n anchorEl,\n handleClose,\n tooltipIcon,\n accessibilityText,\n url,\n text,\n firstName,\n signoutUrl,\n}) => {\n return (\n \n \n \n \n \n \n \n {text.title}\n \n \n \n \n \n \n \n {`${text.notText} ${firstName}?`}\n \n \n \n \n \n \n \n )\n}\n\nexport default connect(MyAccount)\n","import styled from \"styled-components\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const Li = styled.li`\n list-style: none;\n margin: ${(props: GlobalStyles) => props.theme.styles.Quicklink.default.margin};\n\n a {\n display: flex;\n padding: ${(props: GlobalStyles) => props.theme.styles.Quicklink.link.default.padding};\n }\n\n a:active,\n a:hover,\n a:focus,\n a:active,\n a:hover,\n a:focus,\n a:visited,\n a {\n color: ${props => props.theme.colours.text.navigation.link};\n }\n`\n","import {HEADER_NAV_BAR_QUICK_LINKS, HEADER_NAV_BAR_HELP, HEADER_NAV_BAR_STORE_LOCATOR} from \"../../config/constants\"\n\nexport const buildGaTags = (text: string | null) => {\n let headerQuicklink\n if (text) {\n switch (text.trim().toUpperCase()) {\n case HEADER_NAV_BAR_HELP.toUpperCase():\n headerQuicklink = HEADER_NAV_BAR_HELP\n break\n case HEADER_NAV_BAR_STORE_LOCATOR.toUpperCase():\n headerQuicklink = HEADER_NAV_BAR_STORE_LOCATOR\n break\n default:\n headerQuicklink = null\n }\n }\n return headerQuicklink\n ? {\n dataGaV1: HEADER_NAV_BAR_QUICK_LINKS,\n dataGaV2: headerQuicklink,\n }\n : {\n dataGaV1: undefined,\n dataGaV2: undefined,\n }\n}\n","import React from \"react\"\nimport {NO_FOLLOW} from \"../../../../config/constants\"\nimport Link from \"../../../Link\"\nimport {Li} from \"./component\"\nimport {removeDeptFromSessionStorage} from \"../../../../utils/removeDeptFromSessionStorage\"\nimport {buildGaTags} from \"../../../../utils/dataGA\"\nimport Icon from \"../../../Icon\"\n\nexport type QuickLinkProps = {\n text: string | null\n icon: string | null\n url: string\n accessibilityText: string\n}\n\nconst DefaultQuickLink = ({text, url, icon, accessibilityText}: QuickLinkProps) => {\n return (\n
  • \n {/* eslint-disable-next-line */}\n
    \n \n {text && {text}}\n {icon && }\n \n
    \n
  • \n )\n}\n\nexport default DefaultQuickLink\n","import styled from \"styled-components\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const Li = styled.li`\n list-style: none;\n margin: ${(props: GlobalStyles) => props.theme.styles.Quicklink.default.margin};\n\n a {\n display: flex;\n padding: ${(props: GlobalStyles) => props.theme.styles.Quicklink.link.default.padding};\n }\n\n a:active,\n a:hover,\n a:focus,\n a:active,\n a:hover,\n a:focus,\n a:visited,\n a {\n color: ${props => props.theme.colours.text.navigation.link};\n }\n`\n\nexport const Img = styled.img`\n width: 14px;\n height: 20px;\n`\n","import React from \"react\"\nimport {NO_FOLLOW} from \"../../../../config/constants\"\nimport {Img, Li} from \"./component\"\nimport {removeDeptFromSessionStorage} from \"../../../../utils/removeDeptFromSessionStorage\"\nimport {buildGaTags} from \"../../../../utils/dataGA\"\nimport Link from \"../../../Link\"\n\nexport type QuickLinkProps = {\n text: string | null\n icon: string | null\n url: string\n accessibilityText: string\n}\n\nconst BurgerMenuQuickLink = ({text, url, icon, accessibilityText}: QuickLinkProps) => {\n return (\n
  • \n {/* eslint-disable-next-line */}\n
    \n \n {icon && {accessibilityText}}\n \n
    \n
  • \n )\n}\n\nexport default BurgerMenuQuickLink\n","import {connect} from \"react-redux\"\nimport {State} from \"../../ducks\"\nimport {DEFAULT_TEMPLATE, BURGER_MENU_TEMPLATE} from \"../../config/constants\"\nimport DefaultQuickLink from \"./templates/default-template\"\nimport BurgerMenuQuickLink from \"./templates/burgermenu-template\"\n\nconst components = {\n [DEFAULT_TEMPLATE]: DefaultQuickLink,\n [BURGER_MENU_TEMPLATE]: BurgerMenuQuickLink,\n}\n\nexport const getComponent = (template: string) => components[template] ?? components[DEFAULT_TEMPLATE]\n\nexport const mapStateToProps = (state: State) => {\n const {template} = state\n const componentName = getComponent(template)\n return {\n componentName,\n }\n}\n\nexport default connect(mapStateToProps)\n","import React from \"react\"\nimport connect from \"./connect\"\n\nexport type QuickLinkProps = {\n text: string | null\n icon: string | null\n url: string\n accessibilityText: string\n componentName: any\n}\n\nconst QuickLink = ({text, url, icon, accessibilityText, componentName}: QuickLinkProps) => {\n const ComponentName = componentName\n return \n}\n\nexport default connect(QuickLink)\n","import styled from \"styled-components\"\n\nexport const List = styled.ul`\n align-items: center;\n display: flex;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n`\n\n","import React from \"react\"\nimport QuickLink, {QuickLinkProps} from \"../QuickLink\"\nimport {List} from \"./component\"\n\nexport interface QuickLinksProps {\n quickLinks: QuickLinkProps[]\n}\n\nconst QuickLinks = ({quickLinks}: QuickLinksProps) => (\n \n {quickLinks.map(quickLink => (\n \n ))}\n \n)\n\nexport default QuickLinks\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport const Container = styled.div`\n @media (min-width: ${breakpoints.values.md}px) {\n align-items: center;\n }\n`\n\nexport const Wrapper = styled.div`\n display: flex;\n align-items: center;\n`\n","import React from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport QuickLinks from \"../QuickLinks\"\nimport {Container, Wrapper} from \"./component\"\nimport connect from \"./connect\"\nimport {QuickLinkProps} from \"../QuickLink\"\n\nexport type QuickLinksContainerProps = {\n quickLinks: QuickLinkProps[] | undefined\n hiddenProps?: any | {}\n}\n\nexport const QuickLinksContainer = ({hiddenProps, quickLinks}: QuickLinksContainerProps) => {\n if (quickLinks && quickLinks.length === 0) return null\n return (\n \n \n \n
    \n \n
    \n
    \n
    \n
    \n )\n}\n\nexport default connect(QuickLinksContainer)\n","import {connect} from \"react-redux\"\nimport {QuickLinkProps} from \"../QuickLink\"\nimport {State} from \"../../ducks\"\nimport {SupportedRegionTypes} from \"../../models/regions\"\nimport {formatCdnPathWithVariant} from \"../../utils/getCdnUrl\"\nimport {REALM_HEADER} from \"../../config/constants\"\n\nexport const mapStateToProps = (state: State) => {\n const {siteUrl} = state.request\n const {variant} = state.settings\n const realm = state.request.headers![REALM_HEADER] as string\n const quickLinkObject = state.data?.regions.find(region => region.type === SupportedRegionTypes.QuickLinks)\n const quickLinks = quickLinkObject?.elements\n .filter(link => link.type === \"link\")\n .map(({text, url, accessibilityText, icon}) => {\n const iconUrl = icon ? formatCdnPathWithVariant(icon, realm, variant) : null\n return {\n text,\n url: `${siteUrl}${url}`,\n accessibilityText: accessibilityText ?? \"\",\n icon: iconUrl,\n } as QuickLinkProps\n })\n\n return {\n quickLinks,\n }\n}\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const Wrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n align-content: center;\n margin: ${(props: GlobalStyles) => props.theme.styles.Favourites.Wrapper.default.margin};\n\n a {\n display: flex;\n padding: ${(props: GlobalStyles) => props.theme.styles.Favourites.link.default.padding};\n }\n\n img {\n width: ${(props: GlobalStyles) => props.theme.styles.Favourites.img.default.width};\n height: ${(props: GlobalStyles) => props.theme.styles.Favourites.img.default.height};\n \n @media (min-width: ${breakpoints.values.md}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.Favourites.img.md.width};\n height: ${(props: GlobalStyles) => props.theme.styles.Favourites.img.md.height};\n }\n }\n`\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport React from \"react\"\nimport {\n useFavouritesGetCallbackObservable,\n useFavouritesAddCallbackObservable,\n useFavouritesRemoveCallbackObservable,\n} from \"@next/eventservice\"\nimport {Hidden} from \"@material-ui/core\"\nimport {HEADER_NAV_BAR_QUICK_LINKS, HEADER_NAV_BAR_QUICK_LINKS_FAVOURITES, NO_FOLLOW} from \"../../config/constants\"\n\nimport {Wrapper} from \"./components\"\nimport connect from \"./connect\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\n\ntype FavouritesProps = {\n iconUrl: string\n altText: string\n enableFavourites: boolean\n updateFavourites: (data: any) => void\n favouritesUrl: string\n hiddenProps?: any | {}\n}\n\nexport const Favourites = ({\n hiddenProps,\n iconUrl,\n altText,\n enableFavourites,\n updateFavourites,\n favouritesUrl,\n}: FavouritesProps) => {\n if (!enableFavourites) return null\n\n useFavouritesGetCallbackObservable(data => updateFavourites(data))\n useFavouritesAddCallbackObservable(data => updateFavourites(data))\n useFavouritesRemoveCallbackObservable(data => updateFavourites(data))\n\n return (\n \n \n \n {altText}\n \n \n \n )\n}\n\nexport default connect(Favourites)\n","import {connect} from \"react-redux\"\nimport urls from \"../../config/urls\"\nimport State from \"../../ducks/state\"\nimport {REALM_HEADER} from \"../../config/constants\"\nimport {updateFavouritesInState} from \"../../ducks/favourites\"\n\nexport const mapStateToProps = (state: State) => {\n const {siteUrl} = state.request\n const {variant} = state.settings\n const realm = state.request.headers![REALM_HEADER] as string\n const icon = state.favourites?.hasFavourites\n ? urls.favourites.activeIconUrl(realm, variant)\n : urls.favourites.inactiveIconUrl(realm, variant)\n const enableFavourites = state.favourites?.enableFavourites\n const {\n text: {\n favourites: {altText},\n },\n } = state\n return {\n altText,\n iconUrl: icon,\n enableFavourites,\n favouritesUrl: `${siteUrl}${urls.favourites.url}`,\n }\n}\n\nexport const mergeProps = (state: any, {dispatch}: any, ownProps) => ({\n ...state,\n ...ownProps,\n updateFavourites: (data: any) => {\n dispatch(updateFavouritesInState(data))\n },\n})\n\nexport default connect(mapStateToProps, null as any, mergeProps)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport urls from \"../../config/urls\"\nimport {REALM_HEADER} from \"../../config/constants\"\nimport {updateBag, addEVoucherToBag} from \"../../ducks/shoppingbag\"\n\nexport const mapStateToProps = (state: State) => {\n const realm = state.request.headers![REALM_HEADER] as string\n const {variant} = state.settings\n const {\n text: {\n shoppingBag: {altText},\n },\n } = state\n const {itemCount, loading} = state.shoppingBag\n return {\n altText,\n iconUrl: urls.shoppingBag.iconUrl(realm, variant),\n itemCount,\n isBagLoading: loading,\n shoppingBagUrl: `${state.request.siteUrl}${urls.shoppingBag.url}`,\n }\n}\n\nexport const mergeProps = (state: any, {dispatch}: any, ownProps) => ({\n ...state,\n ...ownProps,\n updateShoppingBag: (data: any) => {\n dispatch(updateBag(data))\n },\n addEVoucherToBag: (data: any) => {\n dispatch(addEVoucherToBag(data))\n },\n})\n\nexport default connect(mapStateToProps, null as any, mergeProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const Container = styled.div`\n margin: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.Container.default.margin};\n @media (min-width: ${breakpoints.values.md}px) {\n margin: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.Container.md.margin};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n margin: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.Container.lg.margin};\n }\n`\n\nexport const ShoppingBagLink = styled.div`\n button,\n a {\n border: 0;\n background: 0;\n position: relative;\n text-decoration: none;\n cursor: pointer;\n padding: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.ShoppingBagLink.link.default.padding};\n display: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.ShoppingBagLink.link.default.display};\n align-items: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.ShoppingBagLink.link.default.alignItems};\n }\n\n img {\n width: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.ShoppingBagLink.img.default.width};\n height: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.ShoppingBagLink.img.default.height};\n margin: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.ShoppingBagLink.img.default.margin};\n\n @media (min-width: ${breakpoints.values.md}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.ShoppingBagLink.img.md?.width};\n height: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.ShoppingBagLink.img.md?.height};\n }\n }\n`\n\n// todo: template-tech-debt\nexport const Label = styled.span`\n justify-content: center;\n display: flex;\n width: 100%;\n position: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.Label.default.position};\n top: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.Label.default.top};\n color: ${(props: GlobalStyles) => props.theme.colours.header.shoppingBag.color};\n margin: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.Label.default.margin};\n font-size: ${(props: GlobalStyles) => props.theme.colours.header.shoppingBag.fontSize};\n font-weight: ${(props: GlobalStyles) => props.theme.colours.header.shoppingBag.fontWeight};\n font-family: ${props =>\n `${props.theme.colours.font.primary[props.theme.styles.ShoppingBag.Label.default.fontType].family}, ${\n props.theme.colours.font.default\n }`};\n\n @media (min-width: ${breakpoints.values.md}px) {\n top: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.Label.md?.top};\n font-size: 0.75rem;\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n top: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.Label.lg?.top};\n }\n`\n\nexport const ToolTipContent = styled.div`\n padding-top: 0.0625rem;\n border: ${(props: GlobalStyles) => props.theme.colours.popover.border};\n background: ${(props: GlobalStyles) => props.theme.colours.header.myAccount.background};\n border-radius: ${(props: GlobalStyles) => props.theme.colours.popover.radius};\n box-shadow: ${(props: GlobalStyles) => props.theme.colours.popover.boxShadow};\n`\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport urls from \"../../config/urls\"\n\nexport const mapStateToProps = (state: State) => {\n const {bag, itemCount} = state.shoppingBag\n\n const {siteUrl} = state.request\n const {\n text: {miniShoppingBag},\n } = state\n return {\n text: miniShoppingBag,\n itemCount,\n bag,\n shoppingBagUrl: `${siteUrl}${urls.shoppingBag.url}`,\n }\n}\n\nexport default connect(mapStateToProps)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport urls from \"../../config/urls\"\n\nexport const mapStateToProps = (state: State) => {\n const {siteUrl} = state.request\n const {\n text: {\n checkout: {text},\n },\n } = state\n return {\n enable: state.shoppingBag.itemCount > 0,\n text,\n url: `${siteUrl}${urls.checkout.url}`,\n }\n}\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const Container = styled.div`\n align-self: center;\n flex: 1 auto;\n font-size: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontSize};\n font-weight: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontWeight};\n\n @media (min-width: ${breakpoints.values.md}px) {\n min-width: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.md.minWidth};\n height: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.md.height};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n min-width: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.lg.minWidth};\n height: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.lg.height};\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n min-width: ${props => props.theme.styles.Checkout.Container.xl.minWidth};\n height: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.xl.height};\n }\n`\n","import React from \"react\"\nimport {CTA} from \"@next/cta\"\nimport connect from \"./connect\"\nimport {Container} from \"./component\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\n\nexport type MiniShoppingBagCheckoutProps = {\n enable: boolean\n text: string\n url: string\n dataGaV1?: string\n dataGaV2?: string\n dataGaV3?: string\n}\n\nexport const MiniShoppingBagCheckout = (props: MiniShoppingBagCheckoutProps) => {\n return (\n \n \n \n )\n}\n\nexport default connect(MiniShoppingBagCheckout)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\n\nexport const mapStateToProps = (state: State) => {\n const {bag} = state.shoppingBag\n const {\n text: {miniShoppingBag},\n } = state\n return {\n text: miniShoppingBag,\n bag,\n }\n}\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const ItemWrapper = styled.div`\n display: flex;\n border-top: ${(props: GlobalStyles) => props.theme.colours.utilities.divider};\n`\n","import styled from \"styled-components\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const Image = styled.img`\n height: ${(props: GlobalStyles) => props.theme.styles.ProductImage.Image.default.height};\n width: ${(props: GlobalStyles) => props.theme.styles.ProductImage.Image.default.width};\n`\n\nexport const ImageWrapper = styled.div`\n padding: 1rem;\n`\n","import React from \"react\"\nimport Link from \"../Link\"\nimport {ImageWrapper, Image} from \"./component\"\n\nexport type ProductImageProps = {\n description: string\n itemImageUrl?: string\n url: string\n itemNumber: string\n}\n\nexport const ProductImage = ({itemImageUrl, url, description, itemNumber}: ProductImageProps) => {\n const img = (\n \n {description}\n \n )\n let imageContainer = img\n if (url !== \"\") {\n imageContainer = (\n \n {img}\n \n )\n }\n\n return imageContainer\n}\n\nexport default ProductImage\n","import styled from \"styled-components\"\nimport {GlobalStyles} from \"models/globalStyles\"\nimport {RealmStyles} from \"models/styles\"\nimport {ThemeColor} from \"@next/themes\"\nimport {IN_STOCK, SOLD_OUT} from \"../../../../config/constants\"\n\ntype customStyles = {\n theme: {\n styles: RealmStyles\n colours: ThemeColor\n }\n status: string\n}\n\nexport const PriceParentWrapper = styled.div`\n white-space: nowrap;\n padding-right: 0.938rem;\n`\n\nexport const StatusWrapper = styled.div<{status: string}>`\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.regular.family}, ${props.theme.colours.font.default}`};\n margin: 0.25rem 0 0 0;\n font-size: 0.875rem;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n color: ${(props: customStyles) => {\n switch (props.status) {\n case IN_STOCK:\n return props.theme.colours.text.success\n case SOLD_OUT:\n return props.theme.colours.text.error\n default:\n return props.theme.colours.text.warning\n }\n }};\n`\n\nexport const Item = styled.p`\n font-size: 12px;\n font-weight: bold;\n text-align: right;\n`\nexport const ProductDetails = styled.div`\n padding: 1rem 0;\n width: 100%;\n\n && > p {\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.regular.family}, ${props.theme.colours.font.default}`};\n color: ${(props: GlobalStyles) => props.theme.colours.text.muted};\n word-break: break-all;\n padding-right: 0.613rem;\n }\n`\nexport const ProductDetailItem = styled.div`\n display: flex;\n justify-content: space-between;\n > h3:first-child {\n word-wrap: break-word;\n max-width: 10.3125rem;\n padding-right: 0.625rem;\n }\n > h3:last-child {\n white-space: nowrap;\n }\n`\n","import styled from \"styled-components\"\nimport {RealmStyles} from \"models/styles\"\nimport {ThemeColor} from \"@next/themes\"\nimport {IN_STOCK, SOLD_OUT} from \"../../../../config/constants\"\nimport {GlobalStyles} from \"../../../../models/globalStyles\"\n\ntype customStyles = {\n theme: {\n styles: RealmStyles\n colours: ThemeColor\n }\n status: string\n}\n\nexport const ProductDetails = styled.div`\n display: grid;\n grid-template-columns: 5.625rem auto;\n width: 100%;\n margin-right: 1rem;\n font-size: 0.75rem;\n\n .mt-5px {\n margin-top: 0.313rem;\n }\n\n .block {\n display: block;\n }\n`\n\nexport const Summary = styled.div`\n width: 10.313rem;\n`\n\nexport const Title = styled.h2`\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n font-size: 0.75rem;\n margin-top: 1rem;\n letter-spacing: 1px;\n`\n\nexport const SearchDescription = styled.div`\n color: ${(props: GlobalStyles) => props.theme.colours.text.muted};\n`\n\nexport const Price = styled.p`\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n text-align: right;\n margin-top: 1rem;\n letter-spacing: 1px;\n`\n\nexport const StatusWrapper = styled.span<{status: string}>`\n overflow-wrap: break-word;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n font-size: 0.75rem;\n text-align: right;\n display: block;\n margin-top: 1.125rem;\n overflow: auto;\n color: ${(props: customStyles) => {\n switch (props.status) {\n case IN_STOCK:\n return \"black\"\n case SOLD_OUT:\n return props.theme.colours.text.error\n default:\n return \"black\"\n }\n }};\n`\nexport const SaleLabel = styled.p`\n font-weight: ${(props: GlobalStyles) => props.theme.colours.font.primary.medium.weight};\n color: #900000;\n text-align: right;\n`\n","import {connect} from \"react-redux\"\nimport {State} from \"../../ducks\"\nimport {DEFAULT_TEMPLATE, BURGER_MENU_TEMPLATE} from \"../../config/constants\"\nimport {MiniShoppingBagDescription} from \"./templates/default-template\"\nimport {BurgerMenuMiniShoppingBagDescription} from \"./templates/burgermenu-template\"\n\nconst components = {\n [DEFAULT_TEMPLATE]: MiniShoppingBagDescription,\n [BURGER_MENU_TEMPLATE]: BurgerMenuMiniShoppingBagDescription,\n}\n\nexport const getComponent = (template: string) => components[template] ?? components[DEFAULT_TEMPLATE]\n\nexport const mapStateToProps = (state: State) => {\n const {saleName} = state.settings\n const {template} = state\n const ComponentName = getComponent(template)\n return {\n ComponentName,\n saleName,\n }\n}\n\nexport default connect(mapStateToProps)\n","import React from \"react\"\n\nimport Typography from \"@material-ui/core/Typography\"\nimport {PriceParentWrapper, ProductDetailItem, ProductDetails, StatusWrapper} from \"./component\"\n\nexport type MiniShoppingBagDescriptionProps = {\n ProductName: string\n Description: string\n AlternativeDescription: string\n SizeDescription: string\n Quantity: string\n StockStatus: string\n StockMessage: string\n ciStoreName: string\n PriceFormatted: string\n text: any\n IsDiscount: boolean\n saleName: string\n}\n\nexport const MiniShoppingBagDescription = ({\n AlternativeDescription,\n Description,\n IsDiscount,\n PriceFormatted,\n SizeDescription,\n Quantity,\n StockMessage,\n StockStatus,\n ciStoreName,\n text,\n saleName,\n}: MiniShoppingBagDescriptionProps) => {\n const {sizeText, qtyText, price} = text\n\n return (\n \n \n \n {AlternativeDescription || Description}\n \n \n \n {PriceFormatted}\n \n {IsDiscount && (\n \n {`${saleName} ${price}`}\n \n )}\n \n \n\n \n {sizeText} {SizeDescription}\n \n\n \n {qtyText} {Quantity}\n \n\n {`${StockMessage} ${ciStoreName}`}\n \n )\n}\n","import React from \"react\"\n\nimport {ProductDetails, Title, Price, SearchDescription, StatusWrapper, Summary, SaleLabel} from \"./component\"\n\nexport type BurgerMenuMiniShoppingBagDescriptionProps = {\n ProductName: string\n PriceFormatted: string\n TPSearchDescription: string\n Description: string\n SizeDescription: string\n Quantity: string\n StockStatus: string\n StockMessage: string\n ciStoreName: string\n IsDiscount: boolean\n text: any\n saleName: string\n}\n\nexport const BurgerMenuMiniShoppingBagDescription = ({\n ProductName,\n PriceFormatted,\n TPSearchDescription,\n Description,\n IsDiscount,\n SizeDescription,\n Quantity,\n StockMessage,\n StockStatus,\n ciStoreName,\n text,\n saleName,\n}: BurgerMenuMiniShoppingBagDescriptionProps) => {\n const {sizeText, qtyText, price} = text\n\n return (\n \n \n \n <span>{ProductName}</span>\n \n \n {TPSearchDescription || Description}\n \n \n \n {PriceFormatted}\n {IsDiscount && {`${saleName} ${price}`}}\n \n
    \n \n {sizeText} {SizeDescription}\n \n \n {qtyText} {Quantity}\n \n
    \n {`${StockMessage} ${ciStoreName}`}\n
    \n )\n}\n","import React from \"react\"\nimport {Item} from \"../../models/shoppingbag\"\nimport {ItemWrapper} from \"./component\"\nimport ProductImage from \"../ProductImage\"\nimport connect from \"./connect\"\n\nexport type MiniShoppingBagItemProps = {\n item: Item\n text: any\n gridItemInfo?: boolean\n ComponentName: any\n saleName: string\n}\n\nexport const MiniShoppingBagItem = ({\n item: {\n CistStoreName,\n ItemID,\n itemImageUrl,\n Description,\n AlternativeDescription,\n PriceFormatted,\n SizeDescription,\n Quantity,\n StockMessage,\n StockStatus,\n Url,\n IsDiscount,\n ItemNumber,\n ProductName,\n TPSearchDescription,\n },\n text,\n ComponentName,\n saleName,\n}: MiniShoppingBagItemProps) => {\n const {at} = text\n const ciStoreName = CistStoreName ? `${at} ${CistStoreName}` : \"\"\n\n return (\n \n \n\n \n \n )\n}\n\nexport default connect(MiniShoppingBagItem)\n","import styled from \"styled-components\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const MiniShoppingBagContainer = styled.div`\n color: ${(props: GlobalStyles) => props.theme.colours.header.myAccount.color};\n display: flex;\n flex-direction: column;\n border-radius: 0.25rem;\n background-color: ${(props: GlobalStyles) => props.theme.colours.popover.backgroundColour};\n`\nexport const PriceWrapperItem = styled.div`\n display: flex;\n justify-content: space-between;\n padding: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBagItems.PriceWrapperItem.default.padding};\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n font-size: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBagItems.PriceWrapperItem.default.fontSize};\n`\n\n// todo: template-tech-debt\nexport const TotalText = styled.div`\n font-family: ${(props: GlobalStyles) =>\n `${\n props.theme.colours.font.primary[props.theme.styles.MiniShoppingBagItems.TotalText.default.fontType].family\n }, ${props.theme.colours.font.default}`};\n`\n\nexport const PromotionWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n padding: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBagItems.PromotionWrapper.default.padding};\n color: ${(props: GlobalStyles) => props.theme.colours.header.shoppingBag.promotionColor};\n font-size: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBagItems.PromotionWrapper.default.fontSize};\n`\n\nexport const PromotionDiscount = styled.div`\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n`\n\n// todo: template-tech-debt\nexport const PromotionText = styled.div`\n font-family: ${(props: GlobalStyles) =>\n `${\n props.theme.colours.font.primary[props.theme.styles.MiniShoppingBagItems.PromotionText.default.fontType]\n .family\n }, ${props.theme.colours.font.default}`};\n`\n\nexport const StandardDeliveryContainer = styled.div`\n color: ${(props: GlobalStyles) => props.theme.colours.header.shoppingBag.deliveryColor};\n font-size: ${(props: GlobalStyles) =>\n props.theme.styles.MiniShoppingBagItems.StandardDeliveryContainer.default.fontSize};\n padding: ${(props: GlobalStyles) =>\n props.theme.styles.MiniShoppingBagItems.StandardDeliveryContainer.default.padding};\n border-bottom: ${(props: GlobalStyles) => props.theme.colours.utilities.dividerDark};\n && > p {\n font-size: ${(props: GlobalStyles) =>\n props.theme.styles.MiniShoppingBagItems.StandardDeliveryContainer.default.fontSize};\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: 0.0075rem;\n word-break: break-all;\n }\n`\nexport const Block = styled.span`\n display: block;\n`\n\nexport const ItemsContainer = styled.div`\n min-width: 100%;\n overflow-y: auto;\n\n > div:first-child {\n border-top: 0;\n }\n -ms-overflow-style: auto;\n scrollbar-width: auto;\n ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 0.475rem;\n }\n\n ::-webkit-scrollbar-thumb {\n border-radius: 0.25rem;\n background-color: rgba(0, 0, 0, 0.5);\n box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n }\n\n max-width: 19.875rem;\n max-height: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBagItems.ItemsContainer.default.maxHeight};\n\n border-bottom: ${(props: GlobalStyles) => props.theme.colours.utilities.divider};\n background-color: ${(props: GlobalStyles) => props.theme.colours.utilities.backgroundAccent};\n margin: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBagItems.ItemsContainer.default.margin};\n`\n","import React from \"react\"\nimport {formatTextTestIds} from \"@next/utils\"\nimport {ChargesAndIncentive} from \"../../models/shoppingbag\"\nimport {PromotionDiscount, PromotionText, PromotionWrapper} from \"../MiniShoppingBagItems/component\"\n\nexport type ChargesAndIncentiveItemProps = {\n incentive: ChargesAndIncentive\n}\n\nexport const ChargesAndIncentiveItem = ({incentive}: ChargesAndIncentiveItemProps) => {\n return (\n \n {incentive.OfferTypeDescription}\n \n {incentive.AdditionalAmountFormatted}\n \n \n )\n}\n\nexport default ChargesAndIncentiveItem\n","import React from \"react\"\nimport {ChargesAndIncentive} from \"../../models/shoppingbag\"\nimport ChargesAndIncentiveItem from \"../ChargesAndIncentiveItem\"\n\nexport type ChargesAndIncentiveListProps = {\n incentives: ChargesAndIncentive[]\n}\n\nexport const ChargesAndIncentiveList = ({incentives}: ChargesAndIncentiveListProps) => {\n return (\n <>\n {incentives.map(x => (\n \n ))}\n \n )\n}\n\nexport default ChargesAndIncentiveList\n","import React, {useRef, useEffect} from \"react\"\nimport connect from \"./connect\"\nimport {ShoppingBag} from \"../../models/shoppingbag\"\nimport MiniShoppingBagItem from \"../MiniShoppingBagItem\"\nimport ChargesAndIncentiveList from \"../ChargesAndIncentiveList\"\nimport {bagItemsWheelLock} from \"../../utils/wheelLock\"\nimport {\n PriceWrapperItem,\n PromotionWrapper,\n ItemsContainer,\n MiniShoppingBagContainer,\n StandardDeliveryContainer,\n TotalText,\n PromotionDiscount,\n PromotionText,\n} from \"./component\"\n\nexport type MiniShoppingBagItemsProps = {\n text: any\n bag: ShoppingBag\n}\n\nexport const MiniShoppingBagItems = ({text, bag}: MiniShoppingBagItemsProps) => {\n const {\n Items: items,\n Description,\n MultiBuyDiscount,\n FinalOrderValueFormatted,\n MultiBuyDiscountFormatted,\n ChargesAndIncentives,\n } = bag\n const bagItemsContainerRef = useRef(null)\n const bagItemsRef = useRef(null)\n\n const handleWheelLock = e => bagItemsWheelLock(e, bagItemsContainerRef, bagItemsRef)\n\n useEffect(() => {\n const bagItemsContainer = bagItemsContainerRef.current\n // eslint-disable-next-line no-unused-expressions\n bagItemsContainer?.addEventListener(\"wheel\", handleWheelLock, {passive: false})\n return () => {\n // eslint-disable-next-line no-unused-expressions\n bagItemsContainer?.removeEventListener(\"wheel\", handleWheelLock)\n }\n }, [])\n\n return (\n \n \n {items.map(item => (\n \n ))}\n \n {MultiBuyDiscount > 0 && (\n \n {text.promotionalText}\n \n {`${text.negative}${MultiBuyDiscountFormatted}`}\n \n \n )}\n {ChargesAndIncentives && !!ChargesAndIncentives.length && (\n \n )}\n\n \n {text.totalText}\n {FinalOrderValueFormatted}\n \n \n {Description}\n \n \n )\n}\n\nexport default connect(MiniShoppingBagItems)\n","export const bagItemsWheelLock = (\n e: any,\n bagItemsContainerRef: React.MutableRefObject,\n bagItemsRef: React.MutableRefObject,\n) => {\n if (!e || e.type !== \"wheel\") return undefined\n\n const isBagItemsContainer = bagItemsContainerRef.current?.contains(e.target)\n const isBagItemsRef = bagItemsRef.current?.contains(e.target)\n const element = bagItemsRef.current\n\n if (!element || (!isBagItemsRef && isBagItemsContainer)) return e.preventDefault()\n\n const {deltaY} = e\n if (\n (element.scrollHeight - element.scrollTop === element.clientHeight && deltaY > 0) ||\n (element.scrollTop === 0 && deltaY < 0)\n )\n return e.preventDefault()\n}\n\nexport const shoppingBagwheelLock = (\n e: any,\n bagContainerRef: React.MutableRefObject,\n bagItemsRef: React.MutableRefObject,\n) => {\n if (!e || e.type !== \"wheel\") return undefined\n\n const isBagContainerRef = bagContainerRef.current?.contains(e.target)\n const isBagItemsRef = bagItemsRef.current?.contains(e.target)\n\n if (isBagItemsRef) return undefined\n if (isBagContainerRef) e.preventDefault()\n}\n","import {breakpoints} from \"@next/themes\"\nimport styled from \"styled-components\"\nimport {GlobalStyles} from \"../../models/globalStyles\"\n\nexport const MiniShoppingBagContainer = styled.div`\n color: ${(props: GlobalStyles) => props.theme.colours.header.myAccount.color};\n display: flex;\n flex-direction: column;\n background-color: ${(props: GlobalStyles) => props.theme.colours.popover.backgroundColour};\n border-radius: ${({theme}: GlobalStyles) => theme.colours.popover.radius};\n width: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBag.MiniShoppingBagContainer.default.width};\n`\n\nexport const TotalText = styled.div`\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary[props.theme.styles.MiniShoppingBag.TotalText.default.fontType].family}, ${\n props.theme.colours.font.default\n }`};\n`\n\nexport const MiniShoppingBagPriceWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n border-bottom: ${(props: GlobalStyles) => props.theme.colours.utilities.dividerDark};\n background-color: ${(props: GlobalStyles) => props.theme.colours.popover.backgroundColour};\n font-family: ${(props: GlobalStyles) =>\n `${\n props.theme.colours.font.primary[\n props.theme.styles.MiniShoppingBag.MiniShoppingBagPriceWrapper.default.fontType\n ].family\n }, ${props.theme.colours.font.default}`};\n font-size: ${(props: GlobalStyles) =>\n props.theme.styles.MiniShoppingBag.MiniShoppingBagPriceWrapper.default.fontSize};\n`\n\nexport const ItemCountWrapper = styled.div`\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n font-size: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBag.ItemCountWrapper.default.fontSize};\n padding: 0.9rem 1rem;\n background-color: inherit;\n text-transform: ${(props: GlobalStyles) =>\n props.theme.styles.MiniShoppingBag.ItemCountWrapper.default.textTransform};\n border-bottom: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBag.ItemCountWrapper.default.borderBottom};\n border-radius: ${({theme}: GlobalStyles) => {\n const {radius} = theme.colours.popover\n return `${radius} ${radius} 0 0`\n }};\n letter-spacing: ${(props: GlobalStyles) =>\n props.theme.styles.MiniShoppingBag.ItemCountWrapper.default.letterSpacing};\n`\n\n// todo: template-tech-debt\nexport const EmptyBagWrapper = styled.div`\n height: 4.313rem;\n background-color: ${(props: GlobalStyles) => props.theme.colours.utilities.backgroundAccent};\n border-bottom: ${(props: GlobalStyles) => props.theme.colours.utilities.divider};\n align-items: center;\n justify-content: center;\n display: flex;\n && > h3 {\n font-family: ${(props: GlobalStyles) =>\n `${\n props.theme.colours.font[props.theme.styles.MiniShoppingBag.EmptyBagWrapper.default.fontVariant][\n props.theme.styles.MiniShoppingBag.EmptyBagWrapper.default.fontType\n ].family\n }, ${props.theme.colours.font.default}`};\n font-weight: ${(props: GlobalStyles) =>\n `${\n props.theme.colours.font[props.theme.styles.MiniShoppingBag.EmptyBagWrapper.default.fontVariant][\n props.theme.styles.MiniShoppingBag.EmptyBagWrapper.default.fontType\n ].weight\n }`};\n font-size: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBag.EmptyBagWrapper.default.fontSize};\n color: ${(props: GlobalStyles) => `${props.theme.styles.MiniShoppingBag.EmptyBagWrapper.default.color}`};\n }\n`\n\nexport const CTAContainer = styled.div`\n align-self: center;\n margin-right: 1rem;\n flex: 1 auto;\n font-size: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontSize};\n font-weight: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontWeight};\n\n @media (min-width: ${breakpoints.values.md}px) {\n min-width: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.md.minWidth};\n height: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.md.height};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n min-width: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.lg.minWidth};\n height: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.lg.height};\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n min-width: ${props => props.theme.styles.Checkout.Container.xl.minWidth};\n height: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.xl.height};\n }\n`\n\nexport const ActionWrapper = styled.div`\n width: 100%;\n display: flex;\n overflow: hidden;\n align-items: center;\n padding: 15px;\n border-top: 1px solid #eaeaea;\n && > a {\n height: ${(props: GlobalStyles) => props.theme.styles.MiniShoppingBag.ActionWrapper.link.default.height};\n :first-child {\n margin-right: 1rem;\n }\n }\n`\n\nexport const CartItemsContainer = styled.div`\n display: flex;\n flex-direction: column;\n`\n","import React, {useEffect, useRef} from \"react\"\nimport Typography from \"@material-ui/core/Typography\"\nimport {CTA} from \"@next/cta\"\nimport connect from \"./connect\"\nimport MiniShoppingBagCheckout from \"../MiniShoppingBagCheckout\"\nimport {ShoppingBag} from \"../../models/shoppingbag\"\nimport {shoppingBagwheelLock} from \"../../utils/wheelLock\"\nimport MiniShoppingBagItems from \"../MiniShoppingBagItems\"\nimport {\n MiniShoppingBagContainer,\n CartItemsContainer,\n MiniShoppingBagPriceWrapper,\n ActionWrapper,\n ItemCountWrapper,\n EmptyBagWrapper,\n TotalText,\n CTAContainer,\n} from \"./component\"\nimport {\n HEADER_NAV_BAR_QUICK_LINKS,\n HEADER_NAV_BAR_SHOPPING_BAG_CHECKOUT,\n HEADER_NAV_BAR_SHOPPING_BAG_VIEW_BAG,\n HEADER_NAV_BAR_QUICK_LINKS_SHOPPING_BAG,\n} from \"../../config/constants\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\n\nexport type MiniShoppingBagProps = {\n text: any\n itemCount: number\n bag: ShoppingBag\n shoppingBagUrl: string\n}\n\nexport const MiniShoppingBag = ({text, itemCount, bag, shoppingBagUrl}: MiniShoppingBagProps) => {\n const showEmpty = !itemCount && (!bag?.Items || bag?.Items?.length < 1)\n const bagContainerRef = useRef(null)\n const bagItemsRef = useRef(null)\n\n const handleWheelLock = e => shoppingBagwheelLock(e, bagContainerRef, bagItemsRef)\n\n useEffect(() => {\n const bagContainer = bagContainerRef.current\n // eslint-disable-next-line no-unused-expressions\n bagContainer?.addEventListener(\"wheel\", handleWheelLock, {passive: false})\n\n return () => {\n // eslint-disable-next-line no-unused-expressions\n bagContainer?.removeEventListener(\"wheel\", handleWheelLock)\n }\n }, [])\n\n return (\n \n \n {`${itemCount} ${itemCount === 1 ? text.itemText : text.itemsText} ${text.inBagText}`}\n \n\n {showEmpty ? (\n <>\n \n \n {text.emptyBagText}\n \n \n \n {text.totalText}\n {bag.FinalOrderValueFormatted}\n \n \n ) : (\n <>\n \n \n \n \n )}\n\n \n \n \n \n \n \n \n )\n}\n\nexport default connect(MiniShoppingBag)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport urls from \"../../config/urls\"\n\nexport const mapStateToProps = (state: State) => ({\n text: {miniShoppingBag: state.text.miniShoppingBag, shoppingBag: state.text.shoppingBag},\n itemCount: state.shoppingBag.itemCount,\n checkoutUrl: `${state.request.siteUrl}${urls.shoppingBag.url}`,\n})\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport Typography from \"@material-ui/core/Typography\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const Container = styled.div`\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n display: flex;\n flex-direction: column;\n background: ${(props: GlobalStyles) => props.theme.colours.popover.backgroundColour || \"white\"};\n border-radius: 0.25rem;\n width: 20rem;\n @media (max-width: ${breakpoints.values.md - 1}px) {\n width: 18rem;\n }\n`\n\nexport const NotificationMessage = styled(Typography)`\n && {\n padding: 0.8125rem 1.1875rem 0.75rem 1rem;\n width: 16rem;\n @media (max-width: ${breakpoints.values.md - 1}px) {\n width: 15rem;\n }\n }\n`\n\nexport const ActionWrapper = styled.div`\n margin: 0.625rem auto;\n display: flex;\n margin: 0rem 0rem;\n padding: 1rem 1rem;\n font-size: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontSize};\n font-weight: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontWeight};\n border-top: ${(props: GlobalStyles) => props.theme.colours.utilities.dividerDark};\n && > div,\n && > a {\n width: 18rem;\n @media (max-width: ${breakpoints.values.md - 1}px) {\n width: 16rem;\n }\n height: 2.25rem;\n margin: 0;\n flex-shrink: 1;\n }\n`\n","import React from \"react\"\nimport {CTA} from \"@next/cta\"\nimport connect from \"./connect\"\nimport {Container, ActionWrapper, NotificationMessage} from \"./component\"\n\nexport type ShoppingBagNotificationProps = {\n text: any\n itemCount: number\n checkoutUrl: string\n}\n\nexport const ShoppingBagNotification = ({text, itemCount, checkoutUrl}: ShoppingBagNotificationProps) => {\n return itemCount === 0 ? null : (\n \n \n {`${text.shoppingBag.youhaveText} ${itemCount} ${itemCount === 1 ? \n text.shoppingBag.itemText : \n text.shoppingBag.itemsText\n } ${text.shoppingBag.inYourBagText}`}\n \n\n \n \n \n \n )\n}\n\nexport default connect(ShoppingBagNotification)\n","import React, {useRef, useState, useEffect} from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport ToolTip from \"@next/tooltip\"\nimport {\n useShoppingBagGetCallbackObservable,\n useShoppingBagAddCallbackObservable,\n useShoppingBagAddCistCallbackObservable,\n useShoppingBagAddEVoucherCallbackObservable,\n useShoppingBagAddLinkedItemCallbackObservable,\n useShoppingBagAddMultipleCallbackObservable,\n useShoppingBagAddWarrantyCallbackObservable,\n useShoppingBagRemoveCallbackObservable,\n useShoppingBagUpdateSizeCallbackObservable,\n useShoppingBagUpdateQuantityCallbackObservable,\n useModalsCloseObservable,\n useShoppingBagAcceptCallbackObservable,\n useShoppingBagRejectCallbackObservable,\n} from \"@next/eventservice\"\nimport {ShoppingBag as ShoppingBagType} from \"models/shoppingbag\"\nimport {PublishToModalsClosed} from \"../../events/modalsClosed\"\nimport {HEADER_NAV_BAR_QUICK_LINKS, HEADER_NAV_BAR_QUICK_LINKS_SHOPPING_BAG} from \"../../config/constants\"\nimport connect from \"./connect\"\nimport {ShoppingBagLink, ToolTipContent, Label, Container} from \"./components\"\nimport MiniShoppingBag from \"../MiniShoppingBag\"\nimport ShoppingBagNotification from \"../ShoppingBagNotification\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\n\ntype ShoppingBagProps = {\n miniBagTooltipPlacement: any\n altText: string\n iconUrl: string\n itemCount: number\n updateShoppingBag: (data: any) => void\n addEVoucherToBag: (data: any) => void\n isBagLoading: boolean\n shoppingBagUrl: string\n tooltipModifiers?: object\n}\n\nexport const ShoppingBag = ({\n miniBagTooltipPlacement = \"bottom\",\n altText,\n iconUrl,\n itemCount,\n updateShoppingBag,\n addEVoucherToBag,\n isBagLoading,\n shoppingBagUrl,\n tooltipModifiers,\n}: ShoppingBagProps) => {\n const [isBagVisible, setIsBagVisible] = useState(false)\n const [shouldShowbagNotification, setShouldShowbagNotification] = useState(false)\n\n const openBag = () => {\n if (!isBagVisible) setIsBagVisible(true)\n }\n\n const handleShowMinibagNotification = ({data}) => {\n if (!data?.ShoppingBag) return\n\n const {RecreatedFromPreviousSession, UserNotifiedOfSessionRecreation, Authenticated, ItemCount} =\n data.ShoppingBag as ShoppingBagType\n\n if (RecreatedFromPreviousSession && !UserNotifiedOfSessionRecreation && Authenticated && ItemCount)\n setShouldShowbagNotification(true)\n }\n\n useShoppingBagGetCallbackObservable(data => {\n updateShoppingBag(data)\n handleShowMinibagNotification(data)\n })\n useShoppingBagAddCallbackObservable(data => {\n updateShoppingBag(data)\n openBag()\n })\n useShoppingBagAddCistCallbackObservable(data => {\n updateShoppingBag(data)\n openBag()\n })\n\n useShoppingBagAddEVoucherCallbackObservable(data => {\n addEVoucherToBag(data)\n openBag()\n })\n useShoppingBagAddLinkedItemCallbackObservable(data => {\n updateShoppingBag(data)\n openBag()\n })\n useShoppingBagAddMultipleCallbackObservable(data => {\n updateShoppingBag(data)\n openBag()\n })\n useShoppingBagAddWarrantyCallbackObservable(data => {\n updateShoppingBag(data)\n })\n useShoppingBagRemoveCallbackObservable(data => {\n updateShoppingBag(data)\n })\n useShoppingBagUpdateSizeCallbackObservable(data => {\n updateShoppingBag(data)\n })\n useShoppingBagUpdateQuantityCallbackObservable(data => {\n updateShoppingBag(data)\n })\n\n useModalsCloseObservable(() => {\n setIsBagVisible(false)\n })\n\n useShoppingBagAcceptCallbackObservable(data => {\n updateShoppingBag(data)\n })\n\n useShoppingBagRejectCallbackObservable(data => {\n updateShoppingBag(data)\n })\n\n const handleOpen = event => {\n PublishToModalsClosed()\n event.preventDefault()\n setIsBagVisible(true)\n setShouldShowbagNotification(false)\n }\n\n const handleClose = event => {\n if (event?.type === \"scroll\" && event?.target !== document) return\n setIsBagVisible(false)\n }\n\n useEffect(() => {\n window.addEventListener(\"scroll\", handleClose, true)\n return () => {\n window.removeEventListener(\"scroll\", handleClose)\n }\n }, [])\n\n const thisElement = useRef(null)\n const items = isBagLoading ? \"\" : itemCount\n return (\n \n \n \n \n \n {altText}\n \n \n \n \n \n \n \n {altText}\n \n \n\n \n \n \n \n \n \n\n setShouldShowbagNotification(false)}\n timeout={10000}\n placement=\"bottom-end\"\n enableModArrow\n >\n \n \n \n \n \n )\n}\n\nexport default connect(ShoppingBag)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport urls from \"../../config/urls\"\n\nexport const mapStateToProps = (state: State) => {\n const {siteUrl} = state.request\n const {\n text: {\n checkout: {text},\n },\n } = state\n return {\n enable: state.shoppingBag.itemCount > 0,\n text,\n url: `${siteUrl}${urls.checkout.url}`,\n }\n}\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const Container = styled.div`\n align-self: center;\n flex: 0 auto;\n font-size: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontSize};\n font-weight: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontWeight};\n\n @media (min-width: ${breakpoints.values.md}px) {\n min-width: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.md.minWidth};\n height: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.md.height};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n min-width: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.lg.minWidth};\n height: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.lg.height};\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n min-width: ${props => props.theme.styles.Checkout.Container.xl.minWidth};\n height: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.xl.height};\n }\n`\n","import React from \"react\"\nimport Hidden from \"@material-ui/core/Hidden\"\nimport CTA from \"@next/cta\"\nimport connect from \"./connect\"\nimport {Container} from \"./component\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\n\nexport type CheckoutProps = {\n enable: boolean\n text: string\n url: string\n dataGaV1?: string\n dataGaV2?: string\n dataGaV3?: string\n}\n\nexport const Checkout = (props: CheckoutProps) => {\n return (\n \n \n \n \n \n )\n}\n\nexport default connect(Checkout)\n","export const getBaseSiteUrl = (siteUrl: string, territory: string, language: string): string => {\n let newSiteUrl = siteUrl.toLowerCase()\n\n newSiteUrl = newSiteUrl.replace(`/${territory.toLowerCase()}/`, \"/\")\n const CONV = \"conv\"\n if (newSiteUrl.includes(`${language}${CONV}`)) {\n const words = newSiteUrl.split(CONV)\n words[1].replace(`/${language.toLowerCase()}`, \"\")\n return `${words[0]}${CONV}${words[1].replace(`/${language.toLowerCase()}`, \"\")}`\n }\n const lastIndexOfLanuage = newSiteUrl.lastIndexOf(`/${language.toLowerCase()}`)\n\n newSiteUrl = newSiteUrl.substring(0, lastIndexOfLanuage > 0 ? lastIndexOfLanuage : newSiteUrl.length)\n\n return newSiteUrl\n}\n","import {CountrySelectorClosedESB} from \"@next/eventservice\"\n\nconst closedESB = new CountrySelectorClosedESB()\n\nconst PublishCountrySelectorClosed = () => {\n closedESB.publish()\n}\n\nexport const SubscribeCountrySelectorClosed = (cb: () => void) => {\n return closedESB.subscribe(cb)\n}\n\nexport default PublishCountrySelectorClosed\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {MenuItem, Select, FormControl, makeStyles, createStyles, OutlinedInput} from \"@material-ui/core\"\nimport {GlobalStyles} from \"models/globalStyles\"\nimport {COUNTRY_SELECTOR_DRAWER_BREAKPOINT} from \"../../config/constants\"\n\nexport const ElementProps = makeStyles(() =>\n createStyles({\n root: {\n \"&&\": {\n width: \"100%\",\n height: \"2rem\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n padding: \"0 0.5rem\",\n },\n \"&&$selected\": {\n backgroundColor: \"#c5c5c5\",\n color: \"#ffffff\",\n },\n \"&&$selected:hover\": {\n backgroundColor: \"#c5c5c5\",\n color: \"#ffffff\",\n },\n \"&&:hover\": {\n backgroundColor: \"#515151\",\n color: \"#ffffff\",\n },\n },\n selected: {\n backgroundColor: \"#c5c5c5\",\n color: \"#ffffff\",\n },\n menuPaper: {\n maxHeight: 300,\n width: \"28rem\",\n },\n icon: {\n minWidth: \"2rem\",\n },\n }),\n)\n\nexport const StyledSelect = styled(Select)`\n width: 100%;\n height: ${(props: GlobalStyles) => props.theme.styles.CountrySelectDropdown.StyledSelect.default.height};\n @media (min-width: ${COUNTRY_SELECTOR_DRAWER_BREAKPOINT}) {\n width: ${(props: GlobalStyles) =>\n props.theme.styles.CountrySelectDropdown.StyledSelect.countrySelectDrawerBreakpoint.width};\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n height: ${(props: GlobalStyles) => props.theme.styles.CountrySelectDropdown.StyledSelect.lg.height};\n }\n && > div {\n padding: 0.625rem 2.25rem 0.625rem 0.625rem;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n height: 100%;\n }\n && > div:focus {\n background-color: transparent;\n }\n &&.selectOpen {\n border-radius: 0.25rem 0.25rem 0 0;\n }\n && .selectBody {\n border-radius: 0 0 0.25rem 0.25rem;\n }\n`\n\nexport const StyledOutlinedInput = styled(OutlinedInput)`\n background: #ffffff;\n && {\n line-height: normal;\n font-size: inherit;\n border-radius: ${(props: GlobalStyles) => props.theme.colours.form.default.radius};\n }\n &&& > fieldset {\n border: ${(props: GlobalStyles) => props.theme.colours.form.default.border};\n }\n`\n\nexport const SelectedFormControl = styled(FormControl)`\n &:hover {\n border: none;\n }\n`\n\nexport const SelectedMenuItem = styled(MenuItem)`\n width: 100%;\n display: flex;\n justify-content: flex-start;\n padding: 0 0.5rem;\n transition: color 0s, background-color 0s;\n`\n\nexport const StyledIcon = styled.img`\n top: calc(50% - 0.25rem);\n right: 1rem;\n`\n\nexport const MenuItemCountryFlagImg = styled.img`\n height: ${(props: GlobalStyles) => props.theme.styles.CountrySelectDropdown.MenuItemCountryFlagImg.default.width};\n width: ${(props: GlobalStyles) => props.theme.styles.CountrySelectDropdown.MenuItemCountryFlagImg.default.width};\n\n @media (min-width: ${breakpoints.values.lg}px) {\n height: ${(props: GlobalStyles) => props.theme.styles.CountrySelectDropdown.MenuItemCountryFlagImg.lg.width};\n width: ${(props: GlobalStyles) => props.theme.styles.CountrySelectDropdown.MenuItemCountryFlagImg.lg.width};\n }\n`\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {changeCountry} from \"../../ducks/country-selector\"\nimport {TERRITORY_HEADER} from \"../../config/constants\"\n\nexport const mapStateToProps = (state: State) => {\n const territory = state.request?.headers![TERRITORY_HEADER] as string\n const {textAlignment} = state\n const {countriesList, selectedCountry} = state.countrySelector\n\n return {\n countriesList,\n textAlignment,\n territory: territory.toUpperCase(),\n selectedCountry,\n }\n}\n\nexport const mapDispatchToProps = (dispatch: any) => ({\n selectCountry: (countryCode: string) => dispatch(changeCountry(countryCode)),\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import React, {useRef} from \"react\"\nimport {formatTextTestIds} from \"@next/utils\"\nimport {ListItemIcon, useMediaQuery} from \"@material-ui/core\"\nimport {\n COUNTRY_SELECTOR_DRAWER_BREAKPOINT,\n CHEVRON_ICON_URL,\n COUNTRY_SELECT_DROPDOWN_DATA_GA,\n} from \"../../config/constants\"\nimport {\n StyledIcon,\n StyledSelect,\n ElementProps,\n SelectedMenuItem,\n StyledOutlinedInput,\n SelectedFormControl,\n MenuItemCountryFlagImg,\n} from \"./component\"\nimport connect from \"./connect\"\nimport {Country as CountryType} from \"../../models/countryselector\"\nimport env from \"../../config/env\"\nimport {useSearchCountrySelectorByKeyPress} from \"../../utils/useSearchCountrySelectorByKeyPress\"\n\nconst CHEVRON_ICON = `${env.REACT_APP_BLOB_STORAGE_PATH}${CHEVRON_ICON_URL}`\n\ntype CountrySelectDropdownType = {\n territory: string\n textAlignment: string\n countriesList: CountryType[] | null\n selectedCountry: CountryType | null\n selectCountry: (countryCode: string) => void\n}\n\nlet timerId: NodeJS.Timeout | number = 0\n\nexport const CountrySelectDropdown = ({\n territory,\n textAlignment,\n countriesList,\n selectedCountry,\n selectCountry,\n}: CountrySelectDropdownType) => {\n const countryRef = useRef()\n const anchorDirectionBreakpoint = useMediaQuery(`(min-width:${COUNTRY_SELECTOR_DRAWER_BREAKPOINT})`)\n const itemAligment = textAlignment === \"ltr\" ? \"left\" : \"right\"\n const elementProps = ElementProps()\n\n const {onKeyPress} = useSearchCountrySelectorByKeyPress(countriesList, selectCountry)\n\n const handleChange = (event: React.ChangeEvent<{value: unknown}>): void => {\n selectCountry(event.target.value as string)\n }\n\n const onOpen = () => {\n timerId = setTimeout(() => {\n if (countryRef.current) {\n countryRef.current.focus()\n }\n clearTimeout(timerId as NodeJS.Timeout)\n }, 500)\n }\n\n const setCountryRef = c => ref => {\n if (selectedCountry?.CountryCode === c.CountryCode) {\n countryRef.current = ref\n }\n }\n\n return (\n \n onKeyPress(e.key)}\n MenuProps={{\n keepMounted: false,\n disablePortal: true,\n classes: {paper: elementProps.menuPaper},\n anchorOrigin: {\n vertical: anchorDirectionBreakpoint ? \"bottom\" : \"top\",\n horizontal: itemAligment,\n },\n transformOrigin: {\n vertical: anchorDirectionBreakpoint ? \"top\" : \"bottom\",\n horizontal: itemAligment,\n },\n getContentAnchorEl: null,\n }}\n input={\n \n }\n IconComponent={props => (\n \n )}\n data-testid=\"country-selector-select-menu\"\n >\n {/* eslint-disable-next-line react/display-name */}\n {countriesList?.map((c: CountryType) => (\n \n \n \n \n {c.DisplayText}\n \n ))}\n \n \n )\n}\n\nexport default connect(CountrySelectDropdown)\n","import {useState} from \"react\"\nimport {Country as CountryType} from \"../../models/countryselector\"\nimport {COUNTRY_SELECTOR_TYPING_DELAY_TIME} from \"../../config/constants\"\n\nexport const useSearchCountrySelectorByKeyPress = (countriesList: CountryType[] | null, selectCountry: Function) => {\n const [typedKeys, setTypedKeys] = useState([])\n\n let timerId: NodeJS.Timeout | number = 0\n const onKeyPress = key => {\n if (countriesList) {\n const letters: string[] = typedKeys\n letters.push(key)\n let filteredCountry\n if (letters.length > 0) {\n filteredCountry = countriesList?.find(\n c => c.Country.slice(0, letters.length).toLowerCase() === letters.join(\"\"),\n )\n if (filteredCountry) {\n selectCountry(filteredCountry?.CountryCode)\n timerId = setTimeout(() => {\n setTypedKeys([])\n clearTimeout(timerId as NodeJS.Timeout)\n }, COUNTRY_SELECTOR_TYPING_DELAY_TIME)\n } else {\n setTypedKeys([])\n }\n }\n }\n }\n\n return {onKeyPress}\n}\n","import styled from \"styled-components\"\nimport {Button as MUIButton, Typography} from \"@material-ui/core\"\nimport {breakpoints} from \"@next/themes\"\nimport { GlobalStyles } from \"models/globalStyles\"\nimport {COUNTRY_SELECTOR_DRAWER_BREAKPOINT} from \"../../../../config/constants\"\n\nexport const CountrySelectorContainer = styled.div`\n color: #ffffff;\n display: flex;\n flex-direction: column;\n background: #ffffff;\n height: 21.75rem;\n width: 100%;\n @media (min-width: ${COUNTRY_SELECTOR_DRAWER_BREAKPOINT}) {\n width: ${(props : GlobalStyles) => props.theme.styles.CountryLangSelector.CountrySelectorContainer.default.width};\n height: 100%;\n }\n`\n\nexport const CountrySelectorContainerHeader = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-left: 1rem;\n min-height: 2.75rem;\n background: #f7f7f7;\n`\n\nexport const CountrySelectorContainerElement = styled.div`\n font-size: 14px;\n display: flex;\n flex-direction: column;\n padding: 0.5rem 1rem 0;\n @media (min-width: ${COUNTRY_SELECTOR_DRAWER_BREAKPOINT}) {\n padding: 0.5rem 1rem;\n }\n p {\n margin-bottom: 0.5rem;\n }\n`\n\nexport const CountrySelectorCTAWrapper = styled.div`\n display: flex;\n margin: 1rem;\n height: 2.75rem;\n font-size: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontSize};\n font-weight: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontWeight};\n @media (min-width: ${breakpoints.values.lg}px) {\n height: 2.25rem;\n }\n span {\n line-height: normal;\n }\n`\n\nexport const LanguageButtonsContainer = styled.div`\n display: flex;\n justify-content: space-between;\n\n & > button:nth-child(2) {\n margin-left: 0.5rem;\n }\n`\n\nexport const StyledIcon = styled.img<{textAlignment?: string}>`\n transform: ${({textAlignment}) => `rotate(${textAlignment === \"rtl\" ? \"90\" : \"270\"}deg)`};\n margin: -0.125rem 0 0 0.25rem;\n top: 0;\n`\n\nexport const CloseButton = styled(MUIButton)`\n && {\n min-width: 4.5rem;\n background: #f7f7f7;\n color: rgb(37, 127, 57);\n font-family: ${({theme}) => `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`};\n border-radius: 0;\n border: 0;\n\n &:hover,\n &:active {\n background: #f7f7f7;\n border: 0;\n }\n\n &:focus {\n border: 0;\n border-radius: 0;\n }\n span {\n font-family: ${({theme}) => `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`};\n }\n }\n`\n\nexport const Title = styled.div`\n color: #000000;\n width: 100%;\n font-size: 15px;\n font-family: ${({theme}) => `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`};\n letter-spacing: 1px;\n`\n\nexport const StayText = styled(Typography).attrs({component: \"span\"})`\n && {\n color: ${(props : GlobalStyles) => props.theme.colours.text.hyperlink};\n font-family: ${({theme}) => `${theme.colours.font.primary.regular.family}, ${theme.colours.font.default}`};\n font-weight: ${(props : GlobalStyles) => props.theme.colours.font.primary.medium.weight};\n padding-right: 0.25rem;\n }\n`\n\nexport const CountrySelectorBottomText = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 0.25rem 1rem 0;\n`\n\nexport const StayButton = styled.button`\n cursor: pointer;\n background-color: transparent;\n border: none;\n &:active {\n background-color: transparent;\n border: none;\n }\n`\n\nexport const ROWLink = styled.a`\n font-family: ${props => `${props.theme.colours.font.primary.regular.family}, ${props.theme.colours.font.default}`};\n color: ${(props : GlobalStyles) => props.theme.colours.text.hyperlink};\n text-decoration: underline;\n font-size: 14px;\n &:visited {\n color: ${(props : GlobalStyles) => props.theme.colours.text.hyperlink};\n }\n`\n\nexport const CountrySelectorROW = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 1rem 0 0.5rem;\n line-height: 1.25rem;\n`\n\nexport const LanguageButton = styled.button<{selected?: boolean}>`\n display: flex;\n justify-content: center;\n align-items: center;\n border: ${({theme, selected}) =>\n selected ? theme.colours.form.selectedAccent.border : theme.colours.form.default.border};\n background: ${({theme, selected}) => (selected ? \"#f4fbf6\" : theme.colours.form.buttonSecondary.background)};\n font-weight: ${({theme, selected}) =>\n selected ? theme.colours.font.primary.medium.weight : theme.colours.font.primary.light.weight};\n border-radius: ${(props : GlobalStyles) => props.theme.colours.form.buttonPrimary.radius};\n font-family: ${({theme, selected}) =>\n selected\n ? `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`\n : `${theme.colours.font.primary.regular.family}, ${theme.colours.font.default}`};\n width: calc((100% - 1rem) / 2);\n height: 2.75rem;\n font-size: 14px;\n @media (min-width: ${breakpoints.values.lg}px) {\n height: 2rem;\n }\n cursor: pointer;\n &:focus {\n outline: none;\n }\n`\n","import React from \"react\"\nimport {ClickAwayListener, Typography} from \"@material-ui/core\"\nimport {CTA} from \"@next/cta\"\nimport CountrySelectDropdown from \"../../../CountrySelectDropdown\"\nimport {CountryLanguage} from \"../../../../models/countryselector\"\nimport {CHEVRON_ICON_URL, COUNTRY_LANG_SELECTOR_DATA_GA} from \"../../../../config/constants\"\nimport {\n CountrySelectorContainer,\n CountrySelectorContainerHeader,\n CountrySelectorContainerElement,\n CountrySelectorCTAWrapper,\n LanguageButtonsContainer,\n LanguageButton,\n CloseButton,\n Title,\n CountrySelectorBottomText,\n StayButton,\n StyledIcon,\n StayText,\n CountrySelectorROW,\n ROWLink,\n} from \"./component\"\nimport env from \"../../../../config/env\"\nimport type {DefaultTemplatePropType} from \"../../index\"\n\nconst DefaultCountrySelectorTemplate = ({\n selectedCountry,\n selectedLanguage,\n selectLanguage,\n shopNowText,\n onCTAClick,\n headerTitle,\n closeText,\n closePanel,\n stayText,\n isOpeningFromBottom,\n isInternationalCountry,\n textAlignment,\n locationText,\n ROWText,\n ROWLinkText,\n ROWLinkUrl,\n languageText,\n}: DefaultTemplatePropType) => {\n const CHEVRON_ICON = `${env.REACT_APP_BLOB_STORAGE_PATH}${CHEVRON_ICON_URL}`\n return (\n \n \n \n {headerTitle}\n \n {closeText}\n \n \n \n {locationText && {locationText}}\n \n \n {ROWText && (\n \n {ROWText}\n \n {ROWLinkText}\n \n \n )}\n \n {languageText && {languageText}}\n \n {/* eslint-disable-next-line react/display-name */}\n {selectedCountry?.Languages.map((lan: CountryLanguage, i) => (\n selectLanguage(lan.Name)}\n data-testid={`country-selector-language-button-${i}`}\n data-ga-v1={COUNTRY_LANG_SELECTOR_DATA_GA}\n data-ga-v2={selectedCountry.Country}\n data-ga-v3={lan.Value}\n >\n {lan.Value}\n \n ))}\n \n \n \n \n \n {!isOpeningFromBottom && !isInternationalCountry && (\n \n \n {stayText}\n \n \n \n )}\n \n \n )\n}\n\nexport default DefaultCountrySelectorTemplate\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {Button as MUIButton} from \"@material-ui/core\"\nimport {GlobalStyles} from \"models/globalStyles\"\nimport {COUNTRY_SELECTOR_DRAWER_BREAKPOINT} from \"../../../../config/constants\"\n\nexport const InnerContainer = styled.div`\n margin: 0 1rem 1rem 1rem;\n @media (min-width: ${breakpoints.values.md}px) {\n width: 47.5rem;\n }\n`\n\nexport const CountrySelectorContainer = styled.div`\n align-items: center;\n display: flex;\n flex-direction: column;\n background: #282828;\n width: 100%;\n @media (min-width: ${COUNTRY_SELECTOR_DRAWER_BREAKPOINT}) {\n width: ${(props: GlobalStyles) =>\n props.theme.styles.CountryLangSelector.CountrySelectorContainer.default.width};\n }\n`\n\nexport const Title = styled.div`\n min-height: 2.75rem;\n background: #282828;\n color: #ffffff;\n line-height: 1.5;\n width: 100%;\n font-size: 0.75rem;\n font-family: ${({theme}) => `${theme.colours.font.secondary.regular.family}, ${theme.colours.font.default}`};\n text-align: left;\n letter-spacing: 0;\n padding: 0.938rem 1.875rem 0 0;\n @media (min-width: ${breakpoints.values.md}px) {\n text-align: center;\n }\n`\n\nexport const CountrySelectorCTAWrapper = styled.div`\n height: 2.25rem;\n width: 100%;\n font-size: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontSize};\n font-weight: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontWeight};\n @media (min-width: ${breakpoints.values.md}px) {\n width: 8rem;\n margin-left: 0.625rem;\n }\n span {\n line-height: normal;\n }\n && {\n border: solid 0.063rem #9e9e9e;\n }\n`\n\nexport const CloseButton = styled(MUIButton)`\n && {\n position: absolute;\n top: 1.125rem;\n right: 0.938rem;\n justify-content: flex-end;\n @media (min-width: ${breakpoints.values.md}px) {\n justify-content: flex-start;\n }\n background: #282828;\n width: 1.375rem;\n height: 1.375rem;\n min-width: 1.375rem;\n color: #ffffff;\n font-family: ${({theme}) => `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`};\n border-radius: 0;\n border: 0;\n\n &:hover,\n &:active {\n background: #282828;\n border: 0;\n }\n\n &:focus {\n border: 0;\n border-radius: 0;\n }\n span {\n font-family: ${({theme}) => `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`};\n }\n }\n`\n\nexport const LanguageButtonsContainer = styled.div`\n display: flex;\n justify-content: center;\n margin: 0 0 1.25rem 0;\n @media (min-width: ${breakpoints.values.md}px) {\n margin: 0;\n }\n & > button:nth-child(2) {\n margin-left: 0.5rem;\n }\n`\n\nexport const LanguageButton = styled.button<{selected: boolean}>`\n height: 2.25rem;\n font-size: 0.75rem;\n border: ${({theme, selected}) =>\n selected ? theme.colours.form.selectedAccent.border : theme.colours.form.default.border};\n background: #ffffff;\n color: ${({selected}) => (selected ? \"#000000\" : \"#515151\")};\n border-radius: ${(props: GlobalStyles) => props.theme.colours.form.buttonPrimary.radius};\n width: 100%;\n @media (min-width: ${breakpoints.values.md}px) {\n width: 7.5rem;\n }\n font-family: ${({theme, selected}) =>\n selected\n ? `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`\n : `${theme.colours.font.primary.regular.family}, ${theme.colours.font.default}`};\n font-weight: ${({theme, selected}) =>\n selected ? theme.colours.font.primary.medium.weight : theme.colours.font.primary.light.weight};\n cursor: pointer;\n &:focus {\n outline: none;\n }\n`\n\nexport const CountrySelectorContainerElement = styled.div`\n font-size: 0.75rem;\n margin: 1rem 0 0.938rem 0;\n @media (min-width: ${breakpoints.values.md}px) {\n width: 18.125rem;\n margin: 0 auto;\n }\n display: flex;\n flex-direction: column;\n`\n\nexport const CountrySelectorROWText = styled.span`\n font-size: 0.75rem;\n color: #ffffff;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.secondary.regular.family}, ${props.theme.colours.font.default}`};\n`\n\nexport const CountrySelectorROWLink = styled.a`\n color: #ffffff;\n text-decoration: underline;\n font-size: 0.75rem;\n font-family: ${(props: GlobalStyles) =>\n `${props.theme.colours.font.secondary.regular.family}, ${props.theme.colours.font.default}`};\n &:visited,\n &:active,\n &:hover,\n &:focus,\n &:active,\n &:hover,\n &:focus,\n &:visited {\n color: #ffffff;\n }\n`\n\nexport const CountrySelectorROW = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n @media (max-width: ${breakpoints.values.md - 1}px) {\n align-items: flex-start;\n }\n padding: 1rem 0 0.5rem;\n line-height: 1.5rem;\n`\n","import React from \"react\"\nimport {Grid, ClickAwayListener} from \"@material-ui/core\"\nimport {CTA} from \"@next/cta\"\nimport CountrySelectDropdown from \"../../../CountrySelectDropdown\"\nimport {CountryLanguage} from \"../../../../models/countryselector\"\nimport {COUNTRY_LANG_SELECTOR_DATA_GA} from \"../../../../config/constants\"\nimport {\n CountrySelectorContainer,\n InnerContainer,\n Title,\n CountrySelectorCTAWrapper,\n LanguageButtonsContainer,\n CloseButton,\n LanguageButton,\n CountrySelectorContainerElement,\n CountrySelectorROW,\n CountrySelectorROWText,\n CountrySelectorROWLink,\n} from \"./component\"\nimport type {DefaultTemplatePropType} from \"../../index\"\n\nconst BurgerMenuCountrySelectorTemplate = ({\n selectedCountry,\n selectedLanguage,\n selectLanguage,\n shopNowText,\n onCTAClick,\n headerTitle,\n closeText,\n closePanel,\n ROWText,\n ROWLinkText,\n ROWLinkUrl,\n}: Required) => {\n const showLanguageSelector = selectedCountry?.Languages.length > 1\n\n return (\n \n \n \n {headerTitle}\n \n \n \n \n \n \n {showLanguageSelector && (\n \n \n {selectedCountry?.Languages.map((lan: CountryLanguage, i) => (\n selectLanguage(lan.Name)}\n data-testid={`country-selector-language-button-${i}`}\n data-ga-v1={COUNTRY_LANG_SELECTOR_DATA_GA}\n data-ga-v2={selectedCountry.Country}\n data-ga-v3={lan.Value}\n >\n {lan.Value}\n \n ))}\n \n \n )}\n \n \n \n \n \n {ROWText && (\n \n \n {ROWText}\n \n {ROWLinkText}\n \n \n \n )}\n \n \n \n {closeText}\n \n \n \n )\n}\n\nexport default BurgerMenuCountrySelectorTemplate\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {\n openDrawer,\n closeCountrySelector,\n getCountriesListThunk,\n selectLanguage,\n setDefaultCountryCode,\n redirectToAlternativeLanguageThunk,\n requestCountryChange,\n} from \"../../ducks/country-selector\"\nimport {TERRITORY_HEADER, LANGUAGE_HEADER, DEFAULT_TEMPLATE, BURGER_MENU_TEMPLATE} from \"../../config/constants\"\nimport {formatCdnPath} from \"../../utils/getCdnUrl\"\nimport {getBaseSiteUrl} from \"../../utils/getBaseSiteUrl\"\nimport redirectPage from \"../../utils/redirectPage\"\nimport PublishCountrySelectorClosed from \"../../events/countrySelectorClosed\"\nimport {PublishToModalsClosed} from \"../../events/modalsClosed\"\nimport urls from \"../../config/urls\"\nimport {deleteRecentQueries} from \"../../ducks/recents/index\"\nimport DefaultCountrySelectorTemplate from \"./templates/default-template\"\nimport BurgerMenuCountrySelectorTemplate from \"./templates/burgermenu-template\"\n\nconst getIconUrl = (area: string) => formatCdnPath(`/icons/shared/countryflags/${area.toLowerCase()}.png`)\n\nconst {countrySelectUrl} = urls.countryLangSelector\n\nconst components = {\n [DEFAULT_TEMPLATE]: DefaultCountrySelectorTemplate,\n [BURGER_MENU_TEMPLATE]: BurgerMenuCountrySelectorTemplate,\n}\n\nexport const getComponent = (template: string) => components[template] ?? components[DEFAULT_TEMPLATE]\n\nexport const mapStateToProps = (state: State) => {\n const territory = state.request?.headers![TERRITORY_HEADER] as string\n const language = state.request?.headers![LANGUAGE_HEADER] as string\n const text = state.text.countryLangSelector\n const {textAlignment} = state\n const {siteUrl, isInternationalCountry} = state.request\n const {itemCount} = state.shoppingBag\n\n const {isShowCountrySelector, isActive, selectedLanguage, selectedCountry, isShowOverlay, isLoaded} =\n state.countrySelector\n\n const {template} = state\n const componentName = getComponent(template)\n\n return {\n isShowCountrySelector,\n iconUrl: getIconUrl(territory),\n isActive,\n isShowOverlay,\n textAlignment,\n territory: territory.toUpperCase(),\n language,\n selectedLanguage,\n selectedCountry,\n isInternationalCountry,\n isLoaded,\n itemCount,\n ROWLinkUrl: getBaseSiteUrl(siteUrl, territory, language) + countrySelectUrl,\n text,\n componentName,\n }\n}\n\nexport const mergeProps = (state: any, {dispatch}: any, ownProps) => ({\n ...state,\n ...ownProps,\n closePanel: () => {\n PublishCountrySelectorClosed()\n return dispatch(closeCountrySelector())\n },\n openDrawer: (isShowOverlay: boolean) => {\n PublishToModalsClosed()\n return dispatch(openDrawer(isShowOverlay))\n },\n selectDefaultCountry: (countryCode: string) => dispatch(setDefaultCountryCode(countryCode)),\n selectLanguage: (language: string) => dispatch(selectLanguage(language)),\n deleteRecentQueries: () => {\n dispatch(deleteRecentQueries())\n },\n shopNowOnClick: (itemCount: number) => {\n if (state.selectedCountry?.CountryCode === state.territory) {\n if (state.selectedLanguage !== state.language) {\n return redirectPage(state.selectedCountry, state.selectedLanguage)\n }\n PublishCountrySelectorClosed()\n return dispatch(closeCountrySelector())\n }\n if (itemCount > 0) {\n dispatch(closeCountrySelector())\n dispatch(requestCountryChange(true))\n } else {\n return redirectPage(state.selectedCountry, state.selectedLanguage)\n }\n },\n getCountriesListThunk: () => dispatch(getCountriesListThunk()),\n redirectPageToAlternativeLanguage: () => dispatch(redirectToAlternativeLanguageThunk()),\n})\n\nexport default connect(mapStateToProps, null, mergeProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {Drawer as MUIDrawer} from \"@material-ui/core\"\nimport {GlobalStyles} from \"models/globalStyles\"\nimport {COUNTRY_SELECTOR_DRAWER_BREAKPOINT} from \"../../config/constants\"\n\nexport const DrawerContainer = styled(MUIDrawer)`\n position: initial;\n && > div:first-child {\n background: ${(props: GlobalStyles) => `${`rgba(${props.theme.colours.palette.modal.backdrop.secondary})`}`};\n }\n\n && > div:nth-child(3) {\n overflow-y: initial;\n width: 100%;\n @media (min-width: ${COUNTRY_SELECTOR_DRAWER_BREAKPOINT}) {\n overflow-y: auto;\n width: ${(props: GlobalStyles) => props.theme.styles.CountryLangSelector.DrawerContainer.default.width};\n }\n }\n`\n\nexport const ImageContainer = styled.button`\n cursor: pointer;\n display: flex;\n padding: ${(props: GlobalStyles) => props.theme.styles.CountryLangSelector.ImageContainer.default.padding};\n background-color: transparent;\n border: none;\n &:active {\n background-color: transparent;\n border: none;\n }\n`\n\nexport const Wrapper = styled.div`\n height: 2.75rem;\n font-size: 0.9375rem;\n`\n\nexport const Img = styled.img`\n display: flex;\n border: ${(props: GlobalStyles) => {\n return `${\n props.theme.styles.CountryLangSelector.Img.default.borderWidth\n ? props.theme.styles.CountryLangSelector.Img.default.borderWidth\n : \"0.125rem\"\n } solid ${props.theme.colours.header.navUpperBackground.color}`\n }};\n border-radius: 50%;\n\n width: 1.375rem;\n height: 1.375rem;\n background: ${(props: GlobalStyles) => props.theme.colours.header.navUpperBackground.color};\n @media (min-width: ${breakpoints.values.md}px) {\n width: ${(props: GlobalStyles) => props.theme.styles.CountryLangSelector.Img.md.width};\n height: ${(props: GlobalStyles) => props.theme.styles.CountryLangSelector.Img.md.height};\n }\n`\n","import React, {useEffect} from \"react\"\nimport {formatTextTestIds} from \"@next/utils\"\nimport {breakpoints} from \"@next/themes\"\nimport {useScrollTrigger, Hidden, useMediaQuery} from \"@material-ui/core\"\nimport {\n useCountrySelectorOpenObservable,\n useModalsCloseObservable,\n useCountrySelectorRedirectToAlternativeLanguageObservable,\n} from \"@next/eventservice\"\nimport connect from \"./connect\"\nimport {Anchor} from \"../../config/constants\"\nimport {Wrapper, ImageContainer, Img, DrawerContainer} from \"./component\"\nimport {Country as CountryType} from \"../../models/countryselector\"\nimport {removeDeptFromSessionStorage} from \"../../utils/removeDeptFromSessionStorage\"\n\nexport type DefaultTemplatePropType = {\n locationText: string\n ROWLinkUrl: string\n ROWText: string\n ROWLinkText: string\n languageText: string\n selectedCountry: CountryType\n selectedLanguage: string\n selectLanguage: (language: string) => void\n shopNowText: string\n headerTitle: string\n closeText: string\n onCTAClick: () => void\n closePanel: () => void\n isOpeningFromBottom?: boolean\n isInternationalCountry: boolean\n stayText: string\n textAlignment: string\n}\n\nexport type CountryLangSelectorType = {\n territory: string\n textAlignment: string\n iconUrl: string\n isActive: boolean\n isShowOverlay: boolean\n isShowCountrySelector: boolean\n isInternationalCountry: boolean\n selectedLanguage: string\n selectedCountry: CountryType\n itemCount: number\n shopNowOnClick: (itemCount: number) => void\n openDrawer: (isShowOverlay?: boolean) => void\n closePanel: () => void\n deleteRecentQueries: () => void\n selectLanguage: (language: string) => void\n selectDefaultCountry: (countryCode: string) => void\n getCountriesListThunk: () => void\n isLoaded: boolean\n ROWLinkUrl: string\n redirectPageToAlternativeLanguage: () => void\n text: any\n hiddenProps?: any | {}\n isOpeningFromBottom?: boolean\n componentName: React.FC\n}\n\nexport const CountryLangSelector = ({\n territory,\n textAlignment,\n iconUrl,\n isShowCountrySelector,\n isActive,\n selectDefaultCountry,\n isShowOverlay,\n isInternationalCountry,\n selectedLanguage,\n selectedCountry,\n itemCount,\n shopNowOnClick,\n openDrawer,\n selectLanguage,\n closePanel,\n deleteRecentQueries,\n getCountriesListThunk,\n isLoaded,\n ROWLinkUrl,\n redirectPageToAlternativeLanguage,\n text,\n hiddenProps,\n isOpeningFromBottom,\n componentName,\n}: CountryLangSelectorType) => {\n const isMobile = useMediaQuery(`(max-width:${breakpoints.values.md}px)`)\n const trigger = useScrollTrigger({\n threshold: 0,\n })\n\n const ComponentName = componentName\n const templateProps = {\n ...text,\n selectedLanguage,\n selectedCountry,\n selectLanguage,\n ROWLinkUrl,\n closePanel,\n isInternationalCountry,\n textAlignment,\n isOpeningFromBottom,\n }\n\n const modalProps = {\n keepMounted: false,\n disablePortal: true,\n hideBackdrop: !isShowOverlay,\n disableScrollLock: isMobile,\n }\n\n useEffect(() => {\n if (trigger && isMobile) {\n closePanel()\n }\n }, [closePanel, isMobile, trigger])\n\n useEffect(() => {\n if (isShowCountrySelector && !isLoaded) {\n getCountriesListThunk()\n }\n }, [isShowCountrySelector, isLoaded, getCountriesListThunk])\n\n useCountrySelectorOpenObservable(data => {\n selectDefaultCountry(data.isoCountryCode)\n openDrawer(false)\n })\n\n useCountrySelectorRedirectToAlternativeLanguageObservable(() => {\n redirectPageToAlternativeLanguage()\n })\n\n useModalsCloseObservable(closePanel)\n\n const onCTAClick = () => {\n removeDeptFromSessionStorage()\n shopNowOnClick(itemCount)\n deleteRecentQueries()\n }\n\n const getAnchorDirection = (): Anchor => {\n return isOpeningFromBottom ? \"bottom\" : \"right\"\n }\n\n if (!isActive) return null\n return (\n <>\n
    \n \n openDrawer(true)}>\n \n \n \n
    \n \n \n \n \n \n \n )\n}\n\nexport default connect(CountryLangSelector)\n","/* istanbul ignore file */\nimport axiosInstance from \"axios\"\nimport logger from \"@next/core-logger\"\n\naxiosInstance.interceptors.request.use(\n config => {\n // Do something before request is sent\n logger.debug(\n `URL: ${config.url}, HEADERS: ${JSON.stringify(config.headers)}`,\n config.headers[\"x-next-correlation-id\"],\n )\n logger.info(config.url, config.headers[\"x-next-time-machine-date\"])\n // setAxiosDefaultsFromNextRequest(config)\n return config\n },\n error => {\n // Do something with request error\n logger.error(error, \"axios-request-error-server\")\n return Promise.reject(error)\n },\n)\n\naxiosInstance.interceptors.response.use(\n response => {\n // Any status code that lie within the range of 2xx cause this function to trigger\n // Do something with response data\n logger.debug(`${response.config.url} - ${response.status}`, response.headers[\"x-next-correlation-id\"])\n return response\n },\n error => {\n // Any status codes that falls outside the range of 2xx cause this function to trigger\n // Do something with response error\n logger.error(error, \"axios-response-error-server\")\n return Promise.reject(error)\n },\n)\n\nexport default axiosInstance\n","import {Item} from \"../../models/shoppingbag\"\nimport {SOLD_OUT} from \"../../config/constants\"\n\nconst total = (items: Item[]) => {\n if (!items.length) return\n\n return items\n .filter(x => x.StockStatus !== SOLD_OUT)\n .map(x => x.Quantity * +x.Price)\n .reduce((x, y) => x + y)\n .toFixed(2)\n}\n\nexport default {\n total,\n}\n","/* istanbul ignore file */\nimport React, {useState} from \"react\"\nimport {State} from \"ducks\"\nimport {connect} from \"react-redux\"\nimport axios from \"../../../server/core/xhr\"\nimport {Item, ShoppingBag} from \"../../../models/shoppingbag\"\nimport calculate from \"../../../utils/calculate\"\n\ntype Props = {itemCount: number; bag: ShoppingBag}\n\nconst btnStyle = {width: \"50%\"}\nconst style: React.CSSProperties = {\n border: \"3px solid white\",\n display: \"flex\",\n right: 0,\n margin: 0,\n padding: 0,\n}\nconst promotionalStyle = {color: \"black\", backgroundColor: \"#fff\"}\n\nconst addMultiBuyDiscount = (bag: ShoppingBag, multiBuyDiscount: boolean): ShoppingBag => {\n // Assumption: quantity > 2, for same item with multiple of 2 * discount;\n const discount = 1\n let quantity = 0\n bag.Items.forEach((x: Item) => {\n quantity += +x.Quantity\n })\n const totalDiscount = Math.floor(quantity / 2) * discount\n return {\n ...bag,\n MultiBuyDiscount: multiBuyDiscount ? totalDiscount : 0,\n MultiBuyDiscountFormatted: multiBuyDiscount ? `£${totalDiscount.toFixed(2)}` : \"\",\n }\n}\n\nconst addWelcomeChargesAndIncentives = (bag: ShoppingBag, welcomeOffer: boolean): ShoppingBag => {\n // Assumption: you can only get one type of incentive at a time\n const type = \"PRO\"\n let {ChargesAndIncentives} = bag\n if (!ChargesAndIncentives.map(x => x.Type).includes(type) && welcomeOffer) {\n const discount = 10\n const incentive = {\n AdditionalAmount: -discount,\n AdditionalAmountFormatted: `-£${discount.toFixed(2)}`,\n AdditionalCode: \"UKCO1\",\n MaximumOrderValue: 0,\n MinimumOrderValue: 15,\n OfferShortDescription: \"Welcome Offer\",\n OfferTypeDescription: \"Welcome Offer\",\n Type: \"PRO\",\n }\n\n ChargesAndIncentives.push(incentive)\n } else if (!welcomeOffer) {\n ChargesAndIncentives = ChargesAndIncentives.filter(x => x.Type !== type)\n }\n\n return {\n ...bag,\n ChargesAndIncentives: [...ChargesAndIncentives],\n }\n}\n\nconst calculateTotal = (bag: ShoppingBag): ShoppingBag => {\n const total = calculate.total(bag.Items) || 0\n const discount = bag.MultiBuyDiscount\n // get all the incentives\n const {ChargesAndIncentives} = bag\n let incentives = 0\n ChargesAndIncentives.forEach(x => {\n incentives += x.AdditionalAmount\n })\n\n const finalOrderValue = +total > 0 ? +total - discount + incentives : 0\n\n return {\n ...bag,\n FinalOrderValue: finalOrderValue,\n FinalOrderValueFormatted: `£${finalOrderValue.toFixed(2)}`,\n }\n}\n\nconst groupHelper = (items: Item[], newItem: Item) => {\n const foundItem = items.filter(\n x =>\n x.ItemID !== newItem.ItemID &&\n x.ItemNumber === newItem.ItemNumber &&\n x.SizeDescription === newItem.SizeDescription,\n )\n\n if (!foundItem.length) return [...items, newItem]\n const Quantity = newItem.Quantity + foundItem[0].Quantity\n\n const seletedItem = {...newItem, ItemID: foundItem[0].ItemID, Quantity}\n return [...items.filter(x => x.ItemID !== seletedItem.ItemID), seletedItem]\n}\n\nconst BagTriggers = ({itemCount, bag}: Props) => {\n const w: any = window\n const [multiBuyDiscount, setMultiBuyDiscount] = useState(false)\n const [inStoreMessaging, setinStoreMessaging] = useState(false)\n const [welcomeOffer, setWelcomeOffer] = useState(false)\n const [withAlternativeMsg, setAlternativeMsg] = useState(false)\n const [withSalePrice, setSalePrice] = useState(false)\n\n const handleAdd = async () => {\n // TODO this hsould in theory call the BAG_ADD event\n // CALLING THE BAG/GET ONLY TO HAVE A TEMPLATE FOR MOCKING A BAG/ADD\n // const data = {} as AddBagContractModel\n // LoadShoppingBagApiData(\"\", data)\n\n const response = await axios.get(\"/bag/get\")\n\n const result = response.data\n const ItemID = itemCount + 1\n const CistStoreName = inStoreMessaging ? \"LEICESTER - HIGH CROSS SHOPPING CENTRE\" : \"\"\n const withAlternative = withAlternativeMsg ? \"Alternative \" : \"\"\n const Description =\n itemCount > 0\n ? `${withAlternative} Multicoloured very long legging Sleeve Essential one ten packs (3mths-7yrs) `\n : `${withAlternative} ${result.ShoppingBag.Items[0].Description}`\n const ProductName = \"OLIVIA\"\n const TPSearchDescription = \"Sweetheart neck midi dress\"\n const bagHasProperties = Object.keys(bag).length\n let quantity = 0\n let newBag\n if (bagHasProperties) {\n bag.Items.forEach((x: Item) => {\n quantity += +x.Quantity\n })\n let SizeDescription = \"\"\n if (!itemCount) SizeDescription = \"10 S\"\n else SizeDescription = +quantity % 2 === 0 ? \"15 L\" : \"12 M\"\n\n const newItem = {\n ...result.ShoppingBag.Items[0],\n ItemID,\n SizeDescription,\n Description,\n TPSearchDescription,\n ProductName,\n CistStoreName,\n IsDiscount: withSalePrice,\n }\n newBag = {...bag, Items: groupHelper(bag.Items, newItem)}\n } else newBag = {...result.ShoppingBag}\n\n // apply discount\n newBag = addMultiBuyDiscount(newBag, multiBuyDiscount)\n // apply welcome offer incentives\n newBag = addWelcomeChargesAndIncentives(newBag, welcomeOffer)\n // recalculate total\n newBag = calculateTotal(newBag)\n\n w.subjects[\"$ SHOPPING_BAG_ADD_CALLBACK\"].next({\n success: true,\n data: {ShoppingBag: {...newBag, ItemCount: itemCount + 1}},\n })\n }\n\n const handleRemove = () => {\n // For Testing, remove the last items\n let newBag = {...bag}\n newBag.Items = bag.Items.filter((_, y) => y !== Object.keys(bag.Items).length - 1)\n let counter = 0\n newBag.Items.forEach(x => {\n counter += x.Quantity\n })\n\n // apply discount and recalculate total\n newBag = addMultiBuyDiscount(newBag, multiBuyDiscount)\n // apply welcome offer incentives\n newBag = addWelcomeChargesAndIncentives(newBag, welcomeOffer)\n // recalculate total\n newBag = calculateTotal(newBag)\n\n w.subjects[\"$ SHOPPING_BAG_ADD_CALLBACK\"].next({\n success: true,\n data: {ShoppingBag: {...newBag, ItemCount: counter}},\n })\n }\n return (\n <>\n
    \n \n \n {itemCount}\n
    \n
    \n
    \n setMultiBuyDiscount(!multiBuyDiscount)}\n />\n Multibuy discount\n
    \n
    \n setinStoreMessaging(!inStoreMessaging)}\n />\n In store messaging \n
    \n\n
    \n setWelcomeOffer(!welcomeOffer)}\n />\n Welcome offer\n
    \n
    \n setAlternativeMsg(!withAlternativeMsg)}\n />\n With Alt Description\n
    \n
    \n setSalePrice(!withSalePrice)}\n />\n With Sale Price \n
    \n
    \n \n )\n}\n\nconst mapStateToProps = (state: State) => {\n return {...state.shoppingBag}\n}\nexport default connect(mapStateToProps)(BagTriggers)\n","/* istanbul ignore file */\nimport React from \"react\"\nimport {State} from \"ducks\"\nimport {connect} from \"react-redux\"\n\nconst btnStyle = {width: \"50%\"}\n\nconst style: React.CSSProperties = {\n border: \"3px solid white\",\n right: 0,\n margin: 0,\n padding: 0,\n}\n\nconst Auth = ({bag, itemCount}) => {\n const handleLogin = () => {\n ;(window as any).subjects[\"$ SHOPPING_BAG_GET_CALLBACK\"].next({\n success: true,\n data: {ShoppingBag: {...bag, FirstName: \"testaccouant\", ItemCount: itemCount}},\n })\n }\n const handleLogout = () => {\n ;(window as any).subjects[\"$ SHOPPING_BAG_GET_CALLBACK\"].next({\n success: true,\n data: {ShoppingBag: {...bag, FirstName: null, ItemCount: itemCount}},\n })\n }\n return (\n
    \n \n \n
    \n )\n}\nconst mapStateToProps = (state: State) => {\n return {itemCount: state.shoppingBag.itemCount, bag: state.shoppingBag.bag}\n}\nexport default connect(mapStateToProps)(Auth)\n","/* istanbul ignore file */\nimport React, {useState} from \"react\"\n\nconst btnStyle = {width: \"50%\"}\n\nconst style: React.CSSProperties = {\n border: \"3px solid white\",\n right: 0,\n margin: 0,\n padding: 0,\n display: \"flex\",\n}\n\nconst CountrySelector = () => {\n const [countryCode, setCountryCode] = useState(\"MX\")\n\n const handleOpen = () => {\n ;(window as any).subjects[\"$ COUNTRY_SELECTOR_OPEN\"].next({\n isoCountryCode: countryCode,\n })\n }\n return (\n
    \n \n setCountryCode(e.target.value)} />\n
    \n )\n}\n\nexport default CountrySelector\n","// for testing purposes only\n/* istanbul ignore file */\n\nimport React, {useState, CSSProperties} from \"react\"\nimport BagTriggers from \"./BagTriggers\"\nimport Auth from \"./Auth\"\nimport CountrySelector from \"./countrySelector\"\n\nconst style: CSSProperties = {position: \"fixed\", right: \"0\"}\nconst btnStyle: CSSProperties = {background: \"red\", border: \"red\", color: \"white\"}\nconst containerStyle: CSSProperties = {\n right: \"1rem\",\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n}\nconst TestTools = () => {\n const [open, setState] = useState(false)\n return (\n
    \n \n {open && (\n
    \n \n \n \n
    \n )}\n
    \n )\n}\n\nexport default TestTools\n","import styled from \"styled-components\"\n\nexport const Container = styled.div`\n background-color: red;\n position: absolute;\n z-index: 2;\n color: white;\n right: 0;\n top: 0;\n padding: 0.1rem;\n`\n","import React, {useEffect, useState} from \"react\"\nimport Cookies from \"js-cookie\"\n\nimport {TIME_MACHINE_DATE_COOKIE} from \"../../config/constants\"\nimport {Container} from \"./components\"\nimport connect from \"./connect\"\n\nexport type TimeMachineDateProps = {\n useTimeMachineCookie: boolean\n}\n\nexport const TimeMachineDate = ({useTimeMachineCookie}: TimeMachineDateProps) => {\n const [dateString, setDateString] = useState(\"\")\n\n useEffect(() => {\n const timeMachineDateCookieValue = Cookies.get(TIME_MACHINE_DATE_COOKIE)\n if (timeMachineDateCookieValue && useTimeMachineCookie) {\n setDateString(timeMachineDateCookieValue)\n }\n }, [useTimeMachineCookie])\n\n if (!dateString) return null\n\n return TimeMachineDate: {dateString}\n}\n\nexport default connect(TimeMachineDate)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\n\nexport const mapStateToProps = (state: State) => ({\n useTimeMachineCookie: state.request.useTimeMachineCookie,\n})\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport type OuterContainerProps = {\n hide: boolean\n isMobile: boolean\n}\n\nexport const OuterContainer = styled.div`\n display: ${({hide, isMobile}) => (hide && isMobile ? \"none\" : \"flex\")};\n background-color: ${(props: GlobalStyles) => props.theme.colours.header.navUpperBackground.default};\n color: ${(props: GlobalStyles) => props.theme.colours.header.navUpperBackground.color};\n height: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.default.height};\n line-height: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.default.lineHeight};\n width: 100%;\n position: relative;\n z-index: 2;\n flex-direction: column;\n\n @media (min-width: ${breakpoints.values.md}px) {\n height: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.md.height};\n }\n`","import React, {useEffect} from \"react\"\nimport {useMediaQuery, useScrollTrigger} from \"@material-ui/core\"\nimport {useDispatch} from \"react-redux\"\nimport {useModalsCloseObservable} from \"@next/eventservice\"\nimport {breakpoints} from \"@next/themes\"\nimport Cookies from \"js-cookie\"\nimport {OuterContainer} from \"./component\"\nimport {closeAllPanels} from \"../../ducks/search\"\nimport {updateRecentQueries} from \"../../ducks/recents\"\nimport {\n VISITED_PAGES,\n LOCAL_STORAGE_ACTIVE_DEPT_NAME,\n SEARCH_BLUR_BREAKPOINT,\n STICKY_HEADER_SCROLL_TRIGGER,\n} from \"../../config/constants\"\n\nexport const UpperHeaderWrapper = (props: any) => {\n const dispatch = useDispatch()\n const hide = useScrollTrigger({threshold: STICKY_HEADER_SCROLL_TRIGGER})\n const isMobile = useMediaQuery(`(max-width:${breakpoints.values.md}px)`)\n\n const closePanelsOnBlur = useMediaQuery(`(min-width:${SEARCH_BLUR_BREAKPOINT})`)\n\n useModalsCloseObservable(closeAllPanels)\n\n useEffect(() => {\n const visitedPages = JSON.parse(localStorage.getItem(VISITED_PAGES) || \"[]\")\n if (visitedPages.length > 3) {\n Cookies.remove(LOCAL_STORAGE_ACTIVE_DEPT_NAME)\n localStorage.removeItem(VISITED_PAGES)\n } else {\n visitedPages.push({depth: visitedPages.length})\n localStorage.setItem(VISITED_PAGES, JSON.stringify(visitedPages))\n }\n }, [])\n\n useEffect(() => {\n dispatch(updateRecentQueries())\n }, [dispatch])\n\n const handleClick = () => {\n if (!closePanelsOnBlur) return\n\n dispatch(closeAllPanels())\n }\n\n return (\n \n {props.children}\n \n )\n}\n\nexport default UpperHeaderWrapper","import styled from \"styled-components\"\n\nexport type OuterContainerProps = {}\n\nexport const OuterContainer = styled.div``\n","import React from \"react\"\n\nimport {OuterContainer} from \"./component\"\n\nexport const LowerHeaderWrapper = (props: any) => {\n return (\n \n {props.children}\n \n )\n}\n\nexport default LowerHeaderWrapper\n","import React from \"react\"\nimport {Button as MUIButton} from \"@material-ui/core\"\nimport styled from \"styled-components\"\nimport {Theme} from \"../../models/theme\"\n\ninterface MuiButtonProps {\n themeType: string\n theme: Theme\n showOpacity: boolean\n}\n\nexport const Button = styled(({theme, themeType, isCountrySelectorCTA, showOpacity, ...rest}) => (\n \n))`\n && {\n width: 100%;\n height: 100%;\n font-family: ${({theme}) => `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`};\n font-size: ${({isCountrySelectorCTA}) => (isCountrySelectorCTA ? \"0.875rem\" : \"0.75rem\")};\n font-weight: 500;\n letter-spacing: 1px;\n border: ${({theme, themeType}) => theme.colours.form[`button${themeType}`].border};\n color: ${({showOpacity, theme, themeType}) =>\n showOpacity ? theme.colours.form[`button${themeType}`].color : \"black\"};\n opacity: ${({showOpacity}) => (showOpacity ? 0.5 : 1)};\n border-radius: ${({theme, themeType}) => theme.colours.form[`button${themeType}`].radius};\n background-color: ${({theme, themeType}) => theme.colours.form[`button${themeType}`].background};\n :hover {\n background-color: ${({theme, themeType}) => theme.colours.form[`button${themeType}`].background};\n }\n :focus {\n background-color: ${({theme, themeType}) => theme.colours.form[`button${themeType}`].background};\n }\n }\n span {\n color: ${({theme, themeType}) => theme.colours.form[`button${themeType}`].color};\n text-transform: uppercase;\n letter-spacing: 0.0625rem !important;\n }\n`\n","import React from \"react\"\nimport {ThemeType} from \"models/theme\"\n\nimport {Button} from \"./component\"\n\nexport type CTAProps = {\n enable: boolean\n text: string\n url?: string\n themeType: ThemeType\n onClick?: () => void\n testId?: string\n dataGaV1?: string\n dataGaV2?: string\n dataGaV3?: string\n rel?: string\n isCountrySelectorCTA?: boolean\n}\n\nconst CTA = ({\n enable,\n url,\n text,\n themeType,\n onClick,\n testId,\n dataGaV1,\n dataGaV2,\n dataGaV3,\n rel,\n isCountrySelectorCTA,\n}: CTAProps) => {\n return (\n \n {text}\n \n )\n}\n\nexport default CTA\n","import Cookies from \"js-cookie\"\n\nconst cookieName = \"NextSaleBagWarning\"\nconst readOnMainSite = \"readOnMainSite\"\nconst vipPath = \"/eoss\"\n\nexport const updateReadOnMainSite = () => {\n const value = Cookies.get(cookieName)\n if (!value) return false\n const replaceValue = value.replace(`${readOnMainSite}=False`, `${readOnMainSite}=True`)\n Cookies.set(cookieName, replaceValue)\n}\n\nexport const getReadOnMainSite = (): boolean => {\n const value = Cookies.get(cookieName)\n if (!value) return false\n const splitValue = value.split(\"&\").filter(key => key.includes(readOnMainSite))\n if (splitValue && splitValue.length > 0) {\n const splitEachVal = splitValue[0].split(\"=\")\n return splitEachVal[1] === \"False\"\n }\n return false\n}\n\nexport const pathToVipSite = (siteUrl: string) => `${siteUrl}${vipPath}`\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {getReadOnMainSite, pathToVipSite, updateReadOnMainSite} from \"../../utils/nextSaleBagWarning\"\n\nexport const mapStateToProps = (state: State) => {\n const {\n saleBagWarning: {title, textOne, textTwo, primaryButtonText, secondaryButtonText},\n } = state.text\n const {siteUrl} = state.request\n const openModal = getReadOnMainSite()\n\n return {\n openModal,\n siteUrl,\n text: {title, textOne, textTwo, primaryButtonText, secondaryButtonText},\n vipSitePath: pathToVipSite(siteUrl),\n }\n}\n\nexport const mergeProps = (state: any, _dispatch, ownProps) => ({\n ...state,\n ...ownProps,\n remainOnMainSiteAction: () => {\n updateReadOnMainSite()\n },\n})\n\nexport default connect(mapStateToProps, null, mergeProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const ModalContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n margin-right: -50%;\n transform: translate(-50%, -50%);\n background: ${(props: GlobalStyles) => props.theme.colours.header.navUpperBackground.color};\n color: ${(props: GlobalStyles) => props.theme.colours.text.default};\n padding: 1.375rem 1.5rem;\n width: 90%;\n min-height: 16.625rem;\n @media (min-width: ${breakpoints.values.md}px) {\n min-height: 12.5rem;\n width: 80%;\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n width: 55%;\n }\n`\n\nexport const ButtonContainer = styled.div`\n height: 2.75rem;\n font-size: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontSize};\n font-weight: ${(props: GlobalStyles) => props.theme.styles.CTAButton.default.fontWeight};\n button:first-child {\n margin-bottom: 0.75rem;\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n float: right;\n width: 90%;\n display: flex;\n margin-top: 0.5rem;\n\n button:first-child {\n margin-right: 1rem;\n margin-bottom: 0;\n }\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n height: 2.25rem;\n width: 80%;\n }\n`\n","import React, {useState} from \"react\"\nimport Typography from \"@material-ui/core/Typography\"\nimport CTA from \"../CTA\"\n\nimport Modal from \"../Modal\"\nimport connect from \"./connect\"\nimport {SaleBagWarning} from \"../../models/text\"\nimport {ModalContainer, ButtonContainer} from \"./components\"\n\ntype SaleBagWarningModalProps = {\n text: SaleBagWarning\n remainOnMainSiteAction: () => void\n vipSitePath: string\n openModal: boolean\n}\nexport const SaleBagWarningModal = ({\n text: {title, textOne, textTwo, primaryButtonText, secondaryButtonText},\n remainOnMainSiteAction,\n openModal = false,\n vipSitePath,\n}: SaleBagWarningModalProps) => {\n const [isOpen, setOpenModal] = useState(openModal)\n\n const remainOnMainSiteLogic = () => {\n remainOnMainSiteAction()\n setOpenModal(false)\n }\n\n const goToVipSite = () => {\n window.location.href = vipSitePath\n }\n return (\n \n \n {title}\n

    {textOne}

    \n

    {textTwo}

    \n \n \n \n \n
    \n
    \n )\n}\n\nexport default connect(SaleBagWarningModal)","import {connect} from \"react-redux\"\nimport {QuickLinkProps} from \"../QuickLink\"\nimport {State} from \"../../ducks\"\nimport {SupportedRegionTypes} from \"../../models/regions\"\n\nexport const mapStateToProps = (state: State) => {\n const {siteUrl} = state.request\n const quickLinkObject = state.data?.regions.find(region => region.type === SupportedRegionTypes.QuickLinks)\n const quickLinks = quickLinkObject?.elements\n .filter(link => link.type === \"link\")\n .map(({text, url, accessibilityText, icon}) => {\n return {\n text,\n url: `${siteUrl}${url}`,\n accessibilityText: accessibilityText ?? \"\",\n icon\n } as QuickLinkProps\n })\n\n return {\n quickLinks\n }\n}\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport const BannerContainer = styled.div`\n height: 1.5rem;\n min-height: 1.5rem;\n background: ${({theme}) => theme.colours.utilities.backgroundAccent};\n width: 100%;\n display: flex;\n @media (max-width: ${breakpoints.values.md}px) {\n display: none;\n }\n`\nexport const BannerInnerContainer = styled.div`\n display: flex;\n align-items: center;\n margin-left: auto;\n margin-right: auto;\n max-width: ${breakpoints.values.xl}px;\n width: ${breakpoints.values.xl}px;\n justify-content: space-between;\n\n padding: ${({theme}) => theme.styles.UpperHeader.default.padding};\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: ${({theme}) => theme.styles.UpperHeader.md.padding};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n padding: ${({theme}) => theme.styles.UpperHeader.lg.padding};\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n padding: ${({theme}) => theme.styles.UpperHeader.xl.padding};\n }\n`\nexport const BannerLink = styled.a`\n color: ${({theme}) => theme.colours.text.default};\n text-decoration: none;\n font-size: 0.75rem;\n font-weight: ${({theme}) => theme.colours.font.primary.medium.weight};\n`\nexport const BannerPromoText = styled.span`\n color: ${({theme}) => theme.colours.text.default};\n text-decoration: none;\n font-size: 0.75rem;\n font-weight: ${({theme}) => theme.colours.font.primary.medium.weight};\n`\nexport const QuickLinksContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n gap: 0.938rem;\n`\nexport const QuickLinkContainer = styled.div`\n display: flex;\n`\nexport const QuickLinkDivider = styled.div`\n height: 100%;\n width: 0.0625rem;\n border-left: ${({theme}) => theme.colours.plp.facetDivider};\n margin-left: 15px;\n`","import React from \"react\"\nimport connect from \"./connect\"\nimport {QuickLinkProps} from \"../QuickLink\"\nimport {BannerContainer, BannerInnerContainer, BannerLink, QuickLinksContainer, QuickLinkContainer, QuickLinkDivider, BannerPromoText} from \"./components\"\n\nexport type StaticHeaderBannerProps = {\n quickLinks: QuickLinkProps[] | undefined\n}\n\nexport const StaticHeaderBanner = ({quickLinks}: StaticHeaderBannerProps) => {\n return (\n \n \n \n \n {quickLinks?.map((quickLink, index) => (\n \n {quickLink.text}\n {index !== quickLinks.length - 1 && }\n \n ))}\n \n \n \n )\n}\n\nexport default connect(StaticHeaderBanner)\n","import React from \"react\"\nimport {useMediaQuery} from \"@material-ui/core\"\nimport BackToSiteBanner from \"../../../components/BackToSiteBanner\"\nimport CookieConsent from \"../../../components/CookieConsent\"\nimport WidescreenCookieConsent from \"../../../components/WidescreenCookieConsent\"\nimport CountryChangeConfirmPopup from \"../../../components/CountryChangeConfirmPopup\"\nimport {InnerContainer} from \"./components\"\nimport Brand from \"../../../components/Brand\"\nimport Search from \"../../../components/Search\"\nimport MyAccount from \"../../../components/MyAccount\"\nimport QuickLinksContainer from \"../../../components/QuickLinksContainer\"\nimport Favourites from \"../../../components/Favourites\"\nimport ShoppingBag from \"../../../components/ShoppingBag\"\nimport Checkout from \"../../../components/Checkout\"\nimport {\n HEADER_NAV_BAR_QUICK_LINKS,\n HEADER_NAV_BAR_SHOPPING_BAG_CHECKOUT,\n COUNTRY_SELECTOR_DRAWER_BREAKPOINT,\n} from \"../../../config/constants\"\nimport CountryLangSelector from \"../../../components/CountryLangSelector\"\nimport TestTools from \"../../../components/TestTools\"\nimport TimeMachineDate from \"../../../components/TimeMachineDate\"\nimport UpperHeaderWrapper from \"../../../components/UpperHeader\"\nimport LowerHeaderWrapper from \"../../../components/LowerHeader\"\nimport env from \"../../../config/env\"\nimport SaleBagWarningModal from \"../../../components/SaleBagWarningModal\"\nimport StaticHeaderBanner from \"../../../components/StaticHeaderBanner\"\n\nexport interface DefaultHeaderProps {\n textAlignment: string\n showModal: boolean\n closeModalHandler: () => void\n useDevEsi: boolean\n enableCookieConsent: boolean\n showStaticHeaderBanner: boolean\n showSaleWarningBag: boolean\n widescreenCookieConsent: boolean\n MeganavComponent: any\n}\n\nexport const DefaultHeader = ({\n textAlignment,\n showModal,\n closeModalHandler,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars-experimental\n useDevEsi,\n enableCookieConsent,\n showStaticHeaderBanner,\n showSaleWarningBag,\n widescreenCookieConsent,\n MeganavComponent,\n}: DefaultHeaderProps) => {\n const {DEVELOPMENT} = env\n const isOpeningFromBottom = !useMediaQuery(`(min-width:${COUNTRY_SELECTOR_DRAWER_BREAKPOINT})`)\n\n return (\n
    \n \n \n {showStaticHeaderBanner && }\n \n \n \n \n {!showStaticHeaderBanner && }\n \n \n \n \n {DEVELOPMENT && }\n \n {showSaleWarningBag && }\n \n \n \n \n \n {showModal && }\n {enableCookieConsent && (widescreenCookieConsent ? : )}\n
    \n )\n}\nexport default DefaultHeader\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport { GlobalStyles } from \"models/globalStyles\"\n\nexport const Header = styled.header`\n @media (max-width: ${breakpoints.values.md - 1}px) {\n display: flex;\n flex-direction: row-reverse;\n }\n`\nexport const VerticalDivider = styled.div`\n @media (max-width: ${breakpoints.values.md - 1}px) {\n border-left: 1px solid #eaeaea;\n height: 24px;\n color: #eaeaea;\n margin: 0px 4px;\n }\n`\n\nexport const InnerContainer = styled.nav`\n display: flex;\n height: 100%;\n background-color: inherit;\n z-index: 2;\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n max-width: ${breakpoints.values.xl}px;\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: 0.625rem 1rem;\n }\n\n @media (max-width: ${breakpoints.values.md - 1}px) {\n padding: 0.625rem 0.625rem 0.625rem 0;\n }\n\n .header-adaptive-brand {\n order: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.default.order};\n justify-content: center;\n display: flex;\n flex: 1;\n }\n .header-adaptive-my-account {\n order: ${(props: GlobalStyles) => props.theme.styles.MyAccount.default.order};\n }\n .header-adaptive-search {\n order: ${(props: GlobalStyles) => props.theme.styles.Search.default.order};\n }\n .header-adaptive-links {\n order: ${(props: GlobalStyles) => props.theme.styles.Quicklinks.default.order};\n }\n .header-adaptive-checkout {\n flex-shrink: 0;\n order: ${(props: GlobalStyles) => props.theme.styles.Checkout.Container.default.order};\n }\n .favourites {\n order: ${(props: GlobalStyles) => props.theme.styles.Favourites.default.order};\n }\n .countrylangselector {\n display: flex;\n align-items: center;\n width: auto;\n order: ${(props: GlobalStyles) => props.theme.styles.CountryLangSelector.default.order};\n min-width: auto;\n margin: 0.5rem;\n }\n\n .shoppingbag {\n order: ${(props: GlobalStyles) => props.theme.styles.ShoppingBag.default.order};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n height: ${(props: GlobalStyles) => props.theme.styles.UpperHeader.md.height};\n\n .header-adaptive-search {\n flex: 1;\n }\n\n .header-adaptive-brand {\n order: ${(props: GlobalStyles) => props.theme.styles.Brand.Container.md.order};\n }\n }\n\n @media (max-width: ${breakpoints.values.md - 1}px) {\n .header-adaptive-my-account {\n display: none;\n }\n\n .favourites {\n display: none;\n }\n\n .countrylangselector {\n display: none;\n }\n }\n`\n\nexport const Links = styled.div`\n display: flex;\n order: 3;\n flex: 1;\n justify-content: flex-end;\n align-items: center;\n @media (max-width: ${breakpoints.values.md}px) {\n flex: 0;\n }\n`\n","import React from \"react\"\nimport env from \"../../../config/env\"\nimport CookieConsent from \"../../../components/CookieConsent\"\nimport CountryChangeConfirmPopup from \"../../../components/CountryChangeConfirmPopup\"\nimport Brand from \"../../../components/Brand\"\nimport Search from \"../../../components/Search\"\nimport MyAccount from \"../../../components/MyAccount\"\nimport {InnerContainer, Header, Links, VerticalDivider} from \"./components\"\nimport UpperHeaderWrapper from \"../../../components/UpperHeader\"\nimport LowerHeaderWrapper from \"../../../components/LowerHeader\"\nimport QuickLinksContainer from \"../../../components/QuickLinksContainer\"\nimport Favourites from \"../../../components/Favourites\"\nimport ShoppingBag from \"../../../components/ShoppingBag\"\nimport CountryLangSelector from \"../../../components/CountryLangSelector\"\nimport TestTools from \"../../../components/TestTools\"\nimport TimeMachineDate from \"../../../components/TimeMachineDate\"\nimport SaleBagWarningModal from \"../../../components/SaleBagWarningModal\"\nimport BackToSiteBanner from \"../../../components/BackToSiteBanner\"\n\nexport interface BurgerMenuHeaderProps {\n textAlignment: string\n showModal: boolean\n closeModalHandler: () => void\n useDevEsi: boolean\n enableCookieConsent: boolean\n showStaticHeaderBanner: boolean\n showSaleWarningBag: boolean\n MeganavComponent: any\n}\n\nexport const BurgerMenuHeader = ({\n textAlignment,\n showModal,\n closeModalHandler,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars-experimental\n useDevEsi,\n enableCookieConsent,\n showSaleWarningBag,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars-experimental\n showStaticHeaderBanner,\n MeganavComponent,\n}: BurgerMenuHeaderProps) => {\n const {DEVELOPMENT} = env\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {DEVELOPMENT && }\n \n {showSaleWarningBag && }\n \n \n \n \n \n {showModal && }\n {enableCookieConsent && }\n
    \n )\n}\n\nexport default BurgerMenuHeader\n","/* eslint-disable */\nexport default function isTouchDevice() {\n return (\n !!(\n typeof window !== \"undefined\" &&\n (\"ontouchstart\" in window ||\n ((window as any).DocumentTouch && typeof document !== \"undefined\" && document instanceof (window as any).DocumentTouch))\n ) || !!(typeof navigator !== \"undefined\" && (navigator.maxTouchPoints || navigator.msMaxTouchPoints))\n )\n}\n","import {Column} from \"../../models/secondary-nav\"\nimport {ExcludeFrom, ExcludeFromValues} from \"../../models/excludeFrom\"\n\nexport const excludeFromAccordion = (exclude: ExcludeFromValues) => exclude === \"NarrowView\"\nexport const excludeFromDrawer = (exclude: ExcludeFromValues) => exclude === \"WideView\"\n\ninterface ExcludableItem {\n excludeFrom?: ExcludeFrom\n}\nexport const filterByExcludeFrom = (showAsDrawer: boolean) => (item: ExcludableItem) =>\n !item.excludeFrom ||\n (showAsDrawer && !item.excludeFrom.some(excludeFromDrawer)) ||\n (!showAsDrawer && !item.excludeFrom.some(excludeFromAccordion))\n\nexport const filterColumnsByExcludeFrom = (showAsDrawer: boolean, columns: Column[]) =>\n columns\n ? columns.filter(filterByExcludeFrom(showAsDrawer)).map(column => ({\n ...column,\n items: column.items.filter(filterByExcludeFrom(showAsDrawer)).map(category => ({\n ...category,\n items: category.items.filter(filterByExcludeFrom(showAsDrawer)),\n })),\n }))\n : []\n","import {connect} from \"react-redux\"\nimport {screenIsSmallerThanLarge} from \"../../utils/window\"\nimport {State} from \"../../ducks\"\nimport {setPrimaryNavIndex, setIsInPrimaryNav} from \"../../ducks/primary-nav\"\nimport {getSecondaryNavDataThunk} from \"../../ducks/secondary-nav\"\nimport {ExcludeFrom} from \"../../models/excludeFrom\"\nimport {excludeFromAccordion, excludeFromDrawer} from \"../../utils/excludeFrom\"\n\nconst classNames = (\n firstItemAccordion: boolean,\n firstItemDrawer: boolean,\n lastItemAccordion: boolean,\n lastItemDrawer: boolean,\n excludeFrom?: ExcludeFrom,\n) => {\n let classes = \"\"\n\n classes += firstItemAccordion ? \"first-child-accordion \" : \"\"\n classes += firstItemDrawer ? \"first-child-drawer \" : \"\"\n classes += lastItemAccordion ? \"last-child-accordion \" : \"\"\n classes += lastItemDrawer ? \"last-child-drawer \" : \"\"\n\n if (!excludeFrom || excludeFrom.length <= 0) {\n return classes\n }\n\n classes += excludeFrom.some(excludeFromAccordion) ? \"hiddenAccordion \" : \"\"\n classes += excludeFrom.some(excludeFromDrawer) ? \"hiddenDrawer \" : \"\"\n return classes\n}\n\nexport const mapStateToProps = (state: State) => {\n const {items, activeDepartmentIndex, isInPrimaryNav} = state.primarynav\n const dir = state.textAlignment\n const {rememberSelectedDepartment} = state.settings\n\n if (!items || items.length === 0) {\n throw new Error(\"Meganav: there is no primary data for meganav\")\n }\n\n const firstVisibleAccordionIndex = items.findIndex(\n item => !item.excludeFrom || !item.excludeFrom.some(excludeFromAccordion),\n )\n const firstVisibleDrawerIndex = items.findIndex(\n item => !item.excludeFrom || !item.excludeFrom.some(excludeFromDrawer),\n )\n\n const lastItems = items.slice().reverse()\n\n const lastVisibleAccordionIndex =\n items.length -\n 1 -\n lastItems.findIndex(item => !item.excludeFrom || !item.excludeFrom.some(excludeFromAccordion))\n const lastVisibleDrawerIndex =\n items.length - 1 - lastItems.findIndex(item => !item.excludeFrom || !item.excludeFrom.some(excludeFromDrawer))\n\n const displayItems = items?.map((item, index) => {\n return {\n ...item,\n classNames: classNames(\n index === firstVisibleAccordionIndex,\n index === firstVisibleDrawerIndex,\n index === lastVisibleAccordionIndex,\n index === lastVisibleDrawerIndex,\n item?.excludeFrom,\n ),\n }\n })\n\n return {dir, items: displayItems, activeDepartmentIndex, isInPrimaryNav, rememberSelectedDepartment}\n}\n\nexport const mergeProps = (state: any, {dispatch}: any, ownProps) => ({\n ...state,\n ...ownProps,\n setActiveItem: (index: number, item: {title: string; path: string}): void => {\n const isAlreadyActive = index >= 0\n const isNotTheSameIndex = state.activeDepartmentIndex !== index\n if ((isAlreadyActive && isNotTheSameIndex) || screenIsSmallerThanLarge()) {\n dispatch(setPrimaryNavIndex(index, item.title))\n if (index > -1) dispatch(getSecondaryNavDataThunk(item.path))\n }\n },\n setIsInPrimaryNav: value => {\n dispatch(setIsInPrimaryNav(value))\n },\n})\n\nexport default connect(mapStateToProps, null as any, mergeProps)\n","import styled from \"styled-components\"\n\nexport const Container = styled.ul<{loaded: boolean}>`\n width: 100%;\n height: 100%;\n border-top-style: none;\n display: flex;\n opacity: var(--display-primary-nav, 0);\n align-items: center;\n flex-direction: row;\n justify-content: ${props => props.theme.styles.PrimaryNav.md.justifyContent};\n padding: 0;\n margin: 0;\n -ms-overflow-style: none;\n overflow-x: scroll;\n overflow-y: hidden;\n scroll-behavior: ${({loaded}) => (loaded ? \"smooth\" : \"auto\")};\n ::-webkit-scrollbar {\n display: none;\n }\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n scrollbar-width: none; /* Firefox */\n`\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport type ContainerProps = {\n isActive: boolean\n marketingStyles: {linkColour?: string; fontWeight?: string}\n}\n\n// todo: template-tech-debt\nexport const Container = styled.li`\n list-style: none;\n cursor: pointer;\n flex-shrink: 0;\n height: 100%;\n padding-right: var(--padding, 0);\n padding-left: var(--padding, 0);\n z-index: ${({isActive}) => (isActive ? 4 : 0)};\n && a {\n background: ${({isActive, theme}) => (isActive ? theme.colours.header.navLowerBackground.active : \"inherit\")};\n border-bottom: ${({isActive, theme}) =>\n isActive ? theme.styles.SnailItem.md.border : theme.styles.SnailItem.xs.border};\n border-top: ${props => props.theme.styles.SnailItem.xs.border};\n padding: ${props => props.theme.styles.SnailItem.xs.padding};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n color: ${({isActive, theme, marketingStyles: {linkColour}}) =>\n isActive\n ? theme.colours.text.navigation.linkActive\n : linkColour || theme.colours.text.navigation.link} !important;\n text-decoration: none;\n font-size: ${props => props.theme.styles.SnailItem.xs.fontSize};\n letter-spacing: 0.0625rem;\n font-family: ${({theme}) =>\n `${theme.colours.font.primary[theme.styles.PrimaryNav.default.fontType].family}, ${\n theme.colours.font.default\n }`};\n font-weight: ${({theme, marketingStyles: {fontWeight}}) => fontWeight || theme.styles.PrimaryNav.xs.fontWeight};\n text-transform: ${props => props.theme.styles.PrimaryNav.default.textTransform};\n\n @media (min-width: ${breakpoints.values.xl}px) {\n padding: ${props => props.theme.styles.SnailItem.xl.padding};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n font-weight: ${({theme, marketingStyles: {fontWeight}}) =>\n fontWeight || theme.styles.PrimaryNav.lg.fontWeight};\n &:hover > i {\n display: block;\n }\n }\n\n @media (max-width: ${breakpoints.values.lg - 1}px) {\n i {\n display: ${({isActive}) => (isActive ? \"block\" : \"none\")};\n }\n }\n &:focus {\n outline-offset: -2px;\n }\n }\n\n @media (max-width: ${breakpoints.values.lg - 1}px) {\n &.hiddenAccordion {\n display: none;\n }\n\n &.first-child-accordion {\n padding-left: ${props => props.theme.styles.PrimaryNav.xs.padding};\n }\n &.last-child-accordion {\n padding-right: ${props => props.theme.styles.PrimaryNav.xs.padding};\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n &.first-child-accordion {\n padding-left: ${props => props.theme.styles.PrimaryNav.md.padding};\n }\n &.last-child-accordion {\n padding-right: ${props => props.theme.styles.PrimaryNav.md.padding};\n }\n }\n\n @media (max-width: ${breakpoints.values.md - 1}px) {\n &.first-child-accordion {\n & a {\n padding-left: ${props => props.theme.styles.PrimaryNav.lg.padding};\n }\n }\n &.last-child-accordion {\n & a {\n padding-right: ${props => props.theme.styles.PrimaryNav.lg.padding};\n }\n }\n }\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n &.hiddenDrawer {\n display: none;\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n &.first-child-drawer {\n padding-left: ${props => props.theme.styles.PrimaryNav.md.padding};\n }\n &.last-child-drawer {\n padding-right: ${props => props.theme.styles.PrimaryNav.md.padding};\n }\n }\n\n @media (min-width: ${breakpoints.values.xl}px) {\n &.first-child-drawer {\n padding-left: ${props => props.theme.styles.PrimaryNav.xl.padding};\n }\n &.last-child-drawer {\n padding-right: ${props => props.theme.styles.PrimaryNav.xl.padding};\n }\n }\n }\n`\nexport const Title = styled.div`\n color: ${({isActive, theme, marketingStyles: {linkColour}}) =>\n isActive ? theme.colours.text.navigation.linkActive : linkColour || theme.colours.text.navigation.link};\n line-height: 1.5rem;\n letter-spacing: ${props => props.theme.styles.SnailItem.default.letterSpacing};\n`\n\n// only rendered when the parent is on hover state as it sets display to block instead of none below\nexport const Arrow = styled.i`\n position: absolute;\n bottom: 0;\n width: 0;\n height: 0;\n border-left: 0.5rem solid transparent;\n border-right: 0.5rem solid transparent;\n border-bottom: 0.5rem solid white;\n display: none;\n`\n","import React, {useEffect, useRef} from \"react\"\nimport {formatTextTestIds} from \"@next/utils\"\nimport {Arrow, Container, Title} from \"./component\"\nimport {PrimaryNavItem} from \"../../models/primary-nav\"\nimport connect from \"./connect\"\nimport {NAV_BAR} from \"../../config/constants\"\n\nexport type Data = {index: number; item: {title: string; path: string}}\n\nexport type SnailItemProps = PrimaryNavItem & {\n isActive: boolean\n index: number\n path: string\n handleClick: (event: React.MouseEvent, ref: React.RefObject, data: Data) => void\n handleMouseEnter: (event: React.MouseEvent, ref: React.RefObject, data: Data) => void\n handleKeyboardEnter: (event: React.KeyboardEvent, ref: React.RefObject, data: Data) => void\n siteUrl: string\n classNames: string\n showSecondaryNavArrow: boolean\n}\n\nexport const SnailItem = ({\n index,\n isActive,\n target,\n title,\n path,\n handleClick,\n handleMouseEnter,\n handleKeyboardEnter,\n linkColour,\n fontWeight,\n siteUrl,\n classNames,\n showSecondaryNavArrow,\n mapping,\n pin,\n}: SnailItemProps) => {\n const ref = React.useRef(null)\n const linkRef = React.useRef(null)\n\n // Return focus to primary nav when secondary nav closes\n const hasBeenActiveRef = useRef(false)\n useEffect(() => {\n if (isActive && linkRef.current) {\n hasBeenActiveRef.current = true\n } else {\n if (hasBeenActiveRef.current && linkRef.current) {\n linkRef.current.focus()\n }\n hasBeenActiveRef.current = false\n }\n }, [isActive])\n\n const hijackMouseEnter = (event: React.MouseEvent): void => {\n handleMouseEnter(event, ref, {item: {path, title}, index})\n }\n const hijackClick = (event: React.MouseEvent): void => {\n handleClick(event, ref, {item: {path, title}, index})\n }\n\n const hijackKeyEnter = (event: React.KeyboardEvent): void => {\n handleKeyboardEnter(event, ref, {item: {path, title}, index})\n }\n\n const marketingStyles = {\n linkColour,\n fontWeight,\n }\n\n const linkProps = {\n \"data-ga-v1\": NAV_BAR,\n \"data-ga-v2\": title,\n }\n\n return (\n \n \n \n {/* Todo: Tech Debt - PBI 46530 */}\n {title.toLowerCase()}\n \n {showSecondaryNavArrow && }\n \n \n )\n}\n\nexport default connect(SnailItem)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\n\nexport const mapStateToProps = (state: State) => ({\n siteUrl: state.request.siteUrl,\n showSecondaryNavArrow: state.compositionSettings.showSecondaryNavArrow,\n})\n\nexport default connect(mapStateToProps)\n","import React from \"react\"\nimport {Transition} from \"react-transition-group\"\n\nexport type FadeInAnimationProps = {\n show: boolean\n children: React.ReactNode\n timeout: number\n}\n\nexport const FadeInAnimation = ({show, children, timeout}: FadeInAnimationProps) => {\n const defaultStyle = {\n transition: `opacity ${timeout}ms ease-in-out`,\n opacity: 0,\n }\n\n const transitionStyles = {\n entering: {opacity: 1},\n entered: {opacity: 1},\n exiting: {opacity: 0},\n exited: {opacity: 0},\n }\n\n return (\n \n {state =>
    {children}
    }\n
    \n )\n}\n\nexport default FadeInAnimation\n","import styled from \"styled-components\"\n\nexport type ContainerProps = {\n rotationDegrees: number\n width: number\n}\n\nexport const Container = styled.img`\n transform: ${({rotationDegrees}) => `rotateZ(${rotationDegrees}deg)`};\n cursor: pointer;\n width: ${({width}) => `${width}rem`};\n`\n","import React from \"react\"\nimport {Container} from \"./component\"\n\nexport type IconProps = {\n imageUrl: string\n altText: string\n rotationDegrees?: number\n width?: number\n}\n\nconst NavIcon = ({imageUrl, altText, rotationDegrees = 0, width = 0.4375}: IconProps) => (\n \n)\n\nexport default NavIcon\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport type GradientProps = {\n flip: boolean\n isShown: boolean\n isTouchDevice: boolean\n}\n\nconst gradientLeftMargin = (flip: boolean, isTouchDevice: boolean) => {\n if (flip) {\n if (isTouchDevice) {\n return \"-1rem\"\n }\n return \"-2rem\"\n }\n return \"0\"\n}\n\nconst gradientRightMargin = (flip: boolean, isTouchDevice: boolean) => {\n if (flip) return \"0\"\n if (isTouchDevice) {\n return \"-1rem\"\n }\n return \"-2rem\"\n}\n\nexport const Gradient = styled.div`\n transition: width 0.15s;\n z-index: 3;\n width: ${({isShown}) => (isShown ? \"1rem\" : \"0\")};\n height: 1rem;\n transform: rotateZ(${({flip}) => (flip ? \"180deg\" : \"0\")});\n margin-left: ${props => gradientLeftMargin(props.flip, props.isTouchDevice)};\n margin-right: ${props => gradientRightMargin(props.flip, props.isTouchDevice)};\n background: ${props => props.theme.styles.PrimaryNav.md.gradient};\n\n @media (min-width: ${breakpoints.values.lg}px) {\n background: ${props => props.theme.styles.PrimaryNav.lg.gradient};\n }\n`\nexport type ContainerProps = {doRotate: boolean}\nexport const Container = styled.div`\n pointer-events: none;\n width: 1rem;\n height: 100%;\n display: flex;\n justify-content: left;\n align-items: center;\n transform: rotateY(${({doRotate}) => (doRotate ? \"180deg\" : \"0\")});\n z-index: 3;\n && button {\n pointer-events: auto;\n width: 1.5rem;\n border-radius: 0;\n height: 100%;\n padding: 0;\n span:first-child {\n width: auto;\n }\n background: ${props => props.theme.colours.header.navLowerBackground.default};\n @media (min-width: ${breakpoints.values.lg}px) {\n background: ${props => props.theme.colours.header.navLowerBackground.desktop};\n }\n }\n`\n","import React, {useEffect, useState} from \"react\"\nimport {IconButton} from \"@material-ui/core\"\nimport FadeInAnimation from \"../FadeInAnimation\"\nimport NavIcon from \"../NavIcon\"\nimport {Container, Gradient} from \"./component\"\nimport touchDevice from \"../../utils/is-touch-device\"\nimport connect from \"./connect\"\nimport {getMeganavIconPath} from \"../../utils/getCdnUrl\"\n\nexport type ChevronProps = {\n isRTL?: boolean\n placement: string\n handleClick: (event: React.MouseEvent) => void\n show: boolean\n text: any\n realm: string\n}\n\nconst Chevron = ({isRTL = false, placement, handleClick, show, text, realm}: ChevronProps) => {\n const [onClient, setOnClient] = useState(false)\n useEffect(() => {\n setOnClient(true)\n }, [])\n const isTouchDevice = touchDevice()\n const isLeft = placement === \"left\"\n const rotate = !isLeft\n\n return (\n \n \n {!isTouchDevice && onClient && (\n \n \n \n )}\n \n \n \n )\n}\n\nexport default connect(Chevron)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {REALM_HEADER} from \"../../config/constants\"\n\nexport const mapStateToProps = (state: State) => {\n const realm = state.request.headers![REALM_HEADER] as string\n return {\n realm,\n text: {chevronIconAltText: state.text.chevron.chevronIconAltText},\n }\n}\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\n\nexport type ContainerProps = {\n canScrollLeft: boolean\n canScrollRight: boolean\n}\n\nexport const Container = styled.div`\n display: flex;\n height: 100%;\n width: 100%;\n position: relative;\n`\nexport type PositionedChevronProps = {\n isright: boolean\n}\n\nexport const PositionedChevron = styled.div`\n height: 100%;\n position: absolute;\n pointer-events: none;\n right: ${props => (props.isright ? 0 : \"unset\")};\n z-index: 1;\n padding: 0.8rem 0px;\n`\n","import isTouchDevice from \"../is-touch-device\"\n\ndeclare let window: any\ndeclare let document: any\n\nexport function calcPrimaryNavLinkMetrics() {\n const primaryNavLinkMetrics: any = []\n const snailTrailElement = document.getElementById(\"snail-trail-container\")\n const meganavElement = document.getElementById(\"platform_modernisation_meganav\")\n const childrenArray = snailTrailElement.children\n\n if (document.documentElement.clientWidth > 1024) {\n meganavElement.style.setProperty(\"--padding\", \"0px\")\n return\n }\n\n let runningWidth = 0\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < childrenArray.length; i++) {\n const $link = childrenArray[i]\n const text = $link.textContent\n const textWidth = ($link.childNodes[0] as HTMLElement).clientWidth\n\n const textStartAt = runningWidth\n const textEndAt = runningWidth + textWidth\n\n let noChangeFrom = textStartAt + textWidth * 0.4\n let noChangeTo = textEndAt - textWidth * 0.3\n if (noChangeFrom >= noChangeTo) {\n // This can happen with shorter dept names such as \"Men\" and \"Sale\", just use the mid-point instead\n noChangeFrom = textStartAt + textWidth / 2\n noChangeTo = textStartAt + textWidth / 2\n }\n\n runningWidth += textWidth\n\n primaryNavLinkMetrics.push({\n $link,\n text,\n textWidth,\n textStartAt,\n textEndAt,\n noChangeFrom,\n noChangeTo,\n })\n }\n updatePrimaryNavLinkSpacing(primaryNavLinkMetrics, meganavElement)\n}\n\nexport function updatePrimaryNavLinkSpacing(primaryNavLinkMetrics, snailTrailElement) {\n const screenWidth = document.getElementById(\"snail-trail-container\").clientWidth\n let newMargin = 0\n let increaseMarginBy = 0\n let distributeOver = 0\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < primaryNavLinkMetrics.length; i++) {\n const link = primaryNavLinkMetrics[i]\n if (link.textEndAt < screenWidth) {\n // This link plus including default margins is completely contained within the view\n\n // Last links should distribute the remaining available space over all links\n if (i === primaryNavLinkMetrics.length - 1) {\n increaseMarginBy = screenWidth - link.textEndAt\n distributeOver = primaryNavLinkMetrics.length * 2\n newMargin = increaseMarginBy / distributeOver\n break\n }\n // Continue and find the first link that extends beyond the screen bounds\n // eslint-disable-next-line no-continue\n continue\n }\n\n // This is the first link that extends beyond the screens bounds\n if (screenWidth < link.noChangeFrom) {\n // If screen boundry is too near to the start of the link (we need at least a few chars trailing off the scree) then we much use the previous link instead\n if (i > 0) {\n // increase margins using the previous link such that the previous link is positioned with the last few characters trailing off the screen\n const prevLink = primaryNavLinkMetrics[i - 1]\n\n increaseMarginBy = screenWidth - prevLink.noChangeTo\n distributeOver = i * 2 - 1\n newMargin = increaseMarginBy / distributeOver\n } else {\n // No previous link to break on, fallback to default margin\n newMargin = 0\n }\n } else if (screenWidth > link.noChangeTo) {\n // If screen boundry is nearer to the end of the link\n increaseMarginBy = screenWidth - link.noChangeTo // increase margins such that the link is positioned with the last few characters trailing off the screen\n distributeOver = i * 2 + 1\n newMargin = increaseMarginBy / distributeOver\n } else {\n // Use default margin as we are somewhere in the middle of the link, ie. not close enough to the start or end to think about increasing margins\n newMargin = 0\n }\n // And we're done, no need to consider other links outside the screen bounds\n break\n }\n\n if (newMargin !== 0) {\n // eslint-disable-next-line operator-assignment\n newMargin = newMargin - 0.1 // Apply a slight fudge to ensure that we don't start scrolling unnecessarily\n // eslint-disable-next-line prefer-template, radix\n newMargin = parseInt(\"\" + newMargin * 10) / 10 // Round value\n }\n\n // eslint-disable-next-line prefer-template\n snailTrailElement.style.setProperty(\"--padding\", newMargin.toFixed(2).toString() + \"px\")\n document.getElementById(\"platform_modernisation_meganav\").style.setProperty(\"--display-primary-nav\", \"1\")\n}\n\nfunction initialiseCalculatePadding() {\n if (!isTouchDevice() || document.documentElement.clientWidth > 1024) {\n document.getElementById(\"platform_modernisation_meganav\").style.setProperty(\"--display-primary-nav\", \"1\")\n } else {\n // eslint-disable-next-line no-lonely-if\n if (document.fonts !== undefined) {\n document.fonts\n .load('1rem \"AzoSansRegular\"')\n .then(calcPrimaryNavLinkMetrics)\n .catch(calcPrimaryNavLinkMetrics)\n } else {\n calcPrimaryNavLinkMetrics()\n }\n }\n}\n\nexport const toString = () => {\n const init = {\n init: initialiseCalculatePadding.name,\n }\n return `\n ${isTouchDevice.toString()}\n ${calcPrimaryNavLinkMetrics.toString()}\n ${updatePrimaryNavLinkSpacing.toString()}\n ${initialiseCalculatePadding.toString()}\n \n var platmodMeganavInitObj = ${JSON.stringify(init)};\n var fn = window[platmodMeganavInitObj.init];\n if (typeof fn === \"function\") fn();\n`\n}\n","import React, {useState, useCallback, useEffect, ReactNode, RefObject} from \"react\"\nimport Chevron from \"../Chevron\"\nimport {Container, PositionedChevron} from \"./component\"\nimport touchDevice from \"../../utils/is-touch-device\"\nimport {calcPrimaryNavLinkMetrics} from \"../../utils/calculatePrimaryNavPadding\"\n\nexport type TabsScrollProps = {\n dir: string\n snailTrailRef: RefObject\n children: ReactNode\n onMouseLeave: (e: any) => any\n}\n\nexport const TabsScroll = ({dir, snailTrailRef, children, onMouseLeave}: TabsScrollProps) => {\n const [canScrollRight, setCanScrollRight] = useState(false)\n const [canScrollLeft, setCanScrollLeft] = useState(false)\n const isTouchDevice = touchDevice()\n const setChevronVisibility = useCallback((): void => {\n if (snailTrailRef) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const snailTrailElement = snailTrailRef.current as HTMLUListElement\n\n const scrollLeftPixels = Math.abs(snailTrailElement.scrollLeft)\n // We can scroll left if there is room on the left to scroll\n // Chrome has a rounding issue in rtl mode where this ends up being 1px off,\n const scrollLeft = scrollLeftPixels - 1 > 0\n\n // scrollRight doesn't exist, so calculate total width - how far we have scrolled + the display width\n const scrollRight =\n snailTrailElement.scrollWidth - (scrollLeftPixels + snailTrailElement.clientWidth) - 1 > 0\n\n setCanScrollRight(scrollRight)\n setCanScrollLeft(scrollLeft)\n }\n }, [snailTrailRef])\n\n useEffect(() => {\n if (!canScrollRight || !isTouchDevice) {\n return\n }\n\n let resizeTimer\n const debounceObserver = () => {\n clearTimeout(resizeTimer)\n resizeTimer = setTimeout(() => {\n calcPrimaryNavLinkMetrics()\n }, 50)\n }\n\n window.addEventListener(\"resize\", debounceObserver)\n\n return () => {\n window.removeEventListener(\"resize\", debounceObserver)\n }\n }, [canScrollRight, isTouchDevice])\n\n useEffect(() => {\n setChevronVisibility()\n window.addEventListener(\"resize\", setChevronVisibility)\n\n return function cleanup() {\n window.removeEventListener(\"resize\", setChevronVisibility)\n }\n }, [setChevronVisibility])\n\n const handleScroll = (): void => {\n setChevronVisibility()\n }\n\n const handleChevronClick = (placement: string): void => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const snailTrailElement = snailTrailRef.current as HTMLUListElement\n\n const {width: snailTrailMaxWidth} = snailTrailElement.getBoundingClientRect()\n const amountOfPixelsToScrollBy = snailTrailMaxWidth / 2\n\n if (placement === \"right\") {\n // if there is only one chevron visible\n // then scroll the header as screen width minus the width of a chevron\n snailTrailElement.scrollLeft += amountOfPixelsToScrollBy // - (!canScrollLeft ? CHEVRON_WIDTH : 0)\n } else {\n snailTrailElement.scrollLeft -= amountOfPixelsToScrollBy // - (!canScrollRight ? CHEVRON_WIDTH : 0)\n }\n }\n\n const isRTL = dir === \"rtl\"\n const rightPlacement = isRTL ? \"left\" : \"right\"\n const leftPlacement = isRTL ? \"right\" : \"left\"\n\n const hijackClickRight = () => {\n handleChevronClick(rightPlacement)\n }\n\n const hijackClickLeft = () => {\n handleChevronClick(leftPlacement)\n }\n\n return (\n \n \n \n \n {children}\n \n \n \n \n )\n}\n\nexport default TabsScroll\n","import {screenIsBiggerOrEqualToLarge} from \"../window\"\nimport {CHEVRON_WIDTH, DRAWER_GAP} from \"../../config/constants\"\n\nexport const calcScrollOffset = (\n event: React.MouseEvent,\n clickedElement: HTMLElement,\n snapPosition: number,\n): number => {\n const {right: rightBorder, left: leftBorder, width: elementWidth} = clickedElement.getBoundingClientRect()\n const cursorPosition = event.clientX\n const drawerEnd = window.innerWidth - snapPosition - (screenIsBiggerOrEqualToLarge() ? DRAWER_GAP : 0)\n const cursorToRightBorderOffset = rightBorder - cursorPosition\n const cursorToDrawerEndOffset = cursorPosition - drawerEnd\n const linkSize = rightBorder - leftBorder\n const offset = cursorToDrawerEndOffset + cursorToRightBorderOffset + (event.type === \"click\" ? 0 : linkSize / 2)\n const drawerStart = CHEVRON_WIDTH\n if (rightBorder <= drawerEnd && Math.sign(offset) === 1) {\n return 0\n }\n if (\n leftBorder > drawerStart + (screenIsBiggerOrEqualToLarge() ? DRAWER_GAP + CHEVRON_WIDTH * 2 : 0) &&\n Math.sign(offset) === -1\n ) {\n return 0\n }\n if (Math.sign(offset) === -1) {\n return -elementWidth\n }\n return offset\n}\n\nexport default calcScrollOffset\n","import {SELECTED_DEPARTMENT_DETAILS} from \"../../config/constants\"\n\nexport const setDepartment = (path: string, dept: string, rememberSelectedDepartment: boolean) => {\n if (rememberSelectedDepartment) {\n sessionStorage.setItem(SELECTED_DEPARTMENT_DETAILS, JSON.stringify({path, dept}))\n // PBI45843 - Remove localStorage references for \"primaryNavDeptSelector\" [Repo's: GTM, Header, Meganav, PLP]\n localStorage.setItem(SELECTED_DEPARTMENT_DETAILS, JSON.stringify({path, dept}))\n }\n}\n","import React, {useEffect, useState} from \"react\"\nimport {useModalsCloseObservable} from \"@next/eventservice\"\nimport touchDevice from \"../../utils/is-touch-device\"\nimport connect from \"./connect\"\nimport {Container} from \"./component\"\nimport SnailItem, {Data} from \"../SnailItem\"\nimport TabsScroll from \"../Scroller\"\nimport {\n PRIMARY_NAV_ITEM_HOVER_DELAY,\n DRAWER_GAP,\n PRIMARY_NAV_SCROLL_ANIMATION_DELAY,\n VISITED_PAGES,\n} from \"../../config/constants\"\nimport {screenIsSmallerThanLarge, screenIsBiggerOrEqualToLarge} from \"../../utils/window\"\nimport {calcScrollOffset} from \"../../utils/calculateWindowOffsets\"\nimport {PrimaryNavItem} from \"../../models/primary-nav\"\nimport {PublishToModalsClosed} from \"../../events/modalsClosed\"\nimport {setDepartment} from \"../../utils/setDepartment\"\n\ntype DisplayItem = PrimaryNavItem & {\n classNames: string\n}\n\nexport type SnailTrailProps = {\n items: DisplayItem[]\n setActiveItem: (index: number, item: {title: string; path: string}) => void\n activeDepartmentIndex: number\n setIsInPrimaryNav: (value: boolean) => void\n dir: string\n rememberSelectedDepartment: boolean\n}\n\nlet timerId: NodeJS.Timeout | number = 0\nconst clearHoverTimeout = () => clearTimeout(timerId as NodeJS.Timeout)\n\nexport const SnailTrail = ({\n dir,\n items,\n setActiveItem,\n activeDepartmentIndex,\n setIsInPrimaryNav,\n rememberSelectedDepartment,\n}: SnailTrailProps) => {\n const [isProgrammaticScrolling, setIsProgrammaticScrolling] = useState(false)\n const [loaded, setLoaded] = useState(false)\n const isTouchDevice = touchDevice()\n const timeOutDelay = isTouchDevice ? 0 : PRIMARY_NAV_ITEM_HOVER_DELAY\n\n const snailTrailRef = React.useRef(null)\n let currentlyActiveSnailItemRef: React.RefObject\n\n useEffect(() => {\n setLoaded(true)\n }, [])\n\n const close = () => {\n setActiveItem(-1, {title: \"\", path: \"\"})\n }\n\n const onScroll = () => {\n if (!isProgrammaticScrolling) {\n close()\n }\n }\n\n const memoizedCalcScrollOffset = React.useCallback(calcScrollOffset, [])\n\n const doScroll = (event: React.MouseEvent, clickedElement: HTMLElement): void => {\n setIsProgrammaticScrolling(true)\n const scrollOffset = memoizedCalcScrollOffset(event, clickedElement, DRAWER_GAP)\n const snailTrailElement = snailTrailRef.current as HTMLElement\n snailTrailElement.scrollLeft += scrollOffset\n\n delayExecution(() => setIsProgrammaticScrolling(false), PRIMARY_NAV_SCROLL_ANIMATION_DELAY)\n }\n\n const delayExecution = (functionToExecute: () => void, delay: number): void => {\n clearHoverTimeout()\n timerId = setTimeout(() => {\n functionToExecute()\n clearHoverTimeout()\n }, delay)\n }\n\n const setActiveItemAndScroll = (data: Data, event: React.MouseEvent) => {\n event.persist()\n return () => {\n const {index, item} = data\n const clickedElement = currentlyActiveSnailItemRef.current as HTMLElement\n setActiveItem(index, item)\n doScroll(event, clickedElement)\n }\n }\n\n const handleClick = (\n event: React.MouseEvent,\n ref: React.RefObject,\n data: Data,\n ): void => {\n currentlyActiveSnailItemRef = ref\n if (screenIsSmallerThanLarge() || isTouchDevice) {\n event.preventDefault()\n if (data.index === activeDepartmentIndex) {\n close()\n } else {\n PublishToModalsClosed()\n setIsInPrimaryNav(true) // redux updates the isInPrimaryNav prop used in SecondaryNavContent to determine what meganav dropdown to show (mobile or desktop)\n setActiveItemAndScroll(data, event)()\n }\n } else if (data.index === activeDepartmentIndex) {\n localStorage.removeItem(VISITED_PAGES)\n setDepartment(data.item.path, data.item.title.toLowerCase(), rememberSelectedDepartment)\n } else {\n currentlyActiveSnailItemRef = ref\n setIsInPrimaryNav(true)\n event.preventDefault()\n const {index, item} = data\n setActiveItem(index, item)\n PublishToModalsClosed()\n }\n }\n\n useModalsCloseObservable(close)\n\n const handleMouseEnter = (\n event: React.MouseEvent,\n ref: React.RefObject,\n data: Data,\n ): void => {\n currentlyActiveSnailItemRef = ref\n\n if (screenIsBiggerOrEqualToLarge()) {\n const functionToExecuteLater = setActiveItemAndScroll(data, event)\n delayExecution(functionToExecuteLater, timeOutDelay)\n setIsInPrimaryNav(true)\n PublishToModalsClosed()\n }\n }\n\n const handleKeyboardEnter = (\n event: React.KeyboardEvent,\n ref: React.RefObject,\n data: Data,\n ): void => {\n if (event.key !== \"Enter\") {\n return\n }\n\n if (screenIsBiggerOrEqualToLarge()) {\n if (data.index !== activeDepartmentIndex) {\n currentlyActiveSnailItemRef = ref\n\n setIsInPrimaryNav(true)\n event.preventDefault()\n const {index, item} = data\n setActiveItem(index, item)\n PublishToModalsClosed()\n }\n }\n }\n\n const handleMouseLeave = (_event: React.MouseEvent) => {\n clearHoverTimeout()\n setIsInPrimaryNav(false)\n }\n return (\n \n \n {items.map(({target, title, path, linkColour, fontWeight, classNames, mapping, pin}, index) => {\n const props = {\n index,\n isActive: activeDepartmentIndex === index,\n target,\n title,\n path,\n handleClick,\n handleMouseEnter,\n handleKeyboardEnter,\n linkColour,\n fontWeight,\n classNames,\n mapping,\n pin,\n }\n return \n })}\n \n \n )\n}\n\nexport default connect(SnailTrail)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport const Container = styled.div`\n display: flex;\n justify-content: center;\n background: ${props => props.theme.colours.header.navLowerBackground.default};\n width: 100%;\n border-top: ${props => props.theme.colours.header.navLowerBackground.border};\n border-bottom: ${props => props.theme.colours.header.navLowerBackground.border};\n height: ${props => props.theme.styles.PrimaryNav.default.height};\n @media (min-width: ${breakpoints.values.md}px) {\n height: ${props => props.theme.styles.PrimaryNav.md.height};\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n background: ${props => props.theme.colours.header.navLowerBackground.desktop};\n }\n`\nexport const SnailTrailWrapper = styled.div`\n z-index: 1;\n max-width: ${breakpoints.values.xl}px;\n padding: 0;\n width: 100%;\n\n @media (min-width: ${breakpoints.values.lg}px) {\n background: ${props => props.theme.colours.header.navLowerBackground.desktop};\n }\n`\n","import React from \"react\"\nimport SnailTrail from \"../SnailTrail\"\nimport {Container, SnailTrailWrapper} from \"./component\"\nimport connect from \"./connect\"\n\ninterface PrimaryNavProps {\n closeNav: () => void\n}\n\nexport const PrimaryNav = ({closeNav}: PrimaryNavProps) => (\n \n \n \n \n \n)\n\nexport default connect(PrimaryNav)\n","import {connect} from \"react-redux\"\nimport {setPrimaryNavIndex, setIsInPrimaryNav} from \"../../ducks/primary-nav\"\n\nexport const mergeProps = (state: any, {dispatch}: any, ownProps) => ({\n ...state,\n ...ownProps,\n closeNav: (e: any): void => {\n if (e.currentTarget.scrollLeft !== 0) {\n dispatch(setPrimaryNavIndex(-1, \"\"))\n dispatch(setIsInPrimaryNav(false))\n }\n },\n})\n\nexport default connect(null, null as any, mergeProps)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {setIsInPrimaryNav, setPrimaryNavIndex} from \"../../ducks/primary-nav\"\nimport {setIsInSecondaryMeganav} from \"../../ducks/secondary-nav\"\n\ntype Anchor = \"top\" | \"bottom\" | \"left\" | \"right\"\n\nexport const mapStateToProps = (state: State) => {\n const {isInPrimaryNav} = state.primarynav\n const {isInSecondaryNav} = state.secondarynav\n const open = state.primarynav.active\n let anchor: Anchor = \"left\"\n const isLastItem = state.primarynav.activeDepartmentIndex >= state.primarynav.items.length - 1\n if (isLastItem) {\n anchor = \"right\"\n }\n return {\n anchor,\n open,\n isInSecondaryNav,\n isInPrimaryNav,\n }\n}\n\nexport const mapDispatchToProps = dispatch => {\n return {\n deactivateIndex: () => {\n dispatch(setPrimaryNavIndex(-1, \"\"))\n dispatch(setIsInSecondaryMeganav(false))\n dispatch(setIsInPrimaryNav(false))\n },\n }\n}\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import styled from \"styled-components\"\nimport {Drawer as MUIDrawer} from \"@material-ui/core\"\n\n/*\n * Title: Using to style top !important\n * problem: we do not want to use !important but we want a modal and a modal is expected to cover the entire screen\n * in this case however, material UI probably assumes you'll have the entire screen covered and uses inline styles\n * to define this behaviour. But here the modal as it is the case of next, partially exposes the header area hence it\n * does not fully cover the entire screen.\n * Solution: for now we have to use !important\n * Refs:\n * https://github.com/mui-org/material-ui/issues/16441\n * https://github.com/mui-org/material-ui/issues/16442\n */\n\nexport const DrawerContainer = styled(MUIDrawer)`\n && {\n position: relative !important;\n height: 100vh;\n }\n\n &&.drawer > div:nth-child(1) {\n position: absolute;\n background: rgba(0, 0, 0, 0.9);\n z-index: 0;\n }\n &&.drawer > div:nth-child(3) {\n box-shadow: none;\n position: absolute;\n width: calc(100% - 3rem);\n }\n`\n\nexport const CloseIcon = styled.img`\n position: fixed;\n top: 2.75rem;\n left: 0;\n cursor: pointer;\n height: 2.75rem;\n width: 2.75rem;\n`\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\n\nexport const mapStateToProps = (state: State) => ({\n text: {drawerIconAltText: state.text.secondaryNavDrawer.drawerIconAltText},\n})\n\nexport default connect(mapStateToProps)\n","import React from \"react\"\nimport {DrawerProps as MuiDrawerProps} from \"@material-ui/core\"\nimport {DrawerContainer, CloseIcon} from \"./component\"\nimport urls from \"../../config/urls\"\nimport connect from \"./connect\"\n\nexport type DrawerProps = Pick & {\n showCloseIcon?: boolean\n onClose: () => void\n text: any\n}\n\nconst modalProps = {\n keepMounted: true,\n disableRestoreFocus: true,\n disableAutoFocus: true,\n disableEnforceFocus: true,\n closeAfterTransition: false,\n disablePortal: true,\n}\n\nconst SecondaryNavDrawer = ({anchor, open, onClose, showCloseIcon = true, children, text}: DrawerProps) => (\n \n {showCloseIcon && }\n {children}\n \n)\n\nexport default connect(SecondaryNavDrawer)\n","import {Modal} from \"@material-ui/core\"\nimport styled from \"styled-components\"\n\n/*\n * Title: Using to style top !important\n * problem: we do not want to use !important but we want a modal and a modal is expected to cover the entire screen\n * in this case however, material UI probably assumes you'll have the entire screen covered and uses inline styles\n * to define this behaviour. But here the modal as it is the case of next, partially exposes the header area hence it\n * does not fully cover the entire screen.\n * Solution: for now we have to use !important\n * Refs:\n * https://github.com/mui-org/material-ui/issues/16441\n * https://github.com/mui-org/material-ui/issues/16442\n */\n\nexport const Container = styled(Modal)`\n && {\n transition: opacity 0.2s ease;\n animation-delay: 250ms;\n display: flex;\n justify-content: center;\n position: relative !important;\n height: 100vh;\n\n & > div:first-child {\n position: absolute;\n background: rgba(0, 0, 0, 0.9);\n z-index: 1;\n }\n & > [data-test=\"sentinelStart\"] {\n display: none;\n }\n & > [data-test=\"sentinelEnd\"] {\n display: none;\n }\n }\n`\n","import React, {useEffect, useState} from \"react\"\nimport {Backdrop} from \"@material-ui/core\"\nimport {Container} from \"./component\"\nimport {OVERLAY_TIMEOUT, PRIMARY_NAV_ITEM_HOVER_DELAY} from \"../../config/constants\"\n\nexport type OverlayProps = {\n open: boolean\n children: JSX.Element\n handleClose: () => void\n}\nconst innerOverlayDefaultProps = {\n disableRestoreFocus: true,\n disableAutoFocus: true,\n disableEnforceFocus: false,\n disablePortal: true,\n keepMounted: false,\n closeAfterTransition: true,\n disableScrollLock: true,\n disableEscapeKeyDown: false,\n}\n\nlet timerId: NodeJS.Timeout | number = 0\n\nconst SecondaryNavOverlay = ({open, children, handleClose}: OverlayProps) => {\n const [delayedOpen, setOpen] = useState(false)\n useEffect(() => {\n timerId = setTimeout(() => setOpen(open), PRIMARY_NAV_ITEM_HOVER_DELAY)\n return () => {\n handleClose()\n clearTimeout(timerId as NodeJS.Timeout)\n }\n }, [open, handleClose])\n\n return (\n \n <>{children}\n \n )\n}\n\nexport default SecondaryNavOverlay\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport const Container = styled.div`\n width: 100%;\n background: ${props => props.theme.colours.palette.modal.background.primary};\n @media (min-width: ${breakpoints.values.lg}px) {\n display: table;\n max-height: ${props => `calc(100% - ${props.theme.styles.PrimaryNav.xs.height})`};\n }\n`\n\nexport const OuterContainer = styled.div`\n width: 100%;\n height: auto;\n z-index: 2;\n`\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport const Container = styled.nav`\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n max-width: ${breakpoints.values.xl}px;\n padding: ${props => props.theme.styles.SecondaryNav.Container.xs.padding};\n @media (min-width: ${breakpoints.values.md}px) {\n height: 100%;\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n min-height: 30rem;\n max-height: calc(100vh - 7rem);\n overflow-y: hidden;\n padding: ${props => props.theme.styles.SecondaryNav.Container.lg.padding};\n }\n @media (min-width: ${breakpoints.values.xl}px) {\n padding: ${props => props.theme.styles.SecondaryNav.Container.xl.padding};\n }\n`\n\nexport const BackgroundContainer = styled.div`\n width: 100%;\n background: #ffffff;\n @media (min-width: ${breakpoints.values.md}px) {\n height: 100%;\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n min-height: 30rem;\n max-height: calc(100vh - 7rem);\n overflow-y: hidden;\n }\n`\n\ntype CatalogueContainer = {\n hasMissions: boolean\n hasBanner: boolean\n}\n\nexport const CatalogueContainer = styled.section`\n width: 100%;\n height: 100%;\n display: block;\n padding-bottom: ${({hasMissions}) => (hasMissions ? 0 : \"3rem\")};\n margin-bottom: ${({hasBanner}) => (hasBanner ? \"3rem\" : 0)};\n\n > div {\n overflow-y: hidden;\n }\n\n @media (min-width: ${breakpoints.values.md}px) {\n padding: ${props => props.theme.styles.SecondaryNav.CatalogueContainer.md.padding};\n margin-bottom: 0;\n\n > div {\n overflow-y: auto;\n }\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n padding-bottom: 0;\n }\n`\n\nexport const MissionsContainer = styled.section`\n margin-bottom: 3rem;\n @media (min-width: ${breakpoints.values.md}px) {\n margin-bottom: 0;\n height: auto;\n min-height: calc(100vh - 2.75rem);\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n min-height: 30rem;\n }\n`\n\nexport const CatalogueAndMissionsContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n overflow-y: auto;\n background-color: #ffffff;\n @supports (-webkit-touch-callout: none) {\n padding-bottom: 4rem;\n }\n @media (min-width: ${breakpoints.values.md}px) {\n flex-direction: ${props => props.theme.styles.SecondaryNav.CatalogueAndMissionsContainer.md.flexDirection};\n overflow-y: hidden;\n padding-bottom: 0;\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n flex-direction: row;\n }\n`\n","import {connect} from \"react-redux\"\nimport State from \"ducks/state\"\nimport {setActiveTab} from \"../../ducks/tabs-activity\"\nimport {setIsInSecondaryMeganav} from \"../../ducks/secondary-nav\"\nimport {filterByExcludeFrom, filterColumnsByExcludeFrom} from \"../../utils/excludeFrom\"\nimport {setNextPrimaryNavIndex, setPreviousPrimaryNavIndex} from \"../../ducks/primary-nav\"\n\nexport const mapStateToProps = (state: State, {showAsDrawer}: {showAsDrawer: boolean}) => {\n const defaultfirstTabIndex = 0\n const {activeDepartment, isInPrimaryNav, activeDepartmentIndex} = state.primarynav\n const {catalogues, isPending} = state.secondarynav\n const activeTabIndex = !showAsDrawer\n ? defaultfirstTabIndex\n : state.tabsActivity[activeDepartment] || defaultfirstTabIndex\n\n const {items: tabs, banner} = (catalogues && catalogues[activeDepartment]) || {\n items: [],\n banner: null,\n }\n\n const filteredExcludedTabs = tabs.filter(filterByExcludeFrom(showAsDrawer))\n const tabIds: string[] = filteredExcludedTabs.filter(item => item.title).map(item => item.title.toLowerCase())\n\n const activeTab = filteredExcludedTabs[activeTabIndex]\n\n const missions =\n activeTab && activeTab.missions\n ? {...activeTab.missions, items: activeTab.missions.items.filter(filterByExcludeFrom(showAsDrawer))}\n : null\n\n const hasMissions =\n (missions && Object.keys(missions).length > 0 && filterByExcludeFrom(showAsDrawer)(missions)) || false\n\n const hasTabs: boolean = tabIds.length > 1\n const hasBanner = (banner && Object.keys(banner).length > 0) || false\n const columns = (activeTab && filterColumnsByExcludeFrom(showAsDrawer, activeTab.items)) || []\n const tab = (hasTabs && tabIds[activeTabIndex]) || null\n\n return {\n hasMissions,\n hasBanner,\n hasTabs,\n tabIds,\n activeTabIndex,\n activeDepartmentIndex,\n columns,\n department: activeDepartment,\n tab,\n isPending,\n isInPrimaryNav,\n missions,\n }\n}\n\nexport const mapDispatchToProps = dispatch => {\n return {\n setTabIndex: (tabIndex: number): void => {\n dispatch(setActiveTab(tabIndex))\n },\n setIsInSecondaryMeganavTrue: () => {\n dispatch(setIsInSecondaryMeganav(true))\n },\n setIsInSecondaryMeganavFalse: () => {\n dispatch(setIsInSecondaryMeganav(false))\n },\n setNextPrimaryNav: () => {\n dispatch(setNextPrimaryNavIndex())\n },\n setPreviousPrimaryNav: () => {\n dispatch(setPreviousPrimaryNavIndex())\n },\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\ntype AnchorProps = {\n linkColour: string | null\n fontWeight: string\n isDirectLink: boolean\n}\n\nexport const Container = styled.li`\n display: flex;\n list-style: none;\n width: 100%;\n\n a {\n display: flex;\n justify-content: space-between;\n text-decoration: none;\n font-size: ${({isDirectLink, theme: {styles}}) =>\n isDirectLink ? styles.DirectLink.default.fontSize : styles.TertiaryNav.default.fontSize};\n line-height: ${props => props.theme.styles.TertiaryNav.default.lineHeight};\n letter-spacing: ${props => props.theme.styles.TertiaryNav.default.letterSpacing};\n word-break: break-word;\n color: ${({theme, linkColour}) => linkColour || theme.colours.text.default};\n font-family: ${({theme}) => `${theme.colours.font.secondary.regular.family}, ${theme.colours.font.default}`};\n font-weight: ${({theme, fontWeight, isDirectLink}) =>\n fontWeight ||\n (isDirectLink ? theme.styles.DirectLink.default.fontWeight : theme.styles.TertiaryNav.default.fontWeight)};\n\n @media (min-width: ${breakpoints.values.lg}px) {\n font-size: ${props => props.theme.styles.TertiaryNav.lg.fontSize};\n font-weight: ${({theme, fontWeight}) => fontWeight || theme.styles.TertiaryNav.lg.fontWeight};\n }\n }\n\n a:hover {\n text-decoration: underline;\n }\n\n @media (min-width: ${breakpoints.values.xs}px) {\n padding: 0 0.5rem 0 0;\n padding-right: ${props => props.isDirectLink && 0};\n }\n\n @media (min-width: ${breakpoints.values.sm}px) {\n width: ${({isDirectLink}) => (isDirectLink ? \"100%\" : \"50%\")};\n }\n\n @media (min-width: ${breakpoints.values.lg}px) {\n width: 100%;\n line-height: 1.5;\n margin-bottom: 0.5rem;\n padding: ${({theme}) => theme.styles.TertiaryNav.lg.padding || \"0\"};\n }\n`\n\nexport const ItemHref = styled.a<{isDirectLink: boolean}>`\n width: ${({isDirectLink}) => (isDirectLink ? \"100%\" : \"auto\")};\n`\n\nexport const TitleContainer = styled.span<{isDirectLink: boolean; isFirstElement: boolean}>`\n display: flex;\n align-items: center;\n height: ${({isDirectLink}) => (isDirectLink ? \"2.75\" : \"2.3125\")}rem;\n letter-spacing: normal;\n margin-top: ${({isFirstElement}) => (isFirstElement ? \"1.5\" : \"0\")}rem;\n\n @media (min-width: ${breakpoints.values.lg}px) {\n height: inherit;\n }\n text-transform: ${props => props.theme.styles.SnailItem.xs.textTransform};\n`\n\nexport const IconContainer = styled.div`\n display: flex;\n float: right;\n padding: 1rem;\n`\n\nexport const TitleAndImageContainer = styled.div`\n display: flex;\n align-items: center;\n`\n","import styled from \"styled-components\"\n\nexport const Container = styled.div`\n height: 2.75rem;\n display: flex;\n align-items: center;\n`\n\nexport const ImagePlaceholder = styled.img`\n && {\n border-radius: 50%;\n background-size: cover;\n background-repeat: no-repeat;\n margin: 0 0.75rem 0 0;\n flex-shrink: 0;\n }\n &&& {\n width: 2rem;\n height: 2rem;\n }\n`\n","import React from \"react\"\nimport {Container, ImagePlaceholder} from \"./component\"\nimport {getMeganavIconPath} from \"../../utils/getCdnUrl\"\nimport {Icons} from \"../../models/secondary-nav\"\nimport {\n DEFAULT_IMAGE_PLACEHOLDER,\n DEFAULT_IMAGE_PLACEHOLDER_2X,\n DEFAULT_IMAGE_PLACEHOLDER_3X,\n} from \"../../config/constants\"\n\nexport type IconProps = {\n icons: Icons[] | undefined\n realm: string\n}\n\nexport const SnailItemIcon = ({icons, realm}: IconProps) => {\n const icon1xRes = icons?.length && icons[0] && icons[0].url.length ? icons[0].url : undefined\n const icon2xRes = icons?.length && icons[1] && icons[1].url.length ? `${icons[1].url} 2x` : undefined\n const icon3xRes = icons?.length && icons[2] && icons[2].url.length ? `, ${icons[2].url} 3x` : undefined\n\n const imageOnErrorHandler = (e: React.SyntheticEvent) => {\n e.currentTarget.onerror = null\n e.currentTarget.src = `${getMeganavIconPath(DEFAULT_IMAGE_PLACEHOLDER, realm)}`\n e.currentTarget.srcset = `${getMeganavIconPath(DEFAULT_IMAGE_PLACEHOLDER_2X, realm)} 2x, ${getMeganavIconPath(\n DEFAULT_IMAGE_PLACEHOLDER_3X,\n realm,\n )} 3x`\n }\n\n return (\n \n \n \n )\n}\n\nexport default SnailItemIcon\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {REALM_HEADER} from \"../../config/constants\"\n\nexport const mapStateToProps = (state: State) => ({\n textAlignment: state.textAlignment,\n text: {chevronIconAltText: state.text.catalogueItem.chevronIconAltText},\n siteUrl: state.request.siteUrl,\n realm: state.request.headers![REALM_HEADER] as string,\n rememberSelectedDepartment: state.settings.rememberSelectedDepartment,\n})\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\n\nexport const Image = styled.img`\n margin: 0 1rem 0 0.25rem;\n`","import React from \"react\"\nimport {Image} from \"./component\"\n\ntype PromoIconProps = {\n title: string\n iconSrc: string\n}\n\nconst PromoIcon = ({iconSrc, title}: PromoIconProps) => {\n return {`${title}\n}\n\nexport default PromoIcon\n","import React from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport {configRelativePathURL} from \"../../utils/configUrlPath\"\nimport {Container, ItemHref, TitleContainer, IconContainer, TitleAndImageContainer} from \"./component\"\nimport SnailItemIcon from \"../SnailItemIcon\"\nimport connect from \"./connect\"\nimport NavIcon from \"../NavIcon\"\nimport urls from \"../../config/urls\"\nimport {LTR, VISITED_PAGES} from \"../../config/constants\"\nimport {Icons} from \"../../models/secondary-nav\"\nimport {setDepartment} from \"../../utils/setDepartment\"\nimport PromoIcon from \"../PromoIcon\"\n\ntype CatalogueItemProps = {\n target: string\n title: string\n linkColour: string | null\n fontWeight: string\n catalogueListTitle: string | null\n department: string\n tab: string | null\n textAlignment: string\n promotionalIcon: string | null | undefined\n icons: Icons[] | undefined\n text: any\n columnIndex: number | undefined\n siteUrl: string\n isIconEnabled: boolean\n realm: string\n rememberSelectedDepartment: boolean\n isFirstElement: boolean\n}\n\nconst onClick = (target, department, siteUrl, rememberSelectedDepartment) => {\n localStorage.removeItem(VISITED_PAGES)\n const path = configRelativePathURL(target, siteUrl)\n setDepartment(path, department, rememberSelectedDepartment)\n}\n\nexport const CatalogueItem = ({\n target,\n title,\n linkColour,\n fontWeight,\n catalogueListTitle,\n department,\n tab,\n textAlignment,\n promotionalIcon,\n icons,\n text,\n columnIndex,\n siteUrl,\n isIconEnabled,\n realm,\n rememberSelectedDepartment,\n isFirstElement,\n}: CatalogueItemProps) => {\n const isDirectLink = !catalogueListTitle && columnIndex === 0\n const showIcon = isIconEnabled && isDirectLink\n const marketingStyles = {\n linkColour,\n fontWeight,\n isDirectLink,\n }\n\n return (\n onClick(target, department, siteUrl, rememberSelectedDepartment)}\n >\n \n \n {showIcon && }\n \n {title}\n \n {promotionalIcon && }\n \n \n {isDirectLink && (\n \n \n \n \n \n )}\n \n )\n}\n\nexport default connect(CatalogueItem)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\nimport {Hidden as MUIHidden, ExpansionPanelSummary, ExpansionPanel, ExpansionPanelDetails} from \"@material-ui/core\"\n\ntype TitleProps = {\n linkColour: string\n fontWeight: string\n isFirstElement?: boolean\n}\n\nexport const Accordion = styled(ExpansionPanel)`\n background: none;\n box-shadow: none;\n width: 100%;\n border: ${props => props.theme.styles.Accordion.default.border};\n border-width: 0 0 0.0625rem 0;\n`\nexport const AccordionPanelDetails = styled(ExpansionPanelDetails)`\n padding: 0.5rem 0;\n`\n\n// FIXME replace AccordionPanelSummary background: ${props => props.theme.colours.utilities.backgroundAccent};\nexport const AccordionPanelSummary = styled(ExpansionPanelSummary)`\n && {\n background: ${props => props.theme.styles.Accordion.default.background};\n @media (min-width: ${breakpoints.values.md}px) {\n background: #ffffff;\n }\n padding: 0;\n min-height: auto;\n width: 100%;\n && > div {\n margin: 0;\n }\n > div:nth-child(2) {\n padding: 1rem;\n }\n\n img {\n width: 0.75rem;\n }\n }\n`\nexport const Hidden = styled(MUIHidden)`\n width: 100%;\n`\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n align-items: start;\n @media (min-width: ${breakpoints.values.lg}px) {\n border-top: 0;\n }\n`\nexport const Title = styled.div`\n height: ${props => props.theme.styles.Accordion.default.height};\n padding-left: 1rem;\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin: 0;\n letter-spacing: ${props => props.theme.styles.SecondaryNav.Title.xs.letterSpacing};\n word-break: break-word;\n color: ${({theme, linkColour}) => linkColour || theme.colours.text.default};\n font-family: ${({theme}) => `${theme.colours.font.primary.medium.family}, ${theme.colours.font.default}`};\n font-weight: ${({theme, fontWeight}) => fontWeight || theme.styles.SecondaryNav.Title.md.fontWeight};\n font-size: ${props => props.theme.styles.SecondaryNav.Title.xs.fontSize};\n\n @media (max-width: ${breakpoints.values.md - 1}px) {\n height: ${props => props.theme.styles.Accordion.xs.height};\n }\n @media (min-width: ${breakpoints.values.md}px) {\n padding-left: 2rem;\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n height: unset;\n padding-left: 0;\n font-size: ${props => props.theme.styles.SecondaryNav.Title.lg.fontSize};\n font-weight: ${({theme, fontWeight}) => fontWeight || theme.styles.SecondaryNav.Title.lg.fontWeight};\n margin: ${({isFirstElement}) => (isFirstElement ? \"0 0 0.75rem 0\" : \"1.25rem 0 0.75rem\")};\n background: none;\n }\n`\n\ntype ListProps = {\n isDirectLink: boolean\n}\n\nexport const List = styled.ul`\n display: flex;\n flex-direction: row;\n margin: 0;\n padding: 0 1rem;\n padding-right: ${props => (props.isDirectLink ? 0 : \"initial\")};\n align-items: start;\n height: inherit;\n flex-wrap: wrap;\n width: 100%;\n @media (min-width: ${breakpoints.values.md}px) {\n padding-left: 2rem;\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n padding: 0;\n flex-direction: column;\n flex-wrap: nowrap;\n }\n @media (max-width: ${breakpoints.values.lg - 1}px) {\n height: ${({theme, isDirectLink}) => (isDirectLink ? theme.styles.DirectLink.xs.height : \"inherit\")};\n align-items: center;\n }\n`\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {setActivity} from \"../../ducks/accordion-activity\"\nimport {REALM_HEADER} from \"../../config/constants\"\n\nexport const mapStateToProps = (state: State, props) => {\n const department = state.primarynav.activeDepartment\n const key = `${department}-${props.title}`\n const {isImagePlaceholderEnabled} = state.secondarynav\n const realm = state.request.headers![REALM_HEADER] as string\n return {\n isImagePlaceholderEnabled,\n opened: state.accordionActivity[key] || false,\n text: {chevronIconAltText: state.text.catalogueList.chevronIconAltText},\n realm,\n }\n}\n\nexport const mapDispatchToProps = dispatch => {\n return {\n setOpened: (title: string | null) => {\n dispatch(setActivity(title))\n },\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import React from \"react\"\nimport CatalogueItem from \"../CatalogueItem\"\nimport {Container, List, Title, Hidden, AccordionPanelSummary, AccordionPanelDetails, Accordion} from \"./component\"\nimport SnailItemIcon from \"../SnailItemIcon\"\nimport connect from \"./connect\"\nimport {Category, Icons, Link} from \"../../models/secondary-nav\"\nimport NavIcon from \"../NavIcon\"\nimport urls from \"../../config/urls\"\n\ntype CatalogueMarketingStyles = {\n linkColour: string\n fontWeight: string\n}\n\ntype CatalogueListTitleProps = {\n catalogueMarketingStyles: CatalogueMarketingStyles\n title: string | null\n icons?: Icons[] | undefined\n isIconEnabled: boolean\n isFirstElement?: boolean\n realm: string\n}\nexport const CatalogueListTitle = ({\n title,\n icons,\n isIconEnabled,\n catalogueMarketingStyles,\n isFirstElement,\n realm,\n}: CatalogueListTitleProps) => {\n if (!title) return null\n return (\n \n {isIconEnabled && <SnailItemIcon icons={icons} realm={realm} />} <span> {title} </span>\n \n )\n}\n\ntype CatalogueListContentProps = {\n items: Link[]\n catalogueListTitle: string | null\n department: string\n tab: string | null\n columnIndex: number | undefined\n isIconEnabled: boolean\n icons?: Icons[] | undefined\n catalogueIndex?: number | undefined\n}\n\nexport const CatalogueListContent = ({\n items,\n catalogueListTitle,\n department,\n tab,\n columnIndex,\n isIconEnabled,\n icons,\n catalogueIndex,\n}: CatalogueListContentProps) => {\n const isDirectLink = !catalogueListTitle && columnIndex === 0\n\n return (\n \n {items.map(({title, target, linkColour, fontWeight, icon: promotionalIcon}, index) => {\n const marketingstyles = {\n linkColour,\n fontWeight,\n }\n const isFirstElement = !isDirectLink && !catalogueListTitle && catalogueIndex === 0 && index === 0\n const key = `${title}-${target}`\n return (\n \n )\n })}\n \n )\n}\n\ntype SmallScreenProps = {\n items: Link[]\n title: string | null\n icons: Icons[] | undefined\n opened?: boolean\n isImagePlaceholderEnabled: boolean\n setOpened: (title: string | null) => void\n catalogueMarketingStyles: CatalogueMarketingStyles\n department: string\n tab: string | null\n text: any\n columnIndex: number | undefined\n realm: string\n}\n\nexport const SmallScreen = ({\n icons,\n title,\n items,\n isImagePlaceholderEnabled,\n catalogueMarketingStyles,\n opened,\n setOpened,\n department,\n tab,\n text,\n columnIndex,\n realm,\n}: SmallScreenProps) => {\n const handleChange = (_event: React.ChangeEvent<{}>) => {\n setOpened(title)\n }\n\n return (\n <>\n {title ? (\n \n }\n >\n \n \n \n \n \n \n ) : (\n \n )}\n \n )\n}\n\ntype BigScreenProps = {\n items: Link[]\n title: string | null\n catalogueMarketingStyles: CatalogueMarketingStyles\n department: string\n tab: string | null\n columnIndex: number\n catalogueIndex: number\n realm: string\n}\nexport const BigScreen = ({\n title,\n catalogueMarketingStyles,\n items,\n department,\n tab,\n columnIndex,\n catalogueIndex,\n realm,\n}: BigScreenProps) => {\n return (\n <>\n {title && (\n \n )}\n \n \n )\n}\n\ntype CatalogueListProps = Category & {\n opened?: boolean\n isImagePlaceholderEnabled: boolean\n setOpened: (title: string | null) => void\n department: string\n tab: string | null\n text: any\n columnIndex: number\n catalogueIndex: number\n realm: string\n}\n\nexport const CatalogueList = ({\n icons,\n items,\n title,\n linkColour,\n fontWeight,\n opened = false,\n setOpened,\n department,\n tab,\n isImagePlaceholderEnabled,\n text,\n columnIndex,\n catalogueIndex,\n realm,\n}: CatalogueListProps) => {\n const props = {\n catalogueMarketingStyles: {\n linkColour,\n fontWeight,\n },\n icons,\n items,\n title,\n department,\n tab,\n isImagePlaceholderEnabled,\n columnIndex,\n catalogueIndex,\n realm,\n }\n const smallScreenProps = {...props, text}\n\n return (\n \n \n \n \n\n \n \n \n \n )\n}\n\nexport default connect(CatalogueList)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport const Hr = styled.hr`\n background: #eaeaea;\n margin: 0;\n padding: 0;\n border: none;\n height: 1px;\n @media (min-width: ${breakpoints.values.lg}px) {\n display: none;\n }\n`\nexport const Container = styled.div<{hasMissions: boolean}>`\n width: 100%;\n overflow-x: hidden;\n overflow-y: hidden;\n padding-bottom: ${({hasMissions}) => (hasMissions ? 0 : \"4rem\")};\n @media (min-width: ${breakpoints.values.lg}px) {\n overflow-y: auto;\n max-height: calc(100vh - 6rem);\n padding: 1rem;\n padding-bottom: 0;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n }\n`\n\ntype ColumnProps = {\n numberofcolumns: number\n}\n\nexport const Column = styled.div`\n display: flex;\n flex-direction: column;\n @media (min-width: ${breakpoints.values.lg}px) {\n width: ${props => `calc(100% / ${props.numberofcolumns})`};\n height: 100%;\n padding-right: 1rem;\n }\n`\n","import React from \"react\"\nimport CatalogueList from \"../CatalogueList\"\nimport {Container, Column, Hr} from \"./component\"\nimport {Column as ColumnModel} from \"../../models/secondary-nav\"\n\nexport type CatalogueProps = {\n columns: ColumnModel[]\n department: string\n tab: string | null\n hasMissions: boolean\n}\n\nexport const Catalogue = ({columns, department, tab, hasMissions}: CatalogueProps) => {\n const lastColumnIndex = columns.length - 1\n return (\n \n {columns.map(({items, title}, columnIndex) => {\n const lastCatalogueIndex = items.length - 1\n const isLastColumnIndex = columnIndex >= lastColumnIndex\n const columnKey = `${title}-${columnIndex}`\n return (\n \n {items.map(\n ({title: itemTitle, items: listItems, linkColour, fontWeight, icons}, catalogueIndex) => {\n const key = `${itemTitle}-${catalogueIndex}`\n const isLastCatalogueIndex = catalogueIndex >= lastCatalogueIndex\n const showHr = !(isLastCatalogueIndex && isLastColumnIndex)\n const props = {\n icons,\n linkColour,\n fontWeight,\n title: itemTitle,\n items: listItems,\n department,\n tab,\n columnIndex,\n catalogueIndex,\n }\n\n return (\n \n \n {showHr &&
    }\n
    \n )\n },\n )}\n
    \n )\n })}\n
    \n )\n}\n\nexport default Catalogue\n","import styled from \"styled-components\"\n\nexport type ContainerProps = {\n isActive: boolean\n}\n\nexport const Container = styled.div`\n cursor: pointer;\n display: flex;\n flex-grow: 1;\n height: 100%;\n text-transform: capitalize;\n justify-content: center;\n align-items: center;\n font-size: 0.875rem;\n font-weight: ${props => (props.isActive ? \"normal\" : `${props.theme.colours.font.primary.medium.weight}`)};\n font-family: ${props =>\n props.isActive\n ? `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`\n : `${props.theme.colours.font.primary.regular.family}, ${props.theme.colours.font.default}`};\n color: ${props => props.theme.colours.text.default};\n border: ${({isActive}) => (isActive ? \"0.063rem solid #000000\" : \"1px solid #9e9e9e\")};\n border-top: ${({isActive}) => (isActive ? \"5px solid #30a74b\" : \"1px solid #9e9e9e\")};\n border-bottom: ${({isActive}) => (isActive ? \"none\" : \"0.063rem solid #000000\")};\n`\n","import React from \"react\"\nimport {Container} from \"./component\"\n\nexport type TabProps = {text: string; handleTabClick: React.EventHandler; isActive: boolean}\n\nconst Tab = ({text, handleTabClick, isActive}: TabProps) => (\n \n {text}\n \n)\n\nexport default Tab\n","import styled from \"styled-components\"\n\nexport type ContainerProps = {\n noOfTabs: number\n activeTabIndex: number\n}\n\nexport const TabShocks = styled.div`\n border-bottom: 0.063rem solid #000000;\n height: 100%;\n width: 1rem;\n`\n\nexport const Container = styled.div`\n display: flex;\n height: 2.75rem;\n margin-top: 1rem;\n div:nth-child(${({activeTabIndex}) => activeTabIndex + 1}) {\n border-right: none;\n }\n div:nth-child(${({activeTabIndex}) => activeTabIndex + 3}) {\n border-left: none;\n }\n\n div[role=\"tab\"] {\n :nth-of-type(2) {\n border-top-left-radius: 0.25rem;\n }\n :nth-of-type(${({noOfTabs}) => noOfTabs + 1}) {\n border-top-right-radius: 0.25rem;\n }\n }\n`\n","import React from \"react\"\nimport Tab from \"../Tab\"\nimport {Container, TabShocks} from \"./component\"\n\nexport type TabsProps = {activeIndex: number; items: string[]; handleTabClick: (tabIndex: number) => void}\n\nconst Tabs = ({items, handleTabClick, activeIndex}: TabsProps) => (\n \n \n {items.map((item, index) => (\n handleTabClick(index)} />\n ))}\n \n \n)\n\nexport default Tabs\n","import styled from \"styled-components\"\n\nimport {breakpoints} from \"@next/themes\"\n\nexport const Container = styled.div`\n height: 4rem;\n text-align: center;\n height: 6.25rem;\n @media (min-width: ${breakpoints.values.lg}px) {\n height: 2.5rem;\n }\n a,\n img {\n width: 100%;\n height: 100%;\n }\n`\n","const configureSiteUrl = (siteUrl: string) => {\n const splitSiteUrl = siteUrl.split(\"/\")\n const newSiteUrl = `${splitSiteUrl[0]}//${splitSiteUrl[2]}`\n\n return newSiteUrl\n}\n\nexport const prefixImagePath = (siteUrl: string) => url => {\n if (!url) return \"\"\n if (url.indexOf(\"http\") === 0 || url.indexOf(\"//\") === 0) return url\n\n const newSiteUrl = configureSiteUrl(siteUrl)\n\n return `${newSiteUrl}${url}`\n}\n","import React from \"react\"\nimport {Container} from \"./component\"\nimport connect from \"./connect\"\nimport {configRelativePathURL} from \"../../utils/configUrlPath\"\n\ntype BannerComponentProps = {\n imageUrl: string\n target: string | null\n text: any\n siteUrl: string\n}\n\nexport const Banner = ({imageUrl, target, text, siteUrl}: BannerComponentProps) => {\n const validTarget = configRelativePathURL(target ?? \"\", siteUrl)\n return (\n \n \n {text.bannerAltText}\n \n \n )\n}\n\nexport default connect(Banner)\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {prefixImagePath} from \"../../utils/prefixPath\"\n\nexport const mapStateToProps = (state: State) => {\n const {activeDepartment} = state.primarynav\n const {catalogues} = state.secondarynav\n const {banner} = catalogues[activeDepartment]\n const {text} = state\n const {siteUrl} = state.request\n const imageUrl: string = prefixImagePath(siteUrl)(banner?.imageUrl)\n return {\n imageUrl,\n target: banner?.target || null,\n text: {bannerAltText: text.banner.bannerAltText},\n siteUrl,\n }\n}\n\nexport default connect(mapStateToProps)\n","import styled from \"styled-components\"\n\nexport const Container = styled.h4`\n margin-top: 0;\n margin-bottom: 1rem;\n text-transform: capitalize;\n color: ${props => props.theme.colours.text.default};\n font-size: 0.938rem;\n font-family: ${props => `${props.theme.colours.font.primary.medium.family}, ${props.theme.colours.font.default}`};\n font-weight: ${props => props.theme.colours.font.primary.medium.weight};\n`\n","import React from \"react\"\nimport {Container} from \"./component\"\nimport {Mission} from \"../../models/secondary-nav\"\n\ntype MissionsTitleProps = Pick\n\nconst MissionsTitle = ({title}: MissionsTitleProps) => {title}\n\nexport default MissionsTitle\n","import styled from \"styled-components\"\nimport {LTR} from \"../../config/constants\"\n\nexport const Container = styled.div`\n display: flex;\n justify-content: flex-end;\n\n && a {\n white-space: nowrap;\n padding: 0.4375rem 1rem;\n color: ${props => props.theme.colours.form.buttonSecondary.color};\n background: ${props => props.theme.colours.form.default.background};\n border: ${props => props.theme.colours.form.default.border};\n border-radius: 1.375rem;\n }\n`\n\ninterface ImageProps {\n alignment: string\n}\n\nexport const Image = styled.img`\n transform: ${({alignment}) => (alignment === LTR ? \"rotate(-90deg)\" : \"rotate(90deg)\")};\n margin-left: 1rem;\n`\n\n// FIXME replace border-radius for anchor tag with actual value border-radius: ${props => props.theme.colours.form.default.radius};\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\n\nexport const mapStateToProps = (state: State) => ({\n siteUrl: state.request.siteUrl,\n textAlignment: state.textAlignment,\n text: {arrowIconUrlAltText: state.text.missionsCTA.arrowIconUrlAltText},\n rememberSelectedDepartment: state.settings.rememberSelectedDepartment,\n})\n\nexport default connect(mapStateToProps)\n","import React from \"react\"\nimport {Button} from \"@material-ui/core\"\nimport {Container, Image} from \"./component\"\nimport {CategoryLink} from \"../../models/secondary-nav\"\nimport connect from \"./connect\"\nimport {MISSION_BLOCK_DATA_GA, VISITED_PAGES} from \"../../config/constants\"\nimport urls from \"../../config/urls\"\nimport {setDepartment} from \"../../utils/setDepartment\"\n\ntype MissionsCTAProps = CategoryLink & {\n siteUrl: string\n department: string\n textAlignment: string\n text: any\n rememberSelectedDepartment: boolean\n}\n\nconst onClick = (target: string, department: string, rememberSelectedDepartment: boolean): void => {\n localStorage.removeItem(VISITED_PAGES)\n setDepartment(target, department, rememberSelectedDepartment)\n}\n\nexport const MissionsCTA = ({\n title,\n target,\n siteUrl,\n department,\n text,\n textAlignment,\n rememberSelectedDepartment,\n}: MissionsCTAProps) => {\n return (\n onClick(target, department, rememberSelectedDepartment)}>\n \n {title}\n {text.arrowIconUrlAltText}\n \n \n )\n}\n\nexport default connect(MissionsCTA)\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport const ImageTitle = styled.span`\n color: ${props => props.theme.colours.text.default};\n font-size: 0.813rem;\n font-family: ${props => `${props.theme.colours.font.primary.regular.family}, ${props.theme.colours.font.default}`};\n text-decoration: none;\n`\nexport const ImageWrapper = styled.div`\n width: 100%;\n height: 0;\n padding: ${props => props.theme.styles.Missions.Item.xs.padding};\n position: relative;\n background: #eaeaea;\n border-radius: ${props => props.theme.colours.borders.primary.radius};\n margin-bottom: 0.5rem;\n overflow: hidden;\n`\n\nexport const ImageContainer = styled.img`\n position: absolute;\n top: 0;\n left: 0;\n border-radius: ${props => props.theme.colours.borders.primary.radius};\n margin-bottom: 1rem;\n @media (min-width: ${breakpoints.values.xs}px) {\n width: ${props => props.theme.styles.Missions.ImageContainer.xs.width};\n height: ${props => props.theme.styles.Missions.ImageContainer.xs.height};\n }\n @media (min-width: ${breakpoints.values.sm}px) {\n width: ${props => props.theme.styles.Missions.ImageContainer.sm.width};\n height: ${props => props.theme.styles.Missions.ImageContainer.sm.height};\n }\n @media (min-width: ${breakpoints.values.md}px) {\n width: ${props => props.theme.styles.Missions.ImageContainer.md.width};\n height: ${props => props.theme.styles.Missions.ImageContainer.md.height};\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n width: ${props => props.theme.styles.Missions.ImageContainer.lg.width};\n height: ${props => props.theme.styles.Missions.ImageContainer.lg.height};\n }\n @media (min-width: ${breakpoints.values.xl}px) {\n width: ${props => props.theme.styles.Missions.ImageContainer.xl.width};\n height: ${props => props.theme.styles.Missions.ImageContainer.xl.height};\n }\n`\n\nexport const Container = styled.a<{numberOfColumns: number}>`\n display: flex;\n flex-direction: column;\n text-align: center;\n flex-grow: 1;\n margin-right: 1rem;\n cursor: pointer;\n text-decoration: none;\n width: ${({numberOfColumns}) => `calc((100% - (${numberOfColumns - 1}rem)) / ${numberOfColumns})`};\n height: 100%;\n\n :hover {\n span {\n text-decoration: underline;\n }\n }\n\n :last-child {\n margin-right: 0;\n }\n`\n","import {connect} from \"react-redux\"\nimport State from \"../../ducks/state\"\nimport {prefixImagePath} from \"../../utils/prefixPath\"\n\nexport type MissionItemProps = {\n imageUrl: string\n title: string\n department: string\n}\n\nexport const mapStateToProps = (state: State, ownProps: MissionItemProps) => {\n const imageUrl: string = prefixImagePath(state.request.siteUrl)(ownProps.imageUrl)\n const {siteUrl} = state.request\n const {rememberSelectedDepartment} = state.settings\n return {\n ...ownProps,\n siteUrl,\n imageUrl,\n rememberSelectedDepartment,\n }\n}\n\nexport default connect(mapStateToProps)\n","import React from \"react\"\nimport {Container, ImageContainer, ImageTitle, ImageWrapper} from \"./component\"\nimport {MissionItem} from \"../../models/secondary-nav\"\nimport connect from \"./connect\"\nimport {MISSION_BLOCK_DATA_GA, VISITED_PAGES} from \"../../config/constants\"\nimport {configRelativePathURL} from \"../../utils/configUrlPath\"\nimport {setDepartment} from \"../../utils/setDepartment\"\n\ntype MissionsItemProps = MissionItem & {\n department: string\n target: string | null\n noOfColumns: number\n siteUrl: string\n rememberSelectedDepartment: boolean\n}\n\nconst onClick = (target, department, rememberSelectedDepartment) => {\n localStorage.removeItem(VISITED_PAGES)\n setDepartment(target, department, rememberSelectedDepartment)\n}\n\nexport const MissionsItem = ({\n imageUrl,\n target,\n title,\n department,\n noOfColumns,\n siteUrl,\n rememberSelectedDepartment,\n}: MissionsItemProps) => {\n const validTarget = configRelativePathURL(target ?? \"\", siteUrl)\n return (\n onClick(validTarget, department, rememberSelectedDepartment)}\n href={validTarget}\n numberOfColumns={noOfColumns > 3 ? 3 : noOfColumns}\n data-testid=\"missions-item\"\n data-ga-v1={MISSION_BLOCK_DATA_GA}\n data-ga-v2={department}\n data-ga-v3={title}\n >\n \n \n \n {title} \n \n )\n}\n\nexport default connect(MissionsItem)\n","import styled from \"styled-components\"\n\nexport const Container = styled.div`\n display: flex;\n justify-content: space-between;\n margin: ${props => props.theme.styles.Missions.Item.xs.margin};\n width: ${props => props.theme.styles.Missions.Item.xs.width};\n`\n","import React from \"react\"\nimport MissionsItem from \"../MissionsItem\"\nimport {MissionItem} from \"../../models/secondary-nav\"\nimport {Container} from \"./component\"\n\nexport type MissionsItemListProps = {\n items: MissionItem[]\n department: string\n noOfColumns: number\n}\n\nconst MissionsItemList = ({items, department, noOfColumns}: MissionsItemListProps) => (\n \n {items.map((item, index) => {\n const key = `${item.title}-${index}`\n return \n })}\n \n)\n\nexport default MissionsItemList\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport const Container = styled.div`\n background: ${props => props.theme.colours.text.reversed};\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n padding: ${props => props.theme.styles.Missions.Container.xs.padding};\n margin: ${props => props.theme.styles.Missions.Container.xs.margin};\n overflow-x: hidden;\n overflow-y: auto;\n padding-bottom: 4rem;\n @media (min-width: ${breakpoints.values.md}px) {\n width: ${props => props.theme.styles.Missions.Container.md.width};\n padding-bottom: 2rem;\n background: ${props => props.theme.colours.palette.modal.background.secondary};\n flex-direction: ${props => props.theme.styles.Missions.Container.md.flexDirection};\n div:nth-child(2) {\n margin: ${props => props.theme.styles.Missions.Container.pseudoClass.secondChild.md.margin};\n }\n }\n @media (min-width: ${breakpoints.values.lg}px) {\n width: ${props => props.theme.styles.Missions.Container.lg.width};\n flex-direction: column;\n div:nth-child(2) {\n margin: ${props => props.theme.styles.Missions.Container.pseudoClass.secondChild.lg.margin};\n }\n }\n @media (min-width: ${breakpoints.values.xl}px) {\n width: ${props => props.theme.styles.Missions.Container.xl.width};\n }\n`\n","type Items = any[]\n\nconst chunkArray = (items: Items, splitNo: number): Items => {\n const allChunkedItems: Items = []\n let chunkedItems: Items = []\n items.forEach((item, index) => {\n chunkedItems.push(item)\n const isSplitNo = (index + 1) % splitNo === 0\n if (isSplitNo) {\n allChunkedItems.push(chunkedItems)\n chunkedItems = []\n }\n })\n return allChunkedItems\n}\n\nexport default chunkArray\n","import React from \"react\"\nimport MissionsTitle from \"../MissionsTitle\"\nimport MissionsCTA from \"../MissionsCTA\"\nimport MissionsItemList from \"../MissionsItemList\"\nimport {Container} from \"./component\"\nimport chunkArray from \"../../utils/chunk-array\"\nimport {Mission, MissionItem} from \"../../models/secondary-nav\"\n\ntype MissionsProps = {\n data: Mission | null\n department: string\n}\n\ntype RowMissions = {\n noOfColumns: number\n items: MissionItem[]\n department: string\n}\n\nconst RowsOfMissionsItemList = ({items, department, noOfColumns = 1}: RowMissions) => {\n const chunkedItems = chunkArray(items, noOfColumns)\n return (\n <>\n {chunkedItems.map((item, index) => {\n const key = `row-${index}`\n return \n })}\n \n )\n}\n\nexport const Missions = ({data, department}: MissionsProps) => {\n if (!data) return <>\n const {items, title, categoryLink, noOfColumns} = data\n return (\n \n {title && }\n \n {categoryLink && (\n \n )}\n \n )\n}\n\nexport default Missions\n","import {useEffect, useRef} from \"react\"\n\nfunction getKeyboardFocusableElements(element: null | HTMLDivElement) {\n if (!element) {\n return null\n }\n return element.querySelectorAll(\n 'a[href], button, input, textarea, select, details,[tabindex]:not([tabindex=\"-1\"])',\n )\n}\n\n// Finds first and last focusable items in the secondary nav as it opens\n// On tabbing the last item, it opens the next secondary nav\n\nconst useSetSecondaryNavFocus = (\n isPending: boolean,\n activeDepartmentIndex: number,\n secondaryNavContainerRef: React.MutableRefObject,\n setPreviousPrimaryNav: () => void,\n setNextPrimaryNav: () => void,\n) => {\n const isReverseTabbingRef = useRef(false)\n\n useEffect(() => {\n if (!isPending && activeDepartmentIndex !== -1) {\n setTimeout(() => {\n const focussableChildren = getKeyboardFocusableElements(secondaryNavContainerRef.current)\n if (focussableChildren && focussableChildren.length > 0) {\n const firstChild = focussableChildren[0]\n const lastChild = focussableChildren[focussableChildren.length - 1]\n if (isReverseTabbingRef.current) {\n lastChild.focus()\n } else {\n firstChild.focus()\n }\n firstChild.onkeydown = event => {\n if (event.key === \"Tab\" && event.shiftKey) {\n event.preventDefault()\n isReverseTabbingRef.current = true\n setPreviousPrimaryNav()\n }\n }\n\n lastChild.onkeydown = event => {\n if (event.key === \"Tab\" && !event.shiftKey) {\n event.preventDefault()\n isReverseTabbingRef.current = false\n setNextPrimaryNav()\n }\n }\n }\n }, 0)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeDepartmentIndex, isPending, setNextPrimaryNav, setPreviousPrimaryNav])\n\n return {}\n}\n\nexport default useSetSecondaryNavFocus\n","import React, {useRef} from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport FadeInAnimation from \"../FadeInAnimation\"\nimport {\n Container,\n CatalogueAndMissionsContainer,\n CatalogueContainer,\n MissionsContainer,\n BackgroundContainer,\n} from \"./component\"\nimport {screenIsBiggerOrEqualToLarge} from \"../../utils/window\"\nimport connect from \"./connect\"\nimport Catalogue from \"../Catalogue\"\nimport Tabs from \"../Tabs\"\nimport Banner from \"../Banner\"\nimport Missions from \"../Missions\"\nimport {PRIMARY_NAV_ITEM_HOVER_DELAY} from \"../../config/constants\"\nimport {Column, Mission as MissionModel} from \"../../models/secondary-nav\"\nimport useSetSecondaryNavFocus from \"../../hooks/useSetSecondaryNavFocus\"\n\nexport type SecondaryNavContentProps = {\n isPending: boolean\n hasTabs: boolean\n tabIds: string[]\n columns: Column[]\n department: string\n tab: string | null\n activeTabIndex: number\n activeDepartmentIndex: number\n setTabIndex: (tabIndex: number) => void\n setIsInSecondaryMeganavTrue: () => void\n setIsInSecondaryMeganavFalse: () => void\n setNextPrimaryNav: () => void\n setPreviousPrimaryNav: () => void\n hasBanner: boolean\n hasMissions: boolean\n missions: MissionModel | null\n showAsDrawer: boolean\n}\n\nlet timerId: NodeJS.Timeout | number = 0\n\nexport const SecondaryNavContent = ({\n isPending,\n hasTabs,\n tabIds,\n columns,\n department,\n tab,\n setTabIndex,\n activeTabIndex,\n activeDepartmentIndex,\n setIsInSecondaryMeganavTrue,\n setIsInSecondaryMeganavFalse,\n setNextPrimaryNav,\n setPreviousPrimaryNav,\n hasBanner,\n hasMissions,\n missions,\n}: SecondaryNavContentProps) => {\n const ref = useRef(null)\n\n useSetSecondaryNavFocus(isPending, activeDepartmentIndex, ref, setPreviousPrimaryNav, setNextPrimaryNav)\n\n const handleMouseLeave = (): void => {\n if (screenIsBiggerOrEqualToLarge()) {\n clearTimeout(timerId as NodeJS.Timeout)\n timerId = setTimeout(() => setIsInSecondaryMeganavFalse(), PRIMARY_NAV_ITEM_HOVER_DELAY)\n }\n }\n\n return (\n \n \n \n {!isPending && (\n <>\n {hasBanner && }\n \n <>\n {hasTabs && (\n \n )}\n \n \n \n \n \n \n {hasMissions && (\n \n \n \n )}\n \n \n )}\n \n \n \n )\n}\n\nexport default connect(SecondaryNavContent)\n","import React from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport connect from \"./connect\"\nimport SecondaryNavDrawer, {DrawerProps} from \"../SecondaryNavDrawer\"\nimport SecondaryNavOverlay from \"../SecondaryNavOverlay\"\nimport {OuterContainer, Container} from \"./component\"\nimport SecondaryNavContent from \"../SecondaryNavContent\"\n\nexport type SecondaryNavProps = Pick & {\n open: boolean\n deactivateIndex: () => void\n isInSecondaryNav: boolean\n isInPrimaryNav: boolean\n}\n\nexport const SecondaryNav = ({\n anchor,\n open: isDrawerOpen,\n deactivateIndex,\n isInSecondaryNav,\n isInPrimaryNav,\n}: SecondaryNavProps) => {\n const isOpen = isInSecondaryNav || isInPrimaryNav\n return (\n <>\n {isDrawerOpen ? (\n \n \n \n \n \n \n \n ) : null}\n {isOpen ? (\n \n \n \n \n \n \n \n \n \n ) : null}\n \n )\n}\n\nexport default connect(SecondaryNav)\n","import styled from \"styled-components\"\n\nexport const Button = styled.button`\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n font: inherit;\n cursor: pointer;\n outline: inherit;\n order: 1;\n width: 2.75rem;\n height: 2.75rem;\n align-items: center;\n display: flex;\n justify-content: center;\n`\n","import React from \"react\"\nimport urls from \"../../config/urls\"\nimport {Button} from \"./component\"\n\ntype BurgerMenuProps = {\n realm: string\n variant: string\n}\n\nexport const BurgerButton = (props: BurgerMenuProps) => {\n return (\n \n )\n}\n\nexport default BurgerButton\n","import styled from \"styled-components\"\nimport {breakpoints} from \"@next/themes\"\n\nexport const NavigationBar = styled.div`\n @media (max-width: ${breakpoints.values.md - 1}px) {\n display:none\n }\n`","import React from \"react\"\nimport {Hidden} from \"@material-ui/core\"\nimport PrimaryNav from \"../../../components/PrimaryNav\"\nimport SecondaryNav from \"../../../components/SecondaryNav\"\nimport BurgerButton from \"../../../components/BurgerButton\"\nimport {NavigationBar} from \"./component\"\nimport connect from \"./connect\"\n\nexport type BurgerMenuMegaNavProps = {\n setCompositionSettings: () => void\n realm: string\n variant: string\n}\n\nexport const BurgerMenuMegaNav = ({setCompositionSettings, realm, variant}: BurgerMenuMegaNavProps) => {\n if (setCompositionSettings) setCompositionSettings()\n\n return (\n <>\n \n \n \n \n \n \n \n \n )\n}\n\nexport default connect(BurgerMenuMegaNav)\n","import {connect} from \"react-redux\"\nimport {TERRITORY_HEADER} from \"../../config/constants\"\nimport {State} from \"../../ducks\"\nimport {requestCountryChange} from \"../../ducks/country-selector\"\n\nexport const mapStateToProps = (state: State) => {\n\n const {data, textAlignment, shoppingBag, countrySelector} = state\n const regions = data?.regions || []\n const hasRegions = regions.length > 0\n\n if (!data || !regions || !hasRegions) {\n throw new Error(\"Header: there is no data to render the header\")\n }\n\n return {\n textAlignment,\n siteUrl: state.request.siteUrl,\n geolocationUrl: state.request.geolocationBaseUrl,\n geolocationVersion: state.request.geolocationVersion,\n territory: state.request?.headers![TERRITORY_HEADER] as string,\n bloomReachCachingEnabled: state.request?.bloomReachCachingEnabled,\n bloomReachCachingCookieList: state.request?.bloomReachCachingCookieList,\n itemCount: shoppingBag.itemCount,\n requestedCountryChange: countrySelector.requestedCountryChange,\n enableCookieConsent: !state.settings[\"userConsentManagement.enabled\"],\n showStaticHeaderBanner: state.settings[\"showStaticHeaderBanner.enabled\"],\n cookieDomain: state.request.cookieDomain,\n enableFavourites: state.favourites?.enableFavourites,\n showSaleWarningBag: state.request.showSaleWarningBag,\n }\n}\n\nexport const mapDispatchToProps = (dispatch: any) => ({\n requestCountryChange: () => dispatch(requestCountryChange(false)),\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import {connect} from \"react-redux\"\nimport {CompositionSettingsDuckState, setCompositionSettingsAction} from \"../../../ducks/compositionSettings\"\nimport {State} from \"../../../ducks\"\nimport {REALM_HEADER} from \"../../../config/constants\"\n\nexport const mapStateToProps = (state: State) => {\n const realm = state.request.headers![REALM_HEADER] as string\n const {variant} = state.settings\n\n return {\n realm,\n variant,\n }\n}\n\nexport const mapDispatchToProps = dispatch => {\n const compositionSettings: CompositionSettingsDuckState = {\n showSecondaryNavArrow: true,\n }\n return {\n setCompositionSettings: () => dispatch(setCompositionSettingsAction(compositionSettings)),\n }\n}\nexport default connect(mapStateToProps, mapDispatchToProps)\n","import {Api, HTTPMethod, buildExport} from \"@next/apiconfig\"\n\nexport class CountryRedirectApi implements Api {\n baseURL = ``\n version = \"v1\"\n endpoints = {\n getGeolocationData: {\n routeDefinition: \"\",\n getLocalURL: (ipAddress: string | null) =>\n `/NX/CountryRedirect${ipAddress ? `?ipaddress=${ipAddress}` : \"\"}`,\n getRemoteURL: () => \"\",\n method: HTTPMethod.get,\n },\n sessionUpdate: {\n routeDefinition: \"\",\n getLocalURL: () => \"/CountryRedirect/Update\",\n getRemoteURL: () => \"\",\n method: HTTPMethod.post,\n },\n }\n}\n\nconst countryRedirectApi = new CountryRedirectApi()\nexport default (endpoint: keyof typeof countryRedirectApi.endpoints) => buildExport(countryRedirectApi, endpoint)\n","import logger from \"@next/core-logger\"\nimport {axiosInstance as axios} from \"../../utils/axios\"\nimport GeolocationApiConfig from \"../../config/api/countryRedirect\"\nimport {GeolocationModel} from \"../../models/geolocation\"\n\nexport const getGeolocation = async (baseUrl: string, ipAddress: string | null): Promise => {\n try {\n const getGeolocationDataApi = GeolocationApiConfig(\"getGeolocationData\")\n const response = await axios({\n method: getGeolocationDataApi.method,\n url: `${baseUrl}${getGeolocationDataApi.localEndpoint(ipAddress)}`,\n })\n return response.data\n } catch (ex) {\n logger.error(ex)\n throw ex\n }\n}\n\ninterface UpdateSessionData {\n Version: number\n PopupDisplayed: boolean\n ShowPopup: boolean\n ISOCode: null | string\n CountryName: null | string\n RedirectUrl: null | string\n Attempt: number\n}\n\nexport const updateSession = async (baseUrl: string, data: UpdateSessionData): Promise => {\n try {\n const getGeolocationDataApi = GeolocationApiConfig(\"sessionUpdate\")\n await axios({\n method: getGeolocationDataApi.method,\n url: `${baseUrl}${getGeolocationDataApi.localEndpoint()}`,\n data,\n })\n } catch (ex) {\n logger.error(ex)\n throw ex\n }\n}\n\nexport default getGeolocation\n","/* istanbul ignore file */\ndeclare let TrackGAEvent: any\n\n// Temp solution until we have a proper GA system in place\nexport const TrackGAEventWrapper = (category: string, action: string, label: string, value: number) => {\n if (typeof TrackGAEvent !== \"undefined\" && typeof TrackGAEvent.formatToParts !== \"function\") {\n TrackGAEvent(category, action, label, value)\n } else {\n // eslint-disable-next-line no-console\n console.log(\"GA EVENT\", category, action, label, value)\n }\n}\n\nexport default TrackGAEventWrapper\n","import {CountrySelectorOpenESB, CountrySelectorOpenContractModel} from \"@next/eventservice\"\n\nconst openESB = new CountrySelectorOpenESB()\n\nconst PublishCountrySelectorOpen = (data: CountrySelectorOpenContractModel) => {\n openESB.publish(data)\n}\nexport default PublishCountrySelectorOpen\n","import {getWindow} from \"../window\"\n\nexport const fetchRetry = async (apiCall: (retries: number) => Promise, retries = 0) => {\n try {\n if (retries <= 2) {\n await apiCall(retries)\n }\n } catch (err) {\n await fetchRetry(apiCall, retries + 1)\n }\n}\n\nexport const IsApplicable = () => {\n let isApplicable = true\n const w = getWindow()\n // Country Redirect is not supported on Amazon Silk (Kindle Fire devices)\n if (!w || /\\bSilk\\b/.test(w.navigator.userAgent)) {\n isApplicable = false\n }\n\n return isApplicable\n}\n\n// Normally use the request duck for query params, but this is a QA test only override\nexport const GetDevOverrideIpAddress = () => {\n const w = getWindow()\n const regex = new RegExp(\"[\\\\?&]ipaddress=([^&#]*)\")\n // eslint-disable-next-line no-restricted-globals\n const results = regex.exec(w!.location.search)\n return results == null ? null : decodeURIComponent(results[1].replace(/\\+/g, \" \"))\n}\n","import {GeolocationModel} from \"../../models/geolocation\"\nimport {updateSession} from \"../../api/countryRedirect\"\n\nexport const SessionUpdate = async (\n popupDisplayed: boolean,\n showPopup: boolean,\n countryData: GeolocationModel | null,\n GeolocationVersion: number,\n siteUrl: string,\n attempt: number,\n) => {\n if (!countryData || (!countryData.ISOCountryCode && !countryData.ISOCountryName && !countryData.RedirectUrl)) {\n return\n }\n\n const postData = {\n Version: GeolocationVersion,\n PopupDisplayed: popupDisplayed,\n ShowPopup: showPopup,\n ISOCode: countryData.ISOCountryCode ?? null,\n CountryName: countryData.ISOCountryName ?? null,\n RedirectUrl: countryData.RedirectUrl ?? null,\n Attempt: attempt,\n }\n\n await updateSession(siteUrl, postData)\n}\n","import TrackGAEventWrapper from \"../GA\"\nimport PublishCountrySelectorOpen from \"../../events/countrySelectorOpen\"\nimport {SubscribeCountrySelectorClosed} from \"../../events/countrySelectorClosed\"\nimport {SubscribeCountrySelectorRedirect} from \"../../events/countrySelectorRedirect\"\nimport {fetchRetry} from \"./utils\"\nimport {SessionUpdate} from \"./sessionUpdate\"\nimport {GeolocationModel} from \"../../models/geolocation\"\n\nexport const openCountrySelector = async (\n countryCode: string,\n country: GeolocationModel,\n GeolocationVersion: number,\n siteUrl: string,\n) => {\n // compare countryCode and country.ISOCountryCode\n /* 1. If in correct country, modal not required */\n /* 2. If in incorrect country, show modal with specific message */\n if (countryCode === \"\" || country.ISOCountryCode === \"\") return\n\n if (countryCode === country.ISOCountryCode) {\n await fetchRetry((attempt: number) =>\n SessionUpdate(false, false, country, GeolocationVersion, siteUrl, attempt),\n )\n return\n }\n\n PublishCountrySelectorOpen({isoCountryCode: country.ISOCountryCode!})\n\n await fetchRetry(async (attempt: number) => {\n await SessionUpdate(true, true, country, GeolocationVersion, siteUrl, attempt)\n TrackGAEventWrapper(\"CountryRedirect\", \"Popup Displayed\", country.ISOCountryName!, 0)\n })\n\n const closedSubscription = SubscribeCountrySelectorClosed(() => {\n if (closedSubscription) closedSubscription.subscription.unsubscribe()\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetchRetry(async (attempt: number) => {\n await SessionUpdate(true, false, country, GeolocationVersion, siteUrl, attempt)\n TrackGAEventWrapper(\"CountryRedirect\", \"Closed Popup\", country.ISOCountryName!, 0)\n })\n })\n\n const redirectSubscription = SubscribeCountrySelectorRedirect(() => {\n if (redirectSubscription) redirectSubscription.subscription.unsubscribe()\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetchRetry(async (attempt: number) => {\n await SessionUpdate(true, true, country, GeolocationVersion, siteUrl, attempt)\n TrackGAEventWrapper(\"CountryRedirect\", \"Redirected to Specific Country\", country.ISOCountryName!, 0)\n })\n })\n}\n","import getGeolocation from \"../../api/countryRedirect\"\n\nimport {openCountrySelector} from \"./openCountrySelector\"\nimport {SessionUpdate} from \"./sessionUpdate\"\nimport {fetchRetry, GetDevOverrideIpAddress, IsApplicable} from \"./utils\"\n\nimport {doCountryRedirect} from \"../featureSwitch\"\n\ninterface CountryRedirectParams {\n Version: number\n PopupDisplayed: boolean | null\n ShowPopup: boolean | null\n PopupDate: string | null\n ISOCode: string | null\n CountryName: string | null\n RedirectUrl: string | null\n}\n\n// countryRedirectParams -bag/get CountryRedirect. If you have previously been shown the country redirect, it will be set here\n// territory - x-next-territory\n// GeolocationVersion - feature settings GeolocationVersion\nexport const PerformCountryRedirectCheck = async (\n countryRedirectParams: CountryRedirectParams | null,\n territory: string,\n GeolocationVersion: number,\n siteUrl: string,\n geolocationUrl: string,\n): Promise => {\n if (!doCountryRedirect()) return\n\n const countryCode = territory.toUpperCase()\n if (!IsApplicable()) {\n return\n }\n\n if (!countryRedirectParams) {\n await callGeolocationApi(GeolocationVersion, siteUrl, countryCode, geolocationUrl)\n return\n }\n if (countryRedirectParams.Version < GeolocationVersion && !countryRedirectParams.PopupDisplayed) {\n await callGeolocationApi(GeolocationVersion, siteUrl, countryCode, geolocationUrl)\n return\n }\n\n if (countryRedirectParams.ShowPopup) {\n const currentDate = new Date()\n const popupDate = countryRedirectParams.PopupDate\n ? new Date(parseInt(countryRedirectParams.PopupDate.substr(6), 10))\n : null\n if (!popupDate || popupDate < currentDate) {\n const country = {\n ISOCountryCode: countryRedirectParams.ISOCode,\n ISOCountryName: countryRedirectParams.CountryName,\n RedirectUrl: countryRedirectParams.RedirectUrl,\n }\n await openCountrySelector(countryCode, country, GeolocationVersion, siteUrl)\n }\n }\n}\n\nexport const callGeolocationApi = async (\n GeolocationVersion: number,\n siteUrl: string,\n countryCode: string,\n geolocationUrl: string,\n) => {\n const geolocationData = await getGeolocation(geolocationUrl, GetDevOverrideIpAddress())\n\n if (!geolocationData || !geolocationData.ISOCountryCode || !geolocationData.ISOCountryName) {\n await fetchRetry((attempt: number) =>\n SessionUpdate(false, false, geolocationData, GeolocationVersion, siteUrl, attempt),\n )\n return\n }\n await openCountrySelector(countryCode, geolocationData, GeolocationVersion, siteUrl)\n}\n\nexport default PerformCountryRedirectCheck\n","import Cookies from \"js-cookie\"\nimport logger from \"@next/core-logger\"\n\nimport {BR_COOKIE_COOKIE_PARTS_LENGTH, BR_COOKIE_COOKIE_UID_PARTS, BR_COOKIE_COOKIE_UID_LENGTH, BR_COOKIE_COOKIE_FULL_RANGE, BR_COOKIE_COOKIE_NAME, BR_COOKIE_COOKIE_CACHING_ID, BR_COOKIE_COOKIE_NUMBER_OF_DAYS} from \"../../config/constants\"\n\nconst setBloomreachCookie = (bloomReachCachingCookieList: string, bloomReachCachingEnabled: boolean, cookieDomain: string) => {\n try {\n const isEnabled = bloomReachCachingEnabled\n const bruidCookie = Cookies.get(BR_COOKIE_COOKIE_CACHING_ID)\n const cookieJarSplit = bloomReachCachingCookieList.split(',')\n const cookieName = BR_COOKIE_COOKIE_NAME\n const numberOfDays = BR_COOKIE_COOKIE_NUMBER_OF_DAYS\n \n if(\n isEnabled && \n bruidCookie !== null && bruidCookie !== undefined &&\n cookieJarSplit !== null && cookieJarSplit !== undefined && cookieJarSplit.length > 1\n ) {\n const parts = decodeURIComponent(bruidCookie).split(\":\")\n \n // Extract the Bloomreach user identifier (uid).\n if(parts !== null && parts !== undefined && parts.length === BR_COOKIE_COOKIE_PARTS_LENGTH) {\n const uid = parts[0].split('=')\n if(uid !== null && uid !== undefined && uid.length === BR_COOKIE_COOKIE_UID_PARTS && uid[1].length > BR_COOKIE_COOKIE_UID_LENGTH) {\n // Check the last 2 digits of the UID and select the appropriate cookie.\n const check = parseInt(uid[1].substr(uid[1].length - BR_COOKIE_COOKIE_UID_LENGTH), 10)\n const segment = Math.floor(BR_COOKIE_COOKIE_FULL_RANGE / cookieJarSplit.length)\n let index = Math.floor(check / segment)\n \n if (index <= 0 || index >= cookieJarSplit.length) index = 0\n Cookies.set(cookieName, cookieJarSplit[index], {expires: numberOfDays, domain: cookieDomain})\n }\n }\n } else {\n Cookies.remove(cookieName)\n }\n } catch (error) {\n logger.error(error)\n }\n}\n\nexport default setBloomreachCookie\n","import {useEffect, useRef, useCallback} from \"react\"\nimport Cookies from \"js-cookie\"\nimport {doSearchABAdaptor} from \"../../utils/featureSwitch\"\nimport setBloomreachCookie from \"../../utils/setBloomreachCookie\"\nimport {BR_COOKIE_COOKIE_CACHING_ID, BR_COOKIE_COOKIE_NAME} from \"../../config/constants\"\nimport {useIsOnClient} from \"../../utils/useIsOnClient\"\n\ninterface HookProps {\n cookieDomain: string\n bloomReachCachingCookieList: string\n bloomReachCachingEnabled: boolean\n}\n\nconst useBloomreachCookieCheck = ({\n cookieDomain,\n bloomReachCachingCookieList,\n bloomReachCachingEnabled,\n}: HookProps) => {\n const count = useRef(0)\n const {isOnClient} = useIsOnClient()\n const cookieHandlerCallback = useCallback(\n (intervalId) => {\n const exsitingCookie = Cookies.get(BR_COOKIE_COOKIE_CACHING_ID)\n\n if (count.current >= 3) {\n clearInterval(intervalId)\n\n if (!exsitingCookie && Cookies.get(BR_COOKIE_COOKIE_NAME)) {\n Cookies.remove(BR_COOKIE_COOKIE_NAME)\n }\n } else if (exsitingCookie && doSearchABAdaptor()) {\n setBloomreachCookie(bloomReachCachingCookieList, bloomReachCachingEnabled, cookieDomain)\n count.current = 3\n }\n\n count.current += 1\n },\n [cookieDomain, bloomReachCachingCookieList, bloomReachCachingEnabled],\n )\n\n useEffect(() => {\n if (!isOnClient) return\n\n const intervalId = setInterval(() => {\n cookieHandlerCallback(intervalId)\n }, 3000)\n\n return () => {\n clearInterval(intervalId)\n }\n }, [isOnClient, bloomReachCachingCookieList, bloomReachCachingEnabled, cookieDomain, cookieHandlerCallback])\n}\n\nexport default useBloomreachCookieCheck\n","import {useEffect, useState} from \"react\"\n\nimport {IS_BROWSER} from \"../window\"\n\nexport const useIsOnClient = (callBack?: VoidFunction) => {\n const [isOnClient, setIsOnClient] = useState(false)\n\n useEffect(() => {\n if (IS_BROWSER()) {\n if (callBack) {\n callBack()\n }\n setIsOnClient(true)\n }\n }, [callBack])\n\n return {isOnClient}\n}\n","import {TrackEvent} from \"@next/eventservice\"\n\nconst TrackingEvent = new TrackEvent()\n\nexport const publishTrackingEvent = (eventName: string, data: any) => {\n TrackingEvent.publish({event: eventName, data})\n}\n","import {useEffect} from \"react\"\nimport {useSelector} from \"react-redux\"\nimport {State} from \"../../../ducks\"\nimport {handleBloomreachInfoPageLoad} from \"../../../events/trackingEvent/bloomreachInfo\"\nimport {TERRITORY_HEADER} from \"../../../config/constants\"\nimport {doGTMDataLayerEvents} from \"../../../utils/featureSwitch\"\n\nconst selectStateForGTM = (state: State) => {\n const {bloomreachGroupLocation, bloomreachDomainKey} = state.request\n // PBI19239- get RPID cookie util to be implemented\n const territory = state.request.headers![TERRITORY_HEADER]\n return {\n bloomreachGroupLocation,\n territory,\n bloomreachDomainKey,\n }\n}\n\nconst useGTMSelectorProps = () => {\n // To enforce running only once\n const state = useSelector(selectStateForGTM, () => true)\n return state\n}\n\nexport const usePushBloomreachDetails = () => {\n const state = useGTMSelectorProps()\n\n useEffect(() => {\n if (!state || !doGTMDataLayerEvents()) return\n\n handleBloomreachInfoPageLoad(state)\n }, [state])\n}\n","/* eslint-disable @typescript-eslint/camelcase */\nimport { publishTrackingEvent} from \"..\"\nimport {GTM_BLOOMREACH_INFO} from \"../../../config/constants\"\n\ninterface BloomReachInfoObj {\n bloomreachGroupLocation: string;\n territory: string | string[] | undefined;\n bloomreachDomainKey: string;\n}\n\nexport const handleBloomreachInfoPageLoad = (paramObj: BloomReachInfoObj) => {\n publishTrackingEvent(GTM_BLOOMREACH_INFO, {\n br_rpid: \"\",\n br_pot_id: paramObj.bloomreachGroupLocation,\n br_pixel_enabled: 'true',\n br_view_id: paramObj.territory,\n br_domain_key: paramObj.bloomreachDomainKey,\n })\n}","import Cookies from \"js-cookie\"\nimport {useEffect} from \"react\"\nimport {MASID_COOKIE_NAME, MASID_COOKIE_SEGMENT_KEY_NAME, BR_SEARCH_VARIANT_COOKIE_NAME} from \"../../config/constants\"\n\nexport const useSetSegmentCookie = () => {\n useEffect(() => { \n const masIdCoookieValue = Cookies.get(MASID_COOKIE_NAME) \n if (!masIdCoookieValue) return\n\n const regex = new RegExp(`(${MASID_COOKIE_SEGMENT_KEY_NAME}_([A-Z]|[a-z]|[0-9])+)`)\n const segmentCookieValue = regex.exec(masIdCoookieValue)\n if (!segmentCookieValue) return\n\n const segmentValue = segmentCookieValue[0].replace(`${MASID_COOKIE_SEGMENT_KEY_NAME}_`,\"\")\n Cookies.set(BR_SEARCH_VARIANT_COOKIE_NAME, segmentValue)\n }, [])\n}\n\nexport default useSetSegmentCookie\n","import React, {useEffect, useState} from \"react\"\nimport {useShoppingBagGetCallbackObservable} from \"@next/eventservice\"\nimport connect from \"./connect\"\nimport PublishCountrySelectorClosed from \"../../events/countrySelectorClosed\"\nimport {\n SubscribeToFavouritesGet,\n SubscribeToFavouritesAdd,\n SubscribeToFavouritesRemove,\n LoadFavouritesApiData,\n SubscribeToShoppingBagGet,\n LoadShoppingBagApiData,\n SubscribeToShoppingBagAdd,\n SubscribeToShoppingBagAddCist,\n SubscribeToShoppingBagAddEVoucher,\n SubscribeToShoppingBagAddLinkedItem,\n SubscribeToShoppingBagAddMultiple,\n SubscribeToShoppingBagAddWarranty,\n SubscribeToShoppingBagRemove,\n SubscribeToShoppingBagUpdateSize,\n SubscribeToShoppingBagUpdateQuantity,\n SubscribeToShoppingBagAccept,\n SubscribeToShoppingBagReject,\n} from \"../../events\"\nimport {PerformCountryRedirectCheck} from \"../../utils/countryRedirect\"\nimport useBloomreachCookieCheck from \"../../hooks/useBloomreachCookieCheck\"\nimport {usePushBloomreachDetails} from \"../../hooks/useTrackingEvents\"\nimport useSetSegmentCookie from \"../../hooks/useSetSegmentCookie\"\n\nexport interface HeaderProps {\n headerComponent: any\n textAlignment: string\n siteUrl: string\n cookieDomain: string\n geolocationUrl: string\n geolocationVersion: number\n territory: string\n useDevEsi: boolean\n bloomReachCachingCookieList: string\n bloomReachCachingEnabled: boolean\n itemCount: number\n requestedCountryChange: boolean\n requestCountryChange: () => void\n enableCookieConsent: boolean\n showStaticHeaderBanner: boolean\n enableFavourites: boolean\n showSaleWarningBag: boolean\n widescreenCookieConsent: boolean\n privacyUrl: string\n meganavComponent: any\n}\n\nexport const Header = ({\n headerComponent,\n textAlignment,\n siteUrl,\n cookieDomain,\n geolocationUrl,\n geolocationVersion,\n territory,\n useDevEsi,\n bloomReachCachingCookieList,\n bloomReachCachingEnabled,\n itemCount,\n requestedCountryChange,\n requestCountryChange,\n enableCookieConsent,\n showStaticHeaderBanner,\n enableFavourites,\n showSaleWarningBag,\n widescreenCookieConsent,\n privacyUrl,\n meganavComponent,\n}: HeaderProps) => {\n const [showModal, setShowModal] = useState(false)\n useSetSegmentCookie()\n useEffect(() => {\n if (itemCount > 0 && requestedCountryChange) {\n PublishCountrySelectorClosed()\n setShowModal(true)\n }\n }, [itemCount, requestedCountryChange])\n\n const closeModalHandler = () => {\n requestCountryChange()\n setShowModal(false)\n }\n\n useEffect(() => {\n SubscribeToFavouritesGet(siteUrl)\n SubscribeToFavouritesAdd(siteUrl)\n SubscribeToFavouritesRemove(siteUrl)\n SubscribeToShoppingBagGet(siteUrl)\n SubscribeToShoppingBagAdd(siteUrl)\n SubscribeToShoppingBagAddCist(siteUrl)\n SubscribeToShoppingBagAddEVoucher(siteUrl)\n SubscribeToShoppingBagAddLinkedItem(siteUrl)\n SubscribeToShoppingBagAddMultiple(siteUrl)\n SubscribeToShoppingBagAddWarranty(siteUrl)\n SubscribeToShoppingBagRemove(siteUrl)\n SubscribeToShoppingBagUpdateSize(siteUrl)\n SubscribeToShoppingBagUpdateQuantity(siteUrl)\n SubscribeToShoppingBagAccept(siteUrl)\n SubscribeToShoppingBagReject(siteUrl)\n LoadShoppingBagApiData(siteUrl, false)\n\n if (enableFavourites) LoadFavouritesApiData(siteUrl)\n }, [enableFavourites, siteUrl])\n\n useBloomreachCookieCheck({cookieDomain, bloomReachCachingCookieList, bloomReachCachingEnabled})\n usePushBloomreachDetails()\n\n useShoppingBagGetCallbackObservable(data => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n PerformCountryRedirectCheck(data.data?.CountryRedirect, territory, geolocationVersion, siteUrl, geolocationUrl)\n })\n const HeaderComponent = headerComponent\n return (\n \n )\n}\n\nexport default connect(Header)\n","import styled from \"styled-components\"\nimport {GlobalStyles} from \"models/globalStyles\"\n\nexport const Container = styled.button`\n position: fixed;\n top: -100px;\n width: 13.125rem;\n color: ${(props: GlobalStyles) => props.theme.colours.form.buttonSecondary.color};\n background: ${(props: GlobalStyles) => props.theme.colours.form.buttonSecondary.background};\n font-weight: ${(props) => props.theme.colours.text.fontWeightMedium};\n border: 0.125rem solid #1d89dd;\n height: 2.75rem;\n z-index: 10;\n padding-top: 0.625rem;\n transition: all 0.5s;\n text-align: center;\n\n &.focus-visible {\n top: 0;\n }\n`\n","import React from \"react\"\nimport {IS_BROWSER} from \"../../utils/window\"\nimport {Container} from \"./component\"\nimport {PLP_ENTRYPOINT_ID} from \"../../config/constants\"\nimport connect from \"./connect\"\n\nexport const SkipContent = ({text}) => {\n if (!IS_BROWSER()) return null\n const res = document.querySelector(`#${PLP_ENTRYPOINT_ID}`)\n if (!res) return null\n const handleSkipKeyboard = e => {\n if (e.key === \"Enter\") {\n res.tabIndex = 0\n res.focus()\n }\n }\n\n const handleSkipClick = () => {\n res.tabIndex = 0\n res.focus()\n }\n\n return (\n \n {text.skipToMainContent}\n \n )\n}\n\nexport default connect(SkipContent)\n","import {connect} from \"react-redux\"\nimport {State} from \"../../ducks\"\n\nexport const mapStateToProps = (state: State) => {\n const {text} = state\n return {\n text,\n }\n}\n\nexport default connect(mapStateToProps)\n","/* eslint-disable react/require-default-props */\nimport \"focus-visible\"\nimport React from \"react\"\nimport NextThemeProvider, {SCThemeProvider} from \"@next/theme-provider\"\nimport {RealmStyles} from \"models/styles\"\nimport {DEFAULT_TEMPLATE, BURGER_MENU_TEMPLATE} from \"./config/constants\"\nimport {GlobalStyle} from \"./GlobalStyle\"\nimport {IS_BROWSER} from \"./utils/window\"\nimport {Theme} from \"./models/theme\"\nimport {DefaultHeader} from \"./compositions/header/default-composition\"\nimport {BurgerMenuHeader} from \"./compositions/header/burgermenu-composition\"\nimport {DefaultMegaNav} from \"./compositions/meganav/default-composition\"\nimport {BurgerMenuMegaNav} from \"./compositions/meganav/burgermenu-composition\"\nimport Header from \"./compositions/header\"\nimport SkipContent from \"./components/SkipContent\"\n\ninterface MyAppProps {\n appScope: string\n themeColours?: Theme\n styles: RealmStyles\n realm: string\n textAlignment: string\n themeVersion: string\n useDevEsi: boolean\n template: string\n widescreenCookieConsent: boolean\n privacyUrl: string\n}\n\nconst headerTemplates = {\n [DEFAULT_TEMPLATE]: DefaultHeader,\n [BURGER_MENU_TEMPLATE]: BurgerMenuHeader,\n}\n\nconst meganavTemplates = {\n [DEFAULT_TEMPLATE]: DefaultMegaNav,\n [BURGER_MENU_TEMPLATE]: BurgerMenuMegaNav,\n}\nconst getComponent = (template: string, components) => components[template] ?? components[DEFAULT_TEMPLATE]\n\nexport const App: React.FC & any = (props: MyAppProps) => {\n const colours = IS_BROWSER() ? (window as any).themeColours[props.themeVersion] : props.themeColours\n const theme: Theme = {styles: props.styles, colours, direction: props.textAlignment}\n const headerComponent = getComponent(props.template, headerTemplates)\n const meganavComponent = getComponent(props.template, meganavTemplates)\n const headerProps = {...props, headerComponent, meganavComponent}\n\n return (\n \n \n
    \n \n
    \n
    \n \n \n
    \n )\n}\n\nexport default App\n","import React from \"react\"\nimport PrimaryNav from \"../../../components/PrimaryNav\"\nimport SecondaryNav from \"../../../components/SecondaryNav\"\n\nexport const DefaultMegaNav = () => (\n <>\n \n \n \n)\n","import React from \"react\"\nimport logger from \"@next/core-logger\"\nimport App from \"../App\"\n// import {BASELINECSS_MATERIALUI, JSS_SERVERSIDE, BASELINECSS_CUSTOM} from \"../config/constants\"\n\n// const removeJssServerSide = (elementId: string) => {\n// const element = document.getElementById(elementId)\n// if (element) {\n// element.parentNode!.removeChild(element)\n// }\n// }\n// eslint-disable-next-line react/prefer-stateless-function\nexport class ClientApp extends React.Component {\n constructor(props: any) {\n super(props)\n this.state = {\n // eslint-disable-next-line react/no-unused-state\n hasError: false,\n }\n }\n\n // componentDidMount() {\n // removeJssServerSide(`${JSS_SERVERSIDE}${BASELINECSS_MATERIALUI}`)\n // removeJssServerSide(`${JSS_SERVERSIDE}${BASELINECSS_CUSTOM}`)\n // }\n\n static getDerivedStateFromError(error: Error) {\n return {\n hasError: true,\n error,\n }\n }\n\n componentDidCatch(error, errorInfo) {\n logger.error(`${error}, ${errorInfo}`, document.cookie)\n }\n\n render() {\n return \n }\n}\n\nexport default ClientApp\n","/* istanbul ignore file */\n\nimport getWindow from \"../../utils/window\"\n\n// Tactical solution to allow MVC to subscribe to events before header has initialsed them\n// Only needed as MVC has no access to the ESB\n// Will be removed once MVC has applied similar changes\nconst inialiseGlobalEvents = () => {\n const window = getWindow() as any\n if (!window) return\n window.subjects.setupEvent(\"$ SHOPPING_BAG_GET\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_GET_CALLBACK\")\n window.subjects.setupEvent(\"$ FAVOURITES_GET\")\n window.subjects.setupEvent(\"$ FAVOURITES_GET_CALLBACK\")\n\n window.subjects.setupEvent(\"$ SHOPPING_BAG_UPDATE_SIZE_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_UPDATE_QUANTITY_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_CIST_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_EVOUCHER_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_LINKED_ITEM_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_MULTIPLE_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_WARRANTY_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_REMOVE_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_CIST\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_EVOUCHER\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_LINKED_ITEM\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_MULTIPLE\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ADD_WARRANTY\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_REMOVE\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ACCEPT\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_ACCEPT_CALLBACK\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_REJECT\")\n window.subjects.setupEvent(\"$ SHOPPING_BAG_REJECT_CALLBACK\")\n}\n\nexport default inialiseGlobalEvents\n","/* istanbul ignore file */\n\n// TEMP CODE - To be removed after MVC deployed with 17101 changes\nconst subscribeRedirectToAlternativeLangeuage = () => {\n if (!(window as any).redirectToAlternateLanguage) {\n ;(window as any).redirectToAlternateLanguage = () => {\n ;(document.getElementsByClassName(\"altLanguageLink\")[0] as HTMLElement).click()\n }\n }\n}\nexport default subscribeRedirectToAlternativeLangeuage\n","/* istanbul ignore file */\n\nimport Logger from \"@next/core-logger\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport {Provider} from \"react-redux\"\nimport {getStore, getProps} from \"./utils\"\nimport ClientApp from \"./ClientApp\"\nimport inialiseGlobalEvents from \"../events/initialiseGlobalEvents\"\nimport subscribeRedirectToAlternativeLangeuage from \"../utils/redirectToAlternativeLanguage\"\n\ndeclare const window: any\nconst store = getStore()\nconst appProps = getProps()\nLogger.debug(`Hydrating Header`)\nconst hydrate = () => {\n ReactDOM.hydrate(\n \n \n ,\n document.getElementById(\"next-header-entrypoint\"),\n )\n}\n\ninialiseGlobalEvents()\n\nsetTimeout(hydrate, 0)\n\nsubscribeRedirectToAlternativeLangeuage()\n\nconst platModPage = \"platform_modernisation\"\n\nif (window.document.getElementById(platModPage) || window.platmodflags?.googleAnalytics) {\n if (window.GoogleAnalyticsNext !== undefined) {\n window.GoogleAnalyticsNext.Init(appProps.siteUrl)\n }\n}\n\nif (window.document.getElementById(platModPage) || window.platmodflags?.monetateEvents) {\n if (window.MonetateShoppingBagSDK !== undefined) {\n window.MonetateShoppingBagSDK.InitialiseEvents()\n }\n}\n","module.exports = ReactDOM;","var logLevel = process.env.LOG_LEVEL || \"warn\";\nvar logLevels = Object.freeze({\n info: 1,\n debug: 2,\n warn: 3,\n error: 4\n});\nvar isDev = process.env.NODE_ENV === \"development\";\nvar logger = {\n info: function info(message, correlationId) {\n if (isDev || logLevels[logLevel] === 1) console.log(correlationId, message);\n },\n debug: function debug(message, correlationId) {\n if (isDev || logLevels[logLevel] <= 2) console.debug(correlationId, message);\n },\n warn: function warn(message, correlationId) {\n if (isDev || logLevels[logLevel] <= 3) {\n console.warn(correlationId, message);\n }\n\n if (typeof window !== \"undefined\" && window.appInsights) {\n window.appInsights.trackTrace({\n message: message,\n severityLevel: 2\n });\n }\n },\n error: function error(message, correlationId) {\n var _a;\n\n if (isDev || logLevels[logLevel] <= 4) {\n console.error(correlationId, message);\n }\n\n if (typeof window !== \"undefined\" && ((_a = window) === null || _a === void 0 ? void 0 : _a.appInsights)) {\n window.appInsights.trackException({\n error: new Error(message),\n severityLevel: 3\n });\n }\n }\n};\nvar Logger = {\n info: function info(message, correlationId) {\n if (correlationId === void 0) {\n correlationId = \"root\";\n }\n\n logger.info(message, correlationId);\n },\n debug: function debug(message, correlationId) {\n if (correlationId === void 0) {\n correlationId = \"root\";\n }\n\n logger.debug(message, correlationId);\n },\n warn: function warn(message, correlationId) {\n if (correlationId === void 0) {\n correlationId = \"root\";\n }\n\n logger.warn(message, correlationId);\n },\n error: function error(message, correlationId) {\n if (correlationId === void 0) {\n correlationId = \"root\";\n }\n\n logger.error(message, correlationId);\n },\n stream: {\n write: function write(message) {\n logger.debug(message, \"root\");\n }\n }\n};\nexport default Logger;"],"sourceRoot":""}