{"version":3,"sources":["../../src/pyth/index.ts","../../src/constants/protocol.ts","../../src/constants/common.ts","../../src/constants/pythPriceIds.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios';\nimport { SynthetixSdk } from '..';\nimport { DEFAULT_PYTH_TIMEOUT, PUBLIC_PYTH_ENDPOINT } from '../constants';\nimport { EvmPriceServiceConnection, PriceFeed } from '@pythnetwork/pyth-evm-js';\nimport { PythConfig } from '../interface/classConfigs';\nimport { formatUnits, Hex } from 'viem';\nimport { SYMBOL_TO_PYTH_FEED } from '../constants';\n\n/**\n * Pyth class for interacting with the Pyth price service. The price service is\n * connected to the endpoint specified as ``pythEndpoint`` when initializing\n * the ``Synthetix`` class\n * If an endpoint isn't specified, the default endpoint is used.\n * The default endpoint should be considered unreliable for production applications.\n * The ``Pyth`` class is used to fetch the latest price update data for a list\n * of tokens or feed ids\n */\nexport class Pyth {\n  sdk: SynthetixSdk;\n  pythConnection: EvmPriceServiceConnection;\n\n  pythConfig?: PythConfig;\n  pythClient: AxiosInstance;\n\n  // To store Market Symbol to Pyth Price ID mapping\n  priceFeedIds: Map<string, string>;\n\n  constructor(synthetixSdk: SynthetixSdk, pythConfig?: PythConfig) {\n    this.sdk = synthetixSdk;\n    this.pythClient = {} as AxiosInstance;\n    this.pythConfig = pythConfig;\n\n    let pythEndpoint;\n    if (pythConfig != undefined) {\n      pythEndpoint = pythConfig.pythEndpoint ?? PUBLIC_PYTH_ENDPOINT;\n    } else {\n      pythEndpoint = PUBLIC_PYTH_ENDPOINT;\n    }\n\n    this.pythConnection = new EvmPriceServiceConnection(pythEndpoint, {\n      timeout: DEFAULT_PYTH_TIMEOUT,\n    });\n\n    // Initialize empty priceIds data\n    this.priceFeedIds = new Map<string, string>();\n  }\n\n  async initPyth() {\n    this.pythClient = await this.getPythClient();\n  }\n\n  /**\n   * Get Pyth client instance\n   * @returns Pyth client object based on the params provided\n   */\n  async getPythClient(): Promise<AxiosInstance> {\n    let pythServiceEndpoint, pythServiceUsername, pythServicePassword;\n\n    if (this.pythConfig == undefined || this.pythConfig.pythEndpoint == undefined) {\n      pythServiceEndpoint = PUBLIC_PYTH_ENDPOINT;\n    } else {\n      pythServiceEndpoint = this.pythConfig.pythEndpoint;\n      pythServiceUsername = this.pythConfig.username;\n      pythServicePassword = this.pythConfig.password;\n    }\n\n    try {\n      if (pythServiceEndpoint) {\n        if (pythServiceUsername && pythServicePassword) {\n          // If Username and password is provided, connect using credentials\n          return axios.create({\n            baseURL: pythServiceEndpoint,\n            auth: {\n              username: pythServiceUsername,\n              password: pythServicePassword,\n            },\n            timeout: this.pythConfig?.cacheTtl ?? DEFAULT_PYTH_TIMEOUT,\n          });\n        } else {\n          // Connect to the PYTH service endpoint without authentication\n          return axios.create({\n            baseURL: pythServiceEndpoint,\n          });\n        }\n      } else {\n        // If Pyth service endpoint is not provided, connect to public endpoints\n        return axios.create({\n          baseURL: PUBLIC_PYTH_ENDPOINT,\n          timeout: this.pythConfig?.cacheTtl ?? DEFAULT_PYTH_TIMEOUT,\n        });\n      }\n    } catch (error) {\n      console.error('Error when creating Pyth instance:', error);\n      throw error;\n    }\n  }\n\n  /**\n   * The function accepts an array of priceIds and publish Timestamp and\n   * returns the priceUpdateData from Pyth for price ids array\n   * @param priceIds Pyth Price IDs array\n   * @param publishTime Publish time for benchmark data\n   * @returns Encoded Pyth price update data\n   */\n  public getVaaPriceUpdateData = async (priceIds: string[], publishTime: number): Promise<Hex[]> => {\n    let priceUpdateData: string[] = [];\n\n    try {\n      const response = await this.pythClient.get(`/v2/updates/price/${publishTime}`, {\n        params: {\n          ids: priceIds,\n          encoding: 'hex',\n        },\n      });\n      if (response.status == 200) {\n        const responseData = response.data;\n        priceUpdateData = responseData.binary?.data ?? [];\n      } else {\n        throw new Error('Error fetching data from Pyth');\n      }\n    } catch (error) {\n      this.sdk.logger.error('Error fetching data from Pyth', error);\n      throw error;\n    }\n    const updateData = priceUpdateData.map((vaa) => '0x' + vaa);\n    return updateData as Hex[];\n  };\n\n  /**\n   * Update the price feed IDs for the Pyth price service.\n   * Additionally sets a lookup for feedId to symbol.\n   * @param updatedPriceFeeds Dictionary of feed IDs to update\n   */\n  public updatePriceFeedIds(updatedPriceFeeds: { symbol: string; feedId: string }[]) {\n    updatedPriceFeeds.forEach((feed) => {\n      this.priceFeedIds.set(feed.symbol, feed.feedId);\n    });\n  }\n\n  /**\n   * Fetch the latest Pyth price data for a list of feed ids. This is the most reliable way to\n   * specify the exact feed you want to fetch data for.\n   * @param feedIds An array of price feed ids to fetch the data for\n   */\n  public async getPriceFromIds(feedIds: Hex[]): Promise<PriceFeed[] | undefined> {\n    const pythPrice = await this.pythConnection.getLatestPriceFeeds(feedIds);\n    return pythPrice;\n  }\n\n  /**\n   * Fetch the latest Pyth price data for a list of market symbols. This\n   * function is the same as ``getPriceFromIds`` but uses the symbol\n   * to fetch the feed id from the lookup table.\n   * @param symbols Array of token symbols to get the price details\n   */\n  public async getPriceFromSymbols(symbols: string[]) {\n    const feedIds: Hex[] = [];\n    symbols.forEach((tokenSymbol) => {\n      const feedId = this.priceFeedIds.get(tokenSymbol) as Hex;\n      if (feedId != undefined) {\n        feedIds.push(feedId);\n      }\n    });\n\n    return this.getPriceFromIds(feedIds);\n  }\n\n  /**\n   * Gets price update data which then can be submitted to Pyth contract to update the prices.\n   * This will throw an axios error if there is a network problem or the price service returns\n   * a non-ok response (e.g: Invalid price ids)\n   * @param priceIds Array of hex-encoded price ids.\n   * @returns Array of price update data.\n   */\n  public async getPriceFeedsUpdateData(feedIds: Hex[]): Promise<Hex[]> {\n    const priceUpdateData = await this.pythConnection.getPriceFeedsUpdateData(feedIds);\n    return priceUpdateData as Hex[];\n  }\n\n  /**\n   *\n   * @param priceId Pyth price id of the token symbol to fetch the price for\n   * @param publishTime Publish time for benchmark data\n   * @returns\n   */\n  public async getFormattedPrice(priceId: Hex, publishTime?: number): Promise<number> {\n    let pythPrice: PriceFeed;\n\n    // Get latest price if publishTime is not provided, else fetch benchmark data\n    if (publishTime != undefined) {\n      pythPrice = await this.pythConnection.getPriceFeed(priceId, publishTime);\n    } else {\n      const price = await this.pythConnection.getLatestPriceFeeds([priceId]);\n      if (price != undefined && price.length > 0) {\n        pythPrice = price[0];\n      } else {\n        throw new Error('Error while fetching Pyth price');\n      }\n    }\n\n    const priceUnchecked = pythPrice.getPriceUnchecked();\n    const price = Number(formatUnits(BigInt(priceUnchecked.price), Math.abs(priceUnchecked.expo)));\n    if (price == 0) {\n      throw new Error('Invalid price: 0');\n    }\n    return price;\n  }\n\n  /**\n   *\n   * @param priceId Pyth price id of the token symbol to fetch the price for\n   * @param publishTime Publish time for benchmark data\n   * @returns\n   */\n  public async getFormattedPriceSymbol(symbol: string, publishTime?: number): Promise<number> {\n    const feedId = this.priceFeedIds.get(symbol);\n    if (feedId != undefined) {\n      return this.getFormattedPrice(feedId as Hex, publishTime);\n    } else {\n      throw new Error('Invalid token symbol');\n    }\n  }\n\n  /**\n   * Returns a mapping of token symbol to price ids from constants\n   * @returns A map of Token symbol to price id\n   */\n  public getPriceIdsFromConstants(): Map<string, string> {\n    return SYMBOL_TO_PYTH_FEED;\n  }\n}\n","export const DEFAULT_NETWORK_ID = 8453;\n\nexport const DEFAULT_DECIMALS = 18;\nexport const DEFAULT_SLIPPAGE = 2.0;\nexport const DEFAULT_GAS_MULTIPLIER = 2.0;\n\nexport const PUBLIC_PYTH_ENDPOINT = 'https://hermes.pyth.network';\nexport const DEFAULT_PYTH_TIMEOUT = 15000; // 15 sec\n","import { Hex, zeroAddress } from 'viem';\nimport { MarketIdOrName } from '../interface/commonTypes';\nimport { SUPPORTED_CHAINS } from './chains';\n\nexport const ZERO_ADDRESS: Hex = zeroAddress;\n\nexport const SIG_ORACLE_DATA_REQUIRED = '0xcf2cabdf';\nexport const SIG_FEE_REQUIRED = '0x0e7186fb';\nexport const SIG_ERRORS = '0x0b42fd17';\n\n// for markets metadata it is requesting too much oracle updates\nexport const MAX_ERC7412_RETRIES = 80; // Limit the max failures to prevent infinite loops\n\n// List of market ids disabled by chainId\nexport const DISABLED_MARKETS: { [key: number]: number[] } = {\n  84532: [3, 6300],\n  8453: [6300],\n};\n\nexport const publicRpcEndpoints: { [key: number]: string } = {\n  8453: 'https://base.llamarpc.com',\n  84532: 'https://sepolia.base.org',\n  42161: 'https://arbitrum.llamarpc.com',\n  421614: 'https://sepolia-rollup.arbitrum.io/rpc',\n};\n\n// Logger constants\nexport type LOGGER_MESSAGE_TYPE = 'json' | 'pretty' | 'hidden';\n\n// 0: silly, 1: trace, 2: debug, 3: info, 4: warn, 5: error, 6: fatal\nexport const DEFAULT_LOGGER_LEVEL = 4; // https://tslog.js.org/#/?id=highlights to see more levels\nexport const CUSTOM_DECIMALS: Record<number, Record<MarketIdOrName, number>> = {\n  [SUPPORTED_CHAINS.ARBITUM_SEPOLIA]: {\n    2: 6,\n    USDC: 6,\n  },\n  [SUPPORTED_CHAINS.ARBITRUM]: {\n    2: 6,\n    USDC: 6,\n  },\n  [SUPPORTED_CHAINS.BASE_SEPOLIA]: {\n    1: 6,\n    USDC: 6,\n  },\n  [SUPPORTED_CHAINS.BASE]: {\n    1: 6,\n    USDC: 6,\n  },\n};\n","export const SYMBOL_TO_PYTH_FEED = new Map<string, string>([\n  // Markets\n  ['BTC', '0xc9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33'],\n  ['SOL', '0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d'],\n  ['WIF', '0x4ca4beeca86f0d164160323817a4e42b10010a724c2217c6ee41b54cd4cc61fc'],\n  ['ETH', '0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace'],\n  ['AAVE', '0x2b9ab1e972a281585084148ba1389800799bd4be63b957507db1349314e47445'],\n  ['ADA', '0x2a01deaec9e51a579277b34b122399984d0bbf57e2458a7e42fecd2829867a0d'],\n  ['ARB', '0x3fa4252848f9f0a1480be62745a4629d9eb1322aebab8a791e344b3b9c1adcf5'],\n  ['AVAX', '0x93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7'],\n  ['BCH', '0x3dd2b63686a450ec7290df3a1e0b583c0481f651351edfa7636f39aed55cf8a3'],\n  ['BNB', '0x2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f'],\n  ['CRV', '0xa19d04ac696c7a6616d291c7e5d1377cc8be437c327b75adb5dc1bad745fcae8'],\n  ['DOGE', '0xdcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c'],\n  ['DYDX', '0x6489800bb8974169adfe35937bf6736507097d13c190d760c557108c7e93a81b'],\n  ['GMX', '0xb962539d0fcb272a494d65ea56f94851c2bcf8823935da05bd628916e2e9edbf'],\n  ['LINK', '0x8ac0c70fff57e9aefdf5edf44b51d62c2d433653cbb2cf5cc06bb115af04d221'],\n  ['LTC', '0x6e3f3fa8253588df9326580180233eb791e03b443a3ba7a1d892e73874e19a54'],\n  ['MKR', '0x9375299e31c0deb9c6bc378e6329aab44cb48ec655552a70d4b9050346a30378'],\n  ['NEAR', '0xc415de8d2eba7db216527dff4b60e8f3a5311c740dadb233e13e12547e226750'],\n  ['OP', '0x385f64d993f7b77d8182ed5003d97c60aa3361f3cecfe711544d2d59165e9bdf'],\n  ['ORDI', '0x193c739db502aadcef37c2589738b1e37bdb257d58cf1ab3c7ebc8e6df4e3ec0'],\n  ['PEPE', '0xd69731a2e74ac1ce884fc3890f7ee324b6deb66147055249568869ed700882e4'],\n  ['POL', '0xffd11c5a1cfd42f80afb2df4d9f264c15f956d68153335374ec10722edd70472'],\n  ['PYTH', '0x0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff'],\n  ['RUNE', '0x5fcf71143bb70d41af4fa9aa1287e2efd3c5911cee59f909f915c9f61baacb1e'],\n  ['SHIB', '0xf0d57deca57b3da2fe63a493f4c25925fdfd8edf834b20f93e1f84dbd1504d4a'],\n  ['STX', '0xec7a775f46379b5e943c3526b1c8d54cd49749176b0b98e02dde68d1bd335c17'],\n  ['TIA', '0x09f7c1d7dfbb7df2b8fe3d3d87ee94a2259d212da4f30c1f0540d066dfa44723'],\n  ['UNI', '0x78d185a741d07edb3412b09008b7c5cfb9bbbd7d568bf00ba737b456ba171501'],\n  ['XLM', '0xb7a8eba68a997cd0210c2e1e4ee811ad2d174b3611c22d9ebf16f4cb7e9ba850'],\n  ['XRP', '0xec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8'],\n  ['ATOM', '0xb00b60f88b03a6a625a8d1c048c3f66653edf217439983d037e7222c4e612819'],\n  ['BLUR', '0x856aac602516addee497edf6f50d39e8c95ae5fb0da1ed434a8c2ab9c3e877e9'],\n  ['BOME', '0x30e4780570973e438fdb3f1b7ad22618b2fc7333b65c7853a7ca144c39052f7a'],\n  ['BONK', '0x72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419'],\n  ['COMP', '0x4a8e42861cabc5ecb50996f92e7cfa2bce3fd0a2423b0c44c9b423fb2bd25478'],\n  ['DOT', '0xca3eed9b267293f6595901c734c7525ce8ef49adafe8284606ceb307afa2ca5b'],\n  ['EIGEN', '0xc65db025687356496e8653d0d6608eec64ce2d96e2e28c530e574f0e4f712380'],\n  ['ENA', '0xb7910ba7322db020416fcac28b48c01212fd9cc8fbcbaf7d30477ed8605f6bd4'],\n  ['EOS', '0x06ade621dbc31ed0fc9255caaab984a468abe84164fb2ccc76f02a4636d97e31'],\n  ['ETC', '0x7f5cc8d963fc5b3d2ae41fe5685ada89fd4f14b435f8050f28c7fd409f40c2d8'],\n  ['ETHBTC', '0xc96458d393fe9deb7a7d63a0ac41e2898a67a7750dbd166673279e06c868df0a'],\n  ['ETHFI', '0xb27578a9654246cb0a2950842b92330e9ace141c52b63829cc72d5c45a5a595a'],\n  ['FIL', '0x150ac9b959aee0051e4091f0ef5216d941f590e1c5e7f91cf7635b5c11628c0e'],\n  ['FLOW', '0x2fb245b9a84554a0f15aa123cbb5f64cd263b59e9a87d80148cbffab50c69f30'],\n  ['FTM', '0x5c6c0d2386e3352356c3ab84434fafb5ea067ac2678a38a338c4a69ddc4bdb0c'],\n  ['FXS', '0x735f591e4fed988cd38df74d8fcedecf2fe8d9111664e0fd500db9aa78b316b1'],\n  ['GALA', '0x0781209c28fda797616212b7f94d77af3a01f3e94a5d421760aef020cf2bcb51'],\n  ['GRT', '0x4d1f8dae0d96236fb98e8f47471a366ec3b1732b47041781934ca3a9bb2f35e7'],\n  ['ICP', '0xc9907d786c5821547777780a1e4f89484f3417cb14dd244f2b0a34ea7a554d67'],\n  ['IMX', '0x941320a8989414874de5aa2fc340a75d5ed91fdff1613dd55f83844d52ea63a2'],\n  ['INJ', '0x7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592'],\n  ['IO', '0x82595d1509b770fa52681e260af4dda9752b87316d7c048535d8ead3fa856eb1'],\n  ['JTO', '0xb43660a5f790c69354b0729a5ef9d50d68f1df92107540210b9cccba1f947cc2'],\n  ['JUP', '0x0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996'],\n  ['LDO', '0xc63e2a7f37a04e5e614c07238bedb25dcc38927fba8fe890597a593c0b2fa4ad'],\n  ['MEME', '0xcd2cee36951a571e035db0dfad138e6ecdb06b517cc3373cd7db5d3609b7927c'],\n  ['MEW', '0x514aed52ca5294177f20187ae883cec4a018619772ddce41efcc36a6448f5d5d'],\n  ['NOT', '0x75ec6f04d4bded6afdc1440689be4402dd1e23d2ff2c21e081871eb2739ceb36'],\n  ['PENDLE', '0x9a4df90b25497f66b1afb012467e316e801ca3d839456db028892fe8c70c8016'],\n  ['PEOPLE', '0xb7fe919d83815ca6074c82a3286b1cd6ffb7d3136e323cd2b1ef706cfc7e5945'],\n  ['POPCAT', '0xb9312a7ee50e189ef045aa3c7842e099b061bd9bdc99ac645956c3b660dc8cce'],\n  ['RENDER', '0x3d4a2bd9535be6ce8059d75eadeba507b043257321aa544717c56fa19b49e35d'],\n  ['SATS', '0x40440d18fb5ad809e2825ce7dfc035cfa57135c13062a04addafe0c7f54425e0'],\n  ['SEI', '0x53614f1cb0c031d4af66c04cb9c756234adad0e1cee85303795091499a4084eb'],\n  ['SNX', '0x39d020f60982ed892abbcd4a06a276a9f9b7bfbce003204c110b6e488f502da3'],\n  ['STRK', '0x6a182399ff70ccf3e06024898942028204125a819e519a335ffa4579e66cd870'],\n  ['SUI', '0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744'],\n  ['SUSHI', '0x26e4f737fde0263a9eea10ae63ac36dcedab2aaf629261a994e1eeb6ee0afe53'],\n  ['TAO', '0x410f41de235f2db824e562ea7ab2d3d3d4ff048316c61d629c0b93f58584e1af'],\n  ['TON', '0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026'],\n  ['TRX', '0x67aed5a24fdad045475e7195c98a98aea119c763f272d4523f5bac93a4f33c2b'],\n  ['W', '0xeff7446475e218517566ea99e72a4abec2e1bd8498b43b7d8331e29dcb059389'],\n  ['WLD', '0xd6835ad1f773de4a378115eb6824bd0c0e42d84d1c84d9750e853fb6b6c7794a'],\n  ['YFI', '0x425f4b198ab2504936886c1e93511bb6720fbcf2045a4f3c0723bb213846022f'],\n  ['ZRO', '0x3bd860bea28bf982fa06bcf358118064bb114086cc03993bd76197eaab0b8018'],\n  ['ALGO', '0xfa17ceaf30d19ba51112fdcc750cc83454776f47fb0112e4af07f15f4bb1ebc0'],\n  ['APT', '0x03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5'],\n  ['ARKM', '0x7677dd124dee46cfcd46ff03cf405fb0ed94b1f49efbea3444aadbda939a7ad3'],\n  ['AXL', '0x60144b1d5c9e9851732ad1d9760e3485ef80be39b984f6bf60f82b28a2b7f126'],\n  ['AXS', '0xb7e3904c08ddd9c0c10c6d207d390fd19e87eb6aab96304f571ed94caebdefa0'],\n  ['BAL', '0x07ad7b4a7662d19a6bc675f6b467172d2f3947fa653ca97555a9b20236406628'],\n  ['GOAT', '0xf7731dc812590214d3eb4343bfb13d1b4cfa9b1d4e020644b5d5d8e07d60c66c'],\n  ['MOODENG', '0xffff73128917a90950cd0473fd2551d7cd274fd5a6cc45641881bbcc6ee73417'],\n  ['SAFE', '0x7b3576858506a94fad3a9cc55e32934f0c3931150fe3a3c7b83558dbae5b8e38'],\n  ['PNUT', '0x116da895807f81f6b5c5f01b109376e7f6834dc8b51365ab7cdfa66634340e54'],\n  ['CAT', '0xdf7b724fae4b9ecfd6081effb1ea3bb3b5c250c3641cf903b4d8fb10f4f452df'],\n  ['DEGEN', '0x9c93e4a22c56885af427ac4277437e756e7ec403fbc892f975d497383bb33560'],\n  ['SLERF', '0x1a483c4a63876d286991ac0d6e090298db42e88c3826b6e0cff89daca498eed5'],\n  ['AERO', '0x9db37f4d5654aad3e37e2e14ffd8d53265fb3026d1d8f91146539eebaa2ef45f'],\n  ['CHILLGUY', '0xd98869edbb4a0d2803dc1054405bceb1ddc546bfc9a3d0e31bb0e0448e6181e1'],\n  ['MORPHO', '0x5b2a4c542d4a74dd11784079ef337c0403685e3114ba0d9909b5c7a7e06fdc42'],\n  ['SOLETH', '0xde87506dabfadbef89af2d5d796ebae80ddaea240fc7667aa808fce3629cd8fb'],\n  // Collaterals\n  ['USDC', '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a'],\n  ['USDE', '0x6ec879b1e9963de5ee97e9c8710b742d6228252a5e2ca12d4ae81d7fe5ee8c5d'],\n  ['DAI', '0xb0948a5e5313200c632b51bb5ca32f6de0d36e9950a942d19751e833f70dabfd'],\n]);\n"],"mappings":";AAAA,OAAO,WAA8B;;;ACM9B,IAAM,uBAAuB;AAC7B,IAAM,uBAAuB;;;ACPpC,SAAc,mBAAmB;AA+B1B,IAAM,kBAAkE;AAAA,EAC7E,6BAAiC,GAAG;AAAA,IAClC,GAAG;AAAA,IACH,MAAM;AAAA,EACR;AAAA,EACA,qBAA0B,GAAG;AAAA,IAC3B,GAAG;AAAA,IACH,MAAM;AAAA,EACR;AAAA,EACA,yBAA8B,GAAG;AAAA,IAC/B,GAAG;AAAA,IACH,MAAM;AAAA,EACR;AAAA,EACA,gBAAsB,GAAG;AAAA,IACvB,GAAG;AAAA,IACH,MAAM;AAAA,EACR;AACF;;;AChDO,IAAM,sBAAsB,oBAAI,IAAoB;AAAA;AAAA,EAEzD,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,MAAM,oEAAoE;AAAA,EAC3E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,SAAS,oEAAoE;AAAA,EAC9E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,UAAU,oEAAoE;AAAA,EAC/E,CAAC,SAAS,oEAAoE;AAAA,EAC9E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,MAAM,oEAAoE;AAAA,EAC3E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,UAAU,oEAAoE;AAAA,EAC/E,CAAC,UAAU,oEAAoE;AAAA,EAC/E,CAAC,UAAU,oEAAoE;AAAA,EAC/E,CAAC,UAAU,oEAAoE;AAAA,EAC/E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,SAAS,oEAAoE;AAAA,EAC9E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,KAAK,oEAAoE;AAAA,EAC1E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,WAAW,oEAAoE;AAAA,EAChF,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAAA,EAC5E,CAAC,SAAS,oEAAoE;AAAA,EAC9E,CAAC,SAAS,oEAAoE;AAAA,EAC9E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,YAAY,oEAAoE;AAAA,EACjF,CAAC,UAAU,oEAAoE;AAAA,EAC/E,CAAC,UAAU,oEAAoE;AAAA;AAAA,EAE/E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,QAAQ,oEAAoE;AAAA,EAC7E,CAAC,OAAO,oEAAoE;AAC9E,CAAC;;;AH/FD,SAAS,iCAA4C;AAErD,SAAS,mBAAwB;AAY1B,IAAM,OAAN,MAAW;AAAA,EAUhB,YAAY,cAA4B,YAAyB;AA6EjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAO,wBAAwB,OAAO,UAAoB,gBAAwC;AAChG,UAAI,kBAA4B,CAAC;AAEjC,UAAI;AACF,cAAM,WAAW,MAAM,KAAK,WAAW,IAAI,qBAAqB,WAAW,IAAI;AAAA,UAC7E,QAAQ;AAAA,YACN,KAAK;AAAA,YACL,UAAU;AAAA,UACZ;AAAA,QACF,CAAC;AACD,YAAI,SAAS,UAAU,KAAK;AAC1B,gBAAM,eAAe,SAAS;AAC9B,4BAAkB,aAAa,QAAQ,QAAQ,CAAC;AAAA,QAClD,OAAO;AACL,gBAAM,IAAI,MAAM,+BAA+B;AAAA,QACjD;AAAA,MACF,SAAS,OAAO;AACd,aAAK,IAAI,OAAO,MAAM,iCAAiC,KAAK;AAC5D,cAAM;AAAA,MACR;AACA,YAAM,aAAa,gBAAgB,IAAI,CAAC,QAAQ,OAAO,GAAG;AAC1D,aAAO;AAAA,IACT;AAlGE,SAAK,MAAM;AACX,SAAK,aAAa,CAAC;AACnB,SAAK,aAAa;AAElB,QAAI;AACJ,QAAI,cAAc,QAAW;AAC3B,qBAAe,WAAW,gBAAgB;AAAA,IAC5C,OAAO;AACL,qBAAe;AAAA,IACjB;AAEA,SAAK,iBAAiB,IAAI,0BAA0B,cAAc;AAAA,MAChE,SAAS;AAAA,IACX,CAAC;AAGD,SAAK,eAAe,oBAAI,IAAoB;AAAA,EAC9C;AAAA,EAEA,MAAM,WAAW;AACf,SAAK,aAAa,MAAM,KAAK,cAAc;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAwC;AAC5C,QAAI,qBAAqB,qBAAqB;AAE9C,QAAI,KAAK,cAAc,UAAa,KAAK,WAAW,gBAAgB,QAAW;AAC7E,4BAAsB;AAAA,IACxB,OAAO;AACL,4BAAsB,KAAK,WAAW;AACtC,4BAAsB,KAAK,WAAW;AACtC,4BAAsB,KAAK,WAAW;AAAA,IACxC;AAEA,QAAI;AACF,UAAI,qBAAqB;AACvB,YAAI,uBAAuB,qBAAqB;AAE9C,iBAAO,MAAM,OAAO;AAAA,YAClB,SAAS;AAAA,YACT,MAAM;AAAA,cACJ,UAAU;AAAA,cACV,UAAU;AAAA,YACZ;AAAA,YACA,SAAS,KAAK,YAAY,YAAY;AAAA,UACxC,CAAC;AAAA,QACH,OAAO;AAEL,iBAAO,MAAM,OAAO;AAAA,YAClB,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AAEL,eAAO,MAAM,OAAO;AAAA,UAClB,SAAS;AAAA,UACT,SAAS,KAAK,YAAY,YAAY;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,sCAAsC,KAAK;AACzD,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsCO,mBAAmB,mBAAyD;AACjF,sBAAkB,QAAQ,CAAC,SAAS;AAClC,WAAK,aAAa,IAAI,KAAK,QAAQ,KAAK,MAAM;AAAA,IAChD,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,gBAAgB,SAAkD;AAC7E,UAAM,YAAY,MAAM,KAAK,eAAe,oBAAoB,OAAO;AACvE,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,oBAAoB,SAAmB;AAClD,UAAM,UAAiB,CAAC;AACxB,YAAQ,QAAQ,CAAC,gBAAgB;AAC/B,YAAM,SAAS,KAAK,aAAa,IAAI,WAAW;AAChD,UAAI,UAAU,QAAW;AACvB,gBAAQ,KAAK,MAAM;AAAA,MACrB;AAAA,IACF,CAAC;AAED,WAAO,KAAK,gBAAgB,OAAO;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,wBAAwB,SAAgC;AACnE,UAAM,kBAAkB,MAAM,KAAK,eAAe,wBAAwB,OAAO;AACjF,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,kBAAkB,SAAc,aAAuC;AAClF,QAAI;AAGJ,QAAI,eAAe,QAAW;AAC5B,kBAAY,MAAM,KAAK,eAAe,aAAa,SAAS,WAAW;AAAA,IACzE,OAAO;AACL,YAAMA,SAAQ,MAAM,KAAK,eAAe,oBAAoB,CAAC,OAAO,CAAC;AACrE,UAAIA,UAAS,UAAaA,OAAM,SAAS,GAAG;AAC1C,oBAAYA,OAAM,CAAC;AAAA,MACrB,OAAO;AACL,cAAM,IAAI,MAAM,iCAAiC;AAAA,MACnD;AAAA,IACF;AAEA,UAAM,iBAAiB,UAAU,kBAAkB;AACnD,UAAM,QAAQ,OAAO,YAAY,OAAO,eAAe,KAAK,GAAG,KAAK,IAAI,eAAe,IAAI,CAAC,CAAC;AAC7F,QAAI,SAAS,GAAG;AACd,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,wBAAwB,QAAgB,aAAuC;AAC1F,UAAM,SAAS,KAAK,aAAa,IAAI,MAAM;AAC3C,QAAI,UAAU,QAAW;AACvB,aAAO,KAAK,kBAAkB,QAAe,WAAW;AAAA,IAC1D,OAAO;AACL,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,2BAAgD;AACrD,WAAO;AAAA,EACT;AACF;","names":["price"]}