{"version":3,"sources":["uikit-foodcourt/components/Svg/Svg.tsx","uikit-foodcourt/components/Alert/types.ts","uikit-foodcourt/components/Alert/Alert.tsx","uikit-foodcourt/components/Link/Link.tsx","uikit-foodcourt/components/Button/IconButton.tsx","uikit-foodcourt/components/Text/TooltipText.tsx","uikit-foodcourt/components/Table/utils.ts","uikit-foodcourt/components/Box/index.tsx","uikit-foodcourt/components/Checkbox/types.ts","uikit-foodcourt/theme/colors.ts","uikit-foodcourt/components/Alert/theme.ts","uikit-foodcourt/components/Card/theme.ts","uikit-foodcourt/components/PancakeToggle/theme.ts","uikit-foodcourt/components/Radio/theme.ts","uikit-foodcourt/components/Toggle/theme.ts","uikit-foodcourt/widgets/Menu/theme.ts","uikit-foodcourt/widgets/Modal/theme.ts","uikit-foodcourt/components/Tooltip/theme.ts","uikit-foodcourt/theme/dark.ts","uikit-foodcourt/theme/light.ts","uikit-foodcourt/components/Svg/Icons/CheckmarkCircle.tsx","uikit-foodcourt/components/Svg/Icons/Error.tsx","uikit-foodcourt/components/Svg/Icons/Block.tsx","uikit-foodcourt/components/Svg/Icons/Info.tsx","uikit-foodcourt/components/Svg/Icons/ChevronRight.tsx","uikit-foodcourt/components/Svg/Icons/Logo.tsx","uikit-foodcourt/components/Svg/Icons/OpenNew.tsx","uikit-foodcourt/components/Dropdown/Dropdown.tsx","uikit-foodcourt/widgets/WalletModal/types.ts","uikit-foodcourt/widgets/WalletModal/icons/Metamask.tsx","uikit-foodcourt/widgets/WalletModal/icons/MathWallet.tsx","uikit-foodcourt/widgets/WalletModal/icons/TokenPocket.tsx","uikit-foodcourt/widgets/WalletModal/icons/TrustWallet.tsx","uikit-foodcourt/widgets/WalletModal/icons/WalletConnect.tsx","uikit-foodcourt/widgets/WalletModal/icons/BinanceChain.tsx","uikit-foodcourt/widgets/WalletModal/icons/SafePalWallet.tsx","uikit-foodcourt/widgets/WalletModal/config.tsx","uikit-foodcourt/widgets/WalletModal/WalletCard.tsx","uikit-foodcourt/widgets/WalletModal/ConnectModal.tsx","uikit-foodcourt/widgets/WalletModal/CopyToClipboard.tsx","uikit-foodcourt/widgets/WalletModal/AccountModal.tsx","uikit-foodcourt/widgets/WalletModal/useWalletModal.tsx","uikit-foodcourt/hooks/useMatchBreakpoints.ts","uikit-foodcourt/hooks/useTooltip/StyledTooltip.tsx","uikit-foodcourt/components/Link/LinkExternal.tsx","uikit-foodcourt/components/Input/types.ts","uikit-foodcourt/components/Input/Input.tsx","uikit-foodcourt/util/getThemeValue.ts","uikit-foodcourt/util/getExternalLinkProps.ts","uikit-foodcourt/components/Overlay/Overlay.tsx","uikit-foodcourt/components/Dropdown/index.tsx","uikit-foodcourt/components/Input/index.tsx","uikit-foodcourt/components/Table/index.tsx","uikit-foodcourt/ResetCSS.tsx","uikit-foodcourt/widgets/Menu/icons/Farm.tsx","uikit-foodcourt/widgets/Menu/icons/Groups.tsx","uikit-foodcourt/widgets/Menu/icons/Hamburger.tsx","uikit-foodcourt/widgets/Menu/icons/HamburgerClose.tsx","uikit-foodcourt/widgets/Menu/icons/Home.tsx","uikit-foodcourt/widgets/Menu/icons/Ifo.tsx","uikit-foodcourt/widgets/Menu/icons/Info.tsx","uikit-foodcourt/widgets/Menu/icons/Language.tsx","uikit-foodcourt/widgets/Menu/icons/Logo.tsx","uikit-foodcourt/widgets/Menu/icons/Moon.tsx","uikit-foodcourt/widgets/Menu/icons/More.tsx","uikit-foodcourt/widgets/Menu/icons/Nft.tsx","uikit-foodcourt/widgets/Menu/icons/Pool.tsx","uikit-foodcourt/widgets/Menu/icons/Predictions.tsx","uikit-foodcourt/widgets/Menu/icons/Sun.tsx","uikit-foodcourt/widgets/Menu/icons/TeamBattle.tsx","uikit-foodcourt/widgets/Menu/icons/Telegram.tsx","uikit-foodcourt/widgets/Menu/icons/Ticket.tsx","uikit-foodcourt/widgets/Menu/icons/Trade.tsx","uikit-foodcourt/widgets/Menu/icons/Twitter.tsx","uikit-foodcourt/widgets/Menu/icons/Book.tsx","uikit-foodcourt/widgets/Menu/components/MenuButton.tsx","uikit-foodcourt/widgets/Menu/components/Logo.tsx","uikit-foodcourt/widgets/Menu/config.ts","uikit-foodcourt/widgets/Menu/components/MenuEntry.tsx","uikit-foodcourt/widgets/Menu/components/Accordion.tsx","uikit-foodcourt/widgets/Menu/components/MenuLink.tsx","uikit-foodcourt/widgets/Menu/components/PanelBody.tsx","uikit-foodcourt/widgets/Menu/components/SocialLinks.tsx","uikit-foodcourt/components/CouponPrice/index.tsx","uikit-foodcourt/components/ChainSelectButton/ChainSelectModal.tsx","uikit-foodcourt/components/ChainSelectButton/index.tsx","uikit-foodcourt/widgets/Menu/components/PanelFooter.tsx","uikit-foodcourt/widgets/Menu/components/Panel.tsx","uikit-foodcourt/widgets/Menu/components/UserBlock.tsx","uikit-foodcourt/widgets/Menu/Menu.tsx","uikit-foodcourt/components/Card/StyledCard.tsx","uikit-foodcourt/components/Card/Card.tsx","uikit-foodcourt/components/Card/CardBody.tsx","uikit-foodcourt/components/Card/CardHeader.tsx","uikit-foodcourt/components/Card/CardFooter.tsx","uikit-foodcourt/components/Card/CardRibbon.tsx","uikit-foodcourt/components/Progress/types.ts","uikit-foodcourt/components/Progress/themes.ts","uikit-foodcourt/components/Progress/StyledProgress.tsx","uikit-foodcourt/components/Progress/ProgressBunnyWrapper.tsx","uikit-foodcourt/components/Slider/svg/bunnyhead-main.svg","uikit-foodcourt/components/Slider/svg/bunnyhead-max.svg","uikit-foodcourt/components/Slider/svg/bunnybutt.svg","uikit-foodcourt/components/Slider/styles.ts","uikit-foodcourt/components/Image/Wrapper.tsx","uikit-foodcourt/components/Image/Image.tsx","uikit-foodcourt/components/Tag/types.ts","uikit-foodcourt/components/Tag/theme.ts","uikit-foodcourt/components/Tag/StyledTag.tsx","uikit-foodcourt/components/Tag/Tag.tsx","uikit-foodcourt/components/ButtonMenu/StyledButtonMenu.tsx","uikit-foodcourt/components/ButtonMenu/ButtonMenu.tsx","uikit-foodcourt/components/ButtonMenu/ButtonMenuItem.tsx","uikit-foodcourt/components/PancakeToggle/types.ts","uikit-foodcourt/components/PancakeToggle/StyledPancakeToggle.tsx","uikit-foodcourt/components/PancakeToggle/PancakeToggle.tsx","uikit-foodcourt/components/Toggle/StyledToggle.tsx","uikit-foodcourt/components/Toggle/types.ts","uikit-foodcourt/components/Toggle/Toggle.tsx","uikit-foodcourt/widgets/Toast/types.ts","uikit-foodcourt/widgets/Toast/Toast.tsx","uikit-foodcourt/widgets/Toast/ToastContainer.tsx","uikit-foodcourt/components/BalanceInput/styles.tsx","uikit-foodcourt/components/Heading/types.ts","uikit-foodcourt/components/Heading/Heading.tsx","uikit-foodcourt/components/Layouts/BaseLayout.tsx","uikit-foodcourt/components/Layouts/CardsLayout.tsx","uikit-foodcourt/components/Radio/types.ts","uikit-foodcourt/components/Radio/Radio.tsx","uikit-foodcourt/components/Skeleton/types.ts","uikit-foodcourt/components/Skeleton/Skeleton.tsx","uikit-foodcourt/components/Spinner/PanIcon.tsx","uikit-foodcourt/components/Spinner/Spinner.tsx","uikit-foodcourt/components/Stepper/Stepper.tsx","uikit-foodcourt/components/Stepper/Step.tsx","uikit-foodcourt/components/TabMenu/TabMenu.tsx","uikit-foodcourt/components/TabMenu/Tab.tsx","uikit-foodcourt/components/Breadcrumbs/Breadcrumbs.tsx","uikit-foodcourt/components/Checkbox/Checkbox.tsx","uikit-foodcourt/components/FallingBunnies/FallingBunnies.tsx","uikit-foodcourt/components/NotificationDot/NotificationDot.tsx","uikit-foodcourt/components/Button/types.ts","style/Global.ts","connectors/NetworkConnector.ts","connectors/index.ts","constants/index.ts","hooks/index.ts","state/application/actions.ts","state/application/hooks.ts","components/Column/index.tsx","state/lists/actions.ts","utils/listVersionLabel.ts","components/Row/index.tsx","components/Popups/ListUpdatePopup.tsx","utils/index.ts","components/Shared/Common.tsx","components/Popups/TransactionPopup.tsx","components/Popups/PopupItem.tsx","components/Popups/index.tsx","components/Loader/index.tsx","components/Web3ReactManager/index.tsx","components/Card/index.tsx","components/Modal/index.tsx","components/TransactionConfirmationModal/helpers.tsx","components/TransactionConfirmationModal/ConfirmationPendingContent.tsx","components/TransactionConfirmationModal/TransactionSubmittedContent.tsx","components/TransactionConfirmationModal/TransactionConfirmationModal.tsx","components/TransactionConfirmationModal/ConfirmationModalContent.tsx","components/TransactionConfirmationModal/TransactionErrorContent.tsx","components/TransactionConfirmationModal/index.tsx","hooks/TranslationsContext.ts","utils/translateTextHelpers.ts","hooks/useI18n.ts","components/CardNav/index.tsx","constants/abis/erc20.ts","state/lists/hooks.ts","state/multicall/actions.ts","state/multicall/hooks.ts","state/user/actions.ts","utils/theme.ts","state/user/hooks.tsx","constants/multicall/index.ts","hooks/useContract.ts","hooks/Tokens.ts","state/wallet/hooks.ts","hooks/useLast.ts","utils/contenthashToUri.ts","utils/parseENSAddress.ts","utils/uriToHttp.ts","utils/isZero.ts","hooks/useHttpLocations.ts","hooks/useENSContentHash.ts","components/Logo/index.tsx","components/ListLogo/index.tsx","hooks/useInterval.ts","components/Popover/index.tsx","components/Tooltip/index.tsx","components/QuestionHelper/index.tsx","components/pancake/CoinLogo.ts","components/CurrencyLogo/index.tsx","components/SearchModal/CommonBases.tsx","components/SearchModal/styleds.tsx","components/SearchModal/CurrencyList.tsx","components/SearchModal/filtering.ts","components/SearchModal/SortButton.tsx","components/SearchModal/sorting.ts","components/SearchModal/CurrencySearch.tsx","constants/lists.ts","utils/getTokenList.ts","utils/resolveENSContentHash.ts","hooks/useFetchListCallback.ts","hooks/useOnClickOutside.tsx","components/SearchModal/ListSelect.tsx","hooks/useToggle.ts","components/SearchModal/CurrencySearchModal.tsx","components/DoubleLogo/index.tsx","components/NumericalInput/index.tsx","components/CurrencyInputPanel/index.tsx","components/NavigationTabs/index.tsx","data/TotalSupply.ts","utils/currencyId.ts","utils/wrappedCurrency.ts","components/swap/styleds.tsx","components/PositionCard/index.tsx","data/Reserves.ts","data/Allowances.ts","state/swap/actions.ts","state/transactions/actions.ts","state/transactions/hooks.tsx","utils/prices.ts","hooks/useApproveCallback.ts","state/mint/actions.ts","hooks/useDebounce.ts","hooks/useENS.ts","hooks/useENSName.ts","hooks/useENSAddress.ts","hooks/Trades.ts","state/swap/hooks.ts","hooks/useParsedQueryString.ts","state/mint/hooks.ts","utils/maxAmountSpend.ts","components/Pane/index.tsx","components/Container.tsx","state/toasts/index.ts","hooks/useToast.ts","hooks/useAuth.ts","components/ConnectWalletButton/index.tsx","pages/AppBody.tsx","pages/Pool/styleds.tsx","pages/AddLiquidity/ConfirmAddModalBottom.tsx","pages/AddLiquidity/PoolPriceBar.tsx","pages/AddLiquidity/index.tsx","pages/AddLiquidity/redirects.tsx","pages/RemoveLiquidity/redirects.tsx","components/PageHeader/SlippageToleranceSetting.tsx","components/PageHeader/TransactionDeadlineSetting.tsx","components/PageHeader/SettingsModal.tsx","components/PageHeader/RecentTransactionsModal.tsx","components/PageHeader/index.tsx","pages/PoolFinder/index.tsx","pages/Pool/index.tsx","components/Slider/index.tsx","state/burn/actions.ts","state/burn/hooks.ts","pages/RemoveLiquidity/index.tsx","utils/useDebouncedChangeHandler.ts","components/AddressInputPanel/index.tsx","components/swap/FormattedPriceImpact.tsx","components/swap/SwapModalFooter.tsx","components/swap/SwapModalHeader.tsx","components/swap/ConfirmSwapModal.tsx","components/swap/SwapRoute.tsx","components/swap/AdvancedSwapDetails.tsx","components/swap/AdvancedSwapDetailsDropdown.tsx","components/swap/confirmPriceImpactWithoutFee.ts","components/swap/TradePrice.tsx","components/TokenWarningModal/index.tsx","components/SyrupWarningModal/index.tsx","components/SafeMoonWarningModal/index.tsx","components/ProgressSteps/index.tsx","hooks/useSwapCallback.ts","hooks/useWrapCallback.ts","pages/Swap/index.tsx","components/RSafeWarningModal/index.tsx","pages/Wrap/index.tsx","pages/Swap/redirects.tsx","constants/localisation/languageCodes.ts","hooks/LanguageContext.ts","ThemeContext.tsx","hooks/useTheme.ts","hooks/useGetPriceData.ts","hooks/useGetLocalProfile.ts","components/Menu/config.ts","components/Menu/index.tsx","hooks/useGetDocumentTitlePrice.ts","pages/App.tsx","hooks/useIsWindowVisible.ts","state/application/updater.ts","state/lists/updater.ts","utils/retry.ts","state/multicall/updater.tsx","utils/chunkArray.ts","state/transactions/updater.tsx","components/ToastListener/index.tsx","state/application/reducer.ts","state/global/actions.ts","state/user/reducer.ts","state/transactions/reducer.ts","state/swap/reducer.ts","state/mint/reducer.ts","state/lists/reducer.ts","state/burn/reducer.ts","state/multicall/reducer.ts","state/index.ts","utils/getLibrary.ts","Providers.tsx","i18n.ts","index.tsx","uikit-foodcourt/components/Box/Flex.tsx","uikit-foodcourt/components/Svg/Icons/Add.tsx","uikit-foodcourt/components/Svg/Icons/ArrowBack.tsx","uikit-foodcourt/components/Svg/Icons/ArrowDown.tsx","uikit-foodcourt/components/Svg/Icons/ArrowDropDown.tsx","uikit-foodcourt/components/Svg/Icons/ArrowDropUp.tsx","uikit-foodcourt/components/Svg/Icons/ChevronDown.tsx","uikit-foodcourt/components/Svg/Icons/ChevronUp.tsx","uikit-foodcourt/components/Svg/Icons/Close.tsx","uikit-foodcourt/components/Svg/Icons/History.tsx","uikit-foodcourt/components/Svg/Icons/ProgressBunny.tsx","uikit-foodcourt/components/Svg/Icons/Tune.tsx","uikit-foodcourt/components/Svg/Icons/SyncAlt.tsx","uikit-foodcourt/components/Text/Text.tsx","uikit-foodcourt/theme/base.ts","uikit-foodcourt/index.ts","uikit-foodcourt/components/Button/theme.ts","uikit-foodcourt/components/Button/StyledButton.tsx","uikit-foodcourt/components/Button/Button.tsx","uikit-foodcourt/widgets/Modal/styles.tsx","uikit-foodcourt/widgets/Modal/Modal.tsx","uikit-foodcourt/widgets/Modal/ModalContext.tsx","uikit-foodcourt/widgets/Modal/useModal.ts","uikit-foodcourt/components/Box/Box.tsx"],"names":["rotate","keyframes","spinStyle","css","Svg","styled","svg","theme","color","getThemeValue","spin","space","defaultProps","width","xmlns","variants","INFO","DANGER","SUCCESS","WARNING","IconLabel","div","variant","colors","failure","warning","success","secondary","alert","background","Details","hasHandler","CloseHandler","StyledAlert","Flex","Alert","title","children","onClick","Icon","BlockIcon","ErrorIcon","CheckmarkCircleIcon","InfoIcon","getIcon","hasDescription","Text","bold","as","scale","StyledLink","Link","external","props","internalProps","getExternalLinkProps","IconButton","Button","textSubtle","byTextAscending","getTextProperty","objectA","objectB","upperA","toUpperCase","upperB","byTextDescending","scales","SM","MD","baseColors","primary","primaryBright","primaryDark","brandColors","binance","lightColors","backgroundDisabled","backgroundAlt","cardBorder","contrast","dropdown","dropdownDeep","invertedContrast","input","inputSecondary","tertiary","text","textDisabled","borderColor","gradients","bubblegum","inverseBubblegum","cardHeader","blue","violet","violetAlt","darkColors","light","dark","boxShadow","boxShadowActive","shadows","active","boxShadowSuccess","boxShadowWarning","cardHeaderBackground","default","dropShadow","handleBackground","handleShadow","hover","darkTheme","base","isDark","darkAlert","card","darkCard","toggle","darkToggle","nav","darkNav","modal","darkModal","pancakeToggle","darkPancakeToggle","radio","darkRadio","tooltip","darkTooltip","lightTheme","lightAlert","lightCard","lightToggle","lightNav","lightModal","lightPancakeToggle","lightRadio","lightTooltip","viewBox","d","fillRule","clipRule","fill","className","DropdownContent","position","level1","zIndices","radii","small","Container","Dropdown","target","ConnectorNames","cx","cy","r","id","uniqueId","clipPath","height","connectors","icon","Metamask","connectorId","Injected","TrustWallet","MathWallet","TokenPocket","WalletConnect","BinanceChain","BSC","SafePalWallet","connectorLocalStorageKey","WalletCard","login","walletConfig","onDismiss","mb","window","localStorage","setItem","style","justifyContent","toLocaleLowerCase","ConnectModal","Modal","config","map","entry","index","length","attrs","role","Tooltip","isTooltipDisplayed","CopyToClipboard","toCopy","useState","setIsTooltipDisplayed","displayTooltip","setTimeout","type","navigator","clipboard","permissions","writeText","then","document","queryCommandSupported","content","el","createElement","value","body","appendChild","select","execCommand","removeChild","copyToClipboardWithCommand","AccountModal","account","logout","fontSize","whiteSpace","overflow","textOverflow","marginBottom","removeItem","useWalletModal","useModal","onPresentConnectModal","onPresentAccountModal","mediaQueries","prevMinWidth","Object","keys","breakpointMap","reduce","accum","size","minWidth","breakpoint","getKey","charAt","slice","useMatchBreakpoints","key","mql","matchMedia","matches","state","setState","useEffect","handlers","handler","matchMediaQuery","prevState","addEventListener","removeEventListener","forEach","unsubscribe","Arrow","LinkExternal","OpenNew","ml","Input","isSuccess","isWarning","inset","focus","path","fallback","get","rel","Overlay","show","zIndex","ResetCSS","createGlobalStyle","Logo","src","alt","React","memo","prev","next","MenuButton","blink","isPushed","togglePush","href","isAbsoluteUrl","startsWith","innerLogo","aria-label","HamburgerClose","Hamburger","to","socials","label","items","SIDEBAR_WIDTH_FULL","rainbowAnimation","LinkLabel","MenuEntry","isActive","LinkStatus","LinkLabelMemo","AccordionContent","isOpen","maxHeight","Accordion","status","pushNav","initialOpenState","setIsOpen","Children","count","MenuLink","otherProps","isHttpLink","Tag","NavLink","Icons","IconModule","PanelBody","isMobile","links","location","useLocation","handleClick","undefined","iconElement","mr","calloutClass","itemsMatchIndex","findIndex","item","pathname","some","classMap","subtitle","version","stroke","strokeWidth","textShadow","backgroundColor","SocialLinks","social","iconProps","cursor","CouponPrice","price","open","transform","toFixed","defaultOnDismiss","ChainSelectModal","ChainSelectButton","onPresentChainSelect","process","SocialEntry","PanelFooter","toggleTheme","cakePriceUsd","currentLang","langs","setLang","StyledPanel","showMenu","Panel","UserBlock","accountEllipsis","substring","prevProps","nextProps","Wrapper","StyledNav","MENU_HEIGHT","BodyWrapper","Inner","MobileOnlyOverlay","Menu","profile","isXl","setIsPushed","setShowMenu","refPrevOffset","useRef","pageYOffset","throttledHandleScroll","throttle","currentOffset","isBottomOfPage","clientHeight","innerHeight","current","homeLink","find","link","StyledCard","isDisabled","Card","ribbon","CardBody","p","CardHeader","CardFooter","StyledCardRibbon","variantColor","ribbonPosition","CardRibbon","styleVariants","borderRadius","styleScales","Bar","StyledSystemVariant","prop","getCursorStyle","disabled","getBaseThumbStyles","isMax","bunnyHeadMax","bunnyHeadMain","progress","bunnyButt","responsive","img","scaleVariants","padding","StyledTag","outline","themeColorKey","startIcon","endIcon","isValidElement","cloneElement","StyledButtonMenu","SUBTLE","ButtonMenu","activeIndex","PRIMARY","onItemClick","child","InactiveButton","ButtonMenuItem","forwardedAs","scaleKeyValues","sm","pancakeSize","travelDistance","toggleHeight","toggleWidth","pancakeThickness","pancakeTwoOffset","pancakeThreeOffset","butterTop","butterLeft","butterWidth","butterHeight","butterThickness","butterRadius","butterSmearOneTop","butterSmearOneLeft","butterSmearTwoTop","butterSmearTwoRight","md","getScale","property","PancakeStack","PancakeInput","PancakeLabel","checked","PancakeToggle","htmlFor","handleHeight","handleWidth","handleLeft","handleTop","checkedLeft","Handle","StyledToggle","Toggle","isChecked","types","alertTypeMap","alertVariants","StyledToast","Toast","toast","onRemove","ttl","timer","ref","removeHandler","description","handleRemove","useCallback","clearTimeout","CSSTransition","nodeRef","timeout","onMouseEnter","onMouseLeave","StyledToastContainer","ToastContainer","toasts","stackSpacing","TransitionGroup","toString","top","Box","fontSizeLg","Heading","lg","GridLayout","BaseLayout","getCheckedScale","Radio","m","waves","pulse","Root","VARIANT","circle","layout","PanIcon","ChildrenWrapper","isVisible","Tab","button","ul","ChevronRight","Checkbox","bunnyFall","duration","iterations","Number","isFinite","String","span","XS","SECONDARY","TERTIARY","TEXT","GlobalStyle","RequestError","message","code","data","Error","MiniRpcProvider","chainId","url","batchWaitTimeMs","isMetaMask","host","nextId","batchTimeoutId","batch","clearBatch","a","console","info","fetch","method","headers","accept","JSON","stringify","request","response","reject","ok","statusText","json","byKey","result","resolve","error","sendAsync","callback","params","jsonrpc","catch","promise","Promise","push","this","parsed","URL","NetworkConnector","urls","defaultChainId","invariant","supportedChainIds","k","providers","currentChainId","accumulator","provider","AbstractConnector","NETWORK_URL","NETWORK_CHAIN_ID","parseInt","networkLibrary","network","injected","InjectedConnector","bscConnector","BscConnector","walletconnect","WalletConnectConnector","rpc","bridge","qrcode","pollingInterval","connectorsByName","WalletLinkConnector","appName","appLogoUrl","ROUTER_ADDRESS","COUPON","ChainId","MAINNET","Token","TESTNET","KMATIC","KETH","WBNB","DAI","BUSD","BTCB","USDT","KUSDC","UST","ETH","WETH_ONLY","WETH","BASES_TO_CHECK_TRADES_AGAINST","CUSTOM_BASES","SUGGESTED_BASES","BASES_TO_TRACK_LIQUIDITY_FOR","PINNED_PAIRS","NetworkContextName","INITIAL_ALLOWED_SLIPPAGE","DEFAULT_DEADLINE_FROM_NOW","ONE_BIPS","Percent","JSBI","BigInt","BIPS_BASE","ALLOWED_PRICE_IMPACT_LOW","ALLOWED_PRICE_IMPACT_MEDIUM","ALLOWED_PRICE_IMPACT_HIGH","PRICE_IMPACT_WITHOUT_FEE_CONFIRM_MIN","BLOCKED_PRICE_IMPACT_NON_EXPERT","MIN_ETH","exponentiate","useActiveWeb3React","context","useWeb3ReactCore","contextNetwork","updateBlockNumber","createAction","toggleWalletModal","toggleSettingsMenu","addPopup","removePopup","useBlockNumber","useSelector","application","blockNumber","useRemovePopup","dispatch","useDispatch","Column","ColumnCenter","AutoColumn","gap","justify","fetchTokenList","pending","fulfilled","rejected","acceptListUpdate","addList","removeList","selectList","listVersionLabel","major","minor","patch","Row","align","border","RowBetween","RowFlat","AutoRow","RowFixed","ListUpdatePopup","popKey","listUrl","oldList","newList","auto","removeThisPopup","handleAcceptUpdate","useMemo","diffTokenLists","tokens","tokensAdded","added","tokensChanged","changed","tokensRemoved","removed","numTokensChanged","flex","name","token","i","Fragment","address","symbol","flexGrow","marginRight","isAddress","getAddress","BSCSCAN_PREFIXES","70","97","getBscScanLink","prefix","shortenAddress","chars","calculateGasMargin","mul","BigNumber","from","add","calculateSlippageAmount","slippage","divide","multiply","raw","getContract","ABI","library","AddressZero","Contract","getSigner","connectUnchecked","getProviderOrSigner","getRouterContract","_","IUniswapV2Router02ABI","LinkStyledButton","StyledInternalLink","ExternalLink","rest","event","ctrlKey","metaKey","preventDefault","Spinner","RowNoFlex","TransactionPopup","hash","summary","useContext","ThemeContext","paddingRight","StyledClose","X","Popup","Fader","AnimatedFader","animated","PopupItem","removeAfterMs","popupContent","txn","listUpdate","faderStyle","useSpring","MobilePopupWrapper","MobilePopupInner","FixedPopupColumn","Popups","activePopups","list","popupList","filter","useActivePopups","reverse","StyledSVG","Loader","strokeLinecap","strokeLinejoin","MessageWrapper","Message","h2","Web3ReactManager","t","useTranslation","useWeb3React","networkActive","networkError","activateNetwork","activate","triedEager","tried","setTried","isAuthorized","hasSignedIn","getItem","ethereum","useEagerConnect","suppress","on","handleChainChanged","e","handleAccountsChanged","accounts","removeListener","useInactiveListener","showLoader","setShowLoader","LightCard","GreyCard","AnimatedDialogOverlay","DialogOverlay","StyledDialogOverlay","AnimatedDialogContent","DialogContent","StyledDialogContent","minHeight","mobile","transparentize","initialFocusRef","fadeTransition","useTransition","opacity","enter","leave","tabIndex","Section","ConfirmedIcon","BottomSection","StyledContentHeader","ContentHeader","CustomLightSpinner","ConfirmationPendingContent","pendingText","TransactionSubmittedContent","mt","TransactionConfirmationModal","attemptingTxn","ConfirmationModalContent","bottomContent","topContent","TransactionErrorContent","marginTop","textAlign","defaultTranslationState","translations","setTranslations","TranslationsContext","createContext","variableRegex","getTranslation","translationId","foundTranslation","translation","stringId","translatedString","includes","stringToReplace","exec","indexToReplace","split","indexOf","fallbackValueAtIndex","replace","replaceDynamicString","TranslateString","useI18n","Nav","ERC20_INTERFACE","Interface","ERC20_ABI","WrappedTokenInfo","tokenInfo","tags","decimals","logoURI","EMPTY_LIST","listCache","WeakMap","useTokenList","lists","byUrl","tokenMap","tagId","x","Boolean","set","listToTokenMap","useSelectedListUrl","selectedListUrl","useSelectedTokenList","ADDRESS_REGEX","LOWER_HEX_REGEX","toCallKey","call","test","callData","parseCallKey","callKey","pcs","addMulticallListeners","removeMulticallListeners","fetchingMulticallResults","errorFetchingMulticallResults","updateMulticallResults","isMethodArg","isValidMethodArgs","Array","isArray","every","xi","INVALID_RESULT","valid","NEVER_RELOAD","blocksPerFetch","Infinity","useCallsData","calls","options","callResults","multicall","serializedCallKeys","c","sort","callKeys","parse","INVALID_CALL_STATE","loading","syncing","LOADING_CALL_STATE","toCallState","callResult","contractInterface","fragment","latestBlockNumber","decodeFunctionResult","useMultipleContractSingleData","addresses","methodName","callInputs","getFunction","encodeFunctionData","results","useSingleCallResult","contract","inputs","interface","updateMatchesDarkMode","updateUserDarkMode","updateUserExpertMode","updateUserSlippageTolerance","updateUserDeadline","addSerializedToken","removeSerializedToken","addSerializedPair","removeSerializedPair","muteAudio","unmuteAudio","CACHE_KEY","serializeToken","deserializeToken","serializedToken","useIsExpertMode","user","userExpertMode","useExpertModeManager","expertMode","toggleSetExpertMode","useUserSlippageTolerance","userSlippageTolerance","slippageTolerance","useUserDeadline","userDeadline","deadline","useUserAddedTokens","serializedTokensMap","values","serializePair","pair","token0","token1","toV2LiquidityToken","tokenA","tokenB","Pair","MULTICALL_NETWORKS","useContract","withSignerIfPossible","useTokenContract","tokenAddress","useWSafeTokenContract","WSAFETOKEN_ABI","useENSRegistrarContract","ENS_ABI","useENSResolverContract","ENS_PUBLIC_RESOLVER_ABI","useMulticallContract","MULTICALL_ABI","TOKEN_INFO","SAFE","WSAFE","RSAFE","WSafe2Safe","wAddress","Safe2WSafe","useAllTokens","tokenMode","userAddedTokens","allTokens","allChainTokens","filteredTokens","wSafeAddress","rSafeAddress","isSafeToken","isRSafeToken","isWSafeToken","BYTES32_REGEX","parseStringOrBytes32","str","bytes32","defaultValue","parseBytes32String","useToken","tokenContract","tokenContractBytes32","ERC20_BYTES32_ABI","useBytes32TokenContract","tokenName","tokenNameBytes32","symbolBytes32","useCurrency","currencyId","isBNB","ETHER","useETHBalances","uncheckedAddresses","multicallContract","useSingleContractMultipleData","CurrencyAmount","ether","useTokenBalancesWithLoadingIndicator","validatedTokens","balances","vt","anyLoading","callState","amount","TokenAmount","useTokenBalances","useTokenBalance","tokenBalances","useCurrencyBalances","currencies","currency","ethBalance","useCurrencyBalance","useLast","filterFn","last","setLast","isDefined","UTF_8_DECODER","TextDecoder","contenthashToUri","contenthash","buff","hex","substr","arr","Uint8Array","hexToUint8Array","codec","getCodec","rmPrefix","cid","CID","toB58String","multihash","decode","digest","trim","ENS_NAME_REGEX","parseENSAddress","ensAddress","match","ensName","toLowerCase","ensPath","uriToHttp","uri","isZero","hexNumberString","useHttpLocations","ens","resolvedContentHash","ensNodeArgument","namehash","resolverAddressResult","resolverAddress","useENSContentHash","BAD_SRCS","srcs","refresh","s","onError","StyledListLogo","ListLogo","useInterval","delay","leading","savedCallback","tick","setInterval","clearInterval","PopoverContainer","ReferenceElement","Popover","placement","referenceElement","setReferenceElement","popperElement","setPopperElement","arrowElement","setArrowElement","usePopper","strategy","modifiers","offset","element","styles","update","attributes","popper","arrow","TooltipContainer","MouseoverTooltip","setShow","close","QuestionWrapper","QuestionHelper","marginLeft","CoinLogo","StyledBnbLogo","StyledLogo","CurrencyLogo","BaseWrapper","disable","CommonBases","onSelect","selectedCurrency","currencyEquals","selected","PaddedColumn","MenuItem","SearchInput","Separator","SeparatorDark","currencyKey","StyledBalanceText","Balance","balance","toExact","toSignificant","TagContainer","TokenTags","tag","join","CurrencyRow","isSelected","otherSelected","isOnSelectedList","defaultTokens","isTokenOnList","customAdded","useIsUserAddedToken","removeToken","useRemoveUserAddedToken","addToken","useAddUserToken","stopPropagation","justifySelf","CurrencyList","onCurrencySelect","otherCurrency","fixedListRef","showETH","itemData","Currency","itemKey","itemCount","itemSize","filterTokens","search","searchingAddress","lowerSearchParts","matchesSearch","sParts","sp","endsWith","FilterWrapper","SortButton","toggleSortOrder","ascending","useTokenComparator","inverted","useAllTokenBalances","comparator","balanceA","balanceB","balanceComp","greaterThan","equalTo","getTokenComparator","CurrencySearch","otherSelectedCurrency","showCommonBases","onChangeList","fixedList","searchQuery","setSearchQuery","invertSearchOrder","setInvertSearchOrder","isAddressSearch","searchToken","tokenComparator","audioPlay","filteredSortedTokens","sorted","symbolMatch","handleCurrencySelect","audio","getElementById","play","inputRef","handleInput","checksummedInput","scrollTo","handleEnter","selectedUrl","listsByUrl","pendingUpdate","loadingRequestId","useSelectedListInfo","placeholder","onChange","onKeyDown","iso","disableWidth","DEFAULT_TOKEN_LIST_URL","DEFAULT_LIST_OF_LISTS","SAFEMOON_TOKEN_ADDRESS","WSAFEMOON_TOKEN_ADDRESS","tokenListValidator","Ajv","allErrors","compile","schema","getTokenList","resolveENSContentHash","defaultTokenJson","parsedENS","contentHashUri","translatedUri","isLast","validationErrors","errors","dataPath","REGISTRAR_ABI","constant","outputs","payable","stateMutability","REGISTRAR_ADDRESS","RESOLVER_ABI","internalType","resolverContract","ensRegistrarContract","resolver","useFetchListCallback","ensResolver","Web3Provider","getNetworkLibrary","requestId","nanoid","tokenList","errorMessage","useOnClickOutside","node","handlerRef","handleClickOutside","contains","UnpaddedLinkStyledButton","StyledMenu","StyledListUrlText","ListOrigin","lowerListUrl","listUrlRowHTMLId","ListRow","onBack","initialState","useToggle","selectThisList","handleAcceptListUpdate","handleRemoveList","prompt","display","ListContainer","ListSelect","listUrlInput","setListUrlInput","adding","addError","setAddError","fetchList","handleAddList","validUrl","handleEnterKey","sortedLists","u1","u2","l1","l2","maxWidth","CurrencySearchModal","listView","setListView","lastOpen","handleClickChangeList","handleClickBack","noListSelected","sizeraw","margin","HigherLogo","CoveredLogo","DoubleCurrencyLogo","currency0","currency1","StyledInput","inputRegex","RegExp","onUserInput","nextUserInput","inputMode","autoComplete","autoCorrect","pattern","minLength","maxLength","spellCheck","InputRow","CurrencySelect","darken","LabelRow","Aligner","InputPanel","hideInput","CurrencyInputPanel","pairValue","onMax","onUserPairInput","showMaxButton","disableCurrencySelect","hideBalance","pairCurrency","modalOpen","setModalOpen","selectedCurrencyBalance","translatedLabel","handleDismissSearch","val","Tabs","ActiveText","StyledArrowLeft","ArrowLeft","FindPoolTabs","AddRemoveTabs","useTotalSupply","totalSupply","wrappedCurrency","wrappedCurrencyAmount","currencyAmount","unwrappedToken","equals","ArrowWrapper","clickable","SectionBreak","BottomGrouping","ErrorText","severity","StyledBalanceMaxMini","Dots","SwapCallbackErrorInner","SwapCallbackErrorInnerAlertTriangle","SwapCallbackError","SwapShowAcceptChanges","FixedHeightRow","HoverCard","MinimalPositionCard","showUnwrapped","showMore","setShowMore","userPoolBalance","liquidityToken","totalPoolTokens","greaterThanOrEqual","getLiquidityValue","token0Deposited","token1Deposited","textTransform","fontWeight","FullPositionCard","removeOnly","poolTokenPercentage","PairState","PAIR_INTERFACE","IUniswapV2PairABI","usePairs","currencyA","currencyB","reserves","LOADING","INVALID","NOT_EXISTS","reserve0","reserve1","sortsBefore","EXISTS","usePair","useTokenAllowance","owner","spender","allowance","Field","selectCurrency","switchCurrencies","typeInput","replaceSwapState","setRecipient","addTransaction","clearAllTransactions","finalizeTransaction","checkedTransaction","useTransactionAdder","approval","useAllTransactions","transactions","isTransactionRecent","tx","Date","getTime","addedTime","ApprovalState","BASE_FEE","ONE_HUNDRED_PERCENT","INPUT_FRACTION_AFTER_FEE","subtract","computeTradePriceBreakdown","trade","realizedLPFee","route","pairs","currentFee","priceImpactWithoutFeeFraction","priceImpact","priceImpactWithoutFee","numerator","denominator","inputAmount","quotient","computeSlippageAdjustedAmounts","allowedSlippage","num","pct","Math","floor","INPUT","maximumAmountIn","OUTPUT","minimumAmountOut","warningSeverity","lessThan","formatExecutionPrice","executionPrice","invert","outputAmount","useApproveCallback","amountToApprove","currentAllowance","pendingApproval","allTransactions","receipt","useHasPendingApproval","approvalState","APPROVED","PENDING","NOT_APPROVED","UNKNOWN","approve","useExact","estimateGas","MaxUint256","estimatedGas","gasLimit","resetMintState","useDebounce","debouncedValue","setDebouncedValue","useENS","nameOrAddress","validated","reverseLookup","debouncedAddress","ENSName","useENSName","lookup","debouncedName","addr","useENSAddress","useAllCommonPairs","bases","basePairs","flatMap","otherBase","t0","t1","allPairs","customBases","customBasesA","customBasesB","curr","useSwapState","swap","useSwapActionHandlers","onCurrencySelection","field","onSwitchTokens","typedValue","onChangeRecipient","recipient","tryParseAmount","typedValueParsed","parseUnits","BAD_RECIPIENT_ADDRESSES","involvesAddress","checksummedAddress","useDerivedSwapInfo","inputError","independentField","inputCurrencyId","outputCurrencyId","inputCurrency","outputCurrency","recipientLookup","relevantTokenBalances","isExactIn","parsedAmount","bestTradeExactIn","currencyAmountIn","currencyOut","allowedPairs","Trade","maxHops","maxNumResults","useTradeExactIn","bestTradeExactOut","currencyIn","currencyAmountOut","useTradeExactOut","v2Trade","currencyBalances","formattedTo","slippageAdjustedAmounts","balanceIn","amountIn","parseCurrencyFromURLParameter","urlParam","queryParametersToSwapState","parsedQs","validatedRecipient","exactAmount","isNaN","parseFloat","parseIndependentFieldURLParameter","exactField","useDefaultsFromURLSearch","parseArrays","ignoreQueryPrefix","useParsedQueryString","setResult","ZERO","useMintState","mint","maxAmountSpend","Pane","xs","toastsSlice","createSlice","reducers","action","payload","toastIndex","splice","unshift","remove","clear","actions","useToast","pushToast","toastError","kebabCase","toastTypes","toastInfo","toastSuccess","toastWarning","removeToast","clearToast","useAuth","deactivate","connectorID","connector","UnsupportedChainIdError","NoEthereumProviderError","NoBscProviderError","UserRejectedRequestErrorInjected","UserRejectedRequestErrorWalletConnect","walletConnectProvider","UnlockButton","AppBody","ClickableText","ConfirmAddModalBottom","noLiquidity","parsedAmounts","onAdd","CURRENCY_A","CURRENCY_B","PoolPriceBar","pt","AddLiquidity","currencyIdA","currencyIdB","history","oneCurrencyIsWBNB","otherTypedValue","dependentField","pairState","equal","independentAmount","dependentAmount","wrappedIndependentAmount","dependentCurrency","dependentTokenAmount","priceOf","quote","currencyAAmount","currencyBAmount","Price","wrappedCurrencyA","liquidityMinted","tokenAmountA","tokenAmountB","getLiquidityMinted","useDerivedMintInfo","onFieldAInput","onFieldBInput","useMintActionHandlers","isValid","showConfirm","setShowConfirm","setAttemptingTxn","txHash","setTxHash","formattedAmounts","maxAmounts","atMaxAmounts","approvalA","approveACallback","approvalB","approveBCallback","router","parsedAmountA","parsedAmountB","amountsMin","deadlineFromNow","ceil","now","tokenBIsBNB","estimate","addLiquidityETH","args","addLiquidity","estimatedGasLimit","modalHeader","fontStyle","modalBottom","handleCurrencyASelect","currA","newCurrencyIdA","handleCurrencyBSelect","currB","newCurrencyIdB","handleDismissConfirmation","CardNav","ConnectWalletButton","OLD_PATH_STRUCTURE","RedirectOldAddLiquidityPathStructure","RedirectDuplicateTokenIds","RedirectOldRemoveLiquidityPathStructure","Option","Options","predefinedValues","SlippageToleranceSettings","translateString","setUserslippageTolerance","setValue","setError","rawValue","alignItems","predefinedValue","step","min","evt","inputValue","TransactionDeadlineSetting","setDeadline","SettingsModal","SlippageToleranceSetting","newTransactionsFirst","b","RecentTransactionsModal","sortedRecentTransactions","flexDirection","sortedRecentTransaction","getRowStatus","Fields","StyledPageHeader","PageHeader","onPresentSettings","onPresentRecentTransactions","Pool","trackedTokenPairs","pinnedPairs","generatedPairs","savedSerializedPairs","userPairs","forChain","pairId","combinedList","concat","keyed","useTrackedTokenPairs","tokenPairsWithLiquidityTokens","tpwlt","v2PairsBalances","fetchingV2PairBalances","liquidityTokensWithBalances","v2Pairs","v2IsLoading","V2Pair","allV2PairsWithLiquidity","v2Pair","PoolFinder","showSearch","setShowSearch","TOKEN1","activeField","setActiveField","setCurrency0","setCurrency1","addPair","serializedPair","usePairAdder","validPairNoLiquidity","hasPosition","TOKEN0","handleSearchDismiss","prerequisiteMessage","justifyItems","StyledRangeInput","Slider","max","changeCallback","aria-labelledby","useBurnState","burn","OutlineCard","Body","RemoveLiquidity","userLiquidity","LIQUIDITY","liquidityValueA","liquidityValueB","liquidityValues","percentToRemove","LIQUIDITY_PERCENT","liquidityValue","useDerivedBurnInfo","_onUserInput","useBurnActionHandlers","showDetailed","setShowDetailed","atMaxAmount","pairContract","signatureData","setSignatureData","approveCallback","liquidityAmount","nonces","nonce","deadlineForSignature","EIP712Domain","domain","verifyingContract","Permit","toHexString","primaryType","send","splitSignature","signature","v","onLiquidityInput","onCurrencyAInput","onCurrencyBInput","currencyAmountA","currencyAmountB","currencyBIsETH","oneCurrencyIsETH","methodNames","all","safeGasEstimates","indexOfSuccessfulEstimation","safeGasEstimate","isBigNumber","liquidityPercentChangeCallback","oneCurrencyIsWETH","handleSelectCurrencyA","handleSelectCurrencyB","debouncedMs","inner","setInner","onChangeInner","newValue","useDebouncedChangeHandler","innerLiquidityPercentage","setInnerLiquidityPercentage","paddingBottom","ContainerRow","InputContainer","AddressInputPanel","withoutSpaces","autoCapitalize","FormattedPriceImpact","SwapModalFooter","onConfirm","swapErrorMessage","disabledConfirm","showInverted","setShowInverted","paddingLeft","tradeType","TradeType","EXACT_INPUT","PriceInfoText","SwapModalHeader","showAcceptChanges","onAcceptChanges","priceImpactSeverity","EXACT_OUTPUT","ConfirmSwapModal","originalTrade","tradeB","tradeA","confirmationContent","px","py","my","flexWrap","isLastItem","flexShrink","TradeSummary","AdvancedSwapDetails","showRoute","SwapRoute","AdvancedDetailsFooter","AdvancedSwapDetailsDropdown","lastTrade","confirmPriceImpactWithoutFee","confirm","TradePrice","formattedPrice","baseCurrency","quoteCurrency","WarningContainer","StyledWarningIcon","AlertTriangle","TokenWarningCard","tokenSymbol","duplicateNameOrSymbol","userToken","TokenWarningModal","understandChecked","setUnderstandChecked","toggleUnderstand","uc","handleDismiss","userSelect","SyrupWarningModal","transactionType","SafeMoonWarningModal","SwapCallbackState","Grouping","Circle","confirmed","CircleRow","Connector","prevConfirmed","ProgressCircles","steps","useSwapCallArguments","recipientAddressOrName","recipientAddress","swapMethods","Router","swapCallParameters","feeOnTransfer","parameters","useSwapCallback","swapCalls","VALID","gasEstimate","gasError","callStatic","callError","reason","estimatedCalls","successfulEstimation","ix","errorCalls","inputSymbol","outputSymbol","withRecipient","WrapType","NOT_APPLICABLE","wrapType","useWrapCallback","inputAddress","outputAddress","inputAmountOverride","inputToken","outputToken","wethContract","WETH_ABI","useWETHContract","wSafeTokenContract","divAmount","ethers","utils","parseEther","sufficientBalance","WRAP","execute","deposit","txReceipt","UNWRAP","withdraw","wrap","unwrap","Swap","loadedUrlParams","loadedInputCurrency","loadedOutputCurrency","dismissTokenWarning","setDismissTokenWarning","selectedToken","purchaseType","transactionWarning","setTransactionWarning","urlLoadedTokens","handleConfirmTokenWarning","handleConfirmWarning","isExpertMode","swapInputError","onWrap","wrapInputError","showWrap","handleTypeInput","handleTypeOutput","tradeToConfirm","setSwapState","userHasSpecifiedInputOutput","noRoute","useApproveCallbackFromTrade","approvalSubmitted","setApprovalSubmitted","maxAmountInput","atMaxAmountInput","swapCallback","swapCallbackError","handleSwap","showApproveFlow","handleConfirmDismiss","handleAcceptChanges","checkForWarning","handleInputSelect","handleMaxInput","handleOutputSelect","RSafeWarningModal","Wrap","rSafeTokenWarning","setRSafeTokenWarning","handleConfirmRSafeTokenWarning","inputTokenAddress","setInputTokenAddress","outputTokenAddress","setOutputTokenAddress","wSafeTokenAddress","setWSafeTokenAddress","wSafeContract","wrapRatio","setInputAmount","inputPairAmount","setInputPairAmount","setOutputAmount","outputPairAmount","setOutputPairAmount","wSafeToken","feeRate","rewardRate","adjustedWrapRatio","safeFee","unwrapFee","wrapFee","newOutputAmount","parsedOutputAmount","abs","newInputAmount","parsedInputAmount","rewardToken","setRewardToken","onCurrencySelectionWrapper","RedirectPathToSwapOnly","EN","language","allLanguages","defaultLanguageState","selectedLanguage","setSelectedLanguage","translatedLanguage","setTranslatedLanguage","LanguageContext","ThemeContextProvider","isDarkUserSetting","setIsDark","Provider","useTheme","StyledThemeCopntext","useGetPriceData","setData","res","fetchData","profileLink","noProfileLink","useGetLocalProfile","setProfile","localData","Cookies","localProfile","prevProfile","username","image","avatar","priceData","useGetDocumentTitlePrice","cakePriceUsdString","toLocaleString","minimumFractionDigits","maximumFractionDigits","AppWrapper","App","storedLangCode","storedLang","getStoredLang","exact","strict","component","VISIBILITY_STATE_SUPPORTED","isWindowVisible","visibilityState","useIsWindowVisible","focused","setFocused","listener","Updater","windowVisible","blockNumberCallback","getBlockNumber","debouncedState","bump","getVersionUpgrade","VersionUpgrade","NONE","PATCH","MINOR","minVersionBump","MAJOR","waitRandom","ms","round","random","CancelledError","RetryableError","chunk","minBlockNumber","aggregate","obj","resultsBlockNumber","returnData","toNumber","debouncedListeners","callListeners","cancellations","listeningKeys","allListeners","listeners","keyListeners","previousMin","activeListeningKeys","unserializedOutdatedCallKeys","minDataBlockNumber","fetchingBlockNumber","outdatedListeningKeys","serializedOutdatedCallKeys","outdatedCallKeys","chunkedCalls","maxChunkSize","numChunks","chunkSize","chunkArray","fn","rejectCancelled","n","minWait","maxWait","completed","cancel","retry","fetchChunk","fetchBlockNumber","firstCallKeyIndex","lastCallKeyIndex","lastBlockNumber","useAddPopup","lastCheckedBlockNumber","blocksSinceCheck","minutesPending","shouldCheck","getTransactionReceipt","blockHash","contractAddress","transactionHash","transactionIndex","ToastListener","createReducer","walletModalOpen","settingsMenuOpen","builder","addCase","popup","updateVersion","currentTimestamp","pairKey","token0Address","token1Address","userDarkMode","matchesDarkMode","timestamp","lastUpdateVersionTimestamp","tokenAAddress","tokenBAddress","txs","confirmedTime","otherField","NEW_LIST_STATE","lastInitializedDefaultListOfLists","DEFAULT_LIST","lastInitializedSet","l","Set","newListOfListsSet","has","PERSISTED_KEYS","loadedState","load","states","cache","rawCache","getThemeCache","store","configureStore","reducer","middleware","getDefaultMiddleware","thunk","save","preloadedState","getLibrary","Web3ProviderNetwork","createWeb3ReactRoot","Providers","i18next","use","XHR","LanguageDetector","initReactI18next","init","backend","loadPath","react","useSuspense","fallbackLng","preload","keySeparator","interpolation","escapeValue","autoRefreshOnNetworkChange","$$data","REACT_APP_FACTORY_ADDRESS","REACT_APP_REACT_APP_FACTORY_ADDRESS","REACT_APP_INIT_CODE_HASH","REACT_APP_REACT_APP_INIT_CODE_HASH","ReactDOM","render","Global","flexbox","rx","ry","typography","xl","breakpoints","siteWidth","spacing","StyledButton","$isLoading","isLoading","classNames","ModalHeader","ModalTitle","ModalBody","ModalBackButton","area-label","ModalContainer","hideCloseButton","bodyPadding","headerBackground","ModalWrapper","Context","onPresent","setCloseOnOverlayClick","ModalProvider","modalNode","setModalNode","closeOnOverlayClick","onPresentCallback"],"mappings":"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","file":"static/js/main.16129996.chunk.js","sourcesContent":["import styled, { css, keyframes } from 'styled-components'\nimport { space } from 'styled-system'\nimport getThemeValue from '../../util/getThemeValue'\nimport { SvgProps } from './types'\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst spinStyle = css`\n\tanimation: ${rotate} 2s linear infinite;\n`\n\nconst Svg = styled.svg`\n\talign-self: center; // Safari fix\n\tfill: ${({ theme, color }) => getThemeValue(`colors.${color}`, color)(theme)};\n\tflex-shrink: 0;\n\t${({ spin }) => spin && spinStyle}\n\t${space}\n`\n\nSvg.defaultProps = {\n\tcolor: 'text',\n\twidth: '20px',\n\txmlns: 'http://www.w3.org/2000/svg',\n\tspin: false,\n}\n\nexport default Svg\n","import { MouseEvent, ReactNode } from 'react'\n\nexport type AlertTheme = {\n\tbackground: string\n}\n\nexport const variants = {\n\tINFO: 'info',\n\tDANGER: 'danger',\n\tSUCCESS: 'success',\n\tWARNING: 'warning',\n} as const\n\nexport type Variants = typeof variants[keyof typeof variants]\n\nexport interface AlertProps {\n\tvariant?: Variants\n\ttitle: string\n\tchildren?: ReactNode\n\tonClick?: (evt: MouseEvent) => void\n}\n","import React from 'react'\nimport styled, { DefaultTheme } from 'styled-components'\nimport CheckmarkCircleIcon from '../Svg/Icons/CheckmarkCircle'\nimport ErrorIcon from '../Svg/Icons/Error'\nimport BlockIcon from '../Svg/Icons/Block'\nimport InfoIcon from '../Svg/Icons/Info'\nimport { Text } from '../Text'\nimport { IconButton } from '../Button'\nimport { CloseIcon } from '../Svg'\nimport Flex from '../Box/Flex'\nimport { AlertProps, variants } from './types'\n\ninterface ThemedIconLabel {\n\tvariant: AlertProps['variant']\n\ttheme: DefaultTheme\n\thasDescription: boolean\n}\n\nconst getThemeColor = ({ theme, variant = variants.INFO }: ThemedIconLabel) => {\n\tswitch (variant) {\n\t\tcase variants.DANGER:\n\t\t\treturn theme.colors.failure\n\t\tcase variants.WARNING:\n\t\t\treturn theme.colors.warning\n\t\tcase variants.SUCCESS:\n\t\t\treturn theme.colors.success\n\t\tcase variants.INFO:\n\t\tdefault:\n\t\t\treturn theme.colors.secondary\n\t}\n}\n\nconst getIcon = (variant: AlertProps['variant'] = variants.INFO) => {\n\tswitch (variant) {\n\t\tcase variants.DANGER:\n\t\t\treturn BlockIcon\n\t\tcase variants.WARNING:\n\t\t\treturn ErrorIcon\n\t\tcase variants.SUCCESS:\n\t\t\treturn CheckmarkCircleIcon\n\t\tcase variants.INFO:\n\t\tdefault:\n\t\t\treturn InfoIcon\n\t}\n}\n\nconst IconLabel = styled.div`\n\tbackground-color: ${getThemeColor};\n\tborder-radius: 16px 0 0 16px;\n\tcolor: ${({ theme }) => theme.alert.background};\n\tpadding: 12px;\n`\n\nconst withHandlerSpacing = 32 + 12 + 8 // button size + inner spacing + handler position\nconst Details = styled.div<{ hasHandler: boolean }>`\n\tflex: 1;\n\tpadding-bottom: 12px;\n\tpadding-left: 12px;\n\tpadding-right: ${({ hasHandler }) => (hasHandler ? `${withHandlerSpacing}px` : '12px')};\n\tpadding-top: 12px;\n`\n\nconst CloseHandler = styled.div`\n\tborder-radius: 0 16px 16px 0;\n\tright: 8px;\n\tposition: absolute;\n\ttop: 8px;\n`\n\nconst StyledAlert = styled(Flex)`\n\tposition: relative;\n\tbackground-color: ${({ theme }) => theme.alert.background};\n\tborder-radius: 16px;\n\tbox-shadow: 0px 20px 36px -8px rgba(14, 14, 44, 0.1), 0px 1px 1px rgba(0, 0, 0, 0.05);\n`\n\nconst Alert: React.FC = ({ title, children, variant, onClick }) => {\n\tconst Icon = getIcon(variant)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t{title}\n\t\t\t\t{typeof children === 'string' ? {children} : children}\n\t\t\t
\n\t\t\t{onClick && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t)\n}\n\nexport default Alert\n","import React from 'react'\nimport styled from 'styled-components'\nimport getExternalLinkProps from '../../util/getExternalLinkProps'\nimport Text from '../Text/Text'\nimport { LinkProps } from './types'\n\nconst StyledLink = styled(Text)`\n\tdisplay: flex;\n\talign-items: center;\n\twidth: fit-content;\n\t&:hover {\n\t\ttext-decoration: underline;\n\t}\n`\n\nconst Link: React.FC = ({ external, ...props }) => {\n\tconst internalProps = external ? getExternalLinkProps() : {}\n\treturn \n}\n\nLink.defaultProps = {\n\tcolor: 'primary',\n}\n\nexport default Link\n","import styled from 'styled-components'\nimport Button from './Button'\nimport { BaseButtonProps, PolymorphicComponent } from './types'\n\nconst IconButton: PolymorphicComponent = styled(Button)`\n\tpadding: 0;\n\twidth: ${({ scale }) => (scale === 'sm' ? '32px' : '48px')};\n`\n\nexport default IconButton\n","import styled from 'styled-components'\nimport Text from './Text'\n\nconst TooltipText = styled(Text)`\n\ttext-decoration: ${({ theme }) => `underline dotted ${theme.colors.textSubtle}`};\n\ttext-underline-offset: 0.1em;\n`\n\nexport default TooltipText\n","export const byTextAscending = (getTextProperty: (object: T) => string) => (\n\tobjectA: T,\n\tobjectB: T,\n): number => {\n\tconst upperA = getTextProperty(objectA).toUpperCase()\n\tconst upperB = getTextProperty(objectB).toUpperCase()\n\tif (upperA < upperB) {\n\t\treturn -1\n\t}\n\tif (upperA > upperB) {\n\t\treturn 1\n\t}\n\treturn 0\n}\n\nexport const byTextDescending = (getTextProperty: (object: T) => string) => (\n\tobjectA: T,\n\tobjectB: T,\n): number => {\n\tconst upperA = getTextProperty(objectA).toUpperCase()\n\tconst upperB = getTextProperty(objectB).toUpperCase()\n\tif (upperA > upperB) {\n\t\treturn -1\n\t}\n\tif (upperA < upperB) {\n\t\treturn 1\n\t}\n\treturn 0\n}\n","export { default as Box } from './Box'\nexport { default as Flex } from './Flex'\nexport type { BoxProps, FlexProps } from './types'\n","export const scales = {\n\tSM: 'sm',\n\tMD: 'md',\n} as const\n\nexport type Scales = typeof scales[keyof typeof scales]\n\nexport interface CheckboxProps {\n\tscale?: Scales\n}\n","import { Colors } from './types'\n\nexport const baseColors = {\n\tfailure: 'hsl(9, 95%, 66%)',\n\tprimary: 'hsl(9, 95%, 66%)',\n\tprimaryBright: '#fa4d2e',\n\tprimaryDark: '#fc8c79',\n\tsecondary: '#febc2f',\n\tsuccess: '#31D0AA',\n\twarning: '#FFB237',\n}\n\nexport const brandColors = {\n\tbinance: '#F0B90B',\n}\n\nexport const lightColors: Colors = {\n\t...baseColors,\n\t...brandColors,\n\tbackground: '#FAF9FA',\n\tbackgroundDisabled: '#E9EAEB',\n\tbackgroundAlt: '#FFFFFF',\n\tcardBorder: '#E7E3EB',\n\tcontrast: '#191326',\n\tdropdown: '#F6F6F6',\n\tdropdownDeep: '#EEEEEE',\n\tinvertedContrast: '#FFFFFF',\n\tinput: 'hsl(41, 99%, 94%)', // NOTE: can't use css var here. it error!\n\tinputSecondary: '#fecd62',\n\ttertiary: '#EFF4F5',\n\ttext: '#604200',\n\ttextDisabled: '#BDC2C4',\n\ttextSubtle: 'hsl(41, 99%, 39%)', // NOTE: can't use css var here. it error!\n\tborderColor: '#E9EAEB',\n\tgradients: {\n\t\tbubblegum: `linear-gradient(139.73deg, var(--color-accent-100) 0%, var(--color-primary-100) 100%)`,\n\t\tinverseBubblegum: 'linear-gradient(139.73deg, #F3EFFF 0%, #E5FDFF 100%)',\n\t\tcardHeader: 'linear-gradient(111.68deg, #F2ECF2 0%, #E8F2F6 100%)',\n\t\tblue: 'linear-gradient(180deg, #A7E8F1 0%, #94E1F2 100%)',\n\t\tviolet: 'linear-gradient(180deg, #E2C9FB 0%, #CDB8FA 100%)',\n\t\tvioletAlt: 'linear-gradient(180deg, #CBD7EF 0%, #9A9FD0 100%)',\n\t},\n}\n\nexport const darkColors: Colors = {\n\t...baseColors,\n\t...brandColors,\n\tsecondary: '#9A6AFF',\n\tbackground: '#08060B',\n\tbackgroundDisabled: '#3c3742',\n\tbackgroundAlt: '#27262c',\n\tcardBorder: '#383241',\n\tcontrast: '#FFFFFF',\n\tdropdown: '#1E1D20',\n\tdropdownDeep: '#100C18',\n\tinvertedContrast: '#191326',\n\tinput: '#372F47',\n\tinputSecondary: '#262130',\n\tprimaryDark: '#0098A1',\n\ttertiary: '#353547',\n\ttext: '#F4EEFF',\n\ttextDisabled: '#666171',\n\ttextSubtle: '#B8ADD2',\n\tborderColor: '#524B63',\n\tgradients: {\n\t\tbubblegum: 'linear-gradient(139.73deg, #313D5C 0%, #3D2A54 100%)',\n\t\tinverseBubblegum: 'linear-gradient(139.73deg, #3D2A54 0%, #313D5C 100%)',\n\t\tcardHeader: 'linear-gradient(166.77deg, #3B4155 0%, #3A3045 100%)',\n\t\tblue: 'linear-gradient(180deg, #00707F 0%, #19778C 100%)',\n\t\tviolet: 'linear-gradient(180deg, #6C4999 0%, #6D4DB2 100%)',\n\t\tvioletAlt: 'linear-gradient(180deg, #434575 0%, #66578D 100%)',\n\t},\n}\n","import { darkColors, lightColors } from '../../theme/colors'\nimport { AlertTheme } from './types'\n\nexport const light: AlertTheme = {\n\tbackground: lightColors.backgroundAlt,\n}\n\nexport const dark: AlertTheme = {\n\tbackground: darkColors.backgroundAlt,\n}\n","import { darkColors, lightColors } from '../../theme/colors'\nimport { shadows } from '../../theme/base'\nimport { CardTheme } from './types'\n\nexport const light: CardTheme = {\n\tbackground: lightColors.backgroundAlt,\n\tboxShadow: '0px 2px 12px -8px rgba(25, 19, 38, 0.1), 0px 1px 1px rgba(25, 19, 38, 0.05)',\n\tboxShadowActive: shadows.active,\n\tboxShadowSuccess: shadows.success,\n\tboxShadowWarning: shadows.warning,\n\tcardHeaderBackground: {\n\t\tdefault: lightColors.gradients.cardHeader,\n\t\tblue: lightColors.gradients.blue,\n\t\tviolet: lightColors.gradients.violet,\n\t},\n\tdropShadow: 'drop-shadow(0px 1px 4px rgba(25, 19, 38, 0.15))',\n}\n\nexport const dark: CardTheme = {\n\tbackground: darkColors.backgroundAlt,\n\tboxShadow: '0px 2px 12px -8px rgba(25, 19, 38, 0.1), 0px 1px 1px rgba(25, 19, 38, 0.05)',\n\tboxShadowActive: shadows.active,\n\tboxShadowSuccess: shadows.success,\n\tboxShadowWarning: shadows.warning,\n\tcardHeaderBackground: {\n\t\tdefault: darkColors.gradients.cardHeader,\n\t\tblue: darkColors.gradients.blue,\n\t\tviolet: darkColors.gradients.violet,\n\t},\n\tdropShadow: 'drop-shadow(0px 1px 4px rgba(25, 19, 38, 0.15))',\n}\n","import { darkColors, lightColors } from '../../theme/colors'\nimport { PancakeToggleTheme } from './types'\n\nexport const light: PancakeToggleTheme = {\n\thandleBackground: lightColors.backgroundAlt,\n\thandleShadow: lightColors.textDisabled,\n}\n\nexport const dark: PancakeToggleTheme = {\n\thandleBackground: darkColors.backgroundAlt,\n\thandleShadow: darkColors.textDisabled,\n}\n","import { darkColors, lightColors } from '../../theme/colors'\nimport { RadioTheme } from './types'\n\nexport const light: RadioTheme = {\n\thandleBackground: lightColors.backgroundAlt,\n}\n\nexport const dark: RadioTheme = {\n\thandleBackground: darkColors.backgroundAlt,\n}\n","import { darkColors, lightColors } from '../../theme/colors'\nimport { ToggleTheme } from './types'\n\nexport const light: ToggleTheme = {\n\thandleBackground: lightColors.backgroundAlt,\n}\n\nexport const dark: ToggleTheme = {\n\thandleBackground: darkColors.backgroundAlt,\n}\n","import { darkColors, lightColors } from '../../theme/colors'\nimport { NavTheme } from './types'\n\nexport const light: NavTheme = {\n\tbackground: lightColors.backgroundAlt,\n\thover: '#EEEAF4',\n}\n\nexport const dark: NavTheme = {\n\tbackground: darkColors.backgroundAlt,\n\thover: '#473d5d',\n}\n","import { darkColors, lightColors } from '../../theme/colors'\nimport { ModalTheme } from './types'\n\nexport const light: ModalTheme = {\n\tbackground: lightColors.backgroundAlt,\n}\n\nexport const dark: ModalTheme = {\n\tbackground: darkColors.backgroundAlt,\n}\n","import { darkColors, lightColors } from '../../theme/colors'\nimport { TooltipTheme } from './types'\n\nexport const light: TooltipTheme = {\n\tbackground: darkColors.backgroundAlt,\n\ttext: darkColors.text,\n\tboxShadow: '0px 0px 2px rgba(0, 0, 0, 0.2), 0px 4px 12px -8px rgba(14, 14, 44, 0.1)',\n}\n\nexport const dark: TooltipTheme = {\n\tbackground: lightColors.backgroundAlt,\n\ttext: lightColors.text,\n\tboxShadow: '0px 0px 2px rgba(0, 0, 0, 0.2), 0px 4px 12px -8px rgba(14, 14, 44, 0.1)',\n}\n","import { DefaultTheme } from 'styled-components'\nimport { dark as darkAlert } from '../components/Alert/theme'\nimport { dark as darkCard } from '../components/Card/theme'\nimport { dark as darkPancakeToggle } from '../components/PancakeToggle/theme'\nimport { dark as darkRadio } from '../components/Radio/theme'\nimport { dark as darkToggle } from '../components/Toggle/theme'\nimport { dark as darkNav } from '../widgets/Menu/theme'\nimport { dark as darkModal } from '../widgets/Modal/theme'\nimport { dark as darkTooltip } from '../components/Tooltip/theme'\nimport base from './base'\nimport { darkColors } from './colors'\n\nconst darkTheme: DefaultTheme = {\n\t...base,\n\tisDark: true,\n\talert: darkAlert,\n\tcolors: darkColors,\n\tcard: darkCard,\n\ttoggle: darkToggle,\n\tnav: darkNav,\n\tmodal: darkModal,\n\tpancakeToggle: darkPancakeToggle,\n\tradio: darkRadio,\n\ttooltip: darkTooltip,\n}\n\nexport default darkTheme\n","import { DefaultTheme } from 'styled-components'\nimport { light as lightAlert } from '../components/Alert/theme'\nimport { light as lightCard } from '../components/Card/theme'\nimport { light as lightPancakeToggle } from '../components/PancakeToggle/theme'\nimport { light as lightRadio } from '../components/Radio/theme'\nimport { light as lightToggle } from '../components/Toggle/theme'\nimport { light as lightTooltip } from '../components/Tooltip/theme'\nimport { light as lightNav } from '../widgets/Menu/theme'\nimport { light as lightModal } from '../widgets/Modal/theme'\nimport base from './base'\nimport { lightColors } from './colors'\n\nconst lightTheme: DefaultTheme = {\n\t...base,\n\tisDark: false,\n\talert: lightAlert,\n\tcolors: lightColors,\n\tcard: lightCard,\n\ttoggle: lightToggle,\n\tnav: lightNav,\n\tmodal: lightModal,\n\tpancakeToggle: lightPancakeToggle,\n\tradio: lightRadio,\n\ttooltip: lightTooltip,\n}\n\nexport default lightTheme\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport styled from 'styled-components'\nimport { DropdownProps, PositionProps, Position } from './types'\n\nconst getLeft = ({ position }: PositionProps) => {\n\tif (position === 'top-right') {\n\t\treturn '100%'\n\t}\n\treturn '50%'\n}\n\nconst getBottom = ({ position }: PositionProps) => {\n\tif (position === 'top' || position === 'top-right') {\n\t\treturn '100%'\n\t}\n\treturn 'auto'\n}\n\nconst DropdownContent = styled.div<{ position: Position }>`\n\twidth: max-content;\n\tdisplay: none;\n\tflex-direction: column;\n\tposition: absolute;\n\ttransform: translate(-50%, 0);\n\tleft: ${getLeft};\n\tbottom: ${getBottom};\n\tbackground-color: ${({ theme }) => theme.nav.background};\n\tbox-shadow: ${({ theme }) => theme.shadows.level1};\n\tpadding: 16px;\n\tmax-height: 500px;\n\toverflow-y: auto;\n\tz-index: ${({ theme }) => theme.zIndices.dropdown};\n\tborder-radius: ${({ theme }) => theme.radii.small};\n`\n\nconst Container = styled.div`\n\tposition: relative;\n\t&:hover ${DropdownContent}, &:focus-within ${DropdownContent} {\n\t\tdisplay: flex;\n\t}\n`\n\nconst Dropdown: React.FC = ({ target, position = 'bottom', children }) => (\n\t\n\t\t{target}\n\t\t{children}\n\t\n)\nDropdown.defaultProps = {\n\tposition: 'bottom',\n}\n\nexport default Dropdown\n","import { FC } from 'react'\nimport { SvgProps } from '../../components/Svg/types'\n\nexport enum ConnectorNames {\n\tInjected = 'injected',\n\tWalletConnect = 'walletconnect',\n\tBSC = 'bsc',\n}\n\nexport type Login = (connectorId: ConnectorNames) => void\n\nexport interface Config {\n\ttitle: string\n\ticon: FC\n\tconnectorId: ConnectorNames\n}\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport uniqueId from 'lodash/uniqueId'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => {\n\tconst id = uniqueId('svg')\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import Metamask from './icons/Metamask'\nimport MathWallet from './icons/MathWallet'\nimport TokenPocket from './icons/TokenPocket'\nimport TrustWallet from './icons/TrustWallet'\nimport WalletConnect from './icons/WalletConnect'\nimport BinanceChain from './icons/BinanceChain'\nimport SafePalWallet from './icons/SafePalWallet'\nimport { Config, ConnectorNames } from './types'\n\nconst connectors: Config[] = [\n\t{\n\t\ttitle: 'Metamask',\n\t\ticon: Metamask,\n\t\tconnectorId: ConnectorNames.Injected,\n\t},\n\t{\n\t\ttitle: 'TrustWallet',\n\t\ticon: TrustWallet,\n\t\tconnectorId: ConnectorNames.Injected,\n\t},\n\t{\n\t\ttitle: 'MathWallet',\n\t\ticon: MathWallet,\n\t\tconnectorId: ConnectorNames.Injected,\n\t},\n\t{\n\t\ttitle: 'TokenPocket',\n\t\ticon: TokenPocket,\n\t\tconnectorId: ConnectorNames.Injected,\n\t},\n\t{\n\t\ttitle: 'WalletConnect',\n\t\ticon: WalletConnect,\n\t\tconnectorId: ConnectorNames.WalletConnect,\n\t},\n\t{\n\t\ttitle: 'Binance Chain Wallet',\n\t\ticon: BinanceChain,\n\t\tconnectorId: ConnectorNames.BSC,\n\t},\n\t{\n\t\ttitle: 'SafePal Wallet',\n\t\ticon: SafePalWallet,\n\t\tconnectorId: ConnectorNames.Injected,\n\t},\n]\n\nexport default connectors\nexport const connectorLocalStorageKey = 'connectorId'\n","import React from 'react'\nimport Button from '../../components/Button/Button'\nimport Text from '../../components/Text/Text'\nimport { connectorLocalStorageKey } from './config'\nimport { Login, Config } from './types'\n\ninterface Props {\n\twalletConfig: Config\n\tlogin: Login\n\tonDismiss: () => void\n\tmb: string\n}\n\nconst WalletCard: React.FC = ({ login, walletConfig, onDismiss, mb }) => {\n\tconst { title, icon: Icon } = walletConfig\n\treturn (\n\t\t {\n\t\t\t\tlogin(walletConfig.connectorId)\n\t\t\t\twindow.localStorage.setItem(connectorLocalStorageKey, walletConfig.connectorId)\n\t\t\t\tonDismiss()\n\t\t\t}}\n\t\t\tstyle={{ justifyContent: 'space-between' }}\n\t\t\tid={`wallet-connect-${title.toLocaleLowerCase()}`}\n\t\t>\n\t\t\t
{title}
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default WalletCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Link } from '../../components/Link'\nimport { HelpIcon } from '../../components/Svg'\nimport { Modal } from '../Modal'\nimport WalletCard from './WalletCard'\nimport config from './config'\nimport { Login } from './types'\n\ninterface Props {\n\tlogin: Login\n\tonDismiss?: () => void\n}\n\nconst HelpLink = styled(Link)`\n\tdisplay: flex;\n\talign-self: center;\n\talign-items: center;\n\tmargin-top: 24px;\n`\n\nconst ConnectModal: React.FC = ({ login, onDismiss = () => null }) => (\n\t\n\t\t{config.map((entry, index) => (\n\t\t\t\n\t\t))}\n\t\n)\n\nexport default ConnectModal\n","import React, { useState } from 'react'\nimport styled from 'styled-components'\nimport Text from '../../components/Text/Text'\nimport { CopyIcon } from '../../components/Svg'\n\ninterface Props {\n\ttoCopy: string\n}\n\nconst StyleButton = styled(Text).attrs({ role: 'button' })`\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tcolor: ${({ theme }) => theme.colors.primary};\n`\n\nconst Tooltip = styled.div<{ isTooltipDisplayed: boolean }>`\n\tdisplay: ${({ isTooltipDisplayed }) => (isTooltipDisplayed ? 'block' : 'none')};\n\tposition: absolute;\n\tbottom: -22px;\n\tright: 0;\n\tleft: 0;\n\ttext-align: center;\n\tbackground-color: ${({ theme }) => theme.colors.contrast};\n\tcolor: ${({ theme }) => theme.colors.invertedContrast};\n\tborder-radius: 16px;\n\topacity: 0.7;\n`\n\nconst CopyToClipboard: React.FC = ({ toCopy, children, ...props }) => {\n\tconst [isTooltipDisplayed, setIsTooltipDisplayed] = useState(false)\n\n\tconst copyToClipboardWithCommand = (content: string) => {\n\t\tconst el = document.createElement('textarea')\n\t\tel.value = content\n\t\tdocument.body.appendChild(el)\n\t\tel.select()\n\t\tdocument.execCommand('copy')\n\t\tdocument.body.removeChild(el)\n\t}\n\n\tfunction displayTooltip() {\n\t\tsetIsTooltipDisplayed(true)\n\t\tsetTimeout(() => {\n\t\t\tsetIsTooltipDisplayed(false)\n\t\t}, 1000)\n\t}\n\n\treturn (\n\t\t {\n\t\t\t\tif (navigator.clipboard && navigator.permissions) {\n\t\t\t\t\tnavigator.clipboard.writeText(toCopy).then(() => displayTooltip())\n\t\t\t\t} else if (document.queryCommandSupported('copy')) {\n\t\t\t\t\tcopyToClipboardWithCommand(toCopy)\n\t\t\t\t\tdisplayTooltip()\n\t\t\t\t}\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children} \n\t\t\tCopied\n\t\t\n\t)\n}\n\nexport default CopyToClipboard\n","import React from 'react'\nimport Button from '../../components/Button/Button'\nimport Text from '../../components/Text/Text'\nimport LinkExternal from '../../components/Link/LinkExternal'\nimport Flex from '../../components/Box/Flex'\nimport { Modal } from '../Modal'\nimport CopyToClipboard from './CopyToClipboard'\nimport { connectorLocalStorageKey } from './config'\n\ninterface Props {\n\taccount: string\n\tlogout: () => void\n\tonDismiss?: () => void\n}\n\nconst AccountModal: React.FC = ({ account, logout, onDismiss = () => null }) => (\n\t\n\t\t\n\t\t\t
{account}
\n\t\t\n\t\t
\n\t\t\tCopy Address\n\t\t
\n\t\t
\n\t\t\t {\n\t\t\t\t\tlogout()\n\t\t\t\t\twindow.localStorage.removeItem(connectorLocalStorageKey)\n\t\t\t\t\tonDismiss()\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\tLogout\n\t\t\t\t\n\t\t\t\n\t\t
\n\t
\n)\n\nexport default AccountModal\n","import React from 'react'\nimport { useModal } from '../Modal'\nimport ConnectModal from './ConnectModal'\nimport AccountModal from './AccountModal'\nimport { Login } from './types'\n\ninterface ReturnType {\n\tonPresentConnectModal: () => void\n\tonPresentAccountModal: () => void\n}\n\nconst useWalletModal = (login: Login, logout: () => void, account?: string): ReturnType => {\n\tconst [onPresentConnectModal] = useModal()\n\tconst [onPresentAccountModal] = useModal()\n\treturn { onPresentConnectModal, onPresentAccountModal }\n}\n\nexport default useWalletModal\n","import { useEffect, useState } from 'react'\nimport { breakpointMap } from '../theme/base'\n\ntype State = {\n\t[key: string]: boolean\n}\n\ntype MediaQueries = {\n\t[key: string]: string\n}\n\n/**\n * Can't use the media queries from \"base.mediaQueries\" because of how matchMedia works\n * In order for the listener to trigger we need have have the media query with a range, e.g.\n * (min-width: 370px) and (max-width: 576px)\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList\n */\nconst mediaQueries: MediaQueries = (() => {\n\tlet prevMinWidth = 0\n\n\treturn Object.keys(breakpointMap).reduce((accum, size, index) => {\n\t\t// Largest size is just a min-width of second highest max-width\n\t\tif (index === Object.keys(breakpointMap).length - 1) {\n\t\t\treturn { ...accum, [size]: `(min-width: ${prevMinWidth}px)` }\n\t\t}\n\n\t\tconst minWidth = prevMinWidth\n\t\tconst breakpoint = breakpointMap[size]\n\n\t\t// Min width for next iteration\n\t\tprevMinWidth = breakpoint + 1\n\n\t\treturn { ...accum, [size]: `(min-width: ${minWidth}px) and (max-width: ${breakpoint}px)` }\n\t}, {})\n})()\n\nconst getKey = (size: string) => `is${size.charAt(0).toUpperCase()}${size.slice(1)}`\n\nconst useMatchBreakpoints = (): State => {\n\tconst [state, setState] = useState(() =>\n\t\tObject.keys(mediaQueries).reduce((accum, size) => {\n\t\t\tconst key = getKey(size)\n\t\t\tconst mql = window.matchMedia(mediaQueries[size])\n\t\t\treturn { ...accum, [key]: mql.matches }\n\t\t}, {}),\n\t)\n\n\tuseEffect(() => {\n\t\t// Create listeners for each media query returning a function to unsubscribe\n\t\tconst handlers = Object.keys(mediaQueries).map((size) => {\n\t\t\tconst mql = window.matchMedia(mediaQueries[size])\n\n\t\t\tconst handler = (matchMediaQuery: MediaQueryListEvent) => {\n\t\t\t\tconst key = getKey(size)\n\t\t\t\tsetState((prevState) => ({\n\t\t\t\t\t...prevState,\n\t\t\t\t\t[key]: matchMediaQuery.matches,\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\t// Safari < 14 fix\n\t\t\tif (mql.addEventListener) {\n\t\t\t\tmql.addEventListener('change', handler)\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\t// Safari < 14 fix\n\t\t\t\tif (mql.removeEventListener) {\n\t\t\t\t\tmql.removeEventListener('change', handler)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\treturn () => {\n\t\t\thandlers.forEach((unsubscribe) => {\n\t\t\t\tunsubscribe()\n\t\t\t})\n\t\t}\n\t}, [setState])\n\n\treturn state\n}\n\nexport default useMatchBreakpoints\n","import styled from 'styled-components'\n\nexport const Arrow = styled.div`\n\t&,\n\t&::before {\n\t\tposition: absolute;\n\t\twidth: 10px;\n\t\theight: 10px;\n\t\tborder-radius: 2px;\n\t\tz-index: -1;\n\t}\n\n\t&::before {\n\t\tcontent: '';\n\t\ttransform: rotate(45deg);\n\t\tbackground: ${({ theme }) => theme.tooltip.background};\n\t}\n`\n\nexport const StyledTooltip = styled.div`\n\tpadding: 16px;\n\tfont-size: 16px;\n\tline-height: 130%;\n\tborder-radius: 16px;\n\tmax-width: 320px;\n\tz-index: 10;\n\tbackground: ${({ theme }) => theme.tooltip.background};\n\tcolor: ${({ theme }) => theme.tooltip.text};\n\tbox-shadow: ${({ theme }) => theme.tooltip.boxShadow};\n\n\t&[data-popper-placement^='top'] > ${Arrow} {\n\t\tbottom: -4px;\n\t}\n\n\t&[data-popper-placement^='bottom'] > ${Arrow} {\n\t\ttop: -4px;\n\t}\n\n\t&[data-popper-placement^='left'] > ${Arrow} {\n\t\tright: -4px;\n\t}\n\n\t&[data-popper-placement^='right'] > ${Arrow} {\n\t\tleft: -4px;\n\t}\n`\n","import React from 'react'\nimport Link from './Link'\nimport { LinkProps } from './types'\nimport OpenNewIcon from '../Svg/Icons/OpenNew'\n\nconst LinkExternal: React.FC = ({ children, ...props }) => (\n\t\n\t\t{children}\n\t\t\n\t\n)\n\nexport default LinkExternal\n","import { SpaceProps } from 'styled-system'\n\nexport const scales = {\n\tSM: 'sm',\n\tMD: 'md',\n\tLG: 'lg',\n} as const\n\nexport type Scales = typeof scales[keyof typeof scales]\n\nexport interface InputProps extends SpaceProps {\n\tscale?: Scales\n\tisSuccess?: boolean\n\tisWarning?: boolean\n}\n","import styled, { DefaultTheme } from 'styled-components'\nimport { InputProps, scales } from './types'\n\ninterface StyledInputProps extends InputProps {\n\ttheme: DefaultTheme\n}\n\n/**\n * Priority: Warning --> Success\n */\nconst getBoxShadow = ({ isSuccess = false, isWarning = false, theme }: StyledInputProps) => {\n\tif (isWarning) {\n\t\treturn theme.shadows.warning\n\t}\n\n\tif (isSuccess) {\n\t\treturn theme.shadows.success\n\t}\n\n\treturn theme.shadows.inset\n}\n\nconst getHeight = ({ scale = scales.MD }: StyledInputProps) => {\n\tswitch (scale) {\n\t\tcase scales.SM:\n\t\t\treturn '32px'\n\t\tcase scales.LG:\n\t\t\treturn '48px'\n\t\tcase scales.MD:\n\t\tdefault:\n\t\t\treturn '40px'\n\t}\n}\n\nconst Input = styled.input`\n\tbackground-color: ${({ theme }) => theme.colors.input};\n\tborder: 0;\n\tborder-radius: 16px;\n\tbox-shadow: ${getBoxShadow};\n\tcolor: ${({ theme }) => theme.colors.text};\n\tdisplay: block;\n\tfont-size: 16px;\n\theight: ${getHeight};\n\toutline: 0;\n\tpadding: 0 16px;\n\twidth: 100%;\n\n\t&::placeholder {\n\t\tcolor: ${({ theme }) => theme.colors.textSubtle};\n\t}\n\n\t&:disabled {\n\t\tbackground-color: ${({ theme }) => theme.colors.backgroundDisabled};\n\t\tbox-shadow: none;\n\t\tcolor: ${({ theme }) => theme.colors.textDisabled};\n\t\tcursor: not-allowed;\n\t}\n\n\t&:focus:not(:disabled) {\n\t\tbox-shadow: ${({ theme }) => theme.shadows.focus};\n\t}\n`\n\nInput.defaultProps = {\n\tscale: scales.MD,\n\tisSuccess: false,\n\tisWarning: false,\n}\n\nexport default Input\n","import get from 'lodash/get'\nimport { DefaultTheme } from 'styled-components'\n\nconst getThemeValue = (path: string, fallback?: string | number) => (theme: DefaultTheme): string =>\n\tget(theme, path, fallback)\n\nexport default getThemeValue\n","const getExternalLinkProps = (): { target: string; rel: string } => ({\n\ttarget: '_blank',\n\trel: 'noreferrer noopener',\n})\n\nexport default getExternalLinkProps\n","import styled from 'styled-components'\nimport { OverlayProps } from './types'\n\nconst Overlay = styled.div.attrs({ role: 'presentation' })`\n\tposition: fixed;\n\ttop: 0px;\n\tleft: 0px;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: #2b1f07;\n\ttransition: opacity 0.4s;\n\topacity: ${({ show }) => (show ? 0.6 : 0)};\n\tz-index: ${({ zIndex }) => zIndex};\n\tpointer-events: ${({ show }) => (show ? 'initial' : 'none')};\n`\n\nOverlay.defaultProps = {\n\tshow: false,\n\tzIndex: 10,\n}\n\nexport default Overlay\n","export { default as Dropdown } from './Dropdown'\nexport type { DropdownProps } from './types'\n","export { default as Input } from './Input'\nexport type { InputProps, Scales as InputScales } from './types'\n","export * from './hooks'\nexport * from './types'\nexport * from './utils'\n","import { createGlobalStyle } from 'styled-components'\n\nconst ResetCSS = createGlobalStyle`\n /* prettier-ignore */\n html, body, div, span, applet, object, iframe,\n h1, h2, h3, h4, h5, h6, p, blockquote, pre,\n a, abbr, acronym, address, big, cite, code,\n del, dfn, em, img, ins, kbd, q, s, samp,\n small, strike, strong, sub, sup, tt, var,\n b, u, i, center,\n dl, dt, dd, ol, ul, li,\n fieldset, form, label, legend,\n table, caption, tbody, tfoot, thead, tr, th, td,\n article, aside, canvas, details, embed,\n figure, figcaption, footer, header, hgroup,\n menu, nav, output, ruby, section, summary,\n time, mark, audio, video {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n vertical-align: baseline;\n }\n /* HTML5 display-role reset for older browsers */\n /* prettier-ignore */\n article, aside, details, figcaption, figure,\n footer, header, hgroup, menu, nav, section {\n display: block;\n }\n body {\n line-height: 1;\n font-size: 16px;\n }\n ol,\n ul {\n list-style: disc;\n list-style-position: inside;\n }\n blockquote,\n q {\n quotes: none;\n }\n blockquote:before,\n blockquote:after,\n q:before,\n q:after {\n content: \"\";\n content: none;\n }\n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n a {\n color: inherit;\n text-decoration: none;\n }\n [role=\"button\"] {\n cursor: pointer;\n }\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n * {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n /* Number */\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n input[type=number] {\n -moz-appearance: textfield;\n }\n\n /* Scrollbar */\n ::-webkit-scrollbar {\n width: 8px;\n }\n ::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.colors.textSubtle};\n border-radius: 8px;\n }\n ::-webkit-scrollbar-track {\n box-shadow: inset 0 0 5px ${({ theme }) => theme.colors.input};\n border-radius: 10px;\n }\n\n /* Slider */\n input[type=range] {\n -webkit-appearance: none; /* Hides the slider so that custom slider can be made */\n width: 100%; /* Specific width is required for Firefox. */\n background: transparent; /* Otherwise white in Chrome */\n }\n input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n }\n input[type=range]:focus {\n outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */\n }\n input[type=range]::-ms-track {\n width: 100%;\n cursor: pointer;\n /* Hides the slider so custom styles can be added */\n background: transparent;\n border-color: transparent;\n color: transparent;\n }\n`\n\nexport default ResetCSS\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\ninterface LogoProps extends SvgProps {\n\tisDark: boolean\n}\n\nconst Logo: React.FC = ({ isDark, ...props }) => {\n\tconst textColor = isDark ? '#FFFFFF' : '#000000'\n\treturn (\n\t\t\n\t)\n}\n\nexport default React.memo(Logo, (prev, next) => prev.isDark === next.isDark)\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../../../components/Svg/Svg'\nimport { SvgProps } from '../../../components/Svg/types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import styled from 'styled-components'\nimport Button from '../../../components/Button/Button'\n\nconst MenuButton = styled(Button)`\n\tcolor: ${({ theme }) => theme.colors.text};\n\tpadding: 0 8px;\n\tborder-radius: 8px;\n`\nMenuButton.defaultProps = {\n\tvariant: 'text',\n\tsize: 'sm',\n}\n\nexport default MenuButton\n","import React from 'react'\nimport styled, { keyframes } from 'styled-components'\nimport { Link } from 'react-router-dom'\nimport { LogoIcon } from '../../../components/Svg'\nimport Flex from '../../../components/Box/Flex'\nimport { HamburgerIcon, HamburgerCloseIcon, LogoIcon as LogoWithText } from '../icons'\nimport MenuButton from './MenuButton'\n\ninterface Props {\n\tisPushed: boolean\n\tisDark: boolean\n\ttogglePush: () => void\n\thref: string\n}\n\nconst blink = keyframes`\n 0%, 100% { transform: scaleY(1); }\n 50% { transform: scaleY(0.1); }\n`\n\nconst StyledLink = styled(Link)`\n\tdisplay: flex;\n\talign-items: center;\n\t.mobile-icon {\n\t\twidth: 32px;\n\t\t${({ theme }) => theme.mediaQueries.nav} {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\t.desktop-icon {\n\t\twidth: 160px;\n\t\tdisplay: none;\n\t\t${({ theme }) => theme.mediaQueries.nav} {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\t.right-eye {\n\t\tanimation-delay: 20ms;\n\t}\n\t&:hover {\n\t\t.left-eye,\n\t\t.right-eye {\n\t\t\ttransform-origin: center 60%;\n\t\t\tanimation-name: ${blink};\n\t\t\tanimation-duration: 350ms;\n\t\t\tanimation-iteration-count: 1;\n\t\t}\n\t}\n`\n\nconst Logo: React.FC = ({ isPushed, togglePush, isDark, href }) => {\n\tconst isAbsoluteUrl = href.startsWith('http')\n\tconst innerLogo = (\n\t\t<>\n\t\t\t\n\t\t\n\t)\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{isPushed ? (\n\t\t\t\t\t\t\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t
\n\n\t\t\t{isAbsoluteUrl ? (\n\t\t\t\t\n\t\t\t\t\t{innerLogo}\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t\n\t\t\t\t\t{innerLogo}\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t)\n}\n\nexport default React.memo(\n\tLogo,\n\t(prev, next) => prev.isPushed === next.isPushed && prev.isDark === next.isDark,\n)\n","import { LinkStatus } from './types'\n\nexport const status = {\n\tLIVE: {\n\t\ttext: 'LIVE',\n\t\tcolor: 'failure',\n\t},\n\tSOON: {\n\t\ttext: 'SOON',\n\t\tcolor: 'warning',\n\t},\n\tNEW: {\n\t\ttext: 'NEW',\n\t\tcolor: 'success',\n\t},\n}\n\nexport const links = [\n\t{\n\t\tlabel: 'Home',\n\t\ticon: 'HomeIcon',\n\t\thref: '/',\n\t},\n\t{\n\t\tlabel: 'Trade',\n\t\ticon: 'TradeIcon',\n\t\titems: [\n\t\t\t{\n\t\t\t\tlabel: 'Exchange',\n\t\t\t\thref: 'https://exchange.foodcourt.finance',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Liquidity',\n\t\t\t\thref: 'https://exchange.foodcourt.finance/#/pool',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Wrap',\n\t\t\t\thref: 'https://exchange.foodcourt.finance/#/wrap',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: 'Farms',\n\t\ticon: 'FarmIcon',\n\t\thref: '/farms',\n\t\tstatus: status.LIVE,\n\t},\n\t{\n\t\tlabel: 'Pools',\n\t\ticon: 'PoolIcon',\n\t\thref: '/syrup',\n\t},\n\t{\n\t\tlabel: 'Lottery',\n\t\ticon: 'TicketIcon',\n\t\thref: '/lottery',\n\t},\n\t{\n\t\tlabel: 'NFT',\n\t\ticon: 'NftIcon',\n\t\thref: '/nft',\n\t},\n\t{\n\t\tlabel: 'Team Battle',\n\t\ticon: 'TeamBattleIcon',\n\t\thref: '/competition',\n\t\tstatus: status.SOON,\n\t},\n\t{\n\t\tlabel: 'Profile & Teams',\n\t\ticon: 'GroupsIcon',\n\t\tstatus: status.LIVE,\n\t\titems: [\n\t\t\t{\n\t\t\t\tlabel: 'Leaderboard',\n\t\t\t\thref: '/teams',\n\t\t\t\tstatus: status.NEW,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'YourProfile',\n\t\t\t\thref: '/',\n\t\t\t},\n\t\t],\n\t\tcalloutClass: 'rainbow',\n\t},\n\t{\n\t\tlabel: 'Info',\n\t\ticon: 'InfoIcon',\n\t\titems: [\n\t\t\t{\n\t\t\t\tlabel: 'Overview',\n\t\t\t\thref: 'https://pancakeswap.info',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Tokens',\n\t\t\t\thref: 'https://pancakeswap.info/tokens',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Pairs',\n\t\t\t\thref: 'https://pancakeswap.info/pairs',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Accounts',\n\t\t\t\thref: 'https://pancakeswap.info/accounts',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: 'IFO',\n\t\ticon: 'IfoIcon',\n\t\titems: [\n\t\t\t{\n\t\t\t\tlabel: 'Next',\n\t\t\t\thref: '/ifo',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'History',\n\t\t\t\thref: '/ifo/history',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: 'More',\n\t\ticon: 'MoreIcon',\n\t\titems: [\n\t\t\t{\n\t\t\t\tlabel: 'Voting',\n\t\t\t\thref: 'https://voting.pancakeswap.finance',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Github',\n\t\t\t\thref: 'https://github.com/pancakeswap',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Docs',\n\t\t\t\thref: 'https://docs.pancakeswap.finance',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Blog',\n\t\t\t\thref: 'https://pancakeswap.medium.com',\n\t\t\t},\n\t\t],\n\t},\n]\n\nexport const socials = [\n\t{\n\t\tlabel: 'Telegram',\n\t\ticon: 'TelegramIcon',\n\t\thref: 'https://t.me/foodcourtfinance',\n\t\titems: [\n\t\t\t{\n\t\t\t\tlabel: 'Annoucement',\n\t\t\t\thref: 'https://t.me/foodcourtfinance',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Telegram English',\n\t\t\t\thref: 'https://t.me/foodcourtofficial',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Telegram Español',\n\t\t\t\thref: 'https://t.me/foodcourtesen',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: 'Twitter',\n\t\ticon: 'Book',\n\t\thref: 'https://foodcourtofficial.gitbook.io/foodcourt/',\n\t},\n]\n\nexport const MENU_HEIGHT = 64\nexport const MENU_ENTRY_HEIGHT = 48\nexport const SIDEBAR_WIDTH_FULL = 240\nexport const SIDEBAR_WIDTH_REDUCED = 56\n","import React from 'react'\nimport styled, { keyframes, DefaultTheme } from 'styled-components'\nimport { Text } from '../../../components/Text'\nimport { Colors } from '../../../theme/types'\nimport { MENU_ENTRY_HEIGHT } from '../config'\n\nexport interface Props {\n\tsecondary?: boolean\n\tisActive?: boolean\n\ttheme: DefaultTheme\n}\n\nconst rainbowAnimation = keyframes`\n 0%,\n 100% {\n background-position: 0 0;\n }\n 50% {\n background-position: 100% 0;\n }\n`\n\nconst LinkLabel = styled.div<{ isPushed: boolean }>`\n\tcolor: ${({ isPushed, theme }) => (isPushed ? theme.colors.textSubtle : 'transparent')};\n\ttransition: color 0.4s;\n\tflex-grow: 1;\n`\n\nconst MenuEntry = styled.div`\n\tcursor: pointer;\n\tdisplay: flex;\n\talign-items: center;\n\theight: ${MENU_ENTRY_HEIGHT}px;\n\tpadding: ${({ secondary }) => (secondary ? '0 32px' : '0 16px')};\n\tfont-size: ${({ secondary }) => (secondary ? '14px' : '16px')};\n\tbackground-color: ${({ secondary, theme }) =>\n\t\tsecondary ? theme.colors.background : 'transparent'};\n\tcolor: ${({ theme }) => theme.colors.textSubtle};\n\tbox-shadow: ${({ isActive, theme }) =>\n\t\tisActive ? `inset 4px 0px 0px ${theme.colors.primary}` : 'none'};\n\n\ta {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\tsvg {\n\t\tfill: ${({ theme }) => theme.colors.textSubtle};\n\t}\n\n\t&:hover {\n\t\tbackground-color: ${({ theme }) => theme.colors.tertiary};\n\t}\n\n\t// Safari fix\n\tflex-shrink: 0;\n\n\t&.rainbow {\n\t\tbackground-clip: text;\n\t\tanimation: ${rainbowAnimation} 3s ease-in-out infinite;\n\t\tbackground: ${({ theme }) => theme.colors.gradients.bubblegum};\n\t\tbackground-size: 400% 100%;\n\t}\n`\nMenuEntry.defaultProps = {\n\tsecondary: false,\n\tisActive: false,\n\trole: 'button',\n}\n\nconst LinkStatus = styled(Text)<{ color: keyof Colors }>`\n\tborder-radius: ${({ theme }) => theme.radii.default};\n\tpadding: 0 8px;\n\tborder: 2px solid;\n\tborder-color: ${({ theme, color }) => theme.colors[color]};\n\tbox-shadow: none;\n\tcolor: ${({ theme, color }) => theme.colors[color]};\n\tmargin-left: 8px;\n`\n\nconst LinkLabelMemo = React.memo(LinkLabel, (prev, next) => prev.isPushed === next.isPushed)\n\nexport { MenuEntry, LinkStatus, LinkLabelMemo as LinkLabel }\n","import React, { ReactNode, useState } from 'react'\nimport styled from 'styled-components'\nimport { MENU_ENTRY_HEIGHT } from '../config'\nimport { LinkLabel, LinkStatus as LinkStatusComponent, MenuEntry } from './MenuEntry'\nimport { LinkStatus, PushedProps } from '../types'\nimport { ArrowDropDownIcon, ArrowDropUpIcon } from '../../../components/Svg'\n\ninterface Props extends PushedProps {\n\tlabel: string\n\tstatus?: LinkStatus\n\ticon: React.ReactElement\n\tinitialOpenState?: boolean\n\tclassName?: string\n\tchildren: ReactNode\n\tisActive?: boolean\n}\n\nconst Container = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\t// Safari fix\n\tflex-shrink: 0;\n`\n\nconst AccordionContent = styled.div<{ isOpen: boolean; isPushed: boolean; maxHeight: number }>`\n\tmax-height: ${({ isOpen, maxHeight }) => (isOpen ? `${maxHeight}px` : 0)};\n\ttransition: max-height 0.3s ease-out;\n\toverflow: hidden;\n\tborder-color: ${({ isOpen, isPushed }) =>\n\t\tisOpen && isPushed ? 'rgba(133, 133, 133, 0.1)' : 'transparent'};\n\tborder-style: solid;\n\tborder-width: 1px 0;\n`\n\nconst Accordion: React.FC = ({\n\tlabel,\n\tstatus,\n\ticon,\n\tisPushed,\n\tpushNav,\n\tinitialOpenState = false,\n\tchildren,\n\tclassName,\n\tisActive,\n}) => {\n\tconst [isOpen, setIsOpen] = useState(initialOpenState)\n\tconst handleClick = () => {\n\t\tif (isPushed) {\n\t\t\tsetIsOpen((prevState) => !prevState)\n\t\t} else {\n\t\t\tpushNav(true)\n\t\t\tsetIsOpen(true)\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{icon}\n\t\t\t\t{label}\n\t\t\t\t{status && (\n\t\t\t\t\t\n\t\t\t\t\t\t{status.text}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{isOpen ? : }\n\t\t\t\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Accordion\n","import React, { AnchorHTMLAttributes } from 'react'\nimport { NavLink } from 'react-router-dom'\n\nconst MenuLink: React.FC> = ({ href, ...otherProps }) => {\n\tconst isHttpLink = href?.startsWith('http')\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst Tag: any = isHttpLink ? 'a' : NavLink\n\tconst props = isHttpLink ? { href } : { to: href }\n\treturn \n}\n\nexport default MenuLink\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useLocation } from 'react-router-dom'\nimport { SvgProps } from '../../../components/Svg'\nimport * as IconModule from '../icons'\nimport Accordion from './Accordion'\nimport { MenuEntry, LinkLabel, LinkStatus } from './MenuEntry'\nimport MenuLink from './MenuLink'\nimport { PanelProps, PushedProps } from '../types'\nimport classMap from 'classnames'\n\ninterface Props extends PanelProps, PushedProps {\n\tisMobile: boolean\n}\n\nconst Icons = (IconModule as unknown) as { [key: string]: React.FC }\n\nconst Container = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\theight: 100%;\n\tpadding: 0 24px;\n`\n\nconst MenuButton = styled.div``\n\nconst PanelBody: React.FC = ({ isPushed, pushNav, isMobile, links }) => {\n\tconst location = useLocation()\n\n\t// Close the menu when a user clicks a link on mobile\n\tconst handleClick = isMobile ? () => pushNav(false) : undefined\n\n\treturn (\n\t\t\n\t\t\t{links.map((entry) => {\n\t\t\t\tconst Icon = Icons[entry.icon]\n\t\t\t\tconst iconElement = Icon ? : <>\n\t\t\t\tconst calloutClass = entry.calloutClass ? entry.calloutClass : undefined\n\n\t\t\t\tif (entry.items) {\n\t\t\t\t\tconst itemsMatchIndex = entry.items.findIndex((item) => item.href === location.pathname)\n\t\t\t\t\tconst initialOpenState =\n\t\t\t\t\t\tentry.initialOpenState === true ? entry.initialOpenState : itemsMatchIndex >= 0\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t item.href === location.pathname)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{isPushed &&\n\t\t\t\t\t\t\t\tentry.items.map((item) => (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t\t{item.status && (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{item.status.text}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{entry.label}
\n\t\t\t\t\t\t\t\t{entry.subtitle &&
{entry.subtitle}
}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{/* NOTE: Spoon menu image */}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{/* NOTE: Fork menu image */}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})}\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
audited by
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\"inspex.png\"\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Fullnode service by
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\"killswitch.png\"\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default PanelBody\n","import React from 'react'\nimport { SvgProps } from '../../../components/Svg'\nimport Flex from '../../../components/Box/Flex'\nimport Dropdown from '../../../components/Dropdown/Dropdown'\nimport Link from '../../../components/Link/Link'\nimport * as IconModule from '../icons'\nimport { socials } from '../config'\n\nconst Icons = (IconModule as unknown) as { [key: string]: React.FC }\n\nconst SocialLinks: React.FC = () => (\n\t\n\t\t{socials.map((social, index) => {\n\t\t\tconst Icon = Icons[social.icon]\n\t\t\tconst iconProps = { width: '24px', color: 'textSubtle', style: { cursor: 'pointer' } }\n\t\t\tconst mr = index < socials.length - 1 ? '24px' : 0\n\t\t\tif (social.items) {\n\t\t\t\treturn (\n\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{social.items.map((item) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t))}\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)\n\t\t})}\n\t\n)\n\nexport default React.memo(SocialLinks, () => true)\n","import React, { useEffect } from 'react'\nimport { useModal } from '../../index'\n\nconst CouponPrice = ({\n\tprice = 1.0,\n\ttheme = 'white',\n}: {\n\tprice?: number\n\ttheme?: 'white' | 'primary'\n}): JSX.Element => {\n\tconst style =\n\t\ttheme === 'white'\n\t\t\t? { backgroundColor: 'white', boxShadow: '0px 2px 6px rgba(0,0,0,0.1)' }\n\t\t\t: { backgroundColor: 'var(--color-primary-100)' }\n\n\treturn (\n\t\t<>\n\t\t\t
{\n\t\t\t\twindow.open(\"https://dex.guru/token/0x084bb94e93891d74579b54ab63ed24c4ef9cd5ef-bsc\");\n\t\t\t}}>\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
{`$${price.toFixed(3)}`}
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default CouponPrice\n","import React, { useMemo } from 'react'\nimport {\n\tCheckmarkCircleIcon,\n\tErrorIcon,\n\tFlex,\n\tLinkExternal,\n\tText,\n\tModal,\n\tButton,\n} from '../../index'\n\ntype ChainSelectModalProps = {\n\tonDismiss?: () => void\n}\n\nconst defaultOnDismiss = () => null\n\nconst ChainSelectModal = ({ onDismiss = defaultOnDismiss }: ChainSelectModalProps) => (\n\t\n\t\t
\n\t\t\t\n\t\t\t\t\"BSC\"\n\t\t\t\t
BSC
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
Active
\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\"REI\"\n\t\t\t\t\t
REI
\n\t\t\t\t\t{/*
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Active
\n\t\t\t\t\t
*/}\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t\"BSC\"\n\t\t\t\t
POLYGON
\n\t\t\t\t
\n\t\t\t\t\t
Coming soon
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\n)\n\nexport default ChainSelectModal\n","import React from 'react'\nimport ChainSelectModal from './ChainSelectModal'\nimport { useModal } from '../../index'\n\nconst ChainSelectButton = ({ theme = 'white' }: { theme?: 'white' | 'primary' }): JSX.Element => {\n\tconst [onPresentChainSelect] = useModal()\n\n\tconst style =\n\t\ttheme === 'white'\n\t\t\t? { backgroundColor: 'white', boxShadow: '0px 2px 6px rgba(0,0,0,0.1)' }\n\t\t\t: { backgroundColor: 'var(--color-primary-100)' }\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
{process.env.REACT_APP_CHAIN_NAME}
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default ChainSelectButton\n","import React from 'react'\nimport styled from 'styled-components'\nimport { CogIcon } from '../../../components/Svg'\nimport IconButton from '../../../components/Button/IconButton'\nimport { MENU_ENTRY_HEIGHT } from '../config'\nimport { PanelProps, PushedProps } from '../types'\nimport CakePrice from './CakePrice'\nimport ThemeSwitcher from './ThemeSwitcher'\nimport SocialLinks from './SocialLinks'\nimport LangSelector from './LangSelector'\nimport CouponPrice from '../../../components/CouponPrice'\nimport ChainSelectButton from '../../../components/ChainSelectButton'\n\ninterface Props extends PanelProps, PushedProps {}\n\nconst Container = styled.div`\n\tflex: none;\n\tpadding: 8px 4px;\n\tbackground-color: ${({ theme }) => theme.nav.background};\n\tborder-top: solid 2px rgba(133, 133, 133, 0.1);\n`\n\nconst SettingsEntry = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\theight: ${MENU_ENTRY_HEIGHT}px;\n\tpadding: 0 8px;\n`\n\nconst SocialEntry = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\theight: ${MENU_ENTRY_HEIGHT}px;\n\tpadding: 0 16px;\n`\n\nconst PanelFooter: React.FC = ({\n\tisPushed,\n\tpushNav,\n\ttoggleTheme,\n\tisDark,\n\tcakePriceUsd,\n\tcurrentLang,\n\tlangs,\n\tsetLang,\n}) => (\n\t\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\n\t\t{process.env.REACT_APP_ENABLE_COUPON_UI === 'true' && (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{process.env.REACT_APP_ENABLE_COUPON_UI === 'true' && (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t
\n\t\t)}\n\t\t{/* */}\n\t\t{/* \n\t\t\t\t */}\n\t\t{/* */}\n\t\n)\n\nexport default PanelFooter\n","import React from 'react'\nimport styled from 'styled-components'\nimport PanelBody from './PanelBody'\nimport PanelFooter from './PanelFooter'\nimport { SIDEBAR_WIDTH_REDUCED, SIDEBAR_WIDTH_FULL } from '../config'\nimport { PanelProps, PushedProps } from '../types'\n\ninterface Props extends PanelProps, PushedProps {\n\tshowMenu: boolean\n\tisMobile: boolean\n}\n\nconst StyledPanel = styled.div<{ isPushed: boolean; showMenu: boolean }>`\n\tposition: fixed;\n\tpadding-top: ${({ showMenu }) => (showMenu ? '80px' : 0)};\n\ttop: ${({ showMenu }) => (showMenu ? 'var(--body-gap)' : 0)};\n\tleft: var(--body-gap);\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n\tflex-shrink: 0;\n\tbackground-color: white;\n\twidth: ${({ isPushed }) => (isPushed ? `${SIDEBAR_WIDTH_FULL}px` : 0)};\n\theight: 100vh;\n\ttransition: padding-top 0.2s, width 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\tborder-right: ${({ isPushed }) => (isPushed ? '2px solid rgba(133, 133, 133, 0.1)' : 0)};\n\tz-index: 11;\n\toverflow: ${({ isPushed }) => (isPushed ? 'initial' : 'hidden')};\n\ttransform: translate3d(0, 0, 0);\n\t${({ isPushed }) => !isPushed && 'white-space: nowrap;'};\n\n\t${({ theme }) => theme.mediaQueries.nav} {\n\t\tborder-right: 2px solid rgba(133, 133, 133, 0.1);\n\t\twidth: ${({ isPushed }) => `${isPushed ? SIDEBAR_WIDTH_FULL : SIDEBAR_WIDTH_REDUCED}px`};\n\t}\n\n\tborder-top-left-radius: ${({ showMenu }) => (showMenu ? 'var(--top-border-radius)' : 0)};\n\n\t@media screen and (min-width: 968px) {\n\t\twidth: ${SIDEBAR_WIDTH_FULL}px;\n\t}\n`\n\nconst Panel: React.FC = (props) => {\n\tconst { isPushed, showMenu } = props\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\n\t\t\t\n\t\t
\n\t)\n}\n\nexport default Panel\n","import React from 'react'\nimport Button from '../../../components/Button/Button'\nimport { useWalletModal } from '../../WalletModal'\nimport { Login } from '../../WalletModal/types'\n\ninterface Props {\n\taccount?: string\n\tlogin: Login\n\tlogout: () => void\n}\n\nconst UserBlock: React.FC = ({ account, login, logout }) => {\n\tconst { onPresentConnectModal, onPresentAccountModal } = useWalletModal(login, logout, account)\n\tconst accountEllipsis = account\n\t\t? `${account.substring(0, 4)}...${account.substring(account.length - 4)}`\n\t\t: null\n\treturn (\n\t\t
\n\t\t\t{account ? (\n\t\t\t\t {\n\t\t\t\t\t\tonPresentAccountModal()\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{accountEllipsis}\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t {\n\t\t\t\t\t\tonPresentConnectModal()\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tConnect Wallet\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t)\n}\n\nexport default React.memo(\n\tUserBlock,\n\t(prevProps, nextProps) => prevProps.account === nextProps.account,\n)\n","import React, { useState, useEffect, useRef } from 'react'\nimport styled from 'styled-components'\nimport throttle from 'lodash/throttle'\nimport Overlay from '../../components/Overlay/Overlay'\nimport Flex from '../../components/Box/Flex'\nimport { useMatchBreakpoints } from '../../hooks'\nimport Logo from './components/Logo'\nimport Panel from './components/Panel'\nimport UserBlock from './components/UserBlock'\nimport { NavProps } from './types'\nimport { MENU_HEIGHT, SIDEBAR_WIDTH_REDUCED, SIDEBAR_WIDTH_FULL } from './config'\nimport ChainSelectButton from '../../components/ChainSelectButton'\nimport CouponPrice from '../../components/CouponPrice'\n\nconst Wrapper = styled.div`\n\tposition: relative;\n\twidth: 100%;\n\tbackground: var(--color-bg2);\n\tpadding: var(--body-gap) var(--body-gap) 0 var(--body-gap);\n\tmin-height: 100vh;\n`\n\nconst StyledNav = styled.nav<{ showMenu: boolean }>`\n\tposition: fixed;\n\ttop: ${({ showMenu }) => (showMenu ? 0 : `-${MENU_HEIGHT + 30}px`)};\n\tleft: var(--body-gap);\n\tright: var(--body-gap);\n\ttransition: top 0.2s;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tpadding-left: 8px;\n\tpadding-right: 16px;\n\theight: ${MENU_HEIGHT}px;\n\tbackground-color: var(--color-primary-500);\n\tborder-bottom: solid 2px rgba(133, 133, 133, 0.1);\n\tz-index: 20;\n\ttransform: translate3d(0, 0, 0);\n\tborder-top-right-radius: var(--top-border-radius);\n\tborder-top-left-radius: var(--top-border-radius);\n`\n\nconst BodyWrapper = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n\tbackground: var(--color-bg1);\n\tborder-top-right-radius: var(--top-border-radius);\n\tborder-top-left-radius: var(--top-border-radius);\n`\n\nconst Inner = styled.div<{ isPushed: boolean; showMenu: boolean }>`\n\tflex-grow: 1;\n\tmargin-top: ${({ showMenu }) => (showMenu ? `${MENU_HEIGHT}px` : 0)};\n\ttransition: margin-top 0.2s, margin-left 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\ttransform: translate3d(0, 0, 0);\n\tmax-width: 100%;\n\tbackground-image: url('/images/pattern2.png');\n\n\tbackground-size: 800px;\n\n\t${({ theme }) => theme.mediaQueries.nav} {\n\t\tmargin-left: ${({ isPushed }) => `${SIDEBAR_WIDTH_FULL}px`};\n\t\tmax-width: ${({ isPushed }) => `calc(100% - ${SIDEBAR_WIDTH_FULL}px)`};\n\t}\n`\n\nconst MobileOnlyOverlay = styled(Overlay)`\n\tposition: fixed;\n\theight: 100%;\n\n\t${({ theme }) => theme.mediaQueries.nav} {\n\t\tdisplay: none;\n\t}\n`\n\nconst Menu: React.FC = ({\n\taccount,\n\tlogin,\n\tlogout,\n\tisDark,\n\ttoggleTheme,\n\tlangs,\n\tsetLang,\n\tcurrentLang,\n\tcakePriceUsd,\n\tlinks,\n\tprofile,\n\tchildren,\n}) => {\n\tconst { isXl } = useMatchBreakpoints()\n\tconst isMobile = isXl === false\n\tconst [isPushed, setIsPushed] = useState(!isMobile)\n\tconst [showMenu, setShowMenu] = useState(true)\n\tconst refPrevOffset = useRef(window.pageYOffset)\n\n\tuseEffect(() => {\n\t\tconst handleScroll = () => {\n\t\t\tconst currentOffset = window.pageYOffset\n\t\t\tconst isBottomOfPage =\n\t\t\t\twindow.document.body.clientHeight === currentOffset + window.innerHeight\n\t\t\tconst isTopOfPage = currentOffset === 0\n\t\t\t// Always show the menu when user reach the top\n\t\t\tif (isTopOfPage) {\n\t\t\t\tsetShowMenu(true)\n\t\t\t}\n\t\t\t// Avoid triggering anything at the bottom because of layout shift\n\t\t\telse if (!isBottomOfPage) {\n\t\t\t\tif (currentOffset < refPrevOffset.current) {\n\t\t\t\t\t// Has scroll up\n\t\t\t\t\tsetShowMenu(true)\n\t\t\t\t} else {\n\t\t\t\t\t// Has scroll down\n\t\t\t\t\tsetShowMenu(false)\n\t\t\t\t}\n\t\t\t}\n\t\t\trefPrevOffset.current = currentOffset\n\t\t}\n\t\tconst throttledHandleScroll = throttle(handleScroll, 200)\n\n\t\twindow.addEventListener('scroll', throttledHandleScroll)\n\t\treturn () => {\n\t\t\twindow.removeEventListener('scroll', throttledHandleScroll)\n\t\t}\n\t}, [])\n\n\t// Find the home link if provided\n\tconst homeLink = links.find((link) => link.label === 'Home')\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t setIsPushed((prevState: boolean) => !prevState)}\n\t\t\t\t\t\tisDark={isDark}\n\t\t\t\t\t\thref={homeLink?.href ?? '/'}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t1# Innovation of Bridged yield farming on BSC\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t{process.env.REACT_APP_ENABLE_COUPON_UI === 'true' && (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t)}\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{children}\n\t\t\t\t\n\t\t\t\t setIsPushed(false)} role=\"presentation\" />\n\t\t\t\n\t\t
\n\t)\n}\n\nexport default Menu\n","import styled, { DefaultTheme } from 'styled-components'\nimport { space } from 'styled-system'\nimport { CardProps } from './types'\n\ninterface StyledCardProps extends CardProps {\n\ttheme: DefaultTheme\n}\n\n/**\n * Priority: Warning --> Success --> Active\n */\nconst getBoxShadow = ({ isActive, isSuccess, isWarning, theme }: StyledCardProps) => {\n\tif (isWarning) {\n\t\treturn theme.card.boxShadowWarning\n\t}\n\n\tif (isSuccess) {\n\t\treturn theme.card.boxShadowSuccess\n\t}\n\n\tif (isActive) {\n\t\treturn theme.card.boxShadowActive\n\t}\n\n\treturn theme.card.boxShadow\n}\n\nconst StyledCard = styled.div`\n\tbackground-color: ${({ theme }) => theme.card.background};\n\tborder: ${({ theme }) => theme.card.boxShadow};\n\tborder-radius: 32px;\n\tbox-shadow: ${getBoxShadow};\n\tcolor: ${({ theme, isDisabled }) => theme.colors[isDisabled ? 'textDisabled' : 'text']};\n\toverflow: hidden;\n\tposition: relative;\n\n\t${space}\n`\n\nStyledCard.defaultProps = {\n\tisActive: false,\n\tisSuccess: false,\n\tisWarning: false,\n\tisDisabled: false,\n}\n\nexport default StyledCard\n","import React from 'react'\nimport StyledCard from './StyledCard'\nimport { CardProps } from './types'\n\nconst Card: React.FC = ({ ribbon, children, ...props }) => (\n\t\n\t\t{ribbon}\n\t\t{children}\n\t\n)\nexport default Card\n","import styled from 'styled-components'\nimport { space, SpaceProps } from 'styled-system'\n\nexport type CardBodyProps = SpaceProps\n\nconst CardBody = styled.div`\n\t${space}\n`\n\nCardBody.defaultProps = {\n\tp: '24px',\n}\n\nexport default CardBody\n","import styled from 'styled-components'\nimport { space, SpaceProps } from 'styled-system'\nimport { CardTheme } from './types'\n\nexport interface CardHeaderProps extends SpaceProps {\n\tvariant?: keyof CardTheme['cardHeaderBackground']\n}\n\nconst CardHeader = styled.div`\n\tbackground: ${({ theme, variant = 'default' }) => theme.card.cardHeaderBackground[variant]};\n\t${space}\n`\n\nCardHeader.defaultProps = {\n\tp: '24px',\n}\n\nexport default CardHeader\n","import styled from 'styled-components'\nimport { space, SpaceProps } from 'styled-system'\n\nexport type CardFooterProps = SpaceProps\n\nconst CardFooter = styled.div`\n\tborder-top: 1px solid ${({ theme }) => theme.colors.borderColor};\n\t${space}\n`\n\nCardFooter.defaultProps = {\n\tp: '24px',\n}\n\nexport default CardFooter\n","import React from 'react'\nimport styled, { DefaultTheme } from 'styled-components'\nimport { CardRibbonProps } from './types'\n\ninterface StyledCardRibbonProps extends CardRibbonProps {\n\ttheme: DefaultTheme\n}\n\nconst StyledCardRibbon = styled.div>`\n\tz-index: 1;\n\tbackground-color: ${({ variantColor = 'secondary', theme }) => theme.colors[variantColor]};\n\tcolor: white;\n\tmargin: 0;\n\tpadding: 0;\n\tpadding: 8px 0;\n\tposition: absolute;\n\tright: ${({ ribbonPosition }) => (ribbonPosition === 'right' ? 0 : 'auto')};\n\ttop: 0;\n\ttext-align: center;\n\ttransform: translateX(30%) translateY(0%) rotate(45deg);\n\ttransform: ${({ ribbonPosition }) =>\n\t\tribbonPosition === 'right'\n\t\t\t? 'translateX(30%) translateY(0%) rotate(45deg)'\n\t\t\t: 'translateX(0%) translateY(200%) rotate(-45deg)'};\n\ttransform-origin: top left;\n\twidth: 96px;\n\n\t&:before,\n\t&:after {\n\t\tbackground-color: ${({ variantColor = 'secondary', theme }) => theme.colors[variantColor]};\n\t\tcontent: '';\n\t\theight: 100%;\n\t\tmargin: 0 -1px; /* Removes tiny gap */\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\twidth: 100%;\n\t}\n\n\t&:before {\n\t\tright: 100%;\n\t}\n\n\t&:after {\n\t\tleft: 100%;\n\t}\n\n\t& > div {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\twidth: 96px;\n\t}\n`\n\nconst CardRibbon: React.FC = ({\n\tvariantColor,\n\ttext,\n\tribbonPosition,\n\t...props\n}) => (\n\t\n\t\t
{text}
\n\t
\n)\n\nCardRibbon.defaultProps = {\n\tribbonPosition: 'right',\n}\n\nexport default CardRibbon\n","export const variants = {\n\tROUND: 'round',\n\tFLAT: 'flat',\n} as const\n\nexport const scales = {\n\tMD: 'md',\n\tSM: 'sm',\n} as const\n\nexport type Scale = typeof scales[keyof typeof scales]\n\nexport type Variant = typeof variants[keyof typeof variants]\n\nexport interface ProgressProps {\n\tvariant?: Variant\n\tscale?: Scale\n\tprimaryStep?: number\n\tsecondaryStep?: number\n\tshowProgressBunny?: boolean\n}\n","import { variants, scales } from './types'\n\nexport const styleVariants = {\n\t[variants.ROUND]: {\n\t\tborderRadius: '32px',\n\t},\n\t[variants.FLAT]: {\n\t\tborderRadius: 0,\n\t},\n}\n\nexport const styleScales = {\n\t[scales.MD]: {\n\t\theight: '16px',\n\t},\n\t[scales.SM]: {\n\t\theight: '8px',\n\t},\n}\n\nexport default styleVariants\n","import styled from 'styled-components'\nimport { space, variant as StyledSystemVariant } from 'styled-system'\nimport { styleVariants, styleScales } from './themes'\nimport { ProgressProps, variants } from './types'\n\ninterface BarProps {\n\tprimary?: boolean\n}\n\nexport const Bar = styled.div`\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tbackground-color: ${(props) =>\n\t\tprops.primary ? props.theme.colors.secondary : `${props.theme.colors.secondary}80`};\n\theight: 100%;\n\ttransition: width 200ms ease;\n`\n\nBar.defaultProps = {\n\tprimary: false,\n}\n\ninterface StyledProgressProps {\n\tvariant: ProgressProps['variant']\n\tscale: ProgressProps['scale']\n}\n\nconst StyledProgress = styled.div`\n\tposition: relative;\n\tbackground-color: ${({ theme }) => theme.colors.input};\n\tbox-shadow: ${({ theme }) => theme.shadows.inset};\n\toverflow: hidden;\n\n\t${Bar} {\n\t\tborder-top-left-radius: ${({ variant }) => (variant === variants.FLAT ? '0' : '32px')};\n\t\tborder-bottom-left-radius: ${({ variant }) => (variant === variants.FLAT ? '0' : '32px')};\n\t}\n\n\t${StyledSystemVariant({\n\t\tvariants: styleVariants,\n\t})}\n\t${StyledSystemVariant({\n\t\tprop: 'scale',\n\t\tvariants: styleScales,\n\t})}\n ${space}\n`\n\nexport default StyledProgress\n","import styled from 'styled-components'\n\nconst ProgressBunnyWrapper = styled.div`\n\tdisplay: flex;\n\tz-index: 2;\n\ttop: -65%;\n\tposition: absolute;\n\ttransform: translate(-50%, -50%);\n\ttransition: left 200ms ease-out;\n`\n\nexport default ProgressBunnyWrapper\n","export default __webpack_public_path__ + \"static/media/bunnyhead-main.045cae28.svg\";","export default __webpack_public_path__ + \"static/media/bunnyhead-max.90eb2dcd.svg\";","export default __webpack_public_path__ + \"static/media/bunnybutt.25a067c1.svg\";","import { InputHTMLAttributes } from 'react'\nimport styled from 'styled-components'\nimport Text from '../Text/Text'\nimport bunnyHeadMain from './svg/bunnyhead-main.svg'\nimport bunnyHeadMax from './svg/bunnyhead-max.svg'\nimport bunnyButt from './svg/bunnybutt.svg'\n\ninterface SliderLabelProps {\n\tprogress: string\n}\n\ninterface StyledInputProps extends InputHTMLAttributes {\n\tisMax: boolean\n}\n\ninterface DisabledProp {\n\tdisabled?: boolean\n}\n\nconst getCursorStyle = ({ disabled = false }: DisabledProp) => (disabled ? 'not-allowed' : 'cursor')\n\nconst getBaseThumbStyles = ({ isMax, disabled }: StyledInputProps) => `\n -webkit-appearance: none;\n background-image: url(${isMax ? bunnyHeadMax : bunnyHeadMain});\n background-color: transparent;\n border: 0;\n cursor: ${getCursorStyle};\n width: 24px;\n height: 32px;\n filter: ${disabled ? 'grayscale(100%)' : 'none'};\n transform: translate(-2px, -2px);\n transition: 200ms transform;\n\n &:hover {\n transform: ${disabled ? 'scale(1) translate(-2px, -2px)' : 'scale(1.1) translate(-3px, -3px)'};\n }\n`\n\nexport const SliderLabelContainer = styled.div`\n\tbottom: 0;\n\tposition: absolute;\n\tleft: 14px;\n\twidth: calc(100% - 30px);\n`\n\nexport const SliderLabel = styled(Text)`\n\tbottom: 0;\n\tfont-size: 12px;\n\tleft: ${({ progress }) => progress};\n\tposition: absolute;\n\ttext-align: center;\n\tmin-width: 24px; // Slider thumb size\n`\n\nexport const BunnyButt = styled.div`\n\tbackground: url(${bunnyButt}) no-repeat;\n\theight: 32px;\n\tfilter: ${({ disabled }) => (disabled ? 'grayscale(100%)' : 'none')};\n\tposition: absolute;\n\twidth: 15px;\n`\n\nexport const BunnySlider = styled.div`\n\tposition: absolute;\n\tleft: 14px;\n\twidth: calc(100% - 14px);\n`\n\nexport const StyledInput = styled.input`\n\tcursor: ${getCursorStyle};\n\theight: 32px;\n\tposition: relative;\n\n\t::-webkit-slider-thumb {\n\t\t${getBaseThumbStyles}\n\t}\n\n\t::-moz-range-thumb {\n\t\t${getBaseThumbStyles}\n\t}\n\n\t::-ms-thumb {\n\t\t${getBaseThumbStyles}\n\t}\n`\n\nexport const BarBackground = styled.div`\n\tbackground-color: ${({ theme, disabled }) =>\n\t\ttheme.colors[disabled ? 'textDisabled' : 'inputSecondary']};\n\theight: 2px;\n\tposition: absolute;\n\ttop: 18px;\n\twidth: 100%;\n`\n\nexport const BarProgress = styled.div`\n\tbackground-color: ${({ theme }) => theme.colors.primary};\n\tfilter: ${({ disabled }) => (disabled ? 'grayscale(100%)' : 'none')};\n\theight: 10px;\n\tposition: absolute;\n\ttop: 18px;\n`\n","import styled from 'styled-components'\nimport { space } from 'styled-system'\nimport { ContainerProps } from './types'\n\nconst Wrapper = styled.div`\n\tposition: relative;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-size: cover;\n\theight: ${({ height, responsive }) => (responsive ? 0 : height)}px;\n\tmax-width: ${({ width }) => width}px;\n\tmax-height: ${({ height }) => height}px;\n\twidth: 100%;\n\tpadding-top: ${({ width, height, responsive }) => (responsive ? (height / width) * 100 : 0)}%;\n\t${space}\n`\n\nexport default Wrapper\n","import React, { useEffect, useRef, useState } from 'react'\nimport styled from 'styled-components'\nimport observerOptions from './options'\nimport Wrapper from './Wrapper'\nimport { ImageProps } from './types'\n\nconst StyledImage = styled.img`\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tmax-width: 100%;\n`\n\nconst Placeholder = styled.div`\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n`\n\nconst Image: React.FC = ({ src, alt, ...otherProps }) => {\n\tconst imgRef = useRef(null)\n\tconst [isLoaded, setIsLoaded] = useState(false)\n\n\tuseEffect(() => {\n\t\tconst img = (imgRef.current as unknown) as HTMLImageElement\n\t\tconst observer = new IntersectionObserver((entries) => {\n\t\t\tentries.forEach((entry) => {\n\t\t\t\tconst { isIntersecting } = entry\n\t\t\t\tif (isIntersecting) {\n\t\t\t\t\tsetIsLoaded(true)\n\t\t\t\t\tobserver.disconnect()\n\t\t\t\t}\n\t\t\t})\n\t\t}, observerOptions)\n\t\tobserver.observe(img)\n\n\t\treturn () => {\n\t\t\tobserver.disconnect()\n\t\t}\n\t}, [src])\n\n\treturn (\n\t\t\n\t\t\t{isLoaded ? : }\n\t\t\n\t)\n}\n\nexport default Image\n","import { ReactNode } from 'react'\nimport { SpaceProps } from 'styled-system'\n\nexport const variants = {\n\tPRIMARY: 'primary',\n\tSECONDARY: 'secondary',\n\tSUCCESS: 'success',\n\tTEXTDISABLED: 'textDisabled',\n\tTEXTSUBTLE: 'textSubtle',\n\tBINANCE: 'binance',\n\tFAILURE: 'failure',\n} as const\n\nexport const scales = {\n\tMD: 'md',\n\tSM: 'sm',\n} as const\n\nexport type Scale = typeof scales[keyof typeof scales]\nexport type Variant = typeof variants[keyof typeof variants]\n\nexport interface TagProps extends SpaceProps {\n\tvariant?: Variant\n\tscale?: Scale\n\tstartIcon?: ReactNode\n\tendIcon?: ReactNode\n\toutline?: boolean\n}\n","import { scales, variants } from './types'\n\nexport const scaleVariants = {\n\t[scales.MD]: {\n\t\theight: '28px',\n\t\tpadding: '0 8px',\n\t\tfontSize: '14px',\n\t},\n\t[scales.SM]: {\n\t\theight: '24px',\n\t\tpadding: '0 4px',\n\t\tfontSize: '12px',\n\t},\n}\n\nexport const styleVariants = {\n\t[variants.PRIMARY]: {\n\t\tbackgroundColor: 'primary',\n\t},\n\t[variants.SECONDARY]: {\n\t\tbackgroundColor: 'secondary',\n\t},\n\t[variants.SUCCESS]: {\n\t\tbackgroundColor: 'success',\n\t},\n\t[variants.TEXTDISABLED]: {\n\t\tbackgroundColor: 'textDisabled',\n\t},\n\t[variants.TEXTSUBTLE]: {\n\t\tbackgroundColor: 'textSubtle',\n\t},\n\t[variants.BINANCE]: {\n\t\tbackgroundColor: 'binance',\n\t},\n\t[variants.FAILURE]: {\n\t\tbackgroundColor: 'failure',\n\t},\n}\n","import styled, { DefaultTheme } from 'styled-components'\nimport { space, variant } from 'styled-system'\nimport { Colors } from '../../theme/types'\nimport { scaleVariants, styleVariants } from './theme'\nimport { TagProps, variants } from './types'\n\ninterface ThemedProps extends TagProps {\n\ttheme: DefaultTheme\n}\n\nconst getOutlineStyles = ({\n\toutline,\n\ttheme,\n\tvariant: variantKey = variants.PRIMARY,\n}: ThemedProps) => {\n\tif (outline) {\n\t\tconst themeColorKey = styleVariants[variantKey].backgroundColor as keyof Colors\n\t\tconst color = theme.colors[themeColorKey]\n\n\t\treturn `\n color: ${color};\n background: transparent;\n border: 2px solid ${color};\n `\n\t}\n\n\treturn ''\n}\n\nexport const StyledTag = styled.div`\n\talign-items: center;\n\tborder-radius: 16px;\n\tcolor: #ffffff;\n\tdisplay: inline-flex;\n\tfont-weight: 400;\n\twhite-space: nowrap;\n\n\t& > svg {\n\t\tfill: currentColor;\n\t}\n\n\t${variant({\n\t\tprop: 'scale',\n\t\tvariants: scaleVariants,\n\t})}\n\t${variant({\n\t\tvariants: styleVariants,\n\t})}\n ${space}\n\n ${getOutlineStyles}\n`\n\nexport default null\n","import React from 'react'\nimport { scales, TagProps } from './types'\nimport { StyledTag } from './StyledTag'\n\nconst Tag: React.FC = ({ startIcon, endIcon, children, ...props }) => (\n\t\n\t\t{React.isValidElement(startIcon) &&\n\t\t\tReact.cloneElement(startIcon, {\n\t\t\t\tmr: '0.5em',\n\t\t\t})}\n\t\t{children}\n\t\t{React.isValidElement(endIcon) &&\n\t\t\tReact.cloneElement(endIcon, {\n\t\t\t\tml: '0.5em',\n\t\t\t})}\n\t\n)\n\nTag.defaultProps = {\n\tvariant: 'primary',\n\tscale: scales.MD,\n\toutline: false,\n}\n\nexport default Tag\n","import styled, { DefaultTheme } from 'styled-components'\nimport { Variant, variants } from '../Button/types'\n\ntype StyledButtonMenuProps = {\n\tvariant: Variant\n\ttheme: DefaultTheme\n}\n\nconst getBackgroundColor = ({ theme, variant }: StyledButtonMenuProps) =>\n\ttheme.colors[variant === variants.SUBTLE ? 'input' : 'tertiary']\n\nconst StyledButtonMenu = styled.div<{ variant: Variant }>`\n\tbackground-color: ${getBackgroundColor};\n\tborder-radius: 16px;\n\tdisplay: inline-flex;\n\n\t& > button + button,\n\t& > a + a {\n\t\tmargin-left: 2px; // To avoid focus shadow overlap\n\t}\n`\n\nexport default StyledButtonMenu\n","import React, { cloneElement, Children, ReactElement } from 'react'\nimport StyledButtonMenu from './StyledButtonMenu'\nimport { scales, variants } from '../Button/types'\nimport { ButtonMenuProps } from './types'\n\nconst ButtonMenu: React.FC = ({\n\tactiveIndex = 0,\n\tscale = scales.MD,\n\tvariant = variants.PRIMARY,\n\tonItemClick,\n\tchildren,\n}) => (\n\t\n\t\t{Children.map(children, (child: ReactElement, index) =>\n\t\t\tcloneElement(child, {\n\t\t\t\tisActive: activeIndex === index,\n\t\t\t\tonClick: onItemClick ? () => onItemClick(index) : undefined,\n\t\t\t\tscale,\n\t\t\t\tvariant,\n\t\t\t}),\n\t\t)}\n\t\n)\n\nexport default ButtonMenu\n","import React from 'react'\nimport styled from 'styled-components'\nimport Button from '../Button/Button'\nimport { BaseButtonProps, PolymorphicComponent, variants } from '../Button/types'\nimport { ButtonMenuItemProps } from './types'\n\ninterface InactiveButtonProps extends BaseButtonProps {\n\tforwardedAs: BaseButtonProps['as']\n}\n\nconst InactiveButton: PolymorphicComponent = styled(\n\tButton,\n)`\n\tbackground-color: transparent;\n\tcolor: ${({ theme, variant }) =>\n\t\tvariant === variants.PRIMARY ? theme.colors.primary : theme.colors.textSubtle};\n\t&:hover:not(:disabled):not(:active) {\n\t\tbackground-color: transparent;\n\t}\n`\n\nconst ButtonMenuItem: PolymorphicComponent = ({\n\tisActive = false,\n\tvariant = variants.PRIMARY,\n\tas,\n\t...props\n}: ButtonMenuItemProps) => {\n\tif (!isActive) {\n\t\treturn \n\t}\n\n\treturn \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t)\n}\n","import { Contract } from '@ethersproject/contracts'\nimport { getAddress } from '@ethersproject/address'\nimport { AddressZero } from '@ethersproject/constants'\nimport { JsonRpcSigner, Web3Provider } from '@ethersproject/providers'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { abi as IUniswapV2Router02ABI } from '@uniswap/v2-periphery/build/IUniswapV2Router02.json'\nimport {\n\tChainId,\n\tJSBI,\n\tPercent,\n\tToken,\n\tCurrencyAmount,\n\tCurrency,\n\tETHER,\n} from 'sdk-hoosmartchain'\nimport { ROUTER_ADDRESS } from '../constants'\nimport { TokenAddressMap } from '../state/lists/hooks'\nimport WSafeTokenABI from '../constants/abis/wSafeToken.json'\n\n// returns the checksummed address if the address is valid, otherwise returns false\nexport function isAddress(value: any): string | false {\n\ttry {\n\t\treturn getAddress(value)\n\t} catch {\n\t\treturn false\n\t}\n}\n\nconst BSCSCAN_PREFIXES: { [chainId in ChainId]: string } = {\n\t70: '',\n\t97: 'testnet.',\n}\n\nexport function getBscScanLink(\n\tchainId: ChainId,\n\tdata: string,\n\ttype: 'transaction' | 'token' | 'address',\n): string {\n\tconst prefix = `https://${\n\t\tBSCSCAN_PREFIXES[chainId] || BSCSCAN_PREFIXES[ChainId.MAINNET]\n\t}hooscan.com`\n\n\tswitch (type) {\n\t\tcase 'transaction': {\n\t\t\treturn `${prefix}/tx/${data}`\n\t\t}\n\t\tcase 'token': {\n\t\t\treturn `${prefix}/token/${data}`\n\t\t}\n\t\tcase 'address':\n\t\tdefault: {\n\t\t\treturn `${prefix}/address/${data}`\n\t\t}\n\t}\n}\n\n// shorten the checksummed version of the input address to have 0x + 4 characters at start and end\nexport function shortenAddress(address: string, chars = 4): string {\n\tconst parsed = isAddress(address)\n\tif (!parsed) {\n\t\tthrow Error(`Invalid 'address' parameter '${address}'.`)\n\t}\n\treturn `${parsed.substring(0, chars + 2)}...${parsed.substring(42 - chars)}`\n}\n\n// add 10%\nexport function calculateGasMargin(value: BigNumber): BigNumber {\n\treturn value.mul(BigNumber.from(10000).add(BigNumber.from(1000))).div(BigNumber.from(10000))\n}\n\n// converts a basis points value to a sdk percent\nexport function basisPointsToPercent(num: number): Percent {\n\treturn new Percent(JSBI.BigInt(Math.floor(num)), JSBI.BigInt(10000))\n}\n\nexport function calculateSlippageAmount(value: CurrencyAmount, slippage: number): [JSBI, JSBI] {\n\tif (slippage < 0 || slippage > 10000) {\n\t\tthrow Error(`Unexpected slippage value: ${slippage}`)\n\t}\n\treturn [\n\t\tJSBI.divide(JSBI.multiply(value.raw, JSBI.BigInt(10000 - slippage)), JSBI.BigInt(10000)),\n\t\tJSBI.divide(JSBI.multiply(value.raw, JSBI.BigInt(10000 + slippage)), JSBI.BigInt(10000)),\n\t]\n}\n\n// account is not optional\nexport function getSigner(library: Web3Provider, account: string): JsonRpcSigner {\n\treturn library.getSigner(account).connectUnchecked()\n}\n\n// account is optional\nexport function getProviderOrSigner(\n\tlibrary: Web3Provider,\n\taccount?: string,\n): Web3Provider | JsonRpcSigner {\n\treturn account ? getSigner(library, account) : library\n}\n\n// account is optional\nexport function getContract(\n\taddress: string,\n\tABI: any,\n\tlibrary: Web3Provider,\n\taccount?: string,\n): Contract {\n\tif (!isAddress(address) || address === AddressZero) {\n\t\tthrow Error(`Invalid 'address' parameter '${address}'.`)\n\t}\n\n\treturn new Contract(address, ABI, getProviderOrSigner(library, account) as any)\n}\n\n// account is optional\nexport function getRouterContract(_: number, library: Web3Provider, account?: string): Contract {\n\treturn getContract(ROUTER_ADDRESS, IUniswapV2Router02ABI, library, account)\n}\n\nexport function getWSafeTokenContract(\n\taddress: string,\n\tlibrary: Web3Provider,\n\taccount?: string,\n): Contract {\n\treturn getContract(address, WSafeTokenABI, library, account)\n}\n\nexport function escapeRegExp(string: string): string {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\nexport function isTokenOnList(defaultTokens: TokenAddressMap, currency?: Currency): boolean {\n\tif (currency === ETHER) return true\n\treturn Boolean(currency instanceof Token && defaultTokens[currency.chainId]?.[currency.address])\n}\n","import React, { HTMLProps, useCallback } from 'react'\nimport { Link } from 'react-router-dom'\nimport styled, { keyframes } from 'styled-components'\n\n// A button that triggers some onClick result, but looks like a link.\nexport const LinkStyledButton = styled.button<{ disabled?: boolean }>`\n\tborder: none;\n\ttext-decoration: none;\n\tbackground: none;\n\n\tcursor: ${({ disabled }) => (disabled ? 'default' : 'pointer')};\n\tcolor: ${({ theme, disabled }) => (disabled ? theme.colors.textSubtle : theme.colors.primary)};\n\tfont-weight: 500;\n\n\t:hover {\n\t\ttext-decoration: ${({ disabled }) => (disabled ? null : 'underline')};\n\t}\n\n\t:focus {\n\t\toutline: none;\n\t\ttext-decoration: ${({ disabled }) => (disabled ? null : 'underline')};\n\t}\n\n\t:active {\n\t\ttext-decoration: none;\n\t}\n`\n\n// An internal link from the react-router-dom library that is correctly styled\nexport const StyledInternalLink = styled(Link)`\n\ttext-decoration: none;\n\tcursor: pointer;\n\tcolor: ${({ theme }) => theme.colors.primary};\n\tfont-weight: 500;\n\n\t:hover {\n\t\ttext-decoration: underline;\n\t}\n\n\t:focus {\n\t\toutline: none;\n\t\ttext-decoration: underline;\n\t}\n\n\t:active {\n\t\ttext-decoration: none;\n\t}\n`\n\nconst StyledLink = styled.a`\n\ttext-decoration: none;\n\tcursor: pointer;\n\tcolor: ${({ theme }) => theme.colors.primary};\n\tfont-weight: 500;\n\n\t:hover {\n\t\ttext-decoration: underline;\n\t}\n\n\t:focus {\n\t\toutline: none;\n\t\ttext-decoration: underline;\n\t}\n\n\t:active {\n\t\ttext-decoration: none;\n\t}\n`\n\n/**\n * Outbound link that handles firing google analytics events\n */\nexport function ExternalLink({\n\ttarget = '_blank',\n\thref,\n\trel = 'noopener noreferrer',\n\t...rest\n}: Omit, 'as' | 'ref' | 'onClick'> & { href: string }) {\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent) => {\n\t\t\tif (!(target === '_blank' || event.ctrlKey || event.metaKey)) {\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t},\n\t\t[target],\n\t)\n\treturn \n}\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nexport const Spinner = styled.img`\n\tanimation: 2s ${rotate} linear infinite;\n\twidth: 16px;\n\theight: 16px;\n`\n","import React, { useContext } from 'react'\nimport { AlertCircle, CheckCircle } from 'react-feather'\nimport { Text } from '../../uikit-foodcourt'\nimport styled, { ThemeContext } from 'styled-components'\nimport { useActiveWeb3React } from '../../hooks'\nimport { getBscScanLink } from '../../utils'\nimport { ExternalLink } from '../Shared'\nimport { AutoColumn } from '../Column'\nimport { AutoRow } from '../Row'\n\nconst RowNoFlex = styled(AutoRow)`\n\tflex-wrap: nowrap;\n`\n\nexport default function TransactionPopup({\n\thash,\n\tsuccess,\n\tsummary,\n}: {\n\thash: string\n\tsuccess?: boolean\n\tsummary?: string\n}) {\n\tconst { chainId } = useActiveWeb3React()\n\n\tconst theme = useContext(ThemeContext)\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t{success ? (\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
\n\t\t\t\n\t\t\t\t{summary ?? `Hash: ${hash.slice(0, 8)}...${hash.slice(58, 65)}`}\n\t\t\t\t{chainId && (\n\t\t\t\t\t\n\t\t\t\t\t\tView on bscscan\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t
\n\t)\n}\n","import React, { useCallback, useContext, useEffect } from 'react'\nimport { X } from 'react-feather'\nimport { useSpring } from 'react-spring/web'\nimport styled, { ThemeContext } from 'styled-components'\nimport { animated } from 'react-spring'\nimport { PopupContent } from '../../state/application/actions'\nimport { useRemovePopup } from '../../state/application/hooks'\nimport ListUpdatePopup from './ListUpdatePopup'\nimport TransactionPopup from './TransactionPopup'\n\nexport const StyledClose = styled(X)`\n\tposition: absolute;\n\tright: 10px;\n\ttop: 10px;\n\n\t:hover {\n\t\tcursor: pointer;\n\t}\n`\nexport const Popup = styled.div`\n\tdisplay: inline-block;\n\twidth: 100%;\n\tpadding: 1em;\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n\tposition: relative;\n\tborder-radius: 10px;\n\tpadding: 20px;\n\tpadding-right: 35px;\n\toverflow: hidden;\n\n\t${({ theme }) => theme.mediaQueries.sm} {\n\t\tmin-width: 290px;\n\t}\n`\nconst Fader = styled.div`\n\tposition: absolute;\n\tbottom: 0px;\n\tleft: 0px;\n\twidth: 100%;\n\theight: 2px;\n\tbackground-color: ${({ theme }) => theme.colors.tertiary};\n`\n\nconst AnimatedFader = animated(Fader)\n\nexport default function PopupItem({\n\tremoveAfterMs,\n\tcontent,\n\tpopKey,\n}: {\n\tremoveAfterMs: number | null\n\tcontent: PopupContent\n\tpopKey: string\n}) {\n\tconst removePopup = useRemovePopup()\n\tconst removeThisPopup = useCallback(() => removePopup(popKey), [popKey, removePopup])\n\tuseEffect(() => {\n\t\tif (removeAfterMs === null) return undefined\n\n\t\tconst timeout = setTimeout(() => {\n\t\t\tremoveThisPopup()\n\t\t}, removeAfterMs)\n\n\t\treturn () => {\n\t\t\tclearTimeout(timeout)\n\t\t}\n\t}, [removeAfterMs, removeThisPopup])\n\n\tconst theme = useContext(ThemeContext)\n\n\tlet popupContent\n\tif ('txn' in content) {\n\t\tconst {\n\t\t\ttxn: { hash, success, summary },\n\t\t} = content\n\t\tpopupContent = \n\t} else if ('listUpdate' in content) {\n\t\tconst {\n\t\t\tlistUpdate: { listUrl, oldList, newList, auto },\n\t\t} = content\n\t\tpopupContent = (\n\t\t\t\n\t\t)\n\t}\n\n\tconst faderStyle = useSpring({\n\t\tfrom: { width: '100%' },\n\t\tto: { width: '0%' },\n\t\tconfig: { duration: removeAfterMs ?? undefined },\n\t})\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t{popupContent}\n\t\t\t{removeAfterMs !== null ? : null}\n\t\t\n\t)\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useActivePopups } from '../../state/application/hooks'\nimport { AutoColumn } from '../Column'\nimport PopupItem from './PopupItem'\n\nconst MobilePopupWrapper = styled.div<{ height: string | number }>`\n position: relative;\n max-width: 100%;\n height: ${({ height }) => height};\n margin: ${({ height }) => (height ? '0 auto;' : 0)};\n margin-bottom: ${({ height }) => (height ? '20px' : 0)}};\n display: none;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n display: block;\n }\n`\n\nconst MobilePopupInner = styled.div`\n\theight: 99%;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tdisplay: flex;\n\tflex-direction: row;\n\t-webkit-overflow-scrolling: touch;\n\t::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n`\n\nconst FixedPopupColumn = styled(AutoColumn)`\n\tposition: fixed;\n\ttop: 64px;\n\tright: 1rem;\n\tmax-width: 355px !important;\n\twidth: 100%;\n\tz-index: 2;\n\n\t${({ theme }) => theme.mediaQueries.sm} {\n\t\tdisplay: none;\n\t}\n`\n\nexport default function Popups() {\n\t// get all popups\n\tconst activePopups = useActivePopups()\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{activePopups.map((item) => (\n\t\t\t\t\t\n\t\t\t\t))}\n\t\t\t\n\t\t\t 0 ? 'fit-content' : 0}>\n\t\t\t\t\n\t\t\t\t\t{activePopups // reverse so new items up front\n\t\t\t\t\t\t.slice(0)\n\t\t\t\t\t\t.reverse()\n\t\t\t\t\t\t.map((item) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t))}\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import React from 'react'\n\nimport styled, { keyframes } from 'styled-components'\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst StyledSVG = styled.svg<{ size: string; stroke?: string }>`\n\tanimation: 2s ${rotate} linear infinite;\n\theight: ${({ size }) => size};\n\twidth: ${({ size }) => size};\n\tpath {\n\t\tstroke: ${({ stroke, theme }) => stroke ?? theme.colors.primary};\n\t}\n`\n\n/**\n * Takes in custom size and stroke for circle color, default to primary color as fill,\n * need ...rest for layered styles on top\n */\nexport default function Loader({\n\tsize = '16px',\n\tstroke,\n\t...rest\n}: {\n\tsize?: string\n\tstroke?: string\n}) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import React, { useState, useEffect } from 'react'\nimport { useWeb3React } from '@web3-react/core'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { network } from '../../connectors'\nimport { useEagerConnect, useInactiveListener } from '../../hooks'\nimport { NetworkContextName } from '../../constants'\nimport Loader from '../Loader'\n\nconst MessageWrapper = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\theight: 20rem;\n`\n\nconst Message = styled.h2`\n\tcolor: ${({ theme }) => theme.colors.primaryDark};\n`\n\nexport default function Web3ReactManager({ children }: { children: JSX.Element }) {\n\tconst { t } = useTranslation()\n\tconst { active } = useWeb3React()\n\tconst { active: networkActive, error: networkError, activate: activateNetwork } = useWeb3React(\n\t\tNetworkContextName,\n\t)\n\n\t// try to eagerly connect to an injected provider, if it exists and has granted access already\n\tconst triedEager = useEagerConnect()\n\n\t// after eagerly trying injected, if the network connect ever isn't active or in an error state, activate itd\n\tuseEffect(() => {\n\t\tif (triedEager && !networkActive && !networkError && !active) {\n\t\t\tactivateNetwork(network)\n\t\t}\n\t}, [triedEager, networkActive, networkError, activateNetwork, active])\n\n\t// when there's no account connected, react to logins (broadly speaking) on the injected provider, if it exists\n\tuseInactiveListener(!triedEager)\n\n\t// handle delayed loader state\n\tconst [showLoader, setShowLoader] = useState(false)\n\tuseEffect(() => {\n\t\tconst timeout = setTimeout(() => {\n\t\t\tsetShowLoader(true)\n\t\t}, 600)\n\n\t\treturn () => {\n\t\t\tclearTimeout(timeout)\n\t\t}\n\t}, [])\n\n\t// on page load, do nothing until we've tried to connect to the injected connector\n\tif (!triedEager) {\n\t\treturn null\n\t}\n\n\t// if the account context isn't active, and there's an error on the network context, it's an irrecoverable error\n\tif (!active && networkError) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{t('unknownError')}\n\t\t\t\n\t\t)\n\t}\n\n\t// if neither context is active, spin\n\tif (!active && !networkActive) {\n\t\treturn showLoader ? (\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t) : null\n\t}\n\n\treturn children\n}\n","import styled from 'styled-components'\n\nconst Card = styled.div`\n\twidth: 100%;\n\tborder-radius: 16px;\n\tpadding: 1.25rem;\n\tpadding: ${({ padding }) => padding};\n\tborder: ${({ border }) => border};\n\tborder-radius: ${({ borderRadius }) => borderRadius};\n`\nexport default Card\n\nexport const LightCard = styled(Card)`\n\tborder: 1px solid ${({ theme }) => theme.colors.invertedContrast};\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n`\n\nexport const GreyCard = styled(Card)`\n\tbackground-color: ${({ theme }) => theme.colors.tertiary};\n`\n","import React from 'react'\nimport styled, { css } from 'styled-components'\nimport { animated, useTransition } from 'react-spring'\nimport { DialogOverlay, DialogContent } from '@reach/dialog'\nimport { isMobile } from 'react-device-detect'\nimport '@reach/dialog/styles.css'\nimport { transparentize } from 'polished'\n\nconst AnimatedDialogOverlay = animated(DialogOverlay)\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst StyledDialogOverlay = styled(AnimatedDialogOverlay)`\n\t&[data-reach-dialog-overlay] {\n\t\tz-index: 2;\n\t\tbackground-color: transparent;\n\t\toverflow: hidden;\n\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\tbackground-color: rgba(0, 0, 0, 0.3);\n\t}\n`\n\nconst AnimatedDialogContent = animated(DialogContent)\n// destructure to not pass custom props to Dialog DOM element\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst StyledDialogContent = styled(({ minHeight, maxHeight, mobile, isOpen, ...rest }) => (\n\t\n)).attrs({\n\t'aria-label': 'dialog',\n})`\n\t&[data-reach-dialog-content] {\n\t\tmargin: 0 0 2rem 0;\n\t\tborder: 1px solid ${({ theme }) => theme.colors.invertedContrast};\n\t\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n\t\tbox-shadow: 0 4px 8px 0 ${transparentize(0.95, '#191326')};\n\t\tpadding: 0px;\n\t\twidth: 80%;\n\t\toverflow: hidden;\n\n\t\talign-self: ${({ mobile }) => (mobile ? 'flex-end' : 'center')};\n\n\t\tmax-width: 420px;\n\t\t${({ maxHeight }) =>\n\t\t\tmaxHeight &&\n\t\t\tcss`\n\t\t\t\tmax-height: ${maxHeight}vh;\n\t\t\t`}\n\t\t${({ minHeight }) =>\n\t\t\tminHeight &&\n\t\t\tcss`\n\t\t\t\tmin-height: ${minHeight}vh;\n\t\t\t`}\n display: flex;\n\t\tborder-radius: 20px;\n\n\t\t${({ theme }) => theme.mediaQueries.lg} {\n\t\t\twidth: 65vw;\n\t\t}\n\t\t${({ theme }) => theme.mediaQueries.sm} {\n\t\t\twidth: 85vw;\n\t\t}\n\t}\n`\n\ninterface ModalProps {\n\tisOpen: boolean\n\tonDismiss: () => void\n\tminHeight?: number | false\n\tmaxHeight?: number\n\tinitialFocusRef?: React.RefObject\n\tchildren?: React.ReactNode\n}\n\nexport default function Modal({\n\tisOpen,\n\tonDismiss,\n\tminHeight = false,\n\tmaxHeight = 50,\n\tinitialFocusRef,\n\tchildren,\n}: ModalProps) {\n\tconst fadeTransition = useTransition(isOpen, null, {\n\t\tconfig: { duration: 200 },\n\t\tfrom: { opacity: 0 },\n\t\tenter: { opacity: 1 },\n\t\tleave: { opacity: 0 },\n\t})\n\n\treturn (\n\t\t<>\n\t\t\t{fadeTransition.map(\n\t\t\t\t({ item, key, props }) =>\n\t\t\t\t\titem && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{/* prevents the automatic focusing of inputs on mobile by the reach dialog */}\n\t\t\t\t\t\t\t\t{/* eslint-disable */}\n {!initialFocusRef && isMobile ?
: null}\n {/* eslint-enable */}\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t),\n\t\t\t)}\n\t\t\n\t)\n}\n","import React, { ReactNode } from 'react'\nimport styled from 'styled-components'\nimport { Heading, IconButton, CloseIcon } from '../../uikit-foodcourt'\nimport { AutoColumn, ColumnCenter } from '../Column'\n\nexport const Wrapper = styled.div`\n\twidth: 100%;\n\toverflow-y: auto;\n`\nexport const Section = styled(AutoColumn)`\n\tpadding: 24px;\n`\n\nexport const ConfirmedIcon = styled(ColumnCenter)`\n\tpadding: 40px 0;\n`\n\nexport const BottomSection = styled(Section)`\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n\tborder-bottom-left-radius: 20px;\n\tborder-bottom-right-radius: 20px;\n`\n\n/**\n * TODO: Remove this when modal system from the UI Kit is implemented\n */\nconst StyledContentHeader = styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\n\t& > ${Heading} {\n\t\tflex: 1;\n\t}\n`\n\ntype ContentHeaderProps = {\n\tchildren: ReactNode\n\tonDismiss: () => void\n}\n\nexport const ContentHeader = ({ children, onDismiss }: ContentHeaderProps) => (\n\t\n\t\t{children}\n\t\t\n\t\t\t\n\t\t\n\t\n)\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Text } from '../../uikit-foodcourt'\nimport { Spinner } from '../Shared'\nimport { AutoColumn } from '../Column'\nimport { Wrapper, Section, ConfirmedIcon, ContentHeader } from './helpers'\n\ntype ConfirmationPendingContentProps = { onDismiss: () => void; pendingText: string }\n\nconst CustomLightSpinner = styled(Spinner)<{ size: string }>`\n\theight: ${({ size }) => size};\n\twidth: ${({ size }) => size};\n`\n\nconst ConfirmationPendingContent = ({\n\tonDismiss,\n\tpendingText,\n}: ConfirmationPendingContentProps) => (\n\t\n\t\t
\n\t\t\tWaiting for confirmation\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{pendingText}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tConfirm this transaction in your wallet\n\t\t\t\n\t\t
\n\t
\n)\n\nexport default ConfirmationPendingContent\n","import { ChainId } from 'sdk-hoosmartchain'\nimport React, { useContext } from 'react'\nimport { ThemeContext } from 'styled-components'\nimport { Button, LinkExternal } from '../../uikit-foodcourt'\nimport { ArrowUpCircle } from 'react-feather'\nimport { AutoColumn } from '../Column'\nimport { getBscScanLink } from '../../utils'\nimport { Wrapper, Section, ConfirmedIcon, ContentHeader } from './helpers'\n\ntype TransactionSubmittedContentProps = {\n\tonDismiss: () => void\n\thash: string | undefined\n\tchainId: ChainId\n}\n\nconst TransactionSubmittedContent = ({\n\tonDismiss,\n\tchainId,\n\thash,\n}: TransactionSubmittedContentProps) => {\n\tconst theme = useContext(ThemeContext)\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\tTransaction submitted\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{chainId && hash && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tView on BscScan\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default TransactionSubmittedContent\n","import React from 'react'\nimport Modal from '../Modal'\nimport { useActiveWeb3React } from '../../hooks'\nimport ConfirmationPendingContent from './ConfirmationPendingContent'\nimport TransactionSubmittedContent from './TransactionSubmittedContent'\n\ninterface ConfirmationModalProps {\n\tisOpen: boolean\n\tonDismiss: () => void\n\thash: string | undefined\n\tcontent: () => React.ReactNode\n\tattemptingTxn: boolean\n\tpendingText: string\n}\n\nconst TransactionConfirmationModal = ({\n\tisOpen,\n\tonDismiss,\n\tattemptingTxn,\n\thash,\n\tpendingText,\n\tcontent,\n}: ConfirmationModalProps) => {\n\tconst { chainId } = useActiveWeb3React()\n\n\tif (!chainId) return null\n\n\t// confirmation screen\n\treturn (\n\t\t\n\t\t\t{attemptingTxn ? (\n\t\t\t\t\n\t\t\t) : hash ? (\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\tcontent()\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default TransactionConfirmationModal\n","import React from 'react'\nimport { Wrapper, Section, BottomSection, ContentHeader } from './helpers'\n\ntype ConfirmationModalContentProps = {\n\ttitle: string\n\tonDismiss: () => void\n\ttopContent: () => React.ReactNode\n\tbottomContent: () => React.ReactNode\n}\n\nconst ConfirmationModalContent = ({\n\ttitle,\n\tbottomContent,\n\tonDismiss,\n\ttopContent,\n}: ConfirmationModalContentProps) => (\n\t\n\t\t
\n\t\t\t{title}\n\t\t\t{topContent()}\n\t\t
\n\t\t{bottomContent()}\n\t
\n)\n\nexport default ConfirmationModalContent\n","import React, { useContext } from 'react'\nimport { ThemeContext } from 'styled-components'\nimport { Button, Text } from '../../uikit-foodcourt'\nimport { AlertTriangle } from 'react-feather'\nimport { AutoColumn } from '../Column'\nimport { Wrapper, Section, BottomSection, ContentHeader } from './helpers'\n\ntype TransactionErrorContentProps = { message: string; onDismiss: () => void }\n\nconst TransactionErrorContent = ({ message, onDismiss }: TransactionErrorContentProps) => {\n\tconst theme = useContext(ThemeContext)\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\tError\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{message}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t)\n}\n\nexport default TransactionErrorContent\n","import TransactionConfirmationModal from './TransactionConfirmationModal'\n\nexport { default as ConfirmationModalContent } from './ConfirmationModalContent'\nexport { default as ConfirmationPendingContent } from './ConfirmationPendingContent'\nexport { default as TransactionErrorContent } from './TransactionErrorContent'\nexport { default as TransactionSubmittedContent } from './TransactionSubmittedContent'\n\nexport default TransactionConfirmationModal\n","import React, { createContext } from 'react'\n\ninterface TranslationState {\n\ttranslations: Array\n\tsetTranslations: React.Dispatch>>\n}\n\nconst defaultTranslationState: TranslationState = {\n\ttranslations: [],\n\tsetTranslations: (): void => undefined,\n}\n\nexport const TranslationsContext = createContext(defaultTranslationState as TranslationState)\n\nexport default TranslationsContext\n","import { useContext } from 'react'\nimport { TranslationsContext } from '../hooks/TranslationsContext'\n\nconst variableRegex = /%(.*?)%/\n\nconst replaceDynamicString = (foundTranslation: string, fallback: string) => {\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tconst stringToReplace = variableRegex.exec(foundTranslation)![0]\n\tconst indexToReplace = foundTranslation.split(' ').indexOf(stringToReplace)\n\tconst fallbackValueAtIndex = fallback.split(' ')[indexToReplace]\n\treturn foundTranslation.replace(stringToReplace, fallbackValueAtIndex)\n}\n\nexport const getTranslation = (\n\ttranslations: Array,\n\ttranslationId: number,\n\tfallback: string,\n) => {\n\tconst foundTranslation = translations.find(\n\t\t(translation) => translation.data.stringId === translationId,\n\t)\n\tif (foundTranslation) {\n\t\tconst translatedString = foundTranslation.data.text\n\t\tconst includesVariable = translatedString.includes('%')\n\t\tif (includesVariable) {\n\t\t\treturn replaceDynamicString(translatedString, fallback)\n\t\t}\n\t\treturn translatedString\n\t}\n\treturn fallback\n}\n\nexport const TranslateString = (translationId: number, fallback: string) => {\n\tconst { translations } = useContext(TranslationsContext)\n\tif (translations[0] === 'error') {\n\t\treturn fallback\n\t}\n\tif (translations.length > 0) {\n\t\treturn getTranslation(translations, translationId, fallback)\n\t}\n\treturn null\n}\n","import { useCallback, useContext } from 'react'\nimport { TranslationsContext } from 'hooks/TranslationsContext'\nimport { getTranslation } from 'utils/translateTextHelpers'\n\nconst useI18n = () => {\n\tconst { translations } = useContext(TranslationsContext)\n\n\t/**\n\t * As a temporary fix memoize the translation function so it can be used in an effect.\n\t * It appears the TranslationsContext is always empty and is not currently used\n\t * TODO: Figure out if the context is used and if not, remove it.\n\t */\n\treturn useCallback(\n\t\t(translationId: number, fallback: string) => {\n\t\t\tif (translations[0] === 'error') {\n\t\t\t\treturn fallback\n\t\t\t}\n\t\t\tif (translations.length > 0) {\n\t\t\t\treturn getTranslation(translations, translationId, fallback)\n\t\t\t}\n\t\t\treturn fallback\n\t\t},\n\t\t[translations],\n\t)\n}\n\nexport default useI18n\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Link } from 'react-router-dom'\nimport { ButtonMenu, ButtonMenuItem } from '../../uikit-foodcourt'\nimport useI18n from 'hooks/useI18n'\n\nconst StyledNav = styled.div`\n\tmargin-bottom: 40px;\n`\n\nfunction Nav({ activeIndex = 0 }: { activeIndex?: number }) {\n\tconst TranslateString = useI18n()\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tExchange\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tLiquidity\n\t\t\t\t\n\t\t\t\t{/* \n\t\t\t\t\tWrap\n\t\t\t\t */}\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Nav\n","import { Interface } from '@ethersproject/abi'\nimport ERC20_ABI from './erc20.json'\nimport ERC20_BYTES32_ABI from './erc20_bytes32.json'\n\nconst ERC20_INTERFACE = new Interface(ERC20_ABI)\n\nexport default ERC20_INTERFACE\nexport { ERC20_ABI, ERC20_BYTES32_ABI }\n","import { ChainId, Token } from 'sdk-hoosmartchain'\nimport { Tags, TokenInfo, TokenList } from '@uniswap/token-lists'\nimport { useMemo } from 'react'\nimport { useSelector } from 'react-redux'\nimport { FoodcourtTokenInfo } from 'utils/getTokenList'\nimport { AppState } from '../index'\n\ntype TagDetails = Tags[keyof Tags]\nexport interface TagInfo extends TagDetails {\n\tid: string\n}\n\n/**\n * Token instances created from token info.\n */\nexport class WrappedTokenInfo extends Token {\n\tpublic readonly tokenInfo: FoodcourtTokenInfo\n\n\tpublic readonly tags: TagInfo[]\n\n\tconstructor(tokenInfo: FoodcourtTokenInfo, tags: TagInfo[]) {\n\t\tsuper(\n\t\t\ttokenInfo.chainId,\n\t\t\ttokenInfo.address,\n\t\t\ttokenInfo.decimals,\n\t\t\ttokenInfo.symbol,\n\t\t\ttokenInfo.name,\n\t\t)\n\t\tthis.tokenInfo = tokenInfo\n\t\tthis.tags = tags\n\t}\n\n\tpublic get logoURI(): string | undefined {\n\t\treturn this.tokenInfo.logoURI\n\t}\n}\n\nexport type TokenAddressMap = Readonly<\n\t{ [chainId in ChainId]: Readonly<{ [tokenAddress: string]: WrappedTokenInfo }> }\n>\n\n/**\n * An empty result, useful as a default.\n */\nconst EMPTY_LIST: TokenAddressMap = {\n\t[ChainId.MAINNET]: {},\n\t[ChainId.TESTNET]: {},\n}\n\nconst listCache: WeakMap | null =\n\ttypeof WeakMap !== 'undefined' ? new WeakMap() : null\n\nexport function listToTokenMap(list: TokenList): TokenAddressMap {\n\tconst result = listCache?.get(list)\n\tif (result) return result\n\n\tconst map = list.tokens.reduce(\n\t\t(tokenMap, tokenInfo) => {\n\t\t\tconst tags: TagInfo[] =\n\t\t\t\ttokenInfo.tags\n\t\t\t\t\t?.map((tagId) => {\n\t\t\t\t\t\tif (!list.tags?.[tagId]) return undefined\n\t\t\t\t\t\treturn { ...list.tags[tagId], id: tagId }\n\t\t\t\t\t})\n\t\t\t\t\t?.filter((x): x is TagInfo => Boolean(x)) ?? []\n\t\t\tconst token = new WrappedTokenInfo(tokenInfo, tags)\n\t\t\tif (tokenMap[token.chainId][token.address] !== undefined)\n\t\t\t\tthrow Error('Duplicate tokens.')\n\t\t\treturn {\n\t\t\t\t...tokenMap,\n\t\t\t\t[token.chainId]: {\n\t\t\t\t\t...tokenMap[token.chainId],\n\t\t\t\t\t[token.address]: token,\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t\t{ ...EMPTY_LIST },\n\t)\n\tlistCache?.set(list, map)\n\treturn map\n}\n\nexport function useTokenList(url: string | undefined): TokenAddressMap {\n\tconst lists = useSelector((state) => state.lists.byUrl)\n\treturn useMemo(() => {\n\t\tif (!url) return EMPTY_LIST\n\t\tconst current = lists[url]?.current\n\t\tif (!current) return EMPTY_LIST\n\t\ttry {\n\t\t\treturn listToTokenMap(current)\n\t\t} catch (error) {\n\t\t\tconsole.error('Could not show token list due to error', error)\n\t\t\treturn EMPTY_LIST\n\t\t}\n\t}, [lists, url])\n}\n\nexport function useSelectedListUrl(): string | undefined {\n\treturn useSelector(\n\t\t(state) => state.lists.selectedListUrl,\n\t)\n}\n\nexport function useSelectedTokenList(): TokenAddressMap {\n\treturn useTokenList(useSelectedListUrl())\n}\n\nexport function useSelectedListInfo(): {\n\tcurrent: TokenList | null\n\tpending: TokenList | null\n\tloading: boolean\n} {\n\tconst selectedUrl = useSelectedListUrl()\n\tconst listsByUrl = useSelector(\n\t\t(state) => state.lists.byUrl,\n\t)\n\tconst list = selectedUrl ? listsByUrl[selectedUrl] : undefined\n\treturn {\n\t\tcurrent: list?.current ?? null,\n\t\tpending: list?.pendingUpdate ?? null,\n\t\tloading: list?.loadingRequestId !== null,\n\t}\n}\n\n// returns all downloaded current lists\nexport function useAllLists(): TokenList[] {\n\tconst lists = useSelector((state) => state.lists.byUrl)\n\n\treturn useMemo(\n\t\t() =>\n\t\t\tObject.keys(lists)\n\t\t\t\t.map((url) => lists[url].current)\n\t\t\t\t.filter((l): l is TokenList => Boolean(l)),\n\t\t[lists],\n\t)\n}\n","import { createAction } from '@reduxjs/toolkit'\n\nexport interface Call {\n\taddress: string\n\tcallData: string\n}\n\nconst ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/\nconst LOWER_HEX_REGEX = /^0x[a-f0-9]*$/\nexport function toCallKey(call: Call): string {\n\tif (!ADDRESS_REGEX.test(call.address)) {\n\t\tthrow new Error(`Invalid address: ${call.address}`)\n\t}\n\tif (!LOWER_HEX_REGEX.test(call.callData)) {\n\t\tthrow new Error(`Invalid hex: ${call.callData}`)\n\t}\n\treturn `${call.address}-${call.callData}`\n}\n\nexport function parseCallKey(callKey: string): Call {\n\tconst pcs = callKey.split('-')\n\tif (pcs.length !== 2) {\n\t\tthrow new Error(`Invalid call key: ${callKey}`)\n\t}\n\treturn {\n\t\taddress: pcs[0],\n\t\tcallData: pcs[1],\n\t}\n}\n\nexport interface ListenerOptions {\n\t// how often this data should be fetched, by default 1\n\treadonly blocksPerFetch?: number\n}\n\nexport const addMulticallListeners = createAction<{\n\tchainId: number\n\tcalls: Call[]\n\toptions?: ListenerOptions\n}>('multicall/addMulticallListeners')\nexport const removeMulticallListeners = createAction<{\n\tchainId: number\n\tcalls: Call[]\n\toptions?: ListenerOptions\n}>('multicall/removeMulticallListeners')\nexport const fetchingMulticallResults = createAction<{\n\tchainId: number\n\tcalls: Call[]\n\tfetchingBlockNumber: number\n}>('multicall/fetchingMulticallResults')\nexport const errorFetchingMulticallResults = createAction<{\n\tchainId: number\n\tcalls: Call[]\n\tfetchingBlockNumber: number\n}>('multicall/errorFetchingMulticallResults')\nexport const updateMulticallResults = createAction<{\n\tchainId: number\n\tblockNumber: number\n\tresults: {\n\t\t[callKey: string]: string | null\n\t}\n}>('multicall/updateMulticallResults')\n","import { Interface, FunctionFragment } from '@ethersproject/abi'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { Contract } from '@ethersproject/contracts'\nimport { useEffect, useMemo } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useActiveWeb3React } from '../../hooks'\nimport { useBlockNumber } from '../application/hooks'\nimport { AppDispatch, AppState } from '../index'\nimport {\n\taddMulticallListeners,\n\tCall,\n\tremoveMulticallListeners,\n\tparseCallKey,\n\ttoCallKey,\n\tListenerOptions,\n} from './actions'\n\nexport interface Result extends ReadonlyArray {\n\treadonly [key: string]: any\n}\n\ntype MethodArg = string | number | BigNumber\ntype MethodArgs = Array\n\ntype OptionalMethodInputs = Array | undefined\n\nfunction isMethodArg(x: unknown): x is MethodArg {\n\treturn ['string', 'number'].indexOf(typeof x) !== -1\n}\n\nfunction isValidMethodArgs(x: unknown): x is MethodArgs | undefined {\n\treturn (\n\t\tx === undefined ||\n\t\t(Array.isArray(x) &&\n\t\t\tx.every((xi) => isMethodArg(xi) || (Array.isArray(xi) && xi.every(isMethodArg))))\n\t)\n}\n\ninterface CallResult {\n\treadonly valid: boolean\n\treadonly data: string | undefined\n\treadonly blockNumber: number | undefined\n}\n\nconst INVALID_RESULT: CallResult = { valid: false, blockNumber: undefined, data: undefined }\n\n// use this options object\nexport const NEVER_RELOAD: ListenerOptions = {\n\tblocksPerFetch: Infinity,\n}\n\n// the lowest level call for subscribing to contract data\nfunction useCallsData(calls: (Call | undefined)[], options?: ListenerOptions): CallResult[] {\n\tconst { chainId } = useActiveWeb3React()\n\tconst callResults = useSelector(\n\t\t(state) => state.multicall.callResults,\n\t)\n\tconst dispatch = useDispatch()\n\n\tconst serializedCallKeys: string = useMemo(\n\t\t() =>\n\t\t\tJSON.stringify(\n\t\t\t\tcalls\n\t\t\t\t\t?.filter((c): c is Call => Boolean(c))\n\t\t\t\t\t?.map(toCallKey)\n\t\t\t\t\t?.sort() ?? [],\n\t\t\t),\n\t\t[calls],\n\t)\n\n\t// update listeners when there is an actual change that persists for at least 100ms\n\tuseEffect(() => {\n\t\tconst callKeys: string[] = JSON.parse(serializedCallKeys)\n\t\tif (!chainId || callKeys.length === 0) return undefined\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\tconst calls = callKeys.map((key) => parseCallKey(key))\n\t\tdispatch(\n\t\t\taddMulticallListeners({\n\t\t\t\tchainId,\n\t\t\t\tcalls,\n\t\t\t\toptions,\n\t\t\t}),\n\t\t)\n\n\t\treturn () => {\n\t\t\tdispatch(\n\t\t\t\tremoveMulticallListeners({\n\t\t\t\t\tchainId,\n\t\t\t\t\tcalls,\n\t\t\t\t\toptions,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}, [chainId, dispatch, options, serializedCallKeys])\n\n\treturn useMemo(\n\t\t() =>\n\t\t\t// @ts-ignore\n\t\t\tcalls.map((call) => {\n\t\t\t\tif (!chainId || !call) return INVALID_RESULT\n\n\t\t\t\tconst result = callResults[chainId]?.[toCallKey(call)]\n\t\t\t\tconst data = result?.data && result?.data !== '0x' ? result.data : null\n\n\t\t\t\treturn { valid: true, data, blockNumber: result?.blockNumber }\n\t\t\t}),\n\t\t[callResults, calls, chainId],\n\t)\n}\n\ninterface CallState {\n\treadonly valid: boolean\n\t// the result, or undefined if loading or errored/no data\n\treadonly result: Result | undefined\n\t// true if the result has never been fetched\n\treadonly loading: boolean\n\t// true if the result is not for the latest block\n\treadonly syncing: boolean\n\t// true if the call was made and is synced, but the return data is invalid\n\treadonly error: boolean\n}\n\nconst INVALID_CALL_STATE: CallState = {\n\tvalid: false,\n\tresult: undefined,\n\tloading: false,\n\tsyncing: false,\n\terror: false,\n}\nconst LOADING_CALL_STATE: CallState = {\n\tvalid: true,\n\tresult: undefined,\n\tloading: true,\n\tsyncing: true,\n\terror: false,\n}\n\nfunction toCallState(\n\tcallResult: CallResult | undefined,\n\tcontractInterface: Interface | undefined,\n\tfragment: FunctionFragment | undefined,\n\tlatestBlockNumber: number | undefined,\n): CallState {\n\tif (!callResult) return INVALID_CALL_STATE\n\tconst { valid, data, blockNumber } = callResult\n\tif (!valid) return INVALID_CALL_STATE\n\tif (valid && !blockNumber) return LOADING_CALL_STATE\n\tif (!contractInterface || !fragment || !latestBlockNumber) return LOADING_CALL_STATE\n\tconst success = data && data.length > 2\n\tconst syncing = (blockNumber ?? 0) < latestBlockNumber\n\tlet result: Result | undefined\n\tif (success && data) {\n\t\ttry {\n\t\t\tresult = contractInterface.decodeFunctionResult(fragment, data)\n\t\t} catch (error) {\n\t\t\tconsole.error('Result data parsing failed', fragment, data)\n\t\t\treturn {\n\t\t\t\tvalid: true,\n\t\t\t\tloading: false,\n\t\t\t\terror: true,\n\t\t\t\tsyncing,\n\t\t\t\tresult,\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tvalid: true,\n\t\tloading: false,\n\t\tsyncing,\n\t\tresult,\n\t\terror: !success,\n\t}\n}\n\nexport function useSingleContractMultipleData(\n\tcontract: Contract | null | undefined,\n\tmethodName: string,\n\tcallInputs: OptionalMethodInputs[],\n\toptions?: ListenerOptions,\n): CallState[] {\n\tconst fragment = useMemo(() => contract?.interface?.getFunction(methodName), [\n\t\tcontract,\n\t\tmethodName,\n\t])\n\n\tconst calls = useMemo(\n\t\t() =>\n\t\t\tcontract && fragment && callInputs && callInputs.length > 0\n\t\t\t\t? callInputs.map((inputs) => ({\n\t\t\t\t\t\taddress: contract.address,\n\t\t\t\t\t\tcallData: contract.interface.encodeFunctionData(fragment, inputs),\n\t\t\t\t }))\n\t\t\t\t: [],\n\t\t[callInputs, contract, fragment],\n\t)\n\n\tconst results = useCallsData(calls, options)\n\n\tconst latestBlockNumber = useBlockNumber()\n\n\treturn useMemo(\n\t\t() =>\n\t\t\tresults.map((result) =>\n\t\t\t\ttoCallState(result, contract?.interface, fragment, latestBlockNumber),\n\t\t\t),\n\t\t[fragment, contract, results, latestBlockNumber],\n\t)\n}\n\nexport function useMultipleContractSingleData(\n\taddresses: (string | undefined)[],\n\tcontractInterface: Interface,\n\tmethodName: string,\n\tcallInputs?: OptionalMethodInputs,\n\toptions?: ListenerOptions,\n): CallState[] {\n\tconst fragment = useMemo(() => contractInterface.getFunction(methodName), [\n\t\tcontractInterface,\n\t\tmethodName,\n\t])\n\tconst callData: string | undefined = useMemo(\n\t\t() =>\n\t\t\tfragment && isValidMethodArgs(callInputs)\n\t\t\t\t? contractInterface.encodeFunctionData(fragment, callInputs)\n\t\t\t\t: undefined,\n\t\t[callInputs, contractInterface, fragment],\n\t)\n\n\tconst calls = useMemo(\n\t\t() =>\n\t\t\tfragment && addresses && addresses.length > 0 && callData\n\t\t\t\t? addresses.map((address) =>\n\t\t\t\t\t\taddress && callData\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\taddress,\n\t\t\t\t\t\t\t\t\tcallData,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t )\n\t\t\t\t: [],\n\t\t[addresses, callData, fragment],\n\t)\n\n\tconst results = useCallsData(calls, options)\n\n\tconst latestBlockNumber = useBlockNumber()\n\n\treturn useMemo(\n\t\t() =>\n\t\t\tresults.map((result) =>\n\t\t\t\ttoCallState(result, contractInterface, fragment, latestBlockNumber),\n\t\t\t),\n\t\t[fragment, results, contractInterface, latestBlockNumber],\n\t)\n}\n\nexport function useSingleCallResult(\n\tcontract: Contract | null | undefined,\n\tmethodName: string,\n\tinputs?: OptionalMethodInputs,\n\toptions?: ListenerOptions,\n): CallState {\n\tconst fragment = useMemo(() => contract?.interface?.getFunction(methodName), [\n\t\tcontract,\n\t\tmethodName,\n\t])\n\n\tconst calls = useMemo(\n\t\t() =>\n\t\t\tcontract && fragment && isValidMethodArgs(inputs)\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taddress: contract.address,\n\t\t\t\t\t\t\tcallData: contract.interface.encodeFunctionData(fragment, inputs),\n\t\t\t\t\t\t},\n\t\t\t\t ]\n\t\t\t\t: [],\n\t\t[contract, fragment, inputs],\n\t)\n\n\tconst result = useCallsData(calls, options)[0]\n\tconst latestBlockNumber = useBlockNumber()\n\n\treturn useMemo(() => toCallState(result, contract?.interface, fragment, latestBlockNumber), [\n\t\tresult,\n\t\tcontract,\n\t\tfragment,\n\t\tlatestBlockNumber,\n\t])\n}\n","import { createAction } from '@reduxjs/toolkit'\n\nexport interface SerializedToken {\n\tchainId: number\n\taddress: string\n\tdecimals: number\n\tsymbol?: string\n\tname?: string\n}\n\nexport interface SerializedPair {\n\ttoken0: SerializedToken\n\ttoken1: SerializedToken\n}\n\nexport const updateMatchesDarkMode = createAction<{ matchesDarkMode: boolean }>(\n\t'user/updateMatchesDarkMode',\n)\nexport const updateUserDarkMode = createAction<{ userDarkMode: boolean }>('user/updateUserDarkMode')\nexport const updateUserExpertMode = createAction<{ userExpertMode: boolean }>(\n\t'user/updateUserExpertMode',\n)\nexport const updateUserSlippageTolerance = createAction<{ userSlippageTolerance: number }>(\n\t'user/updateUserSlippageTolerance',\n)\nexport const updateUserDeadline = createAction<{ userDeadline: number }>('user/updateUserDeadline')\nexport const addSerializedToken = createAction<{ serializedToken: SerializedToken }>(\n\t'user/addSerializedToken',\n)\nexport const removeSerializedToken = createAction<{ chainId: number; address: string }>(\n\t'user/removeSerializedToken',\n)\nexport const addSerializedPair = createAction<{ serializedPair: SerializedPair }>(\n\t'user/addSerializedPair',\n)\nexport const removeSerializedPair = createAction<{\n\tchainId: number\n\ttokenAAddress: string\n\ttokenBAddress: string\n}>('user/removeSerializedPair')\nexport const muteAudio = createAction('user/muteAudio')\nexport const unmuteAudio = createAction('user/unmuteAudio')\n","const CACHE_KEY = 'IS_DARK'\n\nexport function getThemeCache(): boolean | null {\n\tlet cache = null\n\ttry {\n\t\tconst rawCache = localStorage.getItem(CACHE_KEY)\n\t\tif (rawCache) {\n\t\t\tcache = JSON.parse(rawCache)\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n\n\treturn cache\n}\n\nexport function setThemeCache(isDark: boolean) {\n\ttry {\n\t\tlocalStorage.setItem(CACHE_KEY, JSON.stringify(isDark))\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n}\n","import { ChainId, Pair, Token } from 'sdk-hoosmartchain'\nimport flatMap from 'lodash.flatmap'\nimport { useCallback, useMemo } from 'react'\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux'\nimport { BASES_TO_TRACK_LIQUIDITY_FOR, PINNED_PAIRS } from '../../constants'\n\nimport { useActiveWeb3React } from '../../hooks'\n// eslint-disable-next-line import/no-cycle\nimport { useAllTokens } from '../../hooks/Tokens'\nimport { AppDispatch, AppState } from '../index'\nimport {\n\taddSerializedPair,\n\taddSerializedToken,\n\tremoveSerializedToken,\n\tSerializedPair,\n\tSerializedToken,\n\tupdateUserDarkMode,\n\tupdateUserDeadline,\n\tupdateUserExpertMode,\n\tupdateUserSlippageTolerance,\n\tmuteAudio,\n\tunmuteAudio,\n} from './actions'\nimport { setThemeCache } from '../../utils/theme'\n\nfunction serializeToken(token: Token): SerializedToken {\n\treturn {\n\t\tchainId: token.chainId,\n\t\taddress: token.address,\n\t\tdecimals: token.decimals,\n\t\tsymbol: token.symbol,\n\t\tname: token.name,\n\t}\n}\n\nfunction deserializeToken(serializedToken: SerializedToken): Token {\n\treturn new Token(\n\t\tserializedToken.chainId,\n\t\tserializedToken.address,\n\t\tserializedToken.decimals,\n\t\tserializedToken.symbol,\n\t\tserializedToken.name,\n\t)\n}\n\nexport function useIsDarkMode(): boolean {\n\tconst { userDarkMode, matchesDarkMode } = useSelector<\n\t\tAppState,\n\t\t{ userDarkMode: boolean | null; matchesDarkMode: boolean }\n\t>(\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\t({ user: { matchesDarkMode, userDarkMode } }) => ({\n\t\t\tuserDarkMode,\n\t\t\tmatchesDarkMode,\n\t\t}),\n\t\tshallowEqual,\n\t)\n\treturn userDarkMode === null ? matchesDarkMode : userDarkMode\n}\n\nexport function useDarkModeManager(): [boolean, () => void] {\n\tconst dispatch = useDispatch()\n\tconst { userDarkMode } = useSelector(\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\t({ user: { userDarkMode } }) => ({\n\t\t\tuserDarkMode,\n\t\t}),\n\t\tshallowEqual,\n\t)\n\tconst darkMode = useIsDarkMode()\n\n\tconst toggleSetDarkMode = useCallback(() => {\n\t\tsetThemeCache(!userDarkMode)\n\t\tdispatch(updateUserDarkMode({ userDarkMode: !userDarkMode }))\n\t}, [userDarkMode, dispatch])\n\n\treturn [darkMode, toggleSetDarkMode]\n}\n\nexport function useAudioModeManager(): [boolean, () => void] {\n\tconst dispatch = useDispatch()\n\tconst audioPlay = useSelector(\n\t\t(state) => state.user.audioPlay,\n\t)\n\tconst toggleSetAudioMode = useCallback(() => {\n\t\tif (audioPlay) {\n\t\t\tdispatch(muteAudio())\n\t\t} else {\n\t\t\tdispatch(unmuteAudio())\n\t\t}\n\t}, [audioPlay, dispatch])\n\n\treturn [audioPlay, toggleSetAudioMode]\n}\n\nexport function useIsExpertMode(): boolean {\n\treturn useSelector(\n\t\t(state) => state.user.userExpertMode,\n\t)\n}\n\nexport function useExpertModeManager(): [boolean, () => void] {\n\tconst dispatch = useDispatch()\n\tconst expertMode = useIsExpertMode()\n\n\tconst toggleSetExpertMode = useCallback(() => {\n\t\tdispatch(updateUserExpertMode({ userExpertMode: !expertMode }))\n\t}, [expertMode, dispatch])\n\n\treturn [expertMode, toggleSetExpertMode]\n}\n\nexport function useUserSlippageTolerance(): [number, (slippage: number) => void] {\n\tconst dispatch = useDispatch()\n\tconst userSlippageTolerance = useSelector(\n\t\t(state) => state.user.userSlippageTolerance,\n\t)\n\n\tconst setUserSlippageTolerance = useCallback(\n\t\t(slippageTolerance: number) => {\n\t\t\tdispatch(updateUserSlippageTolerance({ userSlippageTolerance: slippageTolerance }))\n\t\t},\n\t\t[dispatch],\n\t)\n\n\treturn [userSlippageTolerance, setUserSlippageTolerance]\n}\n\nexport function useUserDeadline(): [number, (slippage: number) => void] {\n\tconst dispatch = useDispatch()\n\tconst userDeadline = useSelector(\n\t\t(state) => state.user.userDeadline,\n\t)\n\n\tconst setUserDeadline = useCallback(\n\t\t(deadline: number) => {\n\t\t\tdispatch(updateUserDeadline({ userDeadline: deadline }))\n\t\t},\n\t\t[dispatch],\n\t)\n\n\treturn [userDeadline, setUserDeadline]\n}\n\nexport function useAddUserToken(): (token: Token) => void {\n\tconst dispatch = useDispatch()\n\treturn useCallback(\n\t\t(token: Token) => {\n\t\t\tdispatch(addSerializedToken({ serializedToken: serializeToken(token) }))\n\t\t},\n\t\t[dispatch],\n\t)\n}\n\nexport function useRemoveUserAddedToken(): (chainId: number, address: string) => void {\n\tconst dispatch = useDispatch()\n\treturn useCallback(\n\t\t(chainId: number, address: string) => {\n\t\t\tdispatch(removeSerializedToken({ chainId, address }))\n\t\t},\n\t\t[dispatch],\n\t)\n}\n\nexport function useUserAddedTokens(): Token[] {\n\tconst { chainId } = useActiveWeb3React()\n\tconst serializedTokensMap = useSelector(\n\t\t({ user: { tokens } }) => tokens,\n\t)\n\n\treturn useMemo(() => {\n\t\tif (!chainId) return []\n\t\treturn Object.values(serializedTokensMap[chainId as ChainId] ?? {}).map(deserializeToken)\n\t}, [serializedTokensMap, chainId])\n}\n\nfunction serializePair(pair: Pair): SerializedPair {\n\treturn {\n\t\ttoken0: serializeToken(pair.token0),\n\t\ttoken1: serializeToken(pair.token1),\n\t}\n}\n\nexport function usePairAdder(): (pair: Pair) => void {\n\tconst dispatch = useDispatch()\n\n\treturn useCallback(\n\t\t(pair: Pair) => {\n\t\t\tdispatch(addSerializedPair({ serializedPair: serializePair(pair) }))\n\t\t},\n\t\t[dispatch],\n\t)\n}\n\n/**\n * Given two tokens return the liquidity token that represents its liquidity shares\n * @param tokenA one of the two tokens\n * @param tokenB the other token\n */\nexport function toV2LiquidityToken([tokenA, tokenB]: [Token, Token]): Token {\n\treturn new Token(\n\t\ttokenA.chainId,\n\t\tPair.getAddress(tokenA, tokenB),\n\t\t18,\n\t\t'Foodcourt-LP',\n\t\t'Foodcourt LPs',\n\t)\n}\n\n/**\n * Returns all the pairs of tokens that are tracked by the user for the current chain ID.\n */\nexport function useTrackedTokenPairs(): [Token, Token][] {\n\tconst { chainId } = useActiveWeb3React()\n\tconst tokens = useAllTokens()\n\n\t// pinned pairs\n\tconst pinnedPairs = useMemo(() => (chainId ? PINNED_PAIRS[chainId] ?? [] : []), [chainId])\n\n\t// pairs for every token against every base\n\tconst generatedPairs: [Token, Token][] = useMemo(\n\t\t() =>\n\t\t\tchainId\n\t\t\t\t? flatMap(Object.keys(tokens), (tokenAddress) => {\n\t\t\t\t\t\tconst token = tokens[tokenAddress]\n\t\t\t\t\t\t// for each token on the current chain,\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t// loop though all bases on the current chain\n\t\t\t\t\t\t\t(BASES_TO_TRACK_LIQUIDITY_FOR[chainId] ?? [])\n\t\t\t\t\t\t\t\t// to construct pairs of the given token with each base\n\t\t\t\t\t\t\t\t.map((base) => {\n\t\t\t\t\t\t\t\t\tif (base.address === token.address) {\n\t\t\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn [base, token]\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.filter((p): p is [Token, Token] => p !== null)\n\t\t\t\t\t\t)\n\t\t\t\t })\n\t\t\t\t: [],\n\t\t[tokens, chainId],\n\t)\n\n\t// pairs saved by users\n\tconst savedSerializedPairs = useSelector(\n\t\t({ user: { pairs } }) => pairs,\n\t)\n\n\tconst userPairs: [Token, Token][] = useMemo(() => {\n\t\tif (!chainId || !savedSerializedPairs) return []\n\t\tconst forChain = savedSerializedPairs[chainId]\n\t\tif (!forChain) return []\n\n\t\treturn Object.keys(forChain).map((pairId) => [\n\t\t\tdeserializeToken(forChain[pairId].token0),\n\t\t\tdeserializeToken(forChain[pairId].token1),\n\t\t])\n\t}, [savedSerializedPairs, chainId])\n\n\tconst combinedList = useMemo(() => userPairs.concat(generatedPairs).concat(pinnedPairs), [\n\t\tgeneratedPairs,\n\t\tpinnedPairs,\n\t\tuserPairs,\n\t])\n\n\treturn useMemo(() => {\n\t\t// dedupes pairs of tokens in the combined list\n\t\tconst keyed = combinedList.reduce<{ [key: string]: [Token, Token] }>(\n\t\t\t(memo, [tokenA, tokenB]) => {\n\t\t\t\tconst sorted = tokenA.sortsBefore(tokenB)\n\t\t\t\tconst key = sorted\n\t\t\t\t\t? `${tokenA.address}:${tokenB.address}`\n\t\t\t\t\t: `${tokenB.address}:${tokenA.address}`\n\t\t\t\tif (memo[key]) return memo\n\t\t\t\tmemo[key] = sorted ? [tokenA, tokenB] : [tokenB, tokenA]\n\t\t\t\treturn memo\n\t\t\t},\n\t\t\t{},\n\t\t)\n\n\t\treturn Object.keys(keyed).map((key) => keyed[key])\n\t}, [combinedList])\n}\n","import { ChainId } from 'sdk-hoosmartchain'\nimport MULTICALL_ABI from './abi.json'\n\nconst MULTICALL_NETWORKS: { [chainId in ChainId]: string } = {\n\t[ChainId.MAINNET]: '0x22B0C9d9C97FD54576D4Bc93210e05c3C8549230', // TODO\n\t[ChainId.TESTNET]: '0x301907b5835a2d723Fe3e9E8C5Bc5375d5c1236A',\n}\n\nexport { MULTICALL_ABI, MULTICALL_NETWORKS }\n","import { Contract } from '@ethersproject/contracts'\nimport { ChainId, WETH } from 'sdk-hoosmartchain'\nimport { abi as IUniswapV2PairABI } from '@uniswap/v2-core/build/IUniswapV2Pair.json'\nimport { useMemo } from 'react'\nimport ENS_ABI from '../constants/abis/ens-registrar.json'\nimport ENS_PUBLIC_RESOLVER_ABI from '../constants/abis/ens-public-resolver.json'\nimport { ERC20_BYTES32_ABI } from '../constants/abis/erc20'\nimport ERC20_ABI from '../constants/abis/erc20.json'\nimport WETH_ABI from '../constants/abis/weth.json'\nimport WSAFETOKEN_ABI from '../constants/abis/wSafeToken.json'\nimport { MULTICALL_ABI, MULTICALL_NETWORKS } from '../constants/multicall'\nimport { getContract } from '../utils'\nimport { useActiveWeb3React } from './index'\n\n// returns null on errors\nfunction useContract(\n\taddress: string | undefined,\n\tABI: any,\n\twithSignerIfPossible = true,\n): Contract | null {\n\tconst { library, account } = useActiveWeb3React()\n\n\treturn useMemo(() => {\n\t\tif (!address || !ABI || !library) return null\n\t\ttry {\n\t\t\treturn getContract(\n\t\t\t\taddress,\n\t\t\t\tABI,\n\t\t\t\tlibrary,\n\t\t\t\twithSignerIfPossible && account ? account : undefined,\n\t\t\t)\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to get contract', error)\n\t\t\treturn null\n\t\t}\n\t}, [address, ABI, library, withSignerIfPossible, account])\n}\n\nexport function useTokenContract(\n\ttokenAddress?: string,\n\twithSignerIfPossible?: boolean,\n): Contract | null {\n\treturn useContract(tokenAddress, ERC20_ABI, withSignerIfPossible)\n}\n\nexport function useWETHContract(withSignerIfPossible?: boolean): Contract | null {\n\tconst { chainId } = useActiveWeb3React()\n\treturn useContract(chainId ? WETH[chainId].address : undefined, WETH_ABI, withSignerIfPossible)\n}\n\nexport function useWSafeTokenContract(\n\taddress: string,\n\twithSignerIfPossible?: boolean,\n): Contract | null {\n\treturn useContract(address, WSAFETOKEN_ABI, withSignerIfPossible)\n}\n\nexport function useENSRegistrarContract(withSignerIfPossible?: boolean): Contract | null {\n\tconst { chainId } = useActiveWeb3React()\n\tlet address: string | undefined\n\tif (chainId) {\n\t\tswitch (chainId) {\n\t\t\tcase ChainId.MAINNET:\n\t\t\tcase ChainId.TESTNET:\n\t\t}\n\t}\n\treturn useContract(address, ENS_ABI, withSignerIfPossible)\n}\n\nexport function useENSResolverContract(\n\taddress: string | undefined,\n\twithSignerIfPossible?: boolean,\n): Contract | null {\n\treturn useContract(address, ENS_PUBLIC_RESOLVER_ABI, withSignerIfPossible)\n}\n\nexport function useBytes32TokenContract(\n\ttokenAddress?: string,\n\twithSignerIfPossible?: boolean,\n): Contract | null {\n\treturn useContract(tokenAddress, ERC20_BYTES32_ABI, withSignerIfPossible)\n}\n\nexport function usePairContract(\n\tpairAddress?: string,\n\twithSignerIfPossible?: boolean,\n): Contract | null {\n\treturn useContract(pairAddress, IUniswapV2PairABI, withSignerIfPossible)\n}\n\nexport function useMulticallContract(): Contract | null {\n\tconst { chainId } = useActiveWeb3React()\n\treturn useContract(chainId && MULTICALL_NETWORKS[chainId], MULTICALL_ABI, false)\n}\n","import { parseBytes32String } from '@ethersproject/strings'\nimport { Currency, ETHER, Token, currencyEquals } from 'sdk-hoosmartchain'\nimport { useMemo } from 'react'\nimport { useSelectedTokenList, WrappedTokenInfo } from '../state/lists/hooks'\nimport { NEVER_RELOAD, useSingleCallResult } from '../state/multicall/hooks'\n// eslint-disable-next-line import/no-cycle\nimport { useUserAddedTokens } from '../state/user/hooks'\nimport { isAddress } from '../utils'\n\nimport { useActiveWeb3React } from './index'\nimport { useBytes32TokenContract, useTokenContract } from './useContract'\n\nconst TOKEN_INFO = {}\nconst SAFE = {}\nconst WSAFE = {}\nconst RSAFE = {}\n\nexport function tokenInfo(address): WrappedTokenInfo {\n\tif (!address) return null\n\treturn TOKEN_INFO[address]\n}\n\nexport function WSafe2Safe(wAddress): WrappedTokenInfo {\n\treturn SAFE[wAddress]\n}\n\nexport function Safe2WSafe(address): WrappedTokenInfo {\n\treturn WSAFE[address]\n}\n\nexport function WSafe2RSafe(wAddress): WrappedTokenInfo {\n\treturn RSAFE[wAddress]\n}\n\nexport function Safe2RSafe(address) {\n\treturn RSAFE[Safe2WSafe(address).address]\n}\n\nexport function useAllTokens(tokenMode = 'all'): { [address: string]: Token } {\n\tconst { chainId } = useActiveWeb3React()\n\tconst userAddedTokens = useUserAddedTokens()\n\tconst allTokens = useSelectedTokenList()\n\n\treturn useMemo(() => {\n\t\tif (!chainId) return {}\n\n\t\t// filter by tokenMode\n\t\tconst allChainTokens = { ...allTokens[chainId] }\n\t\tconst filteredTokens = {}\n\n\t\t// let fix safe dependency\n\t\tfor (const address in allChainTokens) {\n\t\t\tTOKEN_INFO[address] = allChainTokens[address]\n\n\t\t\tif (allChainTokens[address].tokenInfo.wSafeAddress) {\n\t\t\t\tWSAFE[address] = allChainTokens[allChainTokens[address].tokenInfo.wSafeAddress]\n\t\t\t\tSAFE[allChainTokens[address].tokenInfo.wSafeAddress] = allChainTokens[address]\n\t\t\t}\n\n\t\t\tif (allChainTokens[address].tokenInfo.rSafeAddress) {\n\t\t\t\tRSAFE[address] = allChainTokens[allChainTokens[address].tokenInfo.rSafeAddress]\n\t\t\t}\n\t\t}\n\n\t\t// console.log(tokenMode, allChainTokens)\n\n\t\tif (tokenMode === 'all') {\n\t\t\tfor (const address in allChainTokens) {\n\t\t\t\tif (\n\t\t\t\t\t!allChainTokens[address].tokenInfo.isSafeToken &&\n\t\t\t\t\t!allChainTokens[address].tokenInfo.isRSafeToken\n\t\t\t\t) {\n\t\t\t\t\tfilteredTokens[address] = allChainTokens[address]\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (tokenMode === 'safe') {\n\t\t\tfor (const address in allChainTokens) {\n\t\t\t\tif (\n\t\t\t\t\tallChainTokens[address].tokenInfo.isSafeToken ||\n\t\t\t\t\tallChainTokens[address].tokenInfo.isWSafeToken\n\t\t\t\t) {\n\t\t\t\t\tfilteredTokens[address] = allChainTokens[address]\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (tokenMode === 'safeonly') {\n\t\t\tfor (const address in allChainTokens) {\n\t\t\t\tif (allChainTokens[address].tokenInfo.isSafeToken) {\n\t\t\t\t\tfilteredTokens[address] = allChainTokens[address]\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (tokenMode === 'wSafe') {\n\t\t\tfor (const address in allChainTokens) {\n\t\t\t\tif (allChainTokens[address].tokenInfo.isWSafeToken) {\n\t\t\t\t\tfilteredTokens[address] = allChainTokens[address]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\tuserAddedTokens\n\t\t\t\t// reduce into all ALL_TOKENS filtered by the current chain\n\t\t\t\t.reduce<{ [address: string]: Token }>(\n\t\t\t\t\t(tokenMap, token) => {\n\t\t\t\t\t\ttokenMap[token.address] = token\n\t\t\t\t\t\treturn tokenMap\n\t\t\t\t\t},\n\t\t\t\t\t// must make a copy because reduce modifies the map, and we do not\n\t\t\t\t\t// want to make a copy in every iteration\n\t\t\t\t\t{ ...filteredTokens },\n\t\t\t\t)\n\t\t)\n\t}, [chainId, userAddedTokens, allTokens])\n}\n\n// Check if currency is included in custom list from user storage\nexport function useIsUserAddedToken(currency: Currency): boolean {\n\tconst userAddedTokens = useUserAddedTokens()\n\treturn !!userAddedTokens.find((token) => currencyEquals(currency, token))\n}\n\n// parse a name or symbol from a token response\nconst BYTES32_REGEX = /^0x[a-fA-F0-9]{64}$/\nfunction parseStringOrBytes32(\n\tstr: string | undefined,\n\tbytes32: string | undefined,\n\tdefaultValue: string,\n): string {\n\treturn str && str.length > 0\n\t\t? str\n\t\t: bytes32 && BYTES32_REGEX.test(bytes32)\n\t\t? parseBytes32String(bytes32)\n\t\t: defaultValue\n}\n\n// undefined if invalid or does not exist\n// null if loading\n// otherwise returns the token\nexport function useToken(tokenAddress?: string): Token | undefined | null {\n\tconst { chainId } = useActiveWeb3React()\n\tconst tokens = useAllTokens()\n\n\tconst address = isAddress(tokenAddress)\n\n\tconst tokenContract = useTokenContract(address || undefined, false)\n\tconst tokenContractBytes32 = useBytes32TokenContract(address || undefined, false)\n\tconst token: Token | undefined = address ? tokens[address] : undefined\n\n\tconst tokenName = useSingleCallResult(\n\t\ttoken ? undefined : tokenContract,\n\t\t'name',\n\t\tundefined,\n\t\tNEVER_RELOAD,\n\t)\n\tconst tokenNameBytes32 = useSingleCallResult(\n\t\ttoken ? undefined : tokenContractBytes32,\n\t\t'name',\n\t\tundefined,\n\t\tNEVER_RELOAD,\n\t)\n\tconst symbol = useSingleCallResult(\n\t\ttoken ? undefined : tokenContract,\n\t\t'symbol',\n\t\tundefined,\n\t\tNEVER_RELOAD,\n\t)\n\tconst symbolBytes32 = useSingleCallResult(\n\t\ttoken ? undefined : tokenContractBytes32,\n\t\t'symbol',\n\t\tundefined,\n\t\tNEVER_RELOAD,\n\t)\n\tconst decimals = useSingleCallResult(\n\t\ttoken ? undefined : tokenContract,\n\t\t'decimals',\n\t\tundefined,\n\t\tNEVER_RELOAD,\n\t)\n\n\treturn useMemo(() => {\n\t\tif (token) return token\n\t\tif (!chainId || !address) return undefined\n\t\tif (decimals.loading || symbol.loading || tokenName.loading) return null\n\t\tif (decimals.result) {\n\t\t\treturn new Token(\n\t\t\t\tchainId,\n\t\t\t\taddress,\n\t\t\t\tdecimals.result[0],\n\t\t\t\tparseStringOrBytes32(symbol.result?.[0], symbolBytes32.result?.[0], 'UNKNOWN'),\n\t\t\t\tparseStringOrBytes32(\n\t\t\t\t\ttokenName.result?.[0],\n\t\t\t\t\ttokenNameBytes32.result?.[0],\n\t\t\t\t\t'Unknown Token',\n\t\t\t\t),\n\t\t\t)\n\t\t}\n\t\treturn undefined\n\t}, [\n\t\taddress,\n\t\tchainId,\n\t\tdecimals.loading,\n\t\tdecimals.result,\n\t\tsymbol.loading,\n\t\tsymbol.result,\n\t\tsymbolBytes32.result,\n\t\ttoken,\n\t\ttokenName.loading,\n\t\ttokenName.result,\n\t\ttokenNameBytes32.result,\n\t])\n}\n\nexport function useCurrency(currencyId: string | undefined): Currency | null | undefined {\n\tconst isBNB = currencyId?.toUpperCase() === 'BNB'\n\tconst token = useToken(isBNB ? undefined : currencyId)\n\treturn isBNB ? ETHER : token\n}\n","import { Currency, CurrencyAmount, ETHER, JSBI, Token, TokenAmount } from 'sdk-hoosmartchain'\nimport { useMemo } from 'react'\nimport ERC20_INTERFACE from '../../constants/abis/erc20'\nimport { useAllTokens } from '../../hooks/Tokens'\nimport { useActiveWeb3React } from '../../hooks'\nimport { useMulticallContract } from '../../hooks/useContract'\nimport { isAddress } from '../../utils'\nimport { useSingleContractMultipleData, useMultipleContractSingleData } from '../multicall/hooks'\n\n/**\n * Returns a map of the given addresses to their eventually consistent ETH balances.\n */\nexport function useETHBalances(\n\tuncheckedAddresses?: (string | undefined)[],\n): { [address: string]: CurrencyAmount | undefined } {\n\tconst multicallContract = useMulticallContract()\n\n\tconst addresses: string[] = useMemo(\n\t\t() =>\n\t\t\tuncheckedAddresses\n\t\t\t\t? uncheckedAddresses\n\t\t\t\t\t\t.map(isAddress)\n\t\t\t\t\t\t.filter((a): a is string => a !== false)\n\t\t\t\t\t\t.sort()\n\t\t\t\t: [],\n\t\t[uncheckedAddresses],\n\t)\n\n\tconst results = useSingleContractMultipleData(\n\t\tmulticallContract,\n\t\t'getEthBalance',\n\t\taddresses.map((address) => [address]),\n\t)\n\n\treturn useMemo(\n\t\t() =>\n\t\t\taddresses.reduce<{ [address: string]: CurrencyAmount }>((memo, address, i) => {\n\t\t\t\tconst value = results?.[i]?.result?.[0]\n\t\t\t\tif (value) memo[address] = CurrencyAmount.ether(JSBI.BigInt(value.toString()))\n\t\t\t\treturn memo\n\t\t\t}, {}),\n\t\t[addresses, results],\n\t)\n}\n\n/**\n * Returns a map of token addresses to their eventually consistent token balances for a single account.\n */\nexport function useTokenBalancesWithLoadingIndicator(\n\taddress?: string,\n\ttokens?: (Token | undefined)[],\n): [{ [tokenAddress: string]: TokenAmount | undefined }, boolean] {\n\tconst validatedTokens: Token[] = useMemo(\n\t\t() => tokens?.filter((t?: Token): t is Token => isAddress(t?.address) !== false) ?? [],\n\t\t[tokens],\n\t)\n\n\tconst validatedTokenAddresses = useMemo(() => validatedTokens.map((vt) => vt.address), [\n\t\tvalidatedTokens,\n\t])\n\n\tconst balances = useMultipleContractSingleData(\n\t\tvalidatedTokenAddresses,\n\t\tERC20_INTERFACE,\n\t\t'balanceOf',\n\t\t[address],\n\t)\n\n\tconst anyLoading: boolean = useMemo(() => balances.some((callState) => callState.loading), [\n\t\tbalances,\n\t])\n\n\treturn [\n\t\tuseMemo(\n\t\t\t() =>\n\t\t\t\taddress && validatedTokens.length > 0\n\t\t\t\t\t? validatedTokens.reduce<{ [tokenAddress: string]: TokenAmount | undefined }>(\n\t\t\t\t\t\t\t(memo, token, i) => {\n\t\t\t\t\t\t\t\tconst value = balances?.[i]?.result?.[0]\n\t\t\t\t\t\t\t\tconst amount = value ? JSBI.BigInt(value.toString()) : undefined\n\t\t\t\t\t\t\t\tif (amount) {\n\t\t\t\t\t\t\t\t\tmemo[token.address] = new TokenAmount(token, amount)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn memo\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t )\n\t\t\t\t\t: {},\n\t\t\t[address, validatedTokens, balances],\n\t\t),\n\t\tanyLoading,\n\t]\n}\n\nexport function useTokenBalances(\n\taddress?: string,\n\ttokens?: (Token | undefined)[],\n): { [tokenAddress: string]: TokenAmount | undefined } {\n\treturn useTokenBalancesWithLoadingIndicator(address, tokens)[0]\n}\n\n// get the balance for a single token/account combo\nexport function useTokenBalance(account?: string, token?: Token): TokenAmount | undefined {\n\tconst tokenBalances = useTokenBalances(account, [token])\n\tif (!token) return undefined\n\treturn tokenBalances[token.address]\n}\n\nexport function useCurrencyBalances(\n\taccount?: string,\n\tcurrencies?: (Currency | undefined)[],\n): (CurrencyAmount | undefined)[] {\n\tconst tokens = useMemo(\n\t\t() => currencies?.filter((currency): currency is Token => currency instanceof Token) ?? [],\n\t\t[currencies],\n\t)\n\n\tconst tokenBalances = useTokenBalances(account, tokens)\n\tconst containsETH: boolean = useMemo(\n\t\t() => currencies?.some((currency) => currency === ETHER) ?? false,\n\t\t[currencies],\n\t)\n\tconst ethBalance = useETHBalances(containsETH ? [account] : [])\n\n\treturn useMemo(\n\t\t() =>\n\t\t\tcurrencies?.map((currency) => {\n\t\t\t\tif (!account || !currency) return undefined\n\t\t\t\tif (currency instanceof Token) return tokenBalances[currency.address]\n\t\t\t\tif (currency === ETHER) return ethBalance[account]\n\t\t\t\treturn undefined\n\t\t\t}) ?? [],\n\t\t[account, currencies, ethBalance, tokenBalances],\n\t)\n}\n\nexport function useCurrencyBalance(\n\taccount?: string,\n\tcurrency?: Currency,\n): CurrencyAmount | undefined {\n\treturn useCurrencyBalances(account, [currency])[0]\n}\n\n// mimics useAllBalances\nexport function useAllTokenBalances(): { [tokenAddress: string]: TokenAmount | undefined } {\n\tconst { account } = useActiveWeb3React()\n\tconst allTokens = useAllTokens()\n\tconst allTokensArray = useMemo(() => Object.values(allTokens ?? {}), [allTokens])\n\tconst balances = useTokenBalances(account ?? undefined, allTokensArray)\n\treturn balances ?? {}\n}\n","import { useEffect, useState } from 'react'\n\n/**\n * Returns the last value of type T that passes a filter function\n * @param value changing value\n * @param filterFn function that determines whether a given value should be considered for the last value\n */\nexport default function useLast(\n\tvalue: T | undefined | null,\n\tfilterFn?: (value: T | null | undefined) => boolean,\n): T | null | undefined {\n\tconst [last, setLast] = useState(\n\t\tfilterFn && filterFn(value) ? value : undefined,\n\t)\n\tuseEffect(() => {\n\t\tsetLast((prev) => {\n\t\t\tconst shouldUse: boolean = filterFn ? filterFn(value) : true\n\t\t\tif (shouldUse) return value\n\t\t\treturn prev\n\t\t})\n\t}, [filterFn, value])\n\treturn last\n}\n\nfunction isDefined(x: T | null | undefined): x is T {\n\treturn x !== null && x !== undefined\n}\n\n/**\n * Returns the last truthy value of type T\n * @param value changing value\n */\nexport function useLastTruthy(value: T | undefined | null): T | null | undefined {\n\treturn useLast(value, isDefined)\n}\n","import CID from 'cids'\nimport { getCodec, rmPrefix } from 'multicodec'\nimport { decode, toB58String } from 'multihashes'\n\nexport function hexToUint8Array(hex: string): Uint8Array {\n\thex = hex.startsWith('0x') ? hex.substr(2) : hex\n\tif (hex.length % 2 !== 0) throw new Error('hex must have length that is multiple of 2')\n\tconst arr = new Uint8Array(hex.length / 2)\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tarr[i] = parseInt(hex.substr(i * 2, 2), 16)\n\t}\n\treturn arr\n}\n\nconst UTF_8_DECODER = new TextDecoder()\n\n/**\n * Returns the URI representation of the content hash for supported codecs\n * @param contenthash to decode\n */\nexport default function contenthashToUri(contenthash: string): string {\n\tconst buff = hexToUint8Array(contenthash)\n\tconst codec = getCodec(buff as Buffer) // the typing is wrong for @types/multicodec\n\tswitch (codec) {\n\t\tcase 'ipfs-ns': {\n\t\t\tconst data = rmPrefix(buff as Buffer)\n\t\t\tconst cid = new CID(data)\n\t\t\treturn `ipfs://${toB58String(cid.multihash)}`\n\t\t}\n\t\tcase 'ipns-ns': {\n\t\t\tconst data = rmPrefix(buff as Buffer)\n\t\t\tconst cid = new CID(data)\n\t\t\tconst multihash = decode(cid.multihash)\n\t\t\tif (multihash.name === 'identity') {\n\t\t\t\treturn `ipns://${UTF_8_DECODER.decode(multihash.digest).trim()}`\n\t\t\t}\n\t\t\treturn `ipns://${toB58String(cid.multihash)}`\n\t\t}\n\t\tdefault:\n\t\t\tthrow new Error(`Unrecognized codec: ${codec}`)\n\t}\n}\n","const ENS_NAME_REGEX = /^(([a-zA-Z0-9]+\\.)+)eth(\\/.*)?$/\n\nexport function parseENSAddress(\n\tensAddress: string,\n): { ensName: string; ensPath: string | undefined } | undefined {\n\tconst match = ensAddress.match(ENS_NAME_REGEX)\n\tif (!match) return undefined\n\treturn { ensName: `${match[1].toLowerCase()}eth`, ensPath: match[3] }\n}\n\nexport default parseENSAddress\n","/**\n * Given a URI that may be ipfs, ipns, http, or https protocol, return the fetch-able http(s) URLs for the same content\n * @param uri to convert to fetch-able http url\n */\nexport default function uriToHttp(uri: string): string[] {\n\tconst protocol = uri.split(':')[0].toLowerCase()\n\tswitch (protocol) {\n\t\tcase 'https':\n\t\t\treturn [uri]\n\t\tcase 'http':\n\t\t\treturn [`https${uri.substr(4)}`, uri]\n\t\tcase 'ipfs':\n\t\t\tconst hash = uri.match(/^ipfs:(\\/\\/)?(.*)$/i)?.[2]\n\t\t\treturn [`https://cloudflare-ipfs.com/ipfs/${hash}/`, `https://ipfs.io/ipfs/${hash}/`]\n\t\tcase 'ipns':\n\t\t\tconst name = uri.match(/^ipns:(\\/\\/)?(.*)$/i)?.[2]\n\t\t\treturn [`https://cloudflare-ipfs.com/ipns/${name}/`, `https://ipfs.io/ipns/${name}/`]\n\t\tdefault:\n\t\t\treturn []\n\t}\n}\n","/**\n * Returns true if the string value is zero in hex\n * @param hexNumberString\n */\nexport default function isZero(hexNumberString: string) {\n\treturn /^0x0*$/.test(hexNumberString)\n}\n","import { useMemo } from 'react'\nimport contenthashToUri from '../utils/contenthashToUri'\nimport { parseENSAddress } from '../utils/parseENSAddress'\nimport uriToHttp from '../utils/uriToHttp'\nimport useENSContentHash from './useENSContentHash'\n\nexport default function useHttpLocations(uri: string | undefined): string[] {\n\tconst ens = useMemo(() => (uri ? parseENSAddress(uri) : undefined), [uri])\n\tconst resolvedContentHash = useENSContentHash(ens?.ensName)\n\treturn useMemo(() => {\n\t\tif (ens) {\n\t\t\treturn resolvedContentHash.contenthash\n\t\t\t\t? uriToHttp(contenthashToUri(resolvedContentHash.contenthash))\n\t\t\t\t: []\n\t\t}\n\t\treturn uri ? uriToHttp(uri) : []\n\t}, [ens, resolvedContentHash.contenthash, uri])\n}\n","import { namehash } from 'ethers/lib/utils'\nimport { useMemo } from 'react'\nimport { useSingleCallResult } from '../state/multicall/hooks'\nimport isZero from '../utils/isZero'\nimport { useENSRegistrarContract, useENSResolverContract } from './useContract'\n\n/**\n * Does a lookup for an ENS name to find its contenthash.\n */\nexport default function useENSContentHash(\n\tensName?: string | null,\n): { loading: boolean; contenthash: string | null } {\n\tconst ensNodeArgument = useMemo(() => {\n\t\tif (!ensName) return [undefined]\n\t\ttry {\n\t\t\treturn ensName ? [namehash(ensName)] : [undefined]\n\t\t} catch (error) {\n\t\t\treturn [undefined]\n\t\t}\n\t}, [ensName])\n\tconst registrarContract = useENSRegistrarContract(false)\n\tconst resolverAddressResult = useSingleCallResult(\n\t\tregistrarContract,\n\t\t'resolver',\n\t\tensNodeArgument,\n\t)\n\tconst resolverAddress = resolverAddressResult.result?.[0]\n\tconst resolverContract = useENSResolverContract(\n\t\tresolverAddress && isZero(resolverAddress) ? undefined : resolverAddress,\n\t\tfalse,\n\t)\n\tconst contenthash = useSingleCallResult(resolverContract, 'contenthash', ensNodeArgument)\n\n\treturn {\n\t\tcontenthash: contenthash.result?.[0] ?? null,\n\t\tloading: resolverAddressResult.loading || contenthash.loading,\n\t}\n}\n","import React, { useState } from 'react'\nimport { HelpCircle } from 'react-feather'\n\nconst BAD_SRCS: { [tokenAddress: string]: true } = {}\n\nexport interface LogoProps {\n\talt?: string\n\tstyle?: any\n\tclassName?: string\n\tsrcs: string[]\n}\n\n/**\n * Renders an image by sequentially trying a list of URIs, and then eventually a fallback triangle alert\n */\nexport default function Logo({ srcs, alt, ...rest }: LogoProps) {\n\tconst [, refresh] = useState(0)\n\n\tconst src: string | undefined = srcs.find((s) => !BAD_SRCS[s])\n\n\tif (src) {\n\t\treturn (\n\t\t\t {\n\t\t\t\t\tif (src) BAD_SRCS[src] = true\n\t\t\t\t\trefresh((i) => i + 1)\n\t\t\t\t}}\n\t\t\t/>\n\t\t)\n\t}\n\n\treturn \n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport useHttpLocations from '../../hooks/useHttpLocations'\n\nimport Logo from '../Logo'\n\nconst StyledListLogo = styled(Logo)<{ size: string }>`\n\twidth: ${({ size }) => size};\n\theight: ${({ size }) => size};\n`\n\nexport default function ListLogo({\n\tlogoURI,\n\tstyle,\n\tsize = '24px',\n\talt,\n}: {\n\tlogoURI: string\n\tsize?: string\n\tstyle?: React.CSSProperties\n\talt?: string\n}) {\n\tconst srcs: string[] = useHttpLocations(logoURI)\n\n\treturn \n}\n","import { useEffect, useRef } from 'react'\n\nexport default function useInterval(callback: () => void, delay: null | number, leading = true) {\n\tconst savedCallback = useRef<() => void>()\n\n\t// Remember the latest callback.\n\tuseEffect(() => {\n\t\tsavedCallback.current = callback\n\t}, [callback])\n\n\t// Set up the interval.\n\tuseEffect(() => {\n\t\tfunction tick() {\n\t\t\tconst { current } = savedCallback\n\t\t\tif (current) {\n\t\t\t\tcurrent()\n\t\t\t}\n\t\t}\n\n\t\tif (delay !== null) {\n\t\t\tif (leading) tick()\n\t\t\tconst id = setInterval(tick, delay)\n\t\t\treturn () => clearInterval(id)\n\t\t}\n\t\treturn undefined\n\t}, [delay, leading])\n}\n","import { Placement } from '@popperjs/core'\nimport { transparentize } from 'polished'\nimport React, { useCallback, useState } from 'react'\nimport { usePopper } from 'react-popper'\nimport styled from 'styled-components'\nimport Portal from '@reach/portal'\nimport useInterval from '../../hooks/useInterval'\n\nconst PopoverContainer = styled.div<{ show: boolean }>`\n\tz-index: 9999;\n\n\tvisibility: ${(props) => (props.show ? 'visible' : 'hidden')};\n\topacity: ${(props) => (props.show ? 1 : 0)};\n\ttransition: visibility 150ms linear, opacity 150ms linear;\n\n\tbackground: ${({ theme }) => theme.colors.invertedContrast};\n\tborder: 1px solid ${({ theme }) => theme.colors.tertiary};\n\tbox-shadow: 0 4px 8px 0 ${transparentize(0.9, '#2F80ED')};\n\tcolor: ${({ theme }) => theme.colors.textSubtle};\n\tborder-radius: 8px;\n`\n\nconst ReferenceElement = styled.div`\n\tdisplay: inline-block;\n`\n\nconst Arrow = styled.div`\n\twidth: 8px;\n\theight: 8px;\n\tz-index: 9998;\n\n\t::before {\n\t\tposition: absolute;\n\t\twidth: 8px;\n\t\theight: 8px;\n\t\tz-index: 9998;\n\n\t\tcontent: '';\n\t\tborder: 1px solid ${({ theme }) => theme.colors.tertiary};\n\t\ttransform: rotate(45deg);\n\t\tbackground: ${({ theme }) => theme.colors.invertedContrast};\n\t}\n\n\t&.arrow-top {\n\t\tbottom: -5px;\n\t\t::before {\n\t\t\tborder-top: none;\n\t\t\tborder-left: none;\n\t\t}\n\t}\n\n\t&.arrow-bottom {\n\t\ttop: -5px;\n\t\t::before {\n\t\t\tborder-bottom: none;\n\t\t\tborder-right: none;\n\t\t}\n\t}\n\n\t&.arrow-left {\n\t\tright: -5px;\n\n\t\t::before {\n\t\t\tborder-bottom: none;\n\t\t\tborder-left: none;\n\t\t}\n\t}\n\n\t&.arrow-right {\n\t\tleft: -5px;\n\t\t::before {\n\t\t\tborder-right: none;\n\t\t\tborder-top: none;\n\t\t}\n\t}\n`\n\nexport interface PopoverProps {\n\tcontent: React.ReactNode\n\tshow: boolean\n\tchildren: React.ReactNode\n\tplacement?: Placement\n}\n\nexport default function Popover({ content, show, children, placement = 'auto' }: PopoverProps) {\n\tconst [referenceElement, setReferenceElement] = useState(null)\n\tconst [popperElement, setPopperElement] = useState(null)\n\tconst [arrowElement, setArrowElement] = useState(null)\n\tconst { styles, update, attributes } = usePopper(referenceElement, popperElement, {\n\t\tplacement,\n\t\tstrategy: 'fixed',\n\t\tmodifiers: [\n\t\t\t{ name: 'offset', options: { offset: [8, 8] } },\n\t\t\t{ name: 'arrow', options: { element: arrowElement } },\n\t\t],\n\t})\n\tconst updateCallback = useCallback(() => {\n\t\tif (update) {\n\t\t\tupdate()\n\t\t}\n\t}, [update])\n\tuseInterval(updateCallback, show ? 100 : null)\n\n\treturn (\n\t\t<>\n\t\t\t{children}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{content}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import React, { useCallback, useState } from 'react'\nimport styled from 'styled-components'\nimport Popover, { PopoverProps } from '../Popover'\n\nconst TooltipContainer = styled.div`\n\twidth: 228px;\n\tpadding: 0.6rem 1rem;\n\tline-height: 150%;\n\tfont-weight: 400;\n`\n\ninterface TooltipProps extends Omit {\n\ttext: string\n}\n\nexport default function Tooltip({ text, ...rest }: TooltipProps) {\n\treturn {text}} {...rest} />\n}\n\nexport function MouseoverTooltip({ children, ...rest }: Omit) {\n\tconst [show, setShow] = useState(false)\n\tconst open = useCallback(() => setShow(true), [setShow])\n\tconst close = useCallback(() => setShow(false), [setShow])\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t{children}\n\t\t\t
\n\t\t
\n\t)\n}\n","import React, { useCallback, useState } from 'react'\nimport { HelpCircle as Question } from 'react-feather'\nimport styled from 'styled-components'\nimport Tooltip from '../Tooltip'\n\nconst QuestionWrapper = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0.2rem;\n\tborder: none;\n\tbackground: none;\n\toutline: none;\n\tcursor: default;\n\tborder-radius: 36px;\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n\tcolor: ${({ theme }) => theme.colors.textSubtle};\n\n\t:hover,\n\t:focus {\n\t\topacity: 0.7;\n\t}\n`\n\nexport default function QuestionHelper({ text }: { text: string }) {\n\tconst [show, setShow] = useState(false)\n\n\tconst open = useCallback(() => setShow(true), [setShow])\n\tconst close = useCallback(() => setShow(false), [setShow])\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import styled from 'styled-components'\nimport Logo from '../Logo'\n\nconst CoinLogo = styled(Logo)<{ size: string }>`\n\twidth: ${({ size }) => size};\n\theight: ${({ size }) => size};\n`\n\nexport default CoinLogo\n","import { Currency, ETHER, Token } from 'sdk-hoosmartchain'\nimport React, { useMemo } from 'react'\nimport styled from 'styled-components'\nimport useHttpLocations from '../../hooks/useHttpLocations'\nimport { WrappedTokenInfo } from '../../state/lists/hooks'\nimport Logo from '../Logo'\nimport CoinLogo from '../pancake/CoinLogo'\n\nconst getTokenLogoURL = (address: string) =>\n\t// `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/assets/${address}/logo.png`\n\t`https://cdn.kururu.finance/coins/eth/56/${(address || '_').toLowerCase()}`\n\nconst StyledBnbLogo = styled.img<{ size: string }>`\n width: ${({ size }) => size};\n height: ${({ size }) => size};\n box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.075);\n border-radius: 24px;\n`\n\nconst StyledLogo = styled(Logo) <{ size: string }>`\n width: ${({ size }) => size};\n height: ${({ size }) => size};\n`\n\nexport default function CurrencyLogo({\n\t currency,\n\t size = '24px',\n\t style,\n }: {\n\tcurrency?: Currency\n\tsize?: string\n\tstyle?: React.CSSProperties\n}) {\n\tconst srcs: string[] = useMemo(() => {\n\t\tif (currency === ETHER) return []\n\n\t\tif (currency instanceof Token) {\n\t\t\treturn [\n\t\t\t\tgetTokenLogoURL(currency.address),\n\t\t\t]\n\t\t}\n\t\treturn []\n\t}, [currency])\n\n\tif (currency === ETHER) {\n\t\treturn \n\t}\n\n\treturn (currency as any)?.symbol ? (\n\t\t\n\t) : (\n\t\t\n\t)\n}\n","import React from 'react'\nimport { Text } from '../../uikit-foodcourt'\nimport { ChainId, Currency, currencyEquals, ETHER, Token } from 'sdk-hoosmartchain'\nimport styled from 'styled-components'\n\nimport useI18n from 'hooks/useI18n'\nimport { SUGGESTED_BASES } from '../../constants'\nimport { AutoColumn } from '../Column'\nimport QuestionHelper from '../QuestionHelper'\nimport { AutoRow } from '../Row'\nimport CurrencyLogo from '../CurrencyLogo'\n\nconst BaseWrapper = styled.div<{ disable?: boolean }>`\n\tborder: 1px solid ${({ theme, disable }) => (disable ? 'transparent' : theme.colors.tertiary)};\n\tborder-radius: 10px;\n\tdisplay: flex;\n\tpadding: 6px;\n\n\talign-items: center;\n\t:hover {\n\t\tcursor: ${({ disable }) => !disable && 'pointer'};\n\t\tbackground-color: ${({ theme, disable }) => !disable && theme.colors.invertedContrast};\n\t}\n\n\tbackground-color: ${({ theme, disable }) => disable && theme.colors.tertiary};\n\topacity: ${({ disable }) => disable && '0.4'};\n`\n\nexport default function CommonBases({\n\tchainId,\n\tonSelect,\n\tselectedCurrency,\n}: {\n\tchainId?: ChainId\n\tselectedCurrency?: Currency | null\n\tonSelect: (currency: Currency) => void\n}) {\n\tconst TranslateString = useI18n()\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tCommon bases\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tif (!selectedCurrency || !currencyEquals(selectedCurrency, ETHER)) {\n\t\t\t\t\t\t\tonSelect(ETHER)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tdisable={selectedCurrency === ETHER}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\tBNB\n\t\t\t\t\n\t\t\t\t{(chainId ? SUGGESTED_BASES[chainId] : []).map((token: Token) => {\n\t\t\t\t\tconst selected =\n\t\t\t\t\t\tselectedCurrency instanceof Token &&\n\t\t\t\t\t\tselectedCurrency.address === token.address\n\t\t\t\t\treturn (\n\t\t\t\t\t\t !selected && onSelect(token)}\n\t\t\t\t\t\t\tdisable={selected}\n\t\t\t\t\t\t\tkey={token.address}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{token.symbol}\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t\n\t\t\n\t)\n}\n","import styled from 'styled-components'\nimport { AutoColumn } from '../Column'\nimport { RowBetween, RowFixed } from '../Row'\n\nexport const FadedSpan = styled(RowFixed)`\n\tcolor: ${({ theme }) => theme.colors.primary};\n\tfont-size: 14px;\n`\n\nexport const PaddedColumn = styled(AutoColumn)`\n\tpadding: 20px;\n\tpadding-bottom: 12px;\n`\n\nexport const MenuItem = styled(RowBetween)`\n\tpadding: 4px 20px;\n\theight: 56px;\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(auto, 1fr) auto minmax(0, 72px);\n\tgrid-gap: 16px;\n\tcursor: ${({ disabled }) => !disabled && 'pointer'};\n\tpointer-events: ${({ disabled }) => disabled && 'none'};\n\t:hover {\n\t\tbackground-color: ${({ theme, disabled }) => !disabled && theme.colors.invertedContrast};\n\t}\n\topacity: ${({ disabled, selected }) => (disabled || selected ? 0.5 : 1)};\n`\n\nexport const SearchInput = styled.input`\n\tposition: relative;\n\tdisplay: flex;\n\tpadding: 16px;\n\talign-items: center;\n\twidth: 100%;\n\twhite-space: nowrap;\n\tbackground: none;\n\tborder: none;\n\toutline: none;\n\tborder-radius: 20px;\n\tcolor: ${({ theme }) => theme.colors.text};\n\tborder-style: solid;\n\tborder: 1px solid ${({ theme }) => theme.colors.tertiary};\n\t-webkit-appearance: none;\n\n\tfont-size: 18px;\n\n\t::placeholder {\n\t\tcolor: ${({ theme }) => theme.colors.textDisabled};\n\t}\n\ttransition: border 100ms;\n\t:focus {\n\t\tborder: 1px solid ${({ theme }) => theme.colors.primary};\n\t\toutline: none;\n\t}\n`\nexport const Separator = styled.div`\n\twidth: 100%;\n\theight: 1px;\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n`\n\nexport const SeparatorDark = styled.div`\n\twidth: 100%;\n\theight: 1px;\n\tbackground-color: ${({ theme }) => theme.colors.tertiary};\n`\n","import { Currency, CurrencyAmount, currencyEquals, ETHER, Token } from 'sdk-hoosmartchain'\nimport React, { CSSProperties, MutableRefObject, useCallback, useMemo } from 'react'\nimport { FixedSizeList } from 'react-window'\nimport styled from 'styled-components'\nimport { Text } from '../../uikit-foodcourt'\nimport { useActiveWeb3React } from '../../hooks'\nimport { useSelectedTokenList, WrappedTokenInfo } from '../../state/lists/hooks'\nimport { useAddUserToken, useRemoveUserAddedToken } from '../../state/user/hooks'\nimport { useCurrencyBalance } from '../../state/wallet/hooks'\nimport { LinkStyledButton } from '../Shared'\nimport { useIsUserAddedToken } from '../../hooks/Tokens'\nimport Column from '../Column'\nimport { RowFixed } from '../Row'\nimport CurrencyLogo from '../CurrencyLogo'\nimport { MouseoverTooltip } from '../Tooltip'\nimport { FadedSpan, MenuItem } from './styleds'\nimport Loader from '../Loader'\nimport { isTokenOnList } from '../../utils'\n\nfunction currencyKey(currency: Currency): string {\n\treturn currency instanceof Token ? currency.address : currency === ETHER ? 'ETHER' : ''\n}\n\nconst StyledBalanceText = styled(Text)`\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tmax-width: 5rem;\n\ttext-overflow: ellipsis;\n`\n\nconst Tag = styled.div`\n\tbackground-color: ${({ theme }) => theme.colors.tertiary};\n\tcolor: ${({ theme }) => theme.colors.textSubtle};\n\tfont-size: 14px;\n\tborder-radius: 4px;\n\tpadding: 0.25rem 0.3rem 0.25rem 0.3rem;\n\tmax-width: 6rem;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tjustify-self: flex-end;\n\tmargin-right: 4px;\n`\n\nfunction Balance({ balance }: { balance: CurrencyAmount }) {\n\treturn {balance.toSignificant(4)}\n}\n\nconst TagContainer = styled.div`\n\tdisplay: flex;\n\tjustify-content: flex-end;\n`\n\nfunction TokenTags({ currency }: { currency: Currency }) {\n\tif (!(currency instanceof WrappedTokenInfo)) {\n\t\treturn \n\t}\n\n\tconst { tags } = currency\n\tif (!tags || tags.length === 0) return \n\n\tconst tag = tags[0]\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{tag.name}\n\t\t\t\n\t\t\t{tags.length > 1 ? (\n\t\t\t\t `${name}: ${description}`)\n\t\t\t\t\t\t.join('; \\n')}\n\t\t\t\t>\n\t\t\t\t\t...\n\t\t\t\t\n\t\t\t) : null}\n\t\t\n\t)\n}\n\nfunction CurrencyRow({\n\tcurrency,\n\tonSelect,\n\tisSelected,\n\totherSelected,\n\tstyle,\n}: {\n\tcurrency: Currency\n\tonSelect: () => void\n\tisSelected: boolean\n\totherSelected: boolean\n\tstyle: CSSProperties\n}) {\n\tconst { account, chainId } = useActiveWeb3React()\n\tconst key = currencyKey(currency)\n\tconst selectedTokenList = useSelectedTokenList()\n\tconst isOnSelectedList = isTokenOnList(selectedTokenList, currency)\n\tconst customAdded = useIsUserAddedToken(currency)\n\tconst balance = useCurrencyBalance(account ?? undefined, currency)\n\n\tconst removeToken = useRemoveUserAddedToken()\n\tconst addToken = useAddUserToken()\n\n\t// only show add or remove buttons if not on selected list\n\treturn (\n\t\t (isSelected ? null : onSelect())}\n\t\t\tdisabled={isSelected}\n\t\t\tselected={otherSelected}\n\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t{currency.symbol}\n\t\t\t\t\t\n\t\t\t\t\t\t{!isOnSelectedList && customAdded && !(currency instanceof WrappedTokenInfo) ? (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\t\t\tif (chainId && currency instanceof Token) removeToken(chainId, currency.address)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tRemove\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t{!isOnSelectedList && !customAdded && !(currency instanceof WrappedTokenInfo) ? (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\t\t\tif (currency instanceof Token) addToken(currency)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tAdd\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
{currency.name}
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{balance ? : account ? : null}\n\t\t\t\n\t\t\n\t)\n}\n\nexport default function CurrencyList({\n\theight,\n\tcurrencies,\n\tselectedCurrency,\n\tonCurrencySelect,\n\totherCurrency,\n\tfixedListRef,\n\tshowETH,\n}: {\n\theight: number\n\tcurrencies: Currency[]\n\tselectedCurrency?: Currency | null\n\tonCurrencySelect: (currency: Currency) => void\n\totherCurrency?: Currency | null\n\tfixedListRef?: MutableRefObject\n\tshowETH: boolean\n}) {\n\tconst itemData = useMemo(\n\t\t() => (showETH ? [Currency.ETHER, ...currencies] : [...currencies]),\n\t\t[currencies, showETH],\n\t)\n\n\tconst Row = useCallback(\n\t\t({ data, index, style }) => {\n\t\t\tconst currency: Currency = data[index]\n\t\t\tconst isSelected = Boolean(selectedCurrency && currencyEquals(selectedCurrency, currency))\n\t\t\tconst otherSelected = Boolean(otherCurrency && currencyEquals(otherCurrency, currency))\n\t\t\tconst handleSelect = () => onCurrencySelect(currency)\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\t\t},\n\t\t[onCurrencySelect, otherCurrency, selectedCurrency],\n\t)\n\n\tconst itemKey = useCallback((index: number, data: any) => currencyKey(data[index]), [])\n\n\treturn (\n\t\t\n\t\t\t{Row}\n\t\t\n\t)\n}\n","import { Token } from 'sdk-hoosmartchain'\nimport { isAddress } from '../../utils'\n\nexport function filterTokens(tokens: Token[], search: string, tokenMode = 'all'): Token[] {\n\tif (search.length === 0) return tokens\n\n\tconst searchingAddress = isAddress(search)\n\n\tif (searchingAddress) {\n\t\treturn tokens.filter((token) => token.address === searchingAddress)\n\t}\n\n\tconst lowerSearchParts = search\n\t\t.toLowerCase()\n\t\t.split(/\\s+/)\n\t\t.filter((s) => s.length > 0)\n\n\tif (lowerSearchParts.length === 0) {\n\t\treturn tokens\n\t}\n\n\tconst matchesSearch = (s: string): boolean => {\n\t\tconst sParts = s\n\t\t\t.toLowerCase()\n\t\t\t.split(/\\s+/)\n\t\t\t.filter((str) => str.length > 0)\n\n\t\treturn lowerSearchParts.every(\n\t\t\t(p) => p.length === 0 || sParts.some((sp) => sp.startsWith(p) || sp.endsWith(p)),\n\t\t)\n\t}\n\n\treturn tokens.filter((token) => {\n\t\tconst { symbol, name } = token\n\n\t\treturn (symbol && matchesSearch(symbol)) || (name && matchesSearch(name))\n\t})\n}\n\nexport default filterTokens\n","import React from 'react'\nimport { Text } from '../../uikit-foodcourt'\nimport styled from 'styled-components'\nimport { RowFixed } from '../Row'\n\nexport const FilterWrapper = styled(RowFixed)`\n\tpadding: 8px;\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n\tcolor: ${({ theme }) => theme.colors.text};\n\tborder-radius: 8px;\n\tuser-select: none;\n\t& > * {\n\t\tuser-select: none;\n\t}\n\t:hover {\n\t\tcursor: pointer;\n\t}\n`\n\nexport default function SortButton({\n\ttoggleSortOrder,\n\tascending,\n}: {\n\ttoggleSortOrder: () => void\n\tascending: boolean\n}) {\n\treturn (\n\t\t\n\t\t\t{ascending ? '↑' : '↓'}\n\t\t\n\t)\n}\n","import { Token, TokenAmount } from 'sdk-hoosmartchain'\nimport { useMemo } from 'react'\nimport { useAllTokenBalances } from '../../state/wallet/hooks'\n\n// compare two token amounts with highest one coming first\nfunction balanceComparator(balanceA?: TokenAmount, balanceB?: TokenAmount) {\n\tif (balanceA && balanceB) {\n\t\treturn balanceA.greaterThan(balanceB) ? -1 : balanceA.equalTo(balanceB) ? 0 : 1\n\t}\n\tif (balanceA && balanceA.greaterThan('0')) {\n\t\treturn -1\n\t}\n\tif (balanceB && balanceB.greaterThan('0')) {\n\t\treturn 1\n\t}\n\treturn 0\n}\n\nfunction getTokenComparator(balances: {\n\t[tokenAddress: string]: TokenAmount | undefined\n}): (tokenA: Token, tokenB: Token) => number {\n\treturn function sortTokens(tokenA: Token, tokenB: Token): number {\n\t\t// -1 = a is first\n\t\t// 1 = b is first\n\n\t\t// sort by balances\n\t\tconst balanceA = balances[tokenA.address]\n\t\tconst balanceB = balances[tokenB.address]\n\n\t\tconst balanceComp = balanceComparator(balanceA, balanceB)\n\t\tif (balanceComp !== 0) return balanceComp\n\n\t\tif (tokenA.symbol && tokenB.symbol) {\n\t\t\t// sort by symbol\n\t\t\treturn tokenA.symbol.toLowerCase() < tokenB.symbol.toLowerCase() ? -1 : 1\n\t\t}\n\t\treturn tokenA.symbol ? -1 : tokenB.symbol ? -1 : 0\n\t}\n}\n\nexport function useTokenComparator(inverted: boolean): (tokenA: Token, tokenB: Token) => number {\n\tconst balances = useAllTokenBalances()\n\tconst comparator = useMemo(() => getTokenComparator(balances ?? {}), [balances])\n\treturn useMemo(() => {\n\t\tif (inverted) {\n\t\t\treturn (tokenA: Token, tokenB: Token) => comparator(tokenA, tokenB) * -1\n\t\t}\n\t\treturn comparator\n\t}, [inverted, comparator])\n}\n\nexport default useTokenComparator\n","import { Currency, ETHER, Token } from 'sdk-hoosmartchain'\nimport React, {\n\tKeyboardEvent,\n\tRefObject,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react'\nimport { Text, CloseIcon } from '../../uikit-foodcourt'\nimport { useSelector } from 'react-redux'\nimport { useTranslation } from 'react-i18next'\nimport { FixedSizeList } from 'react-window'\nimport { ThemeContext } from 'styled-components'\nimport AutoSizer from 'react-virtualized-auto-sizer'\nimport useI18n from 'hooks/useI18n'\nimport { useActiveWeb3React } from '../../hooks'\nimport { AppState } from '../../state'\nimport { useAllTokens, useToken } from '../../hooks/Tokens'\nimport { useSelectedListInfo } from '../../state/lists/hooks'\nimport { LinkStyledButton } from '../Shared'\nimport { isAddress } from '../../utils'\nimport Card from '../Card'\nimport Column from '../Column'\nimport ListLogo from '../ListLogo'\nimport QuestionHelper from '../QuestionHelper'\nimport Row, { RowBetween } from '../Row'\nimport CommonBases from './CommonBases'\nimport CurrencyList from './CurrencyList'\nimport { filterTokens } from './filtering'\nimport SortButton from './SortButton'\nimport { useTokenComparator } from './sorting'\nimport { PaddedColumn, SearchInput, Separator } from './styleds'\n\ninterface CurrencySearchProps {\n\tisOpen: boolean\n\tonDismiss: () => void\n\tselectedCurrency?: Currency | null\n\tonCurrencySelect: (currency: Currency) => void\n\totherSelectedCurrency?: Currency | null\n\tshowCommonBases?: boolean\n\tonChangeList: () => void\n\ttokenMode?: string\n}\n\nexport function CurrencySearch({\n\tselectedCurrency,\n\tonCurrencySelect,\n\totherSelectedCurrency,\n\tshowCommonBases,\n\tonDismiss,\n\tisOpen,\n\tonChangeList,\n\ttokenMode = 'all',\n}: CurrencySearchProps) {\n\tconst { t } = useTranslation()\n\tconst { chainId } = useActiveWeb3React()\n\tconst theme = useContext(ThemeContext)\n\n\tconst fixedList = useRef()\n\tconst [searchQuery, setSearchQuery] = useState('')\n\tconst [invertSearchOrder, setInvertSearchOrder] = useState(false)\n\tconst allTokens = useAllTokens(tokenMode)\n\n\t// if they input an address, use it\n\tconst isAddressSearch = isAddress(searchQuery)\n\tconst searchToken = useToken(searchQuery)\n\n\tconst showETH: boolean = useMemo(() => {\n\t\tif (tokenMode !== 'all') return false\n\t\tconst s = searchQuery.toLowerCase().trim()\n\t\treturn s === '' || s === 'b' || s === 'bn' || s === 'bnb'\n\t}, [searchQuery])\n\n\tconst tokenComparator = useTokenComparator(invertSearchOrder)\n\n\tconst audioPlay = useSelector(\n\t\t(state) => state.user.audioPlay,\n\t)\n\n\tconst filteredTokens: Token[] = useMemo(() => {\n\t\tif (isAddressSearch) return searchToken ? [searchToken] : []\n\t\treturn filterTokens(Object.values(allTokens), searchQuery, tokenMode)\n\t}, [isAddressSearch, searchToken, allTokens, searchQuery])\n\n\tconst filteredSortedTokens: Token[] = useMemo(() => {\n\t\tif (searchToken) return [searchToken]\n\t\tconst sorted = filteredTokens.sort(tokenComparator)\n\t\tconst symbolMatch = searchQuery\n\t\t\t.toLowerCase()\n\t\t\t.split(/\\s+/)\n\t\t\t.filter((s) => s.length > 0)\n\t\tif (symbolMatch.length > 1) return sorted\n\n\t\treturn [\n\t\t\t...(searchToken ? [searchToken] : []),\n\t\t\t// sort any exact symbol matches first\n\t\t\t...sorted.filter((token) => token.symbol?.toLowerCase() === symbolMatch[0]),\n\t\t\t...sorted.filter((token) => token.symbol?.toLowerCase() !== symbolMatch[0]),\n\t\t]\n\t}, [filteredTokens, searchQuery, searchToken, tokenComparator])\n\n\tconst handleCurrencySelect = useCallback(\n\t\t(currency: Currency) => {\n\t\t\tonCurrencySelect(currency)\n\t\t\tonDismiss()\n\t\t\tif (audioPlay) {\n\t\t\t\tconst audio = document.getElementById('bgMusic') as HTMLAudioElement\n\t\t\t\tif (audio) {\n\t\t\t\t\taudio.play()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[onDismiss, onCurrencySelect, audioPlay],\n\t)\n\n\t// clear the input on open\n\tuseEffect(() => {\n\t\tif (isOpen) setSearchQuery('')\n\t}, [isOpen])\n\n\t// manage focus on modal show\n\tconst inputRef = useRef()\n\tconst handleInput = useCallback((event) => {\n\t\tconst input = event.target.value\n\t\tconst checksummedInput = isAddress(input)\n\t\tsetSearchQuery(checksummedInput || input)\n\t\tfixedList.current?.scrollTo(0)\n\t}, [])\n\n\tconst handleEnter = useCallback(\n\t\t(e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Enter') {\n\t\t\t\tconst s = searchQuery.toLowerCase().trim()\n\t\t\t\tif (s === 'bnb') {\n\t\t\t\t\thandleCurrencySelect(ETHER)\n\t\t\t\t} else if (filteredSortedTokens.length > 0) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tfilteredSortedTokens[0].symbol?.toLowerCase() ===\n\t\t\t\t\t\t\tsearchQuery.trim().toLowerCase() ||\n\t\t\t\t\t\tfilteredSortedTokens.length === 1\n\t\t\t\t\t) {\n\t\t\t\t\t\thandleCurrencySelect(filteredSortedTokens[0])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[filteredSortedTokens, handleCurrencySelect, searchQuery],\n\t)\n\n\tconst selectedListInfo = useSelectedListInfo()\n\tconst TranslateString = useI18n()\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{TranslateString(82, 'Select a token')}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\tonChange={handleInput}\n\t\t\t\t\tonKeyDown={handleEnter}\n\t\t\t\t/>\n\t\t\t\t{showCommonBases && (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\t{TranslateString(126, 'Token name')}\n\t\t\t\t\t setInvertSearchOrder((iso) => !iso)}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{({ height }) => (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t
\n\n\t\t\t{null && (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{selectedListInfo.current ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{selectedListInfo.current.logoURI ? (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{selectedListInfo.current.name}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{selectedListInfo.current\n\t\t\t\t\t\t\t\t\t? TranslateString(180, 'Change')\n\t\t\t\t\t\t\t\t\t: TranslateString(1152, 'Select a list')}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t)\n}\n\nexport default CurrencySearch\n","export const DEFAULT_TOKEN_LIST_URL = 'pancakeswap'\n\nexport const DEFAULT_LIST_OF_LISTS: string[] = [DEFAULT_TOKEN_LIST_URL]\n\nexport const SAFEMOON_TOKEN_ADDRESS = {\n\t97: '0x1AD2E11A6f174d92f6f72acE614618092df0d839',\n\t70: '0x768d221E81524De52841AeD976370b2e4F990416',\n}\n\nexport const WSAFEMOON_TOKEN_ADDRESS = {\n\t97: '0x4F7038Ec094041E6E9A8b36717284390381e2F10',\n\t70: '0x422d0A431D8fb752e3697e90BA04b3324Ea0Cb4a',\n}\n","import { TokenInfo, TokenList } from '@uniswap/token-lists'\nimport schema from '@uniswap/token-lists/src/tokenlist.schema.json'\nimport Ajv from 'ajv'\nimport contenthashToUri from './contenthashToUri'\nimport { parseENSAddress } from './parseENSAddress'\nimport uriToHttp from './uriToHttp'\n\n// bakeryswap defaultTokenJson\nimport { DEFAULT_TOKEN_LIST_URL } from '../constants/lists'\nimport defaultTokenJson from '../constants/token/pancakeswap.json'\nimport { WrappedTokenInfo } from 'state/lists/hooks'\n\nconst tokenListValidator = new Ajv({ allErrors: true }).compile(schema)\n\nexport interface FoodcourtTokenInfo extends TokenInfo {\n\treadonly isSafeToken?: boolean\n\treadonly isWSafeToken?: boolean\n\treadonly isRSafeToken?: boolean\n\n\treadonly wSafeAddress?: string\n\treadonly rSafeAddress?: string\n\n\treadonly safeFee?: number\n\treadonly wrapFee?: number\n\treadonly unwrapFee?: number\n}\n\nexport interface FoodcourtTokenList extends TokenList {\n\treadonly isSafeToken?: boolean\n\treadonly isWSafeToken?: boolean\n\treadonly isRSafeToken?: boolean\n\n\treadonly wSafeAddress?: string\n\treadonly rSafeAddress?: string\n}\n\n/**\n * Contains the logic for resolving a list URL to a validated token list\n * @param listUrl list url\n * @param resolveENSContentHash resolves an ens name to a contenthash\n */\nexport default async function getTokenList(\n\tlistUrl: string,\n\tresolveENSContentHash: (ensName: string) => Promise,\n): Promise {\n\tif (listUrl === DEFAULT_TOKEN_LIST_URL) {\n\t\t// console.log(defaultTokenJson)\n\t\treturn defaultTokenJson\n\t}\n\tconst parsedENS = parseENSAddress(listUrl)\n\n\tlet urls: string[]\n\tif (parsedENS) {\n\t\tlet contentHashUri\n\t\ttry {\n\t\t\tcontentHashUri = await resolveENSContentHash(parsedENS.ensName)\n\t\t} catch (error) {\n\t\t\tconsole.error(`Failed to resolve ENS name: ${parsedENS.ensName}`, error)\n\t\t\tthrow new Error(`Failed to resolve ENS name: ${parsedENS.ensName}`)\n\t\t}\n\t\tlet translatedUri\n\t\ttry {\n\t\t\ttranslatedUri = contenthashToUri(contentHashUri)\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to translate contenthash to URI', contentHashUri)\n\t\t\tthrow new Error(`Failed to translate contenthash to URI: ${contentHashUri}`)\n\t\t}\n\t\turls = uriToHttp(`${translatedUri}${parsedENS.ensPath ?? ''}`)\n\t} else {\n\t\turls = uriToHttp(listUrl)\n\t}\n\tfor (let i = 0; i < urls.length; i++) {\n\t\tconst url = urls[i]\n\t\tconst isLast = i === urls.length - 1\n\t\tlet response\n\t\ttry {\n\t\t\tresponse = await fetch(url)\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to fetch list', listUrl, error)\n\t\t\tif (isLast) throw new Error(`Failed to download list ${listUrl}`)\n\t\t\t// eslint-disable-next-line no-continue\n\t\t\tcontinue\n\t\t}\n\n\t\tif (!response.ok) {\n\t\t\tif (isLast) throw new Error(`Failed to download list ${listUrl}`)\n\t\t\t// eslint-disable-next-line no-continue\n\t\t\tcontinue\n\t\t}\n\n\t\tconst json = await response.json()\n\t\tif (!tokenListValidator(json)) {\n\t\t\tconst validationErrors: string =\n\t\t\t\ttokenListValidator.errors?.reduce((memo, error) => {\n\t\t\t\t\tconst add = `${error.dataPath} ${error.message ?? ''}`\n\t\t\t\t\treturn memo.length > 0 ? `${memo}; ${add}` : `${add}`\n\t\t\t\t}, '') ?? 'unknown error'\n\t\t\tthrow new Error(`Token list failed validation: ${validationErrors}`)\n\t\t}\n\t\treturn json\n\t}\n\tthrow new Error('Unrecognized list URL protocol.')\n}\n","import { Contract } from '@ethersproject/contracts'\nimport { Provider } from '@ethersproject/abstract-provider'\nimport { namehash } from 'ethers/lib/utils'\n\nconst REGISTRAR_ABI = [\n\t{\n\t\tconstant: true,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'node',\n\t\t\t\ttype: 'bytes32',\n\t\t\t},\n\t\t],\n\t\tname: 'resolver',\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tname: 'resolverAddress',\n\t\t\t\ttype: 'address',\n\t\t\t},\n\t\t],\n\t\tpayable: false,\n\t\tstateMutability: 'view',\n\t\ttype: 'function',\n\t},\n]\nconst REGISTRAR_ADDRESS = '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e'\n\nconst RESOLVER_ABI = [\n\t{\n\t\tconstant: true,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: 'bytes32',\n\t\t\t\tname: 'node',\n\t\t\t\ttype: 'bytes32',\n\t\t\t},\n\t\t],\n\t\tname: 'contenthash',\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: 'bytes',\n\t\t\t\tname: '',\n\t\t\t\ttype: 'bytes',\n\t\t\t},\n\t\t],\n\t\tpayable: false,\n\t\tstateMutability: 'view',\n\t\ttype: 'function',\n\t},\n]\n\n// cache the resolver contracts since most of them are the public resolver\nfunction resolverContract(resolverAddress: string, provider: Provider): Contract {\n\treturn new Contract(resolverAddress, RESOLVER_ABI, provider)\n}\n\n/**\n * Fetches and decodes the result of an ENS contenthash lookup on mainnet to a URI\n * @param ensName to resolve\n * @param provider provider to use to fetch the data\n */\nexport default async function resolveENSContentHash(\n\tensName: string,\n\tprovider: Provider,\n): Promise {\n\tconst ensRegistrarContract = new Contract(REGISTRAR_ADDRESS, REGISTRAR_ABI, provider)\n\tconst hash = namehash(ensName)\n\tconst resolverAddress = await ensRegistrarContract.resolver(hash)\n\treturn resolverContract(resolverAddress, provider).contenthash(hash)\n}\n","import { nanoid } from '@reduxjs/toolkit'\nimport { ChainId } from 'sdk-hoosmartchain'\nimport { TokenList } from '@uniswap/token-lists'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { getNetworkLibrary, NETWORK_CHAIN_ID } from '../connectors'\nimport { AppDispatch } from '../state'\nimport { fetchTokenList } from '../state/lists/actions'\nimport getTokenList from '../utils/getTokenList'\nimport resolveENSContentHash from '../utils/resolveENSContentHash'\nimport { useActiveWeb3React } from './index'\n\nexport function useFetchListCallback(): (listUrl: string) => Promise {\n\tconst { chainId, library } = useActiveWeb3React()\n\tconst dispatch = useDispatch()\n\n\tconst ensResolver = useCallback(\n\t\t(ensName: string) => {\n\t\t\tif (!library || chainId !== ChainId.MAINNET) {\n\t\t\t\tif (NETWORK_CHAIN_ID === ChainId.MAINNET) {\n\t\t\t\t\tconst networkLibrary = getNetworkLibrary()\n\t\t\t\t\tif (networkLibrary) {\n\t\t\t\t\t\treturn resolveENSContentHash(ensName, networkLibrary)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow new Error('Could not construct mainnet ENS resolver')\n\t\t\t}\n\t\t\treturn resolveENSContentHash(ensName, library)\n\t\t},\n\t\t[chainId, library],\n\t)\n\n\treturn useCallback(\n\t\tasync (listUrl: string) => {\n\t\t\tconst requestId = nanoid()\n\t\t\tdispatch(fetchTokenList.pending({ requestId, url: listUrl }))\n\t\t\treturn getTokenList(listUrl, ensResolver)\n\t\t\t\t.then((tokenList) => {\n\t\t\t\t\tdispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))\n\t\t\t\t\treturn tokenList\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(`Failed to get list at url ${listUrl}`, error)\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tfetchTokenList.rejected({\n\t\t\t\t\t\t\turl: listUrl,\n\t\t\t\t\t\t\trequestId,\n\t\t\t\t\t\t\terrorMessage: error.message,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\t[dispatch, ensResolver],\n\t)\n}\n\nexport default useFetchListCallback\n","import { RefObject, useEffect, useRef } from 'react'\n\nexport function useOnClickOutside(\n\tnode: RefObject,\n\thandler: undefined | (() => void),\n) {\n\tconst handlerRef = useRef void)>(handler)\n\tuseEffect(() => {\n\t\thandlerRef.current = handler\n\t}, [handler])\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (node.current?.contains(e.target as Node) ?? false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (handlerRef.current) handlerRef.current()\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClickOutside)\n\t\t}\n\t}, [node])\n}\n\nexport default useOnClickOutside\n","import React, { memo, useCallback, useMemo, useRef, useState } from 'react'\nimport { ArrowLeft } from 'react-feather'\nimport { usePopper } from 'react-popper'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Button, Text, ChevronDownIcon, CloseIcon } from '../../uikit-foodcourt'\nimport styled from 'styled-components'\nimport useI18n from 'hooks/useI18n'\nimport { useFetchListCallback } from '../../hooks/useFetchListCallback'\nimport { useOnClickOutside } from '../../hooks/useOnClickOutside'\nimport useToggle from '../../hooks/useToggle'\nimport { AppDispatch, AppState } from '../../state'\nimport { acceptListUpdate, removeList, selectList } from '../../state/lists/actions'\nimport { useSelectedListUrl } from '../../state/lists/hooks'\nimport { ExternalLink, LinkStyledButton } from '../Shared'\nimport listVersionLabel from '../../utils/listVersionLabel'\nimport { parseENSAddress } from '../../utils/parseENSAddress'\nimport uriToHttp from '../../utils/uriToHttp'\nimport Column from '../Column'\nimport ListLogo from '../ListLogo'\nimport QuestionHelper from '../QuestionHelper'\nimport Row, { RowBetween } from '../Row'\nimport { PaddedColumn, SearchInput, Separator, SeparatorDark } from './styleds'\n\nconst UnpaddedLinkStyledButton = styled(LinkStyledButton)`\n\tpadding: 0;\n\tfont-size: 1rem;\n\topacity: ${({ disabled }) => (disabled ? '0.4' : '1')};\n`\n\nconst PopoverContainer = styled.div<{ show: boolean }>`\n\tz-index: 100;\n\tvisibility: ${(props) => (props.show ? 'visible' : 'hidden')};\n\topacity: ${(props) => (props.show ? 1 : 0)};\n\ttransition: visibility 150ms linear, opacity 150ms linear;\n\tbackground: ${({ theme }) => theme.colors.invertedContrast};\n\tborder: 1px solid ${({ theme }) => theme.colors.tertiary};\n\tbox-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04),\n\t\t0px 16px 24px rgba(0, 0, 0, 0.04), 0px 24px 32px rgba(0, 0, 0, 0.01);\n\tcolor: ${({ theme }) => theme.colors.textSubtle};\n\tborder-radius: 0.5rem;\n\tpadding: 1rem;\n\tdisplay: grid;\n\tgrid-template-rows: 1fr;\n\tgrid-gap: 8px;\n\tfont-size: 1rem;\n\ttext-align: left;\n`\n\nconst StyledMenu = styled.div`\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tposition: relative;\n\tborder: none;\n`\n\nconst StyledListUrlText = styled.div`\n\tmax-width: 160px;\n\topacity: 0.6;\n\tmargin-right: 0.5rem;\n\tfont-size: 14px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n`\n\nfunction ListOrigin({ listUrl }: { listUrl: string }) {\n\tconst ensName = useMemo(() => parseENSAddress(listUrl)?.ensName, [listUrl])\n\tconst host = useMemo(() => {\n\t\tif (ensName) return undefined\n\t\tconst lowerListUrl = listUrl.toLowerCase()\n\t\tif (lowerListUrl.startsWith('ipfs://') || lowerListUrl.startsWith('ipns://')) {\n\t\t\treturn listUrl\n\t\t}\n\t\ttry {\n\t\t\tconst url = new URL(listUrl)\n\t\t\treturn url.host\n\t\t} catch (error) {\n\t\t\treturn undefined\n\t\t}\n\t}, [listUrl, ensName])\n\treturn <>{ensName ?? host}\n}\n\nfunction listUrlRowHTMLId(listUrl: string) {\n\treturn `list-row-${listUrl.replace(/\\./g, '-')}`\n}\n\nconst ListRow = memo(({ listUrl, onBack }: { listUrl: string; onBack: () => void }) => {\n\tconst listsByUrl = useSelector(\n\t\t(state) => state.lists.byUrl,\n\t)\n\tconst selectedListUrl = useSelectedListUrl()\n\tconst dispatch = useDispatch()\n\tconst { current: list, pendingUpdate: pending } = listsByUrl[listUrl]\n\n\tconst isSelected = listUrl === selectedListUrl\n\n\tconst [open, toggle] = useToggle(false)\n\tconst node = useRef()\n\tconst [referenceElement, setReferenceElement] = useState()\n\tconst [popperElement, setPopperElement] = useState()\n\n\tconst { styles, attributes } = usePopper(referenceElement, popperElement, {\n\t\tplacement: 'auto',\n\t\tstrategy: 'fixed',\n\t\tmodifiers: [{ name: 'offset', options: { offset: [8, 8] } }],\n\t})\n\n\tuseOnClickOutside(node, open ? toggle : undefined)\n\n\tconst selectThisList = useCallback(() => {\n\t\tif (isSelected) return\n\n\t\tdispatch(selectList(listUrl))\n\t\tonBack()\n\t}, [dispatch, isSelected, listUrl, onBack])\n\n\tconst handleAcceptListUpdate = useCallback(() => {\n\t\tif (!pending) return\n\t\tdispatch(acceptListUpdate(listUrl))\n\t}, [dispatch, listUrl, pending])\n\n\tconst handleRemoveList = useCallback(() => {\n\t\tif (\n\t\t\twindow.prompt(`Please confirm you would like to remove this list by typing REMOVE`) ===\n\t\t\t`REMOVE`\n\t\t) {\n\t\t\tdispatch(removeList(listUrl))\n\t\t}\n\t}, [dispatch, listUrl])\n\tconst TranslateString = useI18n()\n\tif (!list) return null\n\n\treturn (\n\t\t\n\t\t\t{list.logoURI ? (\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t
\n\t\t\t)}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{list.name}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t{open && (\n\t\t\t\t\t\n\t\t\t\t\t\t
{list && listVersionLabel(list.version)}
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{TranslateString(1206, 'View list')}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tRemove list\n\t\t\t\t\t\t\n\t\t\t\t\t\t{pending && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tUpdate list\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
\n\t\t\t{isSelected ? (\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\tSelect\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n})\n\nconst ListContainer = styled.div`\n\tflex: 1;\n\toverflow: auto;\n`\n\nexport function ListSelect({ onDismiss, onBack }: { onDismiss: () => void; onBack: () => void }) {\n\tconst [listUrlInput, setListUrlInput] = useState('')\n\n\tconst dispatch = useDispatch()\n\tconst lists = useSelector((state) => state.lists.byUrl)\n\tconst adding = Boolean(lists[listUrlInput]?.loadingRequestId)\n\tconst [addError, setAddError] = useState(null)\n\n\tconst handleInput = useCallback((e) => {\n\t\tsetListUrlInput(e.target.value)\n\t\tsetAddError(null)\n\t}, [])\n\tconst fetchList = useFetchListCallback()\n\n\tconst handleAddList = useCallback(() => {\n\t\tif (adding) return\n\t\tsetAddError(null)\n\t\tfetchList(listUrlInput)\n\t\t\t.then(() => {\n\t\t\t\tsetListUrlInput('')\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tsetAddError(error.message)\n\t\t\t\tdispatch(removeList(listUrlInput))\n\t\t\t})\n\t}, [adding, dispatch, fetchList, listUrlInput])\n\n\tconst validUrl: boolean = useMemo(\n\t\t() => uriToHttp(listUrlInput).length > 0 || Boolean(parseENSAddress(listUrlInput)),\n\t\t[listUrlInput],\n\t)\n\n\tconst handleEnterKey = useCallback(\n\t\t(e) => {\n\t\t\tif (validUrl && e.key === 'Enter') {\n\t\t\t\thandleAddList()\n\t\t\t}\n\t\t},\n\t\t[handleAddList, validUrl],\n\t)\n\n\tconst sortedLists = useMemo(() => {\n\t\tconst listUrls = Object.keys(lists)\n\t\treturn listUrls\n\t\t\t.filter((listUrl) => Boolean(lists[listUrl].current))\n\t\t\t.sort((u1, u2) => {\n\t\t\t\tconst { current: l1 } = lists[u1]\n\t\t\t\tconst { current: l2 } = lists[u2]\n\t\t\t\tif (l1 && l2) {\n\t\t\t\t\treturn l1.name.toLowerCase() < l2.name.toLowerCase()\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: l1.name.toLowerCase() === l2.name.toLowerCase()\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: 1\n\t\t\t\t}\n\t\t\t\tif (l1) return -1\n\t\t\t\tif (l2) return 1\n\t\t\t\treturn 0\n\t\t\t})\n\t}, [lists])\n\tconst TranslateString = useI18n()\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{TranslateString(1208, 'Manage Lists')}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tAdd a list{' '}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tAdd\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{addError ? (\n\t\t\t\t\t\n\t\t\t\t\t\t{addError}\n\t\t\t\t\t\n\t\t\t\t) : null}\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\t\t{sortedLists.map((listUrl) => (\n\t\t\t\t\t\n\t\t\t\t))}\n\t\t\t\n\t\t\t\n\n\t\t\t
\n\t\t\t\tBrowse lists\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default ListSelect\n","import { useCallback, useState } from 'react'\n\nexport default function useToggle(initialState = false): [boolean, () => void] {\n\tconst [state, setState] = useState(initialState)\n\tconst toggle = useCallback(() => setState((prev) => !prev), [])\n\treturn [state, toggle]\n}\n","import { Currency } from 'sdk-hoosmartchain'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport useLast from '../../hooks/useLast'\nimport { useSelectedListUrl } from '../../state/lists/hooks'\nimport Modal from '../Modal'\nimport { CurrencySearch } from './CurrencySearch'\nimport { ListSelect } from './ListSelect'\n\ninterface CurrencySearchModalProps {\n\tisOpen: boolean\n\tonDismiss: () => void\n\tselectedCurrency?: Currency | null\n\tonCurrencySelect: (currency: Currency) => void\n\totherSelectedCurrency?: Currency | null\n\t// eslint-disable-next-line react/no-unused-prop-types\n\tshowCommonBases?: boolean\n\ttokenMode?: string\n}\n\nexport default function CurrencySearchModal({\n\tisOpen,\n\tonDismiss,\n\tonCurrencySelect,\n\tselectedCurrency,\n\totherSelectedCurrency,\n\ttokenMode = 'all',\n}: CurrencySearchModalProps) {\n\tconst [listView, setListView] = useState(false)\n\tconst lastOpen = useLast(isOpen)\n\n\tuseEffect(() => {\n\t\tif (isOpen && !lastOpen) {\n\t\t\tsetListView(false)\n\t\t}\n\t}, [isOpen, lastOpen])\n\n\tconst handleCurrencySelect = useCallback(\n\t\t(currency: Currency) => {\n\t\t\tonCurrencySelect(currency)\n\t\t\tonDismiss()\n\t\t},\n\t\t[onDismiss, onCurrencySelect],\n\t)\n\n\tconst handleClickChangeList = useCallback(() => {\n\t\tsetListView(true)\n\t}, [])\n\tconst handleClickBack = useCallback(() => {\n\t\tsetListView(false)\n\t}, [])\n\n\tconst selectedListUrl = useSelectedListUrl()\n\tconst noListSelected = !selectedListUrl\n\n\treturn (\n\t\t\n\t\t\t{listView ? (\n\t\t\t\t\n\t\t\t) : noListSelected ? (\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n","import { Currency } from 'sdk-hoosmartchain'\nimport React from 'react'\nimport styled from 'styled-components'\nimport CurrencyLogo from '../CurrencyLogo'\n\nconst Wrapper = styled.div<{ margin: boolean; sizeraw: number }>`\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: row;\n\tmargin-right: ${({ sizeraw, margin }) => margin && `${(sizeraw / 3 + 8).toString()}px`};\n`\n\ninterface DoubleCurrencyLogoProps {\n\tmargin?: boolean\n\tsize?: number\n\tcurrency0?: Currency\n\tcurrency1?: Currency\n}\n\nconst HigherLogo = styled(CurrencyLogo)`\n\tz-index: 2;\n`\nconst CoveredLogo = styled(CurrencyLogo)<{ sizeraw: number }>`\n\tposition: absolute;\n\tleft: ${({ sizeraw }) => `${(sizeraw / 2).toString()}px`};\n`\n\nexport default function DoubleCurrencyLogo({\n\tcurrency0,\n\tcurrency1,\n\tsize = 16,\n\tmargin = false,\n}: DoubleCurrencyLogoProps) {\n\treturn (\n\t\t\n\t\t\t{currency0 && }\n\t\t\t{currency1 && (\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { escapeRegExp } from '../../utils'\n\nconst StyledInput = styled.input<{ error?: boolean; fontSize?: string; align?: string }>`\n\tcolor: ${({ error, theme }) => (error ? theme.colors.failure : theme.colors.text)};\n\twidth: 0;\n\tposition: relative;\n\tfont-weight: 500;\n\toutline: none;\n\tborder: none;\n\tflex: 1 1 auto;\n\tbackground-color: transparent;\n\tfont-size: 16px;\n\ttext-align: ${({ align }) => align && align};\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tpadding: 0px;\n\t-webkit-appearance: textfield;\n\n\t::-webkit-search-decoration {\n\t\t-webkit-appearance: none;\n\t}\n\n\t[type='number'] {\n\t\t-moz-appearance: textfield;\n\t}\n\n\t::-webkit-outer-spin-button,\n\t::-webkit-inner-spin-button {\n\t\t-webkit-appearance: none;\n\t}\n\n\t::placeholder {\n\t\tcolor: ${({ theme }) => theme.colors.textSubtle};\n\t}\n`\n\nconst inputRegex = RegExp(`^\\\\d*(?:\\\\\\\\[.])?\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n\nexport const Input = React.memo(\n\t({\n\t\tvalue,\n\t\tonUserInput,\n\t\tplaceholder,\n\t\t...rest\n\t}: {\n\t\tvalue: string | number\n\t\tonUserInput: (input: string) => void\n\t\terror?: boolean\n\t\tfontSize?: string\n\t\talign?: 'right' | 'left'\n\t} & Omit, 'ref' | 'onChange' | 'as'>) => {\n\t\tconst enforcer = (nextUserInput: string) => {\n\t\t\tif (nextUserInput === '' || inputRegex.test(escapeRegExp(nextUserInput))) {\n\t\t\t\tonUserInput(nextUserInput)\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t {\n\t\t\t\t\t// replace commas with periods, because uniswap exclusively uses period as the decimal separator\n\t\t\t\t\tenforcer(event.target.value.replace(/,/g, '.'))\n\t\t\t\t}}\n\t\t\t\t// universal input options\n\t\t\t\tinputMode=\"decimal\"\n\t\t\t\ttitle=\"Token Amount\"\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t// text-specific options\n\t\t\t\ttype=\"text\"\n\t\t\t\tpattern=\"^[0-9]*[.,]?[0-9]*$\"\n\t\t\t\tplaceholder={placeholder || '0.0'}\n\t\t\t\tminLength={1}\n\t\t\t\tmaxLength={79}\n\t\t\t\tspellCheck=\"false\"\n\t\t\t/>\n\t\t)\n\t},\n)\n\nexport default Input\n","import React, { useState, useCallback } from 'react'\nimport { Currency, Pair } from 'sdk-hoosmartchain'\nimport { Button, ChevronDownIcon, Text } from '../../uikit-foodcourt'\nimport styled from 'styled-components'\nimport { darken } from 'polished'\nimport useI18n from 'hooks/useI18n'\nimport { useCurrencyBalance } from '../../state/wallet/hooks'\nimport CurrencySearchModal from '../SearchModal/CurrencySearchModal'\nimport CurrencyLogo from '../CurrencyLogo'\nimport DoubleCurrencyLogo from '../DoubleLogo'\nimport { RowBetween } from '../Row'\nimport { Input as NumericalInput } from '../NumericalInput'\nimport { useActiveWeb3React } from '../../hooks'\n\nconst InputRow = styled.div<{ selected: boolean }>`\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: center;\n\tpadding: ${({ selected }) =>\n\t\tselected ? '0.75rem 0.5rem 0.75rem 1rem' : '0.75rem 0.75rem 0.75rem 1rem'};\n`\nconst CurrencySelect = styled.button<{ selected: boolean }>`\n\talign-items: center;\n\theight: 34px;\n\tfont-size: 16px;\n\tfont-weight: 500;\n\tbackground-color: transparent;\n\tcolor: ${({ selected, theme }) => (selected ? theme.colors.text : '#FFFFFF')};\n\tborder-radius: 12px;\n\toutline: none;\n\tcursor: pointer;\n\tuser-select: none;\n\tborder: none;\n\tpadding: 0 0.5rem;\n\t:focus,\n\t:hover {\n\t\tbackground-color: ${({ theme }) => darken(0.05, theme.colors.input)};\n\t}\n`\nconst LabelRow = styled.div`\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: center;\n\tcolor: ${({ theme }) => theme.colors.text};\n\tfont-size: 0.75rem;\n\tline-height: 1rem;\n\tpadding: 0.75rem 1rem 0 1rem;\n\tspan:hover {\n\t\tcursor: pointer;\n\t\tcolor: ${({ theme }) => darken(0.2, theme.colors.textSubtle)};\n\t}\n`\nconst Aligner = styled.span`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n`\nconst InputPanel = styled.div<{ hideInput?: boolean }>`\n\tdisplay: flex;\n\tflex-flow: column nowrap;\n\tposition: relative;\n\tborder-radius: ${({ hideInput }) => (hideInput ? '8px' : '20px')};\n\tbackground-color: ${({ theme }) => theme.colors.background};\n\tz-index: 1;\n`\nconst Container = styled.div<{ hideInput: boolean }>`\n\tborder-radius: 16px;\n\tbackground-color: ${({ theme }) => theme.colors.input};\n\tbox-shadow: ${({ theme }) => theme.shadows.inset};\n`\ninterface CurrencyInputPanelProps {\n\tvalue: string\n\tpairValue?: string\n\tonUserInput: (value: string) => void\n\tonUserPairInput?: (value: string) => void\n\tonMax?: () => void\n\tshowMaxButton: boolean\n\tlabel?: string\n\tonCurrencySelect?: (currency: Currency) => void\n\tcurrency?: Currency | null\n\tdisableCurrencySelect?: boolean\n\thideBalance?: boolean\n\tpair?: Pair | null\n\thideInput?: boolean\n\totherCurrency?: Currency | null\n\tpairCurrency?: Currency | null\n\tid: string\n\tshowCommonBases?: boolean\n\ttokenMode?: string\n}\nexport default function CurrencyInputPanel({\n\tvalue,\n\tpairValue,\n\tonUserInput,\n\tonUserPairInput,\n\tonMax,\n\tshowMaxButton,\n\tlabel,\n\tonCurrencySelect,\n\tcurrency,\n\tdisableCurrencySelect = false,\n\thideBalance = false,\n\tpair = null, // used for double token logo\n\thideInput = false,\n\totherCurrency,\n\tpairCurrency,\n\tid,\n\tshowCommonBases,\n\ttokenMode = 'all',\n}: CurrencyInputPanelProps) {\n\tconst [modalOpen, setModalOpen] = useState(false)\n\tconst { account } = useActiveWeb3React()\n\tconst selectedCurrencyBalance = useCurrencyBalance(account ?? undefined, currency ?? undefined)\n\tconst TranslateString = useI18n()\n\tconst translatedLabel = label || TranslateString(132, 'Input')\n\tconst handleDismissSearch = useCallback(() => {\n\t\tsetModalOpen(false)\n\t}, [setModalOpen])\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{!hideInput && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{translatedLabel}\n\t\t\t\t\t\t\t{account && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{!hideBalance && !!currency && selectedCurrencyBalance\n\t\t\t\t\t\t\t\t\t\t? `Balance: ${selectedCurrencyBalance?.toSignificant(9)}`\n\t\t\t\t\t\t\t\t\t\t: ' -'}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\n\t\t\t\t\n\t\t\t\t\t{!hideInput && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tonUserInput(val)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{account && currency && showMaxButton && label !== 'To' && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (!disableCurrencySelect) {\n\t\t\t\t\t\t\t\tsetModalOpen(true)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{pair ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : currency ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t{pair ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{pair?.token0.symbol}:{pair?.token1.symbol}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{(currency && currency.symbol && currency.symbol.length > 20\n\t\t\t\t\t\t\t\t\t\t? `${currency.symbol.slice(0, 4)}...${currency.symbol.slice(\n\t\t\t\t\t\t\t\t\t\t\t\tcurrency.symbol.length - 5,\n\t\t\t\t\t\t\t\t\t\t\t\tcurrency.symbol.length,\n\t\t\t\t\t\t\t\t\t\t )}`\n\t\t\t\t\t\t\t\t\t\t: currency?.symbol) ||\n\t\t\t\t\t\t\t\t\t\tTranslateString(1196, 'Select a currency')}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!disableCurrencySelect && }\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{pairCurrency && false && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!hideInput && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tif (onUserPairInput) onUserPairInput(val)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{account && currency && showMaxButton && label !== 'To' && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
{pairCurrency.symbol}
\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
\n\t\t\t{!disableCurrencySelect && onCurrencySelect && (\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t)\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Link as HistoryLink } from 'react-router-dom'\nimport { ArrowLeft } from 'react-feather'\nimport { RowBetween } from 'components/Row'\nimport QuestionHelper from 'components/QuestionHelper'\nimport useI18n from 'hooks/useI18n'\n\nconst Tabs = styled.div`\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: center;\n\tborder-radius: 3rem;\n\tjustify-content: space-evenly;\n`\n\nconst ActiveText = styled.div`\n\tfont-weight: 500;\n\tfont-size: 20px;\n`\n\nconst StyledArrowLeft = styled(ArrowLeft)`\n\tcolor: ${({ theme }) => theme.colors.text};\n`\n\nexport function FindPoolTabs() {\n\tconst TranslateString = useI18n()\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tImport Pool\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport function AddRemoveTabs({ adding }: { adding: boolean }) {\n\tconst TranslateString = useI18n()\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{adding ? TranslateString(258, 'Add') : TranslateString(260, 'Remove')}{' '}\n\t\t\t\t\tLiquidity\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import { BigNumber } from '@ethersproject/bignumber'\nimport { Token, TokenAmount } from 'sdk-hoosmartchain'\nimport { useTokenContract } from '../hooks/useContract'\nimport { useSingleCallResult } from '../state/multicall/hooks'\n\n// returns undefined if input token is undefined, or fails to get token contract,\n// or contract total supply cannot be fetched\nexport function useTotalSupply(token?: Token): TokenAmount | undefined {\n\tconst contract = useTokenContract(token?.address, false)\n\n\tconst totalSupply: BigNumber = useSingleCallResult(contract, 'totalSupply')?.result?.[0]\n\n\treturn token && totalSupply ? new TokenAmount(token, totalSupply.toString()) : undefined\n}\n\nexport default useTotalSupply\n","import { Currency, ETHER, Token } from 'sdk-hoosmartchain'\n\nexport function currencyId(currency: Currency): string {\n\tif (currency === ETHER) return 'BNB'\n\tif (currency instanceof Token) return currency.address\n\tthrow new Error('invalid currency')\n}\n\nexport default currencyId\n","import {\n\tChainId,\n\tCurrency,\n\tCurrencyAmount,\n\tETHER,\n\tToken,\n\tTokenAmount,\n\tWETH,\n} from 'sdk-hoosmartchain'\n\nexport function wrappedCurrency(\n\tcurrency: Currency | undefined,\n\tchainId: ChainId | undefined,\n): Token | undefined {\n\t// eslint-disable-next-line no-nested-ternary\n\treturn chainId && currency === ETHER\n\t\t? WETH[chainId]\n\t\t: currency instanceof Token\n\t\t? currency\n\t\t: undefined\n}\n\nexport function wrappedCurrencyAmount(\n\tcurrencyAmount: CurrencyAmount | undefined,\n\tchainId: ChainId | undefined,\n): TokenAmount | undefined {\n\tconst token =\n\t\tcurrencyAmount && chainId ? wrappedCurrency(currencyAmount.currency, chainId) : undefined\n\treturn token && currencyAmount ? new TokenAmount(token, currencyAmount.raw) : undefined\n}\n\nexport function unwrappedToken(token: Token): Currency {\n\tif (token.equals(WETH[token.chainId])) return ETHER\n\treturn token\n}\n","import { transparentize } from 'polished'\nimport React from 'react'\nimport { AlertTriangle } from 'react-feather'\nimport { Text } from '../../uikit-foodcourt'\nimport styled, { css } from 'styled-components'\nimport { AutoColumn } from '../Column'\n\nexport const Wrapper = styled.div`\n\tposition: relative;\n`\n\nexport const ArrowWrapper = styled.div<{ clickable: boolean }>`\n\tpadding: 2px;\n\n\t${({ clickable }) =>\n\t\tclickable\n\t\t\t? css`\n\t\t\t\t\t:hover {\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\topacity: 0.8;\n\t\t\t\t\t}\n\t\t\t `\n\t\t\t: null}\n`\n\nexport const SectionBreak = styled.div`\n\theight: 1px;\n\twidth: 100%;\n\tbackground-color: ${({ theme }) => theme.colors.tertiary};\n`\n\nexport const BottomGrouping = styled.div`\n\tmargin-top: 1rem;\n`\n\nexport const ErrorText = styled(Text)<{ severity?: 0 | 1 | 2 | 3 | 4 }>`\n\tcolor: ${({ theme, severity }) =>\n\t\tseverity === 3 || severity === 4\n\t\t\t? theme.colors.failure\n\t\t\t: severity === 2\n\t\t\t? theme.colors.binance\n\t\t\t: severity === 1\n\t\t\t? theme.colors.text\n\t\t\t: theme.colors.success};\n`\n\nexport const StyledBalanceMaxMini = styled.button`\n\theight: 22px;\n\twidth: 22px;\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n\tborder: none;\n\tborder-radius: 50%;\n\tpadding: 0.2rem;\n\tfont-size: 0.875rem;\n\tfont-weight: 400;\n\tmargin-left: 0.4rem;\n\tcursor: pointer;\n\tcolor: ${({ theme }) => theme.colors.textSubtle};\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tfloat: right;\n\n\t:hover {\n\t\tbackground-color: ${({ theme }) => theme.colors.tertiary};\n\t}\n\t:focus {\n\t\tbackground-color: ${({ theme }) => theme.colors.tertiary};\n\t\toutline: none;\n\t}\n`\n\n// styles\nexport const Dots = styled.span`\n\t&::after {\n\t\tdisplay: inline-block;\n\t\tanimation: ellipsis 1.25s infinite;\n\t\tcontent: '.';\n\t\twidth: 1em;\n\t\ttext-align: left;\n\t}\n\t@keyframes ellipsis {\n\t\t0% {\n\t\t\tcontent: '.';\n\t\t}\n\t\t33% {\n\t\t\tcontent: '..';\n\t\t}\n\t\t66% {\n\t\t\tcontent: '...';\n\t\t}\n\t}\n`\n\nconst SwapCallbackErrorInner = styled.div`\n\tbackground-color: ${({ theme }) => transparentize(0.9, theme.colors.failure)};\n\tborder-radius: 1rem;\n\tdisplay: flex;\n\talign-items: center;\n\tfont-size: 0.825rem;\n\twidth: 100%;\n\tpadding: 3rem 1.25rem 1rem 1rem;\n\tmargin-top: -2rem;\n\tcolor: ${({ theme }) => theme.colors.failure};\n\tz-index: -1;\n\tp {\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tfont-weight: 500;\n\t}\n`\n\nconst SwapCallbackErrorInnerAlertTriangle = styled.div`\n\tbackground-color: ${({ theme }) => transparentize(0.9, theme.colors.failure)};\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 12px;\n\tborder-radius: 12px;\n\tmin-width: 48px;\n\theight: 48px;\n`\n\nexport function SwapCallbackError({ error }: { error: string }) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t

{error}

\n\t\t
\n\t)\n}\n\nexport const SwapShowAcceptChanges = styled(AutoColumn)`\n\tbackground-color: ${({ theme }) => transparentize(0.9, theme.colors.primary)};\n\tcolor: ${({ theme }) => theme.colors.primary};\n\tpadding: 0.5rem;\n\tborder-radius: 12px;\n\tmargin-top: 8px;\n`\n","import React, { useState } from 'react'\nimport { JSBI, Pair, Percent } from 'sdk-hoosmartchain'\nimport { Button, Card as UIKitCard, CardBody, Text } from '../../uikit-foodcourt'\nimport { darken } from 'polished'\nimport { ChevronDown, ChevronUp } from 'react-feather'\nimport { Link } from 'react-router-dom'\nimport styled from 'styled-components'\nimport { useTotalSupply } from '../../data/TotalSupply'\n\nimport { useActiveWeb3React } from '../../hooks'\nimport { useTokenBalance } from '../../state/wallet/hooks'\nimport { currencyId } from '../../utils/currencyId'\nimport { unwrappedToken } from '../../utils/wrappedCurrency'\nimport Card from '../Card'\nimport { AutoColumn } from '../Column'\nimport CurrencyLogo from '../CurrencyLogo'\nimport DoubleCurrencyLogo from '../DoubleLogo'\nimport { RowBetween, RowFixed } from '../Row'\nimport { Dots } from '../swap/styleds'\n\nexport const FixedHeightRow = styled(RowBetween)`\n\theight: 24px;\n`\n\nexport const HoverCard = styled(Card)`\n\tborder: 1px solid ${({ theme }) => theme.colors.invertedContrast};\n\t:hover {\n\t\tborder: 1px solid ${({ theme }) => darken(0.06, theme.colors.invertedContrast)};\n\t}\n`\n\ninterface PositionCardProps {\n\tpair: Pair\n\t// eslint-disable-next-line react/no-unused-prop-types\n\tshowUnwrapped?: boolean\n\t// eslint-disable-next-line react/no-unused-prop-types\n\tremoveOnly?: boolean\n}\n\nexport function MinimalPositionCard({ pair, showUnwrapped = false }: PositionCardProps) {\n\tconst { account } = useActiveWeb3React()\n\n\tconst currency0 = showUnwrapped ? pair.token0 : unwrappedToken(pair.token0)\n\tconst currency1 = showUnwrapped ? pair.token1 : unwrappedToken(pair.token1)\n\n\tconst [showMore, setShowMore] = useState(false)\n\n\tconst userPoolBalance = useTokenBalance(account ?? undefined, pair.liquidityToken)\n\tconst totalPoolTokens = useTotalSupply(pair.liquidityToken)\n\n\tconst [token0Deposited, token1Deposited] =\n\t\t!!pair &&\n\t\t!!totalPoolTokens &&\n\t\t!!userPoolBalance &&\n\t\t// this condition is a short-circuit in the case where useTokenBalance updates sooner than useTotalSupply\n\t\tJSBI.greaterThanOrEqual(totalPoolTokens.raw, userPoolBalance.raw)\n\t\t\t? [\n\t\t\t\t\tpair.getLiquidityValue(pair.token0, totalPoolTokens, userPoolBalance, false),\n\t\t\t\t\tpair.getLiquidityValue(pair.token1, totalPoolTokens, userPoolBalance, false),\n\t\t\t ]\n\t\t\t: [undefined, undefined]\n\n\treturn (\n\t\t<>\n\t\t\t{userPoolBalance && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tLP Tokens in your Wallet\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t setShowMore(!showMore)}>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{currency0.symbol}/{currency1.symbol}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{userPoolBalance ? userPoolBalance.toSignificant(4) : '-'}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{currency0.symbol}:\n\t\t\t\t\t\t\t\t\t{token0Deposited ? (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{token0Deposited?.toSignificant(6)}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t'-'\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{currency1.symbol}:\n\t\t\t\t\t\t\t\t\t{token1Deposited ? (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{token1Deposited?.toSignificant(6)}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t'-'\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default function FullPositionCard({ pair, removeOnly }: PositionCardProps) {\n\tconst { account } = useActiveWeb3React()\n\n\tconst currency0 = unwrappedToken(pair.token0)\n\tconst currency1 = unwrappedToken(pair.token1)\n\n\tconst [showMore, setShowMore] = useState(false)\n\n\tconst userPoolBalance = useTokenBalance(account ?? undefined, pair.liquidityToken)\n\tconst totalPoolTokens = useTotalSupply(pair.liquidityToken)\n\n\tconst poolTokenPercentage =\n\t\t!!userPoolBalance &&\n\t\t!!totalPoolTokens &&\n\t\tJSBI.greaterThanOrEqual(totalPoolTokens.raw, userPoolBalance.raw)\n\t\t\t? new Percent(userPoolBalance.raw, totalPoolTokens.raw)\n\t\t\t: undefined\n\n\tconst [token0Deposited, token1Deposited] =\n\t\t!!pair &&\n\t\t!!totalPoolTokens &&\n\t\t!!userPoolBalance &&\n\t\t// this condition is a short-circuit in the case where useTokenBalance updates sooner than useTotalSupply\n\t\tJSBI.greaterThanOrEqual(totalPoolTokens.raw, userPoolBalance.raw)\n\t\t\t? [\n\t\t\t\t\tpair.getLiquidityValue(pair.token0, totalPoolTokens, userPoolBalance, false),\n\t\t\t\t\tpair.getLiquidityValue(pair.token1, totalPoolTokens, userPoolBalance, false),\n\t\t\t ]\n\t\t\t: [undefined, undefined]\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t setShowMore(!showMore)}\n\t\t\t\t\tstyle={{ cursor: 'pointer' }}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!currency0 || !currency1 ? (\n\t\t\t\t\t\t\t\tLoading\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t`${currency0.symbol}/${currency1.symbol}`\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{showMore ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{showMore && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tPooled {currency0.symbol}:\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{token0Deposited ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{token0Deposited?.toSignificant(6)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t'-'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tPooled {currency1.symbol}:\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{token1Deposited ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{token1Deposited?.toSignificant(6)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t'-'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tYour pool tokens:\n\t\t\t\t\t\t\t{userPoolBalance ? userPoolBalance.toSignificant(4) : '-'}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tYour pool share:\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{poolTokenPercentage ? `${poolTokenPercentage.toFixed(2)}%` : '-'}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{removeOnly && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tAdd\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tRemove\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t)\n}\n","import { TokenAmount, Pair, Currency } from 'sdk-hoosmartchain'\nimport { useMemo } from 'react'\nimport { abi as IUniswapV2PairABI } from '@uniswap/v2-core/build/IUniswapV2Pair.json'\nimport { Interface } from '@ethersproject/abi'\nimport { useActiveWeb3React } from '../hooks'\n\nimport { useMultipleContractSingleData } from '../state/multicall/hooks'\nimport { wrappedCurrency } from '../utils/wrappedCurrency'\n\nconst PAIR_INTERFACE = new Interface(IUniswapV2PairABI)\n\nexport enum PairState {\n\tLOADING,\n\tNOT_EXISTS,\n\tEXISTS,\n\tINVALID,\n}\n\nexport function usePairs(\n\tcurrencies: [Currency | undefined, Currency | undefined][],\n): [PairState, Pair | null][] {\n\tconst { chainId } = useActiveWeb3React()\n\n\tconst tokens = useMemo(\n\t\t() =>\n\t\t\tcurrencies.map(([currencyA, currencyB]) => [\n\t\t\t\twrappedCurrency(currencyA, chainId),\n\t\t\t\twrappedCurrency(currencyB, chainId),\n\t\t\t]),\n\t\t[chainId, currencies],\n\t)\n\n\tconst pairAddresses = useMemo(\n\t\t() =>\n\t\t\ttokens.map(([tokenA, tokenB]) =>\n\t\t\t\ttokenA && tokenB && !tokenA.equals(tokenB)\n\t\t\t\t\t? Pair.getAddress(tokenA, tokenB)\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t[tokens],\n\t)\n\n\tconst results = useMultipleContractSingleData(pairAddresses, PAIR_INTERFACE, 'getReserves')\n\n\treturn useMemo(\n\t\t() =>\n\t\t\tresults.map((result, i) => {\n\t\t\t\tconst { result: reserves, loading } = result\n\t\t\t\tconst tokenA = tokens[i][0]\n\t\t\t\tconst tokenB = tokens[i][1]\n\n\t\t\t\tif (loading) return [PairState.LOADING, null]\n\t\t\t\tif (!tokenA || !tokenB || tokenA.equals(tokenB)) return [PairState.INVALID, null]\n\t\t\t\tif (!reserves) return [PairState.NOT_EXISTS, null]\n\t\t\t\tconst { reserve0, reserve1 } = reserves\n\t\t\t\tconst [token0, token1] = tokenA.sortsBefore(tokenB)\n\t\t\t\t\t? [tokenA, tokenB]\n\t\t\t\t\t: [tokenB, tokenA]\n\t\t\t\treturn [\n\t\t\t\t\tPairState.EXISTS,\n\t\t\t\t\tnew Pair(\n\t\t\t\t\t\tnew TokenAmount(token0, reserve0.toString()),\n\t\t\t\t\t\tnew TokenAmount(token1, reserve1.toString()),\n\t\t\t\t\t),\n\t\t\t\t]\n\t\t\t}),\n\t\t[results, tokens],\n\t)\n}\n\nexport function usePair(tokenA?: Currency, tokenB?: Currency): [PairState, Pair | null] {\n\treturn usePairs([[tokenA, tokenB]])[0]\n}\n","import { Token, TokenAmount } from 'sdk-hoosmartchain'\nimport { useMemo } from 'react'\n\nimport { useTokenContract } from '../hooks/useContract'\nimport { useSingleCallResult } from '../state/multicall/hooks'\n\nexport function useTokenAllowance(\n\ttoken?: Token,\n\towner?: string,\n\tspender?: string,\n): TokenAmount | undefined {\n\tconst contract = useTokenContract(token?.address, false)\n\n\t// console.log(token, owner, spender)\n\n\tconst inputs = useMemo(() => [owner, spender], [owner, spender])\n\tconst allowance = useSingleCallResult(contract, 'allowance', inputs).result\n\n\treturn useMemo(\n\t\t() => (token && allowance ? new TokenAmount(token, allowance.toString()) : undefined),\n\t\t[token, allowance],\n\t)\n}\n\nexport default useTokenAllowance\n","import { createAction } from '@reduxjs/toolkit'\n\nexport enum Field {\n\tINPUT = 'INPUT',\n\tOUTPUT = 'OUTPUT',\n}\n\nexport const selectCurrency = createAction<{ field: Field; currencyId: string }>(\n\t'swap/selectCurrency',\n)\nexport const switchCurrencies = createAction('swap/switchCurrencies')\nexport const typeInput = createAction<{ field: Field; typedValue: string }>('swap/typeInput')\nexport const replaceSwapState = createAction<{\n\tfield: Field\n\ttypedValue: string\n\tinputCurrencyId?: string\n\toutputCurrencyId?: string\n\trecipient: string | null\n}>('swap/replaceSwapState')\nexport const setRecipient = createAction<{ recipient: string | null }>('swap/setRecipient')\n","import { createAction } from '@reduxjs/toolkit'\nimport { ChainId } from 'sdk-hoosmartchain'\n\nexport interface SerializableTransactionReceipt {\n\tto: string\n\tfrom: string\n\tcontractAddress: string\n\ttransactionIndex: number\n\tblockHash: string\n\ttransactionHash: string\n\tblockNumber: number\n\tstatus?: number\n}\n\nexport const addTransaction = createAction<{\n\tchainId: ChainId\n\thash: string\n\tfrom: string\n\tapproval?: { tokenAddress: string; spender: string }\n\tsummary?: string\n}>('transactions/addTransaction')\nexport const clearAllTransactions = createAction<{ chainId: ChainId }>(\n\t'transactions/clearAllTransactions',\n)\nexport const finalizeTransaction = createAction<{\n\tchainId: ChainId\n\thash: string\n\treceipt: SerializableTransactionReceipt\n}>('transactions/finalizeTransaction')\nexport const checkedTransaction = createAction<{\n\tchainId: ChainId\n\thash: string\n\tblockNumber: number\n}>('transactions/checkedTransaction')\n","import { TransactionResponse } from '@ethersproject/providers'\nimport { useCallback, useMemo } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { useActiveWeb3React } from '../../hooks'\nimport { AppDispatch, AppState } from '../index'\nimport { addTransaction } from './actions'\nimport { TransactionDetails } from './reducer'\n\n// helper that can take a ethers library transaction response and add it to the list of transactions\nexport function useTransactionAdder(): (\n\tresponse: TransactionResponse,\n\tcustomData?: { summary?: string; approval?: { tokenAddress: string; spender: string } },\n) => void {\n\tconst { chainId, account } = useActiveWeb3React()\n\tconst dispatch = useDispatch()\n\n\treturn useCallback(\n\t\t(\n\t\t\tresponse: TransactionResponse,\n\t\t\t{\n\t\t\t\tsummary,\n\t\t\t\tapproval,\n\t\t\t}: { summary?: string; approval?: { tokenAddress: string; spender: string } } = {},\n\t\t) => {\n\t\t\tif (!account) return\n\t\t\tif (!chainId) return\n\n\t\t\tconst { hash } = response\n\t\t\tif (!hash) {\n\t\t\t\tthrow Error('No transaction hash found.')\n\t\t\t}\n\t\t\tdispatch(addTransaction({ hash, from: account, chainId, approval, summary }))\n\t\t},\n\t\t[dispatch, chainId, account],\n\t)\n}\n\n// returns all the transactions for the current chain\nexport function useAllTransactions(): { [txHash: string]: TransactionDetails } {\n\tconst { chainId } = useActiveWeb3React()\n\n\tconst state = useSelector((s) => s.transactions)\n\n\treturn chainId ? state[chainId] ?? {} : {}\n}\n\nexport function useIsTransactionPending(transactionHash?: string): boolean {\n\tconst transactions = useAllTransactions()\n\n\tif (!transactionHash || !transactions[transactionHash]) return false\n\n\treturn !transactions[transactionHash].receipt\n}\n\n/**\n * Returns whether a transaction happened in the last day (86400 seconds * 1000 milliseconds / second)\n * @param tx to check for recency\n */\nexport function isTransactionRecent(tx: TransactionDetails): boolean {\n\treturn new Date().getTime() - tx.addedTime < 86_400_000\n}\n\n// returns whether a token has a pending approval transaction\nexport function useHasPendingApproval(\n\ttokenAddress: string | undefined,\n\tspender: string | undefined,\n): boolean {\n\tconst allTransactions = useAllTransactions()\n\treturn useMemo(\n\t\t() =>\n\t\t\ttypeof tokenAddress === 'string' &&\n\t\t\ttypeof spender === 'string' &&\n\t\t\tObject.keys(allTransactions).some((hash) => {\n\t\t\t\tconst tx = allTransactions[hash]\n\t\t\t\tif (!tx) return false\n\t\t\t\tif (tx.receipt) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst { approval } = tx\n\t\t\t\tif (!approval) return false\n\t\t\t\treturn (\n\t\t\t\t\tapproval.spender === spender &&\n\t\t\t\t\tapproval.tokenAddress === tokenAddress &&\n\t\t\t\t\tisTransactionRecent(tx)\n\t\t\t\t)\n\t\t\t}),\n\t\t[allTransactions, spender, tokenAddress],\n\t)\n}\n","import { CurrencyAmount, Fraction, JSBI, Percent, TokenAmount, Trade } from 'sdk-hoosmartchain'\nimport {\n\tBLOCKED_PRICE_IMPACT_NON_EXPERT,\n\tALLOWED_PRICE_IMPACT_HIGH,\n\tALLOWED_PRICE_IMPACT_LOW,\n\tALLOWED_PRICE_IMPACT_MEDIUM,\n} from '../constants'\n\nimport { Field } from '../state/swap/actions'\nimport { basisPointsToPercent } from './index'\n\nconst BASE_FEE = new Percent(JSBI.BigInt(20), JSBI.BigInt(10000))\nconst ONE_HUNDRED_PERCENT = new Percent(JSBI.BigInt(10000), JSBI.BigInt(10000))\nconst INPUT_FRACTION_AFTER_FEE = ONE_HUNDRED_PERCENT.subtract(BASE_FEE)\n\n// computes price breakdown for the trade\nexport function computeTradePriceBreakdown(\n\ttrade?: Trade,\n): { priceImpactWithoutFee?: Percent; realizedLPFee?: CurrencyAmount } {\n\t// for each hop in our trade, take away the x*y=k price impact from 0.2% fees\n\t// e.g. for 3 tokens/2 hops: 1 - ((1 - .02) * (1-.02))\n\tconst realizedLPFee = !trade\n\t\t? undefined\n\t\t: ONE_HUNDRED_PERCENT.subtract(\n\t\t\t\ttrade.route.pairs.reduce(\n\t\t\t\t\t(currentFee: Fraction): Fraction =>\n\t\t\t\t\t\tcurrentFee.multiply(INPUT_FRACTION_AFTER_FEE),\n\t\t\t\t\tONE_HUNDRED_PERCENT,\n\t\t\t\t),\n\t\t )\n\n\t// remove lp fees from price impact\n\tconst priceImpactWithoutFeeFraction =\n\t\ttrade && realizedLPFee ? trade.priceImpact.subtract(realizedLPFee) : undefined\n\n\t// the x*y=k impact\n\tconst priceImpactWithoutFeePercent = priceImpactWithoutFeeFraction\n\t\t? new Percent(\n\t\t\t\tpriceImpactWithoutFeeFraction?.numerator,\n\t\t\t\tpriceImpactWithoutFeeFraction?.denominator,\n\t\t )\n\t\t: undefined\n\n\t// the amount of the input that accrues to LPs\n\tconst realizedLPFeeAmount =\n\t\trealizedLPFee &&\n\t\ttrade &&\n\t\t(trade.inputAmount instanceof TokenAmount\n\t\t\t? new TokenAmount(\n\t\t\t\t\ttrade.inputAmount.token,\n\t\t\t\t\trealizedLPFee.multiply(trade.inputAmount.raw).quotient,\n\t\t\t )\n\t\t\t: CurrencyAmount.ether(realizedLPFee.multiply(trade.inputAmount.raw).quotient))\n\n\treturn {\n\t\tpriceImpactWithoutFee: priceImpactWithoutFeePercent,\n\t\trealizedLPFee: realizedLPFeeAmount,\n\t}\n}\n\n// computes the minimum amount out and maximum amount in for a trade given a user specified allowed slippage in bips\nexport function computeSlippageAdjustedAmounts(\n\ttrade: Trade | undefined,\n\tallowedSlippage: number,\n): { [field in Field]?: CurrencyAmount } {\n\tconst pct = basisPointsToPercent(allowedSlippage)\n\treturn {\n\t\t[Field.INPUT]: trade?.maximumAmountIn(pct),\n\t\t[Field.OUTPUT]: trade?.minimumAmountOut(pct),\n\t}\n}\n\nexport function warningSeverity(priceImpact: Percent | undefined): 0 | 1 | 2 | 3 | 4 {\n\tif (!priceImpact?.lessThan(BLOCKED_PRICE_IMPACT_NON_EXPERT)) return 4\n\tif (!priceImpact?.lessThan(ALLOWED_PRICE_IMPACT_HIGH)) return 3\n\tif (!priceImpact?.lessThan(ALLOWED_PRICE_IMPACT_MEDIUM)) return 2\n\tif (!priceImpact?.lessThan(ALLOWED_PRICE_IMPACT_LOW)) return 1\n\treturn 0\n}\n\nexport function formatExecutionPrice(trade?: Trade, inverted?: boolean): string {\n\tif (!trade) {\n\t\treturn ''\n\t}\n\treturn inverted\n\t\t? `${trade.executionPrice.invert().toSignificant(6)} ${\n\t\t\t\ttrade.inputAmount.currency.symbol\n\t\t } / ${trade.outputAmount.currency.symbol}`\n\t\t: `${trade.executionPrice.toSignificant(6)} ${trade.outputAmount.currency.symbol} / ${\n\t\t\t\ttrade.inputAmount.currency.symbol\n\t\t }`\n}\n","import { MaxUint256 } from '@ethersproject/constants'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { Trade, TokenAmount, CurrencyAmount, ETHER } from 'sdk-hoosmartchain'\nimport { useCallback, useMemo } from 'react'\nimport { ROUTER_ADDRESS } from '../constants'\nimport { useTokenAllowance } from '../data/Allowances'\nimport { Field } from '../state/swap/actions'\nimport { useTransactionAdder, useHasPendingApproval } from '../state/transactions/hooks'\nimport { computeSlippageAdjustedAmounts } from '../utils/prices'\nimport { calculateGasMargin } from '../utils'\nimport { useTokenContract } from './useContract'\nimport { useActiveWeb3React } from './index'\n\nexport enum ApprovalState {\n\tUNKNOWN,\n\tNOT_APPROVED,\n\tPENDING,\n\tAPPROVED,\n}\n\n// returns a variable indicating the state of the approval and a function which approves if necessary or early returns\nexport function useApproveCallback(\n\tamountToApprove?: CurrencyAmount,\n\tspender?: string,\n): [ApprovalState, () => Promise] {\n\t// console.log(amountToApprove)\n\t// console.log(spender)\n\n\tconst { account } = useActiveWeb3React()\n\tconst token = amountToApprove instanceof TokenAmount ? amountToApprove.token : undefined\n\tconst currentAllowance = useTokenAllowance(token, account ?? undefined, spender)\n\tconst pendingApproval = useHasPendingApproval(token?.address, spender)\n\n\t// check the current approval status\n\tconst approvalState: ApprovalState = useMemo(() => {\n\t\tif (!amountToApprove || !spender) return ApprovalState.UNKNOWN\n\t\tif (amountToApprove.currency === ETHER) return ApprovalState.APPROVED\n\t\t// we might not have enough data to know whether or not we need to approve\n\t\tif (!currentAllowance) return ApprovalState.UNKNOWN\n\n\t\t// amountToApprove will be defined if currentAllowance is\n\t\treturn currentAllowance.lessThan(amountToApprove)\n\t\t\t? pendingApproval\n\t\t\t\t? ApprovalState.PENDING\n\t\t\t\t: ApprovalState.NOT_APPROVED\n\t\t\t: ApprovalState.APPROVED\n\t}, [amountToApprove, currentAllowance, pendingApproval, spender])\n\n\tconst tokenContract = useTokenContract(token?.address)\n\tconst addTransaction = useTransactionAdder()\n\n\tconst approve = useCallback(async (): Promise => {\n\t\tif (approvalState !== ApprovalState.NOT_APPROVED) {\n\t\t\tconsole.error('approve was called unnecessarily')\n\t\t\treturn\n\t\t}\n\t\tif (!token) {\n\t\t\tconsole.error('no token')\n\t\t\treturn\n\t\t}\n\n\t\tif (!tokenContract) {\n\t\t\tconsole.error('tokenContract is null')\n\t\t\treturn\n\t\t}\n\n\t\tif (!amountToApprove) {\n\t\t\tconsole.error('missing amount to approve')\n\t\t\treturn\n\t\t}\n\n\t\tif (!spender) {\n\t\t\tconsole.error('no spender')\n\t\t\treturn\n\t\t}\n\n\t\tlet useExact = false\n\t\tconst estimatedGas = await tokenContract.estimateGas\n\t\t\t.approve(spender, MaxUint256)\n\t\t\t.catch(() => {\n\t\t\t\t// general fallback for tokens who restrict approval amounts\n\t\t\t\tuseExact = true\n\t\t\t\treturn tokenContract.estimateGas.approve(spender, amountToApprove.raw.toString())\n\t\t\t})\n\n\t\t// eslint-disable-next-line consistent-return\n\t\treturn tokenContract\n\t\t\t.approve(spender, useExact ? amountToApprove.raw.toString() : MaxUint256, {\n\t\t\t\tgasLimit: calculateGasMargin(estimatedGas),\n\t\t\t})\n\t\t\t.then((response: TransactionResponse) => {\n\t\t\t\taddTransaction(response, {\n\t\t\t\t\tsummary: `Approve ${amountToApprove.currency.symbol}`,\n\t\t\t\t\tapproval: { tokenAddress: token.address, spender },\n\t\t\t\t})\n\t\t\t})\n\t\t\t.catch((error: Error) => {\n\t\t\t\tconsole.error('Failed to approve token', error)\n\t\t\t\tthrow error\n\t\t\t})\n\t}, [approvalState, token, tokenContract, amountToApprove, spender, addTransaction])\n\n\treturn [approvalState, approve]\n}\n\n// wraps useApproveCallback in the context of a swap\nexport function useApproveCallbackFromTrade(trade?: Trade, allowedSlippage = 0) {\n\tconst amountToApprove = useMemo(\n\t\t() =>\n\t\t\ttrade ? computeSlippageAdjustedAmounts(trade, allowedSlippage)[Field.INPUT] : undefined,\n\t\t[trade, allowedSlippage],\n\t)\n\treturn useApproveCallback(amountToApprove, ROUTER_ADDRESS)\n}\n","import { createAction } from '@reduxjs/toolkit'\n\nexport enum Field {\n\tCURRENCY_A = 'CURRENCY_A',\n\tCURRENCY_B = 'CURRENCY_B',\n}\n\nexport const typeInput = createAction<{ field: Field; typedValue: string; noLiquidity: boolean }>(\n\t'mint/typeInputMint',\n)\nexport const resetMintState = createAction('mint/resetMintState')\n","import { useEffect, useState } from 'react'\n\n// modified from https://usehooks.com/useDebounce/\nexport default function useDebounce(value: T, delay: number): T {\n\tconst [debouncedValue, setDebouncedValue] = useState(value)\n\n\tuseEffect(() => {\n\t\t// Update debounced value after delay\n\t\tconst handler = setTimeout(() => {\n\t\t\tsetDebouncedValue(value)\n\t\t}, delay)\n\n\t\t// Cancel the timeout if value changes (also on delay change or unmount)\n\t\t// This is how we prevent debounced value from updating if value is changed ...\n\t\t// .. within the delay period. Timeout gets cleared and restarted.\n\t\treturn () => {\n\t\t\tclearTimeout(handler)\n\t\t}\n\t}, [value, delay])\n\n\treturn debouncedValue\n}\n","import { isAddress } from '../utils'\nimport useENSAddress from './useENSAddress'\nimport useENSName from './useENSName'\n\n/**\n * Given a name or address, does a lookup to resolve to an address and name\n * @param nameOrAddress ENS name or address\n */\nexport default function useENS(\n\tnameOrAddress?: string | null,\n): { loading: boolean; address: string | null; name: string | null } {\n\tconst validated = isAddress(nameOrAddress)\n\tconst reverseLookup = useENSName(validated || undefined)\n\tconst lookup = useENSAddress(nameOrAddress)\n\n\treturn {\n\t\tloading: reverseLookup.loading || lookup.loading,\n\t\taddress: validated || lookup.address,\n\t\tname: reverseLookup.ENSName\n\t\t\t? reverseLookup.ENSName\n\t\t\t: !validated && lookup.address\n\t\t\t? nameOrAddress || null\n\t\t\t: null,\n\t}\n}\n","import { namehash } from 'ethers/lib/utils'\nimport { useMemo } from 'react'\nimport { useSingleCallResult } from '../state/multicall/hooks'\nimport { isAddress } from '../utils'\nimport isZero from '../utils/isZero'\nimport { useENSRegistrarContract, useENSResolverContract } from './useContract'\nimport useDebounce from './useDebounce'\n\n/**\n * Does a reverse lookup for an address to find its ENS name.\n * Note this is not the same as looking up an ENS name to find an address.\n */\nexport default function useENSName(address?: string): { ENSName: string | null; loading: boolean } {\n\tconst debouncedAddress = useDebounce(address, 200)\n\tconst ensNodeArgument = useMemo(() => {\n\t\tif (!debouncedAddress || !isAddress(debouncedAddress)) return [undefined]\n\t\ttry {\n\t\t\treturn debouncedAddress\n\t\t\t\t? [namehash(`${debouncedAddress.toLowerCase().substr(2)}.addr.reverse`)]\n\t\t\t\t: [undefined]\n\t\t} catch (error) {\n\t\t\treturn [undefined]\n\t\t}\n\t}, [debouncedAddress])\n\tconst registrarContract = useENSRegistrarContract(false)\n\tconst resolverAddress = useSingleCallResult(registrarContract, 'resolver', ensNodeArgument)\n\tconst resolverAddressResult = resolverAddress.result?.[0]\n\tconst resolverContract = useENSResolverContract(\n\t\tresolverAddressResult && !isZero(resolverAddressResult) ? resolverAddressResult : undefined,\n\t\tfalse,\n\t)\n\tconst name = useSingleCallResult(resolverContract, 'name', ensNodeArgument)\n\n\tconst changed = debouncedAddress !== address\n\treturn {\n\t\tENSName: changed ? null : name.result?.[0] ?? null,\n\t\tloading: changed || resolverAddress.loading || name.loading,\n\t}\n}\n","import { namehash } from 'ethers/lib/utils'\nimport { useMemo } from 'react'\nimport { useSingleCallResult } from '../state/multicall/hooks'\nimport isZero from '../utils/isZero'\nimport { useENSRegistrarContract, useENSResolverContract } from './useContract'\nimport useDebounce from './useDebounce'\n\n/**\n * Does a lookup for an ENS name to find its address.\n */\nexport default function useENSAddress(\n\tensName?: string | null,\n): { loading: boolean; address: string | null } {\n\tconst debouncedName = useDebounce(ensName, 200)\n\tconst ensNodeArgument = useMemo(() => {\n\t\tif (!debouncedName) return [undefined]\n\t\ttry {\n\t\t\treturn debouncedName ? [namehash(debouncedName)] : [undefined]\n\t\t} catch (error) {\n\t\t\treturn [undefined]\n\t\t}\n\t}, [debouncedName])\n\tconst registrarContract = useENSRegistrarContract(false)\n\tconst resolverAddress = useSingleCallResult(registrarContract, 'resolver', ensNodeArgument)\n\tconst resolverAddressResult = resolverAddress.result?.[0]\n\tconst resolverContract = useENSResolverContract(\n\t\tresolverAddressResult && !isZero(resolverAddressResult) ? resolverAddressResult : undefined,\n\t\tfalse,\n\t)\n\tconst addr = useSingleCallResult(resolverContract, 'addr', ensNodeArgument)\n\n\tconst changed = debouncedName !== ensName\n\treturn {\n\t\taddress: changed ? null : addr.result?.[0] ?? null,\n\t\tloading: changed || resolverAddress.loading || addr.loading,\n\t}\n}\n","import { Currency, CurrencyAmount, Pair, Token, Trade } from 'sdk-hoosmartchain'\nimport flatMap from 'lodash.flatmap'\nimport { useMemo } from 'react'\n\nimport { BASES_TO_CHECK_TRADES_AGAINST, CUSTOM_BASES } from '../constants'\nimport { PairState, usePairs } from '../data/Reserves'\nimport { wrappedCurrency } from '../utils/wrappedCurrency'\n\nimport { useActiveWeb3React } from './index'\n\nfunction useAllCommonPairs(currencyA?: Currency, currencyB?: Currency): Pair[] {\n\tconst { chainId } = useActiveWeb3React()\n\n\t// Base tokens for building intermediary trading routes\n\tconst bases: Token[] = useMemo(() => (chainId ? BASES_TO_CHECK_TRADES_AGAINST[chainId] : []), [\n\t\tchainId,\n\t])\n\n\t// All pairs from base tokens\n\tconst basePairs: [Token, Token][] = useMemo(\n\t\t() =>\n\t\t\tflatMap(bases, (base): [Token, Token][] =>\n\t\t\t\tbases.map((otherBase) => [base, otherBase]),\n\t\t\t).filter(([t0, t1]) => t0.address !== t1.address),\n\t\t[bases],\n\t)\n\n\tconst [tokenA, tokenB] = chainId\n\t\t? [wrappedCurrency(currencyA, chainId), wrappedCurrency(currencyB, chainId)]\n\t\t: [undefined, undefined]\n\n\tconst allPairCombinations: [Token, Token][] = useMemo(\n\t\t() =>\n\t\t\ttokenA && tokenB\n\t\t\t\t? [\n\t\t\t\t\t\t// the direct pair\n\t\t\t\t\t\t[tokenA, tokenB],\n\t\t\t\t\t\t// token A against all bases\n\t\t\t\t\t\t...bases.map((base): [Token, Token] => [tokenA, base]),\n\t\t\t\t\t\t// token B against all bases\n\t\t\t\t\t\t...bases.map((base): [Token, Token] => [tokenB, base]),\n\t\t\t\t\t\t// each base against all bases\n\t\t\t\t\t\t...basePairs,\n\t\t\t\t ]\n\t\t\t\t\t\t.filter((tokens): tokens is [Token, Token] =>\n\t\t\t\t\t\t\tBoolean(tokens[0] && tokens[1]),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.filter(([t0, t1]) => t0.address !== t1.address)\n\t\t\t\t\t\t// This filter will remove all the pairs that are not supported by the CUSTOM_BASES settings\n\t\t\t\t\t\t// This option is currently not used on Pancake swap\n\t\t\t\t\t\t.filter(([t0, t1]) => {\n\t\t\t\t\t\t\tif (!chainId) return true\n\t\t\t\t\t\t\tconst customBases = CUSTOM_BASES[chainId]\n\t\t\t\t\t\t\tif (!customBases) return true\n\n\t\t\t\t\t\t\tconst customBasesA: Token[] | undefined = customBases[t0.address]\n\t\t\t\t\t\t\tconst customBasesB: Token[] | undefined = customBases[t1.address]\n\n\t\t\t\t\t\t\tif (!customBasesA && !customBasesB) return true\n\t\t\t\t\t\t\tif (customBasesA && !customBasesA.find((base) => t1.equals(base)))\n\t\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t\tif (customBasesB && !customBasesB.find((base) => t0.equals(base)))\n\t\t\t\t\t\t\t\treturn false\n\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t})\n\t\t\t\t: [],\n\t\t[tokenA, tokenB, bases, basePairs, chainId],\n\t)\n\n\tconst allPairs = usePairs(allPairCombinations)\n\n\t// only pass along valid pairs, non-duplicated pairs\n\treturn useMemo(\n\t\t() =>\n\t\t\tObject.values(\n\t\t\t\tallPairs\n\t\t\t\t\t// filter out invalid pairs\n\t\t\t\t\t.filter((result): result is [PairState.EXISTS, Pair] =>\n\t\t\t\t\t\tBoolean(result[0] === PairState.EXISTS && result[1]),\n\t\t\t\t\t)\n\t\t\t\t\t// filter out duplicated pairs\n\t\t\t\t\t.reduce<{ [pairAddress: string]: Pair }>((memo, [, curr]) => {\n\t\t\t\t\t\tmemo[curr.liquidityToken.address] =\n\t\t\t\t\t\t\tmemo[curr.liquidityToken.address] ?? curr\n\t\t\t\t\t\treturn memo\n\t\t\t\t\t}, {}),\n\t\t\t),\n\t\t[allPairs],\n\t)\n}\n\n/**\n * Returns the best trade for the exact amount of tokens in to the given token out\n */\nexport function useTradeExactIn(\n\tcurrencyAmountIn?: CurrencyAmount,\n\tcurrencyOut?: Currency,\n): Trade | null {\n\tconst allowedPairs = useAllCommonPairs(currencyAmountIn?.currency, currencyOut)\n\n\treturn useMemo(() => {\n\t\tif (currencyAmountIn && currencyOut && allowedPairs.length > 0) {\n\t\t\treturn (\n\t\t\t\tTrade.bestTradeExactIn(allowedPairs, currencyAmountIn, currencyOut, {\n\t\t\t\t\tmaxHops: 3,\n\t\t\t\t\tmaxNumResults: 1,\n\t\t\t\t})[0] ?? null\n\t\t\t)\n\t\t}\n\t\treturn null\n\t}, [allowedPairs, currencyAmountIn, currencyOut])\n}\n\n/**\n * Returns the best trade for the token in to the exact amount of token out\n */\nexport function useTradeExactOut(\n\tcurrencyIn?: Currency,\n\tcurrencyAmountOut?: CurrencyAmount,\n): Trade | null {\n\tconst allowedPairs = useAllCommonPairs(currencyIn, currencyAmountOut?.currency)\n\n\treturn useMemo(() => {\n\t\tif (currencyIn && currencyAmountOut && allowedPairs.length > 0) {\n\t\t\treturn (\n\t\t\t\tTrade.bestTradeExactOut(allowedPairs, currencyIn, currencyAmountOut, {\n\t\t\t\t\tmaxHops: 3,\n\t\t\t\t\tmaxNumResults: 1,\n\t\t\t\t})[0] ?? null\n\t\t\t)\n\t\t}\n\t\treturn null\n\t}, [allowedPairs, currencyIn, currencyAmountOut])\n}\n","import { parseUnits } from '@ethersproject/units'\nimport {\n\tCurrency,\n\tCurrencyAmount,\n\tETHER,\n\tJSBI,\n\tToken,\n\tTokenAmount,\n\tTrade,\n} from 'sdk-hoosmartchain'\nimport { ParsedQs } from 'qs'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport useENS from '../../hooks/useENS'\nimport { useActiveWeb3React } from '../../hooks'\nimport { useCurrency } from '../../hooks/Tokens'\nimport { useTradeExactIn, useTradeExactOut } from '../../hooks/Trades'\nimport useParsedQueryString from '../../hooks/useParsedQueryString'\nimport { isAddress } from '../../utils'\nimport { AppDispatch, AppState } from '../index'\nimport { useCurrencyBalances } from '../wallet/hooks'\nimport {\n\tField,\n\treplaceSwapState,\n\tselectCurrency,\n\tsetRecipient,\n\tswitchCurrencies,\n\ttypeInput,\n} from './actions'\nimport { SwapState } from './reducer'\n\nimport { useUserSlippageTolerance } from '../user/hooks'\nimport { computeSlippageAdjustedAmounts } from '../../utils/prices'\n\nexport function useSwapState(): AppState['swap'] {\n\treturn useSelector((state) => state.swap)\n}\n\nexport function useSwapActionHandlers(): {\n\tonCurrencySelection: (field: Field, currency: Currency) => void\n\tonSwitchTokens: () => void\n\tonUserInput: (field: Field, typedValue: string) => void\n\tonChangeRecipient: (recipient: string | null) => void\n} {\n\tconst dispatch = useDispatch()\n\tconst onCurrencySelection = useCallback(\n\t\t(field: Field, currency: Currency) => {\n\t\t\tdispatch(\n\t\t\t\tselectCurrency({\n\t\t\t\t\tfield,\n\t\t\t\t\tcurrencyId:\n\t\t\t\t\t\tcurrency instanceof Token\n\t\t\t\t\t\t\t? currency.address\n\t\t\t\t\t\t\t: currency === ETHER\n\t\t\t\t\t\t\t? 'BNB'\n\t\t\t\t\t\t\t: '',\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\t[dispatch],\n\t)\n\n\tconst onSwitchTokens = useCallback(() => {\n\t\tdispatch(switchCurrencies())\n\t}, [dispatch])\n\n\tconst onUserInput = useCallback(\n\t\t(field: Field, typedValue: string) => {\n\t\t\tdispatch(typeInput({ field, typedValue }))\n\t\t},\n\t\t[dispatch],\n\t)\n\n\tconst onChangeRecipient = useCallback(\n\t\t(recipient: string | null) => {\n\t\t\tdispatch(setRecipient({ recipient }))\n\t\t},\n\t\t[dispatch],\n\t)\n\n\treturn {\n\t\tonSwitchTokens,\n\t\tonCurrencySelection,\n\t\tonUserInput,\n\t\tonChangeRecipient,\n\t}\n}\n\n// try to parse a user entered amount for a given token\nexport function tryParseAmount(value?: string, currency?: Currency): CurrencyAmount | undefined {\n\tif (!value || !currency) {\n\t\treturn undefined\n\t}\n\ttry {\n\t\tconst typedValueParsed = parseUnits(value, currency.decimals).toString()\n\t\tif (typedValueParsed !== '0') {\n\t\t\treturn currency instanceof Token\n\t\t\t\t? new TokenAmount(currency, JSBI.BigInt(typedValueParsed))\n\t\t\t\t: CurrencyAmount.ether(JSBI.BigInt(typedValueParsed))\n\t\t}\n\t} catch (error) {\n\t\t// should fail if the user specifies too many decimal places of precision (or maybe exceed max uint?)\n\t\tconsole.info(`Failed to parse input amount: \"${value}\"`, error)\n\t}\n\t// necessary for all paths to return a value\n\treturn undefined\n}\n\nconst BAD_RECIPIENT_ADDRESSES: string[] = [\n\t'0xBCfCcbde45cE874adCB698cC183deBcF17952812', // v2 factory\n\t'0xf164fC0Ec4E93095b804a4795bBe1e041497b92a', // v2 router 01\n\t'0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F', // v2 router 02\n]\n\n/**\n * Returns true if any of the pairs or tokens in a trade have the given checksummed address\n * @param trade to check for the given address\n * @param checksummedAddress address to check in the pairs and tokens\n */\nfunction involvesAddress(trade: Trade, checksummedAddress: string): boolean {\n\treturn (\n\t\ttrade.route.path.some((token) => token.address === checksummedAddress) ||\n\t\ttrade.route.pairs.some((pair) => pair.liquidityToken.address === checksummedAddress)\n\t)\n}\n\n// from the current swap inputs, compute the best trade and return it.\nexport function useDerivedSwapInfo(): {\n\tcurrencies: { [field in Field]?: Currency }\n\tcurrencyBalances: { [field in Field]?: CurrencyAmount }\n\tparsedAmount: CurrencyAmount | undefined\n\tv2Trade: Trade | undefined\n\tinputError?: string\n} {\n\tconst { account } = useActiveWeb3React()\n\n\tconst {\n\t\tindependentField,\n\t\ttypedValue,\n\t\t[Field.INPUT]: { currencyId: inputCurrencyId },\n\t\t[Field.OUTPUT]: { currencyId: outputCurrencyId },\n\t\trecipient,\n\t} = useSwapState()\n\n\tconst inputCurrency = useCurrency(inputCurrencyId)\n\tconst outputCurrency = useCurrency(outputCurrencyId)\n\tconst recipientLookup = useENS(recipient ?? undefined)\n\tconst to: string | null = (recipient === null ? account : recipientLookup.address) ?? null\n\n\tconst relevantTokenBalances = useCurrencyBalances(account ?? undefined, [\n\t\tinputCurrency ?? undefined,\n\t\toutputCurrency ?? undefined,\n\t])\n\n\tconst isExactIn: boolean = independentField === Field.INPUT\n\tconst parsedAmount = tryParseAmount(\n\t\ttypedValue,\n\t\t(isExactIn ? inputCurrency : outputCurrency) ?? undefined,\n\t)\n\n\tconst bestTradeExactIn = useTradeExactIn(\n\t\tisExactIn ? parsedAmount : undefined,\n\t\toutputCurrency ?? undefined,\n\t)\n\tconst bestTradeExactOut = useTradeExactOut(\n\t\tinputCurrency ?? undefined,\n\t\t!isExactIn ? parsedAmount : undefined,\n\t)\n\n\tconst v2Trade = isExactIn ? bestTradeExactIn : bestTradeExactOut\n\n\tconst currencyBalances = {\n\t\t[Field.INPUT]: relevantTokenBalances[0],\n\t\t[Field.OUTPUT]: relevantTokenBalances[1],\n\t}\n\n\tconst currencies: { [field in Field]?: Currency } = {\n\t\t[Field.INPUT]: inputCurrency ?? undefined,\n\t\t[Field.OUTPUT]: outputCurrency ?? undefined,\n\t}\n\n\tlet inputError: string | undefined\n\tif (!account) {\n\t\tinputError = 'Connect Wallet'\n\t}\n\n\tif (!parsedAmount) {\n\t\tinputError = inputError ?? 'Enter an amount'\n\t}\n\n\tif (!currencies[Field.INPUT] || !currencies[Field.OUTPUT]) {\n\t\tinputError = inputError ?? 'Select a token'\n\t}\n\n\tconst formattedTo = isAddress(to)\n\tif (!to || !formattedTo) {\n\t\tinputError = inputError ?? 'Enter a recipient'\n\t} else if (\n\t\tBAD_RECIPIENT_ADDRESSES.indexOf(formattedTo) !== -1 ||\n\t\t(bestTradeExactIn && involvesAddress(bestTradeExactIn, formattedTo)) ||\n\t\t(bestTradeExactOut && involvesAddress(bestTradeExactOut, formattedTo))\n\t) {\n\t\tinputError = inputError ?? 'Invalid recipient'\n\t}\n\n\tconst [allowedSlippage] = useUserSlippageTolerance()\n\n\tconst slippageAdjustedAmounts =\n\t\tv2Trade && allowedSlippage && computeSlippageAdjustedAmounts(v2Trade, allowedSlippage)\n\n\t// compare input balance to max input based on version\n\tconst [balanceIn, amountIn] = [\n\t\tcurrencyBalances[Field.INPUT],\n\t\tslippageAdjustedAmounts ? slippageAdjustedAmounts[Field.INPUT] : null,\n\t]\n\n\tif (balanceIn && amountIn && balanceIn.lessThan(amountIn)) {\n\t\tinputError = `Insufficient ${amountIn.currency.symbol} balance`\n\t}\n\n\treturn {\n\t\tcurrencies,\n\t\tcurrencyBalances,\n\t\tparsedAmount,\n\t\tv2Trade: v2Trade ?? undefined,\n\t\tinputError,\n\t}\n}\n\nfunction parseCurrencyFromURLParameter(urlParam: any, isInput = false): string {\n\tif (typeof urlParam === 'string') {\n\t\tconst valid = isAddress(urlParam)\n\t\tif (valid) return valid\n\t\tif (urlParam.toUpperCase() === 'BNB') return 'BNB'\n\t\tif (valid === false) return 'BNB'\n\t}\n\n\t// if (window.location.hash === '#/wrap') {\n\t// \treturn isInput ? SAFEMOON_TOKEN_ADDRESS : WSAFEMOON_TOKEN_ADDRESS\n\t// }\n\n\treturn 'BNB' ?? ''\n}\n\nfunction parseTokenAmountURLParameter(urlParam: any): string {\n\t// eslint-disable-next-line no-restricted-globals\n\treturn typeof urlParam === 'string' && !isNaN(parseFloat(urlParam)) ? urlParam : ''\n}\n\nfunction parseIndependentFieldURLParameter(urlParam: any): Field {\n\treturn typeof urlParam === 'string' && urlParam.toLowerCase() === 'output'\n\t\t? Field.OUTPUT\n\t\t: Field.INPUT\n}\n\nconst ENS_NAME_REGEX = /^[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)?$/\nconst ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/\nfunction validatedRecipient(recipient: any): string | null {\n\tif (typeof recipient !== 'string') return null\n\tconst address = isAddress(recipient)\n\tif (address) return address\n\tif (ENS_NAME_REGEX.test(recipient)) return recipient\n\tif (ADDRESS_REGEX.test(recipient)) return recipient\n\treturn null\n}\n\nexport function queryParametersToSwapState(parsedQs: ParsedQs): SwapState {\n\tlet inputCurrency = parseCurrencyFromURLParameter(parsedQs.inputCurrency, true)\n\tlet outputCurrency = parseCurrencyFromURLParameter(parsedQs.outputCurrency, false)\n\tif (inputCurrency === outputCurrency) {\n\t\tif (typeof parsedQs.outputCurrency === 'string') {\n\t\t\tinputCurrency = ''\n\t\t} else {\n\t\t\toutputCurrency = ''\n\t\t}\n\t}\n\n\tconst recipient = validatedRecipient(parsedQs.recipient)\n\n\treturn {\n\t\t[Field.INPUT]: {\n\t\t\tcurrencyId: inputCurrency,\n\t\t},\n\t\t[Field.OUTPUT]: {\n\t\t\tcurrencyId: outputCurrency,\n\t\t},\n\t\ttypedValue: parseTokenAmountURLParameter(parsedQs.exactAmount),\n\t\tindependentField: parseIndependentFieldURLParameter(parsedQs.exactField),\n\t\trecipient,\n\t}\n}\n\n// updates the swap state to use the defaults for a given network\nexport function useDefaultsFromURLSearch():\n\t| { inputCurrencyId: string | undefined; outputCurrencyId: string | undefined }\n\t| undefined {\n\tconst { chainId } = useActiveWeb3React()\n\tconst dispatch = useDispatch()\n\tconst parsedQs = useParsedQueryString()\n\tconst [result, setResult] = useState<\n\t\t{ inputCurrencyId: string | undefined; outputCurrencyId: string | undefined } | undefined\n\t>()\n\n\tuseEffect(() => {\n\t\tif (!chainId) return\n\t\tconst parsed = queryParametersToSwapState(parsedQs)\n\n\t\tdispatch(\n\t\t\treplaceSwapState({\n\t\t\t\ttypedValue: parsed.typedValue,\n\t\t\t\tfield: parsed.independentField,\n\t\t\t\tinputCurrencyId: parsed[Field.INPUT].currencyId,\n\t\t\t\toutputCurrencyId: parsed[Field.OUTPUT].currencyId,\n\t\t\t\trecipient: parsed.recipient,\n\t\t\t}),\n\t\t)\n\n\t\tsetResult({\n\t\t\tinputCurrencyId: parsed[Field.INPUT].currencyId,\n\t\t\toutputCurrencyId: parsed[Field.OUTPUT].currencyId,\n\t\t})\n\t}, [dispatch, chainId])\n\n\treturn result\n}\n","import { parse, ParsedQs } from 'qs'\nimport { useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nexport default function useParsedQueryString(): ParsedQs {\n\tconst { search } = useLocation()\n\treturn useMemo(\n\t\t() =>\n\t\t\tsearch && search.length > 1\n\t\t\t\t? parse(search, { parseArrays: false, ignoreQueryPrefix: true })\n\t\t\t\t: {},\n\t\t[search],\n\t)\n}\n","import {\n\tCurrency,\n\tCurrencyAmount,\n\tETHER,\n\tJSBI,\n\tPair,\n\tPercent,\n\tPrice,\n\tTokenAmount,\n} from 'sdk-hoosmartchain'\nimport { useCallback, useMemo } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { PairState, usePair } from '../../data/Reserves'\nimport { useTotalSupply } from '../../data/TotalSupply'\n\nimport { useActiveWeb3React } from '../../hooks'\nimport { TranslateString } from '../../utils/translateTextHelpers'\nimport { wrappedCurrency, wrappedCurrencyAmount } from '../../utils/wrappedCurrency'\nimport { AppDispatch, AppState } from '../index'\nimport { tryParseAmount } from '../swap/hooks'\nimport { useCurrencyBalances } from '../wallet/hooks'\nimport { Field, typeInput } from './actions'\n\nconst ZERO = JSBI.BigInt(0)\n\nexport function useMintState(): AppState['mint'] {\n\treturn useSelector((state) => state.mint)\n}\n\nexport function useDerivedMintInfo(\n\tcurrencyA: Currency | undefined,\n\tcurrencyB: Currency | undefined,\n): {\n\tdependentField: Field\n\tcurrencies: { [field in Field]?: Currency }\n\tpair?: Pair | null\n\tpairState: PairState\n\tcurrencyBalances: { [field in Field]?: CurrencyAmount }\n\tparsedAmounts: { [field in Field]?: CurrencyAmount }\n\tprice?: Price\n\tnoLiquidity?: boolean\n\tliquidityMinted?: TokenAmount\n\tpoolTokenPercentage?: Percent\n\terror?: string\n} {\n\tconst { account, chainId } = useActiveWeb3React()\n\n\tconst { independentField, typedValue, otherTypedValue } = useMintState()\n\n\tconst dependentField =\n\t\tindependentField === Field.CURRENCY_A ? Field.CURRENCY_B : Field.CURRENCY_A\n\n\t// tokens\n\tconst currencies: { [field in Field]?: Currency } = useMemo(\n\t\t() => ({\n\t\t\t[Field.CURRENCY_A]: currencyA ?? undefined,\n\t\t\t[Field.CURRENCY_B]: currencyB ?? undefined,\n\t\t}),\n\t\t[currencyA, currencyB],\n\t)\n\n\t// pair\n\tconst [pairState, pair] = usePair(currencies[Field.CURRENCY_A], currencies[Field.CURRENCY_B])\n\tconst totalSupply = useTotalSupply(pair?.liquidityToken)\n\n\tconst noLiquidity: boolean =\n\t\tpairState === PairState.NOT_EXISTS ||\n\t\tBoolean(totalSupply && JSBI.equal(totalSupply.raw, ZERO))\n\n\t// balances\n\tconst balances = useCurrencyBalances(account ?? undefined, [\n\t\tcurrencies[Field.CURRENCY_A],\n\t\tcurrencies[Field.CURRENCY_B],\n\t])\n\tconst currencyBalances: { [field in Field]?: CurrencyAmount } = {\n\t\t[Field.CURRENCY_A]: balances[0],\n\t\t[Field.CURRENCY_B]: balances[1],\n\t}\n\n\t// amounts\n\tconst independentAmount: CurrencyAmount | undefined = tryParseAmount(\n\t\ttypedValue,\n\t\tcurrencies[independentField],\n\t)\n\tconst dependentAmount: CurrencyAmount | undefined = useMemo(() => {\n\t\tif (noLiquidity) {\n\t\t\tif (otherTypedValue && currencies[dependentField]) {\n\t\t\t\treturn tryParseAmount(otherTypedValue, currencies[dependentField])\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\t\tif (independentAmount) {\n\t\t\t// we wrap the currencies just to get the price in terms of the other token\n\t\t\tconst wrappedIndependentAmount = wrappedCurrencyAmount(independentAmount, chainId)\n\t\t\tconst [tokenA, tokenB] = [\n\t\t\t\twrappedCurrency(currencyA, chainId),\n\t\t\t\twrappedCurrency(currencyB, chainId),\n\t\t\t]\n\t\t\tif (tokenA && tokenB && wrappedIndependentAmount && pair) {\n\t\t\t\tconst dependentCurrency =\n\t\t\t\t\tdependentField === Field.CURRENCY_B ? currencyB : currencyA\n\t\t\t\tconst dependentTokenAmount =\n\t\t\t\t\tdependentField === Field.CURRENCY_B\n\t\t\t\t\t\t? pair.priceOf(tokenA).quote(wrappedIndependentAmount)\n\t\t\t\t\t\t: pair.priceOf(tokenB).quote(wrappedIndependentAmount)\n\t\t\t\treturn dependentCurrency === ETHER\n\t\t\t\t\t? CurrencyAmount.ether(dependentTokenAmount.raw)\n\t\t\t\t\t: dependentTokenAmount\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\t\treturn undefined\n\t}, [\n\t\tnoLiquidity,\n\t\totherTypedValue,\n\t\tcurrencies,\n\t\tdependentField,\n\t\tindependentAmount,\n\t\tcurrencyA,\n\t\tchainId,\n\t\tcurrencyB,\n\t\tpair,\n\t])\n\n\tconst parsedAmounts: { [field in Field]: CurrencyAmount | undefined } = {\n\t\t[Field.CURRENCY_A]:\n\t\t\tindependentField === Field.CURRENCY_A ? independentAmount : dependentAmount,\n\t\t[Field.CURRENCY_B]:\n\t\t\tindependentField === Field.CURRENCY_A ? dependentAmount : independentAmount,\n\t}\n\n\tconst price = useMemo(() => {\n\t\tif (noLiquidity) {\n\t\t\tconst {\n\t\t\t\t[Field.CURRENCY_A]: currencyAAmount,\n\t\t\t\t[Field.CURRENCY_B]: currencyBAmount,\n\t\t\t} = parsedAmounts\n\t\t\tif (currencyAAmount && currencyBAmount) {\n\t\t\t\treturn new Price(\n\t\t\t\t\tcurrencyAAmount.currency,\n\t\t\t\t\tcurrencyBAmount.currency,\n\t\t\t\t\tcurrencyAAmount.raw,\n\t\t\t\t\tcurrencyBAmount.raw,\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\t\tconst wrappedCurrencyA = wrappedCurrency(currencyA, chainId)\n\t\treturn pair && wrappedCurrencyA ? pair.priceOf(wrappedCurrencyA) : undefined\n\t}, [chainId, currencyA, noLiquidity, pair, parsedAmounts])\n\n\t// liquidity minted\n\tconst liquidityMinted = useMemo(() => {\n\t\tconst {\n\t\t\t[Field.CURRENCY_A]: currencyAAmount,\n\t\t\t[Field.CURRENCY_B]: currencyBAmount,\n\t\t} = parsedAmounts\n\t\tconst [tokenAmountA, tokenAmountB] = [\n\t\t\twrappedCurrencyAmount(currencyAAmount, chainId),\n\t\t\twrappedCurrencyAmount(currencyBAmount, chainId),\n\t\t]\n\t\tif (pair && totalSupply && tokenAmountA && tokenAmountB) {\n\t\t\treturn pair.getLiquidityMinted(totalSupply, tokenAmountA, tokenAmountB)\n\t\t}\n\t\treturn undefined\n\t}, [parsedAmounts, chainId, pair, totalSupply])\n\n\tconst poolTokenPercentage = useMemo(() => {\n\t\tif (liquidityMinted && totalSupply) {\n\t\t\treturn new Percent(liquidityMinted.raw, totalSupply.add(liquidityMinted).raw)\n\t\t}\n\t\treturn undefined\n\t}, [liquidityMinted, totalSupply])\n\n\tlet error: string | undefined\n\tif (!account) {\n\t\terror = 'Connect Wallet'\n\t}\n\n\tif (pairState === PairState.INVALID) {\n\t\terror = error ?? TranslateString(136, 'Invalid pair')\n\t}\n\n\tif (!parsedAmounts[Field.CURRENCY_A] || !parsedAmounts[Field.CURRENCY_B]) {\n\t\terror = error ?? TranslateString(84, 'Enter an amount')\n\t}\n\n\tconst {\n\t\t[Field.CURRENCY_A]: currencyAAmount,\n\t\t[Field.CURRENCY_B]: currencyBAmount,\n\t} = parsedAmounts\n\n\tif (currencyAAmount && currencyBalances?.[Field.CURRENCY_A]?.lessThan(currencyAAmount)) {\n\t\terror = `Insufficient ${currencies[Field.CURRENCY_A]?.symbol} balance`\n\t}\n\n\tif (currencyBAmount && currencyBalances?.[Field.CURRENCY_B]?.lessThan(currencyBAmount)) {\n\t\terror = `Insufficient ${currencies[Field.CURRENCY_B]?.symbol} balance`\n\t}\n\n\treturn {\n\t\tdependentField,\n\t\tcurrencies,\n\t\tpair,\n\t\tpairState,\n\t\tcurrencyBalances,\n\t\tparsedAmounts,\n\t\tprice,\n\t\tnoLiquidity,\n\t\tliquidityMinted,\n\t\tpoolTokenPercentage,\n\t\terror,\n\t}\n}\n\nexport function useMintActionHandlers(\n\tnoLiquidity: boolean | undefined,\n): {\n\tonFieldAInput: (typedValue: string) => void\n\tonFieldBInput: (typedValue: string) => void\n} {\n\tconst dispatch = useDispatch()\n\n\tconst onFieldAInput = useCallback(\n\t\t(typedValue: string) => {\n\t\t\tdispatch(\n\t\t\t\ttypeInput({\n\t\t\t\t\tfield: Field.CURRENCY_A,\n\t\t\t\t\ttypedValue,\n\t\t\t\t\tnoLiquidity: noLiquidity === true,\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\t[dispatch, noLiquidity],\n\t)\n\tconst onFieldBInput = useCallback(\n\t\t(typedValue: string) => {\n\t\t\tdispatch(\n\t\t\t\ttypeInput({\n\t\t\t\t\tfield: Field.CURRENCY_B,\n\t\t\t\t\ttypedValue,\n\t\t\t\t\tnoLiquidity: noLiquidity === true,\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\t[dispatch, noLiquidity],\n\t)\n\n\treturn {\n\t\tonFieldAInput,\n\t\tonFieldBInput,\n\t}\n}\n","import { CurrencyAmount, ETHER, JSBI } from 'sdk-hoosmartchain'\nimport { MIN_ETH } from '../constants'\n\n/**\n * Given some token amount, return the max that can be spent of it\n * @param currencyAmount to return max of\n */\nexport function maxAmountSpend(currencyAmount?: CurrencyAmount): CurrencyAmount | undefined {\n\tif (!currencyAmount) return undefined\n\tif (currencyAmount.currency === ETHER) {\n\t\tif (JSBI.greaterThan(currencyAmount.raw, MIN_ETH)) {\n\t\t\treturn CurrencyAmount.ether(JSBI.subtract(currencyAmount.raw, MIN_ETH))\n\t\t}\n\t\treturn CurrencyAmount.ether(JSBI.BigInt(0))\n\t}\n\treturn currencyAmount\n}\n\nexport default maxAmountSpend\n","import styled from 'styled-components'\n\nconst Pane = styled.div`\n\tborder: 2px solid ${({ theme }) => theme.colors.borderColor};\n\tborder-radius: 16px;\n\tpadding: 16px;\n`\n\nexport default Pane\n","import styled from 'styled-components'\n\nconst Container = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\tflex: 1;\n\n\twidth: 100%;\n\tpadding: 32px 16px;\n\n\tbackground-image: url('/images/pattern2.png');\n\n\t${({ theme }) => theme.mediaQueries.xs} {\n\t\tbackground-size: auto;\n\t}\n\n\t${({ theme }) => theme.mediaQueries.lg} {\n\t\tbackground-size: 800px;\n\t\tmin-height: calc(100vh - var(--havbar-height));\n\t}\n`\n\nexport default Container\n","/* eslint-disable no-param-reassign */\nimport { Toast } from '../../uikit-foodcourt'\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit'\n\nconst initialState: ToastsState = {\n\tdata: [],\n}\n\nexport interface ToastsState {\n\tdata: Toast[]\n}\n\nexport const toastsSlice = createSlice({\n\tname: 'toasts',\n\tinitialState,\n\treducers: {\n\t\tpush: (state: ToastsState, action: PayloadAction) => {\n\t\t\tconst { payload } = action\n\t\t\tconst toastIndex = state.data.findIndex((toast) => toast.id === action.payload.id)\n\n\t\t\t// If id already matches remove it before adding it to the top of the stack\n\t\t\tif (toastIndex >= 0) {\n\t\t\t\tstate.data.splice(toastIndex, 1)\n\t\t\t}\n\n\t\t\tstate.data.unshift(payload)\n\t\t},\n\t\tremove: (state: ToastsState, action: PayloadAction) => {\n\t\t\tconst toastIndex = state.data.findIndex((toast) => toast.id === action.payload)\n\n\t\t\tif (toastIndex >= 0) {\n\t\t\t\tstate.data.splice(toastIndex, 1)\n\t\t\t}\n\t\t},\n\t\tclear: (state: ToastsState) => {\n\t\t\tstate.data = []\n\t\t},\n\t},\n})\n\n// Actions\nexport const { clear, remove, push } = toastsSlice.actions\n\nexport default toastsSlice.reducer\n","import { useMemo } from 'react'\nimport { kebabCase } from 'lodash'\nimport { Toast, toastTypes } from '../uikit-foodcourt'\nimport { useDispatch } from 'react-redux'\n\nimport { push as pushToast, remove as removeToast, clear as clearToast } from 'state/actions'\n\n// Toasts\nconst useToast = () => {\n\tconst dispatch = useDispatch()\n\tconst helpers = useMemo(() => {\n\t\tconst push = (toast: Toast) => dispatch(pushToast(toast))\n\n\t\treturn {\n\t\t\ttoastError: (title: string, description?: string) =>\n\t\t\t\tpush({ id: kebabCase(title), type: toastTypes.DANGER, title, description }),\n\t\t\ttoastInfo: (title: string, description?: string) =>\n\t\t\t\tpush({ id: kebabCase(title), type: toastTypes.INFO, title, description }),\n\t\t\ttoastSuccess: (title: string, description?: string) =>\n\t\t\t\tpush({ id: kebabCase(title), type: toastTypes.SUCCESS, title, description }),\n\t\t\ttoastWarning: (title: string, description?: string) =>\n\t\t\t\tpush({ id: kebabCase(title), type: toastTypes.WARNING, title, description }),\n\t\t\tpush,\n\t\t\tremove: (id: string) => dispatch(removeToast(id)),\n\t\t\tclear: () => dispatch(clearToast()),\n\t\t}\n\t}, [dispatch])\n\n\treturn helpers\n}\n\nexport default useToast\n","import { useCallback } from 'react'\nimport { useWeb3React, UnsupportedChainIdError } from '@web3-react/core'\nimport { NoBscProviderError } from '@binance-chain/bsc-connector'\nimport {\n\tNoEthereumProviderError,\n\tUserRejectedRequestError as UserRejectedRequestErrorInjected,\n} from '@web3-react/injected-connector'\nimport {\n\tUserRejectedRequestError as UserRejectedRequestErrorWalletConnect,\n\tWalletConnectConnector,\n} from '@web3-react/walletconnect-connector'\nimport { connectorLocalStorageKey, ConnectorNames } from '../uikit-foodcourt'\nimport useToast from 'hooks/useToast'\nimport { connectorsByName } from 'connectors'\n\nconst useAuth = () => {\n\tconst { activate, deactivate } = useWeb3React()\n\tconst { toastError } = useToast()\n\n\tconst login = useCallback((connectorID: ConnectorNames) => {\n\t\tconst connector = connectorsByName[connectorID]\n\t\tif (connector) {\n\t\t\tactivate(connector, async (error: Error) => {\n\t\t\t\twindow.localStorage.removeItem(connectorLocalStorageKey)\n\t\t\t\tif (error instanceof UnsupportedChainIdError) {\n\t\t\t\t\ttoastError(\n\t\t\t\t\t\t'Unsupported Chain Id',\n\t\t\t\t\t\t'Unsupported Chain Id Error. Check your chain Id.',\n\t\t\t\t\t)\n\t\t\t\t} else if (\n\t\t\t\t\terror instanceof NoEthereumProviderError ||\n\t\t\t\t\terror instanceof NoBscProviderError\n\t\t\t\t) {\n\t\t\t\t\ttoastError('Provider Error', 'No provider was found')\n\t\t\t\t} else if (\n\t\t\t\t\terror instanceof UserRejectedRequestErrorInjected ||\n\t\t\t\t\terror instanceof UserRejectedRequestErrorWalletConnect\n\t\t\t\t) {\n\t\t\t\t\tif (connector instanceof WalletConnectConnector) {\n\t\t\t\t\t\tconst walletConnector = connector as WalletConnectConnector\n\t\t\t\t\t\twalletConnector.walletConnectProvider = null\n\t\t\t\t\t}\n\t\t\t\t\ttoastError('Authorization Error', 'Please authorize to access your account')\n\t\t\t\t} else {\n\t\t\t\t\ttoastError(error.name, error.message)\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\ttoastError(\"Can't find connector\", 'The connector config is wrong')\n\t\t}\n\t}, [])\n\n\treturn { login, logout: deactivate }\n}\n\nexport default useAuth\n","import React from 'react'\nimport { Button, ButtonProps, useWalletModal } from '../../uikit-foodcourt'\nimport useI18n from 'hooks/useI18n'\nimport useAuth from 'hooks/useAuth'\n\nconst UnlockButton: React.FC = (props) => {\n\tconst TranslateString = useI18n()\n\tconst { login, logout } = useAuth()\n\tconst { onPresentConnectModal } = useWalletModal(login, logout)\n\n\treturn (\n\t\t\n\t)\n}\n\nexport default UnlockButton\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Card } from '../uikit-foodcourt'\n\nexport const BodyWrapper = styled(Card)`\n\tposition: relative;\n\tmax-width: 436px;\n\twidth: 100%;\n\tz-index: 5;\n\toverflow: visible;\n`\n\n/**\n * The styled container element that wraps the content of most pages and the tabs.\n */\nexport default function AppBody({ children }: { children: React.ReactNode }) {\n\treturn {children}\n}\n","import { Text } from '../../uikit-foodcourt'\nimport styled from 'styled-components'\n\nexport const Wrapper = styled.div`\n\tposition: relative;\n`\n\nexport const ClickableText = styled(Text)`\n\t:hover {\n\t\tcursor: pointer;\n\t}\n\tcolor: ${({ theme }) => theme.colors.primary};\n`\n\nexport const Dots = styled.span`\n\t&::after {\n\t\tdisplay: inline-block;\n\t\tanimation: ellipsis 1.25s infinite;\n\t\tcontent: '.';\n\t\twidth: 1em;\n\t\ttext-align: left;\n\t}\n\t@keyframes ellipsis {\n\t\t0% {\n\t\t\tcontent: '.';\n\t\t}\n\t\t33% {\n\t\t\tcontent: '..';\n\t\t}\n\t\t66% {\n\t\t\tcontent: '...';\n\t\t}\n\t}\n`\n","import { Currency, CurrencyAmount, Fraction, Percent } from 'sdk-hoosmartchain'\nimport React from 'react'\nimport { Button, Text } from '../../uikit-foodcourt'\nimport { TranslateString } from 'utils/translateTextHelpers'\nimport { RowBetween, RowFixed } from '../../components/Row'\nimport CurrencyLogo from '../../components/CurrencyLogo'\nimport { Field } from '../../state/mint/actions'\n\nexport function ConfirmAddModalBottom({\n\tnoLiquidity,\n\tprice,\n\tcurrencies,\n\tparsedAmounts,\n\tpoolTokenPercentage,\n\tonAdd,\n}: {\n\tnoLiquidity?: boolean\n\tprice?: Fraction\n\tcurrencies: { [field in Field]?: Currency }\n\tparsedAmounts: { [field in Field]?: CurrencyAmount }\n\tpoolTokenPercentage?: Percent\n\tonAdd: () => void\n}) {\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{currencies[Field.CURRENCY_A]?.symbol} Deposited\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{currencies[Field.CURRENCY_B]?.symbol} Deposited\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\tRates\n\t\t\t\t\n\t\t\t\t\t{`1 ${currencies[Field.CURRENCY_A]?.symbol} = ${price?.toSignificant(4)} ${\n\t\t\t\t\t\tcurrencies[Field.CURRENCY_B]?.symbol\n\t\t\t\t\t}`}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{`1 ${currencies[Field.CURRENCY_B]?.symbol} = ${price\n\t\t\t\t\t\t?.invert()\n\t\t\t\t\t\t.toSignificant(4)} ${currencies[Field.CURRENCY_A]?.symbol}`}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\tShare of Pool:\n\t\t\t\t{noLiquidity ? '100' : poolTokenPercentage?.toSignificant(4)}%\n\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default ConfirmAddModalBottom\n","import React from 'react'\nimport { Currency, Percent, Price } from 'sdk-hoosmartchain'\nimport { Text } from '../../uikit-foodcourt'\nimport { AutoColumn } from '../../components/Column'\nimport { AutoRow } from '../../components/Row'\nimport { ONE_BIPS } from '../../constants'\nimport { Field } from '../../state/mint/actions'\n\nexport function PoolPriceBar({\n\tcurrencies,\n\tnoLiquidity,\n\tpoolTokenPercentage,\n\tprice,\n}: {\n\tcurrencies: { [field in Field]?: Currency }\n\tnoLiquidity?: boolean\n\tpoolTokenPercentage?: Percent\n\tprice?: Price\n}) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{price?.toSignificant(6) ?? '-'}\n\t\t\t\t\t\n\t\t\t\t\t\t{currencies[Field.CURRENCY_B]?.symbol} per{' '}\n\t\t\t\t\t\t{currencies[Field.CURRENCY_A]?.symbol}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{price?.invert()?.toSignificant(6) ?? '-'}\n\t\t\t\t\t\n\t\t\t\t\t\t{currencies[Field.CURRENCY_A]?.symbol} per{' '}\n\t\t\t\t\t\t{currencies[Field.CURRENCY_B]?.symbol}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{noLiquidity && price\n\t\t\t\t\t\t\t? '100'\n\t\t\t\t\t\t\t: (poolTokenPercentage?.lessThan(ONE_BIPS)\n\t\t\t\t\t\t\t\t\t? '<0.01'\n\t\t\t\t\t\t\t\t\t: poolTokenPercentage?.toFixed(2)) ?? '0'}\n\t\t\t\t\t\t%\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tShare of Pool\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default PoolPriceBar\n","import React, { useCallback, useState } from 'react'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { Currency, currencyEquals, ETHER, TokenAmount, WETH } from 'sdk-hoosmartchain'\nimport { Button, CardBody, AddIcon, Text as UIKitText } from '../../uikit-foodcourt'\nimport { RouteComponentProps } from 'react-router-dom'\nimport { LightCard } from 'components/Card'\nimport { AutoColumn, ColumnCenter } from 'components/Column'\nimport TransactionConfirmationModal, {\n\tConfirmationModalContent,\n} from 'components/TransactionConfirmationModal'\nimport CardNav from 'components/CardNav'\nimport CurrencyInputPanel from 'components/CurrencyInputPanel'\nimport DoubleCurrencyLogo from 'components/DoubleLogo'\nimport { AddRemoveTabs } from 'components/NavigationTabs'\nimport { MinimalPositionCard } from 'components/PositionCard'\nimport Row, { RowBetween, RowFlat } from 'components/Row'\n\nimport { PairState } from 'data/Reserves'\nimport { useActiveWeb3React } from 'hooks'\nimport { useCurrency } from 'hooks/Tokens'\nimport { ApprovalState, useApproveCallback } from 'hooks/useApproveCallback'\nimport { Field } from 'state/mint/actions'\nimport { useDerivedMintInfo, useMintActionHandlers, useMintState } from 'state/mint/hooks'\n\nimport { useTransactionAdder } from 'state/transactions/hooks'\nimport { useIsExpertMode, useUserDeadline, useUserSlippageTolerance } from 'state/user/hooks'\nimport { calculateGasMargin, calculateSlippageAmount, getRouterContract } from 'utils'\nimport { maxAmountSpend } from 'utils/maxAmountSpend'\nimport { wrappedCurrency } from 'utils/wrappedCurrency'\nimport { currencyId } from 'utils/currencyId'\nimport Pane from 'components/Pane'\nimport Container from 'components/Container'\nimport ConnectWalletButton from 'components/ConnectWalletButton'\nimport useI18n from 'hooks/useI18n'\nimport AppBody from '../AppBody'\nimport { Dots, Wrapper } from '../Pool/styleds'\nimport { ConfirmAddModalBottom } from './ConfirmAddModalBottom'\nimport { PoolPriceBar } from './PoolPriceBar'\nimport { ROUTER_ADDRESS } from '../../constants'\n\nexport default function AddLiquidity({\n\tmatch: {\n\t\tparams: { currencyIdA, currencyIdB },\n\t},\n\thistory,\n}: RouteComponentProps<{ currencyIdA?: string; currencyIdB?: string }>) {\n\tconst { account, chainId, library } = useActiveWeb3React()\n\tconst currencyA = useCurrency(currencyIdA)\n\tconst currencyB = useCurrency(currencyIdB)\n\tconst TranslateString = useI18n()\n\n\tconst oneCurrencyIsWBNB = Boolean(\n\t\tchainId &&\n\t\t\t((currencyA && currencyEquals(currencyA, WETH[chainId])) ||\n\t\t\t\t(currencyB && currencyEquals(currencyB, WETH[chainId]))),\n\t)\n\tconst expertMode = useIsExpertMode()\n\n\t// mint state\n\tconst { independentField, typedValue, otherTypedValue } = useMintState()\n\tconst {\n\t\tdependentField,\n\t\tcurrencies,\n\t\tpair,\n\t\tpairState,\n\t\tcurrencyBalances,\n\t\tparsedAmounts,\n\t\tprice,\n\t\tnoLiquidity,\n\t\tliquidityMinted,\n\t\tpoolTokenPercentage,\n\t\terror,\n\t} = useDerivedMintInfo(currencyA ?? undefined, currencyB ?? undefined)\n\tconst { onFieldAInput, onFieldBInput } = useMintActionHandlers(noLiquidity)\n\n\tconst isValid = !error\n\n\t// modal and loading\n\tconst [showConfirm, setShowConfirm] = useState(false)\n\tconst [attemptingTxn, setAttemptingTxn] = useState(false) // clicked confirm\n\n\t// txn values\n\tconst [deadline] = useUserDeadline() // custom from users settings\n\tconst [allowedSlippage] = useUserSlippageTolerance() // custom from users\n\tconst [txHash, setTxHash] = useState('')\n\n\t// get formatted amounts\n\tconst formattedAmounts = {\n\t\t[independentField]: typedValue,\n\t\t[dependentField]: noLiquidity\n\t\t\t? otherTypedValue\n\t\t\t: parsedAmounts[dependentField]?.toSignificant(6) ?? '',\n\t}\n\n\t// get the max amounts user can add\n\tconst maxAmounts: { [field in Field]?: TokenAmount } = [\n\t\tField.CURRENCY_A,\n\t\tField.CURRENCY_B,\n\t].reduce(\n\t\t(accumulator, field) => ({\n\t\t\t...accumulator,\n\t\t\t[field]: maxAmountSpend(currencyBalances[field]),\n\t\t}),\n\t\t{},\n\t)\n\n\tconst atMaxAmounts: { [field in Field]?: TokenAmount } = [\n\t\tField.CURRENCY_A,\n\t\tField.CURRENCY_B,\n\t].reduce(\n\t\t(accumulator, field) => ({\n\t\t\t...accumulator,\n\t\t\t[field]: maxAmounts[field]?.equalTo(parsedAmounts[field] ?? '0'),\n\t\t}),\n\t\t{},\n\t)\n\n\t// check whether the user has approved the router on the tokens\n\tconst [approvalA, approveACallback] = useApproveCallback(\n\t\tparsedAmounts[Field.CURRENCY_A],\n\t\tROUTER_ADDRESS,\n\t)\n\tconst [approvalB, approveBCallback] = useApproveCallback(\n\t\tparsedAmounts[Field.CURRENCY_B],\n\t\tROUTER_ADDRESS,\n\t)\n\n\tconst addTransaction = useTransactionAdder()\n\n\tasync function onAdd() {\n\t\tif (!chainId || !library || !account) return\n\t\tconst router = getRouterContract(chainId, library, account)\n\n\t\tconst {\n\t\t\t[Field.CURRENCY_A]: parsedAmountA,\n\t\t\t[Field.CURRENCY_B]: parsedAmountB,\n\t\t} = parsedAmounts\n\t\tif (!parsedAmountA || !parsedAmountB || !currencyA || !currencyB) {\n\t\t\treturn\n\t\t}\n\n\t\tconst amountsMin = {\n\t\t\t[Field.CURRENCY_A]: calculateSlippageAmount(\n\t\t\t\tparsedAmountA,\n\t\t\t\tnoLiquidity ? 0 : allowedSlippage,\n\t\t\t)[0],\n\t\t\t[Field.CURRENCY_B]: calculateSlippageAmount(\n\t\t\t\tparsedAmountB,\n\t\t\t\tnoLiquidity ? 0 : allowedSlippage,\n\t\t\t)[0],\n\t\t}\n\n\t\tconst deadlineFromNow = Math.ceil(Date.now() / 1000) + deadline\n\n\t\tlet estimate\n\t\tlet method: (...args: any) => Promise\n\t\tlet args: Array\n\t\tlet value: BigNumber | null\n\t\tif (currencyA === ETHER || currencyB === ETHER) {\n\t\t\tconst tokenBIsBNB = currencyB === ETHER\n\t\t\testimate = router.estimateGas.addLiquidityETH\n\t\t\tmethod = router.addLiquidityETH\n\t\t\targs = [\n\t\t\t\twrappedCurrency(tokenBIsBNB ? currencyA : currencyB, chainId)?.address ?? '', // token\n\t\t\t\t(tokenBIsBNB ? parsedAmountA : parsedAmountB).raw.toString(), // token desired\n\t\t\t\tamountsMin[tokenBIsBNB ? Field.CURRENCY_A : Field.CURRENCY_B].toString(), // token min\n\t\t\t\tamountsMin[tokenBIsBNB ? Field.CURRENCY_B : Field.CURRENCY_A].toString(), // eth min\n\t\t\t\taccount,\n\t\t\t\tdeadlineFromNow,\n\t\t\t]\n\t\t\tvalue = BigNumber.from((tokenBIsBNB ? parsedAmountB : parsedAmountA).raw.toString())\n\t\t} else {\n\t\t\testimate = router.estimateGas.addLiquidity\n\t\t\tmethod = router.addLiquidity\n\t\t\targs = [\n\t\t\t\twrappedCurrency(currencyA, chainId)?.address ?? '',\n\t\t\t\twrappedCurrency(currencyB, chainId)?.address ?? '',\n\t\t\t\tparsedAmountA.raw.toString(),\n\t\t\t\tparsedAmountB.raw.toString(),\n\t\t\t\tamountsMin[Field.CURRENCY_A].toString(),\n\t\t\t\tamountsMin[Field.CURRENCY_B].toString(),\n\t\t\t\taccount,\n\t\t\t\tdeadlineFromNow,\n\t\t\t]\n\t\t\tvalue = null\n\t\t}\n\n\t\tsetAttemptingTxn(true)\n\t\t// const aa = await estimate(...args, value ? { value } : {})\n\t\tawait estimate(...args, value ? { value } : {})\n\t\t\t.then((estimatedGasLimit) =>\n\t\t\t\tmethod(...args, {\n\t\t\t\t\t...(value ? { value } : {}),\n\t\t\t\t\tgasLimit: calculateGasMargin(estimatedGasLimit),\n\t\t\t\t}).then((response) => {\n\t\t\t\t\tsetAttemptingTxn(false)\n\n\t\t\t\t\taddTransaction(response, {\n\t\t\t\t\t\tsummary: `Add ${parsedAmounts[Field.CURRENCY_A]?.toSignificant(3)} ${\n\t\t\t\t\t\t\tcurrencies[Field.CURRENCY_A]?.symbol\n\t\t\t\t\t\t} and ${parsedAmounts[Field.CURRENCY_B]?.toSignificant(3)} ${\n\t\t\t\t\t\t\tcurrencies[Field.CURRENCY_B]?.symbol\n\t\t\t\t\t\t}`,\n\t\t\t\t\t})\n\n\t\t\t\t\tsetTxHash(response.hash)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.catch((e) => {\n\t\t\t\tsetAttemptingTxn(false)\n\t\t\t\t// we only care if the error is something _other_ than the user rejected the tx\n\t\t\t\tif (e?.code !== 4001) {\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tconst modalHeader = () =>\n\t\tnoLiquidity ? (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{`${currencies[Field.CURRENCY_A]?.symbol}/${\n\t\t\t\t\t\t\t\tcurrencies[Field.CURRENCY_B]?.symbol\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t) : (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{liquidityMinted?.toSignificant(6)}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{`${currencies[Field.CURRENCY_A]?.symbol}/${\n\t\t\t\t\t\t\tcurrencies[Field.CURRENCY_B]?.symbol\n\t\t\t\t\t\t} Pool Tokens`}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{`Output is estimated. If the price changes by more than ${\n\t\t\t\t\t\tallowedSlippage / 100\n\t\t\t\t\t}% your transaction will revert.`}\n\t\t\t\t\n\t\t\t\n\t\t)\n\n\tconst modalBottom = () => (\n\t\t\n\t)\n\n\tconst pendingText = `Supplying ${parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} ${\n\t\tcurrencies[Field.CURRENCY_A]?.symbol\n\t} and ${parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} ${\n\t\tcurrencies[Field.CURRENCY_B]?.symbol\n\t}`\n\n\tconst handleCurrencyASelect = useCallback(\n\t\t(currA: Currency) => {\n\t\t\tconst newCurrencyIdA = currencyId(currA)\n\t\t\tif (newCurrencyIdA === currencyIdB) {\n\t\t\t\thistory.push(`/add/${currencyIdB}/${currencyIdA}`)\n\t\t\t} else {\n\t\t\t\thistory.push(`/add/${newCurrencyIdA}/${currencyIdB}`)\n\t\t\t}\n\t\t},\n\t\t[currencyIdB, history, currencyIdA],\n\t)\n\tconst handleCurrencyBSelect = useCallback(\n\t\t(currB: Currency) => {\n\t\t\tconst newCurrencyIdB = currencyId(currB)\n\t\t\tif (currencyIdA === newCurrencyIdB) {\n\t\t\t\tif (currencyIdB) {\n\t\t\t\t\thistory.push(`/add/${currencyIdB}/${newCurrencyIdB}`)\n\t\t\t\t} else {\n\t\t\t\t\thistory.push(`/add/${newCurrencyIdB}`)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thistory.push(`/add/${currencyIdA || 'BNB'}/${newCurrencyIdB}`)\n\t\t\t}\n\t\t},\n\t\t[currencyIdA, history, currencyIdB],\n\t)\n\n\tconst handleDismissConfirmation = useCallback(() => {\n\t\tsetShowConfirm(false)\n\t\t// if there was a tx hash, we want to clear the input\n\t\tif (txHash) {\n\t\t\tonFieldAInput('')\n\t\t}\n\t\tsetTxHash('')\n\t}, [onFieldAInput, txHash])\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tpendingText={pendingText}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{noLiquidity && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t\t\t\t\t\t\t1158,\n\t\t\t\t\t\t\t\t\t\t\t\t\t'You are the first liquidity provider.',\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t\t\t\t\t\t\t1160,\n\t\t\t\t\t\t\t\t\t\t\t\t\t'The ratio of tokens you add will set the price of this pool.',\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t\t\t\t\t\t\t1162,\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Once you are happy with the rate click supply to review.',\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tonFieldAInput(maxAmounts[Field.CURRENCY_A]?.toExact() ?? '')\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonCurrencySelect={handleCurrencyASelect}\n\t\t\t\t\t\t\t\tshowMaxButton={!atMaxAmounts[Field.CURRENCY_A]}\n\t\t\t\t\t\t\t\tcurrency={currencies[Field.CURRENCY_A]}\n\t\t\t\t\t\t\t\tid=\"add-liquidity-input-tokena\"\n\t\t\t\t\t\t\t\tshowCommonBases={false}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tonFieldBInput(maxAmounts[Field.CURRENCY_B]?.toExact() ?? '')\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tshowMaxButton={!atMaxAmounts[Field.CURRENCY_B]}\n\t\t\t\t\t\t\t\tcurrency={currencies[Field.CURRENCY_B]}\n\t\t\t\t\t\t\t\tid=\"add-liquidity-input-tokenb\"\n\t\t\t\t\t\t\t\tshowCommonBases={false}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{currencies[Field.CURRENCY_A] &&\n\t\t\t\t\t\t\t\tcurrencies[Field.CURRENCY_B] &&\n\t\t\t\t\t\t\t\tpairState !== PairState.INVALID && (\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{noLiquidity\n\t\t\t\t\t\t\t\t\t\t\t\t? TranslateString(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t1164,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Initial prices and pool share',\n\t\t\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t\t\t: TranslateString(1166, 'Prices and pool share')}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{!account ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{(approvalA === ApprovalState.NOT_APPROVED ||\n\t\t\t\t\t\t\t\t\t\tapprovalA === ApprovalState.PENDING ||\n\t\t\t\t\t\t\t\t\t\tapprovalB === ApprovalState.NOT_APPROVED ||\n\t\t\t\t\t\t\t\t\t\tapprovalB === ApprovalState.PENDING) &&\n\t\t\t\t\t\t\t\t\t\tisValid && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{approvalA !== ApprovalState.APPROVED && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{approvalA === ApprovalState.PENDING ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tApproving{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrencies[Field.CURRENCY_A]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t?.symbol\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Approve ${\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrencies[Field.CURRENCY_A]?.symbol\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t{approvalB !== ApprovalState.APPROVED && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{approvalB === ApprovalState.PENDING ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tApproving{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrencies[Field.CURRENCY_B]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t?.symbol\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Approve ${\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrencies[Field.CURRENCY_B]?.symbol\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tif (expertMode) {\n\t\t\t\t\t\t\t\t\t\t\t\tonAdd()\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tsetShowConfirm(true)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t\t!isValid ||\n\t\t\t\t\t\t\t\t\t\t\tapprovalA !== ApprovalState.APPROVED ||\n\t\t\t\t\t\t\t\t\t\t\tapprovalB !== ApprovalState.APPROVED\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\t!isValid &&\n\t\t\t\t\t\t\t\t\t\t\t!!parsedAmounts[Field.CURRENCY_A] &&\n\t\t\t\t\t\t\t\t\t\t\t!!parsedAmounts[Field.CURRENCY_B]\n\t\t\t\t\t\t\t\t\t\t\t\t? 'danger'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'primary'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{error ?? 'Supply'}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\t{pair && !noLiquidity && pairState !== PairState.INVALID ? (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : null}\n\t\t
\n\t)\n}\n","import React from 'react'\nimport { Redirect, RouteComponentProps } from 'react-router-dom'\nimport AddLiquidity from './index'\n\nconst OLD_PATH_STRUCTURE = /^(0x[a-fA-F0-9]{40})-(0x[a-fA-F0-9]{40})$/\nexport function RedirectOldAddLiquidityPathStructure(\n\tprops: RouteComponentProps<{ currencyIdA: string }>,\n) {\n\tconst {\n\t\tmatch: {\n\t\t\tparams: { currencyIdA },\n\t\t},\n\t} = props\n\tconst match = currencyIdA.match(OLD_PATH_STRUCTURE)\n\tif (match?.length) {\n\t\treturn \n\t}\n\n\treturn \n}\n\nexport function RedirectDuplicateTokenIds(\n\tprops: RouteComponentProps<{ currencyIdA: string; currencyIdB: string }>,\n) {\n\tconst {\n\t\tmatch: {\n\t\t\tparams: { currencyIdA, currencyIdB },\n\t\t},\n\t} = props\n\tif (currencyIdA.toLowerCase() === currencyIdB.toLowerCase()) {\n\t\treturn \n\t}\n\treturn \n}\n","import React from 'react'\nimport { RouteComponentProps, Redirect } from 'react-router-dom'\n\nconst OLD_PATH_STRUCTURE = /^(0x[a-fA-F0-9]{40})-(0x[a-fA-F0-9]{40})$/\n\nexport function RedirectOldRemoveLiquidityPathStructure({\n\tmatch: {\n\t\tparams: { tokens },\n\t},\n}: RouteComponentProps<{ tokens: string }>) {\n\tif (!OLD_PATH_STRUCTURE.test(tokens)) {\n\t\treturn \n\t}\n\tconst [currency0, currency1] = tokens.split('-')\n\n\treturn \n}\n\nexport default RedirectOldRemoveLiquidityPathStructure\n","import React, { useEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { Box, Button, Flex, Input, Text } from '../../uikit-foodcourt'\nimport { useUserSlippageTolerance } from 'state/user/hooks'\nimport QuestionHelper from '../QuestionHelper'\n\nconst MAX_SLIPPAGE = 5000\nconst RISKY_SLIPPAGE_LOW = 50\nconst RISKY_SLIPPAGE_HIGH = 500\n\nconst Option = styled.div`\n\tpadding: 0 4px;\n`\n\nconst Options = styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t${Option}:first-child {\n\t\tpadding-left: 0;\n\t}\n\n\t${Option}:last-child {\n\t\tpadding-right: 0;\n\t}\n\n\t${({ theme }) => theme.mediaQueries.sm} {\n\t\tflex-direction: row;\n\t}\n`\n\nconst predefinedValues = [\n\t{ label: '0.1%', value: 0.1 },\n\t{ label: '0.5%', value: 0.5 },\n\t{ label: '1%', value: 1 },\n]\n\ntype SlippageToleranceSettingsModalProps = {\n\ttranslateString: (translationId: number, fallback: string) => string\n}\n\nconst SlippageToleranceSettings = ({ translateString }: SlippageToleranceSettingsModalProps) => {\n\tconst [userSlippageTolerance, setUserslippageTolerance] = useUserSlippageTolerance()\n\tconst [value, setValue] = useState(userSlippageTolerance / 100)\n\tconst [error, setError] = useState(null)\n\tconst handleChange = (evt: React.ChangeEvent) => {\n\t\tconst { value: inputValue } = evt.target\n\t\tsetValue(parseFloat(inputValue))\n\t}\n\n\t// Updates local storage if value is valid\n\tuseEffect(() => {\n\t\ttry {\n\t\t\tconst rawValue = value * 100\n\t\t\tif (!Number.isNaN(rawValue) && rawValue > 0 && rawValue < MAX_SLIPPAGE) {\n\t\t\t\tsetUserslippageTolerance(rawValue)\n\t\t\t\tsetError(null)\n\t\t\t} else {\n\t\t\t\tsetError(translateString(1144, 'Enter a valid slippage percentage'))\n\t\t\t}\n\t\t} catch {\n\t\t\tsetError(translateString(1144, 'Enter a valid slippage percentage'))\n\t\t}\n\t}, [value, setError, setUserslippageTolerance, translateString])\n\n\t// Notify user if slippage is risky\n\tuseEffect(() => {\n\t\tif (userSlippageTolerance < RISKY_SLIPPAGE_LOW) {\n\t\t\tsetError(translateString(1146, 'Your transaction may fail'))\n\t\t} else if (userSlippageTolerance > RISKY_SLIPPAGE_HIGH) {\n\t\t\tsetError(translateString(1148, 'Your transaction may be frontrun'))\n\t\t}\n\t}, [userSlippageTolerance, setError, translateString])\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{translateString(88, 'Slippage tolerance')}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{predefinedValues.map(({ label, value: predefinedValue }) => {\n\t\t\t\t\t\tconst handleClick = () => setValue(predefinedValue)\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t{error && (\n\t\t\t\t\n\t\t\t\t\t{error}\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default SlippageToleranceSettings\n","import React, { useEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { Input, Text, Flex, Box } from '../../uikit-foodcourt'\nimport { useUserDeadline } from 'state/user/hooks'\nimport QuestionHelper from '../QuestionHelper'\n\nconst Field = styled.div`\n\talign-items: center;\n\tdisplay: inline-flex;\n\n\t& > ${Input} {\n\t\tmax-width: 100px;\n\t}\n`\n\ntype TransactionDeadlineSettingModalProps = {\n\ttranslateString: (translationId: number, fallback: string) => string\n}\n\nconst TransactionDeadlineSetting = ({ translateString }: TransactionDeadlineSettingModalProps) => {\n\tconst [deadline, setDeadline] = useUserDeadline()\n\tconst [value, setValue] = useState(deadline / 60) // deadline in minutes\n\tconst [error, setError] = useState(null)\n\n\tconst handleChange = (evt: React.ChangeEvent) => {\n\t\tconst { value: inputValue } = evt.target\n\t\tsetValue(parseInt(inputValue, 10))\n\t}\n\n\t// Updates local storage if value is valid\n\tuseEffect(() => {\n\t\ttry {\n\t\t\tconst rawValue = value * 60\n\t\t\tif (!Number.isNaN(rawValue) && rawValue > 0) {\n\t\t\t\tsetDeadline(rawValue)\n\t\t\t\tsetError(null)\n\t\t\t} else {\n\t\t\t\tsetError(translateString(1150, 'Enter a valid deadline'))\n\t\t\t}\n\t\t} catch {\n\t\t\tsetError(translateString(1150, 'Enter a valid deadline'))\n\t\t}\n\t}, [value, setError, setDeadline, translateString])\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{translateString(90, 'Transaction deadline')}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tMinutes\n\t\t\t\t\n\t\t\t\n\t\t\t{error && (\n\t\t\t\t\n\t\t\t\t\t{error}\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default TransactionDeadlineSetting\n","import React from 'react'\nimport { Modal } from '../../uikit-foodcourt'\nimport SlippageToleranceSetting from './SlippageToleranceSetting'\nimport TransactionDeadlineSetting from './TransactionDeadlineSetting'\nimport AudioSetting from './AudioSetting'\n\ntype SettingsModalProps = {\n\tonDismiss?: () => void\n\ttranslateString: (translationId: number, fallback: string) => string\n}\n\n// TODO: Fix UI Kit typings\nconst defaultOnDismiss = () => null\n\nconst SettingsModal = ({ onDismiss = defaultOnDismiss, translateString }: SettingsModalProps) => (\n\t\n\t\t\n\t\t\n\t\n)\n\nexport default SettingsModal\n","import React, { useMemo } from 'react'\nimport {\n\tCheckmarkCircleIcon,\n\tErrorIcon,\n\tFlex,\n\tLinkExternal,\n\tText,\n\tModal,\n\tButton,\n} from '../../uikit-foodcourt'\nimport { useActiveWeb3React } from 'hooks'\nimport { getBscScanLink } from 'utils'\nimport { isTransactionRecent, useAllTransactions } from 'state/transactions/hooks'\nimport { TransactionDetails } from 'state/transactions/reducer'\nimport Loader from 'components/Loader'\n\ntype RecentTransactionsModalProps = {\n\tonDismiss?: () => void\n\ttranslateString: (translationId: number, fallback: string) => string\n}\n\n// TODO: Fix UI Kit typings\nconst defaultOnDismiss = () => null\n\nconst newTransactionsFirst = (a: TransactionDetails, b: TransactionDetails) =>\n\tb.addedTime - a.addedTime\n\nconst getRowStatus = (sortedRecentTransaction: TransactionDetails) => {\n\tconst { hash, receipt } = sortedRecentTransaction\n\n\tif (!hash) {\n\t\treturn { icon: , color: 'text' }\n\t}\n\n\tif (hash && receipt?.status === 1) {\n\t\treturn { icon: , color: 'success' }\n\t}\n\n\treturn { icon: , color: 'failure' }\n}\n\nconst RecentTransactionsModal = ({\n\tonDismiss = defaultOnDismiss,\n\ttranslateString,\n}: RecentTransactionsModalProps) => {\n\tconst { account, chainId } = useActiveWeb3React()\n\tconst allTransactions = useAllTransactions()\n\n\t// Logic taken from Web3Status/index.tsx line 175\n\tconst sortedRecentTransactions = useMemo(() => {\n\t\tconst txs = Object.values(allTransactions)\n\t\treturn txs.filter(isTransactionRecent).sort(newTransactionsFirst)\n\t}, [allTransactions])\n\n\treturn (\n\t\t\n\t\t\t{!account && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tPlease connect your wallet to view your recent transactions\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\t{account && chainId && sortedRecentTransactions.length === 0 && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tNo recent transactions\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\t{account &&\n\t\t\t\tchainId &&\n\t\t\t\tsortedRecentTransactions.map((sortedRecentTransaction) => {\n\t\t\t\t\tconst { hash, summary } = sortedRecentTransaction\n\t\t\t\t\tconst { icon, color } = getRowStatus(sortedRecentTransaction)\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{summary ?? hash}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\n\t)\n}\n\nexport default RecentTransactionsModal\n","import React, { ReactNode } from 'react'\nimport styled from 'styled-components'\nimport {\n\tHeading,\n\tIconButton,\n\tText,\n\tFlex,\n\tuseModal,\n\tTuneIcon,\n\tHistoryIcon,\n} from '../../uikit-foodcourt'\nimport useI18n from 'hooks/useI18n'\nimport SettingsModal from './SettingsModal'\nimport RecentTransactionsModal from './RecentTransactionsModal'\n\ninterface PageHeaderProps {\n\ttitle: ReactNode\n\tdescription?: ReactNode\n\tchildren?: ReactNode\n}\n\nconst StyledPageHeader = styled.div`\n\tborder-bottom: 1px solid ${({ theme }) => theme.colors.borderColor};\n\tpadding: 24px;\n`\n\nconst Details = styled.div`\n\tflex: 1;\n`\n\nconst PageHeader = ({ title, description, children }: PageHeaderProps) => {\n\tconst TranslateString = useI18n()\n\tconst [onPresentSettings] = useModal()\n\tconst [onPresentRecentTransactions] = useModal(\n\t\t,\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t{title}\n\t\t\t\t\t{description && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t{children && {children}}\n\t\t
\n\t)\n}\n\nexport default PageHeader\n","import { Currency, ETHER, JSBI, TokenAmount } from 'sdk-hoosmartchain'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Button, ChevronDownIcon, AddIcon, CardBody, Text } from '../../uikit-foodcourt'\nimport CardNav from 'components/CardNav'\nimport { LightCard } from 'components/Card'\nimport { AutoColumn, ColumnCenter } from 'components/Column'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { FindPoolTabs } from 'components/NavigationTabs'\nimport { MinimalPositionCard } from 'components/PositionCard'\nimport CurrencySearchModal from 'components/SearchModal/CurrencySearchModal'\nimport { PairState, usePair } from 'data/Reserves'\nimport { useActiveWeb3React } from 'hooks'\nimport { usePairAdder } from 'state/user/hooks'\nimport { useTokenBalance } from 'state/wallet/hooks'\nimport { StyledInternalLink } from 'components/Shared'\nimport Container from 'components/Container'\nimport { currencyId } from 'utils/currencyId'\nimport useI18n from 'hooks/useI18n'\nimport AppBody from '../AppBody'\nimport { Dots } from '../Pool/styleds'\n\nenum Fields {\n\tTOKEN0 = 0,\n\tTOKEN1 = 1,\n}\n\nexport default function PoolFinder() {\n\tconst { account } = useActiveWeb3React()\n\n\tconst [showSearch, setShowSearch] = useState(false)\n\tconst [activeField, setActiveField] = useState(Fields.TOKEN1)\n\n\tconst [currency0, setCurrency0] = useState(ETHER)\n\tconst [currency1, setCurrency1] = useState(null)\n\n\tconst [pairState, pair] = usePair(currency0 ?? undefined, currency1 ?? undefined)\n\tconst addPair = usePairAdder()\n\n\tconst TranslateString = useI18n()\n\tuseEffect(() => {\n\t\tif (pair) {\n\t\t\taddPair(pair)\n\t\t}\n\t}, [pair, addPair])\n\n\tconst validPairNoLiquidity: boolean =\n\t\tpairState === PairState.NOT_EXISTS ||\n\t\tBoolean(\n\t\t\tpairState === PairState.EXISTS &&\n\t\t\t\tpair &&\n\t\t\t\tJSBI.equal(pair.reserve0.raw, JSBI.BigInt(0)) &&\n\t\t\t\tJSBI.equal(pair.reserve1.raw, JSBI.BigInt(0)),\n\t\t)\n\n\tconst position: TokenAmount | undefined = useTokenBalance(\n\t\taccount ?? undefined,\n\t\tpair?.liquidityToken,\n\t)\n\tconst hasPosition = Boolean(position && JSBI.greaterThan(position.raw, JSBI.BigInt(0)))\n\n\tconst handleCurrencySelect = useCallback(\n\t\t(currency: Currency) => {\n\t\t\tif (activeField === Fields.TOKEN0) {\n\t\t\t\tsetCurrency0(currency)\n\t\t\t} else {\n\t\t\t\tsetCurrency1(currency)\n\t\t\t}\n\t\t},\n\t\t[activeField],\n\t)\n\n\tconst handleSearchDismiss = useCallback(() => {\n\t\tsetShowSearch(false)\n\t}, [setShowSearch])\n\n\tconst prerequisiteMessage = (\n\t\t\n\t\t\t\n\t\t\t\t{!account\n\t\t\t\t\t? TranslateString(1174, 'Connect to a wallet to find pools')\n\t\t\t\t\t: TranslateString(208, 'Select a token to find your liquidity.')}\n\t\t\t\n\t\t\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetShowSearch(true)\n\t\t\t\t\t\t\t\tsetActiveField(Fields.TOKEN0)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tstartIcon={\n\t\t\t\t\t\t\t\tcurrency0 ? (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tendIcon={}\n\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currency0 ? currency0.symbol : TranslateString(82, 'Select a Token')}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetShowSearch(true)\n\t\t\t\t\t\t\t\tsetActiveField(Fields.TOKEN1)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tstartIcon={\n\t\t\t\t\t\t\t\tcurrency1 ? (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tendIcon={}\n\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currency1 ? currency1.symbol : TranslateString(82, 'Select a Token')}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{hasPosition && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{TranslateString(210, 'Pool found!')}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{currency0 && currency1 ? (\n\t\t\t\t\t\t\tpairState === PairState.EXISTS ? (\n\t\t\t\t\t\t\t\thasPosition && pair ? (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t\t\t\t\t\t\t212,\n\t\t\t\t\t\t\t\t\t\t\t\t\t'You don’t have liquidity in this pool yet.',\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(168, 'Add Liquidity')}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) : validPairNoLiquidity ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{TranslateString(214, 'No pool found.')}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tCreate pool.\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : pairState === PairState.INVALID ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{TranslateString(136, 'Invalid pair.')}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : pairState === PairState.LOADING ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tLoading\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tprerequisiteMessage\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import React, { useContext, useMemo } from 'react'\nimport { ThemeContext } from 'styled-components'\nimport { Pair } from 'sdk-hoosmartchain'\nimport { Button, CardBody, Text } from '../../uikit-foodcourt'\nimport { Link } from 'react-router-dom'\nimport CardNav from 'components/CardNav'\nimport Question from 'components/QuestionHelper'\nimport FullPositionCard from 'components/PositionCard'\nimport { useTokenBalancesWithLoadingIndicator } from 'state/wallet/hooks'\nimport { StyledInternalLink } from 'components/Shared'\nimport { LightCard } from 'components/Card'\nimport { RowBetween } from 'components/Row'\nimport { AutoColumn } from 'components/Column'\nimport Container from 'components/Container'\n\nimport { useActiveWeb3React } from 'hooks'\nimport { usePairs } from 'data/Reserves'\nimport { toV2LiquidityToken, useTrackedTokenPairs } from 'state/user/hooks'\nimport { Dots } from 'components/swap/styleds'\nimport useI18n from 'hooks/useI18n'\nimport PageHeader from 'components/PageHeader'\nimport AppBody from '../AppBody'\n\nexport default function Pool() {\n\tconst theme = useContext(ThemeContext)\n\tconst { account } = useActiveWeb3React()\n\tconst TranslateString = useI18n()\n\n\t// fetch the user's balances of all tracked V2 LP tokens\n\tconst trackedTokenPairs = useTrackedTokenPairs()\n\tconst tokenPairsWithLiquidityTokens = useMemo(\n\t\t() =>\n\t\t\ttrackedTokenPairs.map((tokens) => ({\n\t\t\t\tliquidityToken: toV2LiquidityToken(tokens),\n\t\t\t\ttokens,\n\t\t\t})),\n\t\t[trackedTokenPairs],\n\t)\n\tconst liquidityTokens = useMemo(\n\t\t() => tokenPairsWithLiquidityTokens.map((tpwlt) => tpwlt.liquidityToken),\n\t\t[tokenPairsWithLiquidityTokens],\n\t)\n\tconst [v2PairsBalances, fetchingV2PairBalances] = useTokenBalancesWithLoadingIndicator(\n\t\taccount ?? undefined,\n\t\tliquidityTokens,\n\t)\n\n\t// fetch the reserves for all V2 pools in which the user has a balance\n\tconst liquidityTokensWithBalances = useMemo(\n\t\t() =>\n\t\t\ttokenPairsWithLiquidityTokens.filter(({ liquidityToken }) =>\n\t\t\t\tv2PairsBalances[liquidityToken.address]?.greaterThan('0'),\n\t\t\t),\n\t\t[tokenPairsWithLiquidityTokens, v2PairsBalances],\n\t)\n\n\tconst v2Pairs = usePairs(liquidityTokensWithBalances.map(({ tokens }) => tokens))\n\tconst v2IsLoading =\n\t\tfetchingV2PairBalances ||\n\t\tv2Pairs?.length < liquidityTokensWithBalances.length ||\n\t\tv2Pairs?.some((V2Pair) => !V2Pair)\n\n\tconst allV2PairsWithLiquidity = v2Pairs\n\t\t.map(([, pair]) => pair)\n\t\t.filter((v2Pair): v2Pair is Pair => Boolean(v2Pair))\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{TranslateString(107, 'Your Liquidity')}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t{!account ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t\t\t\t\t156,\n\t\t\t\t\t\t\t\t\t\t\t'Connect to a wallet to view your liquidity.',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : v2IsLoading ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tLoading\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : allV2PairsWithLiquidity?.length > 0 ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{allV2PairsWithLiquidity.map((v2Pair) => (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{TranslateString(104, 'No liquidity found.')}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{TranslateString(106, \"Don't see a pool you joined?\")}{' '}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{TranslateString(108, 'Import it.')}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t\t\t\t1172,\n\t\t\t\t\t\t\t\t\t\t'Or, if you staked your LP tokens in a farm, unstake them to see them here.',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n","import React, { useCallback } from 'react'\nimport styled from 'styled-components'\n\nconst StyledRangeInput = styled.input<{ size: number }>`\n\t-webkit-appearance: none; /* Hides the slider so that custom slider can be made */\n\twidth: 100%; /* Specific width is required for Firefox. */\n\tbackground: transparent; /* Otherwise white in Chrome */\n\tcursor: pointer;\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&::-moz-focus-outer {\n\t\tborder: 0;\n\t}\n\n\t&::-webkit-slider-thumb {\n\t\t-webkit-appearance: none;\n\t\theight: ${({ size }) => size}px;\n\t\twidth: ${({ size }) => size}px;\n\t\tbackground-color: #565a69;\n\t\tborder-radius: 100%;\n\t\tborder: none;\n\t\ttransform: translateY(-50%);\n\t\tcolor: ${({ theme }) => theme.colors.invertedContrast};\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbox-shadow: 0px 0px 1px rgba(0, 0, 0, 0.1), 0px 4px 8px rgba(0, 0, 0, 0.08),\n\t\t\t\t0px 16px 24px rgba(0, 0, 0, 0.06), 0px 24px 32px rgba(0, 0, 0, 0.04);\n\t\t}\n\t}\n\n\t&::-moz-range-thumb {\n\t\theight: ${({ size }) => size}px;\n\t\twidth: ${({ size }) => size}px;\n\t\tbackground-color: #565a69;\n\t\tborder-radius: 100%;\n\t\tborder: none;\n\t\tcolor: ${({ theme }) => theme.colors.invertedContrast};\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbox-shadow: 0px 0px 1px rgba(0, 0, 0, 0.1), 0px 4px 8px rgba(0, 0, 0, 0.08),\n\t\t\t\t0px 16px 24px rgba(0, 0, 0, 0.06), 0px 24px 32px rgba(0, 0, 0, 0.04);\n\t\t}\n\t}\n\n\t&::-ms-thumb {\n\t\theight: ${({ size }) => size}px;\n\t\twidth: ${({ size }) => size}px;\n\t\tbackground-color: #565a69;\n\t\tborder-radius: 100%;\n\t\tcolor: ${({ theme }) => theme.colors.invertedContrast};\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbox-shadow: 0px 0px 1px rgba(0, 0, 0, 0.1), 0px 4px 8px rgba(0, 0, 0, 0.08),\n\t\t\t\t0px 16px 24px rgba(0, 0, 0, 0.06), 0px 24px 32px rgba(0, 0, 0, 0.04);\n\t\t}\n\t}\n\n\t&::-webkit-slider-runnable-track {\n\t\tbackground: linear-gradient(\n\t\t\t90deg,\n\t\t\t${({ theme }) => theme.colors.primaryDark},\n\t\t\t${({ theme }) => theme.colors.tertiary}\n\t\t);\n\t\theight: 2px;\n\t}\n\n\t&::-moz-range-track {\n\t\tbackground: linear-gradient(\n\t\t\t90deg,\n\t\t\t${({ theme }) => theme.colors.primaryDark},\n\t\t\t${({ theme }) => theme.colors.tertiary}\n\t\t);\n\t\theight: 2px;\n\t}\n\n\t&::-ms-track {\n\t\twidth: 100%;\n\t\tborder-color: transparent;\n\t\tcolor: transparent;\n\n\t\tbackground: ${({ theme }) => theme.colors.primaryDark};\n\t\theight: 2px;\n\t}\n\t&::-ms-fill-lower {\n\t\tbackground: ${({ theme }) => theme.colors.primaryDark};\n\t}\n\t&::-ms-fill-upper {\n\t\tbackground: ${({ theme }) => theme.colors.tertiary};\n\t}\n`\n\ninterface InputSliderProps {\n\tvalue: number\n\tonChange: (value: number) => void\n\tstep?: number\n\tmin?: number\n\tmax?: number\n\tsize?: number\n}\n\nexport default function Slider({\n\tvalue,\n\tonChange,\n\tmin = 0,\n\tstep = 1,\n\tmax = 100,\n\tsize = 28,\n}: InputSliderProps) {\n\tconst changeCallback = useCallback(\n\t\t(e) => {\n\t\t\tonChange(parseInt(e.target.value))\n\t\t},\n\t\t[onChange],\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","import { createAction } from '@reduxjs/toolkit'\n\nexport enum Field {\n\tLIQUIDITY_PERCENT = 'LIQUIDITY_PERCENT',\n\tLIQUIDITY = 'LIQUIDITY',\n\tCURRENCY_A = 'CURRENCY_A',\n\tCURRENCY_B = 'CURRENCY_B',\n}\n\nexport const typeInput = createAction<{ field: Field; typedValue: string }>('burn/typeInputBurn')\n","import { Currency, CurrencyAmount, JSBI, Pair, Percent, TokenAmount } from 'sdk-hoosmartchain'\nimport { useCallback } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { usePair } from '../../data/Reserves'\nimport { useTotalSupply } from '../../data/TotalSupply'\n\nimport { useActiveWeb3React } from '../../hooks'\nimport { wrappedCurrency } from '../../utils/wrappedCurrency'\nimport { AppDispatch, AppState } from '../index'\nimport { tryParseAmount } from '../swap/hooks'\nimport { useTokenBalances } from '../wallet/hooks'\nimport { Field, typeInput } from './actions'\n\nexport function useBurnState(): AppState['burn'] {\n\treturn useSelector((state) => state.burn)\n}\n\nexport function useDerivedBurnInfo(\n\tcurrencyA: Currency | undefined,\n\tcurrencyB: Currency | undefined,\n): {\n\tpair?: Pair | null\n\tparsedAmounts: {\n\t\t[Field.LIQUIDITY_PERCENT]: Percent\n\t\t[Field.LIQUIDITY]?: TokenAmount\n\t\t[Field.CURRENCY_A]?: CurrencyAmount\n\t\t[Field.CURRENCY_B]?: CurrencyAmount\n\t}\n\terror?: string\n} {\n\tconst { account, chainId } = useActiveWeb3React()\n\n\tconst { independentField, typedValue } = useBurnState()\n\n\t// pair + totalsupply\n\tconst [, pair] = usePair(currencyA, currencyB)\n\n\t// balances\n\tconst relevantTokenBalances = useTokenBalances(account ?? undefined, [pair?.liquidityToken])\n\tconst userLiquidity: undefined | TokenAmount =\n\t\trelevantTokenBalances?.[pair?.liquidityToken?.address ?? '']\n\n\tconst [tokenA, tokenB] = [\n\t\twrappedCurrency(currencyA, chainId),\n\t\twrappedCurrency(currencyB, chainId),\n\t]\n\tconst tokens = {\n\t\t[Field.CURRENCY_A]: tokenA,\n\t\t[Field.CURRENCY_B]: tokenB,\n\t\t[Field.LIQUIDITY]: pair?.liquidityToken,\n\t}\n\n\t// liquidity values\n\tconst totalSupply = useTotalSupply(pair?.liquidityToken)\n\tconst liquidityValueA =\n\t\tpair &&\n\t\ttotalSupply &&\n\t\tuserLiquidity &&\n\t\ttokenA &&\n\t\t// this condition is a short-circuit in the case where useTokenBalance updates sooner than useTotalSupply\n\t\tJSBI.greaterThanOrEqual(totalSupply.raw, userLiquidity.raw)\n\t\t\t? new TokenAmount(\n\t\t\t\t\ttokenA,\n\t\t\t\t\tpair.getLiquidityValue(tokenA, totalSupply, userLiquidity, false).raw,\n\t\t\t )\n\t\t\t: undefined\n\tconst liquidityValueB =\n\t\tpair &&\n\t\ttotalSupply &&\n\t\tuserLiquidity &&\n\t\ttokenB &&\n\t\t// this condition is a short-circuit in the case where useTokenBalance updates sooner than useTotalSupply\n\t\tJSBI.greaterThanOrEqual(totalSupply.raw, userLiquidity.raw)\n\t\t\t? new TokenAmount(\n\t\t\t\t\ttokenB,\n\t\t\t\t\tpair.getLiquidityValue(tokenB, totalSupply, userLiquidity, false).raw,\n\t\t\t )\n\t\t\t: undefined\n\tconst liquidityValues: {\n\t\t[Field.CURRENCY_A]?: TokenAmount\n\t\t[Field.CURRENCY_B]?: TokenAmount\n\t} = {\n\t\t[Field.CURRENCY_A]: liquidityValueA,\n\t\t[Field.CURRENCY_B]: liquidityValueB,\n\t}\n\n\tlet percentToRemove: Percent = new Percent('0', '100')\n\t// user specified a %\n\tif (independentField === Field.LIQUIDITY_PERCENT) {\n\t\tpercentToRemove = new Percent(typedValue, '100')\n\t}\n\t// user specified a specific amount of liquidity tokens\n\telse if (independentField === Field.LIQUIDITY) {\n\t\tif (pair?.liquidityToken) {\n\t\t\tconst independentAmount = tryParseAmount(typedValue, pair.liquidityToken)\n\t\t\tif (\n\t\t\t\tindependentAmount &&\n\t\t\t\tuserLiquidity &&\n\t\t\t\t!independentAmount.greaterThan(userLiquidity)\n\t\t\t) {\n\t\t\t\tpercentToRemove = new Percent(independentAmount.raw, userLiquidity.raw)\n\t\t\t}\n\t\t}\n\t}\n\t// user specified a specific amount of token a or b\n\telse if (tokens[independentField]) {\n\t\tconst independentAmount = tryParseAmount(typedValue, tokens[independentField])\n\t\tconst liquidityValue = liquidityValues[independentField]\n\t\tif (independentAmount && liquidityValue && !independentAmount.greaterThan(liquidityValue)) {\n\t\t\tpercentToRemove = new Percent(independentAmount.raw, liquidityValue.raw)\n\t\t}\n\t}\n\n\tconst parsedAmounts: {\n\t\t[Field.LIQUIDITY_PERCENT]: Percent\n\t\t[Field.LIQUIDITY]?: TokenAmount\n\t\t[Field.CURRENCY_A]?: TokenAmount\n\t\t[Field.CURRENCY_B]?: TokenAmount\n\t} = {\n\t\t[Field.LIQUIDITY_PERCENT]: percentToRemove,\n\t\t[Field.LIQUIDITY]:\n\t\t\tuserLiquidity && percentToRemove && percentToRemove.greaterThan('0')\n\t\t\t\t? new TokenAmount(\n\t\t\t\t\t\tuserLiquidity.token,\n\t\t\t\t\t\tpercentToRemove.multiply(userLiquidity.raw).quotient,\n\t\t\t\t )\n\t\t\t\t: undefined,\n\t\t[Field.CURRENCY_A]:\n\t\t\ttokenA && percentToRemove && percentToRemove.greaterThan('0') && liquidityValueA\n\t\t\t\t? new TokenAmount(tokenA, percentToRemove.multiply(liquidityValueA.raw).quotient)\n\t\t\t\t: undefined,\n\t\t[Field.CURRENCY_B]:\n\t\t\ttokenB && percentToRemove && percentToRemove.greaterThan('0') && liquidityValueB\n\t\t\t\t? new TokenAmount(tokenB, percentToRemove.multiply(liquidityValueB.raw).quotient)\n\t\t\t\t: undefined,\n\t}\n\n\tlet error: string | undefined\n\tif (!account) {\n\t\terror = 'Connect Wallet'\n\t}\n\n\tif (\n\t\t!parsedAmounts[Field.LIQUIDITY] ||\n\t\t!parsedAmounts[Field.CURRENCY_A] ||\n\t\t!parsedAmounts[Field.CURRENCY_B]\n\t) {\n\t\terror = error ?? 'Enter an amount'\n\t}\n\n\treturn { pair, parsedAmounts, error }\n}\n\nexport function useBurnActionHandlers(): {\n\tonUserInput: (field: Field, typedValue: string) => void\n} {\n\tconst dispatch = useDispatch()\n\n\tconst onUserInput = useCallback(\n\t\t(field: Field, typedValue: string) => {\n\t\t\tdispatch(typeInput({ field, typedValue }))\n\t\t},\n\t\t[dispatch],\n\t)\n\n\treturn {\n\t\tonUserInput,\n\t}\n}\n","import React, { useCallback, useContext, useMemo, useState } from 'react'\nimport styled, { ThemeContext } from 'styled-components'\nimport { splitSignature } from '@ethersproject/bytes'\nimport { Contract } from '@ethersproject/contracts'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { Currency, currencyEquals, ETHER, Percent, WETH } from 'sdk-hoosmartchain'\nimport { Button, Flex, Text } from '../../uikit-foodcourt'\nimport { ArrowDown, Plus } from 'react-feather'\nimport { RouteComponentProps } from 'react-router'\n\nimport { BigNumber } from '@ethersproject/bignumber'\nimport ConnectWalletButton from 'components/ConnectWalletButton'\nimport useI18n from 'hooks/useI18n'\nimport { AutoColumn, ColumnCenter } from '../../components/Column'\nimport TransactionConfirmationModal, {\n\tConfirmationModalContent,\n} from '../../components/TransactionConfirmationModal'\nimport CurrencyInputPanel from '../../components/CurrencyInputPanel'\nimport DoubleCurrencyLogo from '../../components/DoubleLogo'\nimport { AddRemoveTabs } from '../../components/NavigationTabs'\nimport { MinimalPositionCard } from '../../components/PositionCard'\nimport { RowBetween, RowFixed } from '../../components/Row'\nimport Container from '../../components/Container'\n\nimport Slider from '../../components/Slider'\nimport CurrencyLogo from '../../components/CurrencyLogo'\nimport { ROUTER_ADDRESS } from '../../constants'\nimport { useActiveWeb3React } from '../../hooks'\nimport { useCurrency } from '../../hooks/Tokens'\nimport { usePairContract } from '../../hooks/useContract'\n\nimport { useTransactionAdder } from '../../state/transactions/hooks'\nimport { StyledInternalLink } from '../../components/Shared'\nimport { calculateGasMargin, calculateSlippageAmount, getRouterContract } from '../../utils'\nimport { currencyId } from '../../utils/currencyId'\nimport useDebouncedChangeHandler from '../../utils/useDebouncedChangeHandler'\nimport { wrappedCurrency } from '../../utils/wrappedCurrency'\nimport AppBody from '../AppBody'\nimport { ClickableText, Wrapper } from '../Pool/styleds'\nimport { useApproveCallback, ApprovalState } from '../../hooks/useApproveCallback'\nimport { Dots } from '../../components/swap/styleds'\nimport { useBurnActionHandlers, useDerivedBurnInfo, useBurnState } from '../../state/burn/hooks'\n\nimport { Field } from '../../state/burn/actions'\nimport { useUserDeadline, useUserSlippageTolerance } from '../../state/user/hooks'\n\nconst OutlineCard = styled.div`\n\tborder: 1px solid ${({ theme }) => theme.colors.borderColor};\n\tborder-radius: 16px;\n\tpadding: 24px;\n`\n\nconst Body = styled.div`\n\tpadding-left: 24px;\n\tpadding-right: 24px;\n`\n\nexport default function RemoveLiquidity({\n\thistory,\n\tmatch: {\n\t\tparams: { currencyIdA, currencyIdB },\n\t},\n}: RouteComponentProps<{ currencyIdA: string; currencyIdB: string }>) {\n\tconst [currencyA, currencyB] = [\n\t\tuseCurrency(currencyIdA) ?? undefined,\n\t\tuseCurrency(currencyIdB) ?? undefined,\n\t]\n\tconst { account, chainId, library } = useActiveWeb3React()\n\tconst TranslateString = useI18n()\n\tconst [tokenA, tokenB] = useMemo(\n\t\t() => [wrappedCurrency(currencyA, chainId), wrappedCurrency(currencyB, chainId)],\n\t\t[currencyA, currencyB, chainId],\n\t)\n\n\tconst theme = useContext(ThemeContext)\n\n\t// burn state\n\tconst { independentField, typedValue } = useBurnState()\n\tconst { pair, parsedAmounts, error } = useDerivedBurnInfo(\n\t\tcurrencyA ?? undefined,\n\t\tcurrencyB ?? undefined,\n\t)\n\tconst { onUserInput: _onUserInput } = useBurnActionHandlers()\n\tconst isValid = !error\n\n\t// modal and loading\n\tconst [showConfirm, setShowConfirm] = useState(false)\n\tconst [showDetailed, setShowDetailed] = useState(false)\n\tconst [attemptingTxn, setAttemptingTxn] = useState(false) // clicked confirm\n\n\t// txn values\n\tconst [txHash, setTxHash] = useState('')\n\tconst [deadline] = useUserDeadline()\n\tconst [allowedSlippage] = useUserSlippageTolerance()\n\n\tconst formattedAmounts = {\n\t\t[Field.LIQUIDITY_PERCENT]: parsedAmounts[Field.LIQUIDITY_PERCENT].equalTo('0')\n\t\t\t? '0'\n\t\t\t: parsedAmounts[Field.LIQUIDITY_PERCENT].lessThan(new Percent('1', '100'))\n\t\t\t? '<1'\n\t\t\t: parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0),\n\t\t[Field.LIQUIDITY]:\n\t\t\tindependentField === Field.LIQUIDITY\n\t\t\t\t? typedValue\n\t\t\t\t: parsedAmounts[Field.LIQUIDITY]?.toSignificant(6) ?? '',\n\t\t[Field.CURRENCY_A]:\n\t\t\tindependentField === Field.CURRENCY_A\n\t\t\t\t? typedValue\n\t\t\t\t: parsedAmounts[Field.CURRENCY_A]?.toSignificant(6) ?? '',\n\t\t[Field.CURRENCY_B]:\n\t\t\tindependentField === Field.CURRENCY_B\n\t\t\t\t? typedValue\n\t\t\t\t: parsedAmounts[Field.CURRENCY_B]?.toSignificant(6) ?? '',\n\t}\n\n\tconst atMaxAmount = parsedAmounts[Field.LIQUIDITY_PERCENT]?.equalTo(new Percent('1'))\n\n\t// pair contract\n\tconst pairContract: Contract | null = usePairContract(pair?.liquidityToken?.address)\n\n\t// allowance handling\n\tconst [signatureData, setSignatureData] = useState<{\n\t\tv: number\n\t\tr: string\n\t\ts: string\n\t\tdeadline: number\n\t} | null>(null)\n\tconst [approval, approveCallback] = useApproveCallback(\n\t\tparsedAmounts[Field.LIQUIDITY],\n\t\tROUTER_ADDRESS,\n\t)\n\tasync function onAttemptToApprove() {\n\t\tif (!pairContract || !pair || !library) throw new Error('missing dependencies')\n\t\tconst liquidityAmount = parsedAmounts[Field.LIQUIDITY]\n\t\tif (!liquidityAmount) throw new Error('missing liquidity amount')\n\t\t// try to gather a signature for permission\n\t\tconst nonce = await pairContract.nonces(account)\n\n\t\tconst deadlineForSignature: number = Math.ceil(Date.now() / 1000) + deadline\n\n\t\tconst EIP712Domain = [\n\t\t\t{ name: 'name', type: 'string' },\n\t\t\t{ name: 'version', type: 'string' },\n\t\t\t{ name: 'chainId', type: 'uint256' },\n\t\t\t{ name: 'verifyingContract', type: 'address' },\n\t\t]\n\t\tconst domain = {\n\t\t\tname: 'Foodcourt LPs',\n\t\t\tversion: '1',\n\t\t\tchainId,\n\t\t\tverifyingContract: pair.liquidityToken.address,\n\t\t}\n\t\tconst Permit = [\n\t\t\t{ name: 'owner', type: 'address' },\n\t\t\t{ name: 'spender', type: 'address' },\n\t\t\t{ name: 'value', type: 'uint256' },\n\t\t\t{ name: 'nonce', type: 'uint256' },\n\t\t\t{ name: 'deadline', type: 'uint256' },\n\t\t]\n\t\tconst message = {\n\t\t\towner: account,\n\t\t\tspender: ROUTER_ADDRESS,\n\t\t\tvalue: liquidityAmount.raw.toString(),\n\t\t\tnonce: nonce.toHexString(),\n\t\t\tdeadline: deadlineForSignature,\n\t\t}\n\t\tconst data = JSON.stringify({\n\t\t\ttypes: {\n\t\t\t\tEIP712Domain,\n\t\t\t\tPermit,\n\t\t\t},\n\t\t\tdomain,\n\t\t\tprimaryType: 'Permit',\n\t\t\tmessage,\n\t\t})\n\n\t\tlibrary\n\t\t\t.send('eth_signTypedData_v4', [account, data])\n\t\t\t.then(splitSignature)\n\t\t\t.then((signature) => {\n\t\t\t\tsetSignatureData({\n\t\t\t\t\tv: signature.v,\n\t\t\t\t\tr: signature.r,\n\t\t\t\t\ts: signature.s,\n\t\t\t\t\tdeadline: deadlineForSignature,\n\t\t\t\t})\n\t\t\t})\n\t\t\t.catch((e) => {\n\t\t\t\t// for all errors other than 4001 (EIP-1193 user rejected request), fall back to manual approve\n\t\t\t\tif (e?.code !== 4001) {\n\t\t\t\t\tapproveCallback()\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\t// wrapped onUserInput to clear signatures\n\tconst onUserInput = useCallback(\n\t\t(field: Field, val: string) => {\n\t\t\tsetSignatureData(null)\n\t\t\treturn _onUserInput(field, val)\n\t\t},\n\t\t[_onUserInput],\n\t)\n\n\tconst onLiquidityInput = useCallback((val: string): void => onUserInput(Field.LIQUIDITY, val), [\n\t\tonUserInput,\n\t])\n\tconst onCurrencyAInput = useCallback(\n\t\t(val: string): void => onUserInput(Field.CURRENCY_A, val),\n\t\t[onUserInput],\n\t)\n\tconst onCurrencyBInput = useCallback(\n\t\t(val: string): void => onUserInput(Field.CURRENCY_B, val),\n\t\t[onUserInput],\n\t)\n\n\t// tx sending\n\tconst addTransaction = useTransactionAdder()\n\tasync function onRemove() {\n\t\tif (!chainId || !library || !account) throw new Error('missing dependencies')\n\t\tconst {\n\t\t\t[Field.CURRENCY_A]: currencyAmountA,\n\t\t\t[Field.CURRENCY_B]: currencyAmountB,\n\t\t} = parsedAmounts\n\t\tif (!currencyAmountA || !currencyAmountB) {\n\t\t\tthrow new Error('missing currency amounts')\n\t\t}\n\t\tconst router = getRouterContract(chainId, library, account)\n\n\t\tconst amountsMin = {\n\t\t\t[Field.CURRENCY_A]: calculateSlippageAmount(currencyAmountA, allowedSlippage)[0],\n\t\t\t[Field.CURRENCY_B]: calculateSlippageAmount(currencyAmountB, allowedSlippage)[0],\n\t\t}\n\n\t\tif (!currencyA || !currencyB) throw new Error('missing tokens')\n\t\tconst liquidityAmount = parsedAmounts[Field.LIQUIDITY]\n\t\tif (!liquidityAmount) throw new Error('missing liquidity amount')\n\n\t\tconst currencyBIsETH = currencyB === ETHER\n\t\tconst oneCurrencyIsETH = currencyA === ETHER || currencyBIsETH\n\t\tconst deadlineFromNow = Math.ceil(Date.now() / 1000) + deadline\n\n\t\tif (!tokenA || !tokenB) throw new Error('could not wrap')\n\n\t\tlet methodNames: string[]\n\t\tlet args: Array\n\t\t// we have approval, use normal remove liquidity\n\t\tif (approval === ApprovalState.APPROVED) {\n\t\t\t// removeLiquidityETH\n\t\t\tif (oneCurrencyIsETH) {\n\t\t\t\tmethodNames = [\n\t\t\t\t\t'removeLiquidityETH',\n\t\t\t\t\t'removeLiquidityETHSupportingFeeOnTransferTokens',\n\t\t\t\t]\n\t\t\t\targs = [\n\t\t\t\t\tcurrencyBIsETH ? tokenA.address : tokenB.address,\n\t\t\t\t\tliquidityAmount.raw.toString(),\n\t\t\t\t\tamountsMin[currencyBIsETH ? Field.CURRENCY_A : Field.CURRENCY_B].toString(),\n\t\t\t\t\tamountsMin[currencyBIsETH ? Field.CURRENCY_B : Field.CURRENCY_A].toString(),\n\t\t\t\t\taccount,\n\t\t\t\t\tdeadlineFromNow,\n\t\t\t\t]\n\t\t\t}\n\t\t\t// removeLiquidity\n\t\t\telse {\n\t\t\t\tmethodNames = ['removeLiquidity']\n\t\t\t\targs = [\n\t\t\t\t\ttokenA.address,\n\t\t\t\t\ttokenB.address,\n\t\t\t\t\tliquidityAmount.raw.toString(),\n\t\t\t\t\tamountsMin[Field.CURRENCY_A].toString(),\n\t\t\t\t\tamountsMin[Field.CURRENCY_B].toString(),\n\t\t\t\t\taccount,\n\t\t\t\t\tdeadlineFromNow,\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t\t// we have a signataure, use permit versions of remove liquidity\n\t\telse if (signatureData !== null) {\n\t\t\t// removeLiquidityETHWithPermit\n\t\t\tif (oneCurrencyIsETH) {\n\t\t\t\tmethodNames = [\n\t\t\t\t\t'removeLiquidityETHWithPermit',\n\t\t\t\t\t'removeLiquidityETHWithPermitSupportingFeeOnTransferTokens',\n\t\t\t\t]\n\t\t\t\targs = [\n\t\t\t\t\tcurrencyBIsETH ? tokenA.address : tokenB.address,\n\t\t\t\t\tliquidityAmount.raw.toString(),\n\t\t\t\t\tamountsMin[currencyBIsETH ? Field.CURRENCY_A : Field.CURRENCY_B].toString(),\n\t\t\t\t\tamountsMin[currencyBIsETH ? Field.CURRENCY_B : Field.CURRENCY_A].toString(),\n\t\t\t\t\taccount,\n\t\t\t\t\tsignatureData.deadline,\n\t\t\t\t\tfalse,\n\t\t\t\t\tsignatureData.v,\n\t\t\t\t\tsignatureData.r,\n\t\t\t\t\tsignatureData.s,\n\t\t\t\t]\n\t\t\t}\n\t\t\t// removeLiquidityETHWithPermit\n\t\t\telse {\n\t\t\t\tmethodNames = ['removeLiquidityWithPermit']\n\t\t\t\targs = [\n\t\t\t\t\ttokenA.address,\n\t\t\t\t\ttokenB.address,\n\t\t\t\t\tliquidityAmount.raw.toString(),\n\t\t\t\t\tamountsMin[Field.CURRENCY_A].toString(),\n\t\t\t\t\tamountsMin[Field.CURRENCY_B].toString(),\n\t\t\t\t\taccount,\n\t\t\t\t\tsignatureData.deadline,\n\t\t\t\t\tfalse,\n\t\t\t\t\tsignatureData.v,\n\t\t\t\t\tsignatureData.r,\n\t\t\t\t\tsignatureData.s,\n\t\t\t\t]\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t'Attempting to confirm without approval or a signature. Please contact support.',\n\t\t\t)\n\t\t}\n\t\tconst safeGasEstimates: (BigNumber | undefined)[] = await Promise.all(\n\t\t\tmethodNames.map((methodName, index) =>\n\t\t\t\trouter.estimateGas[methodName](...args)\n\t\t\t\t\t.then(calculateGasMargin)\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\tconsole.error(`estimateGas failed`, index, methodName, args, e)\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}),\n\t\t\t),\n\t\t)\n\n\t\tconst indexOfSuccessfulEstimation = safeGasEstimates.findIndex((safeGasEstimate) =>\n\t\t\tBigNumber.isBigNumber(safeGasEstimate),\n\t\t)\n\n\t\t// all estimations failed...\n\t\tif (indexOfSuccessfulEstimation === -1) {\n\t\t\tconsole.error('This transaction would fail. Please contact support.')\n\t\t} else {\n\t\t\tconst methodName = methodNames[indexOfSuccessfulEstimation]\n\t\t\tconst safeGasEstimate = safeGasEstimates[indexOfSuccessfulEstimation]\n\n\t\t\tsetAttemptingTxn(true)\n\t\t\tawait router[methodName](...args, {\n\t\t\t\tgasLimit: safeGasEstimate,\n\t\t\t})\n\t\t\t\t.then((response: TransactionResponse) => {\n\t\t\t\t\tsetAttemptingTxn(false)\n\n\t\t\t\t\taddTransaction(response, {\n\t\t\t\t\t\tsummary: `Remove ${parsedAmounts[Field.CURRENCY_A]?.toSignificant(3)} ${\n\t\t\t\t\t\t\tcurrencyA?.symbol\n\t\t\t\t\t\t} and ${parsedAmounts[Field.CURRENCY_B]?.toSignificant(3)} ${\n\t\t\t\t\t\t\tcurrencyB?.symbol\n\t\t\t\t\t\t}`,\n\t\t\t\t\t})\n\n\t\t\t\t\tsetTxHash(response.hash)\n\t\t\t\t})\n\t\t\t\t.catch((e: Error) => {\n\t\t\t\t\tsetAttemptingTxn(false)\n\t\t\t\t\t// we only care if the error is something _other_ than the user rejected the tx\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t})\n\t\t}\n\t}\n\n\tfunction modalHeader() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{currencyA?.symbol}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{currencyB?.symbol}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{`Output is estimated. If the price changes by more than ${\n\t\t\t\t\t\tallowedSlippage / 100\n\t\t\t\t\t}% your transaction will revert.`}\n\t\t\t\t\n\t\t\t\n\t\t)\n\t}\n\n\tfunction modalBottom() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{`LP ${currencyA?.symbol}/${currencyB?.symbol}`} Burned\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{parsedAmounts[Field.LIQUIDITY]?.toSignificant(6)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{pair && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{TranslateString(1182, 'Price')}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t1 {currencyA?.symbol} ={' '}\n\t\t\t\t\t\t\t\t{tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'}{' '}\n\t\t\t\t\t\t\t\t{currencyB?.symbol}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t1 {currencyB?.symbol} ={' '}\n\t\t\t\t\t\t\t\t{tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'}{' '}\n\t\t\t\t\t\t\t\t{currencyA?.symbol}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\t{TranslateString(1136, 'Confirm')}\n\t\t\t\t\n\t\t\t\n\t\t)\n\t}\n\n\tconst pendingText = `Removing ${parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} ${\n\t\tcurrencyA?.symbol\n\t} and ${parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} ${currencyB?.symbol}`\n\n\tconst liquidityPercentChangeCallback = useCallback(\n\t\t(value: number) => {\n\t\t\tonUserInput(Field.LIQUIDITY_PERCENT, value.toString())\n\t\t},\n\t\t[onUserInput],\n\t)\n\n\tconst oneCurrencyIsETH = currencyA === ETHER || currencyB === ETHER\n\tconst oneCurrencyIsWETH = Boolean(\n\t\tchainId &&\n\t\t\t((currencyA && currencyEquals(WETH[chainId], currencyA)) ||\n\t\t\t\t(currencyB && currencyEquals(WETH[chainId], currencyB))),\n\t)\n\n\tconst handleSelectCurrencyA = useCallback(\n\t\t(currency: Currency) => {\n\t\t\tif (currencyIdB && currencyId(currency) === currencyIdB) {\n\t\t\t\thistory.push(`/remove/${currencyId(currency)}/${currencyIdA}`)\n\t\t\t} else {\n\t\t\t\thistory.push(`/remove/${currencyId(currency)}/${currencyIdB}`)\n\t\t\t}\n\t\t},\n\t\t[currencyIdA, currencyIdB, history],\n\t)\n\tconst handleSelectCurrencyB = useCallback(\n\t\t(currency: Currency) => {\n\t\t\tif (currencyIdA && currencyId(currency) === currencyIdA) {\n\t\t\t\thistory.push(`/remove/${currencyIdB}/${currencyId(currency)}`)\n\t\t\t} else {\n\t\t\t\thistory.push(`/remove/${currencyIdA}/${currencyId(currency)}`)\n\t\t\t}\n\t\t},\n\t\t[currencyIdA, currencyIdB, history],\n\t)\n\n\tconst handleDismissConfirmation = useCallback(() => {\n\t\tsetShowConfirm(false)\n\t\tsetSignatureData(null) // important that we clear signature data to avoid bad sigs\n\t\t// if there was a tx hash, we want to clear the input\n\t\tif (txHash) {\n\t\t\tonUserInput(Field.LIQUIDITY_PERCENT, '0')\n\t\t}\n\t\tsetTxHash('')\n\t}, [onUserInput, txHash])\n\n\tconst [innerLiquidityPercentage, setInnerLiquidityPercentage] = useDebouncedChangeHandler(\n\t\tNumber.parseInt(parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0)),\n\t\tliquidityPercentChangeCallback,\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tpendingText={pendingText}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tAmount\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tsetShowDetailed(!showDetailed)\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{showDetailed\n\t\t\t\t\t\t\t\t\t\t\t\t? TranslateString(1184, 'Simple')\n\t\t\t\t\t\t\t\t\t\t\t\t: TranslateString(1186, 'Detailed')}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{formattedAmounts[Field.LIQUIDITY_PERCENT]}%\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{!showDetailed && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonUserInput(Field.LIQUIDITY_PERCENT, '25')\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t25%\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonUserInput(Field.LIQUIDITY_PERCENT, '50')\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t50%\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonUserInput(Field.LIQUIDITY_PERCENT, '75')\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t75%\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonUserInput(Field.LIQUIDITY_PERCENT, '100')\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(166, 'Max')}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{!showDetailed && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{formattedAmounts[Field.CURRENCY_A] || '-'}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{currencyA?.symbol}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{formattedAmounts[Field.CURRENCY_B] || '-'}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{currencyB?.symbol}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{chainId && (oneCurrencyIsWETH || oneCurrencyIsETH) ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{oneCurrencyIsETH ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(1188, 'Receive WBNB')}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : oneCurrencyIsWETH ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(1190, 'Receive BNB')}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{showDetailed && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tonUserInput(Field.LIQUIDITY_PERCENT, '100')\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tshowMaxButton={!atMaxAmount}\n\t\t\t\t\t\t\t\t\t\tdisableCurrencySelect\n\t\t\t\t\t\t\t\t\t\tcurrency={pair?.liquidityToken}\n\t\t\t\t\t\t\t\t\t\tpair={pair}\n\t\t\t\t\t\t\t\t\t\tid=\"liquidity-amount\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t onUserInput(Field.LIQUIDITY_PERCENT, '100')}\n\t\t\t\t\t\t\t\t\t\tshowMaxButton={!atMaxAmount}\n\t\t\t\t\t\t\t\t\t\tcurrency={currencyA}\n\t\t\t\t\t\t\t\t\t\tlabel=\"Output\"\n\t\t\t\t\t\t\t\t\t\tonCurrencySelect={handleSelectCurrencyA}\n\t\t\t\t\t\t\t\t\t\tid=\"remove-liquidity-tokena\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t onUserInput(Field.LIQUIDITY_PERCENT, '100')}\n\t\t\t\t\t\t\t\t\t\tshowMaxButton={!atMaxAmount}\n\t\t\t\t\t\t\t\t\t\tcurrency={currencyB}\n\t\t\t\t\t\t\t\t\t\tlabel=\"Output\"\n\t\t\t\t\t\t\t\t\t\tonCurrencySelect={handleSelectCurrencyB}\n\t\t\t\t\t\t\t\t\t\tid=\"remove-liquidity-tokenb\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{pair && (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tPrice:\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t1 {currencyA?.symbol} ={' '}\n\t\t\t\t\t\t\t\t\t\t\t{tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'}{' '}\n\t\t\t\t\t\t\t\t\t\t\t{currencyB?.symbol}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t1 {currencyB?.symbol} ={' '}\n\t\t\t\t\t\t\t\t\t\t\t{tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'}{' '}\n\t\t\t\t\t\t\t\t\t\t\t{currencyA?.symbol}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{!account ? (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{approval === ApprovalState.PENDING ? (\n\t\t\t\t\t\t\t\t\t\t\t\tApproving\n\t\t\t\t\t\t\t\t\t\t\t) : approval === ApprovalState.APPROVED ||\n\t\t\t\t\t\t\t\t\t\t\t signatureData !== null ? (\n\t\t\t\t\t\t\t\t\t\t\t\t'Approved'\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t'Approve'\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tsetShowConfirm(true)\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t\t\t!isValid ||\n\t\t\t\t\t\t\t\t\t\t\t\t(signatureData === null &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tapproval !== ApprovalState.APPROVED)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\t\t!isValid &&\n\t\t\t\t\t\t\t\t\t\t\t\t!!parsedAmounts[Field.CURRENCY_A] &&\n\t\t\t\t\t\t\t\t\t\t\t\t!!parsedAmounts[Field.CURRENCY_B]\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'danger'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'primary'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{error || 'Remove'}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t{pair ? (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : null}\n\t\t\n\t)\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\n/**\n * Easy way to debounce the handling of a rapidly changing value, e.g. a changing slider input\n * @param value value that is rapidly changing\n * @param onChange change handler that should receive the debounced updates to the value\n * @param debouncedMs how long we should wait for changes to be applied\n */\nexport default function useDebouncedChangeHandler(\n\tvalue: T,\n\tonChange: (newValue: T) => void,\n\tdebouncedMs = 100,\n): [T, (value: T) => void] {\n\tconst [inner, setInner] = useState(() => value)\n\tconst timer = useRef>()\n\n\tconst onChangeInner = useCallback(\n\t\t(newValue: T) => {\n\t\t\tsetInner(newValue)\n\t\t\tif (timer.current) {\n\t\t\t\tclearTimeout(timer.current)\n\t\t\t}\n\t\t\ttimer.current = setTimeout(() => {\n\t\t\t\tonChange(newValue)\n\t\t\t\ttimer.current = undefined\n\t\t\t}, debouncedMs)\n\t\t},\n\t\t[debouncedMs, onChange],\n\t)\n\n\tuseEffect(() => {\n\t\tif (timer.current) {\n\t\t\tclearTimeout(timer.current)\n\t\t\ttimer.current = undefined\n\t\t}\n\t\tsetInner(value)\n\t}, [value])\n\n\treturn [inner, onChangeInner]\n}\n","import React, { useCallback } from 'react'\nimport styled from 'styled-components'\nimport { Text } from '../../uikit-foodcourt'\nimport useI18n from 'hooks/useI18n'\nimport useENS from '../../hooks/useENS'\nimport { useActiveWeb3React } from '../../hooks'\nimport { ExternalLink } from '../Shared'\nimport { AutoColumn } from '../Column'\nimport { RowBetween } from '../Row'\nimport { getBscScanLink } from '../../utils'\n\nconst InputPanel = styled.div`\n\tdisplay: flex;\n\tflex-flow: column nowrap;\n\tposition: relative;\n\tborder-radius: 1.25rem;\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n\tz-index: 1;\n\twidth: 100%;\n`\n\nconst ContainerRow = styled.div<{ error: boolean }>`\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tborder-radius: 1.25rem;\n\tborder: 1px solid\n\t\t${({ error, theme }) => (error ? theme.colors.failure : theme.colors.invertedContrast)};\n\ttransition: border-color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')},\n\t\tcolor 500ms ${({ error }) => (error ? 'step-end' : 'step-start')};\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n`\n\nconst InputContainer = styled.div`\n\tflex: 1;\n\tpadding: 1rem;\n`\n\nconst Input = styled.input<{ error?: boolean }>`\n\tfont-size: 1.25rem;\n\toutline: none;\n\tborder: none;\n\tflex: 1 1 auto;\n\twidth: 0;\n\tbackground-color: ${({ theme }) => theme.colors.invertedContrast};\n\ttransition: color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')};\n\tcolor: ${({ error, theme }) => (error ? theme.colors.failure : theme.colors.primary)};\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tfont-weight: 500;\n\twidth: 100%;\n\t::placeholder {\n\t\tcolor: ${({ theme }) => theme.colors.textDisabled};\n\t}\n\tpadding: 0px;\n\t-webkit-appearance: textfield;\n\n\t::-webkit-search-decoration {\n\t\t-webkit-appearance: none;\n\t}\n\n\t::-webkit-outer-spin-button,\n\t::-webkit-inner-spin-button {\n\t\t-webkit-appearance: none;\n\t}\n\n\t::placeholder {\n\t\tcolor: ${({ theme }) => theme.colors.textDisabled};\n\t}\n`\n\nexport default function AddressInputPanel({\n\tid,\n\tvalue,\n\tonChange,\n}: {\n\tid?: string\n\t// the typed string value\n\tvalue: string\n\t// triggers whenever the typed value changes\n\tonChange: (value: string) => void\n}) {\n\tconst { chainId } = useActiveWeb3React()\n\tconst TranslateString = useI18n()\n\tconst { address, loading, name } = useENS(value)\n\n\tconst handleInput = useCallback(\n\t\t(event) => {\n\t\t\tconst input = event.target.value\n\t\t\tconst withoutSpaces = input.replace(/\\s+/g, '')\n\t\t\tonChange(withoutSpaces)\n\t\t},\n\t\t[onChange],\n\t)\n\n\tconst error = Boolean(value.length > 0 && !loading && !address)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{TranslateString(1138, 'Recipient')}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{address && chainId && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{TranslateString(116, '(View on BscScan)')}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import { Percent } from 'sdk-hoosmartchain'\nimport React from 'react'\nimport { ONE_BIPS } from '../../constants'\nimport { warningSeverity } from '../../utils/prices'\nimport { ErrorText } from './styleds'\n\n/**\n * Formatted version of price impact text with warning colors\n */\nexport default function FormattedPriceImpact({ priceImpact }: { priceImpact?: Percent }) {\n\treturn (\n\t\t\n\t\t\t{priceImpact\n\t\t\t\t? priceImpact.lessThan(ONE_BIPS)\n\t\t\t\t\t? '<0.01%'\n\t\t\t\t\t: `${priceImpact.toFixed(2)}%`\n\t\t\t\t: '-'}\n\t\t\n\t)\n}\n","import { Trade, TradeType } from 'sdk-hoosmartchain'\nimport React, { useMemo, useState } from 'react'\nimport { Text, Button } from '../../uikit-foodcourt'\nimport { Repeat } from 'react-feather'\n\nimport useI18n from 'hooks/useI18n'\nimport { Field } from '../../state/swap/actions'\nimport {\n\tcomputeSlippageAdjustedAmounts,\n\tcomputeTradePriceBreakdown,\n\tformatExecutionPrice,\n\twarningSeverity,\n} from '../../utils/prices'\nimport { AutoColumn } from '../Column'\nimport QuestionHelper from '../QuestionHelper'\nimport { AutoRow, RowBetween, RowFixed } from '../Row'\nimport FormattedPriceImpact from './FormattedPriceImpact'\nimport { StyledBalanceMaxMini, SwapCallbackError } from './styleds'\n\nexport default function SwapModalFooter({\n\ttrade,\n\tonConfirm,\n\tallowedSlippage,\n\tswapErrorMessage,\n\tdisabledConfirm,\n}: {\n\ttrade: Trade\n\tallowedSlippage: number\n\tonConfirm: () => void\n\tswapErrorMessage: string | undefined\n\tdisabledConfirm: boolean\n}) {\n\tconst [showInverted, setShowInverted] = useState(false)\n\tconst slippageAdjustedAmounts = useMemo(\n\t\t() => computeSlippageAdjustedAmounts(trade, allowedSlippage),\n\t\t[allowedSlippage, trade],\n\t)\n\tconst { priceImpactWithoutFee, realizedLPFee } = useMemo(\n\t\t() => computeTradePriceBreakdown(trade),\n\t\t[trade],\n\t)\n\tconst severity = warningSeverity(priceImpactWithoutFee)\n\tconst TranslateString = useI18n()\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tPrice\n\t\t\t\t\t\n\t\t\t\t\t\t{formatExecutionPrice(trade, showInverted)}\n\t\t\t\t\t\t setShowInverted(!showInverted)}>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{trade.tradeType === TradeType.EXACT_INPUT\n\t\t\t\t\t\t\t\t? TranslateString(1210, 'Minimum received')\n\t\t\t\t\t\t\t\t: TranslateString(220, 'Maximum sold')}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{trade.tradeType === TradeType.EXACT_INPUT\n\t\t\t\t\t\t\t\t? slippageAdjustedAmounts[Field.OUTPUT]?.toSignificant(4) ?? '-'\n\t\t\t\t\t\t\t\t: slippageAdjustedAmounts[Field.INPUT]?.toSignificant(4) ?? '-'}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{trade.tradeType === TradeType.EXACT_INPUT\n\t\t\t\t\t\t\t\t? trade.outputAmount.currency.symbol\n\t\t\t\t\t\t\t\t: trade.inputAmount.currency.symbol}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{TranslateString(226, 'Price Impact')}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{TranslateString(228, 'Liquidity Provider Fee')}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{realizedLPFee\n\t\t\t\t\t\t\t? `${realizedLPFee?.toSignificant(6)} ${\n\t\t\t\t\t\t\t\t\ttrade.inputAmount.currency.symbol\n\t\t\t\t\t\t\t }`\n\t\t\t\t\t\t\t: '-'}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t 2 ? 'danger' : 'primary'}\n\t\t\t\t\tmt=\"10px\"\n\t\t\t\t\tid=\"confirm-swap-or-send\"\n\t\t\t\t\twidth=\"100%\"\n\t\t\t\t>\n\t\t\t\t\t{severity > 2 ? 'Swap Anyway' : 'Confirm Swap'}\n\t\t\t\t\n\n\t\t\t\t{swapErrorMessage ? : null}\n\t\t\t\n\t\t\n\t)\n}\n","import React, { useContext, useMemo } from 'react'\nimport styled, { ThemeContext } from 'styled-components'\nimport { Trade, TradeType } from 'sdk-hoosmartchain'\nimport { Button, Text } from '../../uikit-foodcourt'\nimport { ArrowDown, AlertTriangle } from 'react-feather'\nimport { Field } from '../../state/swap/actions'\nimport { isAddress, shortenAddress } from '../../utils'\nimport {\n\tcomputeSlippageAdjustedAmounts,\n\tcomputeTradePriceBreakdown,\n\twarningSeverity,\n} from '../../utils/prices'\nimport { AutoColumn } from '../Column'\nimport CurrencyLogo from '../CurrencyLogo'\nimport { RowBetween, RowFixed } from '../Row'\nimport { SwapShowAcceptChanges } from './styleds'\n\nconst PriceInfoText = styled(Text)`\n\tfont-style: italic;\n\tline-height: 1.3;\n\n\tspan {\n\t\tcolor: ${({ theme }) => theme.colors.primary};\n\t\tfont-weight: 600;\n\t}\n`\n\nexport default function SwapModalHeader({\n\ttrade,\n\tallowedSlippage,\n\trecipient,\n\tshowAcceptChanges,\n\tonAcceptChanges,\n}: {\n\ttrade: Trade\n\tallowedSlippage: number\n\trecipient: string | null\n\tshowAcceptChanges: boolean\n\tonAcceptChanges: () => void\n}) {\n\tconst slippageAdjustedAmounts = useMemo(\n\t\t() => computeSlippageAdjustedAmounts(trade, allowedSlippage),\n\t\t[trade, allowedSlippage],\n\t)\n\tconst { priceImpactWithoutFee } = useMemo(() => computeTradePriceBreakdown(trade), [trade])\n\tconst priceImpactSeverity = warningSeverity(priceImpactWithoutFee)\n\n\tconst theme = useContext(ThemeContext)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{trade.inputAmount.toSignificant(6)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{trade.inputAmount.currency.symbol}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t 2\n\t\t\t\t\t\t\t\t? theme.colors.failure\n\t\t\t\t\t\t\t\t: showAcceptChanges && trade.tradeType === TradeType.EXACT_INPUT\n\t\t\t\t\t\t\t\t? theme.colors.primary\n\t\t\t\t\t\t\t\t: 'text'\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{trade.outputAmount.toSignificant(6)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{trade.outputAmount.currency.symbol}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t{showAcceptChanges ? (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t Price Updated\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : null}\n\t\t\t\n\t\t\t\t{trade.tradeType === TradeType.EXACT_INPUT ? (\n\t\t\t\t\t\n\t\t\t\t\t\t{`Output is estimated. You will receive at least `}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{slippageAdjustedAmounts[Field.OUTPUT]?.toSignificant(6)}{' '}\n\t\t\t\t\t\t\t{trade.outputAmount.currency.symbol}\n\t\t\t\t\t\t\n\t\t\t\t\t\t{' or the transaction will revert.'}\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t\t\t{`Input is estimated. You will sell at most `}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{slippageAdjustedAmounts[Field.INPUT]?.toSignificant(6)}{' '}\n\t\t\t\t\t\t\t{trade.inputAmount.currency.symbol}\n\t\t\t\t\t\t\n\t\t\t\t\t\t{' or the transaction will revert.'}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t{recipient !== null ? (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tOutput will be sent to{' '}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{isAddress(recipient) ? shortenAddress(recipient) : recipient}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : null}\n\t\t\n\t)\n}\n","import { currencyEquals, Trade } from 'sdk-hoosmartchain'\nimport React, { useCallback, useMemo } from 'react'\nimport TransactionConfirmationModal, {\n\tConfirmationModalContent,\n\tTransactionErrorContent,\n} from '../TransactionConfirmationModal'\nimport SwapModalFooter from './SwapModalFooter'\nimport SwapModalHeader from './SwapModalHeader'\n\n/**\n * Returns true if the trade requires a confirmation of details before we can submit it\n * @param tradeA trade A\n * @param tradeB trade B\n */\nfunction tradeMeaningfullyDiffers(tradeA: Trade, tradeB: Trade): boolean {\n\treturn (\n\t\ttradeA.tradeType !== tradeB.tradeType ||\n\t\t!currencyEquals(tradeA.inputAmount.currency, tradeB.inputAmount.currency) ||\n\t\t!tradeA.inputAmount.equalTo(tradeB.inputAmount) ||\n\t\t!currencyEquals(tradeA.outputAmount.currency, tradeB.outputAmount.currency) ||\n\t\t!tradeA.outputAmount.equalTo(tradeB.outputAmount)\n\t)\n}\n\nexport default function ConfirmSwapModal({\n\ttrade,\n\toriginalTrade,\n\tonAcceptChanges,\n\tallowedSlippage,\n\tonConfirm,\n\tonDismiss,\n\trecipient,\n\tswapErrorMessage,\n\tisOpen,\n\tattemptingTxn,\n\ttxHash,\n}: {\n\tisOpen: boolean\n\ttrade: Trade | undefined\n\toriginalTrade: Trade | undefined\n\tattemptingTxn: boolean\n\ttxHash: string | undefined\n\trecipient: string | null\n\tallowedSlippage: number\n\tonAcceptChanges: () => void\n\tonConfirm: () => void\n\tswapErrorMessage: string | undefined\n\tonDismiss: () => void\n}) {\n\tconst showAcceptChanges = useMemo(\n\t\t() => Boolean(trade && originalTrade && tradeMeaningfullyDiffers(trade, originalTrade)),\n\t\t[originalTrade, trade],\n\t)\n\n\tconst modalHeader = useCallback(\n\t\t() =>\n\t\t\ttrade ? (\n\t\t\t\t\n\t\t\t) : null,\n\t\t[allowedSlippage, onAcceptChanges, recipient, showAcceptChanges, trade],\n\t)\n\n\tconst modalBottom = useCallback(\n\t\t() =>\n\t\t\ttrade ? (\n\t\t\t\t\n\t\t\t) : null,\n\t\t[allowedSlippage, onConfirm, showAcceptChanges, swapErrorMessage, trade],\n\t)\n\n\t// text to show while loading\n\tconst pendingText = `Swapping ${trade?.inputAmount?.toSignificant(6)} ${\n\t\ttrade?.inputAmount?.currency?.symbol\n\t} for ${trade?.outputAmount?.toSignificant(6)} ${trade?.outputAmount?.currency?.symbol}`\n\n\tconst confirmationContent = useCallback(\n\t\t() =>\n\t\t\tswapErrorMessage ? (\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t\n\t\t\t),\n\t\t[onDismiss, modalBottom, modalHeader, swapErrorMessage],\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","import { Trade } from 'sdk-hoosmartchain'\nimport React, { Fragment, memo, useContext } from 'react'\nimport { ChevronRight } from 'react-feather'\nimport { Flex, Text } from '../../uikit-foodcourt'\nimport { ThemeContext } from 'styled-components'\nimport CurrencyLogo from '../CurrencyLogo'\n\nexport default memo(({ trade }: { trade: Trade }) => {\n\tconst theme = useContext(ThemeContext)\n\treturn (\n\t\t\n\t\t\t{trade.route.path.map((token, i, path) => {\n\t\t\t\tconst isLastItem: boolean = i === path.length - 1\n\t\t\t\treturn (\n\t\t\t\t\t// eslint-disable-next-line react/no-array-index-key\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{token.symbol}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{isLastItem ? null : }\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})}\n\t\t
\n\t)\n})\n","import React from 'react'\nimport { Trade, TradeType } from 'sdk-hoosmartchain'\nimport { Card, CardBody, Text } from '../../uikit-foodcourt'\nimport useI18n from 'hooks/useI18n'\nimport { Field } from '../../state/swap/actions'\nimport { useUserSlippageTolerance } from '../../state/user/hooks'\nimport { computeSlippageAdjustedAmounts, computeTradePriceBreakdown } from '../../utils/prices'\nimport { AutoColumn } from '../Column'\nimport QuestionHelper from '../QuestionHelper'\nimport { RowBetween, RowFixed } from '../Row'\nimport FormattedPriceImpact from './FormattedPriceImpact'\nimport { SectionBreak } from './styleds'\nimport SwapRoute from './SwapRoute'\n\nfunction TradeSummary({ trade, allowedSlippage }: { trade: Trade; allowedSlippage: number }) {\n\tconst { priceImpactWithoutFee, realizedLPFee } = computeTradePriceBreakdown(trade)\n\tconst isExactIn = trade.tradeType === TradeType.EXACT_INPUT\n\tconst slippageAdjustedAmounts = computeSlippageAdjustedAmounts(trade, allowedSlippage)\n\tconst TranslateString = useI18n()\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{isExactIn\n\t\t\t\t\t\t\t\t? TranslateString(1210, 'Minimum received')\n\t\t\t\t\t\t\t\t: TranslateString(220, 'Maximum sold')}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{isExactIn\n\t\t\t\t\t\t\t\t? `${slippageAdjustedAmounts[Field.OUTPUT]?.toSignificant(4)} ${\n\t\t\t\t\t\t\t\t\t\ttrade.outputAmount.currency.symbol\n\t\t\t\t\t\t\t\t }` ?? '-'\n\t\t\t\t\t\t\t\t: `${slippageAdjustedAmounts[Field.INPUT]?.toSignificant(4)} ${\n\t\t\t\t\t\t\t\t\t\ttrade.inputAmount.currency.symbol\n\t\t\t\t\t\t\t\t }` ?? '-'}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{TranslateString(226, 'Price Impact')}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{TranslateString(228, 'Liquidity Provider Fee')}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{realizedLPFee\n\t\t\t\t\t\t\t? `${realizedLPFee.toSignificant(4)} ${\n\t\t\t\t\t\t\t\t\ttrade.inputAmount.currency.symbol\n\t\t\t\t\t\t\t }`\n\t\t\t\t\t\t\t: '-'}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport interface AdvancedSwapDetailsProps {\n\ttrade?: Trade\n}\n\nexport function AdvancedSwapDetails({ trade }: AdvancedSwapDetailsProps) {\n\tconst [allowedSlippage] = useUserSlippageTolerance()\n\tconst TranslateString = useI18n()\n\tconst showRoute = Boolean(trade && trade.route.path.length > 2)\n\n\treturn (\n\t\t\n\t\t\t{trade && (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t{showRoute && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tRoute\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useLastTruthy } from '../../hooks/useLast'\nimport { AdvancedSwapDetails, AdvancedSwapDetailsProps } from './AdvancedSwapDetails'\n\nconst AdvancedDetailsFooter = styled.div<{ show: boolean }>`\n\tpadding-top: calc(16px + 2rem);\n\tpadding-bottom: 20px;\n\tmargin-top: -2rem;\n\twidth: 100%;\n\tmax-width: 400px;\n\tborder-bottom-left-radius: 20px;\n\tborder-bottom-right-radius: 20px;\n\tcolor: ${({ theme }) => theme.colors.textSubtle};\n\tz-index: 1;\n\n\ttransform: ${({ show }) => (show ? 'translateY(0%)' : 'translateY(-100%)')};\n\ttransition: transform 300ms ease-in-out;\n`\n\nexport default function AdvancedSwapDetailsDropdown({ trade, ...rest }: AdvancedSwapDetailsProps) {\n\tconst lastTrade = useLastTruthy(trade)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import { Percent } from 'sdk-hoosmartchain'\nimport { ALLOWED_PRICE_IMPACT_HIGH, PRICE_IMPACT_WITHOUT_FEE_CONFIRM_MIN } from '../../constants'\n\n/**\n * Given the price impact, get user confirmation.\n *\n * @param priceImpactWithoutFee price impact of the trade without the fee.\n */\nexport default function confirmPriceImpactWithoutFee(priceImpactWithoutFee: Percent): boolean {\n\tif (!priceImpactWithoutFee.lessThan(PRICE_IMPACT_WITHOUT_FEE_CONFIRM_MIN)) {\n\t\treturn (\n\t\t\twindow.prompt(\n\t\t\t\t`This swap has a price impact of at least ${PRICE_IMPACT_WITHOUT_FEE_CONFIRM_MIN.toFixed(\n\t\t\t\t\t0,\n\t\t\t\t)}%. Please type the word \"confirm\" to continue with this swap.`,\n\t\t\t) === 'confirm'\n\t\t)\n\t}\n\tif (!priceImpactWithoutFee.lessThan(ALLOWED_PRICE_IMPACT_HIGH)) {\n\t\treturn window.confirm(\n\t\t\t`This swap has a price impact of at least ${ALLOWED_PRICE_IMPACT_HIGH.toFixed(\n\t\t\t\t0,\n\t\t\t)}%. Please confirm that you would like to continue with this swap.`,\n\t\t)\n\t}\n\treturn true\n}\n","import React from 'react'\nimport { Price } from 'sdk-hoosmartchain'\nimport { SyncAltIcon, Text } from '../../uikit-foodcourt'\nimport { StyledBalanceMaxMini } from './styleds'\n\ninterface TradePriceProps {\n\tprice?: Price\n\tshowInverted: boolean\n\tsetShowInverted: (showInverted: boolean) => void\n}\n\nexport default function TradePrice({ price, showInverted, setShowInverted }: TradePriceProps) {\n\tconst formattedPrice = showInverted\n\t\t? price?.toSignificant(6)\n\t\t: price?.invert()?.toSignificant(6)\n\n\tconst show = Boolean(price?.baseCurrency && price?.quoteCurrency)\n\tconst label = showInverted\n\t\t? `${price?.quoteCurrency?.symbol} per ${price?.baseCurrency?.symbol}`\n\t\t: `${price?.baseCurrency?.symbol} per ${price?.quoteCurrency?.symbol}`\n\n\treturn (\n\t\t\n\t\t\t{show ? (\n\t\t\t\t<>\n\t\t\t\t\t{formattedPrice ?? '-'} {label}\n\t\t\t\t\t setShowInverted(!showInverted)}>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t'-'\n\t\t\t)}\n\t\t\n\t)\n}\n","import { Token } from 'sdk-hoosmartchain'\nimport { transparentize } from 'polished'\nimport { Button, Text } from '../../uikit-foodcourt'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport styled from 'styled-components'\nimport { AlertTriangle } from 'react-feather'\nimport useI18n from 'hooks/useI18n'\nimport { useActiveWeb3React } from '../../hooks'\nimport { useAllTokens } from '../../hooks/Tokens'\nimport { getBscScanLink, shortenAddress } from '../../utils'\nimport { ExternalLink } from '../Shared'\nimport CurrencyLogo from '../CurrencyLogo'\nimport Modal from '../Modal'\nimport { AutoRow, RowBetween } from '../Row'\nimport { AutoColumn } from '../Column'\n\nconst Wrapper = styled.div<{ error: boolean }>`\n\tbackground: ${({ theme }) => transparentize(0.6, theme.colors.tertiary)};\n\tpadding: 0.75rem;\n\tborder-radius: 20px;\n`\n\nconst WarningContainer = styled.div`\n\tmax-width: 420px;\n\twidth: 100%;\n\tpadding: 1rem;\n\tbackground: rgba(242, 150, 2, 0.05);\n\tborder: 1px solid #f3841e;\n\tborder-radius: 20px;\n\toverflow: auto;\n`\n\nconst StyledWarningIcon = styled(AlertTriangle)`\n\tstroke: ${({ theme }) => theme.colors.failure};\n`\n\ninterface TokenWarningCardProps {\n\ttoken?: Token\n}\n\nfunction TokenWarningCard({ token }: TokenWarningCardProps) {\n\tconst { chainId } = useActiveWeb3React()\n\tconst TranslateString = useI18n()\n\tconst tokenSymbol = token?.symbol?.toLowerCase() ?? ''\n\tconst tokenName = token?.name?.toLowerCase() ?? ''\n\n\tconst allTokens = useAllTokens()\n\n\tconst duplicateNameOrSymbol = useMemo(() => {\n\t\tif (!token || !chainId) return false\n\n\t\treturn Object.keys(allTokens).some((tokenAddress) => {\n\t\t\tconst userToken = allTokens[tokenAddress]\n\t\t\tif (userToken.equals(token)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn (\n\t\t\t\tuserToken.symbol?.toLowerCase() === tokenSymbol ||\n\t\t\t\tuserToken.name?.toLowerCase() === tokenName\n\t\t\t)\n\t\t})\n\t}, [token, chainId, allTokens, tokenSymbol, tokenName])\n\n\tif (!token) return null\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{token && token.name && token.symbol && token.name !== token.symbol\n\t\t\t\t\t\t\t? `${token.name} (${token.symbol})`\n\t\t\t\t\t\t\t: token.name || token.symbol}{' '}\n\t\t\t\t\t\n\t\t\t\t\t{chainId && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{shortenAddress(token.address)}{' '}\n\t\t\t\t\t\t\t\t{TranslateString(116, '(View on BscScan)')}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default function TokenWarningModal({\n\tisOpen,\n\ttokens,\n\tonConfirm,\n}: {\n\tisOpen: boolean\n\ttokens: Token[]\n\tonConfirm: () => void\n}) {\n\tconst [understandChecked, setUnderstandChecked] = useState(false)\n\tconst toggleUnderstand = useCallback(() => setUnderstandChecked((uc) => !uc), [])\n\tconst TranslateString = useI18n()\n\n\tconst handleDismiss = useCallback(() => null, [])\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{TranslateString(1128, 'Token imported')}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t1130,\n\t\t\t\t\t\t\t'Anyone can create a BEP20 token on BSC with any name, including creating fake versions of existing tokens and tokens that claim to represent projects that do not have a token.',\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t1132,\n\t\t\t\t\t\t\t'This interface can load arbitrary tokens by token addresses. Please take extra caution and do your research when interacting with arbitrary BEP20 tokens.',\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t1134,\n\t\t\t\t\t\t\t'If you purchase an arbitrary token, you may be unable to sell it back.',\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t{tokens.map((token) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{TranslateString(148, 'I understand')}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tonConfirm()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{TranslateString(150, 'Continue')}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n","import React, { useCallback, useState } from 'react'\nimport styled from 'styled-components'\nimport { Button, Text } from '../../uikit-foodcourt'\nimport { AlertTriangle } from 'react-feather'\nimport Modal from '../Modal'\nimport { AutoRow, RowBetween } from '../Row'\nimport { AutoColumn } from '../Column'\n\nconst WarningContainer = styled.div`\n\tmax-width: 420px;\n\twidth: 100%;\n\tpadding: 1rem;\n\tbackground: rgba(242, 150, 2, 0.05);\n\tborder: 1px solid #f3841e;\n\tborder-radius: 20px;\n\toverflow: auto;\n`\n\nconst StyledWarningIcon = styled(AlertTriangle)`\n\tstroke: ${({ theme }) => theme.colors.failure};\n`\n\nexport default function SyrupWarningModal({\n\tisOpen,\n\ttransactionType,\n\tonConfirm,\n}: {\n\tisOpen: boolean\n\ttransactionType: string | null\n\tonConfirm: () => void\n}) {\n\tconst [understandChecked, setUnderstandChecked] = useState(false)\n\tconst toggleUnderstand = useCallback(() => setUnderstandChecked((uc) => !uc), [])\n\n\tconst handleDismiss = useCallback(() => null, [])\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tSyrup Warning\n\t\t\t\t\t\n\t\t\t\t\t{transactionType !== '' && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tPlease be careful when {transactionType} SYRUP.\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{transactionType === 'Buying'\n\t\t\t\t\t\t\t\t\t? 'You will not receive CAKE rewards for holding purchased SYRUP.'\n\t\t\t\t\t\t\t\t\t: 'You will need to buy back the same amount of SYRUP to be able to convert back to CAKE.'}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\tI understand\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetUnderstandChecked(false)\n\t\t\t\t\t\t\t\tonConfirm()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tContinue\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n","import React, { useCallback, useState } from 'react'\nimport styled from 'styled-components'\nimport { Button, Text } from '../../uikit-foodcourt'\nimport { AlertTriangle } from 'react-feather'\nimport Modal from '../Modal'\nimport { AutoRow, RowBetween } from '../Row'\nimport { AutoColumn } from '../Column'\n\nconst WarningContainer = styled.div`\n\tmax-width: 420px;\n\twidth: 100%;\n\tpadding: 1rem;\n\tbackground: rgba(242, 150, 2, 0.05);\n\tborder: 1px solid #f3841e;\n\tborder-radius: 20px;\n\toverflow: auto;\n`\n\nconst StyledWarningIcon = styled(AlertTriangle)`\n\tstroke: ${({ theme }) => theme.colors.binance};\n`\n\nexport default function SafeMoonWarningModal({\n\tisOpen,\n\tonConfirm,\n}: {\n\tisOpen: boolean\n\tonConfirm: () => void\n}) {\n\tconst [understandChecked, setUnderstandChecked] = useState(false)\n\tconst toggleUnderstand = useCallback(() => setUnderstandChecked((uc) => !uc), [])\n\n\tconst handleDismiss = useCallback(() => null, [])\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tNotice for trading SafeMoon\n\t\t\t\t\t\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tTo trade SAFEMOON, you must click on the settings icon and{' '}\n\t\t\t\t\t\t\tset your slippage tolerance to 12%+\n\t\t\t\t\t\t\n\t\t\t\t\t\tThis is because SafeMoon taxes a 10% fee on each transaction.\n\t\t\t\t\t\t• 5% fee = redistributed to all existing holders\n\t\t\t\t\t\t• 5% fee = used to add liquidity\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\tI understand\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetUnderstandChecked(false)\n\t\t\t\t\t\t\t\tonConfirm()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tContinue\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { transparentize } from 'polished'\nimport { RowBetween } from '../Row'\nimport { AutoColumn } from '../Column'\n\nconst Wrapper = styled(AutoColumn)`\n\tmargin-top: 1.25rem;\n`\n\nconst Grouping = styled(RowBetween)`\n\twidth: 50%;\n`\n\nconst Circle = styled.div<{ confirmed?: boolean; disabled?: boolean }>`\n\tmin-width: 20px;\n\tmin-height: 20px;\n\tbackground-color: ${({ theme, confirmed, disabled }) =>\n\t\tdisabled\n\t\t\t? theme.colors.backgroundDisabled\n\t\t\t: confirmed\n\t\t\t? theme.colors.success\n\t\t\t: theme.colors.primary};\n\tborder-radius: 50%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tline-height: 8px;\n\tfont-size: 12px;\n\tcolor: ${({ theme, confirmed, disabled }) =>\n\t\tdisabled ? theme.colors.text : confirmed ? theme.colors.success : '#FFFFFF'};\n`\n\nconst CircleRow = styled.div`\n\twidth: calc(100% - 20px);\n\tdisplay: flex;\n\talign-items: center;\n`\n\nconst Connector = styled.div<{ prevConfirmed?: boolean }>`\n\twidth: 100%;\n\theight: 2px;\n\tbackground-color: ;\n\tbackground: linear-gradient(\n\t\t90deg,\n\t\t${({ theme, prevConfirmed }) =>\n\t\t\t\ttransparentize(0.5, prevConfirmed ? theme.colors.success : theme.colors.primary)}\n\t\t\t0%,\n\t\t${({ theme, prevConfirmed }) =>\n\t\t\t\tprevConfirmed ? theme.colors.primary : theme.colors.backgroundDisabled}\n\t\t\t80%\n\t);\n\topacity: 0.6;\n`\n\ninterface ProgressCirclesProps {\n\tsteps: boolean[]\n}\n\n/**\n * Based on array of steps, create a step counter of circles.\n * A circle can be enabled, disabled, or confirmed. States are derived\n * from previous step.\n *\n * An extra circle is added to represent the ability to swap, add, or remove.\n * This step will never be marked as complete (because no 'txn done' state in body ui).\n *\n * @param steps array of booleans where true means step is complete\n */\nexport default function ProgressCircles({ steps }: ProgressCirclesProps) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{steps.map((step, i) => (\n\t\t\t\t\t// eslint-disable-next-line react/no-array-index-key\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{step ? '✓' : i + 1}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t))}\n\t\t\t\t{steps.length + 1}\n\t\t\t\n\t\t\n\t)\n}\n","import { BigNumber } from '@ethersproject/bignumber'\nimport { Contract } from '@ethersproject/contracts'\nimport { JSBI, Percent, Router, SwapParameters, Trade, TradeType } from 'sdk-hoosmartchain'\nimport { useMemo } from 'react'\nimport { BIPS_BASE, DEFAULT_DEADLINE_FROM_NOW, INITIAL_ALLOWED_SLIPPAGE } from '../constants'\nimport { useTransactionAdder } from '../state/transactions/hooks'\nimport { calculateGasMargin, getRouterContract, isAddress, shortenAddress } from '../utils'\nimport isZero from '../utils/isZero'\nimport { useActiveWeb3React } from './index'\nimport useENS from './useENS'\n\nenum SwapCallbackState {\n\tINVALID,\n\tLOADING,\n\tVALID,\n}\n\ninterface SwapCall {\n\tcontract: Contract\n\tparameters: SwapParameters\n}\n\ninterface SuccessfulCall {\n\tcall: SwapCall\n\tgasEstimate: BigNumber\n}\n\ninterface FailedCall {\n\tcall: SwapCall\n\terror: Error\n}\n\ntype EstimatedSwapCall = SuccessfulCall | FailedCall\n\n/**\n * Returns the swap calls that can be used to make the trade\n * @param trade trade to execute\n * @param allowedSlippage user allowed slippage\n * @param deadline the deadline for the trade\n * @param recipientAddressOrName\n */\nfunction useSwapCallArguments(\n\ttrade: Trade | undefined, // trade to execute, required\n\tallowedSlippage: number = INITIAL_ALLOWED_SLIPPAGE, // in bips\n\tdeadline: number = DEFAULT_DEADLINE_FROM_NOW, // in seconds from now\n\trecipientAddressOrName: string | null, // the ENS name or address of the recipient of the trade, or null if swap should be returned to sender\n): SwapCall[] {\n\tconst { account, chainId, library } = useActiveWeb3React()\n\n\tconst { address: recipientAddress } = useENS(recipientAddressOrName)\n\tconst recipient = recipientAddressOrName === null ? account : recipientAddress\n\n\treturn useMemo(() => {\n\t\tif (!trade || !recipient || !library || !account || !chainId) return []\n\n\t\tconst contract: Contract | null = getRouterContract(chainId, library, account)\n\t\tif (!contract) {\n\t\t\treturn []\n\t\t}\n\n\t\tconst swapMethods = []\n\n\t\tswapMethods.push(\n\t\t\t// @ts-ignore\n\t\t\tRouter.swapCallParameters(trade, {\n\t\t\t\tfeeOnTransfer: false,\n\t\t\t\tallowedSlippage: new Percent(JSBI.BigInt(Math.floor(allowedSlippage)), BIPS_BASE),\n\t\t\t\trecipient,\n\t\t\t\tttl: deadline,\n\t\t\t}),\n\t\t)\n\n\t\tif (trade.tradeType === TradeType.EXACT_INPUT) {\n\t\t\tswapMethods.push(\n\t\t\t\t// @ts-ignore\n\t\t\t\tRouter.swapCallParameters(trade, {\n\t\t\t\t\tfeeOnTransfer: true,\n\t\t\t\t\tallowedSlippage: new Percent(\n\t\t\t\t\t\tJSBI.BigInt(Math.floor(allowedSlippage)),\n\t\t\t\t\t\tBIPS_BASE,\n\t\t\t\t\t),\n\t\t\t\t\trecipient,\n\t\t\t\t\tttl: deadline,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\n\t\treturn swapMethods.map((parameters) => ({ parameters, contract }))\n\t}, [account, allowedSlippage, chainId, deadline, library, recipient, trade])\n}\n\n// returns a function that will execute a swap, if the parameters are all valid\n// and the user has approved the slippage adjusted input amount for the trade\nexport function useSwapCallback(\n\ttrade: Trade | undefined, // trade to execute, required\n\tallowedSlippage: number = INITIAL_ALLOWED_SLIPPAGE, // in bips\n\tdeadline: number = DEFAULT_DEADLINE_FROM_NOW, // in seconds from now\n\trecipientAddressOrName: string | null, // the ENS name or address of the recipient of the trade, or null if swap should be returned to sender\n): { state: SwapCallbackState; callback: null | (() => Promise); error: string | null } {\n\tconst { account, chainId, library } = useActiveWeb3React()\n\n\tconst swapCalls = useSwapCallArguments(trade, allowedSlippage, deadline, recipientAddressOrName)\n\n\tconst addTransaction = useTransactionAdder()\n\n\tconst { address: recipientAddress } = useENS(recipientAddressOrName)\n\tconst recipient = recipientAddressOrName === null ? account : recipientAddress\n\n\treturn useMemo(() => {\n\t\tif (!trade || !library || !account || !chainId) {\n\t\t\treturn {\n\t\t\t\tstate: SwapCallbackState.INVALID,\n\t\t\t\tcallback: null,\n\t\t\t\terror: 'Missing dependencies',\n\t\t\t}\n\t\t}\n\t\tif (!recipient) {\n\t\t\tif (recipientAddressOrName !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tstate: SwapCallbackState.INVALID,\n\t\t\t\t\tcallback: null,\n\t\t\t\t\terror: 'Invalid recipient',\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { state: SwapCallbackState.LOADING, callback: null, error: null }\n\t\t}\n\n\t\treturn {\n\t\t\tstate: SwapCallbackState.VALID,\n\t\t\tcallback: async function onSwap(): Promise {\n\t\t\t\tconst estimatedCalls: EstimatedSwapCall[] = await Promise.all(\n\t\t\t\t\tswapCalls.map((call) => {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\tparameters: { methodName, args, value },\n\t\t\t\t\t\t\tcontract,\n\t\t\t\t\t\t} = call\n\t\t\t\t\t\tconst options = !value || isZero(value) ? {} : { value }\n\n\t\t\t\t\t\treturn contract.estimateGas[methodName](...args, options)\n\t\t\t\t\t\t\t.then((gasEstimate) => ({\n\t\t\t\t\t\t\t\tcall,\n\t\t\t\t\t\t\t\tgasEstimate,\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t.catch((gasError) => {\n\t\t\t\t\t\t\t\tconsole.info(\n\t\t\t\t\t\t\t\t\t'Gas estimate failed, trying eth_call to extract error',\n\t\t\t\t\t\t\t\t\tcall,\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\treturn contract.callStatic[methodName](...args, options)\n\t\t\t\t\t\t\t\t\t.then((result) => {\n\t\t\t\t\t\t\t\t\t\tconsole.info(\n\t\t\t\t\t\t\t\t\t\t\t'Unexpected successful call after failed estimate gas',\n\t\t\t\t\t\t\t\t\t\t\tcall,\n\t\t\t\t\t\t\t\t\t\t\tgasError,\n\t\t\t\t\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\tcall,\n\t\t\t\t\t\t\t\t\t\t\terror: new Error(\n\t\t\t\t\t\t\t\t\t\t\t\t'Unexpected issue with estimating the gas. Please try again.',\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.catch((callError) => {\n\t\t\t\t\t\t\t\t\t\tconsole.info('Call threw error', call, callError)\n\t\t\t\t\t\t\t\t\t\tlet errorMessage: string\n\t\t\t\t\t\t\t\t\t\tswitch (callError.reason) {\n\t\t\t\t\t\t\t\t\t\t\tcase 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT':\n\t\t\t\t\t\t\t\t\t\t\tcase 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT':\n\t\t\t\t\t\t\t\t\t\t\t\terrorMessage =\n\t\t\t\t\t\t\t\t\t\t\t\t\t'This transaction will not succeed either due to price movement or fee on transfer. Try increasing your slippage tolerance.'\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\t\terrorMessage = `The transaction cannot succeed due to error: ${callError.reason}. This is probably an issue with one of the tokens you are swapping.`\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn { call, error: new Error(errorMessage) }\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}),\n\t\t\t\t)\n\n\t\t\t\t// a successful estimation is a bignumber gas estimate and the next call is also a bignumber gas estimate\n\t\t\t\tconst successfulEstimation = estimatedCalls.find(\n\t\t\t\t\t(el, ix, list): el is SuccessfulCall =>\n\t\t\t\t\t\t'gasEstimate' in el &&\n\t\t\t\t\t\t(ix === list.length - 1 || 'gasEstimate' in list[ix + 1]),\n\t\t\t\t)\n\n\t\t\t\tif (!successfulEstimation) {\n\t\t\t\t\tconst errorCalls = estimatedCalls.filter(\n\t\t\t\t\t\t(call): call is FailedCall => 'error' in call,\n\t\t\t\t\t)\n\t\t\t\t\tif (errorCalls.length > 0) throw errorCalls[errorCalls.length - 1].error\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Unexpected error. Please contact support: none of the calls threw an error',\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\tconst {\n\t\t\t\t\tcall: {\n\t\t\t\t\t\tcontract,\n\t\t\t\t\t\tparameters: { methodName, args, value },\n\t\t\t\t\t},\n\t\t\t\t\tgasEstimate,\n\t\t\t\t} = successfulEstimation\n\n\t\t\t\treturn contract[methodName](...args, {\n\t\t\t\t\tgasLimit: calculateGasMargin(gasEstimate),\n\t\t\t\t\t...(value && !isZero(value) ? { value, from: account } : { from: account }),\n\t\t\t\t})\n\t\t\t\t\t.then((response: any) => {\n\t\t\t\t\t\tconst inputSymbol = trade.inputAmount.currency.symbol\n\t\t\t\t\t\tconst outputSymbol = trade.outputAmount.currency.symbol\n\t\t\t\t\t\tconst inputAmount = trade.inputAmount.toSignificant(3)\n\t\t\t\t\t\tconst outputAmount = trade.outputAmount.toSignificant(3)\n\n\t\t\t\t\t\tconst base = `Swap ${inputAmount} ${inputSymbol} for ${outputAmount} ${outputSymbol}`\n\t\t\t\t\t\tconst withRecipient =\n\t\t\t\t\t\t\trecipient === account\n\t\t\t\t\t\t\t\t? base\n\t\t\t\t\t\t\t\t: `${base} to ${\n\t\t\t\t\t\t\t\t\t\trecipientAddressOrName && isAddress(recipientAddressOrName)\n\t\t\t\t\t\t\t\t\t\t\t? shortenAddress(recipientAddressOrName)\n\t\t\t\t\t\t\t\t\t\t\t: recipientAddressOrName\n\t\t\t\t\t\t\t\t }`\n\n\t\t\t\t\t\taddTransaction(response, {\n\t\t\t\t\t\t\tsummary: withRecipient,\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\treturn response.hash\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error: any) => {\n\t\t\t\t\t\t// if the user rejected the tx, pass this along\n\t\t\t\t\t\tif (error?.code === 4001) {\n\t\t\t\t\t\t\tthrow new Error('Transaction rejected.')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// otherwise, the error was unexpected and we need to convey that\n\t\t\t\t\t\t\tconsole.error(`Swap failed`, error, methodName, args, value)\n\t\t\t\t\t\t\tthrow new Error(`Swap failed: ${error.message}`)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t},\n\t\t\terror: null,\n\t\t}\n\t}, [\n\t\ttrade,\n\t\tlibrary,\n\t\taccount,\n\t\tchainId,\n\t\trecipient,\n\t\trecipientAddressOrName,\n\t\tswapCalls,\n\t\taddTransaction,\n\t])\n}\n\nexport default useSwapCallback\n","import {\n\tCurrency,\n\tcurrencyEquals,\n\tETHER,\n\tJSBI,\n\tToken,\n\tTokenAmount,\n\tWETH,\n} from 'sdk-hoosmartchain'\nimport { SAFEMOON_TOKEN_ADDRESS } from 'constants/lists'\nimport { BigNumber, ethers } from 'ethers'\nimport { useMemo } from 'react'\nimport { tryParseAmount } from '../state/swap/hooks'\nimport { useTransactionAdder } from '../state/transactions/hooks'\nimport { useCurrencyBalance } from '../state/wallet/hooks'\nimport { useActiveWeb3React } from './index'\nimport { tokenInfo } from './Tokens'\nimport { useWETHContract, useWSafeTokenContract } from './useContract'\n\nexport enum WrapType {\n\tNOT_APPLICABLE,\n\tWRAP,\n\tUNWRAP,\n}\n\nconst NOT_APPLICABLE = { wrapType: WrapType.NOT_APPLICABLE }\n/**\n * Given the selected input and output currency, return a wrap callback\n * @param inputCurrency the selected input currency\n * @param outputCurrency the selected output currency\n * @param typedValue the user input value\n */\nexport default function useWrapCallback(\n\tinputCurrency: Currency | undefined,\n\toutputCurrency: Currency | undefined,\n\ttypedValue: string | undefined,\n\tinputAddress?: string,\n\toutputAddress?: string,\n\tinputAmountOverride?: string,\n): { wrapType: WrapType; execute?: undefined | (() => Promise); inputError?: string } {\n\tconst { chainId, account } = useActiveWeb3React()\n\n\tconst inputToken = inputAddress ? tokenInfo(inputAddress) : null\n\tconst outputToken = outputAddress ? tokenInfo(outputAddress) : null\n\tconst wSafeAddress =\n\t\tinputToken && outputToken\n\t\t\t? inputToken.tokenInfo.isWSafeToken\n\t\t\t\t? inputToken.address\n\t\t\t\t: outputToken.tokenInfo.isWSafeToken\n\t\t\t\t? outputToken.address\n\t\t\t\t: null\n\t\t\t: null\n\n\tconst wethContract = useWETHContract()\n\tconst wSafeTokenContract = useWSafeTokenContract(\n\t\twSafeAddress ?? SAFEMOON_TOKEN_ADDRESS[chainId],\n\t)\n\tconst balance = useCurrencyBalance(account ?? undefined, inputCurrency)\n\t// we can always parse the amount typed as the input currency, since wrapping is 1:1\n\tlet divAmount = '1'\n\tif (inputCurrency) {\n\t\tfor (let i = 0; i < 18 - inputCurrency.decimals; i++) {\n\t\t\tdivAmount += '0'\n\t\t}\n\t}\n\tconst inputAmount = useMemo(\n\t\t() =>\n\t\t\tinputCurrency instanceof Token && inputAmountOverride\n\t\t\t\t? new TokenAmount(\n\t\t\t\t\t\tinputCurrency as Token,\n\t\t\t\t\t\tJSBI.BigInt(\n\t\t\t\t\t\t\tBigNumber.from(ethers.utils.parseEther(inputAmountOverride))\n\t\t\t\t\t\t\t\t.div(divAmount)\n\t\t\t\t\t\t\t\t.toString(),\n\t\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: tryParseAmount(typedValue, inputCurrency),\n\t\t[inputCurrency, inputAmountOverride, typedValue],\n\t)\n\tconst addTransaction = useTransactionAdder()\n\n\t// console.log(inputAmount)\n\n\treturn useMemo(() => {\n\t\tif (!wethContract || !chainId || !inputCurrency || !outputCurrency || !inputAmount)\n\t\t\treturn NOT_APPLICABLE\n\n\t\tconst sufficientBalance = inputAmount && balance && !balance.lessThan(inputAmount)\n\n\t\tif (inputCurrency === ETHER && currencyEquals(WETH[chainId], outputCurrency)) {\n\t\t\treturn {\n\t\t\t\twrapType: WrapType.WRAP,\n\t\t\t\texecute:\n\t\t\t\t\tsufficientBalance && inputAmount\n\t\t\t\t\t\t? async () => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst txReceipt = await wethContract.deposit({\n\t\t\t\t\t\t\t\t\t\tvalue: `0x${inputAmount.raw.toString(16)}`,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\taddTransaction(txReceipt, {\n\t\t\t\t\t\t\t\t\t\tsummary: `Wrap ${inputAmount.toSignificant(6)} BNB to WBNB`,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tconsole.error('Could not deposit', error)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: undefined,\n\t\t\t\tinputError: sufficientBalance ? undefined : 'Insufficient BNB balance',\n\t\t\t}\n\t\t}\n\n\t\tif (currencyEquals(WETH[chainId], inputCurrency) && outputCurrency === ETHER) {\n\t\t\treturn {\n\t\t\t\twrapType: WrapType.UNWRAP,\n\t\t\t\texecute:\n\t\t\t\t\tsufficientBalance && inputAmount\n\t\t\t\t\t\t? async () => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst txReceipt = await wethContract.withdraw(\n\t\t\t\t\t\t\t\t\t\t`0x${inputAmount.raw.toString(16)}`,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\taddTransaction(txReceipt, {\n\t\t\t\t\t\t\t\t\t\tsummary: `Unwrap ${inputAmount.toSignificant(\n\t\t\t\t\t\t\t\t\t\t\t6,\n\t\t\t\t\t\t\t\t\t\t)} WBNB to BNB`,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tconsole.error('Could not withdraw', error)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: undefined,\n\t\t\t\tinputError: sufficientBalance ? undefined : 'Insufficient WBNB balance',\n\t\t\t}\n\t\t}\n\n\t\tif (inputAddress && outputAddress) {\n\t\t\t// WRAP\n\t\t\tif (outputToken.tokenInfo.isWSafeToken) {\n\t\t\t\treturn {\n\t\t\t\t\twrapType: WrapType.WRAP,\n\t\t\t\t\texecute:\n\t\t\t\t\t\tsufficientBalance && inputAmount\n\t\t\t\t\t\t\t? async () => {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tconst txReceipt = await wSafeTokenContract.wrap(\n\t\t\t\t\t\t\t\t\t\t\t`0x${inputAmount.raw.toString(16)}`,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\taddTransaction(txReceipt, {\n\t\t\t\t\t\t\t\t\t\t\tsummary: `Wrap ${inputAmount.toSignificant(6)} ${\n\t\t\t\t\t\t\t\t\t\t\t\tinputCurrency.symbol\n\t\t\t\t\t\t\t\t\t\t\t} to ${outputCurrency.symbol}`,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\tconsole.error('Could not deposit', error)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tinputError: sufficientBalance\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: `Insufficient ${inputCurrency.symbol} balance`,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// UNWRAP\n\t\t\tif (inputToken.tokenInfo.isWSafeToken) {\n\t\t\t\treturn {\n\t\t\t\t\twrapType: WrapType.UNWRAP,\n\t\t\t\t\texecute:\n\t\t\t\t\t\tsufficientBalance && inputAmount\n\t\t\t\t\t\t\t? async () => {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tconst txReceipt = await wSafeTokenContract.unwrap(\n\t\t\t\t\t\t\t\t\t\t\t`0x${inputAmount.raw.toString(16)}`,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\taddTransaction(txReceipt, {\n\t\t\t\t\t\t\t\t\t\t\tsummary: `Unwrap ${inputAmount.toSignificant(6)} ${\n\t\t\t\t\t\t\t\t\t\t\t\tinputCurrency.symbol\n\t\t\t\t\t\t\t\t\t\t\t} to ${outputCurrency.symbol}`,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\tconsole.error('Could not deposit', error)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tinputError: sufficientBalance\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: `Insufficient ${inputCurrency.symbol} balance`,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn NOT_APPLICABLE\n\t}, [\n\t\twethContract,\n\t\tchainId,\n\t\tinputCurrency,\n\t\toutputCurrency,\n\t\tinputAmount,\n\t\tbalance,\n\t\taddTransaction,\n\t\tinputAddress,\n\t\toutputAddress,\n\t\tinputAmountOverride,\n\t])\n}\n","import { CurrencyAmount, JSBI, Token, Trade } from 'sdk-hoosmartchain'\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { ArrowDown } from 'react-feather'\nimport { CardBody, ArrowDownIcon, Button, IconButton, Text } from '../../uikit-foodcourt'\nimport { ThemeContext } from 'styled-components'\nimport AddressInputPanel from 'components/AddressInputPanel'\nimport Card, { GreyCard } from 'components/Card'\nimport { AutoColumn } from 'components/Column'\nimport ConfirmSwapModal from 'components/swap/ConfirmSwapModal'\nimport CurrencyInputPanel from 'components/CurrencyInputPanel'\nimport CardNav from 'components/CardNav'\nimport { AutoRow, RowBetween } from 'components/Row'\nimport AdvancedSwapDetailsDropdown from 'components/swap/AdvancedSwapDetailsDropdown'\nimport confirmPriceImpactWithoutFee from 'components/swap/confirmPriceImpactWithoutFee'\nimport { ArrowWrapper, BottomGrouping, SwapCallbackError, Wrapper } from 'components/swap/styleds'\nimport TradePrice from 'components/swap/TradePrice'\nimport TokenWarningModal from 'components/TokenWarningModal'\nimport SyrupWarningModal from 'components/SyrupWarningModal'\nimport SafeMoonWarningModal from 'components/SafeMoonWarningModal'\nimport ProgressSteps from 'components/ProgressSteps'\nimport Container from 'components/Container'\n\nimport { INITIAL_ALLOWED_SLIPPAGE } from 'constants/index'\nimport { useActiveWeb3React } from 'hooks'\nimport { useCurrency } from 'hooks/Tokens'\nimport { ApprovalState, useApproveCallbackFromTrade } from 'hooks/useApproveCallback'\nimport { useSwapCallback } from 'hooks/useSwapCallback'\nimport useWrapCallback, { WrapType } from 'hooks/useWrapCallback'\nimport { Field } from 'state/swap/actions'\nimport {\n\tuseDefaultsFromURLSearch,\n\tuseDerivedSwapInfo,\n\tuseSwapActionHandlers,\n\tuseSwapState,\n} from 'state/swap/hooks'\nimport { useExpertModeManager, useUserDeadline, useUserSlippageTolerance } from 'state/user/hooks'\nimport { LinkStyledButton } from 'components/Shared'\nimport { maxAmountSpend } from 'utils/maxAmountSpend'\nimport { computeTradePriceBreakdown, warningSeverity } from 'utils/prices'\nimport Loader from 'components/Loader'\nimport useI18n from 'hooks/useI18n'\nimport PageHeader from 'components/PageHeader'\nimport ConnectWalletButton from 'components/ConnectWalletButton'\nimport AppBody from '../AppBody'\n\nconst Swap = () => {\n\tconst loadedUrlParams = useDefaultsFromURLSearch()\n\tconst TranslateString = useI18n()\n\n\t// token warning stuff\n\tconst [loadedInputCurrency, loadedOutputCurrency] = [\n\t\tuseCurrency(loadedUrlParams?.inputCurrencyId),\n\t\tuseCurrency(loadedUrlParams?.outputCurrencyId),\n\t]\n\tconst [dismissTokenWarning, setDismissTokenWarning] = useState(false)\n\tconst [transactionWarning, setTransactionWarning] = useState<{\n\t\tselectedToken: string | null\n\t\tpurchaseType: string | null\n\t}>({\n\t\tselectedToken: null,\n\t\tpurchaseType: null,\n\t})\n\tconst urlLoadedTokens: Token[] = useMemo(\n\t\t() =>\n\t\t\t[loadedInputCurrency, loadedOutputCurrency]?.filter(\n\t\t\t\t(c): c is Token => c instanceof Token,\n\t\t\t) ?? [],\n\t\t[loadedInputCurrency, loadedOutputCurrency],\n\t)\n\tconst handleConfirmTokenWarning = useCallback(() => {\n\t\tsetDismissTokenWarning(true)\n\t}, [])\n\n\tconst handleConfirmWarning = () => {\n\t\tsetTransactionWarning({\n\t\t\tselectedToken: null,\n\t\t\tpurchaseType: null,\n\t\t})\n\t}\n\n\tconst { account } = useActiveWeb3React()\n\tconst theme = useContext(ThemeContext)\n\n\tconst [isExpertMode] = useExpertModeManager()\n\n\t// get custom setting values for user\n\tconst [deadline] = useUserDeadline()\n\tconst [allowedSlippage] = useUserSlippageTolerance()\n\n\t// swap state\n\tconst { independentField, typedValue, recipient } = useSwapState()\n\tconst {\n\t\tv2Trade,\n\t\tcurrencyBalances,\n\t\tparsedAmount,\n\t\tcurrencies,\n\t\tinputError: swapInputError,\n\t} = useDerivedSwapInfo()\n\tconst { wrapType, execute: onWrap, inputError: wrapInputError } = useWrapCallback(\n\t\tcurrencies[Field.INPUT],\n\t\tcurrencies[Field.OUTPUT],\n\t\ttypedValue,\n\t)\n\tconst showWrap: boolean = wrapType !== WrapType.NOT_APPLICABLE\n\tconst trade = showWrap ? undefined : v2Trade\n\n\tconst parsedAmounts = showWrap\n\t\t? {\n\t\t\t\t[Field.INPUT]: parsedAmount,\n\t\t\t\t[Field.OUTPUT]: parsedAmount,\n\t\t }\n\t\t: {\n\t\t\t\t[Field.INPUT]: independentField === Field.INPUT ? parsedAmount : trade?.inputAmount,\n\t\t\t\t[Field.OUTPUT]:\n\t\t\t\t\tindependentField === Field.OUTPUT ? parsedAmount : trade?.outputAmount,\n\t\t }\n\n\tconst {\n\t\tonSwitchTokens,\n\t\tonCurrencySelection,\n\t\tonUserInput,\n\t\tonChangeRecipient,\n\t} = useSwapActionHandlers()\n\tconst isValid = !swapInputError\n\tconst dependentField: Field = independentField === Field.INPUT ? Field.OUTPUT : Field.INPUT\n\n\tconst handleTypeInput = useCallback(\n\t\t(value: string) => {\n\t\t\tonUserInput(Field.INPUT, value)\n\t\t},\n\t\t[onUserInput],\n\t)\n\tconst handleTypeOutput = useCallback(\n\t\t(value: string) => {\n\t\t\tonUserInput(Field.OUTPUT, value)\n\t\t},\n\t\t[onUserInput],\n\t)\n\n\t// modal and loading\n\tconst [\n\t\t{ showConfirm, tradeToConfirm, swapErrorMessage, attemptingTxn, txHash },\n\t\tsetSwapState,\n\t] = useState<{\n\t\tshowConfirm: boolean\n\t\ttradeToConfirm: Trade | undefined\n\t\tattemptingTxn: boolean\n\t\tswapErrorMessage: string | undefined\n\t\ttxHash: string | undefined\n\t}>({\n\t\tshowConfirm: false,\n\t\ttradeToConfirm: undefined,\n\t\tattemptingTxn: false,\n\t\tswapErrorMessage: undefined,\n\t\ttxHash: undefined,\n\t})\n\n\tconst formattedAmounts = {\n\t\t[independentField]: typedValue,\n\t\t[dependentField]: showWrap\n\t\t\t? parsedAmounts[independentField]?.toExact() ?? ''\n\t\t\t: parsedAmounts[dependentField]?.toSignificant(6) ?? '',\n\t}\n\n\tconst route = trade?.route\n\tconst userHasSpecifiedInputOutput = Boolean(\n\t\tcurrencies[Field.INPUT] &&\n\t\t\tcurrencies[Field.OUTPUT] &&\n\t\t\tparsedAmounts[independentField]?.greaterThan(JSBI.BigInt(0)),\n\t)\n\tconst noRoute = !route\n\n\t// check whether the user has approved the router on the input token\n\tconst [approval, approveCallback] = useApproveCallbackFromTrade(trade, allowedSlippage)\n\n\t// check if user has gone through approval process, used to show two step buttons, reset on token change\n\tconst [approvalSubmitted, setApprovalSubmitted] = useState(false)\n\n\t// mark when a user has submitted an approval, reset onTokenSelection for input field\n\tuseEffect(() => {\n\t\tif (approval === ApprovalState.PENDING) {\n\t\t\tsetApprovalSubmitted(true)\n\t\t}\n\t}, [approval, approvalSubmitted])\n\n\tconst maxAmountInput: CurrencyAmount | undefined = maxAmountSpend(currencyBalances[Field.INPUT])\n\tconst atMaxAmountInput = Boolean(\n\t\tmaxAmountInput && parsedAmounts[Field.INPUT]?.equalTo(maxAmountInput),\n\t)\n\n\t// the callback to execute the swap\n\tconst { callback: swapCallback, error: swapCallbackError } = useSwapCallback(\n\t\ttrade,\n\t\tallowedSlippage,\n\t\tdeadline,\n\t\trecipient,\n\t)\n\n\tconst { priceImpactWithoutFee } = computeTradePriceBreakdown(trade)\n\n\tconst handleSwap = useCallback(() => {\n\t\tif (priceImpactWithoutFee && !confirmPriceImpactWithoutFee(priceImpactWithoutFee)) {\n\t\t\treturn\n\t\t}\n\t\tif (!swapCallback) {\n\t\t\treturn\n\t\t}\n\t\tsetSwapState((prevState) => ({\n\t\t\t...prevState,\n\t\t\tattemptingTxn: true,\n\t\t\tswapErrorMessage: undefined,\n\t\t\ttxHash: undefined,\n\t\t}))\n\t\tswapCallback()\n\t\t\t.then((hash) => {\n\t\t\t\tsetSwapState((prevState) => ({\n\t\t\t\t\t...prevState,\n\t\t\t\t\tattemptingTxn: false,\n\t\t\t\t\tswapErrorMessage: undefined,\n\t\t\t\t\ttxHash: hash,\n\t\t\t\t}))\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tsetSwapState((prevState) => ({\n\t\t\t\t\t...prevState,\n\t\t\t\t\tattemptingTxn: false,\n\t\t\t\t\tswapErrorMessage: error.message,\n\t\t\t\t\ttxHash: undefined,\n\t\t\t\t}))\n\t\t\t})\n\t}, [priceImpactWithoutFee, swapCallback, setSwapState])\n\n\t// errors\n\tconst [showInverted, setShowInverted] = useState(false)\n\n\t// warnings on slippage\n\tconst priceImpactSeverity = warningSeverity(priceImpactWithoutFee)\n\n\t// show approve flow when: no error on inputs, not approved or pending, or approved in current session\n\t// never show if price impact is above threshold in non expert mode\n\tconst showApproveFlow =\n\t\t!swapInputError &&\n\t\t(approval === ApprovalState.NOT_APPROVED ||\n\t\t\tapproval === ApprovalState.PENDING ||\n\t\t\t(approvalSubmitted && approval === ApprovalState.APPROVED)) &&\n\t\t!(priceImpactSeverity > 3 && !isExpertMode)\n\n\tconst handleConfirmDismiss = useCallback(() => {\n\t\tsetSwapState((prevState) => ({ ...prevState, showConfirm: false }))\n\n\t\t// if there was a tx hash, we want to clear the input\n\t\tif (txHash) {\n\t\t\tonUserInput(Field.INPUT, '')\n\t\t}\n\t}, [onUserInput, txHash, setSwapState])\n\n\tconst handleAcceptChanges = useCallback(() => {\n\t\tsetSwapState((prevState) => ({ ...prevState, tradeToConfirm: trade }))\n\t}, [trade])\n\n\t// This will check to see if the user has selected Syrup or SafeMoon to either buy or sell.\n\t// If so, they will be alerted with a warning message.\n\tconst checkForWarning = useCallback(\n\t\t(selected: string, purchaseType: string) => {\n\t\t\tif (['SYRUP', 'SAFEMOON'].includes(selected)) {\n\t\t\t\tsetTransactionWarning({\n\t\t\t\t\tselectedToken: selected,\n\t\t\t\t\tpurchaseType,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\t[setTransactionWarning],\n\t)\n\n\tconst handleInputSelect = useCallback(\n\t\t(inputCurrency) => {\n\t\t\tsetApprovalSubmitted(false) // reset 2 step UI for approvals\n\t\t\tonCurrencySelection(Field.INPUT, inputCurrency)\n\t\t\tif (inputCurrency.symbol === 'SYRUP') {\n\t\t\t\tcheckForWarning(inputCurrency.symbol, 'Selling')\n\t\t\t}\n\t\t\tif (inputCurrency.symbol === 'SAFEMOON') {\n\t\t\t\tcheckForWarning(inputCurrency.symbol, 'Selling')\n\t\t\t}\n\t\t},\n\t\t[onCurrencySelection, setApprovalSubmitted, checkForWarning],\n\t)\n\n\tconst handleMaxInput = useCallback(() => {\n\t\tif (maxAmountInput) {\n\t\t\tonUserInput(Field.INPUT, maxAmountInput.toExact())\n\t\t}\n\t}, [maxAmountInput, onUserInput])\n\n\tconst handleOutputSelect = useCallback(\n\t\t(outputCurrency) => {\n\t\t\tonCurrencySelection(Field.OUTPUT, outputCurrency)\n\t\t\tif (outputCurrency.symbol === 'SYRUP') {\n\t\t\t\tcheckForWarning(outputCurrency.symbol, 'Buying')\n\t\t\t}\n\t\t\tif (outputCurrency.symbol === 'SAFEMOON') {\n\t\t\t\tcheckForWarning(outputCurrency.symbol, 'Buying')\n\t\t\t}\n\t\t},\n\t\t[onCurrencySelection, checkForWarning],\n\t)\n\n\treturn (\n\t\t\n\t\t\t 0 && !dismissTokenWarning}\n\t\t\t\ttokens={urlLoadedTokens}\n\t\t\t\tonConfirm={handleConfirmTokenWarning}\n\t\t\t/>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tsetApprovalSubmitted(false) // reset 2 step UI for approvals\n\t\t\t\t\t\t\t\t\t\t\t\tonSwitchTokens()\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ borderRadius: '50%' }}\n\t\t\t\t\t\t\t\t\t\t\tscale=\"sm\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{recipient === null && !showWrap && isExpertMode ? (\n\t\t\t\t\t\t\t\t\t\t onChangeRecipient('')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t+ Add a send (optional)\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t{recipient !== null && !showWrap ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t onChangeRecipient(null)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t- Remove send\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : null}\n\n\t\t\t\t\t\t\t{showWrap ? null : (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{Boolean(trade) && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(1182, 'Price')}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{allowedSlippage !== INITIAL_ALLOWED_SLIPPAGE && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(88, 'Slippage Tolerance')}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{allowedSlippage / 100}%\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!account ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : showWrap ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{wrapInputError ??\n\t\t\t\t\t\t\t\t\t\t(wrapType === WrapType.WRAP\n\t\t\t\t\t\t\t\t\t\t\t? 'Wrap'\n\t\t\t\t\t\t\t\t\t\t\t: wrapType === WrapType.UNWRAP\n\t\t\t\t\t\t\t\t\t\t\t? 'Unwrap'\n\t\t\t\t\t\t\t\t\t\t\t: null)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : noRoute && userHasSpecifiedInputOutput ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t\t\t\t\t1194,\n\t\t\t\t\t\t\t\t\t\t\t'Insufficient liquidity for this trade.',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : showApproveFlow ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{approval === ApprovalState.PENDING ? (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tApproving \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t) : approvalSubmitted &&\n\t\t\t\t\t\t\t\t\t\t approval === ApprovalState.APPROVED ? (\n\t\t\t\t\t\t\t\t\t\t\t'Approved'\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t`Approve ${currencies[Field.INPUT]?.symbol}`\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tif (isExpertMode) {\n\t\t\t\t\t\t\t\t\t\t\t\thandleSwap()\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tsetSwapState({\n\t\t\t\t\t\t\t\t\t\t\t\t\ttradeToConfirm: trade,\n\t\t\t\t\t\t\t\t\t\t\t\t\tattemptingTxn: false,\n\t\t\t\t\t\t\t\t\t\t\t\t\tswapErrorMessage: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t\tshowConfirm: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxHash: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tstyle={{ width: '48%' }}\n\t\t\t\t\t\t\t\t\t\tid=\"swap-button\"\n\t\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t\t!isValid ||\n\t\t\t\t\t\t\t\t\t\t\tapproval !== ApprovalState.APPROVED ||\n\t\t\t\t\t\t\t\t\t\t\t(priceImpactSeverity > 3 && !isExpertMode)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\tisValid && priceImpactSeverity > 2\n\t\t\t\t\t\t\t\t\t\t\t\t? 'danger'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'primary'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{priceImpactSeverity > 3 && !isExpertMode\n\t\t\t\t\t\t\t\t\t\t\t? `Price Impact High`\n\t\t\t\t\t\t\t\t\t\t\t: `Swap${priceImpactSeverity > 2 ? ' Anyway' : ''}`}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tif (isExpertMode) {\n\t\t\t\t\t\t\t\t\t\t\thandleSwap()\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tsetSwapState({\n\t\t\t\t\t\t\t\t\t\t\t\ttradeToConfirm: trade,\n\t\t\t\t\t\t\t\t\t\t\t\tattemptingTxn: false,\n\t\t\t\t\t\t\t\t\t\t\t\tswapErrorMessage: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\tshowConfirm: true,\n\t\t\t\t\t\t\t\t\t\t\t\ttxHash: undefined,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tid=\"swap-button\"\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t!isValid ||\n\t\t\t\t\t\t\t\t\t\t(priceImpactSeverity > 3 && !isExpertMode) ||\n\t\t\t\t\t\t\t\t\t\t!!swapCallbackError\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\tisValid && priceImpactSeverity > 2 && !swapCallbackError\n\t\t\t\t\t\t\t\t\t\t\t? 'danger'\n\t\t\t\t\t\t\t\t\t\t\t: 'primary'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{swapInputError ||\n\t\t\t\t\t\t\t\t\t\t(priceImpactSeverity > 3 && !isExpertMode\n\t\t\t\t\t\t\t\t\t\t\t? `Price Impact Too High`\n\t\t\t\t\t\t\t\t\t\t\t: `Swap${priceImpactSeverity > 2 ? ' Anyway' : ''}`)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{showApproveFlow && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{isExpertMode && swapErrorMessage ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{/* \n\t\t\t\t\t */}\n\t\t\t\t\t{/* \"Food1\"\n\t\t\t\t\t\"Food1\" */}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Swap\n","import React, { useCallback, useState } from 'react'\nimport styled from 'styled-components'\nimport { Button, Text } from '../../uikit-foodcourt'\nimport { AlertTriangle } from 'react-feather'\nimport Modal from '../Modal'\nimport { AutoRow, RowBetween } from '../Row'\nimport { AutoColumn } from '../Column'\n\nconst WarningContainer = styled.div`\n\tmax-width: 420px;\n\twidth: 100%;\n\tpadding: 1rem;\n\tbackground: rgba(242, 150, 2, 0.05);\n\tborder: 1px solid #f3841e;\n\tborder-radius: 20px;\n\toverflow: auto;\n`\n\nconst StyledWarningIcon = styled(AlertTriangle)`\n\tstroke: ${({ theme }) => theme.colors.binance};\n`\n\nexport default function RSafeWarningModal({\n\tisOpen,\n\tonConfirm,\n}: {\n\tisOpen: boolean\n\tonConfirm: () => void\n}) {\n\tconst [understandChecked, setUnderstandChecked] = useState(false)\n\tconst toggleUnderstand = useCallback(() => setUnderstandChecked((uc) => !uc), [])\n\n\tconst handleDismiss = useCallback(() => null, [])\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tNotice for rToken\n\t\t\t\t\t\n\t\t\t\t\t<>\n\t\t\t\t\t\t{/*
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\trMMP ถูกสร้างขึ้นมาเพื่อใช้ในการ Farm ข้างเดียว ใน foodcourt.finance\n\t\t\t\t\t\t\t\tเท่านั้น\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tห้าม\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\tทำการซื้อ ขาย หรือเสริม Liquidity ให้กับเหรียญ rMMP\n\t\t\t\t\t\t\t\tไม่ว่ากรณีใดทั้งสิ้น\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tระวัง\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\trMMP เป็นเหรียญพิเศษที่ใช้เพื่อ Stake เพื่อรับ Reward เป็น COUPON\n\t\t\t\t\t\t\t\tเท่านั้น เมื่อ Stake แล้ว จะไม่สามารถถอนได้\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tโปรโมชั่น\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\tในช่วงระยะเวลาโปรโมชั่น จะสามารถนำ rMMP มา Stake เพื่อรับ wMMP\n\t\t\t\t\t\t\t\tหลังจากหมดระยะเวลาโปรโมชั่น สามารถถอน rMMP และนำ rMMP มา Stake\n\t\t\t\t\t\t\t\tเพื่อรับ COUPON ได้\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
*/}\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\trToken will receive for free when you wrap deflationary token(MMP, SAFEMOON, SAFEMARS and SAFEPAWS) from foodcourt. We no longer use rToken within our platform, you can just leave in your wallet.\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\tI understand\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetUnderstandChecked(false)\n\t\t\t\t\t\t\t\tonConfirm()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tContinue\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n","import { CurrencyAmount, JSBI, Token, TokenAmount, Trade } from 'sdk-hoosmartchain'\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { ArrowDown } from 'react-feather'\nimport { CardBody, ArrowDownIcon, Button, IconButton, Text } from '../../uikit-foodcourt'\nimport { ThemeContext } from 'styled-components'\nimport AddressInputPanel from 'components/AddressInputPanel'\nimport Card, { GreyCard } from 'components/Card'\nimport { AutoColumn } from 'components/Column'\nimport ConfirmSwapModal from 'components/swap/ConfirmSwapModal'\nimport CurrencyInputPanel from 'components/CurrencyInputPanel'\nimport CardNav from 'components/CardNav'\nimport { AutoRow, RowBetween } from 'components/Row'\nimport AdvancedSwapDetailsDropdown from 'components/swap/AdvancedSwapDetailsDropdown'\nimport confirmPriceImpactWithoutFee from 'components/swap/confirmPriceImpactWithoutFee'\nimport { ArrowWrapper, BottomGrouping, SwapCallbackError, Wrapper } from 'components/swap/styleds'\nimport TradePrice from 'components/swap/TradePrice'\nimport TokenWarningModal from 'components/TokenWarningModal'\nimport SyrupWarningModal from 'components/SyrupWarningModal'\nimport SafeMoonWarningModal from 'components/SafeMoonWarningModal'\nimport RSafeWarningModal from 'components/RSafeWarningModal'\nimport ProgressSteps from 'components/ProgressSteps'\nimport Container from 'components/Container'\n\nimport { INITIAL_ALLOWED_SLIPPAGE } from 'constants/index'\nimport { useActiveWeb3React } from 'hooks'\nimport {\n\tSafe2RSafe,\n\tSafe2WSafe,\n\ttokenInfo,\n\tuseCurrency,\n\tWSafe2RSafe,\n\tWSafe2Safe,\n} from 'hooks/Tokens'\nimport {\n\tApprovalState,\n\tuseApproveCallback,\n\tuseApproveCallbackFromTrade,\n} from 'hooks/useApproveCallback'\nimport { useSwapCallback } from 'hooks/useSwapCallback'\nimport useWrapCallback, { WrapType } from 'hooks/useWrapCallback'\nimport { Field } from 'state/swap/actions'\nimport {\n\tuseDefaultsFromURLSearch,\n\tuseDerivedSwapInfo,\n\tuseSwapActionHandlers,\n\tuseSwapState,\n} from 'state/swap/hooks'\nimport { useExpertModeManager, useUserDeadline, useUserSlippageTolerance } from 'state/user/hooks'\nimport { LinkStyledButton } from 'components/Shared'\nimport { maxAmountSpend } from 'utils/maxAmountSpend'\nimport { computeTradePriceBreakdown, warningSeverity } from 'utils/prices'\nimport Loader from 'components/Loader'\nimport useI18n from 'hooks/useI18n'\nimport PageHeader from 'components/PageHeader'\nimport ConnectWalletButton from 'components/ConnectWalletButton'\nimport AppBody from '../AppBody'\nimport { WrappedTokenInfo } from 'state/lists/hooks'\nimport { SAFEMOON_TOKEN_ADDRESS, WSAFEMOON_TOKEN_ADDRESS } from 'constants/lists'\nimport { BigNumber, ethers } from 'ethers'\nimport { useWSafeTokenContract } from 'hooks/useContract'\nimport { useSingleCallResult } from 'state/multicall/hooks'\n\nconst Wrap = () => {\n\tconst loadedUrlParams = useDefaultsFromURLSearch()\n\tconst TranslateString = useI18n()\n\n\t// token warning stuff\n\tconst [loadedInputCurrency, loadedOutputCurrency] = [\n\t\tuseCurrency(loadedUrlParams?.inputCurrencyId),\n\t\tuseCurrency(loadedUrlParams?.outputCurrencyId),\n\t]\n\tconst [dismissTokenWarning, setDismissTokenWarning] = useState(false)\n\tconst [rSafeTokenWarning, setRSafeTokenWarning] = useState(true)\n\tconst [transactionWarning, setTransactionWarning] = useState<{\n\t\tselectedToken: string | null\n\t\tpurchaseType: string | null\n\t}>({\n\t\tselectedToken: null,\n\t\tpurchaseType: null,\n\t})\n\tconst urlLoadedTokens: Token[] = useMemo(\n\t\t() =>\n\t\t\t[loadedInputCurrency, loadedOutputCurrency]?.filter(\n\t\t\t\t(c): c is Token => c instanceof Token,\n\t\t\t) ?? [],\n\t\t[loadedInputCurrency, loadedOutputCurrency],\n\t)\n\tconst handleConfirmTokenWarning = useCallback(() => {\n\t\tsetDismissTokenWarning(true)\n\t}, [])\n\tconst handleConfirmRSafeTokenWarning = useCallback(() => {\n\t\tsetRSafeTokenWarning(false)\n\t}, [])\n\n\tconst handleConfirmWarning = () => {\n\t\tsetTransactionWarning({\n\t\t\tselectedToken: null,\n\t\t\tpurchaseType: null,\n\t\t})\n\t}\n\n\tconst { account, chainId } = useActiveWeb3React()\n\tconst theme = useContext(ThemeContext)\n\n\tconst [isExpertMode] = useExpertModeManager()\n\n\t// get custom setting values for user\n\tconst [deadline] = useUserDeadline()\n\tconst [allowedSlippage] = useUserSlippageTolerance()\n\n\tconst [inputTokenAddress, setInputTokenAddress] = useState('')\n\tconst [outputTokenAddress, setOutputTokenAddress] = useState('')\n\n\tconst [wSafeTokenAddress, setWSafeTokenAddress] = useState('')\n\tconst wSafeContract = useWSafeTokenContract(\n\t\twSafeTokenAddress || WSAFEMOON_TOKEN_ADDRESS[chainId],\n\t\tfalse,\n\t)\n\tconst wrapRatio =\n\t\tparseFloat(\n\t\t\t(\n\t\t\t\tuseSingleCallResult(wSafeContract, 'getWrapRatio', []).result ?? 1000000000\n\t\t\t).toString(),\n\t\t) / 1000000000\n\n\t// console.log(wrapRatio)\n\n\tconst [inputAmount, setInputAmount] = useState('')\n\tconst [inputPairAmount, setInputPairAmount] = useState('')\n\n\tconst [outputAmount, setOutputAmount] = useState('')\n\tconst [outputPairAmount, setOutputPairAmount] = useState('')\n\n\tuseEffect(() => {\n\t\tconst inputToken = tokenInfo(inputTokenAddress)\n\t\tconst outputToken = tokenInfo(outputTokenAddress)\n\t\tlet wSafeToken\n\n\t\tif (\n\t\t\tinputToken &&\n\t\t\toutputToken &&\n\t\t\t(inputToken.tokenInfo.isWSafeToken || outputToken.tokenInfo.isWSafeToken)\n\t\t) {\n\t\t\tif (inputToken.tokenInfo.isWSafeToken) {\n\t\t\t\twSafeToken = inputToken\n\t\t\t} else {\n\t\t\t\twSafeToken = outputToken\n\t\t\t}\n\n\t\t\tsetWSafeTokenAddress(wSafeToken.address)\n\t\t}\n\t}, [inputTokenAddress, outputTokenAddress, inputAmount, outputAmount])\n\n\t// swap state\n\tconst { independentField, typedValue, recipient } = useSwapState()\n\tconst {\n\t\tv2Trade,\n\t\tcurrencyBalances,\n\t\tparsedAmount,\n\t\tcurrencies,\n\t\tinputError: swapInputError,\n\t} = useDerivedSwapInfo()\n\tconst { wrapType, execute: onWrap, inputError: wrapInputError } = useWrapCallback(\n\t\tcurrencies[Field.INPUT],\n\t\tcurrencies[Field.OUTPUT],\n\t\ttypedValue,\n\t\tinputTokenAddress,\n\t\toutputTokenAddress,\n\t\tinputAmount,\n\t)\n\tconst showWrap: boolean = wrapType !== WrapType.NOT_APPLICABLE\n\tconst trade = showWrap ? undefined : v2Trade\n\n\t// console.log(showWrap)\n\n\t// console.log(currencies)\n\n\tconst parsedAmounts = showWrap\n\t\t? {\n\t\t\t\t[Field.INPUT]: parsedAmount,\n\t\t\t\t[Field.OUTPUT]: parsedAmount,\n\t\t }\n\t\t: {\n\t\t\t\t[Field.INPUT]: independentField === Field.INPUT ? parsedAmount : trade?.inputAmount,\n\t\t\t\t[Field.OUTPUT]:\n\t\t\t\t\tindependentField === Field.OUTPUT ? parsedAmount : trade?.outputAmount,\n\t\t }\n\n\tconst {\n\t\tonSwitchTokens,\n\t\tonCurrencySelection,\n\t\tonUserInput,\n\t\tonChangeRecipient,\n\t} = useSwapActionHandlers()\n\tconst isValid = !swapInputError\n\tconst dependentField: Field = independentField === Field.INPUT ? Field.OUTPUT : Field.INPUT\n\n\tfunction onSwitchTokensWrapped() {\n\t\tonSwitchTokens()\n\n\t\tsetTimeout(() => {\n\t\t\tconst inputToken = tokenInfo(inputTokenAddress)\n\t\t\tconst outputToken = tokenInfo(outputTokenAddress)\n\n\t\t\thandleInputSelect(outputToken)\n\t\t\thandleOutputSelect(inputToken)\n\t\t}, 250)\n\t}\n\n\tuseEffect(() => {\n\t\t// console.log('AmountIn', inputAmount)\n\t\t// console.log(currencies)\n\n\t\tif (inputAmount) {\n\t\t\tconst value = parseFloat(inputAmount)\n\t\t\tconst inputToken = tokenInfo(inputTokenAddress)\n\t\t\tconst outputToken = tokenInfo(outputTokenAddress)\n\t\t\tlet feeRate = 0\n\t\t\tlet rewardRate = 0\n\t\t\tlet adjustedWrapRatio = wrapRatio\n\n\t\t\tif (\n\t\t\t\tinputToken &&\n\t\t\t\toutputToken &&\n\t\t\t\t(inputToken.tokenInfo.isWSafeToken || outputToken.tokenInfo.isWSafeToken)\n\t\t\t) {\n\t\t\t\tif (inputToken.tokenInfo.isWSafeToken) {\n\t\t\t\t\tfeeRate = inputToken.tokenInfo.safeFee + inputToken.tokenInfo.unwrapFee\n\t\t\t\t} else {\n\t\t\t\t\tfeeRate = outputToken.tokenInfo.safeFee + outputToken.tokenInfo.wrapFee\n\t\t\t\t\trewardRate = outputToken.tokenInfo.safeFee\n\t\t\t\t\tadjustedWrapRatio = 1 / adjustedWrapRatio\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst newOutputAmount = value * (1 - feeRate) * adjustedWrapRatio\n\t\t\tconst parsedOutputAmount = parseFloat(outputAmount || '0')\n\n\t\t\tif (Math.abs(parsedOutputAmount - newOutputAmount) / parsedOutputAmount > 0.0001) {\n\t\t\t\tsetOutputAmount((+newOutputAmount.toFixed(4)).toString())\n\t\t\t}\n\n\t\t\t// console.log(value * rewardRate, value, rewardRate)\n\n\t\t\tsetOutputPairAmount((+(value * rewardRate).toFixed(4)).toString())\n\t\t\tsetInputPairAmount('')\n\t\t} else {\n\t\t\tsetOutputAmount('')\n\t\t\tsetOutputPairAmount('')\n\t\t\tsetInputPairAmount('')\n\t\t}\n\t}, [inputAmount, inputTokenAddress, outputTokenAddress])\n\n\tuseEffect(() => {\n\t\t// console.log('AmountOut', outputAmount)\n\t\t// console.log(currencies)\n\n\t\tif (outputAmount) {\n\t\t\tconst value = parseFloat(outputAmount)\n\t\t\tconst inputToken = tokenInfo(inputTokenAddress)\n\t\t\tconst outputToken = tokenInfo(outputTokenAddress)\n\t\t\tlet feeRate = 0\n\t\t\tlet rewardRate = 0\n\t\t\tlet adjustedWrapRatio = wrapRatio\n\n\t\t\tif (\n\t\t\t\tinputToken &&\n\t\t\t\toutputToken &&\n\t\t\t\t(inputToken.tokenInfo.isWSafeToken || outputToken.tokenInfo.isWSafeToken)\n\t\t\t) {\n\t\t\t\tif (inputToken.tokenInfo.isWSafeToken) {\n\t\t\t\t\tfeeRate = inputToken.tokenInfo.safeFee + inputToken.tokenInfo.unwrapFee\n\t\t\t\t} else {\n\t\t\t\t\tfeeRate = outputToken.tokenInfo.safeFee + outputToken.tokenInfo.wrapFee\n\t\t\t\t\trewardRate = outputToken.tokenInfo.safeFee\n\t\t\t\t\tadjustedWrapRatio = 1 / adjustedWrapRatio\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst newInputAmount = value / (1 - feeRate) / adjustedWrapRatio\n\t\t\tconst parsedInputAmount = parseFloat(inputAmount || '0')\n\n\t\t\tif (Math.abs(parsedInputAmount - newInputAmount) / parsedInputAmount > 0.0001) {\n\t\t\t\tsetInputAmount((+newInputAmount.toFixed(4)).toString())\n\t\t\t}\n\n\t\t\tsetOutputPairAmount((+(newInputAmount * rewardRate).toFixed(4)).toString())\n\t\t\tsetInputPairAmount('')\n\t\t} else {\n\t\t\tsetInputAmount('')\n\t\t\tsetOutputPairAmount('')\n\t\t\tsetInputPairAmount('')\n\t\t}\n\t}, [outputAmount, inputTokenAddress, outputTokenAddress])\n\n\tconst handleTypeInput = useCallback(\n\t\t(value: string) => {\n\t\t\t// Bypass normal swap procedure\n\t\t\t// onUserInput(Field.INPUT, value)\n\n\t\t\tvalue = value.replace(/[^0-9.]/g, '')\n\t\t\tsetInputAmount(value)\n\t\t},\n\t\t[onUserInput],\n\t)\n\tconst handleTypeOutput = useCallback(\n\t\t(value: string) => {\n\t\t\t// Bypass normal swap procedure\n\t\t\t// onUserInput(Field.OUTPUT, value)\n\n\t\t\tvalue = value.replace(/[^0-9.]/g, '')\n\t\t\tsetOutputAmount(value)\n\t\t},\n\t\t[onUserInput],\n\t)\n\n\t// modal and loading\n\tconst [\n\t\t{ showConfirm, tradeToConfirm, swapErrorMessage, attemptingTxn, txHash },\n\t\tsetSwapState,\n\t] = useState<{\n\t\tshowConfirm: boolean\n\t\ttradeToConfirm: Trade | undefined\n\t\tattemptingTxn: boolean\n\t\tswapErrorMessage: string | undefined\n\t\ttxHash: string | undefined\n\t}>({\n\t\tshowConfirm: false,\n\t\ttradeToConfirm: undefined,\n\t\tattemptingTxn: false,\n\t\tswapErrorMessage: undefined,\n\t\ttxHash: undefined,\n\t})\n\n\tconst formattedAmounts = {\n\t\t[independentField]: typedValue,\n\t\t[dependentField]: showWrap\n\t\t\t? parsedAmounts[independentField]?.toExact() ?? ''\n\t\t\t: parsedAmounts[dependentField]?.toSignificant(6) ?? '',\n\t}\n\n\tconst route = trade?.route\n\tconst userHasSpecifiedInputOutput = Boolean(\n\t\tcurrencies[Field.INPUT] &&\n\t\t\tcurrencies[Field.OUTPUT] &&\n\t\t\tparsedAmounts[independentField]?.greaterThan(JSBI.BigInt(0)),\n\t)\n\t// const noRoute = !route\n\tconst noRoute = true // Force remove swap route UI\n\n\tlet divAmount = '1'\n\tif (currencies.INPUT) {\n\t\tfor (let i = 0; i < 18 - currencies.INPUT.decimals; i++) {\n\t\t\tdivAmount += '0'\n\t\t}\n\t}\n\n\t// check whether the user has approved the router on the input token\n\tconst [approval, approveCallback] = useApproveCallback(\n\t\tnew TokenAmount(\n\t\t\tcurrencies.INPUT instanceof Token\n\t\t\t\t? (currencies.INPUT as Token)\n\t\t\t\t: new Token(chainId, SAFEMOON_TOKEN_ADDRESS[chainId], 9, 'SAFEMOON', 'Safemoon'),\n\t\t\tBigNumber.from(ethers.utils.parseEther(inputAmount || '0'))\n\t\t\t\t.div(divAmount)\n\t\t\t\t.toString(),\n\t\t),\n\t\toutputTokenAddress || SAFEMOON_TOKEN_ADDRESS[chainId],\n\t)\n\n\t// console.log(approval)\n\n\t// check if user has gone through approval process, used to show two step buttons, reset on token change\n\tconst [approvalSubmitted, setApprovalSubmitted] = useState(false)\n\n\t// mark when a user has submitted an approval, reset onTokenSelection for input field\n\tuseEffect(() => {\n\t\tif (approval === ApprovalState.PENDING) {\n\t\t\tsetApprovalSubmitted(true)\n\t\t}\n\t}, [approval, approvalSubmitted])\n\n\tconst maxAmountInput: CurrencyAmount | undefined = maxAmountSpend(currencyBalances[Field.INPUT])\n\tconst atMaxAmountInput = Boolean(\n\t\tmaxAmountInput && parsedAmounts[Field.INPUT]?.equalTo(maxAmountInput),\n\t)\n\n\t// the callback to execute the swap\n\tconst { callback: swapCallback, error: swapCallbackError } = useSwapCallback(\n\t\ttrade,\n\t\tallowedSlippage,\n\t\tdeadline,\n\t\trecipient,\n\t)\n\n\tconst { priceImpactWithoutFee } = computeTradePriceBreakdown(trade)\n\n\tconst handleSwap = useCallback(() => {\n\t\tif (priceImpactWithoutFee && !confirmPriceImpactWithoutFee(priceImpactWithoutFee)) {\n\t\t\treturn\n\t\t}\n\t\tif (!swapCallback) {\n\t\t\treturn\n\t\t}\n\t\tsetSwapState((prevState) => ({\n\t\t\t...prevState,\n\t\t\tattemptingTxn: true,\n\t\t\tswapErrorMessage: undefined,\n\t\t\ttxHash: undefined,\n\t\t}))\n\t\tswapCallback()\n\t\t\t.then((hash) => {\n\t\t\t\tsetSwapState((prevState) => ({\n\t\t\t\t\t...prevState,\n\t\t\t\t\tattemptingTxn: false,\n\t\t\t\t\tswapErrorMessage: undefined,\n\t\t\t\t\ttxHash: hash,\n\t\t\t\t}))\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tsetSwapState((prevState) => ({\n\t\t\t\t\t...prevState,\n\t\t\t\t\tattemptingTxn: false,\n\t\t\t\t\tswapErrorMessage: error.message,\n\t\t\t\t\ttxHash: undefined,\n\t\t\t\t}))\n\t\t\t})\n\t}, [priceImpactWithoutFee, swapCallback, setSwapState])\n\n\t// errors\n\tconst [showInverted, setShowInverted] = useState(false)\n\n\t// warnings on slippage\n\tconst priceImpactSeverity = warningSeverity(priceImpactWithoutFee)\n\n\t// show approve flow when: no error on inputs, not approved or pending, or approved in current session\n\t// never show if price impact is above threshold in non expert mode\n\tconst showApproveFlow =\n\t\ttokenInfo(outputTokenAddress) &&\n\t\ttokenInfo(outputTokenAddress).tokenInfo.isWSafeToken &&\n\t\t((inputAmount && approval === ApprovalState.NOT_APPROVED) ||\n\t\t\tapproval === ApprovalState.PENDING ||\n\t\t\t(approvalSubmitted &&\n\t\t\t\tapproval === ApprovalState.APPROVED &&\n\t\t\t\t!(priceImpactSeverity > 3 && !isExpertMode)))\n\n\tconst handleConfirmDismiss = useCallback(() => {\n\t\tsetSwapState((prevState) => ({ ...prevState, showConfirm: false }))\n\n\t\t// if there was a tx hash, we want to clear the input\n\t\tif (txHash) {\n\t\t\tonUserInput(Field.INPUT, '')\n\t\t}\n\t}, [onUserInput, txHash, setSwapState])\n\n\tconst handleAcceptChanges = useCallback(() => {\n\t\tsetSwapState((prevState) => ({ ...prevState, tradeToConfirm: trade }))\n\t}, [trade])\n\n\t// This will check to see if the user has selected Syrup or SafeMoon to either buy or sell.\n\t// If so, they will be alerted with a warning message.\n\tconst checkForWarning = useCallback(\n\t\t(selected: string, purchaseType: string) => {\n\t\t\tif (['SYRUP', 'SAFEMOON'].includes(selected)) {\n\t\t\t\tsetTransactionWarning({\n\t\t\t\t\tselectedToken: selected,\n\t\t\t\t\tpurchaseType,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\t[setTransactionWarning],\n\t)\n\n\tconst [rewardToken, setRewardToken] = useState()\n\n\tconst handleInputSelect = useCallback(\n\t\t(inputCurrency) => {\n\t\t\tfunction onCurrencySelectionWrapper(field, currency) {\n\t\t\t\tonCurrencySelection(field, currency)\n\n\t\t\t\tif (field === Field.INPUT) {\n\t\t\t\t\tsetInputTokenAddress(currency.address)\n\t\t\t\t} else {\n\t\t\t\t\tsetOutputTokenAddress(currency.address)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetInputAmount('')\n\t\t\tsetOutputAmount('')\n\t\t\tsetOutputPairAmount('')\n\t\t\tsetInputPairAmount('')\n\n\t\t\tsetApprovalSubmitted(false) // reset 2 step UI for approvals\n\t\t\tonCurrencySelectionWrapper(Field.INPUT, inputCurrency)\n\t\t\tif (inputCurrency.symbol === 'SYRUP') {\n\t\t\t\tcheckForWarning(inputCurrency.symbol, 'Selling')\n\t\t\t}\n\t\t\t// if (inputCurrency.symbol === 'SAFEMOON') {\n\t\t\t// \tcheckForWarning(inputCurrency.symbol, 'Selling')\n\t\t\t// }\n\n\t\t\t// console.log('INPUT CHANGE', inputCurrency)\n\n\t\t\tif (inputCurrency.tokenInfo) {\n\t\t\t\tif (inputCurrency.tokenInfo.isSafeToken) {\n\t\t\t\t\tonCurrencySelectionWrapper(Field.OUTPUT, Safe2WSafe(inputCurrency.address))\n\t\t\t\t\tsetRewardToken(Safe2RSafe(inputCurrency.address))\n\t\t\t\t} else if (inputCurrency.tokenInfo.isWSafeToken) {\n\t\t\t\t\tonCurrencySelectionWrapper(Field.OUTPUT, WSafe2Safe(inputCurrency.address))\n\t\t\t\t\tsetRewardToken(null)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[onCurrencySelection, setApprovalSubmitted, checkForWarning],\n\t)\n\n\tconst handleMaxInput = useCallback(() => {\n\t\tif (maxAmountInput) {\n\t\t\t// onUserInput(Field.INPUT, maxAmountInput.toExact())\n\t\t\thandleTypeInput(maxAmountInput.toExact())\n\t\t}\n\t}, [maxAmountInput, onUserInput])\n\n\tconst handleOutputSelect = useCallback(\n\t\t(outputCurrency) => {\n\t\t\tfunction onCurrencySelectionWrapper(field, currency) {\n\t\t\t\tonCurrencySelection(field, currency)\n\n\t\t\t\tif (field === Field.INPUT) {\n\t\t\t\t\tsetInputTokenAddress(currency.address)\n\t\t\t\t} else {\n\t\t\t\t\tsetOutputTokenAddress(currency.address)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetInputAmount('')\n\t\t\tsetOutputAmount('')\n\t\t\tsetOutputPairAmount('')\n\t\t\tsetInputPairAmount('')\n\n\t\t\tonCurrencySelectionWrapper(Field.OUTPUT, outputCurrency)\n\t\t\tif (outputCurrency.symbol === 'SYRUP') {\n\t\t\t\tcheckForWarning(outputCurrency.symbol, 'Buying')\n\t\t\t}\n\t\t\t// if (outputCurrency.symbol === 'SAFEMOON') {\n\t\t\t// \tcheckForWarning(outputCurrency.symbol, 'Buying')\n\t\t\t// }\n\n\t\t\t// console.log('OUTPUT CHANGE', outputCurrency)\n\n\t\t\tif (outputCurrency.tokenInfo) {\n\t\t\t\tif (outputCurrency.tokenInfo.isSafeToken) {\n\t\t\t\t\tonCurrencySelectionWrapper(Field.INPUT, Safe2WSafe(outputCurrency.address))\n\t\t\t\t\tsetRewardToken(null)\n\t\t\t\t} else if (outputCurrency.tokenInfo.isWSafeToken) {\n\t\t\t\t\tonCurrencySelectionWrapper(Field.INPUT, WSafe2Safe(outputCurrency.address))\n\t\t\t\t\tsetRewardToken(WSafe2RSafe(outputCurrency.address))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[onCurrencySelection, checkForWarning],\n\t)\n\n\tuseEffect(() => {\n\t\tsetTimeout(() => {\n\t\t\thandleInputSelect(tokenInfo(SAFEMOON_TOKEN_ADDRESS[chainId]))\n\t\t}, 250)\n\t}, [])\n\n\treturn (\n\t\t\n\t\t\t 0 && !dismissTokenWarning}\n\t\t\t\ttokens={urlLoadedTokens}\n\t\t\t\tonConfirm={handleConfirmTokenWarning}\n\t\t\t/>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tsetApprovalSubmitted(false) // reset 2 step UI for approvals\n\t\t\t\t\t\t\t\t\t\t\t\tonSwitchTokensWrapped()\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ borderRadius: '50%' }}\n\t\t\t\t\t\t\t\t\t\t\tscale=\"sm\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{recipient === null && !showWrap && isExpertMode ? (\n\t\t\t\t\t\t\t\t\t\t onChangeRecipient('')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t+ Add a send (optional)\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t{recipient !== null && !showWrap ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t onChangeRecipient(null)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t- Remove send\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : null}\n\n\t\t\t\t\t\t\t{showWrap ? null : (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{Boolean(trade) && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(1182, 'Price')}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{allowedSlippage !== INITIAL_ALLOWED_SLIPPAGE && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{TranslateString(88, 'Slippage Tolerance')}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{allowedSlippage / 100}%\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!account ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : showWrap ? (\n\t\t\t\t\t\t\t\tshowApproveFlow ? (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{approval === ApprovalState.PENDING ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tApproving \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t) : approvalSubmitted &&\n\t\t\t\t\t\t\t\t\t\t\t approval === ApprovalState.APPROVED ? (\n\t\t\t\t\t\t\t\t\t\t\t\t'Approved'\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t`Approve ${currencies[Field.INPUT]?.symbol}`\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{wrapInputError ??\n\t\t\t\t\t\t\t\t\t\t\t(wrapType === WrapType.WRAP\n\t\t\t\t\t\t\t\t\t\t\t\t? 'Wrap'\n\t\t\t\t\t\t\t\t\t\t\t\t: wrapType === WrapType.UNWRAP\n\t\t\t\t\t\t\t\t\t\t\t\t? 'Unwrap'\n\t\t\t\t\t\t\t\t\t\t\t\t: null)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) : noRoute && userHasSpecifiedInputOutput ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{TranslateString(\n\t\t\t\t\t\t\t\t\t\t\t1194,\n\t\t\t\t\t\t\t\t\t\t\t'Insufficient liquidity for this trade.',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : showApproveFlow ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{approval === ApprovalState.PENDING ? (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tApproving \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t) : approvalSubmitted &&\n\t\t\t\t\t\t\t\t\t\t approval === ApprovalState.APPROVED ? (\n\t\t\t\t\t\t\t\t\t\t\t'Approved'\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t`Approve ${currencies[Field.INPUT]?.symbol}`\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tif (isExpertMode) {\n\t\t\t\t\t\t\t\t\t\t\t\thandleSwap()\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tsetSwapState({\n\t\t\t\t\t\t\t\t\t\t\t\t\ttradeToConfirm: trade,\n\t\t\t\t\t\t\t\t\t\t\t\t\tattemptingTxn: false,\n\t\t\t\t\t\t\t\t\t\t\t\t\tswapErrorMessage: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t\tshowConfirm: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxHash: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tstyle={{ width: '48%' }}\n\t\t\t\t\t\t\t\t\t\tid=\"swap-button\"\n\t\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t\t!isValid ||\n\t\t\t\t\t\t\t\t\t\t\tapproval !== ApprovalState.APPROVED ||\n\t\t\t\t\t\t\t\t\t\t\t(priceImpactSeverity > 3 && !isExpertMode)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\tisValid && priceImpactSeverity > 2\n\t\t\t\t\t\t\t\t\t\t\t\t? 'danger'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'primary'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{priceImpactSeverity > 3 && !isExpertMode\n\t\t\t\t\t\t\t\t\t\t\t? `Price Impact High`\n\t\t\t\t\t\t\t\t\t\t\t: `Swap${priceImpactSeverity > 2 ? ' Anyway' : ''}`}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tif (isExpertMode) {\n\t\t\t\t\t\t\t\t\t\t\thandleSwap()\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tsetSwapState({\n\t\t\t\t\t\t\t\t\t\t\t\ttradeToConfirm: trade,\n\t\t\t\t\t\t\t\t\t\t\t\tattemptingTxn: false,\n\t\t\t\t\t\t\t\t\t\t\t\tswapErrorMessage: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\tshowConfirm: true,\n\t\t\t\t\t\t\t\t\t\t\t\ttxHash: undefined,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tid=\"swap-button\"\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t!isValid ||\n\t\t\t\t\t\t\t\t\t\t(priceImpactSeverity > 3 && !isExpertMode) ||\n\t\t\t\t\t\t\t\t\t\t!!swapCallbackError\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\tisValid && priceImpactSeverity > 2 && !swapCallbackError\n\t\t\t\t\t\t\t\t\t\t\t? 'danger'\n\t\t\t\t\t\t\t\t\t\t\t: 'primary'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{swapInputError ||\n\t\t\t\t\t\t\t\t\t\t(priceImpactSeverity > 3 && !isExpertMode\n\t\t\t\t\t\t\t\t\t\t\t? `Price Impact Too High`\n\t\t\t\t\t\t\t\t\t\t\t: `Swap${priceImpactSeverity > 2 ? ' Anyway' : ''}`)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{/* {showApproveFlow && } */}\n\t\t\t\t\t\t\t{isExpertMode && swapErrorMessage ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{/* \n\t\t\t\t\t */}\n\t\t\t\t\t{/* \"Food1\"\n\t\t\t\t\t\"Food1\" */}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Wrap\n","import React from 'react'\nimport { Redirect, RouteComponentProps } from 'react-router-dom'\n\n// Redirects to swap but only replace the pathname\nexport function RedirectPathToSwapOnly({ location }: RouteComponentProps) {\n\treturn \n}\n\nexport default RedirectPathToSwapOnly\n","export const EN = { code: 'en', language: 'English' }\nexport const AR = { code: 'ar', language: 'العربية' }\nexport const BN = { code: 'bn', language: 'বাংলা' }\nexport const ZHCN = { code: 'zh-CN', language: '简体中文' }\nexport const ZHTW = { code: 'zh-TW', language: '繁體中文' }\nexport const NL = { code: 'nl', language: 'Nederlands' }\nexport const FIL = { code: 'fil', language: 'Filipino' }\nexport const FI = { code: 'fi', language: 'Suomalainen' }\nexport const FR = { code: 'fr', language: 'Français' }\nexport const DE = { code: 'de', language: 'Deutsch' }\nexport const EL = { code: 'el', language: 'Ελληνικά' }\nexport const HI = { code: 'hi', language: 'हिंदी' }\nexport const HU = { code: 'hu', language: 'Magyar' }\nexport const ID = { code: 'id', language: 'Bahasa Indonesia' }\nexport const IT = { code: 'it', language: 'Italiano' }\nexport const JA = { code: 'ja', language: '日本語' }\nexport const KO = { code: 'ko', language: '한국어' }\nexport const PL = { code: 'pl', language: 'Polski' }\nexport const PTPT = { code: 'pt-PT', language: 'Português (Portugal)' }\nexport const PTBR = { code: 'pt-BR', language: 'Português (Brasil)' }\nexport const RO = { code: 'ro', language: 'Română' }\nexport const RU = { code: 'ru', language: 'Русский' }\nexport const ESES = { code: 'es-ES', language: 'Español' }\nexport const SVSE = { code: 'sv-SE', language: 'Svenska' }\nexport const TA = { code: 'ta', language: 'தமிழ்' }\nexport const TR = { code: 'tr', language: 'Türkçe' }\nexport const UK = { code: 'uk', language: 'Українська' }\nexport const VI = { code: 'vi', language: 'Tiếng Việt' }\n\nexport const allLanguages = [\n\tEN,\n\tAR,\n\tBN,\n\tZHCN,\n\tZHTW,\n\tNL,\n\tFIL,\n\tFI,\n\tFR,\n\tDE,\n\tEL,\n\tHI,\n\tHU,\n\tID,\n\tIT,\n\tJA,\n\tKO,\n\tPL,\n\tPTPT,\n\tPTBR,\n\tRO,\n\tRU,\n\tESES,\n\tSVSE,\n\tTA,\n\tTR,\n\tUK,\n\tVI,\n]\n","import React, { createContext } from 'react'\n// import { LangType } from '../uikit-foodcourt'\n\nexport interface LanguageObject {\n\tcode: string\n\tlanguage: string\n}\ninterface LanguageState {\n\tselectedLanguage: LanguageObject\n\tsetSelectedLanguage: () => void\n\ttranslatedLanguage: LanguageObject\n\tsetTranslatedLanguage: React.Dispatch>\n}\n\nconst defaultLanguageState: LanguageState = {\n\tselectedLanguage: { code: '', language: '' },\n\tsetSelectedLanguage: (): void => undefined,\n\ttranslatedLanguage: { code: '', language: '' },\n\tsetTranslatedLanguage: (): void => undefined,\n}\n\nexport const LanguageContext = createContext(defaultLanguageState as LanguageState)\n","import React, { useState } from 'react'\nimport { ThemeProvider as SCThemeProvider } from 'styled-components'\nimport { light, dark } from './uikit-foodcourt'\n\nconst CACHE_KEY = 'IS_DARK'\n\nexport interface ThemeContextType {\n\tisDark: boolean\n\ttoggleTheme: () => void\n}\n\nconst ThemeContext = React.createContext({\n\tisDark: false,\n\ttoggleTheme: () => null,\n})\n\nconst ThemeContextProvider: React.FC = ({ children }) => {\n\tconst [isDark, setIsDark] = useState(() => {\n\t\tconst isDarkUserSetting = localStorage.getItem(CACHE_KEY)\n\t\treturn isDarkUserSetting ? JSON.parse(isDarkUserSetting) : false\n\t})\n\n\tconst toggleTheme = () => {\n\t\tsetIsDark((prevState: any) => {\n\t\t\tlocalStorage.setItem(CACHE_KEY, JSON.stringify(!prevState))\n\t\t\treturn !prevState\n\t\t})\n\t}\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n}\n\nexport { ThemeContext, ThemeContextProvider }\n","import { useContext } from 'react'\nimport { ThemeContext as StyledThemeCopntext } from 'styled-components'\nimport { ThemeContext } from '../ThemeContext'\n\nconst useTheme = () => {\n\tconst { isDark, toggleTheme } = useContext(ThemeContext)\n\tconst theme = useContext(StyledThemeCopntext)\n\treturn { isDark, toggleTheme, theme }\n}\n\nexport default useTheme\n","import { useEffect, useState } from 'react'\n\ntype ApiResponse = {\n\tupdated_at: string\n\tdata: {\n\t\t[key: string]: {\n\t\t\tname: string\n\t\t\tsymbol: string\n\t\t\tprice: string\n\t\t\tprice_BNB: string\n\t\t}\n\t}\n}\n\nconst api = 'https://api.foodcourt.finance/prices'\n\nconst useGetPriceData = () => {\n\tconst [data, setData] = useState(null)\n\n\tuseEffect(() => {\n\t\tconst fetchData = async () => {\n\t\t\ttry {\n\t\t\t\tconst response = await fetch(api)\n\t\t\t\tconst res: ApiResponse = await response.json()\n\n\t\t\t\tsetData(res)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Unable to fetch price data:', error)\n\t\t\t}\n\t\t}\n\n\t\tfetchData()\n\t}, [setData])\n\n\treturn data\n}\n\nexport default useGetPriceData\n","import { useEffect, useState } from 'react'\nimport Cookies from 'js-cookie'\nimport { useActiveWeb3React } from 'hooks'\n\nconst initialState = {\n\tprofileLink: 'https://pancakeswap.finance/profile',\n\tnoProfileLink: 'https://pancakeswap.finance/profile',\n}\n\n/**\n * Note - this will only work if the app is on the same domain\n */\nconst useGetLocalProfile = () => {\n\tconst [profile, setProfile] = useState(initialState)\n\tconst { account } = useActiveWeb3React()\n\n\tuseEffect(() => {\n\t\tif (account) {\n\t\t\ttry {\n\t\t\t\tconst localData = Cookies.get(`profile_${account}`)\n\n\t\t\t\tif (localData) {\n\t\t\t\t\tconst localProfile = JSON.parse(localData)\n\n\t\t\t\t\tsetProfile((prevProfile) => ({\n\t\t\t\t\t\t...prevProfile,\n\t\t\t\t\t\tusername: localProfile.username,\n\t\t\t\t\t\timage: localProfile.avatar,\n\t\t\t\t\t}))\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tsetProfile(initialState)\n\t\t\t}\n\t\t} else {\n\t\t\tsetProfile(initialState)\n\t\t}\n\t}, [account, setProfile])\n\n\treturn profile\n}\n\nexport default useGetLocalProfile\n","import { MenuEntry } from '../../uikit-foodcourt'\n\nconst config: MenuEntry[] = [\n\t{\n\t\tlabel: 'Home',\n\t\ticon: 'HomeIcon',\n\t\thref: 'https://www.foodcourt.finance/',\n\t},\n\t...(process.env.REACT_APP_ENABLE_DUAL_LAUNCH_UI === 'true'\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Dual-Lunch',\n\t\t\t\t\ticon: '',\n\t\t\t\t\thref: 'https://lunch.foodcourt.finance/',\n\t\t\t\t\tsubtitle: 'Get COUPON',\n\t\t\t\t},\n\t\t ]\n\t\t: []),\n\t{\n\t\tlabel: 'Exchange',\n\t\ticon: 'TradeIcon',\n\t\thref: '/swap',\n\t},\n\t{\n\t\tlabel: 'Liquidity',\n\t\ticon: 'TradeIcon',\n\t\thref: '/pool',\n\t},\n\t// {\n\t// \tlabel: 'Wrap',\n\t// \ticon: 'TradeIcon',\n\t// \thref: '/wrap',\n\t// },\n\t{\n\t\tlabel: 'Cafeteria Fl.2',\n\t\ticon: 'FarmIcon',\n\t\thref: 'https://www.foodcourt.finance/farmsV2',\n\t\tsubtitle: 'Farm',\n\t},\n\t{\n\t\tlabel: 'Snack bar Fl.2',\n\t\ticon: 'PoolIcon',\n\t\thref: 'https://www.foodcourt.finance/poolsV2',\n\t\tsubtitle: 'Pool',\n\t},\n\t{\n\t\tlabel: 'Bridge',\n\t\ticon: '',\n\t\thref: 'https://www.northbridge.link',\n\t\tsubtitle: 'Northbridge',\n\t},\n\t// {\n\t// \tlabel: 'ILO',\n\t// \ticon: '',\n\t// \thref: 'https://biolab.finance',\n\t// \tsubtitle: 'Biolab',\n\t// },\n\t// {\n\t// \tlabel: 'Fleamarket',\n\t// \ticon: '',\n\t// \thref: 'https://fleamarket.foodcourt.finance',\n\t// \tsubtitle: 'Vote my favourite food',\n\t// },\n\t// {\n\t// \tlabel: 'Supermarket',\n\t// \ticon: '',\n\t// \thref: 'https://supermarket.foodcourt.finance',\n\t// \tsubtitle: 'View my wallet',\n\t// },\n\t// {\n\t// \tlabel: 'Festival 🎉',\n\t// \ticon: '',\n\t// \thref: 'https://iff.foodcourt.finance',\n\t// \tsubtitle: 'International Food',\n\t// },\n\t// {\n\t// \tlabel: 'LuckyLion 🦁',\n\t// \ticon: 'NftIcon',\n\t// \thref: 'https://app.luckylion.io/games',\n\t// \tsubtitle: 'Games',\n\t// },\n\t// {\n\t// \tlabel: 'Closed Farms',\n\t// \ticon: 'FarmIcon',\n\t// \thref: 'https://www.foodcourt.finance/farms',\n\t// \tsubtitle: 'Farm',\n\t// },\n\t// {\n\t// \tlabel: 'Closed Pools',\n\t// \ticon: 'PoolIcon',\n\t// \thref: 'https://www.foodcourt.finance/pools',\n\t// \tsubtitle: 'Pool',\n\t// },\n\t// {\n\t// \tlabel: 'Portfolio',\n\t// \ticon: 'PredictionsIcon',\n\t// \thref: 'https://www.foodcourt.finance/portfolio',\n\t// \tsubtitle: 'My portfolio',\n\t// },\n]\n\nexport default config\n","import React, { useContext } from 'react'\nimport { Menu as UikitMenu } from '../../uikit-foodcourt'\nimport { useWeb3React } from '@web3-react/core'\nimport { allLanguages } from 'constants/localisation/languageCodes'\nimport { LanguageContext } from 'hooks/LanguageContext'\nimport useTheme from 'hooks/useTheme'\nimport useGetPriceData from 'hooks/useGetPriceData'\nimport useGetLocalProfile from 'hooks/useGetLocalProfile'\nimport useAuth from 'hooks/useAuth'\nimport links from './config'\nimport { COUPON } from '../../constants'\n\nconst Menu: React.FC = (props) => {\n\tconst { account } = useWeb3React()\n\tconst { login, logout } = useAuth()\n\tconst { selectedLanguage, setSelectedLanguage } = useContext(LanguageContext)\n\tconst { isDark, toggleTheme } = useTheme()\n\tconst priceData = useGetPriceData()\n\tconst cakePriceUsd = priceData ? Number(priceData[COUPON[70].address].price || '0.1') : undefined\n\tconst profile = useGetLocalProfile()\n\n\treturn (\n\t\t\n\t)\n}\n\nexport default Menu\n","import { useEffect } from 'react'\nimport useGetPriceData from './useGetPriceData'\nimport { COUPON } from '../constants'\n\nconst useGetDocumentTitlePrice = () => {\n\tconst priceData = useGetPriceData()\n\tconst cakePriceUsd = priceData ? parseFloat(priceData[COUPON[70].address].price || '0.1') : 0\n\n\tconst cakePriceUsdString =\n\t\tNumber.isNaN(cakePriceUsd) || cakePriceUsd === 0\n\t\t\t? ''\n\t\t\t: ` - $${cakePriceUsd.toLocaleString(undefined, {\n\t\t\t\t\tminimumFractionDigits: 3,\n\t\t\t\t\tmaximumFractionDigits: 3,\n\t\t\t })}`\n\n\tuseEffect(() => {\n\t\t// document.title = `Foodcourt${cakePriceUsdString}`\n\t\tdocument.title = `Foodcourt Finance`\n\t}, [cakePriceUsdString])\n}\nexport default useGetDocumentTitlePrice\n","import React, { Suspense, useEffect, useState } from 'react'\nimport { HashRouter, Route, Switch } from 'react-router-dom'\nimport styled from 'styled-components'\n// import { LangType } from '../uikit-foodcourt'\nimport Popups from '../components/Popups'\nimport Web3ReactManager from '../components/Web3ReactManager'\nimport {\n\tRedirectDuplicateTokenIds,\n\tRedirectOldAddLiquidityPathStructure,\n} from './AddLiquidity/redirects'\nimport { RedirectOldRemoveLiquidityPathStructure } from './RemoveLiquidity/redirects'\nimport AddLiquidity from './AddLiquidity'\nimport Pool from './Pool'\nimport PoolFinder from './PoolFinder'\nimport RemoveLiquidity from './RemoveLiquidity'\nimport Swap from './Swap'\nimport Wrap from './Wrap'\nimport { RedirectPathToSwapOnly } from './Swap/redirects'\nimport { EN, allLanguages } from '../constants/localisation/languageCodes'\nimport { LanguageContext } from '../hooks/LanguageContext'\nimport { TranslationsContext } from '../hooks/TranslationsContext'\n\nimport Menu from '../components/Menu'\nimport useGetDocumentTitlePrice from '../hooks/useGetDocumentTitlePrice'\n\nconst AppWrapper = styled.div`\n\tdisplay: flex;\n\tflex-flow: column;\n\talign-items: flex-start;\n\toverflow-x: hidden;\n`\n\nconst BodyWrapper = styled.div`\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\tz-index: 1;\n\tmargin-bottom: 64px;\n\t${({ theme }) => theme.mediaQueries.lg} {\n\t\tmargin-bottom: 0;\n\t}\n`\n\nconst CACHE_KEY = 'pancakeSwapLanguage'\n\nexport default function App() {\n\tconst [selectedLanguage, setSelectedLanguage] = useState(undefined)\n\tconst [translatedLanguage, setTranslatedLanguage] = useState(undefined)\n\tconst [translations, setTranslations] = useState>([])\n\n\tconst getStoredLang = (storedLangCode: string) =>\n\t\tallLanguages.filter((language) => language.code === storedLangCode)[0]\n\n\tuseEffect(() => {\n\t\tconst storedLangCode = localStorage.getItem(CACHE_KEY)\n\t\tif (storedLangCode) {\n\t\t\tconst storedLang = getStoredLang(storedLangCode)\n\t\t\tsetSelectedLanguage(storedLang)\n\t\t} else {\n\t\t\tsetSelectedLanguage(EN)\n\t\t}\n\t}, [])\n\n\tconst handleLanguageSelect = () => {\n\t\t// setSelectedLanguage(langObject)\n\t\t// localStorage.setItem(CACHE_KEY, langObject.code)\n\t}\n\n\tuseGetDocumentTitlePrice()\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t{/* Redirection: These old routes are still used in the code base */}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import { useCallback, useEffect, useState } from 'react'\n\nconst VISIBILITY_STATE_SUPPORTED = 'visibilityState' in document\n\nfunction isWindowVisible() {\n\treturn !VISIBILITY_STATE_SUPPORTED || document.visibilityState !== 'hidden'\n}\n\n/**\n * Returns whether the window is currently visible to the user.\n */\nexport default function useIsWindowVisible(): boolean {\n\tconst [focused, setFocused] = useState(isWindowVisible())\n\tconst listener = useCallback(() => {\n\t\tsetFocused(isWindowVisible())\n\t}, [setFocused])\n\n\tuseEffect(() => {\n\t\tif (!VISIBILITY_STATE_SUPPORTED) return undefined\n\n\t\tdocument.addEventListener('visibilitychange', listener)\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('visibilitychange', listener)\n\t\t}\n\t}, [listener])\n\n\treturn focused\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { useActiveWeb3React } from '../../hooks'\nimport useDebounce from '../../hooks/useDebounce'\nimport useIsWindowVisible from '../../hooks/useIsWindowVisible'\nimport { updateBlockNumber } from './actions'\n\nexport default function Updater(): null {\n\tconst { library, chainId } = useActiveWeb3React()\n\tconst dispatch = useDispatch()\n\n\tconst windowVisible = useIsWindowVisible()\n\n\tconst [state, setState] = useState<{ chainId: number | undefined; blockNumber: number | null }>(\n\t\t{\n\t\t\tchainId,\n\t\t\tblockNumber: null,\n\t\t},\n\t)\n\n\tconst blockNumberCallback = useCallback(\n\t\t(blockNumber: number) => {\n\t\t\tsetState((s) => {\n\t\t\t\tif (chainId === s.chainId) {\n\t\t\t\t\tif (typeof s.blockNumber !== 'number') return { chainId, blockNumber }\n\t\t\t\t\treturn { chainId, blockNumber: Math.max(blockNumber, s.blockNumber) }\n\t\t\t\t}\n\t\t\t\treturn s\n\t\t\t})\n\t\t},\n\t\t[chainId, setState],\n\t)\n\n\t// attach/detach listeners\n\tuseEffect(() => {\n\t\tif (!library || !chainId || !windowVisible) return undefined\n\n\t\tsetState({ chainId, blockNumber: null })\n\n\t\tlibrary\n\t\t\t.getBlockNumber()\n\t\t\t.then(blockNumberCallback)\n\t\t\t.catch((error) =>\n\t\t\t\tconsole.error(`Failed to get block number for chainId: ${chainId}`, error),\n\t\t\t)\n\n\t\tlibrary.on('block', blockNumberCallback)\n\t\treturn () => {\n\t\t\tlibrary.removeListener('block', blockNumberCallback)\n\t\t}\n\t}, [dispatch, chainId, library, blockNumberCallback, windowVisible])\n\n\tconst debouncedState = useDebounce(state, 100)\n\n\tuseEffect(() => {\n\t\tif (!debouncedState.chainId || !debouncedState.blockNumber || !windowVisible) return\n\t\tdispatch(\n\t\t\tupdateBlockNumber({\n\t\t\t\tchainId: debouncedState.chainId,\n\t\t\t\tblockNumber: debouncedState.blockNumber,\n\t\t\t}),\n\t\t)\n\t}, [windowVisible, dispatch, debouncedState.blockNumber, debouncedState.chainId])\n\n\treturn null\n}\n","import { getVersionUpgrade, minVersionBump, VersionUpgrade } from '@uniswap/token-lists'\nimport { useCallback, useEffect } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useActiveWeb3React } from '../../hooks'\nimport { useFetchListCallback } from '../../hooks/useFetchListCallback'\nimport useInterval from '../../hooks/useInterval'\nimport useIsWindowVisible from '../../hooks/useIsWindowVisible'\nimport { addPopup } from '../application/actions'\nimport { AppDispatch, AppState } from '../index'\nimport { acceptListUpdate } from './actions'\n\nexport default function Updater(): null {\n\tconst { library } = useActiveWeb3React()\n\tconst dispatch = useDispatch()\n\tconst lists = useSelector((state) => state.lists.byUrl)\n\n\tconst isWindowVisible = useIsWindowVisible()\n\n\tconst fetchList = useFetchListCallback()\n\n\tconst fetchAllListsCallback = useCallback(() => {\n\t\tif (!isWindowVisible) return\n\t\tObject.keys(lists).forEach((url) =>\n\t\t\tfetchList(url).catch((error) => console.error('interval list fetching error', error)),\n\t\t)\n\t}, [fetchList, isWindowVisible, lists])\n\n\t// fetch all lists every 10 minutes, but only after we initialize library\n\tuseInterval(fetchAllListsCallback, library ? 1000 * 60 * 10 : null)\n\n\t// whenever a list is not loaded and not loading, try again to load it\n\tuseEffect(() => {\n\t\tObject.keys(lists).forEach((listUrl) => {\n\t\t\tconst list = lists[listUrl]\n\n\t\t\tif (!list.current && !list.loadingRequestId && !list.error) {\n\t\t\t\tfetchList(listUrl).catch((error) =>\n\t\t\t\t\tconsole.error('list added fetching error', error),\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}, [dispatch, fetchList, library, lists])\n\n\t// automatically update lists if versions are minor/patch\n\tuseEffect(() => {\n\t\tObject.keys(lists).forEach((listUrl) => {\n\t\t\tconst list = lists[listUrl]\n\t\t\tif (list.current && list.pendingUpdate) {\n\t\t\t\tconst bump = getVersionUpgrade(list.current.version, list.pendingUpdate.version)\n\t\t\t\tswitch (bump) {\n\t\t\t\t\tcase VersionUpgrade.NONE:\n\t\t\t\t\t\tthrow new Error('unexpected no version bump')\n\t\t\t\t\tcase VersionUpgrade.PATCH:\n\t\t\t\t\tcase VersionUpgrade.MINOR:\n\t\t\t\t\t\tconst min = minVersionBump(list.current.tokens, list.pendingUpdate.tokens)\n\t\t\t\t\t\t// automatically update minor/patch as long as bump matches the min update\n\t\t\t\t\t\tif (bump >= min) {\n\t\t\t\t\t\t\tdispatch(acceptListUpdate(listUrl))\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\taddPopup({\n\t\t\t\t\t\t\t\t\tkey: listUrl,\n\t\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\t\tlistUpdate: {\n\t\t\t\t\t\t\t\t\t\t\tlistUrl,\n\t\t\t\t\t\t\t\t\t\t\toldList: list.current,\n\t\t\t\t\t\t\t\t\t\t\tnewList: list.pendingUpdate,\n\t\t\t\t\t\t\t\t\t\t\tauto: true,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t`List at url ${listUrl} could not automatically update because the version bump was only PATCH/MINOR while the update had breaking changes and should have been MAJOR`,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase VersionUpgrade.MAJOR:\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\taddPopup({\n\t\t\t\t\t\t\t\tkey: listUrl,\n\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\tlistUpdate: {\n\t\t\t\t\t\t\t\t\t\tlistUrl,\n\t\t\t\t\t\t\t\t\t\tauto: false,\n\t\t\t\t\t\t\t\t\t\toldList: list.current,\n\t\t\t\t\t\t\t\t\t\tnewList: list.pendingUpdate,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tremoveAfterMs: null,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}, [dispatch, lists])\n\n\treturn null\n}\n","function wait(ms: number): Promise {\n\treturn new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nfunction waitRandom(min: number, max: number): Promise {\n\treturn wait(min + Math.round(Math.random() * Math.max(0, max - min)))\n}\n\n/**\n * This error is thrown if the function is cancelled before completing\n */\nexport class CancelledError extends Error {\n\tconstructor() {\n\t\tsuper('Cancelled')\n\t}\n}\n\n/**\n * Throw this error if the function should retry\n */\nexport class RetryableError extends Error {}\n\n/**\n * Retries the function that returns the promise until the promise successfully resolves up to n retries\n * @param fn function to retry\n * @param n how many times to retry\n * @param minWait min wait between retries in ms\n * @param maxWait max wait between retries in ms\n */\nexport function retry(\n\tfn: () => Promise,\n\t{ n, minWait, maxWait }: { n: number; minWait: number; maxWait: number },\n): { promise: Promise; cancel: () => void } {\n\tlet completed = false\n\tlet rejectCancelled: (error: Error) => void\n\t// eslint-disable-next-line no-async-promise-executor\n\tconst promise = new Promise(async (resolve, reject) => {\n\t\trejectCancelled = reject\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\tlet result: T\n\t\t\ttry {\n\t\t\t\tresult = await fn()\n\t\t\t\tif (!completed) {\n\t\t\t\t\tresolve(result)\n\t\t\t\t\tcompleted = true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t} catch (error) {\n\t\t\t\tif (completed) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif (n <= 0 || !(error instanceof RetryableError)) {\n\t\t\t\t\treject(error)\n\t\t\t\t\tcompleted = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tn--\n\t\t\t}\n\t\t\tawait waitRandom(minWait, maxWait)\n\t\t}\n\t})\n\treturn {\n\t\tpromise,\n\t\tcancel: () => {\n\t\t\tif (completed) return\n\t\t\tcompleted = true\n\t\t\trejectCancelled(new CancelledError())\n\t\t},\n\t}\n}\n","import { Contract } from '@ethersproject/contracts'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useActiveWeb3React } from '../../hooks'\nimport { useMulticallContract } from '../../hooks/useContract'\nimport useDebounce from '../../hooks/useDebounce'\nimport chunkArray from '../../utils/chunkArray'\nimport { CancelledError, retry, RetryableError } from '../../utils/retry'\nimport { useBlockNumber } from '../application/hooks'\nimport { AppDispatch, AppState } from '../index'\nimport {\n\tCall,\n\terrorFetchingMulticallResults,\n\tfetchingMulticallResults,\n\tparseCallKey,\n\tupdateMulticallResults,\n} from './actions'\n\n// chunk calls so we do not exceed the gas limit\nconst CALL_CHUNK_SIZE = 500\n\n/**\n * Fetches a chunk of calls, enforcing a minimum block number constraint\n * @param multicallContract multicall contract to fetch against\n * @param chunk chunk of calls to make\n * @param minBlockNumber minimum block number of the result set\n */\nasync function fetchChunk(\n\tmulticallContract: Contract,\n\tchunk: Call[],\n\tminBlockNumber: number,\n): Promise<{ results: string[]; blockNumber: number }> {\n\tlet resultsBlockNumber\n\tlet returnData\n\ttry {\n\t\t;[resultsBlockNumber, returnData] = await multicallContract.aggregate(\n\t\t\tchunk.map((obj) => [obj.address, obj.callData]),\n\t\t)\n\t} catch (error) {\n\t\tconsole.info('Failed to fetch chunk inside retry', error)\n\t\tthrow error\n\t}\n\tif (resultsBlockNumber.toNumber() < minBlockNumber) {\n\t\tthrow new RetryableError('Fetched for old block number')\n\t}\n\treturn { results: returnData, blockNumber: resultsBlockNumber.toNumber() }\n}\n\n/**\n * From the current all listeners state, return each call key mapped to the\n * minimum number of blocks per fetch. This is how often each key must be fetched.\n * @param allListeners the all listeners state\n * @param chainId the current chain id\n */\nexport function activeListeningKeys(\n\tallListeners: AppState['multicall']['callListeners'],\n\tchainId?: number,\n): { [callKey: string]: number } {\n\tif (!allListeners || !chainId) return {}\n\tconst listeners = allListeners[chainId]\n\tif (!listeners) return {}\n\n\treturn Object.keys(listeners).reduce<{ [callKey: string]: number }>((memo, callKey) => {\n\t\tconst keyListeners = listeners[callKey]\n\n\t\tmemo[callKey] = Object.keys(keyListeners)\n\t\t\t.filter((key) => {\n\t\t\t\tconst blocksPerFetch = parseInt(key)\n\t\t\t\tif (blocksPerFetch <= 0) return false\n\t\t\t\treturn keyListeners[blocksPerFetch] > 0\n\t\t\t})\n\t\t\t.reduce((previousMin, current) => Math.min(previousMin, parseInt(current)), Infinity)\n\t\treturn memo\n\t}, {})\n}\n\n/**\n * Return the keys that need to be refetched\n * @param callResults current call result state\n * @param listeningKeys each call key mapped to how old the data can be in blocks\n * @param chainId the current chain id\n * @param latestBlockNumber the latest block number\n */\nexport function outdatedListeningKeys(\n\tcallResults: AppState['multicall']['callResults'],\n\tlisteningKeys: { [callKey: string]: number },\n\tchainId: number | undefined,\n\tlatestBlockNumber: number | undefined,\n): string[] {\n\tif (!chainId || !latestBlockNumber) return []\n\tconst results = callResults[chainId]\n\t// no results at all, load everything\n\tif (!results) return Object.keys(listeningKeys)\n\n\treturn Object.keys(listeningKeys).filter((callKey) => {\n\t\tconst blocksPerFetch = listeningKeys[callKey]\n\n\t\tconst data = callResults[chainId][callKey]\n\t\t// no data, must fetch\n\t\tif (!data) return true\n\n\t\tconst minDataBlockNumber = latestBlockNumber - (blocksPerFetch - 1)\n\n\t\t// already fetching it for a recent enough block, don't refetch it\n\t\tif (data.fetchingBlockNumber && data.fetchingBlockNumber >= minDataBlockNumber) return false\n\n\t\t// if data is older than minDataBlockNumber, fetch it\n\t\treturn !data.blockNumber || data.blockNumber < minDataBlockNumber\n\t})\n}\n\nexport default function Updater(): null {\n\tconst dispatch = useDispatch()\n\tconst state = useSelector((s) => s.multicall)\n\t// wait for listeners to settle before triggering updates\n\tconst debouncedListeners = useDebounce(state.callListeners, 100)\n\tconst latestBlockNumber = useBlockNumber()\n\tconst { chainId } = useActiveWeb3React()\n\tconst multicallContract = useMulticallContract()\n\tconst cancellations = useRef<{ blockNumber: number; cancellations: (() => void)[] }>()\n\n\tconst listeningKeys: { [callKey: string]: number } = useMemo(\n\t\t() => activeListeningKeys(debouncedListeners, chainId),\n\t\t[debouncedListeners, chainId],\n\t)\n\n\tconst unserializedOutdatedCallKeys = useMemo(\n\t\t() => outdatedListeningKeys(state.callResults, listeningKeys, chainId, latestBlockNumber),\n\t\t[chainId, state.callResults, listeningKeys, latestBlockNumber],\n\t)\n\n\tconst serializedOutdatedCallKeys = useMemo(\n\t\t() => JSON.stringify(unserializedOutdatedCallKeys.sort()),\n\t\t[unserializedOutdatedCallKeys],\n\t)\n\n\tuseEffect(() => {\n\t\tif (!latestBlockNumber || !chainId || !multicallContract) return\n\n\t\tconst outdatedCallKeys: string[] = JSON.parse(serializedOutdatedCallKeys)\n\t\tif (outdatedCallKeys.length === 0) return\n\t\tconst calls = outdatedCallKeys.map((key) => parseCallKey(key))\n\t\t// .filter(item => item.address.toLowerCase() !== '0xBCfCcbde45cE874adCB698cC183deBcF17952812'.toLowerCase())\n\n\t\tconst chunkedCalls = chunkArray(calls, CALL_CHUNK_SIZE)\n\n\t\tif (cancellations.current?.blockNumber !== latestBlockNumber) {\n\t\t\tcancellations.current?.cancellations?.forEach((c) => c())\n\t\t}\n\n\t\tdispatch(\n\t\t\tfetchingMulticallResults({\n\t\t\t\tcalls,\n\t\t\t\tchainId,\n\t\t\t\tfetchingBlockNumber: latestBlockNumber,\n\t\t\t}),\n\t\t)\n\n\t\tcancellations.current = {\n\t\t\tblockNumber: latestBlockNumber,\n\t\t\tcancellations: chunkedCalls.map((chunk, index) => {\n\t\t\t\tconst { cancel, promise } = retry(\n\t\t\t\t\t() => fetchChunk(multicallContract, chunk, latestBlockNumber),\n\t\t\t\t\t{\n\t\t\t\t\t\tn: Infinity,\n\t\t\t\t\t\tminWait: 2500,\n\t\t\t\t\t\tmaxWait: 3500,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\tpromise\n\t\t\t\t\t.then(({ results: returnData, blockNumber: fetchBlockNumber }) => {\n\t\t\t\t\t\tcancellations.current = {\n\t\t\t\t\t\t\tcancellations: [],\n\t\t\t\t\t\t\tblockNumber: latestBlockNumber,\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// accumulates the length of all previous indices\n\t\t\t\t\t\tconst firstCallKeyIndex = chunkedCalls\n\t\t\t\t\t\t\t.slice(0, index)\n\t\t\t\t\t\t\t.reduce((memo, curr) => memo + curr.length, 0)\n\t\t\t\t\t\tconst lastCallKeyIndex = firstCallKeyIndex + returnData.length\n\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tupdateMulticallResults({\n\t\t\t\t\t\t\t\tchainId,\n\t\t\t\t\t\t\t\tresults: outdatedCallKeys\n\t\t\t\t\t\t\t\t\t.slice(firstCallKeyIndex, lastCallKeyIndex)\n\t\t\t\t\t\t\t\t\t.reduce<{ [callKey: string]: string | null }>(\n\t\t\t\t\t\t\t\t\t\t(memo, callKey, i) => {\n\t\t\t\t\t\t\t\t\t\t\tmemo[callKey] = returnData[i] ?? null\n\t\t\t\t\t\t\t\t\t\t\treturn memo\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tblockNumber: fetchBlockNumber,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error: any) => {\n\t\t\t\t\t\tif (error instanceof CancelledError) {\n\t\t\t\t\t\t\tconsole.error('Cancelled fetch for blockNumber', latestBlockNumber)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconsole.error('Failed to fetch multicall chunk', chunk, chainId, error)\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\terrorFetchingMulticallResults({\n\t\t\t\t\t\t\t\tcalls: chunk,\n\t\t\t\t\t\t\t\tchainId,\n\t\t\t\t\t\t\t\tfetchingBlockNumber: latestBlockNumber,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\treturn cancel\n\t\t\t}),\n\t\t}\n\t}, [chainId, multicallContract, dispatch, serializedOutdatedCallKeys, latestBlockNumber])\n\n\treturn null\n}\n","// chunks array into chunks of maximum size\n// evenly distributes items among the chunks\nexport default function chunkArray(items: T[], maxChunkSize: number): T[][] {\n\tif (maxChunkSize < 1) throw new Error('maxChunkSize must be gte 1')\n\tif (items.length <= maxChunkSize) return [items]\n\n\tconst numChunks: number = Math.ceil(items.length / maxChunkSize)\n\tconst chunkSize = Math.ceil(items.length / numChunks)\n\n\treturn [...Array(numChunks).keys()].map((ix) =>\n\t\titems.slice(ix * chunkSize, ix * chunkSize + chunkSize),\n\t)\n}\n","import { useEffect } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useActiveWeb3React } from '../../hooks'\nimport { useAddPopup, useBlockNumber } from '../application/hooks'\nimport { AppDispatch, AppState } from '../index'\nimport { checkedTransaction, finalizeTransaction } from './actions'\n\nexport function shouldCheck(\n\tlastBlockNumber: number,\n\ttx: { addedTime: number; receipt?: any; lastCheckedBlockNumber?: number },\n): boolean {\n\tif (tx.receipt) return false\n\tif (!tx.lastCheckedBlockNumber) return true\n\tconst blocksSinceCheck = lastBlockNumber - tx.lastCheckedBlockNumber\n\tif (blocksSinceCheck < 1) return false\n\tconst minutesPending = (new Date().getTime() - tx.addedTime) / 1000 / 60\n\tif (minutesPending > 60) {\n\t\t// every 10 blocks if pending for longer than an hour\n\t\treturn blocksSinceCheck > 9\n\t}\n\tif (minutesPending > 5) {\n\t\t// every 3 blocks if pending more than 5 minutes\n\t\treturn blocksSinceCheck > 2\n\t}\n\t// otherwise every block\n\treturn true\n}\n\nexport default function Updater(): null {\n\tconst { chainId, library } = useActiveWeb3React()\n\n\tconst lastBlockNumber = useBlockNumber()\n\n\tconst dispatch = useDispatch()\n\tconst state = useSelector((s) => s.transactions)\n\n\tconst transactions = chainId ? state[chainId] ?? {} : {}\n\n\t// show popup on confirm\n\tconst addPopup = useAddPopup()\n\n\tuseEffect(() => {\n\t\tif (!chainId || !library || !lastBlockNumber) return\n\n\t\tObject.keys(transactions)\n\t\t\t.filter((hash) => shouldCheck(lastBlockNumber, transactions[hash]))\n\t\t\t.forEach((hash) => {\n\t\t\t\tlibrary\n\t\t\t\t\t.getTransactionReceipt(hash)\n\t\t\t\t\t.then((receipt) => {\n\t\t\t\t\t\tif (receipt) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tfinalizeTransaction({\n\t\t\t\t\t\t\t\t\tchainId,\n\t\t\t\t\t\t\t\t\thash,\n\t\t\t\t\t\t\t\t\treceipt: {\n\t\t\t\t\t\t\t\t\t\tblockHash: receipt.blockHash,\n\t\t\t\t\t\t\t\t\t\tblockNumber: receipt.blockNumber,\n\t\t\t\t\t\t\t\t\t\tcontractAddress: receipt.contractAddress,\n\t\t\t\t\t\t\t\t\t\tfrom: receipt.from,\n\t\t\t\t\t\t\t\t\t\tstatus: receipt.status,\n\t\t\t\t\t\t\t\t\t\tto: receipt.to,\n\t\t\t\t\t\t\t\t\t\ttransactionHash: receipt.transactionHash,\n\t\t\t\t\t\t\t\t\t\ttransactionIndex: receipt.transactionIndex,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\taddPopup(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttxn: {\n\t\t\t\t\t\t\t\t\t\thash,\n\t\t\t\t\t\t\t\t\t\tsuccess: receipt.status === 1,\n\t\t\t\t\t\t\t\t\t\tsummary: transactions[hash]?.summary,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\thash,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tcheckedTransaction({ chainId, hash, blockNumber: lastBlockNumber }),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tconsole.error(`failed to check transaction hash: ${hash}`, error)\n\t\t\t\t\t})\n\t\t\t})\n\t}, [chainId, library, transactions, lastBlockNumber, dispatch, addPopup])\n\n\treturn null\n}\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { ToastContainer, Toast } from '../../uikit-foodcourt'\nimport useToast from 'hooks/useToast'\nimport { AppState } from '../../state'\n\nconst ToastListener = () => {\n\tconst toasts: Toast[] = useSelector((state: AppState) => state.toasts.data)\n\tconst { remove } = useToast()\n\n\tconst handleRemove = (id: string) => remove(id)\n\n\treturn \n}\n\nexport default ToastListener\n","import { createReducer, nanoid } from '@reduxjs/toolkit'\nimport {\n\taddPopup,\n\tPopupContent,\n\tremovePopup,\n\ttoggleWalletModal,\n\ttoggleSettingsMenu,\n\tupdateBlockNumber,\n} from './actions'\n\ntype PopupList = Array<{\n\tkey: string\n\tshow: boolean\n\tcontent: PopupContent\n\tremoveAfterMs: number | null\n}>\n\nexport interface ApplicationState {\n\tblockNumber: { [chainId: number]: number }\n\tpopupList: PopupList\n\twalletModalOpen: boolean\n\tsettingsMenuOpen: boolean\n}\n\nconst initialState: ApplicationState = {\n\tblockNumber: {},\n\tpopupList: [],\n\twalletModalOpen: false,\n\tsettingsMenuOpen: false,\n}\n\nexport default createReducer(initialState, (builder) =>\n\tbuilder\n\t\t.addCase(updateBlockNumber, (state, action) => {\n\t\t\tconst { chainId, blockNumber } = action.payload\n\t\t\tif (typeof state.blockNumber[chainId] !== 'number') {\n\t\t\t\tstate.blockNumber[chainId] = blockNumber\n\t\t\t} else {\n\t\t\t\tstate.blockNumber[chainId] = Math.max(blockNumber, state.blockNumber[chainId])\n\t\t\t}\n\t\t})\n\t\t.addCase(toggleWalletModal, (state) => {\n\t\t\tstate.walletModalOpen = !state.walletModalOpen\n\t\t})\n\t\t.addCase(toggleSettingsMenu, (state) => {\n\t\t\tstate.settingsMenuOpen = !state.settingsMenuOpen\n\t\t})\n\t\t.addCase(addPopup, (state, { payload: { content, key, removeAfterMs = 15000 } }) => {\n\t\t\tstate.popupList = (key\n\t\t\t\t? state.popupList.filter((popup) => popup.key !== key)\n\t\t\t\t: state.popupList\n\t\t\t).concat([\n\t\t\t\t{\n\t\t\t\t\tkey: key || nanoid(),\n\t\t\t\t\tshow: true,\n\t\t\t\t\tcontent,\n\t\t\t\t\tremoveAfterMs,\n\t\t\t\t},\n\t\t\t])\n\t\t})\n\t\t.addCase(removePopup, (state, { payload: { key } }) => {\n\t\t\tstate.popupList.forEach((p) => {\n\t\t\t\tif (p.key === key) {\n\t\t\t\t\tp.show = false\n\t\t\t\t}\n\t\t\t})\n\t\t}),\n)\n","import { createAction } from '@reduxjs/toolkit'\n\n// fired once when the app reloads but before the app renders\n// allows any updates to be applied to store data loaded from localStorage\nexport const updateVersion = createAction('global/updateVersion')\n\nexport default createAction\n","import { createReducer } from '@reduxjs/toolkit'\nimport { INITIAL_ALLOWED_SLIPPAGE, DEFAULT_DEADLINE_FROM_NOW } from '../../constants'\nimport { updateVersion } from '../global/actions'\nimport {\n\taddSerializedPair,\n\taddSerializedToken,\n\tremoveSerializedPair,\n\tremoveSerializedToken,\n\tSerializedPair,\n\tSerializedToken,\n\tupdateMatchesDarkMode,\n\tupdateUserDarkMode,\n\tupdateUserExpertMode,\n\tupdateUserSlippageTolerance,\n\tupdateUserDeadline,\n\tmuteAudio,\n\tunmuteAudio,\n} from './actions'\n\nconst currentTimestamp = () => new Date().getTime()\n\nexport interface UserState {\n\t// the timestamp of the last updateVersion action\n\tlastUpdateVersionTimestamp?: number\n\n\tuserDarkMode: boolean | null // the user's choice for dark mode or light mode\n\tmatchesDarkMode: boolean // whether the dark mode media query matches\n\n\tuserExpertMode: boolean\n\n\t// user defined slippage tolerance in bips, used in all txns\n\tuserSlippageTolerance: number\n\n\t// deadline set by user in minutes, used in all txns\n\tuserDeadline: number\n\n\ttokens: {\n\t\t[chainId: number]: {\n\t\t\t[address: string]: SerializedToken\n\t\t}\n\t}\n\n\tpairs: {\n\t\t[chainId: number]: {\n\t\t\t// keyed by token0Address:token1Address\n\t\t\t[key: string]: SerializedPair\n\t\t}\n\t}\n\n\ttimestamp: number\n\n\taudioPlay: boolean\n}\n\nfunction pairKey(token0Address: string, token1Address: string) {\n\treturn `${token0Address};${token1Address}`\n}\n\nexport const initialState: UserState = {\n\tuserDarkMode: null,\n\tmatchesDarkMode: false,\n\tuserExpertMode: false,\n\tuserSlippageTolerance: INITIAL_ALLOWED_SLIPPAGE,\n\tuserDeadline: DEFAULT_DEADLINE_FROM_NOW,\n\ttokens: {},\n\tpairs: {},\n\ttimestamp: currentTimestamp(),\n\taudioPlay: true,\n}\n\nexport default createReducer(initialState, (builder) =>\n\tbuilder\n\t\t.addCase(updateVersion, (state) => {\n\t\t\t// slippage isnt being tracked in local storage, reset to default\n\t\t\t// noinspection SuspiciousTypeOfGuard\n\t\t\tif (typeof state.userSlippageTolerance !== 'number') {\n\t\t\t\tstate.userSlippageTolerance = INITIAL_ALLOWED_SLIPPAGE\n\t\t\t}\n\n\t\t\t// deadline isnt being tracked in local storage, reset to default\n\t\t\t// noinspection SuspiciousTypeOfGuard\n\t\t\tif (typeof state.userDeadline !== 'number') {\n\t\t\t\tstate.userDeadline = DEFAULT_DEADLINE_FROM_NOW\n\t\t\t}\n\n\t\t\tstate.lastUpdateVersionTimestamp = currentTimestamp()\n\t\t})\n\t\t.addCase(updateUserDarkMode, (state, action) => {\n\t\t\tstate.userDarkMode = action.payload.userDarkMode\n\t\t\tstate.timestamp = currentTimestamp()\n\t\t})\n\t\t.addCase(updateMatchesDarkMode, (state, action) => {\n\t\t\tstate.matchesDarkMode = action.payload.matchesDarkMode\n\t\t\tstate.timestamp = currentTimestamp()\n\t\t})\n\t\t.addCase(updateUserExpertMode, (state, action) => {\n\t\t\tstate.userExpertMode = action.payload.userExpertMode\n\t\t\tstate.timestamp = currentTimestamp()\n\t\t})\n\t\t.addCase(updateUserSlippageTolerance, (state, action) => {\n\t\t\tstate.userSlippageTolerance = action.payload.userSlippageTolerance\n\t\t\tstate.timestamp = currentTimestamp()\n\t\t})\n\t\t.addCase(updateUserDeadline, (state, action) => {\n\t\t\tstate.userDeadline = action.payload.userDeadline\n\t\t\tstate.timestamp = currentTimestamp()\n\t\t})\n\t\t.addCase(addSerializedToken, (state, { payload: { serializedToken } }) => {\n\t\t\tstate.tokens[serializedToken.chainId] = state.tokens[serializedToken.chainId] || {}\n\t\t\tstate.tokens[serializedToken.chainId][serializedToken.address] = serializedToken\n\t\t\tstate.timestamp = currentTimestamp()\n\t\t})\n\t\t.addCase(removeSerializedToken, (state, { payload: { address, chainId } }) => {\n\t\t\tstate.tokens[chainId] = state.tokens[chainId] || {}\n\t\t\tdelete state.tokens[chainId][address]\n\t\t\tstate.timestamp = currentTimestamp()\n\t\t})\n\t\t.addCase(addSerializedPair, (state, { payload: { serializedPair } }) => {\n\t\t\tif (\n\t\t\t\tserializedPair.token0.chainId === serializedPair.token1.chainId &&\n\t\t\t\tserializedPair.token0.address !== serializedPair.token1.address\n\t\t\t) {\n\t\t\t\tconst { chainId } = serializedPair.token0\n\t\t\t\tstate.pairs[chainId] = state.pairs[chainId] || {}\n\t\t\t\tstate.pairs[chainId][\n\t\t\t\t\tpairKey(serializedPair.token0.address, serializedPair.token1.address)\n\t\t\t\t] = serializedPair\n\t\t\t}\n\t\t\tstate.timestamp = currentTimestamp()\n\t\t})\n\t\t.addCase(\n\t\t\tremoveSerializedPair,\n\t\t\t(state, { payload: { chainId, tokenAAddress, tokenBAddress } }) => {\n\t\t\t\tif (state.pairs[chainId]) {\n\t\t\t\t\t// just delete both keys if either exists\n\t\t\t\t\tdelete state.pairs[chainId][pairKey(tokenAAddress, tokenBAddress)]\n\t\t\t\t\tdelete state.pairs[chainId][pairKey(tokenBAddress, tokenAAddress)]\n\t\t\t\t}\n\t\t\t\tstate.timestamp = currentTimestamp()\n\t\t\t},\n\t\t)\n\t\t.addCase(muteAudio, (state) => {\n\t\t\tstate.audioPlay = false\n\t\t})\n\t\t.addCase(unmuteAudio, (state) => {\n\t\t\tstate.audioPlay = true\n\t\t}),\n)\n","import { createReducer } from '@reduxjs/toolkit'\nimport {\n\taddTransaction,\n\tcheckedTransaction,\n\tclearAllTransactions,\n\tfinalizeTransaction,\n\tSerializableTransactionReceipt,\n} from './actions'\n\nconst now = () => new Date().getTime()\n\nexport interface TransactionDetails {\n\thash: string\n\tapproval?: { tokenAddress: string; spender: string }\n\tsummary?: string\n\treceipt?: SerializableTransactionReceipt\n\tlastCheckedBlockNumber?: number\n\taddedTime: number\n\tconfirmedTime?: number\n\tfrom: string\n}\n\nexport interface TransactionState {\n\t[chainId: number]: {\n\t\t[txHash: string]: TransactionDetails\n\t}\n}\n\nexport const initialState: TransactionState = {}\n\nexport default createReducer(initialState, (builder) =>\n\tbuilder\n\t\t.addCase(\n\t\t\taddTransaction,\n\t\t\t(transactions, { payload: { chainId, from, hash, approval, summary } }) => {\n\t\t\t\tif (transactions[chainId]?.[hash]) {\n\t\t\t\t\tthrow Error('Attempted to add existing transaction.')\n\t\t\t\t}\n\t\t\t\tconst txs = transactions[chainId] ?? {}\n\t\t\t\ttxs[hash] = { hash, approval, summary, from, addedTime: now() }\n\t\t\t\ttransactions[chainId] = txs\n\t\t\t},\n\t\t)\n\t\t.addCase(clearAllTransactions, (transactions, { payload: { chainId } }) => {\n\t\t\tif (!transactions[chainId]) return\n\t\t\ttransactions[chainId] = {}\n\t\t})\n\t\t.addCase(\n\t\t\tcheckedTransaction,\n\t\t\t(transactions, { payload: { chainId, hash, blockNumber } }) => {\n\t\t\t\tconst tx = transactions[chainId]?.[hash]\n\t\t\t\tif (!tx) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (!tx.lastCheckedBlockNumber) {\n\t\t\t\t\ttx.lastCheckedBlockNumber = blockNumber\n\t\t\t\t} else {\n\t\t\t\t\ttx.lastCheckedBlockNumber = Math.max(blockNumber, tx.lastCheckedBlockNumber)\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\t\t.addCase(finalizeTransaction, (transactions, { payload: { hash, chainId, receipt } }) => {\n\t\t\tconst tx = transactions[chainId]?.[hash]\n\t\t\tif (!tx) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttx.receipt = receipt\n\t\t\ttx.confirmedTime = now()\n\t\t}),\n)\n","import { createReducer } from '@reduxjs/toolkit'\nimport {\n\tField,\n\treplaceSwapState,\n\tselectCurrency,\n\tsetRecipient,\n\tswitchCurrencies,\n\ttypeInput,\n} from './actions'\n\nexport interface SwapState {\n\treadonly independentField: Field\n\treadonly typedValue: string\n\treadonly [Field.INPUT]: {\n\t\treadonly currencyId: string | undefined\n\t}\n\treadonly [Field.OUTPUT]: {\n\t\treadonly currencyId: string | undefined\n\t}\n\t// the typed recipient address or ENS name, or null if swap should go to sender\n\treadonly recipient: string | null\n}\n\nconst initialState: SwapState = {\n\tindependentField: Field.INPUT,\n\ttypedValue: '',\n\t[Field.INPUT]: {\n\t\tcurrencyId: '',\n\t},\n\t[Field.OUTPUT]: {\n\t\tcurrencyId: '',\n\t},\n\trecipient: null,\n}\n\nexport default createReducer(initialState, (builder) =>\n\tbuilder\n\t\t.addCase(\n\t\t\treplaceSwapState,\n\t\t\t(\n\t\t\t\tstate,\n\t\t\t\t{ payload: { typedValue, recipient, field, inputCurrencyId, outputCurrencyId } },\n\t\t\t) => ({\n\t\t\t\t[Field.INPUT]: {\n\t\t\t\t\tcurrencyId: inputCurrencyId,\n\t\t\t\t},\n\t\t\t\t[Field.OUTPUT]: {\n\t\t\t\t\tcurrencyId: outputCurrencyId,\n\t\t\t\t},\n\t\t\t\tindependentField: field,\n\t\t\t\ttypedValue,\n\t\t\t\trecipient,\n\t\t\t}),\n\t\t)\n\t\t.addCase(selectCurrency, (state, { payload: { currencyId, field } }) => {\n\t\t\tconst otherField = field === Field.INPUT ? Field.OUTPUT : Field.INPUT\n\t\t\tif (currencyId === state[otherField].currencyId) {\n\t\t\t\t// the case where we have to swap the order\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tindependentField:\n\t\t\t\t\t\tstate.independentField === Field.INPUT ? Field.OUTPUT : Field.INPUT,\n\t\t\t\t\t[field]: { currencyId },\n\t\t\t\t\t[otherField]: { currencyId: state[field].currencyId },\n\t\t\t\t}\n\t\t\t}\n\t\t\t// the normal case\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[field]: { currencyId },\n\t\t\t}\n\t\t})\n\t\t.addCase(switchCurrencies, (state) => ({\n\t\t\t...state,\n\t\t\tindependentField: state.independentField === Field.INPUT ? Field.OUTPUT : Field.INPUT,\n\t\t\t[Field.INPUT]: { currencyId: state[Field.OUTPUT].currencyId },\n\t\t\t[Field.OUTPUT]: { currencyId: state[Field.INPUT].currencyId },\n\t\t}))\n\t\t.addCase(typeInput, (state, { payload: { field, typedValue } }) => ({\n\t\t\t...state,\n\t\t\tindependentField: field,\n\t\t\ttypedValue,\n\t\t}))\n\t\t.addCase(setRecipient, (state, { payload: { recipient } }) => {\n\t\t\tstate.recipient = recipient\n\t\t}),\n)\n","import { createReducer } from '@reduxjs/toolkit'\nimport { Field, resetMintState, typeInput } from './actions'\n\nexport interface MintState {\n\treadonly independentField: Field\n\treadonly typedValue: string\n\treadonly otherTypedValue: string // for the case when there's no liquidity\n}\n\nconst initialState: MintState = {\n\tindependentField: Field.CURRENCY_A,\n\ttypedValue: '',\n\totherTypedValue: '',\n}\n\nexport default createReducer(initialState, (builder) =>\n\tbuilder\n\t\t.addCase(resetMintState, () => initialState)\n\t\t.addCase(typeInput, (state, { payload: { field, typedValue, noLiquidity } }) => {\n\t\t\tif (noLiquidity) {\n\t\t\t\t// they're typing into the field they've last typed in\n\t\t\t\tif (field === state.independentField) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tindependentField: field,\n\t\t\t\t\t\ttypedValue,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// they're typing into a new field, store the other value\n\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tindependentField: field,\n\t\t\t\t\ttypedValue,\n\t\t\t\t\totherTypedValue: state.typedValue,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tindependentField: field,\n\t\t\t\ttypedValue,\n\t\t\t\totherTypedValue: '',\n\t\t\t}\n\t\t}),\n)\n","import { createReducer } from '@reduxjs/toolkit'\nimport { getVersionUpgrade, VersionUpgrade } from '@uniswap/token-lists'\n// eslint-disable-next-line import/no-unresolved\nimport { TokenList } from '@uniswap/token-lists/dist/types'\nimport { DEFAULT_LIST_OF_LISTS, DEFAULT_TOKEN_LIST_URL } from '../../constants/lists'\nimport { updateVersion } from '../global/actions'\nimport { acceptListUpdate, addList, fetchTokenList, removeList, selectList } from './actions'\nimport DEFAULT_LIST from '../../constants/token/pancakeswap.json'\n\nexport interface ListsState {\n\treadonly byUrl: {\n\t\treadonly [url: string]: {\n\t\t\treadonly current: TokenList | null\n\t\t\treadonly pendingUpdate: TokenList | null\n\t\t\treadonly loadingRequestId: string | null\n\t\t\treadonly error: string | null\n\t\t}\n\t}\n\t// this contains the default list of lists from the last time the updateVersion was called, i.e. the app was reloaded\n\treadonly lastInitializedDefaultListOfLists?: string[]\n\treadonly selectedListUrl: string | undefined\n}\n\nconst NEW_LIST_STATE: ListsState['byUrl'][string] = {\n\terror: null,\n\tcurrent: null,\n\tloadingRequestId: null,\n\tpendingUpdate: null,\n}\n\ntype Mutable = { -readonly [P in keyof T]: T[P] extends ReadonlyArray ? U[] : T[P] }\n\nconst initialState: ListsState = {\n\tlastInitializedDefaultListOfLists: DEFAULT_LIST_OF_LISTS,\n\tbyUrl: {\n\t\t...DEFAULT_LIST_OF_LISTS.reduce>((memo, listUrl) => {\n\t\t\tmemo[listUrl] = NEW_LIST_STATE\n\t\t\treturn memo\n\t\t}, {}),\n\t\t[DEFAULT_TOKEN_LIST_URL]: {\n\t\t\terror: null,\n\t\t\tcurrent: DEFAULT_LIST,\n\t\t\tloadingRequestId: null,\n\t\t\tpendingUpdate: null,\n\t\t},\n\t},\n\tselectedListUrl: DEFAULT_TOKEN_LIST_URL,\n}\n\nexport default createReducer(initialState, (builder) =>\n\tbuilder\n\t\t.addCase(fetchTokenList.pending, (state, { payload: { requestId, url } }) => {\n\t\t\tstate.byUrl[url] = {\n\t\t\t\tcurrent: null,\n\t\t\t\tpendingUpdate: null,\n\t\t\t\t...state.byUrl[url],\n\t\t\t\tloadingRequestId: requestId,\n\t\t\t\terror: null,\n\t\t\t}\n\t\t})\n\t\t.addCase(fetchTokenList.fulfilled, (state, { payload: { requestId, tokenList, url } }) => {\n\t\t\tconst current = state.byUrl[url]?.current\n\t\t\tconst loadingRequestId = state.byUrl[url]?.loadingRequestId\n\n\t\t\t// no-op if update does nothing\n\t\t\tif (current) {\n\t\t\t\tconst upgradeType = getVersionUpgrade(current.version, tokenList.version)\n\t\t\t\tif (upgradeType === VersionUpgrade.NONE) return\n\t\t\t\tif (loadingRequestId === null || loadingRequestId === requestId) {\n\t\t\t\t\tstate.byUrl[url] = {\n\t\t\t\t\t\t...state.byUrl[url],\n\t\t\t\t\t\tloadingRequestId: null,\n\t\t\t\t\t\terror: null,\n\t\t\t\t\t\tcurrent,\n\t\t\t\t\t\tpendingUpdate: tokenList,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstate.byUrl[url] = {\n\t\t\t\t\t...state.byUrl[url],\n\t\t\t\t\tloadingRequestId: null,\n\t\t\t\t\terror: null,\n\t\t\t\t\tcurrent: tokenList,\n\t\t\t\t\tpendingUpdate: null,\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.addCase(\n\t\t\tfetchTokenList.rejected,\n\t\t\t(state, { payload: { url, requestId, errorMessage } }) => {\n\t\t\t\tif (state.byUrl[url]?.loadingRequestId !== requestId) {\n\t\t\t\t\t// no-op since it's not the latest request\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tstate.byUrl[url] = {\n\t\t\t\t\t...state.byUrl[url],\n\t\t\t\t\tloadingRequestId: null,\n\t\t\t\t\terror: errorMessage,\n\t\t\t\t\tcurrent: null,\n\t\t\t\t\tpendingUpdate: null,\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\t\t.addCase(selectList, (state, { payload: url }) => {\n\t\t\tstate.selectedListUrl = url\n\t\t\t// automatically adds list\n\t\t\tif (!state.byUrl[url]) {\n\t\t\t\tstate.byUrl[url] = NEW_LIST_STATE\n\t\t\t}\n\t\t})\n\t\t.addCase(addList, (state, { payload: url }) => {\n\t\t\tif (!state.byUrl[url]) {\n\t\t\t\tstate.byUrl[url] = NEW_LIST_STATE\n\t\t\t}\n\t\t})\n\t\t.addCase(removeList, (state, { payload: url }) => {\n\t\t\tif (state.byUrl[url]) {\n\t\t\t\tdelete state.byUrl[url]\n\t\t\t}\n\t\t\tif (state.selectedListUrl === url) {\n\t\t\t\tstate.selectedListUrl = Object.keys(state.byUrl)[0]\n\t\t\t}\n\t\t})\n\t\t.addCase(acceptListUpdate, (state, { payload: url }) => {\n\t\t\tif (!state.byUrl[url]?.pendingUpdate) {\n\t\t\t\tthrow new Error('accept list update called without pending update')\n\t\t\t}\n\t\t\tstate.byUrl[url] = {\n\t\t\t\t...state.byUrl[url],\n\t\t\t\tpendingUpdate: null,\n\t\t\t\tcurrent: state.byUrl[url].pendingUpdate,\n\t\t\t}\n\t\t})\n\t\t.addCase(updateVersion, (state) => {\n\t\t\t// state loaded from localStorage, but new lists have never been initialized\n\t\t\tif (!state.lastInitializedDefaultListOfLists) {\n\t\t\t\tstate.byUrl = initialState.byUrl\n\t\t\t\tstate.selectedListUrl = undefined\n\t\t\t} else if (state.lastInitializedDefaultListOfLists) {\n\t\t\t\tconst lastInitializedSet = state.lastInitializedDefaultListOfLists.reduce<\n\t\t\t\t\tSet\n\t\t\t\t>((s, l) => s.add(l), new Set())\n\t\t\t\tconst newListOfListsSet = DEFAULT_LIST_OF_LISTS.reduce>(\n\t\t\t\t\t(s, l) => s.add(l),\n\t\t\t\t\tnew Set(),\n\t\t\t\t)\n\n\t\t\t\tDEFAULT_LIST_OF_LISTS.forEach((listUrl) => {\n\t\t\t\t\tif (!lastInitializedSet.has(listUrl)) {\n\t\t\t\t\t\tstate.byUrl[listUrl] = NEW_LIST_STATE\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tstate.lastInitializedDefaultListOfLists.forEach((listUrl) => {\n\t\t\t\t\tif (!newListOfListsSet.has(listUrl)) {\n\t\t\t\t\t\tdelete state.byUrl[listUrl]\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tstate.lastInitializedDefaultListOfLists = DEFAULT_LIST_OF_LISTS\n\t\t}),\n)\n","import { createReducer } from '@reduxjs/toolkit'\nimport { Field, typeInput } from './actions'\n\nexport interface BurnState {\n\treadonly independentField: Field\n\treadonly typedValue: string\n}\n\nconst initialState: BurnState = {\n\tindependentField: Field.LIQUIDITY_PERCENT,\n\ttypedValue: '0',\n}\n\nexport default createReducer(initialState, (builder) =>\n\tbuilder.addCase(typeInput, (state, { payload: { field, typedValue } }) => ({\n\t\t...state,\n\t\tindependentField: field,\n\t\ttypedValue,\n\t})),\n)\n","import { createReducer } from '@reduxjs/toolkit'\nimport {\n\taddMulticallListeners,\n\terrorFetchingMulticallResults,\n\tfetchingMulticallResults,\n\tremoveMulticallListeners,\n\ttoCallKey,\n\tupdateMulticallResults,\n} from './actions'\n\nexport interface MulticallState {\n\tcallListeners?: {\n\t\t// on a per-chain basis\n\t\t[chainId: number]: {\n\t\t\t// stores for each call key the listeners' preferences\n\t\t\t[callKey: string]: {\n\t\t\t\t// stores how many listeners there are per each blocks per fetch preference\n\t\t\t\t[blocksPerFetch: number]: number\n\t\t\t}\n\t\t}\n\t}\n\n\tcallResults: {\n\t\t[chainId: number]: {\n\t\t\t[callKey: string]: {\n\t\t\t\tdata?: string | null\n\t\t\t\tblockNumber?: number\n\t\t\t\tfetchingBlockNumber?: number\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst initialState: MulticallState = {\n\tcallResults: {},\n}\n\nexport default createReducer(initialState, (builder) =>\n\tbuilder\n\t\t.addCase(\n\t\t\taddMulticallListeners,\n\t\t\t(state, { payload: { calls, chainId, options: { blocksPerFetch = 1 } = {} } }) => {\n\t\t\t\tconst listeners: MulticallState['callListeners'] = state.callListeners\n\t\t\t\t\t? state.callListeners\n\t\t\t\t\t: (state.callListeners = {})\n\t\t\t\tlisteners[chainId] = listeners[chainId] ?? {}\n\t\t\t\tcalls.forEach((call) => {\n\t\t\t\t\tconst callKey = toCallKey(call)\n\t\t\t\t\tlisteners[chainId][callKey] = listeners[chainId][callKey] ?? {}\n\t\t\t\t\tlisteners[chainId][callKey][blocksPerFetch] =\n\t\t\t\t\t\t(listeners[chainId][callKey][blocksPerFetch] ?? 0) + 1\n\t\t\t\t})\n\t\t\t},\n\t\t)\n\t\t.addCase(\n\t\t\tremoveMulticallListeners,\n\t\t\t(state, { payload: { chainId, calls, options: { blocksPerFetch = 1 } = {} } }) => {\n\t\t\t\tconst listeners: MulticallState['callListeners'] = state.callListeners\n\t\t\t\t\t? state.callListeners\n\t\t\t\t\t: (state.callListeners = {})\n\n\t\t\t\tif (!listeners[chainId]) return\n\t\t\t\tcalls.forEach((call) => {\n\t\t\t\t\tconst callKey = toCallKey(call)\n\t\t\t\t\tif (!listeners[chainId][callKey]) return\n\t\t\t\t\tif (!listeners[chainId][callKey][blocksPerFetch]) return\n\n\t\t\t\t\tif (listeners[chainId][callKey][blocksPerFetch] === 1) {\n\t\t\t\t\t\tdelete listeners[chainId][callKey][blocksPerFetch]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlisteners[chainId][callKey][blocksPerFetch]--\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t)\n\t\t.addCase(\n\t\t\tfetchingMulticallResults,\n\t\t\t(state, { payload: { chainId, fetchingBlockNumber, calls } }) => {\n\t\t\t\tstate.callResults[chainId] = state.callResults[chainId] ?? {}\n\t\t\t\tcalls.forEach((call) => {\n\t\t\t\t\tconst callKey = toCallKey(call)\n\t\t\t\t\tconst current = state.callResults[chainId][callKey]\n\t\t\t\t\tif (!current) {\n\t\t\t\t\t\tstate.callResults[chainId][callKey] = {\n\t\t\t\t\t\t\tfetchingBlockNumber,\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ((current.fetchingBlockNumber ?? 0) >= fetchingBlockNumber) return\n\t\t\t\t\t\tstate.callResults[chainId][\n\t\t\t\t\t\t\tcallKey\n\t\t\t\t\t\t].fetchingBlockNumber = fetchingBlockNumber\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t)\n\t\t.addCase(\n\t\t\terrorFetchingMulticallResults,\n\t\t\t(state, { payload: { fetchingBlockNumber, chainId, calls } }) => {\n\t\t\t\tstate.callResults[chainId] = state.callResults[chainId] ?? {}\n\t\t\t\tcalls.forEach((call) => {\n\t\t\t\t\tconst callKey = toCallKey(call)\n\t\t\t\t\tconst current = state.callResults[chainId][callKey]\n\t\t\t\t\tif (!current) return // only should be dispatched if we are already fetching\n\t\t\t\t\tif (current.fetchingBlockNumber === fetchingBlockNumber) {\n\t\t\t\t\t\tdelete current.fetchingBlockNumber\n\t\t\t\t\t\tcurrent.data = null\n\t\t\t\t\t\tcurrent.blockNumber = fetchingBlockNumber\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t)\n\t\t.addCase(\n\t\t\tupdateMulticallResults,\n\t\t\t(state, { payload: { chainId, results, blockNumber } }) => {\n\t\t\t\tstate.callResults[chainId] = state.callResults[chainId] ?? {}\n\t\t\t\tObject.keys(results).forEach((callKey) => {\n\t\t\t\t\tconst current = state.callResults[chainId][callKey]\n\t\t\t\t\tif ((current?.blockNumber ?? 0) > blockNumber) return\n\t\t\t\t\tstate.callResults[chainId][callKey] = {\n\t\t\t\t\t\tdata: results[callKey],\n\t\t\t\t\t\tblockNumber,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t),\n)\n","import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit'\nimport { save, load } from 'redux-localstorage-simple'\n\nimport application from './application/reducer'\nimport { updateVersion } from './global/actions'\nimport user from './user/reducer'\nimport transactions from './transactions/reducer'\nimport swap from './swap/reducer'\nimport mint from './mint/reducer'\nimport lists from './lists/reducer'\nimport burn from './burn/reducer'\nimport multicall from './multicall/reducer'\nimport toasts from './toasts'\nimport { getThemeCache } from '../utils/theme'\n\ntype MergedState = {\n\tuser: {\n\t\t[key: string]: any\n\t}\n\ttransactions: {\n\t\t[key: string]: any\n\t}\n}\nconst PERSISTED_KEYS: string[] = ['user', 'transactions']\nconst loadedState = load({ states: PERSISTED_KEYS }) as MergedState\nif (loadedState.user) {\n\tloadedState.user.userDarkMode = getThemeCache()\n}\n\nconst store = configureStore({\n\treducer: {\n\t\tapplication,\n\t\tuser,\n\t\ttransactions,\n\t\tswap,\n\t\tmint,\n\t\tburn,\n\t\tmulticall,\n\t\tlists,\n\t\ttoasts,\n\t},\n\tmiddleware: [\n\t\t...getDefaultMiddleware({ thunk: false }),\n\t\tsave({ states: PERSISTED_KEYS }),\n\t] as any,\n\tpreloadedState: loadedState,\n})\n\nstore.dispatch(updateVersion())\n\nexport default store\n\nexport type AppState = ReturnType\nexport type AppDispatch = typeof store.dispatch\n","import { Web3Provider } from '@ethersproject/providers'\n\nexport default function getLibrary(provider: any): Web3Provider {\n\tconst library = new Web3Provider(provider)\n\tlibrary.pollingInterval = 15000\n\treturn library\n}\n","import React from 'react'\nimport { createWeb3ReactRoot, Web3ReactProvider } from '@web3-react/core'\nimport { Provider } from 'react-redux'\nimport { ModalProvider } from './uikit-foodcourt'\nimport { NetworkContextName } from './constants'\nimport store from './state'\nimport getLibrary from './utils/getLibrary'\nimport { ThemeContextProvider } from './ThemeContext'\n\nconst Web3ProviderNetwork = createWeb3ReactRoot(NetworkContextName)\n\nconst Providers: React.FC = ({ children }) => (\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{children}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n)\n\nexport default Providers\n","import i18next from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport XHR from 'i18next-xhr-backend'\nimport LanguageDetector from 'i18next-browser-languagedetector'\n\ni18next\n\t.use(XHR)\n\t.use(LanguageDetector)\n\t.use(initReactI18next)\n\t.init({\n\t\tbackend: {\n\t\t\tloadPath: `./locales/{{lng}}.json`,\n\t\t},\n\t\treact: {\n\t\t\tuseSuspense: true,\n\t\t},\n\t\tfallbackLng: 'en',\n\t\tpreload: ['en'],\n\t\tkeySeparator: false,\n\t\tinterpolation: { escapeValue: false },\n\t})\n\nexport default i18next\n","import React, { StrictMode } from 'react'\nimport ReactDOM from 'react-dom'\nimport { ResetCSS } from './uikit-foodcourt'\nimport GlobalStyle from './style/Global'\nimport App from './pages/App'\nimport ApplicationUpdater from './state/application/updater'\nimport ListsUpdater from './state/lists/updater'\nimport MulticallUpdater from './state/multicall/updater'\nimport TransactionUpdater from './state/transactions/updater'\nimport ToastListener from './components/ToastListener'\nimport Providers from './Providers'\nimport 'inter-ui'\nimport './style/fontawesome-pro-5.15.3/css/all.min.css'\nimport './style/main.css'\nimport './i18n'\n\nif ('ethereum' in window) {\n\t;(window.ethereum as any).autoRefreshOnNetworkChange = false\n}\n\nwindow.addEventListener('error', () => {\n\tlocalStorage?.removeItem('redux_localstorage_simple_lists')\n})\n;(window as any).$$data = {\n\tROUTER_ADDRESS: process.env.REACT_APP_ROUTER_ADDRESS,\n\tREACT_APP_FACTORY_ADDRESS: process.env.REACT_APP_REACT_APP_FACTORY_ADDRESS,\n\tREACT_APP_INIT_CODE_HASH: process.env.REACT_APP_REACT_APP_INIT_CODE_HASH,\n}\n\nReactDOM.render(\n\t\n\t\t\n\t\t\t<>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t,\n\tdocument.getElementById('root'),\n)\n","import styled from 'styled-components'\nimport { flexbox } from 'styled-system'\nimport Box from './Box'\nimport { FlexProps } from './types'\n\nconst Flex = styled(Box)`\n\tdisplay: flex;\n\t${flexbox}\n`\n\nexport default Flex\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\t\n\t\n)\n\nexport default Icon\n","import React from 'react'\nimport Svg from '../Svg'\nimport { SvgProps } from '../types'\n\nconst Icon: React.FC = (props) => (\n\t\n\t\t\n\t\n)\n\nexport default Icon\n","import styled, { DefaultTheme } from 'styled-components'\nimport { space, typography, layout } from 'styled-system'\nimport getThemeValue from '../../util/getThemeValue'\nimport { TextProps } from './types'\n\ninterface ThemedProps extends TextProps {\n\ttheme: DefaultTheme\n}\n\nconst getColor = ({ color, theme }: ThemedProps) => getThemeValue(`colors.${color}`, color)(theme)\n\nconst getFontSize = ({ fontSize, small }: TextProps) => (small ? '14px' : fontSize || '16px')\n\nconst Text = styled.div`\n\tcolor: ${getColor};\n\tfont-size: ${getFontSize};\n\tfont-weight: ${({ bold }) => (bold ? 600 : 400)};\n\tline-height: 1.5;\n\t${({ textTransform }) => textTransform && `text-transform: ${textTransform};`}\n\t${space}\n ${typography}\n ${layout}\n`\n\nText.defaultProps = {\n\tcolor: 'text',\n\tsmall: false,\n}\n\nexport default Text\n","import { MediaQueries, Breakpoints, Spacing } from './types'\n\nexport const breakpointMap: { [key: string]: number } = {\n\txs: 370,\n\tsm: 576,\n\tmd: 852,\n\tlg: 968,\n\txl: 1080,\n}\n\nconst breakpoints: Breakpoints = Object.values(breakpointMap).map((breakpoint) => `${breakpoint}px`)\n\nconst mediaQueries: MediaQueries = {\n\txs: `@media screen and (min-width: ${breakpointMap.xs}px)`,\n\tsm: `@media screen and (min-width: ${breakpointMap.sm}px)`,\n\tmd: `@media screen and (min-width: ${breakpointMap.md}px)`,\n\tlg: `@media screen and (min-width: ${breakpointMap.lg}px)`,\n\txl: `@media screen and (min-width: ${breakpointMap.xl}px)`,\n\tnav: `@media screen and (min-width: ${breakpointMap.lg}px)`,\n}\n\nexport const shadows = {\n\tlevel1: '0px 2px 12px -8px rgba(25, 19, 38, 0.1), 0px 1px 1px rgba(25, 19, 38, 0.05)',\n\tactive: '0px 0px 0px 1px #0098A1, 0px 0px 4px 8px rgba(31, 199, 212, 0.4)',\n\tsuccess: '0px 0px 0px 1px #31D0AA, 0px 0px 0px 4px rgba(49, 208, 170, 0.2)',\n\twarning: '0px 0px 0px 1px #ED4B9E, 0px 0px 0px 4px rgba(237, 75, 158, 0.2)',\n\tfocus: '0px 0px 0px 1px #7645D9, 0px 0px 0px 4px rgba(118, 69, 217, 0.6)',\n\tinset: 'inset 0px 2px 2px -1px rgba(74, 74, 104, 0.1)',\n}\n\nconst spacing: Spacing = [0, 4, 8, 16, 24, 32, 48, 64]\n\nconst radii = {\n\tsmall: '4px',\n\tdefault: '16px',\n\tcard: '32px',\n\tcircle: '50%',\n}\n\nconst zIndices = {\n\tdropdown: 10,\n\tmodal: 100,\n}\n\nexport default {\n\tsiteWidth: 1200,\n\tbreakpoints,\n\tmediaQueries,\n\tspacing,\n\tshadows,\n\tradii,\n\tzIndices,\n}\n","// Components\nexport * from './components/Alert'\nexport * from './components/BalanceInput'\nexport * from './components/Box'\nexport * from './components/Breadcrumbs'\nexport * from './components/Button'\nexport * from './components/ButtonMenu'\nexport * from './components/Card'\nexport * from './components/Checkbox'\nexport * from './components/Dropdown'\nexport * from './components/FallingBunnies'\nexport * from './components/Heading'\nexport * from './components/Image'\nexport * from './components/Input'\nexport * from './components/Layouts'\nexport * from './components/Link'\nexport * from './components/NotificationDot'\nexport * from './components/PancakeToggle'\nexport * from './components/Progress'\nexport * from './components/Radio'\nexport * from './components/Slider'\nexport * from './components/Skeleton'\nexport * from './components/Spinner'\nexport * from './components/Stepper'\nexport * from './components/Svg'\nexport * from './components/Table'\nexport * from './components/TabMenu'\nexport * from './components/Tag'\nexport * from './components/Text'\nexport * from './components/Toggle'\n\n// Hooks\nexport * from './hooks'\n\n// Widgets\nexport * from './widgets/Modal'\nexport * from './widgets/Menu'\nexport * from './widgets/Toast'\nexport * from './widgets/WalletModal'\n\n// Theme\nexport { default as ResetCSS } from './ResetCSS'\nexport * from './theme'\n","import { scales, variants } from './types'\n\nexport const scaleVariants = {\n\t[scales.MD]: {\n\t\theight: '48px',\n\t\tpadding: '0 24px',\n\t},\n\t[scales.SM]: {\n\t\theight: '32px',\n\t\tpadding: '0 16px',\n\t},\n\t[scales.XS]: {\n\t\theight: '20px',\n\t\tfontSize: '12px',\n\t\tpadding: '0 8px',\n\t},\n}\n\nexport const styleVariants = {\n\t[variants.PRIMARY]: {\n\t\tbackgroundColor: 'primary',\n\t\tcolor: 'white',\n\t},\n\t[variants.SECONDARY]: {\n\t\tbackgroundColor: 'transparent',\n\t\tborder: '2px solid',\n\t\tborderColor: 'primary',\n\t\tboxShadow: 'none',\n\t\tcolor: 'primary',\n\t\t':disabled': {\n\t\t\tbackgroundColor: 'transparent',\n\t\t},\n\t},\n\t[variants.TERTIARY]: {\n\t\tbackgroundColor: 'tertiary',\n\t\tboxShadow: 'none',\n\t\tcolor: 'primary',\n\t},\n\t[variants.SUBTLE]: {\n\t\tbackgroundColor: 'textSubtle',\n\t\tcolor: 'white',\n\t},\n\t[variants.DANGER]: {\n\t\tbackgroundColor: 'failure',\n\t\tcolor: 'white',\n\t},\n\t[variants.SUCCESS]: {\n\t\tbackgroundColor: 'success',\n\t\tcolor: 'white',\n\t},\n\t[variants.TEXT]: {\n\t\tbackgroundColor: 'transparent',\n\t\tcolor: 'primary',\n\t\tboxShadow: 'none',\n\t},\n}\n","import styled, { DefaultTheme } from 'styled-components'\nimport { space, layout, variant } from 'styled-system'\nimport { scaleVariants, styleVariants } from './theme'\nimport { BaseButtonProps } from './types'\n\ninterface ThemedButtonProps extends BaseButtonProps {\n\ttheme: DefaultTheme\n}\n\ninterface TransientButtonProps extends ThemedButtonProps {\n\t$isLoading?: boolean\n}\n\nconst getDisabledStyles = ({ $isLoading, theme }: TransientButtonProps) => {\n\tif ($isLoading === true) {\n\t\treturn `\n &:disabled,\n &.pancake-button--disabled {\n cursor: not-allowed;\n }\n `\n\t}\n\n\treturn `\n &:disabled,\n &.pancake-button--disabled {\n background-color: ${theme.colors.backgroundDisabled};\n border-color: ${theme.colors.backgroundDisabled};\n box-shadow: none;\n color: ${theme.colors.textDisabled};\n cursor: not-allowed;\n }\n `\n}\n\n/**\n * This is to get around an issue where if you use a Link component\n * React will throw a invalid DOM attribute error\n * @see https://github.com/styled-components/styled-components/issues/135\n */\n\nconst getOpacity = ({ $isLoading = false }: TransientButtonProps) => ($isLoading ? '.5' : '1')\n\nconst StyledButton = styled.button`\n\talign-items: center;\n\tborder: 0;\n\tborder-radius: 16px;\n\tbox-shadow: 0px -1px 0px 0px rgba(14, 14, 44, 0.4) inset;\n\tcursor: pointer;\n\tdisplay: inline-flex;\n\tfont-family: inherit;\n\tfont-size: 16px;\n\tfont-weight: 600;\n\tjustify-content: center;\n\tletter-spacing: 0.03em;\n\tline-height: 1;\n\topacity: ${getOpacity};\n\toutline: 0;\n\ttransition: background-color 0.2s, opacity 0.2s;\n\n\t&:hover:not(:disabled):not(.pancake-button--disabled):not(.pancake-button--disabled):not(:active) {\n\t\topacity: 0.65;\n\t}\n\n\t&:active:not(:disabled):not(.pancake-button--disabled):not(.pancake-button--disabled) {\n\t\topacity: 0.85;\n\t\ttransform: translateY(1px);\n\t\tbox-shadow: none;\n\t}\n\n\t${getDisabledStyles}\n\t${variant({\n\t\tprop: 'scale',\n\t\tvariants: scaleVariants,\n\t})}\n ${variant({\n\t\tvariants: styleVariants,\n\t})}\n ${layout}\n ${space}\n`\n\nexport default StyledButton\n","import React, { cloneElement, ElementType, isValidElement } from 'react'\nimport getExternalLinkProps from '../../util/getExternalLinkProps'\nimport StyledButton from './StyledButton'\nimport { ButtonProps, scales, variants } from './types'\n\nconst Button = (props: ButtonProps): JSX.Element => {\n\tconst { startIcon, endIcon, external, className, isLoading, disabled, children, ...rest } = props\n\tconst internalProps = external ? getExternalLinkProps() : {}\n\tconst isDisabled = isLoading || disabled\n\tconst classNames = className ? [className] : []\n\n\tif (isLoading) {\n\t\tclassNames.push('pancake-button--loading')\n\t}\n\n\tif (isDisabled && !isLoading) {\n\t\tclassNames.push('pancake-button--disabled')\n\t}\n\n\treturn (\n\t\t\n\t\t\t<>\n\t\t\t\t{isValidElement(startIcon) &&\n\t\t\t\t\tcloneElement(startIcon, {\n\t\t\t\t\t\tmr: '0.5rem',\n\t\t\t\t\t})}\n\t\t\t\t{children}\n\t\t\t\t{isValidElement(endIcon) &&\n\t\t\t\t\tcloneElement(endIcon, {\n\t\t\t\t\t\tml: '0.5rem',\n\t\t\t\t\t})}\n\t\t\t\n\t\t\n\t)\n}\n\nButton.defaultProps = {\n\tisLoading: false,\n\texternal: false,\n\tvariant: variants.PRIMARY,\n\tscale: scales.MD,\n\tdisabled: false,\n}\n\nexport default Button\n","import React from 'react'\nimport styled from 'styled-components'\nimport Flex from '../../components/Box/Flex'\nimport { Box } from '../../components/Box'\nimport { ArrowBackIcon, CloseIcon } from '../../components/Svg'\nimport { IconButton } from '../../components/Button'\nimport { ModalProps } from './types'\n\nexport const ModalHeader = styled.div<{ background?: string }>`\n\talign-items: center;\n\tbackground: ${({ background }) => background || 'transparent'};\n\tborder-bottom: 1px solid ${({ theme }) => theme.colors.borderColor};\n\tdisplay: flex;\n\tpadding: 12px 24px;\n`\n\nexport const ModalTitle = styled(Flex)`\n\talign-items: center;\n\tflex: 1;\n`\n\nexport const ModalBody = styled(Flex)`\n\tflex-direction: column;\n`\n\nexport const ModalCloseButton: React.FC<{ onDismiss: ModalProps['onDismiss'] }> = ({\n\tonDismiss,\n}) => (\n\t\n\t\t\n\t\n)\n\nexport const ModalBackButton: React.FC<{ onBack: ModalProps['onBack'] }> = ({ onBack }) => (\n\t\n\t\t\n\t\n)\n\nexport const ModalContainer = styled(Box)<{ minWidth: string }>`\n\toverflow: hidden;\n\tbackground: ${({ theme }) => theme.modal.background};\n\tbox-shadow: 0px 20px 36px -8px rgba(14, 14, 44, 0.1), 0px 1px 1px rgba(0, 0, 0, 0.05);\n\tborder: 1px solid ${({ theme }) => theme.colors.borderColor};\n\tborder-radius: 8px;\n\twidth: 100%;\n\tz-index: ${({ theme }) => theme.zIndices.modal};\n\n\t${({ theme }) => theme.mediaQueries.xs} {\n\t\twidth: auto;\n\t\tmin-width: ${({ minWidth }) => minWidth};\n\t\tmax-width: 100%;\n\t}\n`\n","import React from 'react'\nimport Heading from '../../components/Heading/Heading'\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalTitle,\n\tModalContainer,\n\tModalCloseButton,\n\tModalBackButton,\n} from './styles'\nimport { ModalProps } from './types'\n\nconst Modal: React.FC = ({\n\ttitle,\n\tonDismiss,\n\tonBack,\n\tchildren,\n\thideCloseButton = false,\n\tbodyPadding = '24px',\n\theaderBackground = 'transparent',\n\tminWidth = '320px',\n\t...props\n}) => (\n\t\n\t\t\n\t\t\t\n\t\t\t\t{onBack && }\n\t\t\t\t
{title}
\n\t\t\t
\n\t\t\t{!hideCloseButton && (\n\t\t\t\t onDismiss()}\n\t\t\t\t\tclassName=\"_dp-f _alit-ct _jtfct-ct _bdrd-max _bgcl-gray-100 _w-32px _h-32px _cs-pt _bgcl-gray-200-hover\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t\t{children}\n\t\n)\n\nexport default Modal\n","import React, { createContext, useState } from 'react'\nimport styled from 'styled-components'\nimport Overlay from '../../components/Overlay/Overlay'\nimport { Handler } from './types'\n\ninterface ModalsContext {\n\tonPresent: (node: React.ReactNode, key?: string) => void\n\tonDismiss: Handler\n\tsetCloseOnOverlayClick: React.Dispatch>\n}\n\nconst ModalWrapper = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\talign-items: center;\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: ${({ theme }) => theme.zIndices.modal - 1};\n`\n\nexport const Context = createContext({\n\tonPresent: () => null,\n\tonDismiss: () => null,\n\tsetCloseOnOverlayClick: () => true,\n})\n\nconst ModalProvider: React.FC = ({ children }) => {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [modalNode, setModalNode] = useState()\n\tconst [closeOnOverlayClick, setCloseOnOverlayClick] = useState(true)\n\n\tconst handlePresent = (node: React.ReactNode) => {\n\t\tsetModalNode(node)\n\t\tsetIsOpen(true)\n\t}\n\n\tconst handleDismiss = () => {\n\t\tsetModalNode(undefined)\n\t\tsetIsOpen(false)\n\t}\n\n\tconst handleOverlayDismiss = () => {\n\t\tif (closeOnOverlayClick) {\n\t\t\thandleDismiss()\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t\t\t{isOpen && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{React.isValidElement(modalNode) &&\n\t\t\t\t\t\tReact.cloneElement(modalNode, {\n\t\t\t\t\t\t\tonDismiss: handleDismiss,\n\t\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t)}\n\t\t\t{children}\n\t\t\n\t)\n}\n\nexport default ModalProvider\n","import { useCallback, useContext, useEffect } from 'react'\nimport { Context } from './ModalContext'\nimport { Handler } from './types'\n\nconst useModal = (modal: React.ReactNode, closeOnOverlayClick = true): [Handler, Handler] => {\n\tconst { onPresent, onDismiss, setCloseOnOverlayClick } = useContext(Context)\n\tconst onPresentCallback = useCallback(() => {\n\t\tonPresent(modal)\n\t}, [modal, onPresent])\n\n\tuseEffect(() => {\n\t\tsetCloseOnOverlayClick(closeOnOverlayClick)\n\t}, [closeOnOverlayClick, setCloseOnOverlayClick])\n\n\treturn [onPresentCallback, onDismiss]\n}\n\nexport default useModal\n","import styled from 'styled-components'\nimport { background, border, layout, position, space } from 'styled-system'\nimport { BoxProps } from './types'\n\nconst Box = styled.div`\n\t${background}\n\t${border}\n ${layout}\n ${position}\n ${space}\n`\n\nexport default Box\n"],"sourceRoot":""}