@orderly.network/trading 2.0.0 → 2.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pages/trading.ui.tsx","../src/pages/trading.widget.tsx","../src/pages/trading.page.tsx","../src/index.ts","../src/components/dataList/dataList.ui.tsx","../src/components/dataList/dataList.script.tsx","../src/components/dataList/positionHeader/positionHeader.ui.tsx","../src/components/dataList/positionHeader/positionHeader.script.tsx","../src/components/dataList/positionHeader/positionHeader.widget.tsx","../src/components/dataList/setting/setting.ui.tsx","../src/components/dataList/setting/setting.script.tsx","../src/components/dataList/setting/setting.widget.tsx","../src/components/dataList/dataList.widget.tsx","../src/components/lastTrades/lastTrades.ui.tsx","../src/components/lastTrades/lastTrades.script.tsx","../src/components/lastTrades/lastTrades.widget.tsx","../src/components/assetView/assetView.ui.tsx","../src/components/assetView/assetView.script.tsx","../src/components/assetView/assetView.widget.tsx","../src/components/orderBook/orderBook.ui.tsx","../src/components/orderBook/desktop/index.desktop.tsx","../src/components/orderBook/desktop/listBox.desktop.tsx","../src/components/orderBook/desktop/cell.desktop.tsx","../src/components/orderBook/orderContext.tsx","../src/components/orderBook/cellBar.tsx","../src/components/orderBook/desktop/bids.desktop.tsx","../src/components/orderBook/desktop/asks.desktop.tsx","../src/components/orderBook/desktop/markPrice.desktop.tsx","../src/components/orderBook/desktop/header.desktop.tsx","../src/components/orderBook/desktop/depthSelect.desktop.tsx","../src/components/orderBook/mWeb/header.tsx","../src/components/orderBook/mWeb/cell.tsx","../src/components/orderBook/mWeb/listBox.tsx","../src/components/orderBook/mWeb/bids.tsx","../src/components/orderBook/mWeb/asks.tsx","../src/components/orderBook/mWeb/markPrice.tsx","../src/components/orderBook/mWeb/depthSelect.tsx","../src/components/orderBook/mWeb/index.tsx","../src/components/orderBook/fundingRate/fundingRate.ui.tsx","../src/components/orderBook/fundingRate/fundingRate.script.tsx","../src/components/orderBook/fundingRate/fundingRate.widget.tsx","../src/components/orderBook/orderBook.script.tsx","../src/utils/utils.ts","../src/components/orderBook/orderBook.widget.tsx","../src/components/riskRate/riskRate.ui.tsx","../src/components/riskRate/riskRate.script.tsx","../src/components/riskRate/riskRate.widget.tsx","../src/components/orderBookAndTrades/orderBookAndTrades.ui.tsx","../src/components/orderBookAndTrades/orderBookAndTrades.script.tsx","../src/components/orderBookAndTrades/orderBookAndTrades.widget.tsx","../src/pages/tradingV2.ui.tsx","../src/provider/context.tsx","../src/pages/tradingV2.script.tsx","../src/pages/tradingV2.widget.tsx","../src/pages/tradingV2.page.tsx"],"names":["Layout","TradingPage","TradingPageProvider","jsx","Header","Content","MobileTradingPage","DesktopTradingPage","Trading","props","useAppContext","TradingWidget","wrongNetwork","Divider","Flex","TabPanel","Tabs","useLocalStorage","useDataListScript","current","config","unPnlPriceBasis","setUnPnlPriceBasic","pnlNotionalDecimalPrecision","setPnlNotionalDecimalPrecision","showAllSymbol","setShowAllSymbol","PositionsWidget","OrderListWidget","TabType","OrderStatus","Statistic","Text","Decimal","jsxs","PositionHeader","usePositionStream","useDataTap","usePositionHeaderScript","symbol","calcMode","data","aggregated","unrealPnL","unrealPnlROI","notional","PositionHeaderWidget","state","useState","Button","Checkbox","DropdownMenuContent","DropdownMenuRoot","DropdownMenuTrigger","SettingFillIcon","Setting","open","setOpen","checked","DecimalPrecisionCheckbox","e","UnPnlPriceBasisCheckBox","value","onValueChange","RadioButton","sel","label","onCheckChange","SelIcon","UnselIcon","useSettingScript","SettingWidget","DataList","PositionsView","DataListWidget","Box","cn","ScrollArea","OrderSide","commifyOptional","LastTrades","List","Row","key","left","mid","right","classNames","item","index","useMarketTradeStream","useSymbolsInfo","useLastTradesScript","isLoading","base","quote","baseDp","quoteDp","LastTradesWidget","useMemo","ArrowDownShortIcon","EyeIcon","EyeCloseIcon","ChevronDownIcon","Tooltip","gradientTextVariants","AuthGuard","AccountStatusEnum","Collapsible","CollapsibleContent","useAccount","Fragment","useCurrentStatusText","TotalValue","totalValue","visible","onToggleVisibility","AssetValueList","freeCollateral","marginRatioVal","renderMMR","isConnected","optionsOpen","setOptionsOpen","prevOpen","AssetView","networkId","isFirstTimeDeposit","onDeposit","onWithdraw","toggleVisible","currentStatus","title","description","titleColor","useAccountInstance","useEventEmitter","useMediaQuery","useSettleSubscription","useWalletSubscription","useConfig","usePrivateQuery","useCollateral","useMarginRatio","MEDIA_TABLET","modal","toast","capitalizeString","useCallback","DepositAndWithdrawWithSheetId","DepositAndWithdrawWithDialogId","useFirstTimeDeposit","unavailable","getKeyMemo","now","ninetyDaysAgo","startTime","endTime","searchParams","depositHistoryData","useAssetViewScript","account","matches","marginRatio","mmr","openDepositAndWithdraw","viewName","result","ee","onSettle","res","setVisible","side","transStatus","msg","status","AssetViewWidget","useEffect","useRef","getPrecisionByNumber","createContext","useContext","OrderBookContext","useOrderBookContext","OrderBookProvider","mode","setMode","totalMode","setTotalMode","parseNumber","CellBar","direction","transform","x","DesktopOrderBookCell","cellHeight","showTotal","onItemClick","depth","pendingOrders","symbolInfo","currentHover","base_dp","quote_dp","width","dp","totalAmount","isPendingOrder","priceStr","TooltipContent","TooltipTrigger","TooltipRoot","TooltipArrow","DesktopListBox","type","findMaxItem","priceDp","maxQty","a","b","hoverIndex","setHoverIndex","Tip","isHover","calcHintInfo","totalInfo","hintInfo","content","contentDp","DesktopBids","countQty","max","DesktopAsks","len","ArrowUpShortIcon","DesktopMarkPrice","markPrice","lastPrice","asks","bids","MiddlePriceView","MarkPriceView","Spread","className","iconSize","prevLastPrice","middlePrice","FlagIcon","spread","bid1","ask1","dValue","DesktopHeader","Title","name","token","justifyEnd","Select","DesktopDepthSelect","options","d","Spinner","DesktopOrderBook","onDepthChange","divRef","setShowTotal","rangeInfo","resizeObserver","entries","entry","count","targetDiv","onModeChange","currency","qtyLabel","OrderBookCell","qty","ListBox","Bids","Asks","MarkPrice","onMarkPrice","Picker","DepthSelect","FundingRate","predFundingRate","countDown","useFundingRate","useFundingRateScript","FundingRateWidget","OrderBook","useOrderbookStream","useOrderStream","removeTrailingZeros","getBasicSymbolInfo","DEFAULT_CELL_HEIGHT","SPACE","useOrderBookScript","height","setCellHeight","level","setLevel","allDepths","usePendingOrderStream","cellsHeight","restSpace","selDepth","depths","isMWeb","price","OrderBookWidget","Pencil","LeverageWidgetId","RiskRate","riskRate","riskRateColor","currentLeverage","maxLeverage","isHigh","isMedium","isLow","isDefault","textColor","useLeverage","getRiskRateColor","useRiskRateScript","riskRateNumber","RiskRateWidget","Grid","OrderBookAndTrades","TwoColLayout","TabLayout","tab","useOrderBookAndTradesScript","containerSize","setContainerSize","setTab","containerRef","OrderBookAndTradesWidget","TradingviewWidget","TradingV2","TradingPageContext","useTradingPateContext","useTradingV2Script","TradingV2Widget","TradingPageV2"],"mappings":"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","sourcesContent":["import {\n Layout,\n TradingPage,\n TradingPageProvider,\n TooltipProvider,\n} from \"@orderly.network/react\";\nimport { TradingPageProps } from \"../types/types\";\n\nconst { Header, Content } = Layout;\n\nconst { mobile: MobileTradingPage, desktop: DesktopTradingPage } = TradingPage;\n\nexport const Trading = (\n props: TradingPageProps & { wrongNetwork: boolean }\n) => {\n return (\n <TradingPageProvider\n symbol={props.symbol}\n onSymbolChange={props.onSymbolChange}\n disableFeatures={props.disableFeatures}\n shareOptions={props.shareOptions}\n referral={props.referral}\n tradingReward={props.tradingReward}\n wrongNetwork={props.wrongNetwork}\n >\n <Layout mobile={<MobileTradingPage {...props} />}>\n <Layout style={{ paddingBottom: \"42px\" }}>\n <Content>\n <DesktopTradingPage {...props} />\n </Content>\n </Layout>\n </Layout>\n </TradingPageProvider>\n );\n};\n","import { TradingPageProps } from \"../types/types\";\nimport { Trading } from \"./trading.ui\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const TradingWidget = (props: TradingPageProps) => {\n const {wrongNetwork} = useAppContext();\n return <Trading {...props} wrongNetwork={wrongNetwork} />;\n};\n","import { TradingPageProps } from \"../types/types\";\nimport { TradingWidget } from \"./trading.widget\";\n\n\nexport const TradingPage = (\n props: TradingPageProps\n) => {\n return <TradingWidget {...props} />;\n};\n","export { TradingPage } from \"./pages/trading.page\";\nexport type { ShareOptions } from \"./types/types\";\n\nimport \"./style/style.css\";\nimport \"@orderly.network/react/dist/styles.css\";\n\nexport * from \"./components/dataList\";\nexport * from \"./components/lastTrades\";\nexport * from \"./components/assetView\";\nexport * from \"./components/orderBook\";\nexport * from \"./components/riskRate\";\nexport * from \"./components/orderBookAndTrades\";\nexport * from \"./pages\";\nexport * from \"./provider\";\n","import { FC } from \"react\";\nimport { Divider, Flex, TabPanel, Tabs, Text } from \"@orderly.network/ui\";\nimport { DataListState, DataListTabType } from \"./dataList.script\";\nimport { PositionsWidget } from \"@orderly.network/ui-positions\";\nimport { OrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { PositionHeaderWidget } from \"./positionHeader\";\nimport { SettingWidget } from \"./setting\";\n\nexport const DataList: FC<DataListState> = (props) => {\n return (\n <Tabs\n defaultValue={props.current || DataListTabType.positions}\n variant=\"contained\"\n trailing={\n <SettingWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n setPnlNotionalDecimalPrecision={props.setPnlNotionalDecimalPrecision}\n unPnlPriceBasis={props.unPnlPriceBasis}\n setUnPnlPriceBasic={props.setUnPnlPriceBasic}\n showAllSymbol={props.showAllSymbol}\n setShowAllSymbol={props.setShowAllSymbol}\n />\n }\n >\n <TabPanel\n value={DataListTabType.positions}\n title={DataListTabType.positions}\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel value={DataListTabType.pending} title={DataListTabType.pending}>\n <OrderListWidget\n type={TabType.pending}\n ordersStatus={OrderStatus.INCOMPLETE}\n />\n </TabPanel>\n <TabPanel value={DataListTabType.tp_sl} title={DataListTabType.tp_sl}>\n <OrderListWidget\n type={TabType.tp_sl}\n ordersStatus={OrderStatus.INCOMPLETE}\n />\n </TabPanel>\n <TabPanel value={DataListTabType.filled} title={DataListTabType.filled}>\n <OrderListWidget\n type={TabType.filled}\n ordersStatus={OrderStatus.FILLED}\n />\n </TabPanel>\n <TabPanel\n value={DataListTabType.orderHistory}\n title={DataListTabType.orderHistory}\n >\n <OrderListWidget type={TabType.orderHistory} />\n </TabPanel>\n </Tabs>\n );\n};\n\nconst PositionsView: FC<DataListState> = (props) => {\n return (\n <Flex direction={\"column\"}>\n <PositionHeaderWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={props.config?.symbol}\n unPnlPriceBasis={props.unPnlPriceBasis}\n />\n <Divider className=\"oui-w-full\" />\n <PositionsWidget {...props.config} pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision} />\n </Flex>\n );\n};\n","import { useLocalStorage } from \"@orderly.network/hooks\";\nimport { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { useEffect, useState } from \"react\";\n\nexport enum DataListTabType {\n positions = \"Positions\",\n pending = \"Pending\",\n tp_sl = \"TP/SL\",\n filled = \"Filled\",\n orderHistory = \"Order history\",\n}\n\nexport const useDataListScript = (props: {\n current?: DataListTabType;\n config: PositionsProps & {\n symbol?: string;\n };\n }) => {\n const { current, config } = props;\n const [unPnlPriceBasis, setUnPnlPriceBasic] = useLocalStorage('unPnlPriceBasis', 'markPrice');\n const [pnlNotionalDecimalPrecision, setPnlNotionalDecimalPrecision] = useLocalStorage('pnlNotionalDecimalPrecision', 2);\n const [showAllSymbol, setShowAllSymbol] = useLocalStorage('showAllSymbol', true);\n \n return {\n current,\n config,\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n showAllSymbol,\n setShowAllSymbol,\n };\n};\n\nexport type DataListState = ReturnType<typeof useDataListScript>;\n","import { FC } from \"react\";\nimport { Flex, Statistic, Text } from \"@orderly.network/ui\";\nimport { PositionHeaderState } from \"./positionHeader.script\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const PositionHeader: FC<PositionHeaderState> = (props) => {\n return (\n <Flex px={3} py={2} gap={6} width={\"100%\"} justify={\"start\"}>\n <Statistic label=\"Unreal. PnL\">\n <Flex>\n <Text.numeral\n coloring\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n >\n {props.unrealPnL}\n </Text.numeral>\n {props.unrealPnlROI && (\n <Text.numeral\n coloring\n prefix=\"(\"\n suffix=\")\"\n rule=\"percentages\"\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n >\n {props.unrealPnlROI}\n </Text.numeral>\n )}\n </Flex>\n </Statistic>\n <Statistic label=\"Notional\">\n <Text.numeral\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n >\n {props.notional}\n </Text.numeral>\n </Statistic>\n </Flex>\n );\n};\n","import { usePositionStream } from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { useMemo } from \"react\";\n\nexport const usePositionHeaderScript = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n}) => {\n const { pnlNotionalDecimalPrecision, unPnlPriceBasis, symbol } = props;\n const calcMode = unPnlPriceBasis;\n\n const [data] = usePositionStream(symbol, {\n calcMode,\n });\n const aggregated = useDataTap(data.aggregated);\n const unrealPnL = aggregated?.unrealPnL;\n const unrealPnlROI = aggregated?.unrealPnlROI;\n const notional = aggregated?.notional;\n return {\n pnlNotionalDecimalPrecision,\n unrealPnL,\n unrealPnlROI,\n notional,\n };\n};\n\nexport type PositionHeaderState = ReturnType<typeof usePositionHeaderScript>;\n","import { usePositionHeaderScript } from \"./positionHeader.script\";\nimport { PositionHeader } from \"./positionHeader.ui\";\n\nexport const PositionHeaderWidget = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n}) => {\n const state = usePositionHeaderScript(props);\n return <PositionHeader {...state} />;\n};\n","import { FC, useCallback, useState } from \"react\";\nimport {\n Button,\n Checkbox,\n Divider,\n DropdownMenuContent,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n SettingFillIcon,\n Text,\n} from \"@orderly.network/ui\";\nimport { SettingState } from \"./setting.script\";\n\nexport const Setting: FC<SettingState> = (props) => {\n const [open, setOpen] = useState(false);\n return (\n <Flex gap={0}>\n <Flex gap={1}>\n <Checkbox\n color=\"white\"\n checked={props.showAllSymbol}\n onCheckedChange={(checked: boolean) => {\n props.setShowAllSymbol(checked);\n }}\n />\n <Text size=\"xs\" intensity={54}>\n Show all instruments\n </Text>\n </Flex>\n <Button\n size=\"xs\"\n type=\"button\"\n variant=\"contained\"\n className=\"oui-bg-transparent hover:oui-bg-transparent\"\n >\n <DropdownMenuRoot open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger>\n <SettingFillIcon size={16} color=\"white\" />\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"oui-p-2\" alignOffset={2} align=\"end\">\n <div className=\"oui-flex oui-flex-col oui-text-3xs\">\n <Text className=\"oui-text-xs oui-pb-3\">Portfolio Settings</Text>\n <Divider />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n Decimal Precision for PnL & Notional\n </Text>\n <DecimalPrecisionCheckbox\n value={props.pnlNotionalDecimalPrecision}\n onValueChange={(e) => {\n props.setPnlNotionalDecimalPrecision(e);\n setOpen(false);\n }}\n />\n <Divider className=\"oui-my-3\" />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n Unrealized PnL Price Basis\n </Text>\n <UnPnlPriceBasisCheckBox\n value={props.unPnlPriceBasis}\n onValueChange={(e) => {\n props.setUnPnlPriceBasic(e);\n setOpen(false);\n }}\n />\n </div>\n </DropdownMenuContent>\n </DropdownMenuRoot>\n </Button>\n </Flex>\n );\n};\n\nconst UnPnlPriceBasisCheckBox = (props: {\n value: string;\n onValueChange: (value: string) => void;\n}) => {\n const { value, onValueChange } = props;\n // \"markPrice\" | \"lastPrice\"\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === \"markPrice\"}\n label={\"Mark price\"}\n value={\"markPrice\"}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === \"lastPrice\"}\n label={\"Last price\"}\n value={\"lastPrice\"}\n onCheckChange={onValueChange}\n />\n </Flex>\n );\n};\n\nconst DecimalPrecisionCheckbox = (props: {\n value: number;\n onValueChange: (value: number) => void;\n}) => {\n const { value, onValueChange } = props;\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === 0}\n label={1}\n value={0}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === 1}\n label={0.1}\n value={1}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === 2}\n label={0.01}\n value={2}\n onCheckChange={onValueChange}\n />\n </Flex>\n );\n};\n\n// const InnerCheckbox = (props: {\n// sel: boolean;\n// label: any;\n// value: any;\n// onCheckChange: (value: any) => void;\n// }) => {\n// const { sel, label, value, onCheckChange } = props;\n// return (\n// <Flex\n// onClick={(e) => {\n// onCheckChange(value);\n// e.stopPropagation();\n// }}\n// gap={1}\n// >\n// <Checkbox color=\"white\" checked={sel} />\n// <Text size=\"xs\" intensity={sel ? 98 : 54}>\n// {`${label}`}\n// </Text>\n// </Flex>\n// );\n// };\n\nconst RadioButton = (props: {\n sel: boolean;\n label: any;\n value: any;\n onCheckChange: (value: any) => void;\n }) => {\n const { sel, label, value, onCheckChange } = props;\n return (\n <Flex\n onClick={(e) => {\n onCheckChange(value);\n e.stopPropagation();\n }}\n gap={1}\n className=\"oui-cursor-pointer\"\n >\n {sel ? <SelIcon /> : <UnselIcon />}\n <Text size=\"xs\" intensity={sel ? 98 : 54}>{label}</Text>\n </Flex>\n );\n };\n \n const SelIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-white\"\n >\n <path\n d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <circle cx=\"8\" cy=\"8\" r=\"3.333\" />\n </svg>\n );\n };\n \n const UnselIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n );\n };\n","import { useLocalStorage } from \"@orderly.network/hooks\";\n\nexport const useSettingScript = (props: {\n pnlNotionalDecimalPrecision: any;\n setPnlNotionalDecimalPrecision: (value: number) => void;\n unPnlPriceBasis: any;\n setUnPnlPriceBasic: (value: string) => void;\n showAllSymbol: any;\n setShowAllSymbol: (value: boolean) => void;\n}) => {\n const {\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n showAllSymbol,\n setShowAllSymbol,\n } = props;\n return {\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n showAllSymbol,\n setShowAllSymbol,\n };\n};\n\nexport type SettingState = ReturnType<typeof useSettingScript>;\n","import { useSettingScript } from \"./setting.script\";\nimport { Setting } from \"./setting.ui\";\n\nexport const SettingWidget = (props: {\n pnlNotionalDecimalPrecision: any;\n setPnlNotionalDecimalPrecision: (value: number) => void;\n unPnlPriceBasis: any;\n setUnPnlPriceBasic: (value: string) => void;\n showAllSymbol: any;\n setShowAllSymbol: (value: boolean) => void;\n }) => {\n const state = useSettingScript(props);\n return <Setting {...state} />;\n};\n","import { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { DataListTabType, useDataListScript } from \"./dataList.script\";\nimport { DataList } from \"./dataList.ui\";\n\nexport const DataListWidget = (props: {\n current?: DataListTabType;\n config: Partial<Omit<PositionsProps, \"pnlNotionalDecimalPrecision\">>;\n}) => {\n const state = useDataListScript(props);\n return <DataList {...state} />;\n};\n","import { FC, ReactNode } from \"react\";\nimport { Box, cn, Flex, ScrollArea, Text } from \"@orderly.network/ui\";\nimport { LastTradesState } from \"./lastTrades.script\";\nimport { API, OrderSide } from \"@orderly.network/types\";\nimport { commifyOptional } from \"@orderly.network/utils\";\n\nexport const LastTrades: FC<\n LastTradesState & {\n className?: string;\n style?: React.CSSProperties;\n }\n> = (props) => {\n return (\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className={cn(\"oui-font-semibold\", props.className)}\n width={\"100%\"}\n height={\"100%\"}\n style={props.style}\n >\n <Header base={props.base} quote={props.quote} />\n <List\n data={props.data}\n isLoading={props.isLoading}\n baseDp={props.baseDp}\n quoteDp={props.quoteDp}\n />\n </Flex>\n );\n};\n\nconst Row = (props: {\n key?: React.Key | null;\n classNames?: {\n root?: string;\n left?: string;\n mid?: string;\n right?: string;\n };\n left: ReactNode | string;\n mid: ReactNode | string;\n right: ReactNode | string;\n}) => {\n const { key, left, mid, right, classNames } = props;\n return (\n <Flex\n key={key}\n height={20}\n gap={2}\n width={\"100%\"}\n className={cn(\"oui-text-xs oui-tabular-nums\", classNames?.root)}\n >\n <Box className={cn(\"oui-flex-1\", classNames?.left)}>{left}</Box>\n <Box className={cn(\"oui-flex-1\", classNames?.mid)}>{mid}</Box>\n <Box className={cn(\"oui-flex-1 oui-text-right\", classNames?.right)}>\n {right}\n </Box>\n </Flex>\n );\n};\n\nconst Header = (props: { base: string; quote: string }) => {\n return (\n <Row\n left=\"Time\"\n mid={`Price(${props.quote})`}\n right={`Qty(${props.base})`}\n classNames={{ root: \"oui-text-base-contrast-54 oui-h-[32px]\" }}\n />\n );\n};\n\nconst List = (props: {\n data?: any[];\n isLoading?: boolean;\n baseDp: number;\n quoteDp: number;\n}) => {\n return (\n <ScrollArea className=\"oui-w-full oui-h-full\">\n {props.data?.map((item, index) => {\n return (\n <Row\n key={index}\n left={\n <Text.formatted rule={\"date\"} formatString=\"HH:mm:ss\">\n {item?.ts}\n </Text.formatted>\n }\n mid={commifyOptional(item?.price, { fix: props.quoteDp })}\n right={commifyOptional(item?.size, { fix: props.baseDp })}\n classNames={{\n left: \"oui-text-base-contrast-80\",\n right:\n item.side === OrderSide.BUY\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\",\n mid:\n item.side === OrderSide.BUY\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\",\n }}\n />\n );\n })}\n </ScrollArea>\n );\n};\n","import { useMarketTradeStream, useSymbolsInfo } from \"@orderly.network/hooks\";\n\nexport const useLastTradesScript = (symbol: string) => {\n const { data, isLoading } = useMarketTradeStream(symbol);\n // const { quote, quote_dp, base, base_dp } = useContext(SymbolContext);\n const config = useSymbolsInfo()?.[symbol];\n const base = config?.(\"base\");\n const quote = config?.(\"quote\");\n const baseDp = config?.(\"base_dp\");\n const quoteDp = config?.(\"quote_dp\");\n// console.log(\"base, quote\", base, quote, \"baseDp, quoteDp\", baseDp, quoteDp);\n\n return {\n base,\n quote,\n data,\n isLoading,\n baseDp,\n quoteDp,\n };\n};\n\nexport type LastTradesState = ReturnType<typeof useLastTradesScript>;\n","import { useLastTradesScript } from \"./lastTrades.script\";\nimport { LastTrades } from \"./lastTrades.ui\";\n\nexport const LastTradesWidget = (props: {\n symbol: string;\n className?: string;\n style?: React.CSSProperties;\n}) => {\n const state = useLastTradesScript(props.symbol);\n return <LastTrades {...state} className={props.className} style={props.style} />;\n};\n","import React, { FC, useMemo, useState } from \"react\";\nimport {\n Flex,\n Text,\n Box,\n Button,\n ArrowDownShortIcon,\n EyeIcon,\n EyeCloseIcon,\n ChevronDownIcon,\n Tooltip,\n Divider,\n gradientTextVariants,\n} from \"@orderly.network/ui\";\nimport { AssetViewState } from \"./assetView.script\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { cn, Collapsible, CollapsibleContent } from \"@orderly.network/react\";\nimport { useAccount, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\ninterface StatusInfo {\n title: string;\n description: string;\n titleColor?: any;\n}\n\nexport const useCurrentStatusText = (): StatusInfo => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n\n /**\n * TODO:\n * script文件不应该包括UI显示的具体数据,建议移动到ui文件中\n * 处理完成之后,请删掉 TODO\n */\n const currentStatus = useMemo(() => {\n if (wrongNetwork) {\n return {\n title: \"Wrong Network\",\n description: \"Please switch to a supported network to continue.\",\n titleColor: \"warning\",\n };\n }\n\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return {\n title: \"Connect wallet\",\n description: \"Please connect your wallet before starting to trade.\",\n };\n case AccountStatusEnum.NotSignedIn:\n return {\n title: \"Sign in\",\n description: \"Please sign in before starting to trade.\",\n titleColor: \"primaryLight\",\n };\n case AccountStatusEnum.DisabledTrading:\n return {\n title: \"Enable trading\",\n description: \"Enable trading before starting to trade.\",\n titleColor: \"primaryLight\",\n };\n default:\n return {\n title: \"\",\n description: \"\",\n };\n }\n }, [state.status, wrongNetwork]);\n\n return currentStatus;\n};\n\nconst TotalValue: FC<{\n totalValue: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n}> = ({ totalValue = 0, visible = true, onToggleVisibility }) => {\n return (\n <Flex\n direction={\"column\"}\n gap={1}\n className=\"oui-text-2xs\"\n itemAlign={\"center\"}\n >\n <Text.numeral\n visible={visible}\n weight=\"bold\"\n size=\"2xl\"\n className={gradientTextVariants({ color: \"brand\" })}\n as=\"div\"\n padding={false}\n >\n {totalValue ?? \"--\"}\n </Text.numeral>\n\n <Flex gap={1} itemAlign={\"center\"}>\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n My Assets (USDC)\n </Text>\n\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon size={18} className=\"oui-text-base-contrast-54\" />\n ) : (\n <EyeCloseIcon size={18} className=\"oui-text-base-contrast-54\" />\n )}\n </button>\n </Flex>\n </Flex>\n );\n};\n\nconst AssetValueList: FC<{\n visible?: boolean;\n freeCollateral: number | null;\n marginRatioVal: number;\n renderMMR: string;\n isConnected: boolean;\n}> = ({\n visible = true,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n}) => {\n const [optionsOpen, setOptionsOpen] = useLocalStorage(\n \"orderly_entry_asset_list_open\",\n false\n );\n const [open, setOpen] = useState<boolean>(optionsOpen);\n\n return (\n <Box>\n <Flex\n justify=\"center\"\n gap={1}\n itemAlign={\"center\"}\n className=\"oui-cursor-pointer\"\n onClick={() => {\n setOpen((prevOpen) => !prevOpen);\n setOptionsOpen(!open);\n }}\n >\n <Divider className=\"oui-flex-1\" />\n <ChevronDownIcon\n size={18}\n color=\"white\"\n className={cn(\"oui-transition-transform\", open && \"oui-rotate-180\")}\n />\n <Divider className=\"oui-flex-1\" />\n </Flex>\n\n <Collapsible open={open}>\n <CollapsibleContent>\n <Box className=\"oui-space-y-1.5\">\n <Flex justify=\"between\">\n <Tooltip\n content={\n (\n <div>\n <span>Free collateral for placing new orders.</span>\n <Divider className=\"oui-py-2 oui-border-white/10\" />\n <span>\n Free collateral = Total balance + Total unsettlement PnL\n - Total position initial margin\n </span>\n </div>\n ) as any\n }\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer\"\n >\n Free collateral\n </Text>\n </Tooltip>\n <Text.numeral\n visible={visible}\n size=\"2xs\"\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-36\"\n as=\"div\"\n padding={false}\n >\n {freeCollateral ?? \"--\"}\n </Text.numeral>\n </Flex>\n\n <Flex justify=\"between\">\n <Tooltip\n content={\n (\n <div>\n <span>\n Your actual Leverage of the whole account / Your max\n Leverage of the whole account\n </span>\n <Divider className=\"oui-py-2 oui-border-white/10\" />\n <span>\n Margin ratio = Total collateral / Total position\n notional\n </span>\n </div>\n ) as any\n }\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer\"\n >\n Margin ratio\n </Text>\n </Tooltip>\n {isConnected ? (\n <Text.numeral\n size=\"2xs\"\n unitClassName=\"oui-text-base-contrast-36\"\n as=\"div\"\n rule=\"percentages\"\n padding={false}\n >\n {marginRatioVal}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast-36\">--</Text>\n )}\n </Flex>\n\n <Flex justify=\"between\">\n <Tooltip\n content={\n (\n <div>\n <span>Maintenance margin ratio.</span>\n <Divider className=\"oui-py-2 oui-border-white/10\" />\n <span>Maintenance margin ratio = ...</span>\n </div>\n ) as any\n }\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer\"\n >\n Maintenance margin ratio\n </Text>\n </Tooltip>\n {renderMMR ? (\n <Text.numeral\n size=\"2xs\"\n suffix=\"%\"\n unitClassName=\"oui-text-base-contrast-36\"\n as=\"div\"\n padding={false}\n >\n {renderMMR}\n </Text.numeral>\n ) : (\n <Text className=\"oui-text-base-contrast-36\">--</Text>\n )}\n </Flex>\n </Box>\n </CollapsibleContent>\n </Collapsible>\n </Box>\n );\n};\n\nexport const AssetView: FC<AssetViewState> = ({\n networkId,\n isFirstTimeDeposit,\n totalValue,\n onDeposit,\n onWithdraw,\n toggleVisible,\n visible,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n}) => {\n const currentStatus = useCurrentStatusText();\n const { title, description } = currentStatus;\n const titleColor = currentStatus.titleColor ?? \"\";\n\n return (\n <Box>\n {title && description ? (\n <Flex direction=\"column\" gap={1} className=\"oui-mb-[32px]\">\n {titleColor ? (\n <Text size=\"lg\" weight=\"bold\" color={titleColor}>\n {title}\n </Text>\n ) : (\n <Text.gradient size=\"lg\" weight=\"bold\" color={\"brand\"}>\n {title}\n </Text.gradient>\n )}\n\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n {description}\n </Text>\n </Flex>\n ) : null}\n <AuthGuard\n networkId={networkId}\n status={AccountStatusEnum.EnableTrading}\n buttonProps={{ size: \"md\", fullWidth: true }}\n >\n {isFirstTimeDeposit ? (\n <>\n <Box>\n <Flex direction=\"column\" gap={1} className=\"oui-mb-[32px]\">\n <Text.gradient size=\"lg\" weight=\"bold\" color={\"brand\"}>\n Deposit to start trade\n </Text.gradient>\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n You can deposit assets from various networks\n </Text>\n </Flex>\n </Box>\n <Button fullWidth size=\"md\" onClick={onDeposit}>\n <ArrowDownShortIcon color=\"white\" opacity={1} />\n <Text>Deposit</Text>\n </Button>\n </>\n ) : (\n <Box className=\"oui-space-y-4\">\n <TotalValue\n totalValue={totalValue}\n visible={visible}\n onToggleVisibility={toggleVisible}\n />\n <AssetValueList\n visible={visible}\n freeCollateral={freeCollateral}\n marginRatioVal={marginRatioVal}\n renderMMR={renderMMR}\n isConnected={isConnected}\n />\n <Flex gap={3} itemAlign={\"center\"}>\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={onWithdraw}\n >\n <ArrowDownShortIcon\n color=\"white\"\n opacity={1}\n className=\"oui-rotate-180\"\n />\n <Text>Withdraw</Text>\n </Button>\n <Button fullWidth size=\"md\" onClick={onDeposit}>\n <ArrowDownShortIcon color=\"white\" opacity={1} />\n <Text>Deposit</Text>\n </Button>\n </Flex>\n </Box>\n )}\n </AuthGuard>\n </Box>\n );\n};\n","import {\n useAccountInstance,\n useEventEmitter,\n useLocalStorage,\n useMediaQuery,\n useSettleSubscription,\n useWalletSubscription,\n useAccount,\n useConfig,\n usePrivateQuery,\n useCollateral,\n useMarginRatio,\n} from \"@orderly.network/hooks\";\nimport {\n MEDIA_TABLET,\n AccountStatusEnum,\n NetworkId,\n API,\n} from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { capitalizeString } from \"@orderly.network/utils\";\nimport { useCallback, useMemo } from \"react\";\nimport {\n DepositAndWithdrawWithSheetId,\n DepositAndWithdrawWithDialogId,\n} from \"@orderly.network/ui-transfer\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nconst useFirstTimeDeposit = () => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const { totalValue } = useCollateral({\n dp: 2,\n });\n const unavailable =\n wrongNetwork || state.status < AccountStatusEnum.EnableTrading;\n const getKeyMemo = useMemo(() => {\n const now = new Date();\n const ninetyDaysAgo = new Date();\n ninetyDaysAgo.setDate(now.getDate() - 90);\n\n const startTime = ninetyDaysAgo.getTime();\n const endTime = now.getTime();\n\n const searchParams = new URLSearchParams();\n\n searchParams.set(\"page\", \"1\");\n searchParams.set(\"size\", \"5\");\n searchParams.set(\"side\", \"DEPOSIT\");\n searchParams.set(\"status\", \"COMPLETED\");\n searchParams.set(\"startTime\", startTime.toString());\n searchParams.set(\"endTime\", endTime.toString());\n\n return `/v1/asset/history?${searchParams.toString()}`;\n }, []);\n\n const { data: depositHistoryData } = usePrivateQuery<API.AssetHistory>(\n getKeyMemo,\n {\n formatter: (data) => data,\n }\n );\n\n return {\n isFirstTimeDeposit:\n !unavailable && totalValue === 0 && depositHistoryData?.meta?.total === 0,\n totalValue,\n };\n};\n\nexport const useAssetViewScript = () => {\n const account = useAccountInstance();\n const matches = useMediaQuery(MEDIA_TABLET);\n\n const { isFirstTimeDeposit, totalValue } = useFirstTimeDeposit();\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n const { state } = useAccount();\n const { freeCollateral } = useCollateral({\n dp: 2,\n });\n const { marginRatio, mmr } = useMarginRatio();\n const isConnected = state.status >= AccountStatusEnum.Connected;\n const marginRatioVal = marginRatio === 0 ? 10 : Math.min(marginRatio, 10);\n\n const renderMMR = useMemo(() => {\n if (!mmr) {\n return \"--\";\n }\n const bigMMR = new Decimal(mmr);\n return bigMMR.mul(100).todp(2, 0).toFixed(2);\n }, [mmr]);\n\n const openDepositAndWithdraw = useCallback(\n async (viewName: \"deposit\" | \"withdraw\") => {\n let result;\n if (matches) {\n result = await modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: viewName,\n });\n } else {\n result = await modal.show(DepositAndWithdrawWithDialogId, {\n activeTab: viewName,\n });\n }\n\n return result;\n },\n [matches]\n );\n\n const onDeposit = useCallback(async () => {\n return openDepositAndWithdraw(\"deposit\");\n }, [matches]);\n\n const ee = useEventEmitter();\n\n const onWithdraw = useCallback(async () => {\n return openDepositAndWithdraw(\"withdraw\");\n }, [matches]);\n\n const onSettle = useCallback(async () => {\n return account\n .settle()\n .catch((e) => {\n if (e.code === -1104) {\n toast.error(\n \"Settlement is only allowed once every 10 minutes. Please try again later.\"\n );\n return Promise.reject(e);\n }\n })\n .then((res) => {\n toast.success(\"Settlement requested\");\n return Promise.resolve(res);\n });\n }, [account]);\n\n const [visible, setVisible] = useLocalStorage<boolean>(\n \"orderly_assets_visible\",\n true\n );\n\n const toggleVisible = useCallback(() => {\n // @ts-ignore\n setVisible((visible: boolean) => {\n return !visible;\n });\n }, [visible]);\n\n useWalletSubscription({\n onMessage: (data: any) => {\n const { side, transStatus } = data;\n\n if (transStatus === \"COMPLETED\") {\n let msg = `${capitalizeString(side)} completed`;\n toast.success(msg);\n } else if (transStatus === \"FAILED\") {\n let msg = `${capitalizeString(side)} failed`;\n toast.error(msg);\n }\n\n ee.emit(\"wallet:changed\", data);\n },\n });\n\n useSettleSubscription({\n onMessage: (data: any) => {\n const { status } = data;\n\n switch (status) {\n case \"COMPLETED\":\n toast.success(\"Settlement completed\");\n break;\n case \"FAILED\":\n toast.error(\"Settlement failed\");\n break;\n default:\n break;\n }\n },\n });\n\n return {\n onDeposit,\n onWithdraw,\n onSettle,\n visible,\n toggleVisible,\n networkId,\n isFirstTimeDeposit,\n totalValue,\n status: state.status,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n };\n};\n\nexport type AssetViewState = ReturnType<typeof useAssetViewScript>;\n","import { useAssetViewScript } from \"./assetView.script\";\nimport { AssetView } from \"./assetView.ui\";\n\nexport const AssetViewWidget = () => {\n const state = useAssetViewScript();\n return (<AssetView {...state} />);\n};\n","import { FC } from \"react\";\nimport { Box, Flex, Text } from \"@orderly.network/ui\";\nimport { OrderBookState } from \"./orderBook.script\";\nimport { DesktopOrderBook } from \"./desktop/index.desktop\";\nimport { OrderBook as MWebOrderBook } from \"./mWeb/index\";\n\nexport const OrderBook: FC<\n OrderBookState & {\n className?: string;\n }\n> = (props) => {\n return (\n <Box className=\"oui-font-semibold\" width={\"100%\"} height={\"100%\"}>\n {props.isMWeb ? (\n <MWebOrderBook\n level={props.level}\n asks={props.asks!}\n bids={props.bids!}\n markPrice={props.markPrice!}\n lastPrice={props.lastPrice!}\n depths={props.depths}\n activeDepth={props.selDepth}\n base={props.base}\n quote={props.quote}\n isLoading={props.isLoading}\n onItemClick={props.onItemClick}\n cellHeight={props.cellHeight}\n onDepthChange={props.onDepthChange}\n className={props.className}\n symbolInfo={props.symbolInfo}\n />\n ) : (\n <DesktopOrderBook\n level={props.level}\n asks={props.asks!}\n bids={props.bids!}\n markPrice={props.markPrice!}\n lastPrice={props.lastPrice!}\n depths={props.depths}\n activeDepth={props.selDepth}\n base={props.base}\n quote={props.quote}\n isLoading={props.isLoading}\n onItemClick={props.onItemClick}\n cellHeight={props.cellHeight}\n onDepthChange={props.onDepthChange}\n className={props.className}\n pendingOrders={props.pendingOrders}\n symbolInfo={props.symbolInfo}\n />\n )}\n </Box>\n );\n};\n","import React, { FC, useCallback, useEffect, useRef, useState } from \"react\";\nimport { DesktopBids } from \"./bids.desktop\";\nimport { DesktopAsks } from \"./asks.desktop\";\nimport { DesktopMarkPrice } from \"./markPrice.desktop\";\nimport { DesktopHeader } from \"./header.desktop\";\nimport { DesktopDepthSelect } from \"./depthSelect.desktop\";\nimport { OrderBookProvider } from \"../orderContext\";\nimport { cn, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\n\nexport interface DesktopOrderBookProps {\n asks: any[];\n bids: any[];\n markPrice: number;\n lastPrice: number[];\n onItemClick?: (item: number[]) => void;\n depths: string[];\n activeDepth?: string;\n onDepthChange?: (depth: number) => void;\n //\n autoSize?: boolean;\n level?: number;\n base: string;\n quote: string;\n\n isLoading?: boolean;\n\n cellHeight?: number;\n\n className?: string;\n pendingOrders?: number[];\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const DesktopOrderBook: FC<DesktopOrderBookProps> = (props) => {\n const { lastPrice, markPrice, quote, base, isLoading, onDepthChange } = props;\n // const onModeChange = useCallback((mode: QtyMode) => {}, []);\n\n //\n const divRef = useRef(null);\n const [showTotal, setShowTotal] = useState(false);\n\n const rangeInfo = [\n { left: 370, right: 600 },\n { left: 740, right: 800 },\n ];\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n const { inlineSize: width } = entry.borderBoxSize[0];\n const count = rangeInfo.reduce(\n (a, b) => a + (width >= b.left && width < b.right ? 1 : 0),\n 0\n );\n setShowTotal(width >= 360);\n }\n });\n\n const targetDiv = divRef.current;\n\n if (targetDiv) {\n resizeObserver.observe(targetDiv);\n }\n\n return () => {\n if (targetDiv) {\n resizeObserver.unobserve(targetDiv);\n }\n };\n }, []);\n\n ///\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n showTotal={showTotal}\n pendingOrders={props.pendingOrders || []}\n symbolInfo={props.symbolInfo}\n >\n <div\n id=\"oui-orderbook-desktop\"\n className={cn(\"oui-h-full oui-w-full oui-relative\", props.className)}\n ref={divRef}\n >\n <DesktopDepthSelect\n depths={props.depths}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n <DesktopHeader quote={quote} base={base} />\n <DesktopAsks data={[...props.asks]} />\n <DesktopMarkPrice\n lastPrice={lastPrice}\n markPrice={markPrice}\n asks={[...props.asks]}\n bids={[...props.bids]}\n symbolInfo={props.symbolInfo}\n />\n <DesktopBids data={[...props.bids]}/>\n {isLoading && (\n <div className=\"oui-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-bg-8/70\">\n <Spinner />\n </div>\n )}\n </div>\n </OrderBookProvider>\n );\n};\n","import { FC, useCallback, useContext, useMemo, useState } from \"react\";\nimport { DesktopOrderBookCell } from \"./cell.desktop\";\nimport { OrderBookCellType } from \"../types\";\nimport { OrderBookContext, useOrderBookContext } from \"../orderContext\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n Text,\n Flex,\n TooltipRoot,\n TooltipArrow,\n} from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\n\ninterface DesktopListBoxProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const DesktopListBox: FC<DesktopListBoxProps> = (props) => {\n const { data, type } = props;\n const { symbolInfo, depth } = useOrderBookContext();\n\n const findMaxItem = useCallback(() => {\n if ((data?.length || 0) === 0) {\n return null;\n }\n if (type === OrderBookCellType.ASK) {\n const index = data.findIndex((item) => !Number.isNaN(item[0]));\n if (index != -1) {\n return data[index];\n }\n return null;\n } else {\n for (let index = data.length - 1; index >= 0; index--) {\n const item = data[index];\n\n if (!Number.isNaN(item[0])) {\n return item;\n }\n }\n return null;\n }\n }, [data, type]);\n\n const priceDp = useMemo(() => {\n if (depth?.toString().includes(\".\")) {\n return depth.toString().split(\".\")[1].length;\n }\n return 0;\n }, [depth]);\n\n const maxQty = useMemo(() => {\n return data.reduce((a, b) => Math.max(a, b[1]), 0);\n }, [data]);\n const [hoverIndex, setHoverIndex] = useState<number>(-1);\n\n return (\n <div\n id=\"oui-order-book-list\"\n className=\"oui-flex oui-flex-col oui-gap-[1px]\"\n >\n {data.map((item, index) => {\n return (\n <Tip\n key={index}\n index={index}\n item={item}\n countQty={props.countQty}\n setHoverIndex={setHoverIndex}\n hoverIndex={hoverIndex}\n type={type}\n maxQty={maxQty}\n priceDp={priceDp}\n symbolInfo={symbolInfo}\n findMaxItem={findMaxItem}\n />\n );\n })}\n </div>\n );\n};\n\nconst Tip: FC<{\n index: number;\n item: any;\n countQty: number;\n setHoverIndex: any;\n type: OrderBookCellType;\n maxQty: number;\n hoverIndex: number;\n priceDp: number;\n // base: any;\n // quote: any;\n // baseDp: number;\n // quoteDp: number;\n findMaxItem: () => number[] | null;\n symbolInfo: BasicSymbolInfo;\n}> = (props) => {\n const {\n index,\n item,\n setHoverIndex,\n type,\n maxQty,\n hoverIndex,\n priceDp,\n\n symbolInfo,\n } = props;\n\n const { base, quote, base_dp: baseDp, quote_dp: quoteDp } = symbolInfo;\n\n const isHover =\n hoverIndex !== -1\n ? type === OrderBookCellType.ASK\n ? index >= hoverIndex\n : index <= hoverIndex\n : false;\n\n const [open, setOpen] = useState(false);\n\n const calcHintInfo = (\n item: any\n ): {\n avgPrice: number;\n sumQty: number;\n sumQtyAmount: number;\n } => {\n if (item === null) {\n return {\n sumQty: 0,\n sumQtyAmount: 0,\n avgPrice: 0,\n };\n }\n let totalInfo = { sumQty: 0, sumQtyAmount: 0 };\n if (!Number.isNaN(item[2])) {\n totalInfo = {\n sumQty: item[2],\n sumQtyAmount: item[3],\n };\n }\n\n return {\n ...totalInfo,\n avgPrice:\n totalInfo.sumQtyAmount == 0\n ? 0\n : totalInfo.sumQtyAmount / totalInfo.sumQty,\n };\n };\n let hintInfo = calcHintInfo(item);\n if (hintInfo.avgPrice === 0) {\n hintInfo = calcHintInfo(props.findMaxItem());\n }\n\n return (\n <TooltipRoot open={open} onOpenChange={setOpen}>\n <TooltipTrigger>\n <DesktopOrderBookCell\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n count={props.countQty}\n type={props.type}\n accumulatedAmount={item[3]}\n maxQty={maxQty}\n isHover={isHover}\n currentHover={hoverIndex === index}\n symbolInfo={symbolInfo}\n onMouseEnter={() => {\n setHoverIndex(index);\n setOpen(true);\n }}\n onMouseLeave={() => {\n setHoverIndex(-1);\n setOpen(false);\n }}\n />\n </TooltipTrigger>\n <TooltipContent\n className=\"oui-max-w-[400px] oui-w-full oui-text-2xs oui-shadow-md oui-rounded-base oui-p-3 oui-bg-base-6 oui-flex oui-flex-col oui-gap-2\"\n align=\"center\"\n side=\"left\"\n sideOffset={12}\n onPointerEnter={(e) => e.preventDefault()}\n >\n <Row\n title=\"Avg. Price≈\"\n content={hintInfo.avgPrice}\n contentDp={priceDp}\n />\n <Row\n title={`Sum (${base})`}\n content={hintInfo.sumQty}\n contentDp={baseDp}\n />\n <Row\n title={`Sum (${quote})`}\n content={hintInfo.sumQtyAmount}\n contentDp={quoteDp}\n />\n\n <TooltipArrow className=\"oui-fill-base-6\" />\n </TooltipContent>\n </TooltipRoot>\n );\n};\n\nconst Row: FC<{ title: string; content: number; contentDp: number }> = (\n props\n) => {\n const { title, content, contentDp } = props;\n\n return (\n <div className=\"oui-flex oui-flex-row oui-justify-between oui-gap-4\">\n <div className=\"oui-text-base-contrast-36\">{title}</div>\n <div className=\"oui-text-right\">\n <Text.numeral dp={contentDp}>{content}</Text.numeral>\n </div>\n </div>\n );\n};\n","import { FC, useContext, useMemo } from \"react\";\nimport { getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { OrderBookCellType } from \"../types\";\nimport { useOrderBookContext } from \"../orderContext\";\nimport { cn, Divider, parseNumber, Text } from \"@orderly.network/ui\";\nimport { CellBar, CellBarDirection } from \"../cellBar\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\n\nexport interface DesktopOrderBookCellProps {\n background: string;\n maxQty: number;\n price: number;\n quantity: number;\n // size: number;\n count: number;\n accumulated: number;\n accumulatedAmount: number;\n type: OrderBookCellType;\n symbolInfo: BasicSymbolInfo;\n\n isHover: boolean;\n currentHover: boolean;\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n}\n\nexport const DesktopOrderBookCell: FC<DesktopOrderBookCellProps> = (props) => {\n const { cellHeight, showTotal, onItemClick, depth, pendingOrders } =\n useOrderBookContext();\n const { symbolInfo, currentHover } = props;\n const { base_dp, quote_dp } = symbolInfo;\n\n const width = Number.isNaN(props.price)\n ? 0\n : (props.accumulated / props.count) * 100;\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n const totalAmount = Number.isNaN(props.accumulated)\n ? \"-\"\n : props.accumulatedAmount?.toString();\n\n const isPendingOrder = useMemo(() => {\n const priceStr = parseNumber(props.price, { dp: dp, padding: true });\n\n const index = pendingOrders.findIndex(\n (item) => priceStr === parseNumber(item, { dp: dp, padding: true })\n );\n\n return index !== -1;\n }, [pendingOrders, props.price, depth]);\n\n return (\n <div\n className=\"oui-flex oui-flex-row oui-pl-3 oui-tabular-nums oui-justify-between oui-text-base-contrast-80 oui-text-3xs oui-relative oui-cursor-pointer\"\n style={{ height: `${cellHeight}px` }}\n onClick={() => {\n if (Number.isNaN(props.price) || Number.isNaN(props.quantity)) return;\n onItemClick?.([props.price, props.quantity]);\n }}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n <div\n className={cn(\n \"oui-basis-7/12 oui-flex oui-felx-row oui-items-center oui-mr-2\",\n showTotal && \"oui-basis-5/12\"\n )}\n >\n <div\n className={cn(\n \"oui-flex-1 oui-text-left\",\n props.type === OrderBookCellType.ASK\n ? \"oui-text-trade-loss\"\n : \"oui-text-trade-profit\"\n )}\n >\n <Text.numeral dp={dp}>{props.price}</Text.numeral>\n </div>\n <div className=\"oui-flex-1 oui-text-right oui-text-base-contrast-80\">\n <Text.numeral dp={base_dp}>{props.quantity}</Text.numeral>\n </div>\n </div>\n <div\n className={cn(\n \"oui-basis-5/12 oui-flex oui-items-center oui-fex-row oui-overflow-hidden oui-relative\",\n showTotal && \"oui-basis-7/12\"\n )}\n >\n <div\n className={cn(\n \"oui-flex-1 oui-pr-6 oui-text-right\",\n showTotal && \"oui-pr-3\"\n )}\n >\n <Text.numeral dp={base_dp} className=\"oui-z-10\">\n {props.accumulated}\n </Text.numeral>\n </div>\n {showTotal && (\n <div className=\"oui-flex-1 oui-text-right oui-pr-3\">\n <Text.numeral dp={2} className=\"oui-z-10\">\n {totalAmount}\n </Text.numeral>\n </div>\n )}\n <CellBar\n width={width}\n direction={CellBarDirection.LEFT_TO_RIGHT}\n className={\n props.type === OrderBookCellType.ASK\n ? \"oui-bg-trade-loss/10\"\n : \"oui-bg-trade-profit/10\"\n }\n />\n </div>\n\n {isPendingOrder && (\n <div\n className={cn(\n \"oui-absolute oui-rounded-full oui-left-[-8px] oui-h-[4px] oui-w-[4px] oui-pointer-events-none\",\n props.type === OrderBookCellType.ASK && \"oui-bg-trade-loss\",\n props.type === OrderBookCellType.BID && \"oui-bg-trade-profit\"\n )}\n style={{ top: `${cellHeight / 2 - 2}px` }}\n />\n )}\n\n {props.isHover && (\n <div className=\"oui-absolute oui-bg-white oui-left-0 oui-right-0 oui-top-0 oui-bottom-0 oui-opacity-[.12]\"></div>\n )}\n {currentHover && (\n <div\n className={cn(\n \"oui-absolute oui-left-0 oui-right-0\",\n props.type === OrderBookCellType.ASK && \"oui-top-0\",\n props.type === OrderBookCellType.BID && \"oui-bottom-0\"\n )}\n >\n <Divider\n lineStyle=\"dashed\"\n className={cn(\n \"oui-w-full\",\n props.type === OrderBookCellType.BID && \"oui-border-trade-profit\",\n props.type === OrderBookCellType.ASK && \"oui-border-trade-loss\"\n )}\n />\n </div>\n )}\n </div>\n );\n};\n","import { createContext, FC, PropsWithChildren, useContext, useState } from \"react\";\nimport { QtyMode, TotalMode } from \"./types\";\nimport { BasicSymbolInfo } from \"../../types/types\";\n\nexport interface OrderBookContextValue {\n cellHeight: number;\n mode: QtyMode;\n depth?: string;\n onModeChange?: (mode: QtyMode) => void;\n onItemClick?: (item: number[]) => void;\n showTotal: boolean;\n totalMode: TotalMode;\n pendingOrders: number[];\n onTotalModeChange?: (mode: TotalMode) => void;\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const OrderBookContext = createContext({\n cellHeight: 22,\n} as OrderBookContextValue);\n\nexport const useOrderBookContext = () => useContext(OrderBookContext);\n\ninterface OrderBookProviderProps {\n cellHeight: number;\n depth?: string;\n showTotal: boolean;\n pendingOrders: number[];\n onItemClick?: (item: number[]) => void;\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const OrderBookProvider: FC<\n PropsWithChildren<OrderBookProviderProps>\n> = (props) => {\n const [mode, setMode] = useState<QtyMode>(\"quantity\");\n const [totalMode, setTotalMode] = useState<QtyMode>(\"quantity\");\n return (\n <OrderBookContext.Provider\n value={{\n cellHeight: props.cellHeight,\n onItemClick: props.onItemClick,\n mode,\n totalMode: totalMode || \"quantity\",\n depth: props.depth,\n onModeChange: setMode,\n onTotalModeChange: setTotalMode,\n showTotal: props.showTotal || false,\n pendingOrders: props.pendingOrders,\n symbolInfo: props.symbolInfo,\n }}\n >\n {props.children}\n </OrderBookContext.Provider>\n );\n};\n","import { cn } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\nexport enum CellBarDirection {\n LEFT_TO_RIGHT,\n RIGHT_TO_LEFT,\n}\n\ninterface CellBarProps {\n width: number;\n className?: string;\n direction?: CellBarDirection\n}\n\nexport const CellBar: FC<CellBarProps> = (props) => {\n const { direction = CellBarDirection.RIGHT_TO_LEFT } = props;\n const transform = useMemo(() => {\n const x = Math.max(props.width, 0);\n if (direction === CellBarDirection.LEFT_TO_RIGHT) {\n return { transform: `translateX(${x}%)` };\n }\n return { transform: `translateX(-${x}%)` };\n \n }, [props.width]);\n\n return (\n <div\n className={cn(\n \"oui-absolute oui-right-[-100%] oui-top-0 oui-h-full oui-w-full oui-transition-transform oui-pointer-events-none\",\n direction === CellBarDirection.LEFT_TO_RIGHT && \"oui-left-[-100%]\",\n props.className\n )}\n style={transform}\n />\n );\n};\n","\nimport { OrderBookCellType } from \"../types\";\nimport { DesktopListBox } from \"./listBox.desktop\";\nimport { FC, useMemo } from \"react\";\n\nexport interface Props {\n data: any[];\n}\nexport const DesktopBids: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n // let len = data.length;\n let index = data.length - 1;\n\n while (Number.isNaN(max) && index > 0) {\n max = data[index][2];\n index--;\n }\n\n return max;\n // return data.length > 0 ? data[data.length - 1][2] : 0;\n }, [data]);\n return (\n <DesktopListBox type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { Box } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookCellType } from \"../types\";\nimport { DesktopListBox } from \"./listBox.desktop\";\nimport { FC, useMemo } from \"react\";\nimport { useOrderBookContext } from \"../orderContext\";\nexport interface Props {\n data: number[][];\n}\nexport const DesktopAsks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n let len = data.length;\n let index = 0;\n\n while (Number.isNaN(max) && index < len) {\n max = data[index][2];\n index++;\n }\n\n return max;\n }, [data]);\n \n return (\n <DesktopListBox type={OrderBookCellType.ASK} data={data} countQty={countQty} />\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { commify, commifyOptional, Decimal } from \"@orderly.network/utils\";\nimport {\n ArrowDownShortIcon,\n ArrowUpShortIcon,\n Box,\n cn,\n Flex,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { useOrderBookContext } from \"../orderContext\";\n\ninterface DesktopMarkPriceProps {\n markPrice: number;\n lastPrice: number[];\n asks: number[][];\n bids: number[][];\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const DesktopMarkPrice: FC<DesktopMarkPriceProps> = (props) => {\n const { markPrice = 0, lastPrice, asks, bids, symbolInfo } = props;\n const { showTotal } = useOrderBookContext();\n\n return (\n <Flex py={1} pl={3} pr={showTotal ? 3 : 6} justify={\"between\"}>\n <Flex gap={2}>\n <MiddlePriceView\n markPrice={markPrice}\n lastPrice={lastPrice}\n quote_dp={symbolInfo.quote_dp}\n />\n <MarkPriceView markPrice={markPrice} quote_dp={symbolInfo.quote_dp} />\n </Flex>\n <Spread asks={asks} bids={bids} />\n </Flex>\n );\n};\n\n/**\n * default style is desktop effect\n */\nexport const MiddlePriceView: FC<{\n markPrice: number;\n lastPrice: number[];\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const {\n markPrice = 0,\n lastPrice,\n quote_dp,\n className,\n iconSize = 18,\n } = props;\n\n const [prevLastPrice, middlePrice] = lastPrice;\n\n return (\n <Flex\n gap={1}\n className={cn(\n middlePrice > prevLastPrice\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\",\n className\n )}\n >\n <Text.numeral dp={quote_dp}>{middlePrice}</Text.numeral>\n <Box width={19}>\n {middlePrice < prevLastPrice && (\n <ArrowDownShortIcon size={iconSize} color=\"danger\" opacity={1} />\n )}\n {middlePrice > prevLastPrice && (\n <ArrowUpShortIcon size={iconSize} color=\"success\" opacity={1} />\n )}\n </Box>\n </Flex>\n );\n};\n\n/**\n * default style is desktop effect\n */\nexport const MarkPriceView: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const { quote_dp, className, iconSize = 18 } = props;\n\n return (\n <Tooltip\n content={\n \"Obtained from a third-party oracle, the mark price is calculated as the median of three prices: the last price, the fair price based on the funding rate basis, and the fair price based on the order books.\"\n }\n className=\"oui-max-w-[270px]\"\n >\n <Flex\n gap={1}\n className={cn(\"oui-cursor-pointer oui-text-2xs\", className)}\n >\n <FlagIcon size={iconSize} />\n <Text.numeral\n dp={quote_dp}\n color=\"warning\"\n className=\"oui-underline oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-warning\"\n >\n {props.markPrice}\n </Text.numeral>\n </Flex>\n </Tooltip>\n );\n};\n\nconst Spread: FC<{\n asks: number[][];\n bids: number[][];\n}> = (props) => {\n const { asks, bids } = props;\n\n const spread = useMemo(() => {\n if (bids.length === 0 && asks.length === 0) {\n return 0;\n }\n const bid1 = Number.isNaN(bids[0][0]) ? 0 : bids[0][0];\n const index = asks.reverse().findIndex((item) => !Number.isNaN(item[0]));\n\n let ask1 = 0.0;\n if (index !== -1) {\n ask1 = Number.isNaN(asks[index][0]) ? 0 : asks[index][0];\n }\n const dValue = new Decimal(ask1)\n .sub(bid1)\n .div(new Decimal(ask1).add(bid1).div(2));\n // 0.00006416604461251195\n // 0.000065\n // 0.0065\n return Math.ceil(dValue.toNumber() * 1000000 + 0.1) / 10000;\n }, [asks, bids]);\n\n return (\n <div>\n <Tooltip\n content={\"Spread Ratio of the ask1 and bid1.\"}\n className=\"oui-max-w-[240px]\"\n >\n <Text\n size=\"2xs\"\n intensity={36}\n className={\n \"oui-cursor-pointer oui-underline oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-base-contrast-36\"\n }\n >\n {`${spread}%`}\n </Text>\n </Tooltip>\n </div>\n );\n};\n\nconst FlagIcon = (props: { size: number }) => {\n return (\n <svg\n width={props.size}\n height={props.size}\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M3.75 1.5a.75.75 0 0 1 .75.75h6a.75.75 0 0 1 .75.75v1.5h3a.75.75 0 0 1 .75.75V12a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75v-1.5H4.5v5.25a.75.75 0 0 1-1.5 0V2.25a.75.75 0 0 1 .75-.75M4.5 9h5.25V3.75H4.5zm6.75-3v3.75a.75.75 0 0 1-.75.75H8.25v.75h5.25V6z\"\n fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import { FC, useContext, useMemo } from \"react\";\nimport { OrderBookContext } from \"../orderContext\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const DesktopHeader: FC<Props> = (props) => {\n const { showTotal } = useContext(OrderBookContext);\n return (\n <Flex pl={3} justify={\"between\"} className=\"oui-py-[6px]\">\n <Flex gap={1} className={cn(\"oui-basis-7/12\", showTotal && \"oui-basis-1/2\")}>\n <Box width={\"100%\"}>\n <Title\n name=\"Price\"\n token={props.quote}\n id=\"oui-order-book-header-price\"\n />\n </Box>\n <Box width={\"100%\"}>\n <Title\n name=\"Qty\"\n token={props.base}\n id=\"oui-order-book-header-qty\"\n justifyEnd\n />\n </Box>\n </Flex>\n <Flex gap={1} pr={3} className={cn(\"oui-basis-5/12\", showTotal && \"oui-basis-1/2\")}>\n <Box width={\"100%\"}>\n <Title\n name=\"Total\"\n token={props.base}\n id=\"oui-order-book-header-total-base\"\n justifyEnd\n />\n </Box>\n {showTotal && (\n <Box width={\"100%\"}>\n <Title\n name=\"Total\"\n token={props.quote}\n id=\"oui-order-book-header-total-quote\"\n justifyEnd\n />\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<{\n name: string;\n token: string;\n justifyEnd?: boolean;\n id?: string;\n}> = (props) => {\n const { name, token, justifyEnd = false } = props;\n return (\n <Flex\n id={props.id}\n className={cn(\n \"oui-text-base-contrast-36 oui-text-xs oui-items-end\",\n justifyEnd && \"oui-justify-end\"\n )}\n >\n <span>{name}</span>\n <span>{`(${token})`}</span>\n </Flex>\n );\n};\n","import { Box, Select } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\ninterface DesktopDepthSelectProps {\n depths: string[];\n value?: string;\n onChange?: (depth: number) => void;\n}\n\nexport const DesktopDepthSelect: FC<DesktopDepthSelectProps> = (props) => {\n const options = useMemo(() => {\n return props.depths.map((d) => ({\n value: d,\n label: `${d}`,\n }));\n }, [props.depths]);\n\n return (\n <Box pl={3} width={97} className=\"oui-py-[10px]\">\n <Select.options\n options={options}\n size={\"xs\"}\n value={props.value}\n onValueChange={(value: any) => {\n props.onChange?.(value);\n }}\n />\n </Box>\n );\n};\n","import { FC, useMemo } from \"react\";\n\nimport { useOrderBookContext } from \"../orderContext\";\nimport { Flex, Text } from \"@orderly.network/ui\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const Header: FC<Props> = (props) => {\n const { mode, onModeChange } = useOrderBookContext();\n const currency = useMemo(() => {\n if (mode === \"amount\") {\n return props.quote;\n }\n return props.base;\n }, [mode, props.quote, props.base]);\n\n const qtyLabel = useMemo(() => {\n return mode === \"amount\" ? \"Value\" : \"Qty\";\n }, [mode]);\n\n return (\n <Flex\n justify={\"between\"}\n width={\"100%\"}\n className=\"oui-text-base-contrast-36 oui-text-2xs oui-py-[5px]\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n id=\"oui-order-book-header-price\"\n >\n <Text>Price</Text>\n <Text>{`(${props.quote})`}</Text>\n </Flex>\n <Flex\n direction={\"column\"}\n itemAlign={\"end\"}\n className=\"oui-cursor-pointer\"\n onClick={() =>\n onModeChange?.(mode === \"amount\" ? \"quantity\" : \"amount\")\n }\n >\n <Text>{qtyLabel}</Text>\n <Text>{`(${currency})`}</Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useContext, useMemo } from \"react\";\nimport { CellBar } from \"../cellBar\";\nimport { Decimal, getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { OrderBookCellType, QtyMode } from \"../types\";\nimport { OrderBookContext } from \"../orderContext\";\nimport { Box, cn, Flex, Text } from \"@orderly.network/ui\";\n\nexport interface OrderBookCellProps {\n background: string;\n price: number;\n quantity: number;\n // size: number;\n count: number;\n accumulated: number;\n type: OrderBookCellType;\n mode: QtyMode;\n}\n\nexport const OrderBookCell: FC<OrderBookCellProps> = (props) => {\n const width = (props.accumulated / props.count) * 100;\n const { cellHeight, onItemClick, depth, showTotal, symbolInfo } =\n useContext(OrderBookContext);\n const { base_dp, quote_dp } = symbolInfo;\n\n let qty = Number.isNaN(props.quantity)\n ? \"-\"\n : props.mode === \"amount\"\n ? new Decimal(props.quantity).mul(props.price).toString()\n : props.quantity;\n\n if (showTotal) {\n qty = props.quantity;\n }\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n return (\n <Box\n className={cn(\n \"oui-overflow-hidden oui-relative oui-cursor-pointer oui-tabular-nums oui-text-2xs oui-w-full\",\n showTotal && \"oui-flex-1\"\n )}\n style={{ height: `${cellHeight}px` }}\n onClick={(e) => {\n if (Number.isNaN(props.price) || Number.isNaN(props.quantity)) return;\n\n onItemClick?.([props.price, props.quantity]);\n }}\n >\n <Flex justify={\"between\"}>\n <Text.numeral\n color={props.type === OrderBookCellType.BID ? \"buy\" : \"sell\"}\n dp={dp}\n >\n {props.price}\n </Text.numeral>\n <Text.numeral\n dp={props.mode === \"amount\" ? 2 : base_dp}\n className=\"oui-text-base-contrast-80\"\n >\n {qty}\n </Text.numeral>\n </Flex>\n {Number.isNaN(width) || showTotal ? null : (\n <CellBar\n width={width}\n className={\n props.type === OrderBookCellType.ASK\n ? \"oui-bg-trade-loss/20\"\n : \"oui-bg-trade-profit/20\"\n }\n />\n )}\n </Box>\n );\n};\n","import { FC, useContext, useMemo } from \"react\";\nimport { OrderBookCell } from \"./cell\";\nimport { OrderBookContext, useOrderBookContext } from \"../orderContext\";\nimport { OrderBookCellType } from \"../types\";\nimport { Box } from \"@orderly.network/ui\";\n\ninterface OrderBookListProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const ListBox: FC<OrderBookListProps> = (props) => {\n const { data } = props;\n const { mode } = useOrderBookContext();\n\n return (\n <Box\n id=\"oui-order-book-list\"\n className=\"oui-flex oui-flex-col oui-gap-[1px] oui-w-full\"\n >\n {data.map((item, index) => {\n return (\n <OrderBookCell\n key={index}\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n count={props.countQty}\n type={props.type}\n mode={mode}\n />\n );\n })}\n </Box>\n );\n};\n","import { OrderBookCellType } from \"../types\";\nimport { ListBox } from \"./listBox\";\nimport { FC, useMemo } from \"react\";\n\nexport interface Props {\n data: any[];\n}\nexport const Bids: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n // let len = data.length;\n let index = data.length - 1;\n\n while (Number.isNaN(max) && index > 0) {\n max = data[index][2];\n index--;\n }\n\n return max;\n // return data.length > 0 ? data[data.length - 1][2] : 0;\n }, [data]);\n return (\n <ListBox type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { OrderBookCellType } from \"../types\";\nimport { ListBox } from \"./listBox\";\nimport { FC, useMemo } from \"react\";\nexport interface Props {\n data: number[][];\n}\nexport const Asks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n let len = data.length;\n let index = 0;\n\n while (Number.isNaN(max) && index < len) {\n max = data[index][2];\n index++;\n }\n\n return max;\n }, [data]);\n return (\n <ListBox type={OrderBookCellType.ASK} data={data} countQty={countQty} />\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text, cn, modal } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../orderContext\";\nimport { MarkPriceView, MiddlePriceView } from \"../desktop/markPrice.desktop\";\n\ninterface MarkPriceProps {\n markPrice: number;\n lastPrice: number[];\n}\n\nexport const MarkPrice: FC<MarkPriceProps> = (props) => {\n const { markPrice = 0, lastPrice } = props;\n\n const { symbolInfo } = useOrderBookContext();\n\n const { quote_dp } = symbolInfo;\n\n const [prevLastPrice, middlePrice] = lastPrice;\n\n //\n //\n\n const onMarkPrice = () => {\n modal.alert({\n title: \"Mark price\",\n message: (\n <span className=\"oui-text-3xs oui-text-base-contrast-54\">\n Obtained from a third-party oracle, the mark price is calculated as\n the median of three prices: the last price, the fair price based on\n the funding rate basis, and the fair price based on the order books.\n </span>\n ),\n });\n };\n\n return (\n <Flex id=\"oui-order-book-mark-price\" className=\"oui-py-[6px]\" width={\"100%\"} justify={\"between\"}>\n <MiddlePriceView\n markPrice={props.markPrice}\n lastPrice={props.lastPrice}\n quote_dp={quote_dp}\n className=\"oui-text-sm\"\n iconSize={14}\n />\n <MarkPriceView\n markPrice={props.markPrice}\n quote_dp={quote_dp}\n className=\"oui-text-2xs\"\n iconSize={12}\n />\n </Flex>\n );\n};\n","import { Flex, Box, Picker } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\ninterface DepthSelectProps {\n depth: string[];\n value?: string;\n onChange?: (depth: number) => void;\n}\n\nexport const DepthSelect: FC<DepthSelectProps> = (props) => {\n const options = useMemo(() => {\n return props.depth.map((d) => ({\n value: d,\n label: `${d}`,\n }));\n }, [props.depth]);\n return (\n <Box id=\"oui-order-book-depth\" className=\"oui-pt-2\" >\n {/* <Select size={\"small\"} value={\"0.001\"} /> */}\n <Picker\n options={options}\n fullWidth\n size={\"sm\"}\n value={props.value}\n className=\"oui-text-2xs oui-text-base-contrast-54 \"\n onValueChange={(value) => {\n //\n props.onChange?.(value);\n }}\n />\n </Box>\n );\n};\n","import React, { FC, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Header } from \"./header\";\nimport { Bids } from \"./bids\";\nimport { Asks } from \"./asks\";\nimport { MarkPrice } from \"./markPrice\";\nimport { OrderBookProvider } from \"../orderContext\";\nimport { DepthSelect } from \"./depthSelect\";\nimport { cn, Flex, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { FundingRateWidget } from \"../fundingRate\";\nexport interface OrderBookProps {\n asks: any[];\n bids: any[];\n markPrice: number;\n lastPrice: number[];\n onItemClick?: (item: number[]) => void;\n depths?: string[];\n activeDepth?: string;\n onDepthChange?: (depth: number) => void;\n //\n autoSize?: boolean;\n level?: number;\n base: string;\n quote: string;\n\n isLoading?: boolean;\n\n cellHeight?: number;\n\n className?: string;\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const OrderBook: FC<OrderBookProps> = (props) => {\n const { lastPrice, markPrice, quote, base, isLoading, onDepthChange } = props;\n // const onModeChange = useCallback((mode: QtyMode) => {}, []);\n const symbol = `PERP_${props.symbolInfo.base}_${props.symbolInfo.quote}`;\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n pendingOrders={[]}\n showTotal={false}\n symbolInfo={props.symbolInfo}\n >\n <Flex\n direction={\"column\"}\n p={2}\n id=\"oui-orderbook-mobile\"\n className={cn(\"oui-h-full oui-wfull oui-relative\", props.className)}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n <FundingRateWidget symbol={symbol} />\n <Header quote={quote} base={base} />\n <Asks data={props.asks} />\n <MarkPrice lastPrice={lastPrice} markPrice={markPrice} />\n <Bids data={props.bids} />\n\n <DepthSelect\n depth={props.depths || []}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n {isLoading && (\n <div className=\"oui-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-base-800/70 oui-h-full oui-min-h-[420px]\">\n <Spinner />\n </div>\n )}\n </Flex>\n </OrderBookProvider>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { FundingRateState } from \"./fundingRate.script\";\n\nexport const FundingRate: FC<FundingRateState> = (props) => {\n const predFundingRate = props.data.est_funding_rate;\n const countDown = props.data.countDown;\n\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} pb={2}>\n <Text intensity={36} size=\"2xs\">\n Pred. funding rate\n </Text>\n\n {predFundingRate === null ? (\n \"--\"\n ) : (\n <div className=\"orderly-flex orderly-gap-1 oui-text-2xs\">\n <span className=\"orderly-text-warning\">{`${predFundingRate}%`}</span>\n <span>in</span>\n <span>{countDown}</span>\n </div>\n )}\n </Flex>\n );\n};\n","import { useFundingRate } from \"@orderly.network/hooks\";\n\nexport const useFundingRateScript = (symbol: string) => {\n const data = useFundingRate(symbol);\n return { data };\n};\n\nexport type FundingRateState = ReturnType<typeof useFundingRateScript>;\n","import { useFundingRateScript } from \"./fundingRate.script\";\nimport { FundingRate } from \"./fundingRate.ui\";\n\nexport const FundingRateWidget = (props: { symbol: string }) => {\n const state = useFundingRateScript(props.symbol);\n return <FundingRate {...state} />;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTradingPateContext } from \"../../provider/context\";\nimport {\n useMediaQuery,\n useOrderbookStream,\n useOrderStream,\n useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport { removeTrailingZeros } from \"@orderly.network/utils\";\nimport { MEDIA_TABLET, OrderStatus } from \"@orderly.network/types\";\nimport { getBasicSymbolInfo } from \"../../utils/utils\";\n\nconst CELL_MAX = 30;\nconst DEFAULT_CELL_HEIGHT = 20;\n\nconst SPACE = 104;\n\nexport const useOrderBookScript = (props: {\n symbol: string;\n height?: number;\n}) => {\n const { symbol, height } = props;\n const symbolInfo = useSymbolsInfo()[props.symbol];\n\n const [cellHeight, setCellHeight] = useState(DEFAULT_CELL_HEIGHT);\n\n const [level, setLevel] = useState(10);\n const { base, quote, quote_dp } = getBasicSymbolInfo(symbolInfo);\n\n const [data, { onDepthChange, isLoading, onItemClick, depth, allDepths }] =\n useOrderbookStream(symbol, undefined, {\n level,\n padding: false,\n });\n\n const pendingOrders = usePendingOrderStream(symbol);\n\n // const { height } = useTabContext();\n\n useEffect(() => {\n if (height) {\n // setCellHeight(height.content / level);\n const level = Math.floor(\n (height - SPACE) / ((DEFAULT_CELL_HEIGHT + 1) * 2)\n );\n\n const cellsHeight = (DEFAULT_CELL_HEIGHT + 1) * 2 * level;\n\n const restSpace = height - SPACE - cellsHeight;\n\n console.log(\n \"restSpace\",\n level,\n height,\n SPACE,\n cellsHeight,\n restSpace\n );\n\n if (restSpace > 10) {\n setCellHeight(DEFAULT_CELL_HEIGHT + restSpace / level / 2);\n } else {\n setCellHeight(DEFAULT_CELL_HEIGHT);\n }\n\n setLevel(level);\n }\n }, [height]);\n\n const selDepth = useMemo(() => {\n if (typeof depth === \"undefined\" || typeof quote_dp === \"undefined\") {\n return undefined;\n }\n\n let formattedNumber = removeTrailingZeros(depth);\n return formattedNumber;\n }, [depth, quote_dp]);\n\n const depths = useMemo(() => {\n return allDepths?.map((e) => removeTrailingZeros(e)) || [];\n }, [allDepths, quote_dp]);\n\n const isMWeb = useMediaQuery(MEDIA_TABLET);\n\n return {\n level,\n asks: data?.asks,\n bids: data?.bids,\n markPrice: data?.markPrice,\n lastPrice: data?.middlePrice,\n depths,\n selDepth,\n base,\n quote,\n isLoading,\n onItemClick,\n cellHeight,\n onDepthChange,\n pendingOrders,\n symbolInfo: getBasicSymbolInfo(symbolInfo),\n isMWeb,\n };\n};\n\nexport const usePendingOrderStream = (symbol: string): number[] => {\n const [data] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n symbol: symbol,\n });\n\n const pendingOrders = useMemo(() => {\n const info = data\n ?.filter((item) => item.symbol === symbol)\n .reduce((a, b) => {\n // TODO: check if this is the correct price, when the data is from WS, it crashes\n const price = b.price || b.trigger_price || 0;\n return [...a, price];\n }, []);\n\n return info;\n }, [data, symbol]);\n\n return pendingOrders;\n};\n\nexport type OrderBookState = ReturnType<typeof useOrderBookScript>;\n","import { utils } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { BasicSymbolInfo } from \"../types/types\";\n\nexport const getBasicSymbolInfo = (\n symbolInfo: (\n key?: keyof API.SymbolExt | undefined,\n defaultValue?: utils.ValueOf<API.SymbolExt> | undefined\n ) => any\n): BasicSymbolInfo => {\n return {\n base_dp: symbolInfo(\"base_dp\"),\n quote_dp: symbolInfo(\"quote_dp\"),\n base_tick: symbolInfo(\"base_tick\"),\n base: symbolInfo(\"base\"),\n quote: symbolInfo(\"quote\"),\n };\n};\n","import { useOrderBookScript } from \"./orderBook.script\";\nimport { OrderBook } from \"./orderBook.ui\";\n\nexport const OrderBookWidget = (props: {\n className?: string;\n symbol: string;\n height?: number;\n}) => {\n const state = useOrderBookScript({\n symbol: props.symbol,\n height: props.height,\n });\n return <OrderBook {...state} className={props.className} />;\n};\n","import React, { FC } from \"react\";\nimport {\n Flex,\n Text,\n Box,\n Tooltip,\n modal,\n gradientTextVariants,\n cn,\n} from \"@orderly.network/ui\";\nimport { RiskRateState } from \"./riskRate.script\";\nimport { Pencil } from \"lucide-react\";\nimport { LeverageWidgetId } from \"@orderly.network/ui-leverage\";\n\nexport const RiskRate: FC<RiskRateState> = (props) => {\n const { riskRate, riskRateColor, isConnected, currentLeverage, maxLeverage } =\n props;\n const { isHigh, isMedium, isLow, isDefault } = riskRateColor;\n\n const textColor = isHigh\n ? \"oui-text-danger\"\n : isMedium\n ? \"oui-text-warning\"\n : isLow\n ? gradientTextVariants({ color: \"brand\" })\n : \"\";\n\n return (\n <Box data-risk={\"\"} className=\"oui-space-y-2\">\n <Flex\n itemAlign=\"center\"\n justify=\"start\"\n className=\"oui-w-full oui-bg-base-6 oui-rounded-full oui-h-2 oui-px-[1px]\"\n >\n {isDefault ? (\n <Box\n className=\"oui-bg-gradient-to-r oui-opacity-20 oui-from-[#26fefe] oui-via-[#ff7d00] oui-to-[#d92d6b] oui-h-1.5 oui-rounded-full\"\n style={{ width: \"100%\" }}\n />\n ) : null}\n\n {isHigh ? (\n <Box\n className=\"oui-bg-gradient-to-tr oui-from-[#791438] oui-to-[#ff447c] oui-h-1.5 oui-rounded-full\"\n style={{ width: riskRate }}\n />\n ) : null}\n\n {isMedium ? (\n <Box\n className=\"oui-bg-gradient-to-tr oui-from-[#792e00] oui-to-[#ffb65d] oui-h-1.5 oui-rounded-full\"\n style={{ width: riskRate }}\n />\n ) : null}\n\n {isLow ? (\n <Box\n className=\"oui-bg-gradient-to-tr oui-from-[#59b0fe] oui-to-[#26fefe] oui-h-1.5 oui-rounded-full\"\n style={{ width: riskRate }}\n />\n ) : null}\n </Flex>\n\n <Flex className=\"oui-gap-2\">\n <Flex direction=\"column\" itemAlign=\"start\" className=\"oui-flex-1\">\n <Tooltip content={(<div>hint test</div>) as any}>\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer\"\n >\n Risk rate\n </Text>\n </Tooltip>\n <Text\n size=\"xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className={cn(textColor)}\n >\n {riskRate}\n </Text>\n </Flex>\n\n <Flex direction=\"column\" itemAlign=\"end\" className=\"oui-flex-1\">\n <Tooltip content={(<div>hint test</div>) as any}>\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer\"\n >\n Max account leverage\n </Text>\n </Tooltip>\n <Flex className=\"oui-gap-1\">\n {isConnected ? (\n <Text.numeral suffix={\"x\"}>{currentLeverage}</Text.numeral>\n ) : (\n \"--\"\n )}\n\n <span className={\"oui-text-base-contrast-54\"}>/</span>\n\n {\n // modal.show(LeverageWidgetId, { currentLeverage: 5 });\n isConnected ? (\n <button\n className=\"oui-flex oui-items-center oui-gap-1\"\n onClick={() => {\n modal.show(LeverageWidgetId, { currentLeverage: 5 });\n }}\n >\n <span>{`${maxLeverage ?? \"--\"}x`}</span>\n {typeof maxLeverage !== \"undefined\" && (\n // @ts-ignore\n <Pencil size={14} className=\"oui-text-base-contrast-54\" />\n )}\n </button>\n ) : (\n \"--\"\n )\n }\n </Flex>\n </Flex>\n </Flex>\n </Box>\n );\n};\n","import { useAccount, useLeverage, useMarginRatio } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nconst getRiskRateColor = (riskRate: null | number) => {\n if (riskRate === null) {\n return { isHigh: false, isMedium: false, isLow: false, isDefault: true };\n }\n\n const isLow = riskRate < 40;\n const isMedium = riskRate >= 40 && riskRate < 80;\n const isHigh = riskRate >= 80;\n const isDefault = !isLow && !isMedium && !isHigh;\n\n return { isHigh, isMedium, isLow, isDefault };\n};\n\nexport const useRiskRateScript = () => {\n const { state } = useAccount();\n\n const isConnected = state.status >= AccountStatusEnum.Connected;\n const { marginRatio,currentLeverage, mmr } = useMarginRatio();\n const [maxLeverage] = useLeverage();\n\n const riskRate = useMemo(() => {\n if (!isConnected || marginRatio === null || mmr === null) {\n return \"0%\";\n }\n\n if (marginRatio === 0 || mmr === 0) {\n return \"0%\";\n }\n\n const calculatedRiskRate = new Decimal(mmr)\n .div(marginRatio)\n .mul(100)\n .todp(2, Decimal.ROUND_UP);\n\n // Remove trailing zeroes and add percentage sign\n return `${calculatedRiskRate.toString().replace(/\\.?0+$/, \"\")}%`;\n }, [isConnected, marginRatio, mmr]);\n\n const riskRateNumber = riskRate === \"--\" ? null : parseFloat(riskRate);\n\n const riskRateColor = useMemo(() => {\n return getRiskRateColor(riskRateNumber);\n }, [riskRateNumber]);\n\n return {\n riskRate,\n riskRateColor,\n isConnected,\n currentLeverage,\n maxLeverage\n };\n};\n\nexport type RiskRateState = ReturnType<typeof useRiskRateScript>;\n","import { useRiskRateScript } from \"./riskRate.script\";\nimport { RiskRate } from \"./riskRate.ui\";\n\nexport const RiskRateWidget = () => {\n const state = useRiskRateScript();\n return (<RiskRate {...state} />);\n};\n","import { FC, useEffect, useRef } from \"react\";\nimport { Box, cn, Flex, Grid, TabPanel, Tabs, Text } from \"@orderly.network/ui\";\nimport { OrderBookAndTradesState } from \"./orderBookAndTrades.script\";\nimport { OrderBookWidget } from \"../orderBook\";\nimport { LastTradesWidget } from \"../lastTrades\";\n\nexport const OrderBookAndTrades: FC<OrderBookAndTradesState> = (props) => {\n return (\n <div ref={props.containerRef} className=\"oui-h-full\">\n {(props.containerSize?.width || 0) >= 572 ? (\n <TwoColLayout {...props} />\n ) : (\n <TabLayout {...props} />\n )}\n </div>\n );\n};\n\nconst TwoColLayout: FC<OrderBookAndTradesState> = (props) => {\n return (\n <Grid\n cols={2}\n width={\"100%\"}\n gap={3}\n className=\"oui-auto-rows-fr\"\n style={{\n height: props.containerSize?.height,\n }}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n // pl={3}\n pt={3}\n pb={3}\n r=\"2xl\"\n className=\"oui-bg-base-9\"\n >\n <Title title=\"Order book\" className=\"oui-pl-3\" />\n <OrderBookWidget\n symbol={props.symbol}\n height={\n props.containerSize\n ? props.containerSize.height - 29 - 24\n : undefined\n }\n />\n </Flex>\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n p={3}\n r=\"2xl\"\n className=\"oui-bg-base-9 oui-h-full\"\n >\n <Title title=\"Last trades\" />\n <LastTradesWidget\n symbol={props.symbol}\n style={{\n height: props.containerSize && props.containerSize.height - 29 - 24,\n }}\n />\n </Flex>\n </Grid>\n );\n};\nconst TabLayout: FC<OrderBookAndTradesState> = (props) => {\n return (\n <Box\n // pl={3}\n pt={3}\n pb={3}\n pr={props.tab === \"lastTrades\" ? 3 : 0}\n r=\"2xl\"\n className=\"oui-bg-base-9\"\n style={{\n maxHeight: props.containerSize?.height,\n }}\n >\n <Tabs\n value={props.tab}\n variant=\"contained\"\n onValueChange={(tab) => {\n props.setTab(tab as any);\n }}\n >\n <TabPanel value=\"orderBook\" title={\"Order book\"} >\n <OrderBookWidget\n symbol={props.symbol}\n height={\n props.containerSize\n ? props.containerSize.height - 29 - 18\n : undefined\n }\n />\n </TabPanel>\n <TabPanel value=\"lastTrades\" title={\"Last trades\"}>\n <LastTradesWidget\n symbol={props.symbol}\n style={{\n height: props.containerSize && props.containerSize.height - 29 - 18,\n }}\n />\n </TabPanel>\n </Tabs>\n </Box>\n );\n};\n\nconst Title = (props: { title: string; className?: string }) => {\n return (\n <Text size=\"base\" intensity={80} className={cn(\"oui-pb-[5px]\",props.className)}>\n {props.title}\n </Text>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\n\nexport const useOrderBookAndTradesScript = (symbol: string) => {\n const [containerSize, setContainerSize] = useState<\n | {\n width: number;\n height: number;\n }\n | undefined\n >(undefined);\n\n const [tab, setTab] = useState<\"orderBook\" | \"lastTrades\">(\"orderBook\");\n\n const containerRef = useRef<HTMLDivElement>();\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n const { width, height } = entry.contentRect;\n setContainerSize({\n width,\n height,\n });\n }\n });\n\n const targetDiv = containerRef.current;\n\n if (targetDiv) {\n resizeObserver.observe(targetDiv);\n }\n\n return () => {\n if (targetDiv) {\n resizeObserver.unobserve(targetDiv);\n }\n };\n }, []);\n\n return {\n symbol,\n containerSize,\n containerRef: containerRef as any,\n tab,setTab,\n };\n};\n\nexport type OrderBookAndTradesState = ReturnType<\n typeof useOrderBookAndTradesScript\n>;\n","import { useOrderBookAndTradesScript } from \"./orderBookAndTrades.script\";\nimport { OrderBookAndTrades } from \"./orderBookAndTrades.ui\";\n\nexport const OrderBookAndTradesWidget = (props: {\n symbol: string;\n}) => {\n const state = useOrderBookAndTradesScript(props.symbol);\n return (<OrderBookAndTrades {...state} />);\n};\n","import { FC } from \"react\";\nimport { Box, Flex, Text } from \"@orderly.network/ui\";\nimport { TradingV2State } from \"./tradingV2.script\";\nimport { DataListWidget } from \"../components/dataList\";\nimport { TradingviewWidget } from \"@orderly.network/ui-tradingview\";\nimport { LastTradesWidget } from \"../components/lastTrades\";\nimport { AssetViewWidget } from \"../components/assetView\";\nimport { RiskRateWidget } from \"../components/riskRate\";\nimport { OrderBookAndTradesWidget } from \"../components/orderBookAndTrades\";\n\nexport const TradingV2: FC<TradingV2State> = (props) => {\n return (\n <Flex direction={\"column\"} gap={3} p={3} className=\"oui-bg-base-10\">\n <Flex p={3} width={\"100%\"} height={600} gap={3}>\n <Box className=\"oui-flex-1\" width={\"100%\"} height={\"100%\"}>\n <TradingviewWidget\n symbol={props.symbol}\n libraryPath={props.tradingViewConfig?.library_path}\n scriptSRC={props.tradingViewConfig?.scriptSRC}\n customCssUrl={props.tradingViewConfig?.customCssUrl}\n />\n </Box>\n <Box className=\"oui-flex-1\" width={\"100%\"} height={\"100%\"}>\n <OrderBookAndTradesWidget symbol={props.symbol} />\n </Box>\n </Flex>\n <Box className=\"oui-bg-base-9 oui-rounded-2xl oui-p-3\">\n <DataListWidget {...props.dataList} />\n </Box>\n\n <Box className=\"oui-bg-base-9 oui-rounded-2xl oui-p-3 oui-space-y-8 oui-w-full\">\n <AssetViewWidget />\n </Box>\n\n <Box className=\"oui-bg-base-9 oui-rounded-2xl oui-p-3 oui-space-y-8 oui-w-full\">\n <RiskRateWidget />\n </Box>\n </Flex>\n );\n};\n","import { createContext, PropsWithChildren, useContext } from \"react\";\nimport { useSymbolsInfo, utils } from \"@orderly.network/hooks\";\nimport { TradingPageState, TradingPageV2Props } from \"../types/types\";\nimport { API } from \"@orderly.network/types\";\nimport { getBasicSymbolInfo } from \"../utils/utils\";\n\nexport const TradingPageContext = createContext({} as TradingPageState);\nexport const useTradingPateContext = () => {\n return useContext(TradingPageContext);\n};\n\nexport const TradingPageProvider = (\n props: PropsWithChildren<TradingPageV2Props>\n) => {\n const symbolInfo = useSymbolsInfo()[props.symbol];\n\n console.log(\"trading page provider\", props, \"symbol info\", symbolInfo);\n \n\n return (\n <TradingPageContext.Provider\n value={{\n ...props,\n symbolInfo: {\n ...(getBasicSymbolInfo(symbolInfo)),\n symbol: props.symbol,\n },\n }}\n >\n {props.children}\n </TradingPageContext.Provider>\n );\n};\n\n","import { useTradingPateContext } from \"../provider/context\";\nimport { TradingPageV2Props } from \"../types/types\";\n\nexport const useTradingV2Script = () => {\n const props = useTradingPateContext();\n return props;\n};\n\nexport type TradingV2State = ReturnType<typeof useTradingV2Script>;\n","import { TradingPageV2Props } from \"../types/types\";\nimport { useTradingV2Script } from \"./tradingV2.script\";\nimport { TradingV2 } from \"./tradingV2.ui\";\n\nexport const TradingV2Widget = () => {\n const state = useTradingV2Script();\n return (<TradingV2 {...state} />);\n};\n","import { TradingPageProvider } from \"../provider\";\nimport { TradingPageV2Props } from \"../types/types\";\nimport { TradingV2Widget } from \"./tradingV2.widget\";\n\nexport const TradingPageV2 = (props: TradingPageV2Props) => {\n return (\n <TradingPageProvider\n symbol={props.symbol}\n tradingViewConfig={props.tradingViewConfig}\n onSymbolChange={props.onSymbolChange}\n disableFeatures={props.disableFeatures}\n overrideFeatures={props.overrideFeatures}\n dataList={props.dataList}\n >\n <TradingV2Widget />\n </TradingPageProvider>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/desktop/dataList/dataList.ui.tsx","../src/provider/useTradingLocalStorage.ts","../src/provider/usePositionsCount.ts","../src/provider/usePendingOrderCount.ts","../src/provider/context.tsx","../src/utils/utils.ts","../src/components/desktop/dataList/dataList.script.tsx","../src/components/base/positionHeader/positionHeader.ui.tsx","../src/components/base/positionHeader/positionHeader.script.tsx","../src/components/base/positionHeader/positionHeader.widget.tsx","../src/components/desktop/dataList/setting/setting.ui.tsx","../src/components/desktop/dataList/setting/setting.script.tsx","../src/components/desktop/dataList/setting/setting.widget.tsx","../src/components/desktop/dataList/dataList.widget.tsx","../src/components/base/lastTrades/lastTrades.ui.tsx","../src/components/base/lastTrades/lastTrades.script.tsx","../src/components/base/lastTrades/lastTrades.widget.tsx","../src/components/desktop/assetView/assetView.ui.tsx","../src/components/desktop/assetView/faucet/faucet.ui.tsx","../src/components/desktop/assetView/faucet/faucet.script.tsx","../src/components/desktop/assetView/faucet/faucet.widget.tsx","../src/components/desktop/assetView/assetView.script.tsx","../src/components/desktop/assetView/assetView.widget.tsx","../src/components/base/orderBook/orderBook.ui.tsx","../src/components/desktop/orderBook/index.desktop.tsx","../src/components/desktop/orderBook/listBox.desktop.tsx","../src/components/desktop/orderBook/cell.desktop.tsx","../src/components/base/orderBook/orderContext.tsx","../src/components/base/orderBook/cellBar.tsx","../src/components/desktop/orderBook/bids.desktop.tsx","../src/components/desktop/orderBook/asks.desktop.tsx","../src/components/desktop/orderBook/markPrice.desktop.tsx","../src/components/base/orderBook/midPriceView.tsx","../src/components/base/orderBook/markPrice.tsx","../src/components/desktop/orderBook/header.desktop.tsx","../src/components/desktop/orderBook/depthSelect.desktop.tsx","../src/components/mobile/orderBook/header.tsx","../src/components/mobile/orderBook/cell.tsx","../src/components/mobile/orderBook/listBox.tsx","../src/components/mobile/orderBook/bids.tsx","../src/components/mobile/orderBook/asks.tsx","../src/components/mobile/orderBook/markPrice.tsx","../src/components/mobile/orderBook/depthSelect.tsx","../src/components/mobile/orderBook/index.tsx","../src/components/mobile/fundingRate/fundingRate.ui.tsx","../src/components/mobile/fundingRate/fundingRate.script.tsx","../src/components/mobile/fundingRate/fundingRate.widget.tsx","../src/components/base/orderBook/orderBook.script.tsx","../src/components/base/orderBook/orderBook.widget.tsx","../src/components/desktop/riskRate/riskRate.ui.tsx","../src/components/desktop/riskRate/riskRate.script.tsx","../src/components/desktop/riskRate/riskRate.widget.tsx","../src/components/desktop/orderBookAndTrades/orderBookAndTrades.ui.tsx","../src/components/desktop/orderBookAndTrades/orderBookAndTrades.script.tsx","../src/components/desktop/orderBookAndTrades/orderBookAndTrades.widget.tsx","../src/components/desktop/layout/splitLayout/splitLayout.tsx","../src/components/desktop/layout/splitLayout/splitLineBar.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.ui.tsx","../src/components/mobile/bottomNavBar/chain/chain.ui.tsx","../src/components/mobile/bottomNavBar/chain/chain.script.tsx","../src/components/mobile/bottomNavBar/chain/chain.widget.tsx","../src/components/mobile/bottomNavBar/account/account.ui.tsx","../src/components/mobile/bottomNavBar/account/account.script.tsx","../src/components/mobile/accountSheet/accountSheet.ui.tsx","../src/components/mobile/accountSheet/icons.tsx","../src/components/mobile/accountSheet/accountSheet.script.tsx","../src/components/mobile/accountSheet/accountSheet.widget.tsx","../src/components/mobile/bottomNavBar/account/account.widget.tsx","../src/components/mobile/bottomNavBar/balance/balance.ui.tsx","../src/components/mobile/bottomNavBar/balance/balance.script.tsx","../src/components/mobile/portfolioSheet/portfolioSheet.ui.tsx","../src/components/mobile/portfolioSheet/portfolioSheet.script.tsx","../src/components/mobile/portfolioSheet/riskIndicator.tsx","../src/components/mobile/portfolioSheet/portfolioSheet.widget.tsx","../src/components/mobile/bottomNavBar/balance/balance.widget.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.script.tsx","../src/components/mobile/bottomNavBar/bottomNavBar.widget.tsx","../src/components/mobile/topTab/topTab.ui.tsx","../src/components/mobile/topTab/topTab.script.tsx","../src/components/mobile/lastTrades/lastTrades.widget.tsx","../src/components/mobile/tradeData/tradeData.ui.tsx","../src/components/mobile/tradeData/tradeData.script.tsx","../src/components/mobile/tradeData/tradeData.widget.tsx","../src/components/mobile/topTab/topTab.widget.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.ui.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.script.tsx","../src/components/mobile/orderBookAndEntry/orderBookAndEntry.widget.tsx","../src/pages/trading/trading.ui.mobile.tsx","../src/components/base/secondaryLogo/index.tsx","../src/components/mobile/dataList/dataList.ui.tsx","../src/components/mobile/dataList/dataList.script.tsx","../src/components/mobile/dataList/dataList.widget.tsx","../src/pages/trading/trading.ui.desktop.tsx","../src/pages/trading/trading.script.tsx","../src/components/desktop/layout/useSplitPersistent.ts","../src/components/desktop/layout/switchLayout.tsx","../src/components/desktop/layout/removablePanel.tsx","../src/pages/trading/trading.ui.tsx","../src/pages/trading/trading.widget.tsx","../src/pages/trading/trading.page.tsx"],"names":["Box","Divider","Flex","TabPanel","Tabs","useLocalStorage","useTradingLocalStorage","props","unPnlPriceBasis","setUnPnlPriceBasic","pnlNotionalDecimalPrecision","setPnlNotionalDecimalPrecision","showAllSymbol","setShowAllSymbol","hideAssets","setHideAssets","usePositionStream","useMemo","useDataTap","usePositionsCount","symbol","data","count","useOrderStream","AlgoOrderRootType","OrderStatus","TabType","usePendingOrderCount","pendingOrdersPageSizeKey","tpslOrdersPageSizeKey","pendingOrders","pendingCount","tpslOrders","tpslCount","pendingOrderCount","tpSlOrderCount","createContext","useContext","useSymbolsInfo","MEDIA_TABLET","getBasicSymbolInfo","symbolInfo","jsx","TradingPageContext","useTradingPageContext","TradingPageProvider","tabletMediaQuery","rest","useDataListScript","current","sharePnLConfig","includedPendingOrder","localStorage","onSymbolChange","positionCount","PositionsWidget","DesktopOrderListWidget","Checkbox","Statistic","Text","Decimal","useMediaQuery","jsxs","PositionHeader","MobileLayout","DesktopLayout","UnrealPnL","Notional","checked","unrealPnLClsName","unrealPnLROIClsName","usePositionHeaderScript","calcMode","aggregated","unrealPnL","unrealPnlROI","notional","PositionHeaderWidget","state","useState","Button","DropdownMenuContent","DropdownMenuRoot","DropdownMenuTrigger","SettingFillIcon","Setting","open","setOpen","DecimalPrecisionCheckbox","e","UnPnlPriceBasisCheckBox","value","onValueChange","RadioButton","sel","label","onCheckChange","SelIcon","UnselIcon","useSettingScript","SettingWidget","DataList","PositionsView","DataListWidget","cn","Grid","ListView","OrderSide","commifyOptional","LastTrades","Header","List","Row","key","left","mid","right","classNames","item","index","useMarketTradeStream","useLastTradesScript","isLoading","config","base","quote","baseDp","quoteDp","LastTradesWidget","useCallback","ArrowDownShortIcon","EyeIcon","EyeCloseIcon","ChevronDownIcon","Tooltip","gradientTextVariants","AuthGuard","AccountStatusEnum","useAccount","useAppContext","FaucetUi","useConfig","useMutation","useWalletConnector","ChainNamespace","isTestnet","modal","toast","useFaucetScript","connectedChain","namespace","account","operatorUrl","getTestUSDC","isMutating","loading","setLoading","showFaucet","message","res","resolve","error","FaucetWidget","Fragment","useCurrentStatusText","wrongNetwork","TooltipContent","description","formula","TotalValue","totalValue","visible","onToggleVisibility","AssetDetail","unit","rule","isConnected","showPercentage","placeholder","AssetValueList","freeCollateral","marginRatioVal","renderMMR","optionsOpen","setOptionsOpen","toggleOpen","prevOpen","AssetView","networkId","isFirstTimeDeposit","onDeposit","onWithdraw","toggleVisible","title","titleColor","titleClsName","useAccountInstance","useEventEmitter","useSettleSubscription","useWalletSubscription","usePrivateQuery","useCollateral","useMarginRatio","capitalizeString","DepositAndWithdrawWithSheetId","DepositAndWithdrawWithDialogId","useFirstTimeDeposit","unavailable","getKeyMemo","now","ninetyDaysAgo","startTime","endTime","searchParams","depositHistoryData","useAssetViewScript","matches","marginRatio","mmr","totalUnrealizedROI","positionsInfo","openDepositAndWithdraw","viewName","result","ee","onSettle","setVisible","side","transStatus","msg","status","_freeCollateral","_marginRatioVal","_mmr","_totalValue","AssetViewWidget","useEffect","useRef","getPrecisionByNumber","parseNumber","OrderBookContext","useOrderBookContext","OrderBookProvider","mode","setMode","totalMode","setTotalMode","CellBar","direction","transform","x","DesktopOrderBookCell","cellHeight","showTotal","onItemClick","depth","currentHover","base_dp","quote_dp","width","dp","totalAmount","isPendingOrder","priceStr","TooltipTrigger","TooltipRoot","TooltipArrow","DesktopListBox","type","findMaxItem","priceDp","maxQty","a","b","hoverIndex","setHoverIndex","Tip","isHover","calcHintInfo","totalInfo","hintInfo","content","contentDp","DesktopBids","countQty","max","DesktopAsks","len","ArrowUpShortIcon","MiddlePriceView","markPrice","lastPrice","className","iconSize","prevLastPrice","middlePrice","down","up","SimpleDialog","MarkPriceView","FlagIcon","DesktopMarkPrice","asks","bids","Spread","spread","bid1","ask1","dValue","DesktopHeader","Title","name","token","justifyEnd","Select","DesktopDepthSelect","options","d","Spinner","DesktopOrderBook","onDepthChange","divRef","setShowTotal","rangeInfo","resizeObserver","entries","entry","targetDiv","onModeChange","currency","qtyLabel","OrderBookCell","qty","ListBox","Bids","Asks","MarkPrice","Picker","DepthSelect","FundingRate","predFundingRate","countDown","useFundingRate","useFundingRateScript","FundingRateWidget","OrderBook","useOrderbookStream","removeTrailingZeros","DEFAULT_CELL_HEIGHT","SPACE","useOrderBookScript","height","setCellHeight","level","setLevel","allDepths","usePendingOrderStream","cellsHeight","restSpace","selDepth","depths","isMWeb","price","OrderBookWidget","EditIcon","LeverageWidgetId","RiskRate","riskRate","riskRateColor","currentLeverage","maxLeverage","isHigh","isMedium","isLow","isDefault","textColor","useLeverage","getRiskRateColor","useRiskRateScript","riskRateNumber","_curLeverage","_maxLeverage","RiskRateWidget","OrderBookAndTrades","TwoColLayout","TabLayout","tab","useOrderBookAndTradesScript","containerSize","setContainerSize","setTab","containerRef","OrderBookAndTradesWidget","Split","SplitLineBar","onMouseDown","SplitLayout","onSizeChange","barProps","_","num","ChainIcon","ChainSelectorSheetId","Chain","r","useChainScript","chainId","setChainId","isTestnetChain","ChainWidget","formatAddress","Account","ArrowRightShortIcon","HeadIcon","CopyIcon","USDCIcon","size","OrderlyIcon","AccountSheet","AccountInfo","ReferralInfo","TradingRewardsInfo","TWType","useChains","useCurEpochEstimate","useEpochInfo","useReferralInfo","useModal","useAccountSheetScript","accountId","address","hide","disconnect","showGetTestUSDC","chainName","useGetChains","onCopyAddress","affiliateCommission30D","traderCommission30D","isAffiliate","isTrader","onClickReferral","useReferral","curEpochId","estRewards","onClickTradingRewards","useTradingRewards","onDisconnect","gettingTestUSDC","_onClickReferral","_onClick","curEpochEstimate","list","curEpoch","mainChains","findByChainId","chain","AccountSheetWidget","useAccountScript","referral","tradingRewards","bottomSheetLeading","AccountWidget","Balance","MaybeEqual","RefreshIcon","Slider","usePortfolioSheetScript","assets","useAssets","useMarginRatioAndLeverage","showSliderTip","setShowSliderTip","onSettlePnL","toggleHideAssets","totalCollateral","availableBalance","curLeverage","update","leverageLevers","marks","leverage","setLeverage","step","onLeverageChange","onSave","err","onValueCommit","getMarginRatioColor","imr","high","low","RiskIndicator","PortfolioSheet","Asset","MarginRatio","Leverage","Buttons","onUnsettleClick","clsName","min","percent","PortfolioSheetWidget","useBalanceScript","isEnableTrading","onShowPortfolioSheet","total","BalanceWidget","BottomNavBar","useBottomNavBarScript","BottomNavBarWidget","useTopTabScript","MWebLastTrades","TradeData","showUSDC","useTickerStream","useTradeDataScript","ticker","vol_24h","close","volume","openInterest","TradeDataWidget","TradingviewWidget","TopTab","tradingViewConfig","ChevronIcon","TopTabWidget","OrderEntryWidget","OrderBookAndEntry","setHeight","div","useOrderBookAndEntryScript","OrderBookAndEntryWidget","MarketsSheetWidget","TokenInfoBarWidget","SimpleSheet","useAppConfig","SecondaryLogo","appIcons","secondary","cancelAllOrders","cancelAllTPSLOrders","MobileOrderListWidget","MobilePositionsWidget","OrdersView","SymbolControlHeader","onSymbol","topBar","useSplitPersistent","defaulValue","dep","useTradingScript","openMarketsSheet","setOpenMarketsSheet","animating","setAnimating","collapsed","setCollapsed","positions","setPositions","layout","setLayout","mainSplitSize","setMainSplitSize","dataListSplitSize","setDataListSplitSize","orderBookSplitSize","setOrderbookSplitSize","onCollapse","updatePositions","currentIdx","targetIdx","pos","i","canTrading","showPositionIcon","getOffsetSizeNum","SideMarketsWidget","TokenInfoBarFullWidget","CloseIcon","DropdownMenuPortal","SwitchLayout","SwitchLayoutDropDown","LayoutIcon","renderItem","position","OrderEntryIcon","RemovablePanel","showIndicator","TopIcon","MiddleIcon","BottomIcon","Icon","idx","IndicatorIcon","onLayout","topBarHeight","bottomBarHeight","space","tokenInfoBarHeight","marketsWidth","orderEntryMinWidth","orderEntryMaxWidth","orderbookMinWidth","orderbookMaxWidth","orderbookMinHeight","orderbookMaxHeight","tradingViewMinWidth","dataListMinHeight","minScreenHeight","marketsView","assetsOrderEntryMargin","orderEntryView","tokenInfoBarView","tradingView","orderbookView","dataListView","tradingViewAndOrderbookView","renderTradingViewAndOrderbookView","mainView","useScreen","Trading","isMobile","TradingWidget","TradingPage"],"mappings":"AACA,OAAS,OAAAA,GAAK,WAAAC,GAAS,QAAAC,GAAM,YAAAC,GAAU,QAAAC,OAAkB,sBCDzD,OAAS,mBAAAC,OAAuB,yBAEzB,IAAMC,EAA0BC,GAEjC,CACJ,GAAM,CAACC,EAAiBC,CAAkB,EAAIJ,GAC5C,kBACA,WACF,EACM,CAACK,EAA6BC,CAA8B,EAChEN,GAAgB,8BAA+BE,GAAO,6BAA+B,CAAC,EAClF,CAACK,EAAeC,CAAgB,EAAIR,GACxC,gBACA,EACF,EAEM,CAACS,EAAYC,CAAa,EAAIV,GAClC,aACA,EACF,EAEA,MAAO,CACL,gBAAAG,EACA,mBAAAC,EACA,4BAAAC,EACA,+BAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,cAAAC,CACF,CACF,EC/BA,OAAS,qBAAAC,OAAyB,yBAElC,OAAS,WAAAC,OAAe,QACxB,OAAS,cAAAC,OAAkB,6BAEpB,IAAMC,GAAqBC,GAAoB,CACpD,GAAM,CAAE,cAAAR,CAAc,EAAIN,EAAuB,EAC3C,CAACe,CAAI,EAAIL,GAAkBJ,EAAgB,OAAYQ,CAAM,EAE7DE,EAAQL,GAAQ,IACbI,EAAK,MAAM,OACjB,CAACA,EAAK,MAAM,MAAM,CAAC,EAKtB,MAAO,CACL,cAJoBH,GAAWI,CAAK,GAAK,CAK3C,CACF,ECnBA,OAA0B,kBAAAC,OAAsB,yBAEhD,OAAS,qBAAAC,GAAmB,eAAAC,OAAmB,yBAE/C,OAAS,WAAAC,OAAe,6BACxB,OAAS,cAAAR,OAAkB,6BAEpB,IAAMS,GAAwBP,GAAoB,CACvD,GAAM,CAAE,cAAAR,CAAc,EAAIN,EAAuB,EAE3CsB,EAA2B,WAAWF,GAAQ,OAAO,YACrDG,EAAwB,WAAWH,GAAQ,KAAK,YAKhD,CAACI,EAAe,CAAE,MAAOC,CAAa,CAAC,EAAIR,GAC/C,CACE,OAAQX,EAAgB,OAAYQ,EACpC,OAAQK,GAAY,WACpB,SAAU,CAACD,GAAkB,iBAAkBA,GAAkB,KAAK,CAGxE,EACA,CACE,SAAU,EACZ,CACF,EAEM,CAACQ,EAAY,CAAE,MAAOC,CAAU,CAAC,EAAIV,GACzC,CACE,OAAQX,EAAgB,OAAYQ,EACpC,OAAQK,GAAY,WACpB,SAAU,CAACD,GAAkB,iBAAkBA,GAAkB,KAAK,CAGxE,EACA,CACE,SAAU,EACZ,CACF,EAEMU,EAAoBhB,GAAWa,CAAY,GAAK,EAChDI,EAAiBjB,GAAWe,CAAS,GAAK,EAEhD,MAAO,CACL,kBAAAC,EACA,eAAAC,CACF,CACF,ECjDA,OAAS,iBAAAC,GAAkC,cAAAC,OAAkB,QAC7D,OAAS,kBAAAC,OAAsB,yBAE/B,OAAS,gBAAAC,OAAoB,yBCCtB,IAAMC,GACXC,IAKO,CACL,QAASA,EAAW,SAAS,EAC7B,SAAUA,EAAW,UAAU,EAC/B,UAAWA,EAAW,WAAW,EACjC,KAAMA,EAAW,MAAM,EACvB,MAAOA,EAAW,OAAO,CAC3B,GDEE,cAAAC,OAAA,oBAZG,IAAMC,GAAqBP,GAAc,CAAC,CAAqB,EACzDQ,EAAwB,IAC5BP,GAAWM,EAAkB,EAGzBE,GACXtC,GACG,CACH,GAAM,CAAE,iBAAAuC,EAAmBP,GAAc,GAAGQ,CAAK,EAAIxC,EAC/CkC,EAAaH,GAAe,EAAE/B,EAAM,MAAM,EAEhD,OACEmC,GAACC,GAAmB,SAAnB,CACC,MAAO,CACL,GAAGpC,EACH,iBAAkBuC,EAClB,WAAY,CACV,GAAGN,GAAmBC,CAAU,EAChC,OAAQlC,EAAM,MAChB,CACF,EAEC,SAAAA,EAAM,SACT,CAEJ,EEjBO,IAAMyC,GACXzC,GAIG,CACH,GAAM,CACJ,QAAA0C,EACA,iBAAAH,EACA,4BAAApC,EACA,eAAAwC,EACA,OAAA9B,EACA,qBAAA+B,CACF,EAAI5C,EACE6C,EAAe9C,EAAuB,CAC1C,4BAAAI,CACF,CAAC,EACK,CAAE,eAAA2C,CAAe,EAAIT,EAAsB,EAE3C,CAAE,cAAAU,CAAc,EAAInC,GAAkBZ,EAAM,MAAM,EAClD,CAAE,kBAAA2B,EAAmB,eAAAC,CAAe,EAAIR,GAC5CpB,EAAM,MACR,EAEA,MAAO,CACL,QAAA0C,EACA,iBAAAH,EAEA,eAAAI,EACA,OAAA9B,EACA,SAAUgC,EAAa,gBACvB,qBAAAD,EACA,GAAGC,EACH,cAAAE,EACA,kBAAApB,EACA,eAAAC,EACA,eAAAkB,CACF,CACF,ENjDA,OAAS,mBAAAE,OAAuB,gCAChC,OAAS,0BAAAC,GAAwB,WAAA9B,OAAe,6BAChD,OAAS,eAAAD,OAAmB,yBOJ5B,OAAS,YAAAgC,GAAU,WAAAxD,GAAS,QAAAC,GAAM,aAAAwD,GAAW,QAAAC,OAAY,sBAEzD,OAAS,WAAAC,OAAe,yBACxB,OAAS,iBAAAC,OAAqB,yBAM1B,cAAAnB,EAgBE,QAAAoB,OAhBF,oBAJG,IAAMC,GAA2CxD,GAC/BsD,GAActD,EAAM,gBAAgB,EAGzDmC,EAACsB,GAAA,CAAc,GAAGzD,EAAO,EAEzBmC,EAACuB,GAAA,CAAe,GAAG1D,EAAO,EAIxByD,GAAyCzD,GAE3CuD,GAAC5D,GAAA,CACC,UAAW,SACX,IAAK,EACL,MAAO,OACP,UAAW,QACX,EAAG,EACH,UAAU,iCAEV,UAAA4D,GAAC5D,GAAA,CAAK,MAAO,OAAQ,QAAS,UAC5B,UAAAwC,EAACwB,GAAA,CACC,WAAY,CACV,MAAO,yCACP,KAAM,aACR,EACC,GAAG3D,EACN,EACAmC,EAACyB,GAAA,CACC,WAAY,CACV,MAAO,yCACP,KAAM,aACR,EACC,GAAG5D,EACN,GACF,EACAmC,EAACzC,GAAA,CAAQ,UAAU,aAAa,EAChC6D,GAAC5D,GAAA,CAAK,UAAU,mCACd,UAAAwC,EAACe,GAAA,CACC,GAAG,kCACH,MAAM,QACN,QAASlD,EAAM,cACf,gBAAkB6D,GAAqB,CACrC7D,EAAM,iBAAiB6D,CAAO,CAChC,EACF,EAEA1B,EAAC,SACC,UAAU,4DACV,QAAQ,kCACT,kCAED,GACF,GACF,EAGEuB,GAA0C1D,GAE5CuD,GAAC5D,GAAA,CAAK,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,MAAO,OAAQ,QAAS,QAClD,UAAAwC,EAACwB,GAAA,CACE,GAAG3D,EACJ,WAAY,CAAE,MAAO,2BAA4B,EACnD,EACAmC,EAACyB,GAAA,CACE,GAAG5D,EACJ,WAAY,CAAE,MAAO,2BAA4B,EACnD,GACF,EAIE2D,GAUD3D,GAAU,CACb,IAAM8D,EACJ,OAAO9D,EAAM,WAAc,SACvBA,EAAM,WAAa,EACjB,wBACA,sBACF,4BAEA+D,EACJ,OAAO/D,EAAM,WAAc,UAAYA,EAAM,aACzCA,EAAM,cAAgB,EACpB,0BACA,yBACF,4BAEN,OACEmC,EAACgB,GAAA,CAAU,MAAM,cAAc,WAAYnD,EAAM,WAC/C,SAAAuD,GAAC5D,GAAA,CAAK,IAAK,EACT,UAAAwC,EAACiB,GAAK,QAAL,CACC,GAAIpD,EAAM,4BACV,GAAIqD,GAAQ,WACZ,UAAW,GACX,UAAWS,EAEV,SAAA9D,EAAM,WAAa,KACtB,EACC,OAAOA,EAAM,aAAiB,KAC7BmC,EAACiB,GAAK,QAAL,CACC,OAAO,IACP,OAAO,IACP,KAAK,cACL,KAAK,MACL,GAAIpD,EAAM,4BACV,GAAIqD,GAAQ,WACZ,UAAWU,EAEV,SAAA/D,EAAM,aACT,GAEJ,EACF,CAEJ,EAEM4D,GAUD5D,GAEDmC,EAACgB,GAAA,CAAU,MAAM,WAAW,WAAYnD,EAAM,WAC5C,SAAAmC,EAACiB,GAAK,QAAL,CACC,GAAIpD,EAAM,4BACV,GAAIqD,GAAQ,WACZ,UAAW,GAEV,SAAArD,EAAM,UAAY,KACrB,EACF,ECxJJ,OAAS,qBAAAS,OAAyB,yBAClC,OAAS,cAAAE,OAAkB,6BAIpB,IAAMqD,GAA2BhE,GAKlC,CACJ,GAAM,CACJ,4BAAAG,EACA,gBAAAF,EACA,OAAAY,EACA,iBAAA0B,CACF,EAAIvC,EACEiE,EAAWhE,EAEX,CAACa,CAAI,EAAIL,GAAkBI,EAAQ,CACvC,SAAAoD,CACF,CAAC,EACKC,EAAavD,GAAWG,EAAK,UAAU,EAEvCqD,EAAYD,GAAY,iBACxBE,EAAeF,GAAY,aAC3BG,EAAWH,GAAY,SACvB,CAAE,cAAA7D,EAAe,iBAAAC,CAAiB,EAAIP,EAAuB,EAEnE,MAAO,CACL,4BAAAI,EACA,UAAAgE,EACA,aAAAC,EACA,SAAAC,EACA,iBAAA9B,EACA,cAAAlC,EACA,iBAAAC,CACF,CACF,EC5BS,cAAA6B,OAAA,oBAPF,IAAMmC,GAAwBtE,GAK/B,CACJ,IAAMuE,EAAQP,GAAwBhE,CAAK,EAC3C,OAAOmC,GAACqB,GAAA,CAAgB,GAAGe,EAAM,CACnC,ECXA,OAA0B,YAAAC,OAAgB,QAC1C,OACE,UAAAC,GACA,YAAAvB,GACA,WAAAxD,GACA,uBAAAgF,GACA,oBAAAC,GACA,uBAAAC,GACA,QAAAjF,GACA,mBAAAkF,GACA,QAAAzB,OACK,sBAOD,OACE,OAAAjB,EADF,QAAAoB,OAAA,oBAJC,IAAMuB,GAA6B9E,GAAU,CAClD,GAAM,CAAC+E,EAAMC,CAAO,EAAIR,GAAS,EAAK,EACtC,OACEjB,GAAC5D,GAAA,CAAK,IAAK,EACT,UAAA4D,GAAC5D,GAAA,CAAK,IAAK,EACT,UAAAwC,EAACe,GAAA,CACC,GAAG,kCACH,MAAM,QACN,QAASlD,EAAM,cACf,gBAAkB6D,GAAqB,CACrC7D,EAAM,iBAAiB6D,CAAO,CAChC,EACF,EACA1B,EAAC,SACC,UAAU,2DACV,QAAQ,kCACT,kCAED,GACF,EAEAoB,GAACoB,GAAA,CAAiB,KAAMI,EAAM,aAAcC,EAC1C,UAAA7C,EAACyC,GAAA,CAAoB,QAAO,GAC1B,SAAAzC,EAACsC,GAAA,CACC,KAAK,KACL,KAAK,SACL,QAAQ,YACR,UAAU,8CAEV,SAAAtC,EAAC0C,GAAA,CACC,KAAM,GACN,MAAM,QACN,QAAS,EACT,UAAU,+CACZ,EACF,EACF,EACA1C,EAACuC,GAAA,CACC,UAAU,kCACV,YAAa,EACb,MAAM,MAEN,SAAAnB,GAAC,OAAI,UAAU,oCACb,UAAApB,EAACiB,GAAA,CAAK,UAAU,yBAAyB,8BAAkB,EAC3DjB,EAACzC,GAAA,EAAQ,EACTyC,EAACiB,GAAA,CAAK,UAAU,8CAA8C,gDAE9D,EACAjB,EAAC8C,GAAA,CACC,MAAOjF,EAAM,4BACb,cAAgBkF,GAAM,CACpBlF,EAAM,+BAA+BkF,CAAC,EACtCF,EAAQ,EAAK,CACf,EACF,EACA7C,EAACzC,GAAA,CAAQ,UAAU,WAAW,EAC9ByC,EAACiB,GAAA,CAAK,UAAU,8CAA8C,sCAE9D,EACAjB,EAACgD,GAAA,CACC,MAAOnF,EAAM,gBACb,cAAgBkF,GAAM,CACpBlF,EAAM,mBAAmBkF,CAAC,EAC1BF,EAAQ,EAAK,CACf,EACF,GACF,EACF,GACF,GACF,CAEJ,EAEMG,GAA2BnF,GAG3B,CACJ,GAAM,CAAE,MAAAoF,EAAO,cAAAC,CAAc,EAAIrF,EAEjC,OACEuD,GAAC5D,GAAA,CAAK,IAAK,EACT,UAAAwC,EAACmD,GAAA,CACC,IAAKF,IAAU,YACf,MAAO,aACP,MAAO,YACP,cAAeC,EACjB,EACAlD,EAACmD,GAAA,CACC,IAAKF,IAAU,YACf,MAAO,aACP,MAAO,YACP,cAAeC,EACjB,GACF,CAEJ,EAEMJ,GAA4BjF,GAG5B,CACJ,GAAM,CAAE,MAAAoF,EAAO,cAAAC,CAAc,EAAIrF,EACjC,OACEuD,GAAC5D,GAAA,CAAK,IAAK,EACT,UAAAwC,EAACmD,GAAA,CACC,IAAKF,IAAU,EACf,MAAO,EACP,MAAO,EACP,cAAeC,EACjB,EACAlD,EAACmD,GAAA,CACC,IAAKF,IAAU,EACf,MAAO,GACP,MAAO,EACP,cAAeC,EACjB,EACAlD,EAACmD,GAAA,CACC,IAAKF,IAAU,EACf,MAAO,IACP,MAAO,EACP,cAAeC,EACjB,GACF,CAEJ,EAyBMC,GAAetF,GAKf,CACJ,GAAM,CAAE,IAAAuF,EAAK,MAAAC,EAAO,MAAAJ,EAAO,cAAAK,CAAc,EAAIzF,EAC7C,OACEuD,GAAC5D,GAAA,CACC,QAAUuF,GAAM,CACdO,EAAcL,CAAK,EACnBF,EAAE,gBAAgB,CACpB,EACA,IAAK,EACL,UAAU,qBAET,UAAAK,EAAMpD,EAACuD,GAAA,EAAQ,EAAKvD,EAACwD,GAAA,EAAU,EAChCxD,EAACiB,GAAA,CAAK,KAAK,MAAM,UAAWmC,EAAM,GAAK,GACpC,SAAAC,EACH,GACF,CAEJ,EAEME,GAAU,IAEZnC,GAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,eACL,MAAM,6BACN,UAAU,iBAEV,UAAApB,EAAC,QACC,EAAE,qIACF,KAAK,OACL,YAAY,MACd,EACAA,EAAC,UAAO,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,GAClC,EAIEwD,GAAY,IAEdxD,EAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAA,EAAC,QACC,EAAE,qIACF,KAAK,OACL,YAAY,MACd,EACF,EC3NG,IAAMyD,GAAoB5F,GAO3B,CACJ,GAAM,CACJ,4BAAAG,EACA,+BAAAC,EACA,gBAAAH,EACA,mBAAAC,EACA,cAAAG,EACA,iBAAAC,CACF,EAAIN,EACJ,MAAO,CACL,4BAAAG,EACA,+BAAAC,EACA,gBAAAH,EACA,mBAAAC,EACA,cAAAG,EACA,iBAAAC,CACF,CACF,ECdS,cAAA6B,OAAA,oBATF,IAAM0D,GAAiB7F,GAOtB,CACN,IAAMuE,EAAQqB,GAAiB5F,CAAK,EACpC,OAAOmC,GAAC2C,GAAA,CAAS,GAAGP,EAAO,CAC7B,EZII,OAII,OAAApC,EAJJ,QAAAoB,OAAA,oBARG,IAAMuC,GAA+B9F,GAQxCuD,GAAC1D,GAAA,CACC,aAAcG,EAAM,qBACpB,QAAQ,YACR,SACEmC,EAAC0D,GAAA,CACC,4BAA6B7F,EAAM,4BACnC,+BAAgCA,EAAM,+BACtC,gBAAiBA,EAAM,gBACvB,mBAAoBA,EAAM,mBAC1B,cAAeA,EAAM,cACrB,iBAAkBA,EAAM,iBAC1B,EAEF,KAAK,KACL,UAAU,aACV,WAAY,CAEV,YAAa,2BACf,EAEA,UAAAmC,EAACvC,GAAA,CACC,kBACA,OACGI,EAAM,eAAiB,GAAK,EACzB,aAAgCA,EAAM,aAAa,gBAIzD,SAAAmC,EAAC4D,GAAA,CAAe,GAAG/F,EAAO,EAC5B,EACAmC,EAACvC,GAAA,CACC,gBACA,OACGI,EAAM,mBAAqB,GAAK,EAC7B,WAA8BA,EAAM,iBAAiB,cAI3D,SAAAmC,EAACc,GAAA,CACC,KAAM9B,GAAQ,QACd,aAAcD,GAAY,WAC1B,OAAQlB,EAAM,cAAgB,OAAYA,EAAM,OAChD,eAAgBA,EAAM,eACxB,EACF,EACAmC,EAACvC,GAAA,CACC,cACA,OACGI,EAAM,gBAAkB,GAAK,EAC1B,SAA4BA,EAAM,cAAc,YAItD,SAAAmC,EAACc,GAAA,CACC,KAAM9B,GAAQ,MACd,aAAcD,GAAY,WAC1B,OAAQlB,EAAM,cAAgB,OAAYA,EAAM,OAChD,eAAgBA,EAAM,eACxB,EACF,EACAmC,EAACvC,GAAA,CAAS,eAA+B,eACvC,SAAAuC,EAACc,GAAA,CACC,KAAM9B,GAAQ,OACd,OAAQnB,EAAM,cAAgB,OAAYA,EAAM,OAChD,4BAA6BA,EAAM,4BACnC,aAAckB,GAAY,OAC1B,eAAgBlB,EAAM,eACxB,EACF,EACAmC,EAACvC,GAAA,CACC,sBACA,sBAEA,SAAAuC,EAACc,GAAA,CACC,KAAM9B,GAAQ,aACd,4BAA6BnB,EAAM,4BACnC,OAAQA,EAAM,cAAgB,OAAYA,EAAM,OAChD,eAAgBA,EAAM,eACxB,EACF,GACF,EAIE+F,GAAoC/F,GAEtCuD,GAAC5D,GAAA,CAAK,UAAU,SAAS,MAAM,OAAO,OAAO,OAC3C,UAAAwC,EAACmC,GAAA,CACC,4BAA6BtE,EAAM,4BACnC,OAAQA,EAAM,cAAgB,OAAYA,EAAM,OAChD,gBAAiBA,EAAM,gBACvB,iBAAkBA,EAAM,iBAC1B,EACAmC,EAACzC,GAAA,CAAQ,UAAU,aAAa,EAChCyC,EAAC1C,GAAA,CAAI,UAAU,4BAA4B,MAAM,OAC/C,SAAA0C,EAACa,GAAA,CACC,OAAQhD,EAAM,cAAgB,OAAYA,EAAM,OAChD,4BAA6BA,EAAM,4BACnC,eAAgBA,EAAM,eACtB,SAAUA,EAAM,SAChB,qBAAsBA,EAAM,qBAC5B,eAAgBA,EAAM,eACxB,EACF,GACF,Ea1GK,cAAAmC,OAAA,oBATF,IAAM6D,GACXhG,GAIG,CACH,IAAMuE,EAAQ9B,GAAkB,CAC9B,GAAGzC,CACL,CAAC,EACD,OAAOmC,GAAC2D,GAAA,CAAU,GAAGvB,EAAO,CAC9B,ECfA,OACE,OAAA9E,GACA,MAAAwG,GAEA,QAAAC,GACA,YAAAC,GAEA,QAAA/C,OACK,sBAEP,OAAS,aAAAgD,OAAiB,yBAC1B,OAAS,mBAAAC,OAAuB,yBAkB5B,OAQI,OAAAlE,GARJ,QAAAoB,OAAA,oBAhBG,IAAM+C,GAcRtG,GAEDuD,GAAC9D,GAAA,CACC,UAAWwG,GACT,0DACAjG,EAAM,YAAY,IACpB,EACA,MAAOA,EAAM,MAEb,UAAAmC,GAAC1C,GAAA,CAAI,UAAU,WACb,SAAA0C,GAACoE,GAAA,CACC,KAAMvG,EAAM,KACZ,MAAOA,EAAM,MACb,UAAWA,EAAM,YAAY,WAC/B,EACF,EACAmC,GAACqE,GAAA,CACC,KAAMxG,EAAM,KACZ,UAAWA,EAAM,UACjB,OAAQA,EAAM,OACd,QAASA,EAAM,QACf,WAAYA,EAAM,YAAY,SAC9B,UAAWA,EAAM,YAAY,KAC/B,GACF,EAIEyG,GAAOzG,GAWP,CACJ,GAAM,CAAE,IAAA0G,EAAK,KAAAC,EAAM,IAAAC,EAAK,MAAAC,EAAO,WAAAC,CAAW,EAAI9G,EAC9C,OAeEuD,GAAC2C,GAAA,CACC,KAAM,EACN,KAAM,EAEN,MAAM,OACN,UAAWD,GAAG,+BAAgCa,GAAY,IAAI,EAE9D,UAAA3E,GAAC,OAAI,UAAW8D,GAAG,aAAca,GAAY,IAAI,EAAI,SAAAH,EAAK,EAC1DxE,GAAC,OAAI,UAAW8D,GAAG,aAAca,GAAY,GAAG,EAAI,SAAAF,EAAI,EACxDzE,GAAC,OAAI,UAAW8D,GAAG,4BAA6Ba,GAAY,KAAK,EAC9D,SAAAD,EACH,IARKH,CASP,CAEJ,EAEMH,GAAUvG,GAEZmC,GAACsE,GAAA,CACC,KAAK,OACL,IAAK,SAASzG,EAAM,KAAK,IACzB,MAAO,OAAOA,EAAM,IAAI,IACxB,WAAY,CACV,KAAMiG,GACJ,oDACAjG,EAAM,SACR,CACF,EACF,EAIEwG,GAAQxG,GAaVmC,GAACgE,GAAA,CACC,WAAYnG,EAAM,KAClB,UAAWiG,GACT,wBACAjG,EAAM,UACN,mBACF,EACA,iBAAiB,+BACjB,WAAY,CAAC+G,EAAMC,IAEf7E,GAACsE,GAAA,CAEC,KACEtE,GAACiB,GAAK,UAAL,CAAe,KAAM,OAAQ,aAAa,WACxC,SAAA2D,GAAM,GACT,EAEF,IAAKV,GAAgBU,GAAM,MAAO,CAAE,IAAK/G,EAAM,OAAQ,CAAC,EACxD,MAAOqG,GAAgBU,GAAM,KAAM,CAAE,IAAK/G,EAAM,MAAO,CAAC,EACxD,WAAY,CACV,KAAMiG,GAAG,4BAA6BjG,EAAM,YAAY,IAAI,EAC5D,MAAOiG,GACLc,EAAK,OAASX,GAAU,IACpB,wBACA,sBACJpG,EAAM,YAAY,GACpB,EACA,IAAKiG,GACHc,EAAK,OAASX,GAAU,IACpB,wBACA,sBACJpG,EAAM,YAAY,KACpB,CACF,GAtBKgH,CAuBP,EAGN,ECtKJ,OAAS,wBAAAC,GAAsB,kBAAAlF,OAAsB,yBAE9C,IAAMmF,GAAuBrG,GAAmB,CACrD,GAAM,CAAE,KAAAC,EAAM,UAAAqG,CAAU,EAAIF,GAAqBpG,CAAM,EAEjDuG,EAASrF,GAAe,IAAIlB,CAAM,EAClCwG,EAAOD,IAAS,MAAM,EACtBE,EAAQF,IAAS,OAAO,EACxBG,EAASH,IAAS,SAAS,EAC3BI,EAAUJ,IAAS,UAAU,EAGnC,MAAO,CACL,KAAAC,EACA,MAAAC,EACA,KAAAxG,EACA,UAAAqG,EACA,OAAAI,EACA,QAAAC,CACF,CACF,ECFS,cAAArF,OAAA,oBAfF,IAAMsF,GAAoBzH,GAa3B,CACJ,IAAMuE,EAAQ2C,GAAoBlH,EAAM,MAAM,EAC9C,OAAOmC,GAACmE,GAAA,CAAY,GAAG/B,EAAO,WAAYvE,EAAM,WAAY,MAAOA,EAAM,MAAO,CAClF,ECnBA,OAAoB,WAAAU,GAAS,YAAA8D,GAAU,eAAAkD,OAA8B,QACrE,OACE,QAAA/H,GACA,QAAAyD,EACA,OAAA3D,GACA,UAAAgF,GACA,sBAAAkD,GACA,WAAAC,GACA,gBAAAC,GACA,mBAAAC,GACA,WAAAC,GACA,WAAArI,GACA,wBAAAsI,GACA,MAAA/B,OAGK,sBAEP,OAAS,aAAAgC,OAAiB,gCAC1B,OAAS,qBAAAC,OAAyB,yBAClC,OAAS,cAAAC,GAAY,mBAAArI,OAAuB,yBAC5C,OAAS,iBAAAsI,OAAqB,6BCrB9B,OAAS,UAAA3D,OAAc,sBAQjB,cAAAtC,OAAA,oBALC,SAASkG,GAASrI,EAAoB,CAC3C,OAAKA,EAAM,WAIPmC,GAACsC,GAAA,CACC,QAAQ,WACR,UAAS,GACT,KAAK,KACL,QAASzE,EAAM,UACf,QAASA,EAAM,QACf,UAAU,8DACX,yBAAa,EAVV,IAYV,CCjBA,OAAS,WAAAU,GAAiB,YAAA8D,OAAgB,QAC1C,OACE,cAAA2D,GACA,aAAAG,GACA,eAAAC,GACA,sBAAAC,OACK,yBACP,OAAS,qBAAAN,GAAmB,kBAAAO,OAAsB,yBAClD,OAAS,aAAAC,OAAiB,yBAC1B,OAAS,SAAAC,GAAO,SAAAC,OAAa,sBAEtB,SAASC,IAAkB,CAChC,GAAM,CAAE,eAAAC,EAAgB,UAAAC,CAAU,EAAIP,GAAmB,EACnD,CAAE,MAAAjE,EAAO,QAAAyE,CAAQ,EAAIb,GAAW,EAChCf,EAASkB,GAAU,EACnBW,EAAc7B,EAAO,IAAY,aAAa,EAE9C,CAAC8B,EAAa,CAAE,WAAAC,CAAW,CAAC,EAAIZ,GACpC,GAAGU,CAAW,iBAChB,EACM,CAACG,EAASC,CAAU,EAAI7E,GAAkB,EAAK,EAE/C8E,EAAa5I,GAAQ,IACrB,CAACoI,GAAkB,CAACA,EAAe,GAC9B,GAGPvE,EAAM,SAAW2D,GAAkB,eACnCQ,GAAU,SAASI,EAAe,EAAY,CAAC,EAEhD,CAACvE,EAAOuE,CAAc,CAAC,EAkC1B,MAAO,CAAE,UAhCS,IAAM,CACtB,GAAIM,EACF,OAEFC,EAAW,EAAI,EACf,IAAME,EAAU,GACdR,IAAcN,GAAe,OAAS,MAAQ,OAChD,2GAEA,OAAOS,EAAY,CACjB,SAAUF,EAAQ,eAAe,QAAQ,SAAS,EAClD,aAAczE,EAAM,QACpB,UAAW6C,EAAO,IAAI,UAAU,CAClC,CAAC,EAAE,KACAoC,GAAQ,CAEP,GADAH,EAAW,EAAK,EACZG,EAAI,QACN,OAAOb,GAAM,MAAM,CACjB,MAAO,gBACP,QAAAY,EACA,KAAM,IACG,IAAI,QAASE,GAAYA,EAAQ,EAAI,CAAC,CAEjD,CAAC,EAEHD,EAAI,SAAWZ,GAAM,MAAMY,EAAI,OAAO,CACxC,EACCE,GAAiB,CAChBd,GAAM,MAAMc,EAAM,OAAO,CAC3B,CACF,CACF,EACoB,WAAAJ,EAAY,QAAAF,CAAO,CACzC,CC3DI,cAAAjH,OAAA,oBAHG,SAASwH,IAAe,CAC7B,IAAMpF,EAAQsE,GAAgB,EAC9B,OACE1G,GAACkG,GAAA,CAAU,GAAG9D,EAAM,CAExB,CHqGE,OAmNQ,YAAAqF,GAlNN,OAAAzH,EADF,QAAAoB,MAAA,oBA9CF,IAAMsG,GAAuB,IAAkB,CAC7C,GAAM,CAAE,MAAAtF,CAAM,EAAI4D,GAAW,EACvB,CAAE,aAAA2B,CAAa,EAAI1B,GAAc,EAEvC,OAAO1H,GAAQ,IAAM,CACnB,GAAIoJ,EACF,MAAO,CACL,MAAO,gBACP,YAAa,oDACb,WAAY,SACd,EAGF,OAAQvF,EAAM,OAAQ,CACpB,KAAK2D,GAAkB,aACrB,MAAO,CACL,MAAO,iBACP,YAAa,uDACb,aACE,0DACJ,EACF,KAAKA,GAAkB,YACrB,MAAO,CACL,MAAO,UACP,YAAa,2CACb,WAAY,cACd,EACF,KAAKA,GAAkB,gBACrB,MAAO,CACL,MAAO,iBACP,YAAa,2CACb,WAAY,cACd,EACF,QACE,MAAO,CACL,MAAO,GACP,YAAa,EACf,CACJ,CACF,EAAG,CAAC3D,EAAM,OAAQuF,CAAY,CAAC,CACjC,EAEaC,GAA0C,CAAC,CACtD,YAAAC,EACA,QAAAC,CACF,IACE1G,EAAC,OAAI,UAAU,+FACb,UAAApB,EAAC,QAAM,SAAA6H,EAAY,EACnB7H,EAACzC,GAAA,CAAQ,UAAU,sBAAsB,GAAI,EAAG,EAChDyC,EAAC,QAAM,SAAA8H,EAAQ,GACjB,EAGIC,GAAkC,CAAC,CACvC,WAAAC,EACA,QAAAC,EAAU,GACV,mBAAAC,CACF,IACE9G,EAAC5D,GAAA,CAAK,UAAU,SAAS,IAAK,EAAG,UAAU,eAAe,UAAU,SAClE,UAAAwC,EAACiB,EAAK,QAAL,CACC,QAASgH,EACT,OAAO,OACP,KAAK,MACL,UAAWpC,GAAqB,CAAE,MAAO,OAAQ,CAAC,EAClD,GAAG,MACH,QAAS,GACT,GAAI,EAEH,SAAAmC,GAAc,KACjB,EACA5G,EAAC5D,GAAA,CAAK,IAAK,EAAG,UAAU,SACtB,UAAAwC,EAACiB,EAAA,CAAK,KAAK,MAAM,MAAM,UAAU,OAAO,WAAW,4BAEnD,EACAjB,EAAC,UAAO,QAASkI,EACd,SAAAD,EACCjI,EAACyF,GAAA,CAAQ,KAAM,GAAI,UAAU,4BAA4B,EAEzDzF,EAAC0F,GAAA,CAAa,KAAM,GAAI,UAAU,4BAA4B,EAElE,GACF,GACF,EAGIyC,GAAoC,CAAC,CACzC,MAAA9E,EACA,YAAAwE,EACA,QAAAC,EACA,QAAAG,EACA,MAAAhF,EACA,KAAAmF,EACA,KAAAC,EACA,YAAAC,EACA,eAAAC,EAAiB,GACjB,YAAAC,CACF,IACEpH,EAAC5D,GAAA,CAAK,QAAQ,UACZ,UAAAwC,EAAC4F,GAAA,CACC,QACG5F,EAAC4H,GAAA,CAAe,YAAaC,EAAa,QAASC,EAAS,EAG/D,SAAA9H,EAACiB,EAAA,CACC,KAAK,MACL,MAAM,UACN,OAAO,WACP,UAAU,uEAET,SAAAoC,EACH,EACF,EACArD,EAACiB,EAAK,QAAL,CACC,QAASgH,EACT,KAAK,MACL,KAAMG,EACN,cAAc,uCACd,GAAG,MACH,KAAMC,EACN,QAAS,GACT,GAAI,EAEJ,YAAaG,EAEZ,SAAAvF,GAAS,KACZ,GACF,EAGIwF,GAA0C,CAAC,CAC/C,QAAAR,EAAU,GACV,eAAAS,EACA,eAAAC,EACA,UAAAC,EACA,YAAAN,CACF,IAAM,CACJ,GAAM,CAACO,EAAaC,CAAc,EAAInL,GACpC,gCACA,EACF,EACM,CAACiF,EAAMC,CAAO,EAAIR,GAAkBwG,CAAW,EAE/CE,EAAaxD,GAAY,IAAM,CACnC1C,EAASmG,GAAa,CAACA,CAAQ,EAC/B,WAAW,IAAM,CACfF,EAAe,CAAClG,CAAI,CACtB,EAAG,CAAC,CACN,EAAG,CAAC,CAAC,EAEL,OACExB,EAAC9D,GAAA,CAAI,UAAU,YACb,UAAA8D,EAAC5D,GAAA,CACC,QAAQ,SACR,IAAK,EACL,UAAU,SACV,UAAU,qBACV,QAASuL,EAET,UAAA/I,EAACzC,GAAA,CAAQ,UAAU,aAAa,EAChCyC,EAAC2F,GAAA,CACC,KAAM,GACN,MAAM,QACN,UAAW7B,GAAG,2BAA4BlB,GAAQ,gBAAgB,EACpE,EACA5C,EAACzC,GAAA,CAAQ,UAAU,aAAa,GAClC,EAEA6D,EAAC9D,GAAA,CACC,MAAO,CACL,UAAW,eACb,EACA,UAAWwG,GACT,sDACA,+CACA,2CACAlB,EAAO,mBAAqB,aAC9B,EAEA,UAAA5C,EAACmI,GAAA,CACC,MAAM,kBACN,YAAY,0CACZ,QAAQ,2FACR,QAASF,EAET,MAAOS,IAAoB,EAAK,IAAcA,EAC9C,KAAK,OACP,EACA1I,EAACmI,GAAA,CACC,MAAM,eACN,YAAY,iGACZ,QAAQ,mFACR,QAASF,EACT,MAAOU,EACP,YAAaL,EACb,KAAK,cACL,eAAgB,GAChB,YAAY,MACd,EACAtI,EAACmI,GAAA,CACC,MAAM,2BACN,YAAY,mLACZ,QAAQ,gIACR,QAASF,EACT,MAAOW,EACP,KAAK,cACL,eAAgB,GAChB,YAAY,MACd,GACF,GACF,CAEJ,EAEaK,GAAgC,CAAC,CAC5C,UAAAC,EACA,mBAAAC,EACA,WAAAnB,EACA,UAAAoB,EACA,WAAAC,EACA,cAAAC,EACA,QAAArB,EACA,eAAAS,EACA,eAAAC,EACA,UAAAC,EACA,YAAAN,CACF,IAAM,CACJ,GAAM,CAAE,MAAAiB,EAAO,YAAA1B,EAAa,WAAA2B,EAAY,aAAAC,CAAa,EACnD/B,GAAqB,EAEvB,OACEtG,EAAC9D,GAAA,CAAI,UAAU,eACZ,UAAAiM,GAAS1B,GACRzG,EAAC5D,GAAA,CAAK,UAAU,SAAS,IAAK,EAAG,UAAU,gBACzC,UAAAwC,EAACiB,EAAA,CACC,KAAK,KACL,OAAO,OACP,MAAOuI,GAAc,UACrB,UAAWC,EAEV,SAAAF,EACH,EACAvJ,EAACiB,EAAA,CACC,KAAK,MACL,MAAM,UACN,OAAO,WACP,UAAU,kBAET,SAAA4G,EACH,GACF,EAEF7H,EAAC8F,GAAA,CACC,UAAWoD,EACX,OAAQnD,GAAkB,cAC1B,YAAa,CAAE,KAAM,KAAM,UAAW,EAAK,EAE1C,SAAAoD,EACC/H,EAAAqG,GAAA,CACE,UAAAzH,EAAC1C,GAAA,CACC,SAAA8D,EAAC5D,GAAA,CAAK,UAAU,SAAS,IAAK,EAAG,UAAU,gBACzC,UAAAwC,EAACiB,EAAK,SAAL,CAAc,KAAK,KAAK,OAAO,OAAO,MAAM,QAAQ,kCAErD,EACAjB,EAACiB,EAAA,CAAK,KAAK,MAAM,MAAM,UAAU,OAAO,WAAW,wDAEnD,GACF,EACF,EACAG,EAACkB,GAAA,CAAO,UAAS,GAAC,KAAK,KAAK,QAAS8G,EACnC,UAAApJ,EAACwF,GAAA,CAAmB,MAAM,QAAQ,QAAS,EAAG,EAC9CxF,EAACiB,EAAA,CAAK,mBAAO,GACf,EAEAjB,EAAC1C,GAAA,CAAI,UAAU,WACb,SAAA0C,EAACwH,GAAA,EAAa,EAChB,GACF,EAEApG,EAAC9D,GAAA,CAAI,UAAU,gBACb,UAAA0C,EAAC+H,GAAA,CACC,WAAYC,EACZ,QAASC,EACT,mBAAoBqB,EACtB,EACAtJ,EAACyI,GAAA,CACC,QAASR,EACT,eAAgBS,EAChB,eAAgBC,EAChB,UAAWC,EACX,YAAaN,EACf,EACAlH,EAAC5D,GAAA,CAAK,IAAK,EAAG,UAAU,SACtB,UAAA4D,EAACkB,GAAA,CACC,UAAS,GACT,MAAM,YACN,KAAK,KACL,QAAS+G,EAET,UAAArJ,EAACwF,GAAA,CACC,MAAM,QACN,QAAS,EACT,UAAU,iBACZ,EACAxF,EAACiB,EAAA,CAAK,oBAAQ,GAChB,EACAG,EAACkB,GAAA,CAAO,UAAS,GAAC,KAAK,KAAK,QAAS8G,EACnC,UAAApJ,EAACwF,GAAA,CAAmB,MAAM,QAAQ,QAAS,EAAG,EAC9CxF,EAACiB,EAAA,CAAK,mBAAO,GACf,GACF,EACAjB,EAACwH,GAAA,EAAa,GAChB,EAEJ,EACAxH,EAAC,OACC,UAAU,qIACV,MAAO,CACL,WACE,mQACJ,EACF,GACF,CAEJ,EIlYA,OACE,sBAAA0J,GACA,mBAAAC,GACA,mBAAAhM,GACA,iBAAAwD,GACA,yBAAAyI,GACA,yBAAAC,GACA,cAAA7D,GACA,aAAAG,GACA,mBAAA2D,GACA,iBAAAC,GACA,kBAAAC,GACA,qBAAA1L,OACK,yBACP,OACE,gBAAAuB,GACA,qBAAAkG,OAGK,yBACP,OAAS,SAAAS,GAAO,SAAAC,OAAa,sBAC7B,OAAS,oBAAAwD,OAAwB,yBACjC,OAAS,eAAA1E,GAAa,WAAAhH,OAAe,QACrC,OACE,iCAAA2L,GACA,kCAAAC,OACK,+BACP,OAAS,iBAAAlE,GAAe,cAAAzH,OAAkB,6BAC1C,OAAS,WAAA0C,OAAe,yBAEjB,IAAMkJ,GAAsB,IAAM,CACvC,GAAM,CAAE,MAAAhI,CAAM,EAAI4D,GAAW,EACvB,CAAE,aAAA2B,CAAa,EAAI1B,GAAc,EACjC,CAAE,WAAA+B,CAAW,EAAI+B,GAAc,CACnC,GAAI,CACN,CAAC,EACKM,EACJ1C,GAAgBvF,EAAM,OAAS2D,GAAkB,cAC7CuE,EAAa/L,GAAQ,IAAM,CAC/B,IAAMgM,EAAM,IAAI,KACVC,EAAgB,IAAI,KAC1BA,EAAc,QAAQD,EAAI,QAAQ,EAAI,EAAE,EAExC,IAAME,EAAYD,EAAc,QAAQ,EAClCE,EAAUH,EAAI,QAAQ,EAEtBI,EAAe,IAAI,gBAEzB,OAAAA,EAAa,IAAI,OAAQ,GAAG,EAC5BA,EAAa,IAAI,OAAQ,GAAG,EAC5BA,EAAa,IAAI,OAAQ,SAAS,EAClCA,EAAa,IAAI,SAAU,WAAW,EACtCA,EAAa,IAAI,YAAaF,EAAU,SAAS,CAAC,EAClDE,EAAa,IAAI,UAAWD,EAAQ,SAAS,CAAC,EAEvC,qBAAqBC,EAAa,SAAS,CAAC,EACrD,EAAG,CAAC,CAAC,EAEC,CAAE,KAAMC,CAAmB,EAAId,GACnCQ,EACA,CACE,UAAY3L,GAASA,CACvB,CACF,EAEA,MAAO,CACL,mBACE,CAAC0L,GAAerC,IAAe,GAAK4C,GAAoB,MAAM,QAAU,EAC1E,WAAA5C,CACF,CACF,EAEa6C,GAAqB,IAAM,CACtC,IAAMhE,EAAU6C,GAAmB,EAC7BoB,EAAU3J,GAActB,EAAY,EAEpC,CAAE,mBAAAsJ,EAAoB,WAAAnB,CAAW,EAAIoC,GAAoB,EAEzDlB,EAAY/C,GAAU,WAAW,EACjC,CAAE,MAAA/D,CAAM,EAAI4D,GAAW,EACvB,CAAE,eAAA0C,CAAe,EAAIqB,GAAc,CACvC,GAAI,CACN,CAAC,EACK,CAAE,YAAAgB,EAAa,IAAAC,CAAI,EAAIhB,GAAe,EACtC1B,EAAclG,EAAM,QAAU2D,GAAkB,UAChD,CAAC,CAAE,WAAAhE,EAAY,mBAAAkJ,CAAmB,EAAGC,CAAa,EACtD5M,GAAkB,EACdqK,EAAiBpK,GAAQ,IACtB,KAAK,IACV,GACAwD,EAAW,WAAa,EAEpBmJ,EAAc,aAAgB,EAAE,EAChCH,CACN,EACC,CAACA,EAAahJ,CAAU,CAAC,EAEtB6G,EAAYrK,GAAQ,IACnByM,EAGU,IAAI9J,GAAQ8J,CAAG,EAChB,IAAI,GAAG,EAAE,KAAK,EAAG,CAAC,EAAE,QAAQ,CAAC,EAHlC,GAIR,CAACA,CAAG,CAAC,EAEFG,EAAyB5F,GAC7B,MAAO6F,GAAqC,CAC1C,IAAIC,EACJ,OAAIP,EACFO,EAAS,MAAM7E,GAAM,KAAK0D,GAA+B,CACvD,UAAWkB,CACb,CAAC,EAEDC,EAAS,MAAM7E,GAAM,KAAK2D,GAAgC,CACxD,UAAWiB,CACb,CAAC,EAGIC,CACT,EACA,CAACP,CAAO,CACV,EAEM1B,EAAY7D,GAAY,SACrB4F,EAAuB,SAAS,EACtC,CAACL,CAAO,CAAC,EAENQ,EAAK3B,GAAgB,EAErBN,EAAa9D,GAAY,SACtB4F,EAAuB,UAAU,EACvC,CAACL,CAAO,CAAC,EAENS,EAAWhG,GAAY,SACpBsB,EACJ,OAAO,EACP,MAAO9D,GAAM,CACZ,GAAIA,EAAE,OAAS,MACb,OAAA0D,GAAM,MACJ,2EACF,EACO,QAAQ,OAAO1D,CAAC,CAE3B,CAAC,EACA,KAAMsE,IACLZ,GAAM,QAAQ,sBAAsB,EAC7B,QAAQ,QAAQY,CAAG,EAC3B,EACF,CAACR,CAAO,CAAC,EAEN,CAACoB,EAASuD,CAAU,EAAI7N,GAC5B,yBACA,EACF,EAEM2L,EAAgB/D,GAAY,IAAM,CAEtCiG,EAAYvD,GACH,CAACA,CACT,CACH,EAAG,CAACA,CAAO,CAAC,EAEZ4B,GAAsB,CACpB,UAAYlL,GAAc,CACxB,GAAM,CAAE,KAAA8M,EAAM,YAAAC,CAAY,EAAI/M,EAE9B,GAAI+M,IAAgB,YAAa,CAC/B,IAAIC,EAAM,GAAG1B,GAAiBwB,CAAI,CAAC,aACnChF,GAAM,QAAQkF,CAAG,CACnB,SAAWD,IAAgB,SAAU,CACnC,IAAIC,EAAM,GAAG1B,GAAiBwB,CAAI,CAAC,UACnChF,GAAM,MAAMkF,CAAG,CACjB,CAEAL,EAAG,KAAK,iBAAkB3M,CAAI,CAChC,CACF,CAAC,EAEDiL,GAAsB,CACpB,UAAYjL,GAAc,CACxB,GAAM,CAAE,OAAAiN,CAAO,EAAIjN,EAEnB,OAAQiN,EAAQ,CACd,IAAK,YACHnF,GAAM,QAAQ,sBAAsB,EACpC,MACF,IAAK,SACHA,GAAM,MAAM,mBAAmB,EAC/B,MACF,QACE,KACJ,CACF,CACF,CAAC,EAED,IAAMoF,EAAkBrN,GAAWkK,CAAc,GAAK,OAChDoD,EAAkBtN,GAAWmK,CAAc,GAAK,OAChDoD,GAAOvN,GAAWwM,CAAG,GAAK,OAC1BgB,GAAcxN,GAAWwJ,CAAU,GAAK,OAE9C,MAAO,CACL,UAAAoB,EACA,WAAAC,EACA,SAAAkC,EACA,QAAAtD,EACA,cAAAqB,EACA,UAAAJ,EACA,mBAAAC,EACA,WAAY6C,GACZ,OAAQ5J,EAAM,OACd,eAAgByJ,EAChB,eAAgBC,EAChB,UAAWC,GACX,YAAAzD,CACF,CACF,ECjNY,cAAAtI,OAAA,oBAFL,IAAMiM,GAAkB,IAAM,CACjC,IAAM7J,EAAQyI,GAAmB,EACjC,OAAQ7K,GAACiJ,GAAA,CAAW,GAAG7G,EAAO,CAClC,ECNA,OAAS,OAAA9E,OAAuB,sBCDhC,OAAa,aAAA4O,GAAW,UAAAC,GAAQ,YAAA9J,OAAgB,QCAhD,OAAa,eAAAkD,GAAa,WAAAhH,GAAS,YAAA8D,OAAgB,QCAnD,OAAa,WAAA9D,OAAe,QAC5B,OAAS,wBAAA6N,OAA4B,yBACrC,OAAS,MAAAtI,GAAI,WAAAvG,GAAS,eAAA8O,GAAa,QAAApL,OAAY,sBCF/C,OACE,iBAAAvB,GAGA,cAAAC,GACA,YAAA0C,OACK,QAwCH,cAAArC,OAAA,oBAtBG,IAAMsM,GAAmB5M,GAAc,CAC5C,WAAY,EACd,CAA0B,EAEb6M,EAAsB,IAAM5M,GAAW2M,EAAgB,EAYvDE,GAER3O,GAAU,CACb,GAAM,CAAC4O,EAAMC,CAAO,EAAIrK,GAAkB,UAAU,EAC9C,CAACsK,EAAWC,CAAY,EAAIvK,GAAkB,UAAU,EAC9D,OACErC,GAACsM,GAAiB,SAAjB,CACC,MAAO,CACL,WAAYzO,EAAM,WAClB,YAAaA,EAAM,YACnB,KAAA4O,EACA,UAAWE,GAAa,WACxB,MAAO9O,EAAM,MACb,aAAc6O,EACd,kBAAmBE,EACnB,UAAW/O,EAAM,WAAa,GAC9B,cAAeA,EAAM,cACrB,WAAYA,EAAM,WAClB,iBAAkBA,EAAM,gBAC1B,EAEC,SAAAA,EAAM,SACT,CAEJ,EChEA,OAAS,MAAAiG,OAAU,sBACnB,OAAa,WAAAvF,OAAe,QAyBxB,cAAAyB,OAAA,oBAZG,IAAM6M,GAA6BhP,GAAU,CAClD,GAAM,CAAE,UAAAiP,EAAY,CAA+B,EAAIjP,EACjDkP,EAAYxO,GAAQ,IAAM,CAC9B,IAAMyO,EAAI,KAAK,IAAInP,EAAM,MAAO,CAAC,EACjC,OAAIiP,IAAc,EACT,CAAE,UAAW,cAAcE,CAAC,IAAK,EAEnC,CAAE,UAAW,eAAeA,CAAC,IAAK,CAE3C,EAAG,CAACnP,EAAM,KAAK,CAAC,EAEhB,OACEmC,GAAC,OACC,UAAW8D,GACT,kHACAgJ,IAAc,GAAkC,mBAChDjP,EAAM,SACR,EACA,MAAOkP,EACT,CAEJ,EF8BM,OAcI,OAAA/M,EAdJ,QAAAoB,OAAA,oBAvCC,IAAM6L,GAAuDpP,GAAU,CAC5E,GAAM,CAAE,WAAAqP,EAAY,UAAAC,EAAW,YAAAC,EAAa,MAAAC,EAAO,cAAAjO,CAAc,EAC/DmN,EAAoB,EAChB,CAAE,WAAAxM,EAAY,aAAAuN,CAAa,EAAIzP,EAC/B,CAAE,QAAA0P,EAAS,SAAAC,CAAS,EAAIzN,EAExB0N,EAAQ,OAAO,MAAM5P,EAAM,KAAK,EAClC,EACCA,EAAM,YAAcA,EAAM,MAAS,IAElC6P,EAAKnP,GAAQ,IACV6N,GAAqBiB,GAAS,GAAGG,CAAQ,EAAE,EACjD,CAACH,EAAOG,CAAQ,CAAC,EAEdG,EAAc,OAAO,MAAM9P,EAAM,WAAW,EAC9C,IACAA,EAAM,mBAAmB,SAAS,EAEhC+P,EAAiBrP,GAAQ,IAAM,CACnC,IAAMsP,EAAWxB,GAAYxO,EAAM,MAAO,CAAE,GAAI6P,EAAI,QAAS,EAAK,CAAC,EAMnE,OAJctO,EAAc,UACzBwF,GAASiJ,IAAaxB,GAAYzH,EAAM,CAAE,GAAI8I,EAAI,QAAS,EAAK,CAAC,CACpE,IAEiB,EACnB,EAAG,CAACtO,EAAevB,EAAM,MAAOwP,CAAK,CAAC,EAEtC,OACEjM,GAAC,OACC,UAAU,4IACV,MAAO,CAAE,OAAQ,GAAG8L,CAAU,IAAK,EACnC,QAAS,IAAM,CACT,OAAO,MAAMrP,EAAM,KAAK,GAAK,OAAO,MAAMA,EAAM,QAAQ,GAC5DuP,IAAc,CAACvP,EAAM,MAAOA,EAAM,QAAQ,CAAC,CAC7C,EACA,aAAcA,EAAM,aACpB,aAAcA,EAAM,aAEpB,UAAAuD,GAAC,OACC,UAAW0C,GACT,iEACAqJ,GAAa,gBACf,EAEA,UAAAnN,EAAC,OACC,UAAW8D,GACT,2BACAjG,EAAM,aACF,sBACA,uBACN,EAEA,SAAAmC,EAACiB,GAAK,QAAL,CAAa,GAAIyM,EAAK,SAAA7P,EAAM,MAAM,EACrC,EACAmC,EAAC,OAAI,UAAU,sDACb,SAAAA,EAACiB,GAAK,QAAL,CAAa,GAAIsM,EAAU,SAAA1P,EAAM,SAAS,EAC7C,GACF,EACAuD,GAAC,OACC,UAAW0C,GACT,wGACAqJ,GAAa,gBACf,EAEA,UAAAnN,EAAC,OACC,UAAW8D,GACT,qCACAqJ,GAAa,UACf,EAEA,SAAAnN,EAACiB,GAAK,QAAL,CAAa,GAAIsM,EAAS,UAAU,WAClC,SAAA1P,EAAM,YACT,EACF,EACCsP,GACCnN,EAAC,OAAI,UAAU,qCACb,SAAAA,EAACiB,GAAK,QAAL,CAAa,GAAI,EAAG,UAAU,WAC5B,SAAA0M,EACH,EACF,EAEF3N,EAAC6M,GAAA,CACC,MAAOY,EACP,YACA,UACE5P,EAAM,aACF,uBACA,yBAER,GACF,EAEC+P,GACC5N,EAAC,OACC,UAAW8D,GACT,+FACAjG,EAAM,cAAkC,oBACxCA,EAAM,cAAkC,qBAC1C,EACA,MAAO,CAAE,IAAK,GAAGqP,EAAa,EAAI,CAAC,IAAK,EAC1C,EAGDrP,EAAM,SACLmC,EAAC,OAAI,UAAU,4FAA4F,EAE5GsN,GACCtN,EAAC,OACC,UAAW8D,GACT,sCACAjG,EAAM,cAAkC,YACxCA,EAAM,cAAkC,cAC1C,EAEA,SAAAmC,EAACzC,GAAA,CACC,UAAU,SACV,UAAWuG,GACT,aACAjG,EAAM,cAAkC,0BACxCA,EAAM,cAAkC,uBAC1C,EACF,EACF,GAEJ,CAEJ,EDtJA,OAEE,kBAAA+J,GACA,kBAAAkG,GACA,QAAA7M,GAEA,eAAA8M,GACA,gBAAAC,GACA,MAAAlK,OACK,sBAwDG,cAAA9D,GAsHJ,QAAAoB,OAtHI,oBA7CH,IAAM6M,GAA2CpQ,GAAU,CAChE,GAAM,CAAE,KAAAc,EAAM,KAAAuP,CAAK,EAAIrQ,EACjB,CAAE,WAAAkC,EAAY,MAAAsN,CAAM,EAAId,EAAoB,EAE5C4B,EAAc5I,GAAY,IAAM,CACpC,IAAK5G,GAAM,QAAU,KAAO,EAC1B,OAAO,KAET,GAAIuP,UAAgC,CAClC,IAAMrJ,EAAQlG,EAAK,UAAWiG,GAAS,CAAC,OAAO,MAAMA,EAAK,CAAC,CAAC,CAAC,EAC7D,OAAIC,GAAS,GACJlG,EAAKkG,CAAK,EAEZ,IACT,KAAO,CACL,QAASA,EAAQlG,EAAK,OAAS,EAAGkG,GAAS,EAAGA,IAAS,CACrD,IAAMD,EAAOjG,EAAKkG,CAAK,EAEvB,GAAI,CAAC,OAAO,MAAMD,EAAK,CAAC,CAAC,EACvB,OAAOA,CAEX,CACA,OAAO,IACT,CACF,EAAG,CAACjG,EAAMuP,CAAI,CAAC,EAETE,EAAU7P,GAAQ,IAClB8O,GAAO,SAAS,EAAE,SAAS,GAAG,EACzBA,EAAM,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,OAEjC,EACN,CAACA,CAAK,CAAC,EAEJgB,EAAS9P,GAAQ,IACdI,EAAK,OAAO,CAAC2P,EAAGC,IAAM,KAAK,IAAID,EAAGC,EAAE,CAAC,CAAC,EAAG,CAAC,EAChD,CAAC5P,CAAI,CAAC,EACH,CAAC6P,EAAYC,CAAa,EAAIpM,GAAiB,EAAE,EAEvD,OACErC,GAAC,OACC,GAAG,sBACH,UAAU,sCAET,SAAArB,EAAK,IAAI,CAACiG,EAAMC,IAEb7E,GAAC0O,GAAA,CAEC,MAAO7J,EACP,KAAMD,EACN,SAAU/G,EAAM,SAChB,cAAe4Q,EACf,WAAYD,EACZ,KAAMN,EACN,OAAQG,EACR,QAASD,EACT,WAAYrO,EACZ,YAAaoO,GAVRtJ,CAWP,CAEH,EACH,CAEJ,EAEM6J,GAeA7Q,GAAU,CACd,GAAM,CACJ,MAAAgH,EACA,KAAAD,EACA,cAAA6J,EACA,KAAAP,EACA,OAAAG,EACA,WAAAG,EACA,QAAAJ,EAEA,WAAArO,CACF,EAAIlC,EAEE,CAAE,KAAAqH,EAAM,MAAAC,EAAO,QAASC,EAAQ,SAAUC,CAAQ,EAAItF,EAEtD4O,EACJH,IAAe,GACXN,UACErJ,GAAS2J,EACT3J,GAAS2J,EACX,GAEA,CAAC5L,EAAMC,CAAO,EAAIR,GAAS,EAAK,EAEhCuM,EACJhK,GAKG,CACH,GAAIA,IAAS,KACX,MAAO,CACL,OAAQ,EACR,aAAc,EACd,SAAU,CACZ,EAEF,IAAIiK,EAAY,CAAE,OAAQ,EAAG,aAAc,CAAE,EAC7C,OAAK,OAAO,MAAMjK,EAAK,CAAC,CAAC,IACvBiK,EAAY,CACV,OAAQjK,EAAK,CAAC,EACd,aAAcA,EAAK,CAAC,CACtB,GAGK,CACL,GAAGiK,EACH,SACEA,EAAU,cAAgB,EACtB,EACAA,EAAU,aAAeA,EAAU,MAC3C,CACF,EACIC,EAAWF,EAAahK,CAAI,EAChC,OAAIkK,EAAS,WAAa,IACxBA,EAAWF,EAAa/Q,EAAM,YAAY,CAAC,GAI3CuD,GAAC2M,GAAA,CAAY,KAAMnL,EAAM,aAAcC,EACrC,UAAA7C,GAAC8N,GAAA,CACC,SAAA9N,GAACiN,GAAA,CACC,WAAY,GACZ,MAAOrI,EAAK,CAAC,EACb,SAAUA,EAAK,CAAC,EAChB,YAAaA,EAAK,CAAC,EACnB,MAAO/G,EAAM,SACb,KAAMA,EAAM,KACZ,kBAAmB+G,EAAK,CAAC,EACzB,OAAQyJ,EACR,QAASM,EACT,aAAcH,IAAe3J,EAC7B,WAAY9E,EACZ,aAAc,IAAM,CAClB0O,EAAc5J,CAAK,EACnBhC,EAAQ,EAAI,CACd,EACA,aAAc,IAAM,CAClB4L,EAAc,EAAE,EAChB5L,EAAQ,EAAK,CACf,EACF,EACF,EACAzB,GAACwG,GAAA,CACC,UAAW9D,GACT,gIAEF,EACA,MACEoK,UAAiC,MAAQ,QAE3C,YAAa,MACb,KAAK,OACL,WAAY,EACZ,eAAiBnL,GAAMA,EAAE,eAAe,EAExC,UAAA/C,GAACsE,GAAA,CACC,MAAM,mBACN,QAASwK,EAAS,SAClB,UAAWV,EACb,EACApO,GAACsE,GAAA,CACC,MAAO,QAAQY,CAAI,IACnB,QAAS4J,EAAS,OAClB,UAAW1J,EACb,EACApF,GAACsE,GAAA,CACC,MAAO,QAAQa,CAAK,IACpB,QAAS2J,EAAS,aAClB,UAAWzJ,EACb,EAEArF,GAACgO,GAAA,CACC,UAAU,kBACV,MAAO,CACL,UACEE,UACI,kBACA,kBACR,EACF,GACF,GACF,CAEJ,EAEM5J,GACJzG,GACG,CACH,GAAM,CAAE,MAAA0L,EAAO,QAAAwF,EAAS,UAAAC,CAAU,EAAInR,EAEtC,OACEuD,GAAC,OAAI,UAAU,sDACb,UAAApB,GAAC,OAAI,UAAU,4BAA6B,SAAAuJ,EAAM,EAClDvJ,GAAC,OAAI,UAAU,iBACb,SAAAA,GAACiB,GAAK,QAAL,CAAa,GAAI+N,EAAY,SAAAD,EAAQ,EACxC,GACF,CAEJ,EIhPA,OAAa,WAAAxQ,OAAe,QAqBxB,cAAAyB,OAAA,oBAhBG,IAAMiP,GAA0BpR,GAAU,CAC/C,GAAM,CAAE,KAAAc,CAAK,EAAId,EACXqR,EAAW3Q,GAAQ,IAAM,CAC7B,IAAI4Q,EAAM,OAAO,IAEbtK,EAAQlG,EAAK,OAAS,EAE1B,KAAO,OAAO,MAAMwQ,CAAG,GAAKtK,EAAQ,GAClCsK,EAAMxQ,EAAKkG,CAAK,EAAE,CAAC,EACnBA,IAGF,OAAOsK,CAET,EAAG,CAACxQ,CAAI,CAAC,EACT,OACEqB,GAACiO,GAAA,CAAe,WAA6B,KAAMtP,EAAM,SAAUuQ,EAAU,CAEjF,ECxBA,OAAa,WAAA3Q,OAAe,QAqBxB,cAAAyB,OAAA,oBAhBG,IAAMoP,GAA0BvR,GAAU,CAC/C,GAAM,CAAE,KAAAc,CAAK,EAAId,EACXqR,EAAW3Q,GAAQ,IAAM,CAC7B,IAAI4Q,EAAM,OAAO,IACbE,EAAM1Q,EAAK,OACXkG,EAAQ,EAEZ,KAAO,OAAO,MAAMsK,CAAG,GAAKtK,EAAQwK,GAClCF,EAAMxQ,EAAKkG,CAAK,EAAE,CAAC,EACnBA,IAGF,OAAOsK,CACT,EAAG,CAACxQ,CAAI,CAAC,EAET,OACEqB,GAACiO,GAAA,CAAe,WAA6B,KAAMtP,EAAM,SAAUuQ,EAAU,CAEjF,ECxBA,OAAa,WAAA3Q,OAAe,QAC5B,OAAS,WAAA2C,OAAe,yBACxB,OAAS,MAAA4C,GAAU,QAAA7C,GAAM,WAAA2E,OAAe,sBCFxC,OACE,sBAAAJ,GACA,oBAAA8J,GACA,OAAAhS,GACA,MAAAwG,GACA,QAAAtG,GACA,QAAAyD,OACK,sBAkCD,cAAAjB,GAGA,QAAAoB,OAHA,oBA5BC,IAAMmO,GAMP1R,GAAU,CACd,GAAM,CACJ,UAAA2R,EAAY,EACZ,UAAAC,EACA,SAAAjC,EACA,UAAAkC,EACA,SAAAC,EAAW,EACb,EAAI9R,EAEE,CAAC+R,EAAeC,CAAW,EAAIJ,EAE/BK,EAAOD,EAAcD,EACrBG,EAAKF,EAAcD,EAEzB,OACExO,GAAC5D,GAAA,CACC,IAAK,EACL,UAAWsG,GACTiM,EAAK,wBAA0BD,EAAO,sBAAwB,GAC9DJ,CACF,EAEA,UAAA1P,GAACiB,GAAK,QAAL,CAAa,GAAIuM,EAAU,UAAW,GACpC,SAAAqC,EACH,EACAzO,GAAC9D,GAAA,CAAI,MAAO,GACT,UAAAwS,GACC9P,GAACwF,GAAA,CAAmB,KAAMmK,EAAU,MAAM,SAAS,QAAS,EAAG,EAEhEI,GAAM/P,GAACsP,GAAA,CAAiB,KAAMK,EAAU,MAAM,UAAU,QAAS,EAAG,GACvE,GACF,CAEJ,ECpDA,OAAS,iBAAAxO,OAAqB,yBAC9B,OAAS,gBAAAtB,OAAoB,yBAC7B,OAAS,WAAA+F,GAAS,MAAA9B,GAAI,QAAAtG,GAAM,QAAAyD,GAAM,gBAAA+O,OAAoB,sBACtD,OAAa,YAAA3N,OAAgB,QAczB,OAgDA,YAAAoF,GAhDA,OAAAzH,GAqBE,QAAAoB,OArBF,oBAVG,IAAM6O,GAMPpS,GACmBsD,GAActD,EAAM,kBAAoBgC,EAAY,EAGzEG,GAACsB,GAAA,CAAc,GAAGzD,EAAO,EAEzBmC,GAACuB,GAAA,CAAe,GAAG1D,EAAO,EAIxB0D,GAKA1D,GAAU,CACd,GAAM,CAAE,SAAA2P,EAAU,UAAAkC,EAAW,SAAAC,EAAW,EAAG,EAAI9R,EAE/C,OACEmC,GAAC4F,GAAA,CACC,QACE,+MAEF,UAAU,oBAEV,SAAAxE,GAAC5D,GAAA,CACC,IAAK,EACL,UAAWsG,GAAG,kCAAmC4L,CAAS,EAE1D,UAAA1P,GAACkQ,GAAA,CAAS,KAAMP,EAAU,EAC1B3P,GAACiB,GAAK,QAAL,CACC,GAAIuM,EACJ,MAAM,UACN,UAAU,0HAET,SAAA3P,EAAM,UACT,GACF,EACF,CAEJ,EAEMyD,GAKAzD,GAAU,CACd,GAAM,CAAE,SAAA2P,EAAU,UAAAkC,EAAW,SAAAC,EAAW,EAAG,EAAI9R,EACzC,CAAC+E,EAAMC,CAAO,EAAIR,GAAS,EAAK,EAEtC,OACEjB,GAAAqG,GAAA,CACE,UAAArG,GAAC5D,GAAA,CACC,IAAK,EACL,UAAWsG,GAAG,kCAAmC4L,CAAS,EAC1D,QAAS,IAAM,CACb7M,EAAQ,EAAI,CACd,EAEA,UAAA7C,GAACkQ,GAAA,CAAS,KAAMP,EAAU,EAC1B3P,GAACiB,GAAK,QAAL,CACC,GAAIuM,EACJ,MAAM,UACN,UAAU,4GAET,SAAA3P,EAAM,UACT,GACF,EACAmC,GAACgQ,GAAA,CACC,KAAK,KACL,KAAMpN,EACN,aAAcC,EACd,MAAM,OACN,QAAS,CACP,QAAS,CACP,MAAO,KACP,QAAS,IAAMA,EAAQ,EAAK,CAC9B,CACF,EAEA,SAAA7C,GAACiB,GAAA,CAAK,wNAIN,EACF,GACF,CAEJ,EAEMiP,GAAYrS,GAEdmC,GAAC,OACC,MAAOnC,EAAM,KACb,OAAQA,EAAM,KACd,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAmC,GAAC,QACC,SAAS,UACT,SAAS,UACT,EAAE,iQACF,KAAK,UACP,EACF,EFjGE,OAME,OAAAA,GANF,QAAAoB,OAAA,oBANC,IAAM+O,GAA+CtS,GAAU,CACpE,GAAM,CAAE,UAAA2R,EAAY,EAAG,UAAAC,EAAW,KAAAW,EAAM,KAAAC,EAAM,WAAAtQ,CAAW,EAAIlC,EACvD,CAAE,UAAAsP,EAAW,iBAAA/M,CAAiB,EAAImM,EAAoB,EAE5D,OACEnL,GAAC,OAAI,UAAU,yJACb,UAAAA,GAAC,OACC,UAAW0C,GACT,qFACAqJ,GAAa,gBACf,EAEA,UAAAnN,GAACuP,GAAA,CACC,UAAWC,EACX,UAAWC,EACX,SAAU1P,EAAW,SACrB,UAAU,gBACZ,EACAC,GAACiQ,GAAA,CACC,UAAWT,EACX,SAAUzP,EAAW,SACrB,iBAAkBK,EACpB,GACF,EACAJ,GAAC,OACC,UAAW8D,GACT,wGACAqJ,GAAa,iBACb,UACF,EAEA,SAAAnN,GAACsQ,GAAA,CAAO,KAAMF,EAAM,KAAMC,EAAM,EAClC,GACF,CAEJ,EAEMC,GAGAzS,GAAU,CACd,GAAM,CAAE,KAAAuS,EAAM,KAAAC,CAAK,EAAIxS,EAEjB0S,EAAShS,GAAQ,IAAM,CAC3B,GAAI8R,EAAK,SAAW,GAAKD,EAAK,SAAW,EACvC,MAAO,GAET,IAAMI,EAAO,OAAO,MAAMH,EAAK,CAAC,EAAE,CAAC,CAAC,EAAI,EAAIA,EAAK,CAAC,EAAE,CAAC,EAC/CxL,EAAQuL,EAAK,QAAQ,EAAE,UAAWxL,GAAS,CAAC,OAAO,MAAMA,EAAK,CAAC,CAAC,CAAC,EAEnE6L,EAAO,EACP5L,IAAU,KACZ4L,EAAO,OAAO,MAAML,EAAKvL,CAAK,EAAE,CAAC,CAAC,EAAI,EAAIuL,EAAKvL,CAAK,EAAE,CAAC,GAEzD,IAAM6L,EAAS,IAAIxP,GAAQuP,CAAI,EAC5B,IAAID,CAAI,EACR,IAAI,IAAItP,GAAQuP,CAAI,EAAE,IAAID,CAAI,EAAE,IAAI,CAAC,CAAC,EAIzC,OAAO,KAAK,KAAKE,EAAO,SAAS,EAAI,IAAU,EAAG,EAAI,GACxD,EAAG,CAACN,EAAMC,CAAI,CAAC,EAEf,OACErQ,GAAC,OACC,SAAAA,GAAC4F,GAAA,CACC,QAAS,qCACT,UAAU,oBAEV,SAAA5F,GAACiB,GAAA,CACC,KAAK,MACL,UAAW,GACX,UACE,iIAGD,YAAGsP,CAAM,IACZ,EACF,EACF,CAEJ,EGhGA,OAAS,OAAAjT,GAAK,MAAAwG,GAAI,QAAAtG,OAAY,sBAYxB,OAEI,OAAAwC,GAFJ,QAAAoB,OAAA,oBAJC,IAAMuP,GAA4B9S,GAAU,CACjD,GAAM,CAAE,UAAAsP,CAAU,EAAIZ,EAAoB,EAC1C,OACEnL,GAAC5D,GAAA,CAAK,GAAI,EAAG,QAAS,UAAW,UAAU,eACzC,UAAA4D,GAAC5D,GAAA,CAAK,IAAK,EAAG,UAAWsG,GAAG,iBAAkBqJ,GAAa,eAAe,EACxE,UAAAnN,GAAC1C,GAAA,CAAI,MAAO,OACV,SAAA0C,GAAC4Q,GAAA,CACC,KAAK,QACL,MAAO/S,EAAM,MACb,GAAG,8BACL,EACF,EACAmC,GAAC1C,GAAA,CAAI,MAAO,OACV,SAAA0C,GAAC4Q,GAAA,CACC,KAAK,MACL,MAAO/S,EAAM,KACb,GAAG,4BACH,WAAU,GACZ,EACF,GACF,EACAuD,GAAC5D,GAAA,CAAK,IAAK,EAAG,GAAI,EAAG,UAAWsG,GAAG,iBAAkBqJ,GAAa,eAAe,EAC/E,UAAAnN,GAAC1C,GAAA,CAAI,MAAO,OACV,SAAA0C,GAAC4Q,GAAA,CACC,KAAK,QACL,MAAO/S,EAAM,KACb,GAAG,mCACH,WAAU,GACZ,EACF,EACCsP,GACCnN,GAAC1C,GAAA,CAAI,MAAO,OACV,SAAA0C,GAAC4Q,GAAA,CACC,KAAK,QACL,MAAO/S,EAAM,MACb,GAAG,oCACH,WAAU,GACZ,EACF,GAEJ,GACF,CAEJ,EAEM+S,GAKA/S,GAAU,CACd,GAAM,CAAE,KAAAgT,EAAM,MAAAC,EAAO,WAAAC,EAAa,EAAM,EAAIlT,EAC5C,OACEuD,GAAC5D,GAAA,CACC,GAAIK,EAAM,GACV,UAAWiG,GACT,sDACAiN,GAAc,iBAChB,EAEA,UAAA/Q,GAAC,QAAM,SAAA6Q,EAAK,EACZ7Q,GAAC,QAAM,aAAI8Q,CAAK,IAAI,GACtB,CAEJ,ECzEA,OAAS,OAAAxT,GAAK,UAAA0T,OAAc,sBAC5B,OAAa,WAAAzS,OAAe,QAkBtB,cAAAyB,OAAA,oBAVC,IAAMiR,GAAmDpT,GAAU,CACxE,IAAMqT,EAAU3S,GAAQ,IACfV,EAAM,OAAO,IAAKsT,IAAO,CAC9B,MAAOA,EACP,MAAO,GAAGA,CAAC,EACb,EAAE,EACD,CAACtT,EAAM,MAAM,CAAC,EAEjB,OACEmC,GAAC1C,GAAA,CAAI,GAAI,EAAG,MAAO,GAAI,UAAU,gBAC/B,SAAA0C,GAACgR,GAAO,QAAP,CACC,QAASE,EACT,KAAM,KACN,MAAOrT,EAAM,MACb,cAAgBoF,GAAe,CAC7BpF,EAAM,WAAWoF,CAAK,CACxB,EACF,EACF,CAEJ,EXvBA,OAAa,QAAAc,GAAM,WAAAqN,OAAe,sBA+E5B,OAOE,OAAApR,GAPF,QAAAoB,OAAA,oBAlDC,IAAMiQ,GAA+CxT,GAAU,CACpE,GAAM,CAAE,UAAA4R,EAAW,UAAAD,EAAW,MAAArK,EAAO,KAAAD,EAAM,UAAAF,EAAW,cAAAsM,CAAc,EAAIzT,EAIlE0T,EAASpF,GAAO,IAAI,EACpB,CAACgB,EAAWqE,CAAY,EAAInP,GAAS,EAAK,EAE1CoP,EAAY,CAChB,CAAE,KAAM,IAAK,MAAO,GAAI,EACxB,CAAE,KAAM,IAAK,MAAO,GAAI,CAC1B,EAEA,OAAAvF,GAAU,IAAM,CACd,IAAMwF,EAAiB,IAAI,eAAgBC,GAAY,CACrD,QAASC,KAASD,EAAS,CACzB,GAAM,CAAE,WAAYlE,CAAM,EAAImE,EAAM,cAAc,CAAC,EAC7ChT,EAAQ6S,EAAU,OACtB,CAACnD,EAAGC,IAAMD,GAAKb,GAASc,EAAE,MAAQd,EAAQc,EAAE,MAAQ,EAAI,GACxD,CACF,EACAiD,EAAa/D,GAAS,GAAG,CAC3B,CACF,CAAC,EAEKoE,EAAYN,EAAO,QAEzB,OAAIM,GACFH,EAAe,QAAQG,CAAS,EAG3B,IAAM,CACPA,GACFH,EAAe,UAAUG,CAAS,CAEtC,CACF,EAAG,CAAC,CAAC,EAKH7R,GAACwM,GAAA,CACC,WAAY3O,EAAM,YAAc,GAChC,YAAaA,EAAM,YACnB,MAAOA,EAAM,YACb,UAAWsP,EACX,cAAetP,EAAM,eAAiB,CAAC,EACvC,WAAYA,EAAM,WAClB,iBAAkBA,EAAM,iBAExB,SAAAuD,GAAC2C,GAAA,CACC,KAAM,EACN,KAAM,EACN,GAAG,wBACH,IAAKwN,EACL,UAAU,4EAEV,UAAAvR,GAACiR,GAAA,CACC,OAAQpT,EAAM,OACd,MAAOA,EAAM,YACb,SAAUyT,EACZ,EACAtR,GAAC2Q,GAAA,CAAc,MAAOxL,EAAO,KAAMD,EAAM,EACzClF,GAACoP,GAAA,CAAY,KAAM,CAAC,GAAGvR,EAAM,IAAI,EAAG,EACpCmC,GAACmQ,GAAA,CACC,UAAWV,EACX,UAAWD,EACX,KAAM,CAAC,GAAG3R,EAAM,IAAI,EACpB,KAAM,CAAC,GAAGA,EAAM,IAAI,EACpB,WAAYA,EAAM,WACpB,EACAmC,GAACiP,GAAA,CAAY,KAAM,CAAC,GAAGpR,EAAM,IAAI,EAAG,EACnCmH,GACChF,GAAC,OAAI,UAAU,kIACb,SAAAA,GAACoR,GAAA,EAAQ,EACX,GAEJ,EA2BF,CAEJ,EY7IA,OAAa,WAAA7S,OAAe,QAG5B,OAAS,QAAAf,GAAM,QAAAyD,OAAY,sBA0BrB,OAKE,OAAAjB,GALF,QAAAoB,OAAA,oBAnBC,IAAMgD,GAAqBvG,GAAU,CAC1C,GAAM,CAAE,KAAA4O,EAAM,aAAAqF,CAAa,EAAIvF,EAAoB,EAC7CwF,EAAWxT,GAAQ,IACnBkO,IAAS,SACJ5O,EAAM,MAERA,EAAM,KACZ,CAAC4O,EAAM5O,EAAM,MAAOA,EAAM,IAAI,CAAC,EAE5BmU,EAAWzT,GAAQ,IAChBkO,IAAS,SAAW,QAAU,MACpC,CAACA,CAAI,CAAC,EAET,OACErL,GAAC5D,GAAA,CACC,QAAS,UACT,MAAO,OACP,UAAU,sDAEV,UAAA4D,GAAC5D,GAAA,CACC,UAAW,SACX,UAAW,QACX,GAAG,8BAEH,UAAAwC,GAACiB,GAAA,CAAK,iBAAK,EACXjB,GAACiB,GAAA,CAAM,aAAIpD,EAAM,KAAK,IAAI,GAC5B,EACAuD,GAAC5D,GAAA,CACC,UAAW,SACX,UAAW,MACX,UAAU,qBACV,QAAS,IACPsU,IAAerF,IAAS,SAAW,WAAa,QAAQ,EAG1D,UAAAzM,GAACiB,GAAA,CAAM,SAAA+Q,EAAS,EAChBhS,GAACiB,GAAA,CAAM,aAAI8Q,CAAQ,IAAI,GACzB,GACF,CAEJ,EClDA,OAAa,cAAApS,GAAY,WAAApB,OAAe,QAExC,OAAS,WAAA2C,GAAS,wBAAAkL,OAA4B,yBAG9C,OAAS,OAAA9O,GAAK,MAAAwG,GAAI,QAAAtG,GAAM,QAAAyD,OAAY,sBA8C9B,OACE,OAAAjB,GADF,QAAAoB,OAAA,oBAjCC,IAAM6Q,GAAyCpU,GAAU,CAC9D,IAAM4P,EAAS5P,EAAM,YAAcA,EAAM,MAAS,IAC5C,CAAE,WAAAqP,EAAY,YAAAE,EAAa,MAAAC,EAAO,UAAAF,EAAW,WAAApN,CAAW,EAC5DJ,GAAW2M,EAAgB,EACvB,CAAE,QAAAiB,EAAS,SAAAC,CAAS,EAAIzN,EAE1BmS,EAAM,OAAO,MAAMrU,EAAM,QAAQ,EACjC,IACAA,EAAM,OAAS,SACf,IAAIqD,GAAQrD,EAAM,QAAQ,EAAE,IAAIA,EAAM,KAAK,EAAE,SAAS,EACtDA,EAAM,SAENsP,IACF+E,EAAMrU,EAAM,UAGd,IAAM6P,EAAKnP,GAAQ,IACV6N,GAAqBiB,GAAS,GAAGG,CAAQ,EAAE,EACjD,CAACH,EAAOG,CAAQ,CAAC,EAEpB,OACEpM,GAAC9D,GAAA,CACC,UAAWwG,GACT,+FACAqJ,GAAa,YACf,EACA,MAAO,CAAE,OAAQ,GAAGD,CAAU,IAAK,EACnC,QAAUnK,GAAM,CACV,OAAO,MAAMlF,EAAM,KAAK,GAAK,OAAO,MAAMA,EAAM,QAAQ,GAE5DuP,IAAc,CAACvP,EAAM,MAAOA,EAAM,QAAQ,CAAC,CAC7C,EAEA,UAAAuD,GAAC5D,GAAA,CAAK,QAAS,UACb,UAAAwC,GAACiB,GAAK,QAAL,CACC,MAAOpD,EAAM,aAAiC,MAAQ,OACtD,GAAI6P,EAEH,SAAA7P,EAAM,MACT,EACAmC,GAACiB,GAAK,QAAL,CACC,GAAIpD,EAAM,OAAS,SAAW,EAAI0P,EAClC,UAAU,4BAET,SAAA2E,EACH,GACF,EACC,OAAO,MAAMzE,CAAK,GAAKN,EAAY,KAClCnN,GAAC6M,GAAA,CACC,MAAOY,EACP,UACE5P,EAAM,aACF,uBACA,yBAER,GAEJ,CAEJ,ECzEA,OAAS,OAAAP,OAAW,sBAmBV,cAAA0C,OAAA,oBAXH,IAAMmS,GAAmCtU,GAAU,CACxD,GAAM,CAAE,KAAAc,CAAK,EAAId,EACX,CAAE,KAAA4O,CAAK,EAAIF,EAAoB,EAErC,OACEvM,GAAC1C,GAAA,CACC,GAAG,sBACH,UAAU,iDAET,SAAAqB,EAAK,IAAI,CAACiG,EAAMC,IAEb7E,GAACiS,GAAA,CAEC,WAAY,GACZ,MAAOrN,EAAK,CAAC,EACb,SAAUA,EAAK,CAAC,EAChB,YAAaA,EAAK,CAAC,EACnB,MAAO/G,EAAM,SACb,KAAMA,EAAM,KACZ,KAAM4O,GAPD5H,CAQP,CAEH,EACH,CAEJ,ECnCA,OAAa,WAAAtG,OAAe,QAqBxB,cAAAyB,OAAA,oBAhBG,IAAMoS,GAAmBvU,GAAU,CACxC,GAAM,CAAE,KAAAc,CAAK,EAAId,EACXqR,EAAW3Q,GAAQ,IAAM,CAC7B,IAAI4Q,EAAM,OAAO,IAEbtK,EAAQlG,EAAK,OAAS,EAE1B,KAAO,OAAO,MAAMwQ,CAAG,GAAKtK,EAAQ,GAClCsK,EAAMxQ,EAAKkG,CAAK,EAAE,CAAC,EACnBA,IAGF,OAAOsK,CAET,EAAG,CAACxQ,CAAI,CAAC,EACT,OACEqB,GAACmS,GAAA,CAAQ,WAA6B,KAAMxT,EAAM,SAAUuQ,EAAU,CAE1E,ECxBA,OAAa,WAAA3Q,OAAe,QAoBxB,cAAAyB,OAAA,oBAfG,IAAMqS,GAAmBxU,GAAU,CACxC,GAAM,CAAE,KAAAc,CAAK,EAAId,EACXqR,EAAW3Q,GAAQ,IAAM,CAC7B,IAAI4Q,EAAM,OAAO,IACbE,EAAM1Q,EAAK,OACXkG,EAAQ,EAEZ,KAAO,OAAO,MAAMsK,CAAG,GAAKtK,EAAQwK,GAClCF,EAAMxQ,EAAKkG,CAAK,EAAE,CAAC,EACnBA,IAGF,OAAOsK,CACT,EAAG,CAACxQ,CAAI,CAAC,EACT,OACEqB,GAACmS,GAAA,CAAQ,WAA6B,KAAMxT,EAAM,SAAUuQ,EAAU,CAE1E,ECtBA,OAAS,QAAA1R,OAAmB,sBAkBxB,OACE,OAAAwC,GADF,QAAAoB,OAAA,oBARG,IAAMkR,GAAiCzU,GAAU,CACtD,GAAM,CAAE,UAAA2R,EAAY,EAAG,UAAAC,CAAU,EAAI5R,EAE/B,CAAE,WAAAkC,EAAY,iBAAAK,CAAiB,EAAImM,EAAoB,EAEvD,CAAE,SAAAiB,CAAS,EAAIzN,EAErB,OACEqB,GAAC5D,GAAA,CAAK,GAAG,4BAA4B,UAAU,eAAe,MAAO,OAAQ,QAAS,UACpF,UAAAwC,GAACuP,GAAA,CACC,UAAW1R,EAAM,UACjB,UAAWA,EAAM,UACjB,SAAU2P,EACV,UAAU,cACV,SAAU,GACZ,EACAxN,GAACiQ,GAAA,CACC,UAAWpS,EAAM,UACjB,SAAU2P,EACV,UAAU,eACV,SAAU,GACV,iBAAkBpN,EACpB,GACF,CAEJ,ECpCA,OAAS,OAAA9C,GAAK,UAAAiV,OAAc,sBAC5B,OAAa,WAAAhU,OAAe,QAkBpB,cAAAyB,OAAA,oBAVD,IAAMwS,GAAqC3U,GAAU,CAC1D,IAAMqT,EAAU3S,GAAQ,IACfV,EAAM,MAAM,IAAKsT,IAAO,CAC7B,MAAOA,EACP,MAAO,GAAGA,CAAC,EACb,EAAE,EACD,CAACtT,EAAM,KAAK,CAAC,EACd,OACEmC,GAAC1C,GAAA,CAAI,GAAG,uBAAuB,UAAU,uBAEvC,SAAA0C,GAACuS,GAAA,CACC,QAASrB,EACT,UAAS,GACT,KAAM,KACN,MAAOrT,EAAM,MACb,UAAU,yCACV,cAAgBoF,GAAU,CAExBpF,EAAM,WAAWoF,CAAK,CACxB,EACF,EACF,CAEN,ECzBA,OAAS,MAAAa,GAAI,QAAAtG,GAAM,WAAA4T,OAAe,sBCNlC,OAAS,QAAA5T,GAAM,QAAAyD,OAAY,sBASrB,cAAAjB,GAOE,QAAAoB,OAPF,oBANC,IAAMqR,GAAqC5U,GAAU,CAC1D,IAAM6U,EAAkB7U,EAAM,KAAK,iBAC7B8U,EAAY9U,EAAM,KAAK,UAE7B,OACEuD,GAAC5D,GAAA,CAAK,UAAW,SAAU,UAAW,QAAS,GAAI,EACjD,UAAAwC,GAACiB,GAAA,CAAK,UAAW,GAAI,KAAK,MAAM,8BAEhC,EAECyR,IAAoB,KACnB,KAEAtR,GAAC,OAAI,UAAU,oEAEb,UAAApB,GAACiB,GAAK,QAAL,CAAa,SAAQ,GAAC,OAAO,IAAK,SAAAyR,GAAmB,KAAK,EAC3D1S,GAAC,QAAK,cAAE,EACRA,GAAC,QAAM,SAAA2S,EAAU,GACnB,GAEJ,CAEJ,EC1BA,OAAS,kBAAAC,OAAsB,yBAExB,IAAMC,GAAwBnU,IAE5B,CAAE,KADIkU,GAAelU,CAAM,CACpB,GCCP,cAAAsB,OAAA,oBAFF,IAAM8S,GAAqBjV,GAA8B,CAC9D,IAAMuE,EAAQyQ,GAAqBhV,EAAM,MAAM,EAC/C,OAAOmC,GAACyS,GAAA,CAAa,GAAGrQ,EAAO,CACjC,EH2CM,OAQE,OAAApC,GARF,QAAAoB,OAAA,oBAfC,IAAM2R,GAAiClV,GAAU,CACtD,GAAM,CAAE,UAAA4R,EAAW,UAAAD,EAAW,MAAArK,EAAO,KAAAD,EAAM,UAAAF,EAAW,cAAAsM,CAAc,EAAIzT,EAElEa,EAAS,QAAQb,EAAM,WAAW,IAAI,IAAIA,EAAM,WAAW,KAAK,GAEtE,OACEmC,GAACwM,GAAA,CACC,WAAY3O,EAAM,YAAc,GAChC,YAAaA,EAAM,YACnB,MAAOA,EAAM,YACb,cAAe,CAAC,EAChB,UAAW,GACX,WAAYA,EAAM,WAClB,iBAAkBA,EAAM,iBAExB,SAAAuD,GAAC5D,GAAA,CACC,UAAW,SACX,EAAG,EACH,GAAG,uBACH,UAAWsG,GAAG,oCAAqCjG,EAAM,SAAS,EAClE,QAAS,QACT,UAAW,QAEX,UAAAmC,GAAC8S,GAAA,CAAkB,OAAQpU,EAAQ,EACnCsB,GAACoE,GAAA,CAAO,MAAOe,EAAO,KAAMD,EAAM,EAClClF,GAACqS,GAAA,CAAK,KAAMxU,EAAM,KAAM,EACxBmC,GAACsS,GAAA,CAAU,UAAW7C,EAAW,UAAWD,EAAW,EACvDxP,GAACoS,GAAA,CAAK,KAAMvU,EAAM,KAAM,EAExBmC,GAACwS,GAAA,CACC,MAAO3U,EAAM,QAAU,CAAC,EACxB,MAAOA,EAAM,YACb,SAAUyT,EACZ,EACCtM,GACChF,GAAC,OAAI,UAAU,mKACb,SAAAA,GAACoR,GAAA,EAAQ,EACX,GAEJ,EACF,CAEJ,EpB7DQ,cAAApR,OAAA,oBATD,IAAM+S,GAKRlV,GAEDmC,GAAC1C,GAAA,CAAI,UAAU,oBAAoB,MAAO,OAAQ,OAAQ,OACvD,SAAAO,EAAM,OACLmC,GAAC+S,GAAA,CACC,MAAOlV,EAAM,MACb,KAAMA,EAAM,KACZ,KAAMA,EAAM,KACZ,UAAWA,EAAM,UACjB,UAAWA,EAAM,UACjB,OAAQA,EAAM,OACd,YAAaA,EAAM,SACnB,KAAMA,EAAM,KACZ,MAAOA,EAAM,MACb,UAAWA,EAAM,UACjB,YAAaA,EAAM,YACnB,WAAYA,EAAM,WAClB,cAAeA,EAAM,cACrB,UAAWA,EAAM,UACjB,WAAYA,EAAM,WAClB,iBAAkBA,EAAM,iBAC1B,EAEAmC,GAACqR,GAAA,CACC,MAAOxT,EAAM,MACb,KAAMA,EAAM,KACZ,KAAMA,EAAM,KACZ,UAAWA,EAAM,UACjB,UAAWA,EAAM,UACjB,OAAQA,EAAM,OACd,YAAaA,EAAM,SACnB,KAAMA,EAAM,KACZ,MAAOA,EAAM,MACb,UAAWA,EAAM,UACjB,YAAaA,EAAM,YACnB,WAAYA,EAAM,WAClB,cAAeA,EAAM,cACrB,UAAWA,EAAM,UACjB,cAAeA,EAAM,cACrB,WAAYA,EAAM,WAClB,iBAAkBA,EAAM,iBAC1B,EAEJ,EwBtDJ,OAAS,aAAAqO,GAAW,WAAA3N,GAAS,YAAA8D,OAAgB,QAE7C,OACE,iBAAAlB,GACA,sBAAA6R,GACA,kBAAAnU,GACA,kBAAAe,OACK,yBACP,OAAS,uBAAAqT,OAA2B,yBACpC,OAAS,gBAAApT,GAAc,eAAAd,OAAmB,yBAI1C,IAAMmU,GAAsB,GAEtBC,GAAQ,IAEDC,GAAsBvV,GAI7B,CACJ,GAAM,CAAE,OAAAa,EAAQ,OAAA2U,EAAQ,iBAAAjT,EAAmBP,EAAa,EAAIhC,EACtDkC,EAAaH,GAAe,EAAE/B,EAAM,MAAM,EAE1C,CAACqP,EAAYoG,CAAa,EAAIjR,GAAS6Q,EAAmB,EAE1D,CAACK,EAAOC,CAAQ,EAAInR,GAAS,EAAE,EAC/B,CAAE,KAAA6C,EAAM,MAAAC,EAAO,SAAAqI,CAAS,EAAI1N,GAAmBC,CAAU,EAEzD,CAACpB,EAAM,CAAE,cAAA2S,EAAe,UAAAtM,EAAW,YAAAoI,EAAa,MAAAC,EAAO,UAAAoG,CAAU,CAAC,EACtET,GAAmBtU,EAAQ,OAAW,CACpC,MAAA6U,CACF,CAAC,EAEGnU,EAAgBsU,GAAsBhV,CAAM,EAClDwN,GAAU,IAAM,CACd,GAAImH,EAAQ,CAEV,IAAME,EAAQ,KAAK,OAChBF,EAASF,MAAWD,GAAsB,GAAK,EAClD,EAEMS,GAAeT,GAAsB,GAAK,EAAIK,EAE9CK,EAAYP,EAASF,GAAQQ,EAW/BC,EAAY,GACdN,EAAcJ,GAAsBU,EAAYL,EAAQ,CAAC,EAEzDD,EAAcJ,EAAmB,EAGnCM,EAASD,CAAK,CAChB,CACF,EAAG,CAACF,CAAM,CAAC,EAEX,IAAMQ,EAAWtV,GAAQ,IACnB,OAAO8O,EAAU,KAAe,OAAOG,EAAa,IACtD,OAGoByF,GAAoB5F,CAAK,EAE9C,CAACA,EAAOG,CAAQ,CAAC,EAEdsG,EAASvV,GAAQ,IACdkV,GAAW,IAAK1Q,GAAMkQ,GAAoBlQ,CAAC,CAAC,GAAK,CAAC,EACxD,CAAC0Q,EAAWjG,CAAQ,CAAC,EAElBuG,EAAS5S,GAAcf,CAAgB,EAE7C,MAAO,CACL,MAAAmT,EACA,KAAM5U,GAAM,KACZ,KAAMA,GAAM,KACZ,UAAWA,GAAM,UACjB,UAAWA,GAAM,YACjB,OAAAmV,EACA,SAAAD,EACA,KAAA3O,EACA,MAAAC,EACA,UAAAH,EACA,YAAAoI,EACA,WAAAF,EACA,cAAAoE,EACA,cAAAlS,EACA,WAAYU,GAAmBC,CAAU,EACzC,OAAAgU,CACF,CACF,EAEaL,GAAyBhV,GAA6B,CACjE,GAAM,CAACC,CAAI,EAAIE,GAAe,CAC5B,OAAQE,GAAY,WACpB,OAAQL,CACV,CAAC,EAcD,OAZsBH,GAAQ,IACfI,GACT,OAAQiG,GAASA,EAAK,SAAWlG,CAAM,EACxC,OAAO,CAAC4P,EAAGC,IAAM,CAEhB,IAAMyF,EAAQzF,EAAE,OAASA,EAAE,eAAiB,EAC5C,MAAO,CAAC,GAAGD,EAAG0F,CAAK,CACrB,EAAG,CAAC,CAAC,EAGN,CAACrV,EAAMD,CAAM,CAAC,CAGnB,EC1GS,cAAAsB,OAAA,oBAXF,IAAMiU,GAAmBpW,GAK1B,CACJ,IAAMuE,EAAQgR,GAAmB,CAC/B,OAAQvV,EAAM,OACd,OAAQA,EAAM,OACd,iBAAkBA,EAAM,gBAC1B,CAAC,EACD,OAAOmC,GAAC+S,GAAA,CAAW,GAAG3Q,EAAO,UAAWvE,EAAM,UAAW,iBAAkBA,EAAM,iBAAkB,CACrG,ECdA,OACE,QAAAL,GACA,QAAAyD,GACA,OAAA3D,GACA,WAAAsI,GACA,SAAAY,GACA,wBAAAX,GACA,MAAA/B,GACA,YAAAoQ,OACK,sBAEP,OAAS,oBAAAC,OAAwB,+BAEjC,OAAS,iBAAAlO,OAAqB,6BAoCtB,cAAAjG,EAWA,QAAAoB,OAXA,oBAlCD,IAAMgT,GAA+BvW,GAAU,CACpD,GAAM,CAAE,SAAAwW,EAAU,cAAAC,EAAe,YAAAhM,EAAa,gBAAAiM,EAAiB,YAAAC,CAAY,EACzE3W,EACI,CAAE,OAAA4W,EAAQ,SAAAC,EAAU,MAAAC,EAAO,UAAAC,CAAU,EAAIN,EACzC,CAAE,aAAA3M,CAAa,EAAI1B,GAAc,EAGjC4O,EAAYlN,EACd,GACA8M,EACA,kBACAC,EACA,0BACAC,EACA9O,GAAqB,CAAE,MAAO,OAAQ,CAAC,EACvC,GAYJ,OACEzE,GAAC9D,GAAA,CAAI,YAAW,GAAI,UAAU,gBAC5B,UAAA0C,EAACxC,GAAA,CACC,UAAU,SACV,QAAQ,QACR,UAAU,iEAEV,SAAAwC,EAAC1C,GAAA,CACC,UAlBWqK,EACf,wHACA8M,EACA,uFACAC,EACA,uFACAC,EACA,uFACA,wHAWI,MACEN,GAAYA,IAAa,KACrB,CAAE,MAAOA,CAAS,EAClB,CAAE,MAAO,MAAO,EAExB,EACF,EAEAjT,GAAC5D,GAAA,CAAK,UAAU,YACd,UAAA4D,GAAC5D,GAAA,CAAK,UAAU,SAAS,UAAU,QAAQ,UAAU,aACnD,UAAAwC,EAAC4F,GAAA,CACC,QAEI5F,EAAC4H,GAAA,CACC,YAAY,gIACZ,QAAQ,6DACV,EAIJ,SAAA5H,EAACiB,GAAA,CACC,KAAK,MACL,MAAM,UACN,OAAO,WACP,UAAU,0EACX,qBAED,EACF,EACAjB,EAACiB,GAAA,CACC,KAAK,KACL,MAAM,UACN,OAAO,WACP,UAAW6C,GAAG+Q,CAAS,EAEtB,SAAAR,GAAY,KACf,GACF,EAEAjT,GAAC5D,GAAA,CAAK,UAAU,SAAS,UAAU,MAAM,UAAU,aACjD,UAAAwC,EAAC4F,GAAA,CAAQ,KAAM,GAAO,QAAU5F,EAAC,OAAI,qBAAS,EAC5C,SAAAA,EAACiB,GAAA,CACC,KAAK,MACL,MAAM,UACN,OAAO,WACP,UAAU,qBACX,gCAED,EACF,EACAG,GAAC5D,GAAA,CAAK,UAAU,YACd,UAAAwC,EAACiB,GAAK,QAAL,CACC,GAAI,EACJ,QAAS,GACT,OAAQsT,EAAkB,IAAM,OAE/B,SAAAA,GAAmB,KACtB,EAEAvU,EAAC,QAAK,UAAW,4BAA6B,aAAC,EAE/CoB,GAAC,UACC,UAAU,sCACV,QAAS,IAAM,CACboF,GAAM,KAAK2N,GAAkB,CAAE,gBAAiB,CAAE,CAAC,CACrD,EAEA,UAAAnU,EAACiB,GAAK,QAAL,CACC,GAAI,EACJ,QAAS,GACT,OAAQuT,EAAc,IAAM,OAE3B,SAAAA,GAAe,KAClB,EAEC,OAAOA,EAAgB,KAAeA,IAAgB,MACrDxU,EAACkU,GAAA,CAAS,KAAM,GAAI,MAAM,QAAQ,GAEtC,GACF,GACF,GACF,GACF,CAEJ,ECxIA,OAAS,cAAAlO,GAA2B,eAAA8O,GAAa,kBAAA9K,OAAsB,yBACvE,OAAS,qBAAAjE,OAAyB,yBAClC,OAAS,WAAAxH,OAAe,QACxB,OAAS,WAAA2C,OAAe,yBACxB,OAAwB,cAAA1C,OAAkB,6BAE1C,IAAMuW,GAAoBV,GAA4B,CACpD,GAAIA,IAAa,KACf,MAAO,CAAE,OAAQ,GAAO,SAAU,GAAO,MAAO,GAAO,UAAW,EAAK,EAGzE,IAAMM,EAAQN,EAAW,GACnBK,EAAWL,GAAY,IAAMA,EAAW,GACxCI,EAASJ,GAAY,GAI3B,MAAO,CAAE,OAAAI,EAAQ,SAAAC,EAAU,MAAAC,EAAO,UAHhB,CAACA,GAAS,CAACD,GAAY,CAACD,CAGE,CAC9C,EAEaO,GAAoB,IAAM,CACrC,GAAM,CAAE,MAAA5S,CAAM,EAAI4D,GAAW,EAEvBsC,EAAclG,EAAM,QAAU2D,GAAkB,cAChD,CAAE,YAAAgF,EAAY,gBAAAwJ,EAAiB,IAAAvJ,CAAI,EAAIhB,GAAe,EACtD,CAACwK,CAAW,EAAIM,GAAY,EAE5BT,EAAW9V,GAAQ,IACnB,CAAC+J,GAAeyC,IAAgB,MAAQC,IAAQ,KAC3C,KAGLD,IAAgB,GAAKC,IAAQ,EACxB,KASF,GANoB,IAAI9J,GAAQ8J,CAAG,EACvC,IAAID,CAAW,EACf,IAAI,GAAG,EACP,KAAK,EAAG7J,GAAQ,QAAQ,EAGE,SAAS,EAAE,QAAQ,SAAU,EAAE,CAAC,IAC5D,CAACoH,EAAayC,EAAaC,CAAG,CAAC,EAE5BiK,EAAiBZ,IAAa,KAAO,KAAO,WAAWA,CAAQ,EAE/DC,EAAgB/V,GAAQ,IACrBwW,GAAiBE,CAAc,EACrC,CAACA,CAAc,CAAC,EAEbC,EAAe1W,GAAW+V,CAAe,EACzCY,EAAe3W,GAAWgW,CAAW,EAI3C,MAAO,CACL,SAJgBhW,GAAW6V,CAAQ,EAKnC,cAAAC,EACA,YAAAhM,EACA,gBAAiB4M,EACjB,YAAaC,CACf,CACF,EC1DY,cAAAnV,OAAA,oBAFL,IAAMoV,GAAiB,IAAM,CAChC,IAAMhT,EAAQ4S,GAAkB,EAChC,OAAQhV,GAACoU,GAAA,CAAU,GAAGhS,EAAO,CACjC,ECLA,OAAS,OAAA9E,GAAK,MAAAwG,GAAI,QAAAtG,GAAM,QAAAuG,GAAM,YAAAtG,GAAU,QAAAC,GAAM,QAAAuD,OAAY,sBAWlD,cAAAjB,EAqBF,QAAAoB,OArBE,oBAND,IAAMiU,GAEPxX,GAEFmC,EAAC,OAAI,IAAKnC,EAAM,aAAc,UAAU,aACpC,UAAAA,EAAM,eAAe,OAAS,IAAM,IACpCmC,EAACsV,GAAA,CAAc,GAAGzX,EAAO,EAEzBmC,EAACuV,GAAA,CAAW,GAAG1X,EAAO,EAE1B,EAIEyX,GAEAzX,GAEFuD,GAAC2C,GAAA,CACC,KAAM,EACN,MAAO,OACP,IAAK,EACL,UAAU,mBACV,MAAO,CACL,OAAQlG,EAAM,eAAe,MAC/B,EAEA,UAAAuD,GAAC5D,GAAA,CACC,UAAW,SACX,UAAW,QAEX,GAAI,EACJ,GAAI,EACJ,EAAE,MACF,UAAU,gBAEV,UAAAwC,EAAC4Q,GAAA,CAAM,MAAM,aAAa,UAAU,uBAAuB,EAC3D5Q,EAACiU,GAAA,CACC,OAAQpW,EAAM,OACd,iBAAkBA,EAAM,iBACxB,OACEA,EAAM,cACFA,EAAM,cAAc,OAAS,GAAK,GAClC,OAER,GACF,EACAuD,GAAC5D,GAAA,CACC,UAAW,SACX,UAAW,QACX,GAAI,EACJ,EAAE,MACF,UAAU,2BAEV,UAAAwC,EAAC4Q,GAAA,CAAM,MAAM,cAAc,UAAU,uBAAsB,EAC3D5Q,EAACsF,GAAA,CACC,OAAQzH,EAAM,OACd,MAAO,CACL,OAAQA,EAAM,eAAiBA,EAAM,cAAc,OAAS,GAAK,EACnE,EACA,WAAY,CACV,WAAY,WACZ,KAAM,UACR,EACF,GACF,GACF,EAGE0X,GAEA1X,GAEFmC,EAAC1C,GAAA,CAEC,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,EAAE,MACF,UAAU,gBACV,MAAO,CACL,UAAWO,EAAM,eAAe,MAClC,EAEA,SAAAuD,GAAC1D,GAAA,CACC,MAAOG,EAAM,IACb,QAAQ,YACR,cAAgB2X,GAAQ,CACtB3X,EAAM,OAAO2X,CAAU,CACzB,EACA,WAAY,CACV,SAAU,UAEZ,EACA,KAAK,KAEL,UAAAxV,EAACvC,GAAA,CAAS,MAAM,YAAY,MAAO,aACjC,SAAAuC,EAACiU,GAAA,CACC,OAAQpW,EAAM,OACd,iBAAkBA,EAAM,iBACxB,OACEA,EAAM,cACFA,EAAM,cAAc,OAAS,GAAK,GAClC,OAER,EACF,EACAmC,EAACvC,GAAA,CAAS,MAAM,aAAa,MAAO,cAClC,SAAAuC,EAACsF,GAAA,CACC,OAAQzH,EAAM,OACd,MAAO,CACL,OAAQA,EAAM,eAAiBA,EAAM,cAAc,OAAS,GAAK,EACnE,EACA,WAAY,CACV,WAAY,WACZ,KAAM,UAER,EACF,EACF,GACF,EACF,EAIE+S,GAAS/S,GAEXmC,EAACiB,GAAA,CAAK,KAAK,OAAO,UAAW,GAAI,UAAW6C,GAAG,eAAejG,EAAM,SAAS,EAC1E,SAAAA,EAAM,MACT,ECvIJ,OAAS,aAAAqO,GAAW,UAAAC,GAAQ,YAAA9J,OAAgB,QAErC,IAAMoT,GAA+B/W,GAAmB,CAC7D,GAAM,CAACgX,EAAeC,CAAgB,EAAItT,GAMxC,MAAS,EAEL,CAACmT,EAAKI,CAAM,EAAIvT,GAAqC,WAAW,EAEhEwT,EAAe1J,GAAuB,EAE5C,OAAAD,GAAU,IAAM,CACd,IAAMwF,EAAiB,IAAI,eAAgBC,GAAY,CACrD,QAASC,KAASD,EAAS,CACzB,GAAM,CAAE,MAAAlE,EAAO,OAAA4F,CAAO,EAAIzB,EAAM,YAChC+D,EAAiB,CACf,MAAAlI,EACA,OAAA4F,CACF,CAAC,CACH,CACF,CAAC,EAEKxB,EAAYgE,EAAa,QAE/B,OAAIhE,GACFH,EAAe,QAAQG,CAAS,EAG3B,IAAM,CACPA,GACFH,EAAe,UAAUG,CAAS,CAEtC,CACF,EAAG,CAAC,CAAC,EAEE,CACL,OAAAnT,EACA,cAAAgX,EACA,aAAcG,EACd,IAAAL,EAAI,OAAAI,CACN,CACF,ECrCY,cAAA5V,OAAA,oBALL,IAAM8V,GAA4BjY,GAGnC,CACF,IAAMuE,EAAQqT,GAA4B5X,EAAM,MAAM,EACtD,OAAQmC,GAACqV,GAAA,CAAmB,iBAAkBxX,EAAM,iBAAmB,GAAGuE,EAAO,CACrF,ECRA,OAAO2T,OAA2B,mBCAlC,OAAS,MAAAjS,OAAU,sBAuBb,cAAA9D,OAAA,oBAjBC,IAAMgW,GAA6CnY,GAAU,CAClE,GAAM,CAAE,YAAAoY,EAAa,KAAAxJ,EAAO,aAAc,GAAGpM,CAAK,EAAIxC,EACtD,OACEmC,GAAC,OACE,GAAGK,EACJ,UAAWyD,GACTjG,EAAM,UACN,uBACA,uCACA,qGACA,wGACA,qGACA4O,IAAS,aACL,2CACA,0CACN,EAEA,SAAAzM,GAAC,OACC,YAAaiW,EACb,UAAWnS,GACT,uBACA2I,IAAS,aAAe,qBAAuB,qBAC/C,yDACF,EACF,EACF,CAEJ,EDjBQ,cAAAzM,OAAA,oBATD,IAAMkW,GAA2CrY,GAAU,CAChE,GAAM,CAAE,aAAAsY,EAAc,GAAG9V,CAAK,EAAIxC,EAElC,OAEEmC,GAAC+V,GAAA,CACE,GAAG1V,EACJ,QAAO,GACP,UAAY+V,GACVpW,GAACgW,GAAA,CAAc,GAAGI,EAAU,KAAMvY,EAAM,KAAM,EAEhD,UAAW,CAACwY,EAAG5I,EAAO6I,IAAQ,CAE5BH,IAAe,GAAG1I,CAAK,EAAE,CAC3B,EACF,CAEJ,EExBA,OAOE,QAAAjQ,OAEK,sBCTP,OAAS,OAAAF,GAAK,aAAAiZ,GAAiB,SAAA/P,GAAa,SAAAC,OAAa,sBAEzD,OAAS,wBAAA+P,OAA4B,qCAiC7B,cAAAxW,GAWM,QAAAoB,OAXN,oBA/BD,IAAMqV,GAAyB5Y,GAElCmC,GAAC,UACC,QAAU+C,GAAM,CACdyD,GACG,KAEEgQ,GAAsB,CAEvB,eAAe,GACf,eAAgB3Y,EAAM,cACxB,CAAC,EACA,KACE6Y,GAAW,CACNA,GAAG,SACL7Y,EAAM,WAAW6Y,GAAG,OAAO,EAE7BjQ,GAAM,QAAQ,kBAAkB,CAClC,EACCc,GAAO,EACV,CACJ,EAEA,SAAAnG,GAAC9D,GAAA,CAAI,UAAU,sIAQb,UAAA0C,GAACuW,GAAA,CAAU,QAAS1Y,EAAM,SAAWA,EAAM,eAAgB,KAAK,MAAM,EACtEmC,GAAC,OAAI,UAAU,wCACb,SAAAoB,GAAC,OACC,MAAM,IACN,OAAO,IACP,QAAQ,UACR,KAAK,OACL,MAAM,6BAEN,UAAApB,GAAC,QAAK,EAAE,6BAA6B,KAAK,UAAU,EACpDA,GAAC,QACC,SAAAoB,GAAC,kBACC,GAAG,IACH,GAAG,IACH,GAAG,MACH,GAAG,IACH,GAAG,MACH,cAAc,iBAEd,UAAApB,GAAC,QAAK,UAAU,UAAU,EAC1BA,GAAC,QAAK,OAAO,IAAI,UAAU,UAAU,GACvC,EACF,GACF,EACF,GACF,EACF,EC9DJ,OAAS,cAAAgG,GAAY,aAAAG,OAAqC,yBAC1D,OAAS,iBAAAF,OAAqB,6BAC9B,OAAS,aAAAM,OAAiB,yBAC1B,OAAS,aAAA2F,GAAW,WAAA3N,GAAS,YAAA8D,OAAgB,QAEtC,IAAMsU,GAAiB,IAAM,CAClC,GAAM,CAAE,QAAA9P,CAAQ,EAAIb,GAAW,EACzBf,EAAQkB,GAAU,EAClB,CAACyQ,EAASC,CAAU,EAAIxU,GAAqCwE,EAAQ,OAAO,EAElFqF,GAAU,IAAM,CACd2K,EAAWhQ,EAAQ,OAAO,CAC5B,EAAG,CAACA,EAAQ,OAAO,CAAC,EAEpB,IAAMiQ,EAAiBvY,GAAQ,IAAM,CACnC,GAAIqY,EACF,OAAOrQ,GAAU,OAAOqQ,CAAO,CAAC,CAGpC,EAAG,CAACA,CAAO,CAAC,EACN,CAAE,aAAAjP,CAAa,EAAI1B,GAAc,EACjCiD,EAAYjE,EAAO,IAAI,WAAW,EAWxC,MAAO,CACL,eAXqB1G,GAAQ,IAEzB2K,IAAc,UAET,OAEF,MAEN,CAAC,CAAC,EAIH,QAAA0N,EACA,WAAAC,EACA,eAAAC,EACA,UAAA5N,EACA,eAAgBvB,CAClB,CACF,ECnCY,cAAA3H,OAAA,oBAFL,IAAM+W,GAAc,IAAM,CAC7B,IAAM3U,EAAQuU,GAAe,EAC7B,OAAQ3W,GAACyW,GAAA,CAAO,GAAGrU,EAAO,CAC9B,ECLA,OAAc,UAAAE,GAAc,iBAAA0U,OAA2B,sBAEvD,OAAS,aAAAlR,OAAiB,gCAOpB,cAAA9F,OAAA,oBALC,IAAMiX,GAA6BpZ,GAEtCmC,GAAC8F,GAAA,CAAU,YAAa,CACpB,KAAM,IACV,EACE,SAAA9F,GAACsC,GAAA,CAAO,QAAQ,WAAW,KAAM,KAAM,UAAU,mBAAmB,QAAUS,GAAM,CAClFlF,EAAM,mBAAmB,CAC3B,EACG,SAAAmZ,GAAcnZ,EAAM,QAAU,CAAC,EAAG,CAAC,CAAC,EACvC,EACF,ECfJ,OAAS,SAAA2I,OAAa,sBCCtB,OAAS,uBAAA0Q,GAAqB,UAAA5U,GAAQ,QAAA9E,EAAM,QAAAyD,MAAY,sBCSlD,OACE,OAAAjB,EADF,QAAAoB,OAAA,oBAVC,IAAM+V,GAAW,IAEpB/V,GAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BACN,UAAU,mBAEV,UAAAA,GAAC,KAAE,SAAS,UACV,UAAApB,EAAC,QACC,EAAE,kDACF,KAAK,UACP,EACAA,EAAC,QACC,EAAE,oDACF,KAAK,UACP,EACAA,EAAC,QACC,EAAE,wDACF,KAAK,UACP,GACF,EACAA,EAAC,QACC,SAAAA,EAAC,YAAS,GAAG,IACX,SAAAA,EAAC,QAAK,MAAM,KAAK,OAAO,KAAK,GAAG,KAAK,KAAK,OAAO,EACnD,EACF,GACF,EAISoX,GAAW,IAEpBpX,EAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAA,EAAC,QACC,EAAE,kVACF,KAAK,UACP,EACF,EAISqX,GAAYxZ,GAA6B,CACpD,GAAM,CAAE,KAAAyZ,EAAO,EAAG,EAAIzZ,EACtB,OACEuD,GAAC,OACC,MAAOkW,EACP,OAAQA,EACR,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,UAAAlW,GAAC,KAAE,SAAS,UACV,UAAApB,EAAC,QACC,EAAE,0EACF,KAAK,UACP,EACAA,EAAC,QACC,EAAE,4mBACF,KAAK,OACL,YAAY,MACd,EACAA,EAAC,QACC,EAAE,+mBACF,KAAK,OACP,GACF,EACAA,EAAC,QACC,SAAAA,EAAC,YAAS,GAAG,IACX,SAAAA,EAAC,QAAK,KAAK,OAAO,EAAE,gBAAgB,EACtC,EACF,GACF,CAEJ,EAEauX,GAAe1Z,GAA6B,CACvD,GAAM,CAAE,KAAAyZ,EAAO,EAAG,EAAIzZ,EACtB,OACEuD,GAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,UAAAA,GAAC,KAAE,YAAU,yBACX,UAAApB,EAAC,QACC,EAAE,8NACF,KAAK,iCACP,EACAA,EAAC,QACC,YAAU,UACV,YAAU,UACV,EAAE,yNACF,KAAK,QACP,EACAA,EAAC,QACC,YAAU,UACV,YAAU,UACV,EAAE,2ZACF,KAAK,QACP,EACAA,EAAC,QACC,YAAU,UACV,YAAU,UACV,EAAE,ggBACF,KAAK,QACP,EACAA,EAAC,QACC,YAAU,UACV,YAAU,UACV,EAAE,0zBACF,KAAK,QACP,GACF,EACAoB,GAAC,QACC,UAAAA,GAAC,kBACC,GAAG,2BACH,GAAG,UACH,GAAG,YACH,GAAG,UACH,GAAG,UACH,cAAc,iBAEd,UAAApB,EAAC,QAAK,aAAW,UAAU,EAC3BA,EAAC,QAAK,OAAO,IAAI,aAAW,UAAU,GACxC,EACAA,EAAC,YAAS,GAAG,mBACX,SAAAA,EAAC,QAAK,MAAM,KAAK,OAAO,KAAK,KAAK,QAAQ,EAC5C,GACF,GACF,CAEJ,ED1IA,OAAS,WAAAkB,OAAe,yBAKlB,cAAAlB,EAGA,QAAAoB,MAHA,oBAHC,IAAMoW,GAAuC3Z,GAEhDuD,EAAC5D,EAAA,CAAK,UAAW,SAAU,IAAK,EAC9B,UAAAwC,EAACyX,GAAA,CAAa,GAAG5Z,EAAO,EACxBmC,EAAC0X,GAAA,CAAc,GAAG7Z,EAAO,EACzBmC,EAAC2X,GAAA,CAAoB,GAAG9Z,EAAO,EAC/BuD,EAAC5D,EAAA,CAAK,IAAK,EAAG,MAAO,OAAQ,QAAS,SACnC,UAAAK,EAAM,iBACLmC,EAACsC,GAAA,CACC,QAAQ,WAER,KAAK,KACL,QAASzE,EAAM,cACf,UAAS,GACT,QAASA,EAAM,gBACf,UAAU,kDACX,yBAED,EAEFmC,EAACsC,GAAA,CACC,QAAQ,WACR,MAAM,SACN,KAAK,KACL,QAASzE,EAAM,aACf,UAAWA,EAAM,gBAAkB,aAAe,cACnD,sBAED,GACF,GACF,EAGS4Z,GAAsC5Z,GAE/CuD,EAAC5D,EAAA,CAAK,MAAO,OAAQ,QAAS,UAC5B,UAAA4D,EAAC5D,EAAA,CAAK,IAAK,EACT,UAAAwC,EAACmX,GAAA,EAAS,EACV/V,EAAC5D,EAAA,CACC,UAAW,SACX,QAAS,QACT,UAAW,QACX,UAAU,gBAEV,UAAAwC,EAACiB,EAAK,UAAL,CAAe,KAAM,UAAY,SAAApD,EAAM,QAAQ,EAChDmC,EAACiB,EAAK,UAAL,CACC,KAAK,MACL,UAAW,GAEX,OACEjB,EAAC,OAAI,UAAU,2DAA2D,EAG3E,SAAAnC,EAAM,UACT,GACF,GACF,EACAmC,EAAC,UACC,UAAU,qBACV,QAAS,IAAM,CACbnC,EAAM,cAAc,CACtB,EAEA,SAAAmC,EAACoX,GAAA,EAAS,EACZ,GACF,EAISM,GAAuC7Z,GAEhDuD,EAAC5D,EAAA,CACC,UAAW,SACX,IAAK,EACL,EAAE,KACF,EAAG,EACH,UAAU,gBACV,MAAO,OAEP,UAAAwC,EAAC,UACC,QAASnC,EAAM,gBACf,UAAU,gCAEV,SAAAuD,EAAC5D,EAAA,CAAK,QAAS,UAAW,MAAO,OAC/B,UAAAwC,EAACiB,EAAA,CAAK,KAAK,MAAM,oBAAQ,EACzBjB,EAACkX,GAAA,CAAoB,MAAM,QAAQ,QAAS,IAAM,KAAM,GAAI,GAC9D,EACF,EACCrZ,EAAM,aACLuD,EAAC5D,EAAA,CACC,SAAS,UACT,EAAG,EACH,EAAE,KACF,MAAO,OACP,MAAO,IACP,QAAS,UAET,UAAA4D,EAAC5D,EAAA,CAAK,UAAW,SAAU,UAAW,QACpC,UAAAwC,EAACiB,EAAA,CAAK,KAAK,KAAK,qBAAS,EACzBjB,EAACiB,EAAA,CAAK,KAAK,MAAM,UAAW,GAAI,4BAEhC,GACF,EACAG,EAAC5D,EAAA,CAAK,UAAU,gBACd,UAAAwC,EAACqX,GAAA,EAAS,EACVrX,EAACiB,EAAK,QAAL,CACC,GAAI,EACJ,QAAS,GACT,GAAIC,GAAQ,WACZ,KAAK,QAEJ,SAAArD,EAAM,wBAA0B,KACnC,GACF,GACF,EAEDA,EAAM,UACLuD,EAAC5D,EAAA,CACC,SAAS,UACT,EAAG,EACH,EAAE,KACF,MAAO,OACP,MAAO,IACP,QAAS,UAET,UAAA4D,EAAC5D,EAAA,CAAK,UAAW,SAAU,UAAW,QACpC,UAAAwC,EAACiB,EAAA,CAAK,KAAK,KAAK,kBAAM,EACtBjB,EAACiB,EAAA,CAAK,KAAK,MAAM,UAAW,GAAI,4BAEhC,GACF,EACAG,EAAC5D,EAAA,CAAK,UAAU,gBACd,UAAAwC,EAACqX,GAAA,EAAS,EACVrX,EAACiB,EAAK,QAAL,CACC,GAAI,EACJ,QAAS,GACT,GAAIC,GAAQ,WACZ,KAAK,QAEJ,SAAArD,EAAM,qBAAuB,KAChC,GACF,GACF,GAEJ,EAIS8Z,GAA6C9Z,GAEtDuD,EAAC5D,EAAA,CACC,UAAW,SACX,IAAK,EACL,EAAE,KACF,EAAG,EACH,UAAU,gBACV,MAAO,OAEP,UAAAwC,EAAC,UACC,QAASnC,EAAM,sBACf,UAAU,gCAEV,SAAAuD,EAAC5D,EAAA,CAAK,QAAS,UAAW,MAAO,OAC/B,UAAA4D,EAAC,QAAK,UAAU,eAAe,4BAE/BpB,EAACiB,EAAA,CAAK,UAAW,GAAK,oBAAW,EAChCpD,EAAM,WACPmC,EAACiB,EAAA,CAAM,UAAW,GAAK,cAAK,GAC5B,EACAjB,EAACkX,GAAA,CAAoB,MAAM,QAAQ,QAAS,IAAO,KAAM,GAAG,GAC9D,EACF,EACA9V,EAAC5D,EAAA,CACC,EAAG,EACH,EAAE,KACF,MAAO,OACP,MAAO,IACP,QAAS,UACT,UAAU,2DAEV,UAAAwC,EAACiB,EAAA,CAAK,KAAK,MAAM,UAAW,GAAI,2BAEhC,EAEAG,EAAC5D,EAAA,CAAK,UAAU,gBACd,UAAAwC,EAACuX,GAAA,EAAY,EACbvX,EAACiB,EAAK,QAAL,CACC,GAAI,EACJ,QAAS,GACT,GAAIC,GAAQ,WACZ,KAAK,QAEJ,SAAArD,EAAM,WACT,GACF,GACF,GACF,EE1MJ,OACE,UAAA+Z,GACA,cAAA5R,GAEA,aAAA6R,GACA,aAAA1R,GACA,uBAAA2R,GACA,gBAAAC,GACA,eAAA3R,GACA,mBAAA4R,GACA,sBAAA3R,OACK,yBACP,OAAS,qBAAAN,GAAmB,kBAAAO,OAAsB,yBAClD,OAAS,SAAAE,GAAO,SAAAC,GAAO,YAAAwR,OAAgB,sBACvC,OAAS,aAAA1R,OAAiB,yBAC1B,OAAS,WAAAhI,OAAe,QAGjB,IAAM2Z,GACXra,GACG,CACH,GAAM,CAAE,QAAAgJ,EAAS,MAAAzE,CAAM,EAAI4D,GAAW,EAChCmS,EAAYtR,EAAQ,UACpBuR,EAAUvR,EAAQ,QAClB+P,EAAU/P,EAAQ,QAClB,CAAE,KAAAwR,CAAK,EAAIJ,GAAS,EAEpBhT,EAASkB,GAAU,EAEnB,CAAE,eAAAQ,EAAgB,WAAA2R,EAAY,UAAA1R,CAAU,EAAIP,GAAmB,EAC/DkS,EAAkBha,GAAQ,IAAM,CACpC,IAAMqY,EAAUjQ,GAAgB,GAChC,OAAIiQ,IAAY,OACP,GAIPxU,EAAM,SAAW2D,GAAkB,eAEnCQ,GAAU,SAASqQ,CAAO,CAAC,CAE/B,EAAG,CAACxU,EAAM,OAAQuE,CAAc,CAAC,EAG3B6R,EAAYC,GAAa,EAEzB3R,EAAc7B,EAAO,IAAY,aAAa,EAE9CyT,EAAgB,IAAM,CAC1B,UAAU,UAAU,UAAUN,GAAW,EAAE,EAC3C3R,GAAM,QAAQ,cAAc,CAC9B,EAEM,CACJ,uBAAAkS,EACA,oBAAAC,EACA,YAAAC,EACA,SAAAC,EACA,gBAAAC,CACF,EAAIC,GAAYnb,EAAM,eAAe,EAE/B,CAAE,WAAAob,EAAY,WAAAC,EAAY,sBAAAC,CAAsB,EAAIC,GACxDvb,EAAM,qBACR,EAEMwb,EAAe,SAAY,CAC/B,MAAMf,EAAW,CACf,MAAOlW,EAAM,eAAe,IAC9B,CAAC,EACD,MAAMyE,EAAQ,WAAW,EACzBwR,EAAK,CACP,EACM,CAACtR,EAAa,CAAE,WAAYuS,EAAgB,CAAC,EAAIlT,GACrD,GAAGU,CAAW,iBAChB,EAoCA,MAAO,CACL,UAAAqR,EACA,QAAAC,EACA,QAAAxB,EACA,UAAA4B,EACA,cAAAE,EAEA,uBAAAC,EACA,gBAAAI,EACA,YAAAF,EACA,SAAAC,EACA,oBAAAF,EAEA,WAAAK,EACA,sBAAAE,EACA,WAAAD,EAEA,aAAAG,EACA,gBAAAd,EACA,cAtDoB,IAAM,CAC1B,GAAInW,EAAM,OAAS2D,GAAkB,cAInC,OAGF,IAAMqB,EAAU,GACdR,IAAcN,GAAe,OAAS,MAAQ,OAChD,2GAEA,OAAOS,EAAY,CACjB,SAAUF,EAAQ,eAAe,QAAQ,SAAS,EAClD,aAAczE,EAAM,QACpB,UAAW6C,EAAO,IAAI,UAAU,CAClC,CAAC,EAAE,KACAoC,GAAa,CACZ,GAAIA,EAAI,QACN,OAAOb,GAAM,MAAM,CACjB,MAAO,gBACP,QAAAY,EACA,KAAM,IACG,QAAQ,QAAQ,EAAI,CAE/B,CAAC,EAEHC,EAAI,SAAWZ,GAAM,MAAMY,EAAI,OAAO,CAExC,EACCE,GAAiB,CAChBd,GAAM,MAAMc,EAAM,OAAO,CAC3B,CACF,CACF,EAqBE,gBAAA+R,EACF,CACF,EAEMN,GAAeO,GAAkC,CACrD,GAAM,CAAE,KAAA5a,EAAM,UAAAqG,EAAW,YAAA6T,EAAa,SAAAC,CAAS,EAAId,GAAgB,EAC7DW,EAAyBpa,GAAQ,IAAM,CAC3C,GAAIsa,EACF,OAAOla,GAAM,cAAc,qBAAqB,CAGpD,EAAG,CAACA,CAAI,CAAC,EACHia,EAAsBra,GAAQ,IAAM,CACxC,GAAIua,EACF,OAAOna,GAAM,aAAa,oBAAoB,CAGlD,EAAG,CAACA,CAAI,CAAC,EAMT,MAAO,CACL,gBALsB,IAAM,CAC5B4a,IAAmB,CACrB,EAIE,uBAAAZ,EACA,oBAAAC,EACA,YAAAC,EACA,SAAAC,CAOF,CACF,EAEMM,GAAqBI,GAA0B,CACnD,GAAM,CAACC,CAAgB,EAAI3B,GAAoBF,GAAO,MAAM,EACtD,CAAC8B,EAAMC,CAAQ,EAAI5B,GAAaH,GAAO,MAAM,EAC7CqB,EAAa1a,GAAQ,IAClBob,EAAS,cAAc,UAAY,KACzC,CAACA,CAAQ,CAAC,EAEPT,EAAa3a,GAAQ,IACrB,OAAOkb,GAAkB,aAAiB,IACrC,KAEFA,GAAkB,aACxB,CAACA,CAAgB,CAAC,EAMrB,MAAO,CACL,WAAAR,EACA,WAAAC,EACA,sBAP4B,IAAM,CAClCM,IAAW,CACb,CAMA,CACF,EAEO,SAASf,IAAe,CAC7B,GAAM,CAAE,eAAA9R,CAAe,EAAIN,GAAmB,EAExC,CAACuT,EAAY,CAAE,cAAAC,CAAc,CAAC,EAAIhC,GAAU,UAAW,CAC3D,KAAM,gBACN,OAASiC,GACPA,EAAM,eAAe,eAAiBA,EAAM,eAAe,UAC/D,CAAC,EAiBD,OAfkBvb,GAAQ,IAAM,CAE9B,IAAMub,EAAQD,EAAc,SAASlT,GAAgB,EAAG,EAAG,eAAe,EAE1E,OAAKmT,EAQEA,EAAM,KAPJ,SAQX,EAAG,CAACnT,EAAgBkT,CAAa,CAAC,CAGpC,CCpNY,cAAA7Z,OAAA,oBAFL,IAAM+Z,GAAsBlc,GAAiD,CAChF,IAAMuE,EAAQ8V,GAAsBra,CAAK,EACzC,OAAQmC,GAACwX,GAAA,CAAc,GAAGpV,EAAO,CACrC,EJJA,OAAS,cAAA4D,OAAkB,yBAWZ,cAAAhG,OAAA,oBATR,IAAMga,GAAmB,IAAM,CACpC,GAAM,CAAE,SAAAC,EAAU,eAAAC,EAAgB,mBAAAC,CAAmB,EACnDja,EAAsB,EACpB,CAAE,QAAA2G,CAAQ,EAAIb,GAAW,EAS7B,MAAO,CACL,mBARyB,IAAM,CAC/BQ,GAAM,MAAM,CACV,MAAO,UACP,QAAS2T,EACT,QAASna,GAAC+Z,GAAA,CAAoB,GAAGE,EAAW,GAAGC,EAAgB,CACjE,CAAC,CACH,EAGE,QAASrT,EAAQ,OACnB,CACF,EKhBY,cAAA7G,OAAA,oBAFL,IAAMoa,GAAgB,IAAM,CAC/B,IAAMhY,EAAQ4X,GAAiB,EAC/B,OAAQha,GAACiX,GAAA,CAAS,GAAG7U,EAAO,CAChC,ECLA,OACE,UAAAE,GACA,WAAA/E,GACA,gBAAAmI,GACA,WAAAD,GACA,QAAAjI,GACA,QAAAyD,OACK,sBAEP,OAAS,mBAAAiD,OAAuB,yBAaxB,OACE,OAAAlE,GADF,QAAAoB,OAAA,oBAXD,IAAMiZ,GAA6Bxc,GAEtCuD,GAAC5D,GAAA,CAAK,IAAK,EACT,UAAA4D,GAAC5D,GAAA,CACC,UAAW,SACX,UAAW,QACX,UAAU,qCACV,QAAUuF,GAAM,CACdlF,EAAM,qBAAqB,CAC7B,EAEA,UAAAuD,GAAC5D,GAAA,CACC,UAAAwC,GAACiB,GAAA,CAAK,UAAW,GAAI,uBAAW,EAChCjB,GAAC,UACC,QAAU+C,GAAM,CACdA,EAAE,gBAAgB,EAClBA,EAAE,eAAe,EACjBlF,EAAM,cAAc,CAACA,EAAM,UAAU,CACvC,EACA,UAAU,WAET,SAAAA,EAAM,WACLmC,GAACyF,GAAA,CACC,MAAM,UACN,QAAS,EACT,KAAM,GACN,UAAU,yBACZ,EAEAzF,GAAC0F,GAAA,CACC,MAAM,UACN,QAAS,EACT,KAAM,GACN,UAAU,yBACZ,EAEJ,EACA1F,GAACsa,GAAA,EAAW,GACd,EACAta,GAACiB,GAAK,QAAL,CACC,OAAQjB,GAACiB,GAAA,CAAK,UAAW,GAAI,oBAAU,EACvC,GAAI,EACJ,QAAS,CAACpD,EAAM,WAEf,SAAAA,EAAM,gBAAkBA,EAAM,OAAS,KAAO,KACjD,GACF,EACC,CAACA,EAAM,cAAgBA,EAAM,iBAC5BmC,GAACzC,GAAA,CAAQ,UAAU,WAAW,UAAU,eAAe,EAExD,CAACM,EAAM,cAAgBA,EAAM,iBAC5BmC,GAACsC,GAAA,CACC,QAAS,WACT,QAAUS,GAAM,CACdlF,EAAM,qBAAqB,CAC7B,EACA,UAAU,4EAET,SAAAqG,GAAgBrG,EAAM,gBAAiB,CAAE,IAAK,CAAE,CAAC,EAAI,IACxD,GAEJ,EAIEyc,GAAa,IAEfta,GAAC,OACC,MAAM,IACN,OAAO,IACP,QAAQ,UACR,KAAK,OACL,MAAM,6BAEN,SAAAA,GAAC,QACC,EAAE,o3BACF,KAAK,OACL,YAAY,MACd,EACF,EC3FJ,OAAS,SAAAwG,OAAa,sBCAtB,OAAa,eAAAjB,OAAmB,QAChC,OACE,sBAAAC,GACA,oBAAA8J,GACA,UAAAhN,GACA,MAAAwB,GACA,WAAAvG,GACA,gBAAAmI,GACA,WAAAD,GACA,QAAAjI,GACA,QAAAuG,GACA,SAAAyC,GACA,eAAA+T,GACA,UAAAC,GACA,aAAAxZ,GACA,QAAAC,MACK,sBChBP,OACE,cAAA+E,GACA,iBAAA+D,GACA,eAAA+K,GACA,kBAAA9K,GACA,qBAAA1L,OACK,yBAEP,OAAS,eAAAiH,GAAa,WAAAhH,GAAS,YAAA8D,OAAgB,QAC/C,OAAS,SAAAmE,GAAoB,SAAAC,OAAa,sBAC1C,OAAS,iCAAAyD,OAAqC,+BAEvC,IAAMuQ,GAA0B,IAAM,CAC3C,GAAM,CAAE,QAAA5T,CAAQ,EAAIb,GAAW,EACzB0U,EAASC,GAAU,EACnB5P,EAAc6P,GAA0B,EACxC,CAACC,EAAeC,CAAgB,EAAIzY,GAAS,EAAK,EAClD0Y,EAAcxV,GAAY,SACvBsB,EACJ,OAAO,EACP,MAAO9D,GAAM,CACZ,GAAIA,EAAE,MAAQ,MACZ,OAAA0D,GAAM,MACJ,2EACF,EACO,QAAQ,OAAO1D,CAAC,EAEzB,GAAIA,GAAG,OAAS,kBACd,OAAA0D,GAAM,MAAM,4BAA4B,EACjC,QAAQ,OAAO1D,CAAC,CAE3B,CAAC,EACA,KAAMsE,IACLZ,GAAM,QAAQ,sBAAsB,EAC7B,QAAQ,QAAQY,CAAG,EAC3B,EACF,CAACR,CAAO,CAAC,EACNuC,EAAY7D,GAAY,IAAM,CAClCiB,GAAM,KAAK0D,GAA+B,CACxC,UAAW,SACb,CAAC,CACH,EAAG,CAAC,CAAC,EACCb,EAAa9D,GAAY,IAAM,CACnCiB,GAAM,KAAK0D,GAA+B,CACxC,UAAW,UACb,CAAC,CACH,EAAG,CAAC,CAAC,EAGL,MAAO,CACL,GAAGwQ,EACH,GAAG3P,EACH,YAAAgQ,EACA,UAAA3R,EACA,WAAAC,EACA,cAAAwR,EAAe,iBAAAC,CACjB,CACF,EAEMH,GAAY,IAAM,CACtB,GAAM,CAAE,WAAAvc,EAAY,cAAAC,CAAc,EAAIT,EAAuB,EACvDod,EAAmB,IAAM,CAC7B3c,EAAc,CAACD,CAAU,CAC3B,EACM,CAAE,gBAAA6c,EAAiB,eAAAvS,EAAgB,WAAAV,EAAY,iBAAAkT,CAAiB,EACpEnR,GAAc,CACZ,GAAI,CACN,CAAC,EACH,MAAO,CACL,WAAA3L,EACA,iBAAA4c,EACA,gBAAAC,EACA,eAAAvS,EACA,WAAAV,EACA,iBAAAkT,CACF,CACF,EAEMN,GAA4B,IAAM,CACtC,GAAM,CAAC,CAAE,WAAA7Y,EAAY,mBAAAkJ,CAAmB,EAAGC,CAAa,EACtD5M,GAAkB,EACd,CAAE,YAAAyM,EAAa,gBAAAwJ,EAAiB,IAAAvJ,CAAI,EAAIhB,GAAe,EAEvDrB,EAAiBpK,GAAQ,IACtB,KAAK,IACV,GACAwD,EAAW,WAAa,EAEpBmJ,EAAc,aAAgB,EAAE,EAChCH,CACN,EACC,CAACA,EAAahJ,CAAU,CAAC,EAEtB,CAACoZ,EAAa,CAAE,OAAAC,EAAQ,OAAQC,EAAgB,WAAArU,CAAW,CAAC,EAChE8N,GAAY,EAERwG,EAAQ/c,GAAQ,IAElB8c,GAAgB,IAAKtY,IAAe,CAClC,MAAO,GAAGA,CAAC,IACX,MAAOA,CACT,EAAE,GAAK,CAAC,EAET,CAACsY,CAAc,CAAC,EAEb,CAACE,EAAUC,CAAW,EAAInZ,GAAS8Y,GAAe,CAAC,EAEnD3G,EAAc6G,GAAgB,OAAO,CAAC/M,EAAW1J,IAAc,KAAK,IAAI0J,EAAG,OAAO1J,CAAI,EAAG,CAAC,CAAC,EAE3F6W,EAAO,MAAQH,GAAO,QAAU,GAAK,GAQrCI,EAAoBH,GAAqB,CAE7CC,EAAYD,CAAQ,CAEtB,EAEMI,EAAS,MAAOJ,GAAqB,CACzC,GAAI,CACFH,EAAO,CAAE,SAAAG,CAAS,CAAC,EAAE,KAClBlU,GAAa,CACZZ,GAAM,QAAQ,kBAAkB,CAClC,EACCmV,GAAe,CACdnV,GAAM,MAAMmV,EAAI,OAAO,CACzB,CACF,CACF,MAAY,CAAC,CACf,EAEMC,EAAgBtW,GAAatC,GAAoB,CACrD0Y,EAAO1Y,EAAM,CAAC,EAAI,CAAC,CACrB,EAAG,CAAC,CAAC,EAEL,MAAO,CACL,WAAAlB,EACA,mBAAAkJ,EACA,cAAAC,EACA,YAAAH,EACA,eAAApC,EACA,IAAAqC,EAEA,gBAAAuJ,EACA,KAAAkH,EACA,MAAAH,EACA,iBAAAI,EACA,cAAAG,EACA,MAAON,EACP,YAAA/G,EACA,eAAgBmH,CAClB,CACF,EAEO,SAASG,GAAoB/Q,EAAqBC,EAAoB,CAC3E,GAAIA,IAAQ,KACV,MAAO,CAAE,MAAO,GAAO,SAAU,GAAO,QAAS,EAAK,EAExD,IAAM+Q,EAAM/Q,EAAM,EAEZgR,EAAOjR,GAAegR,EACtBtX,EAAMsG,EAAcgR,GAAOhR,EAAc,EACzCkR,EAAMlR,GAAe,EAC3B,MAAO,CAAE,KAAAiR,EAAM,IAAAvX,EAAK,IAAAwX,CAAI,CAC1B,CCxKA,OAAS,MAAAnY,OAAU,sBAuBb,cAAA9D,OAAA,oBAfC,IAAMkc,GAAyCre,GAAU,CAC9D,GAAM,CAAE,KAAAyZ,EAAO,GAAI,UAAA5H,CAAU,EAAI7R,EAEjC,OACEmC,GAAC,OACC,UAAU,4CACV,MAAO,CACL,WAAY,+BACZ,eAAgB,UAChB,iBAAkB,YAClB,mBAAoB,gBACpB,MAAO,GAAGsX,CAAI,KACd,OAAQ,MACV,EAEA,SAAAtX,GAAC,OACC,UAAW8D,GACT,4MACA4L,CAMF,EACD,EACH,CAEJ,EFXI,OACE,OAAA1P,EADF,QAAAoB,MAAA,oBAFG,IAAM+a,GAA2Cte,GAEpDuD,EAAC5D,GAAA,CAAK,UAAW,SAAU,IAAK,EAAG,MAAO,OACxC,UAAAwC,EAACoc,GAAA,CAAO,GAAGve,EAAO,EAClBmC,EAACzC,GAAA,CAAQ,UAAU,aAAa,EAChCyC,EAACqc,GAAA,CAAa,GAAGxe,EAAO,EACxBmC,EAACsc,GAAA,CAAU,GAAGze,EAAO,EAGrBmC,EAACuc,GAAA,CAAS,GAAG1e,EAAO,GACtB,EAIEue,GAAkCve,GAAU,CAChD,IAAM2e,EAAkBjX,GAAY,IAC3BiB,GAAM,QAAQ,CACnB,MAAO,aAEP,QACExG,EAACiB,EAAA,CAAK,UAAW,GAAI,KAAK,KAAK,yIAG/B,EAEF,SAAU,IACD,QAAQ,OAAO,EAExB,KAAM,IACA,OAAOpD,EAAM,aAAgB,WAAmB,QAAQ,QAAQ,EAC7DA,EAAM,YAAY,EAAE,MAAOkF,GAAM,CAAC,CAAC,CAE9C,CAAC,EACA,CAAC,CAAC,EAEC0Z,EACJ5e,EAAM,mBAAqB,EACvB,0BACA,yBAEN,OACEuD,EAAC5D,GAAA,CAAK,UAAW,SAAU,IAAK,EAAG,MAAO,OACxC,UAAA4D,EAAC5D,GAAA,CAAK,UAAW,SAAU,UAAW,QAAS,MAAO,OACpD,UAAAwC,EAACiB,EAAK,UAAL,CACC,KAAK,MACL,UAAW,GACX,OACEpD,EAAM,WACJmC,EAACyF,GAAA,CACC,QAAS,EACT,KAAM,GACN,UAAU,yBACZ,EAEAzF,EAAC0F,GAAA,CACC,QAAS,EACT,KAAM,GACN,UAAU,yBACZ,EAGJ,QAAU3C,GAAM,CACdlF,EAAM,iBAAiB,CACzB,EACA,UAAU,qBACX,8BAED,EACAmC,EAACiB,EAAK,QAAL,CACC,KAAK,OAEL,GAAI,EACJ,QAAS,GACT,QAAS,CAACpD,EAAM,WAEf,SAAAA,EAAM,YAAc,KACvB,GACF,EACAuD,EAAC2C,GAAA,CAAK,KAAM,EAAG,KAAM,EAAG,MAAO,OAC7B,UAAA/D,EAACgB,GAAA,CACC,MAAM,qBACN,WAAY,CACV,MAAO,wCACT,EAEA,SAAAI,EAAC5D,GAAA,CAAK,IAAK,EACT,UAAAwC,EAACiB,EAAK,QAAL,CACC,KAAK,KACL,SAAQ,GACR,GAAI,EACJ,QAAS,GACT,QAAS,CAACpD,EAAM,WAEf,SAAAA,EAAM,WAAW,UACpB,EACC,CAACA,EAAM,YACNmC,EAACiB,EAAK,QAAL,CACC,KAAK,KACL,GAAI,EACJ,QAAS,GACT,KAAK,cACL,OAAQ,IACR,OAAQ,IACR,UAAWwb,EAEV,SAAA5e,EAAM,mBACT,GAEJ,EACF,EACAmC,EAACgB,GAAA,CACC,MAAM,uBACN,WAAY,CACV,MAAO,wCACT,EAEA,SAAAI,EAAC5D,GAAA,CAAK,QAAS,UAAW,MAAO,OAC/B,UAAAwC,EAACiB,EAAK,QAAL,CACC,KAAK,KACL,SAAQ,GACR,GAAI,EACJ,QAAS,GACT,QAAS,CAACpD,EAAM,WAEf,SAAAA,EAAM,WAAW,aACpB,EACAuD,EAAC,UACC,UAAU,sCACV,QAASob,EAET,UAAAxc,EAACua,GAAA,CACC,QAAS,EACT,KAAM,GACN,UAAU,yBACZ,EACAva,EAACiB,EAAA,CAAK,KAAK,MAAM,MAAM,eAAe,sBAEtC,GACF,GACF,EACF,GACF,GACF,CAEJ,EACMob,GAAwCxe,GAAU,CACtD,GAAM,CAAE,KAAAme,EAAM,IAAAvX,EAAK,IAAAwX,CAAI,EAAIH,GACzBje,EAAM,eACNA,EAAM,GACR,EAEA,OACEuD,EAAC2C,GAAA,CAAK,KAAM,EAAG,KAAM,EAAG,MAAO,OAC7B,UAAA/D,EAACgB,GAAA,CACC,MAAM,eACN,WAAY,CACV,MAAO,wCACT,EAEA,SAAAI,EAAC5D,GAAA,CAAK,IAAK,EACT,UAAAwC,EAACiB,EAAK,QAAL,CACC,KAAK,KACL,KAAK,cACL,MAAM,eACN,GAAI,EACJ,QAAS,GACT,QAAS,CAACpD,EAAM,WAEf,SAAAA,EAAM,eACT,EACC,CAACA,EAAM,YACNmC,EAACkc,GAAA,CACC,UACED,EACI,eACAxX,EACA,gBACAuX,EACA,iBACA,GAER,GAEJ,EACF,EACAhc,EAACgB,GAAA,CACC,MAAM,iCACN,WAAY,CACV,MAAO,wCACT,EAEA,SAAAI,EAAC5D,GAAA,CAAK,QAAS,QAAS,MAAO,OAAQ,IAAK,EAC1C,UAAAwC,EAACiB,EAAK,QAAL,CACC,KAAK,KACL,GAAI,EACJ,QAAS,GACT,QAAS,CAACpD,EAAM,WAEf,SAAAA,EAAM,eACT,EACAmC,EAACiB,EAAA,CAAK,KAAK,KAAK,aAAC,EACjBjB,EAACiB,EAAK,QAAL,CACC,KAAK,KACL,GAAI,EACJ,QAAS,GACT,QAAS,CAACpD,EAAM,WAEf,SAAAA,EAAM,gBACT,GACF,EACF,GACF,CAEJ,EACMye,GAAqCze,GAEvCuD,EAAC5D,GAAA,CAAK,UAAW,SAAU,IAAK,EAAG,MAAO,OACxC,UAAA4D,EAAC5D,GAAA,CAAK,MAAO,OAAQ,QAAS,UAC5B,UAAAwC,EAACiB,EAAA,CAAK,KAAK,MAAM,UAAW,GAAI,gCAEhC,EACAjB,EAACiB,EAAK,QAAL,CACC,KAAK,MAEL,OACEjB,EAACiB,EAAA,CAAK,KAAK,MAAM,UAAW,GACzB,qBACH,EAEF,OAAO,IAEN,SAAApD,EAAM,iBAAmB,KAC5B,GACF,EACAmC,EAACwa,GAAA,CACC,KAAM,EACN,IAAK3c,EAAM,YACX,IAAK,EAGL,UAAW,EACX,MAAO,CAACA,EAAM,KAAK,EACnB,cAAgBkF,GAAM,CACpBlF,EAAM,iBAAiBkF,EAAE,CAAC,CAAC,EAC3BlF,EAAM,iBAAiB,EAAI,CAC7B,EACA,MAAM,eACN,cAAgBkF,GAAM,CACpBlF,EAAM,cAAckF,CAAC,EACrBlF,EAAM,iBAAiB,EAAK,CAC9B,EACA,QAASA,EAAM,cACf,aAAc,CAACoF,EAAOyZ,EAAKvN,EAAKwN,IACvB,GAAG1Z,EAAM,CAAC,IAErB,EACAjD,EAACxC,GAAA,CAAK,QAAS,UAAW,MAAO,OAC9B,UAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAE,IAAI,CAACoH,EAAMC,IAEhC7E,EAAC,UACC,QAAU+C,GAAM,CACdlF,EAAM,eAAe+G,CAAI,EACzB/G,EAAM,iBAAiB+G,CAAI,CAC7B,EACA,UAAWd,GACT,yBACAe,IAAU,EACN,WACAA,IAAU,EACV,WACA,oBACJD,EAAO,GAAK,GAAK,wBACnB,EAEC,YAAGA,CAAI,IACV,CAEH,EACH,GACF,EAyBJ,IAAM2X,GAAoC1e,GAEtCuD,EAAC2C,GAAA,CACC,KAAM,EACN,KAAM,EACN,IAAK,EACL,UAAU,yBACV,MAAO,OACP,GAAI,EACJ,GAAI,EAEJ,UAAA/D,EAACsC,GAAA,CACC,KAAMtC,EAACsP,GAAA,CAAiB,MAAM,QAAQ,QAAS,GAAK,EACpD,KAAK,KACL,UAAS,GACT,UAAU,uCACV,QAASzR,EAAM,WAChB,oBAED,EACAmC,EAACsC,GAAA,CACC,KAAMtC,EAACwF,GAAA,CAAmB,MAAM,QAAQ,QAAS,GAAK,EACtD,KAAK,KACL,UAAS,GACT,QAAS3H,EAAM,UAChB,mBAED,GACF,EG/VQ,cAAAmC,OAAA,oBAFL,IAAM4c,GAAuB,IAAM,CACtC,IAAMxa,EAAQqY,GAAwB,EACtC,OAAQza,GAACmc,GAAA,CAAgB,GAAG/Z,EAAO,CACvC,EJFA,OAAS,iBAAA6D,GAAe,cAAAzH,OAAkB,6BAC1C,OAAS,cAAAwH,GAAY,iBAAA+D,GAAe,kBAAAC,OAAsB,yBAC1D,OAAS,qBAAAjE,OAAyB,yBAmBf,cAAA/F,OAAA,oBAjBZ,IAAM6c,GAAmB,IAAM,CACpC,GAAM,CAAE,mBAAA1C,CAAmB,EACzBja,EAAsB,EAElB,CAAE,WAAA9B,EAAY,cAAAC,CAAc,EAAIT,EAAuB,EACvD,CAAE,aAAA+J,CAAa,EAAI1B,GAAc,EACjC,CAAE,MAAA7D,CAAM,EAAI4D,GAAW,EAEvB,CAAE,gBAAAuO,CAAgB,EAAIvK,GAAe,EACrC,CAAE,WAAAhC,CAAW,EAAI+B,GAAc,EAC/B+S,EAAkB1a,EAAM,QAAU2D,GAAkB,cAEpDgX,EAAuB,IAAM,CAC7BD,GACAtW,GAAM,MAAM,CACV,MAAO,iBACP,QAAS2T,EACT,QAASna,GAAC4c,GAAA,EAAqB,CACjC,CAAC,CAEP,EACMI,EAAQxe,GAAWwJ,CAAU,EAEnC,MAAO,CACL,gBAAAuM,EACA,MAAAyI,EACA,WAAA5e,EAAY,cAAAC,EACZ,qBAAA0e,EACA,aAAApV,EACA,gBAAAmV,CACF,CACF,EKlCY,cAAA9c,OAAA,oBAFL,IAAMid,GAAgB,IAAM,CAC/B,IAAM7a,EAAQya,GAAiB,EAC/B,OAAQ7c,GAACqa,GAAA,CAAS,GAAGjY,EAAO,CAChC,EjBsBM,cAAApC,GAEA,QAAAoB,OAFA,oBAZC,IAAM8b,GAAuCrf,GAEhDuD,GAAC5D,GAAA,CAEC,IAAK,EACL,QAAS,UACT,UAAW,QACX,UAAU,0EACV,MAAO,CACL,OAAQ,0CACV,EAEA,UAAAwC,GAACid,GAAA,EAAc,EAEf7b,GAAC5D,GAAA,CAAK,IAAK,EACR,WAACK,EAAM,cAAgBmC,GAAC+W,GAAA,EAAY,EACrC/W,GAACoa,GAAA,EAAc,GACjB,GACF,EkB1BJ,OAAS,iBAAAnU,OAAqB,6BAEvB,IAAMkX,GAAwB,IAAM,CAGzC,GAAM,CAAE,aAAAxV,CAAa,EAAI1B,GAAc,EACvC,MAAO,CACL,aAAA0B,CACF,CACF,ECZY,cAAA3H,OAAA,oBAFL,IAAMod,GAAqB,IAAM,CACpC,IAAMhb,EAAQ+a,GAAsB,EACpC,OAAQnd,GAACkd,GAAA,CAAc,GAAG9a,EAAO,CACrC,ECLA,OAAS,OAAA9E,GAAK,MAAAwG,GAAI,YAAArG,GAAU,QAAAC,OAAY,sBCDxC,OAAS,YAAA2E,OAAgB,QAUlB,IAAMgb,GAAkB,IAAM,CACnC,GAAM,CAAC7H,EAAKI,CAAM,EAAIvT,GAAqB,OAAgB,EACrD,CAAE,OAAA3D,CAAM,EAAIwB,EAAsB,EAClC,CAAC+H,EAASuD,CAAU,EAAInJ,GAAS,EAAI,EAM3C,MAAO,CACL,IAAAmT,EACA,OAAAI,EACA,OAAAlX,EACA,qBAR2B,IAAM,CACjC8M,EAAYzI,GAAM,CAACA,CAAC,CACtB,EAOE,WAAAyI,EACA,QAAAvD,CACF,CACF,ECrBW,cAAAjI,OAAA,oBAJJ,IAAMsd,GAAkBzf,GAIpBmC,GAACsF,GAAA,CAAiB,OAAQzH,EAAM,OAAQ,WAC3C,CACI,KAAM,YACN,KAAM,iDACN,WAAY,wCACZ,SAAU,CACN,KAAM,cACN,IAAK,cACL,MAAO,aACX,CACJ,EACH,EChBL,OAAS,QAAAL,GAAM,QAAAyD,OAAY,sBAKvB,OACE,OAAAjB,GADF,QAAAoB,OAAA,oBAFG,IAAMmc,GAAiC1f,GAE1CuD,GAAC5D,GAAA,CAAK,UAAW,SAAU,IAAK,EAC9B,UAAAwC,GAACsE,GAAA,CACC,MAAM,aACN,MAAOzG,EAAM,QAAQ,WACrB,GAAIA,EAAM,WAAW,SACvB,EACAmC,GAACsE,GAAA,CACC,MAAM,cACN,MAAOzG,EAAM,QAAQ,YACrB,GAAIA,EAAM,WAAW,SACvB,EACAmC,GAACsE,GAAA,CACC,MAAM,aACN,MAAOzG,EAAM,QACb,GAAIA,EAAM,WAAW,SACrB,KAAK,QACL,SAAQ,GACV,EACAmC,GAACsE,GAAA,CACC,MAAM,WACN,MAAOzG,EAAM,SAAS,UAAU,EAChC,GAAIA,EAAM,WAAW,SACvB,EACAmC,GAACsE,GAAA,CACC,MAAM,UACN,MAAOzG,EAAM,SAAS,SAAS,EAC/B,GAAIA,EAAM,WAAW,SACvB,EACAmC,GAACsE,GAAA,CACC,MAAM,gBACN,MAAOzG,EAAM,aACb,GAAIA,EAAM,WAAW,SACrB,KAAK,QACL,SAAQ,GACV,GACF,EAIEyG,GAAOzG,GAMP,CACJ,GAAM,CAAE,MAAA0L,EAAO,MAAAtG,EAAO,SAAAua,EAAU,GAAA9P,EAAI,KAAArF,EAAO,OAAQ,EAAIxK,EACvD,OACEuD,GAAC5D,GAAA,CAAK,QAAS,UAAY,MAAO,OAAQ,UAAU,cAClD,UAAAwC,GAACiB,GAAA,CAAK,UAAW,GAAK,SAAAsI,EAAM,EAC5BnI,GAAC5D,GAAA,CAAK,IAAK,EACT,UAAAwC,GAACiB,GAAK,QAAL,CAAa,KAAMoH,EAAM,GAAIqF,EAAI,UAAW,GAC1C,SAAAzK,EACH,EACCua,GAAYxd,GAACiB,GAAA,CAAK,UAAW,GAAI,gBAAI,GACxC,GACF,CAEJ,EChEA,OAAS,mBAAAwc,OAAuB,yBAEhC,OAAS,WAAAlf,OAAe,QACxB,OAAS,WAAA2C,OAAe,yBAEjB,IAAMwc,GAAsB7f,GAE7B,CAEF,GAAM,CAAE,OAAAa,CAAO,EAAIb,EACb8f,EAASF,GAAgB/e,CAAM,EAC/B,CAAE,WAAAqB,CAAW,EAAIG,EAAsB,EACvC0d,EAAUrf,GAAQ,IAAM,CAC1B,IAAMsf,EAAQF,IAAS,WAAW,EAC5BG,EAASH,IAAS,YAAY,EACpC,GAAIE,GAASC,GAAU,CAAC,MAAMD,CAAK,GAAK,CAAC,MAAMC,CAAM,EACjD,OAAO,IAAI5c,GAAQ2c,CAAK,EAAE,IAAIC,CAAM,EAAE,QAAQ/d,EAAW,SAAUmB,GAAQ,UAAU,CAG7F,EAAG,CAACyc,CAAM,CAAC,EAELI,EAAexf,GAAQ,IAAM,CAC/B,IAAMiR,EAAYmO,GAAS,WACrBI,EAAeJ,GAAS,cAC9B,GAAInO,GAAauO,GAAgB,CAAC,MAAMvO,CAAS,EAC7C,OAAO,IAAItO,GAAQsO,CAAS,EAAE,IAAI,OAAOuO,CAAY,CAAC,EAAE,QAAQhe,EAAW,SAAUmB,GAAQ,UAAU,CAG/G,EAAG,CAACyc,CAAM,CAAC,EACX,MAAO,CACH,OAAAA,EACA,WAAA5d,EACA,QAAA6d,EACA,aAAAG,CACJ,CACJ,EC5BY,cAAA/d,OAAA,oBAJL,IAAMge,GAAmBngB,GAE1B,CACF,IAAMuE,EAAQsb,GAAmB7f,CAAK,EACtC,OAAQmC,GAACud,GAAA,CAAW,GAAGnb,EAAO,CAClC,ELHA,OAAS,qBAAA6b,OAAyB,kCAW9B,OAeM,OAAAje,EAfN,QAAAoB,OAAA,oBARG,IAAM8c,GAIRrgB,GAAU,CACb,GAAM,CAAE,kBAAAsgB,CAAkB,EAAIje,EAAsB,EAEpD,OACEkB,GAAC1D,GAAA,CACC,QAAQ,YACR,MAAOG,EAAM,IACb,eAAgBA,EAAM,QACtB,cAAgBkF,GAAM,CACpBlF,EAAM,OAAOkF,CAAQ,EACrBlF,EAAM,WAAW,EAAI,CACvB,EACA,UAAWA,EAAM,UACjB,WAAY,CACV,SAAU,UACV,YAAa,qCACf,EACA,SACEmC,EAAC,UAAO,UAAU,WAAW,QAASnC,EAAM,qBAC1C,SAAAmC,EAACoe,GAAA,CACC,UAAYvgB,EAAM,QAAU,eAAiB,iBAC/C,EACF,EAGF,UAAAmC,EAACvC,GAAA,CAAS,MAAM,QAAQ,cACtB,SAAAuC,EAAC,OAAI,UAAU,yBACb,SAAAA,EAACie,GAAA,CACC,OAAQpgB,EAAM,OACd,YAAasgB,GAAmB,aAChC,KAAM,EACN,UAAWA,GAAmB,UAC9B,aAAcA,GAAmB,aACnC,EACF,EACF,EACAne,EAACvC,GAAA,CAAS,MAAM,SAAS,eACvB,SAAAuC,EAACsd,GAAA,CAAe,OAAQzf,EAAM,OAAQ,EACxC,EACAmC,EAACvC,GAAA,CAAS,MAAM,OAAO,aACrB,SAAAuC,EAAC1C,GAAA,CAAI,GAAI,EACP,SAAA0C,EAACge,GAAA,CAAgB,OAAQngB,EAAM,OAAQ,EACzC,EACF,GACF,CAEJ,EAEMugB,GAAevgB,GAEjBuD,GAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,eACL,MAAM,6BACN,UAAW0C,GAAG,4DAA4DjG,EAAM,SAAS,EAEzF,UAAAmC,EAAC,QACC,EAAE,sKAEJ,EACAA,EAAC,SAYD,GACF,EMhFQ,cAAAA,OAAA,oBAJL,IAAMqe,GAAgBxgB,GAEvB,CACF,IAAMuE,EAAQib,GAAgB,EAC9B,OAAQrd,GAACke,GAAA,CAAO,UAAWrgB,EAAM,UAAY,GAAGuE,EAAO,CAC3D,ECRA,OAAwB,aAAA8J,GAAW,UAAAC,GAAQ,YAAA9J,OAAgB,QAC3D,OAAS,MAAAyB,OAA4B,sBAGrC,OAAS,oBAAAwa,OAAwB,kCA8B7B,OAUI,OAAAte,GAVJ,QAAAoB,OAAA,oBA5BG,IAAMmd,GAIR1gB,GAAU,CACb,GAAM,CAACwV,EAAQmL,CAAS,EAAInc,GAAS,CAAC,EAChCkP,EAASpF,GAAO,IAAI,EAE1B,OAAAD,GAAU,IAAM,CACd,IAAMuS,EAAMlN,EAAO,QAEnB,GAAI,CAACkN,EAAK,OAGV,IAAM/M,EAAiB,IAAI,eAAgBC,GAAY,CACrD,QAASC,KAASD,EAChB6M,EAAU5M,EAAM,YAAY,MAAM,CAEtC,CAAC,EAED,OAAAF,EAAe,QAAQ+M,CAAG,EAGnB,IAAM,CACX/M,EAAe,UAAU+M,CAAG,CAC9B,CACF,EAAG,CAAC,CAAC,EAEHrd,GAAC,OAEC,UAAW0C,GACT,uDACAjG,EAAM,SACR,EAEA,UAAAmC,GAAC,OAAI,UAAU,+BAA+B,MAAO,CACnD,OAAQ,GAAGqT,EAAS,EAAE,IACxB,EACE,SAAArT,GAACiU,GAAA,CACC,OAAQpW,EAAM,OACd,OAAQwV,EAASA,EAAS,GAAK,OAC/B,iBAAkBxV,EAAM,iBAC1B,EACF,EACAmC,GAAC,OAAI,UAAU,uCACb,SAAAA,GAACse,GAAA,CAAiB,OAAQzgB,EAAM,OAAQ,aAAc0T,EAAO,EAC/D,GACF,CAEJ,ECrDO,IAAMmN,GAA6B,IAAM,CAE5C,GAAM,CAAE,OAAAhgB,EAAQ,iBAAA0B,CAAkB,EAAIF,EAAsB,EAC5D,MAAO,CACH,OAAAxB,EAAO,iBAAA0B,CACX,CACJ,ECDY,cAAAJ,OAAA,oBAJL,IAAM2e,GAA2B9gB,GAElC,CACF,IAAMuE,EAAQsc,GAA2B,EACzC,OAAQ1e,GAACue,GAAA,CAAkB,UAAW1gB,EAAM,UAAY,GAAGuE,EAAO,CACtE,ECJA,OACE,sBAAAwc,GACA,sBAAAC,OACK,2BACP,OAAS,OAAAvhB,GAAK,eAAAwhB,OAAmB,sBCPjC,OAAS,gBAAAC,OAAoB,6BAQlB,cAAA/e,OAAA,oBANJ,IAAMgf,GAAoB,IAAM,CACrC,GAAM,CAAE,SAAAC,CAAS,EAAIF,GAAa,EAE5B,CAAE,UAAAG,CAAU,EAAID,GAAY,CAAC,EAEnC,OAAIC,GAAW,IACNlf,GAAC,OAAI,IAAKkf,GAAW,IAAK,UAAU,kBAAkB,EAG3DA,GAAW,UACNA,EAAU,UAGZ,IACT,EChBA,OACE,UAAA5c,GACA,YAAAvB,GACA,WAAAxD,GACA,QAAAC,GACA,YAAAC,GACA,QAAAC,GACA,QAAAuD,OACK,sBCTP,OAAS,YAAAoB,OAAgB,QAIzB,OAAS,kBAAAxD,OAAsB,yBAG/B,OAAS,SAAA2H,GAAO,QAAAvF,OAAY,sBAE5B,OAAS,WAAAjC,OAAe,6BAuCT,cAAAgB,OAAA,oBA9BR,IAAMM,GAAqBzC,GAK5B,CACJ,GAAM,CAAE,OAAAa,EAAQ,eAAA8B,CAAe,EAAI3C,EAC7B,CAAC2X,EAAKI,CAAM,EAAIvT,GAA0B,UAAwB,EAClE,CAAE,iBAAAjC,EAAkB,eAAAO,CAAe,EAAIT,EAAsB,EAC7DQ,EAAe9C,EAAuB,EAEtC,CAACyY,EAAG,CAAE,gBAAA8I,EAAiB,oBAAAC,CAAoB,CAAC,EAAIvgB,GAAe,CAAC,CAAC,EACjE,CAAE,cAAA+B,CAAc,EAAInC,GAAkBC,CAAM,EAC5C,CAAE,kBAAAc,EAAmB,eAAAC,CAAe,EAAIR,GAAqBP,CAAM,EA0CzE,MAAO,CACL,IAAA8W,EACA,OAAAI,EACA,iBAAAxV,EACA,eAAAI,EACA,OAAA9B,EACA,cAAAkC,EACA,kBAAApB,EACA,eAAAC,EACA,GAAGiB,EACH,WAlDkBwN,GAAkB,CACpC,IAAM3E,EACJ2E,IAASlP,GAAQ,QACb,4BACAkP,IAASlP,GAAQ,MACjB,0BACA,GACA+P,EACJb,IAASlP,GAAQ,QACb,8DACAkP,IAASlP,GAAQ,MACjB,4DACA,GACNwH,GAAM,QAAQ,CACZ,MAAO+C,EACP,QAASvJ,GAACiB,GAAA,CAAK,KAAK,MAAO,SAAA8N,EAAQ,EAEnC,KAAM,SAAY,CAChB,GAAI,CAEF,OAAIyG,IAAQ,QACV,MAAM4J,EAAoB,EAE1B,MAAMD,EAAgB,EAEjB,QAAQ,QAAQ,EAAI,CAC7B,OAAS5X,EAAO,CAEd,OAAIA,GAAO,UAAY,QAErB,MAAM,MAAMA,EAAM,OAAO,EAEpB,QAAQ,QAAQ,EAAK,CAC9B,QAAE,CACA,QAAQ,QAAQ,CAClB,CACF,CACF,CAAC,CACH,EAaE,eAAA5G,CACF,CACF,ED3EA,OAAS,yBAAA0e,GAAuB,WAAArgB,OAAe,6BAC/C,OAAS,eAAAD,OAAmB,yBAC5B,OAAS,yBAAAugB,OAA6B,gCASlC,OAiBI,OAAAtf,EAjBJ,QAAAoB,OAAA,oBANG,IAAMuC,GAIR9F,GAEDuD,GAAC1D,GAAA,CACC,MAAOG,EAAM,IACb,cAAgBkF,GAAWlF,EAAM,OAAOkF,CAAC,EACzC,KAAK,KACL,UAAWlF,EAAM,UACjB,WAAY,CACV,SAAU,wCACZ,EAEA,UAAAmC,EAACvC,GAAA,CACC,OACGI,EAAM,eAAiB,GAAK,EACzB,YAA+BA,EAAM,aAAa,eAGxD,iBAEA,SAAAmC,EAAC4D,GAAA,CAAe,GAAG/F,EAAO,EAC5B,EACAmC,EAACvC,GAAA,CACC,OACGI,EAAM,mBAAqB,GAAK,EAC7B,WAA8BA,EAAM,iBAAiB,cAG3D,gBAEA,SAAAmC,EAACuf,GAAA,CACC,KAAMvgB,GAAQ,QACd,aAAcD,GAAY,WACzB,GAAGlB,EACN,EACF,EACAmC,EAACvC,GAAA,CACC,OACGI,EAAM,gBAAkB,GAAK,EAC1B,SAA4BA,EAAM,cAAc,YAGtD,cAEA,SAAAmC,EAACuf,GAAA,CACC,KAAMvgB,GAAQ,MACd,aAAcD,GAAY,WACzB,GAAGlB,EACN,EACF,EACAmC,EAACvC,GAAA,CAAS,gBAAgC,gBACxC,SAAAuC,EAACuf,GAAA,CAAW,KAAMvgB,GAAQ,aAAe,GAAGnB,EAAO,EACrD,GACF,EAIE+F,GAAoC/F,GAEtCuD,GAAC5D,GAAA,CAAK,UAAW,SAAU,IAAK,EAC9B,UAAAwC,EAACmC,GAAA,CACC,4BAA6BtE,EAAM,4BACnC,OAAQA,EAAM,cAAgB,OAAYA,EAAM,OAChD,gBAAiBA,EAAM,gBACvB,iBAAkBA,EAAM,iBAC1B,EACAmC,EAACsf,GAAA,CACC,OAAQzhB,EAAM,cAAgB,OAAYA,EAAM,OAChD,eAAgBA,EAAM,eACtB,eAAgBA,EAAM,eACtB,4BAA6BA,EAAM,4BACrC,GACF,EAIE0hB,GAKD1hB,GAEDuD,GAAC5D,GAAA,CAAK,UAAW,SAAU,GAAI,EAAG,MAAO,OACvC,UAAAwC,EAACzC,GAAA,CAAQ,UAAU,aAAa,EAC/BM,EAAM,OAASmB,GAAQ,cACtBgB,EAACwf,GAAA,CAAqB,GAAG3hB,EAAO,EAElCmC,EAACqf,GAAA,CACC,OAAQxhB,EAAM,cAAgB,OAAYA,EAAM,OAChD,eAAgBA,EAAM,eACtB,KAAMA,EAAM,KACZ,aAAcA,EAAM,aACpB,WAAY,CACV,KAAM,sDACN,QAAS,iBACT,KAAM,+CACR,EACA,WAAYA,EAAM,OAASmB,GAAQ,aACnC,aAAc,CACZ,MAAO,CACL,KAAM,OACN,GAAI,MACN,CACF,EACF,GACF,EAIEwgB,GAKD3hB,GAEDuD,GAAC5D,GAAA,CACC,GAAI,EACJ,GAAI,EACJ,MAAO,OACP,QAAS,UACT,IAAK,EACL,UAAU,iCAEV,UAAA4D,GAAC5D,GAAA,CAAK,UAAU,mCACd,UAAAwC,EAACe,GAAA,CACC,MAAM,QACN,QAASlD,EAAM,cACf,gBAAkB6D,GAAqB,CACrC7D,EAAM,iBAAiB6D,CAAO,CAChC,EACF,EACA1B,EAACiB,GAAA,CACC,KAAK,MACL,UAAW,GACX,QAAS,IAAM,CACbpD,EAAM,iBAAiB,CAACA,EAAM,aAAa,CAC7C,EACD,kCAED,GACF,EACAmC,EAACsC,GAAA,CACC,QAAQ,WACR,KAAK,KACL,MAAM,YACN,QAAUS,GAAM,CACdlF,EAAM,WAAWA,EAAM,IAAI,CAC7B,EACD,qBAED,GACF,EEhKK,cAAAmC,OAAA,oBAPF,IAAM6D,GAAkBhG,GAKzB,CACJ,IAAMuE,EAAQ9B,GAAkBzC,CAAK,EACrC,OAAOmC,GAAC2D,GAAA,CAAU,GAAGvB,EAAO,UAAWvE,EAAM,UAAW,CAC1D,EJMI,OAGc,OAAAmC,GAHd,QAAAoB,OAAA,oBANG,IAAME,GAAkCzD,GAAU,CACvD,IAAM4hB,EAAW,IAAM,CACrB5hB,EAAM,yBAAyB,EAAI,CACrC,EAEM6hB,EACJte,GAAC9D,GAAA,CAAI,UAAW,IAAK,GAAI,EAAG,OAAQ,GAClC,UAAA0C,GAAC6e,GAAA,CACC,OAAQhhB,EAAM,OACd,SAAUmC,GAACgf,GAAA,EAAc,EACzB,SAAUS,EACZ,EACAzf,GAAC8e,GAAA,CACC,KAAMjhB,EAAM,iBACZ,aAAcA,EAAM,yBACpB,WAAY,CACV,QAAS,8CACX,EACA,aAAc,CAAE,KAAM,OAAQ,UAAW,EAAM,EAE/C,SAAAmC,GAAC4e,GAAA,CACC,OAAQ/gB,EAAM,OACd,eAAiBa,GAAW,CAC1Bb,EAAM,yBAAyB,EAAK,EACpCA,EAAM,iBAAiBa,CAAM,CAC/B,EACF,EACF,GACF,EAGF,OACE0C,GAAC,OACC,MAAO,CACL,cAAe,0CACjB,EACA,UAAU,4FAEV,UAAApB,GAAC,UAAQ,SAAA0f,EAAO,EAEhBte,GAAC,QAAK,UAAU,uDACd,UAAApB,GAACqe,GAAA,CAAa,UAAU,wCAAwC,EAChEre,GAAC2e,GAAA,EAAwB,EACzB3e,GAAC6D,GAAA,CACC,OAAQhG,EAAM,OACd,UAAU,0BACV,eAAgBA,EAAM,eACxB,GACF,EAEAmC,GAAC,OAAI,UAAU,gDACb,SAAAA,GAACod,GAAA,EAAmB,EACtB,GACF,CAEJ,EKnEA,OAAS,OAAA9f,GAAK,MAAAwG,GAAI,QAAAtG,OAAY,sBCD9B,OACE,cAAAwI,GACA,mBAAArI,GACA,iBAAAwD,OACK,yBCJP,OAAS,WAAA5C,OAAe,QAEjB,IAAMohB,GAAqB,CAChCpb,EACAqb,EACAC,IAeO,CAbMthB,GAAQ,IAAM,CACzB,IAAM+Y,EAAO,aAAa,QAAQ/S,CAAG,EAErC,OAAI+S,EACK,GAAGA,CAAI,IAETsI,CACT,EAAG,CAACrb,EAAKqb,EAAaC,CAAG,CAAC,EAETvI,GAAiB,CAChC,aAAa,QAAQ/S,EAAK+S,CAAI,CAChC,CAEqB,EDZvB,OAAS,WAAA/Y,GAAS,YAAA8D,OAAgB,QAClC,OAAS,iBAAA4D,OAAqB,6BAC9B,OAAS,qBAAAF,OAAyB,yBAK3B,IAAM+Z,GAAmB,IAAM,CACpC,GAAM,CAACC,EAAkBC,CAAmB,EAAI3d,GAAS,EAAK,EACxDxE,EAAQqC,EAAsB,EAC9B,CAAC+f,EAAWC,CAAY,EAAI7d,GAAS,EAAK,EAC1C,CAAE,MAAAD,CAAM,EAAI4D,GAAW,EAEvB,CAAE,aAAA2B,CAAa,EAAI1B,GAAc,EAEjC,CAAE,mBAAAkD,CAAmB,EAAIiB,GAAoB,EAE7C,CAAC+V,EAAWC,CAAY,EAAIziB,GAChC,iCACA,EACF,EAEM,CAAC0iB,EAAWC,CAAY,EAAI3iB,GAChC,6CACA,CAAC,EAAG,EAAG,CAAC,CACV,EAGM,CAAC4iB,EAAQC,CAAS,EAAI7iB,GAC1B,0CACA,OACF,EAEM,CAAC8iB,EAAeC,CAAgB,EAAIf,GACxC,0BACA,OACAY,CACF,EACM,CAACI,EAAmBC,CAAoB,EAAIjB,GAChD,8BACA,OACF,EACM,CAACkB,EAAoBC,CAAqB,EAAInB,GAClD,+BACA,QACAY,CACF,EAEM7L,EAAWvT,GAAc,qBAAqB,EAE9C4f,EAAcZ,GAAuB,CACzCC,EAAaD,CAAS,EACtBD,EAAa,EAAI,CACnB,EAEMc,EAAkB,CAACC,EAAoBC,IAAsB,CACjE,IAAMC,EAAM,CAAC,GAAGd,CAAS,EAEzB,GAAIY,IAAe,GAAKC,IAAcC,EAAI,OAAS,EAAG,CACpDA,EAAID,CAAS,EAAIb,EAAUY,CAAU,EACrC,QAASG,EAAI,EAAGA,EAAID,EAAI,OAAS,EAAGC,IAClCD,EAAIC,CAAC,EAAIf,EAAUe,EAAI,CAAC,CAI5B,SAAWH,IAAeE,EAAI,OAAS,GAAKD,IAAc,EAAG,CAC3DC,EAAID,CAAS,EAAIb,EAAUY,CAAU,EACrC,QAASG,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAC9BD,EAAIC,CAAC,EAAIf,EAAUe,EAAI,CAAC,CAE5B,KAEE,CAACD,EAAIF,CAAU,EAAGE,EAAID,CAAS,CAAC,EAAI,CAACC,EAAID,CAAS,EAAGC,EAAIF,CAAU,CAAC,EAEtEX,EAAaa,CAAG,CAClB,EAEME,EAAa9iB,GAAQ,IACrB,EAAA6D,EAAM,OAAS2D,GAAkB,eAAiB4B,GAIrD,CAACvF,EAAM,OAAQuF,CAAY,CAAC,EAEzB2Z,EAAmB/iB,GACvB,IAAM8iB,GAAc,CAAClY,EACrB,CAACkY,EAAYlY,CAAkB,CACjC,EAEMgY,GAAM5iB,GAAQ,IACX+iB,EAAoBjB,EAAyB,CAAC,EAAG,EAAG,CAAC,EAC3D,CAACiB,EAAkBjB,CAAS,CAAC,EAwBhC,MAAO,CAAE,GAAGxiB,EAAO,GAtBP,CACV,UAAAsiB,EACA,WAAAY,EACA,OAAAR,EACA,SAAUC,EACV,mBAAAK,EACA,sBAAAC,EACA,kBAAAH,EACA,qBAAAC,EACA,cAAAH,EACA,iBAAAC,EACA,SAAAhM,EACA,UAAAuL,EACA,aAAAC,EACA,UAAWiB,GACX,gBAAAH,EACA,WAAAK,EACA,iBAAAC,EACA,iBAAAvB,EACA,yBAA0BC,CAC5B,CAE0B,CAC5B,EAEO,SAASuB,GAAiBjK,EAAqB,CACpD,OAAIA,EACK,GAAG,IAAM,KAAK,IAAI,OAAOA,CAAI,EAAG,GAAG,CAAC,GAEtC,EACT,CD/HA,OAAS,qBAAA2G,OAAyB,kCAIlC,OACE,qBAAAuD,GACA,0BAAAC,OACK,2BGXP,OAA0C,YAAApf,OAAgB,QAC1D,OACE,OAAA/E,GACA,aAAAokB,GACA,MAAA5d,GACA,WAAAvG,GACA,uBAAAgF,GACA,sBAAAof,GACA,oBAAAnf,GACA,uBAAAC,GACA,QAAAjF,GACA,QAAAyD,OACK,sBAYD,OAgEF,YAAAwG,GApDI,OAAAzH,EAZF,QAAAoB,OAAA,oBAHC,IAAMwgB,GAAuC/jB,GAEhDmC,EAAC6hB,GAAA,CAAsB,GAAGhkB,EACxB,SAAAuD,GAAC5D,GAAA,CACC,UAAWsG,GACT,iBACA,4BACA,wCACA,oCACA,2DACF,EACA,KAAM,EACN,QAAQ,SACR,UAAU,SAEV,UAAA9D,EAAC8hB,GAAA,EAAW,EACZ9hB,EAACiB,GAAA,CAAK,KAAK,MAAM,OAAO,WAAW,kBAEnC,GACF,EACF,EAIS4gB,GACXhkB,GACG,CACH,GAAM,CAAC+E,EAAMC,CAAO,EAAIR,GAAS,EAAK,EAEhC0f,EAAcC,GAEhB5gB,GAAC5D,GAAA,CACC,UAAU,SACV,KAAM,EACN,QAAS,IAAM,CACbK,EAAM,WAAWmkB,CAAQ,CAC3B,EACA,UAAU,YAEV,UAAAhiB,EAACxC,GAAA,CACC,QAASwkB,IAAa,QAAU,MAAQ,QACxC,UAAWle,GACT,8BACA,oCACA,0EACAjG,EAAM,SAAWmkB,GAAY,2BAC/B,EAEA,SAAAhiB,EAAC1C,GAAA,CAAI,EAAG,EACN,SAAA0C,EAACiiB,GAAA,EAAe,EAClB,EACF,EACA7gB,GAACH,GAAA,CACC,KAAK,MACL,UAAW,GACX,UAAW6C,GACT,kEACAjG,EAAM,SAAWmkB,GAAY,2BAC/B,EACD,uBACYA,EAAS,KACtB,GACF,EAIEjT,EACJ3N,GAAAqG,GAAA,CACE,UAAArG,GAAC5D,GAAA,CACC,UAAU,SACV,QAAQ,UACR,GAAI,EACJ,UAAU,gBAEV,UAAAwC,EAACiB,GAAA,CAAK,KAAK,OAAO,UAAW,GAAI,kBAEjC,EACAjB,EAAC0hB,GAAA,CACC,KAAM,GACN,UAAU,+CACV,QAAS,IACT,QAAS,IAAM,CACb7e,EAAQ,EAAK,CACf,EACF,GACF,EACA7C,EAACzC,GAAA,EAAQ,EACT6D,GAAC5D,GAAA,CAAK,KAAM,EAAG,GAAI,EAChB,UAAAukB,EAAW,OAAO,EAClBA,EAAW,MAAM,GACpB,GACF,EAGF,OACE3gB,GAACoB,GAAA,CAAiB,KAAMI,EAAM,aAAcC,EAC1C,UAAA7C,EAACyC,GAAA,CAAoB,QAAO,GAAE,SAAA5E,EAAM,SAAS,EAC7CmC,EAAC2hB,GAAA,CACC,SAAA3hB,EAACuC,GAAA,CACC,iBAAmBQ,GAAMA,EAAE,eAAe,EAC1C,QAAUA,GAAMA,EAAE,gBAAgB,EAClC,MAAM,MACN,UAAWe,GACT,gEACF,EAEC,SAAAiL,EACH,EACF,GACF,CAEJ,EAEa+S,GAA2CjkB,GACtDmC,EAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,eACL,MAAM,6BACL,GAAGnC,EAEJ,SAAAmC,EAAC,QAAK,EAAE,+9BAA+9B,EACz+B,EAGWiiB,GAA+CpkB,GAC1DuD,GAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,UAAApB,EAAC,QAAK,MAAM,KAAK,OAAO,KAAK,GAAG,IAAI,KAAK,UAAU,EACnDA,EAAC,QAAK,EAAE,KAAK,MAAM,KAAK,OAAO,KAAK,GAAG,IAAI,KAAK,UAAU,EAC1DA,EAAC,QAAK,EAAE,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,IAAI,KAAK,UAAU,EACzDA,EAAC,QACC,EAAE,IACF,EAAE,KACF,MAAM,KACN,OAAO,IACP,GAAG,MACH,KAAK,kCACP,EACAA,EAAC,QAAK,EAAE,IAAI,EAAE,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,IAAI,KAAK,UAAU,EAC/DA,EAAC,QAAK,EAAE,KAAK,EAAE,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,IAAI,KAAK,UAAU,EAChEA,EAAC,QAAK,EAAE,IAAI,EAAE,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,MAAM,KAAK,UAAU,EACjEA,EAAC,QAAK,EAAE,KAAK,EAAE,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,MAAM,KAAK,UAAU,EAClEA,EAAC,QAAK,EAAE,IAAI,EAAE,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,IAAI,KAAK,UAAU,EAC/DA,EAAC,QACC,SAAAoB,GAAC,kBACC,GAAG,4BACH,GAAG,KACH,GAAG,OACH,GAAG,IACH,GAAG,OACH,cAAc,iBAEd,UAAApB,EAAC,QAAK,UAAU,UAAU,EAC1BA,EAAC,QAAK,OAAO,IAAI,UAAU,UAAU,GACvC,EACF,GACF,ECxLF,OAAiD,YAAAqC,OAAgB,QACjE,OAAS,OAAA/E,GAAK,MAAAwG,GAAI,QAAAtG,GAAM,WAAAoI,OAAe,sBAenC,OAmBU,OAAA5F,EAnBV,QAAAoB,OAAA,oBANG,IAAM8gB,GAERrkB,GAAU,CACb,GAAM,CAAE,cAAAskB,EAAgB,EAAK,EAAItkB,EAC3B,CAAC+E,EAAMC,CAAO,EAAIR,GAAS,EAAK,EACtC,OACEjB,GAAC9D,GAAA,CACC,UAAW,IACX,EAAE,MACF,EAAG,EACH,MAAM,OACN,UAAWwG,GAAG,eAAgBjG,EAAM,SAAS,EAE5C,UAAAA,EAAM,SACPmC,EAAC4F,GAAA,CACC,KAAMhD,EACN,aAAcC,EACd,KAAK,OACL,MAAM,QACN,WAAY,GACZ,YAAa,GAEb,QACE7C,EAACxC,GAAA,CAAK,UAAU,SAAS,KAAM,EAC5B,UAAC4kB,GAASC,GAAYC,EAAU,EAAE,IAAI,CAACC,EAAMC,IAC5CxiB,EAACuiB,EAAA,CAEC,UAAWze,GACT,qDACAjG,EAAM,QAAU2kB,GAAO,eACzB,EACA,QAAS,IAAM,CACb3kB,EAAM,WAAWA,EAAM,MAAO2kB,CAAG,EACjC3f,EAAQ,EAAK,CACf,GARK2f,CASP,CACD,EACH,EAEF,cAAe,EACf,UAAW1e,GACT,4BACA,gCACA,SACF,EACA,MAAO,CAAE,UAAW,sBAAuB,EAE1C,SAAAqe,GACCniB,EAAC,OAAI,UAAU,8CACb,SAAAA,EAACyiB,GAAA,CACC,UAAW3e,GACT,4DACA,oBACF,EACF,EACF,EAEJ,GACF,CAEJ,EAEa2e,GAA8C5kB,GACzDuD,GAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,eACL,MAAM,6BACL,GAAGvD,EAEJ,UAAAmC,EAAC,QAAK,EAAE,IAAI,EAAE,IAAI,MAAM,IAAI,OAAO,IAAI,GAAG,IAAI,EAC9CA,EAAC,QAAK,EAAE,IAAI,EAAE,IAAI,MAAM,IAAI,OAAO,IAAI,GAAG,IAAI,EAC9CA,EAAC,QAAK,EAAE,IAAI,EAAE,KAAK,MAAM,IAAI,OAAO,IAAI,GAAG,IAAI,GACjD,EAGWoiB,GAAwCvkB,GACnDuD,GAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,eACL,MAAM,6BACL,GAAGvD,EAEJ,UAAAmC,EAAC,QAAK,EAAE,QAAQ,EAAE,QAAQ,MAAM,SAAS,OAAO,IAAI,GAAG,IAAI,KAAK,UAAU,EAC1EA,EAAC,QACC,EAAE,QACF,EAAE,KACF,MAAM,SACN,OAAO,QACP,GAAG,OACH,KAAK,OACL,YAAY,KACd,EACAA,EAAC,QACC,EAAE,QACF,EAAE,QACF,MAAM,SACN,OAAO,QACP,GAAG,OACH,KAAK,OACL,YAAY,KACd,GACF,EAGWqiB,GAA2CxkB,GACtDuD,GAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BACL,GAAGvD,EAEJ,UAAAmC,EAAC,QAAK,EAAE,QAAQ,EAAE,IAAI,MAAM,SAAS,OAAO,IAAI,GAAG,IAAI,KAAK,UAAU,EACtEA,EAAC,QACC,EAAE,QACF,EAAE,KACF,MAAM,SACN,OAAO,QACP,GAAG,OACH,KAAK,OACL,YAAY,KACd,EACAA,EAAC,QACC,EAAE,QACF,EAAE,QACF,MAAM,SACN,OAAO,QACP,GAAG,OACH,KAAK,OACL,YAAY,KACd,GACF,EAGWsiB,GAA2CzkB,GACtDuD,GAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BACL,GAAGvD,EAEJ,UAAAmC,EAAC,QAAK,EAAE,QAAQ,EAAE,QAAQ,MAAM,SAAS,OAAO,IAAI,GAAG,IAAI,KAAK,UAAU,EAC1EA,EAAC,QACC,EAAE,QACF,EAAE,IACF,MAAM,SACN,OAAO,QACP,GAAG,OACH,KAAK,OACL,YAAY,KACd,EACAA,EAAC,QACC,EAAE,QACF,EAAE,QACF,MAAM,SACN,OAAO,QACP,GAAG,OACH,KAAK,OACL,YAAY,KACd,GACF,EJlKF,OAAS,oBAAAse,OAAwB,kCA4EzB,cAAAte,EAiIA,QAAAoB,OAjIA,oBAtED,IAAMG,GAAyC1D,GAAU,CAC9D,GAAM,CACJ,UAAAsiB,EACA,WAAAY,EACA,OAAAR,EACA,SAAAmC,EACA,mBAAA7B,EACA,sBAAAC,EACA,kBAAAH,EACA,qBAAAC,EACA,cAAAH,EACA,iBAAAC,EACA,SAAAhM,EACA,UAAAuL,EACA,aAAAC,EACA,UAAAG,EACA,gBAAAW,EACA,WAAAK,EACA,iBAAAC,CACF,EAAIzjB,EAEE8kB,EAAe,GACfC,EAAkB,GAClBC,EAAQ,GAERC,EAAqB,GAErBC,EAAe5C,EAAY,GAAK,IAChC6C,EAAqB,IACrBC,EAAqB,IAErBC,GAAoB,IACpBC,GAAoB,IAEpBC,EAAqB,IACrBC,EAAqB,IAErBC,EAAsB,IACtBC,EAAoBlC,EAAa,IAAM,IAEvCmC,GACJb,EACAC,EACAE,EACAM,EACAG,EACAV,EAAQ,EAUJY,GACJzjB,EAAC1C,GAAA,CACC,UAAW,IACX,GAAI,EACJ,EAAE,MACF,OAAO,OACP,MAAOylB,EACP,MAAO,CAAE,SAAUA,CAAa,EAChC,UAAU,sCACV,gBAAiB,IAAM,CACrB7C,EAAa,EAAK,CACpB,EAEC,UAACD,GACAjgB,EAACwhB,GAAA,CACC,UAAWrB,EACX,WAAYY,EACZ,OAAQljB,EAAM,OACd,eAAgBA,EAAM,eACxB,EAEJ,EAGI6lB,GAAyB,CAC7B1jB,EAACkiB,GAAA,CAEC,UAAU,gCACV,MAAO7B,EAAU,UAAWzb,IAASA,KAAS,CAAC,EAC/C,SAAUoc,EACV,cAAeM,EAEf,SAAAthB,EAACiM,GAAA,EAAgB,GANb,QAON,EACAjM,EAACkiB,GAAA,CAEC,MAAO7B,EAAU,UAAWzb,IAASA,KAAS,CAAC,EAC/C,SAAUoc,EACV,cAAeM,EAEf,SAAAthB,EAACse,GAAA,CAAiB,OAAQzgB,EAAM,OAAQ,GALpC,YAMN,EACAmC,EAACkiB,GAAA,CAEC,MAAO7B,EAAU,UAAWzb,IAASA,KAAS,CAAC,EAC/C,SAAUoc,EACV,cAAeM,EAEf,SAAAthB,EAACoV,GAAA,EAAe,GALZ,QAMN,CACF,EAEMuO,GACJ3jB,EAACxC,GAAA,CACC,KAAM,EACN,UAAU,SACV,OAAO,OACP,MAAO,CACL,SAAUwlB,EACV,SAAUC,EACV,MAAOxC,CACT,EAEC,SAAAJ,EAAU,IAAKxb,IAAU6e,GAAuB7e,EAAK,CAAC,EACzD,EAGI+e,GACJ5jB,EAAC1C,GAAA,CACC,UAAW,IACX,EAAE,MACF,GAAI,EACJ,MAAM,OACN,MAAO,CACL,UAAWwlB,EACX,OAAQA,CACV,EAEA,SAAA9iB,EAACyhB,GAAA,CACC,OAAQ5jB,EAAM,OACd,eAAgBA,EAAM,eACtB,SAAUmC,EAAC4hB,GAAA,CAAa,OAAQrB,EAAQ,SAAUmC,EAAU,EAC9D,EACF,EAGImB,GACJ7jB,EAAC1C,GAAA,CACC,MAAM,OACN,OAAO,OACP,UAAW,IACX,EAAE,MACF,MAAO,CAAE,KAAM,EAAG,SAAUgmB,CAAoB,EAChD,UAAU,sBAEV,SAAAtjB,EAACie,GAAA,CACC,OAAQpgB,EAAM,OACd,YAAaA,EAAM,mBAAmB,aACtC,UAAWA,EAAM,mBAAmB,UACpC,aAAcA,EAAM,mBAAmB,aACzC,EACF,EAGIimB,GACJ9jB,EAAC1C,GAAA,CACC,UAAW,IACX,EAAE,MACF,OAAO,OACP,MAAO,CACL,SAAU4lB,GACV,SAAUC,GACV,MAAOtC,CACT,EACA,UAAU,sBAEV,SAAA7gB,EAAC8V,GAAA,CACC,OAAQjY,EAAM,OACd,iBAAkBA,EAAM,iBAC1B,EACF,EAGIkmB,GACJ/jB,EAAC1C,GAAA,CACC,UAAW,IACX,EAAE,MACF,EAAG,EACH,MAAO,CAAE,OAAQqjB,EAAmB,UAAW4C,CAAkB,EACjE,UAAU,sBAEV,SAAAvjB,EAAC6D,GAAA,CACC,QAAS,OACT,iBAAkBhG,EAAM,iBACxB,OAAQA,EAAM,OACd,eAAgBA,EAAM,eACxB,EACF,EAsBImmB,GACJ5iB,GAAC8U,GAAA,CACC,MAAO,CAEL,KAAM,EACN,UAAWkN,CAEb,EACA,aAActC,EAEb,UA5BCpM,GAAY6L,IAAW,QAEvBnf,GAAC5D,GAAA,CACC,IAAK,EACL,UAAU,iCACV,MAAO,CACL,SAAUulB,EAAeO,EAAsBT,CACjD,EAEC,UAAAY,GACAI,IACH,EAIGA,GAcJC,IACH,EAGIG,GAAoC,IACpCvP,GAAY6L,IAAW,OAEvBnf,GAAC5D,GAAA,CACC,KAAM,EACN,MAAO,CACL,UAAW4lB,CAOb,EACA,OAAO,OAEN,UAAAY,GACAP,IACH,EAGGO,GAGHE,GACJ9iB,GAAC5D,GAAA,CACC,UAAU,SACV,UAAU,iCACV,IAAK,EACL,MAAO,CACL,SAAUkX,EACNqO,EAAeO,EAAsBJ,GAAoBL,EAAQ,EACjES,EAAsBJ,GAAoBL,CAChD,EAEC,UAAAe,GACDxiB,GAAC8U,GAAA,CACC,UAAU,+CACV,KAAK,WACL,aAAc0K,EAEb,UAAAqD,GAAkC,EAClCF,IACH,GACF,EAGI5N,GAAgB1I,IAEhBiT,EADJH,IAAW,OACUgB,GAAiB9T,EAAK,EACtBA,EADuB,EAG9C,OACErM,GAAC5D,GAAA,CACC,MAAO,CACL,UAAWgmB,EAEb,EACA,UAAW1f,GAAG,qBAAsBjG,EAAM,SAAS,EACnD,MAAM,OACN,EAAG,EACH,IAAK,EAEJ,WAAC6W,GAAY6L,IAAW,SAAWkD,GACpCriB,GAAC8U,GAAA,CACC,UAAU,0CACV,aAAcC,GAEb,UAAAoK,IAAW,QAAUoD,GACrBO,GACA3D,IAAW,SAAWoD,IACzB,EACC,CAACjP,GAAY6L,IAAW,QAAUkD,IACrC,CAEJ,EKlUA,OAAS,aAAAU,OAAiB,sBAMf,cAAAnkB,OAAA,oBAJJ,IAAMokB,GAA6BvmB,GAAU,CAClD,GAAM,CAAE,SAAAwmB,CAAS,EAAIF,GAAU,EAE/B,OAAIE,EACKrkB,GAACsB,GAAA,CAAc,GAAGzD,EAAO,EAIhCmC,GAACuB,GAAA,CACC,UAAU,mDACT,GAAG1D,EACN,CAEJ,ECdS,cAAAmC,OAAA,oBAFF,IAAMskB,GAAgB,IAAM,CACjC,IAAMliB,EAAQ0d,GAAiB,EAC/B,OAAO9f,GAACokB,GAAA,CAAS,GAAGhiB,EAAO,CAC7B,ECWM,cAAApC,OAAA,oBAbC,IAAMukB,GAAe1mB,GAExBmC,GAACG,GAAA,CACC,OAAQtC,EAAM,OACd,kBAAmBA,EAAM,kBACzB,eAAgBA,EAAM,eACtB,gBAAiBA,EAAM,gBACvB,iBAAkBA,EAAM,iBACxB,SAAUA,EAAM,SAChB,eAAgBA,EAAM,eACtB,mBAAoBA,EAAM,mBAC1B,eAAgBA,EAAM,eAEtB,SAAAmC,GAACskB,GAAA,EAAc,EACjB","sourcesContent":["import { FC } from \"react\";\nimport { Box, Divider, Flex, TabPanel, Tabs, Text } from \"@orderly.network/ui\";\nimport { DataListState, DataListTabType } from \"./dataList.script\";\nimport { PositionsWidget } from \"@orderly.network/ui-positions\";\nimport { DesktopOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\nimport { SettingWidget } from \"./setting\";\n\nexport const DataList: FC<DataListState> = (props) => {\n // return (\n // <DesktopOrderListWidget\n // type={TabType.orderHistory}\n // onSymbolChange={props.onSymbolChange}\n // />\n // );\n return (\n <Tabs\n defaultValue={props.current || DataListTabType.positions}\n variant=\"contained\"\n trailing={\n <SettingWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n setPnlNotionalDecimalPrecision={props.setPnlNotionalDecimalPrecision}\n unPnlPriceBasis={props.unPnlPriceBasis}\n setUnPnlPriceBasic={props.setUnPnlPriceBasic}\n showAllSymbol={props.showAllSymbol}\n setShowAllSymbol={props.setShowAllSymbol}\n />\n }\n size=\"lg\"\n className=\"oui-h-full\"\n classNames={{\n // tabsList: \"oui-px-3\",\n tabsContent: \"oui-h-[calc(100%_-_32px)]\",\n }}\n >\n <TabPanel\n value={DataListTabType.positions}\n title={\n (props.positionCount ?? 0) > 0\n ? `${DataListTabType.positions}(${props.positionCount})`\n : DataListTabType.positions\n }\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n value={DataListTabType.pending}\n title={\n (props.pendingOrderCount ?? 0) > 0\n ? `${DataListTabType.pending}(${props.pendingOrderCount})`\n : DataListTabType.pending\n }\n >\n <DesktopOrderListWidget\n type={TabType.pending}\n ordersStatus={OrderStatus.INCOMPLETE}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n />\n </TabPanel>\n <TabPanel\n value={DataListTabType.tp_sl}\n title={\n (props.tpSlOrderCount ?? 0) > 0\n ? `${DataListTabType.tp_sl}(${props.tpSlOrderCount})`\n : DataListTabType.tp_sl\n }\n >\n <DesktopOrderListWidget\n type={TabType.tp_sl}\n ordersStatus={OrderStatus.INCOMPLETE}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n />\n </TabPanel>\n <TabPanel value={DataListTabType.filled} title={DataListTabType.filled}>\n <DesktopOrderListWidget\n type={TabType.filled}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n ordersStatus={OrderStatus.FILLED}\n onSymbolChange={props.onSymbolChange}\n />\n </TabPanel>\n <TabPanel\n value={DataListTabType.orderHistory}\n title={DataListTabType.orderHistory}\n >\n <DesktopOrderListWidget\n type={TabType.orderHistory}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n />\n </TabPanel>\n </Tabs>\n );\n};\n\nconst PositionsView: FC<DataListState> = (props) => {\n return (\n <Flex direction=\"column\" width=\"100%\" height=\"100%\">\n <PositionHeaderWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n unPnlPriceBasis={props.unPnlPriceBasis}\n tabletMediaQuery={props.tabletMediaQuery}\n />\n <Divider className=\"oui-w-full\" />\n <Box className=\"oui-h-[calc(100%_-_60px)]\" width=\"100%\">\n <PositionsWidget\n symbol={props.showAllSymbol ? undefined : props.symbol}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n sharePnLConfig={props.sharePnLConfig}\n calcMode={props.calcMode}\n includedPendingOrder={props.includedPendingOrder}\n onSymbolChange={props.onSymbolChange}\n />\n </Box>\n </Flex>\n );\n};\n","import { useLocalStorage } from \"@orderly.network/hooks\";\n\nexport const useTradingLocalStorage = (props?: {\n pnlNotionalDecimalPrecision?: number;\n}) => {\n const [unPnlPriceBasis, setUnPnlPriceBasic] = useLocalStorage(\n \"unPnlPriceBasis\",\n \"markPrice\"\n );\n const [pnlNotionalDecimalPrecision, setPnlNotionalDecimalPrecision] =\n useLocalStorage(\"pnlNotionalDecimalPrecision\", props?.pnlNotionalDecimalPrecision ?? 2);\n const [showAllSymbol, setShowAllSymbol] = useLocalStorage(\n \"showAllSymbol\",\n true\n );\n \n const [hideAssets, setHideAssets] = useLocalStorage(\n \"hideAssets\",\n false\n );\n\n return {\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n showAllSymbol,\n setShowAllSymbol,\n hideAssets,\n setHideAssets,\n };\n};\n","import { usePositionStream } from \"@orderly.network/hooks\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\nimport { useMemo } from \"react\";\nimport { useDataTap } from \"@orderly.network/react-app\";\n\nexport const usePositionsCount = (symbol?: string) => {\n const { showAllSymbol } = useTradingLocalStorage();\n const [data] = usePositionStream(showAllSymbol ? undefined : symbol);\n\n const count = useMemo(() => {\n return data.rows?.length;\n }, [data.rows?.length]);\n\n const positionCount = useDataTap(count) ?? 0;\n\n\n return {\n positionCount\n }\n};\n","import { useLocalStorage, useOrderStream } from \"@orderly.network/hooks\";\nimport { useTradingLocalStorage } from \"./useTradingLocalStorage\";\nimport { AlgoOrderRootType, OrderStatus } from \"@orderly.network/types\";\nimport { useEffect, useMemo } from \"react\";\nimport { TabType } from \"@orderly.network/ui-orders\";\nimport { useDataTap } from \"@orderly.network/react-app\";\n\nexport const usePendingOrderCount = (symbol?: string) => {\n const { showAllSymbol } = useTradingLocalStorage();\n\n const pendingOrdersPageSizeKey = `orderly_${TabType.pending}_pageSize`;\n const tpslOrdersPageSizeKey = `orderly_${TabType.tp_sl}_pageSize`;\n // \n // const [pendingOrderPageSize] = useLocalStorage(pendingOrdersPageSizeKey, 500);\n // const [tpslOrderPageSize] = useLocalStorage(tpslOrdersPageSizeKey, 500);\n\n const [pendingOrders, { total: pendingCount }] = useOrderStream(\n {\n symbol: showAllSymbol ? undefined : symbol,\n status: OrderStatus.INCOMPLETE,\n excludes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n // size: pendingOrderPageSize,\n // size: 500,\n },\n {\n keeplive: true,\n }\n );\n\n const [tpslOrders, { total: tpslCount }] = useOrderStream(\n {\n symbol: showAllSymbol ? undefined : symbol,\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n // size: tpslOrderPageSize,\n // size: 500,\n },\n {\n keeplive: true,\n }\n );\n\n const pendingOrderCount = useDataTap(pendingCount) ?? 0;\n const tpSlOrderCount = useDataTap(tpslCount) ?? 0;\n\n return {\n pendingOrderCount,\n tpSlOrderCount,\n };\n};\n","import { createContext, PropsWithChildren, useContext } from \"react\";\nimport { useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { TradingPageState, TradingPageProps } from \"../types/types\";\nimport { MEDIA_TABLET } from \"@orderly.network/types\";\nimport { getBasicSymbolInfo } from \"../utils/utils\";\n\nexport const TradingPageContext = createContext({} as TradingPageState);\nexport const useTradingPageContext = () => {\n return useContext(TradingPageContext);\n};\n\nexport const TradingPageProvider = (\n props: PropsWithChildren<TradingPageProps>\n) => {\n const { tabletMediaQuery = MEDIA_TABLET, ...rest } = props;\n const symbolInfo = useSymbolsInfo()[props.symbol];\n\n return (\n <TradingPageContext.Provider\n value={{\n ...props,\n tabletMediaQuery: tabletMediaQuery,\n symbolInfo: {\n ...getBasicSymbolInfo(symbolInfo),\n symbol: props.symbol,\n },\n }}\n >\n {props.children}\n </TradingPageContext.Provider>\n );\n};\n","import { utils } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { BasicSymbolInfo } from \"../types/types\";\n\nexport const getBasicSymbolInfo = (\n symbolInfo: (\n key?: keyof API.SymbolExt | undefined,\n defaultValue?: utils.ValueOf<API.SymbolExt> | undefined\n ) => any\n): BasicSymbolInfo => {\n return {\n base_dp: symbolInfo(\"base_dp\"),\n quote_dp: symbolInfo(\"quote_dp\"),\n base_tick: symbolInfo(\"base_tick\"),\n base: symbolInfo(\"base\"),\n quote: symbolInfo(\"quote\"),\n };\n};\n","import { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { usePositionsCount } from \"../../../provider/usePositionsCount\";\nimport { usePendingOrderCount } from \"../../../provider/usePendingOrderCount\";\nimport { useTradingPageContext } from \"../../../provider/context\";\n\nexport enum DataListTabType {\n positions = \"Positions\",\n pending = \"Pending\",\n tp_sl = \"TP/SL\",\n filled = \"Filled\",\n orderHistory = \"Order history\",\n}\n\nexport const useDataListScript = (\n props: {\n current?: DataListTabType;\n tabletMediaQuery: string;\n } & PositionsProps\n) => {\n const {\n current,\n tabletMediaQuery,\n pnlNotionalDecimalPrecision,\n sharePnLConfig,\n symbol,\n includedPendingOrder,\n } = props;\n const localStorage = useTradingLocalStorage({\n pnlNotionalDecimalPrecision,\n });\n const { onSymbolChange } = useTradingPageContext();\n\n const { positionCount } = usePositionsCount(props.symbol);\n const { pendingOrderCount, tpSlOrderCount } = usePendingOrderCount(\n props.symbol\n );\n\n return {\n current,\n tabletMediaQuery,\n\n sharePnLConfig,\n symbol,\n calcMode: localStorage.unPnlPriceBasis,\n includedPendingOrder,\n ...localStorage,\n positionCount,\n pendingOrderCount,\n tpSlOrderCount,\n onSymbolChange,\n };\n};\n\nexport type DataListState = ReturnType<typeof useDataListScript>;\n","import { FC } from \"react\";\nimport { Checkbox, Divider, Flex, Statistic, Text } from \"@orderly.network/ui\";\nimport { PositionHeaderState } from \"./positionHeader.script\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\n\nexport const PositionHeader: FC<PositionHeaderState> = (props) => {\n const isMobileLayout = useMediaQuery(props.tabletMediaQuery);\n\n return isMobileLayout ? (\n <MobileLayout {...props} />\n ) : (\n <DesktopLayout {...props} />\n );\n};\n\nconst MobileLayout: FC<PositionHeaderState> = (props) => {\n return (\n <Flex\n direction={\"column\"}\n gap={2}\n width={\"100%\"}\n itemAlign={\"start\"}\n p={2}\n className=\"oui-bg-base-9 oui-rounded-b-xl\"\n >\n <Flex width={\"100%\"} justify={\"between\"}>\n <UnrealPnL\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n root: \"oui-text-sm\",\n }}\n {...props}\n />\n <Notional\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n root: \"oui-text-sm\",\n }}\n {...props}\n />\n </Flex>\n <Divider className=\"oui-w-full\" />\n <Flex className=\"oui-gap-[2px] oui-cursor-pointer\">\n <Checkbox\n id=\"oui-checkbox-showAllInstruments\"\n color=\"white\"\n checked={props.showAllSymbol}\n onCheckedChange={(checked: boolean) => {\n props.setShowAllSymbol(checked);\n }}\n />\n\n <label\n className=\"oui-text-2xs oui-text-base-contrast-54 oui-cursor-pointer\"\n htmlFor=\"oui-checkbox-showAllInstruments\"\n >\n Show all trading pairs\n </label>\n </Flex>\n </Flex>\n );\n};\nconst DesktopLayout: FC<PositionHeaderState> = (props) => {\n return (\n <Flex py={2} px={3} gap={6} width={\"100%\"} justify={\"start\"}>\n <UnrealPnL\n {...props}\n classNames={{ label: \"oui-text-base-contrast-54\" }}\n />\n <Notional\n {...props}\n classNames={{ label: \"oui-text-base-contrast-54\" }}\n />\n </Flex>\n );\n};\n\nconst UnrealPnL: FC<\n PositionHeaderState & {\n classNames?:\n | {\n root?: string;\n label?: string;\n value?: string;\n }\n | undefined;\n }\n> = (props) => {\n const unrealPnLClsName =\n typeof props.unrealPnL === \"number\"\n ? props.unrealPnL >= 0\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\"\n : \"oui-text-base-contrast-80\";\n\n const unrealPnLROIClsName =\n typeof props.unrealPnL === \"number\" && props.unrealPnlROI\n ? props.unrealPnlROI >= 0\n ? \"oui-text-success-darken\"\n : \"oui-text-danger-darken\"\n : \"oui-text-base-contrast-80\";\n\n return (\n <Statistic label=\"Unreal. PnL\" classNames={props.classNames}>\n <Flex gap={1}>\n <Text.numeral\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n className={unrealPnLClsName}\n >\n {props.unrealPnL ?? \"--\"}\n </Text.numeral>\n {typeof props.unrealPnlROI !== \"undefined\" && (\n <Text.numeral\n prefix=\"(\"\n suffix=\")\"\n rule=\"percentages\"\n size=\"2xs\"\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n className={unrealPnLROIClsName}\n >\n {props.unrealPnlROI}\n </Text.numeral>\n )}\n </Flex>\n </Statistic>\n );\n};\n\nconst Notional: FC<\n PositionHeaderState & {\n classNames?:\n | {\n root?: string;\n label?: string;\n value?: string;\n }\n | undefined;\n }\n> = (props) => {\n return (\n <Statistic label=\"Notional\" classNames={props.classNames}>\n <Text.numeral\n dp={props.pnlNotionalDecimalPrecision}\n rm={Decimal.ROUND_DOWN}\n intensity={80}\n >\n {props.notional ?? \"--\"}\n </Text.numeral>\n </Statistic>\n );\n};\n","import { usePositionStream } from \"@orderly.network/hooks\";\nimport { useDataTap } from \"@orderly.network/react-app\";\nimport { useMemo } from \"react\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\n\nexport const usePositionHeaderScript = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n tabletMediaQuery: string;\n}) => {\n const {\n pnlNotionalDecimalPrecision,\n unPnlPriceBasis,\n symbol,\n tabletMediaQuery,\n } = props;\n const calcMode = unPnlPriceBasis;\n\n const [data] = usePositionStream(symbol, {\n calcMode,\n });\n const aggregated = useDataTap(data.aggregated);\n\n const unrealPnL = aggregated?.total_unreal_pnl;\n const unrealPnlROI = aggregated?.unrealPnlROI;\n const notional = aggregated?.notional;\n const { showAllSymbol, setShowAllSymbol } = useTradingLocalStorage();\n\n return {\n pnlNotionalDecimalPrecision,\n unrealPnL,\n unrealPnlROI,\n notional,\n tabletMediaQuery,\n showAllSymbol,\n setShowAllSymbol,\n };\n};\n\nexport type PositionHeaderState = ReturnType<typeof usePositionHeaderScript>;\n","import { usePositionHeaderScript } from \"./positionHeader.script\";\nimport { PositionHeader } from \"./positionHeader.ui\";\n\nexport const PositionHeaderWidget = (props: {\n pnlNotionalDecimalPrecision?: number;\n unPnlPriceBasis: \"markPrice\" | \"lastPrice\";\n symbol?: string;\n tabletMediaQuery: string;\n}) => {\n const state = usePositionHeaderScript(props);\n return <PositionHeader {...state}/>;\n};\n","import { FC, useCallback, useState } from \"react\";\nimport {\n Button,\n Checkbox,\n Divider,\n DropdownMenuContent,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n SettingFillIcon,\n Text,\n} from \"@orderly.network/ui\";\nimport { SettingState } from \"./setting.script\";\n\nexport const Setting: FC<SettingState> = (props) => {\n const [open, setOpen] = useState(false);\n return (\n <Flex gap={0}>\n <Flex gap={1}>\n <Checkbox\n id=\"oui-checkbox-showAllInstruments\"\n color=\"white\"\n checked={props.showAllSymbol}\n onCheckedChange={(checked: boolean) => {\n props.setShowAllSymbol(checked);\n }}\n />\n <label\n className=\"oui-text-xs oui-text-base-contrast-54 oui-cursor-pointer\"\n htmlFor=\"oui-checkbox-showAllInstruments\"\n >\n Show all trading pairs\n </label>\n </Flex>\n\n <DropdownMenuRoot open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"xs\"\n type=\"button\"\n variant=\"contained\"\n className=\"oui-bg-transparent hover:oui-bg-transparent\"\n >\n <SettingFillIcon\n size={16}\n color=\"white\"\n opacity={1}\n className=\"oui-text-white/[.36] hover:oui-text-white/80\"\n />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"oui-px-5 oui-py-3 oui-w-[360px]\"\n alignOffset={2}\n align=\"end\"\n >\n <div className=\"oui-flex oui-flex-col oui-text-sm\">\n <Text className=\"oui-text-base oui-pb-3\">Portfolio Settings</Text>\n <Divider />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n Decimal Precision for PnL & Notional\n </Text>\n <DecimalPrecisionCheckbox\n value={props.pnlNotionalDecimalPrecision}\n onValueChange={(e) => {\n props.setPnlNotionalDecimalPrecision(e);\n setOpen(false);\n }}\n />\n <Divider className=\"oui-my-3\" />\n <Text className=\"oui-pb-3 oui-text-base-contrast-54 oui-mt-2\">\n Unrealized PnL Price Basis\n </Text>\n <UnPnlPriceBasisCheckBox\n value={props.unPnlPriceBasis}\n onValueChange={(e) => {\n props.setUnPnlPriceBasic(e);\n setOpen(false);\n }}\n />\n </div>\n </DropdownMenuContent>\n </DropdownMenuRoot>\n </Flex>\n );\n};\n\nconst UnPnlPriceBasisCheckBox = (props: {\n value: string;\n onValueChange: (value: string) => void;\n}) => {\n const { value, onValueChange } = props;\n // \"markPrice\" | \"lastPrice\"\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === \"markPrice\"}\n label={\"Mark price\"}\n value={\"markPrice\"}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === \"lastPrice\"}\n label={\"Last price\"}\n value={\"lastPrice\"}\n onCheckChange={onValueChange}\n />\n </Flex>\n );\n};\n\nconst DecimalPrecisionCheckbox = (props: {\n value: number;\n onValueChange: (value: number) => void;\n}) => {\n const { value, onValueChange } = props;\n return (\n <Flex gap={2}>\n <RadioButton\n sel={value === 0}\n label={1}\n value={0}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === 1}\n label={0.1}\n value={1}\n onCheckChange={onValueChange}\n />\n <RadioButton\n sel={value === 2}\n label={0.01}\n value={2}\n onCheckChange={onValueChange}\n />\n </Flex>\n );\n};\n\n// const InnerCheckbox = (props: {\n// sel: boolean;\n// label: any;\n// value: any;\n// onCheckChange: (value: any) => void;\n// }) => {\n// const { sel, label, value, onCheckChange } = props;\n// return (\n// <Flex\n// onClick={(e) => {\n// onCheckChange(value);\n// e.stopPropagation();\n// }}\n// gap={1}\n// >\n// <Checkbox color=\"white\" checked={sel} />\n// <Text size=\"xs\" intensity={sel ? 98 : 54}>\n// {`${label}`}\n// </Text>\n// </Flex>\n// );\n// };\n\nconst RadioButton = (props: {\n sel: boolean;\n label: any;\n value: any;\n onCheckChange: (value: any) => void;\n}) => {\n const { sel, label, value, onCheckChange } = props;\n return (\n <Flex\n onClick={(e) => {\n onCheckChange(value);\n e.stopPropagation();\n }}\n gap={1}\n className=\"oui-cursor-pointer\"\n >\n {sel ? <SelIcon /> : <UnselIcon />}\n <Text size=\"2xs\" intensity={sel ? 98 : 54}>\n {label}\n </Text>\n </Flex>\n );\n};\n\nconst SelIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-white\"\n >\n <path\n d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <circle cx=\"8\" cy=\"8\" r=\"3.333\" />\n </svg>\n );\n};\n\nconst UnselIcon = () => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n );\n};\n","import { useLocalStorage } from \"@orderly.network/hooks\";\n\nexport const useSettingScript = (props: {\n pnlNotionalDecimalPrecision: any;\n setPnlNotionalDecimalPrecision: (value: number) => void;\n unPnlPriceBasis: any;\n setUnPnlPriceBasic: (value: string) => void;\n showAllSymbol: any;\n setShowAllSymbol: (value: boolean) => void;\n}) => {\n const {\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n showAllSymbol,\n setShowAllSymbol,\n } = props;\n return {\n pnlNotionalDecimalPrecision,\n setPnlNotionalDecimalPrecision,\n unPnlPriceBasis,\n setUnPnlPriceBasic,\n showAllSymbol,\n setShowAllSymbol,\n };\n};\n\nexport type SettingState = ReturnType<typeof useSettingScript>;\n","import { useSettingScript } from \"./setting.script\";\nimport { Setting } from \"./setting.ui\";\n\nexport const SettingWidget = (props: {\n pnlNotionalDecimalPrecision: any;\n setPnlNotionalDecimalPrecision: (value: number) => void;\n unPnlPriceBasis: any;\n setUnPnlPriceBasic: (value: string) => void;\n showAllSymbol: any;\n setShowAllSymbol: (value: boolean) => void;\n }) => {\n const state = useSettingScript(props);\n return <Setting {...state} />;\n};\n","import { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { DataListTabType, useDataListScript } from \"./dataList.script\";\nimport { DataList } from \"./dataList.ui\";\nimport { SharePnLConfig, SharePnLParams } from \"@orderly.network/ui-share\";\n\n\nexport const DataListWidget = (\n props: {\n current?: DataListTabType;\n tabletMediaQuery: string;\n } & PositionsProps\n) => {\n const state = useDataListScript({\n ...props,\n });\n return <DataList {...state} />;\n};\n","import React, { FC, ReactNode } from \"react\";\nimport {\n Box,\n cn,\n Flex,\n Grid,\n ListView,\n ScrollArea,\n Text,\n} from \"@orderly.network/ui\";\nimport { LastTradesState } from \"./lastTrades.script\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { commifyOptional } from \"@orderly.network/utils\";\n\nexport const LastTrades: FC<\n LastTradesState & {\n classNames?: {\n root?: string;\n list?: string;\n listHeader?: string;\n listItem?: {\n left?: string;\n mid?: string;\n right?: string;\n };\n };\n style?: React.CSSProperties;\n }\n> = (props) => {\n return (\n <Box\n className={cn(\n \"oui-grid oui-grid-rows=[auto,1fr] oui-h-full oui-w-full\",\n props.classNames?.root\n )}\n style={props.style}\n >\n <Box className=\"oui-pr-1\">\n <Header\n base={props.base}\n quote={props.quote}\n className={props.classNames?.listHeader}\n />\n </Box>\n <List\n data={props.data}\n isLoading={props.isLoading}\n baseDp={props.baseDp}\n quoteDp={props.quoteDp}\n classNames={props.classNames?.listItem}\n className={props.classNames?.list}\n />\n </Box>\n );\n};\n\nconst Row = (props: {\n key?: React.Key | null;\n classNames?: {\n root?: string;\n left?: string;\n mid?: string;\n right?: string;\n };\n left: ReactNode | string;\n mid: ReactNode | string;\n right: ReactNode | string;\n}) => {\n const { key, left, mid, right, classNames } = props;\n return (\n // <Flex\n // key={key}\n // height={20}\n // gap={2}\n // width={\"100%\"}\n // className={cn(\"oui-text-xs oui-tabular-nums\", classNames?.root)}\n // >\n // <Box className={cn(\"oui-flex-1\", classNames?.left)}>{left}</Box>\n // <Box className={cn(\"oui-flex-1\", classNames?.mid)}>{mid}</Box>\n // <Box className={cn(\"oui-flex-1 oui-text-right\", classNames?.right)}>\n // {right}\n // </Box>\n // </Flex>\n\n <Grid\n cols={3}\n gapX={2}\n key={key}\n width=\"100%\"\n className={cn(\"oui-text-xs oui-tabular-nums\", classNames?.root)}\n >\n <div className={cn(\"oui-flex-1\", classNames?.left)}>{left}</div>\n <div className={cn(\"oui-flex-1\", classNames?.mid)}>{mid}</div>\n <div className={cn(\"oui-flex-1 oui-text-right\", classNames?.right)}>\n {right}\n </div>\n </Grid>\n );\n};\n\nconst Header = (props: { base: string; quote: string; className?: string }) => {\n return (\n <Row\n left=\"Time\"\n mid={`Price(${props.quote})`}\n right={`Qty(${props.base})`}\n classNames={{\n root: cn(\n \"oui-text-base-contrast-54 oui-h-[32px] oui-sticky\",\n props.className\n ),\n }}\n />\n );\n};\n\nconst List = (props: {\n data?: any[];\n isLoading?: boolean;\n baseDp: number;\n quoteDp: number;\n classNames?: {\n left?: string;\n mid?: string;\n right?: string;\n };\n className?: string;\n}) => {\n return (\n <ListView\n dataSource={props.data}\n className={cn(\n \"oui-w-full oui-h-full\",\n props.className,\n \"oui-overflow-auto\"\n )}\n contentClassName=\"!oui-space-y-0 oui-pr-[-4px]\"\n renderItem={(item, index) => {\n return (\n <Row\n key={index}\n left={\n <Text.formatted rule={\"date\"} formatString=\"HH:mm:ss\">\n {item?.ts}\n </Text.formatted>\n }\n mid={commifyOptional(item?.price, { fix: props.quoteDp })}\n right={commifyOptional(item?.size, { fix: props.baseDp })}\n classNames={{\n left: cn(\"oui-text-base-contrast-80\", props.classNames?.left),\n right: cn(\n item.side === OrderSide.BUY\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\",\n props.classNames?.mid\n ),\n mid: cn(\n item.side === OrderSide.BUY\n ? \"oui-text-trade-profit\"\n : \"oui-text-trade-loss\",\n props.classNames?.right\n ),\n }}\n />\n );\n }}\n />\n );\n};\n","import { useMarketTradeStream, useSymbolsInfo } from \"@orderly.network/hooks\";\n\nexport const useLastTradesScript = (symbol: string) => {\n const { data, isLoading } = useMarketTradeStream(symbol);\n // const { quote, quote_dp, base, base_dp } = useContext(SymbolContext);\n const config = useSymbolsInfo()?.[symbol];\n const base = config?.(\"base\");\n const quote = config?.(\"quote\");\n const baseDp = config?.(\"base_dp\");\n const quoteDp = config?.(\"quote_dp\");\n// console.log(\"base, quote\", base, quote, \"baseDp, quoteDp\", baseDp, quoteDp);\n\n return {\n base,\n quote,\n data,\n isLoading,\n baseDp,\n quoteDp,\n };\n};\n\nexport type LastTradesState = ReturnType<typeof useLastTradesScript>;\n","import { useLastTradesScript } from \"./lastTrades.script\";\nimport { LastTrades } from \"./lastTrades.ui\";\n\nexport const LastTradesWidget = (props: {\n symbol: string;\n classNames?: {\n root?: string;\n list?: string;\n listHeader?: string;\n listItem?: {\n left?: string;\n mid?: string;\n right?: string;\n }\n };\n style?: React.CSSProperties;\n}) => {\n const state = useLastTradesScript(props.symbol);\n return <LastTrades {...state} classNames={props.classNames} style={props.style} />;\n};\n","import React, { FC, useMemo, useState, useCallback, ReactNode } from \"react\";\nimport {\n Flex,\n Text,\n Box,\n Button,\n ArrowDownShortIcon,\n EyeIcon,\n EyeCloseIcon,\n ChevronDownIcon,\n Tooltip,\n Divider,\n gradientTextVariants,\n cn,\n Collapsible,\n CollapsibleContent,\n} from \"@orderly.network/ui\";\nimport { AssetViewState } from \"./assetView.script\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAccount, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { FaucetWidget } from \"./faucet/faucet.widget\";\n\ninterface StatusInfo {\n title: string;\n description: string;\n titleColor?: any;\n titleClsName?: string;\n}\n\ninterface TooltipContentProps {\n description: ReactNode;\n formula: ReactNode;\n}\n\ninterface TotalValueProps {\n totalValue?: number;\n visible?: boolean;\n onToggleVisibility?: () => void;\n}\n\ninterface AssetDetailProps {\n label: string;\n description: ReactNode;\n formula: ReactNode;\n visible: boolean;\n value?: number | string;\n unit?: string;\n rule?: \"percentages\";\n isConnected?: boolean;\n showPercentage?: boolean;\n placeholder?: string;\n}\n\ninterface AssetValueListProps {\n visible?: boolean;\n freeCollateral?: number | null;\n marginRatioVal?: number;\n renderMMR?: string | number;\n isConnected: boolean;\n}\n\nconst useCurrentStatusText = (): StatusInfo => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n\n return useMemo(() => {\n if (wrongNetwork) {\n return {\n title: \"Wrong Network\",\n description: \"Please switch to a supported network to continue.\",\n titleColor: \"warning\",\n };\n }\n\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return {\n title: \"Connect wallet\",\n description: \"Please connect your wallet before starting to trade.\",\n titleClsName:\n \"oui-text-transparent oui-bg-clip-text oui-gradient-brand\",\n };\n case AccountStatusEnum.NotSignedIn:\n return {\n title: \"Sign in\",\n description: \"Please sign in before starting to trade.\",\n titleColor: \"primaryLight\",\n };\n case AccountStatusEnum.DisabledTrading:\n return {\n title: \"Enable trading\",\n description: \"Enable trading before starting to trade.\",\n titleColor: \"primaryLight\",\n };\n default:\n return {\n title: \"\",\n description: \"\",\n };\n }\n }, [state.status, wrongNetwork]);\n};\n\nexport const TooltipContent: FC<TooltipContentProps> = ({\n description,\n formula,\n}) => (\n <div className=\"oui-leading-[1.5] oui-text-2xs oui-text-base-contrast-80 oui-min-w-[204px] oui-max-w-[240px]\">\n <span>{description}</span>\n <Divider className=\"oui-border-white/10\" my={2} />\n <span>{formula}</span>\n </div>\n);\n\nconst TotalValue: FC<TotalValueProps> = ({\n totalValue,\n visible = true,\n onToggleVisibility,\n}) => (\n <Flex direction=\"column\" gap={1} className=\"oui-text-2xs\" itemAlign=\"center\">\n <Text.numeral\n visible={visible}\n weight=\"bold\"\n size=\"2xl\"\n className={gradientTextVariants({ color: \"brand\" })}\n as=\"div\"\n padding={false}\n dp={2}\n >\n {totalValue ?? \"--\"}\n </Text.numeral>\n <Flex gap={1} itemAlign=\"center\">\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n My Assets (USDC)\n </Text>\n <button onClick={onToggleVisibility}>\n {visible ? (\n <EyeIcon size={18} className=\"oui-text-base-contrast-54\" />\n ) : (\n <EyeCloseIcon size={18} className=\"oui-text-base-contrast-54\" />\n )}\n </button>\n </Flex>\n </Flex>\n);\n\nconst AssetDetail: FC<AssetDetailProps> = ({\n label,\n description,\n formula,\n visible,\n value,\n unit,\n rule,\n isConnected,\n showPercentage = false,\n placeholder,\n}) => (\n <Flex justify=\"between\">\n <Tooltip\n content={\n (<TooltipContent description={description} formula={formula} />) as any\n }\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {label}\n </Text>\n </Tooltip>\n <Text.numeral\n visible={visible}\n size=\"2xs\"\n unit={unit}\n unitClassName=\"oui-text-base-contrast-36 oui-ml-0.5\"\n as=\"div\"\n rule={rule}\n padding={false}\n dp={2}\n // suffix={value && unit}\n placeholder={placeholder}\n >\n {value || \"--\"}\n </Text.numeral>\n </Flex>\n);\n\nconst AssetValueList: FC<AssetValueListProps> = ({\n visible = true,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n}) => {\n const [optionsOpen, setOptionsOpen] = useLocalStorage(\n \"orderly_entry_asset_list_open\",\n false\n );\n const [open, setOpen] = useState<boolean>(optionsOpen);\n\n const toggleOpen = useCallback(() => {\n setOpen((prevOpen) => !prevOpen);\n setTimeout(() => {\n setOptionsOpen(!open);\n }, 0);\n }, []);\n\n return (\n <Box className=\"oui-group\">\n <Flex\n justify=\"center\"\n gap={1}\n itemAlign=\"center\"\n className=\"oui-cursor-pointer\"\n onClick={toggleOpen}\n >\n <Divider className=\"oui-flex-1\" />\n <ChevronDownIcon\n size={12}\n color=\"white\"\n className={cn(\"oui-transition-transform\", open && \"oui-rotate-180\")}\n />\n <Divider className=\"oui-flex-1\" />\n </Flex>\n\n <Box\n style={{\n transform: \"translateZ(0)\",\n }}\n className={cn(\n \"oui-space-y-1.5 oui-select-none oui-overflow-hidden\",\n \"oui-transition-[max-height] oui-duration-150\",\n \"group-hover:oui-will-change-[max-height]\",\n open ? \"oui-max-h-[69px]\" : \"oui-max-h-0\"\n )}\n >\n <AssetDetail\n label=\"Free collateral\"\n description=\"Free collateral for placing new orders.\"\n formula=\"Free collateral = Total balance + Total unsettlement PnL - Total position initial margin\"\n visible={visible}\n // TODO: change AssetDetail value\n value={freeCollateral! === 0 ? (\"0\" as any) : freeCollateral}\n unit=\"USDC\"\n />\n <AssetDetail\n label=\"Margin ratio\"\n description=\"The margin ratio represents the proportion of collateral relative to the total position value.\"\n formula=\"Account margin ratio = (Total collateral value / Total position notional) * 100%\"\n visible={visible}\n value={marginRatioVal}\n isConnected={isConnected}\n rule=\"percentages\"\n showPercentage={true}\n placeholder=\"--%\"\n />\n <AssetDetail\n label=\"Maintenance margin ratio\"\n description=\"The minimum margin ratio required to protect your positions from being liquidated. If the Margin ratio falls below the Maintenance margin ratio, the account will be liquidated.\"\n formula=\"Account maintenance margin ratio = Sum(Position notional * Symbol maintenance Margin Ratio) / Total position notional * 100%\"\n visible={visible}\n value={renderMMR}\n rule=\"percentages\"\n showPercentage={true}\n placeholder=\"--%\"\n />\n </Box>\n </Box>\n );\n};\n\nexport const AssetView: FC<AssetViewState> = ({\n networkId,\n isFirstTimeDeposit,\n totalValue,\n onDeposit,\n onWithdraw,\n toggleVisible,\n visible,\n freeCollateral,\n marginRatioVal,\n renderMMR,\n isConnected,\n}) => {\n const { title, description, titleColor, titleClsName } =\n useCurrentStatusText();\n\n return (\n <Box className=\"oui-relative\">\n {title && description && (\n <Flex direction=\"column\" gap={1} className=\"oui-mb-[32px]\">\n <Text\n size=\"lg\"\n weight=\"bold\"\n color={titleColor || \"inherit\"}\n className={titleClsName}\n >\n {title}\n </Text>\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-text-center\"\n >\n {description}\n </Text>\n </Flex>\n )}\n <AuthGuard\n networkId={networkId}\n status={AccountStatusEnum.EnableTrading}\n buttonProps={{ size: \"md\", fullWidth: true }}\n >\n {isFirstTimeDeposit ? (\n <>\n <Box>\n <Flex direction=\"column\" gap={1} className=\"oui-mb-[32px]\">\n <Text.gradient size=\"lg\" weight=\"bold\" color=\"brand\">\n Deposit to start trade\n </Text.gradient>\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n You can deposit assets from various networks\n </Text>\n </Flex>\n </Box>\n <Button fullWidth size=\"md\" onClick={onDeposit}>\n <ArrowDownShortIcon color=\"white\" opacity={1} />\n <Text>Deposit</Text>\n </Button>\n\n <Box className=\"oui-mt-3\">\n <FaucetWidget />\n </Box>\n </>\n ) : (\n <Box className=\"oui-space-y-4\">\n <TotalValue\n totalValue={totalValue}\n visible={visible}\n onToggleVisibility={toggleVisible}\n />\n <AssetValueList\n visible={visible}\n freeCollateral={freeCollateral}\n marginRatioVal={marginRatioVal}\n renderMMR={renderMMR}\n isConnected={isConnected}\n />\n <Flex gap={3} itemAlign=\"center\">\n <Button\n fullWidth\n color=\"secondary\"\n size=\"md\"\n onClick={onWithdraw}\n >\n <ArrowDownShortIcon\n color=\"white\"\n opacity={1}\n className=\"oui-rotate-180\"\n />\n <Text>Withdraw</Text>\n </Button>\n <Button fullWidth size=\"md\" onClick={onDeposit}>\n <ArrowDownShortIcon color=\"white\" opacity={1} />\n <Text>Deposit</Text>\n </Button>\n </Flex>\n <FaucetWidget />\n </Box>\n )}\n </AuthGuard>\n <div\n className=\"oui-pointer-events-none oui-rotate-180 oui-rounded-2xl oui-blur-[200px] oui-top-0 oui-bottom-0 oui-left-0 oui-right-0 oui-absolute\"\n style={{\n background:\n \"conic-gradient(from -40.91deg at 40.63% 50.41%, rgba(159, 115, 241, 0) -48.92deg, rgba(242, 98, 181, 0) 125.18deg, #5FC5FF 193.41deg, #FFAC89 216.02deg, #8155FF 236.07deg, #789DFF 259.95deg, rgba(159, 115, 241, 0) 311.08deg, rgba(242, 98, 181, 0) 485.18deg)\",\n }}\n />\n </Box>\n );\n};\n","import { Button } from \"@orderly.network/ui\";\nimport { FaucetState } from \"./faucet.script\";\n\nexport function FaucetUi(props: FaucetState) {\n if (!props.showFaucet) {\n return null;\n }\n return (\n <Button\n variant=\"outlined\"\n fullWidth\n size=\"md\"\n onClick={props.getFaucet}\n loading={props.loading}\n className='oui-text-primary-light oui-border-primary-light oui-rounded'\n >Get test USDC</Button>\n )\n}","import { useMemo, useRef, useState } from \"react\";\nimport {\n useAccount,\n useConfig,\n useMutation,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum, ChainNamespace } from \"@orderly.network/types\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { modal, toast } from \"@orderly.network/ui\";\n\nexport function useFaucetScript() {\n const { connectedChain, namespace } = useWalletConnector();\n const { state, account } = useAccount();\n const config = useConfig();\n const operatorUrl = config.get<string>(\"operatorUrl\");\n\n const [getTestUSDC, { isMutating }] = useMutation(\n `${operatorUrl}/v1/faucet/usdc`\n );\n const [loading, setLoading] = useState<boolean>(false);\n\n const showFaucet = useMemo(() => {\n if (!connectedChain || !connectedChain.id) {\n return false;\n }\n return (\n state.status === AccountStatusEnum.EnableTrading &&\n isTestnet(parseInt(connectedChain.id as string))\n );\n }, [state, connectedChain]);\n\n const getFaucet = () => {\n if (loading) {\n return;\n }\n setLoading(true);\n const message = `${\n namespace === ChainNamespace.solana ? \"100\" : \"1,000\"\n } USDC will be added to your balance. Please note this may take up to 3 minutes. Please check back later.`;\n\n return getTestUSDC({\n chain_id: account.walletAdapter?.chainId.toString(),\n user_address: state.address,\n broker_id: config.get(\"brokerId\"),\n }).then(\n (res) => {\n setLoading(false)\n if (res.success) {\n return modal.alert({\n title: \"Get test USDC\",\n message,\n onOk: () => {\n return new Promise((resolve) => resolve(true));\n },\n });\n }\n res.message && toast.error(res.message);\n },\n (error: Error) => {\n toast.error(error.message);\n }\n );\n };\n return { getFaucet, showFaucet, loading};\n}\n\nexport type FaucetState = ReturnType<typeof useFaucetScript>;\n","import { FaucetUi } from \"./faucet.ui\";\nimport { useFaucetScript } from \"./faucet.script\";\n\nexport function FaucetWidget() {\n const state = useFaucetScript();\n return (\n <FaucetUi {...state}/>\n )\n}","import {\n useAccountInstance,\n useEventEmitter,\n useLocalStorage,\n useMediaQuery,\n useSettleSubscription,\n useWalletSubscription,\n useAccount,\n useConfig,\n usePrivateQuery,\n useCollateral,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport {\n MEDIA_TABLET,\n AccountStatusEnum,\n NetworkId,\n API,\n} from \"@orderly.network/types\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { capitalizeString } from \"@orderly.network/utils\";\nimport { useCallback, useMemo } from \"react\";\nimport {\n DepositAndWithdrawWithSheetId,\n DepositAndWithdrawWithDialogId,\n} from \"@orderly.network/ui-transfer\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const useFirstTimeDeposit = () => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const { totalValue } = useCollateral({\n dp: 2,\n });\n const unavailable =\n wrongNetwork || state.status < AccountStatusEnum.EnableTrading;\n const getKeyMemo = useMemo(() => {\n const now = new Date();\n const ninetyDaysAgo = new Date();\n ninetyDaysAgo.setDate(now.getDate() - 90);\n\n const startTime = ninetyDaysAgo.getTime();\n const endTime = now.getTime();\n\n const searchParams = new URLSearchParams();\n\n searchParams.set(\"page\", \"1\");\n searchParams.set(\"size\", \"5\");\n searchParams.set(\"side\", \"DEPOSIT\");\n searchParams.set(\"status\", \"COMPLETED\");\n searchParams.set(\"startTime\", startTime.toString());\n searchParams.set(\"endTime\", endTime.toString());\n\n return `/v1/asset/history?${searchParams.toString()}`;\n }, []);\n\n const { data: depositHistoryData } = usePrivateQuery<API.AssetHistory>(\n getKeyMemo,\n {\n formatter: (data) => data,\n }\n );\n\n return {\n isFirstTimeDeposit:\n !unavailable && totalValue === 0 && depositHistoryData?.meta?.total === 0,\n totalValue,\n };\n};\n\nexport const useAssetViewScript = () => {\n const account = useAccountInstance();\n const matches = useMediaQuery(MEDIA_TABLET);\n\n const { isFirstTimeDeposit, totalValue } = useFirstTimeDeposit();\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n const { state } = useAccount();\n const { freeCollateral } = useCollateral({\n dp: 2,\n });\n const { marginRatio, mmr } = useMarginRatio();\n const isConnected = state.status >= AccountStatusEnum.Connected;\n const [{ aggregated, totalUnrealizedROI }, positionsInfo] =\n usePositionStream();\n const marginRatioVal = useMemo(() => {\n return Math.min(\n 10,\n aggregated.notional === 0\n ? // @ts-ignore\n positionsInfo[\"margin_ratio\"](10)\n : marginRatio\n );\n }, [marginRatio, aggregated]);\n\n const renderMMR = useMemo(() => {\n if (!mmr) {\n return \"\";\n }\n const bigMMR = new Decimal(mmr);\n return bigMMR.mul(100).todp(2, 0).toFixed(2);\n }, [mmr]);\n\n const openDepositAndWithdraw = useCallback(\n async (viewName: \"deposit\" | \"withdraw\") => {\n let result;\n if (matches) {\n result = await modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: viewName,\n });\n } else {\n result = await modal.show(DepositAndWithdrawWithDialogId, {\n activeTab: viewName,\n });\n }\n\n return result;\n },\n [matches]\n );\n\n const onDeposit = useCallback(async () => {\n return openDepositAndWithdraw(\"deposit\");\n }, [matches]);\n\n const ee = useEventEmitter();\n\n const onWithdraw = useCallback(async () => {\n return openDepositAndWithdraw(\"withdraw\");\n }, [matches]);\n\n const onSettle = useCallback(async () => {\n return account\n .settle()\n .catch((e) => {\n if (e.code === -1104) {\n toast.error(\n \"Settlement is only allowed once every 10 minutes. Please try again later.\"\n );\n return Promise.reject(e);\n }\n })\n .then((res) => {\n toast.success(\"Settlement requested\");\n return Promise.resolve(res);\n });\n }, [account]);\n\n const [visible, setVisible] = useLocalStorage<boolean>(\n \"orderly_assets_visible\",\n true\n );\n\n const toggleVisible = useCallback(() => {\n // @ts-ignore\n setVisible((visible: boolean) => {\n return !visible;\n });\n }, [visible]);\n\n useWalletSubscription({\n onMessage: (data: any) => {\n const { side, transStatus } = data;\n\n if (transStatus === \"COMPLETED\") {\n let msg = `${capitalizeString(side)} completed`;\n toast.success(msg);\n } else if (transStatus === \"FAILED\") {\n let msg = `${capitalizeString(side)} failed`;\n toast.error(msg);\n }\n\n ee.emit(\"wallet:changed\", data);\n },\n });\n\n useSettleSubscription({\n onMessage: (data: any) => {\n const { status } = data;\n\n switch (status) {\n case \"COMPLETED\":\n toast.success(\"Settlement completed\");\n break;\n case \"FAILED\":\n toast.error(\"Settlement failed\");\n break;\n default:\n break;\n }\n },\n });\n\n const _freeCollateral = useDataTap(freeCollateral) ?? undefined;\n const _marginRatioVal = useDataTap(marginRatioVal) ?? undefined;\n const _mmr = useDataTap(mmr) ?? undefined;\n const _totalValue = useDataTap(totalValue) ?? undefined;\n\n return {\n onDeposit,\n onWithdraw,\n onSettle,\n visible,\n toggleVisible,\n networkId,\n isFirstTimeDeposit,\n totalValue: _totalValue,\n status: state.status,\n freeCollateral: _freeCollateral,\n marginRatioVal: _marginRatioVal,\n renderMMR: _mmr,\n isConnected,\n };\n};\n\nexport type AssetViewState = ReturnType<typeof useAssetViewScript>;\n","import { useAssetViewScript } from \"./assetView.script\";\nimport { AssetView } from \"./assetView.ui\";\nimport { FaucetState } from \"./faucet/faucet.script\";\n\nexport const AssetViewWidget = () => {\n const state = useAssetViewScript();\n return (<AssetView {...state} />);\n};\n","import { FC } from \"react\";\nimport { Box, Flex, Text } from \"@orderly.network/ui\";\nimport { OrderBookState } from \"./orderBook.script\";\nimport { DesktopOrderBook } from \"../../desktop/orderBook/index.desktop\";\nimport { OrderBook as MWebOrderBook } from \"../../mobile/orderBook\";\n\nexport const OrderBook: FC<\n OrderBookState & {\n className?: string;\n tabletMediaQuery: string;\n }\n> = (props) => {\n return (\n <Box className=\"oui-font-semibold\" width={\"100%\"} height={\"100%\"}>\n {props.isMWeb ? (\n <MWebOrderBook\n level={props.level}\n asks={props.asks!}\n bids={props.bids!}\n markPrice={props.markPrice!}\n lastPrice={props.lastPrice!}\n depths={props.depths}\n activeDepth={props.selDepth}\n base={props.base}\n quote={props.quote}\n isLoading={props.isLoading}\n onItemClick={props.onItemClick}\n cellHeight={props.cellHeight}\n onDepthChange={props.onDepthChange}\n className={props.className}\n symbolInfo={props.symbolInfo}\n tabletMediaQuery={props.tabletMediaQuery}\n />\n ) : (\n <DesktopOrderBook\n level={props.level}\n asks={props.asks!}\n bids={props.bids!}\n markPrice={props.markPrice!}\n lastPrice={props.lastPrice!}\n depths={props.depths}\n activeDepth={props.selDepth}\n base={props.base}\n quote={props.quote}\n isLoading={props.isLoading}\n onItemClick={props.onItemClick}\n cellHeight={props.cellHeight}\n onDepthChange={props.onDepthChange}\n className={props.className}\n pendingOrders={props.pendingOrders}\n symbolInfo={props.symbolInfo}\n tabletMediaQuery={props.tabletMediaQuery}\n />\n )}\n </Box>\n );\n};\n","import { FC, useEffect, useRef, useState } from \"react\";\nimport { DesktopBids } from \"./bids.desktop\";\nimport { DesktopAsks } from \"./asks.desktop\";\nimport { DesktopMarkPrice } from \"./markPrice.desktop\";\nimport { DesktopHeader } from \"./header.desktop\";\nimport { DesktopDepthSelect } from \"./depthSelect.desktop\";\nimport { cn, Grid, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookProvider } from \"../../base/orderBook/orderContext\";\n\nexport interface DesktopOrderBookProps {\n asks: any[];\n bids: any[];\n markPrice: number;\n lastPrice: number[];\n onItemClick?: (item: number[]) => void;\n depths: string[];\n activeDepth?: string;\n onDepthChange?: (depth: number) => void;\n //\n autoSize?: boolean;\n level?: number;\n base: string;\n quote: string;\n\n isLoading?: boolean;\n\n cellHeight?: number;\n\n className?: string;\n pendingOrders?: number[];\n symbolInfo: BasicSymbolInfo;\n tabletMediaQuery: string;\n}\n\nexport const DesktopOrderBook: FC<DesktopOrderBookProps> = (props) => {\n const { lastPrice, markPrice, quote, base, isLoading, onDepthChange } = props;\n // const onModeChange = useCallback((mode: QtyMode) => {}, []);\n\n //\n const divRef = useRef(null);\n const [showTotal, setShowTotal] = useState(false);\n\n const rangeInfo = [\n { left: 370, right: 600 },\n { left: 740, right: 800 },\n ];\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n const { inlineSize: width } = entry.borderBoxSize[0];\n const count = rangeInfo.reduce(\n (a, b) => a + (width >= b.left && width < b.right ? 1 : 0),\n 0\n );\n setShowTotal(width >= 360);\n }\n });\n\n const targetDiv = divRef.current;\n\n if (targetDiv) {\n resizeObserver.observe(targetDiv);\n }\n\n return () => {\n if (targetDiv) {\n resizeObserver.unobserve(targetDiv);\n }\n };\n }, []);\n\n ///\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n showTotal={showTotal}\n pendingOrders={props.pendingOrders || []}\n symbolInfo={props.symbolInfo}\n tabletMediaQuery={props.tabletMediaQuery}\n >\n <Grid\n cols={1}\n rows={5}\n id=\"oui-orderbook-desktop\"\n ref={divRef}\n className=\"oui-grid-rows-[auto,auto,1fr,auto,1fr] oui-relative oui-h-full oui-w-full\"\n >\n <DesktopDepthSelect\n depths={props.depths}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n <DesktopHeader quote={quote} base={base} />\n <DesktopAsks data={[...props.asks]} />\n <DesktopMarkPrice\n lastPrice={lastPrice}\n markPrice={markPrice}\n asks={[...props.asks]}\n bids={[...props.bids]}\n symbolInfo={props.symbolInfo}\n />\n <DesktopBids data={[...props.bids]} />\n {isLoading && (\n <div className=\"oui-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-bg-8/70\">\n <Spinner />\n </div>\n )}\n </Grid>\n {/* <div\n id=\"oui-orderbook-desktop\"\n className={cn(\"oui-h-full oui-w-full oui-relative oui-bg-red-300\", props.className)}\n ref={divRef}\n >\n <DesktopDepthSelect\n depths={props.depths}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n <DesktopHeader quote={quote} base={base} />\n <DesktopAsks data={[...props.asks]} />\n <DesktopMarkPrice\n lastPrice={lastPrice}\n markPrice={markPrice}\n asks={[...props.asks]}\n bids={[...props.bids]}\n symbolInfo={props.symbolInfo}\n />\n <DesktopBids data={[...props.bids]}/>\n {isLoading && (\n <div className=\"oui-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-bg-8/70\">\n <Spinner />\n </div>\n )}\n </div> */}\n </OrderBookProvider>\n );\n};\n","import { FC, useCallback, useMemo, useState } from \"react\";\nimport { DesktopOrderBookCell } from \"./cell.desktop\";\n\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n Text,\n Flex,\n TooltipRoot,\n TooltipArrow,\n cn,\n} from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\n\ninterface DesktopListBoxProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const DesktopListBox: FC<DesktopListBoxProps> = (props) => {\n const { data, type } = props;\n const { symbolInfo, depth } = useOrderBookContext();\n\n const findMaxItem = useCallback(() => {\n if ((data?.length || 0) === 0) {\n return null;\n }\n if (type === OrderBookCellType.ASK) {\n const index = data.findIndex((item) => !Number.isNaN(item[0]));\n if (index != -1) {\n return data[index];\n }\n return null;\n } else {\n for (let index = data.length - 1; index >= 0; index--) {\n const item = data[index];\n\n if (!Number.isNaN(item[0])) {\n return item;\n }\n }\n return null;\n }\n }, [data, type]);\n\n const priceDp = useMemo(() => {\n if (depth?.toString().includes(\".\")) {\n return depth.toString().split(\".\")[1].length;\n }\n return 0;\n }, [depth]);\n\n const maxQty = useMemo(() => {\n return data.reduce((a, b) => Math.max(a, b[1]), 0);\n }, [data]);\n const [hoverIndex, setHoverIndex] = useState<number>(-1);\n\n return (\n <div\n id=\"oui-order-book-list\"\n className=\"oui-flex oui-flex-col oui-gap-[1px]\"\n >\n {data.map((item, index) => {\n return (\n <Tip\n key={index}\n index={index}\n item={item}\n countQty={props.countQty}\n setHoverIndex={setHoverIndex}\n hoverIndex={hoverIndex}\n type={type}\n maxQty={maxQty}\n priceDp={priceDp}\n symbolInfo={symbolInfo}\n findMaxItem={findMaxItem}\n />\n );\n })}\n </div>\n );\n};\n\nconst Tip: FC<{\n index: number;\n item: any;\n countQty: number;\n setHoverIndex: any;\n type: OrderBookCellType;\n maxQty: number;\n hoverIndex: number;\n priceDp: number;\n // base: any;\n // quote: any;\n // baseDp: number;\n // quoteDp: number;\n findMaxItem: () => number[] | null;\n symbolInfo: BasicSymbolInfo;\n}> = (props) => {\n const {\n index,\n item,\n setHoverIndex,\n type,\n maxQty,\n hoverIndex,\n priceDp,\n\n symbolInfo,\n } = props;\n\n const { base, quote, base_dp: baseDp, quote_dp: quoteDp } = symbolInfo;\n\n const isHover =\n hoverIndex !== -1\n ? type === OrderBookCellType.ASK\n ? index >= hoverIndex\n : index <= hoverIndex\n : false;\n\n const [open, setOpen] = useState(false);\n\n const calcHintInfo = (\n item: any\n ): {\n avgPrice: number;\n sumQty: number;\n sumQtyAmount: number;\n } => {\n if (item === null) {\n return {\n sumQty: 0,\n sumQtyAmount: 0,\n avgPrice: 0,\n };\n }\n let totalInfo = { sumQty: 0, sumQtyAmount: 0 };\n if (!Number.isNaN(item[2])) {\n totalInfo = {\n sumQty: item[2],\n sumQtyAmount: item[3],\n };\n }\n\n return {\n ...totalInfo,\n avgPrice:\n totalInfo.sumQtyAmount == 0\n ? 0\n : totalInfo.sumQtyAmount / totalInfo.sumQty,\n };\n };\n let hintInfo = calcHintInfo(item);\n if (hintInfo.avgPrice === 0) {\n hintInfo = calcHintInfo(props.findMaxItem());\n }\n\n return (\n <TooltipRoot open={open} onOpenChange={setOpen}>\n <TooltipTrigger>\n <DesktopOrderBookCell\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n count={props.countQty}\n type={props.type}\n accumulatedAmount={item[3]}\n maxQty={maxQty}\n isHover={isHover}\n currentHover={hoverIndex === index}\n symbolInfo={symbolInfo}\n onMouseEnter={() => {\n setHoverIndex(index);\n setOpen(true);\n }}\n onMouseLeave={() => {\n setHoverIndex(-1);\n setOpen(false);\n }}\n />\n </TooltipTrigger>\n <TooltipContent\n className={cn(\n \"oui-max-w-[400px] oui-w-full oui-text-2xs oui-shadow-md oui-rounded-base oui-p-3 oui-bg-base-6 oui-flex oui-flex-col oui-gap-2\",\n // type === OrderBookCellType.ASK ? `oui-mb-${30}` : \"oui-mt-0\"\n )}\n align={\n type === OrderBookCellType.ASK ? \"end\" : \"start\"\n }\n alignOffset={-25.4}\n side=\"left\"\n sideOffset={2}\n onPointerEnter={(e) => e.preventDefault()}\n >\n <Row\n title=\"Avg. Price≈\"\n content={hintInfo.avgPrice}\n contentDp={priceDp}\n />\n <Row\n title={`Sum (${base})`}\n content={hintInfo.sumQty}\n contentDp={baseDp}\n />\n <Row\n title={`Sum (${quote})`}\n content={hintInfo.sumQtyAmount}\n contentDp={quoteDp}\n />\n\n <TooltipArrow\n className=\"oui-fill-base-6\"\n style={{\n transform:\n type === OrderBookCellType.ASK\n ? \"translateX(80%)\"\n : \"translateX(-80%)\",\n }}\n />\n </TooltipContent>\n </TooltipRoot>\n );\n};\n\nconst Row: FC<{ title: string; content: number; contentDp: number }> = (\n props\n) => {\n const { title, content, contentDp } = props;\n\n return (\n <div className=\"oui-flex oui-flex-row oui-justify-between oui-gap-4\">\n <div className=\"oui-text-base-contrast-36\">{title}</div>\n <div className=\"oui-text-right\">\n <Text.numeral dp={contentDp}>{content}</Text.numeral>\n </div>\n </div>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { cn, Divider, parseNumber, Text } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { CellBar, CellBarDirection } from \"../../base/orderBook/cellBar\";\n\nexport interface DesktopOrderBookCellProps {\n background: string;\n maxQty: number;\n price: number;\n quantity: number;\n // size: number;\n count: number;\n accumulated: number;\n accumulatedAmount: number;\n type: OrderBookCellType;\n symbolInfo: BasicSymbolInfo;\n\n isHover: boolean;\n currentHover: boolean;\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n}\n\nexport const DesktopOrderBookCell: FC<DesktopOrderBookCellProps> = (props) => {\n const { cellHeight, showTotal, onItemClick, depth, pendingOrders } =\n useOrderBookContext();\n const { symbolInfo, currentHover } = props;\n const { base_dp, quote_dp } = symbolInfo;\n\n const width = Number.isNaN(props.price)\n ? 0\n : (props.accumulated / props.count) * 100;\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n const totalAmount = Number.isNaN(props.accumulated)\n ? \"-\"\n : props.accumulatedAmount?.toString();\n\n const isPendingOrder = useMemo(() => {\n const priceStr = parseNumber(props.price, { dp: dp, padding: true });\n\n const index = pendingOrders.findIndex(\n (item) => priceStr === parseNumber(item, { dp: dp, padding: true })\n );\n\n return index !== -1;\n }, [pendingOrders, props.price, depth]);\n\n return (\n <div\n className=\"oui-flex oui-flex-row oui-pl-3 oui-tabular-nums oui-justify-between oui-text-base-contrast-80 oui-text-xs oui-relative oui-cursor-pointer\"\n style={{ height: `${cellHeight}px` }}\n onClick={() => {\n if (Number.isNaN(props.price) || Number.isNaN(props.quantity)) return;\n onItemClick?.([props.price, props.quantity]);\n }}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n <div\n className={cn(\n \"oui-basis-7/12 oui-flex oui-flex-row oui-items-center oui-mr-2\",\n showTotal && \"oui-basis-5/12\"\n )}\n >\n <div\n className={cn(\n \"oui-flex-1 oui-text-left\",\n props.type === OrderBookCellType.ASK\n ? \"oui-text-trade-loss\"\n : \"oui-text-trade-profit\"\n )}\n >\n <Text.numeral dp={dp}>{props.price}</Text.numeral>\n </div>\n <div className=\"oui-flex-1 oui-text-right oui-text-base-contrast-80\">\n <Text.numeral dp={base_dp}>{props.quantity}</Text.numeral>\n </div>\n </div>\n <div\n className={cn(\n \"oui-basis-5/12 oui-flex oui-items-center oui-fex-row oui-overflow-hidden oui-relative oui-justify-end\",\n showTotal && \"oui-basis-7/12\"\n )}\n >\n <div\n className={cn(\n \"oui-flex-1 oui-pr-3 oui-text-right\",\n showTotal && \"oui-pr-3\"\n )}\n >\n <Text.numeral dp={base_dp} className=\"oui-z-10\">\n {props.accumulated}\n </Text.numeral>\n </div>\n {showTotal && (\n <div className=\"oui-flex-1 oui-text-right oui-pr-3\">\n <Text.numeral dp={2} className=\"oui-z-10\">\n {totalAmount}\n </Text.numeral>\n </div>\n )}\n <CellBar\n width={width}\n direction={CellBarDirection.LEFT_TO_RIGHT}\n className={\n props.type === OrderBookCellType.ASK\n ? \"oui-bg-trade-loss/10\"\n : \"oui-bg-trade-profit/10\"\n }\n />\n </div>\n\n {isPendingOrder && (\n <div\n className={cn(\n \"oui-absolute oui-rounded-full oui-left-[4px] oui-h-[4px] oui-w-[4px] oui-pointer-events-none\",\n props.type === OrderBookCellType.ASK && \"oui-bg-trade-loss\",\n props.type === OrderBookCellType.BID && \"oui-bg-trade-profit\"\n )}\n style={{ top: `${cellHeight / 2 - 2}px` }}\n />\n )}\n\n {props.isHover && (\n <div className=\"oui-absolute oui-bg-white oui-left-0 oui-right-0 oui-top-0 oui-bottom-0 oui-opacity-[.12]\"></div>\n )}\n {currentHover && (\n <div\n className={cn(\n \"oui-absolute oui-left-0 oui-right-0\",\n props.type === OrderBookCellType.ASK && \"oui-top-0\",\n props.type === OrderBookCellType.BID && \"oui-bottom-0\"\n )}\n >\n <Divider\n lineStyle=\"dashed\"\n className={cn(\n \"oui-w-full\",\n props.type === OrderBookCellType.BID && \"oui-border-trade-profit\",\n props.type === OrderBookCellType.ASK && \"oui-border-trade-loss\"\n )}\n />\n </div>\n )}\n </div>\n );\n};\n","import {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useState,\n} from \"react\";\nimport { QtyMode, TotalMode } from \"./types\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\n\nexport interface OrderBookContextValue {\n cellHeight: number;\n mode: QtyMode;\n depth?: string;\n onModeChange?: (mode: QtyMode) => void;\n onItemClick?: (item: number[]) => void;\n showTotal: boolean;\n totalMode: TotalMode;\n pendingOrders: number[];\n onTotalModeChange?: (mode: TotalMode) => void;\n symbolInfo: BasicSymbolInfo;\n tabletMediaQuery: string;\n}\n\nexport const OrderBookContext = createContext({\n cellHeight: 22,\n} as OrderBookContextValue);\n\nexport const useOrderBookContext = () => useContext(OrderBookContext);\n\ninterface OrderBookProviderProps {\n cellHeight: number;\n depth?: string;\n showTotal: boolean;\n pendingOrders: number[];\n onItemClick?: (item: number[]) => void;\n symbolInfo: BasicSymbolInfo;\n tabletMediaQuery: string;\n}\n\nexport const OrderBookProvider: FC<\n PropsWithChildren<OrderBookProviderProps>\n> = (props) => {\n const [mode, setMode] = useState<QtyMode>(\"quantity\");\n const [totalMode, setTotalMode] = useState<QtyMode>(\"quantity\");\n return (\n <OrderBookContext.Provider\n value={{\n cellHeight: props.cellHeight,\n onItemClick: props.onItemClick,\n mode,\n totalMode: totalMode || \"quantity\",\n depth: props.depth,\n onModeChange: setMode,\n onTotalModeChange: setTotalMode,\n showTotal: props.showTotal || false,\n pendingOrders: props.pendingOrders,\n symbolInfo: props.symbolInfo,\n tabletMediaQuery: props.tabletMediaQuery,\n }}\n >\n {props.children}\n </OrderBookContext.Provider>\n );\n};\n","import { cn } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\nexport enum CellBarDirection {\n LEFT_TO_RIGHT,\n RIGHT_TO_LEFT,\n}\n\ninterface CellBarProps {\n width: number;\n className?: string;\n direction?: CellBarDirection\n}\n\nexport const CellBar: FC<CellBarProps> = (props) => {\n const { direction = CellBarDirection.RIGHT_TO_LEFT } = props;\n const transform = useMemo(() => {\n const x = Math.max(props.width, 0);\n if (direction === CellBarDirection.LEFT_TO_RIGHT) {\n return { transform: `translateX(${x}%)` };\n }\n return { transform: `translateX(-${x}%)` };\n \n }, [props.width]);\n\n return (\n <div\n className={cn(\n \"oui-absolute oui-right-[-100%] oui-top-0 oui-h-full oui-w-full oui-transition-transform oui-pointer-events-none\",\n direction === CellBarDirection.LEFT_TO_RIGHT && \"oui-left-[-100%]\",\n props.className\n )}\n style={transform}\n />\n );\n};\n","import { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { DesktopListBox } from \"./listBox.desktop\";\nimport { FC, useMemo } from \"react\";\n\nexport interface Props {\n data: any[];\n}\nexport const DesktopBids: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n // let len = data.length;\n let index = data.length - 1;\n\n while (Number.isNaN(max) && index > 0) {\n max = data[index][2];\n index--;\n }\n\n return max;\n // return data.length > 0 ? data[data.length - 1][2] : 0;\n }, [data]);\n return (\n <DesktopListBox type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { DesktopListBox } from \"./listBox.desktop\";\nimport { FC, useMemo } from \"react\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nexport interface Props {\n data: number[][];\n}\nexport const DesktopAsks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n let len = data.length;\n let index = 0;\n\n while (Number.isNaN(max) && index < len) {\n max = data[index][2];\n index++;\n }\n\n return max;\n }, [data]);\n \n return (\n <DesktopListBox type={OrderBookCellType.ASK} data={data} countQty={countQty} />\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { cn, Flex, Text, Tooltip } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { MiddlePriceView } from \"../../base/orderBook/midPriceView\";\nimport { MarkPriceView } from \"../../base/orderBook/markPrice\";\n\ninterface DesktopMarkPriceProps {\n markPrice: number;\n lastPrice: number[];\n asks: number[][];\n bids: number[][];\n symbolInfo: BasicSymbolInfo;\n}\n\nexport const DesktopMarkPrice: FC<DesktopMarkPriceProps> = (props) => {\n const { markPrice = 0, lastPrice, asks, bids, symbolInfo } = props;\n const { showTotal, tabletMediaQuery } = useOrderBookContext();\n\n return (\n <div className=\"oui-flex oui-flex-row oui-pl-3 oui-tabular-nums oui-justify-between oui-text-base-contrast-80 oui-text-xs oui-relative oui-cursor-pointer oui-py-[6px]\">\n <div\n className={cn(\n \"oui-basis-7/12 oui-flex oui-flex-row oui-items-center oui-mr-2 oui-justify-between\",\n showTotal && \"oui-basis-5/12\"\n )}\n >\n <MiddlePriceView\n markPrice={markPrice}\n lastPrice={lastPrice}\n quote_dp={symbolInfo.quote_dp}\n className=\"oui-text-base\"\n />\n <MarkPriceView\n markPrice={markPrice}\n quote_dp={symbolInfo.quote_dp}\n tabletMediaQuery={tabletMediaQuery}\n />\n </div>\n <div\n className={cn(\n \"oui-basis-5/12 oui-flex oui-items-center oui-fex-row oui-overflow-hidden oui-relative oui-justify-end\",\n showTotal && \"oui-basis-7/12\",\n \"oui-pr-3\"\n )}\n >\n <Spread asks={asks} bids={bids} />\n </div>\n </div>\n );\n};\n\nconst Spread: FC<{\n asks: number[][];\n bids: number[][];\n}> = (props) => {\n const { asks, bids } = props;\n\n const spread = useMemo(() => {\n if (bids.length === 0 && asks.length === 0) {\n return 0;\n }\n const bid1 = Number.isNaN(bids[0][0]) ? 0 : bids[0][0];\n const index = asks.reverse().findIndex((item) => !Number.isNaN(item[0]));\n\n let ask1 = 0.0;\n if (index !== -1) {\n ask1 = Number.isNaN(asks[index][0]) ? 0 : asks[index][0];\n }\n const dValue = new Decimal(ask1)\n .sub(bid1)\n .div(new Decimal(ask1).add(bid1).div(2));\n // 0.00006416604461251195\n // 0.000065\n // 0.0065\n return Math.ceil(dValue.toNumber() * 1000000 + 0.1) / 10000;\n }, [asks, bids]);\n\n return (\n <div>\n <Tooltip\n content={\"Spread Ratio of the ask1 and bid1.\"}\n className=\"oui-max-w-[240px]\"\n >\n <Text\n size=\"2xs\"\n intensity={36}\n className={\n \"oui-cursor-pointer oui-underline oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-base-contrast-36\"\n }\n >\n {`${spread}%`}\n </Text>\n </Tooltip>\n </div>\n );\n};\n","import {\n ArrowDownShortIcon,\n ArrowUpShortIcon,\n Box,\n cn,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { FC } from \"react\";\n\n/**\n * default style is desktop effect\n */\nexport const MiddlePriceView: FC<{\n markPrice: number;\n lastPrice: number[];\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const {\n markPrice = 0,\n lastPrice,\n quote_dp,\n className,\n iconSize = 18,\n } = props;\n\n const [prevLastPrice, middlePrice] = lastPrice;\n\n const down = middlePrice < prevLastPrice;\n const up = middlePrice > prevLastPrice;\n\n return (\n <Flex\n gap={1}\n className={cn(\n up ? \"oui-text-trade-profit\" : down ? \"oui-text-trade-loss\" : \"\",\n className\n )}\n >\n <Text.numeral dp={quote_dp} intensity={98}>\n {middlePrice}\n </Text.numeral>\n <Box width={19}>\n {down && (\n <ArrowDownShortIcon size={iconSize} color=\"danger\" opacity={1} />\n )}\n {up && <ArrowUpShortIcon size={iconSize} color=\"success\" opacity={1} />}\n </Box>\n </Flex>\n );\n};\n","import { useMediaQuery } from \"@orderly.network/hooks\";\nimport { MEDIA_TABLET } from \"@orderly.network/types\";\nimport { Tooltip, cn, Flex, Text, SimpleDialog } from \"@orderly.network/ui\";\nimport { FC, useState } from \"react\";\n/**\n * default style is desktop effect\n */\nexport const MarkPriceView: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n tabletMediaQuery?: string;\n}> = (props) => {\n const isMobileLayout = useMediaQuery(props.tabletMediaQuery ?? MEDIA_TABLET);\n\n return isMobileLayout ? (\n <MobileLayout {...props} />\n ) : (\n <DesktopLayout {...props} />\n );\n};\n\nconst DesktopLayout: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const { quote_dp, className, iconSize = 18 } = props;\n\n return (\n <Tooltip\n content={\n \"Obtained from a third-party oracle, the mark price is calculated as the median of three prices: the last price, the fair price based on the funding rate basis, and the fair price based on the order books.\"\n }\n className=\"oui-max-w-[270px]\"\n >\n <Flex\n gap={1}\n className={cn(\"oui-cursor-pointer oui-text-2xs\", className)}\n >\n <FlagIcon size={iconSize} />\n <Text.numeral\n dp={quote_dp}\n color=\"warning\"\n className=\"oui-underline oui-text-base oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-warning-darken\"\n >\n {props.markPrice}\n </Text.numeral>\n </Flex>\n </Tooltip>\n );\n};\n\nconst MobileLayout: FC<{\n markPrice: number;\n quote_dp: number;\n className?: string;\n iconSize?: number;\n}> = (props) => {\n const { quote_dp, className, iconSize = 18 } = props;\n const [open, setOpen] = useState(false);\n\n return (\n <>\n <Flex\n gap={1}\n className={cn(\"oui-cursor-pointer oui-text-2xs\", className)}\n onClick={() => {\n setOpen(true);\n }}\n >\n <FlagIcon size={iconSize} />\n <Text.numeral\n dp={quote_dp}\n color=\"warning\"\n className=\"oui-underline oui-decoration-dashed oui-decoration-1 oui-underline-offset-4 oui-decoration-warning-darken\"\n >\n {props.markPrice}\n </Text.numeral>\n </Flex>\n <SimpleDialog\n size=\"xs\"\n open={open}\n onOpenChange={setOpen}\n title=\"Tips\"\n actions={{\n primary: {\n label: \"OK\",\n onClick: () => setOpen(false),\n },\n }}\n >\n <Text>\n Obtained from a third-party oracle, the mark price is calculated as\n the median of three prices: the last price, the fair price based on\n the funding rate basis, and the fair price based on the order books.\n </Text>\n </SimpleDialog>\n </>\n );\n};\n\nconst FlagIcon = (props: { size: number }) => {\n return (\n <svg\n width={props.size}\n height={props.size}\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.75 1.5a.75.75 0 0 1 .75.75h6a.75.75 0 0 1 .75.75v1.5h3a.75.75 0 0 1 .75.75V12a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75v-1.5H4.5v5.25a.75.75 0 0 1-1.5 0V2.25a.75.75 0 0 1 .75-.75M4.5 9h5.25V3.75H4.5zm6.75-3v3.75a.75.75 0 0 1-.75.75H8.25v.75h5.25V6z\"\n fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const DesktopHeader: FC<Props> = (props) => {\n const { showTotal } = useOrderBookContext();\n return (\n <Flex pl={3} justify={\"between\"} className=\"oui-py-[6px]\">\n <Flex gap={1} className={cn(\"oui-basis-7/12\", showTotal && \"oui-basis-1/2\")}>\n <Box width={\"100%\"}>\n <Title\n name=\"Price\"\n token={props.quote}\n id=\"oui-order-book-header-price\"\n />\n </Box>\n <Box width={\"100%\"}>\n <Title\n name=\"Qty\"\n token={props.base}\n id=\"oui-order-book-header-qty\"\n justifyEnd\n />\n </Box>\n </Flex>\n <Flex gap={1} pr={3} className={cn(\"oui-basis-5/12\", showTotal && \"oui-basis-1/2\")}>\n <Box width={\"100%\"}>\n <Title\n name=\"Total\"\n token={props.base}\n id=\"oui-order-book-header-total-base\"\n justifyEnd\n />\n </Box>\n {showTotal && (\n <Box width={\"100%\"}>\n <Title\n name=\"Total\"\n token={props.quote}\n id=\"oui-order-book-header-total-quote\"\n justifyEnd\n />\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<{\n name: string;\n token: string;\n justifyEnd?: boolean;\n id?: string;\n}> = (props) => {\n const { name, token, justifyEnd = false } = props;\n return (\n <Flex\n id={props.id}\n className={cn(\n \"oui-text-base-contrast-36 oui-text-xs oui-items-end\",\n justifyEnd && \"oui-justify-end\"\n )}\n >\n <span>{name}</span>\n <span>{`(${token})`}</span>\n </Flex>\n );\n};\n","import { Box, Select } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\ninterface DesktopDepthSelectProps {\n depths: string[];\n value?: string;\n onChange?: (depth: number) => void;\n}\n\nexport const DesktopDepthSelect: FC<DesktopDepthSelectProps> = (props) => {\n const options = useMemo(() => {\n return props.depths.map((d) => ({\n value: d,\n label: `${d}`,\n }));\n }, [props.depths]);\n\n return (\n <Box pl={3} width={97} className=\"oui-py-[10px]\">\n <Select.options\n options={options}\n size={\"xs\"}\n value={props.value}\n onValueChange={(value: any) => {\n props.onChange?.(value);\n }}\n />\n </Box>\n );\n};\n","import { FC, useMemo } from \"react\";\n\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { Flex, Text } from \"@orderly.network/ui\";\n\ninterface Props {\n quote: string;\n base: string;\n}\n\nexport const Header: FC<Props> = (props) => {\n const { mode, onModeChange } = useOrderBookContext();\n const currency = useMemo(() => {\n if (mode === \"amount\") {\n return props.quote;\n }\n return props.base;\n }, [mode, props.quote, props.base]);\n\n const qtyLabel = useMemo(() => {\n return mode === \"amount\" ? \"Value\" : \"Qty\";\n }, [mode]);\n\n return (\n <Flex\n justify={\"between\"}\n width={\"100%\"}\n className=\"oui-text-base-contrast-36 oui-text-2xs oui-py-[5px]\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n id=\"oui-order-book-header-price\"\n >\n <Text>Price</Text>\n <Text>{`(${props.quote})`}</Text>\n </Flex>\n <Flex\n direction={\"column\"}\n itemAlign={\"end\"}\n className=\"oui-cursor-pointer\"\n onClick={() =>\n onModeChange?.(mode === \"amount\" ? \"quantity\" : \"amount\")\n }\n >\n <Text>{qtyLabel}</Text>\n <Text>{`(${currency})`}</Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useContext, useMemo } from \"react\";\nimport { CellBar } from \"../../base/orderBook/cellBar\";\nimport { Decimal, getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { OrderBookCellType, QtyMode } from \"../../base/orderBook/types\";\nimport { OrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { Box, cn, Flex, Text } from \"@orderly.network/ui\";\n\nexport interface OrderBookCellProps {\n background: string;\n price: number;\n quantity: number;\n // size: number;\n count: number;\n accumulated: number;\n type: OrderBookCellType;\n mode: QtyMode;\n}\n\nexport const OrderBookCell: FC<OrderBookCellProps> = (props) => {\n const width = (props.accumulated / props.count) * 100;\n const { cellHeight, onItemClick, depth, showTotal, symbolInfo } =\n useContext(OrderBookContext);\n const { base_dp, quote_dp } = symbolInfo;\n\n let qty = Number.isNaN(props.quantity)\n ? \"-\"\n : props.mode === \"amount\"\n ? new Decimal(props.quantity).mul(props.price).toString()\n : props.quantity;\n\n if (showTotal) {\n qty = props.quantity;\n }\n\n const dp = useMemo(() => {\n return getPrecisionByNumber(depth || `${quote_dp}`);\n }, [depth, quote_dp]);\n\n return (\n <Box\n className={cn(\n \"oui-overflow-hidden oui-relative oui-cursor-pointer oui-tabular-nums oui-text-2xs oui-w-full\",\n showTotal && \"oui-flex-1\"\n )}\n style={{ height: `${cellHeight}px` }}\n onClick={(e) => {\n if (Number.isNaN(props.price) || Number.isNaN(props.quantity)) return;\n\n onItemClick?.([props.price, props.quantity]);\n }}\n >\n <Flex justify={\"between\"}>\n <Text.numeral\n color={props.type === OrderBookCellType.BID ? \"buy\" : \"sell\"}\n dp={dp}\n >\n {props.price}\n </Text.numeral>\n <Text.numeral\n dp={props.mode === \"amount\" ? 2 : base_dp}\n className=\"oui-text-base-contrast-80\"\n >\n {qty}\n </Text.numeral>\n </Flex>\n {Number.isNaN(width) || showTotal ? null : (\n <CellBar\n width={width}\n className={\n props.type === OrderBookCellType.ASK\n ? \"oui-bg-trade-loss/20\"\n : \"oui-bg-trade-profit/20\"\n }\n />\n )}\n </Box>\n );\n};\n","import { FC } from \"react\";\nimport { OrderBookCell } from \"./cell\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { Box } from \"@orderly.network/ui\";\n\ninterface OrderBookListProps {\n type: OrderBookCellType;\n data: number[][];\n countQty: number;\n}\n\nexport const ListBox: FC<OrderBookListProps> = (props) => {\n const { data } = props;\n const { mode } = useOrderBookContext();\n\n return (\n <Box\n id=\"oui-order-book-list\"\n className=\"oui-flex oui-flex-col oui-gap-[1px] oui-w-full\"\n >\n {data.map((item, index) => {\n return (\n <OrderBookCell\n key={index}\n background={\"\"}\n price={item[0]}\n quantity={item[1]}\n accumulated={item[2]}\n count={props.countQty}\n type={props.type}\n mode={mode}\n />\n );\n })}\n </Box>\n );\n};\n","import { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { ListBox } from \"./listBox\";\nimport { FC, useMemo } from \"react\";\n\nexport interface Props {\n data: any[];\n}\nexport const Bids: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n // let len = data.length;\n let index = data.length - 1;\n\n while (Number.isNaN(max) && index > 0) {\n max = data[index][2];\n index--;\n }\n\n return max;\n // return data.length > 0 ? data[data.length - 1][2] : 0;\n }, [data]);\n return (\n <ListBox type={OrderBookCellType.BID} data={data} countQty={countQty} />\n );\n};\n","import { OrderBookCellType } from \"../../base/orderBook/types\";\nimport { FC, useMemo } from \"react\";\nimport { ListBox } from \"./listBox\";\nexport interface Props {\n data: number[][];\n}\nexport const Asks: FC<Props> = (props) => {\n const { data } = props;\n const countQty = useMemo(() => {\n let max = Number.NaN;\n let len = data.length;\n let index = 0;\n\n while (Number.isNaN(max) && index < len) {\n max = data[index][2];\n index++;\n }\n\n return max;\n }, [data]);\n return (\n <ListBox type={OrderBookCellType.ASK} data={data} countQty={countQty} />\n );\n};\n","import { FC } from \"react\";\nimport { Flex, modal } from \"@orderly.network/ui\";\nimport { useOrderBookContext } from \"../../base/orderBook/orderContext\";\nimport { MarkPriceView } from \"../../base/orderBook/markPrice\";\nimport { MiddlePriceView } from \"../../base/orderBook/midPriceView\";\n\ninterface MarkPriceProps {\n markPrice: number;\n lastPrice: number[];\n}\n\nexport const MarkPrice: FC<MarkPriceProps> = (props) => {\n const { markPrice = 0, lastPrice } = props;\n\n const { symbolInfo, tabletMediaQuery } = useOrderBookContext();\n\n const { quote_dp } = symbolInfo;\n\n return (\n <Flex id=\"oui-order-book-mark-price\" className=\"oui-py-[6px]\" width={\"100%\"} justify={\"between\"}>\n <MiddlePriceView\n markPrice={props.markPrice}\n lastPrice={props.lastPrice}\n quote_dp={quote_dp}\n className=\"oui-text-sm\"\n iconSize={14}\n />\n <MarkPriceView\n markPrice={props.markPrice}\n quote_dp={quote_dp}\n className=\"oui-text-2xs\"\n iconSize={12}\n tabletMediaQuery={tabletMediaQuery}\n />\n </Flex>\n );\n};\n","import { Box, Picker } from \"@orderly.network/ui\";\nimport { FC, useMemo } from \"react\";\n\ninterface DepthSelectProps {\n depth: string[];\n value?: string;\n onChange?: (depth: number) => void;\n}\n\nexport const DepthSelect: FC<DepthSelectProps> = (props) => {\n const options = useMemo(() => {\n return props.depth.map((d) => ({\n value: d,\n label: `${d}`,\n }));\n }, [props.depth]);\n return (\n <Box id=\"oui-order-book-depth\" className=\"oui-pt-2 oui-w-full\" >\n {/* <Select size={\"small\"} value={\"0.001\"} /> */}\n <Picker\n options={options}\n fullWidth\n size={\"sm\"}\n value={props.value}\n className=\"oui-text-2xs oui-text-base-contrast-54\"\n onValueChange={(value) => {\n //\n props.onChange?.(value);\n }}\n />\n </Box>\n );\n};\n","import { FC} from \"react\";\nimport { Header } from \"./header\";\nimport { Bids } from \"./bids\";\nimport { Asks } from \"./asks\";\nimport { MarkPrice } from \"./markPrice\";\nimport { OrderBookProvider } from \"../../base/orderBook/orderContext\";\nimport { DepthSelect } from \"./depthSelect\";\nimport { cn, Flex, Spinner } from \"@orderly.network/ui\";\nimport { BasicSymbolInfo } from \"../../../types/types\";\nimport { FundingRateWidget } from \"../fundingRate\";\nexport interface OrderBookProps {\n asks: any[];\n bids: any[];\n markPrice: number;\n lastPrice: number[];\n onItemClick?: (item: number[]) => void;\n depths?: string[];\n activeDepth?: string;\n onDepthChange?: (depth: number) => void;\n //\n autoSize?: boolean;\n level?: number;\n base: string;\n quote: string;\n\n isLoading?: boolean;\n\n cellHeight?: number;\n\n className?: string;\n symbolInfo: BasicSymbolInfo;\n tabletMediaQuery: string;\n}\n\nexport const OrderBook: FC<OrderBookProps> = (props) => {\n const { lastPrice, markPrice, quote, base, isLoading, onDepthChange } = props;\n // const onModeChange = useCallback((mode: QtyMode) => {}, []);\n const symbol = `PERP_${props.symbolInfo.base}_${props.symbolInfo.quote}`;\n\n return (\n <OrderBookProvider\n cellHeight={props.cellHeight ?? 20}\n onItemClick={props.onItemClick}\n depth={props.activeDepth}\n pendingOrders={[]}\n showTotal={false}\n symbolInfo={props.symbolInfo}\n tabletMediaQuery={props.tabletMediaQuery}\n >\n <Flex\n direction={\"column\"}\n p={2}\n id=\"oui-orderbook-mobile\"\n className={cn(\"oui-h-full oui-wfull oui-relative\", props.className)}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n <FundingRateWidget symbol={symbol} />\n <Header quote={quote} base={base} />\n <Asks data={props.asks} />\n <MarkPrice lastPrice={lastPrice} markPrice={markPrice} />\n <Bids data={props.bids} />\n\n <DepthSelect\n depth={props.depths || []}\n value={props.activeDepth}\n onChange={onDepthChange}\n />\n {isLoading && (\n <div className=\"oui-absolute oui-left-0 oui-top-0 oui-right-0 oui-bottom-0 oui-z-10 oui-flex oui-items-center oui-justify-center oui-bg-base-800/70 oui-h-full oui-min-h-[420px]\">\n <Spinner />\n </div>\n )}\n </Flex>\n </OrderBookProvider>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { FundingRateState } from \"./fundingRate.script\";\n\nexport const FundingRate: FC<FundingRateState> = (props) => {\n const predFundingRate = props.data.est_funding_rate;\n const countDown = props.data.countDown;\n\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} pb={2}>\n <Text intensity={36} size=\"2xs\">\n Pred. funding rate\n </Text>\n\n {predFundingRate === null ? (\n \"--\"\n ) : (\n <div className=\"orderly-flex orderly-gap-1 oui-text-2xs oui-text-base-contrast-36\">\n {/* <span className=\"orderly-text-warning-darken\">{`${predFundingRate}%`}</span> */}\n <Text.numeral coloring suffix=\"%\">{predFundingRate ?? \"--\"}</Text.numeral>\n <span>in</span>\n <span>{countDown}</span>\n </div>\n )}\n </Flex>\n );\n};\n","import { useFundingRate } from \"@orderly.network/hooks\";\n\nexport const useFundingRateScript = (symbol: string) => {\n const data = useFundingRate(symbol);\n return { data };\n};\n\nexport type FundingRateState = ReturnType<typeof useFundingRateScript>;\n","import { useFundingRateScript } from \"./fundingRate.script\";\nimport { FundingRate } from \"./fundingRate.ui\";\n\nexport const FundingRateWidget = (props: { symbol: string }) => {\n const state = useFundingRateScript(props.symbol);\n return <FundingRate {...state} />;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTradingPageContext } from \"../../../provider/context\";\nimport {\n useMediaQuery,\n useOrderbookStream,\n useOrderStream,\n useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport { removeTrailingZeros } from \"@orderly.network/utils\";\nimport { MEDIA_TABLET, OrderStatus } from \"@orderly.network/types\";\nimport { getBasicSymbolInfo } from \"../../../utils/utils\";\n\nconst CELL_MAX = 30;\nconst DEFAULT_CELL_HEIGHT = 20;\n\nconst SPACE = 104;\n\nexport const useOrderBookScript = (props: {\n symbol: string;\n tabletMediaQuery?: string;\n height?: number;\n}) => {\n const { symbol, height, tabletMediaQuery = MEDIA_TABLET } = props;\n const symbolInfo = useSymbolsInfo()[props.symbol];\n\n const [cellHeight, setCellHeight] = useState(DEFAULT_CELL_HEIGHT);\n\n const [level, setLevel] = useState(10);\n const { base, quote, quote_dp } = getBasicSymbolInfo(symbolInfo);\n\n const [data, { onDepthChange, isLoading, onItemClick, depth, allDepths }] =\n useOrderbookStream(symbol, undefined, {\n level,\n });\n\n const pendingOrders = usePendingOrderStream(symbol);\n useEffect(() => {\n if (height) {\n // setCellHeight(height.content / level);\n const level = Math.floor(\n (height - SPACE) / ((DEFAULT_CELL_HEIGHT + 1) * 2)\n );\n\n const cellsHeight = (DEFAULT_CELL_HEIGHT + 1) * 2 * level;\n\n const restSpace = height - SPACE - cellsHeight;\n\n // console.log(\n // \"restSpace\",\n // level,\n // height,\n // SPACE,\n // cellsHeight,\n // restSpace\n // );\n\n if (restSpace > 10) {\n setCellHeight(DEFAULT_CELL_HEIGHT + restSpace / level / 2);\n } else {\n setCellHeight(DEFAULT_CELL_HEIGHT);\n }\n\n setLevel(level);\n }\n }, [height]);\n\n const selDepth = useMemo(() => {\n if (typeof depth === \"undefined\" || typeof quote_dp === \"undefined\") {\n return undefined;\n }\n\n let formattedNumber = removeTrailingZeros(depth);\n return formattedNumber;\n }, [depth, quote_dp]);\n\n const depths = useMemo(() => {\n return allDepths?.map((e) => removeTrailingZeros(e)) || [];\n }, [allDepths, quote_dp]);\n\n const isMWeb = useMediaQuery(tabletMediaQuery);\n\n return {\n level,\n asks: data?.asks,\n bids: data?.bids,\n markPrice: data?.markPrice,\n lastPrice: data?.middlePrice,\n depths,\n selDepth,\n base,\n quote,\n isLoading,\n onItemClick,\n cellHeight,\n onDepthChange,\n pendingOrders,\n symbolInfo: getBasicSymbolInfo(symbolInfo),\n isMWeb,\n };\n};\n\nexport const usePendingOrderStream = (symbol: string): number[] => {\n const [data] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n symbol: symbol,\n });\n\n const pendingOrders = useMemo(() => {\n const info = data\n ?.filter((item) => item.symbol === symbol)\n .reduce((a, b) => {\n // TODO: check if this is the correct price, when the data is from WS, it crashes\n const price = b.price || b.trigger_price || 0;\n return [...a, price];\n }, []);\n\n return info;\n }, [data, symbol]);\n\n return pendingOrders;\n};\n\nexport type OrderBookState = ReturnType<typeof useOrderBookScript>;\n","import { useOrderBookScript } from \"./orderBook.script\";\nimport { OrderBook } from \"./orderBook.ui\";\n\nexport const OrderBookWidget = (props: {\n className?: string;\n symbol: string;\n height?: number;\n tabletMediaQuery: string;\n}) => {\n const state = useOrderBookScript({\n symbol: props.symbol,\n height: props.height,\n tabletMediaQuery: props.tabletMediaQuery,\n });\n return <OrderBook {...state} className={props.className} tabletMediaQuery={props.tabletMediaQuery} />;\n};\n","import React, { FC } from \"react\";\nimport {\n Flex,\n Text,\n Box,\n Tooltip,\n modal,\n gradientTextVariants,\n cn,\n EditIcon,\n} from \"@orderly.network/ui\";\nimport { RiskRateState } from \"./riskRate.script\";\nimport { LeverageWidgetId } from \"@orderly.network/ui-leverage\";\nimport { TooltipContent } from \"../assetView/assetView.ui\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const RiskRate: FC<RiskRateState> = (props) => {\n const { riskRate, riskRateColor, isConnected, currentLeverage, maxLeverage } =\n props;\n const { isHigh, isMedium, isLow, isDefault } = riskRateColor;\n const { wrongNetwork } = useAppContext();\n\n\n const textColor = wrongNetwork\n ? \"\"\n : isHigh\n ? \"oui-text-danger\"\n : isMedium\n ? \"oui-text-warning-darken\"\n : isLow\n ? gradientTextVariants({ color: \"brand\" })\n : \"\";\n\n const boxClsName = wrongNetwork\n ? \"oui-bg-gradient-to-r oui-opacity-20 oui-from-[#26fefe] oui-via-[#ff7d00] oui-to-[#d92d6b] oui-h-1.5 oui-rounded-full\"\n : isHigh\n ? \"oui-bg-gradient-to-tr oui-from-[#791438] oui-to-[#ff447c] oui-h-1.5 oui-rounded-full\"\n : isMedium\n ? \"oui-bg-gradient-to-tr oui-from-[#792e00] oui-to-[#ffb65d] oui-h-1.5 oui-rounded-full\"\n : isLow\n ? \"oui-bg-gradient-to-tr oui-from-[#59b0fe] oui-to-[#26fefe] oui-h-1.5 oui-rounded-full\"\n : \"oui-bg-gradient-to-r oui-opacity-20 oui-from-[#26fefe] oui-via-[#ff7d00] oui-to-[#d92d6b] oui-h-1.5 oui-rounded-full\";\n\n return (\n <Box data-risk={\"\"} className=\"oui-space-y-2\">\n <Flex\n itemAlign=\"center\"\n justify=\"start\"\n className=\"oui-w-full oui-bg-base-6 oui-rounded-full oui-h-2 oui-px-[1px]\"\n >\n <Box\n className={boxClsName}\n style={\n riskRate && riskRate !== \"--\"\n ? { width: riskRate }\n : { width: \"100%\" }\n }\n />\n </Flex>\n\n <Flex className=\"oui-gap-2\">\n <Flex direction=\"column\" itemAlign=\"start\" className=\"oui-flex-1\">\n <Tooltip\n content={\n (\n <TooltipContent\n description=\"The Risk rate is used to assess the risk level of an account. When the Risk rate reaches 100%, the account will be liquidated\"\n formula=\"Risk rate = Maintenance margin ratio / Margin ratio * 100%\"\n />\n ) as any\n }\n >\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-b-white/10\"\n >\n Risk rate\n </Text>\n </Tooltip>\n <Text\n size=\"xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className={cn(textColor)}\n >\n {riskRate ?? \"--\"}\n </Text>\n </Flex>\n\n <Flex direction=\"column\" itemAlign=\"end\" className=\"oui-flex-1\">\n <Tooltip open={false} content={(<div>hint test</div>) as any}>\n <Text\n size=\"2xs\"\n color=\"neutral\"\n weight=\"semibold\"\n className=\"oui-cursor-pointer\"\n >\n Max account leverage\n </Text>\n </Tooltip>\n <Flex className=\"oui-gap-1\">\n <Text.numeral\n dp={2}\n padding={false}\n suffix={currentLeverage ? \"x\" : undefined}\n >\n {currentLeverage ?? \"--\"}\n </Text.numeral>\n\n <span className={\"oui-text-base-contrast-54\"}>/</span>\n\n <button\n className=\"oui-flex oui-items-center oui-gap-1\"\n onClick={() => {\n modal.show(LeverageWidgetId, { currentLeverage: 5 });\n }}\n >\n <Text.numeral\n dp={2}\n padding={false}\n suffix={maxLeverage ? \"x\" : undefined}\n >\n {maxLeverage ?? \"--\"}\n </Text.numeral>\n\n {typeof maxLeverage !== \"undefined\" && maxLeverage !== null && (\n <EditIcon size={12} color=\"white\" />\n )}\n </button>\n </Flex>\n </Flex>\n </Flex>\n </Box>\n );\n};\n","import { useAccount, useCollateral, useLeverage, useMarginRatio } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\n\nconst getRiskRateColor = (riskRate: null | number) => {\n if (riskRate === null) {\n return { isHigh: false, isMedium: false, isLow: false, isDefault: true };\n }\n\n const isLow = riskRate < 40;\n const isMedium = riskRate >= 40 && riskRate < 80;\n const isHigh = riskRate >= 80;\n const isDefault = !isLow && !isMedium && !isHigh;\n\n\n return { isHigh, isMedium, isLow, isDefault };\n};\n\nexport const useRiskRateScript = () => {\n const { state } = useAccount();\n\n const isConnected = state.status >= AccountStatusEnum.EnableTrading;\n const { marginRatio,currentLeverage, mmr } = useMarginRatio();\n const [maxLeverage] = useLeverage();\n\n const riskRate = useMemo(() => {\n if (!isConnected || marginRatio === null || mmr === null) {\n return \"--\";\n }\n\n if (marginRatio === 0 || mmr === 0) {\n return \"0%\";\n }\n\n const calculatedRiskRate = new Decimal(mmr)\n .div(marginRatio)\n .mul(100)\n .todp(2, Decimal.ROUND_UP);\n\n // Remove trailing zeroes and add percentage sign\n return `${calculatedRiskRate.toString().replace(/\\.?0+$/, \"\")}%`;\n }, [isConnected, marginRatio, mmr]);\n\n const riskRateNumber = riskRate === \"--\" ? null : parseFloat(riskRate);\n\n const riskRateColor = useMemo(() => {\n return getRiskRateColor(riskRateNumber);\n }, [riskRateNumber]);\n\n const _curLeverage = useDataTap(currentLeverage);\n const _maxLeverage = useDataTap(maxLeverage);\n const _riskRate = useDataTap(riskRate);\n \n\n return {\n riskRate: _riskRate,\n riskRateColor,\n isConnected,\n currentLeverage: _curLeverage,\n maxLeverage: _maxLeverage,\n };\n};\n\nexport type RiskRateState = ReturnType<typeof useRiskRateScript>;\n","import { useRiskRateScript } from \"./riskRate.script\";\nimport { RiskRate } from \"./riskRate.ui\";\n\nexport const RiskRateWidget = () => {\n const state = useRiskRateScript();\n return (<RiskRate {...state} />);\n};\n","import { FC, useEffect, useRef } from \"react\";\nimport { Box, cn, Flex, Grid, TabPanel, Tabs, Text } from \"@orderly.network/ui\";\nimport { OrderBookAndTradesState } from \"./orderBookAndTrades.script\";\nimport { OrderBookWidget } from \"../../base/orderBook\";\nimport { LastTradesWidget } from \"../../base/lastTrades\";\n\nexport const OrderBookAndTrades: FC<OrderBookAndTradesState & {\n tabletMediaQuery: string;\n}> = (props) => {\n return (\n <div ref={props.containerRef} className=\"oui-h-full\">\n {(props.containerSize?.width || 0) >= 572 ? (\n <TwoColLayout {...props} />\n ) : (\n <TabLayout {...props} />\n )}\n </div>\n );\n};\n\nconst TwoColLayout: FC<OrderBookAndTradesState & {\n tabletMediaQuery: string;\n}> = (props) => {\n return (\n <Grid\n cols={2}\n width={\"100%\"}\n gap={3}\n className=\"oui-auto-rows-fr\"\n style={{\n height: props.containerSize?.height,\n }}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n // pl={3}\n pt={3}\n pb={3}\n r=\"2xl\"\n className=\"oui-bg-base-9\"\n >\n <Title title=\"Order book\" className=\"oui-pl-3 oui-text-sm\" />\n <OrderBookWidget\n symbol={props.symbol}\n tabletMediaQuery={props.tabletMediaQuery}\n height={\n props.containerSize\n ? props.containerSize.height - 29 - 24\n : undefined\n }\n />\n </Flex>\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n py={3}\n r=\"2xl\"\n className=\"oui-bg-base-9 oui-h-full\"\n >\n <Title title=\"Last trades\" className=\"oui-text-sm oui-px-3\"/>\n <LastTradesWidget\n symbol={props.symbol}\n style={{\n height: props.containerSize && props.containerSize.height - 29 - 24,\n }}\n classNames={{\n listHeader: \"oui-px-3\",\n list: \"oui-px-3\"\n }}\n />\n </Flex>\n </Grid>\n );\n};\nconst TabLayout: FC<OrderBookAndTradesState & {\n tabletMediaQuery: string;\n}> = (props) => {\n return (\n <Box\n // pl={3}\n pt={3}\n pb={3}\n pr={0}\n r=\"2xl\"\n className=\"oui-bg-base-9\"\n style={{\n maxHeight: props.containerSize?.height,\n }}\n >\n <Tabs\n value={props.tab}\n variant=\"contained\"\n onValueChange={(tab) => {\n props.setTab(tab as any);\n }}\n classNames={{\n tabsList: 'oui-pl-3',\n // tabsContent: props.tab === \"lastTrades\" ? 'oui-pl-3' : ''\n }}\n size=\"lg\"\n >\n <TabPanel value=\"orderBook\" title={\"Order book\"} >\n <OrderBookWidget\n symbol={props.symbol}\n tabletMediaQuery={props.tabletMediaQuery}\n height={\n props.containerSize\n ? props.containerSize.height - 29 - 18\n : undefined\n }\n />\n </TabPanel>\n <TabPanel value=\"lastTrades\" title={\"Last trades\"}>\n <LastTradesWidget\n symbol={props.symbol}\n style={{\n height: props.containerSize && props.containerSize.height - 29 - 18,\n }}\n classNames={{\n listHeader: \"oui-px-3\",\n list: \"oui-px-3\",\n\n }}\n />\n </TabPanel>\n </Tabs>\n </Box>\n );\n};\n\nconst Title = (props: { title: string; className?: string }) => {\n return (\n <Text size=\"base\" intensity={80} className={cn(\"oui-pb-[5px]\",props.className)}>\n {props.title}\n </Text>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\n\nexport const useOrderBookAndTradesScript = (symbol: string) => {\n const [containerSize, setContainerSize] = useState<\n | {\n width: number;\n height: number;\n }\n | undefined\n >(undefined);\n\n const [tab, setTab] = useState<\"orderBook\" | \"lastTrades\">(\"orderBook\");\n\n const containerRef = useRef<HTMLDivElement>();\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n const { width, height } = entry.contentRect;\n setContainerSize({\n width,\n height,\n });\n }\n });\n\n const targetDiv = containerRef.current;\n\n if (targetDiv) {\n resizeObserver.observe(targetDiv);\n }\n\n return () => {\n if (targetDiv) {\n resizeObserver.unobserve(targetDiv);\n }\n };\n }, []);\n\n return {\n symbol,\n containerSize,\n containerRef: containerRef as any,\n tab,setTab,\n };\n};\n\nexport type OrderBookAndTradesState = ReturnType<\n typeof useOrderBookAndTradesScript\n>;\n","import { useOrderBookAndTradesScript } from \"./orderBookAndTrades.script\";\nimport { OrderBookAndTrades } from \"./orderBookAndTrades.ui\";\n\nexport const OrderBookAndTradesWidget = (props: {\n symbol: string;\n tabletMediaQuery: string;\n}) => {\n const state = useOrderBookAndTradesScript(props.symbol);\n return (<OrderBookAndTrades tabletMediaQuery={props.tabletMediaQuery} {...state} />);\n};\n","import React, { PropsWithChildren } from \"react\";\nimport Split, { SplitProps } from \"@uiw/react-split\";\nimport { SplitLineBar } from \"./splitLineBar\";\n\ntype SplitLayoutProps = PropsWithChildren<SplitProps> & {\n onSizeChange?: (size: string) => void;\n};\n\nexport const SplitLayout: React.FC<SplitLayoutProps> = (props) => {\n const { onSizeChange, ...rest } = props;\n\n return (\n /* @ts-ignore */\n <Split\n {...rest}\n lineBar\n renderBar={(barProps: any) => (\n <SplitLineBar {...barProps} mode={props.mode} />\n )}\n onDragEnd={(_, width, num) => {\n // console.log(\"onDragEnd\", width);\n onSizeChange?.(`${width}`);\n }}\n />\n );\n};\n","import React, { HTMLAttributes } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\nimport { SplitProps } from \"@uiw/react-split\";\n\nexport type SplitLineBarProps = Pick<SplitProps, \"mode\"> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const SplitLineBar: React.FC<SplitLineBarProps> = (props) => {\n const { onMouseDown, mode = \"horizontal\", ...rest } = props;\n return (\n <div\n {...rest}\n className={cn(\n props.className,\n \"!oui-transition-none\",\n \"!oui-shadow-none !oui-bg-transparent\",\n \"hover:!oui-bg-primary-light hover:!oui-shadow-[0px_0px_4px_0px] hover:!oui-shadow-primary-light/80\",\n \"active:!oui-bg-primary-light active:!oui-shadow-[0px_0px_4px_0px] active:!oui-shadow-primary-light/80\",\n \"focus:!oui-bg-primary-light focus:!oui-shadow-[0px_0px_4px_0px] focus:!oui-shadow-primary-light/80\",\n mode === \"horizontal\"\n ? \"!oui-w-[2px] !oui-min-w-[2px] !oui-mx-1\"\n : \"!oui-h-[2px] !oui-min-h-[2px] !oui-my-1\"\n )}\n >\n <div\n onMouseDown={onMouseDown}\n className={cn(\n \"!oui-transition-none\",\n mode === \"horizontal\" ? \"after:!oui-w-[2px]\" : \"after:!oui-h-[2px]\",\n \"after:!oui-bg-transparent after:!oui-shadow-transparent\"\n )}\n />\n </div>\n );\n};\n","import { FC } from \"react\";\nimport {\n Box,\n Button,\n ChainIcon,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { BottomNavBarState } from \"./bottomNavBar.script\";\nimport { ChainWidget } from \"./chain\";\nimport { AccountWidget } from \"./account\";\nimport { BalanceWidget } from \"./balance\";\n\nexport const BottomNavBar: FC<BottomNavBarState> = (props) => {\n return (\n <Flex\n // height={64}\n gap={1}\n justify={\"between\"}\n itemAlign={\"start\"}\n className=\"oui-bg-base-9 oui-px-[14px] oui-pt-[7px] oui-border-t oui-border-line-4\"\n style={{\n height: \"calc(64px + env(safe-area-inset-bottom))\"\n }}\n >\n <BalanceWidget />\n\n <Flex gap={2}>\n {!props.wrongNetwork && <ChainWidget />}\n <AccountWidget />\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Box, ChainIcon, Flex, modal, Text, toast } from \"@orderly.network/ui\";\nimport { ChainState } from \"./chain.script\";\nimport { ChainSelectorSheetId } from \"@orderly.network/ui-chain-selector\";\n\nexport const Chain: FC<ChainState> = (props) => {\n return (\n <button\n onClick={(e) => {\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorSheetId, {\n // networkId: props.networkId,\n bridgeLessOnly:false,\n isWrongNetwork: props.isWrongNetwork,\n })\n .then(\n (r: any) => {\n if (r?.chainId) {\n props.setChainId(r?.chainId);\n }\n toast.success(\"Network switched\");\n },\n (error) => console.log(\"[switchChain error]\", error)\n );\n }}\n >\n <Box className=\"oui-relative oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px] oui-bg-base-5 oui-px-2 oui-h-7 oui-flex oui-items-center\">\n {/* {props.isTestnetChain ? (\n <Text size=\"2xs\" intensity={80}>\n Testnet\n </Text>\n ) : (\n <ChainIcon chainId={props.chainId ?? '1'} size=\"2xs\" />\n )} */}\n <ChainIcon chainId={props.chainId ?? props.defaultChainId} size=\"2xs\" />\n <div className=\"oui-absolute oui-right-0 oui-bottom-0\">\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 9 9\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M9 6V0L0 9h6a3 3 0 0 0 3-3\" fill=\"url(#a)\" />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"9\"\n y1=\"4.5\"\n x2=\"0\"\n y2=\"4.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </Box>\n </button>\n );\n};\n","import { useAccount, useConfig, useWalletConnector } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nexport const useChainScript = () => {\n const { account } = useAccount();\n const config= useConfig();\n const [chainId, setChainId] = useState<string |number | undefined>(account.chainId);\n\n useEffect(() => {\n setChainId(account.chainId);\n }, [account.chainId]);\n\n const isTestnetChain = useMemo(() => {\n if (chainId) {\n return isTestnet(Number(chainId));\n }\n return undefined;\n }, [chainId]);\n const { wrongNetwork } = useAppContext();\n const networkId = config.get(\"networkId\");\n const defaultChainId = useMemo(() => {\n\n if (networkId === 'testnet') {\n\n return 421614;\n }\n return 42161;\n\n }, []);\n \n return {\n defaultChainId,\n chainId,\n setChainId,\n isTestnetChain,\n networkId,\n isWrongNetwork: wrongNetwork,\n };\n};\n\nexport type ChainState = ReturnType<typeof useChainScript>;\n","import { useChainScript } from \"./chain.script\";\nimport { Chain } from \"./chain.ui\";\n\nexport const ChainWidget = () => {\n const state = useChainScript();\n return (<Chain {...state} />);\n};\n","import { FC } from \"react\";\nimport { Box, Button, Flex, formatAddress, Text } from \"@orderly.network/ui\";\nimport { AccountState } from \"./account.script\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\n\nexport const Account: FC<AccountState> = (props) => {\n return (\n <AuthGuard buttonProps={{\n size: \"sm\"\n }}>\n <Button variant=\"gradient\" size={\"sm\"} className=\"oui-max-w-[83px]\" onClick={(e) => {\n props.onShowAccountSheet();\n }}>\n {formatAddress(props.address!, [4, 4])}\n </Button>\n </AuthGuard>\n );\n};\n","import { modal } from \"@orderly.network/ui\";\nimport { AccountSheetWidget } from \"../../accountSheet\";\nimport { useTradingPageContext } from \"../../../../provider/context\";\nimport { useAccount } from \"@orderly.network/hooks\";\n\nexport const useAccountScript = () => {\n const { referral, tradingRewards, bottomSheetLeading } =\n useTradingPageContext();\nconst { account } = useAccount();\n\n const onShowAccountSheet = () => {\n modal.sheet({\n title: \"Account\",\n leading: bottomSheetLeading,\n content: <AccountSheetWidget {...referral} {...tradingRewards} />,\n });\n };\n return {\n onShowAccountSheet,\n address: account.address,\n };\n};\n\nexport type AccountState = ReturnType<typeof useAccountScript>;\n","import { FC } from \"react\";\nimport { ArrowRightShortIcon, Button, Flex, Text } from \"@orderly.network/ui\";\nimport { AccountSheetState } from \"./accountSheet.script\";\nimport { CopyIcon, HeadIcon, OrderlyIcon, USDCIcon } from \"./icons\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const AccountSheet: FC<AccountSheetState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={4}>\n <AccountInfo {...props} />\n <ReferralInfo {...props} />\n <TradingRewardsInfo {...props} />\n <Flex gap={3} width={\"100%\"} justify={\"center\"}>\n {props.showGetTestUSDC && (\n <Button\n variant=\"outlined\"\n // color=\"primary\"\n size=\"md\"\n onClick={props.onGetTestUSDC}\n fullWidth\n loading={props.gettingTestUSDC}\n className=\"oui-border-primary-light oui-text-primary-light\"\n >\n Get test USDC\n </Button>\n )}\n <Button\n variant=\"outlined\"\n color=\"danger\"\n size=\"md\"\n onClick={props.onDisconnect}\n className={props.showGetTestUSDC ? \"oui-w-full\" : \"oui-w-[50%]\"}\n >\n Disconnect\n </Button>\n </Flex>\n </Flex>\n );\n};\nexport const AccountInfo: FC<AccountSheetState> = (props) => {\n return (\n <Flex width={\"100%\"} justify={\"between\"}>\n <Flex gap={3}>\n <HeadIcon />\n <Flex\n direction={\"column\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n className=\"oui-gap-[2px]\"\n >\n <Text.formatted rule={\"address\"}>{props.address}</Text.formatted>\n <Text.formatted\n size=\"2xs\"\n intensity={80}\n // @ts-ignore\n prefix={\n <div className=\"oui-h-1 oui-w-1 oui-rounded-full oui-bg-success oui-pr-1\" />\n }\n >\n {props.chainName}\n </Text.formatted>\n </Flex>\n </Flex>\n <button\n className=\"oui-cursor-pointer\"\n onClick={() => {\n props.onCopyAddress();\n }}\n >\n <CopyIcon />\n </button>\n </Flex>\n );\n};\n\nexport const ReferralInfo: FC<AccountSheetState> = (props) => {\n return (\n <Flex\n direction={\"column\"}\n gap={3}\n r=\"lg\"\n p={3}\n className=\"oui-bg-base-6\"\n width={\"100%\"}\n >\n <button\n onClick={props.onClickReferral}\n className=\"oui-cursor-pointer oui-w-full\"\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text size=\"2xs\">Referral</Text>\n <ArrowRightShortIcon color=\"white\" opacity={0.98} size={16} />\n </Flex>\n </button>\n {props.isAffiliate && (\n <Flex\n gradient=\"primary\"\n p={4}\n r=\"lg\"\n width={\"100%\"}\n angle={180}\n justify={\"between\"}\n >\n <Flex direction={\"column\"} itemAlign={\"start\"}>\n <Text size=\"xs\">Affiliate</Text>\n <Text size=\"2xs\" intensity={54}>\n (30d commission)\n </Text>\n </Flex>\n <Flex className=\"oui-gap-[6px]\">\n <USDCIcon />\n <Text.numeral\n dp={2}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n rule=\"price\"\n >\n {props.affiliateCommission30D ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Flex>\n )}\n {props.isTrader && (\n <Flex\n gradient=\"success\"\n p={4}\n r=\"lg\"\n width={\"100%\"}\n angle={180}\n justify={\"between\"}\n >\n <Flex direction={\"column\"} itemAlign={\"start\"}>\n <Text size=\"xs\">Trader</Text>\n <Text size=\"2xs\" intensity={54}>\n (30d commission)\n </Text>\n </Flex>\n <Flex className=\"oui-gap-[6px]\">\n <USDCIcon />\n <Text.numeral\n dp={2}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n rule=\"price\"\n >\n {props.traderCommission30D ?? \"--\"}\n </Text.numeral>\n </Flex>\n </Flex>\n )}\n </Flex>\n );\n};\n\nexport const TradingRewardsInfo: FC<AccountSheetState> = (props) => {\n return (\n <Flex\n direction={\"column\"}\n gap={3}\n r=\"lg\"\n p={3}\n className=\"oui-bg-base-6\"\n width={\"100%\"}\n >\n <button\n onClick={props.onClickTradingRewards}\n className=\"oui-cursor-pointer oui-w-full\"\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <span className=\"oui-text-2xs\">\n Trading rewards\n <Text intensity={54}>{\" (epoch \"}</Text>\n {props.curEpochId}\n <Text intensity={54}>{\" )\"}</Text>\n </span>\n <ArrowRightShortIcon color=\"white\" opacity={0.98} size={16}/>\n </Flex>\n </button>\n <Flex\n p={4}\n r=\"lg\"\n width={\"100%\"}\n angle={180}\n justify={\"between\"}\n className=\"oui-bg-gradient-to-t oui-from-[#2d0061] oui-to-[#bd6bed]\"\n >\n <Text size=\"2xs\" intensity={80}>\n My est. rewards\n </Text>\n\n <Flex className=\"oui-gap-[6px]\">\n <OrderlyIcon />\n <Text.numeral\n dp={2}\n padding={false}\n rm={Decimal.ROUND_DOWN}\n rule=\"price\"\n >\n {props.estRewards}\n </Text.numeral>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","export const HeadIcon = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-rounded-full\"\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"m31.002 14.493-8.326-22.51L.166.31l8.327 22.51z\"\n fill=\"#03435D\"\n />\n <path\n d=\"m4.456-8.716-18.03 15.84 15.84 18.03 18.03-15.84z\"\n fill=\"#157CF2\"\n />\n <path\n d=\"m17.548 38.67 22.825-7.416-7.416-22.825-22.826 7.416z\"\n fill=\"#F3E200\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#fff\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport const CopyIcon = () => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.832 2.492A3.333 3.333 0 0 0 2.5 5.826v5a3.333 3.333 0 0 0 3.333 3.333 3.333 3.333 0 0 0 3.334 3.333h5a3.333 3.333 0 0 0 3.333-3.333v-5a3.333 3.333 0 0 0-3.333-3.333 3.333 3.333 0 0 0-3.334-3.334zm8.334 5c.92 0 1.666.746 1.666 1.667v5c0 .92-.746 1.666-1.666 1.666h-5c-.92 0-1.667-.745-1.667-1.666h3.333a3.333 3.333 0 0 0 3.334-3.334z\"\n fill=\"#608CFF\"\n />\n </svg>\n );\n};\n\nexport const USDCIcon = (props: { size?: number }) => {\n const { size = 20 } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M10 20c5.542 0 10-4.458 10-10S15.542 0 10 0 0 4.458 0 10s4.458 10 10 10\"\n fill=\"#2775CA\"\n />\n <path\n d=\"M13 11.473c0-1.452-.94-1.95-2.82-2.158-1.344-.166-1.613-.498-1.613-1.078s.448-.955 1.343-.955c.806 0 1.254.25 1.478.872.045.124.18.207.313.207h.717c.179 0 .313-.125.313-.29v-.042c-.179-.913-.985-1.618-2.015-1.701v-.996c0-.166-.134-.29-.358-.332h-.671c-.18 0-.314.124-.359.332v.954c-1.343.166-2.194.996-2.194 2.034 0 1.369.896 1.908 2.776 2.116 1.254.207 1.657.456 1.657 1.12s-.627 1.12-1.477 1.12c-1.165 0-1.568-.456-1.702-1.078a.32.32 0 0 0-.313-.25h-.762c-.179 0-.313.125-.313.291v.042c.179 1.037.895 1.784 2.373 1.991v.996c0 .166.134.29.358.332h.672c.18 0 .313-.124.358-.332v-.996C12.105 13.465 13 12.593 13 11.473\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n d=\"M7.74 16.57c-3.458-1.215-5.23-4.986-3.945-8.324.665-1.821 2.127-3.208 3.944-3.859.178-.086.266-.216.266-.433v-.607c0-.174-.088-.304-.266-.347-.044 0-.133 0-.177.043-4.21 1.3-6.516 5.68-5.186 9.798.798 2.428 2.704 4.292 5.186 5.072.177.087.355 0 .399-.173.044-.043.044-.087.044-.173v-.608c0-.13-.133-.303-.266-.39m4.698-13.527c-.178-.086-.355 0-.4.174-.043.043-.043.086-.043.173v.607c0 .174.133.347.266.434 3.457 1.213 5.23 4.985 3.944 8.323-.664 1.821-2.127 3.209-3.944 3.859-.178.086-.266.216-.266.433v.607c0 .174.088.304.266.347.044 0 .133 0 .177-.043 4.21-1.3 6.515-5.68 5.186-9.798-.798-2.471-2.748-4.335-5.186-5.116\"\n fill=\"#fff\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport const OrderlyIcon = (props: { size?: number }) => {\n const { size = 20 } = props;\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_6403_64483)\">\n <path\n d=\"M10.0245 19.9493C15.5198 19.9493 19.9747 15.4944 19.9747 9.99908C19.9747 4.50371 15.5198 0.0488281 10.0245 0.0488281C4.5291 0.0488281 0.0742188 4.50371 0.0742188 9.99908C0.0742188 15.4944 4.5291 19.9493 10.0245 19.9493Z\"\n fill=\"url(#paint0_linear_6403_64483)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M14.1553 4.89304C14.2199 4.94541 14.1821 5.04758 14.0989 5.04758H5.95035C5.86716 5.04758 5.82936 4.94541 5.894 4.89304C7.0223 3.97912 8.45953 3.43164 10.0246 3.43164C11.5898 3.43164 13.0269 3.97912 14.1553 4.89304Z\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.47013 11.7869C7.42315 11.7199 7.34748 11.6777 7.26565 11.6777H3.82985C3.75113 11.6777 3.69375 11.7525 3.71563 11.8281C4.5078 14.565 7.0326 16.566 10.0247 16.566C13.017 16.566 15.5417 14.565 16.3339 11.8281C16.3558 11.7525 16.2984 11.6777 16.2197 11.6777H12.7839C12.702 11.6777 12.6264 11.7199 12.5795 11.7869C12.0155 12.5911 11.0815 13.1167 10.0248 13.1167C8.96803 13.1167 8.03406 12.5911 7.47013 11.7869Z\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.3347 7.90519C12.3822 7.95756 12.449 7.9891 12.5196 7.9891H16.1137C16.1952 7.9891 16.253 7.90983 16.2261 7.83301C15.9724 7.10689 15.5948 6.43893 15.1187 5.85447C15.074 5.79961 15.0067 5.76855 14.9358 5.76855H5.11323C5.04247 5.76855 4.97512 5.79961 4.93044 5.85447C4.45429 6.43893 4.0767 7.10689 3.82306 7.83301C3.79622 7.90983 3.85398 7.9891 3.93536 7.9891H7.52952C7.60022 7.9891 7.66694 7.95756 7.71445 7.90519C8.28491 7.2763 9.10861 6.88136 10.0246 6.88136C10.9405 6.88136 11.7643 7.2763 12.3347 7.90519Z\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1164 10.9586C13.0553 10.9586 13.0118 10.899 13.0284 10.8401C13.1033 10.5722 13.1433 10.2898 13.1433 9.9981C13.1433 9.58758 13.064 9.19556 12.9199 8.83657C12.8954 8.77581 12.9392 8.70801 13.0046 8.70801H16.392C16.4349 8.70801 16.472 8.73831 16.4799 8.78052C16.5538 9.17511 16.5925 9.58216 16.5925 9.9982C16.5925 10.2978 16.5724 10.5926 16.5337 10.8815C16.5277 10.9258 16.4897 10.9586 16.4451 10.9586H13.1164ZM7.02223 10.8401C7.03868 10.899 6.99532 10.9586 6.93421 10.9586H3.60551C3.56084 10.9586 3.52285 10.9258 3.5169 10.8815C3.47807 10.5926 3.45801 10.2978 3.45801 9.9982C3.45801 9.58216 3.4967 9.17511 3.57069 8.78052C3.57859 8.73831 3.61563 8.70801 3.65856 8.70801H7.04593C7.11141 8.70801 7.15516 8.77581 7.13076 8.83657C6.98657 9.19556 6.90722 9.58758 6.90722 9.9981C6.90722 10.2898 6.94728 10.5722 7.02223 10.8401Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_6403_64483\"\n x1=\"10.0245\"\n y1=\"0.0488561\"\n x2=\"10.0245\"\n y2=\"19.9493\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#C750FF\" />\n <stop offset=\"1\" stop-color=\"#5800E8\" />\n </linearGradient>\n <clipPath id=\"clip0_6403_64483\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import {\n TWType,\n useAccount,\n useChain,\n useChains,\n useConfig,\n useCurEpochEstimate,\n useEpochInfo,\n useMutation,\n useReferralInfo,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { AccountStatusEnum, ChainNamespace } from \"@orderly.network/types\";\nimport { modal, toast, useModal } from \"@orderly.network/ui\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { useMemo } from \"react\";\nimport { ReferralPropsV2, TradingRewardsProps } from \"../../../types/types\";\n\nexport const useAccountSheetScript = (\n props: ReferralPropsV2 & TradingRewardsProps\n) => {\n const { account, state } = useAccount();\n const accountId = account.accountId;\n const address = account.address;\n const chainId = account.chainId;\n const { hide } = useModal();\n\n const config = useConfig();\n\n const { connectedChain, disconnect, namespace } = useWalletConnector();\n const showGetTestUSDC = useMemo(() => {\n const chainId = connectedChain?.id;\n if (chainId === undefined) {\n return false;\n }\n\n return (\n state.status === AccountStatusEnum.EnableTrading &&\n // @ts-ignore\n isTestnet(parseInt(chainId))\n );\n }, [state.status, connectedChain]);\n\n\n const chainName = useGetChains();\n\n const operatorUrl = config.get<string>(\"operatorUrl\");\n\n const onCopyAddress = () => {\n navigator.clipboard.writeText(address ?? \"\");\n toast.success(\"Copy success\");\n };\n\n const {\n affiliateCommission30D,\n traderCommission30D,\n isAffiliate,\n isTrader,\n onClickReferral,\n } = useReferral(props.onClickReferral);\n\n const { curEpochId, estRewards, onClickTradingRewards } = useTradingRewards(\n props.onClickTradingRewards\n );\n\n const onDisconnect = async () => {\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n hide();\n };\n const [getTestUSDC, { isMutating: gettingTestUSDC }] = useMutation(\n `${operatorUrl}/v1/faucet/usdc`\n );\n const onGetTestUSDC = () => {\n if (state.status < AccountStatusEnum.EnableTrading) {\n // return modal.show(WalletConnectSheet, {\n // status: state.status,\n // });\n return;\n }\n\n const message = `${\n namespace === ChainNamespace.solana ? \"100\" : \"1,000\"\n } USDC will be added to your balance. Please note this may take up to 3 minutes. Please check back later.`;\n\n return getTestUSDC({\n chain_id: account.walletAdapter?.chainId.toString(),\n user_address: state.address,\n broker_id: config.get(\"brokerId\"),\n }).then(\n (res: any) => {\n if (res.success) {\n return modal.alert({\n title: \"Get test USDC\",\n message,\n onOk: () => {\n return Promise.resolve(true);\n },\n });\n }\n res.message && toast.error(res.message);\n // return Promise.reject(res);\n },\n (error: Error) => {\n toast.error(error.message);\n }\n );\n };\n return {\n accountId,\n address,\n chainId,\n chainName,\n onCopyAddress,\n\n affiliateCommission30D,\n onClickReferral,\n isAffiliate,\n isTrader,\n traderCommission30D,\n\n curEpochId,\n onClickTradingRewards,\n estRewards,\n\n onDisconnect,\n showGetTestUSDC,\n onGetTestUSDC,\n gettingTestUSDC,\n };\n};\n\nconst useReferral = (_onClickReferral?: () => void) => {\n const { data, isLoading, isAffiliate, isTrader } = useReferralInfo();\n const affiliateCommission30D = useMemo(() => {\n if (isAffiliate) {\n return data?.referrer_info[\"30d_referrer_rebate\"];\n }\n return undefined;\n }, [data]);\n const traderCommission30D = useMemo(() => {\n if (isTrader) {\n return data?.referee_info[\"30d_referee_rebate\"];\n }\n return undefined;\n }, [data]);\n\n const onClickReferral = () => {\n _onClickReferral?.();\n };\n\n return {\n onClickReferral,\n affiliateCommission30D,\n traderCommission30D,\n isAffiliate,\n isTrader,\n\n // WARNING: test data\n // affiliateCommission30D: 1234.43,\n // traderCommission30D:44343.33,\n // isAffiliate: true,\n // isTrader: true,\n };\n};\n\nconst useTradingRewards = (_onClick?: () => void) => {\n const [curEpochEstimate] = useCurEpochEstimate(TWType.normal);\n const [list, curEpoch] = useEpochInfo(TWType.normal);\n const curEpochId = useMemo(() => {\n return curEpoch.curEpochInfo?.epoch_id ?? \"--\";\n }, [curEpoch]);\n\n const estRewards = useMemo(() => {\n if (typeof curEpochEstimate?.est_r_wallet === \"undefined\") {\n return \"--\";\n }\n return curEpochEstimate?.est_r_wallet;\n }, [curEpochEstimate]);\n\n const onClickTradingRewards = () => {\n _onClick?.();\n };\n\n return {\n curEpochId,\n estRewards,\n onClickTradingRewards,\n };\n};\n\nexport function useGetChains() {\n const { connectedChain } = useWalletConnector();\n\n const [mainChains, { findByChainId }] = useChains(\"mainnet\", {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const chainName = useMemo(() => {\n // @ts-ignore\n const chain = findByChainId(parseInt(connectedChain?.id!), \"network_infos\");\n\n if (!chain) {\n return \"Unknown\";\n }\n // // @ts-ignore\n // if (isTestnet(chain.chain_id)) {\n // return \"Testnet\";\n // }\n // @ts-ignore\n return chain.name;\n }, [connectedChain, findByChainId]);\n\n return chainName;\n}\n\n\nexport type AccountSheetState = ReturnType<typeof useAccountSheetScript>;\n","import { ReferralPropsV2, TradingRewardsProps } from \"../../../types/types\";\nimport { useAccountSheetScript } from \"./accountSheet.script\";\nimport { AccountSheet } from \"./accountSheet.ui\";\n\nexport const AccountSheetWidget = (props: ReferralPropsV2 & TradingRewardsProps) => {\n const state = useAccountSheetScript(props);\n return (<AccountSheet {...state} />);\n};\n","import { useAccountScript } from \"./account.script\";\nimport { Account } from \"./account.ui\";\n\nexport const AccountWidget = () => {\n const state = useAccountScript();\n return (<Account {...state} />);\n};\n","import { FC } from \"react\";\nimport {\n Button,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\nimport { BalanceState } from \"./balance.script\";\nimport { commifyOptional } from \"@orderly.network/utils\";\n\nexport const Balance: FC<BalanceState> = (props) => {\n return (\n <Flex gap={3}>\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-text-[11px] oui-cursor-pointer\"\n onClick={(e) => {\n props.onShowPortfolioSheet();\n }}\n >\n <Flex>\n <Text intensity={54}>Total value</Text>\n <button\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n props.setHideAssets(!props.hideAssets);\n }}\n className=\"oui-px-1\"\n >\n {props.hideAssets ? (\n <EyeIcon\n color=\"primary\"\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n ) : (\n <EyeCloseIcon\n color=\"primary\"\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n )}\n </button>\n <MaybeEqual />\n </Flex>\n <Text.numeral\n suffix={<Text intensity={20}>&nbsp;USDC</Text>}\n dp={2}\n visible={!props.hideAssets}\n >\n {props.isEnableTrading ? props.total ?? \"--\" : \"--\"}\n </Text.numeral>\n </Flex>\n {!props.wrongNetwork && props.isEnableTrading && (\n <Divider direction=\"vertical\" className=\"oui-h-[26px]\" />\n )}\n {!props.wrongNetwork && props.isEnableTrading && (\n <Button\n variant={\"outlined\"}\n onClick={(e) => {\n props.onShowPortfolioSheet();\n }}\n className=\"oui-h-[28px] oui-text-2xs oui-text-primary-light oui-border-primary-light\"\n >\n {commifyOptional(props.currentLeverage, { fix: 2 }) + \"x\"}\n </Button>\n )}\n </Flex>\n );\n};\n\nconst MaybeEqual = () => {\n return (\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.456 3.48a3.5 3.5 0 0 0 .431-.567 9 9 0 0 0 .361-.654l-.648-.66-.107.185q-.071.12-.142.244a3 3 0 0 1-.27.396 1.4 1.4 0 0 1-.318.29.67.67 0 0 1-.38.114q-.307 0-.666-.194t-.742-.42q-.383-.227-.777-.42a1.7 1.7 0 0 0-.771-.194q-.401.001-.72.154a2.1 2.1 0 0 0-.57.404 2.6 2.6 0 0 0-.43.574 5 5 0 0 0-.307.646l.649.66q.165-.437.464-.833.298-.395.742-.396.347 0 .7.194.354.193.721.42.37.227.763.42.396.195.826.195.374.001.665-.155.29-.151.526-.404m.352 2.941a3.5 3.5 0 0 0 .431-.566q.196-.315.361-.654l-.648-.66-.107.184-.142.244a3 3 0 0 1-.27.396 1.4 1.4 0 0 1-.318.29.67.67 0 0 1-.38.115q-.307 0-.666-.195-.36-.193-.742-.42-.383-.226-.778-.42a1.7 1.7 0 0 0-.77-.194q-.401.001-.72.154a2.1 2.1 0 0 0-.57.405 2.6 2.6 0 0 0-.43.574 5 5 0 0 0-.307.646l.649.66q.165-.437.464-.833.297-.395.742-.396.347 0 .7.194.354.193.721.42.369.226.763.42.396.194.826.194.374.001.665-.154.29-.152.526-.404\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n );\n};\n","import { modal } from \"@orderly.network/ui\";\nimport { useTradingLocalStorage } from \"../../../../provider/useTradingLocalStorage\";\nimport { PortfolioSheetWidget } from \"../../portfolioSheet\";\nimport { useTradingPageContext } from \"../../../../provider/context\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport { useAccount, useCollateral, useMarginRatio } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\nexport const useBalanceScript = () => {\n const { bottomSheetLeading } =\n useTradingPageContext();\n\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n const { wrongNetwork } = useAppContext();\n const { state } = useAccount();\n\n const { currentLeverage } = useMarginRatio();\n const { totalValue } = useCollateral();\n const isEnableTrading = state.status >= AccountStatusEnum.EnableTrading;\n\n const onShowPortfolioSheet = () => {\n if (isEnableTrading) {\n modal.sheet({\n title: \"Asset & Margin\",\n leading: bottomSheetLeading,\n content: <PortfolioSheetWidget />,\n });\n }\n };\n const total = useDataTap(totalValue);\n \n return {\n currentLeverage,\n total,\n hideAssets, setHideAssets,\n onShowPortfolioSheet,\n wrongNetwork,\n isEnableTrading,\n };\n};\n\nexport type BalanceState = ReturnType<typeof useBalanceScript>;\n","import { FC, useCallback } from \"react\";\nimport {\n ArrowDownShortIcon,\n ArrowUpShortIcon,\n Button,\n cn,\n Divider,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Grid,\n modal,\n RefreshIcon,\n Slider,\n Statistic,\n Text,\n} from \"@orderly.network/ui\";\nimport {\n getMarginRatioColor,\n PortfolioSheetState,\n} from \"./portfolioSheet.script\";\nimport { USDCIcon } from \"../accountSheet/icons\";\nimport { RiskIndicator } from \"./riskIndicator\";\n\nexport const PortfolioSheet: FC<PortfolioSheetState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={4} width={\"100%\"}>\n <Asset {...props} />\n <Divider className=\"oui-w-full\" />\n <MarginRatio {...props} />\n <Leverage {...props} />\n {/* <Divider className=\"oui-w-full\" /> */}\n {/* <AvailableBalance {...props} /> */}\n <Buttons {...props} />\n </Flex>\n );\n};\n\nconst Asset: FC<PortfolioSheetState> = (props) => {\n const onUnsettleClick = useCallback(() => {\n return modal.confirm({\n title: \"Settle PnL\",\n // maxWidth: \"xs\",\n content: (\n <Text intensity={54} size=\"xs\">\n Are you sure you want to settle your PnL? Settlement will take up to 1\n minute before you can withdraw your available balance.\n </Text>\n ),\n onCancel: () => {\n return Promise.reject();\n },\n onOk: () => {\n if (typeof props.onSettlePnL !== \"function\") return Promise.resolve();\n return props.onSettlePnL().catch((e) => {});\n },\n });\n }, []);\n\n const clsName =\n props.totalUnrealizedROI > 0\n ? \"oui-text-success-darken\"\n : \"oui-text-danger-darken\";\n\n return (\n <Flex direction={\"column\"} gap={3} width={\"100%\"}>\n <Flex direction={\"column\"} itemAlign={\"start\"} width={\"100%\"}>\n <Text.formatted\n size=\"2xs\"\n intensity={36}\n suffix={\n props.hideAssets ? (\n <EyeIcon\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n ) : (\n <EyeCloseIcon\n opacity={1}\n size={16}\n className=\"oui-text-primary-light\"\n />\n )\n }\n onClick={(e) => {\n props.toggleHideAssets();\n }}\n className=\"oui-cursor-pointer\"\n >\n Total value (USDC)\n </Text.formatted>\n <Text.numeral\n size=\"base\"\n // coloring\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.totalValue ?? '--'}\n </Text.numeral>\n </Flex>\n <Grid cols={2} rows={1} width={\"100%\"}>\n <Statistic\n label=\"Unreal. PnL (USDC)\"\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex gap={1}>\n <Text.numeral\n size=\"xs\"\n coloring\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.aggregated.unrealPnL}\n </Text.numeral>\n {!props.hideAssets && (\n <Text.numeral\n size=\"xs\"\n dp={2}\n padding={false}\n rule=\"percentages\"\n prefix={\"(\"}\n suffix={\")\"}\n className={clsName}\n >\n {props.totalUnrealizedROI}\n </Text.numeral>\n )}\n </Flex>\n </Statistic>\n <Statistic\n label=\"Unsettled PnL (USDC)\"\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text.numeral\n size=\"xs\"\n coloring\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.aggregated.unsettledPnL}\n </Text.numeral>\n <button\n className=\"oui-flex oui-gap-1 oui-items-center\"\n onClick={onUnsettleClick}\n >\n <RefreshIcon\n opacity={1}\n size={12}\n className=\"oui-text-primary-light\"\n />\n <Text size=\"2xs\" color=\"primaryLight\">\n Settle PnL\n </Text>\n </button>\n </Flex>\n </Statistic>\n </Grid>\n </Flex>\n );\n};\nconst MarginRatio: FC<PortfolioSheetState> = (props) => {\n const { high, mid, low } = getMarginRatioColor(\n props.marginRatioVal,\n props.mmr\n );\n\n return (\n <Grid cols={2} rows={1} width={\"100%\"}>\n <Statistic\n label=\"Margin Ratio\"\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex gap={2}>\n <Text.numeral\n size=\"xs\"\n rule=\"percentages\"\n color=\"primaryLight\"\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.marginRatioVal}\n </Text.numeral>\n {!props.hideAssets && (\n <RiskIndicator\n className={\n low\n ? \"oui-rotate-0\"\n : mid\n ? \"oui-rotate-90\"\n : high\n ? \"oui-rotate-180\"\n : \"\"\n }\n />\n )}\n </Flex>\n </Statistic>\n <Statistic\n label=\"Free / Total Collateral (USDC)\"\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-36\",\n }}\n >\n <Flex justify={\"start\"} width={\"100%\"} gap={1}>\n <Text.numeral\n size=\"xs\"\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.freeCollateral}\n </Text.numeral>\n <Text size=\"xs\">/</Text>\n <Text.numeral\n size=\"xs\"\n dp={2}\n padding={false}\n visible={!props.hideAssets}\n >\n {props.totalCollateral}\n </Text.numeral>\n </Flex>\n </Statistic>\n </Grid>\n );\n};\nconst Leverage: FC<PortfolioSheetState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={2} width={\"100%\"}>\n <Flex width={\"100%\"} justify={\"between\"}>\n <Text size=\"2xs\" intensity={54}>\n Max account leverage\n </Text>\n <Text.numeral\n size=\"2xs\"\n // @ts-ignore\n prefix={\n <Text size=\"2xs\" intensity={54}>\n {\"Current: \"}\n </Text>\n }\n suffix=\"x\"\n >\n {props.currentLeverage ?? '--'}\n </Text.numeral>\n </Flex>\n <Slider\n step={1}\n max={props.maxLeverage}\n min={1}\n // markLabelVisible={true}\n // marks={props.marks}\n markCount={5}\n value={[props.value]}\n onValueChange={(e) => {\n props.onLeverageChange(e[0]);\n props.setShowSliderTip(true);\n }}\n color=\"primaryLight\"\n onValueCommit={(e) => {\n props.onValueCommit(e);\n props.setShowSliderTip(false);\n }}\n showTip={props.showSliderTip}\n tipFormatter={(value, min, max, percent) => {\n return `${value+1}x`;\n }}\n />\n <Flex justify={\"between\"} width={\"100%\"}>\n {[1, 10, 20, 30, 40, 50].map((item, index) => {\n return (\n <button\n onClick={(e) => {\n props.onSaveLeverage(item);\n props.onLeverageChange(item);\n }}\n className={cn(\n \" oui-text-2xs oui-pb-3\",\n index === 0\n ? \"oui-pr-2\"\n : index === 5\n ? \"oui-pl-2\"\n : \"oui-px-2 oui-ml-2\",\n item - 1 >= 0 && \"oui-text-primary-light\"\n )}\n >\n {`${item}x`}\n </button>\n );\n })}\n </Flex>\n </Flex>\n );\n};\nconst AvailableBalance: FC<PortfolioSheetState> = (props) => {\n return (\n <Flex\n width={\"100%\"}\n justify={\"between\"}\n r=\"lg\"\n px={3}\n py={4}\n className=\"oui-bg-base-6\"\n >\n <Text size=\"2xs\" intensity={80}>\n Available Balance\n </Text>\n <Flex className=\"oui-gap-[6px]\">\n <USDCIcon size={24} />\n <Text.numeral dp={2} size=\"base\" visible={!props.hideAssets}>\n {props.availableBalance}\n </Text.numeral>\n </Flex>\n </Flex>\n );\n};\nconst Buttons: FC<PortfolioSheetState> = (props) => {\n return (\n <Grid\n cols={2}\n rows={1}\n gap={3}\n className=\"oui-grid-row-[1fr,1fr]\"\n width={\"100%\"}\n pt={2}\n pb={4}\n >\n <Button\n icon={<ArrowUpShortIcon color=\"white\" opacity={0.8} />}\n size=\"md\"\n fullWidth\n className=\"oui-bg-base-2 hover:oui-bg-base-2/50\"\n onClick={props.onWithdraw}\n >\n Withdraw\n </Button>\n <Button\n icon={<ArrowDownShortIcon color=\"white\" opacity={0.8} />}\n size=\"md\"\n fullWidth\n onClick={props.onDeposit}\n >\n Deposit\n </Button>\n </Grid>\n );\n};\n","import {\n useAccount,\n useCollateral,\n useLeverage,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { modal, SliderMarks, toast } from \"@orderly.network/ui\";\nimport { DepositAndWithdrawWithSheetId } from \"@orderly.network/ui-transfer\";\n\nexport const usePortfolioSheetScript = () => {\n const { account } = useAccount();\n const assets = useAssets();\n const marginRatio = useMarginRatioAndLeverage();\n const [showSliderTip, setShowSliderTip] = useState(false);\n const onSettlePnL = useCallback(async () => {\n return account\n .settle()\n .catch((e) => {\n if (e.code == -1104) {\n toast.error(\n \"Settlement is only allowed once every 10 minutes. Please try again later.\"\n );\n return Promise.reject(e);\n }\n if (e?.code === \"ACTION_REJECTED\") {\n toast.error(\"User rejected the request.\");\n return Promise.reject(e);\n }\n })\n .then((res) => {\n toast.success(\"Settlement requested\");\n return Promise.resolve(res);\n });\n }, [account]);\n const onDeposit = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"deposit\",\n });\n }, []);\n const onWithdraw = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, {\n activeTab: \"withdraw\",\n });\n }, []);\n \n\n return {\n ...assets,\n ...marginRatio,\n onSettlePnL,\n onDeposit,\n onWithdraw,\n showSliderTip, setShowSliderTip,\n };\n};\n\nconst useAssets = () => {\n const { hideAssets, setHideAssets } = useTradingLocalStorage();\n const toggleHideAssets = () => {\n setHideAssets(!hideAssets);\n };\n const { totalCollateral, freeCollateral, totalValue, availableBalance } =\n useCollateral({\n dp: 2,\n });\n return {\n hideAssets,\n toggleHideAssets,\n totalCollateral,\n freeCollateral,\n totalValue,\n availableBalance,\n };\n};\n\nconst useMarginRatioAndLeverage = () => {\n const [{ aggregated, totalUnrealizedROI }, positionsInfo] =\n usePositionStream();\n const { marginRatio, currentLeverage, mmr } = useMarginRatio();\n\n const marginRatioVal = useMemo(() => {\n return Math.min(\n 10,\n aggregated.notional === 0\n ? // @ts-ignore\n positionsInfo[\"margin_ratio\"](10)\n : marginRatio\n );\n }, [marginRatio, aggregated]);\n\n const [curLeverage, { update, config: leverageLevers, isMutating }] =\n useLeverage();\n\n const marks = useMemo((): SliderMarks => {\n return (\n leverageLevers?.map((e: number) => ({\n label: `${e}x`,\n value: e,\n })) || []\n );\n }, [leverageLevers]);\n\n const [leverage, setLeverage] = useState(curLeverage ?? 0);\n\n const maxLeverage = leverageLevers?.reduce((a: number, item: any) => Math.max(a, Number(item), 0))\n\n const step = 100 / ((marks?.length || 0) - 1);\n\n // const leverageValue = useMemo(() => {\n // const index = leverageLevers.findIndex((item: any) => item === leverage);\n\n // return index * step;\n // }, [leverageLevers, leverage, step]);\n\n const onLeverageChange = (leverage: number) => {\n // maxLeverage / 100 * leverage;\n setLeverage(leverage);\n // updateLeverage(leverage);\n };\n\n const onSave = async (leverage: number) => {\n try {\n update({ leverage }).then(\n (res: any) => {\n toast.success(\"Leverage updated\");\n },\n (err: Error) => {\n toast.error(err.message);\n }\n );\n } catch (e) {}\n };\n\n const onValueCommit = useCallback((value: number[]) => {\n onSave(value[0] + 1);\n }, []);\n\n return {\n aggregated,\n totalUnrealizedROI,\n positionsInfo,\n marginRatio,\n marginRatioVal,\n mmr,\n\n currentLeverage,\n step,\n marks,\n onLeverageChange,\n onValueCommit,\n value: leverage,\n maxLeverage,\n onSaveLeverage: onSave,\n };\n};\n\nexport function getMarginRatioColor(marginRatio: number, mmr: number | null) {\n if (mmr === null) {\n return { isRed: false, isYellow: false, isGreen: true };\n }\n const imr = mmr * 2;\n\n const high = marginRatio <= imr;\n const mid = marginRatio > imr && marginRatio < 1;\n const low = marginRatio >= 1;\n return { high, mid, low };\n}\n\nexport type PortfolioSheetState = ReturnType<typeof usePortfolioSheetScript>;\n","\nimport { cn } from \"@orderly.network/ui\";\nimport { FC } from \"react\";\n\ninterface RiskIndicatorProps {\n size?: number;\n className?: string;\n}\n\nexport const RiskIndicator: FC<RiskIndicatorProps> = (props) => {\n const { size = 20, className } = props;\n\n return (\n <div\n className=\"oui-flex oui-justify-center oui-items-end\"\n style={{\n background: \"url(/images/riskLevelBg.png)\",\n backgroundSize: \"contain\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center bottom\",\n width: `${size}px`,\n height: `14px`,\n }}\n >\n <div\n className={cn(\n \"oui-relative oui-w-[2px] oui-h-[2px] oui-rounded-full oui-bg-white after:oui-block after:oui-content-[''] after:oui-absolute after:oui-right-0 after:oui-w-[10px] after:oui-h-[2px] after:oui-bg-white/50\",\n className\n // {\n // \"oui-rotate-0\": value > 1,\n // \"oui-rotate-90\": value >= 0.05 && value <= 1,\n // \"oui-rotate-180\": value < 0.05,\n // }\n )}\n ></div>\n </div>\n );\n};\n","import { usePortfolioSheetScript } from \"./portfolioSheet.script\";\nimport { PortfolioSheet } from \"./portfolioSheet.ui\";\n\nexport const PortfolioSheetWidget = () => {\n const state = usePortfolioSheetScript();\n return (<PortfolioSheet {...state} />);\n};\n","import { useBalanceScript } from \"./balance.script\";\nimport { Balance } from \"./balance.ui\";\n\nexport const BalanceWidget = () => {\n const state = useBalanceScript();\n return (<Balance {...state} />);\n};\n","import { modal } from \"@orderly.network/ui\";\nimport { AccountSheetWidget } from \"../accountSheet\";\nimport { useTradingPageContext } from \"../../../provider/context\";\nimport { PortfolioSheetWidget } from \"../portfolioSheet\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { useMemo } from \"react\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const useBottomNavBarScript = () => {\n \n\n const { wrongNetwork } = useAppContext();\n return {\n wrongNetwork,\n };\n};\n\nexport type BottomNavBarState = ReturnType<typeof useBottomNavBarScript>;\n","import { useBottomNavBarScript } from \"./bottomNavBar.script\";\nimport { BottomNavBar } from \"./bottomNavBar.ui\";\n\nexport const BottomNavBarWidget = () => {\n const state = useBottomNavBarScript();\n return (<BottomNavBar {...state} />);\n};\n","import { FC } from \"react\";\nimport { Box, cn, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { TopTabState, TopTabType } from \"./topTab.script\";\nimport { MWebLastTrades } from \"../lastTrades/lastTrades.widget\";\nimport { TradeDataWidget } from \"../tradeData\";\nimport { TradingviewWidget } from \"@orderly.network/ui-tradingview\";\nimport { useTradingPageContext } from \"../../../provider/context\";\n\nexport const TopTab: FC<\n TopTabState & {\n className?: string;\n }\n> = (props) => {\n const { tradingViewConfig } = useTradingPageContext();\n\n return (\n <Tabs\n variant=\"contained\"\n value={props.tab}\n contentVisible={props.visible}\n onValueChange={(e) => {\n props.setTab(e as any);\n props.setVisible(true);\n }}\n className={props.className}\n classNames={{\n tabsList: \"oui-p-2\",\n tabsContent: \"oui-min-h-[176px] oui-max-h-[234px]\",\n }}\n trailing={\n <button className=\"oui-px-5\" onClick={props.toggleContentVisible}>\n <ChevronIcon\n className={(props.visible ? \"oui-rotate-0\" : \"oui-rotate-180\")}\n />\n </button>\n }\n >\n <TabPanel title=\"Chart\" value={TopTabType.chart}>\n <div className=\"oui-h-[234px] oui-pb-1\">\n <TradingviewWidget\n symbol={props.symbol}\n libraryPath={tradingViewConfig?.library_path}\n mode={3}\n scriptSRC={tradingViewConfig?.scriptSRC}\n customCssUrl={tradingViewConfig?.customCssUrl}\n />\n </div>\n </TabPanel>\n <TabPanel title=\"Trades\" value={TopTabType.trades}>\n <MWebLastTrades symbol={props.symbol} />\n </TabPanel>\n <TabPanel title=\"Data\" value={TopTabType.data}>\n <Box px={3}>\n <TradeDataWidget symbol={props.symbol} />\n </Box>\n </TabPanel>\n </Tabs>\n );\n};\n\nconst ChevronIcon = (props: { className?: string }) => {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\"oui-fill-base-contrast-54 hover:oui-fill-base-contrast-80\",props.className)}\n >\n <path\n d=\"M5.721 4.585 2.726 6.578a.51.51 0 0 0-.14.7.51.51 0 0 0 .702.14l2.714-1.806 2.715 1.806c.23.153.549.089.702-.14a.51.51 0 0 0-.14-.7L6.283 4.585a.51.51 0 0 0-.562 0\"\n // fill=\"url(#a)\"\n />\n <defs>\n {/* <linearGradient\n id=\"a\"\n x1=\"9.502\"\n y1=\"6.001\"\n x2=\"2.502\"\n y2=\"6.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient> */}\n </defs>\n </svg>\n );\n};\n","import { useState } from \"react\";\nimport { useTradingPageContext } from \"../../../provider/context\";\n\n\nexport enum TopTabType {\n chart = \"chart\",\n trades = \"trades\",\n data = \"data\",\n}\n\nexport const useTopTabScript = () => {\n const [tab, setTab] = useState<TopTabType>(TopTabType.chart);\n const { symbol} = useTradingPageContext();\n const [visible, setVisible] = useState(true);\n\n const toggleContentVisible = () => {\n setVisible((e) => !e);\n }\n\n return {\n tab,\n setTab,\n symbol,\n toggleContentVisible,\n setVisible,\n visible,\n };\n};\n\nexport type TopTabState = ReturnType<typeof useTopTabScript>;\n","import { LastTradesWidget } from \"../../base/lastTrades\";\n\nexport const MWebLastTrades = (props: {\n symbol: string;\n}) => {\n\n return <LastTradesWidget symbol={props.symbol} classNames={\n {\n root: \"oui-px-3 \",\n list: \"oui-min-h-[141px] oui-max-h-[202px] oui-w-full\",\n listHeader: \"oui-text-xs oui-text-base-contrast-36\",\n listItem: {\n left: \"oui-text-xs\",\n mid: \"oui-text-xs\",\n right: \"oui-text-xs\",\n }\n }\n }/>;\n};","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { TradeDataState } from \"./tradeData.script\";\n\nexport const TradeData: FC<TradeDataState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={2}>\n <Row\n title=\"Mark price\"\n value={props.ticker?.mark_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"Index price\"\n value={props.ticker?.index_price}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"24h volume\"\n value={props.vol_24h}\n dp={props.symbolInfo.quote_dp}\n rule=\"human\"\n showUSDC\n />\n <Row\n title=\"24h high\"\n value={props.ticker?.[\"24h_high\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"24h low\"\n value={props.ticker?.[\"24h_low\"]}\n dp={props.symbolInfo.quote_dp}\n />\n <Row\n title=\"Open interest\"\n value={props.openInterest}\n dp={props.symbolInfo.quote_dp}\n rule=\"human\"\n showUSDC\n />\n </Flex>\n );\n};\n\nconst Row = (props: {\n title: string;\n value: any;\n dp?: number;\n rule?: \"percentages\" | \"price\" | \"human\";\n showUSDC?: boolean;\n}) => {\n const { title, value, showUSDC, dp, rule = \"price\" } = props;\n return (\n <Flex justify={\"between\"} width={\"100%\"} className=\"oui-text-xs\">\n <Text intensity={36}>{title}</Text>\n <Flex gap={1}>\n <Text.numeral rule={rule} dp={dp} intensity={80}>\n {value}\n </Text.numeral>\n {showUSDC && <Text intensity={36}>USDC</Text>}\n </Flex>\n </Flex>\n );\n};\n","import { useTickerStream } from \"@orderly.network/hooks\";\nimport { useTradingPageContext } from \"../../../provider/context\";\nimport { useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const useTradeDataScript = (props: {\n symbol: string;\n}) => {\n\n const { symbol } = props;\n const ticker = useTickerStream(symbol);\n const { symbolInfo } = useTradingPageContext();\n const vol_24h = useMemo(() => {\n const close = ticker?.[\"24h_close\"];\n const volume = ticker?.[\"24h_volume\"];\n if (close && volume && !isNaN(close) && !isNaN(volume)) {\n return new Decimal(close).mul(volume).toFixed(symbolInfo.quote_dp, Decimal.ROUND_DOWN);\n }\n return undefined;\n }, [ticker]);\n \n const openInterest = useMemo(() => {\n const markPrice = ticker?.[\"mark_price\"];\n const openInterest = ticker?.[\"open_interest\"];\n if (markPrice && openInterest && !isNaN(markPrice) ) {\n return new Decimal(markPrice).mul(Number(openInterest)).toFixed(symbolInfo.quote_dp, Decimal.ROUND_DOWN);\n }\n return undefined;\n }, [ticker]);\n return {\n ticker,\n symbolInfo,\n vol_24h,\n openInterest,\n };\n};\n\nexport type TradeDataState = ReturnType<typeof useTradeDataScript>;\n","import { useTradeDataScript } from \"./tradeData.script\";\nimport { TradeData } from \"./tradeData.ui\";\n\nexport const TradeDataWidget = (props: {\n symbol: string;\n}) => {\n const state = useTradeDataScript(props);\n return (<TradeData {...state} />);\n};\n","import { useTopTabScript } from \"./topTab.script\";\nimport { TopTab } from \"./topTab.ui\";\n\nexport const TopTabWidget = (props: {\n className?: string\n}) => {\n const state = useTopTabScript();\n return (<TopTab className={props.className} {...state} />);\n};\n","import { FC, LegacyRef, useEffect, useRef, useState } from \"react\";\nimport { cn, Flex, Grid, Text } from \"@orderly.network/ui\";\nimport { OrderBookAndEntryState } from \"./orderBookAndEntry.script\";\nimport { OrderBookWidget } from \"../../base/orderBook\";\nimport { OrderEntryWidget } from \"@orderly.network/ui-order-entry\";\n\nexport const OrderBookAndEntry: FC<\n OrderBookAndEntryState & {\n className?: string;\n }\n> = (props) => {\n const [height, setHeight] = useState(0); \n const divRef = useRef(null); \n\n useEffect(() => {\n const div = divRef.current;\n\n if (!div) return;\n\n \n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n setHeight(entry.contentRect.height);\n }\n });\n \n resizeObserver.observe(div);\n\n \n return () => {\n resizeObserver.unobserve(div);\n };\n }, []);\n return (\n <div\n \n className={cn(\n \"oui-grid oui-grid-cols-[4fr,6fr] oui-gap-1 oui-mx-1 \",\n props.className\n )}\n >\n <div className=\"oui-bg-base-9 oui-rounded-xl\" style={{\n height: `${height + 16}px`\n }}>\n <OrderBookWidget\n symbol={props.symbol}\n height={height ? height - 44 : undefined}\n tabletMediaQuery={props.tabletMediaQuery}\n />\n </div>\n <div className=\"oui-bg-base-9 oui-rounded-xl oui-p-2\" >\n <OrderEntryWidget symbol={props.symbol} containerRef={divRef}/>\n </div>\n </div>\n );\n};\n","import { useTradingPageContext } from \"../../../provider/context\";\n\nexport const useOrderBookAndEntryScript = () => {\n\n const { symbol, tabletMediaQuery, } = useTradingPageContext();\n return {\n symbol,tabletMediaQuery,\n };\n};\n\nexport type OrderBookAndEntryState = ReturnType<typeof useOrderBookAndEntryScript>;\n","import { useOrderBookAndEntryScript } from \"./orderBookAndEntry.script\";\nimport { OrderBookAndEntry } from \"./orderBookAndEntry.ui\";\n\nexport const OrderBookAndEntryWidget = (props: {\n className?: string;\n}) => {\n const state = useOrderBookAndEntryScript();\n return (<OrderBookAndEntry className={props.className} {...state} />);\n};\n","import { FC } from \"react\";\nimport { TradingState } from \"./trading.script\";\nimport { TopTabWidget } from \"../../components/mobile/topTab\";\nimport { OrderBookAndEntryWidget } from \"../../components/mobile/orderBookAndEntry\";\nimport {\n MarketsSheetWidget,\n TokenInfoBarWidget,\n} from \"@orderly.network/markets\";\nimport { Box, SimpleSheet } from \"@orderly.network/ui\";\nimport { SecondaryLogo } from \"../../components/base/secondaryLogo\";\nimport { DataListWidget } from \"../../components/mobile/dataList\";\nimport { BottomNavBarWidget } from \"../../components/mobile/bottomNavBar\";\n\nexport const MobileLayout: FC<TradingState> = (props) => {\n const onSymbol = () => {\n props.onOpenMarketsSheetChange(true);\n };\n\n const topBar = (\n <Box intensity={900} px={3} height={54}>\n <TokenInfoBarWidget\n symbol={props.symbol}\n trailing={<SecondaryLogo />}\n onSymbol={onSymbol}\n />\n <SimpleSheet\n open={props.openMarketsSheet}\n onOpenChange={props.onOpenMarketsSheetChange}\n classNames={{\n content: \"oui-w-[280px] !oui-p-0 oui-rounded-bl-[40px]\",\n }}\n contentProps={{ side: \"left\", closeable: false }}\n >\n <MarketsSheetWidget\n symbol={props.symbol}\n onSymbolChange={(symbol) => {\n props.onOpenMarketsSheetChange(false);\n props.onSymbolChange?.(symbol);\n }}\n />\n </SimpleSheet>\n </Box>\n );\n\n return (\n <div\n style={{\n paddingBottom: \"calc(64px + env(safe-area-inset-bottom))\",\n }}\n className=\"oui-grid oui-grid-rows-[auto,1fr,auto] oui-h-screen oui-gap-1 oui-relative oui-bg-base-10\"\n >\n <header>{topBar}</header>\n\n <main className=\"oui-overflow-y-auto oui-hide-scrollbar oui-space-y-1\">\n <TopTabWidget className=\"oui-mx-1 oui-bg-base-9 oui-rounded-xl\" />\n <OrderBookAndEntryWidget />\n <DataListWidget\n symbol={props.symbol}\n className=\"oui-mx-1 oui-rounded-xl\"\n sharePnLConfig={props.sharePnLConfig}\n />\n </main>\n\n <div className=\"oui-fixed oui-left-0 oui-right-0 oui-bottom-0\">\n <BottomNavBarWidget />\n </div>\n </div>\n );\n};\n","import { FC } from \"react\";\nimport { useAppConfig } from \"@orderly.network/react-app\";\n\nexport const SecondaryLogo: FC = () => {\n const { appIcons } = useAppConfig();\n\n const { secondary } = appIcons || {};\n\n if (secondary?.img) {\n return <img src={secondary?.img} className=\"oui-w-5 oui-h-5\" />;\n }\n\n if (secondary?.component) {\n return secondary.component;\n }\n\n return null;\n};\n","import { FC } from \"react\";\nimport {\n Button,\n Checkbox,\n Divider,\n Flex,\n TabPanel,\n Tabs,\n Text,\n} from \"@orderly.network/ui\";\nimport { DataListState, DataListTabType } from \"./dataList.script\";\nimport { MobileOrderListWidget, TabType } from \"@orderly.network/ui-orders\";\nimport { OrderStatus } from \"@orderly.network/types\";\nimport { MobilePositionsWidget } from \"@orderly.network/ui-positions\";\nimport { PositionHeaderWidget } from \"../../base/positionHeader\";\n\nexport const DataList: FC<\n DataListState & {\n className?: string;\n }\n> = (props) => {\n return (\n <Tabs\n value={props.tab}\n onValueChange={(e: any) => props.setTab(e)}\n size=\"lg\"\n className={props.className}\n classNames={{\n tabsList: \"oui-bg-base-9 oui-rounded-t-xl oui-p-2\",\n }}\n >\n <TabPanel\n title={\n (props.positionCount ?? 0) > 0\n ? `${DataListTabType.position}(${props.positionCount})`\n : DataListTabType.position\n }\n value={DataListTabType.position}\n >\n <PositionsView {...props} />\n </TabPanel>\n <TabPanel\n title={\n (props.pendingOrderCount ?? 0) > 0\n ? `${DataListTabType.pending}(${props.pendingOrderCount})`\n : DataListTabType.pending\n }\n value={DataListTabType.pending}\n >\n <OrdersView\n type={TabType.pending}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...props}\n />\n </TabPanel>\n <TabPanel\n title={\n (props.tpSlOrderCount ?? 0) > 0\n ? `${DataListTabType.tp_sl}(${props.tpSlOrderCount})`\n : DataListTabType.tp_sl\n }\n value={DataListTabType.tp_sl}\n >\n <OrdersView\n type={TabType.tp_sl}\n ordersStatus={OrderStatus.INCOMPLETE}\n {...props}\n />\n </TabPanel>\n <TabPanel title={DataListTabType.history} value={DataListTabType.history}>\n <OrdersView type={TabType.orderHistory} {...props} />\n </TabPanel>\n </Tabs>\n );\n};\n\nconst PositionsView: FC<DataListState> = (props) => {\n return (\n <Flex direction={\"column\"} gap={2}>\n <PositionHeaderWidget\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n symbol={props.showAllSymbol ? undefined : props.symbol}\n unPnlPriceBasis={props.unPnlPriceBasis}\n tabletMediaQuery={props.tabletMediaQuery}\n />\n <MobilePositionsWidget\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n sharePnLConfig={props.sharePnLConfig}\n pnlNotionalDecimalPrecision={props.pnlNotionalDecimalPrecision}\n />\n </Flex>\n );\n};\n\nconst OrdersView: FC<\n DataListState & {\n type: TabType;\n ordersStatus?: OrderStatus;\n }\n> = (props) => {\n return (\n <Flex direction={\"column\"} pb={2} width={\"100%\"}>\n <Divider className=\"oui-w-full\" />\n {props.type !== TabType.orderHistory && (\n <SymbolControlHeader {...props} />\n )}\n <MobileOrderListWidget\n symbol={props.showAllSymbol ? undefined : props.symbol}\n onSymbolChange={props.onSymbolChange}\n type={props.type}\n ordersStatus={props.ordersStatus}\n classNames={{\n root: \"oui-w-full oui-hide-scrollbar oui-overflow-y-hidden\",\n content: \"!oui-space-y-1\",\n cell: \"oui-py-2 oui-bg-base-9 oui-p-2 oui-rounded-xl\",\n }}\n showFilter={props.type === TabType.orderHistory}\n filterConfig={{\n range: {\n from: undefined,\n to: undefined,\n },\n }}\n />\n </Flex>\n );\n};\n\nconst SymbolControlHeader: FC<\n DataListState & {\n type: TabType;\n ordersStatus?: OrderStatus;\n }\n> = (props) => {\n return (\n <Flex\n px={2}\n py={2}\n width={\"100%\"}\n justify={\"between\"}\n gap={2}\n className=\"oui-rounded-b-xl oui-bg-base-9\"\n >\n <Flex className=\"oui-gap-[2px] oui-cursor-pointer\">\n <Checkbox\n color=\"white\"\n checked={props.showAllSymbol}\n onCheckedChange={(checked: boolean) => {\n props.setShowAllSymbol(checked);\n }}\n />\n <Text\n size=\"2xs\"\n intensity={54}\n onClick={() => {\n props.setShowAllSymbol(!props.showAllSymbol);\n }}\n >\n Show all trading pairs\n </Text>\n </Flex>\n <Button\n variant=\"outlined\"\n size=\"xs\"\n color=\"secondary\"\n onClick={(e) => {\n props.onCloseAll(props.type);\n }}\n >\n Close All\n </Button>\n </Flex>\n );\n};\n","import { useState } from \"react\";\nimport { useTradingPageContext } from \"../../../provider/context\";\nimport { useTradingLocalStorage } from \"../../../provider/useTradingLocalStorage\";\nimport { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { useOrderStream } from \"@orderly.network/hooks\";\nimport { usePositionsCount } from \"../../../provider/usePositionsCount\";\nimport { usePendingOrderCount } from \"../../../provider/usePendingOrderCount\";\nimport { modal, Text } from \"@orderly.network/ui\";\nimport { SharePnLConfig, SharePnLParams } from \"@orderly.network/ui-share\";\nimport { TabType } from \"@orderly.network/ui-orders\";\n\nexport enum DataListTabType {\n position = \"Position\",\n pending = \"Pending\",\n tp_sl = \"TP/SL\",\n history = \"History\",\n}\n\nexport const useDataListScript = (props: {\n symbol: string;\n className?: string;\n sharePnLConfig?: SharePnLConfig &\n Partial<Omit<SharePnLParams, \"position\" | \"refCode\" | \"leverage\">>;\n}) => {\n const { symbol, sharePnLConfig } = props;\n const [tab, setTab] = useState<DataListTabType>(DataListTabType.position);\n const { tabletMediaQuery, onSymbolChange } = useTradingPageContext();\n const localStorage = useTradingLocalStorage();\n\n const [_, { cancelAllOrders, cancelAllTPSLOrders }] = useOrderStream({});\n const { positionCount } = usePositionsCount(symbol);\n const { pendingOrderCount, tpSlOrderCount } = usePendingOrderCount(symbol);\n\n const onCloseAll = (type: TabType) => {\n const title =\n type === TabType.pending\n ? \"Cancel all pending orders\"\n : type === TabType.tp_sl\n ? \"Cancel all TP/SL orders\"\n : \"\";\n const content =\n type === TabType.pending\n ? \"Are you sure you want to cancel all of your pending orders?\"\n : type === TabType.tp_sl\n ? \"Are you sure you want to cancel all of your TP/SL orders?\"\n : \"\";\n modal.confirm({\n title: title,\n content: <Text size=\"2xs\">{content}</Text>,\n\n onOk: async () => {\n try {\n // await cancelAll(null, { source_type: \"ALL\" });\n if (tab === DataListTabType.tp_sl) {\n await cancelAllTPSLOrders();\n } else {\n await cancelAllOrders();\n }\n return Promise.resolve(true);\n } catch (error) {\n // @ts-ignore\n if (error?.message !== undefined) {\n // @ts-ignore\n toast.error(error.message);\n }\n return Promise.resolve(false);\n } finally {\n Promise.resolve();\n }\n },\n });\n };\n\n return {\n tab,\n setTab,\n tabletMediaQuery,\n sharePnLConfig,\n symbol,\n positionCount,\n pendingOrderCount,\n tpSlOrderCount,\n ...localStorage,\n onCloseAll,\n onSymbolChange,\n };\n};\n\nexport type DataListState = ReturnType<typeof useDataListScript>;\n","import { PositionsProps } from \"@orderly.network/ui-positions\";\nimport { useDataListScript } from \"./dataList.script\";\nimport { DataList } from \"./dataList.ui\";\nimport { SharePnLConfig, SharePnLParams } from \"@orderly.network/ui-share\";\n\nexport const DataListWidget = (props: {\n symbol: string;\n className?: string;\n sharePnLConfig?: SharePnLConfig &\n Partial<Omit<SharePnLParams, \"position\" | \"refCode\" | \"leverage\">>;\n}) => {\n const state = useDataListScript(props);\n return <DataList {...state} className={props.className} />;\n};\n","import { FC } from \"react\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\nimport { getOffsetSizeNum, TradingState } from \"./trading.script\";\nimport { DataListWidget } from \"../../components/desktop/dataList\";\nimport { TradingviewWidget } from \"@orderly.network/ui-tradingview\";\nimport { AssetViewWidget } from \"../../components/desktop/assetView\";\nimport { RiskRateWidget } from \"../../components/desktop/riskRate\";\nimport { OrderBookAndTradesWidget } from \"../../components/desktop/orderBookAndTrades\";\nimport {\n SideMarketsWidget,\n TokenInfoBarFullWidget,\n} from \"@orderly.network/markets\";\nimport { SwitchLayout } from \"../../components/desktop/layout/switchLayout\";\nimport { SplitLayout } from \"../../components/desktop/layout/splitLayout\";\nimport { RemovablePanel } from \"../../components/desktop/layout/removablePanel\";\nimport { OrderEntryWidget } from \"@orderly.network/ui-order-entry\";\n\nexport type DesktopLayoutProps = TradingState & {\n className?: string;\n};\n\nexport const DesktopLayout: FC<DesktopLayoutProps> = (props) => {\n const {\n collapsed,\n onCollapse,\n layout,\n onLayout,\n orderBookSplitSize,\n setOrderbookSplitSize,\n dataListSplitSize,\n setDataListSplitSize,\n mainSplitSize,\n setMainSplitSize,\n isMedium,\n animating,\n setAnimating,\n positions,\n updatePositions,\n canTrading,\n showPositionIcon,\n } = props;\n\n const topBarHeight = 48;\n const bottomBarHeight = 29;\n const space = 12;\n\n const tokenInfoBarHeight = 54;\n\n const marketsWidth = collapsed ? 70 : 280;\n const orderEntryMinWidth = 280;\n const orderEntryMaxWidth = 360;\n\n const orderbookMinWidth = 280;\n const orderbookMaxWidth = 732;\n\n const orderbookMinHeight = 464;\n const orderbookMaxHeight = 728;\n\n const tradingViewMinWidth = 540;\n const dataListMinHeight = canTrading ? 379 : 277;\n\n const minScreenHeight =\n topBarHeight +\n bottomBarHeight +\n tokenInfoBarHeight +\n orderbookMinHeight +\n dataListMinHeight +\n space * 4;\n\n // const minScreenWidth =\n // marketsWidth +\n // tradingViewMinWidth +\n // orderbookMinWidth +\n // orderEntryMinWidth +\n // 5 * space;\n // const minScreenWidth = 1440;\n\n const marketsView = (\n <Box\n intensity={900}\n pt={3}\n r=\"2xl\"\n height=\"100%\"\n width={marketsWidth}\n style={{ minWidth: marketsWidth }}\n className=\"oui-transition-all oui-duration-150\"\n onTransitionEnd={() => {\n setAnimating(false);\n }}\n >\n {!animating && (\n <SideMarketsWidget\n collapsed={collapsed}\n onCollapse={onCollapse}\n symbol={props.symbol}\n onSymbolChange={props.onSymbolChange}\n />\n )}\n </Box>\n );\n\n const assetsOrderEntryMargin = [\n <RemovablePanel\n key=\"assets\"\n className=\"oui-border oui-border-line-12\"\n index={positions.findIndex((item) => item === 0)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <AssetViewWidget />\n </RemovablePanel>,\n <RemovablePanel\n key=\"orderEntry\"\n index={positions.findIndex((item) => item === 1)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <OrderEntryWidget symbol={props.symbol} />\n </RemovablePanel>,\n <RemovablePanel\n key=\"margin\"\n index={positions.findIndex((item) => item === 2)}\n onLayout={updatePositions}\n showIndicator={showPositionIcon}\n >\n <RiskRateWidget />\n </RemovablePanel>,\n ];\n\n const orderEntryView = (\n <Flex\n gapY={3}\n direction=\"column\"\n height=\"100%\"\n style={{\n minWidth: orderEntryMinWidth,\n maxWidth: orderEntryMaxWidth,\n width: mainSplitSize,\n }}\n >\n {positions.map((index) => assetsOrderEntryMargin[index])}\n </Flex>\n );\n\n const tokenInfoBarView = (\n <Box\n intensity={900}\n r=\"2xl\"\n px={3}\n width=\"100%\"\n style={{\n minHeight: tokenInfoBarHeight,\n height: tokenInfoBarHeight,\n }}\n >\n <TokenInfoBarFullWidget\n symbol={props.symbol}\n onSymbolChange={props.onSymbolChange}\n trailing={<SwitchLayout layout={layout} onLayout={onLayout} />}\n />\n </Box>\n );\n\n const tradingView = (\n <Box\n width=\"100%\"\n height=\"100%\"\n intensity={900}\n r=\"2xl\"\n style={{ flex: 1, minWidth: tradingViewMinWidth }}\n className=\"oui-overflow-hidden\"\n >\n <TradingviewWidget\n symbol={props.symbol}\n libraryPath={props.tradingViewConfig?.library_path}\n scriptSRC={props.tradingViewConfig?.scriptSRC}\n customCssUrl={props.tradingViewConfig?.customCssUrl}\n />\n </Box>\n );\n\n const orderbookView = (\n <Box\n intensity={900}\n r=\"2xl\"\n height=\"100%\"\n style={{\n minWidth: orderbookMinWidth,\n maxWidth: orderbookMaxWidth,\n width: orderBookSplitSize,\n }}\n className=\"oui-overflow-hidden\"\n >\n <OrderBookAndTradesWidget\n symbol={props.symbol}\n tabletMediaQuery={props.tabletMediaQuery}\n />\n </Box>\n );\n\n const dataListView = (\n <Box\n intensity={900}\n r=\"2xl\"\n p={3}\n style={{ height: dataListSplitSize, minHeight: dataListMinHeight }}\n className=\"oui-overflow-hidden\"\n >\n <DataListWidget\n current={undefined}\n tabletMediaQuery={props.tabletMediaQuery}\n symbol={props.symbol}\n sharePnLConfig={props.sharePnLConfig}\n />\n </Box>\n );\n\n const renderTradingView = () => {\n if (isMedium && layout === \"right\") {\n return (\n <Flex\n gap={3}\n className=\"oui-flex-1 oui-overflow-hidden\"\n style={{\n minWidth: marketsWidth + tradingViewMinWidth + space,\n }}\n >\n {marketsView}\n {tradingView}\n </Flex>\n );\n }\n\n return tradingView;\n };\n\n const tradingViewAndOrderbookView = (\n <SplitLayout\n style={{\n // the style width is not set, and a child node style needs to be set to flex: 1 to adapt\n flex: 1,\n minHeight: orderbookMinHeight,\n // maxHeight: orderbookMaxHeight,\n }}\n onSizeChange={setOrderbookSplitSize}\n >\n {renderTradingView()}\n {orderbookView}\n </SplitLayout>\n );\n\n const renderTradingViewAndOrderbookView = () => {\n if (isMedium && layout === \"left\") {\n return (\n <Flex\n gapX={3}\n style={{\n minHeight: orderbookMinHeight,\n // maxHeight: orderbookMaxHeight,\n // minWidth:\n // marketsWidth +\n // tradingViewMinWidth +\n // orderbookMinWidth +\n // space * 2,\n }}\n height=\"100%\"\n >\n {tradingViewAndOrderbookView}\n {marketsView}\n </Flex>\n );\n }\n return tradingViewAndOrderbookView;\n };\n\n const mainView = (\n <Flex\n direction=\"column\"\n className=\"oui-flex-1 oui-overflow-hidden\"\n gap={3}\n style={{\n minWidth: isMedium\n ? marketsWidth + tradingViewMinWidth + orderbookMinWidth + space * 2\n : tradingViewMinWidth + orderbookMinWidth + space,\n }}\n >\n {tokenInfoBarView}\n <SplitLayout\n className=\"oui-w-full !oui-h-[calc(100%_-_54px_-_12px)]\"\n mode=\"vertical\"\n onSizeChange={setDataListSplitSize}\n >\n {renderTradingViewAndOrderbookView()}\n {dataListView}\n </SplitLayout>\n </Flex>\n );\n\n const onSizeChange = (width: string) =>\n layout === \"left\"\n ? setMainSplitSize(getOffsetSizeNum(width))\n : setMainSplitSize(width);\n\n return (\n <Flex\n style={{\n minHeight: minScreenHeight,\n // minWidth: minScreenWidth,\n }}\n className={cn(\"oui-min-w-[1440px]\", props.className)}\n width=\"100%\"\n p={3}\n gap={3}\n >\n {!isMedium && layout === \"right\" && marketsView}\n <SplitLayout\n className=\"oui-flex oui-flex-1 oui-overflow-hidden\"\n onSizeChange={onSizeChange}\n >\n {layout === \"left\" && orderEntryView}\n {mainView}\n {layout === \"right\" && orderEntryView}\n </SplitLayout>\n {!isMedium && layout === \"left\" && marketsView}\n </Flex>\n );\n};\n","import {\n useAccount,\n useLocalStorage,\n useMediaQuery,\n} from \"@orderly.network/hooks\";\nimport { useTradingPageContext } from \"../../provider/context\";\nimport { TradingPageState } from \"../../types/types\";\nimport { useSplitPersistent } from \"../../components/desktop/layout/useSplitPersistent\";\nimport { useMemo, useState } from \"react\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useFirstTimeDeposit } from \"../../components/desktop/assetView/assetView.script\";\n\nexport type TradingState = ReturnType<typeof useTradingScript>;\n\nexport const useTradingScript = () => {\n const [openMarketsSheet, setOpenMarketsSheet] = useState(false);\n const props = useTradingPageContext();\n const [animating, setAnimating] = useState(false);\n const { state } = useAccount();\n\n const { wrongNetwork } = useAppContext();\n\n const { isFirstTimeDeposit } = useFirstTimeDeposit();\n\n const [collapsed, setCollapsed] = useLocalStorage(\n \"orderly_side_markets_collapsed\",\n false\n );\n\n const [positions, setPositions] = useLocalStorage(\n \"orderly_assets_orderEntry_margin_positions\",\n [0, 1, 2]\n );\n\n // Order entry and side market list position, default Order entry in right\n const [layout, setLayout] = useLocalStorage(\n \"orderly_order_entry_side_markets_layout\",\n \"right\"\n );\n\n const [mainSplitSize, setMainSplitSize] = useSplitPersistent(\n \"orderly_main_split_size\",\n undefined,\n layout\n );\n const [dataListSplitSize, setDataListSplitSize] = useSplitPersistent(\n \"orderly_datalist_split_size\",\n \"350px\"\n );\n const [orderBookSplitSize, setOrderbookSplitSize] = useSplitPersistent(\n \"orderly_orderbook_split_size\",\n \"280px\",\n layout\n );\n\n const isMedium = useMediaQuery(\"(max-width: 1680px)\");\n\n const onCollapse = (collapsed: boolean) => {\n setCollapsed(collapsed);\n setAnimating(true);\n };\n\n const updatePositions = (currentIdx: number, targetIdx: number) => {\n const pos = [...positions];\n // [0,1,2] => [1,2,0]\n if (currentIdx === 0 && targetIdx === pos.length - 1) {\n pos[targetIdx] = positions[currentIdx];\n for (let i = 0; i < pos.length - 1; i++) {\n pos[i] = positions[i + 1];\n }\n\n // [0,1,2] => [2,0,1]\n } else if (currentIdx === pos.length - 1 && targetIdx === 0) {\n pos[targetIdx] = positions[currentIdx];\n for (let i = 1; i < pos.length; i++) {\n pos[i] = positions[i - 1];\n }\n } else {\n // [0,1,2] => [1,0,2], [0,1,2] => [0,2,1]\n [pos[currentIdx], pos[targetIdx]] = [pos[targetIdx], pos[currentIdx]];\n }\n setPositions(pos);\n };\n\n const canTrading = useMemo(() => {\n if (state.status < AccountStatusEnum.EnableTrading || wrongNetwork) {\n return false;\n }\n return true;\n }, [state.status, wrongNetwork]);\n\n const showPositionIcon = useMemo(\n () => canTrading && !isFirstTimeDeposit,\n [canTrading, isFirstTimeDeposit]\n );\n\n const pos = useMemo(() => {\n return showPositionIcon ? (positions as number[]) : [0, 1, 2];\n }, [showPositionIcon, positions]);\n\n const map = {\n collapsed,\n onCollapse,\n layout,\n onLayout: setLayout,\n orderBookSplitSize,\n setOrderbookSplitSize,\n dataListSplitSize,\n setDataListSplitSize,\n mainSplitSize,\n setMainSplitSize,\n isMedium,\n animating,\n setAnimating,\n positions: pos,\n updatePositions,\n canTrading,\n showPositionIcon,\n openMarketsSheet,\n onOpenMarketsSheetChange: setOpenMarketsSheet,\n };\n\n return { ...props, ...map } as TradingPageState & typeof map;\n};\n\nexport function getOffsetSizeNum(size: string | null) {\n if (size) {\n return `${100 - Math.min(Number(size), 100)}`;\n }\n return \"\";\n}\n","import { useMemo } from \"react\";\n\nexport const useSplitPersistent = (\n key: string,\n defaulValue?: string,\n dep?: any\n): [string | undefined, (size: string) => void] => {\n const size = useMemo(() => {\n const size = localStorage.getItem(key);\n\n if (size) {\n return `${size}%`;\n }\n return defaulValue;\n }, [key, defaulValue, dep]);\n\n const setSize = (size: string) => {\n localStorage.setItem(key, size);\n };\n\n return [size, setSize];\n};\n","import { FC, PropsWithChildren, SVGProps, useState } from \"react\";\nimport {\n Box,\n CloseIcon,\n cn,\n Divider,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n Text,\n} from \"@orderly.network/ui\";\n\nexport type LayoutPosition = \"left\" | \"right\";\n\nexport type SwitchLayoutProps = {\n layout?: LayoutPosition;\n onLayout?: (layout: LayoutPosition) => void;\n};\n\nexport const SwitchLayout: FC<SwitchLayoutProps> = (props) => {\n return (\n <SwitchLayoutDropDown {...props}>\n <Flex\n className={cn(\n \"oui-rounded-md\",\n \"oui-w-[69px] oui-h-[28px]\",\n \"oui-cursor-pointer oui-transition-all\",\n \"oui-bg-base-6 hover:oui-bg-base-4\",\n \"oui-text-base-contrast-54 hover:oui-text-base-contrast-80\"\n )}\n gapX={1}\n justify=\"center\"\n itemAlign=\"center\"\n >\n <LayoutIcon />\n <Text size=\"2xs\" weight=\"semibold\">\n layout\n </Text>\n </Flex>\n </SwitchLayoutDropDown>\n );\n};\n\nexport const SwitchLayoutDropDown: FC<PropsWithChildren<SwitchLayoutProps>> = (\n props\n) => {\n const [open, setOpen] = useState(false);\n\n const renderItem = (position: LayoutPosition) => {\n return (\n <Flex\n direction=\"column\"\n gapY={2}\n onClick={() => {\n props.onLayout?.(position);\n }}\n className=\"oui-group\"\n >\n <Flex\n justify={position === \"right\" ? \"end\" : \"start\"}\n className={cn(\n \"oui-w-[148px] oui-h-[100px]\",\n \"oui-bg-base-10 oui-rounded-[10px]\",\n \"oui-border-[4px] oui-border-base-5 group-hover:oui-border-primary-light\",\n props.layout === position && \"!oui-border-primary-light\"\n )}\n >\n <Box p={1}>\n <OrderEntryIcon />\n </Box>\n </Flex>\n <Text\n size=\"2xs\"\n intensity={54}\n className={cn(\n \"oui-text-base-contrast-54 group-hover:oui-text-base-contrast-80\",\n props.layout === position && \"oui-text-base-contrast-80\"\n )}\n >\n Advanced ({position})\n </Text>\n </Flex>\n );\n };\n\n const content = (\n <>\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n mt={3}\n className=\"oui-mb-[10px]\"\n >\n <Text size=\"base\" intensity={98}>\n layout\n </Text>\n <CloseIcon\n size={16}\n className=\"oui-text-base-contrast-80 oui-cursor-pointer\"\n opacity={0.98}\n onClick={() => {\n setOpen(false);\n }}\n />\n </Flex>\n <Divider />\n <Flex gapX={6} mt={5}>\n {renderItem(\"right\")}\n {renderItem(\"left\")}\n </Flex>\n </>\n );\n\n return (\n <DropdownMenuRoot open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>{props.children}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n align=\"end\"\n className={cn(\n \"oui-bg-base-8 oui-p-5 oui-pt-0 oui-w-[360px] oui-font-semibold\"\n )}\n >\n {content}\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n\nexport const LayoutIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M3.832 1.994c-.736 0-1.333.597-1.333 1.333v9.334c0 .737.597 1.333 1.333 1.333H6.5c.737 0 1.333-.596 1.333-1.333V3.327c0-.736-.596-1.333-1.333-1.333zm6.667 0c-.737 0-1.333.597-1.333 1.333v2.667c0 .737.596 1.333 1.333 1.333h2.667c.736 0 1.333-.596 1.333-1.333V3.327c0-.736-.597-1.333-1.333-1.333zm.437 6.679a2.7 2.7 0 0 0-1.033.607.284.284 0 0 0-.061.339c.222.411-.01.851-.512.876a.29.29 0 0 0-.26.217c-.05.207-.07.38-.07.608 0 .19.02.407.06.599a.28.28 0 0 0 .252.217c.506.044.756.429.53.92a.28.28 0 0 0 .06.321c.296.273.635.466 1.034.59a.285.285 0 0 0 .312-.104c.31-.427.757-.428 1.05 0a.28.28 0 0 0 .313.113 2.8 2.8 0 0 0 1.042-.599.28.28 0 0 0 .06-.33c-.23-.466.035-.894.513-.902a.28.28 0 0 0 .269-.209c.048-.199.06-.372.06-.616q0-.316-.069-.616a.276.276 0 0 0-.27-.217c-.469-.001-.732-.463-.502-.868a.27.27 0 0 0-.053-.339 2.8 2.8 0 0 0-1.059-.607.274.274 0 0 0-.312.112c-.268.417-.77.425-1.033.009a.284.284 0 0 0-.321-.121m.842 1.536a1.111 1.111 0 1 1 0 2.222 1.111 1.111 0 0 1 0-2.222\" />\n </svg>\n);\n\nexport const OrderEntryIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"36\"\n height=\"84\"\n viewBox=\"0 0 36 84\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect width=\"36\" height=\"17\" rx=\"2\" fill=\"#181C23\" />\n <rect y=\"19\" width=\"36\" height=\"54\" rx=\"2\" fill=\"#181C23\" />\n <rect y=\"75\" width=\"36\" height=\"9\" rx=\"2\" fill=\"#181C23\" />\n <rect\n x=\"3\"\n y=\"79\"\n width=\"30\"\n height=\"1\"\n rx=\"0.5\"\n fill=\"url(#paint0_linear_17647_26849)\"\n />\n <rect x=\"3\" y=\"22\" width=\"14\" height=\"6\" rx=\"2\" fill=\"#008676\" />\n <rect x=\"19\" y=\"22\" width=\"14\" height=\"6\" rx=\"2\" fill=\"#D92D6B\" />\n <rect x=\"3\" y=\"11\" width=\"14\" height=\"3\" rx=\"1.5\" fill=\"#333948\" />\n <rect x=\"19\" y=\"11\" width=\"14\" height=\"3\" rx=\"1.5\" fill=\"#335FFC\" />\n <rect x=\"3\" y=\"62\" width=\"30\" height=\"8\" rx=\"2\" fill=\"#008676\" />\n <defs>\n <linearGradient\n id=\"paint0_linear_17647_26849\"\n x1=\"33\"\n y1=\"79.5\"\n x2=\"3\"\n y2=\"79.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React, { FC, PropsWithChildren, SVGProps, useState } from \"react\";\nimport { Box, cn, Flex, Tooltip } from \"@orderly.network/ui\";\n\nexport type RemovablePanelProps = {\n className?: string;\n index: number;\n onLayout: (currentIdx: number, targetIdx: number) => void;\n showIndicator?: boolean;\n};\n\nexport const RemovablePanel: React.FC<\n PropsWithChildren<RemovablePanelProps>\n> = (props) => {\n const { showIndicator = true } = props;\n const [open, setOpen] = useState(false);\n return (\n <Box\n intensity={900}\n r=\"2xl\"\n p={3}\n width=\"100%\"\n className={cn(\"oui-relative\", props.className)}\n >\n {props.children}\n <Tooltip\n open={open}\n onOpenChange={setOpen}\n side=\"left\"\n align=\"start\"\n sideOffset={-4}\n alignOffset={-4}\n // @ts-ignore\n content={\n <Flex direction=\"column\" gapY={2}>\n {[TopIcon, MiddleIcon, BottomIcon].map((Icon, idx) => (\n <Icon\n key={idx}\n className={cn(\n \"oui-rounded oui-cursor-pointer hover:oui-bg-base-5\",\n props.index === idx && \"oui-bg-base-5\"\n )}\n onClick={() => {\n props.onLayout?.(props.index, idx);\n setOpen(false);\n }}\n />\n ))}\n </Flex>\n }\n delayDuration={0}\n className={cn(\n \"oui-bg-base-9 oui-rounded\",\n \"oui-border oui-border-line-12\",\n \"oui-p-1\"\n )}\n arrow={{ className: \"oui-fill-transparent\" }}\n >\n {showIndicator && (\n <div className=\"oui-absolute oui-right-[1px] oui-top-[18px]\">\n <IndicatorIcon\n className={cn(\n \"oui-text-base-contrast-20 hover:oui-text-base-contrast-80\",\n \"oui-cursor-pointer\"\n )}\n />\n </div>\n )}\n </Tooltip>\n </Box>\n );\n};\n\nexport const IndicatorIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"10\"\n height=\"16\"\n viewBox=\"0 0 10 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect x=\"2\" y=\"2\" width=\"6\" height=\"2\" rx=\"1\" />\n <rect x=\"2\" y=\"7\" width=\"6\" height=\"2\" rx=\"1\" />\n <rect x=\"2\" y=\"12\" width=\"6\" height=\"2\" rx=\"1\" />\n </svg>\n);\n\nexport const TopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect x=\"1.333\" y=\"2.667\" width=\"13.333\" height=\"4\" rx=\"2\" fill=\"#608CFF\" />\n <rect\n x=\"2.667\"\n y=\"12\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <rect\n x=\"2.667\"\n y=\"8.667\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n);\n\nexport const MiddleIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect x=\"1.333\" y=\"6\" width=\"13.333\" height=\"4\" rx=\"2\" fill=\"#608CFF\" />\n <rect\n x=\"2.667\"\n y=\"12\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <rect\n x=\"2.667\"\n y=\"2.667\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n);\n\nexport const BottomIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect x=\"1.333\" y=\"9.333\" width=\"13.333\" height=\"4\" rx=\"2\" fill=\"#608CFF\" />\n <rect\n x=\"2.667\"\n y=\"6\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <rect\n x=\"2.667\"\n y=\"2.667\"\n width=\"10.667\"\n height=\"1.333\"\n rx=\".667\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n);\n","import { FC } from \"react\";\nimport { TradingState } from \"./trading.script\";\nimport { MobileLayout } from \"./trading.ui.mobile\";\nimport { DesktopLayout } from \"./trading.ui.desktop\";\nimport { useScreen } from \"@orderly.network/ui\";\n\nexport const Trading: FC<TradingState> = (props) => {\n const { isMobile } = useScreen();\n\n if (isMobile) {\n return <MobileLayout {...props} />;\n }\n\n return (\n <DesktopLayout\n className=\"oui-h-[calc(100vh_-_48px_-_29px)] oui-bg-base-10\"\n {...props}\n />\n );\n};\n","import { useTradingScript } from \"./trading.script\";\nimport { Trading } from \"./trading.ui\";\n\nexport const TradingWidget = () => {\n const state = useTradingScript();\n return <Trading {...state} />;\n};\n","import { TradingPageProvider } from \"../../provider\";\nimport { TradingPageProps } from \"../../types/types\";\nimport { TradingWidget } from \"./trading.widget\";\n\nexport const TradingPage = (props: TradingPageProps) => {\n return (\n <TradingPageProvider\n symbol={props.symbol}\n tradingViewConfig={props.tradingViewConfig}\n onSymbolChange={props.onSymbolChange}\n disableFeatures={props.disableFeatures}\n overrideFeatures={props.overrideFeatures}\n referral={props.referral}\n tradingRewards={props.tradingRewards}\n bottomSheetLeading={props.bottomSheetLeading}\n sharePnLConfig={props.sharePnLConfig} \n >\n <TradingWidget />\n </TradingPageProvider>\n );\n};\n"]}