{"version":3,"sources":["../src/index.ts","../src/config/index.ts","../src/config/chains.json","../src/config/envs.json","../src/config/schemas/index.ts","../src/config/schemas/eip712DomainSchema.ts","../src/config/schemas/pureEnvSchema.ts","../src/types.ts","../src/config/schemas/pureChainSchema.ts","../src/constants/cancelOrderTypes.ts","../src/constants/subOrderStatuses.ts","../src/constants/orderStatuses.ts","../src/constants/networkCodes.ts","../src/constants/orderSides.ts","../src/constants/chains.ts","../src/constants/precisions.ts","../src/constants/gasLimits.ts","../src/constants/index.ts","../src/Unit/index.ts","../src/services/Aggregator/index.ts","../src/services/Aggregator/schemas/exchangeInfoSchema.ts","../src/services/Aggregator/schemas/pairConfigSchema.ts","../src/services/Aggregator/schemas/cancelOrderSchema.ts","../src/services/Aggregator/schemas/errorSchema.ts","../src/services/Aggregator/ws/index.ts","../src/services/Aggregator/ws/MessageType.ts","../src/services/Aggregator/ws/SubscriptionType.ts","../src/services/Aggregator/ws/schemas/index.ts","../src/services/Aggregator/ws/schemas/addressUpdateSchema.ts","../src/services/Aggregator/ws/schemas/balancesSchema.ts","../src/utils/index.ts","../src/utils/calculateNetworkFee.ts","../src/utils/checkIsToken.ts","../src/utils/generateSecret.ts","../src/utils/denormalizeNumber.ts","../src/utils/normalizeNumber.ts","../src/utils/isNetworkCodeInEnvironment.ts","../src/utils/toUpperCase.ts","../src/utils/toLowerCase.ts","../src/utils/isUppercasedNetworkCode.ts","../src/utils/getNativeCryptocurrencyName.ts","../src/utils/isValidChainId.ts","../src/utils/isKnownEnv.ts","../src/utils/typeHelpers.ts","../src/services/Aggregator/ws/schemas/baseMessageSchema.ts","../src/constants/cfdExecutionTypes.ts","../src/services/Aggregator/ws/schemas/isolatedAddressUpdateSchema.ts","../src/services/Aggregator/ws/schemas/assetPairsConfigSchema.ts","../src/services/Aggregator/ws/schemas/errorSchema.ts","../src/services/Aggregator/ws/schemas/initMessageSchema.ts","../src/services/Aggregator/ws/schemas/pingPongMessageSchema.ts","../src/services/Aggregator/ws/schemas/cfdBalancesSchema.ts","../src/constants/positionStatuses.ts","../src/services/Aggregator/ws/schemas/isolatedCFDBalancesSchema.ts","../src/services/Aggregator/ws/schemas/futuresTradesStreamSchema.ts","../src/addressSchema.ts","../src/services/Aggregator/ws/schemas/orderBookSchema.ts","../src/services/Aggregator/ws/UnsubscriptionType.ts","../src/services/Aggregator/ws/schemas/unsubscriptionDoneSchema.ts","../src/services/Aggregator/ws/schemas/assetPairConfigSchema.ts","../src/services/Aggregator/ws/schemas/cfdAddressUpdateSchema.ts","../src/services/Aggregator/ws/schemas/isolatedCFDAddressUpdateSchema.ts","../src/services/Aggregator/ws/schemas/futuresTradeInfoSchema.ts","../src/utils/objectKeys.ts","../src/services/WebsocketTransport.ts","../src/services/Aggregator/schemas/index.ts","../src/services/Aggregator/schemas/orderSchema.ts","../src/services/Aggregator/schemas/futuresBalancesSchema.ts","../src/utils/httpToWS.ts","../src/services/BlockchainService/index.ts","../src/services/BlockchainService/schemas/index.ts","../src/services/BlockchainService/schemas/historySchema.ts","../src/services/BlockchainService/schemas/infoSchema.ts","../src/services/BlockchainService/schemas/cfdContractsSchema.ts","../src/services/BlockchainService/schemas/cfdHistorySchema.ts","../src/services/BlockchainService/schemas/governanceContractsSchema.ts","../src/services/BlockchainService/schemas/governanceChainsInfoSchema.ts","../src/services/BlockchainService/schemas/crossMarginInfoSchema.ts","../src/services/BlockchainService/schemas/getDelegateStatusSchema.ts","../src/services/BlockchainService/schemas/baseLimitsSchema.ts","../src/services/BlockchainService/schemas/pricesWithQuoteAssetSchema.ts","../src/services/PriceFeed/index.ts","../src/services/PriceFeed/schemas/index.ts","../src/services/PriceFeed/schemas/candlesSchema.ts","../src/services/PriceFeed/schemas/allTickersSchema.ts","../src/services/PriceFeed/schemas/leaderboardSchema.ts","../src/services/PriceFeed/schemas/statisticsOverviewSchema.ts","../src/services/PriceFeed/schemas/topPairsSchema.ts","../src/services/PriceFeed/schemas/winnersSchema.ts","../src/services/PriceFeed/ws/index.ts","../src/services/PriceFeed/ws/PriceFeedSubscription.ts","../src/services/PriceFeed/ws/priceFeedSubscriptions.ts","../src/services/PriceFeed/ws/schemas/index.ts","../src/services/PriceFeed/ws/schemas/tickerInfoSchema.ts","../src/services/PriceFeed/ws/schemas/candleSchema.ts","../src/services/PriceFeed/ws/schemas/priceSchema.ts","../src/services/PriceFeed/ws/schemas/allTickersSchema.ts","../src/Electra/index.ts","../src/services/ReferralSystem/index.ts","../src/services/ReferralSystem/schemas/index.ts","../src/services/ReferralSystem/schemas/linkSchema.ts","../src/services/ReferralSystem/schemas/errorSchema.ts","../src/services/ReferralSystem/schemas/subscribeToReferralErrorSchema.ts","../src/services/ReferralSystem/schemas/aggregatedCommissionHistorySchema.ts","../src/services/ReferralSystem/schemas/aggregatedHistorySchema.ts","../src/services/ReferralSystem/schemas/accountDetailsSchema.ts","../src/services/ReferralSystem/schemas/accountReferralsSchema.ts","../src/services/ReferralSystem/schemas/paginationInfoSchema.ts","../src/services/ReferralSystem/schemas/leaderboardSchema.ts","../src/services/ReferralSystem/schemas/isWhitelistedSchema.ts","../src/services/index.ts","../src/crypt/index.ts","../src/crypt/signCancelOrder.ts","../src/config/eip712DomainData.json","../src/crypt/getDomainData.ts","../src/crypt/signCancelOrderPersonal.ts","../src/crypt/signIsolatedMarginCFDOrder.ts","../src/crypt/signIsolatedMarginCFDOrderPersonal.ts","../src/crypt/hashIsolatedMarginCFDOrder.ts","../src/constants/cfdOrderTypes.ts","../src/crypt/signCrossMarginCFDOrder.ts","../src/crypt/signCrossMarginCFDOrderPersonal.ts","../src/crypt/hashCrossMarginCFDOrder.ts"],"sourcesContent":["import { BigNumber } from 'bignumber.js';\nBigNumber.config({ EXPONENTIAL_AT: 1e+9 });\n\nexport * as config from './config/index.js';\nexport { default as Unit } from './Unit/index.js';\nexport { default as Electra } from './Electra/index.js';\nexport * as utils from './utils/index.js';\nexport * as services from './services/index.js';\nexport * as crypt from './crypt/index.js';\nexport * from './constants/index.js';\nexport * from './types.js';\n","import jsonChains from './chains.json' assert { type: 'json' };\nimport jsonEnvs from './envs.json' assert { type: 'json' };\nimport { pureEnvSchema, pureChainInfoSchema } from './schemas/index.js';\n\nconst chains = pureChainInfoSchema.parse(jsonChains);\nconst envs = pureEnvSchema.parse(jsonEnvs);\n\nexport {\n  chains,\n  envs,\n};\n\nexport * as schemas from './schemas/index.js';\n","{\n  \"1\": {\n    \"chainId\": \"1\",\n    \"explorer\": \"https://etherscan.io/\",\n    \"label\": \"Ethereum Mainnet\",\n    \"shortName\": \"ETH\",\n    \"code\": \"eth\",\n    \"rpc\": \"https://cfd-ethelectra.finance/rpc\",\n    \"baseCurrencyName\": \"ETH\"\n  },\n  \"56\": {\n    \"chainId\": \"56\",\n    \"explorer\": \"https://bscscan.com/\",\n    \"label\": \"Binance Smart Chain\",\n    \"shortName\": \"BSC\",\n    \"code\": \"bsc\",\n    \"rpc\": \"https://bsc-dataseed.binance.org/\",\n    \"baseCurrencyName\": \"BNB\"\n  },\n  \"97\": {\n    \"chainId\": \"97\",\n    \"explorer\": \"https://testnet.bscscan.com/\",\n    \"label\": \"Binance Smart Chain Testnet\",\n    \"shortName\": \"BSC-Testnet\",\n    \"code\": \"bsc\",\n    \"rpc\": \"https://bsc-stage.node.electra.finance/\",\n    \"baseCurrencyName\": \"BNB\"\n  },\n  \"204\": {\n    \"chainId\": \"204\",\n    \"explorer\": \"http://opbnbscan.com/\",\n    \"label\": \"opBNB Chain\",\n    \"shortName\": \"opBNB\",\n    \"code\": \"opbnb\",\n    \"rpc\": \"https://opbnb-mainnet-rpc.bnbchain.org\",\n    \"baseCurrencyName\": \"BNB\"\n  },\n  \"11155111\": {\n    \"chainId\": \"11155111\",\n    \"explorer\": \"https://sepolia.etherscan.io/\",\n    \"label\": \"Sepolia\",\n    \"shortName\": \"ETH-Sepolia\",\n    \"code\": \"eth\",\n    \"rpc\": \"https://gateway.tenderly.co/public/sepolia\",\n    \"baseCurrencyName\": \"ETH\"\n  },\n  \"42161\": {\n    \"chainId\": \"42161\",\n    \"explorer\": \"https://arbiscan.io/\",\n    \"label\": \"Arbitrum\",\n    \"shortName\": \"Arbitrum\",\n    \"code\": \"arb\",\n    \"rpc\": \"https://arb1.arbitrum.io/rpc\",\n    \"baseCurrencyName\": \"ETH\"\n  },\n  \"250\": {\n    \"chainId\": \"250\",\n    \"explorer\": \"https://ftmscan.com/\",\n    \"label\": \"Fantom Mainnet\",\n    \"shortName\": \"FTM\",\n    \"code\": \"ftm\",\n    \"rpc\": \"https://rpcapi.fantom.network/\",\n    \"baseCurrencyName\": \"FTM\"\n  },\n  \"137\": {\n    \"chainId\": \"137\",\n    \"label\": \"Polygon Mainnet\",\n    \"shortName\": \"Polygon\",\n    \"code\": \"polygon\",\n    \"baseCurrencyName\": \"POL\",\n    \"rpc\": \"https://polygon-rpc.com/\",\n    \"explorer\": \"https://polygonscan.com/\"\n  },\n  \"66\": {\n    \"chainId\": \"66\",\n    \"explorer\": \"https://www.oklink.com/okc/\",\n    \"label\": \"OKC Mainnet\",\n    \"shortName\": \"OKC\",\n    \"code\": \"okc\",\n    \"rpc\": \"https://exchainrpc.okex.org/\",\n    \"baseCurrencyName\": \"OKT\"\n  },\n  \"2525\": {\n    \"chainId\": \"2525\",\n    \"label\": \"inEVM\",\n    \"shortName\": \"inEVM\",\n    \"code\": \"inevm\",\n    \"baseCurrencyName\": \"INJ\",\n    \"rpc\": \"https://inevm.calderachain.xyz/http/\",\n    \"explorer\": \"https://explorer.injective.network/\"\n  },\n  \"59144\": {\n    \"chainId\": \"59144\",\n    \"label\": \"Linea\",\n    \"shortName\": \"Linea\",\n    \"code\": \"linea\",\n    \"baseCurrencyName\": \"ETH\",\n    \"rpc\": \"https://rpc.linea.build/\",\n    \"explorer\": \"https://lineascan.build/\"\n  },\n  \"43114\": {\n    \"chainId\": \"43114\",\n    \"label\": \"Avalanche Network\",\n    \"shortName\": \"Avax\",\n    \"code\": \"avax\",\n    \"baseCurrencyName\": \"AVAX\",\n    \"rpc\": \"https://api.avax.network/ext/bc/C/rpc/\",\n    \"explorer\": \"https://snowtrace.io/\"\n  },\n  \"8453\": {\n    \"chainId\": \"8453\",\n    \"label\": \"Base\",\n    \"shortName\": \"BASE\",\n    \"code\": \"base\",\n    \"baseCurrencyName\": \"ETH\",\n    \"rpc\": \"https://mainnet.base.org/\",\n    \"explorer\": \"https://basescan.org/\"\n  },\n  \"123420000034\": {\n    \"chainId\": \"123420000034\",\n    \"explorer\": \"https://blockscout-123420000034.raas-testnet.gelato.digital/\",\n    \"label\": \"Event Horizon Testnet\",\n    \"shortName\": \"EH-Testnet\",\n    \"code\": \"eth\",\n    \"rpc\": \"https://rpc-123420000034.raas-testnet.gelato.digital/\",\n    \"baseCurrencyName\": \"ETH\"\n  },\n  \"1952959480\": {\n    \"chainId\": \"1952959480\",\n    \"explorer\": \"https://testnet-explorer.lumia.org/\",\n    \"label\": \"Lumia L2 Testnet\",\n    \"shortName\": \"Lumia L2 Testnet\",\n    \"code\": \"lumia\",\n    \"rpc\": \"https://testnet-rpc.lumia.org/\",\n    \"baseCurrencyName\": \"LUMIA\"\n  },\n  \"994873017\": {\n    \"chainId\": \"994873017\",\n    \"explorer\": \"https://explorer.lumia.org\",\n    \"label\": \"Lumia\",\n    \"shortName\": \"Lumia\",\n    \"code\": \"lumia\",\n    \"rpc\": \"https://mainnet-rpc.lumia.org/\",\n    \"baseCurrencyName\": \"LUMIA\"\n  },\n  \"4398026970692\": {\n    \"chainId\": \"4398026970692\",\n    \"explorer\": \"https://testnet.tonscan.org/\",\n    \"label\": \"TON Testnet\",\n    \"shortName\": \"TON Testnet\",\n    \"code\": \"ton\",\n    \"rpc\": \"https://testnet-v4.tonhubapi.com\",\n    \"baseCurrencyName\": \"TON\"\n  },\n  \"4398026970693\": {\n    \"chainId\": \"4398026970693\",\n    \"explorer\": \"https://tonscan.org/\",\n    \"label\": \"TON Mainnet\",\n    \"shortName\": \"TON Mainnet\",\n    \"code\": \"ton\",\n    \"rpc\": \"https://mainnet-v4.tonhubapi.com\",\n    \"baseCurrencyName\": \"TON\"\n  }\n}\n","{\n  \"production\": {\n    \"marginMode\": \"isolated\",\n    \"referralAPI\": \"https://electra.finance/referral-api\",\n    \"networks\": {\n      \"1\": {\n        \"api\": \"https://electra.finance/eth-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"56\": {\n        \"api\": \"https://electra.finance/bsc-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"250\": {\n        \"api\": \"https://electra.finance/ftm-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"137\": {\n        \"api\": \"https://electra.finance/polygon-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"66\": {\n        \"api\": \"https://electra.finance/okc-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"204\": {\n        \"api\": \"https://electra.finance/opbnb-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          },\n          \"indexer\": {\n            \"http\": \"/orion-indexer/\"\n          }\n        }\n      },\n      \"42161\": {\n        \"api\": \"https://electra.finance/arbitrum-one\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"2525\": {\n        \"api\": \"https://electra.finance/inevm-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"59144\": {\n        \"api\": \"https://electra.finance/linea-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"43114\": {\n        \"api\": \"https://electra.finance/avalanche-c-chain\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"8453\": {\n        \"api\": \"https://electra.finance/base-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"4398026970693\": {\n        \"api\": \"https://app.electra.trade/lumia-mainnet\",\n        \"rpc\": \"https://mainnet-v4.tonhubapi.com\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      }\n    }\n  },\n  \"testing\": {\n    \"marginMode\": \"isolated\",\n    \"referralAPI\": \"https://testing.electra.finance/referral-api\",\n    \"networks\": {\n      \"97\": {\n        \"api\": \"https://testing.electra.finance/bsc-testnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"11155111\": {\n        \"api\": \"https://testing.electra.finance/eth-sepolia\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"123420000034\": {\n        \"api\": \"https://testing.electra.finance/event-horizon-testnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"4398026970692\": {\n        \"api\": \"https://app.electra.trade/lumia-testnet\",\n        \"rpc\": \"https://testnet-v4.tonhubapi.com\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      }\n    }\n  },\n  \"staging\": {\n    \"marginMode\": \"isolated\",\n    \"referralAPI\": \"https://staging.electra.finance/referral-api\",\n    \"networks\": {\n      \"1\": {\n        \"api\": \"https://staging.electra.finance/eth-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"56\": {\n        \"api\": \"https://staging.electra.finance/bsc-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"250\": {\n        \"api\": \"https://staging.electra.finance/ftm-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"137\": {\n        \"api\": \"https://staging.electra.finance/polygon-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"66\": {\n        \"api\": \"https://staging.electra.finance/okc-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"204\": {\n        \"api\": \"https://staging.electra.finance/opbnb-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          },\n          \"indexer\": {\n            \"http\": \"/orion-indexer/\"\n          }\n        }\n      },\n      \"42161\": {\n        \"api\": \"https://staging.electra.finance/arbitrum-one\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"2525\": {\n        \"api\": \"https://staging.electra.finance/inevm-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"59144\": {\n        \"api\": \"https://staging.electra.finance/linea-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"43114\": {\n        \"api\": \"https://staging.electra.finance/avalanche-c-chain\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"8453\": {\n        \"api\": \"https://staging.electra.finance/base-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      }\n    }\n  },\n  \"experimental\": {\n    \"marginMode\": \"isolated\",\n    \"referralAPI\": \"https://testing.electra.finance/referral-api\",\n    \"networks\": {\n      \"97\": {\n        \"api\": \"https://testing.electra.finance/bsc-testnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"11155111\": {\n        \"api\": \"https://testing.electra.finance/eth-sepolia\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      }\n    }\n  },\n  \"kucoin-production\": {\n    \"marginMode\": \"isolated\",\n    \"referralAPI\": \"https://electra.finance/referral-api\",\n    \"networks\": {\n      \"1\": {\n        \"api\": \"https://electra.finance/eth-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"56\": {\n        \"api\": \"https://electra.finance/bsc-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"250\": {\n        \"api\": \"https://electra.finance/ftm-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"137\": {\n        \"api\": \"https://electra.finance/polygon-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"66\": {\n        \"api\": \"https://electra.finance/okc-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"42161\": {\n        \"api\": \"https://electra.finance/arbitrum-one\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"204\": {\n        \"api\": \"https://electra.finance/opbnb-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          },\n          \"indexer\": {\n            \"http\": \"/orion-indexer/\"\n          }\n        }\n      },\n      \"2525\": {\n        \"api\": \"https://electra.finance/inevm-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"59144\": {\n        \"api\": \"https://electra.finance/linea-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"43114\": {\n        \"api\": \"https://electra.finance/avalanche-c-chain\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          }\n        }\n      },\n      \"8453\": {\n        \"api\": \"https://electra.finance/base-mainnet\",\n        \"services\": {\n          \"aggregator\": {\n            \"http\": \"/backend\",\n            \"ws\": \"/v1\"\n          },\n          \"blockchain\": {\n            \"http\": \"\"\n          },\n          \"priceFeed\": {\n            \"all\": \"/price-feed\"\n          },\n          \"indexer\": {\n            \"http\": \"/orion-indexer/\"\n          }\n        }\n      }\n    }\n  }\n}\n","export { default as eip712DomainSchema } from './eip712DomainSchema.js';\nexport * from './pureEnvSchema.js';\nexport * from './pureChainSchema.js';\n","import { z } from 'zod';\n\nconst eip712DomainSchema = z.object({\n  name: z.string(),\n  version: z.string(),\n  chainId: z.string(),\n  verifyingContract: z.string(),\n  salt: z.string(),\n})\n  .partial()\n  .refine(\n    (data) => Object.keys(data).length > 0,\n    'At least one property should be filled in.',\n  );\n\nexport default eip712DomainSchema;\n","import { z } from 'zod';\nimport { SupportedChainId } from '../../types.js';\n\nexport const pureEnvNetworksSchema = z.object({\n  api: z.string(),\n  services: z.object({\n    blockchain: z.object({\n      http: z.string(),\n    }),\n    aggregator: z.object({\n      http: z.string(),\n      ws: z.string(),\n    }),\n    priceFeed: z.object({\n      all: z.string(),\n    }),\n  }),\n  rpc: z.string().optional(),\n});\n\nexport const pureEnvPayloadSchema = z.object({\n  marginMode: z.enum(['isolated', 'cross']),\n  referralAPI: z.string().url(),\n  networks: z.record(\n    z.nativeEnum(SupportedChainId),\n    pureEnvNetworksSchema\n  ),\n});\n\nexport const knownEnvs = ['production', 'staging', 'testing'] as const;\n\nexport const pureEnvSchema = z.record(\n  z.enum(knownEnvs).or(z.string()),\n  pureEnvPayloadSchema,\n);\n","/* eslint-disable @typescript-eslint/consistent-type-definitions */\nimport type { BigNumber } from 'bignumber.js';\nimport type subOrderStatuses from './constants/subOrderStatuses.js';\nimport type positionStatuses from './constants/positionStatuses.js';\nimport type { positionSides } from './constants/positionStatuses.js';\nimport type { knownEnvs } from './config/schemas';\nimport type { orderSides, networkCodes } from './constants';\n\nexport type DeepPartial<T> = T extends object\n  ? {\n      [P in keyof T]?: DeepPartial<T[P]>;\n    }\n  : T;\n\nexport type AssetPairUpdate = {\n  minQty: number;\n  pricePrecision: number;\n};\nexport type SubOrder = {\n  pair: string;\n  exchange: string;\n  id: number;\n  amount: number;\n  settledAmount: number;\n  price: number;\n  status: (typeof subOrderStatuses)[number];\n  side: 'BUY' | 'SELL';\n  subOrdQty: number;\n};\n\nexport type Balance = {\n  tradable: string;\n  reserved: string;\n  contract: string;\n  wallet: string;\n  allowance: string;\n};\n\nexport type OrderSide = (typeof orderSides)[number];\nexport type PositionSide = (typeof positionSides)[number];\nexport type PositionStatus = (typeof positionStatuses)[number];\n\ntype StatesByInstrument = {\n  instrument: string;\n  positionStatus: PositionStatus;\n  currentPrice: string;\n  floatingProfitLoss: string;\n  accumulatedFundingRate: string;\n  position: string;\n  positionPrice: string;\n  margin: string;\n  marginUSD: string;\n  leverage: string;\n  longFundingRatePerSecond: string;\n  longFundingRatePerDay: string;\n  shortFundingRatePerSecond: string;\n  shortFundingRatePerDay: string;\n  stopOutPrice: string | undefined;\n};\n\nexport type CFDBalance = {\n  balance: string;\n  profitLoss: string;\n  fundingRate: string;\n  equity: string;\n  reserves: string;\n  margin: string | undefined;\n  marginUSD: string;\n  freeMarginUSD: string;\n  availableWithdrawBalance: string;\n  statesByInstruments: StatesByInstrument[];\n};\n\nexport type IsolatedCFDBalance = {\n  instrument: string;\n  balance: string;\n  profitLoss: string;\n  fundingRate: string;\n  equity: string;\n  position: string;\n  currentPrice: string;\n  positionPrice: string;\n  reserves: string;\n  margin: string;\n  marginUSD: string;\n  freeMarginUSD: string;\n  availableWithdrawBalance: string;\n  leverage: string;\n  status: PositionStatus;\n  longFundingRatePerSecond: string;\n  longFundingRatePerDay: string;\n  shortFundingRatePerSecond: string;\n  shortFundingRatePerDay: string;\n  stopOutPrice: string | undefined;\n};\n\nexport type Order = {\n  senderAddress: string; // address\n  matcherAddress: string; // address\n  baseAsset: string; // address\n  quoteAsset: string; // address\n  matcherFeeAsset: string; // address\n  amount: number; // uint64\n  price: number; // uint64\n  matcherFee: number; // uint64\n  nonce: number; // uint64\n  expiration: number; // uint64\n  buySide: 0 | 1; // uint8, 1=buy, 0=sell\n  isPersonalSign: boolean; // bool\n};\n\nexport type InternalTransfer = {\n  from: string; // address\n  to: string; // address\n  amount: string; // uint112\n  expiration: string; // uint64\n  nonce: string; // uint64\n  chainId: number; // uint64\n  reserved: number; // uint192\n  signature: string; // bytes\n};\nexport type InternalTransferV2 = {\n  from: string; // address\n  to: string; // address\n  amount: string; // uint112\n  expiration: string; // uint64\n  nonce: string; // uint64\n  chainId: number; // uint64\n  signerChainId: number; // uint64\n  uniqueHash: string; // bytes32\n  externalAddress: string; // bytes\n  signature: string; // bytes\n};\n\nexport type SignedOrder = {\n  id: string; // hash of Order (it's not part of order structure in smart-contract)\n  signature: string; // bytes\n  needWithdraw?: boolean; // bool (not supported yet by smart-contract)\n} & Order;\n\ntype BaseFuturesOrder = {\n  senderAddress: string; // address\n  price: number; // uint64\n  matcherAddress: string; // address\n  price2: number;\n  orderType: number;\n  amount: number; // uint64\n  matcherFee: number; // uint64\n  expiration: number; // uint64\n  buySide: 0 | 1; // uint8, 1=buy, 0=sell\n  stopPrice?: number | undefined; // uint64\n  leverage?: string | undefined; // string\n  isPersonalSign: boolean; // bool\n  isFromDelegate?: boolean | undefined; // bool\n  signerChainId: number;\n};\n\nexport type IsolatedCFDOrder = {\n  instrumentAddress: string;\n  nonce: number; // uint64\n} & BaseFuturesOrder;\n\nexport type CrossMarginCFDOrder = {\n  instrumentIndex: number; // uint16\n} & BaseFuturesOrder;\n\nexport type SignedIsolatedMarginCFDOrder = {\n  id: string; // hash of Order (it's not part of order structure in smart-contract)\n  signature: string; // bytes\n} & IsolatedCFDOrder;\n\nexport type SignedCrossMarginCFDOrder = {\n  id: string; // hash of Order (it's not part of order structure in smart-contract)\n  signature: string; // bytes\n} & CrossMarginCFDOrder;\n\nexport type ReplaceFuturesSLTPOrder = {\n  blockchainOrder: SignedCrossMarginCFDOrder;\n  id: string;\n};\n\nexport type CancelOrderRequest = {\n  id: number | string;\n  senderAddress: string;\n  isPersonalSign: boolean;\n  isFromDelegate?: boolean | undefined;\n  signerChainId: number;\n};\n\nexport type SignedCancelOrderRequest = {\n  id: number | string;\n  senderAddress: string;\n  signature: string;\n} & CancelOrderRequest;\n\nexport type Pair = {\n  name: string;\n  baseCurrency: string;\n  quoteCurrency: string;\n  lastPrice: string;\n  openPrice: string;\n  change24h: string;\n  high: string;\n  low: string;\n  vol24h: string;\n};\n\nexport enum SupportedChainId {\n  MAINNET = '1',\n  BSC = '56',\n  FANTOM_OPERA = '250',\n  POLYGON = '137',\n  OKC = '66',\n  OPBNB = '204',\n  INEVM = '2525',\n  LINEA = '59144',\n  AVAX = '43114',\n  BASE = '8453',\n  ARBITRUM = '42161',\n  LUMIA = '994873017',\n  TON = '4398026970693',\n\n  BSC_TESTNET = '97',\n  SEPOLIA = '11155111',\n  EVENT_HORIZON_TESTNET = '123420000034',\n  LUMIA_TESTNET = '1952959480',\n  TON_TESTNET = '4398026970692',\n\n  // For testing and debug purpose\n  // BROKEN = '0',\n}\n\nexport type NetworkShortName = (typeof networkCodes)[number];\n\nconst balanceTypes = ['exchange', 'wallet'] as const;\n\nexport type Source = (typeof balanceTypes)[number];\nexport type Asset = {\n  name: string;\n  address: string;\n};\nexport type BalanceRequirement = {\n  readonly reason: string;\n  readonly asset: Asset;\n  readonly amount: string;\n  readonly sources: Source[];\n  readonly spenderAddress?: string | undefined;\n};\n\nexport type AggregatedBalanceRequirement = {\n  readonly asset: Asset;\n  readonly sources: Source[];\n  readonly spenderAddress?: string | undefined;\n  items: Partial<Record<string, string>>;\n};\n\nexport type ApproveFix = {\n  readonly type: 'byApprove';\n  readonly targetAmount: BigNumber.Value;\n  readonly spenderAddress: string;\n};\n\nexport type DepositFix = {\n  readonly type: 'byDeposit';\n  readonly amount: BigNumber.Value;\n  readonly asset: string;\n};\n\ntype Fix = ApproveFix | DepositFix;\n\nexport type BalanceIssue = {\n  readonly asset: Asset;\n  readonly message: string;\n  readonly sources: Source[];\n  readonly fixes?: Fix[];\n};\n\nexport type OrderbookItem = {\n  price: string;\n  amount: string;\n  vob: Array<{\n    side: 'BUY' | 'SELL';\n    pairName: string;\n  }>;\n};\n\nexport type FuturesTradeInfo = {\n  futuresTradeRequestId: string;\n  sender: string;\n  instrument: string;\n  buyPrice: number | undefined;\n  sellPrice: number | undefined;\n  buyPower: number;\n  sellPower: number;\n  minAmount: number;\n};\n\nexport type FuturesTradesStream = {\n  timestamp: number;\n  sender: string;\n  id: string;\n  instrument: string;\n  side: OrderSide;\n  positionSide: PositionSide;\n  amount: string;\n  leverage: string;\n  price: string;\n  txHash: string;\n  network: NetworkShortName;\n  realizedPnL: string | undefined;\n  roi: string | undefined;\n};\n\nexport enum HistoryTransactionStatus {\n  PENDING = 'Pending',\n  DONE = 'Done',\n  APPROVING = 'Approving',\n  CANCELLED = 'Cancelled',\n}\n\nexport type BasicAuthCredentials = {\n  username: string;\n  password: string;\n};\n\nexport type VerboseUnitConfig = {\n  // env?: string;\n  // api: string;\n  chainId: SupportedChainId;\n  nodeJsonRpc: string;\n  services: {\n    blockchainService: {\n      http: string;\n      // For example:\n      // http://localhost:3001/,\n      // http://10.123.34.23:3001/,\n      // https://blockchain:3001/\n    };\n    aggregator: {\n      http: string;\n      ws: string;\n      // For example:\n      // http://localhost:3002/,\n      // http://10.34.23.5:3002/,\n      // https://aggregator:3002/\n    };\n    priceFeed: {\n      api: string;\n      // For example:\n      // http://localhost:3003/,\n      // http://10.23.5.11:3003/,\n      // https://price-feed:3003/\n    };\n  };\n  basicAuth?: BasicAuthCredentials;\n};\n\nexport type KnownEnv = (typeof knownEnvs)[number];\n\nexport type Json =\n  | string\n  | number\n  | boolean\n  | null\n  | Json[]\n  | { [key: string]: Json };\n\nexport type MarginMode = 'cross' | 'isolated';\n","import { z } from 'zod';\nimport { networkCodes } from '../../constants/index.js';\nimport { SupportedChainId } from '../../types.js';\n\nexport const pureChainInfoPayloadSchema = z.object({\n  chainId: z.nativeEnum(SupportedChainId),\n  label: z.string(),\n  shortName: z.string(),\n  code: z.enum(networkCodes),\n  explorer: z.string(),\n  rpc: z.string(),\n  baseCurrencyName: z.string(),\n});\n\nexport const pureChainInfoSchema = z.record(\n  z.nativeEnum(SupportedChainId),\n  pureChainInfoPayloadSchema,\n);\n","const CANCEL_ORDER_TYPES = {\n  DeleteOrder: [\n    { name: 'senderAddress', type: 'address' },\n    { name: 'id', type: 'string' },\n  ],\n};\n\nexport default CANCEL_ORDER_TYPES;\n","const subOrderStatuses = [\n  'NEW', // created, wasn't added to IOB or wasn't accepted by the broker\n  'ACCEPTED', // added to IOB or accepted by the broker\n  'PARTIALLY_FILLED', // partially filled\n  'FILLED', // fully filled\n  'TX_PENDING', // sub order was filled and at least one of its trades is pending\n  'CANCELED', // canceled by user or by expiration\n  'REJECTED', // rejected by broker\n  'FAILED', // at least one trade failed\n  'SETTLED', // all trades successfully settled\n  'NOT_FOUND', // broker not processed sub order yet\n] as const;\n\nexport default subOrderStatuses;\n","import subOrderStatuses from './subOrderStatuses.js';\n\nconst orderStatuses = [\n  ...subOrderStatuses,\n  'ROUTING', // order got sub orders, but not all of them have status ACCEPTED\n] as const;\n\nexport default orderStatuses;\n","export default [\n  'ftm',\n  'bsc',\n  'eth',\n  'polygon',\n  'okc',\n  'arb',\n  'drip',\n  'opbnb',\n  'inevm',\n  'linea',\n  'avax',\n  'base',\n  'lumia',\n  'ton',\n] as const;\n","export const orderSides = [\n  'SELL',\n  'BUY'\n] as const\n","import { SupportedChainId } from '../types.js';\n\nexport const developmentChains = [\n  SupportedChainId.BSC_TESTNET,\n  SupportedChainId.SEPOLIA,\n  SupportedChainId.EVENT_HORIZON_TESTNET,\n  SupportedChainId.LUMIA_TESTNET,\n  SupportedChainId.TON_TESTNET,\n];\nexport const productionChains = [\n  SupportedChainId.MAINNET,\n  SupportedChainId.BSC,\n  SupportedChainId.FANTOM_OPERA,\n  SupportedChainId.POLYGON,\n  SupportedChainId.OKC,\n  SupportedChainId.OPBNB,\n  SupportedChainId.INEVM,\n  SupportedChainId.LINEA,\n  SupportedChainId.AVAX,\n  SupportedChainId.BASE,\n  SupportedChainId.ARBITRUM,\n  SupportedChainId.TON,\n];\n","export const INTERNAL_PROTOCOL_PRECISION = 8;\nexport const NATIVE_CURRENCY_PRECISION = 18;\n","export const DEPOSIT_ETH_GAS_LIMIT = 70000;\nexport const DEPOSIT_ERC20_GAS_LIMIT = 150000;\nexport const WITHDRAW_GAS_LIMIT = DEPOSIT_ERC20_GAS_LIMIT;\nexport const APPROVE_ERC20_GAS_LIMIT = 80000;\nexport const FILL_ORDERS_GAS_LIMIT = 220000;\nexport const DEFAULT_GAS_LIMIT = 700000;\nexport const GOVERNANCE_GET_REWARD_GAS_LIMIT = 250000;\nexport const GOVERNANCE_STAKE_GAS_LIMIT = 300000;\nexport const GOVERNANCE_UNSTAKE_GAS_LIMIT = 250000;\nexport const GOVERNANCE_VOTE_GAS_LIMIT = 200000;\nexport const VOTE_ERC20_GAS_LIMIT = 150000;\n","export { default as cancelOrderTypes } from './cancelOrderTypes.js';\nexport { default as orderStatuses } from './orderStatuses.js';\nexport { default as subOrderStatuses } from './subOrderStatuses.js';\nexport { default as networkCodes } from './networkCodes.js';\n\nexport * from './orderSides';\nexport * from './chains.js';\nexport * from './precisions.js';\nexport * from './gasLimits.js';\n\nexport const DEFAULT_EXPIRATION = 29 * 24 * 60 * 60 * 1000; // 29 days\n","import { ethers } from 'ethers';\nimport { Aggregator } from '../services/Aggregator/index.js';\nimport { BlockchainService } from '../services/BlockchainService/index.js';\nimport { PriceFeed } from '../services/PriceFeed/index.js';\nimport type { KnownEnv, SupportedChainId, VerboseUnitConfig } from '../types.js';\nimport { chains, envs } from '../config/index.js';\nimport { DEFAULT_EXPIRATION, type networkCodes } from '../constants/index.js';\nimport { simpleFetch } from 'simple-typed-fetch';\nimport calculateNetworkFee from '../utils/calculateNetworkFee.js';\nimport { BigNumber } from 'bignumber.js';\n\ntype KnownConfig = {\n  env: KnownEnv\n  chainId: SupportedChainId\n}\n\nexport default class Unit {\n  public readonly networkCode: typeof networkCodes[number];\n\n  public readonly baseCurrencyName: string;\n\n  public readonly chainId: SupportedChainId;\n\n  public readonly provider: ethers.JsonRpcProvider;\n\n  public readonly blockchainService: BlockchainService;\n\n  public readonly aggregator: Aggregator;\n\n  public readonly priceFeed: PriceFeed;\n\n  public readonly config: VerboseUnitConfig;\n\n  constructor(config: KnownConfig | VerboseUnitConfig) {\n    if ('env' in config) {\n      const staticConfig = envs[config.env];\n      if (!staticConfig) throw new Error(`Invalid environment: ${config.env}. Available environments: ${Object.keys(envs).join(', ')}`);\n\n      const chainConfig = chains[config.chainId];\n      if (!chainConfig) throw new Error(`Invalid chainId: ${config.chainId}. Available chainIds: ${Object.keys(chains).join(', ')}`);\n\n      const networkConfig = staticConfig.networks[config.chainId];\n      if (!networkConfig) throw new Error(`Invalid chainId: ${config.chainId}. Available chainIds: ${Object.keys(staticConfig.networks).join(', ')}`);\n\n      this.config = {\n        chainId: config.chainId,\n        nodeJsonRpc: networkConfig.rpc ?? chainConfig.rpc,\n        services: {\n          blockchainService: {\n            http: networkConfig.api + networkConfig.services.blockchain.http,\n          },\n          aggregator: {\n            http: networkConfig.api + networkConfig.services.aggregator.http,\n            ws: networkConfig.api + networkConfig.services.aggregator.ws,\n          },\n          priceFeed: {\n            api: networkConfig.api + networkConfig.services.priceFeed.all,\n          },\n        },\n      }\n    } else {\n      this.config = config;\n    }\n    const chainInfo = chains[config.chainId];\n    if (!chainInfo) throw new Error('Chain info is required');\n\n    this.chainId = config.chainId;\n    this.networkCode = chainInfo.code;\n    this.baseCurrencyName = chainInfo.baseCurrencyName;\n    const intNetwork = parseInt(this.chainId, 10);\n    if (Number.isNaN(intNetwork)) throw new Error('Invalid chainId (not a number)' + this.chainId);\n    this.provider = new ethers.JsonRpcProvider(this.config.nodeJsonRpc, intNetwork);\n    this.provider.pollingInterval = 1000;\n\n    this.blockchainService = new BlockchainService(\n      this.config.services.blockchainService.http,\n      this.config.basicAuth,\n    );\n    this.aggregator = new Aggregator(\n      this.config.services.aggregator.http,\n      this.config.services.aggregator.ws,\n      this.config.basicAuth,\n    );\n    this.priceFeed = new PriceFeed(\n      this.config.services.priceFeed.api,\n      this.config.basicAuth,\n    );\n  }\n\n  // async makePositionCloseOrder(address: string, symbol: string, type: 'isolated'): Promise<CFDOrder>\n  // async makePositionCloseOrder(address: string, symbol: string, type: 'cross'): Promise<CrossMarginCFDOrder>\n  async makePositionCloseOrder(address: string, symbol: string, type: 'cross') {\n    const { instruments } = await simpleFetch(this.blockchainService.getCrossMarginInfo)();\n    const instrumentInfo = instruments[symbol];\n    if (instrumentInfo === undefined) {\n      throw new Error(`Instrument ${symbol} not found. Available instruments: ${Object.keys(instruments).join(', ')}`);\n    }\n\n    const { statesByInstruments } = await simpleFetch(this.aggregator.getBalance)(address);\n    const instrumentState = statesByInstruments[symbol];\n    if (instrumentState === undefined) {\n      throw new Error(`Instrument state ${symbol} not found. Available instruments: ${Object.keys(statesByInstruments).join(', ')}`);\n    }\n    const { position, currentPrice } = instrumentState;\n    const { matcherAddress } = await simpleFetch(this.blockchainService.getInfo)();\n\n    const { totalFee } = await this.calculateFee(symbol, position, type);\n    const nonce = Date.now();\n    const expiration = nonce + DEFAULT_EXPIRATION;\n\n    const isShort = position < 0; // Sell\n\n    return {\n      senderAddress: address,\n      matcherAddress,\n      instrumentIndex: instrumentInfo.id,\n      amount: position,\n      price: currentPrice,\n      matcherFee: totalFee.toNumber(),\n      expiration,\n      side: isShort ? 'BUY' as const : 'SELL' as const,\n      isPersonalSign: false,\n    }\n  }\n\n  async calculateFee(symbol: string, amount: BigNumber.Value, type: 'cross' | 'isolated') {\n    const feeAssetName = 'USDT';\n    const { assetToAddress } = await simpleFetch(this.blockchainService.getInfo)();\n    const {\n      FILL_CFD_ORDERS_TRADE_GAS_LIMIT\n    } = await simpleFetch(this.blockchainService.getBaseLimits)();\n\n    let feePercent: number;\n    let symbolPrice: string | undefined;\n    if (type === 'isolated') {\n      const CFDContracts = await simpleFetch(this.blockchainService.getCFDContracts)();\n      const contractInfo = CFDContracts.find((c) => c.name === symbol);\n      if (contractInfo === undefined) {\n        throw new Error(`CFD contract ${symbol} not found`);\n      }\n      feePercent = contractInfo.feePercent;\n\n      const CFDPrices = await simpleFetch(this.blockchainService.getCFDPrices)();\n      if (!(symbol in CFDPrices)) throw new Error(`CFD price ${symbol} not found`);\n      symbolPrice = CFDPrices.prices[symbol];\n    } else {\n      const { instruments } = await simpleFetch(this.blockchainService.getCrossMarginInfo)();\n      const instrumentInfo = instruments[symbol];\n      if (instrumentInfo === undefined) {\n        throw new Error(`Instrument ${symbol} not found`);\n      }\n      feePercent = instrumentInfo.feePercent;\n      const CFDPrices = await simpleFetch(this.blockchainService.getCrossMarginCFDPrices)();\n      if (!(symbol in CFDPrices)) throw new Error(`CFD price ${symbol} not found`);\n      symbolPrice = CFDPrices.prices[symbol];\n    }\n    if (symbolPrice === undefined) throw new Error(`Price for ${symbol} not found`);\n\n    const gasPriceWei = await simpleFetch(this.blockchainService.getGasPriceWei)();\n    const gasPriceGwei = ethers.formatUnits(gasPriceWei, 'gwei');\n\n    const pricesWithQuoteAsset = await simpleFetch(this.blockchainService.getPricesWithQuoteAsset)();\n    const baseCurrencyPriceInQuoteAsset = pricesWithQuoteAsset.prices[ethers.ZeroAddress];\n    if (baseCurrencyPriceInQuoteAsset === undefined) throw new Error(`Base currency ${this.baseCurrencyName} price not found. Available: ${Object.keys(pricesWithQuoteAsset).join(', ')}`);\n    const feeAssetAddress = assetToAddress[feeAssetName];\n    if (feeAssetAddress === undefined) throw new Error(`Fee asset ${feeAssetName} address not found`);\n    const feeAssetPriceInQuoteAsset = pricesWithQuoteAsset.prices[feeAssetAddress];\n    if (feeAssetPriceInQuoteAsset === undefined) throw new Error(`Fee asset ${feeAssetName} not found. Available: ${Object.keys(pricesWithQuoteAsset).join(', ')}`);\n\n    const networkFee = calculateNetworkFee(\n      gasPriceGwei.toString(),\n      FILL_CFD_ORDERS_TRADE_GAS_LIMIT\n    )\n\n    const amountBN = new BigNumber(amount);\n    const priceForFee = new BigNumber(symbolPrice);\n\n    const networkFeeInQuoteAsset = new BigNumber(networkFee)\n      .multipliedBy(baseCurrencyPriceInQuoteAsset)\n      .toString();\n\n    const networkFeeInFeeAsset = new BigNumber(networkFeeInQuoteAsset)\n      .multipliedBy(\n        new BigNumber(1)\n          .div(feeAssetPriceInQuoteAsset),\n      ).toString();\n\n    const fee = new BigNumber(priceForFee)\n      .multipliedBy(amountBN)\n      .multipliedBy(feePercent)\n      .div(100);\n\n    const totalFee = fee.plus(networkFeeInFeeAsset);\n\n    return {\n      networkFee,\n      networkFeeInElt: networkFeeInQuoteAsset,\n      networkFeeInFeeAsset,\n      fee,\n      totalFee\n    }\n  }\n}\n","import { z } from 'zod';\nimport exchangeInfoSchema from './schemas/exchangeInfoSchema.js';\nimport cancelOrderSchema from './schemas/cancelOrderSchema.js';\nimport errorSchema from './schemas/errorSchema.js';\nimport { AggregatorWS } from './ws';\nimport type {\n  BasicAuthCredentials,\n  InternalTransferV2,\n  IsolatedCFDOrder,\n  ReplaceFuturesSLTPOrder,\n  SignedCancelOrderRequest,\n  SignedCrossMarginCFDOrder,\n  SignedOrder,\n} from '../../types.js';\nimport { pairConfigSchema, futuresBalancesSchema } from './schemas/index.js';\nimport toUpperCase from '../../utils/toUpperCase.js';\nimport httpToWS from '../../utils/httpToWS.js';\nimport { ethers } from 'ethers';\nimport orderSchema from './schemas/orderSchema.js';\nimport { fetchWithValidation } from 'simple-typed-fetch';\n\nclass Aggregator {\n  private readonly apiUrl: string;\n\n  readonly ws: AggregatorWS;\n\n  private readonly basicAuth?: BasicAuthCredentials | undefined;\n\n  get api() {\n    return this.apiUrl;\n  }\n\n  constructor(\n    httpAPIUrl: string,\n    wsAPIUrl: string,\n    basicAuth?: BasicAuthCredentials\n  ) {\n    this.apiUrl = httpAPIUrl;\n    this.ws = new AggregatorWS(httpToWS(wsAPIUrl));\n    this.basicAuth = basicAuth;\n\n    this.getPairConfig = this.getPairConfig.bind(this);\n    this.getPairConfigs = this.getPairConfigs.bind(this);\n    this.getPairsList = this.getPairsList.bind(this);\n    this.placeOrder = this.placeOrder.bind(this);\n    this.placeCFDOrder = this.placeCFDOrder.bind(this);\n    this.placeCrossMarginOrder = this.placeCrossMarginOrder.bind(this);\n    this.cancelOrder = this.cancelOrder.bind(this);\n    this.checkWhitelisted = this.checkWhitelisted.bind(this);\n    this.getLockedBalance = this.getLockedBalance.bind(this);\n    this.getVersion = this.getVersion.bind(this);\n    this.getPrices = this.getPrices.bind(this);\n  }\n\n  get basicAuthHeaders() {\n    if (this.basicAuth) {\n      return {\n        Authorization: `Basic ${btoa(\n          `${this.basicAuth.username}:${this.basicAuth.password}`\n        )}`,\n      };\n    }\n    return {};\n  }\n\n  getOrder = (orderId: string, owner?: string) => {\n    if (!ethers.isHexString(orderId)) {\n      throw new Error(`Invalid order id: ${orderId}. Must be a hex string`);\n    }\n    const url = new URL(`${this.apiUrl}/api/v1/order`);\n    url.searchParams.append('orderId', orderId);\n    if (owner !== undefined) {\n      if (!ethers.isAddress(owner)) {\n        throw new Error(`Invalid owner address: ${owner}`);\n      }\n      url.searchParams.append('owner', owner);\n    }\n    return fetchWithValidation(\n      url.toString(),\n      orderSchema,\n      { headers: this.basicAuthHeaders },\n      errorSchema\n    );\n  };\n\n  getPrices = (assetPair: string) => {\n    const url = new URL(`${this.apiUrl}/api/v1/prices/`);\n    url.searchParams.append('assetPair', assetPair);\n    return fetchWithValidation(\n      url.toString(),\n      z.number(),\n      { headers: this.basicAuthHeaders },\n      errorSchema\n    );\n  };\n\n  getPairsList = (market: 'futures') => {\n    const url = new URL(`${this.apiUrl}/api/v1/pairs/list`);\n    url.searchParams.append('market', toUpperCase(market));\n\n    return fetchWithValidation(\n      url.toString(),\n      z.array(z.string().toUpperCase()),\n      { headers: this.basicAuthHeaders }\n    );\n  };\n\n  getPairConfigs = (market: 'spot' | 'futures') => {\n    const url = new URL(`${this.apiUrl}/api/v1/pairs/exchangeInfo`);\n    url.searchParams.append('market', toUpperCase(market));\n\n    return fetchWithValidation(\n      url.toString(),\n      exchangeInfoSchema,\n      { headers: this.basicAuthHeaders },\n      errorSchema\n    );\n  };\n\n  getVersion = () =>\n    fetchWithValidation(\n      `${this.apiUrl}/api/v1/version`,\n      z.object({\n        serviceName: z.string(),\n        version: z.string(),\n        apiVersion: z.string(),\n      }),\n      { headers: this.basicAuthHeaders },\n      errorSchema\n    );\n\n  getPairConfig = (assetPair: string) =>\n    fetchWithValidation(\n      `${this.apiUrl}/api/v1/pairs/exchangeInfo/${assetPair}`,\n      pairConfigSchema,\n      { headers: this.basicAuthHeaders },\n      errorSchema\n    );\n\n  checkWhitelisted = (address: string) =>\n    fetchWithValidation(\n      `${this.apiUrl}/api/v1/whitelist/check?address=${address}`,\n      z.boolean(),\n      { headers: this.basicAuthHeaders },\n      errorSchema\n    );\n\n  placeOrder = (\n    signedOrder: SignedOrder,\n    isCreateInternalOrder: boolean,\n    partnerId?: string\n  ) => {\n    const headers = {\n      'Content-Type': 'application/json',\n      Accept: 'application/json',\n      ...(partnerId !== undefined && { 'X-Partner-Id': partnerId }),\n      ...this.basicAuthHeaders,\n    };\n\n    const url = new URL(\n      `${this.apiUrl}/api/v1/order/${isCreateInternalOrder ? 'internal' : ''}`\n    );\n\n    return fetchWithValidation(\n      url.toString(),\n      z.object({\n        orderId: z.string(),\n        placementRequests: z\n          .array(\n            z.object({\n              amount: z.number(),\n              brokerAddress: z.string(),\n              exchange: z.string(),\n            })\n          )\n          .optional(),\n      }),\n      {\n        headers,\n        method: 'POST',\n        body: JSON.stringify(signedOrder),\n      },\n      errorSchema\n    );\n  };\n\n  cancelOrder = (signedCancelOrderRequest: SignedCancelOrderRequest) =>\n    fetchWithValidation(\n      `${this.apiUrl}/api/v1/order`,\n      cancelOrderSchema,\n      {\n        method: 'DELETE',\n        headers: {\n          'Content-Type': 'application/json',\n          Accept: 'application/json',\n          ...this.basicAuthHeaders,\n        },\n        body: JSON.stringify({\n          ...signedCancelOrderRequest,\n          sender: signedCancelOrderRequest.senderAddress,\n        }),\n      },\n      errorSchema\n    );\n\n  placeCFDOrder = (\n    signedOrder: IsolatedCFDOrder,\n    isReversedOrder?: boolean\n  ) => {\n    const headers = {\n      'Content-Type': 'application/json',\n      Accept: 'application/json',\n      ...(isReversedOrder !== undefined && {\n        'X-Reverse-Order': isReversedOrder ? 'true' : 'false',\n      }),\n      ...this.basicAuthHeaders,\n    };\n\n    return fetchWithValidation(\n      `${this.apiUrl}/api/v1/order/futures`,\n      z.object({\n        orderId: z.string(),\n        placementRequests: z\n          .array(\n            z.object({\n              amount: z.number(),\n              brokerAddress: z.string(),\n              exchange: z.string(),\n            })\n          )\n          .optional(),\n      }),\n      {\n        headers,\n        method: 'POST',\n        body: JSON.stringify(signedOrder),\n      },\n      errorSchema\n    );\n  };\n\n  placeCrossMarginOrder = (signedOrder: SignedCrossMarginCFDOrder) => {\n    const headers = {\n      'Content-Type': 'application/json',\n      Accept: 'application/json',\n      ...this.basicAuthHeaders,\n    };\n\n    return fetchWithValidation(\n      `${this.apiUrl}/api/v1/order/futures`,\n      z.object({\n        orderId: z.string(),\n        placementRequests: z\n          .array(\n            z.object({\n              amount: z.number(),\n              brokerAddress: z.string(),\n              exchange: z.string(),\n            })\n          )\n          .optional(),\n      }),\n      {\n        headers,\n        method: 'POST',\n        body: JSON.stringify(signedOrder),\n      },\n      errorSchema\n    );\n  };\n\n  replaceFuturesSLTPOrder = (signedOrder: ReplaceFuturesSLTPOrder) => {\n    const headers = {\n      'Content-Type': 'application/json',\n      Accept: 'application/json',\n      ...this.basicAuthHeaders,\n    };\n\n    return fetchWithValidation(\n      `${this.apiUrl}/api/v1/order/futures/sltp/replace`,\n      z.object({\n        orderId: z.string(),\n        placementRequests: z\n          .array(\n            z.object({\n              amount: z.number(),\n              brokerAddress: z.string(),\n              exchange: z.string(),\n            })\n          )\n          .optional(),\n      }),\n      {\n        headers,\n        method: 'POST',\n        body: JSON.stringify(signedOrder),\n      },\n      errorSchema\n    );\n  };\n\n  getBalance = (address: string) => {\n    const url = new URL(\n      `${this.apiUrl}/api/v1/address/futures/balance/${address}`\n    );\n    return fetchWithValidation(url.toString(), futuresBalancesSchema);\n  };\n\n  getLockedBalance = (address: string, currency: string) => {\n    const url = new URL(\n      `${this.apiUrl}/api/v1/address/balance/reserved/${currency}`\n    );\n    url.searchParams.append('address', address);\n    return fetchWithValidation(\n      url.toString(),\n      z\n        .object({\n          [currency]: z.number(),\n        })\n        .partial(),\n      { headers: this.basicAuthHeaders },\n      errorSchema\n    );\n  };\n\n  withdraw = (signedInternalTransfer: InternalTransferV2) => {\n    const headers = {\n      'Content-Type': 'application/json',\n    };\n\n    const url = new URL(\n      `${this.apiUrl}/api/v1/address/futures/balance/spv/withdraw`\n    );\n\n    return fetchWithValidation(\n      url.toString(),\n      z.any(),\n      {\n        headers,\n        method: 'POST',\n        body: JSON.stringify(signedInternalTransfer),\n      },\n      errorSchema\n    );\n  };\n}\n\nexport * as schemas from './schemas/index.js';\nexport * as ws from './ws/index.js';\nexport { Aggregator };\n","import { z } from 'zod';\nimport pairConfigSchema from './pairConfigSchema.js';\n\nconst exchangeInfoSchema = z.array(pairConfigSchema);\n\nexport default exchangeInfoSchema;\n","import { z } from 'zod';\n\nconst pairConfigSchema = z.object({\n  maxPrice: z.number(),\n  maxQty: z.number(),\n  minPrice: z.number(),\n  minQty: z.number(),\n  name: z.string().toUpperCase(),\n  pricePrecision: z.number().int(),\n  qtyPrecision: z.number().int(),\n});\n\nexport default pairConfigSchema;\n","import { z } from 'zod';\n\nconst cancelOrderSchema = z.object({\n  orderId: z.union([z.number(), z.string()]),\n  cancellationRequests: z.array(z.object({\n    amount: z.number(),\n    brokerAddress: z.string(),\n    exchange: z.string(),\n  })).optional(),\n  remainingAmount: z.number().optional(),\n});\n\nexport default cancelOrderSchema;\n","import { z } from 'zod';\n\nconst errorSchema = z.object({\n  error: z.object({\n    code: z.number(),\n    reason: z.string(),\n  }),\n  timestamp: z.string(),\n});\n\nexport default errorSchema;\n","import { z } from 'zod';\nimport { validate as uuidValidate, v4 as uuidv4 } from 'uuid';\nimport MessageType from './MessageType.js';\nimport SubscriptionType from './SubscriptionType.js';\nimport {\n  pingPongMessageSchema, initMessageSchema,\n  errorSchema, orderBookSchema,\n  assetPairsConfigSchema, addressUpdateSchema,\n  isolatedAddressUpdateSchema, futuresTradesStreamSchema\n} from './schemas/index.js';\nimport UnsubscriptionType from './UnsubscriptionType.js';\nimport type {\n  AssetPairUpdate, OrderbookItem, Balance, CFDBalance,\n  FuturesTradeInfo, Json, BasicAuthCredentials, IsolatedCFDBalance, FuturesTradesStream,\n} from '../../../types.js';\nimport unsubscriptionDoneSchema from './schemas/unsubscriptionDoneSchema.js';\nimport assetPairConfigSchema from './schemas/assetPairConfigSchema.js';\nimport type { fullOrderSchema, orderUpdateSchema } from './schemas/addressUpdateSchema.js';\nimport type { isolatedFullOrderSchema, isolatedOrderUpdateSchema } from './schemas/isolatedAddressUpdateSchema.js';\nimport cfdAddressUpdateSchema from './schemas/cfdAddressUpdateSchema.js';\nimport isolatedCFDAddressUpdateSchema from './schemas/isolatedCFDAddressUpdateSchema.js';\nimport futuresTradeInfoSchema from './schemas/futuresTradeInfoSchema.js';\nimport { objectKeys } from '../../../utils/objectKeys.js';\nimport { WebsocketTransport, type BufferLike, type WebsocketTransportEvents } from '../../WebsocketTransport.js';\nimport { createNanoEvents, type Emitter } from 'nanoevents';\n// import assertError from '../../../utils/assertError.js';\n// import errorSchema from './schemas/errorSchema';\n\nconst UNSUBSCRIBE = 'u';\nconst SERVER_PING_INTERVAL = 10000;\nconst HEARBEAT_THRESHOLD = 5000;\n// const HANDSHAKE_TIMEOUT = 5000;\n\nconst messageSchema = z.union([\n  initMessageSchema,\n  pingPongMessageSchema,\n  addressUpdateSchema,\n  isolatedAddressUpdateSchema,\n  cfdAddressUpdateSchema,\n  isolatedCFDAddressUpdateSchema,\n  assetPairsConfigSchema,\n  assetPairConfigSchema,\n  orderBookSchema,\n  futuresTradeInfoSchema,\n  futuresTradesStreamSchema,\n  errorSchema,\n  unsubscriptionDoneSchema,\n]);\n\ntype FuturesTradeInfoPayload = {\n  s: string // wallet address\n  i: string // pair\n  a: number // amount\n  l?: number // leverage\n  p?: number // price\n  sl?: number // slippage\n  f?: number // blockchain fee (USDF)\n  F?: number // volume fee\n}\n\ntype PairsConfigSubscription = {\n  callback: ({ kind, data }: {\n    kind: 'initial' | 'update'\n    data: Partial<Record<string, AssetPairUpdate>>\n  }) => void\n}\n\ntype PairConfigSubscription = {\n  payload: string\n  callback: ({ kind, data }: {\n    kind: 'initial' | 'update'\n    data: AssetPairUpdate\n  }) => void\n}\n\ntype AggregatedOrderbookSubscription = {\n  payload: string\n  callback: (\n    asks: OrderbookItem[],\n    bids: OrderbookItem[],\n    pair: string\n  ) => void\n  errorCb?: (message: string) => void\n}\n\ntype FuturesTradeInfoSubscription = {\n  payload: FuturesTradeInfoPayload\n  callback: (futuresTradeInfo: FuturesTradeInfo) => void\n  errorCb?: (message: string) => void\n}\n\ntype FuturesTradesStreamSubscription = {\n  callback: (futuresTrades: FuturesTradesStream) => void\n}\n\ntype IsolatedAddressUpdateUpdate = {\n  kind: 'update'\n  balances: Partial<\n    Record<\n      string,\n      Balance\n    >\n  >\n  order?: z.infer<typeof isolatedOrderUpdateSchema> | z.infer<typeof isolatedFullOrderSchema> | undefined\n}\n\ntype AddressUpdateUpdate = {\n  kind: 'update'\n  balances: Partial<\n    Record<\n      string,\n      Balance\n    >\n  >\n  order?: z.infer<typeof orderUpdateSchema> | z.infer<typeof fullOrderSchema> | undefined\n}\n\ntype IsolatedAddressUpdateInitial = {\n  kind: 'initial'\n  balances: Partial<\n    Record<\n      string,\n      Balance\n    >\n  >\n  orders?: Array<z.infer<typeof isolatedFullOrderSchema>> | undefined // The field is not defined if the user has no orders\n}\n\ntype AddressUpdateInitial = {\n  kind: 'initial'\n  balances: Partial<\n    Record<\n      string,\n      Balance\n    >\n  >\n  orders?: Array<z.infer<typeof fullOrderSchema>> | undefined // The field is not defined if the user has no orders\n}\n\ntype IsolatedCFDAddressUpdateUpdate = {\n  kind: 'update'\n  balances?: IsolatedCFDBalance[] | undefined\n  order?: z.infer<typeof isolatedOrderUpdateSchema> | z.infer<typeof isolatedFullOrderSchema> | undefined\n}\n\ntype CfdAddressUpdateUpdate = {\n  kind: 'update'\n  balance?: CFDBalance | undefined\n  order?: z.infer<typeof orderUpdateSchema> | z.infer<typeof fullOrderSchema> | undefined\n}\n\ntype IsolatedCFDAddressUpdateInitial = {\n  kind: 'initial'\n  balances: IsolatedCFDBalance[]\n  orders?: Array<z.infer<typeof isolatedFullOrderSchema>> | undefined // The field is not defined if the user has no orders\n}\n\ntype CfdAddressUpdateInitial = {\n  kind: 'initial'\n  balance: CFDBalance\n  orders?: Array<z.infer<typeof fullOrderSchema>> | undefined // The field is not defined if the user has no orders\n}\n\ntype IsolatedAddressUpdateSubscription = {\n  payload: string\n  callback: (data: IsolatedAddressUpdateUpdate | IsolatedAddressUpdateInitial) => void\n  errorCb?: (message: string) => void\n}\n\ntype AddressUpdateSubscription = {\n  payload: string\n  callback: (data: AddressUpdateUpdate | AddressUpdateInitial) => void\n  errorCb?: (message: string) => void\n}\n\ntype IsolatedCFDAddressUpdateSubscription = {\n  payload: string\n  callback: (data: IsolatedCFDAddressUpdateUpdate | IsolatedCFDAddressUpdateInitial) => void\n}\n\ntype CfdAddressUpdateSubscription = {\n  payload: string\n  callback: (data: CfdAddressUpdateUpdate | CfdAddressUpdateInitial) => void\n}\n\ntype Subscription = {\n  [SubscriptionType.ADDRESS_UPDATES_SUBSCRIBE]: AddressUpdateSubscription\n  [SubscriptionType.ISOLATED_ADDRESS_UPDATES_SUBSCRIBE]: IsolatedAddressUpdateSubscription\n  [SubscriptionType.CFD_ADDRESS_UPDATES_SUBSCRIBE]: CfdAddressUpdateSubscription\n  [SubscriptionType.ISOLATED_CFD_ADDRESS_UPDATES_SUBSCRIBE]: IsolatedCFDAddressUpdateSubscription\n  [SubscriptionType.AGGREGATED_ORDER_BOOK_UPDATES_SUBSCRIBE]: AggregatedOrderbookSubscription\n  [SubscriptionType.ASSET_PAIRS_CONFIG_UPDATES_SUBSCRIBE]: PairsConfigSubscription\n  [SubscriptionType.ASSET_PAIR_CONFIG_UPDATES_SUBSCRIBE]: PairConfigSubscription\n  [SubscriptionType.FUTURES_TRADE_INFO_SUBSCRIBE]: FuturesTradeInfoSubscription\n  [SubscriptionType.FUTURES_TRADES_STREAM_SUBSCRIBE]: FuturesTradesStreamSubscription\n}\n\nconst exclusiveSubscriptions = [\n  SubscriptionType.ASSET_PAIRS_CONFIG_UPDATES_SUBSCRIBE,\n] as const;\n\nconst isSubType = (subType: string): subType is keyof Subscription => Object.values(SubscriptionType).some((t) => t === subType);\n\nconst unknownMessageTypeRegex = /An unknown message type: '(.*)', json: (.*)/;\nconst nonExistentMessageRegex = /Could not cancel nonexistent subscription: (.*)/;\n\n// type Message = {\n//   message: Json\n//   resolve: () => void\n// };\n\nconst FUTURES_SUFFIX = 'USD';\n\nexport type AggregatorWsEvents = {\n  open: WebsocketTransportEvents['open']\n  close: WebsocketTransportEvents['close']\n}\n\nfunction isAllUpperCase(str: string) {\n  return str === str.toUpperCase();\n}\n\nclass AggregatorWS {\n  private transport?: WebsocketTransport | undefined;\n\n  // is used to make sure we do not need to renew ws subscription\n  // we can not be sure that onclose event will recieve our code when we do `ws.close(4000)`\n  // since sometimes it can be replaced with system one.\n  // https://stackoverflow.com/questions/19304157/getting-the-reason-why-websockets-closed-with-close-code-1006\n  private isClosedIntentionally = false;\n\n  readonly subscriptions: Partial<{\n    [K in keyof Subscription]: Partial<Record<string, Subscription[K]>>\n  }> = {};\n\n  public onInit: (() => void) | undefined\n\n  public onError: ((err: string) => void) | undefined\n\n  public logger: ((message: string) => void) | undefined\n\n  private subIdReplacements: Partial<Record<string, string>> = {}\n\n  private readonly wsUrl: string;\n\n  private isAlive = false;\n\n  get api() {\n    const wsUrl = new URL(this.wsUrl);\n\n    if (this.basicAuth) {\n      wsUrl.username = this.basicAuth.username;\n      wsUrl.password = this.basicAuth.password;\n    }\n\n    return wsUrl;\n  }\n\n  readonly instanceId = uuidv4();\n\n  readonly basicAuth?: BasicAuthCredentials | undefined;\n\n  readonly emitter: Emitter<AggregatorWsEvents>\n\n  constructor(\n    wsUrl: string,\n    basicAuth?: BasicAuthCredentials\n  ) {\n    this.wsUrl = wsUrl\n    this.basicAuth = basicAuth\n    this.emitter = createNanoEvents()\n  }\n\n  private readonly handleWsOpen = () => {\n    this.setupHeartbeat();\n  }\n\n  private sendRaw(data: BufferLike) {\n    this.transport?.sendMessage(data);\n  }\n\n  private send(jsonObject: Json) {\n    const jsonData = JSON.stringify(jsonObject);\n    this.transport?.sendMessage(jsonData);\n    this.logger?.(`Sent (${Date.now()}) : ${jsonData}`);\n  }\n\n  private hearbeatIntervalId: NodeJS.Timer | undefined;\n\n  private setupHeartbeat() {\n    const heartbeat = () => {\n      if (this.isAlive) {\n        this.isAlive = false;\n      } else {\n        this.logger?.('Heartbeat timeout');\n        this.isClosedIntentionally = false;\n        this.clearHeartbeat();\n        this.transport?.close(4000);\n      }\n    };\n\n    this.hearbeatIntervalId = setInterval(heartbeat, SERVER_PING_INTERVAL + HEARBEAT_THRESHOLD);\n  }\n\n  private clearHeartbeat() {\n    this.isAlive = false;\n    clearInterval(this.hearbeatIntervalId);\n  }\n\n  subscribe<T extends typeof SubscriptionType[keyof typeof SubscriptionType]>(\n    type: T,\n    subscription: Subscription[T],\n    prevSubscriptionId?: string\n  ) {\n    const id = type === 'aobus'\n      ? ((subscription as any).payload as string) // TODO: Refactor!!!\n      : uuidv4();\n\n    const makeSubscription = () => {\n      const isExclusive = exclusiveSubscriptions.some((t) => t === type);\n      const subRequest: Json = {};\n      subRequest['T'] = type;\n      subRequest['id'] = id;\n\n      if ('payload' in subscription) {\n        if (typeof subscription.payload === 'string') {\n          subRequest['S'] = subscription.payload;\n        } else { // SwapInfoSubscriptionPayload | FuturesTradeInfoPayload | FuturesTradesStreamSubscription\n          subRequest['S'] = {\n            d: id,\n            ...subscription.payload,\n          };\n        }\n      }\n\n      const subKey = isExclusive ? 'default' : id;\n\n      if (prevSubscriptionId === undefined) { // Just subscribe\n        const subs = this.subscriptions[type];\n        if (isExclusive && subs && Object.keys(subs).length > 0) {\n          throw new Error(`Subscription '${type}' already exists. Please unsubscribe first.`);\n        }\n        this.logger?.(`Subscribing to ${type} with id ${id}. Subscription request: ${JSON.stringify(subRequest)}`);\n        this.subscriptions[type] = {\n          ...this.subscriptions[type],\n          [subKey]: subscription,\n        };\n      } else { // Replace subscription. Set new sub id, but save callback\n        this.logger?.(`Resubscribing to ${type} with id ${id}. Subscription request: ${JSON.stringify(subRequest)}`);\n        const prevSub = this.subscriptions[type]?.[prevSubscriptionId];\n        if (prevSub) {\n          this.subIdReplacements[prevSubscriptionId] = id; // Save mapping for future use (unsubscribe)\n          if (this.subscriptions[type]?.[prevSubscriptionId]) {\n            delete this.subscriptions[type]?.[prevSubscriptionId];\n          }\n          this.subscriptions[type] = {\n            ...this.subscriptions[type],\n            [subKey]: {\n              ...subscription,\n              callback: prevSub.callback,\n            }\n          };\n        }\n      }\n\n      this.logger?.(`Sending subscription request: ${JSON.stringify(subRequest)}`);\n      this.send(subRequest);\n    }\n\n    // if (!this.ws) {\n    //   this.initAsync()\n    //     .then(() => {\n    //       console.log(`Aggregator WS ${this.instanceId} is initialized`);\n    //       makeSubscription();\n    //     })\n    //     .catch((err) => {\n    //       assertError(err);\n    //       this.onError?.(err.message);\n    //     });\n    // } else makeSubscription();\n\n    if (!this.transport) {\n      this.init();\n    }\n    makeSubscription();\n\n    return id;\n  }\n\n  /**\n   * Returns newest subscription id for given id. Subscription id can be changed during resubscription.\n   * This function ensure that old subscription id will be replaced with newest one.\n   * @param id Id of subscription\n   * @returns Newest subscription id\n   */\n  getNewestSubscriptionId(id: string): string {\n    const newId = this.subIdReplacements[id];\n    if (newId !== undefined && newId !== id) {\n      return this.getNewestSubscriptionId(newId);\n    }\n    return id;\n  }\n\n  unsubscribe(subscription: keyof typeof UnsubscriptionType | string, details?: string) {\n    const newestSubId = this.getNewestSubscriptionId(subscription);\n    this.send({\n      T: UNSUBSCRIBE,\n      S: newestSubId,\n      ...(details !== undefined) && { d: details },\n    });\n\n    const isOrderBooksSubscription = (subId: string) => {\n      return subId.endsWith(FUTURES_SUFFIX) && !subId.includes('-') && isAllUpperCase(subId);\n    }\n\n    if (newestSubId.includes('0x')) { // is wallet address (ADDRESS_UPDATE)\n      const auSubscriptions = this.subscriptions[SubscriptionType.ADDRESS_UPDATES_SUBSCRIBE];\n      if (auSubscriptions) {\n        const targetAuSub = Object.entries(auSubscriptions).find(([, value]) => value?.payload === newestSubId);\n        if (targetAuSub) {\n          const [key] = targetAuSub;\n          delete this.subscriptions[SubscriptionType.ADDRESS_UPDATES_SUBSCRIBE]?.[key];\n        }\n      }\n\n      const aufSubscriptions = this.subscriptions[SubscriptionType.CFD_ADDRESS_UPDATES_SUBSCRIBE];\n      if (aufSubscriptions) {\n        const targetAufSub = Object.entries(aufSubscriptions).find(([, value]) => value?.payload === newestSubId);\n        if (targetAufSub) {\n          const [key] = targetAufSub;\n          delete this.subscriptions[SubscriptionType.CFD_ADDRESS_UPDATES_SUBSCRIBE]?.[key];\n        }\n      }\n    } else if (uuidValidate(newestSubId)) {\n      // is swap info subscription (contains hyphen)\n      delete this.subscriptions[SubscriptionType.ASSET_PAIR_CONFIG_UPDATES_SUBSCRIBE]?.[newestSubId];\n      delete this.subscriptions[SubscriptionType.FUTURES_TRADE_INFO_SUBSCRIBE]?.[newestSubId];\n      delete this.subscriptions[SubscriptionType.FUTURES_TRADES_STREAM_SUBSCRIBE]?.[newestSubId];\n      // !!! swap info subscription is uuid that contains hyphen\n    } else if (isOrderBooksSubscription(newestSubId)) { // is pair name(AGGREGATED_ORDER_BOOK_UPDATE)\n      const aobSubscriptions = this.subscriptions[SubscriptionType.AGGREGATED_ORDER_BOOK_UPDATES_SUBSCRIBE];\n      if (aobSubscriptions) {\n        const targetAobSub = Object.entries(aobSubscriptions).find(([, value]) => value?.payload === newestSubId);\n        if (targetAobSub) {\n          const [key] = targetAobSub;\n          delete this.subscriptions[SubscriptionType.AGGREGATED_ORDER_BOOK_UPDATES_SUBSCRIBE]?.[key];\n        }\n      }\n    } else if (newestSubId === UnsubscriptionType.ASSET_PAIRS_CONFIG_UPDATES_UNSUBSCRIBE) {\n      delete this.subscriptions[SubscriptionType.ASSET_PAIRS_CONFIG_UPDATES_SUBSCRIBE]?.['default'];\n    }\n  }\n\n  destroy() {\n    this.clearHeartbeat();\n    this.isClosedIntentionally = true;\n    this.transport?.destroy();\n    delete this.transport;\n  }\n\n  // private initPromise: Promise<void> | null = null;\n\n  // private initAsync() {\n  //   if (!this.initPromise) {\n  //     this.initPromise = new Promise<void>((resolve, reject) => {\n  //       try {\n  //         this.init();\n  //         resolve();\n  //       } catch (err) {\n  //         reject(err);\n  //       }\n  //     });\n  //   }\n\n  //   return this.initPromise;\n  // }\n\n  public isOpen(): boolean {\n    return this.transport?.isOpen === true;\n  }\n\n  public onWsOpen(openCallback: WebsocketTransportEvents['open']) {\n    return this.emitter.on('open', openCallback);\n  }\n\n  public onWsClose(closeCallback: WebsocketTransportEvents['close']) {\n    return this.emitter.on('close', closeCallback);\n  }\n\n  public init(isReconnect = false) {\n    this.isClosedIntentionally = false;\n    this.transport?.destroy();\n    this.transport = new WebsocketTransport(this.api);\n    this.transport.onError((err) => {\n      this.onError?.(`AggregatorWS error: ${err.message}`);\n      this.logger?.(`AggregatorWS: ${err.message}`);\n    });\n    this.transport.onClose((e) => {\n      this.clearHeartbeat();\n      this.transport?.unsubscribe();\n      this.emitter.emit('close', e);\n      this.logger?.(`AggregatorWS: connection closed ${this.isClosedIntentionally ? 'intentionally' : ''}`);\n      if (!this.isClosedIntentionally) {\n        setTimeout(() => {\n          this.init(true)\n        }, 5000)\n      }\n    });\n    this.transport.onOpen((e) => {\n      this.emitter.emit('open', e);\n      this.handleWsOpen();\n      // Re-subscribe to all subscriptions\n      if (isReconnect) {\n        Object.keys(this.subscriptions)\n          .filter(isSubType)\n          .forEach((subType) => {\n            const subscriptions = this.subscriptions[subType];\n            if (subscriptions) {\n              Object.keys(subscriptions).forEach((subId) => {\n                const subPayload = subscriptions[subId];\n                this.logger?.(`AggregatorWS: reconnecting to subscription ${subType} ${subId}. Params: ${JSON.stringify(subPayload)}`);\n                if (subPayload) this.subscribe(subType, subPayload, subId);\n              });\n            }\n          });\n      }\n      this.logger?.(`AggregatorWS: connection opened${isReconnect ? ' (reconnect)' : ''}`);\n    });\n    this.transport.onMessage((e) => {\n      this.isAlive = true;\n      const { data } = e;\n      if (typeof data !== 'string') throw new Error('AggregatorWS: received non-string message');\n      this.logger?.(`AggregatorWS: received message: ${data}`);\n      const rawJson: unknown = JSON.parse(data);\n\n      const json = messageSchema.parse(rawJson);\n\n      switch (json.T) {\n        case MessageType.ERROR: {\n          const err = errorSchema.parse(json);\n          // Get subscription error callback\n          // 2. Find subscription by id\n          // 3. Call onError callback\n\n          const { id, m } = err;\n          if (id !== undefined) {\n            const nonExistentMessageMatch = m.match(nonExistentMessageRegex);\n            const unknownMessageMatch = m.match(unknownMessageTypeRegex);\n            if (nonExistentMessageMatch !== null) {\n              const [, subscription] = nonExistentMessageMatch;\n              if (subscription === undefined) throw new TypeError('Subscription is undefined. This should not happen.')\n              console.warn(`You tried to unsubscribe from non-existent subscription '${subscription}'. This is probably a bug in the code. Please be sure that you are unsubscribing from the subscription that you are subscribed to.`)\n            } else if (unknownMessageMatch !== null) {\n              const [, subscription, jsonPayload] = unknownMessageMatch;\n              if (subscription === undefined) throw new TypeError('Subscription is undefined. This should not happen.')\n              if (jsonPayload === undefined) throw new TypeError('JSON payload is undefined. This should not happen.')\n              console.warn(`You tried to subscribe to '${subscription}' with unknown payload '${jsonPayload}'. This is probably a bug in the code. Please be sure that you are subscribing to the existing subscription with the correct payload.`)\n            } else {\n              const subType = objectKeys(this.subscriptions).find((st) => this.subscriptions[st]?.[id]);\n              if (subType === undefined) throw new Error(`AggregatorWS: cannot find subscription type by id ${id}. Current subscriptions: ${JSON.stringify(this.subscriptions)}`);\n              const sub = this.subscriptions[subType]?.[id];\n              if (sub === undefined) throw new Error(`AggregatorWS: cannot find subscription by id ${id}. Current subscriptions: ${JSON.stringify(this.subscriptions)}`);\n              if ('errorCb' in sub) {\n                sub.errorCb(err.m);\n              }\n            }\n          }\n          this.onError?.(err.m);\n        }\n          break;\n        case MessageType.PING_PONG:\n          this.sendRaw(data);\n          break;\n        case MessageType.UNSUBSCRIPTION_DONE:\n          // const { id } = json;\n          break;\n        case MessageType.FUTURES_TRADE_INFO_UPDATE:\n          this.subscriptions[SubscriptionType.FUTURES_TRADE_INFO_SUBSCRIBE]?.[json.id]?.callback({\n            futuresTradeRequestId: json.id,\n            sender: json.S,\n            instrument: json.i,\n            buyPrice: json.bp,\n            sellPrice: json.sp,\n            buyPower: json.bpw,\n            sellPower: json.spw,\n            minAmount: json.ma,\n          });\n          break;\n        case MessageType.FUTURES_TRADES_STREAM_UPDATE:\n          this.subscriptions[SubscriptionType.FUTURES_TRADES_STREAM_SUBSCRIBE]?.[json.id]?.callback(\n            {\n              timestamp: json._,\n              sender: json.S,\n              id: json.id,\n              instrument: json.i,\n              side: json.s,\n              positionSide: json.ps,\n              amount: json.a,\n              leverage: json.l,\n              price: json.p,\n              txHash: json.h,\n              network: json.n,\n              realizedPnL: json.rpnl,\n              roi: json.r,\n            }\n          );\n          break;\n        case MessageType.INITIALIZATION:\n          this.onInit?.();\n          break;\n        case MessageType.AGGREGATED_ORDER_BOOK_UPDATE: {\n          const { ob, S } = json;\n          const mapOrderbookItems = (rawItems: typeof ob.a | typeof ob.b) => rawItems.reduce<OrderbookItem[]>((acc, item) => {\n            const [\n              price,\n              amount,\n              vob,\n            ] = item;\n\n            acc.push({\n              price,\n              amount,\n              vob: vob.map(([side, pairName]) => ({\n                side,\n                pairName,\n              })),\n            });\n\n            return acc;\n          }, []);\n          this.subscriptions[\n            SubscriptionType.AGGREGATED_ORDER_BOOK_UPDATES_SUBSCRIBE\n          ]?.[json.S]?.callback(\n            mapOrderbookItems(ob.a),\n            mapOrderbookItems(ob.b),\n            S,\n          );\n        }\n          break;\n        case MessageType.ASSET_PAIR_CONFIG_UPDATE: {\n          const pair = json.u;\n          const [, minQty, pricePrecision] = pair;\n\n          this.subscriptions[\n            SubscriptionType.ASSET_PAIR_CONFIG_UPDATES_SUBSCRIBE\n          ]?.[json.id]?.callback({\n            data: {\n              minQty,\n              pricePrecision,\n            },\n            kind: json.k === 'i' ? 'initial' : 'update',\n          });\n\n          break;\n        }\n        case MessageType.ASSET_PAIRS_CONFIG_UPDATE: {\n          const pairs = json;\n          const priceUpdates: Partial<Record<string, AssetPairUpdate>> = {};\n\n          pairs.u.forEach(([pairName, minQty, pricePrecision]) => {\n            priceUpdates[pairName] = {\n              minQty,\n              pricePrecision,\n            };\n          });\n\n          this.subscriptions[\n            SubscriptionType.ASSET_PAIRS_CONFIG_UPDATES_SUBSCRIBE\n          ]?.['default']?.callback({\n            kind: json.k === 'i' ? 'initial' : 'update',\n            data: priceUpdates,\n          });\n        }\n          break;\n        case MessageType.CFD_ADDRESS_UPDATE:\n          switch (json.k) { // message kind\n            case 'i': { // initial\n              const fullOrders = (json.o)\n                ? json.o.reduce<Array<z.infer<typeof fullOrderSchema>>>((prev, o) => {\n                  prev.push(o);\n\n                  return prev;\n                }, [])\n                : undefined;\n\n              this.subscriptions[\n                SubscriptionType.CFD_ADDRESS_UPDATES_SUBSCRIBE\n              ]?.[json.id]?.callback({\n                kind: 'initial',\n                orders: fullOrders,\n                balance: json.b,\n              });\n            }\n              break;\n            case 'u': { // update\n              let orderUpdate: z.infer<typeof orderUpdateSchema> | z.infer<typeof fullOrderSchema> | undefined;\n              if (json.o) {\n                const firstOrder = json.o[0];\n                orderUpdate = firstOrder;\n              }\n\n              this.subscriptions[\n                SubscriptionType.CFD_ADDRESS_UPDATES_SUBSCRIBE\n              ]?.[json.id]?.callback({\n                kind: 'update',\n                order: orderUpdate,\n                balance: json.b,\n              });\n            }\n              break;\n            default:\n              break;\n          }\n          break;\n        case MessageType.ISOLATED_CFD_ADDRESS_UPDATE:\n          switch (json.k) { // message kind\n            case 'i': { // initial\n              const isolatedFullOrders = (json.o)\n                ? json.o.reduce<Array<z.infer<typeof isolatedFullOrderSchema>>>((prev, o) => {\n                  prev.push(o);\n\n                  return prev;\n                }, [])\n                : undefined;\n\n              this.subscriptions[\n                SubscriptionType.ISOLATED_CFD_ADDRESS_UPDATES_SUBSCRIBE\n              ]?.[json.id]?.callback({\n                kind: 'initial',\n                orders: isolatedFullOrders,\n                balances: json.b,\n              });\n            }\n              break;\n            case 'u': { // update\n              let isolatedOrderUpdate: z.infer<typeof isolatedOrderUpdateSchema> | z.infer<typeof isolatedFullOrderSchema> | undefined;\n              if (json.o) {\n                const isolatedFirstOrder = json.o[0];\n                isolatedOrderUpdate = isolatedFirstOrder;\n              }\n\n              this.subscriptions[\n                SubscriptionType.ISOLATED_CFD_ADDRESS_UPDATES_SUBSCRIBE\n              ]?.[json.id]?.callback({\n                kind: 'update',\n                order: isolatedOrderUpdate,\n                balances: json.b,\n              });\n            }\n              break;\n            default:\n              break;\n          }\n          break;\n        case MessageType.ADDRESS_UPDATE: {\n          const balances = (json.b)\n            ? Object.entries(json.b)\n              .reduce<Partial<Record<string, Balance>>>((prev, [asset, assetBalances]) => {\n                if (!assetBalances) return prev;\n                const [tradable, reserved, contract, wallet, allowance] = assetBalances;\n\n                prev[asset] = {\n                  tradable, reserved, contract, wallet, allowance,\n                };\n\n                return prev;\n              }, {})\n            : {};\n          switch (json.k) { // message kind\n            case 'i': { // initial\n              const fullOrders = json.o\n                ? json.o.reduce<Array<z.infer<typeof fullOrderSchema>>>((prev, o) => {\n                  prev.push(o);\n\n                  return prev;\n                }, [])\n                : undefined;\n\n              this.subscriptions[\n                SubscriptionType.ADDRESS_UPDATES_SUBSCRIBE\n              ]?.[json.id]?.callback({\n                kind: 'initial',\n                orders: fullOrders,\n                balances,\n              });\n            }\n              break;\n            case 'u': { // update\n              let orderUpdate: z.infer<typeof orderUpdateSchema> | z.infer<typeof fullOrderSchema> | undefined;\n              if (json.o) {\n                const firstOrder = json.o[0];\n                orderUpdate = firstOrder;\n              }\n\n              this.subscriptions[\n                SubscriptionType.ADDRESS_UPDATES_SUBSCRIBE\n              ]?.[json.id]?.callback({\n                kind: 'update',\n                order: orderUpdate,\n                balances,\n              });\n            }\n              break;\n            default:\n              break;\n          }\n        }\n          break;\n        case MessageType.ISOLATED_ADDRESS_UPDATE: {\n          const balances = (json.b)\n            ? Object.entries(json.b)\n              .reduce<Partial<Record<string, Balance>>>((prev, [asset, assetBalances]) => {\n                if (!assetBalances) return prev;\n                const [tradable, reserved, contract, wallet, allowance] = assetBalances;\n\n                prev[asset] = {\n                  tradable, reserved, contract, wallet, allowance,\n                };\n\n                return prev;\n              }, {})\n            : {};\n          switch (json.k) { // message kind\n            case 'i': { // initial\n              const isolatedFullOrders = json.o\n                ? json.o.reduce<Array<z.infer<typeof isolatedFullOrderSchema>>>((prev, o) => {\n                  prev.push(o);\n\n                  return prev;\n                }, [])\n                : undefined;\n\n              this.subscriptions[\n                SubscriptionType.ISOLATED_ADDRESS_UPDATES_SUBSCRIBE\n              ]?.[json.id]?.callback({\n                kind: 'initial',\n                orders: isolatedFullOrders,\n                balances,\n              });\n            }\n              break;\n            case 'u': { // update\n              let isolatedOrderUpdate: z.infer<typeof isolatedOrderUpdateSchema> | z.infer<typeof isolatedFullOrderSchema> | undefined;\n              if (json.o) {\n                const isolatedFirstOrder = json.o[0];\n                isolatedOrderUpdate = isolatedFirstOrder;\n              }\n\n              this.subscriptions[\n                SubscriptionType.ISOLATED_ADDRESS_UPDATES_SUBSCRIBE\n              ]?.[json.id]?.callback({\n                kind: 'update',\n                order: isolatedOrderUpdate,\n                balances,\n              });\n            }\n              break;\n            default:\n              break;\n          }\n        }\n          break;\n        default:\n          break;\n      }\n    });\n  }\n}\n\nexport * as schemas from './schemas/index.js';\nexport {\n  AggregatorWS,\n  SubscriptionType,\n  UnsubscriptionType,\n  MessageType,\n};\n","const MessageType = {\n  ERROR: 'e',\n  PING_PONG: 'pp',\n  INITIALIZATION: 'i',\n  AGGREGATED_ORDER_BOOK_UPDATE: 'aobu',\n  ASSET_PAIRS_CONFIG_UPDATE: 'apcu',\n  ASSET_PAIR_CONFIG_UPDATE: 'apiu',\n  ADDRESS_UPDATE: 'au',\n  ISOLATED_ADDRESS_UPDATE: 'iau',\n  CFD_ADDRESS_UPDATE: 'auf',\n  ISOLATED_CFD_ADDRESS_UPDATE: 'iauf',\n  FUTURES_TRADE_INFO_UPDATE: 'fti',\n  FUTURES_TRADES_STREAM_UPDATE: 'ftsu',\n  UNSUBSCRIPTION_DONE: 'ud',\n} as const;\n\nexport default MessageType;\n","const SubscriptionType = {\n  ASSET_PAIRS_CONFIG_UPDATES_SUBSCRIBE: 'apcus',\n  ASSET_PAIR_CONFIG_UPDATES_SUBSCRIBE: 'apius',\n  ADDRESS_UPDATES_SUBSCRIBE: 'aus',\n  ISOLATED_ADDRESS_UPDATES_SUBSCRIBE: 'iaus',\n  AGGREGATED_ORDER_BOOK_UPDATES_SUBSCRIBE: 'aobus',\n  CFD_ADDRESS_UPDATES_SUBSCRIBE: 'ausf',\n  ISOLATED_CFD_ADDRESS_UPDATES_SUBSCRIBE: 'iausf',\n  FUTURES_TRADE_INFO_SUBSCRIBE: 'fts',\n  FUTURES_TRADES_STREAM_SUBSCRIBE: 'ftss'\n} as const;\n\nexport default SubscriptionType;\n","export { default as addressUpdateSchema } from './addressUpdateSchema.js';\nexport { default as isolatedAddressUpdateSchema } from './isolatedAddressUpdateSchema.js';\nexport { default as assetPairsConfigSchema } from './assetPairsConfigSchema.js';\nexport { default as baseMessageSchema } from './baseMessageSchema.js';\nexport { default as errorSchema } from './errorSchema.js';\nexport { default as initMessageSchema } from './initMessageSchema.js';\nexport { default as pingPongMessageSchema } from './pingPongMessageSchema.js';\nexport { default as balancesSchema } from './balancesSchema.js';\nexport { default as cfdBalancesSchema } from './cfdBalancesSchema.js';\nexport { default as isolatedCFDBalancesSchema } from './isolatedCFDBalancesSchema.js';\nexport { futuresTradesStreamSchema } from './futuresTradesStreamSchema';\n\nexport * from './orderBookSchema.js';\n","import { z } from 'zod';\nimport orderStatuses from '../../../../constants/orderStatuses.js';\nimport subOrderStatuses from '../../../../constants/subOrderStatuses.js';\nimport MessageType from '../MessageType.js';\nimport balancesSchema from './balancesSchema.js';\nimport baseMessageSchema from './baseMessageSchema.js';\nimport executionTypes from '../../../../constants/cfdExecutionTypes.js';\n\nconst baseAddressUpdate = baseMessageSchema.extend({\n  id: z.string(),\n  T: z.literal(MessageType.ADDRESS_UPDATE),\n  S: z.string(), // subscription\n  uc: z.array(z.enum(['b', 'o'])), // update content\n});\n\nconst subOrderSchema = z.object({\n  i: z.number(), // id\n  I: z.string(), // parent order id\n  O: z.string(), // sender (owner)\n  P: z.string().toUpperCase(), // instrument\n  s: z.enum(['BUY', 'SELL']), // side\n  a: z.number(), // amount\n  A: z.number(), // settled amount\n  p: z.number(), // price\n  b: z.string(), // broker address\n  S: z.enum(subOrderStatuses), // status\n  o: z.boolean().optional() // internal only\n});\n\ntype TSubOrder = z.infer<typeof subOrderSchema>\n\nconst getTransformedSubOrders = (subOrders: TSubOrder[]) => {\n  return subOrders.map((so) => ({\n    id: so.i,\n    parentId: so.I,\n    sender: so.O,\n    instrument: so.P,\n    side: so.s,\n    amount: so.a,\n    settledAmount: so.A,\n    price: so.p,\n    brokerAddress: so.b,\n    status: so.S,\n  }))\n}\n\nexport const orderUpdateSchema = z.object({\n  I: z.string(), // id\n  A: z.number(), // settled amount\n  S: z.enum(orderStatuses), // status\n  l: z.boolean().optional(), // is liquidation order\n  t: z.number(), // update time\n  E: z.enum(executionTypes).optional(), // execution type\n  C: z.string().optional(), // trigger condition\n  lv: z.number().optional(), // leverage\n  roi: z.number().optional(), // ROI%\n  rpnl: z.number().optional(), // realized PnL\n  sltp: z.enum(['STOP_LOSS', 'TAKE_PROFIT']).optional(), // side\n  c: subOrderSchema.array(), // sub orders (content)\n})\n  .transform((val) => ({\n    ...val,\n    k: 'update' as const,\n  })).transform((o) => ({\n    kind: o.k,\n    id: o.I,\n    settledAmount: o.A,\n    status: o.S,\n    liquidated: o.l,\n    executionType: o.E,\n    triggerCondition: o.C,\n    leverage: o.lv,\n    roi: o.roi,\n    realizedPnL: o.rpnl,\n    sltp: o.sltp,\n    subOrders: getTransformedSubOrders(o.c),\n  }));\n\nexport const fullOrderSchema = z.object({\n  I: z.string(), // id\n  O: z.string(), // sender (owner)\n  P: z.string().toUpperCase(), // asset pair\n  s: z.enum(['BUY', 'SELL']), // side\n  sltp: z.enum(['STOP_LOSS', 'TAKE_PROFIT']).optional(), // side\n  a: z.number(), // amount\n  A: z.number(), // settled amount\n  p: z.number(), // signed price\n  E: z.enum(executionTypes).optional(), // execution type\n  C: z.string().optional(), // trigger condition\n  F: z.string().toUpperCase(), // fee asset\n  f: z.number().optional(), // fee\n  o: z.boolean(), // internal only\n  S: z.enum(orderStatuses), // status\n  ro: z.boolean().optional(), // reversed order\n  T: z.number(), // creation time / unix timestamp\n  t: z.number(), // update time\n  lv: z.number().optional(), // leverage\n  roi: z.number().optional(), // ROI%\n  ep: z.number().optional(), // entry price\n  c: subOrderSchema.array(), // sub orders (content)\n\n  // CFD only\n  L: z.number().optional(), // stop limit price,\n  l: z.boolean().optional(), // is liquidation order\n  rpnl: z.number().optional(), // realized PnL\n}).transform((val) => ({\n  ...val,\n  k: 'full' as const,\n})).transform((o) => ({\n  kind: o.k,\n  id: o.I,\n  clientOrdId: o.O,\n  instrument: o.P,\n  side: o.s,\n  sltp: o.sltp,\n  amount: o.a,\n  settledAmount: o.A,\n  price: o.p,\n  executionType: o.E,\n  triggerCondition: o.C,\n  feeAsset: o.F,\n  fee: o.f,\n  internalOnly: o.o,\n  status: o.S,\n  date: o.T,\n  updateDate: o.t,\n  stopPrice: o.L,\n  liquidated: o.l,\n  realizedPnL: o.rpnl,\n  leverage: o.lv,\n  roi: o.roi,\n  entryPrice: o.ep,\n  subOrders: getTransformedSubOrders(o.c),\n}));\n\nconst updateMessageSchema = baseAddressUpdate.extend({\n  k: z.literal('u'), // kind of message: \"u\" - updates\n  uc: z.array(z.enum(['b', 'o'])), // update content: \"o\" - orders updates, \"b\" - balance updates\n  b: balancesSchema.optional(),\n  o: z.tuple([fullOrderSchema.or(orderUpdateSchema)]).optional(),\n});\n\nconst initialMessageSchema = baseAddressUpdate.extend({\n  k: z.literal('i'), // kind of message: \"i\" - initial\n  b: balancesSchema,\n  o: z.array(fullOrderSchema)\n    .optional(), // When no orders — no field\n});\n\nconst addressUpdateSchema = z.union([\n  initialMessageSchema,\n  updateMessageSchema,\n]);\n\nexport default addressUpdateSchema;\n","import { z } from 'zod';\nimport { makePartial } from '../../../../utils/index.js';\n\nconst balancesSchema = z.record( // changed balances in format\n  z.string().toUpperCase(), // asset\n  z.tuple([\n    z.string(), // tradable balance\n    z.string(), // reserved balance\n    z.string(), // contract balance\n    z.string(), // wallet balance\n    z.string(), // allowance\n  ]),\n).transform(makePartial);\nexport default balancesSchema;\n","export { default as calculateNetworkFee } from './calculateNetworkFee.js';\nexport { default as checkIsToken } from './checkIsToken.js';\nexport { default as generateSecret } from './generateSecret.js';\nexport { default as denormalizeNumber } from './denormalizeNumber.js';\nexport { default as normalizeNumber } from './normalizeNumber.js';\nexport { default as isNetworkCodeInEnvironment } from './isNetworkCodeInEnvironment.js';\nexport { default as toUpperCase } from './toUpperCase.js';\nexport { default as toLowerCase } from './toLowerCase.js';\nexport { default as isUppercasedNetworkCode } from './isUppercasedNetworkCode.js';\nexport { default as getNativeCryptocurrencyName } from './getNativeCryptocurrencyName.js';\n\nexport { default as isValidChainId } from './isValidChainId.js';\nexport { default as isKnownEnv } from './isKnownEnv.js';\n// export { default as HttpError } from './httpError';\n\nexport * from './typeHelpers.js';\n","import { BigNumber } from 'bignumber.js';\nimport { ethers } from 'ethers';\nimport { NATIVE_CURRENCY_PRECISION } from '../constants/precisions.js';\n\nexport default function calculateNetworkFee(\n  gasPriceGwei: BigNumber.Value,\n  gasLimit: BigNumber.Value,\n) {\n  const networkFeeGwei = new BigNumber(gasPriceGwei).multipliedBy(gasLimit);\n\n  const bn = new BigNumber(ethers.parseUnits(networkFeeGwei.toString(), 'gwei').toString());\n  return bn.div(new BigNumber(10).pow(NATIVE_CURRENCY_PRECISION)).toString();\n}\n","import { ERC20__factory } from '@electra.finance/contracts/lib/ethers-v6/index.js';\nimport { ethers } from 'ethers';\nimport invariant from 'tiny-invariant';\n\nconst checkIsToken = async (address: string, provider?: ethers.Provider) => {\n  invariant(provider, 'No provider for token checking');\n  const tokenContract = ERC20__factory.connect(address, provider);\n  try {\n    const results = await Promise.all(\n      [\n        tokenContract.name(),\n        tokenContract.symbol(),\n        tokenContract.decimals(),\n        tokenContract.totalSupply(),\n        tokenContract.balanceOf(ethers.ZeroAddress),\n      ],\n    );\n\n    return Boolean(results);\n  } catch (err) {\n    return false;\n  }\n};\n\nexport default checkIsToken;\n","import { ethers } from 'ethers';\nclass XorShift128Plus {\n  private x: number;\n  private y: number;\n\n  constructor(seed: number) {\n    this.x = seed;\n    this.y = seed ^ 0x6d2b79f5; // 0x6d2b79f5 is the golden ratio\n  }\n\n  public nextInt32(): number {\n    let x = this.x;\n    const y = this.y;\n\n    this.x = y;\n    x ^= x << 23;\n    x ^= x >> 17;\n    x ^= y ^ (y >> 26);\n\n    this.y = x;\n    return x + y;\n  }\n}\n\nfunction generateSeed(): number {\n  return Math.floor(Date.now() * Math.random());\n}\n\nfunction generateRandomBytes(size: number, rng: XorShift128Plus): Uint8Array {\n  const buffer = new Uint8Array(size);\n\n  for (let i = 0; i < size; i++) {\n    buffer[i] = rng.nextInt32() & 0xff;\n  }\n\n  return buffer;\n}\n\nfunction isomorphicCryptoRandomBytes(size: number): Uint8Array {\n  const seed = generateSeed();\n  const rng = new XorShift128Plus(seed);\n  return generateRandomBytes(size, rng);\n}\n\nconst generateSecret = () => {\n  const RANDOM_BITS = 256;\n  const rand = isomorphicCryptoRandomBytes(RANDOM_BITS);\n  const secret = ethers.keccak256(rand);\n  return secret;\n};\n\nexport default generateSecret;\n","import { BigNumber } from 'bignumber.js';\n\n/**\n * Converts normalized blockchain (\"machine-readable\") number to denormalized (\"human-readable\") number.\n * @param input Any blockchain-normalized numeric value\n * @param decimals Blockchain asset precision\n * @returns BigNumber\n */\nexport default function denormalizeNumber(input: bigint, decimals: bigint) {\n  const decimalsBN = new BigNumber(decimals.toString());\n  if (!decimalsBN.isInteger()) throw new Error(`Decimals '${decimalsBN.toString()}' is not an integer`);\n  return new BigNumber(input.toString()).div(new BigNumber(10).pow(decimalsBN));\n}\n","import { BigNumber } from 'bignumber.js';\n\n/**\n * Converts denormalized (\"human-readable\") number to normalized (\"machine-readable\") number.\n * @param input Any numeric value\n * @param decimals Blockchain asset precision\n * @param roundingMode Rounding mode\n * @returns bigint\n */\nexport default function normalizeNumber(\n  input: BigNumber.Value,\n  decimals: BigNumber.Value,\n  roundingMode: BigNumber.RoundingMode,\n) {\n  const decimalsBN = new BigNumber(decimals);\n  if (!decimalsBN.isInteger()) throw new Error(`Decimals '${decimalsBN.toString()}' is not an integer`);\n  const inputBN = new BigNumber(input);\n  return BigInt(\n    inputBN\n      .multipliedBy(new BigNumber(10).pow(decimals))\n      .integerValue(roundingMode)\n      .toString(),\n  );\n}\n","import { chains, envs } from '../config/index.js';\n\nexport default function isNetworkCodeInEnvironment(networkCode: string, env: string) {\n  if (!(env in envs)) {\n    throw new Error(`Env ${env} is not supported. Available environments is: ${Object.keys(envs).join(', ')}`);\n  }\n  const envInfo = envs[env];\n  const envNetworks = envInfo?.networks;\n  if (!envNetworks) throw new Error('Env networks is undefined (isNetworkCodeInEnvironment)');\n\n  return Object.values(chains)\n    .some((chain) => chain.code.toLowerCase() === networkCode.toLowerCase() &&\n        chain.chainId in envNetworks);\n}\n","export default function toUpperCase<T extends string>(str: T): Uppercase<T> {\n  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n  return str.toUpperCase() as Uppercase<T>;\n}\n","export default function toLowerCase<T extends string>(str: T): Lowercase<T> {\n  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n  return str.toLowerCase() as Lowercase<T>;\n}\n","import { networkCodes } from '../constants/index.js';\nimport toUpperCase from './toUpperCase.js';\n\nconst isUppercasedNetworkCode = (value: string): value is Uppercase<typeof networkCodes[number]> => networkCodes\n  .map(toUpperCase).some((networkCode) => networkCode === value);\n\nexport default isUppercasedNetworkCode;\n","import { ethers } from 'ethers';\n\nconst getNativeCryptocurrencyName = (assetToAddress: Partial<Record<string, string>>) => {\n  const addressToAssetName = Object\n    .entries(assetToAddress)\n    .reduce<Partial<Record<string, string>>>((prev, [assetName, address]) => {\n      if (address === undefined) return prev;\n      return {\n        ...prev,\n        [address]: assetName,\n      };\n    }, {});\n\n  const nativeCryptocurrencyName = addressToAssetName[ethers.ZeroAddress];\n  if (nativeCryptocurrencyName === undefined) {\n    throw new Error('Native cryptocurrency asset name is not found');\n  }\n  return nativeCryptocurrencyName;\n};\n\nexport default getNativeCryptocurrencyName;\n","import { z } from 'zod';\nimport { SupportedChainId } from '../types.js';\n\nconst isValidChainId = (chainId: string): chainId is SupportedChainId => {\n  const { success } = z.nativeEnum(SupportedChainId).safeParse(chainId);\n  return success;\n};\n\nexport default isValidChainId;\n","import { knownEnvs } from '../config/schemas/index.js';\nimport type { KnownEnv, } from '../types.js';\n\nconst isKnownEnv = (env: string): env is KnownEnv => {\n  return knownEnvs.some((knownEnv) => knownEnv === env);\n}\n\nexport default isKnownEnv;\n","type WithReason = {\n  reason: string\n}\n\ntype WithCodeError = Error & {\n  code: number | string\n}\n\ntype WithMessage = {\n  message: string\n}\n\ntype WithDataError = Error & {\n  data: Record<string, unknown>\n}\n\ntype WithError = {\n  error: Record<string | number | symbol, unknown>\n}\n\nexport const makePartial = <Key extends string | number | symbol, Value>(value: Record<Key, Value>): Partial<Record<Key, Value>> => value;\n\nexport function isUnknownObject(x: unknown): x is {\n  [key in PropertyKey]: unknown\n} {\n  return x !== null && typeof x === 'object';\n}\n\nexport function isKeyOfObject<T extends object>(\n  key: string | number | symbol,\n  obj: T,\n): key is keyof T {\n  return key in obj;\n}\n\nexport function hasProp<T extends Record<string, unknown>, K extends PropertyKey>(\n  obj: T,\n  key: K,\n): obj is T & Record<K, unknown> {\n  return key in obj;\n}\n\nexport function isWithCode(candidate: unknown): candidate is WithCodeError {\n  if (!isUnknownObject(candidate) || !hasProp(candidate, 'code')) return false;\n  const type = typeof candidate.code;\n  return type === 'number' || type === 'string';\n}\n\nexport function isWithReason(candidate: unknown): candidate is WithReason {\n  if (!isUnknownObject(candidate)) return false;\n  const hasReasonProperty = hasProp(candidate, 'reason') && typeof candidate.reason === 'string';\n  return hasReasonProperty;\n}\n\nexport function isWithMessage(candidate: unknown): candidate is WithMessage {\n  if (!isUnknownObject(candidate)) return false;\n  const hasMessageProperty = hasProp(candidate, 'message') && typeof candidate.message === 'string';\n  return hasMessageProperty;\n}\n\nexport function isWithError(candidate: unknown): candidate is WithError {\n  if (!isUnknownObject(candidate)) return false;\n  const hasErrorProperty = hasProp(candidate, 'error') && isUnknownObject(candidate.error);\n  return hasErrorProperty;\n}\n\nexport function isWithData(candidate: unknown): candidate is WithDataError {\n  if (!isUnknownObject(candidate)) return false;\n  const hasDataProperty = hasProp(candidate, 'data') && typeof candidate.data === 'object';\n  return hasDataProperty;\n}\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\n\nconst baseMessageSchema = z.object({\n  T: z.nativeEnum(MessageType),\n  _: z.number(),\n});\n\nexport default baseMessageSchema;\n","const executionTypes = ['LIMIT', 'STOP_LIMIT'] as const;\n\nexport default executionTypes;\n","import { z } from 'zod';\nimport orderStatuses from '../../../../constants/orderStatuses.js';\nimport subOrderStatuses from '../../../../constants/subOrderStatuses.js';\nimport MessageType from '../MessageType.js';\nimport baseMessageSchema from './baseMessageSchema.js';\nimport executionTypes from '../../../../constants/cfdExecutionTypes.js';\nimport balancesSchema from './balancesSchema.js';\n\nconst baseAddressUpdate = baseMessageSchema.extend({\n  id: z.string(),\n  T: z.literal(MessageType.ISOLATED_ADDRESS_UPDATE),\n  S: z.string(), // subscription\n  uc: z.array(z.enum(['b', 'o'])), // update content\n});\n\nconst isolatedSubOrderSchema = z.object({\n  i: z.number(), // id\n  I: z.string(), // parent order id\n  O: z.string(), // sender (owner)\n  P: z.string().toUpperCase(), // asset pair\n  s: z.enum(['BUY', 'SELL']), // side\n  a: z.number(), // amount\n  A: z.number(), // settled amount\n  p: z.number(), // avg weighed settlement price\n  b: z.string(), // broker address\n  S: z.enum(subOrderStatuses), // status\n  o: z.boolean(), // internal only\n});\n\ntype TIsolatedSubOrder = z.infer<typeof isolatedSubOrderSchema>\n\nconst getTransformedIsolatedSubOrders = (subOrders: TIsolatedSubOrder[]) => {\n  return subOrders.map((so) => ({\n    pair: so.P,\n    id: so.i,\n    amount: so.a,\n    settledAmount: so.A,\n    price: so.p,\n    status: so.S,\n    side: so.s,\n    subOrdQty: so.A,\n  }))\n}\n\nexport const isolatedOrderUpdateSchema = z.object({\n  I: z.string(), // id\n  A: z.number(), // settled amount\n  S: z.enum(orderStatuses), // status\n  l: z.boolean().optional(), // is liquidation order\n  t: z.number(), // update time\n  E: z.enum(executionTypes).optional(), // execution type\n  C: z.string().optional(), // trigger condition\n  rpnl: z.number().optional(), // realized PnL\n  c: isolatedSubOrderSchema.array(), // sub orders (content)\n})\n  .transform((val) => ({\n    ...val,\n    k: 'update' as const,\n  })).transform((o) => ({\n    kind: o.k,\n    id: o.I,\n    settledAmount: o.A,\n    status: o.S,\n    liquidated: o.l,\n    executionType: o.E,\n    triggerCondition: o.C,\n    realizedPnL: o.rpnl,\n    subOrders: getTransformedIsolatedSubOrders(o.c),\n  }));\n\nexport const isolatedFullOrderSchema = z.object({\n  I: z.string(), // id\n  O: z.string(), // sender (owner)\n  P: z.string().toUpperCase(), // asset pair\n  s: z.enum(['BUY', 'SELL']), // side\n  a: z.number(), // amount\n  A: z.number(), // settled amount\n  p: z.number(), // signed price\n  E: z.enum(executionTypes).optional(), // execution type\n  C: z.string().optional(), // trigger condition\n  F: z.string().toUpperCase(), // fee asset\n  f: z.number(), // fee\n  o: z.boolean(), // internal only\n  S: z.enum(orderStatuses), // status\n  T: z.number(), // creation time / unix timestamp\n  t: z.number(), // update time\n  c: isolatedSubOrderSchema.array(), // sub orders (content)\n\n  // CFD only\n  L: z.number().optional(), // stop limit price,\n  l: z.boolean().optional(), // is liquidation order\n  rpnl: z.number().optional(), // realized PnL\n}).transform((val) => ({\n  ...val,\n  k: 'full' as const,\n})).transform((o) => ({\n  kind: o.k,\n  id: o.I,\n  clientOrdId: o.O,\n  instrument: o.P,\n  side: o.s,\n  amount: o.a,\n  settledAmount: o.A,\n  price: o.p,\n  executionType: o.E,\n  triggerCondition: o.C,\n  feeAsset: o.F,\n  fee: o.f,\n  status: o.S,\n  date: o.T,\n  stopPrice: o.L,\n  liquidated: o.l,\n  realizedPnL: o.rpnl,\n  subOrders: getTransformedIsolatedSubOrders(o.c),\n}));\n\nconst updateMessageSchema = baseAddressUpdate.extend({\n  k: z.literal('u'), // kind of message: \"u\" - updates\n  uc: z.array(z.enum(['b', 'o'])), // update content: \"o\" - orders updates, \"b\" - balance updates\n  b: balancesSchema.optional(),\n  o: z.tuple([isolatedFullOrderSchema.or(isolatedOrderUpdateSchema)]).optional(),\n});\n\nconst initialMessageSchema = baseAddressUpdate.extend({\n  k: z.literal('i'), // kind of message: \"i\" - initial\n  b: balancesSchema,\n  o: z.array(isolatedFullOrderSchema)\n    .optional(), // When no orders — no field\n});\n\nconst isolatedAddressUpdateSchema = z.union([\n  initialMessageSchema,\n  updateMessageSchema,\n]);\n\nexport default isolatedAddressUpdateSchema;\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\nimport baseMessageSchema from './baseMessageSchema.js';\n\nconst assetPairsConfigSchema = baseMessageSchema.extend({\n  id: z.string(),\n  T: z.literal(MessageType.ASSET_PAIRS_CONFIG_UPDATE),\n  k: z.enum(['i', 'u']),\n  u: z.array(\n    z.tuple([\n      z.string().toUpperCase(), // pairName\n      z.number(), // minQty\n      z.number().int(), // pricePrecision\n    ]),\n  ),\n});\n\nexport default assetPairsConfigSchema;\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\nimport baseMessageSchema from './baseMessageSchema.js';\n\nconst errorSchema = baseMessageSchema.extend({\n  T: z.literal(MessageType.ERROR),\n  c: z.number().int(), // code\n  id: z.string().optional(), // subscription id\n  m: z.string(), // error message,\n});\n\nexport default errorSchema;\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\nimport baseMessageSchema from './baseMessageSchema.js';\n\nconst initMessageSchema = baseMessageSchema.extend({\n  T: z.literal(MessageType.INITIALIZATION),\n  i: z.string(),\n});\n\nexport default initMessageSchema;\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\nimport baseMessageSchema from './baseMessageSchema.js';\n\nconst pingPongMessageSchema = baseMessageSchema.extend({\n  T: z.literal(MessageType.PING_PONG),\n});\n\nexport default pingPongMessageSchema;\n","import { z } from 'zod';\nimport positionStatuses from '../../../../constants/positionStatuses.js';\n\nconst sbiSchema = z\n  .object({\n    i: z.string(), // instrument\n    s: z.enum(positionStatuses), // position status\n    cp: z.string(), // current price\n    pnl: z.string(), // floating profit & loss\n    fr: z.string(), // accumulated funding rate\n    p: z.string(), // position\n    pp: z.string(), // position price\n    m: z.string(), // margin\n    mu: z.string(), // margin in USD\n    l: z.string(), // leverage\n    lfrs: z.string(), // long funding rate per second\n    lfrd: z.string(), // long funding rate per day\n    sfrs: z.string(), // short funding rate per second\n    sfrd: z.string(), // short funding rate per day\n    sop: z.string().optional() // stop out price\n  })\n\nexport const cfdBalanceSchema = z\n  .object({\n    b: z.string(), // balance\n    pnl: z.string(), // total floating profit & loss\n    fr: z.string(), // total accumulated funding rate\n    e: z.string(), // equity\n    r: z.string(), // total reserves\n    m: z.string().optional(), // margin\n    mu: z.string(), // total margin in USD\n    fmu: z.string(), // total free margin in USD\n    awb: z.string(), // available withdraw balance\n    sbi: sbiSchema.array() // states by instruments\n  })\n  .transform((obj) => {\n    const sbi = obj.sbi.map((state) => {\n      return {\n        instrument: state.i,\n        positionStatus: state.s,\n        currentPrice: state.cp,\n        floatingProfitLoss: state.pnl,\n        accumulatedFundingRate: state.fr,\n        position: state.p,\n        positionPrice: state.pp,\n        margin: state.m,\n        marginUSD: state.mu,\n        leverage: state.l,\n        longFundingRatePerSecond: state.lfrs,\n        longFundingRatePerDay: state.lfrd,\n        shortFundingRatePerSecond: state.sfrs,\n        shortFundingRatePerDay: state.sfrd,\n        stopOutPrice: state.sop,\n      }\n    });\n\n    return {\n      balance: obj.b,\n      profitLoss: obj.pnl,\n      fundingRate: obj.fr,\n      equity: obj.e,\n      reserves: obj.r,\n      margin: obj.m,\n      marginUSD: obj.mu,\n      freeMarginUSD: obj.fmu,\n      availableWithdrawBalance: obj.awb,\n      statesByInstruments: sbi,\n    }\n  });\n\nconst cfdBalancesSchema = z.array(cfdBalanceSchema);\n\nexport default cfdBalancesSchema;\n","export const positionSides = [\n  'LONG',\n  'SHORT'\n] as const\n\nconst positionStatuses = [\n  ...positionSides,\n  'CLOSING',\n  'LIQUIDATION',\n  'ZERO',\n] as const;\n\nexport default positionStatuses;\n","import { z } from 'zod';\nimport positionStatuses from '../../../../constants/positionStatuses.js';\n\nconst isolatedCFDBalanceSchema = z\n  .object({\n    i: z.string(),\n    b: z.string(),\n    pnl: z.string(),\n    fr: z.string(),\n    e: z.string(),\n    p: z.string(),\n    cp: z.string(),\n    pp: z.string(),\n    r: z.string(),\n    m: z.string(),\n    mu: z.string(),\n    fmu: z.string(),\n    awb: z.string(),\n    l: z.string(),\n    s: z.enum(positionStatuses),\n    lfrs: z.string(),\n    lfrd: z.string(),\n    sfrs: z.string(),\n    sfrd: z.string(),\n    sop: z.string().optional(),\n  })\n  .transform((obj) => ({\n    instrument: obj.i,\n    balance: obj.b,\n    profitLoss: obj.pnl,\n    fundingRate: obj.fr,\n    equity: obj.e,\n    position: obj.p,\n    currentPrice: obj.cp,\n    positionPrice: obj.pp,\n    reserves: obj.r,\n    margin: obj.m,\n    marginUSD: obj.mu,\n    freeMarginUSD: obj.fmu,\n    availableWithdrawBalance: obj.awb,\n    leverage: obj.l,\n    status: obj.s,\n    longFundingRatePerSecond: obj.lfrs,\n    longFundingRatePerDay: obj.lfrd,\n    shortFundingRatePerSecond: obj.sfrs,\n    shortFundingRatePerDay: obj.sfrd,\n    stopOutPrice: obj.sop,\n  }));\n\nconst isolatedCFDBalancesSchema = z.array(isolatedCFDBalanceSchema);\n\nexport default isolatedCFDBalancesSchema;\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\nimport { positionSides } from '../../../../constants/positionStatuses';\nimport { networkCodes, orderSides } from '../../../../constants';\nimport addressSchema from '../../../../addressSchema';\n// import addressSchema from '../../../../addressSchema';\n\nexport const futuresTradesStreamSchema = z.object({\n  T: z.literal(MessageType.FUTURES_TRADES_STREAM_UPDATE), // futures trades stream update\n  _: z.number(), // timestamp\n  S: addressSchema, // sender\n  id: z.string(), // request id\n  i: z.string(), // instrument\n  s: z.enum(orderSides), // trade side (SELL/BUY)\n  ps: z.enum(positionSides), // trade side (SELL/BUY)\n  a: z.string(), // trade amount\n  l: z.string(), // leverage\n  p: z.string(), // price\n  h: z.string(), // transaction hash\n  n: z.enum(networkCodes), // network\n  rpnl: z.string().optional(), // realized PnL, optional\n  r: z.string().optional(), // ROI in %, optional\n});\n","import { ethers } from 'ethers';\nimport { z } from 'zod';\n\nconst addressSchema = z.string().refine(ethers.isAddress, (value) => ({\n  message: `Should be an address, got ${value}`,\n}));\n\nexport default addressSchema;\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\nimport baseMessageSchema from './baseMessageSchema.js';\n\nexport const orderBookItemSchema = z.tuple([\n  z.string(), // price\n  z.string(), // size\n  z.array(z.tuple([\n    z.enum(['SELL', 'BUY']), // side\n    z.string().toUpperCase(), // pairname\n  ])),\n]);\n\nexport const orderBookSchema = baseMessageSchema.extend({\n  // id: z.string(),\n  T: z.literal(MessageType.AGGREGATED_ORDER_BOOK_UPDATE),\n  S: z.string(),\n  ob: z.object({\n    a: z.array(orderBookItemSchema),\n    b: z.array(orderBookItemSchema),\n  }),\n});\n","const UnsubscriptionType = {\n  ASSET_PAIRS_CONFIG_UPDATES_UNSUBSCRIBE: 'apcu',\n  FUTURES_TRADES_STREAM_UNSUBSCRIBE: 'ftsu'\n} as const;\nexport default UnsubscriptionType;\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\nimport baseMessageSchema from './baseMessageSchema.js';\n\nconst unsubscriptionDoneSchema = baseMessageSchema.extend({\n  id: z.string(),\n  T: z.literal(MessageType.UNSUBSCRIPTION_DONE),\n});\n\nexport default unsubscriptionDoneSchema;\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\nimport baseMessageSchema from './baseMessageSchema.js';\n\nconst assetPairConfigSchema = baseMessageSchema.extend({\n  id: z.string(),\n  T: z.literal(MessageType.ASSET_PAIR_CONFIG_UPDATE),\n  k: z.enum(['i', 'u']),\n  u: z.tuple([\n    z.string().toUpperCase(), // pairName\n    z.number(), // minQty\n    z.number().int(), // pricePrecision\n  ]),\n});\n\nexport default assetPairConfigSchema;\n","import { z } from 'zod';\nimport { fullOrderSchema, orderUpdateSchema } from './addressUpdateSchema.js';\nimport baseMessageSchema from './baseMessageSchema.js';\nimport MessageType from '../MessageType.js';\nimport { cfdBalanceSchema } from './cfdBalancesSchema.js';\n\nconst baseCfdAddressUpdate = baseMessageSchema.extend({\n  id: z.string(),\n  T: z.literal(MessageType.CFD_ADDRESS_UPDATE),\n  S: z.string(), // subscription\n  uc: z.array(z.enum(['b', 'o'])), // update content\n});\n\nconst updateMessageSchema = baseCfdAddressUpdate.extend({\n  k: z.literal('u'), // kind of message: \"u\" - updates\n  uc: z.array(z.enum(['b', 'o'])), // update content: \"o\" - orders updates, \"b\" - balance updates\n  b: cfdBalanceSchema.optional(),\n  o: z.tuple([fullOrderSchema.or(orderUpdateSchema)]).optional(),\n});\n\nconst initialMessageSchema = baseCfdAddressUpdate.extend({\n  k: z.literal('i'), // kind of message: \"i\" - initial\n  b: cfdBalanceSchema,\n  o: z.array(fullOrderSchema)\n    .optional(), // When no orders — no field\n});\n\nconst cfdAddressUpdateSchema = z.union([\n  initialMessageSchema,\n  updateMessageSchema,\n]);\n\nexport default cfdAddressUpdateSchema\n","import { z } from 'zod';\nimport baseMessageSchema from './baseMessageSchema.js';\nimport MessageType from '../MessageType.js';\nimport { isolatedFullOrderSchema, isolatedOrderUpdateSchema } from './isolatedAddressUpdateSchema.js';\nimport isolatedCFDBalancesSchema from './isolatedCFDBalancesSchema.js';\n\nconst baseCfdAddressUpdate = baseMessageSchema.extend({\n  id: z.string(),\n  T: z.literal(MessageType.ISOLATED_CFD_ADDRESS_UPDATE),\n  S: z.string(), // subscription\n  uc: z.array(z.enum(['b', 'o'])), // update content\n});\n\nconst updateMessageSchema = baseCfdAddressUpdate.extend({\n  k: z.literal('u'), // kind of message: \"u\" - updates\n  uc: z.array(z.enum(['b', 'o'])), // update content: \"o\" - orders updates, \"b\" - balance updates\n  b: isolatedCFDBalancesSchema.optional(),\n  o: z.tuple([isolatedFullOrderSchema.or(isolatedOrderUpdateSchema)]).optional(),\n});\n\nconst initialMessageSchema = baseCfdAddressUpdate.extend({\n  k: z.literal('i'), // kind of message: \"i\" - initial\n  b: isolatedCFDBalancesSchema,\n  o: z.array(isolatedFullOrderSchema)\n    .optional(), // When no orders — no field\n});\n\nconst isolatedCFDAddressUpdateSchema = z.union([\n  initialMessageSchema,\n  updateMessageSchema,\n]);\n\nexport default isolatedCFDAddressUpdateSchema\n","import { z } from 'zod';\nimport MessageType from '../MessageType.js';\n\nconst futuresTradeInfoSchema = z.object({\n  T: z.literal(MessageType.FUTURES_TRADE_INFO_UPDATE),\n  id: z.string(), // trade info request UUID, set by client side\n  S: z.string(), // sender\n  i: z.string(), // instrument\n  bp: z.number().optional(), // buy price\n  sp: z.number().optional(), // sell price\n  bpw: z.number(), // buy power\n  spw: z.number(), // sell power\n  ma: z.number(), // min amount\n});\n\nexport default futuresTradeInfoSchema;\n","export type ObjectKeys<T extends object> = `${Exclude<keyof T, symbol>}`;\n\n/**\nA strongly-typed version of `Object.keys()`.\nThis is useful since `Object.keys()` always returns an array of strings. This function returns a strongly-typed array of the keys of the given object.\n- [Explanation](https://stackoverflow.com/questions/55012174/why-doesnt-object-keys-return-a-keyof-type-in-typescript)\n- [TypeScript issues about this](https://github.com/microsoft/TypeScript/issues/45390)\n@example\n```\nconst stronglyTypedItems = objectKeys({a: 1, b: 2, c: 3}); // => Array<'a' | 'b' | 'c'>\nconst untypedItems = Object.keys(items); // => Array<string>\n```\n@category Improved builtin\n@category Type guard\n*/\n// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\nexport const objectKeys = Object.keys as <Type extends object>(value: Type) => Array<ObjectKeys<Type>>;\n","import type { ClientRequestArgs } from 'http';\nimport WebSocket from 'isomorphic-ws';\nimport type { Emitter } from 'nanoevents';\nimport { createNanoEvents } from 'nanoevents';\n\nexport type BufferLike =\n  | string\n  | Buffer\n  | DataView\n  | number\n  | ArrayBufferView\n  | Uint8Array\n  | ArrayBuffer\n  | SharedArrayBuffer\n  | readonly unknown[]\n  | readonly number[]\n  | { valueOf: () => ArrayBuffer }\n  | { valueOf: () => SharedArrayBuffer }\n  | { valueOf: () => Uint8Array }\n  | { valueOf: () => readonly number[] }\n  | { valueOf: () => string }\n  | { [Symbol.toPrimitive]: (hint: string) => string };\n\nexport type WebsocketTransportEvents = {\n  message: (messageEvent: WebSocket.MessageEvent) => void\n  open: (openEvent: WebSocket.Event) => void\n  error: (error: WebSocket.ErrorEvent) => void\n  close: (closeEvent: WebSocket.CloseEvent) => void\n};\n\nexport class WebsocketTransport {\n  private ws?: WebSocket;\n  private readonly emitter: Emitter<WebsocketTransportEvents>;\n  private readonly address: URL | string;\n  private readonly options:\n  | WebSocket.ClientOptions\n  | ClientRequestArgs\n  | undefined;\n\n  constructor(\n    address: URL | string,\n    options?: WebSocket.ClientOptions | ClientRequestArgs\n  ) {\n    this.address = address;\n    this.options = options;\n    this.emitter = createNanoEvents<WebsocketTransportEvents>();\n    this.connect();\n  }\n\n  public get isOpen(): boolean {\n    return this.ws?.readyState === WebSocket.OPEN;\n  }\n\n  unsubscribe() {\n    this.emitter.events = {};\n\n    this.ws?.removeEventListener('open', this.handleOpen);\n    this.ws?.removeEventListener('close', this.handleClose);\n    this.ws?.removeEventListener('message', this.handleMessage);\n    this.ws?.removeEventListener('error', this.handleError);\n  }\n\n  handleError = (error: WebSocket.ErrorEvent) => {\n    this.emitter.emit('error', error);\n  };\n\n  handleMessage = (message: WebSocket.MessageEvent) => {\n    this.emitter.emit('message', message);\n  };\n\n  handleClose = (closeEvent: WebSocket.CloseEvent) => {\n    this.emitter.emit('close', closeEvent);\n  };\n\n  handleOpen = (openEvent: WebSocket.Event) => {\n    this.flushMessageQueue();\n    this.emitter.emit('open', openEvent);\n  };\n\n  private connect() {\n    this.ws = new WebSocket(this.address, this.options);\n\n    this.ws.addEventListener('error', this.handleError);\n    this.ws.addEventListener('message', this.handleMessage);\n    this.ws.addEventListener('close', this.handleClose);\n    this.ws.addEventListener('open', this.handleOpen);\n  }\n\n  reconnect() {\n    this.connect();\n  }\n\n  onError(errorCallback: WebsocketTransportEvents['error']) {\n    return this.emitter.on('error', errorCallback);\n  }\n\n  onMessage(messageCallback: WebsocketTransportEvents['message']) {\n    return this.emitter.on('message', messageCallback);\n  }\n\n  private flushMessageQueue() {\n    if (this.ws?.readyState === WebSocket.OPEN) {\n      for (const message of this.messageQueue) {\n        this.ws.send(message);\n      }\n      this.messageQueue = [];\n    }\n  }\n\n  onClose(closeCallback: WebsocketTransportEvents['close']) {\n    return this.emitter.on('close', closeCallback);\n  }\n\n  onOpen(openCallback: WebsocketTransportEvents['open']) {\n    return this.emitter.on('open', openCallback);\n  }\n\n  private messageQueue: BufferLike[] = [];\n  sendMessage(message: BufferLike) {\n    if (this.ws?.readyState === WebSocket.OPEN) {\n      this.ws.send(message);\n    } else {\n      this.messageQueue.push(message);\n    }\n  }\n\n  close(code?: number, data?: Buffer) {\n    try {\n      this.ws?.close(code, data);\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  destroy(code?: number, data?: Buffer) {\n    this.close(code, data);\n    this.unsubscribe();\n    delete this.ws;\n  }\n}\n","export { default as cancelOrderSchema } from './cancelOrderSchema.js';\nexport { default as exchangeInfoSchema } from './exchangeInfoSchema.js';\nexport { default as pairConfigSchema } from './pairConfigSchema.js';\nexport { default as orderSchema } from './orderSchema.js';\nexport { default as errorSchema } from './errorSchema.js';\nexport { default as futuresBalancesSchema } from './futuresBalancesSchema.js';\n","import { ethers } from 'ethers';\nimport { z } from 'zod';\nimport { orderStatuses, subOrderStatuses } from '../../../constants/index.js';\n\nconst blockchainOrderSchema = z.object({\n  id: z.string().refine(ethers.isHexString, (value) => ({\n    message: `blockchainOrder.id must be a hex string, got ${value}`,\n  })),\n  senderAddress: z.string().refine(ethers.isAddress, (value) => ({\n    message: `blockchainOrder.senderAddress must be an address, got ${value}`,\n  })),\n  matcherAddress: z.string().refine(ethers.isAddress, (value) => ({\n    message: `blockchainOrder.matcherAddress must be an address, got ${value}`,\n  })),\n  baseAsset: z.string().refine(ethers.isAddress, (value) => ({\n    message: `blockchainOrder.baseAsset must be an address, got ${value}`,\n  })),\n  quoteAsset: z.string().refine(ethers.isAddress, (value) => ({\n    message: `blockchainOrder.quoteAsset must be an address, got ${value}`,\n  })),\n  matcherFeeAsset: z.string().refine(ethers.isAddress, (value) => ({\n    message: `blockchainOrder.matcherFeeAsset must be an address, got ${value}`,\n  })),\n  amount: z.number().int().nonnegative(),\n  price: z.number().int().nonnegative(),\n  matcherFee: z.number().int().nonnegative(),\n  nonce: z.number(),\n  expiration: z.number(),\n  buySide: z.union([z.literal(1), z.literal(0)]),\n  signature: z.string().refine(ethers.isHexString, (value) => ({\n    message: `blockchainOrder.signature must be a hex string, got ${value}`,\n  })).nullable(),\n  isPersonalSign: z.boolean(),\n  needWithdraw: z.boolean(),\n});\n\nconst tradeInfoSchema = z.object({\n  tradeId: z.string().uuid(),\n  tradeStatus: z.enum(['NEW', 'PENDING', 'OK', 'FAIL', 'TEMP_ERROR', 'REJECTED']),\n  filledAmount: z.number().nonnegative(),\n  price: z.number().nonnegative(),\n  creationTime: z.number(),\n  updateTime: z.number(),\n  matchedBlockchainOrder: blockchainOrderSchema.optional(),\n  matchedSubOrderId: z.number().int().nonnegative().optional(),\n  exchangeTradeInfo: z.boolean(),\n  poolTradeInfo: z.boolean(),\n});\n\nconst baseOrderSchema = z.object({\n  assetPair: z.string().toUpperCase(),\n  side: z.enum(['BUY', 'SELL']),\n  amount: z.number().nonnegative(),\n  remainingAmount: z.number().nonnegative(),\n  price: z.number().nonnegative(),\n  sender: z.string().refine(ethers.isAddress, (value) => ({\n    message: `order.sender must be an address, got ${value}`,\n  })),\n  filledAmount: z.number().nonnegative(),\n  internalOnly: z.boolean(),\n})\n\nconst brokerAddressSchema = z.enum(['INTERNAL_BROKER', 'SELF_BROKER'])\n  .or(z.string().refine(ethers.isAddress, (value) => ({\n    message: `subOrder.subOrders.[n].brokerAddress must be an address, got ${value}`,\n  })));\nconst subOrderSchema = baseOrderSchema.extend({\n  price: z.number(),\n  id: z.number(),\n  parentOrderId: z.string().refine(ethers.isHexString, (value) => ({\n    message: `subOrder.parentOrderId must be a hex string, got ${value}`,\n  })),\n  brokerAddress: brokerAddressSchema,\n  tradesInfo: z.record(\n    z.string().uuid(),\n    tradeInfoSchema\n  ),\n  status: z.enum(subOrderStatuses),\n  complexSwap: z.boolean(),\n});\n\nconst orderSchema = z.object({\n  orderId: z.string().refine(ethers.isHexString, (value) => ({\n    message: `orderId must be a hex string, got ${value}`,\n  })),\n  order: baseOrderSchema.extend({\n    id: z.string().refine(ethers.isHexString, (value) => ({\n      message: `order.id must be a hex string, got ${value}`,\n    })),\n    fee: z.number().nonnegative(),\n    feeAsset: z.string().toUpperCase(),\n    creationTime: z.number(),\n    blockchainOrder: blockchainOrderSchema,\n    subOrders: z.record(subOrderSchema),\n    updateTime: z.number(),\n    status: z.enum(orderStatuses),\n    settledAmount: z.number().nonnegative(),\n  })\n});\n\nexport default orderSchema;\n","import { z } from 'zod';\n\nconst futuresBalancesSchema = z.object({\n  address: z.string(),\n  balance: z.number(),\n  statesByInstruments: z.record(z.object({\n    instrument: z.string(),\n    position: z.number(),\n    positionStatus: z.string(),\n    positionPrice: z.number(),\n    currentPrice: z.number(),\n    oraclePrice: z.number(),\n    leverage: z.number(),\n    fundingRateFee: z.number(),\n    fundingRateFeeUSD: z.number(),\n    floatingPnL: z.number(),\n    margin: z.number(),\n    marginUSD: z.number(),\n    oraclePriceDeviationPercentage: z.number(),\n  })),\n});\n\nexport default futuresBalancesSchema;\n","const httpToWS = (url: string) => {\n  let parsedUrl: URL;\n  try {\n    parsedUrl = new URL(url);\n  } catch (e) {\n    console.error(`httpToWS: Invalid URL ${url}`);\n    throw e;\n  }\n  if (parsedUrl.protocol === 'https:') {\n    parsedUrl.protocol = 'wss:';\n  } else if (parsedUrl.protocol === 'http:') {\n    parsedUrl.protocol = 'ws:';\n  }\n  return parsedUrl.toString();\n};\n\nexport default httpToWS;\n","import { z } from 'zod';\nimport { fetchWithValidation } from 'simple-typed-fetch';\n\nimport { makePartial } from '../../utils/index.js';\n\nimport {\n  infoSchema, historySchema,\n  cfdContractsSchema,\n  cfdHistorySchema,\n  crossMarginHistorySchema,\n  governanceContractsSchema,\n  governanceChainsInfoSchema,\n  crossMarginInfoSchema,\n  baseLimitsSchema,\n  pricesWithQuoteAssetSchema,\n  getDelegateStatusSchema,\n} from './schemas/index.js';\nimport type { BasicAuthCredentials } from '../../types.js';\n\ntype CfdHistoryQuery = {\n  instrument?: string\n  page?: number\n  limit?: number\n} & Partial<Record<string, string | number>>\n\ntype SetDelegateOrderPayload = {\n  trader: string\n  delegate: string\n  isSetDelegate: boolean\n  deadline: number\n  signature: string\n}\n\nclass BlockchainService {\n  private readonly apiUrl: string;\n\n  private readonly basicAuth?: BasicAuthCredentials | undefined;\n\n  get api() {\n    return this.apiUrl;\n  }\n\n  constructor(\n    apiUrl: string,\n    basicAuth?: BasicAuthCredentials\n  ) {\n    this.apiUrl = apiUrl;\n    this.basicAuth = basicAuth;\n\n    this.getInfo = this.getInfo.bind(this);\n    this.getHistory = this.getHistory.bind(this);\n    this.getPrices = this.getPrices.bind(this);\n    this.getPricesWithQuoteAsset = this.getPricesWithQuoteAsset.bind(this);\n    this.getGasPriceWei = this.getGasPriceWei.bind(this);\n    this.getBlockNumber = this.getBlockNumber.bind(this);\n    this.getCFDContracts = this.getCFDContracts.bind(this);\n    this.getCFDHistory = this.getCFDHistory.bind(this);\n    this.getCrossMarginHistory = this.getCrossMarginHistory.bind(this);\n    this.getCrossMarginInfo = this.getCrossMarginInfo.bind(this);\n    this.getGovernanceContracts = this.getGovernanceContracts.bind(this);\n    this.getGovernanceChainsInfo = this.getGovernanceChainsInfo.bind(this);\n    this.getBaseLimits = this.getBaseLimits.bind(this);\n    this.setDelegateOrder = this.setDelegateOrder.bind(this);\n    this.getDelegateStatus = this.getDelegateStatus.bind(this);\n  }\n\n  get basicAuthHeaders() {\n    if (this.basicAuth) {\n      return {\n        Authorization: `Basic ${btoa(`${this.basicAuth.username}:${this.basicAuth.password}`)}`,\n      };\n    }\n    return {};\n  }\n\n  get blockchainServiceWsUrl() {\n    return `${this.apiUrl}/`;\n  }\n\n  private readonly getQueueLength = () => fetchWithValidation(\n    `${this.apiUrl}/api/queueLength`,\n    z.number().int(),\n    { headers: this.basicAuthHeaders }\n  );\n\n  get internal() {\n    return {\n      getQueueLength: this.getQueueLength.bind(this),\n    };\n  }\n\n  getInfo = () => fetchWithValidation(`${this.apiUrl}/api/info`, infoSchema);\n\n  getBaseLimits = () => fetchWithValidation(\n    `${this.apiUrl}/api/baseLimits`,\n    baseLimitsSchema,\n    { headers: this.basicAuthHeaders }\n  );\n\n  getHistory = (address: string) => fetchWithValidation(\n    `${this.apiUrl}/api/history/${address}`,\n    historySchema,\n    { headers: this.basicAuthHeaders }\n  );\n\n  getPrices = () => fetchWithValidation(\n    `${this.apiUrl}/api/prices`,\n    z.record(z.string()).transform(makePartial),\n    { headers: this.basicAuthHeaders }\n  );\n\n  getPricesWithQuoteAsset = () => fetchWithValidation(\n    `${this.apiUrl}/api/quotedPrices`,\n    pricesWithQuoteAssetSchema,\n    { headers: this.basicAuthHeaders }\n  );\n\n  getCFDPrices = () => fetchWithValidation(\n    `${this.apiUrl}/api/cfd/prices`,\n    pricesWithQuoteAssetSchema,\n    { headers: this.basicAuthHeaders }\n  );\n\n  getCrossMarginCFDPrices = () => fetchWithValidation(\n    `${this.apiUrl}/api/cfd/cross-margin/prices`,\n    pricesWithQuoteAssetSchema,\n    { headers: this.basicAuthHeaders }\n  );\n\n  getGasPriceWei = () => fetchWithValidation(\n    `${this.apiUrl}/api/gasPrice`,\n    z.string(),\n    { headers: this.basicAuthHeaders }\n  );\n\n  getBlockNumber = () => fetchWithValidation(\n    `${this.apiUrl}/api/blocknumber`,\n    z.number().int(),\n    { headers: this.basicAuthHeaders }\n  );\n\n  getCFDContracts = () => fetchWithValidation(\n    `${this.apiUrl}/api/cfd/contracts`,\n    cfdContractsSchema,\n    { headers: this.basicAuthHeaders }\n  );\n\n  getGovernanceContracts = () => fetchWithValidation(\n    `${this.apiUrl}/api/governance/info`,\n    governanceContractsSchema,\n    { headers: this.basicAuthHeaders }\n  );\n\n  getGovernanceChainsInfo = () => fetchWithValidation(\n    `${this.apiUrl}/api/governance/chains-info`,\n    governanceChainsInfoSchema,\n    { headers: this.basicAuthHeaders }\n  );\n\n  getCFDHistory = (address: string, query: CfdHistoryQuery = {}) => {\n    const url = new URL(`${this.apiUrl}/api/cfd/deposit-withdraw/${address}`);\n\n    Object.entries(query)\n      .forEach(([key, value]) => {\n        if (value === undefined) throw new Error('Value must be defined');\n        url.searchParams.append(key, value.toString());\n      });\n\n    return fetchWithValidation(\n      url.toString(),\n      cfdHistorySchema,\n      { headers: this.basicAuthHeaders }\n    );\n  };\n\n  getCrossMarginInfo = () => fetchWithValidation(\n    `${this.apiUrl}/api/cfd/cross-margin/info`,\n    crossMarginInfoSchema,\n    { headers: this.basicAuthHeaders }\n  );\n\n  getCrossMarginHistory = (address: string, query: CfdHistoryQuery = {}) => {\n    const url = new URL(`${this.apiUrl}/api/cfd/cross-margin/deposit-withdraw/${address}`);\n\n    Object.entries(query)\n      .forEach(([key, value]) => {\n        if (value === undefined) throw new Error('Value must be defined');\n        url.searchParams.append(key, value.toString());\n      });\n\n    return fetchWithValidation(\n      url.toString(),\n      crossMarginHistorySchema,\n      { headers: this.basicAuthHeaders }\n    );\n  };\n\n  setDelegateOrder = (payload: SetDelegateOrderPayload) => {\n    const url = new URL(`${this.apiUrl}/api/cfd/cross-margin/set-delegate-order`);\n    return fetchWithValidation(\n      url.toString(),\n      z.any(),\n      {\n        headers: {\n          ...this.basicAuthHeaders,\n          'Content-type': 'application/json',\n        },\n        method: 'POST',\n        body: JSON.stringify(payload),\n      }\n    );\n  }\n\n  getDelegateStatus = (address: string, status?: 'pending' | 'ok' | 'fail' | 'all') => {\n    const statusQuery = status === undefined ? '' : `&status=${status}`\n    const url = new URL(`${this.apiUrl}/api/cfd/cross-margin/set-delegate-status?address=${address}${statusQuery}`);\n\n    return fetchWithValidation(\n      url.toString(),\n      getDelegateStatusSchema,\n      { headers: this.basicAuthHeaders }\n    );\n  }\n}\n\nexport * as schemas from './schemas/index.js';\nexport { BlockchainService };\n","export { default as historySchema } from './historySchema.js';\nexport { default as infoSchema } from './infoSchema.js';\nexport { default as cfdContractsSchema } from './cfdContractsSchema.js';\nexport { cfdHistorySchema, crossMarginHistorySchema } from './cfdHistorySchema.js';\nexport { default as governanceContractsSchema } from './governanceContractsSchema.js';\nexport { default as governanceChainsInfoSchema } from './governanceChainsInfoSchema.js';\nexport { default as crossMarginInfoSchema } from './crossMarginInfoSchema.js';\nexport { default as getDelegateStatusSchema } from './getDelegateStatusSchema.js';\nexport { default as baseLimitsSchema } from './baseLimitsSchema.js';\nexport { pricesWithQuoteAssetSchema } from './pricesWithQuoteAssetSchema.js';\n","import { z } from 'zod';\nimport { HistoryTransactionStatus } from '../../../types.js';\n\nconst historySchema = z.array(z.object(\n  {\n    amount: z.string(),\n    amountNumber: z.string(),\n    asset: z.string(),\n    assetAddress: z.string(),\n    contractBalance: z.string().nullable().optional(),\n    createdAt: z.number(),\n    transactionHash: z.string(),\n    type: z.enum(['deposit', 'withdrawal']),\n    user: z.string(),\n    walletBalance: z.string().nullable().optional(),\n  },\n)).transform((response) => {\n  return response.map((item) => {\n    const {\n      type, createdAt, transactionHash, user,\n    } = item;\n    return {\n      type,\n      date: createdAt * 1000,\n      token: item.asset,\n      amount: item.amountNumber,\n      status: HistoryTransactionStatus.DONE,\n      transactionHash,\n      user,\n    };\n  });\n});\n\nexport default historySchema;\n","import { z } from 'zod';\nimport { makePartial } from '../../../utils/index.js';\n\nconst internalFeeAssetSchema = z.object({\n  type: z.enum(['percent', 'plain']),\n  value: z.number(),\n  asset: z.string(),\n});\n\nconst infoSchema = z.object({\n  chainId: z.number(),\n  chainName: z.string(),\n  exchangeContractAddress: z.string(),\n  oracleContractAddress: z.string(),\n  matcherAddress: z.string(),\n  orderFeePercent: z.number(),\n  assetToAddress: z.record(z.string()).transform(makePartial),\n  assetToDecimals: z.record(z.number()).transform(makePartial),\n  assetToIcons: z.record(z.string()).transform(makePartial).optional(),\n  cexTokens: z.string().array(),\n  internalFeeAssets: internalFeeAssetSchema.array().optional(),\n});\n\nexport default infoSchema;\n","import { z } from 'zod';\n\nconst cfdContractsSchema = z.array(z.object({\n  name: z.string(),\n  alias: z.string(),\n  address: z.string(),\n  leverage: z.number(),\n  soLevel: z.number(),\n  shortFR: z.number(),\n  longFR: z.number(),\n  shortFRStored: z.number(),\n  longFRStored: z.number(),\n  lastFRPriceUpdateTime: z.number(),\n  priceIndex: z.number(),\n  feePercent: z.number(),\n  withdrawMarginLevel: z.number(),\n  delegateContractAddress: z.string(),\n}));\n\nexport default cfdContractsSchema;\n","import { z } from 'zod';\nimport { HistoryTransactionStatus } from '../../../types.js';\n\nexport enum historyTransactionType {\n  WITHDRAW = 'withdrawal',\n  DEPOSIT = 'deposit',\n}\n\nconst baseHistoryItem = z.object({\n  _id: z.string(),\n  __v: z.number(),\n  address: z.string(),\n  balance: z.string().optional(),\n  amount: z.string(),\n  amountNumber: z.string(),\n  reason: z.enum(['WITHDRAW', 'DEPOSIT']),\n  transactionHash: z.string(),\n  blockNumber: z.number(),\n  createdAt: z.number(),\n});\n\nconst baseHistorySchema = z.object({\n  success: z.boolean(),\n  count: z.number(),\n  total: z.number(),\n  pagination: z.object({}),\n});\n\nconst cfdHistory = baseHistorySchema.extend({\n  data: z.array(baseHistoryItem.extend({\n    instrumentAddress: z.string(),\n    instrument: z.string(),\n    position: z.string(),\n    positionPrice: z.string(),\n    fundingRate: z.string(),\n  })),\n});\nconst crossMarginHistory = baseHistorySchema.extend({\n  data: z.array(baseHistoryItem),\n});\n\nconst baseHistoryItemTransform = (item: z.infer<typeof baseHistoryItem>) => {\n  const { createdAt, reason, transactionHash, amountNumber } = item;\n  const type = historyTransactionType[reason];\n  const result = {\n    type,\n    date: createdAt,\n    token: 'USDT',\n    amount: amountNumber,\n    status: HistoryTransactionStatus.DONE,\n    transactionHash,\n    user: item.address,\n  };\n\n  return result;\n};\n\nconst cfdHistoryTransform = (response: z.infer<typeof cfdHistory>) => (\n  response.data.map(({\n    instrumentAddress,\n    instrument,\n    position,\n    positionPrice,\n    fundingRate,\n    ...item\n  }) => ({\n    ...baseHistoryItemTransform(item),\n    instrumentAddress,\n    instrument,\n    position,\n    positionPrice,\n    fundingRate,\n  }))\n);\nconst crossMarginHistoryTransform = (response: z.infer<typeof crossMarginHistory>) => (\n  response.data.map(baseHistoryItemTransform)\n);\n\nexport const cfdHistorySchema = cfdHistory.transform(cfdHistoryTransform);\nexport const crossMarginHistorySchema = crossMarginHistory.transform(\n  crossMarginHistoryTransform\n);\n","import { z } from 'zod';\n\nconst governanceContractsSchema = z.object({\n  controllerAddress: z.string(),\n  veTOKENAddress: z.string(),\n  veTOKENYieldDistributorV4Address: z.string(),\n  tokenGaugeTOKENRewardsDistributorAddress: z.string(),\n  time_total: z.string(),\n  absolute_ve_token_in_voting: z.string(),\n  info: z.record(\n    z.string(),\n    z.object({\n      gaugeAddress: z.string(),\n      gaugeType: z.number(),\n      gaugeName: z.string(),\n    })\n  ),\n});\n\nexport default governanceContractsSchema;\n","import { z } from 'zod';\n\nconst governanceChainsInfoSchema = z.object({\n  isChainSupported: z.boolean(),\n});\n\nexport default governanceChainsInfoSchema;\n","import { z } from 'zod';\n\nconst crossMarginCFDItemInfo = z.object({\n  id: z.number(),\n  name: z.string(),\n  leverage: z.number(),\n  longFR: z.number(),\n  shortFR: z.number(),\n  longFRStored: z.number(),\n  shortFRStored: z.number(),\n  lastFRPriceUpdateTime: z.number(),\n  feePercent: z.number(),\n});\n\nconst crossMarginInfoSchema = z.object({\n  address: z.string().optional(),\n  oracleAddress: z.string().optional(),\n  withdrawMarginLevel: z.number().optional(),\n  fundingRateAccount: z.string().optional(),\n  soLevel: z.number().optional(),\n  delegateContractAddress: z.string().optional(),\n  electraConverterAddress: z.string().optional(),\n  instruments: z.record(z.string(), crossMarginCFDItemInfo),\n});\n\nexport default crossMarginInfoSchema;\n","import { z } from 'zod';\n\nconst activeRequest = z.object({\n  trader: z.string(),\n  delegate: z.string(),\n  deadline: z.number(),\n  status: z.string(),\n  transactionHashes: z.array(z.string()),\n});\n\nconst getDelegateStatusSchema = z.object({\n  deadline: z.number().optional(),\n  activeRequests: z.array(activeRequest),\n});\n\nexport default getDelegateStatusSchema;\n","import { z } from 'zod';\n\nconst baseLimitsSchema = z.object({\n  FILL_CFD_ORDERS_TRADE_GAS_LIMIT: z.number().int(),\n  WITHDRAW_GAS_LIMIT: z.number().int(),\n  DEPOSIT_ETH_GAS_LIMIT: z.number().int(),\n  DEPOSIT_ERC20_GAS_LIMIT: z.number().int(),\n  APPROVE_ERC20_GAS_LIMIT: z.number().int(),\n});\n\nexport default baseLimitsSchema;\n","import { z } from 'zod';\nimport { makePartial } from '../../../utils/index.js';\n\nexport const pricesWithQuoteAssetSchema = z.object({\n  quoteAsset: z.string(),\n  quoteAssetAddress: z.string(),\n  prices: z.record(z.string()).transform(makePartial)\n});\n","import { fetchWithValidation } from 'simple-typed-fetch';\nimport type { BasicAuthCredentials } from '../../types.js';\nimport { allTickersSchema, candlesSchema, leaderboardSchema, statisticsOverviewSchema, topPairsSchema, winnersSchema } from './schemas/';\nimport { PriceFeedWS } from './ws/index.js';\n\nclass PriceFeed {\n  private readonly apiUrl: string;\n\n  private readonly basicAuth?: BasicAuthCredentials | undefined;\n\n  readonly ws: PriceFeedWS;\n\n  get api() {\n    return this.apiUrl;\n  }\n\n  constructor(\n    apiUrl: string,\n    basicAuth?: BasicAuthCredentials\n  ) {\n    this.apiUrl = apiUrl;\n    this.ws = new PriceFeedWS(this.wsUrl);\n    this.basicAuth = basicAuth;\n\n    this.getCandles = this.getCandles.bind(this);\n    this.getAllTickers = this.getAllTickers.bind(this);\n    this.getLeaderboard = this.getLeaderboard.bind(this);\n    this.getStatisticsOverview = this.getStatisticsOverview.bind(this);\n    this.getTopPairs = this.getTopPairs.bind(this);\n    this.getWinners = this.getWinners.bind(this);\n  }\n\n  get basicAuthHeaders() {\n    if (this.basicAuth) {\n      return {\n        Authorization: `Basic ${btoa(`${this.basicAuth.username}:${this.basicAuth.password}`)}`,\n      };\n    }\n    return {};\n  }\n\n  getCandles = (\n    symbol: string,\n    timeStart: number,\n    timeEnd: number,\n    interval: '5m' | '30m' | '1h' | '1d',\n    exchange = 'all'\n  ) => {\n    const url = new URL(this.candlesUrl);\n    url.searchParams.append('symbol', symbol);\n    url.searchParams.append('timeStart', timeStart.toString());\n    url.searchParams.append('timeEnd', timeEnd.toString());\n    url.searchParams.append('interval', interval);\n    url.searchParams.append('exchange', exchange);\n\n    return fetchWithValidation(\n      url.toString(),\n      candlesSchema,\n      { headers: this.basicAuthHeaders }\n    );\n  };\n\n  getAllTickers = () => {\n    return fetchWithValidation(\n      `${this.tickersUrl}/all`,\n      allTickersSchema,\n      { headers: this.basicAuthHeaders }\n    );\n  }\n\n  getLeaderboard = () => {\n    return fetchWithValidation(\n      `${this.statisticsUrl}/futures/addresses`,\n      leaderboardSchema,\n      { headers: this.basicAuthHeaders }\n    );\n  }\n\n  getStatisticsOverview = () => {\n    return fetchWithValidation(\n      `${this.statisticsUrl}/overview?exchange=ALL`,\n      statisticsOverviewSchema,\n      { headers: this.basicAuthHeaders }\n    );\n  }\n\n  getTopPairs = () => {\n    return fetchWithValidation(\n      `${this.statisticsUrl}/top-pairs?exchange=ALL`,\n      topPairsSchema,\n      { headers: this.basicAuthHeaders }\n    );\n  }\n\n  getWinners = () => {\n    return fetchWithValidation(\n      `${this.statisticsUrl}/futures/winners`,\n      winnersSchema,\n      { headers: this.basicAuthHeaders }\n    );\n  }\n\n  get wsUrl() {\n    const url = new URL(this.apiUrl);\n    const wsProtocol = url.protocol === 'https:' ? 'wss' : 'ws';\n    return `${wsProtocol}://${url.host + url.pathname}/api/v1`;\n  }\n\n  get candlesUrl() {\n    return `${this.apiUrl}/api/v1/candles`;\n  }\n\n  get statisticsUrl() {\n    return `${this.apiUrl}/api/v1/statistics`;\n  }\n\n  get tickersUrl() {\n    return `${this.apiUrl}/api/v1/ticker`;\n  }\n}\n\nexport * as schemas from './schemas/index.js';\nexport * as ws from './ws/index.js';\nexport { PriceFeed };\n","export { default as candlesSchema } from './candlesSchema.js';\nexport { allTickersSchema } from './allTickersSchema.js';\nexport { leaderboardSchema } from './leaderboardSchema.js'\nexport { statisticsOverviewSchema } from './statisticsOverviewSchema.js'\nexport { topPairsSchema } from './topPairsSchema.js';\nexport { winnersSchema } from './winnersSchema.js'\n","import { z } from 'zod';\n\nconst candlesSchema = z.object({\n  candles: z.array(z.object({\n    close: z.string(),\n    high: z.string(),\n    low: z.string(),\n    open: z.string(),\n    time: z.number(),\n    timeEnd: z.number(),\n    timeStart: z.number(),\n    volume: z.string(),\n  })),\n  timeStart: z.number(),\n  timeEnd: z.number(),\n});\n\nexport default candlesSchema;\n","import { z } from 'zod';\n\nexport const allTickersSchema = z\n  .object({\n    pair: z.string(),\n    volume24: z.number(),\n    change24: z.number(),\n    lastPrice: z.number(),\n  })\n  .array();\n","import { z } from 'zod';\n\nexport const leaderboardSchema = z\n  .object({\n    address: z.string(),\n    totalVolume: z.number(),\n    todayVolume: z.number(),\n    totalPnl: z.number(),\n    todayPnl: z.number(),\n    totalRoi: z.number(),\n    todayRoi: z.number(),\n  })\n  .array();\n","import { z } from 'zod';\n\nexport const statisticsOverviewSchema = z\n  .object({\n    time: z.number(),\n    statisticsOverview: z.object({\n      volume24h: z.number(),\n      volume7d: z.number(),\n      volumeAllTime: z.number()\n    })\n  });\n","import { z } from 'zod';\n\nexport const topPairsSchema = z.object({\n  time: z.number(),\n  topPairs: z.array(\n    z.object({\n      assetPair: z.string(),\n      statisticsOverview: z.object({\n        volume24h: z.number(),\n        volume7d: z.number()\n      })\n    })\n  )\n});\n","import { z } from 'zod';\n\nexport const winnersSchema = z.object({\n  bestTrade: z.object({\n    address: z.string(),\n    instrument: z.string(),\n    leverage: z.number(),\n    pnl: z.number(),\n    side: z.string()\n  }),\n  worstTrade: z.object({\n    address: z.string(),\n    instrument: z.string(),\n    leverage: z.number(),\n    pnl: z.number(),\n    side: z.string()\n  }),\n  bestPnl: z.object({ address: z.string(), pnl: z.number() }),\n  worstPnl: z.object({ address: z.string(), pnl: z.number() })\n});\n","import type WebSocket from 'ws';\nimport PriceFeedSubscription, { type SubscriptionType, type Subscription } from './PriceFeedSubscription.js';\nimport type { BasicAuthCredentials } from '../../../types.js';\n\nexport * as schemas from './schemas/index.js';\nexport class PriceFeedWS {\n  private subscriptions: Partial<{\n    [K in SubscriptionType]: Partial<\n      Record<\n        string,\n        PriceFeedSubscription<K>\n      >\n    >;\n  }> = {};\n\n  private readonly url: string;\n\n  readonly basicAuth?: BasicAuthCredentials | undefined;\n\n  constructor(\n    url: string,\n    basicAuth?: BasicAuthCredentials\n  ) {\n    this.url = url;\n    this.basicAuth = basicAuth;\n  }\n\n  get api() {\n    const url = new URL(this.url);\n\n    if (this.basicAuth) {\n      url.username = this.basicAuth.username;\n      url.password = this.basicAuth.password;\n    }\n\n    return url.toString();\n  }\n\n  subscribe<S extends SubscriptionType>(\n    type: S,\n    params: Subscription<S>,\n    onOpen?: (event: WebSocket.Event) => void,\n  ) {\n    const sub = new PriceFeedSubscription(\n      type,\n      this.api,\n      params,\n      onOpen,\n    );\n    this.subscriptions = {\n      ...this.subscriptions,\n      [type]: {\n        ...this.subscriptions[type],\n        [sub.id]: sub,\n      },\n    };\n    return {\n      type: sub.type,\n      id: sub.id,\n      unsubscribe: () => { this.unsubscribe(sub.type, sub.id); },\n    };\n  }\n\n  unsubscribe(subType: SubscriptionType, subId: string) {\n    this.subscriptions[subType]?.[subId]?.kill();\n    delete this.subscriptions[subType]?.[subId];\n  }\n}\n","import WebSocket from 'isomorphic-ws';\nimport { z } from 'zod';\nimport { v4 as uuidv4 } from 'uuid';\nimport priceFeedSubscriptions from './priceFeedSubscriptions.js';\nimport { tickerInfoSchema, candleSchema } from './schemas/index.js';\nimport priceSchema from './schemas/priceSchema.js';\nimport type { Json } from '../../../types.js';\nimport allTickersSchema from './schemas/allTickersSchema.js';\n\nexport const subscriptions = {\n  [priceFeedSubscriptions.ALL_TICKERS]: {\n    schema: allTickersSchema,\n    payload: false as const,\n  },\n  [priceFeedSubscriptions.TICKER]: {\n    schema: z.tuple([z.number(), tickerInfoSchema]).transform(([, tickerInfo]) => tickerInfo),\n    payload: true as const,\n  },\n  [priceFeedSubscriptions.LAST_PRICE]: {\n    schema: priceSchema,\n    payload: true as const,\n  },\n  [priceFeedSubscriptions.CANDLE]: {\n    schema: candleSchema,\n    payload: true as const,\n  },\n};\n\nexport type SubscriptionType = keyof typeof subscriptions;\nexport type Subscription<\n  T extends SubscriptionType,\n  Schema = z.infer<typeof subscriptions[T]['schema']>\n> = typeof subscriptions[T] extends { payload: true }\n  ? {\n    callback: (data: Schema) => void\n    errorCallback?: (error: Error) => void\n    payload: string\n  } : {\n    callback: (data: Schema) => void\n    errorCallback?: (error: Error) => void\n  }\n\nexport default class PriceFeedSubscription<T extends SubscriptionType = SubscriptionType> {\n  public readonly id: string;\n\n  private readonly callback: Subscription<T>['callback'];\n\n  private readonly errorCallback?: Subscription<T>['errorCallback'];\n\n  private readonly payload?: string;\n\n  private ws?: WebSocket;\n\n  private readonly url: string;\n\n  private heartbeatInterval?: ReturnType<typeof setInterval>;\n\n  readonly type: T;\n\n  // is used to make sure we do not need to renew ws subscription\n  // we can not be sure that onclose event will recieve our code when we do `ws.close(4000)`\n  // since sometimes it can be replaced with system one.\n  // https://stackoverflow.com/questions/19304157/getting-the-reason-why-websockets-closed-with-close-code-1006\n  private isClosedIntentionally = false;\n\n  private readonly onOpen: ((event: WebSocket.Event) => void) | undefined;\n\n  constructor(\n    type: T,\n    url: string,\n    params: Subscription<T>,\n    onOpen?: (event: WebSocket.Event) => void,\n  ) {\n    this.id = uuidv4();\n    this.url = url;\n    this.type = type;\n    if ('payload' in params) {\n      this.payload = params.payload;\n    }\n    this.callback = params.callback;\n    this.errorCallback = params.errorCallback;\n    this.onOpen = onOpen;\n    this.init();\n  }\n\n  private send(jsonObject: Json) {\n    if (this.ws?.readyState === WebSocket.OPEN) {\n      const jsonData = JSON.stringify(jsonObject);\n      this.ws.send(jsonData);\n    } else {\n      setTimeout(() => {\n        this.send(jsonObject);\n      }, 50);\n    }\n  }\n\n  private isAlive = false;\n  private hearbeatIntervalId: NodeJS.Timer | undefined;\n  private setupHeartbeat() {\n    const heartbeat = () => {\n      if (this.isAlive) {\n        this.isAlive = false;\n      } else {\n        this.isClosedIntentionally = false;\n        this.clearHeartbeat();\n        this.ws?.close(4000);\n      }\n    };\n\n    this.hearbeatIntervalId = setInterval(heartbeat, 15000);\n  }\n\n  private clearHeartbeat() {\n    this.isAlive = false;\n    clearInterval(this.hearbeatIntervalId);\n  }\n\n  init() {\n    this.isClosedIntentionally = false;\n\n    const { payload, url, type } = this;\n    this.ws = new WebSocket(\n      `${url}/${type}${payload !== undefined\n        ? `/${payload.toString()}`\n        : ''}`\n    );\n\n    this.ws.onopen = (e) => {\n      this.isAlive = true;\n      this.setupHeartbeat();\n      if (this.onOpen !== undefined) {\n        this.onOpen(e);\n      }\n    }\n\n    this.ws.onmessage = (e) => {\n      this.isAlive = true;\n      const { data } = e;\n\n      // Convert data to string\n\n      let dataString: string;\n      if (typeof data === 'string') {\n        dataString = data;\n      } else if (Buffer.isBuffer(data)) {\n        dataString = data.toString();\n      } else if (Array.isArray(data)) {\n        dataString = Buffer.concat(data).toString();\n      } else { // ArrayBuffer\n        dataString = Buffer.from(data).toString();\n      }\n\n      if (dataString === 'pong') return;\n      const json: unknown = JSON.parse(dataString);\n      const subscription = subscriptions[type];\n      const parseResult = subscription.schema.safeParse(json);\n      if (!parseResult.success) {\n        const errorsMessage = parseResult.error.errors.map((error) => `[${error.path.join('.')}] ${error.message}`).join(', ');\n        const error = new Error(`Can't recognize PriceFeed \"${type}\" subscription message \"${dataString}\": ${errorsMessage}`);\n        if (this.errorCallback !== undefined) {\n          this.errorCallback(error);\n        } else throw error;\n      } else {\n        this.callback(parseResult.data);\n      }\n    };\n\n    this.ws.onclose = () => {\n      if (this.heartbeatInterval) clearInterval(this.heartbeatInterval);\n      if (!this.isClosedIntentionally) {\n        setTimeout(() => {\n          this.init()\n        }, 5000);\n      }\n    };\n\n    this.heartbeatInterval = setInterval(() => {\n      this.send('heartbeat');\n    }, 15000);\n  }\n\n  kill() {\n    this.isClosedIntentionally = true;\n    this.ws?.close();\n  }\n}\n","const priceFeedSubscriptions = {\n  TICKER: 'ticker',\n  ALL_TICKERS: 'allTickers',\n  LAST_PRICE: 'lastPrice',\n  CANDLE: 'candle',\n} as const;\n\nexport default priceFeedSubscriptions;\n","export { default as tickerInfoSchema } from './tickerInfoSchema.js';\nexport { default as candleSchema } from './candleSchema.js';\nexport { default as priceSchema } from './priceSchema.js';\nexport { default as allTickersSchema } from './allTickersSchema.js';\n","import { z } from 'zod';\n\nconst tickerInfoSchema = z.tuple([\n  z.string(), // pair name\n  z.string(), // lastPrice\n  z.string(), // openPrice\n  z.string(), // high price\n  z.string(), // low price\n  z.string(), // volume 24h\n]).transform(([pairName, lastPrice, openPrice, highPrice, lowPrice, volume24h]) => ({\n  pairName,\n  lastPrice,\n  openPrice,\n  highPrice,\n  lowPrice,\n  volume24h,\n}));\n\nexport default tickerInfoSchema;\n","import { z } from 'zod';\n\nconst candleSchema = z\n  .tuple([\n    z.string(), // interval [FIVE, FIFTEEN, THIRTY, HOUR, HOUR4, DAY, WEEK]\n    z.string(), // pair [\"ethusdf\"]\n    z.number(), // timeStart [timestamp]\n    z.number(), // timeEnd [timestamp]\n    z.string(), // close\n    z.string(), // open\n    z.string(), // high\n    z.string(), // low\n    z.string(), // volume\n  ])\n  .transform(\n    ([interval, pair, timeStart, timeEnd, close, open, high, low, volume]) => ({\n      interval,\n      pair,\n      timeStart,\n      timeEnd,\n      close,\n      open,\n      high,\n      low,\n      volume,\n    }),\n  );\n\nexport default candleSchema;\n","import { z } from 'zod';\n\nconst priceSchema = z.tuple([\n  z.number(), // unix timestamp\n  z.string(), // pair\n  z.number(), // price\n]).transform(([, pair, price]) => ({ pair, price }));\n\nexport default priceSchema;\n","import { z } from 'zod';\nimport tickerInfoSchema from './tickerInfoSchema.js';\n\ntype TickerInfo = z.infer<typeof tickerInfoSchema>\n\nconst allTickersSchema = z.unknown().array()\n  .transform((tickers) => {\n    const data = [...tickers];\n    data.shift();\n    const parsedData = tickerInfoSchema.array().parse(data);\n    return parsedData.reduce<\n      Partial<\n        Record<\n          string,\n          TickerInfo\n        >\n      >\n    >((prev, pairData) => ({\n      ...prev,\n      [pairData.pairName]: pairData,\n    }), {});\n  });\n\nexport default allTickersSchema;\n","import { merge } from 'merge-anything';\nimport { chains, envs } from '../config/index.js';\nimport type { networkCodes } from '../constants/index.js';\nimport Unit from '../Unit/index.js';\nimport type { SupportedChainId, DeepPartial, VerboseUnitConfig, KnownEnv, MarginMode } from '../types.js';\nimport { isValidChainId } from '../utils/index.js';\nimport { simpleFetch } from 'simple-typed-fetch';\nimport { ReferralSystem } from '../services/ReferralSystem/index.js';\n\ntype EnvConfig = {\n  marginMode: MarginMode\n  referralAPI: string\n  networks: Partial<\n    Record<\n      SupportedChainId,\n      VerboseUnitConfig\n    >\n  >\n}\n\nexport default class Electra {\n  public readonly env?: string;\n\n  public readonly units: Partial<Record<SupportedChainId, Unit>>;\n\n  public readonly referralSystem: ReferralSystem;\n\n  constructor(\n    envOrConfig: KnownEnv | EnvConfig = 'production',\n    overrides?: DeepPartial<EnvConfig>\n  ) {\n    let config: EnvConfig;\n    if (typeof envOrConfig === 'string') {\n      const envConfig = envs[envOrConfig];\n      if (!envConfig) {\n        throw new Error(`Invalid environment: ${envOrConfig}. Available environments: ${Object.keys(envs).join(', ')}`);\n      }\n      this.env = envOrConfig;\n      config = {\n        marginMode: envConfig.marginMode,\n        referralAPI: envConfig.referralAPI,\n        networks: Object.entries(envConfig.networks).map(([chainId, networkConfig]) => {\n          if (!isValidChainId(chainId)) throw new Error(`Invalid chainId: ${chainId}`);\n          const chainConfig = chains[chainId];\n          if (!chainConfig) {\n            throw new Error(`Chain config not found: ${chainId}. Available chains: ${Object.keys(chains).join(', ')}`);\n          }\n\n          return {\n            env: envOrConfig,\n            chainId,\n            api: networkConfig.api,\n            nodeJsonRpc: networkConfig.rpc ?? chainConfig.rpc,\n            services: {\n              blockchainService: {\n                http: networkConfig.api + networkConfig.services.blockchain.http,\n              },\n              aggregator: {\n                http: networkConfig.api + networkConfig.services.aggregator.http,\n                ws: networkConfig.api + networkConfig.services.aggregator.ws,\n              },\n              priceFeed: {\n                api: networkConfig.api + networkConfig.services.priceFeed.all,\n              },\n            },\n          };\n        })\n          .reduce<Partial<Record<SupportedChainId, VerboseUnitConfig>>>((acc, cur) => {\n            acc[cur.chainId] = cur;\n            return acc;\n          }, {}),\n      };\n\n      if (overrides) {\n        // Recursive merge of config and overrides. Ignore undefined values.\n        config = merge(config, overrides);\n      }\n    } else {\n      config = envOrConfig;\n    }\n\n    this.referralSystem = new ReferralSystem(config.referralAPI);\n\n    this.units = Object.entries(config.networks)\n      .reduce<Partial<Record<SupportedChainId, Unit>>>((acc, [chainId, networkConfig]) => {\n        if (!isValidChainId(chainId)) throw new Error(`Invalid chainId: ${chainId}`);\n        const chainConfig = chains[chainId];\n        if (!chainConfig) throw new Error(`Chain config not found: ${chainId}`);\n\n        const unit = new Unit({\n          // env: networkConfig.env,\n          chainId,\n          // api: networkConfig.api,\n          nodeJsonRpc: networkConfig.nodeJsonRpc,\n          services: networkConfig.services,\n        });\n        return {\n          ...acc,\n          [chainId]: unit,\n        }\n      }, {});\n  }\n\n  get unitsArray() {\n    return Object.entries(this.units).map(([, unit]) => unit);\n  }\n\n  getUnit(networkCodeOrChainId: typeof networkCodes[number] | SupportedChainId): Unit {\n    let unit: Unit | undefined;\n    if (isValidChainId(networkCodeOrChainId)) {\n      unit = this.units[networkCodeOrChainId];\n    } else {\n      unit = this.unitsArray.find((u) => u.networkCode === networkCodeOrChainId);\n    }\n    if (!unit) {\n      throw new Error(\n        `Invalid network code: ${networkCodeOrChainId}. ` +\n        `Available network codes: ${this.unitsArray.map((u) => u.networkCode).join(', ')}`);\n    }\n    return unit;\n  }\n\n  getSiblingsOf(chainId: SupportedChainId) {\n    return this.unitsArray.filter((unit) => unit.chainId !== chainId);\n  }\n\n  async getPairs(...params: Parameters<Unit['aggregator']['getPairsList']>) {\n    const result: Partial<\n      Record<\n        string,\n        SupportedChainId[]\n      >\n    > = {};\n\n    await Promise.all(this.unitsArray.map(async (unit) => {\n      const pairs = await simpleFetch(unit.aggregator.getPairsList)(...params);\n      pairs.forEach((pair) => {\n        result[pair] = [\n          ...(result[pair] ?? []),\n          unit.chainId,\n        ];\n      });\n    }));\n\n    return result;\n  }\n}\n","import { fetchWithValidation } from 'simple-typed-fetch';\nimport {\n  errorSchema,\n  linkSchema,\n  aggregatedCommissionHistorySchema,\n  aggregatedHistorySchema,\n  leaderboardSchema,\n  accountDetailsSchema,\n  accountReferralsSchema,\n  subscribeToReferralErrorSchema,\n  isWhitelistedSchema,\n} from './schemas/index.js';\nimport type { SupportedChainId } from '../../types.js';\n\nexport type { AccountDetails, AccountReferrals, Leaderboard } from './schemas';\n\ntype SubscribePayloadType = {\n  ref_target: string\n  referral: string\n};\n\ntype AddressType = {\n  address: string\n}\n\nclass ReferralSystem {\n  private readonly apiUrl: string;\n\n  get api() {\n    return this.apiUrl;\n  }\n\n  constructor(apiUrl: string) {\n    this.apiUrl = apiUrl;\n\n    this.subscribeToReferral = this.subscribeToReferral.bind(this);\n    this.getAggregatedHistory = this.getAggregatedHistory.bind(this);\n    this.getLeaderboard = this.getLeaderboard.bind(this);\n    this.getAccountDetails = this.getAccountDetails.bind(this);\n    this.getAccountReferrals = this.getAccountReferrals.bind(this);\n    this.getIsWhitelisted = this.getIsWhitelisted.bind(this);\n  }\n\n  subscribeToReferral = (\n    payload: SubscribePayloadType\n  ) =>\n    fetchWithValidation(\n      `${this.apiUrl}/referer/subscribe2`,\n      linkSchema,\n      {\n        headers: {\n          'Content-type': 'application/json',\n        },\n        method: 'POST',\n        body: JSON.stringify(payload),\n      },\n      subscribeToReferralErrorSchema\n    );\n\n  getAggregatedCommissionHistory = (\n    refererAddress: string,\n    chainId: SupportedChainId | undefined,\n    types: string[] | undefined,\n    itemPerPage: number,\n    page: number\n  ) => {\n    const queryParams: Record<string, string | number> = {\n      n_per_page: itemPerPage,\n      address: refererAddress,\n      page,\n      suppress_error: 1\n    };\n\n    if (chainId !== undefined) {\n      queryParams['chain_id'] = chainId;\n    }\n\n    if (types !== undefined) {\n      queryParams['history_filter'] = encodeURIComponent(types.join(','));\n    }\n\n    const queryString = Object.entries(queryParams).map(([k, v]) => `${k}=${v}`).join('&')\n\n    return fetchWithValidation(\n      `${this.apiUrl}/v3/accruals?${queryString}`,\n      aggregatedCommissionHistorySchema,\n      {\n        headers: {\n          'referer-address': refererAddress,\n        },\n      },\n      errorSchema\n    );\n  }\n\n  getAggregatedHistory = (\n    refererAddress: string,\n    chainId: SupportedChainId | undefined,\n    types: string[] | undefined,\n    itemPerPage: number,\n    page: number\n  ) => {\n    const queryParams: Record<string, string | number> = {\n      n_per_page: itemPerPage,\n      page,\n      suppress_error: 1\n    };\n\n    if (chainId !== undefined) {\n      queryParams['chain_id'] = chainId;\n    }\n\n    if (types !== undefined) {\n      queryParams['history_filter'] = encodeURIComponent(types.join(','));\n    }\n\n    const queryString = Object.entries(queryParams).map(([k, v]) => `${k}=${v}`).join('&')\n\n    return fetchWithValidation(\n      `${this.apiUrl}/referer/view/aggregated-history?${queryString}`,\n      aggregatedHistorySchema,\n      {\n        headers: {\n          'referer-address': refererAddress,\n        },\n      },\n      errorSchema\n    );\n  }\n\n  getLeaderboard = ({\n    page = 1\n  }: { page: number }) => {\n    return fetchWithValidation(\n      `${this.apiUrl}/referer/futures/leaderboard?page=${page}`,\n      leaderboardSchema\n    );\n  }\n\n  getAccountDetails = ({ address }: AddressType) => {\n    return fetchWithValidation(\n      `${this.apiUrl}/referer/futures/account-details?address=${address}`,\n      accountDetailsSchema,\n    );\n  }\n\n  getAccountReferrals = ({ address, page = 1 }: AddressType & { page: number }) => {\n    return fetchWithValidation(\n      `${this.apiUrl}/referer/futures/account-referrals?address=${address}&page=${page}`,\n      accountReferralsSchema,\n    );\n  }\n\n  getIsWhitelisted = ({ address }: AddressType) => {\n    return fetchWithValidation(\n      `${this.apiUrl}/referer/futures/is_whitelisted?address=${address}`,\n      isWhitelistedSchema,\n    );\n  }\n}\n\nexport * as schemas from './schemas/index.js';\nexport { ReferralSystem };\n","export { default as linkSchema } from './linkSchema';\nexport { errorSchema } from './errorSchema';\nexport { subscribeToReferralErrorSchema } from './subscribeToReferralErrorSchema';\nexport { default as aggregatedCommissionHistorySchema } from './aggregatedCommissionHistorySchema';\nexport { default as aggregatedHistorySchema } from './aggregatedHistorySchema';\nexport {\n  type AccountDetails, accountDetailsSchema\n} from './accountDetailsSchema';\nexport { type AccountReferrals, accountReferralsSchema } from './accountReferralsSchema';\nexport { leaderboardSchema, type Leaderboard } from './leaderboardSchema';\nexport { isWhitelistedSchema } from './isWhitelistedSchema';\n","import { z } from 'zod';\n\nconst linkSchema = z.object({\n  referer: z.string(),\n  ref_link: z.string(),\n  option: z.number().optional(),\n});\n\nexport default linkSchema;\n","import { z } from 'zod';\n\nexport const errorSchema = z.object({\n  status: z.string(),\n  message: z.string(),\n});\n","import { errorSchema } from './errorSchema';\nimport { z } from 'zod';\n\nexport const subscribeToReferralErrorSchema = errorSchema.extend({\n  ref_link: z.string().optional()\n})\n","import { z } from 'zod';\n\nconst aggregatedCommissionHistorySchema = z.object({\n  data: z.array(z.object({\n    history_type: z.string(),\n    date_unix: z.number(),\n    date_time_local: z.string(),\n    date_time_utc: z.string(),\n    amount_token_fmt: z.number(),\n    pair: z.string()\n  })),\n  pagination_info: z.object({\n    c_page: z.number(),\n    t_pages: z.number()\n  })\n})\n\nexport default aggregatedCommissionHistorySchema;","import { z } from 'zod';\n\nconst aggregatedHistorySchema = z.object({\n  data: z.array(z.object({\n    history_type: z.string(),\n    bonus_description: z.string().nullable(),\n    chain_type: z.string(),\n    chain_comp: z.string(),\n    chain_id: z.number(),\n    date_unix: z.number(),\n    date_time_local: z.string(),\n    date_time_utc: z.string(),\n    amount_token: z.string(),\n    amount_token_fmt: z.number(),\n    amount_usd: z.string(),\n    amount_usd_fmt: z.number(),\n    pair: z.string(), \n    token_price: z.string(),\n    token_price_fmt: z.number()\n  })),\n  pagination_info: z.object({\n    c_page: z.number(),\n    t_pages: z.number()\n  })\n})\n\nexport default aggregatedHistorySchema;\n","import { z } from 'zod';\n\nconst pointsAdditionalSchema = z.object({\n  event_name: z.string(),\n  points: z.number(),\n});\n\nexport const accountDetailsSchema = z.object({\n  address: z.string(),\n  ref_link: z.string(),\n  rank: z.number(),\n  referrals_count: z.number(),\n  direct_referrals_count: z.number(),\n  points_total: z.number(),\n  points_trading_volume: z.number(),\n  points_network_trading_volume: z.number(),\n  network_trading_volume: z.number(),\n  points_additional: z.array(pointsAdditionalSchema),\n});\n\nexport type AccountDetails = z.infer<typeof accountDetailsSchema>;\n","import { z } from 'zod';\nimport { paginationInfoSchema } from './paginationInfoSchema';\n\nconst dataSchema = z.object({\n  referral: z.string(),\n  relative_level: z.number(),\n  volume: z.number(),\n  points: z.number()\n})\n\nexport const accountReferralsSchema = z.object({\n  data: z.array(dataSchema),\n  pagination_info: paginationInfoSchema\n})\n\nexport type AccountReferrals = z.infer<typeof accountReferralsSchema>;\n","import { z } from 'zod';\n\nexport const paginationInfoSchema = z.object({\n  c_page: z.number(),\n  t_pages: z.number(),\n});\n","import { z } from 'zod';\nimport { paginationInfoSchema } from './paginationInfoSchema';\n\nconst dataSchema = z.object({\n  referral: z.string(),\n  referrals_count: z.number(),\n  points_total: z.number(),\n  points_referrals: z.number(),\n  points_additional: z.number(),\n});\n\nexport const leaderboardSchema = z.object({\n  pagination_info: paginationInfoSchema,\n  data: z.array(dataSchema),\n});\n\nexport type Leaderboard = z.infer<typeof leaderboardSchema>;\n","import { z } from 'zod';\n\nexport const isWhitelistedSchema = z.object({\n  status: z.string(),\n  whitelisted: z.number(),\n});\n","export * as aggregator from './Aggregator/index.js';\nexport * as blockchainService from './BlockchainService/index.js';\nexport * as priceFeed from './PriceFeed/index.js';\nexport * as referralSystem from './ReferralSystem/index.js';\n","export { default as signCancelOrder } from './signCancelOrder.js';\nexport { default as signCancelOrderPersonal } from './signCancelOrderPersonal.js';\nexport { default as signCFDOrder } from './signIsolatedMarginCFDOrder.js';\nexport { default as signCrossMarginCFDOrder } from './signCrossMarginCFDOrder.js';\n","import { ethers } from 'ethers';\nimport CANCEL_ORDER_TYPES from '../constants/cancelOrderTypes.js';\nimport type { CancelOrderRequest, SignedCancelOrderRequest } from '../types.js';\nimport getDomainData from './getDomainData.js';\nimport signCancelOrderPersonal from './signCancelOrderPersonal.js';\n\nconst signCancelOrder = async (\n  senderAddress: string,\n  id: string,\n  usePersonalSign: boolean,\n  signer: ethers.Signer,\n  chainId: number,\n  isFromDelegate?: boolean\n) => {\n  const cancelOrderRequest: CancelOrderRequest = {\n    id,\n    senderAddress,\n    isPersonalSign: usePersonalSign,\n    isFromDelegate,\n    signerChainId: chainId,\n  };\n\n  const signature = usePersonalSign\n    ? await signCancelOrderPersonal(cancelOrderRequest, signer)\n    : // https://docs.ethers.io/v5/api/signer/#Signer-signTypedData\n      await signer.signTypedData(\n        getDomainData(chainId),\n        CANCEL_ORDER_TYPES,\n        cancelOrderRequest\n      );\n\n  // https://github.com/poap-xyz/poap-fun/pull/62#issue-928290265\n  // \"Signature's v was always send as 27 or 28, but from Ledger was 0 or 1\"\n  const fixedSignature = ethers.Signature.from(signature).serialized;\n\n  // if (!fixedSignature) throw new Error(\"Can't sign order cancel\");\n\n  const signedCancelOrderReqeust: SignedCancelOrderRequest = {\n    ...cancelOrderRequest,\n    signature: fixedSignature,\n  };\n  return signedCancelOrderReqeust;\n};\n\nexport default signCancelOrder;\n","{\n  \"name\": \"Electra\",\n  \"version\": \"1\",\n  \"salt\": \"0x5792f7333c35db190e30acc144f049fd15b24f552c0010b8b3e06f9105c37c5a\"\n}\n","import type { SupportedChainId } from '../types.js';\nimport eip712DomainData from '../config/eip712DomainData.json' assert { type: 'json' };\nimport eip712DomainSchema from '../config/schemas/eip712DomainSchema.js';\n\nconst EIP712Domain = eip712DomainSchema.parse(eip712DomainData);\n\nfunction removeUndefined<T>(obj: Record<string, T | undefined>) {\n  const newObj: Partial<Record<string, T>> = {};\n  for (const [key, value] of Object.entries(obj)) {\n    if (value !== undefined) {\n      newObj[key] = value;\n    }\n  }\n  return newObj;\n}\n\n/**\n * See {@link https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator}\n */\nconst getDomainData = (chainId: number) => ({\n  ...removeUndefined(EIP712Domain),\n  chainId,\n});\n\nexport default getDomainData;\n","import { ethers } from 'ethers';\nimport type { CancelOrderRequest } from '../types.js';\n\nconst signCancelOrderPersonal = async (\n  cancelOrderRequest: CancelOrderRequest,\n  signer: ethers.Signer,\n) => {\n  const types = ['string', 'string', 'address'];\n  const message = ethers.solidityPackedKeccak256(\n    types,\n    ['cancelOrder', cancelOrderRequest.id, cancelOrderRequest.senderAddress],\n  );\n  const signature = await signer.signMessage(ethers.getBytes(message));\n\n  // NOTE: metamask broke sig.v value and we fix it in next line\n  return ethers.Signature.from(signature).serialized;\n};\n\nexport default signCancelOrderPersonal;\n","import { BigNumber } from 'bignumber.js';\nimport { ethers } from 'ethers';\nimport {\n  DEFAULT_EXPIRATION,\n  INTERNAL_PROTOCOL_PRECISION,\n} from '../constants/index.js';\nimport type {\n  IsolatedCFDOrder,\n  SignedIsolatedMarginCFDOrder,\n} from '../types.js';\nimport normalizeNumber from '../utils/normalizeNumber.js';\nimport getDomainData from './getDomainData.js';\nimport signIsolatedMarginCFDOrderPersonal from './signIsolatedMarginCFDOrderPersonal.js';\nimport hashIsolatedMarginCFDOrder from './hashIsolatedMarginCFDOrder.js';\nimport { ISOLATED_MARGIN_CFD_ORDER_TYPES_V2 } from '../constants/cfdOrderTypes.js';\n\nexport const signIsolatedMarginCFDOrder = async (\n  instrumentAddress: string,\n  side: 'BUY' | 'SELL',\n  price: BigNumber.Value,\n  amount: BigNumber.Value,\n  matcherFee: BigNumber.Value,\n  senderAddress: string,\n  matcherAddress: string,\n  usePersonalSign: boolean,\n  signer: ethers.Signer,\n  chainId: number,\n  stopPrice: BigNumber.Value | undefined,\n  isFromDelegate?: boolean\n) => {\n  const nonce = Date.now();\n  const expiration = nonce + DEFAULT_EXPIRATION;\n\n  const order: IsolatedCFDOrder = {\n    senderAddress,\n    matcherAddress,\n    instrumentAddress,\n    price2: 0,\n    orderType: 0,\n    signerChainId: chainId,\n    amount: Number(\n      normalizeNumber(\n        amount,\n        INTERNAL_PROTOCOL_PRECISION,\n        BigNumber.ROUND_FLOOR\n      )\n    ),\n    price: Number(\n      normalizeNumber(price, INTERNAL_PROTOCOL_PRECISION, BigNumber.ROUND_FLOOR)\n    ),\n    matcherFee: Number(\n      normalizeNumber(\n        matcherFee,\n        INTERNAL_PROTOCOL_PRECISION,\n        BigNumber.ROUND_CEIL // ROUND_CEIL because we don't want get \"not enough fee\" error\n      )\n    ),\n    nonce,\n    expiration,\n    buySide: side === 'BUY' ? 1 : 0,\n    stopPrice:\n      stopPrice !== undefined ? new BigNumber(stopPrice).toNumber() : undefined,\n    isPersonalSign: usePersonalSign,\n    isFromDelegate,\n  };\n\n  const signature = usePersonalSign\n    ? await signIsolatedMarginCFDOrderPersonal(order, signer)\n    : await signer.signTypedData(\n        getDomainData(chainId),\n        ISOLATED_MARGIN_CFD_ORDER_TYPES_V2,\n        order\n      );\n\n  // https://github.com/poap-xyz/poap-fun/pull/62#issue-928290265\n  // \"Signature's v was always send as 27 or 28, but from Ledger was 0 or 1\"\n  const fixedSignature = ethers.Signature.from(signature).serialized;\n\n  // if (!fixedSignature) throw new Error(\"Can't sign order\");\n\n  const signedOrder: SignedIsolatedMarginCFDOrder = {\n    ...order,\n    id: hashIsolatedMarginCFDOrder(order),\n    signature: fixedSignature,\n  };\n\n  return signedOrder;\n};\n\nexport default signIsolatedMarginCFDOrder;\n","import { ethers } from 'ethers';\nimport type { IsolatedCFDOrder } from '../types.js';\n\nconst signIsolatedMarginCFDOrderPersonal = async (order: IsolatedCFDOrder, signer: ethers.Signer) => {\n  const message = ethers.solidityPackedKeccak256(\n    [\n      'string', 'address', 'address', 'address', 'uint64', 'uint64', 'uint64', 'uint64', 'uint64', 'uint8',\n    ],\n    [\n      'order',\n      order.senderAddress,\n      order.matcherAddress,\n      order.instrumentAddress,\n      order.amount,\n      order.price,\n      order.matcherFee,\n      order.nonce,\n      order.expiration,\n      order.buySide,\n    ],\n  );\n  const signature = await signer.signMessage(ethers.getBytes(message));\n\n  // NOTE: metamask broke sig.v value and we fix it in next line\n  return ethers.Signature.from(signature).serialized;\n};\n\nexport default signIsolatedMarginCFDOrderPersonal;\n","import { ethers } from 'ethers';\nimport type { IsolatedCFDOrder } from '../types.js';\n\nconst hashIsolatedMarginCFDOrder = (order: IsolatedCFDOrder) => ethers.solidityPackedKeccak256(\n  [\n    'uint8',\n    'address',\n    'address',\n    'address',\n    'uint64',\n    'uint64',\n    'uint64',\n    'uint64',\n    'uint64',\n    'uint8',\n  ],\n  [\n    '0x03',\n    order.senderAddress,\n    order.matcherAddress,\n    order.instrumentAddress,\n    order.amount,\n    order.price,\n    order.matcherFee,\n    order.nonce,\n    order.expiration,\n    order.buySide === 1 ? '0x01' : '0x00',\n  ],\n);\n\nexport default hashIsolatedMarginCFDOrder;\n","export const ISOLATED_MARGIN_CFD_ORDER_TYPES = {\n  CFDOrder: [\n    { name: 'senderAddress', type: 'address' },\n    { name: 'matcherAddress', type: 'address' },\n    { name: 'instrumentAddress', type: 'address' },\n    { name: 'amount', type: 'uint64' },\n    { name: 'price', type: 'uint64' },\n    { name: 'matcherFee', type: 'uint64' },\n    { name: 'nonce', type: 'uint64' },\n    { name: 'expiration', type: 'uint64' },\n    { name: 'buySide', type: 'uint8' },\n  ],\n};\nexport const ISOLATED_MARGIN_CFD_ORDER_TYPES_V2 = {\n  CFDOrderV2: [\n    { name: 'senderAddress', type: 'address' },\n    { name: 'price', type: 'uint80' },\n    { name: 'instrumentIndex', type: 'uint16' },\n    { name: 'matcherAddress', type: 'address' },\n    { name: 'price2', type: 'uint80' },\n    { name: 'buySide', type: 'uint8' },\n    { name: 'amount', type: 'uint96' },\n    { name: 'matcherFee', type: 'uint64' },\n    { name: 'expiration', type: 'uint64' },\n    { name: 'orderType', type: 'uint8' },\n    { name: 'signerChainId', type: 'uint64' },\n    { name: 'nonce', type: 'uint64' },\n  ],\n};\n\nexport const CROSS_MARGIN_CFD_ORDER_TYPES = {\n  CFDOrder: [\n    { name: 'senderAddress', type: 'address' },\n    { name: 'matcherAddress', type: 'address' },\n    { name: 'instrumentIndex', type: 'uint16' },\n    { name: 'amount', type: 'uint96' },\n    { name: 'price', type: 'uint80' },\n    { name: 'matcherFee', type: 'uint64' },\n    { name: 'expiration', type: 'uint64' },\n    { name: 'buySide', type: 'uint8' },\n  ],\n};\nexport const CROSS_MARGIN_CFD_ORDER_TYPES_V2 = {\n  CFDOrderV2: [\n    { name: 'senderAddress', type: 'address' },\n    { name: 'price', type: 'uint80' },\n    { name: 'instrumentIndex', type: 'uint16' },\n    { name: 'matcherAddress', type: 'address' },\n    { name: 'price2', type: 'uint80' },\n    { name: 'buySide', type: 'uint8' },\n    { name: 'amount', type: 'uint96' },\n    { name: 'matcherFee', type: 'uint64' },\n    { name: 'expiration', type: 'uint64' },\n    { name: 'orderType', type: 'uint8' },\n    { name: 'signerChainId', type: 'uint64' },\n  ],\n};\n","import { BigNumber } from 'bignumber.js';\nimport { ethers } from 'ethers';\nimport { DEFAULT_EXPIRATION, INTERNAL_PROTOCOL_PRECISION } from '../constants';\nimport type {\n  CrossMarginCFDOrder,\n  SignedCrossMarginCFDOrder,\n} from '../types.js';\nimport normalizeNumber from '../utils/normalizeNumber.js';\nimport getDomainData from './getDomainData.js';\nimport { CROSS_MARGIN_CFD_ORDER_TYPES_V2 } from '../constants/cfdOrderTypes.js';\nimport signCrossMarginCFDOrderPersonal from './signCrossMarginCFDOrderPersonal.js';\nimport hashCrossMarginCFDOrder from './hashCrossMarginCFDOrder.js';\n\nexport const signCrossMarginCFDOrder = async (\n  instrumentIndex: number,\n  side: 'BUY' | 'SELL',\n  price: BigNumber.Value,\n  amount: BigNumber.Value,\n  matcherFee: BigNumber.Value,\n  senderAddress: string,\n  matcherAddress: string,\n  usePersonalSign: boolean,\n  signer: ethers.Signer,\n  chainId: number,\n  stopPrice: BigNumber.Value | undefined,\n  leverage: string | undefined,\n  isFromDelegate?: boolean\n) => {\n  const nonce = Date.now();\n  const expiration = nonce + DEFAULT_EXPIRATION;\n\n  const order: CrossMarginCFDOrder = {\n    senderAddress,\n    price: Number(\n      normalizeNumber(price, INTERNAL_PROTOCOL_PRECISION, BigNumber.ROUND_FLOOR)\n    ),\n    instrumentIndex,\n    matcherAddress,\n    price2: 0,\n    amount: Number(\n      normalizeNumber(\n        amount,\n        INTERNAL_PROTOCOL_PRECISION,\n        BigNumber.ROUND_FLOOR\n      )\n    ),\n    matcherFee: Number(\n      normalizeNumber(\n        matcherFee,\n        INTERNAL_PROTOCOL_PRECISION,\n        BigNumber.ROUND_CEIL // ROUND_CEIL because we don't want get \"not enough fee\" error\n      )\n    ),\n    expiration,\n    buySide: side === 'BUY' ? 1 : 0,\n    stopPrice:\n      stopPrice !== undefined ? new BigNumber(stopPrice).toNumber() : undefined,\n    leverage: leverage !== undefined ? leverage : undefined,\n    isPersonalSign: usePersonalSign,\n    isFromDelegate,\n    signerChainId: chainId,\n    orderType: 0,\n  };\n\n  const signature = usePersonalSign\n    ? await signCrossMarginCFDOrderPersonal(order, signer)\n    : await signer.signTypedData(\n        getDomainData(chainId),\n        CROSS_MARGIN_CFD_ORDER_TYPES_V2,\n        order\n      );\n\n  // https://github.com/poap-xyz/poap-fun/pull/62#issue-928290265\n  // \"Signature's v was always send as 27 or 28, but from Ledger was 0 or 1\"\n  const fixedSignature = ethers.Signature.from(signature).serialized;\n\n  // if (!fixedSignature) throw new Error(\"Can't sign order\");\n\n  const signedOrder: SignedCrossMarginCFDOrder = {\n    ...order,\n    id: hashCrossMarginCFDOrder(order),\n    signature: fixedSignature,\n  };\n\n  return signedOrder;\n};\n\nexport default signCrossMarginCFDOrder;\n","import { ethers } from 'ethers';\nimport type { CrossMarginCFDOrder } from '../types.js';\n\nconst signCrossMarginCFDOrderPersonal = async (order: CrossMarginCFDOrder, signer: ethers.Signer) => {\n  const message = ethers.solidityPackedKeccak256(\n    [\n      'string', 'address', 'address', 'uint16', 'uint96', 'uint80', 'uint64', 'uint64', 'uint8',\n    ],\n    [\n      'order',\n      order.senderAddress,\n      order.matcherAddress,\n      order.instrumentIndex,\n      order.amount,\n      order.price,\n      order.matcherFee,\n      order.expiration,\n      order.buySide,\n    ],\n  );\n  const signature = await signer.signMessage(ethers.getBytes(message));\n\n  // NOTE: metamask broke sig.v value and we fix it in next line\n  return ethers.Signature.from(signature).serialized;\n};\n\nexport default signCrossMarginCFDOrderPersonal;\n","import { ethers } from 'ethers';\nimport type { CrossMarginCFDOrder } from '../types.js';\n\nconst hashCrossMarginCFDOrder = (order: CrossMarginCFDOrder) => ethers.solidityPackedKeccak256(\n  [\n    'uint8',\n    'address',\n    'address',\n    'uint16',\n    'uint96',\n    'uint80',\n    'uint64',\n    'uint64',\n    'uint8',\n  ],\n  [\n    '0x03',\n    order.senderAddress,\n    order.matcherAddress,\n    order.instrumentIndex,\n    order.amount,\n    order.price,\n    order.matcherFee,\n    order.expiration,\n    order.buySide === 1 ? '0x01' : '0x00',\n  ],\n);\n\nexport default hashCrossMarginCFDOrder;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,oBAA0B;;;ACA1B;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA,EACE,KAAK;AAAA,IACH,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,MAAM;AAAA,IACJ,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,MAAM;AAAA,IACJ,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,IACL,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,YAAY;AAAA,IACV,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,SAAS;AAAA,IACP,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,IACL,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,IACL,SAAW;AAAA,IACX,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,kBAAoB;AAAA,IACpB,KAAO;AAAA,IACP,UAAY;AAAA,EACd;AAAA,EACA,MAAM;AAAA,IACJ,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,IACN,SAAW;AAAA,IACX,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,kBAAoB;AAAA,IACpB,KAAO;AAAA,IACP,UAAY;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACP,SAAW;AAAA,IACX,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,kBAAoB;AAAA,IACpB,KAAO;AAAA,IACP,UAAY;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACP,SAAW;AAAA,IACX,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,kBAAoB;AAAA,IACpB,KAAO;AAAA,IACP,UAAY;AAAA,EACd;AAAA,EACA,QAAQ;AAAA,IACN,SAAW;AAAA,IACX,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,kBAAoB;AAAA,IACpB,KAAO;AAAA,IACP,UAAY;AAAA,EACd;AAAA,EACA,gBAAgB;AAAA,IACd,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,cAAc;AAAA,IACZ,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,aAAa;AAAA,IACX,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,iBAAiB;AAAA,IACf,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AAAA,EACA,iBAAiB;AAAA,IACf,SAAW;AAAA,IACX,UAAY;AAAA,IACZ,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,kBAAoB;AAAA,EACtB;AACF;;;ACnKA;AAAA,EACE,YAAc;AAAA,IACZ,YAAc;AAAA,IACd,aAAe;AAAA,IACf,UAAY;AAAA,MACV,KAAK;AAAA,QACH,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,UACA,SAAW;AAAA,YACT,MAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,iBAAiB;AAAA,QACf,KAAO;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAW;AAAA,IACT,YAAc;AAAA,IACd,aAAe;AAAA,IACf,UAAY;AAAA,MACV,MAAM;AAAA,QACJ,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,gBAAgB;AAAA,QACd,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,iBAAiB;AAAA,QACf,KAAO;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAW;AAAA,IACT,YAAc;AAAA,IACd,aAAe;AAAA,IACf,UAAY;AAAA,MACV,KAAK;AAAA,QACH,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,UACA,SAAW;AAAA,YACT,MAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAgB;AAAA,IACd,YAAc;AAAA,IACd,aAAe;AAAA,IACf,UAAY;AAAA,MACV,MAAM;AAAA,QACJ,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,qBAAqB;AAAA,IACnB,YAAc;AAAA,IACd,aAAe;AAAA,IACf,UAAY;AAAA,MACV,KAAK;AAAA,QACH,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,UACA,SAAW;AAAA,YACT,MAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,KAAO;AAAA,QACP,UAAY;AAAA,UACV,YAAc;AAAA,YACZ,MAAQ;AAAA,YACR,IAAM;AAAA,UACR;AAAA,UACA,YAAc;AAAA,YACZ,MAAQ;AAAA,UACV;AAAA,UACA,WAAa;AAAA,YACX,KAAO;AAAA,UACT;AAAA,UACA,SAAW;AAAA,YACT,MAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACroBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,iBAAkB;AAElB,IAAM,qBAAqB,aAAE,OAAO;AAAA,EAClC,MAAM,aAAE,OAAO;AAAA,EACf,SAAS,aAAE,OAAO;AAAA,EAClB,SAAS,aAAE,OAAO;AAAA,EAClB,mBAAmB,aAAE,OAAO;AAAA,EAC5B,MAAM,aAAE,OAAO;AACjB,CAAC,EACE,QAAQ,EACR;AAAA,EACC,CAAC,SAAS,OAAO,KAAK,IAAI,EAAE,SAAS;AAAA,EACrC;AACF;AAEF,IAAO,6BAAQ;;;ACff,IAAAC,cAAkB;;;AC+MX,IAAK,mBAAL,kBAAKC,sBAAL;AACL,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,kBAAe;AACf,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,UAAO;AACP,EAAAA,kBAAA,UAAO;AACP,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,SAAM;AAEN,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,2BAAwB;AACxB,EAAAA,kBAAA,mBAAgB;AAChB,EAAAA,kBAAA,iBAAc;AAnBJ,SAAAA;AAAA,GAAA;AA0GL,IAAK,2BAAL,kBAAKC,8BAAL;AACL,EAAAA,0BAAA,aAAU;AACV,EAAAA,0BAAA,UAAO;AACP,EAAAA,0BAAA,eAAY;AACZ,EAAAA,0BAAA,eAAY;AAJF,SAAAA;AAAA,GAAA;;;ADtTL,IAAM,wBAAwB,cAAE,OAAO;AAAA,EAC5C,KAAK,cAAE,OAAO;AAAA,EACd,UAAU,cAAE,OAAO;AAAA,IACjB,YAAY,cAAE,OAAO;AAAA,MACnB,MAAM,cAAE,OAAO;AAAA,IACjB,CAAC;AAAA,IACD,YAAY,cAAE,OAAO;AAAA,MACnB,MAAM,cAAE,OAAO;AAAA,MACf,IAAI,cAAE,OAAO;AAAA,IACf,CAAC;AAAA,IACD,WAAW,cAAE,OAAO;AAAA,MAClB,KAAK,cAAE,OAAO;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;AAAA,EACD,KAAK,cAAE,OAAO,EAAE,SAAS;AAC3B,CAAC;AAEM,IAAM,uBAAuB,cAAE,OAAO;AAAA,EAC3C,YAAY,cAAE,KAAK,CAAC,YAAY,OAAO,CAAC;AAAA,EACxC,aAAa,cAAE,OAAO,EAAE,IAAI;AAAA,EAC5B,UAAU,cAAE;AAAA,IACV,cAAE,WAAW,gBAAgB;AAAA,IAC7B;AAAA,EACF;AACF,CAAC;AAEM,IAAM,YAAY,CAAC,cAAc,WAAW,SAAS;AAErD,IAAM,gBAAgB,cAAE;AAAA,EAC7B,cAAE,KAAK,SAAS,EAAE,GAAG,cAAE,OAAO,CAAC;AAAA,EAC/B;AACF;;;AElCA,IAAAC,cAAkB;;;ACAlB,IAAM,qBAAqB;AAAA,EACzB,aAAa;AAAA,IACX,EAAE,MAAM,iBAAiB,MAAM,UAAU;AAAA,IACzC,EAAE,MAAM,MAAM,MAAM,SAAS;AAAA,EAC/B;AACF;AAEA,IAAO,2BAAQ;;;ACPf,IAAM,mBAAmB;AAAA,EACvB;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;AAEA,IAAO,2BAAQ;;;ACXf,IAAM,gBAAgB;AAAA,EACpB,GAAG;AAAA,EACH;AAAA;AACF;AAEA,IAAO,wBAAQ;;;ACPf,IAAO,uBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACfO,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AACF;;;ACDO,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAMjC;AACO,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAahC;;;ACtBO,IAAM,8BAA8B;AACpC,IAAM,4BAA4B;;;ACDlC,IAAM,wBAAwB;AAC9B,IAAM,0BAA0B;AAChC,IAAM,qBAAqB;AAC3B,IAAM,0BAA0B;AAChC,IAAM,wBAAwB;AAC9B,IAAM,oBAAoB;AAC1B,IAAM,kCAAkC;AACxC,IAAM,6BAA6B;AACnC,IAAM,+BAA+B;AACrC,IAAM,4BAA4B;AAClC,IAAM,uBAAuB;;;ACA7B,IAAM,qBAAqB,KAAK,KAAK,KAAK,KAAK;;;ATN/C,IAAM,6BAA6B,cAAE,OAAO;AAAA,EACjD,SAAS,cAAE,WAAW,gBAAgB;AAAA,EACtC,OAAO,cAAE,OAAO;AAAA,EAChB,WAAW,cAAE,OAAO;AAAA,EACpB,MAAM,cAAE,KAAK,oBAAY;AAAA,EACzB,UAAU,cAAE,OAAO;AAAA,EACnB,KAAK,cAAE,OAAO;AAAA,EACd,kBAAkB,cAAE,OAAO;AAC7B,CAAC;AAEM,IAAM,sBAAsB,cAAE;AAAA,EACnC,cAAE,WAAW,gBAAgB;AAAA,EAC7B;AACF;;;APbA,IAAM,SAAS,oBAAoB,MAAM,cAAU;AACnD,IAAM,OAAO,cAAc,MAAM,YAAQ;;;AiBLzC,IAAAC,iBAAuB;;;ACAvB;AAAA;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA,IAAAC,eAAkB;;;ACAlB,IAAAC,cAAkB;;;ACAlB,IAAAC,cAAkB;AAElB,IAAM,mBAAmB,cAAE,OAAO;AAAA,EAChC,UAAU,cAAE,OAAO;AAAA,EACnB,QAAQ,cAAE,OAAO;AAAA,EACjB,UAAU,cAAE,OAAO;AAAA,EACnB,QAAQ,cAAE,OAAO;AAAA,EACjB,MAAM,cAAE,OAAO,EAAE,YAAY;AAAA,EAC7B,gBAAgB,cAAE,OAAO,EAAE,IAAI;AAAA,EAC/B,cAAc,cAAE,OAAO,EAAE,IAAI;AAC/B,CAAC;AAED,IAAO,2BAAQ;;;ADTf,IAAM,qBAAqB,cAAE,MAAM,wBAAgB;AAEnD,IAAO,6BAAQ;;;AELf,IAAAC,cAAkB;AAElB,IAAM,oBAAoB,cAAE,OAAO;AAAA,EACjC,SAAS,cAAE,MAAM,CAAC,cAAE,OAAO,GAAG,cAAE,OAAO,CAAC,CAAC;AAAA,EACzC,sBAAsB,cAAE,MAAM,cAAE,OAAO;AAAA,IACrC,QAAQ,cAAE,OAAO;AAAA,IACjB,eAAe,cAAE,OAAO;AAAA,IACxB,UAAU,cAAE,OAAO;AAAA,EACrB,CAAC,CAAC,EAAE,SAAS;AAAA,EACb,iBAAiB,cAAE,OAAO,EAAE,SAAS;AACvC,CAAC;AAED,IAAO,4BAAQ;;;ACZf,IAAAC,cAAkB;AAElB,IAAM,cAAc,cAAE,OAAO;AAAA,EAC3B,OAAO,cAAE,OAAO;AAAA,IACd,MAAM,cAAE,OAAO;AAAA,IACf,QAAQ,cAAE,OAAO;AAAA,EACnB,CAAC;AAAA,EACD,WAAW,cAAE,OAAO;AACtB,CAAC;AAED,IAAO,sBAAQ;;;ACVf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAAC;AAAA;AAAA,IAAAC,eAAkB;AAClB,kBAAuD;;;ACDvD,IAAM,cAAc;AAAA,EAClB,OAAO;AAAA,EACP,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,oBAAoB;AAAA,EACpB,6BAA6B;AAAA,EAC7B,2BAA2B;AAAA,EAC3B,8BAA8B;AAAA,EAC9B,qBAAqB;AACvB;AAEA,IAAO,sBAAQ;;;AChBf,IAAM,mBAAmB;AAAA,EACvB,sCAAsC;AAAA,EACtC,qCAAqC;AAAA,EACrC,2BAA2B;AAAA,EAC3B,oCAAoC;AAAA,EACpC,yCAAyC;AAAA,EACzC,+BAA+B;AAAA,EAC/B,wCAAwC;AAAA,EACxC,8BAA8B;AAAA,EAC9B,iCAAiC;AACnC;AAEA,IAAO,2BAAQ;;;ACZf,IAAAC,mBAAA;AAAA,SAAAA,kBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,eAAkB;;;ACAlB,IAAAC,cAAkB;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,uBAA0B;AAC1B,oBAAuB;AAGR,SAAR,oBACL,cACA,UACA;AACA,QAAM,iBAAiB,IAAI,2BAAU,YAAY,EAAE,aAAa,QAAQ;AAExE,QAAM,KAAK,IAAI,2BAAU,qBAAO,WAAW,eAAe,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;AACxF,SAAO,GAAG,IAAI,IAAI,2BAAU,EAAE,EAAE,IAAI,yBAAyB,CAAC,EAAE,SAAS;AAC3E;;;ACZA,uBAA+B;AAC/B,IAAAC,iBAAuB;AACvB,4BAAsB;AAEtB,IAAM,eAAe,OAAO,SAAiB,aAA+B;AAC1E,4BAAAC,SAAU,UAAU,gCAAgC;AACpD,QAAM,gBAAgB,gCAAe,QAAQ,SAAS,QAAQ;AAC9D,MAAI;AACF,UAAM,UAAU,MAAM,QAAQ;AAAA,MAC5B;AAAA,QACE,cAAc,KAAK;AAAA,QACnB,cAAc,OAAO;AAAA,QACrB,cAAc,SAAS;AAAA,QACvB,cAAc,YAAY;AAAA,QAC1B,cAAc,UAAU,sBAAO,WAAW;AAAA,MAC5C;AAAA,IACF;AAEA,WAAO,QAAQ,OAAO;AAAA,EACxB,SAAS,KAAK;AACZ,WAAO;AAAA,EACT;AACF;AAEA,IAAO,uBAAQ;;;ACxBf,IAAAC,iBAAuB;AACvB,IAAM,kBAAN,MAAsB;AAAA,EACZ;AAAA,EACA;AAAA,EAER,YAAY,MAAc;AACxB,SAAK,IAAI;AACT,SAAK,IAAI,OAAO;AAAA,EAClB;AAAA,EAEO,YAAoB;AACzB,QAAI,IAAI,KAAK;AACb,UAAM,IAAI,KAAK;AAEf,SAAK,IAAI;AACT,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,IAAK,KAAK;AAEf,SAAK,IAAI;AACT,WAAO,IAAI;AAAA,EACb;AACF;AAEA,SAAS,eAAuB;AAC9B,SAAO,KAAK,MAAM,KAAK,IAAI,IAAI,KAAK,OAAO,CAAC;AAC9C;AAEA,SAAS,oBAAoB,MAAc,KAAkC;AAC3E,QAAM,SAAS,IAAI,WAAW,IAAI;AAElC,WAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,WAAO,CAAC,IAAI,IAAI,UAAU,IAAI;AAAA,EAChC;AAEA,SAAO;AACT;AAEA,SAAS,4BAA4B,MAA0B;AAC7D,QAAM,OAAO,aAAa;AAC1B,QAAM,MAAM,IAAI,gBAAgB,IAAI;AACpC,SAAO,oBAAoB,MAAM,GAAG;AACtC;AAEA,IAAM,iBAAiB,MAAM;AAC3B,QAAM,cAAc;AACpB,QAAM,OAAO,4BAA4B,WAAW;AACpD,QAAM,SAAS,sBAAO,UAAU,IAAI;AACpC,SAAO;AACT;AAEA,IAAO,yBAAQ;;;ACnDf,IAAAC,oBAA0B;AAQX,SAAR,kBAAmC,OAAe,UAAkB;AACzE,QAAM,aAAa,IAAI,4BAAU,SAAS,SAAS,CAAC;AACpD,MAAI,CAAC,WAAW,UAAU;AAAG,UAAM,IAAI,MAAM,aAAa,WAAW,SAAS,CAAC,qBAAqB;AACpG,SAAO,IAAI,4BAAU,MAAM,SAAS,CAAC,EAAE,IAAI,IAAI,4BAAU,EAAE,EAAE,IAAI,UAAU,CAAC;AAC9E;;;ACZA,IAAAC,oBAA0B;AASX,SAAR,gBACL,OACA,UACA,cACA;AACA,QAAM,aAAa,IAAI,4BAAU,QAAQ;AACzC,MAAI,CAAC,WAAW,UAAU;AAAG,UAAM,IAAI,MAAM,aAAa,WAAW,SAAS,CAAC,qBAAqB;AACpG,QAAM,UAAU,IAAI,4BAAU,KAAK;AACnC,SAAO;AAAA,IACL,QACG,aAAa,IAAI,4BAAU,EAAE,EAAE,IAAI,QAAQ,CAAC,EAC5C,aAAa,YAAY,EACzB,SAAS;AAAA,EACd;AACF;;;ACrBe,SAAR,2BAA4C,aAAqB,KAAa;AACnF,MAAI,EAAE,OAAO,OAAO;AAClB,UAAM,IAAI,MAAM,OAAO,GAAG,iDAAiD,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,EAC3G;AACA,QAAM,UAAU,KAAK,GAAG;AACxB,QAAM,cAAc,SAAS;AAC7B,MAAI,CAAC;AAAa,UAAM,IAAI,MAAM,wDAAwD;AAE1F,SAAO,OAAO,OAAO,MAAM,EACxB,KAAK,CAAC,UAAU,MAAM,KAAK,YAAY,MAAM,YAAY,YAAY,KAClE,MAAM,WAAW,WAAW;AACpC;;;ACbe,SAAR,YAA+C,KAAsB;AAE1E,SAAO,IAAI,YAAY;AACzB;;;ACHe,SAAR,YAA+C,KAAsB;AAE1E,SAAO,IAAI,YAAY;AACzB;;;ACAA,IAAM,0BAA0B,CAAC,UAAmE,qBACjG,IAAI,WAAW,EAAE,KAAK,CAAC,gBAAgB,gBAAgB,KAAK;AAE/D,IAAO,kCAAQ;;;ACNf,IAAAC,iBAAuB;AAEvB,IAAM,8BAA8B,CAAC,mBAAoD;AACvF,QAAM,qBAAqB,OACxB,QAAQ,cAAc,EACtB,OAAwC,CAAC,MAAM,CAAC,WAAW,OAAO,MAAM;AACvE,QAAI,YAAY;AAAW,aAAO;AAClC,WAAO;AAAA,MACL,GAAG;AAAA,MACH,CAAC,OAAO,GAAG;AAAA,IACb;AAAA,EACF,GAAG,CAAC,CAAC;AAEP,QAAM,2BAA2B,mBAAmB,sBAAO,WAAW;AACtE,MAAI,6BAA6B,QAAW;AAC1C,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AACA,SAAO;AACT;AAEA,IAAO,sCAAQ;;;ACpBf,IAAAC,cAAkB;AAGlB,IAAM,iBAAiB,CAAC,YAAiD;AACvE,QAAM,EAAE,QAAQ,IAAI,cAAE,WAAW,gBAAgB,EAAE,UAAU,OAAO;AACpE,SAAO;AACT;AAEA,IAAO,yBAAQ;;;ACLf,IAAM,aAAa,CAAC,QAAiC;AACnD,SAAO,UAAU,KAAK,CAAC,aAAa,aAAa,GAAG;AACtD;AAEA,IAAO,qBAAQ;;;ACaR,IAAM,cAAc,CAA8C,UAA2D;AAE7H,SAAS,gBAAgB,GAE9B;AACA,SAAO,MAAM,QAAQ,OAAO,MAAM;AACpC;AAEO,SAAS,cACd,KACA,KACgB;AAChB,SAAO,OAAO;AAChB;AAEO,SAAS,QACd,KACA,KAC+B;AAC/B,SAAO,OAAO;AAChB;AAEO,SAAS,WAAW,WAAgD;AACzE,MAAI,CAAC,gBAAgB,SAAS,KAAK,CAAC,QAAQ,WAAW,MAAM;AAAG,WAAO;AACvE,QAAM,OAAO,OAAO,UAAU;AAC9B,SAAO,SAAS,YAAY,SAAS;AACvC;AAEO,SAAS,aAAa,WAA6C;AACxE,MAAI,CAAC,gBAAgB,SAAS;AAAG,WAAO;AACxC,QAAM,oBAAoB,QAAQ,WAAW,QAAQ,KAAK,OAAO,UAAU,WAAW;AACtF,SAAO;AACT;AAEO,SAAS,cAAc,WAA8C;AAC1E,MAAI,CAAC,gBAAgB,SAAS;AAAG,WAAO;AACxC,QAAM,qBAAqB,QAAQ,WAAW,SAAS,KAAK,OAAO,UAAU,YAAY;AACzF,SAAO;AACT;AAEO,SAAS,YAAY,WAA4C;AACtE,MAAI,CAAC,gBAAgB,SAAS;AAAG,WAAO;AACxC,QAAM,mBAAmB,QAAQ,WAAW,OAAO,KAAK,gBAAgB,UAAU,KAAK;AACvF,SAAO;AACT;AAEO,SAAS,WAAW,WAAgD;AACzE,MAAI,CAAC,gBAAgB,SAAS;AAAG,WAAO;AACxC,QAAM,kBAAkB,QAAQ,WAAW,MAAM,KAAK,OAAO,UAAU,SAAS;AAChF,SAAO;AACT;;;AdnEA,IAAM,iBAAiB,cAAE;AAAA;AAAA,EACvB,cAAE,OAAO,EAAE,YAAY;AAAA;AAAA,EACvB,cAAE,MAAM;AAAA,IACN,cAAE,OAAO;AAAA;AAAA,IACT,cAAE,OAAO;AAAA;AAAA,IACT,cAAE,OAAO;AAAA;AAAA,IACT,cAAE,OAAO;AAAA;AAAA,IACT,cAAE,OAAO;AAAA;AAAA,EACX,CAAC;AACH,EAAE,UAAU,WAAW;AACvB,IAAO,yBAAQ;;;Aebf,IAAAC,eAAkB;AAGlB,IAAM,oBAAoB,eAAE,OAAO;AAAA,EACjC,GAAG,eAAE,WAAW,mBAAW;AAAA,EAC3B,GAAG,eAAE,OAAO;AACd,CAAC;AAED,IAAO,4BAAQ;;;ACRf,IAAM,iBAAiB,CAAC,SAAS,YAAY;AAE7C,IAAO,4BAAQ;;;AjBMf,IAAM,oBAAoB,0BAAkB,OAAO;AAAA,EACjD,IAAI,eAAE,OAAO;AAAA,EACb,GAAG,eAAE,QAAQ,oBAAY,cAAc;AAAA,EACvC,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,IAAI,eAAE,MAAM,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAAA;AAChC,CAAC;AAED,IAAM,iBAAiB,eAAE,OAAO;AAAA,EAC9B,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO,EAAE,YAAY;AAAA;AAAA,EAC1B,GAAG,eAAE,KAAK,CAAC,OAAO,MAAM,CAAC;AAAA;AAAA,EACzB,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,wBAAgB;AAAA;AAAA,EAC1B,GAAG,eAAE,QAAQ,EAAE,SAAS;AAAA;AAC1B,CAAC;AAID,IAAM,0BAA0B,CAAC,cAA2B;AAC1D,SAAO,UAAU,IAAI,CAAC,QAAQ;AAAA,IAC5B,IAAI,GAAG;AAAA,IACP,UAAU,GAAG;AAAA,IACb,QAAQ,GAAG;AAAA,IACX,YAAY,GAAG;AAAA,IACf,MAAM,GAAG;AAAA,IACT,QAAQ,GAAG;AAAA,IACX,eAAe,GAAG;AAAA,IAClB,OAAO,GAAG;AAAA,IACV,eAAe,GAAG;AAAA,IAClB,QAAQ,GAAG;AAAA,EACb,EAAE;AACJ;AAEO,IAAM,oBAAoB,eAAE,OAAO;AAAA,EACxC,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,qBAAa;AAAA;AAAA,EACvB,GAAG,eAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EACxB,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,yBAAc,EAAE,SAAS;AAAA;AAAA,EACnC,GAAG,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACvB,IAAI,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACxB,KAAK,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACzB,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAC1B,MAAM,eAAE,KAAK,CAAC,aAAa,aAAa,CAAC,EAAE,SAAS;AAAA;AAAA,EACpD,GAAG,eAAe,MAAM;AAAA;AAC1B,CAAC,EACE,UAAU,CAAC,SAAS;AAAA,EACnB,GAAG;AAAA,EACH,GAAG;AACL,EAAE,EAAE,UAAU,CAAC,OAAO;AAAA,EACpB,MAAM,EAAE;AAAA,EACR,IAAI,EAAE;AAAA,EACN,eAAe,EAAE;AAAA,EACjB,QAAQ,EAAE;AAAA,EACV,YAAY,EAAE;AAAA,EACd,eAAe,EAAE;AAAA,EACjB,kBAAkB,EAAE;AAAA,EACpB,UAAU,EAAE;AAAA,EACZ,KAAK,EAAE;AAAA,EACP,aAAa,EAAE;AAAA,EACf,MAAM,EAAE;AAAA,EACR,WAAW,wBAAwB,EAAE,CAAC;AACxC,EAAE;AAEG,IAAM,kBAAkB,eAAE,OAAO;AAAA,EACtC,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO,EAAE,YAAY;AAAA;AAAA,EAC1B,GAAG,eAAE,KAAK,CAAC,OAAO,MAAM,CAAC;AAAA;AAAA,EACzB,MAAM,eAAE,KAAK,CAAC,aAAa,aAAa,CAAC,EAAE,SAAS;AAAA;AAAA,EACpD,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,yBAAc,EAAE,SAAS;AAAA;AAAA,EACnC,GAAG,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACvB,GAAG,eAAE,OAAO,EAAE,YAAY;AAAA;AAAA,EAC1B,GAAG,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACvB,GAAG,eAAE,QAAQ;AAAA;AAAA,EACb,GAAG,eAAE,KAAK,qBAAa;AAAA;AAAA,EACvB,IAAI,eAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EACzB,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,IAAI,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACxB,KAAK,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACzB,IAAI,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACxB,GAAG,eAAe,MAAM;AAAA;AAAA;AAAA,EAGxB,GAAG,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACvB,GAAG,eAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EACxB,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA;AAC5B,CAAC,EAAE,UAAU,CAAC,SAAS;AAAA,EACrB,GAAG;AAAA,EACH,GAAG;AACL,EAAE,EAAE,UAAU,CAAC,OAAO;AAAA,EACpB,MAAM,EAAE;AAAA,EACR,IAAI,EAAE;AAAA,EACN,aAAa,EAAE;AAAA,EACf,YAAY,EAAE;AAAA,EACd,MAAM,EAAE;AAAA,EACR,MAAM,EAAE;AAAA,EACR,QAAQ,EAAE;AAAA,EACV,eAAe,EAAE;AAAA,EACjB,OAAO,EAAE;AAAA,EACT,eAAe,EAAE;AAAA,EACjB,kBAAkB,EAAE;AAAA,EACpB,UAAU,EAAE;AAAA,EACZ,KAAK,EAAE;AAAA,EACP,cAAc,EAAE;AAAA,EAChB,QAAQ,EAAE;AAAA,EACV,MAAM,EAAE;AAAA,EACR,YAAY,EAAE;AAAA,EACd,WAAW,EAAE;AAAA,EACb,YAAY,EAAE;AAAA,EACd,aAAa,EAAE;AAAA,EACf,UAAU,EAAE;AAAA,EACZ,KAAK,EAAE;AAAA,EACP,YAAY,EAAE;AAAA,EACd,WAAW,wBAAwB,EAAE,CAAC;AACxC,EAAE;AAEF,IAAM,sBAAsB,kBAAkB,OAAO;AAAA,EACnD,GAAG,eAAE,QAAQ,GAAG;AAAA;AAAA,EAChB,IAAI,eAAE,MAAM,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAAA;AAAA,EAC9B,GAAG,uBAAe,SAAS;AAAA,EAC3B,GAAG,eAAE,MAAM,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,EAAE,SAAS;AAC/D,CAAC;AAED,IAAM,uBAAuB,kBAAkB,OAAO;AAAA,EACpD,GAAG,eAAE,QAAQ,GAAG;AAAA;AAAA,EAChB,GAAG;AAAA,EACH,GAAG,eAAE,MAAM,eAAe,EACvB,SAAS;AAAA;AACd,CAAC;AAED,IAAM,sBAAsB,eAAE,MAAM;AAAA,EAClC;AAAA,EACA;AACF,CAAC;AAED,IAAO,8BAAQ;;;AkB1Jf,IAAAC,eAAkB;AAQlB,IAAMC,qBAAoB,0BAAkB,OAAO;AAAA,EACjD,IAAI,eAAE,OAAO;AAAA,EACb,GAAG,eAAE,QAAQ,oBAAY,uBAAuB;AAAA,EAChD,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,IAAI,eAAE,MAAM,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAAA;AAChC,CAAC;AAED,IAAM,yBAAyB,eAAE,OAAO;AAAA,EACtC,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO,EAAE,YAAY;AAAA;AAAA,EAC1B,GAAG,eAAE,KAAK,CAAC,OAAO,MAAM,CAAC;AAAA;AAAA,EACzB,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,wBAAgB;AAAA;AAAA,EAC1B,GAAG,eAAE,QAAQ;AAAA;AACf,CAAC;AAID,IAAM,kCAAkC,CAAC,cAAmC;AAC1E,SAAO,UAAU,IAAI,CAAC,QAAQ;AAAA,IAC5B,MAAM,GAAG;AAAA,IACT,IAAI,GAAG;AAAA,IACP,QAAQ,GAAG;AAAA,IACX,eAAe,GAAG;AAAA,IAClB,OAAO,GAAG;AAAA,IACV,QAAQ,GAAG;AAAA,IACX,MAAM,GAAG;AAAA,IACT,WAAW,GAAG;AAAA,EAChB,EAAE;AACJ;AAEO,IAAM,4BAA4B,eAAE,OAAO;AAAA,EAChD,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,qBAAa;AAAA;AAAA,EACvB,GAAG,eAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EACxB,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,yBAAc,EAAE,SAAS;AAAA;AAAA,EACnC,GAAG,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACvB,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAC1B,GAAG,uBAAuB,MAAM;AAAA;AAClC,CAAC,EACE,UAAU,CAAC,SAAS;AAAA,EACnB,GAAG;AAAA,EACH,GAAG;AACL,EAAE,EAAE,UAAU,CAAC,OAAO;AAAA,EACpB,MAAM,EAAE;AAAA,EACR,IAAI,EAAE;AAAA,EACN,eAAe,EAAE;AAAA,EACjB,QAAQ,EAAE;AAAA,EACV,YAAY,EAAE;AAAA,EACd,eAAe,EAAE;AAAA,EACjB,kBAAkB,EAAE;AAAA,EACpB,aAAa,EAAE;AAAA,EACf,WAAW,gCAAgC,EAAE,CAAC;AAChD,EAAE;AAEG,IAAM,0BAA0B,eAAE,OAAO;AAAA,EAC9C,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO,EAAE,YAAY;AAAA;AAAA,EAC1B,GAAG,eAAE,KAAK,CAAC,OAAO,MAAM,CAAC;AAAA;AAAA,EACzB,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,yBAAc,EAAE,SAAS;AAAA;AAAA,EACnC,GAAG,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACvB,GAAG,eAAE,OAAO,EAAE,YAAY;AAAA;AAAA,EAC1B,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,QAAQ;AAAA;AAAA,EACb,GAAG,eAAE,KAAK,qBAAa;AAAA;AAAA,EACvB,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,uBAAuB,MAAM;AAAA;AAAA;AAAA,EAGhC,GAAG,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACvB,GAAG,eAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EACxB,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA;AAC5B,CAAC,EAAE,UAAU,CAAC,SAAS;AAAA,EACrB,GAAG;AAAA,EACH,GAAG;AACL,EAAE,EAAE,UAAU,CAAC,OAAO;AAAA,EACpB,MAAM,EAAE;AAAA,EACR,IAAI,EAAE;AAAA,EACN,aAAa,EAAE;AAAA,EACf,YAAY,EAAE;AAAA,EACd,MAAM,EAAE;AAAA,EACR,QAAQ,EAAE;AAAA,EACV,eAAe,EAAE;AAAA,EACjB,OAAO,EAAE;AAAA,EACT,eAAe,EAAE;AAAA,EACjB,kBAAkB,EAAE;AAAA,EACpB,UAAU,EAAE;AAAA,EACZ,KAAK,EAAE;AAAA,EACP,QAAQ,EAAE;AAAA,EACV,MAAM,EAAE;AAAA,EACR,WAAW,EAAE;AAAA,EACb,YAAY,EAAE;AAAA,EACd,aAAa,EAAE;AAAA,EACf,WAAW,gCAAgC,EAAE,CAAC;AAChD,EAAE;AAEF,IAAMC,uBAAsBD,mBAAkB,OAAO;AAAA,EACnD,GAAG,eAAE,QAAQ,GAAG;AAAA;AAAA,EAChB,IAAI,eAAE,MAAM,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAAA;AAAA,EAC9B,GAAG,uBAAe,SAAS;AAAA,EAC3B,GAAG,eAAE,MAAM,CAAC,wBAAwB,GAAG,yBAAyB,CAAC,CAAC,EAAE,SAAS;AAC/E,CAAC;AAED,IAAME,wBAAuBF,mBAAkB,OAAO;AAAA,EACpD,GAAG,eAAE,QAAQ,GAAG;AAAA;AAAA,EAChB,GAAG;AAAA,EACH,GAAG,eAAE,MAAM,uBAAuB,EAC/B,SAAS;AAAA;AACd,CAAC;AAED,IAAM,8BAA8B,eAAE,MAAM;AAAA,EAC1CE;AAAA,EACAD;AACF,CAAC;AAED,IAAO,sCAAQ;;;ACvIf,IAAAE,eAAkB;AAIlB,IAAM,yBAAyB,0BAAkB,OAAO;AAAA,EACtD,IAAI,eAAE,OAAO;AAAA,EACb,GAAG,eAAE,QAAQ,oBAAY,yBAAyB;AAAA,EAClD,GAAG,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC;AAAA,EACpB,GAAG,eAAE;AAAA,IACH,eAAE,MAAM;AAAA,MACN,eAAE,OAAO,EAAE,YAAY;AAAA;AAAA,MACvB,eAAE,OAAO;AAAA;AAAA,MACT,eAAE,OAAO,EAAE,IAAI;AAAA;AAAA,IACjB,CAAC;AAAA,EACH;AACF,CAAC;AAED,IAAO,iCAAQ;;;ACjBf,IAAAC,eAAkB;AAIlB,IAAMC,eAAc,0BAAkB,OAAO;AAAA,EAC3C,GAAG,eAAE,QAAQ,oBAAY,KAAK;AAAA,EAC9B,GAAG,eAAE,OAAO,EAAE,IAAI;AAAA;AAAA,EAClB,IAAI,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACxB,GAAG,eAAE,OAAO;AAAA;AACd,CAAC;AAED,IAAOC,uBAAQD;;;ACXf,IAAAE,eAAkB;AAIlB,IAAM,oBAAoB,0BAAkB,OAAO;AAAA,EACjD,GAAG,eAAE,QAAQ,oBAAY,cAAc;AAAA,EACvC,GAAG,eAAE,OAAO;AACd,CAAC;AAED,IAAO,4BAAQ;;;ACTf,IAAAC,eAAkB;AAIlB,IAAM,wBAAwB,0BAAkB,OAAO;AAAA,EACrD,GAAG,eAAE,QAAQ,oBAAY,SAAS;AACpC,CAAC;AAED,IAAO,gCAAQ;;;ACRf,IAAAC,eAAkB;;;ACAX,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AACF;AAEA,IAAM,mBAAmB;AAAA,EACvB,GAAG;AAAA,EACH;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,2BAAQ;;;ADTf,IAAM,YAAY,eACf,OAAO;AAAA,EACN,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,wBAAgB;AAAA;AAAA,EAC1B,IAAI,eAAE,OAAO;AAAA;AAAA,EACb,KAAK,eAAE,OAAO;AAAA;AAAA,EACd,IAAI,eAAE,OAAO;AAAA;AAAA,EACb,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,IAAI,eAAE,OAAO;AAAA;AAAA,EACb,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,IAAI,eAAE,OAAO;AAAA;AAAA,EACb,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,MAAM,eAAE,OAAO;AAAA;AAAA,EACf,MAAM,eAAE,OAAO;AAAA;AAAA,EACf,MAAM,eAAE,OAAO;AAAA;AAAA,EACf,MAAM,eAAE,OAAO;AAAA;AAAA,EACf,KAAK,eAAE,OAAO,EAAE,SAAS;AAAA;AAC3B,CAAC;AAEI,IAAM,mBAAmB,eAC7B,OAAO;AAAA,EACN,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,KAAK,eAAE,OAAO;AAAA;AAAA,EACd,IAAI,eAAE,OAAO;AAAA;AAAA,EACb,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACvB,IAAI,eAAE,OAAO;AAAA;AAAA,EACb,KAAK,eAAE,OAAO;AAAA;AAAA,EACd,KAAK,eAAE,OAAO;AAAA;AAAA,EACd,KAAK,UAAU,MAAM;AAAA;AACvB,CAAC,EACA,UAAU,CAAC,QAAQ;AAClB,QAAM,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU;AACjC,WAAO;AAAA,MACL,YAAY,MAAM;AAAA,MAClB,gBAAgB,MAAM;AAAA,MACtB,cAAc,MAAM;AAAA,MACpB,oBAAoB,MAAM;AAAA,MAC1B,wBAAwB,MAAM;AAAA,MAC9B,UAAU,MAAM;AAAA,MAChB,eAAe,MAAM;AAAA,MACrB,QAAQ,MAAM;AAAA,MACd,WAAW,MAAM;AAAA,MACjB,UAAU,MAAM;AAAA,MAChB,0BAA0B,MAAM;AAAA,MAChC,uBAAuB,MAAM;AAAA,MAC7B,2BAA2B,MAAM;AAAA,MACjC,wBAAwB,MAAM;AAAA,MAC9B,cAAc,MAAM;AAAA,IACtB;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,SAAS,IAAI;AAAA,IACb,YAAY,IAAI;AAAA,IAChB,aAAa,IAAI;AAAA,IACjB,QAAQ,IAAI;AAAA,IACZ,UAAU,IAAI;AAAA,IACd,QAAQ,IAAI;AAAA,IACZ,WAAW,IAAI;AAAA,IACf,eAAe,IAAI;AAAA,IACnB,0BAA0B,IAAI;AAAA,IAC9B,qBAAqB;AAAA,EACvB;AACF,CAAC;AAEH,IAAM,oBAAoB,eAAE,MAAM,gBAAgB;AAElD,IAAO,4BAAQ;;;AExEf,IAAAC,eAAkB;AAGlB,IAAM,2BAA2B,eAC9B,OAAO;AAAA,EACN,GAAG,eAAE,OAAO;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA,EACZ,KAAK,eAAE,OAAO;AAAA,EACd,IAAI,eAAE,OAAO;AAAA,EACb,GAAG,eAAE,OAAO;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA,EACZ,IAAI,eAAE,OAAO;AAAA,EACb,IAAI,eAAE,OAAO;AAAA,EACb,GAAG,eAAE,OAAO;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA,EACZ,IAAI,eAAE,OAAO;AAAA,EACb,KAAK,eAAE,OAAO;AAAA,EACd,KAAK,eAAE,OAAO;AAAA,EACd,GAAG,eAAE,OAAO;AAAA,EACZ,GAAG,eAAE,KAAK,wBAAgB;AAAA,EAC1B,MAAM,eAAE,OAAO;AAAA,EACf,MAAM,eAAE,OAAO;AAAA,EACf,MAAM,eAAE,OAAO;AAAA,EACf,MAAM,eAAE,OAAO;AAAA,EACf,KAAK,eAAE,OAAO,EAAE,SAAS;AAC3B,CAAC,EACA,UAAU,CAAC,SAAS;AAAA,EACnB,YAAY,IAAI;AAAA,EAChB,SAAS,IAAI;AAAA,EACb,YAAY,IAAI;AAAA,EAChB,aAAa,IAAI;AAAA,EACjB,QAAQ,IAAI;AAAA,EACZ,UAAU,IAAI;AAAA,EACd,cAAc,IAAI;AAAA,EAClB,eAAe,IAAI;AAAA,EACnB,UAAU,IAAI;AAAA,EACd,QAAQ,IAAI;AAAA,EACZ,WAAW,IAAI;AAAA,EACf,eAAe,IAAI;AAAA,EACnB,0BAA0B,IAAI;AAAA,EAC9B,UAAU,IAAI;AAAA,EACd,QAAQ,IAAI;AAAA,EACZ,0BAA0B,IAAI;AAAA,EAC9B,uBAAuB,IAAI;AAAA,EAC3B,2BAA2B,IAAI;AAAA,EAC/B,wBAAwB,IAAI;AAAA,EAC5B,cAAc,IAAI;AACpB,EAAE;AAEJ,IAAM,4BAA4B,eAAE,MAAM,wBAAwB;AAElE,IAAO,oCAAQ;;;ACnDf,IAAAC,eAAkB;;;ACAlB,IAAAC,iBAAuB;AACvB,IAAAC,eAAkB;AAElB,IAAM,gBAAgB,eAAE,OAAO,EAAE,OAAO,sBAAO,WAAW,CAAC,WAAW;AAAA,EACpE,SAAS,6BAA6B,KAAK;AAC7C,EAAE;AAEF,IAAO,wBAAQ;;;ADAR,IAAM,4BAA4B,eAAE,OAAO;AAAA,EAChD,GAAG,eAAE,QAAQ,oBAAY,4BAA4B;AAAA;AAAA,EACrD,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG;AAAA;AAAA,EACH,IAAI,eAAE,OAAO;AAAA;AAAA,EACb,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,UAAU;AAAA;AAAA,EACpB,IAAI,eAAE,KAAK,aAAa;AAAA;AAAA,EACxB,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,KAAK,oBAAY;AAAA;AAAA,EACtB,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAC1B,GAAG,eAAE,OAAO,EAAE,SAAS;AAAA;AACzB,CAAC;;;AEtBD,IAAAC,eAAkB;AAIX,IAAM,sBAAsB,eAAE,MAAM;AAAA,EACzC,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,MAAM,eAAE,MAAM;AAAA,IACd,eAAE,KAAK,CAAC,QAAQ,KAAK,CAAC;AAAA;AAAA,IACtB,eAAE,OAAO,EAAE,YAAY;AAAA;AAAA,EACzB,CAAC,CAAC;AACJ,CAAC;AAEM,IAAM,kBAAkB,0BAAkB,OAAO;AAAA;AAAA,EAEtD,GAAG,eAAE,QAAQ,oBAAY,4BAA4B;AAAA,EACrD,GAAG,eAAE,OAAO;AAAA,EACZ,IAAI,eAAE,OAAO;AAAA,IACX,GAAG,eAAE,MAAM,mBAAmB;AAAA,IAC9B,GAAG,eAAE,MAAM,mBAAmB;AAAA,EAChC,CAAC;AACH,CAAC;;;ACrBD,IAAM,qBAAqB;AAAA,EACzB,wCAAwC;AAAA,EACxC,mCAAmC;AACrC;AACA,IAAO,6BAAQ;;;ACJf,IAAAC,eAAkB;AAIlB,IAAM,2BAA2B,0BAAkB,OAAO;AAAA,EACxD,IAAI,eAAE,OAAO;AAAA,EACb,GAAG,eAAE,QAAQ,oBAAY,mBAAmB;AAC9C,CAAC;AAED,IAAO,mCAAQ;;;ACTf,IAAAC,eAAkB;AAIlB,IAAM,wBAAwB,0BAAkB,OAAO;AAAA,EACrD,IAAI,eAAE,OAAO;AAAA,EACb,GAAG,eAAE,QAAQ,oBAAY,wBAAwB;AAAA,EACjD,GAAG,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC;AAAA,EACpB,GAAG,eAAE,MAAM;AAAA,IACT,eAAE,OAAO,EAAE,YAAY;AAAA;AAAA,IACvB,eAAE,OAAO;AAAA;AAAA,IACT,eAAE,OAAO,EAAE,IAAI;AAAA;AAAA,EACjB,CAAC;AACH,CAAC;AAED,IAAO,gCAAQ;;;ACff,IAAAC,eAAkB;AAMlB,IAAM,uBAAuB,0BAAkB,OAAO;AAAA,EACpD,IAAI,eAAE,OAAO;AAAA,EACb,GAAG,eAAE,QAAQ,oBAAY,kBAAkB;AAAA,EAC3C,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,IAAI,eAAE,MAAM,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAAA;AAChC,CAAC;AAED,IAAMC,uBAAsB,qBAAqB,OAAO;AAAA,EACtD,GAAG,eAAE,QAAQ,GAAG;AAAA;AAAA,EAChB,IAAI,eAAE,MAAM,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAAA;AAAA,EAC9B,GAAG,iBAAiB,SAAS;AAAA,EAC7B,GAAG,eAAE,MAAM,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,EAAE,SAAS;AAC/D,CAAC;AAED,IAAMC,wBAAuB,qBAAqB,OAAO;AAAA,EACvD,GAAG,eAAE,QAAQ,GAAG;AAAA;AAAA,EAChB,GAAG;AAAA,EACH,GAAG,eAAE,MAAM,eAAe,EACvB,SAAS;AAAA;AACd,CAAC;AAED,IAAM,yBAAyB,eAAE,MAAM;AAAA,EACrCA;AAAA,EACAD;AACF,CAAC;AAED,IAAO,iCAAQ;;;AChCf,IAAAE,eAAkB;AAMlB,IAAMC,wBAAuB,0BAAkB,OAAO;AAAA,EACpD,IAAI,eAAE,OAAO;AAAA,EACb,GAAG,eAAE,QAAQ,oBAAY,2BAA2B;AAAA,EACpD,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,IAAI,eAAE,MAAM,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAAA;AAChC,CAAC;AAED,IAAMC,uBAAsBD,sBAAqB,OAAO;AAAA,EACtD,GAAG,eAAE,QAAQ,GAAG;AAAA;AAAA,EAChB,IAAI,eAAE,MAAM,eAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAAA;AAAA,EAC9B,GAAG,kCAA0B,SAAS;AAAA,EACtC,GAAG,eAAE,MAAM,CAAC,wBAAwB,GAAG,yBAAyB,CAAC,CAAC,EAAE,SAAS;AAC/E,CAAC;AAED,IAAME,wBAAuBF,sBAAqB,OAAO;AAAA,EACvD,GAAG,eAAE,QAAQ,GAAG;AAAA;AAAA,EAChB,GAAG;AAAA,EACH,GAAG,eAAE,MAAM,uBAAuB,EAC/B,SAAS;AAAA;AACd,CAAC;AAED,IAAM,iCAAiC,eAAE,MAAM;AAAA,EAC7CE;AAAA,EACAD;AACF,CAAC;AAED,IAAO,yCAAQ;;;AChCf,IAAAE,eAAkB;AAGlB,IAAM,yBAAyB,eAAE,OAAO;AAAA,EACtC,GAAG,eAAE,QAAQ,oBAAY,yBAAyB;AAAA,EAClD,IAAI,eAAE,OAAO;AAAA;AAAA,EACb,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,GAAG,eAAE,OAAO;AAAA;AAAA,EACZ,IAAI,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACxB,IAAI,eAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACxB,KAAK,eAAE,OAAO;AAAA;AAAA,EACd,KAAK,eAAE,OAAO;AAAA;AAAA,EACd,IAAI,eAAE,OAAO;AAAA;AACf,CAAC;AAED,IAAO,iCAAQ;;;ACCR,IAAM,aAAa,OAAO;;;ACfjC,2BAAsB;AAEtB,wBAAiC;AA2B1B,IAAM,qBAAN,MAAyB;AAAA,EACtB;AAAA,EACS;AAAA,EACA;AAAA,EACA;AAAA,EAKjB,YACE,SACA,SACA;AACA,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,cAAU,oCAA2C;AAC1D,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,IAAW,SAAkB;AAC3B,WAAO,KAAK,IAAI,eAAe,qBAAAC,QAAU;AAAA,EAC3C;AAAA,EAEA,cAAc;AACZ,SAAK,QAAQ,SAAS,CAAC;AAEvB,SAAK,IAAI,oBAAoB,QAAQ,KAAK,UAAU;AACpD,SAAK,IAAI,oBAAoB,SAAS,KAAK,WAAW;AACtD,SAAK,IAAI,oBAAoB,WAAW,KAAK,aAAa;AAC1D,SAAK,IAAI,oBAAoB,SAAS,KAAK,WAAW;AAAA,EACxD;AAAA,EAEA,cAAc,CAAC,UAAgC;AAC7C,SAAK,QAAQ,KAAK,SAAS,KAAK;AAAA,EAClC;AAAA,EAEA,gBAAgB,CAAC,YAAoC;AACnD,SAAK,QAAQ,KAAK,WAAW,OAAO;AAAA,EACtC;AAAA,EAEA,cAAc,CAAC,eAAqC;AAClD,SAAK,QAAQ,KAAK,SAAS,UAAU;AAAA,EACvC;AAAA,EAEA,aAAa,CAAC,cAA+B;AAC3C,SAAK,kBAAkB;AACvB,SAAK,QAAQ,KAAK,QAAQ,SAAS;AAAA,EACrC;AAAA,EAEQ,UAAU;AAChB,SAAK,KAAK,IAAI,qBAAAA,QAAU,KAAK,SAAS,KAAK,OAAO;AAElD,SAAK,GAAG,iBAAiB,SAAS,KAAK,WAAW;AAClD,SAAK,GAAG,iBAAiB,WAAW,KAAK,aAAa;AACtD,SAAK,GAAG,iBAAiB,SAAS,KAAK,WAAW;AAClD,SAAK,GAAG,iBAAiB,QAAQ,KAAK,UAAU;AAAA,EAClD;AAAA,EAEA,YAAY;AACV,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,QAAQ,eAAkD;AACxD,WAAO,KAAK,QAAQ,GAAG,SAAS,aAAa;AAAA,EAC/C;AAAA,EAEA,UAAU,iBAAsD;AAC9D,WAAO,KAAK,QAAQ,GAAG,WAAW,eAAe;AAAA,EACnD;AAAA,EAEQ,oBAAoB;AAC1B,QAAI,KAAK,IAAI,eAAe,qBAAAA,QAAU,MAAM;AAC1C,iBAAW,WAAW,KAAK,cAAc;AACvC,aAAK,GAAG,KAAK,OAAO;AAAA,MACtB;AACA,WAAK,eAAe,CAAC;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,QAAQ,eAAkD;AACxD,WAAO,KAAK,QAAQ,GAAG,SAAS,aAAa;AAAA,EAC/C;AAAA,EAEA,OAAO,cAAgD;AACrD,WAAO,KAAK,QAAQ,GAAG,QAAQ,YAAY;AAAA,EAC7C;AAAA,EAEQ,eAA6B,CAAC;AAAA,EACtC,YAAY,SAAqB;AAC/B,QAAI,KAAK,IAAI,eAAe,qBAAAA,QAAU,MAAM;AAC1C,WAAK,GAAG,KAAK,OAAO;AAAA,IACtB,OAAO;AACL,WAAK,aAAa,KAAK,OAAO;AAAA,IAChC;AAAA,EACF;AAAA,EAEA,MAAM,MAAe,MAAe;AAClC,QAAI;AACF,WAAK,IAAI,MAAM,MAAM,IAAI;AAAA,IAC3B,SAAS,GAAG;AACV,cAAQ,MAAM,CAAC;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,QAAQ,MAAe,MAAe;AACpC,SAAK,MAAM,MAAM,IAAI;AACrB,SAAK,YAAY;AACjB,WAAO,KAAK;AAAA,EACd;AACF;;;AxCnHA,IAAAC,qBAA+C;AAI/C,IAAM,cAAc;AACpB,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAG3B,IAAM,gBAAgB,eAAE,MAAM;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACAC;AAAA,EACA;AACF,CAAC;AAsJD,IAAM,yBAAyB;AAAA,EAC7B,yBAAiB;AACnB;AAEA,IAAM,YAAY,CAAC,YAAmD,OAAO,OAAO,wBAAgB,EAAE,KAAK,CAAC,MAAM,MAAM,OAAO;AAE/H,IAAM,0BAA0B;AAChC,IAAM,0BAA0B;AAOhC,IAAM,iBAAiB;AAOvB,SAAS,eAAe,KAAa;AACnC,SAAO,QAAQ,IAAI,YAAY;AACjC;AAEA,IAAM,eAAN,MAAmB;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,wBAAwB;AAAA,EAEvB,gBAEJ,CAAC;AAAA,EAEC;AAAA,EAEA;AAAA,EAEA;AAAA,EAEC,oBAAqD,CAAC;AAAA,EAE7C;AAAA,EAET,UAAU;AAAA,EAElB,IAAI,MAAM;AACR,UAAM,QAAQ,IAAI,IAAI,KAAK,KAAK;AAEhC,QAAI,KAAK,WAAW;AAClB,YAAM,WAAW,KAAK,UAAU;AAChC,YAAM,WAAW,KAAK,UAAU;AAAA,IAClC;AAEA,WAAO;AAAA,EACT;AAAA,EAES,iBAAa,YAAAC,IAAO;AAAA,EAEpB;AAAA,EAEA;AAAA,EAET,YACE,OACA,WACA;AACA,SAAK,QAAQ;AACb,SAAK,YAAY;AACjB,SAAK,cAAU,qCAAiB;AAAA,EAClC;AAAA,EAEiB,eAAe,MAAM;AACpC,SAAK,eAAe;AAAA,EACtB;AAAA,EAEQ,QAAQ,MAAkB;AAChC,SAAK,WAAW,YAAY,IAAI;AAAA,EAClC;AAAA,EAEQ,KAAK,YAAkB;AAC7B,UAAM,WAAW,KAAK,UAAU,UAAU;AAC1C,SAAK,WAAW,YAAY,QAAQ;AACpC,SAAK,SAAS,SAAS,KAAK,IAAI,CAAC,OAAO,QAAQ,EAAE;AAAA,EACpD;AAAA,EAEQ;AAAA,EAEA,iBAAiB;AACvB,UAAM,YAAY,MAAM;AACtB,UAAI,KAAK,SAAS;AAChB,aAAK,UAAU;AAAA,MACjB,OAAO;AACL,aAAK,SAAS,mBAAmB;AACjC,aAAK,wBAAwB;AAC7B,aAAK,eAAe;AACpB,aAAK,WAAW,MAAM,GAAI;AAAA,MAC5B;AAAA,IACF;AAEA,SAAK,qBAAqB,YAAY,WAAW,uBAAuB,kBAAkB;AAAA,EAC5F;AAAA,EAEQ,iBAAiB;AACvB,SAAK,UAAU;AACf,kBAAc,KAAK,kBAAkB;AAAA,EACvC;AAAA,EAEA,UACE,MACA,cACA,oBACA;AACA,UAAM,KAAK,SAAS,UACd,aAAqB,cACvB,YAAAA,IAAO;AAEX,UAAM,mBAAmB,MAAM;AAC7B,YAAM,cAAc,uBAAuB,KAAK,CAAC,MAAM,MAAM,IAAI;AACjE,YAAM,aAAmB,CAAC;AAC1B,iBAAW,GAAG,IAAI;AAClB,iBAAW,IAAI,IAAI;AAEnB,UAAI,aAAa,cAAc;AAC7B,YAAI,OAAO,aAAa,YAAY,UAAU;AAC5C,qBAAW,GAAG,IAAI,aAAa;AAAA,QACjC,OAAO;AACL,qBAAW,GAAG,IAAI;AAAA,YAChB,GAAG;AAAA,YACH,GAAG,aAAa;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,YAAM,SAAS,cAAc,YAAY;AAEzC,UAAI,uBAAuB,QAAW;AACpC,cAAM,OAAO,KAAK,cAAc,IAAI;AACpC,YAAI,eAAe,QAAQ,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG;AACvD,gBAAM,IAAI,MAAM,iBAAiB,IAAI,6CAA6C;AAAA,QACpF;AACA,aAAK,SAAS,kBAAkB,IAAI,YAAY,EAAE,2BAA2B,KAAK,UAAU,UAAU,CAAC,EAAE;AACzG,aAAK,cAAc,IAAI,IAAI;AAAA,UACzB,GAAG,KAAK,cAAc,IAAI;AAAA,UAC1B,CAAC,MAAM,GAAG;AAAA,QACZ;AAAA,MACF,OAAO;AACL,aAAK,SAAS,oBAAoB,IAAI,YAAY,EAAE,2BAA2B,KAAK,UAAU,UAAU,CAAC,EAAE;AAC3G,cAAM,UAAU,KAAK,cAAc,IAAI,IAAI,kBAAkB;AAC7D,YAAI,SAAS;AACX,eAAK,kBAAkB,kBAAkB,IAAI;AAC7C,cAAI,KAAK,cAAc,IAAI,IAAI,kBAAkB,GAAG;AAClD,mBAAO,KAAK,cAAc,IAAI,IAAI,kBAAkB;AAAA,UACtD;AACA,eAAK,cAAc,IAAI,IAAI;AAAA,YACzB,GAAG,KAAK,cAAc,IAAI;AAAA,YAC1B,CAAC,MAAM,GAAG;AAAA,cACR,GAAG;AAAA,cACH,UAAU,QAAQ;AAAA,YACpB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,WAAK,SAAS,iCAAiC,KAAK,UAAU,UAAU,CAAC,EAAE;AAC3E,WAAK,KAAK,UAAU;AAAA,IACtB;AAcA,QAAI,CAAC,KAAK,WAAW;AACnB,WAAK,KAAK;AAAA,IACZ;AACA,qBAAiB;AAEjB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,wBAAwB,IAAoB;AAC1C,UAAM,QAAQ,KAAK,kBAAkB,EAAE;AACvC,QAAI,UAAU,UAAa,UAAU,IAAI;AACvC,aAAO,KAAK,wBAAwB,KAAK;AAAA,IAC3C;AACA,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,cAAwD,SAAkB;AACpF,UAAM,cAAc,KAAK,wBAAwB,YAAY;AAC7D,SAAK,KAAK;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAI,YAAY,UAAc,EAAE,GAAG,QAAQ;AAAA,IAC7C,CAAC;AAED,UAAM,2BAA2B,CAAC,UAAkB;AAClD,aAAO,MAAM,SAAS,cAAc,KAAK,CAAC,MAAM,SAAS,GAAG,KAAK,eAAe,KAAK;AAAA,IACvF;AAEA,QAAI,YAAY,SAAS,IAAI,GAAG;AAC9B,YAAM,kBAAkB,KAAK,cAAc,yBAAiB,yBAAyB;AACrF,UAAI,iBAAiB;AACnB,cAAM,cAAc,OAAO,QAAQ,eAAe,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,OAAO,YAAY,WAAW;AACtG,YAAI,aAAa;AACf,gBAAM,CAAC,GAAG,IAAI;AACd,iBAAO,KAAK,cAAc,yBAAiB,yBAAyB,IAAI,GAAG;AAAA,QAC7E;AAAA,MACF;AAEA,YAAM,mBAAmB,KAAK,cAAc,yBAAiB,6BAA6B;AAC1F,UAAI,kBAAkB;AACpB,cAAM,eAAe,OAAO,QAAQ,gBAAgB,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,OAAO,YAAY,WAAW;AACxG,YAAI,cAAc;AAChB,gBAAM,CAAC,GAAG,IAAI;AACd,iBAAO,KAAK,cAAc,yBAAiB,6BAA6B,IAAI,GAAG;AAAA,QACjF;AAAA,MACF;AAAA,IACF,eAAW,YAAAC,UAAa,WAAW,GAAG;AAEpC,aAAO,KAAK,cAAc,yBAAiB,mCAAmC,IAAI,WAAW;AAC7F,aAAO,KAAK,cAAc,yBAAiB,4BAA4B,IAAI,WAAW;AACtF,aAAO,KAAK,cAAc,yBAAiB,+BAA+B,IAAI,WAAW;AAAA,IAE3F,WAAW,yBAAyB,WAAW,GAAG;AAChD,YAAM,mBAAmB,KAAK,cAAc,yBAAiB,uCAAuC;AACpG,UAAI,kBAAkB;AACpB,cAAM,eAAe,OAAO,QAAQ,gBAAgB,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,OAAO,YAAY,WAAW;AACxG,YAAI,cAAc;AAChB,gBAAM,CAAC,GAAG,IAAI;AACd,iBAAO,KAAK,cAAc,yBAAiB,uCAAuC,IAAI,GAAG;AAAA,QAC3F;AAAA,MACF;AAAA,IACF,WAAW,gBAAgB,2BAAmB,wCAAwC;AACpF,aAAO,KAAK,cAAc,yBAAiB,oCAAoC,IAAI,SAAS;AAAA,IAC9F;AAAA,EACF;AAAA,EAEA,UAAU;AACR,SAAK,eAAe;AACpB,SAAK,wBAAwB;AAC7B,SAAK,WAAW,QAAQ;AACxB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBO,SAAkB;AACvB,WAAO,KAAK,WAAW,WAAW;AAAA,EACpC;AAAA,EAEO,SAAS,cAAgD;AAC9D,WAAO,KAAK,QAAQ,GAAG,QAAQ,YAAY;AAAA,EAC7C;AAAA,EAEO,UAAU,eAAkD;AACjE,WAAO,KAAK,QAAQ,GAAG,SAAS,aAAa;AAAA,EAC/C;AAAA,EAEO,KAAK,cAAc,OAAO;AAC/B,SAAK,wBAAwB;AAC7B,SAAK,WAAW,QAAQ;AACxB,SAAK,YAAY,IAAI,mBAAmB,KAAK,GAAG;AAChD,SAAK,UAAU,QAAQ,CAAC,QAAQ;AAC9B,WAAK,UAAU,uBAAuB,IAAI,OAAO,EAAE;AACnD,WAAK,SAAS,iBAAiB,IAAI,OAAO,EAAE;AAAA,IAC9C,CAAC;AACD,SAAK,UAAU,QAAQ,CAAC,MAAM;AAC5B,WAAK,eAAe;AACpB,WAAK,WAAW,YAAY;AAC5B,WAAK,QAAQ,KAAK,SAAS,CAAC;AAC5B,WAAK,SAAS,mCAAmC,KAAK,wBAAwB,kBAAkB,EAAE,EAAE;AACpG,UAAI,CAAC,KAAK,uBAAuB;AAC/B,mBAAW,MAAM;AACf,eAAK,KAAK,IAAI;AAAA,QAChB,GAAG,GAAI;AAAA,MACT;AAAA,IACF,CAAC;AACD,SAAK,UAAU,OAAO,CAAC,MAAM;AAC3B,WAAK,QAAQ,KAAK,QAAQ,CAAC;AAC3B,WAAK,aAAa;AAElB,UAAI,aAAa;AACf,eAAO,KAAK,KAAK,aAAa,EAC3B,OAAO,SAAS,EAChB,QAAQ,CAAC,YAAY;AACpB,gBAAMC,iBAAgB,KAAK,cAAc,OAAO;AAChD,cAAIA,gBAAe;AACjB,mBAAO,KAAKA,cAAa,EAAE,QAAQ,CAAC,UAAU;AAC5C,oBAAM,aAAaA,eAAc,KAAK;AACtC,mBAAK,SAAS,8CAA8C,OAAO,IAAI,KAAK,aAAa,KAAK,UAAU,UAAU,CAAC,EAAE;AACrH,kBAAI;AAAY,qBAAK,UAAU,SAAS,YAAY,KAAK;AAAA,YAC3D,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACL;AACA,WAAK,SAAS,kCAAkC,cAAc,iBAAiB,EAAE,EAAE;AAAA,IACrF,CAAC;AACD,SAAK,UAAU,UAAU,CAAC,MAAM;AAC9B,WAAK,UAAU;AACf,YAAM,EAAE,KAAK,IAAI;AACjB,UAAI,OAAO,SAAS;AAAU,cAAM,IAAI,MAAM,2CAA2C;AACzF,WAAK,SAAS,mCAAmC,IAAI,EAAE;AACvD,YAAM,UAAmB,KAAK,MAAM,IAAI;AAExC,YAAM,OAAO,cAAc,MAAM,OAAO;AAExC,cAAQ,KAAK,GAAG;AAAA,QACd,KAAK,oBAAY;AAAO;AACtB,kBAAM,MAAMH,qBAAY,MAAM,IAAI;AAKlC,kBAAM,EAAE,IAAI,EAAE,IAAI;AAClB,gBAAI,OAAO,QAAW;AACpB,oBAAM,0BAA0B,EAAE,MAAM,uBAAuB;AAC/D,oBAAM,sBAAsB,EAAE,MAAM,uBAAuB;AAC3D,kBAAI,4BAA4B,MAAM;AACpC,sBAAM,CAAC,EAAE,YAAY,IAAI;AACzB,oBAAI,iBAAiB;AAAW,wBAAM,IAAI,UAAU,oDAAoD;AACxG,wBAAQ,KAAK,4DAA4D,YAAY,oIAAoI;AAAA,cAC3N,WAAW,wBAAwB,MAAM;AACvC,sBAAM,CAAC,EAAE,cAAc,WAAW,IAAI;AACtC,oBAAI,iBAAiB;AAAW,wBAAM,IAAI,UAAU,oDAAoD;AACxG,oBAAI,gBAAgB;AAAW,wBAAM,IAAI,UAAU,oDAAoD;AACvG,wBAAQ,KAAK,8BAA8B,YAAY,2BAA2B,WAAW,uIAAuI;AAAA,cACtO,OAAO;AACL,sBAAM,UAAU,WAAW,KAAK,aAAa,EAAE,KAAK,CAAC,OAAO,KAAK,cAAc,EAAE,IAAI,EAAE,CAAC;AACxF,oBAAI,YAAY;AAAW,wBAAM,IAAI,MAAM,qDAAqD,EAAE,4BAA4B,KAAK,UAAU,KAAK,aAAa,CAAC,EAAE;AAClK,sBAAM,MAAM,KAAK,cAAc,OAAO,IAAI,EAAE;AAC5C,oBAAI,QAAQ;AAAW,wBAAM,IAAI,MAAM,gDAAgD,EAAE,4BAA4B,KAAK,UAAU,KAAK,aAAa,CAAC,EAAE;AACzJ,oBAAI,aAAa,KAAK;AACpB,sBAAI,QAAQ,IAAI,CAAC;AAAA,gBACnB;AAAA,cACF;AAAA,YACF;AACA,iBAAK,UAAU,IAAI,CAAC;AAAA,UACtB;AACE;AAAA,QACF,KAAK,oBAAY;AACf,eAAK,QAAQ,IAAI;AACjB;AAAA,QACF,KAAK,oBAAY;AAEf;AAAA,QACF,KAAK,oBAAY;AACf,eAAK,cAAc,yBAAiB,4BAA4B,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,YACrF,uBAAuB,KAAK;AAAA,YAC5B,QAAQ,KAAK;AAAA,YACb,YAAY,KAAK;AAAA,YACjB,UAAU,KAAK;AAAA,YACf,WAAW,KAAK;AAAA,YAChB,UAAU,KAAK;AAAA,YACf,WAAW,KAAK;AAAA,YAChB,WAAW,KAAK;AAAA,UAClB,CAAC;AACD;AAAA,QACF,KAAK,oBAAY;AACf,eAAK,cAAc,yBAAiB,+BAA+B,IAAI,KAAK,EAAE,GAAG;AAAA,YAC/E;AAAA,cACE,WAAW,KAAK;AAAA,cAChB,QAAQ,KAAK;AAAA,cACb,IAAI,KAAK;AAAA,cACT,YAAY,KAAK;AAAA,cACjB,MAAM,KAAK;AAAA,cACX,cAAc,KAAK;AAAA,cACnB,QAAQ,KAAK;AAAA,cACb,UAAU,KAAK;AAAA,cACf,OAAO,KAAK;AAAA,cACZ,QAAQ,KAAK;AAAA,cACb,SAAS,KAAK;AAAA,cACd,aAAa,KAAK;AAAA,cAClB,KAAK,KAAK;AAAA,YACZ;AAAA,UACF;AACA;AAAA,QACF,KAAK,oBAAY;AACf,eAAK,SAAS;AACd;AAAA,QACF,KAAK,oBAAY;AAA8B;AAC7C,kBAAM,EAAE,IAAI,EAAE,IAAI;AAClB,kBAAM,oBAAoB,CAAC,aAAwC,SAAS,OAAwB,CAAC,KAAK,SAAS;AACjH,oBAAM;AAAA,gBACJ;AAAA,gBACA;AAAA,gBACA;AAAA,cACF,IAAI;AAEJ,kBAAI,KAAK;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,QAAQ,OAAO;AAAA,kBAClC;AAAA,kBACA;AAAA,gBACF,EAAE;AAAA,cACJ,CAAC;AAED,qBAAO;AAAA,YACT,GAAG,CAAC,CAAC;AACL,iBAAK,cACH,yBAAiB,uCACnB,IAAI,KAAK,CAAC,GAAG;AAAA,cACX,kBAAkB,GAAG,CAAC;AAAA,cACtB,kBAAkB,GAAG,CAAC;AAAA,cACtB;AAAA,YACF;AAAA,UACF;AACE;AAAA,QACF,KAAK,oBAAY,0BAA0B;AACzC,gBAAM,OAAO,KAAK;AAClB,gBAAM,CAAC,EAAE,QAAQ,cAAc,IAAI;AAEnC,eAAK,cACH,yBAAiB,mCACnB,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,YACrB,MAAM;AAAA,cACJ;AAAA,cACA;AAAA,YACF;AAAA,YACA,MAAM,KAAK,MAAM,MAAM,YAAY;AAAA,UACrC,CAAC;AAED;AAAA,QACF;AAAA,QACA,KAAK,oBAAY;AAA2B;AAC1C,kBAAM,QAAQ;AACd,kBAAM,eAAyD,CAAC;AAEhE,kBAAM,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,cAAc,MAAM;AACtD,2BAAa,QAAQ,IAAI;AAAA,gBACvB;AAAA,gBACA;AAAA,cACF;AAAA,YACF,CAAC;AAED,iBAAK,cACH,yBAAiB,oCACnB,IAAI,SAAS,GAAG,SAAS;AAAA,cACvB,MAAM,KAAK,MAAM,MAAM,YAAY;AAAA,cACnC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE;AAAA,QACF,KAAK,oBAAY;AACf,kBAAQ,KAAK,GAAG;AAAA,YACd,KAAK;AAAK;AACR,sBAAM,aAAc,KAAK,IACrB,KAAK,EAAE,OAA+C,CAAC,MAAM,MAAM;AACnE,uBAAK,KAAK,CAAC;AAEX,yBAAO;AAAA,gBACT,GAAG,CAAC,CAAC,IACH;AAEJ,qBAAK,cACH,yBAAiB,6BACnB,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,kBACrB,MAAM;AAAA,kBACN,QAAQ;AAAA,kBACR,SAAS,KAAK;AAAA,gBAChB,CAAC;AAAA,cACH;AACE;AAAA,YACF,KAAK;AAAK;AACR,oBAAI;AACJ,oBAAI,KAAK,GAAG;AACV,wBAAM,aAAa,KAAK,EAAE,CAAC;AAC3B,gCAAc;AAAA,gBAChB;AAEA,qBAAK,cACH,yBAAiB,6BACnB,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,kBACrB,MAAM;AAAA,kBACN,OAAO;AAAA,kBACP,SAAS,KAAK;AAAA,gBAChB,CAAC;AAAA,cACH;AACE;AAAA,YACF;AACE;AAAA,UACJ;AACA;AAAA,QACF,KAAK,oBAAY;AACf,kBAAQ,KAAK,GAAG;AAAA,YACd,KAAK;AAAK;AACR,sBAAM,qBAAsB,KAAK,IAC7B,KAAK,EAAE,OAAuD,CAAC,MAAM,MAAM;AAC3E,uBAAK,KAAK,CAAC;AAEX,yBAAO;AAAA,gBACT,GAAG,CAAC,CAAC,IACH;AAEJ,qBAAK,cACH,yBAAiB,sCACnB,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,kBACrB,MAAM;AAAA,kBACN,QAAQ;AAAA,kBACR,UAAU,KAAK;AAAA,gBACjB,CAAC;AAAA,cACH;AACE;AAAA,YACF,KAAK;AAAK;AACR,oBAAI;AACJ,oBAAI,KAAK,GAAG;AACV,wBAAM,qBAAqB,KAAK,EAAE,CAAC;AACnC,wCAAsB;AAAA,gBACxB;AAEA,qBAAK,cACH,yBAAiB,sCACnB,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,kBACrB,MAAM;AAAA,kBACN,OAAO;AAAA,kBACP,UAAU,KAAK;AAAA,gBACjB,CAAC;AAAA,cACH;AACE;AAAA,YACF;AACE;AAAA,UACJ;AACA;AAAA,QACF,KAAK,oBAAY;AAAgB;AAC/B,kBAAM,WAAY,KAAK,IACnB,OAAO,QAAQ,KAAK,CAAC,EACpB,OAAyC,CAAC,MAAM,CAAC,OAAO,aAAa,MAAM;AAC1E,kBAAI,CAAC;AAAe,uBAAO;AAC3B,oBAAM,CAAC,UAAU,UAAU,UAAU,QAAQ,SAAS,IAAI;AAE1D,mBAAK,KAAK,IAAI;AAAA,gBACZ;AAAA,gBAAU;AAAA,gBAAU;AAAA,gBAAU;AAAA,gBAAQ;AAAA,cACxC;AAEA,qBAAO;AAAA,YACT,GAAG,CAAC,CAAC,IACL,CAAC;AACL,oBAAQ,KAAK,GAAG;AAAA,cACd,KAAK;AAAK;AACR,wBAAM,aAAa,KAAK,IACpB,KAAK,EAAE,OAA+C,CAAC,MAAM,MAAM;AACnE,yBAAK,KAAK,CAAC;AAEX,2BAAO;AAAA,kBACT,GAAG,CAAC,CAAC,IACH;AAEJ,uBAAK,cACH,yBAAiB,yBACnB,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,oBACrB,MAAM;AAAA,oBACN,QAAQ;AAAA,oBACR;AAAA,kBACF,CAAC;AAAA,gBACH;AACE;AAAA,cACF,KAAK;AAAK;AACR,sBAAI;AACJ,sBAAI,KAAK,GAAG;AACV,0BAAM,aAAa,KAAK,EAAE,CAAC;AAC3B,kCAAc;AAAA,kBAChB;AAEA,uBAAK,cACH,yBAAiB,yBACnB,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,oBACrB,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP;AAAA,kBACF,CAAC;AAAA,gBACH;AACE;AAAA,cACF;AACE;AAAA,YACJ;AAAA,UACF;AACE;AAAA,QACF,KAAK,oBAAY;AAAyB;AACxC,kBAAM,WAAY,KAAK,IACnB,OAAO,QAAQ,KAAK,CAAC,EACpB,OAAyC,CAAC,MAAM,CAAC,OAAO,aAAa,MAAM;AAC1E,kBAAI,CAAC;AAAe,uBAAO;AAC3B,oBAAM,CAAC,UAAU,UAAU,UAAU,QAAQ,SAAS,IAAI;AAE1D,mBAAK,KAAK,IAAI;AAAA,gBACZ;AAAA,gBAAU;AAAA,gBAAU;AAAA,gBAAU;AAAA,gBAAQ;AAAA,cACxC;AAEA,qBAAO;AAAA,YACT,GAAG,CAAC,CAAC,IACL,CAAC;AACL,oBAAQ,KAAK,GAAG;AAAA,cACd,KAAK;AAAK;AACR,wBAAM,qBAAqB,KAAK,IAC5B,KAAK,EAAE,OAAuD,CAAC,MAAM,MAAM;AAC3E,yBAAK,KAAK,CAAC;AAEX,2BAAO;AAAA,kBACT,GAAG,CAAC,CAAC,IACH;AAEJ,uBAAK,cACH,yBAAiB,kCACnB,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,oBACrB,MAAM;AAAA,oBACN,QAAQ;AAAA,oBACR;AAAA,kBACF,CAAC;AAAA,gBACH;AACE;AAAA,cACF,KAAK;AAAK;AACR,sBAAI;AACJ,sBAAI,KAAK,GAAG;AACV,0BAAM,qBAAqB,KAAK,EAAE,CAAC;AACnC,0CAAsB;AAAA,kBACxB;AAEA,uBAAK,cACH,yBAAiB,kCACnB,IAAI,KAAK,EAAE,GAAG,SAAS;AAAA,oBACrB,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP;AAAA,kBACF,CAAC;AAAA,gBACH;AACE;AAAA,cACF;AACE;AAAA,YACJ;AAAA,UACF;AACE;AAAA,QACF;AACE;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AyCn2BA,IAAAI,mBAAA;AAAA,SAAAA,kBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,iBAAuB;AACvB,IAAAC,eAAkB;AAGlB,IAAM,wBAAwB,eAAE,OAAO;AAAA,EACrC,IAAI,eAAE,OAAO,EAAE,OAAO,sBAAO,aAAa,CAAC,WAAW;AAAA,IACpD,SAAS,gDAAgD,KAAK;AAAA,EAChE,EAAE;AAAA,EACF,eAAe,eAAE,OAAO,EAAE,OAAO,sBAAO,WAAW,CAAC,WAAW;AAAA,IAC7D,SAAS,yDAAyD,KAAK;AAAA,EACzE,EAAE;AAAA,EACF,gBAAgB,eAAE,OAAO,EAAE,OAAO,sBAAO,WAAW,CAAC,WAAW;AAAA,IAC9D,SAAS,0DAA0D,KAAK;AAAA,EAC1E,EAAE;AAAA,EACF,WAAW,eAAE,OAAO,EAAE,OAAO,sBAAO,WAAW,CAAC,WAAW;AAAA,IACzD,SAAS,qDAAqD,KAAK;AAAA,EACrE,EAAE;AAAA,EACF,YAAY,eAAE,OAAO,EAAE,OAAO,sBAAO,WAAW,CAAC,WAAW;AAAA,IAC1D,SAAS,sDAAsD,KAAK;AAAA,EACtE,EAAE;AAAA,EACF,iBAAiB,eAAE,OAAO,EAAE,OAAO,sBAAO,WAAW,CAAC,WAAW;AAAA,IAC/D,SAAS,2DAA2D,KAAK;AAAA,EAC3E,EAAE;AAAA,EACF,QAAQ,eAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACrC,OAAO,eAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACpC,YAAY,eAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACzC,OAAO,eAAE,OAAO;AAAA,EAChB,YAAY,eAAE,OAAO;AAAA,EACrB,SAAS,eAAE,MAAM,CAAC,eAAE,QAAQ,CAAC,GAAG,eAAE,QAAQ,CAAC,CAAC,CAAC;AAAA,EAC7C,WAAW,eAAE,OAAO,EAAE,OAAO,sBAAO,aAAa,CAAC,WAAW;AAAA,IAC3D,SAAS,uDAAuD,KAAK;AAAA,EACvE,EAAE,EAAE,SAAS;AAAA,EACb,gBAAgB,eAAE,QAAQ;AAAA,EAC1B,cAAc,eAAE,QAAQ;AAC1B,CAAC;AAED,IAAM,kBAAkB,eAAE,OAAO;AAAA,EAC/B,SAAS,eAAE,OAAO,EAAE,KAAK;AAAA,EACzB,aAAa,eAAE,KAAK,CAAC,OAAO,WAAW,MAAM,QAAQ,cAAc,UAAU,CAAC;AAAA,EAC9E,cAAc,eAAE,OAAO,EAAE,YAAY;AAAA,EACrC,OAAO,eAAE,OAAO,EAAE,YAAY;AAAA,EAC9B,cAAc,eAAE,OAAO;AAAA,EACvB,YAAY,eAAE,OAAO;AAAA,EACrB,wBAAwB,sBAAsB,SAAS;AAAA,EACvD,mBAAmB,eAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EAC3D,mBAAmB,eAAE,QAAQ;AAAA,EAC7B,eAAe,eAAE,QAAQ;AAC3B,CAAC;AAED,IAAM,kBAAkB,eAAE,OAAO;AAAA,EAC/B,WAAW,eAAE,OAAO,EAAE,YAAY;AAAA,EAClC,MAAM,eAAE,KAAK,CAAC,OAAO,MAAM,CAAC;AAAA,EAC5B,QAAQ,eAAE,OAAO,EAAE,YAAY;AAAA,EAC/B,iBAAiB,eAAE,OAAO,EAAE,YAAY;AAAA,EACxC,OAAO,eAAE,OAAO,EAAE,YAAY;AAAA,EAC9B,QAAQ,eAAE,OAAO,EAAE,OAAO,sBAAO,WAAW,CAAC,WAAW;AAAA,IACtD,SAAS,wCAAwC,KAAK;AAAA,EACxD,EAAE;AAAA,EACF,cAAc,eAAE,OAAO,EAAE,YAAY;AAAA,EACrC,cAAc,eAAE,QAAQ;AAC1B,CAAC;AAED,IAAM,sBAAsB,eAAE,KAAK,CAAC,mBAAmB,aAAa,CAAC,EAClE,GAAG,eAAE,OAAO,EAAE,OAAO,sBAAO,WAAW,CAAC,WAAW;AAAA,EAClD,SAAS,gEAAgE,KAAK;AAChF,EAAE,CAAC;AACL,IAAMC,kBAAiB,gBAAgB,OAAO;AAAA,EAC5C,OAAO,eAAE,OAAO;AAAA,EAChB,IAAI,eAAE,OAAO;AAAA,EACb,eAAe,eAAE,OAAO,EAAE,OAAO,sBAAO,aAAa,CAAC,WAAW;AAAA,IAC/D,SAAS,oDAAoD,KAAK;AAAA,EACpE,EAAE;AAAA,EACF,eAAe;AAAA,EACf,YAAY,eAAE;AAAA,IACZ,eAAE,OAAO,EAAE,KAAK;AAAA,IAChB;AAAA,EACF;AAAA,EACA,QAAQ,eAAE,KAAK,wBAAgB;AAAA,EAC/B,aAAa,eAAE,QAAQ;AACzB,CAAC;AAED,IAAM,cAAc,eAAE,OAAO;AAAA,EAC3B,SAAS,eAAE,OAAO,EAAE,OAAO,sBAAO,aAAa,CAAC,WAAW;AAAA,IACzD,SAAS,qCAAqC,KAAK;AAAA,EACrD,EAAE;AAAA,EACF,OAAO,gBAAgB,OAAO;AAAA,IAC5B,IAAI,eAAE,OAAO,EAAE,OAAO,sBAAO,aAAa,CAAC,WAAW;AAAA,MACpD,SAAS,sCAAsC,KAAK;AAAA,IACtD,EAAE;AAAA,IACF,KAAK,eAAE,OAAO,EAAE,YAAY;AAAA,IAC5B,UAAU,eAAE,OAAO,EAAE,YAAY;AAAA,IACjC,cAAc,eAAE,OAAO;AAAA,IACvB,iBAAiB;AAAA,IACjB,WAAW,eAAE,OAAOA,eAAc;AAAA,IAClC,YAAY,eAAE,OAAO;AAAA,IACrB,QAAQ,eAAE,KAAK,qBAAa;AAAA,IAC5B,eAAe,eAAE,OAAO,EAAE,YAAY;AAAA,EACxC,CAAC;AACH,CAAC;AAED,IAAO,sBAAQ;;;ACpGf,IAAAC,eAAkB;AAElB,IAAM,wBAAwB,eAAE,OAAO;AAAA,EACrC,SAAS,eAAE,OAAO;AAAA,EAClB,SAAS,eAAE,OAAO;AAAA,EAClB,qBAAqB,eAAE,OAAO,eAAE,OAAO;AAAA,IACrC,YAAY,eAAE,OAAO;AAAA,IACrB,UAAU,eAAE,OAAO;AAAA,IACnB,gBAAgB,eAAE,OAAO;AAAA,IACzB,eAAe,eAAE,OAAO;AAAA,IACxB,cAAc,eAAE,OAAO;AAAA,IACvB,aAAa,eAAE,OAAO;AAAA,IACtB,UAAU,eAAE,OAAO;AAAA,IACnB,gBAAgB,eAAE,OAAO;AAAA,IACzB,mBAAmB,eAAE,OAAO;AAAA,IAC5B,aAAa,eAAE,OAAO;AAAA,IACtB,QAAQ,eAAE,OAAO;AAAA,IACjB,WAAW,eAAE,OAAO;AAAA,IACpB,gCAAgC,eAAE,OAAO;AAAA,EAC3C,CAAC,CAAC;AACJ,CAAC;AAED,IAAO,gCAAQ;;;ACtBf,IAAM,WAAW,CAAC,QAAgB;AAChC,MAAI;AACJ,MAAI;AACF,gBAAY,IAAI,IAAI,GAAG;AAAA,EACzB,SAAS,GAAG;AACV,YAAQ,MAAM,yBAAyB,GAAG,EAAE;AAC5C,UAAM;AAAA,EACR;AACA,MAAI,UAAU,aAAa,UAAU;AACnC,cAAU,WAAW;AAAA,EACvB,WAAW,UAAU,aAAa,SAAS;AACzC,cAAU,WAAW;AAAA,EACvB;AACA,SAAO,UAAU,SAAS;AAC5B;AAEA,IAAO,mBAAQ;;;AjDCf,IAAAC,iBAAuB;AAEvB,gCAAoC;AAEpC,IAAM,aAAN,MAAiB;AAAA,EACE;AAAA,EAER;AAAA,EAEQ;AAAA,EAEjB,IAAI,MAAM;AACR,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YACE,YACA,UACA,WACA;AACA,SAAK,SAAS;AACd,SAAK,KAAK,IAAI,aAAa,iBAAS,QAAQ,CAAC;AAC7C,SAAK,YAAY;AAEjB,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,eAAe,KAAK,aAAa,KAAK,IAAI;AAC/C,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,SAAK,wBAAwB,KAAK,sBAAsB,KAAK,IAAI;AACjE,SAAK,cAAc,KAAK,YAAY,KAAK,IAAI;AAC7C,SAAK,mBAAmB,KAAK,iBAAiB,KAAK,IAAI;AACvD,SAAK,mBAAmB,KAAK,iBAAiB,KAAK,IAAI;AACvD,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,YAAY,KAAK,UAAU,KAAK,IAAI;AAAA,EAC3C;AAAA,EAEA,IAAI,mBAAmB;AACrB,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,QACL,eAAe,SAAS;AAAA,UACtB,GAAG,KAAK,UAAU,QAAQ,IAAI,KAAK,UAAU,QAAQ;AAAA,QACvD,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,WAAW,CAAC,SAAiB,UAAmB;AAC9C,QAAI,CAAC,sBAAO,YAAY,OAAO,GAAG;AAChC,YAAM,IAAI,MAAM,qBAAqB,OAAO,wBAAwB;AAAA,IACtE;AACA,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,MAAM,eAAe;AACjD,QAAI,aAAa,OAAO,WAAW,OAAO;AAC1C,QAAI,UAAU,QAAW;AACvB,UAAI,CAAC,sBAAO,UAAU,KAAK,GAAG;AAC5B,cAAM,IAAI,MAAM,0BAA0B,KAAK,EAAE;AAAA,MACnD;AACA,UAAI,aAAa,OAAO,SAAS,KAAK;AAAA,IACxC;AACA,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,YAAY,CAAC,cAAsB;AACjC,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,MAAM,iBAAiB;AACnD,QAAI,aAAa,OAAO,aAAa,SAAS;AAC9C,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb,eAAE,OAAO;AAAA,MACT,EAAE,SAAS,KAAK,iBAAiB;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eAAe,CAAC,WAAsB;AACpC,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,MAAM,oBAAoB;AACtD,QAAI,aAAa,OAAO,UAAU,YAAY,MAAM,CAAC;AAErD,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb,eAAE,MAAM,eAAE,OAAO,EAAE,YAAY,CAAC;AAAA,MAChC,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,iBAAiB,CAAC,WAA+B;AAC/C,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,MAAM,4BAA4B;AAC9D,QAAI,aAAa,OAAO,UAAU,YAAY,MAAM,CAAC;AAErD,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAa,UACX;AAAA,IACE,GAAG,KAAK,MAAM;AAAA,IACd,eAAE,OAAO;AAAA,MACP,aAAa,eAAE,OAAO;AAAA,MACtB,SAAS,eAAE,OAAO;AAAA,MAClB,YAAY,eAAE,OAAO;AAAA,IACvB,CAAC;AAAA,IACD,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACjC;AAAA,EACF;AAAA,EAEF,gBAAgB,CAAC,kBACf;AAAA,IACE,GAAG,KAAK,MAAM,8BAA8B,SAAS;AAAA,IACrD;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACjC;AAAA,EACF;AAAA,EAEF,mBAAmB,CAAC,gBAClB;AAAA,IACE,GAAG,KAAK,MAAM,mCAAmC,OAAO;AAAA,IACxD,eAAE,QAAQ;AAAA,IACV,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACjC;AAAA,EACF;AAAA,EAEF,aAAa,CACX,aACA,uBACA,cACG;AACH,UAAM,UAAU;AAAA,MACd,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,GAAI,cAAc,UAAa,EAAE,gBAAgB,UAAU;AAAA,MAC3D,GAAG,KAAK;AAAA,IACV;AAEA,UAAM,MAAM,IAAI;AAAA,MACd,GAAG,KAAK,MAAM,iBAAiB,wBAAwB,aAAa,EAAE;AAAA,IACxE;AAEA,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb,eAAE,OAAO;AAAA,QACP,SAAS,eAAE,OAAO;AAAA,QAClB,mBAAmB,eAChB;AAAA,UACC,eAAE,OAAO;AAAA,YACP,QAAQ,eAAE,OAAO;AAAA,YACjB,eAAe,eAAE,OAAO;AAAA,YACxB,UAAU,eAAE,OAAO;AAAA,UACrB,CAAC;AAAA,QACH,EACC,SAAS;AAAA,MACd,CAAC;AAAA,MACD;AAAA,QACE;AAAA,QACA,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,WAAW;AAAA,MAClC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,cAAc,CAAC,iCACb;AAAA,IACE,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,QAAQ;AAAA,QACR,GAAG,KAAK;AAAA,MACV;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACnB,GAAG;AAAA,QACH,QAAQ,yBAAyB;AAAA,MACnC,CAAC;AAAA,IACH;AAAA,IACA;AAAA,EACF;AAAA,EAEF,gBAAgB,CACd,aACA,oBACG;AACH,UAAM,UAAU;AAAA,MACd,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,GAAI,oBAAoB,UAAa;AAAA,QACnC,mBAAmB,kBAAkB,SAAS;AAAA,MAChD;AAAA,MACA,GAAG,KAAK;AAAA,IACV;AAEA,eAAO;AAAA,MACL,GAAG,KAAK,MAAM;AAAA,MACd,eAAE,OAAO;AAAA,QACP,SAAS,eAAE,OAAO;AAAA,QAClB,mBAAmB,eAChB;AAAA,UACC,eAAE,OAAO;AAAA,YACP,QAAQ,eAAE,OAAO;AAAA,YACjB,eAAe,eAAE,OAAO;AAAA,YACxB,UAAU,eAAE,OAAO;AAAA,UACrB,CAAC;AAAA,QACH,EACC,SAAS;AAAA,MACd,CAAC;AAAA,MACD;AAAA,QACE;AAAA,QACA,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,WAAW;AAAA,MAClC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,wBAAwB,CAAC,gBAA2C;AAClE,UAAM,UAAU;AAAA,MACd,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,GAAG,KAAK;AAAA,IACV;AAEA,eAAO;AAAA,MACL,GAAG,KAAK,MAAM;AAAA,MACd,eAAE,OAAO;AAAA,QACP,SAAS,eAAE,OAAO;AAAA,QAClB,mBAAmB,eAChB;AAAA,UACC,eAAE,OAAO;AAAA,YACP,QAAQ,eAAE,OAAO;AAAA,YACjB,eAAe,eAAE,OAAO;AAAA,YACxB,UAAU,eAAE,OAAO;AAAA,UACrB,CAAC;AAAA,QACH,EACC,SAAS;AAAA,MACd,CAAC;AAAA,MACD;AAAA,QACE;AAAA,QACA,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,WAAW;AAAA,MAClC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,0BAA0B,CAAC,gBAAyC;AAClE,UAAM,UAAU;AAAA,MACd,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,GAAG,KAAK;AAAA,IACV;AAEA,eAAO;AAAA,MACL,GAAG,KAAK,MAAM;AAAA,MACd,eAAE,OAAO;AAAA,QACP,SAAS,eAAE,OAAO;AAAA,QAClB,mBAAmB,eAChB;AAAA,UACC,eAAE,OAAO;AAAA,YACP,QAAQ,eAAE,OAAO;AAAA,YACjB,eAAe,eAAE,OAAO;AAAA,YACxB,UAAU,eAAE,OAAO;AAAA,UACrB,CAAC;AAAA,QACH,EACC,SAAS;AAAA,MACd,CAAC;AAAA,MACD;AAAA,QACE;AAAA,QACA,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,WAAW;AAAA,MAClC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAa,CAAC,YAAoB;AAChC,UAAM,MAAM,IAAI;AAAA,MACd,GAAG,KAAK,MAAM,mCAAmC,OAAO;AAAA,IAC1D;AACA,eAAO,+CAAoB,IAAI,SAAS,GAAG,6BAAqB;AAAA,EAClE;AAAA,EAEA,mBAAmB,CAAC,SAAiB,aAAqB;AACxD,UAAM,MAAM,IAAI;AAAA,MACd,GAAG,KAAK,MAAM,oCAAoC,QAAQ;AAAA,IAC5D;AACA,QAAI,aAAa,OAAO,WAAW,OAAO;AAC1C,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb,eACG,OAAO;AAAA,QACN,CAAC,QAAQ,GAAG,eAAE,OAAO;AAAA,MACvB,CAAC,EACA,QAAQ;AAAA,MACX,EAAE,SAAS,KAAK,iBAAiB;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,CAAC,2BAA+C;AACzD,UAAM,UAAU;AAAA,MACd,gBAAgB;AAAA,IAClB;AAEA,UAAM,MAAM,IAAI;AAAA,MACd,GAAG,KAAK,MAAM;AAAA,IAChB;AAEA,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb,eAAE,IAAI;AAAA,MACN;AAAA,QACE;AAAA,QACA,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,sBAAsB;AAAA,MAC7C;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AkDzVA;AAAA;AAAA;AAAA,iBAAAC;AAAA;AAAA,IAAAC,eAAkB;AAClB,IAAAC,6BAAoC;;;ACDpC,IAAAC,mBAAA;AAAA,SAAAA,kBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,eAAkB;AAGlB,IAAM,gBAAgB,eAAE,MAAM,eAAE;AAAA,EAC9B;AAAA,IACE,QAAQ,eAAE,OAAO;AAAA,IACjB,cAAc,eAAE,OAAO;AAAA,IACvB,OAAO,eAAE,OAAO;AAAA,IAChB,cAAc,eAAE,OAAO;AAAA,IACvB,iBAAiB,eAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAChD,WAAW,eAAE,OAAO;AAAA,IACpB,iBAAiB,eAAE,OAAO;AAAA,IAC1B,MAAM,eAAE,KAAK,CAAC,WAAW,YAAY,CAAC;AAAA,IACtC,MAAM,eAAE,OAAO;AAAA,IACf,eAAe,eAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD;AACF,CAAC,EAAE,UAAU,CAAC,aAAa;AACzB,SAAO,SAAS,IAAI,CAAC,SAAS;AAC5B,UAAM;AAAA,MACJ;AAAA,MAAM;AAAA,MAAW;AAAA,MAAiB;AAAA,IACpC,IAAI;AACJ,WAAO;AAAA,MACL;AAAA,MACA,MAAM,YAAY;AAAA,MAClB,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;AAED,IAAO,wBAAQ;;;ACjCf,IAAAC,eAAkB;AAGlB,IAAM,yBAAyB,eAAE,OAAO;AAAA,EACtC,MAAM,eAAE,KAAK,CAAC,WAAW,OAAO,CAAC;AAAA,EACjC,OAAO,eAAE,OAAO;AAAA,EAChB,OAAO,eAAE,OAAO;AAClB,CAAC;AAED,IAAM,aAAa,eAAE,OAAO;AAAA,EAC1B,SAAS,eAAE,OAAO;AAAA,EAClB,WAAW,eAAE,OAAO;AAAA,EACpB,yBAAyB,eAAE,OAAO;AAAA,EAClC,uBAAuB,eAAE,OAAO;AAAA,EAChC,gBAAgB,eAAE,OAAO;AAAA,EACzB,iBAAiB,eAAE,OAAO;AAAA,EAC1B,gBAAgB,eAAE,OAAO,eAAE,OAAO,CAAC,EAAE,UAAU,WAAW;AAAA,EAC1D,iBAAiB,eAAE,OAAO,eAAE,OAAO,CAAC,EAAE,UAAU,WAAW;AAAA,EAC3D,cAAc,eAAE,OAAO,eAAE,OAAO,CAAC,EAAE,UAAU,WAAW,EAAE,SAAS;AAAA,EACnE,WAAW,eAAE,OAAO,EAAE,MAAM;AAAA,EAC5B,mBAAmB,uBAAuB,MAAM,EAAE,SAAS;AAC7D,CAAC;AAED,IAAO,qBAAQ;;;ACvBf,IAAAC,eAAkB;AAElB,IAAM,qBAAqB,eAAE,MAAM,eAAE,OAAO;AAAA,EAC1C,MAAM,eAAE,OAAO;AAAA,EACf,OAAO,eAAE,OAAO;AAAA,EAChB,SAAS,eAAE,OAAO;AAAA,EAClB,UAAU,eAAE,OAAO;AAAA,EACnB,SAAS,eAAE,OAAO;AAAA,EAClB,SAAS,eAAE,OAAO;AAAA,EAClB,QAAQ,eAAE,OAAO;AAAA,EACjB,eAAe,eAAE,OAAO;AAAA,EACxB,cAAc,eAAE,OAAO;AAAA,EACvB,uBAAuB,eAAE,OAAO;AAAA,EAChC,YAAY,eAAE,OAAO;AAAA,EACrB,YAAY,eAAE,OAAO;AAAA,EACrB,qBAAqB,eAAE,OAAO;AAAA,EAC9B,yBAAyB,eAAE,OAAO;AACpC,CAAC,CAAC;AAEF,IAAO,6BAAQ;;;ACnBf,IAAAC,eAAkB;AAGX,IAAK,yBAAL,kBAAKC,4BAAL;AACL,EAAAA,wBAAA,cAAW;AACX,EAAAA,wBAAA,aAAU;AAFA,SAAAA;AAAA,GAAA;AAKZ,IAAM,kBAAkB,eAAE,OAAO;AAAA,EAC/B,KAAK,eAAE,OAAO;AAAA,EACd,KAAK,eAAE,OAAO;AAAA,EACd,SAAS,eAAE,OAAO;AAAA,EAClB,SAAS,eAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,QAAQ,eAAE,OAAO;AAAA,EACjB,cAAc,eAAE,OAAO;AAAA,EACvB,QAAQ,eAAE,KAAK,CAAC,YAAY,SAAS,CAAC;AAAA,EACtC,iBAAiB,eAAE,OAAO;AAAA,EAC1B,aAAa,eAAE,OAAO;AAAA,EACtB,WAAW,eAAE,OAAO;AACtB,CAAC;AAED,IAAM,oBAAoB,eAAE,OAAO;AAAA,EACjC,SAAS,eAAE,QAAQ;AAAA,EACnB,OAAO,eAAE,OAAO;AAAA,EAChB,OAAO,eAAE,OAAO;AAAA,EAChB,YAAY,eAAE,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,IAAM,aAAa,kBAAkB,OAAO;AAAA,EAC1C,MAAM,eAAE,MAAM,gBAAgB,OAAO;AAAA,IACnC,mBAAmB,eAAE,OAAO;AAAA,IAC5B,YAAY,eAAE,OAAO;AAAA,IACrB,UAAU,eAAE,OAAO;AAAA,IACnB,eAAe,eAAE,OAAO;AAAA,IACxB,aAAa,eAAE,OAAO;AAAA,EACxB,CAAC,CAAC;AACJ,CAAC;AACD,IAAM,qBAAqB,kBAAkB,OAAO;AAAA,EAClD,MAAM,eAAE,MAAM,eAAe;AAC/B,CAAC;AAED,IAAM,2BAA2B,CAAC,SAA0C;AAC1E,QAAM,EAAE,WAAW,QAAQ,iBAAiB,aAAa,IAAI;AAC7D,QAAM,OAAO,uBAAuB,MAAM;AAC1C,QAAM,SAAS;AAAA,IACb;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,MAAM,KAAK;AAAA,EACb;AAEA,SAAO;AACT;AAEA,IAAM,sBAAsB,CAAC,aAC3B,SAAS,KAAK,IAAI,CAAC;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,OAAO;AAAA,EACL,GAAG,yBAAyB,IAAI;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE;AAEJ,IAAM,8BAA8B,CAAC,aACnC,SAAS,KAAK,IAAI,wBAAwB;AAGrC,IAAM,mBAAmB,WAAW,UAAU,mBAAmB;AACjE,IAAM,2BAA2B,mBAAmB;AAAA,EACzD;AACF;;;ACjFA,IAAAC,eAAkB;AAElB,IAAM,4BAA4B,eAAE,OAAO;AAAA,EACzC,mBAAmB,eAAE,OAAO;AAAA,EAC5B,gBAAgB,eAAE,OAAO;AAAA,EACzB,kCAAkC,eAAE,OAAO;AAAA,EAC3C,0CAA0C,eAAE,OAAO;AAAA,EACnD,YAAY,eAAE,OAAO;AAAA,EACrB,6BAA6B,eAAE,OAAO;AAAA,EACtC,MAAM,eAAE;AAAA,IACN,eAAE,OAAO;AAAA,IACT,eAAE,OAAO;AAAA,MACP,cAAc,eAAE,OAAO;AAAA,MACvB,WAAW,eAAE,OAAO;AAAA,MACpB,WAAW,eAAE,OAAO;AAAA,IACtB,CAAC;AAAA,EACH;AACF,CAAC;AAED,IAAO,oCAAQ;;;ACnBf,IAAAC,eAAkB;AAElB,IAAM,6BAA6B,eAAE,OAAO;AAAA,EAC1C,kBAAkB,eAAE,QAAQ;AAC9B,CAAC;AAED,IAAO,qCAAQ;;;ACNf,IAAAC,eAAkB;AAElB,IAAM,yBAAyB,eAAE,OAAO;AAAA,EACtC,IAAI,eAAE,OAAO;AAAA,EACb,MAAM,eAAE,OAAO;AAAA,EACf,UAAU,eAAE,OAAO;AAAA,EACnB,QAAQ,eAAE,OAAO;AAAA,EACjB,SAAS,eAAE,OAAO;AAAA,EAClB,cAAc,eAAE,OAAO;AAAA,EACvB,eAAe,eAAE,OAAO;AAAA,EACxB,uBAAuB,eAAE,OAAO;AAAA,EAChC,YAAY,eAAE,OAAO;AACvB,CAAC;AAED,IAAM,wBAAwB,eAAE,OAAO;AAAA,EACrC,SAAS,eAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,eAAe,eAAE,OAAO,EAAE,SAAS;AAAA,EACnC,qBAAqB,eAAE,OAAO,EAAE,SAAS;AAAA,EACzC,oBAAoB,eAAE,OAAO,EAAE,SAAS;AAAA,EACxC,SAAS,eAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,yBAAyB,eAAE,OAAO,EAAE,SAAS;AAAA,EAC7C,yBAAyB,eAAE,OAAO,EAAE,SAAS;AAAA,EAC7C,aAAa,eAAE,OAAO,eAAE,OAAO,GAAG,sBAAsB;AAC1D,CAAC;AAED,IAAO,gCAAQ;;;ACzBf,IAAAC,eAAkB;AAElB,IAAM,gBAAgB,eAAE,OAAO;AAAA,EAC7B,QAAQ,eAAE,OAAO;AAAA,EACjB,UAAU,eAAE,OAAO;AAAA,EACnB,UAAU,eAAE,OAAO;AAAA,EACnB,QAAQ,eAAE,OAAO;AAAA,EACjB,mBAAmB,eAAE,MAAM,eAAE,OAAO,CAAC;AACvC,CAAC;AAED,IAAM,0BAA0B,eAAE,OAAO;AAAA,EACvC,UAAU,eAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,gBAAgB,eAAE,MAAM,aAAa;AACvC,CAAC;AAED,IAAO,kCAAQ;;;ACff,IAAAC,eAAkB;AAElB,IAAM,mBAAmB,eAAE,OAAO;AAAA,EAChC,iCAAiC,eAAE,OAAO,EAAE,IAAI;AAAA,EAChD,oBAAoB,eAAE,OAAO,EAAE,IAAI;AAAA,EACnC,uBAAuB,eAAE,OAAO,EAAE,IAAI;AAAA,EACtC,yBAAyB,eAAE,OAAO,EAAE,IAAI;AAAA,EACxC,yBAAyB,eAAE,OAAO,EAAE,IAAI;AAC1C,CAAC;AAED,IAAO,2BAAQ;;;ACVf,IAAAC,eAAkB;AAGX,IAAM,6BAA6B,eAAE,OAAO;AAAA,EACjD,YAAY,eAAE,OAAO;AAAA,EACrB,mBAAmB,eAAE,OAAO;AAAA,EAC5B,QAAQ,eAAE,OAAO,eAAE,OAAO,CAAC,EAAE,UAAU,WAAW;AACpD,CAAC;;;AX0BD,IAAM,oBAAN,MAAwB;AAAA,EACL;AAAA,EAEA;AAAA,EAEjB,IAAI,MAAM;AACR,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YACE,QACA,WACA;AACA,SAAK,SAAS;AACd,SAAK,YAAY;AAEjB,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,YAAY,KAAK,UAAU,KAAK,IAAI;AACzC,SAAK,0BAA0B,KAAK,wBAAwB,KAAK,IAAI;AACrE,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,kBAAkB,KAAK,gBAAgB,KAAK,IAAI;AACrD,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,SAAK,wBAAwB,KAAK,sBAAsB,KAAK,IAAI;AACjE,SAAK,qBAAqB,KAAK,mBAAmB,KAAK,IAAI;AAC3D,SAAK,yBAAyB,KAAK,uBAAuB,KAAK,IAAI;AACnE,SAAK,0BAA0B,KAAK,wBAAwB,KAAK,IAAI;AACrE,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,SAAK,mBAAmB,KAAK,iBAAiB,KAAK,IAAI;AACvD,SAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AAAA,EAC3D;AAAA,EAEA,IAAI,mBAAmB;AACrB,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,QACL,eAAe,SAAS,KAAK,GAAG,KAAK,UAAU,QAAQ,IAAI,KAAK,UAAU,QAAQ,EAAE,CAAC;AAAA,MACvF;AAAA,IACF;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,IAAI,yBAAyB;AAC3B,WAAO,GAAG,KAAK,MAAM;AAAA,EACvB;AAAA,EAEiB,iBAAiB,UAAM;AAAA,IACtC,GAAG,KAAK,MAAM;AAAA,IACd,eAAE,OAAO,EAAE,IAAI;AAAA,IACf,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,IAAI,WAAW;AACb,WAAO;AAAA,MACL,gBAAgB,KAAK,eAAe,KAAK,IAAI;AAAA,IAC/C;AAAA,EACF;AAAA,EAEA,UAAU,UAAM,gDAAoB,GAAG,KAAK,MAAM,aAAa,kBAAU;AAAA,EAEzE,gBAAgB,UAAM;AAAA,IACpB,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,aAAa,CAAC,gBAAoB;AAAA,IAChC,GAAG,KAAK,MAAM,gBAAgB,OAAO;AAAA,IACrC;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,YAAY,UAAM;AAAA,IAChB,GAAG,KAAK,MAAM;AAAA,IACd,eAAE,OAAO,eAAE,OAAO,CAAC,EAAE,UAAU,WAAW;AAAA,IAC1C,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,0BAA0B,UAAM;AAAA,IAC9B,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,eAAe,UAAM;AAAA,IACnB,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,0BAA0B,UAAM;AAAA,IAC9B,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,iBAAiB,UAAM;AAAA,IACrB,GAAG,KAAK,MAAM;AAAA,IACd,eAAE,OAAO;AAAA,IACT,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,iBAAiB,UAAM;AAAA,IACrB,GAAG,KAAK,MAAM;AAAA,IACd,eAAE,OAAO,EAAE,IAAI;AAAA,IACf,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,kBAAkB,UAAM;AAAA,IACtB,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,yBAAyB,UAAM;AAAA,IAC7B,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,0BAA0B,UAAM;AAAA,IAC9B,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,gBAAgB,CAAC,SAAiB,QAAyB,CAAC,MAAM;AAChE,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,MAAM,6BAA6B,OAAO,EAAE;AAExE,WAAO,QAAQ,KAAK,EACjB,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACzB,UAAI,UAAU;AAAW,cAAM,IAAI,MAAM,uBAAuB;AAChE,UAAI,aAAa,OAAO,KAAK,MAAM,SAAS,CAAC;AAAA,IAC/C,CAAC;AAEH,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,qBAAqB,UAAM;AAAA,IACzB,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,EACnC;AAAA,EAEA,wBAAwB,CAAC,SAAiB,QAAyB,CAAC,MAAM;AACxE,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,MAAM,0CAA0C,OAAO,EAAE;AAErF,WAAO,QAAQ,KAAK,EACjB,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACzB,UAAI,UAAU;AAAW,cAAM,IAAI,MAAM,uBAAuB;AAChE,UAAI,aAAa,OAAO,KAAK,MAAM,SAAS,CAAC;AAAA,IAC/C,CAAC;AAEH,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,mBAAmB,CAAC,YAAqC;AACvD,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,MAAM,0CAA0C;AAC5E,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb,eAAE,IAAI;AAAA,MACN;AAAA,QACE,SAAS;AAAA,UACP,GAAG,KAAK;AAAA,UACR,gBAAgB;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,OAAO;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAAoB,CAAC,SAAiB,WAA+C;AACnF,UAAM,cAAc,WAAW,SAAY,KAAK,WAAW,MAAM;AACjE,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,MAAM,qDAAqD,OAAO,GAAG,WAAW,EAAE;AAE9G,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AACF;;;AY/NA;AAAA;AAAA;AAAA,iBAAAC;AAAA,EAAA,UAAAC;AAAA;AAAA,IAAAC,6BAAoC;;;ACApC,IAAAC,mBAAA;AAAA,SAAAA,kBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,eAAkB;AAElB,IAAM,gBAAgB,eAAE,OAAO;AAAA,EAC7B,SAAS,eAAE,MAAM,eAAE,OAAO;AAAA,IACxB,OAAO,eAAE,OAAO;AAAA,IAChB,MAAM,eAAE,OAAO;AAAA,IACf,KAAK,eAAE,OAAO;AAAA,IACd,MAAM,eAAE,OAAO;AAAA,IACf,MAAM,eAAE,OAAO;AAAA,IACf,SAAS,eAAE,OAAO;AAAA,IAClB,WAAW,eAAE,OAAO;AAAA,IACpB,QAAQ,eAAE,OAAO;AAAA,EACnB,CAAC,CAAC;AAAA,EACF,WAAW,eAAE,OAAO;AAAA,EACpB,SAAS,eAAE,OAAO;AACpB,CAAC;AAED,IAAO,wBAAQ;;;ACjBf,IAAAC,eAAkB;AAEX,IAAM,mBAAmB,eAC7B,OAAO;AAAA,EACN,MAAM,eAAE,OAAO;AAAA,EACf,UAAU,eAAE,OAAO;AAAA,EACnB,UAAU,eAAE,OAAO;AAAA,EACnB,WAAW,eAAE,OAAO;AACtB,CAAC,EACA,MAAM;;;ACTT,IAAAC,eAAkB;AAEX,IAAM,oBAAoB,eAC9B,OAAO;AAAA,EACN,SAAS,eAAE,OAAO;AAAA,EAClB,aAAa,eAAE,OAAO;AAAA,EACtB,aAAa,eAAE,OAAO;AAAA,EACtB,UAAU,eAAE,OAAO;AAAA,EACnB,UAAU,eAAE,OAAO;AAAA,EACnB,UAAU,eAAE,OAAO;AAAA,EACnB,UAAU,eAAE,OAAO;AACrB,CAAC,EACA,MAAM;;;ACZT,IAAAC,eAAkB;AAEX,IAAM,2BAA2B,eACrC,OAAO;AAAA,EACN,MAAM,eAAE,OAAO;AAAA,EACf,oBAAoB,eAAE,OAAO;AAAA,IAC3B,WAAW,eAAE,OAAO;AAAA,IACpB,UAAU,eAAE,OAAO;AAAA,IACnB,eAAe,eAAE,OAAO;AAAA,EAC1B,CAAC;AACH,CAAC;;;ACVH,IAAAC,eAAkB;AAEX,IAAM,iBAAiB,eAAE,OAAO;AAAA,EACrC,MAAM,eAAE,OAAO;AAAA,EACf,UAAU,eAAE;AAAA,IACV,eAAE,OAAO;AAAA,MACP,WAAW,eAAE,OAAO;AAAA,MACpB,oBAAoB,eAAE,OAAO;AAAA,QAC3B,WAAW,eAAE,OAAO;AAAA,QACpB,UAAU,eAAE,OAAO;AAAA,MACrB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;;;ACbD,IAAAC,eAAkB;AAEX,IAAM,gBAAgB,eAAE,OAAO;AAAA,EACpC,WAAW,eAAE,OAAO;AAAA,IAClB,SAAS,eAAE,OAAO;AAAA,IAClB,YAAY,eAAE,OAAO;AAAA,IACrB,UAAU,eAAE,OAAO;AAAA,IACnB,KAAK,eAAE,OAAO;AAAA,IACd,MAAM,eAAE,OAAO;AAAA,EACjB,CAAC;AAAA,EACD,YAAY,eAAE,OAAO;AAAA,IACnB,SAAS,eAAE,OAAO;AAAA,IAClB,YAAY,eAAE,OAAO;AAAA,IACrB,UAAU,eAAE,OAAO;AAAA,IACnB,KAAK,eAAE,OAAO;AAAA,IACd,MAAM,eAAE,OAAO;AAAA,EACjB,CAAC;AAAA,EACD,SAAS,eAAE,OAAO,EAAE,SAAS,eAAE,OAAO,GAAG,KAAK,eAAE,OAAO,EAAE,CAAC;AAAA,EAC1D,UAAU,eAAE,OAAO,EAAE,SAAS,eAAE,OAAO,GAAG,KAAK,eAAE,OAAO,EAAE,CAAC;AAC7D,CAAC;;;ACnBD,IAAAC,cAAA;AAAA,SAAAA,aAAA;AAAA;AAAA,iBAAAC;AAAA;;;ACAA,IAAAC,wBAAsB;AACtB,IAAAC,eAAkB;AAClB,IAAAC,eAA6B;;;ACF7B,IAAM,yBAAyB;AAAA,EAC7B,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,QAAQ;AACV;AAEA,IAAO,iCAAQ;;;ACPf,IAAAC,mBAAA;AAAA,SAAAA,kBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,eAAkB;AAElB,IAAM,mBAAmB,eAAE,MAAM;AAAA,EAC/B,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AACX,CAAC,EAAE,UAAU,CAAC,CAAC,UAAU,WAAW,WAAW,WAAW,UAAU,SAAS,OAAO;AAAA,EAClF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE;AAEF,IAAO,2BAAQ;;;AClBf,IAAAC,eAAkB;AAElB,IAAM,eAAe,eAClB,MAAM;AAAA,EACL,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AACX,CAAC,EACA;AAAA,EACC,CAAC,CAAC,UAAU,MAAM,WAAW,SAAS,OAAO,MAAM,MAAM,KAAK,MAAM,OAAO;AAAA,IACzE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEF,IAAO,uBAAQ;;;AC5Bf,IAAAC,eAAkB;AAElB,IAAM,cAAc,eAAE,MAAM;AAAA,EAC1B,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AAAA,EACT,eAAE,OAAO;AAAA;AACX,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,MAAM,EAAE;AAEnD,IAAO,sBAAQ;;;ACRf,IAAAC,eAAkB;AAKlB,IAAMC,oBAAmB,eAAE,QAAQ,EAAE,MAAM,EACxC,UAAU,CAAC,YAAY;AACtB,QAAM,OAAO,CAAC,GAAG,OAAO;AACxB,OAAK,MAAM;AACX,QAAM,aAAa,yBAAiB,MAAM,EAAE,MAAM,IAAI;AACtD,SAAO,WAAW,OAOhB,CAAC,MAAM,cAAc;AAAA,IACrB,GAAG;AAAA,IACH,CAAC,SAAS,QAAQ,GAAG;AAAA,EACvB,IAAI,CAAC,CAAC;AACR,CAAC;AAEH,IAAO,2BAAQA;;;ANdR,IAAM,gBAAgB;AAAA,EAC3B,CAAC,+BAAuB,WAAW,GAAG;AAAA,IACpC,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,CAAC,+BAAuB,MAAM,GAAG;AAAA,IAC/B,QAAQ,eAAE,MAAM,CAAC,eAAE,OAAO,GAAG,wBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,MAAM,UAAU;AAAA,IACxF,SAAS;AAAA,EACX;AAAA,EACA,CAAC,+BAAuB,UAAU,GAAG;AAAA,IACnC,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,CAAC,+BAAuB,MAAM,GAAG;AAAA,IAC/B,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AACF;AAgBA,IAAqB,wBAArB,MAA0F;AAAA,EACxE;AAAA,EAEC;AAAA,EAEA;AAAA,EAEA;AAAA,EAET;AAAA,EAES;AAAA,EAET;AAAA,EAEC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,wBAAwB;AAAA,EAEf;AAAA,EAEjB,YACE,MACA,KACA,QACA,QACA;AACA,SAAK,SAAK,aAAAC,IAAO;AACjB,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,QAAI,aAAa,QAAQ;AACvB,WAAK,UAAU,OAAO;AAAA,IACxB;AACA,SAAK,WAAW,OAAO;AACvB,SAAK,gBAAgB,OAAO;AAC5B,SAAK,SAAS;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EAEQ,KAAK,YAAkB;AAC7B,QAAI,KAAK,IAAI,eAAe,sBAAAC,QAAU,MAAM;AAC1C,YAAM,WAAW,KAAK,UAAU,UAAU;AAC1C,WAAK,GAAG,KAAK,QAAQ;AAAA,IACvB,OAAO;AACL,iBAAW,MAAM;AACf,aAAK,KAAK,UAAU;AAAA,MACtB,GAAG,EAAE;AAAA,IACP;AAAA,EACF;AAAA,EAEQ,UAAU;AAAA,EACV;AAAA,EACA,iBAAiB;AACvB,UAAM,YAAY,MAAM;AACtB,UAAI,KAAK,SAAS;AAChB,aAAK,UAAU;AAAA,MACjB,OAAO;AACL,aAAK,wBAAwB;AAC7B,aAAK,eAAe;AACpB,aAAK,IAAI,MAAM,GAAI;AAAA,MACrB;AAAA,IACF;AAEA,SAAK,qBAAqB,YAAY,WAAW,IAAK;AAAA,EACxD;AAAA,EAEQ,iBAAiB;AACvB,SAAK,UAAU;AACf,kBAAc,KAAK,kBAAkB;AAAA,EACvC;AAAA,EAEA,OAAO;AACL,SAAK,wBAAwB;AAE7B,UAAM,EAAE,SAAS,KAAK,KAAK,IAAI;AAC/B,SAAK,KAAK,IAAI,sBAAAA;AAAA,MACZ,GAAG,GAAG,IAAI,IAAI,GAAG,YAAY,SACzB,IAAI,QAAQ,SAAS,CAAC,KACtB,EAAE;AAAA,IACR;AAEA,SAAK,GAAG,SAAS,CAAC,MAAM;AACtB,WAAK,UAAU;AACf,WAAK,eAAe;AACpB,UAAI,KAAK,WAAW,QAAW;AAC7B,aAAK,OAAO,CAAC;AAAA,MACf;AAAA,IACF;AAEA,SAAK,GAAG,YAAY,CAAC,MAAM;AACzB,WAAK,UAAU;AACf,YAAM,EAAE,KAAK,IAAI;AAIjB,UAAI;AACJ,UAAI,OAAO,SAAS,UAAU;AAC5B,qBAAa;AAAA,MACf,WAAW,OAAO,SAAS,IAAI,GAAG;AAChC,qBAAa,KAAK,SAAS;AAAA,MAC7B,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,qBAAa,OAAO,OAAO,IAAI,EAAE,SAAS;AAAA,MAC5C,OAAO;AACL,qBAAa,OAAO,KAAK,IAAI,EAAE,SAAS;AAAA,MAC1C;AAEA,UAAI,eAAe;AAAQ;AAC3B,YAAM,OAAgB,KAAK,MAAM,UAAU;AAC3C,YAAM,eAAe,cAAc,IAAI;AACvC,YAAM,cAAc,aAAa,OAAO,UAAU,IAAI;AACtD,UAAI,CAAC,YAAY,SAAS;AACxB,cAAM,gBAAgB,YAAY,MAAM,OAAO,IAAI,CAACC,WAAU,IAAIA,OAAM,KAAK,KAAK,GAAG,CAAC,KAAKA,OAAM,OAAO,EAAE,EAAE,KAAK,IAAI;AACrH,cAAM,QAAQ,IAAI,MAAM,8BAA8B,IAAI,2BAA2B,UAAU,MAAM,aAAa,EAAE;AACpH,YAAI,KAAK,kBAAkB,QAAW;AACpC,eAAK,cAAc,KAAK;AAAA,QAC1B;AAAO,gBAAM;AAAA,MACf,OAAO;AACL,aAAK,SAAS,YAAY,IAAI;AAAA,MAChC;AAAA,IACF;AAEA,SAAK,GAAG,UAAU,MAAM;AACtB,UAAI,KAAK;AAAmB,sBAAc,KAAK,iBAAiB;AAChE,UAAI,CAAC,KAAK,uBAAuB;AAC/B,mBAAW,MAAM;AACf,eAAK,KAAK;AAAA,QACZ,GAAG,GAAI;AAAA,MACT;AAAA,IACF;AAEA,SAAK,oBAAoB,YAAY,MAAM;AACzC,WAAK,KAAK,WAAW;AAAA,IACvB,GAAG,IAAK;AAAA,EACV;AAAA,EAEA,OAAO;AACL,SAAK,wBAAwB;AAC7B,SAAK,IAAI,MAAM;AAAA,EACjB;AACF;;;ADpLO,IAAM,cAAN,MAAkB;AAAA,EACf,gBAOH,CAAC;AAAA,EAEW;AAAA,EAER;AAAA,EAET,YACE,KACA,WACA;AACA,SAAK,MAAM;AACX,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAI,MAAM;AACR,UAAM,MAAM,IAAI,IAAI,KAAK,GAAG;AAE5B,QAAI,KAAK,WAAW;AAClB,UAAI,WAAW,KAAK,UAAU;AAC9B,UAAI,WAAW,KAAK,UAAU;AAAA,IAChC;AAEA,WAAO,IAAI,SAAS;AAAA,EACtB;AAAA,EAEA,UACE,MACA,QACA,QACA;AACA,UAAM,MAAM,IAAI;AAAA,MACd;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IACF;AACA,SAAK,gBAAgB;AAAA,MACnB,GAAG,KAAK;AAAA,MACR,CAAC,IAAI,GAAG;AAAA,QACN,GAAG,KAAK,cAAc,IAAI;AAAA,QAC1B,CAAC,IAAI,EAAE,GAAG;AAAA,MACZ;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM,IAAI;AAAA,MACV,IAAI,IAAI;AAAA,MACR,aAAa,MAAM;AAAE,aAAK,YAAY,IAAI,MAAM,IAAI,EAAE;AAAA,MAAG;AAAA,IAC3D;AAAA,EACF;AAAA,EAEA,YAAY,SAA2B,OAAe;AACpD,SAAK,cAAc,OAAO,IAAI,KAAK,GAAG,KAAK;AAC3C,WAAO,KAAK,cAAc,OAAO,IAAI,KAAK;AAAA,EAC5C;AACF;;;AR9DA,IAAM,YAAN,MAAgB;AAAA,EACG;AAAA,EAEA;AAAA,EAER;AAAA,EAET,IAAI,MAAM;AACR,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YACE,QACA,WACA;AACA,SAAK,SAAS;AACd,SAAK,KAAK,IAAI,YAAY,KAAK,KAAK;AACpC,SAAK,YAAY;AAEjB,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,wBAAwB,KAAK,sBAAsB,KAAK,IAAI;AACjE,SAAK,cAAc,KAAK,YAAY,KAAK,IAAI;AAC7C,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAAA,EAC7C;AAAA,EAEA,IAAI,mBAAmB;AACrB,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,QACL,eAAe,SAAS,KAAK,GAAG,KAAK,UAAU,QAAQ,IAAI,KAAK,UAAU,QAAQ,EAAE,CAAC;AAAA,MACvF;AAAA,IACF;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,aAAa,CACX,QACA,WACA,SACA,UACA,WAAW,UACR;AACH,UAAM,MAAM,IAAI,IAAI,KAAK,UAAU;AACnC,QAAI,aAAa,OAAO,UAAU,MAAM;AACxC,QAAI,aAAa,OAAO,aAAa,UAAU,SAAS,CAAC;AACzD,QAAI,aAAa,OAAO,WAAW,QAAQ,SAAS,CAAC;AACrD,QAAI,aAAa,OAAO,YAAY,QAAQ;AAC5C,QAAI,aAAa,OAAO,YAAY,QAAQ;AAE5C,eAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,gBAAgB,MAAM;AACpB,eAAO;AAAA,MACL,GAAG,KAAK,UAAU;AAAA,MAClB;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,iBAAiB,MAAM;AACrB,eAAO;AAAA,MACL,GAAG,KAAK,aAAa;AAAA,MACrB;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,wBAAwB,MAAM;AAC5B,eAAO;AAAA,MACL,GAAG,KAAK,aAAa;AAAA,MACrB;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,cAAc,MAAM;AAClB,eAAO;AAAA,MACL,GAAG,KAAK,aAAa;AAAA,MACrB;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,aAAa,MAAM;AACjB,eAAO;AAAA,MACL,GAAG,KAAK,aAAa;AAAA,MACrB;AAAA,MACA,EAAE,SAAS,KAAK,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ;AACV,UAAM,MAAM,IAAI,IAAI,KAAK,MAAM;AAC/B,UAAM,aAAa,IAAI,aAAa,WAAW,QAAQ;AACvD,WAAO,GAAG,UAAU,MAAM,IAAI,OAAO,IAAI,QAAQ;AAAA,EACnD;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,GAAG,KAAK,MAAM;AAAA,EACvB;AAAA,EAEA,IAAI,gBAAgB;AAClB,WAAO,GAAG,KAAK,MAAM;AAAA,EACvB;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,GAAG,KAAK,MAAM;AAAA,EACvB;AACF;;;A/DhHA,IAAAC,6BAA4B;AAE5B,IAAAC,oBAA0B;AAO1B,IAAqB,OAArB,MAA0B;AAAA,EACR;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEhB,YAAY,QAAyC;AACnD,QAAI,SAAS,QAAQ;AACnB,YAAM,eAAe,KAAK,OAAO,GAAG;AACpC,UAAI,CAAC;AAAc,cAAM,IAAI,MAAM,wBAAwB,OAAO,GAAG,6BAA6B,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE;AAEhI,YAAM,cAAc,OAAO,OAAO,OAAO;AACzC,UAAI,CAAC;AAAa,cAAM,IAAI,MAAM,oBAAoB,OAAO,OAAO,yBAAyB,OAAO,KAAK,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAE7H,YAAM,gBAAgB,aAAa,SAAS,OAAO,OAAO;AAC1D,UAAI,CAAC;AAAe,cAAM,IAAI,MAAM,oBAAoB,OAAO,OAAO,yBAAyB,OAAO,KAAK,aAAa,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;AAE9I,WAAK,SAAS;AAAA,QACZ,SAAS,OAAO;AAAA,QAChB,aAAa,cAAc,OAAO,YAAY;AAAA,QAC9C,UAAU;AAAA,UACR,mBAAmB;AAAA,YACjB,MAAM,cAAc,MAAM,cAAc,SAAS,WAAW;AAAA,UAC9D;AAAA,UACA,YAAY;AAAA,YACV,MAAM,cAAc,MAAM,cAAc,SAAS,WAAW;AAAA,YAC5D,IAAI,cAAc,MAAM,cAAc,SAAS,WAAW;AAAA,UAC5D;AAAA,UACA,WAAW;AAAA,YACT,KAAK,cAAc,MAAM,cAAc,SAAS,UAAU;AAAA,UAC5D;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAK,SAAS;AAAA,IAChB;AACA,UAAM,YAAY,OAAO,OAAO,OAAO;AACvC,QAAI,CAAC;AAAW,YAAM,IAAI,MAAM,wBAAwB;AAExD,SAAK,UAAU,OAAO;AACtB,SAAK,cAAc,UAAU;AAC7B,SAAK,mBAAmB,UAAU;AAClC,UAAM,aAAa,SAAS,KAAK,SAAS,EAAE;AAC5C,QAAI,OAAO,MAAM,UAAU;AAAG,YAAM,IAAI,MAAM,mCAAmC,KAAK,OAAO;AAC7F,SAAK,WAAW,IAAI,sBAAO,gBAAgB,KAAK,OAAO,aAAa,UAAU;AAC9E,SAAK,SAAS,kBAAkB;AAEhC,SAAK,oBAAoB,IAAI;AAAA,MAC3B,KAAK,OAAO,SAAS,kBAAkB;AAAA,MACvC,KAAK,OAAO;AAAA,IACd;AACA,SAAK,aAAa,IAAI;AAAA,MACpB,KAAK,OAAO,SAAS,WAAW;AAAA,MAChC,KAAK,OAAO,SAAS,WAAW;AAAA,MAChC,KAAK,OAAO;AAAA,IACd;AACA,SAAK,YAAY,IAAI;AAAA,MACnB,KAAK,OAAO,SAAS,UAAU;AAAA,MAC/B,KAAK,OAAO;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA,EAIA,MAAM,uBAAuB,SAAiB,QAAgB,MAAe;AAC3E,UAAM,EAAE,YAAY,IAAI,UAAM,wCAAY,KAAK,kBAAkB,kBAAkB,EAAE;AACrF,UAAM,iBAAiB,YAAY,MAAM;AACzC,QAAI,mBAAmB,QAAW;AAChC,YAAM,IAAI,MAAM,cAAc,MAAM,sCAAsC,OAAO,KAAK,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,IACjH;AAEA,UAAM,EAAE,oBAAoB,IAAI,UAAM,wCAAY,KAAK,WAAW,UAAU,EAAE,OAAO;AACrF,UAAM,kBAAkB,oBAAoB,MAAM;AAClD,QAAI,oBAAoB,QAAW;AACjC,YAAM,IAAI,MAAM,oBAAoB,MAAM,sCAAsC,OAAO,KAAK,mBAAmB,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,IAC/H;AACA,UAAM,EAAE,UAAU,aAAa,IAAI;AACnC,UAAM,EAAE,eAAe,IAAI,UAAM,wCAAY,KAAK,kBAAkB,OAAO,EAAE;AAE7E,UAAM,EAAE,SAAS,IAAI,MAAM,KAAK,aAAa,QAAQ,UAAU,IAAI;AACnE,UAAM,QAAQ,KAAK,IAAI;AACvB,UAAM,aAAa,QAAQ;AAE3B,UAAM,UAAU,WAAW;AAE3B,WAAO;AAAA,MACL,eAAe;AAAA,MACf;AAAA,MACA,iBAAiB,eAAe;AAAA,MAChC,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,YAAY,SAAS,SAAS;AAAA,MAC9B;AAAA,MACA,MAAM,UAAU,QAAiB;AAAA,MACjC,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,QAAgB,QAAyB,MAA4B;AACtF,UAAM,eAAe;AACrB,UAAM,EAAE,eAAe,IAAI,UAAM,wCAAY,KAAK,kBAAkB,OAAO,EAAE;AAC7E,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,UAAM,wCAAY,KAAK,kBAAkB,aAAa,EAAE;AAE5D,QAAI;AACJ,QAAI;AACJ,QAAI,SAAS,YAAY;AACvB,YAAM,eAAe,UAAM,wCAAY,KAAK,kBAAkB,eAAe,EAAE;AAC/E,YAAM,eAAe,aAAa,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM;AAC/D,UAAI,iBAAiB,QAAW;AAC9B,cAAM,IAAI,MAAM,gBAAgB,MAAM,YAAY;AAAA,MACpD;AACA,mBAAa,aAAa;AAE1B,YAAM,YAAY,UAAM,wCAAY,KAAK,kBAAkB,YAAY,EAAE;AACzE,UAAI,EAAE,UAAU;AAAY,cAAM,IAAI,MAAM,aAAa,MAAM,YAAY;AAC3E,oBAAc,UAAU,OAAO,MAAM;AAAA,IACvC,OAAO;AACL,YAAM,EAAE,YAAY,IAAI,UAAM,wCAAY,KAAK,kBAAkB,kBAAkB,EAAE;AACrF,YAAM,iBAAiB,YAAY,MAAM;AACzC,UAAI,mBAAmB,QAAW;AAChC,cAAM,IAAI,MAAM,cAAc,MAAM,YAAY;AAAA,MAClD;AACA,mBAAa,eAAe;AAC5B,YAAM,YAAY,UAAM,wCAAY,KAAK,kBAAkB,uBAAuB,EAAE;AACpF,UAAI,EAAE,UAAU;AAAY,cAAM,IAAI,MAAM,aAAa,MAAM,YAAY;AAC3E,oBAAc,UAAU,OAAO,MAAM;AAAA,IACvC;AACA,QAAI,gBAAgB;AAAW,YAAM,IAAI,MAAM,aAAa,MAAM,YAAY;AAE9E,UAAM,cAAc,UAAM,wCAAY,KAAK,kBAAkB,cAAc,EAAE;AAC7E,UAAM,eAAe,sBAAO,YAAY,aAAa,MAAM;AAE3D,UAAM,uBAAuB,UAAM,wCAAY,KAAK,kBAAkB,uBAAuB,EAAE;AAC/F,UAAM,gCAAgC,qBAAqB,OAAO,sBAAO,WAAW;AACpF,QAAI,kCAAkC;AAAW,YAAM,IAAI,MAAM,iBAAiB,KAAK,gBAAgB,gCAAgC,OAAO,KAAK,oBAAoB,EAAE,KAAK,IAAI,CAAC,EAAE;AACrL,UAAM,kBAAkB,eAAe,YAAY;AACnD,QAAI,oBAAoB;AAAW,YAAM,IAAI,MAAM,aAAa,YAAY,oBAAoB;AAChG,UAAM,4BAA4B,qBAAqB,OAAO,eAAe;AAC7E,QAAI,8BAA8B;AAAW,YAAM,IAAI,MAAM,aAAa,YAAY,0BAA0B,OAAO,KAAK,oBAAoB,EAAE,KAAK,IAAI,CAAC,EAAE;AAE9J,UAAM,aAAa;AAAA,MACjB,aAAa,SAAS;AAAA,MACtB;AAAA,IACF;AAEA,UAAM,WAAW,IAAI,4BAAU,MAAM;AACrC,UAAM,cAAc,IAAI,4BAAU,WAAW;AAE7C,UAAM,yBAAyB,IAAI,4BAAU,UAAU,EACpD,aAAa,6BAA6B,EAC1C,SAAS;AAEZ,UAAM,uBAAuB,IAAI,4BAAU,sBAAsB,EAC9D;AAAA,MACC,IAAI,4BAAU,CAAC,EACZ,IAAI,yBAAyB;AAAA,IAClC,EAAE,SAAS;AAEb,UAAM,MAAM,IAAI,4BAAU,WAAW,EAClC,aAAa,QAAQ,EACrB,aAAa,UAAU,EACvB,IAAI,GAAG;AAEV,UAAM,WAAW,IAAI,KAAK,oBAAoB;AAE9C,WAAO;AAAA,MACL;AAAA,MACA,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;A+E1MA,4BAAsB;AAMtB,IAAAC,6BAA4B;;;ACN5B;AAAA;AAAA;AAAA,iBAAAC;AAAA;AAAA,IAAAC,6BAAoC;;;ACApC,IAAAC,mBAAA;AAAA,SAAAA,kBAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAAC;AAAA,EAAA;AAAA,2BAAAC;AAAA,EAAA;AAAA;AAAA;;;ACAA,IAAAC,eAAkB;AAElB,IAAM,aAAa,eAAE,OAAO;AAAA,EAC1B,SAAS,eAAE,OAAO;AAAA,EAClB,UAAU,eAAE,OAAO;AAAA,EACnB,QAAQ,eAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAED,IAAO,qBAAQ;;;ACRf,IAAAC,eAAkB;AAEX,IAAMC,eAAc,eAAE,OAAO;AAAA,EAClC,QAAQ,eAAE,OAAO;AAAA,EACjB,SAAS,eAAE,OAAO;AACpB,CAAC;;;ACJD,IAAAC,eAAkB;AAEX,IAAM,iCAAiCC,aAAY,OAAO;AAAA,EAC/D,UAAU,eAAE,OAAO,EAAE,SAAS;AAChC,CAAC;;;ACLD,IAAAC,eAAkB;AAElB,IAAM,oCAAoC,eAAE,OAAO;AAAA,EACjD,MAAM,eAAE,MAAM,eAAE,OAAO;AAAA,IACrB,cAAc,eAAE,OAAO;AAAA,IACvB,WAAW,eAAE,OAAO;AAAA,IACpB,iBAAiB,eAAE,OAAO;AAAA,IAC1B,eAAe,eAAE,OAAO;AAAA,IACxB,kBAAkB,eAAE,OAAO;AAAA,IAC3B,MAAM,eAAE,OAAO;AAAA,EACjB,CAAC,CAAC;AAAA,EACF,iBAAiB,eAAE,OAAO;AAAA,IACxB,QAAQ,eAAE,OAAO;AAAA,IACjB,SAAS,eAAE,OAAO;AAAA,EACpB,CAAC;AACH,CAAC;AAED,IAAO,4CAAQ;;;ACjBf,IAAAC,eAAkB;AAElB,IAAM,0BAA0B,eAAE,OAAO;AAAA,EACvC,MAAM,eAAE,MAAM,eAAE,OAAO;AAAA,IACrB,cAAc,eAAE,OAAO;AAAA,IACvB,mBAAmB,eAAE,OAAO,EAAE,SAAS;AAAA,IACvC,YAAY,eAAE,OAAO;AAAA,IACrB,YAAY,eAAE,OAAO;AAAA,IACrB,UAAU,eAAE,OAAO;AAAA,IACnB,WAAW,eAAE,OAAO;AAAA,IACpB,iBAAiB,eAAE,OAAO;AAAA,IAC1B,eAAe,eAAE,OAAO;AAAA,IACxB,cAAc,eAAE,OAAO;AAAA,IACvB,kBAAkB,eAAE,OAAO;AAAA,IAC3B,YAAY,eAAE,OAAO;AAAA,IACrB,gBAAgB,eAAE,OAAO;AAAA,IACzB,MAAM,eAAE,OAAO;AAAA,IACf,aAAa,eAAE,OAAO;AAAA,IACtB,iBAAiB,eAAE,OAAO;AAAA,EAC5B,CAAC,CAAC;AAAA,EACF,iBAAiB,eAAE,OAAO;AAAA,IACxB,QAAQ,eAAE,OAAO;AAAA,IACjB,SAAS,eAAE,OAAO;AAAA,EACpB,CAAC;AACH,CAAC;AAED,IAAO,kCAAQ;;;AC1Bf,IAAAC,eAAkB;AAElB,IAAM,yBAAyB,eAAE,OAAO;AAAA,EACtC,YAAY,eAAE,OAAO;AAAA,EACrB,QAAQ,eAAE,OAAO;AACnB,CAAC;AAEM,IAAM,uBAAuB,eAAE,OAAO;AAAA,EAC3C,SAAS,eAAE,OAAO;AAAA,EAClB,UAAU,eAAE,OAAO;AAAA,EACnB,MAAM,eAAE,OAAO;AAAA,EACf,iBAAiB,eAAE,OAAO;AAAA,EAC1B,wBAAwB,eAAE,OAAO;AAAA,EACjC,cAAc,eAAE,OAAO;AAAA,EACvB,uBAAuB,eAAE,OAAO;AAAA,EAChC,+BAA+B,eAAE,OAAO;AAAA,EACxC,wBAAwB,eAAE,OAAO;AAAA,EACjC,mBAAmB,eAAE,MAAM,sBAAsB;AACnD,CAAC;;;AClBD,IAAAC,eAAkB;;;ACAlB,IAAAC,eAAkB;AAEX,IAAM,uBAAuB,eAAE,OAAO;AAAA,EAC3C,QAAQ,eAAE,OAAO;AAAA,EACjB,SAAS,eAAE,OAAO;AACpB,CAAC;;;ADFD,IAAM,aAAa,eAAE,OAAO;AAAA,EAC1B,UAAU,eAAE,OAAO;AAAA,EACnB,gBAAgB,eAAE,OAAO;AAAA,EACzB,QAAQ,eAAE,OAAO;AAAA,EACjB,QAAQ,eAAE,OAAO;AACnB,CAAC;AAEM,IAAM,yBAAyB,eAAE,OAAO;AAAA,EAC7C,MAAM,eAAE,MAAM,UAAU;AAAA,EACxB,iBAAiB;AACnB,CAAC;;;AEbD,IAAAC,eAAkB;AAGlB,IAAMC,cAAa,eAAE,OAAO;AAAA,EAC1B,UAAU,eAAE,OAAO;AAAA,EACnB,iBAAiB,eAAE,OAAO;AAAA,EAC1B,cAAc,eAAE,OAAO;AAAA,EACvB,kBAAkB,eAAE,OAAO;AAAA,EAC3B,mBAAmB,eAAE,OAAO;AAC9B,CAAC;AAEM,IAAMC,qBAAoB,eAAE,OAAO;AAAA,EACxC,iBAAiB;AAAA,EACjB,MAAM,eAAE,MAAMD,WAAU;AAC1B,CAAC;;;ACdD,IAAAE,eAAkB;AAEX,IAAM,sBAAsB,eAAE,OAAO;AAAA,EAC1C,QAAQ,eAAE,OAAO;AAAA,EACjB,aAAa,eAAE,OAAO;AACxB,CAAC;;;AXoBD,IAAM,iBAAN,MAAqB;AAAA,EACF;AAAA,EAEjB,IAAI,MAAM;AACR,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY,QAAgB;AAC1B,SAAK,SAAS;AAEd,SAAK,sBAAsB,KAAK,oBAAoB,KAAK,IAAI;AAC7D,SAAK,uBAAuB,KAAK,qBAAqB,KAAK,IAAI;AAC/D,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AACzD,SAAK,sBAAsB,KAAK,oBAAoB,KAAK,IAAI;AAC7D,SAAK,mBAAmB,KAAK,iBAAiB,KAAK,IAAI;AAAA,EACzD;AAAA,EAEA,sBAAsB,CACpB,gBAEA;AAAA,IACE,GAAG,KAAK,MAAM;AAAA,IACd;AAAA,IACA;AAAA,MACE,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU,OAAO;AAAA,IAC9B;AAAA,IACA;AAAA,EACF;AAAA,EAEF,iCAAiC,CAC/B,gBACA,SACA,OACA,aACA,SACG;AACH,UAAM,cAA+C;AAAA,MACnD,YAAY;AAAA,MACZ,SAAS;AAAA,MACT;AAAA,MACA,gBAAgB;AAAA,IAClB;AAEA,QAAI,YAAY,QAAW;AACzB,kBAAY,UAAU,IAAI;AAAA,IAC5B;AAEA,QAAI,UAAU,QAAW;AACvB,kBAAY,gBAAgB,IAAI,mBAAmB,MAAM,KAAK,GAAG,CAAC;AAAA,IACpE;AAEA,UAAM,cAAc,OAAO,QAAQ,WAAW,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,GAAG;AAErF,eAAO;AAAA,MACL,GAAG,KAAK,MAAM,gBAAgB,WAAW;AAAA,MACzC;AAAA,MACA;AAAA,QACE,SAAS;AAAA,UACP,mBAAmB;AAAA,QACrB;AAAA,MACF;AAAA,MACAC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,uBAAuB,CACrB,gBACA,SACA,OACA,aACA,SACG;AACH,UAAM,cAA+C;AAAA,MACnD,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB;AAAA,IAClB;AAEA,QAAI,YAAY,QAAW;AACzB,kBAAY,UAAU,IAAI;AAAA,IAC5B;AAEA,QAAI,UAAU,QAAW;AACvB,kBAAY,gBAAgB,IAAI,mBAAmB,MAAM,KAAK,GAAG,CAAC;AAAA,IACpE;AAEA,UAAM,cAAc,OAAO,QAAQ,WAAW,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,GAAG;AAErF,eAAO;AAAA,MACL,GAAG,KAAK,MAAM,oCAAoC,WAAW;AAAA,MAC7D;AAAA,MACA;AAAA,QACE,SAAS;AAAA,UACP,mBAAmB;AAAA,QACrB;AAAA,MACF;AAAA,MACAA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB,CAAC;AAAA,IAChB,OAAO;AAAA,EACT,MAAwB;AACtB,eAAO;AAAA,MACL,GAAG,KAAK,MAAM,qCAAqC,IAAI;AAAA,MACvDC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAAoB,CAAC,EAAE,QAAQ,MAAmB;AAChD,eAAO;AAAA,MACL,GAAG,KAAK,MAAM,4CAA4C,OAAO;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAAA,EAEA,sBAAsB,CAAC,EAAE,SAAS,OAAO,EAAE,MAAsC;AAC/E,eAAO;AAAA,MACL,GAAG,KAAK,MAAM,8CAA8C,OAAO,SAAS,IAAI;AAAA,MAChF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,mBAAmB,CAAC,EAAE,QAAQ,MAAmB;AAC/C,eAAO;AAAA,MACL,GAAG,KAAK,MAAM,2CAA2C,OAAO;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AACF;;;AD3IA,IAAqB,UAArB,MAA6B;AAAA,EACX;AAAA,EAEA;AAAA,EAEA;AAAA,EAEhB,YACE,cAAoC,cACpC,WACA;AACA,QAAI;AACJ,QAAI,OAAO,gBAAgB,UAAU;AACnC,YAAM,YAAY,KAAK,WAAW;AAClC,UAAI,CAAC,WAAW;AACd,cAAM,IAAI,MAAM,wBAAwB,WAAW,6BAA6B,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,MAChH;AACA,WAAK,MAAM;AACX,eAAS;AAAA,QACP,YAAY,UAAU;AAAA,QACtB,aAAa,UAAU;AAAA,QACvB,UAAU,OAAO,QAAQ,UAAU,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,aAAa,MAAM;AAC7E,cAAI,CAAC,uBAAe,OAAO;AAAG,kBAAM,IAAI,MAAM,oBAAoB,OAAO,EAAE;AAC3E,gBAAM,cAAc,OAAO,OAAO;AAClC,cAAI,CAAC,aAAa;AAChB,kBAAM,IAAI,MAAM,2BAA2B,OAAO,uBAAuB,OAAO,KAAK,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,UAC3G;AAEA,iBAAO;AAAA,YACL,KAAK;AAAA,YACL;AAAA,YACA,KAAK,cAAc;AAAA,YACnB,aAAa,cAAc,OAAO,YAAY;AAAA,YAC9C,UAAU;AAAA,cACR,mBAAmB;AAAA,gBACjB,MAAM,cAAc,MAAM,cAAc,SAAS,WAAW;AAAA,cAC9D;AAAA,cACA,YAAY;AAAA,gBACV,MAAM,cAAc,MAAM,cAAc,SAAS,WAAW;AAAA,gBAC5D,IAAI,cAAc,MAAM,cAAc,SAAS,WAAW;AAAA,cAC5D;AAAA,cACA,WAAW;AAAA,gBACT,KAAK,cAAc,MAAM,cAAc,SAAS,UAAU;AAAA,cAC5D;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC,EACE,OAA6D,CAAC,KAAK,QAAQ;AAC1E,cAAI,IAAI,OAAO,IAAI;AACnB,iBAAO;AAAA,QACT,GAAG,CAAC,CAAC;AAAA,MACT;AAEA,UAAI,WAAW;AAEb,qBAAS,6BAAM,QAAQ,SAAS;AAAA,MAClC;AAAA,IACF,OAAO;AACL,eAAS;AAAA,IACX;AAEA,SAAK,iBAAiB,IAAI,eAAe,OAAO,WAAW;AAE3D,SAAK,QAAQ,OAAO,QAAQ,OAAO,QAAQ,EACxC,OAAgD,CAAC,KAAK,CAAC,SAAS,aAAa,MAAM;AAClF,UAAI,CAAC,uBAAe,OAAO;AAAG,cAAM,IAAI,MAAM,oBAAoB,OAAO,EAAE;AAC3E,YAAM,cAAc,OAAO,OAAO;AAClC,UAAI,CAAC;AAAa,cAAM,IAAI,MAAM,2BAA2B,OAAO,EAAE;AAEtE,YAAM,OAAO,IAAI,KAAK;AAAA;AAAA,QAEpB;AAAA;AAAA,QAEA,aAAa,cAAc;AAAA,QAC3B,UAAU,cAAc;AAAA,MAC1B,CAAC;AACD,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,OAAO,GAAG;AAAA,MACb;AAAA,IACF,GAAG,CAAC,CAAC;AAAA,EACT;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,OAAO,QAAQ,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI;AAAA,EAC1D;AAAA,EAEA,QAAQ,sBAA4E;AAClF,QAAI;AACJ,QAAI,uBAAe,oBAAoB,GAAG;AACxC,aAAO,KAAK,MAAM,oBAAoB;AAAA,IACxC,OAAO;AACL,aAAO,KAAK,WAAW,KAAK,CAAC,MAAM,EAAE,gBAAgB,oBAAoB;AAAA,IAC3E;AACA,QAAI,CAAC,MAAM;AACT,YAAM,IAAI;AAAA,QACR,yBAAyB,oBAAoB,8BACjB,KAAK,WAAW,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;AAAA,MAAE;AAAA,IACtF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,SAA2B;AACvC,WAAO,KAAK,WAAW,OAAO,CAAC,SAAS,KAAK,YAAY,OAAO;AAAA,EAClE;AAAA,EAEA,MAAM,YAAY,QAAwD;AACxE,UAAM,SAKF,CAAC;AAEL,UAAM,QAAQ,IAAI,KAAK,WAAW,IAAI,OAAO,SAAS;AACpD,YAAM,QAAQ,UAAM,wCAAY,KAAK,WAAW,YAAY,EAAE,GAAG,MAAM;AACvE,YAAM,QAAQ,CAAC,SAAS;AACtB,eAAO,IAAI,IAAI;AAAA,UACb,GAAI,OAAO,IAAI,KAAK,CAAC;AAAA,UACrB,KAAK;AAAA,QACP;AAAA,MACF,CAAC;AAAA,IACH,CAAC,CAAC;AAEF,WAAO;AAAA,EACT;AACF;;;AalJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,kBAAuB;;;ACAvB;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,EACX,MAAQ;AACV;;;ACAA,IAAM,eAAe,2BAAmB,MAAM,wBAAgB;AAE9D,SAAS,gBAAmB,KAAoC;AAC9D,QAAM,SAAqC,CAAC;AAC5C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC9C,QAAI,UAAU,QAAW;AACvB,aAAO,GAAG,IAAI;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AAKA,IAAM,gBAAgB,CAAC,aAAqB;AAAA,EAC1C,GAAG,gBAAgB,YAAY;AAAA,EAC/B;AACF;AAEA,IAAO,wBAAQ;;;ACxBf,IAAAC,iBAAuB;AAGvB,IAAM,0BAA0B,OAC9B,oBACA,WACG;AACH,QAAM,QAAQ,CAAC,UAAU,UAAU,SAAS;AAC5C,QAAM,UAAU,sBAAO;AAAA,IACrB;AAAA,IACA,CAAC,eAAe,mBAAmB,IAAI,mBAAmB,aAAa;AAAA,EACzE;AACA,QAAM,YAAY,MAAM,OAAO,YAAY,sBAAO,SAAS,OAAO,CAAC;AAGnE,SAAO,sBAAO,UAAU,KAAK,SAAS,EAAE;AAC1C;AAEA,IAAO,kCAAQ;;;AHZf,IAAM,kBAAkB,OACtB,eACA,IACA,iBACA,QACA,SACA,mBACG;AACH,QAAM,qBAAyC;AAAA,IAC7C;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA,eAAe;AAAA,EACjB;AAEA,QAAM,YAAY,kBACd,MAAM,gCAAwB,oBAAoB,MAAM;AAAA;AAAA,IAExD,MAAM,OAAO;AAAA,MACX,sBAAc,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,IACF;AAAA;AAIJ,QAAM,iBAAiB,uBAAO,UAAU,KAAK,SAAS,EAAE;AAIxD,QAAM,2BAAqD;AAAA,IACzD,GAAG;AAAA,IACH,WAAW;AAAA,EACb;AACA,SAAO;AACT;AAEA,IAAO,0BAAQ;;;AI5Cf,IAAAC,oBAA0B;AAC1B,IAAAC,kBAAuB;;;ACDvB,IAAAC,kBAAuB;AAGvB,IAAM,qCAAqC,OAAO,OAAyB,WAA0B;AACnG,QAAM,UAAU,uBAAO;AAAA,IACrB;AAAA,MACE;AAAA,MAAU;AAAA,MAAW;AAAA,MAAW;AAAA,MAAW;AAAA,MAAU;AAAA,MAAU;AAAA,MAAU;AAAA,MAAU;AAAA,MAAU;AAAA,IAC/F;AAAA,IACA;AAAA,MACE;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,QAAM,YAAY,MAAM,OAAO,YAAY,uBAAO,SAAS,OAAO,CAAC;AAGnE,SAAO,uBAAO,UAAU,KAAK,SAAS,EAAE;AAC1C;AAEA,IAAO,6CAAQ;;;AC3Bf,IAAAC,kBAAuB;AAGvB,IAAM,6BAA6B,CAAC,UAA4B,uBAAO;AAAA,EACrE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM,YAAY,IAAI,SAAS;AAAA,EACjC;AACF;AAEA,IAAO,qCAAQ;;;ACjBR,IAAM,qCAAqC;AAAA,EAChD,YAAY;AAAA,IACV,EAAE,MAAM,iBAAiB,MAAM,UAAU;AAAA,IACzC,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,IAChC,EAAE,MAAM,mBAAmB,MAAM,SAAS;AAAA,IAC1C,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,IAC1C,EAAE,MAAM,UAAU,MAAM,SAAS;AAAA,IACjC,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,IACjC,EAAE,MAAM,UAAU,MAAM,SAAS;AAAA,IACjC,EAAE,MAAM,cAAc,MAAM,SAAS;AAAA,IACrC,EAAE,MAAM,cAAc,MAAM,SAAS;AAAA,IACrC,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IACnC,EAAE,MAAM,iBAAiB,MAAM,SAAS;AAAA,IACxC,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,EAClC;AACF;AAcO,IAAM,kCAAkC;AAAA,EAC7C,YAAY;AAAA,IACV,EAAE,MAAM,iBAAiB,MAAM,UAAU;AAAA,IACzC,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,IAChC,EAAE,MAAM,mBAAmB,MAAM,SAAS;AAAA,IAC1C,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,IAC1C,EAAE,MAAM,UAAU,MAAM,SAAS;AAAA,IACjC,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,IACjC,EAAE,MAAM,UAAU,MAAM,SAAS;AAAA,IACjC,EAAE,MAAM,cAAc,MAAM,SAAS;AAAA,IACrC,EAAE,MAAM,cAAc,MAAM,SAAS;AAAA,IACrC,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IACnC,EAAE,MAAM,iBAAiB,MAAM,SAAS;AAAA,EAC1C;AACF;;;AHxCO,IAAM,6BAA6B,OACxC,mBACA,MACA,OACA,QACA,YACA,eACA,gBACA,iBACA,QACA,SACA,WACA,mBACG;AACH,QAAM,QAAQ,KAAK,IAAI;AACvB,QAAM,aAAa,QAAQ;AAE3B,QAAM,QAA0B;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,eAAe;AAAA,IACf,QAAQ;AAAA,MACN;AAAA,QACE;AAAA,QACA;AAAA,QACA,4BAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,gBAAgB,OAAO,6BAA6B,4BAAU,WAAW;AAAA,IAC3E;AAAA,IACA,YAAY;AAAA,MACV;AAAA,QACE;AAAA,QACA;AAAA,QACA,4BAAU;AAAA;AAAA,MACZ;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,SAAS,QAAQ,IAAI;AAAA,IAC9B,WACE,cAAc,SAAY,IAAI,4BAAU,SAAS,EAAE,SAAS,IAAI;AAAA,IAClE,gBAAgB;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,YAAY,kBACd,MAAM,2CAAmC,OAAO,MAAM,IACtD,MAAM,OAAO;AAAA,IACX,sBAAc,OAAO;AAAA,IACrB;AAAA,IACA;AAAA,EACF;AAIJ,QAAM,iBAAiB,uBAAO,UAAU,KAAK,SAAS,EAAE;AAIxD,QAAM,cAA4C;AAAA,IAChD,GAAG;AAAA,IACH,IAAI,mCAA2B,KAAK;AAAA,IACpC,WAAW;AAAA,EACb;AAEA,SAAO;AACT;AAEA,IAAO,qCAAQ;;;AIzFf,IAAAC,oBAA0B;AAC1B,IAAAC,kBAAuB;;;ACDvB,IAAAC,kBAAuB;AAGvB,IAAM,kCAAkC,OAAO,OAA4B,WAA0B;AACnG,QAAM,UAAU,uBAAO;AAAA,IACrB;AAAA,MACE;AAAA,MAAU;AAAA,MAAW;AAAA,MAAW;AAAA,MAAU;AAAA,MAAU;AAAA,MAAU;AAAA,MAAU;AAAA,MAAU;AAAA,IACpF;AAAA,IACA;AAAA,MACE;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,QAAM,YAAY,MAAM,OAAO,YAAY,uBAAO,SAAS,OAAO,CAAC;AAGnE,SAAO,uBAAO,UAAU,KAAK,SAAS,EAAE;AAC1C;AAEA,IAAO,0CAAQ;;;AC1Bf,IAAAC,kBAAuB;AAGvB,IAAM,0BAA0B,CAAC,UAA+B,uBAAO;AAAA,EACrE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM,YAAY,IAAI,SAAS;AAAA,EACjC;AACF;AAEA,IAAO,kCAAQ;;;AFfR,IAAM,0BAA0B,OACrC,iBACA,MACA,OACA,QACA,YACA,eACA,gBACA,iBACA,QACA,SACA,WACA,UACA,mBACG;AACH,QAAM,QAAQ,KAAK,IAAI;AACvB,QAAM,aAAa,QAAQ;AAE3B,QAAM,QAA6B;AAAA,IACjC;AAAA,IACA,OAAO;AAAA,MACL,gBAAgB,OAAO,6BAA6B,4BAAU,WAAW;AAAA,IAC3E;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,MACN;AAAA,QACE;AAAA,QACA;AAAA,QACA,4BAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV;AAAA,QACE;AAAA,QACA;AAAA,QACA,4BAAU;AAAA;AAAA,MACZ;AAAA,IACF;AAAA,IACA;AAAA,IACA,SAAS,SAAS,QAAQ,IAAI;AAAA,IAC9B,WACE,cAAc,SAAY,IAAI,4BAAU,SAAS,EAAE,SAAS,IAAI;AAAA,IAClE,UAAU,aAAa,SAAY,WAAW;AAAA,IAC9C,gBAAgB;AAAA,IAChB;AAAA,IACA,eAAe;AAAA,IACf,WAAW;AAAA,EACb;AAEA,QAAM,YAAY,kBACd,MAAM,wCAAgC,OAAO,MAAM,IACnD,MAAM,OAAO;AAAA,IACX,sBAAc,OAAO;AAAA,IACrB;AAAA,IACA;AAAA,EACF;AAIJ,QAAM,iBAAiB,uBAAO,UAAU,KAAK,SAAS,EAAE;AAIxD,QAAM,cAAyC;AAAA,IAC7C,GAAG;AAAA,IACH,IAAI,gCAAwB,KAAK;AAAA,IACjC,WAAW;AAAA,EACb;AAEA,SAAO;AACT;AAEA,IAAO,kCAAQ;;;AxHtFf,4BAAU,OAAO,EAAE,gBAAgB,IAAK,CAAC;","names":["import_bignumber","import_zod","SupportedChainId","HistoryTransactionStatus","import_zod","import_ethers","schemas_exports","import_zod","import_zod","import_zod","import_zod","import_zod","schemas_exports","import_zod","schemas_exports","errorSchema_default","import_zod","import_zod","import_ethers","invariant","import_ethers","import_bignumber","import_bignumber","import_ethers","import_zod","import_zod","import_zod","baseAddressUpdate","updateMessageSchema","initialMessageSchema","import_zod","import_zod","errorSchema","errorSchema_default","import_zod","import_zod","import_zod","import_zod","import_zod","import_ethers","import_zod","import_zod","import_zod","import_zod","import_zod","updateMessageSchema","initialMessageSchema","import_zod","baseCfdAddressUpdate","updateMessageSchema","initialMessageSchema","import_zod","WebSocket","import_nanoevents","errorSchema_default","uuidv4","uuidValidate","subscriptions","schemas_exports","import_ethers","import_zod","subOrderSchema","import_zod","import_ethers","schemas_exports","import_zod","import_simple_typed_fetch","schemas_exports","import_zod","import_zod","import_zod","import_zod","historyTransactionType","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","schemas_exports","ws_exports","import_simple_typed_fetch","schemas_exports","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","ws_exports","schemas_exports","import_isomorphic_ws","import_zod","import_uuid","schemas_exports","import_zod","import_zod","import_zod","import_zod","allTickersSchema","uuidv4","WebSocket","error","import_simple_typed_fetch","import_bignumber","import_simple_typed_fetch","schemas_exports","import_simple_typed_fetch","schemas_exports","errorSchema","leaderboardSchema","import_zod","import_zod","errorSchema","import_zod","errorSchema","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","dataSchema","leaderboardSchema","import_zod","errorSchema","leaderboardSchema","import_ethers","import_ethers","import_bignumber","import_ethers","import_ethers","import_ethers","import_bignumber","import_ethers","import_ethers","import_ethers"]}