avantis-trader-sdk 0.6.0__py3-none-any.whl → 0.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addTradingContract","inputs":[{"name":"__trading","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"applyReferral","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_fees","type":"uint256","internalType":"uint256"},{"name":"_leveragedPosition","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blockOI","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"callbacks","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claimFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRebate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dev","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"devFeesUSDC","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"firstEmptyOpenLimitIndex","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"firstEmptyTradeIndex","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"forceUnregisterPendingMarketOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getOpenLimitOrder","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.OpenLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getOpenLimitOrders","inputs":[],"outputs":[{"name":"","type":"tuple[]","internalType":"struct ITradingStorage.OpenLimitOrder[]","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingOrderIds","inputs":[{"name":"_trader","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getUsdOI","inputs":[],"outputs":[{"name":"","type":"uint256[2]","internalType":"uint256[2]"}],"stateMutability":"view"},{"type":"function","name":"gov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"govFeesUSDC","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"govTreasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"handleDevGovFees","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_leveragedPositionSize","type":"uint256","internalType":"uint256"},{"name":"_usdc","type":"bool","internalType":"bool"},{"name":"_fullFee","type":"bool","internalType":"bool"},{"name":"_buy","type":"bool","internalType":"bool"}],"outputs":[{"name":"feeAfterRebate","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"hasOpenLimitOrder","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isTradingContract","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxOpenInterest","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxPendingMarketOrders","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxTradesPerPair","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openInterestUSDC","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openLimitOrderIds","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openLimitOrders","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openLimitOrdersCount","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTrades","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"openTradesCount","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTradesInfo","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.TradeInfo","components":[{"name":"openInterestUSDC","type":"uint256","internalType":"uint256"},{"name":"tpLastUpdated","type":"uint256","internalType":"uint256"},{"name":"slLastUpdated","type":"uint256","internalType":"uint256"},{"name":"beingMarketClosed","type":"bool","internalType":"bool"},{"name":"lossProtection","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"pairOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairTraders","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pairTradersArray","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"pairTradersId","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingMarketCloseCount","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingMarketOpenCount","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingOrderIds","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingOrderIdsCount","inputs":[{"name":"_trader","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"priceAggregator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPriceAggregator"}],"stateMutability":"view"},{"type":"function","name":"rebates","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"referral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IReferral"}],"stateMutability":"view"},{"type":"function","name":"registerPartialTrade","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"_amountReduced","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeTradingContract","inputs":[{"name":"__trading","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reqIDpendingLimitOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.PendingLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"orderType","type":"uint8","internalType":"enum ITradingStorage.LimitOrder"}]}],"stateMutability":"view"},{"type":"function","name":"reqIDpendingMarketOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.PendingMarketOrder","components":[{"name":"trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"wantedPrice","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"requestGov","inputs":[{"name":"_gov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestedGov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setCallbacks","inputs":[{"name":"__callbacks","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDev","inputs":[{"name":"_dev","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGov","inputs":[{"name":"_gov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGovTreasury","inputs":[{"name":"_govTreasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxPendingMarketOrders","inputs":[{"name":"_maxPendingMarketOrders","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxTradesPerPair","inputs":[{"name":"_maxTradesPerPair","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceAggregator","inputs":[{"name":"_aggregator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setReferral","inputs":[{"name":"_refferal","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTrading","inputs":[{"name":"__trading","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTvlCap","inputs":[{"name":"_newCap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUSDC","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setVaultManager","inputs":[{"name":"_vaultManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storeOpenLimitOrder","inputs":[{"name":"o","type":"tuple","internalType":"struct ITradingStorage.OpenLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storePendingLimitOrder","inputs":[{"name":"_limitOrder","type":"tuple","internalType":"struct ITradingStorage.PendingLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"orderType","type":"uint8","internalType":"enum ITradingStorage.LimitOrder"}]},{"name":"_orderId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storePendingMarketOrder","inputs":[{"name":"_order","type":"tuple","internalType":"struct ITradingStorage.PendingMarketOrder","components":[{"name":"trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"wantedPrice","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"}]},{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_open","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storeTrade","inputs":[{"name":"_trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"_tradeInfo","type":"tuple","internalType":"struct ITradingStorage.TradeInfo","components":[{"name":"openInterestUSDC","type":"uint256","internalType":"uint256"},{"name":"tpLastUpdated","type":"uint256","internalType":"uint256"},{"name":"slLastUpdated","type":"uint256","internalType":"uint256"},{"name":"beingMarketClosed","type":"bool","internalType":"bool"},{"name":"lossProtection","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalOI","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"trading","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferUSDC","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tvlCap","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"unregisterOpenLimitOrder","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterPendingLimitOrder","inputs":[{"name":"_order","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterPendingMarketOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_open","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterTrade","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOpenLimitOrder","inputs":[{"name":"_o","type":"tuple","internalType":"struct ITradingStorage.OpenLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateSl","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newSl","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTp","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newTp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTrade","inputs":[{"name":"_t","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"usdOI","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"usdc","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vaultManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVaultManager"}],"stateMutability":"view"},{"type":"function","name":"walletOI","inputs":[{"name":"_trader","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AddressUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FeesCharged","inputs":[{"name":"_trader","type":"address","indexed":false,"internalType":"address"},{"name":"_pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_buy","type":"bool","indexed":false,"internalType":"bool"},{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MarketOpenCanceled","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NumberUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NumberUpdatedPair","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OIUpdated","inputs":[{"name":"_open","type":"bool","indexed":false,"internalType":"bool"},{"name":"_long","type":"bool","indexed":false,"internalType":"bool"},{"name":"_pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_leveragedPos","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SupportedTokenAdded","inputs":[{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TradeReferred","inputs":[{"name":"_trader","type":"address","indexed":false,"internalType":"address"},{"name":"_referrer","type":"address","indexed":false,"internalType":"address"},{"name":"_leveragedPosition","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_traderFeePostDiscount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_traderFeeDiscount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_referrerRebate","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TradingContractAdded","inputs":[{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TradingContractRemoved","inputs":[{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61531b80620000f36000396000f3fe608060405234801561001057600080fd5b506004361061048a5760003560e01c80639c8912f111610262578063d477f05f11610151578063ecf56a1f116100ce578063f65d9dbe11610092578063f65d9dbe14610bd4578063f7b3c6fd14610bdd578063f823e2ae14610c06578063fdb153e214610c19578063fe0fc8d614610c2c578063ff12673a14610c3f57600080fd5b8063ecf56a1f14610b4a578063eda00d5414610b5d578063f0cb9b1114610b8e578063f169429214610ba1578063f4ccf54e14610bb457600080fd5b8063dc6638f411610115578063dc6638f414610af8578063dcdf339a14610b00578063dd0290e214610b13578063e3cbe3a714610b26578063ec44acf214610b3957600080fd5b8063d477f05f14610a8c578063d5dabd7514610a9f578063d775d54814610abf578063d8137fe814610ad2578063dc2123ff14610ae557600080fd5b8063b543503e116101df578063bcc9f1d3116101a3578063bcc9f1d314610a43578063cab9458014610a56578063cda3948f14610a69578063cfad57a214610a71578063d294f09314610a8457600080fd5b8063b543503e146109a9578063b7682d54146109bc578063b833966f146109e7578063b87cb1da146109fa578063b8878a2c14610a2357600080fd5b8063a553906c11610226578063a553906c14610932578063ae8ac94e14610945578063b222cb3814610958578063b3e089a214610983578063b4b0f5671461099657600080fd5b80639c8912f1146108ae5780639cb87f23146108d95780639e5914da146108ec578063a3544181146108ff578063a3a80ffe1461091257600080fd5b80635b621e321161037e5780638049fde7116102fb5780638c8ff1d5116102bf5780638c8ff1d5146107f15780638ecf3f5a1461084857806390d112b91461085d57806391cca3db1461087057806397e7995a1461088357600080fd5b80638049fde7146107a55780638129fc1c146107ae5780638a0bd702146107b65780638a4adf24146107cb5780638b83351a146107de57600080fd5b80636d81d981116103425780636d81d98114610711578063700ff359146107445780637ada84831461076c5780637eed1d301461077f5780637fdb96f31461079257600080fd5b80635b621e321461068b5780635c76ac9e1461069e5780635fbfe8cc146106be57806366ac654d146106de5780636c7be83a146106f157600080fd5b806334df85401161040c5780634415b369116103d05780634415b3691461061e578063443295dc1461064957806344d44f5a146106525780635070e8371461066557806350bb25781461067857600080fd5b806334df8540146105dd5780633c6d6fa0146105e65780633e413bee146105ef5780633f23fa1a146106025780633f64d0361461060b57600080fd5b80631c8636b4116104535780631c8636b414610507578063292c1617146105285780632a9a96671461053b5780633078fff51461054e578063321495921461056757600080fd5b8062b127831461048f57806305f3c6ad146104b95780630d32c907146104ce57806312d43a51146104e15780631441a5a9146104f4575b600080fd5b6002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6104cc6104c736600461485d565b610c52565b005b6104cc6104dc366004614d25565b610ce5565b600d5461049c906001600160a01b031681565b60055461049c906001600160a01b031681565b61051a6105153660046148bb565b6110c7565b6040519081526020016104b0565b61051a6105363660046148bb565b6110f2565b61051a61054936600461491c565b6111aa565b60005461049c906201000090046001600160a01b031681565b61057a610575366004614d25565b611511565b604080516001600160a01b03909d168d5260208d019b909b52998b019890985260608a0196909652931515608089015260a088019290925260c087015260e0860152610100850152610120840152610140830152610160820152610180016104b0565b61051a600a5481565b61051a600b5481565b60035461049c906001600160a01b031681565b61051a60095481565b6104cc61061936600461498c565b61158f565b61051a61062c3660046148bb565b601f60209081526000928352604080842090915290825290205481565b61051a60085481565b61051a6106603660046148bb565b61167e565b6104cc61067336600461485d565b611706565b6104cc61068636600461485d565b6117a7565b6104cc61069936600461485d565b6117f3565b6106b16106ac36600461485d565b61186e565b6040516104b09190614fc8565b6106d16106cc366004614d25565b6118da565b6040516104b09190614f07565b600c5461049c906001600160a01b031681565b6107046106ff366004614d25565b611945565b6040516104b09190615042565b61073461071f36600461485d565b60216020526000908152604090205460ff1681565b60405190151581526020016104b0565b6107576107523660046148e7565b6119e9565b604080519283526020830191909152016104b0565b6104cc61077a366004614d25565b611b68565b61051a61078d366004614d25565b611bbc565b6104cc6107a036600461498c565b611bd3565b61051a60075481565b6104cc611d02565b6107be611e36565b6040516104b09190614f54565b60045461049c906001600160a01b031681565b6104cc6107ec36600461487a565b611f1a565b6108046107ff3660046148e7565b611f7b565b6040516104b09190600060a0820190508251825260208301516020830152604083015160408301526060830151151560608301526080830151608083015292915050565b610850612022565b6040516104b09190614f97565b6104cc61086b3660046148e7565b61205c565b600e5461049c906001600160a01b031681565b61051a6108913660046148bb565b601860209081526000928352604080842090915290825290205481565b61051a6108bc3660046148bb565b601c60209081526000928352604080842090915290825290205481565b61051a6108e7366004614dc0565b612348565b6104cc6108fa36600461485d565b61236c565b6104cc61090d36600461498c565b6123f5565b6109256109203660046148e7565b612524565b6040516104b091906150d2565b6104cc61094036600461485d565b6125dd565b6104cc610953366004614a1e565b612665565b61051a610966366004614dc0565b602360209081526000928352604080842090915290825290205481565b6104cc61099136600461485d565b612776565b6104cc6109a43660046148e7565b6127fb565b6104cc6109b736600461485d565b612ae7565b61051a6109ca3660046148bb565b601d60209081526000928352604080842090915290825290205481565b6104cc6109f5366004614c74565b612b74565b61051a610a0836600461485d565b6001600160a01b031660009081526016602052604090205490565b610a36610a313660046148e7565b612dbe565b6040516104b09190615033565b61051a610a513660046148bb565b612f2f565b6104cc610a64366004614d90565b612f60565b6104cc613235565b6104cc610a7f36600461485d565b61326f565b6104cc61330d565b6104cc610a9a36600461485d565b613372565b610ab2610aad366004614d25565b6133f6565b6040516104b09190615098565b6104cc610acd366004614b64565b6134c4565b6104cc610ae0366004614bd7565b613558565b6104cc610af3366004614d25565b613720565b61051a6137a3565b610734610b0e3660046148e7565b613859565b6104cc610b21366004614d25565b6138f6565b61049c610b34366004614dc0565b613962565b6001546001600160a01b031661049c565b6104cc610b58366004614d25565b61399a565b61051a610b6b3660046148e7565b601760209081526000938452604080852082529284528284209052825290205481565b6104cc610b9c366004614c57565b613a23565b61051a610baf366004614d25565b613aaa565b61051a610bc236600461485d565b60226020526000908152604090205481565b61051a60065481565b61051a610beb36600461485d565b6001600160a01b03166000908152601b602052604090205490565b6104cc610c1436600461485d565b613ac8565b6104cc610c27366004614a37565b613b46565b6104cc610c3a36600461485d565b613e1f565b600f5461049c906001600160a01b031681565b600d546001600160a01b03163314610c6957600080fd5b6001600160a01b038116610c7c57600080fd5b600f80546001600160a01b0319166001600160a01b03831690811790915560408051818152600b918101919091526a676f76547265617375727960a81b606082015260208101919091526000805160206152c6833981519152906080015b60405180910390a150565b3360009081526021602052604090205460ff16610d0157600080fd5b6000805460405163d09ef24160e01b815260048101849052620100009091046001600160a01b03169063d09ef2419060240160806040518083038186803b158015610d4b57600080fd5b505afa158015610d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d839190614adf565b602090810151600084815260198352604080822081516101e08101835281546001600160a01b031660808201818152600184015460a0840152600284015460c0840152600384015460e084015260048401546101008401526005840154610120840152600684015460ff1615156101408401526007840154610160840152600884015461018084015260098401546101a0840152600a8401546101c08401528252600b83015482880152600c83015482850152600d909201546060820152908352601b90945281209193505b815481101561104f5784828281548110610e6b57610e6b61528c565b9060005260206000200154141561103d576000846005811115610e9057610e90615260565b1415610ed5578251516001600160a01b03166000908152601c60209081526040808320865183015184529091528120805491610ecb83615218565b9190505550610f50565b8251516001600160a01b03166000908152601d60209081526040808320865183015184529091528120805491610f0a83615218565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff191690555b81548290610f60906001906151d5565b81548110610f7057610f7061528c565b9060005260206000200154828281548110610f8d57610f8d61528c565b906000526020600020018190555081805480610fab57610fab615276565b600082815260208082208301600019908101839055909201909255868252601990526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560068101805460ff19169055600781018290556008810182905560098101829055600a8101829055600b8101829055600c8101829055600d01555b806110478161522f565b915050610e4f565b5081518051608090910151600354611072926001600160a01b0390911691613ea9565b8151805160209182015160408051888152938401919091526001600160a01b03909116917f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c65910160405180910390a250505050565b6001600160a01b03821660009081526015602090815260408083208484529091529020545b92915050565b6000805b6006548110156111a3576001600160a01b0384166000908152601360209081526040808320868452825280832084845290915290206007015461113b578091506111a3565b60065461114982600161517c565b148015611154575081155b1561119b5760405162461bcd60e51b815260206004820152601260248201527113505617d51490511154d7d4915050d2115160721b60448201526064015b60405180910390fd5b6001016110f6565b5092915050565b3360009081526021602052604081205460ff166111c657600080fd5b60008054604051633a100f4d60e01b8152600481018990526024810188905284151560448201526064916402540be40091620100009091046001600160a01b031690633a100f4d90840160206040518083038186803b15801561122857600080fd5b505afa15801561123c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112609190614d3e565b61126a90896151b6565b6112749190615194565b61127e9190615194565b90508361129357611290600282615194565b90505b61129e8882886119e9565b506002546040805163c4493e3760e01b815290519294506000926064926001600160a01b03169163c4493e3791600480830192602092919082900301818887803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113239190614d3e565b61132e9060646151d5565b61133890856151b6565b6113429190615194565b9050600060016064600260009054906101000a90046001600160a01b03166001600160a01b031663c4493e376040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561139a57600080fd5b505af11580156113ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d29190614d3e565b6113dc90876151b6565b6113e69190615194565b901c9050861561140d5760045460035461140d916001600160a01b03918216911684613ea9565b60048054604051635b898b7560e01b8152918201849052600060248301526001600160a01b031690635b898b7590604401600060405180830381600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b5050505080600b6000828254611482919061517c565b9091555081905061149383866151d5565b61149d91906151d5565b600a60008282546114ae919061517c565b9091555050604080516001600160a01b038c168152602081018b9052861515818301526060810186905290517f9921a6a6258398cbe136bac24f80d97ba2b5e4ab8cf2b2d27232d2ae1c78cdd39181900360800190a15050509695505050505050565b6010818154811061152157600080fd5b60009182526020909120600c9091020180546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b909b01546001600160a01b03909a169b5097999698959760ff9095169693959294919390928c565b3360009081526021602052604090205460ff166115ab57600080fd5b6001600160a01b03841660008181526013602090815260408083208784528252808320868452825280832093835260148252808320878452825280832086845290915290206007820154611600575050611678565b8282600301600082825461161491906151d5565b90915550506007820154611629908490613f0c565b81600001600082825461163c91906151d5565b92505081905550611675868661165f856007015487613f0c90919063ffffffff16565b6006860154600587015460009160ff1690613f28565b50505b50505050565b6000805b6006548110156111a357611697848483613859565b6116a3578091506111a3565b6006546116b182600161517c565b1480156116bc575081155b156116fe5760405162461bcd60e51b815260206004820152601260248201527113505617d31253525514d7d4915050d2115160721b6044820152606401611192565b600101611682565b600d546001600160a01b0316331461171d57600080fd5b6001600160a01b03811661173057600080fd5b600080546001600160a01b038316620100000262010000600160b01b03199091161790556040516000805160206152c683398151915290610cda9083906040808252600f908201526e383934b1b2a0b3b3b932b3b0ba37b960891b60608201526001600160a01b0391909116602082015260800190565b600d546001600160a01b031633146117be57600080fd5b6001600160a01b0381166117d157600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331461180a57600080fd5b6001600160a01b03811661181d57600080fd5b6001600160a01b038116600081815260216020908152604091829020805460ff1916905590519182527ff9cf924d7d98e6e0a27ec523cd7214b0bbdfaba197018b33b41a702f5238190e9101610cda565b6001600160a01b0381166000908152601b60209081526040918290208054835181840281018401909452808452606093928301828280156118ce57602002820191906000526020600020905b8154815260200190600101908083116118ba575b50505050509050919050565b6000818152601e60209081526040918290208054835181840281018401909452808452606093928301828280156118ce57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161191c5750505050509050919050565b61196d6040805160808101825260008082526020820181905291810182905290606082015290565b6000828152601a6020908152604091829020825160808101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600380830154919291606084019160ff909116908111156119cf576119cf615260565b60038111156119e0576119e0615260565b90525092915050565b33600090815260216020526040812054819060ff16611a0757600080fd5b60055460405163ce18b98d60e01b81526001600160a01b03878116600483015260248201879052600092839283929091169063ce18b98d9060440160606040518083038186803b158015611a5a57600080fd5b505afa158015611a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a929190614d57565b919450925090506001600160a01b03821615611b58576001600160a01b03821660009081526022602052604081208054839290611ad090849061517c565b909155507f3a864fe7f731bdc590ef080879dd65d46fc853c3348e4c750964677d111fe2a7905088838886611b05818d6151d5565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a0810183905260c00160405180910390a1611b4c81846151d5565b94509250611b60915050565b869450925050505b935093915050565b3360009081526021602052604090205460ff16611b8457600080fd5b6000908152601a6020526040812080546001600160a01b0319168155600181018290556002810191909155600301805460ff19169055565b60118160028110611bcc57600080fd5b0154905081565b3360009081526021602052604090205460ff16611bef57600080fd5b6001600160a01b03841660008181526013602090815260408083208784528252808320868452825280832093835260148252808320878452825280832086845290915290206007820154611c44575050611678565b60025460058301546007840154600685015460405163aee2e44360e01b8152600481019390935260248301919091526044820186905260ff16151560648201526001600160a01b039091169063aee2e44390608401602060405180830381600087803b158015611cb357600080fd5b505af1158015611cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ceb9190614d3e565b600890920182905543600190910155905050505050565b600054610100900460ff1615808015611d225750600054600160ff909116105b80611d3c5750303b158015611d3c575060005460ff166001145b611d9f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611192565b6000805460ff191660011790558015611dc2576000805461ff0019166101001790555b600d80546001600160a01b0319163317905560056006819055600755611dee6402540be400605a6151b6565b6009558015611e33576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610cda565b50565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015611f115760008481526020908190206040805161018081018252600c860290920180546001600160a01b031683526001808201548486015260028201549284019290925260038101546060840152600481015460ff1615156080840152600581015460a0840152600681015460c0840152600781015460e084015260088101546101008401526009810154610120840152600a810154610140840152600b01546101608301529083529092019101611e5a565b50505050905090565b3360009081526021602052604090205460ff16611f3657600080fd5b6001600160a01b038316301415611f6357600354611f5e906001600160a01b03168383613ea9565b505050565b600354611f5e906001600160a01b0316848484614458565b611faf6040518060a00160405280600081526020016000815260200160008152602001600015158152602001600081525090565b506001600160a01b03831660009081526014602090815260408083208584528252808320848452825291829020825160a08101845281548152600182015492810192909252600281015492820192909252600382015460ff161515606082015260049091015460808201525b9392505050565b61202a6146f2565b60408051808201918290529060119060029082845b81548152602001906001019080831161203f575050505050905090565b3360009081526021602052604090205460ff1661207857600080fd5b6001600160a01b038316600081815260136020908152604080832086845282528083208584528252808320938352601482528083208684528252808320858452909152902060078201546120cd575050505050565b8054600683015460058401546120ed928892889260009160ff1690613f28565b6001600160a01b03851660009081526015602090815260408083208784529091529020546001141561225b576001600160a01b0385166000908152601f60209081526040808320878452825280832054601e90925290912080548190612155906001906151d5565b815481106121655761216561528c565b9060005260206000200160009054906101000a90046001600160a01b03168183815481106121955761219561528c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081601f60008385815481106121da576121da61528c565b60009182526020808320909101546001600160a01b03908116845283820194909452604092830182208b8352815282822094909455918a168252601f835280822089835290925290812055805481908061223657612236615276565b600082815260209020810160001990810180546001600160a01b031916905501905550505b6001600160a01b03851660008181526013602090815260408083208884528252808320878452825280832080546001600160a01b031916815560018082018590556002808301869055600380840187905560048085018890556005850188905560068501805460ff19908116909155600786018990556008860189905560098601899055600a909501889055888852601487528588208d895287528588208c89528752858820888155938401889055918301879055820180549093169092550183905592825260158152828220878352905290812080549161233c83615218565b91905055505050505050565b60208052816000526040600020816002811061236357600080fd5b01549150829050565b600d546001600160a01b0316331461238357600080fd5b6001600160a01b03811661239657600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040805181815260089181019190915267149959995c9c985b60c21b606082015260208101919091526000805160206152c683398151915290608001610cda565b3360009081526021602052604090205460ff1661241157600080fd5b6001600160a01b03841660008181526013602090815260408083208784528252808320868452825280832093835260148252808320878452825280832086845290915290206007820154612466575050611678565b600254600583015460078401546006850154604051632d7b7e5560e21b8152600481019390935260248301919091526044820186905260ff16151560648201526001600160a01b039091169063b5edf95490608401602060405180830381600087803b1580156124d557600080fd5b505af11580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d9190614d3e565b600990920182905543600290910155905050505050565b61252c614710565b506001600160a01b039283166000908152601360209081526040808320948352938152838220928252918252829020825161016081018452815490941684526001810154918401919091526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460ff16151560c0830152600781015460e083015260088101546101008301526009810154610120830152600a015461014082015290565b600d546001600160a01b031633146125f457600080fd5b6001600160a01b03811661260757600080fd5b600180546001600160a01b0319166001600160a01b038316908117909155604080518181526007918101919091526674726164696e6760c81b606082015260208101919091526000805160206152c683398151915290608001610cda565b3360009081526021602052604090205460ff1661268157600080fd5b6126a0612691602083018361485d565b82602001358360400135613859565b6126a75750565b600060106017826126bb602086018661485d565b6001600160a01b03168152602080820192909252604090810160009081208684013582528352818120868301358252909252902054815481106127005761270061528c565b90600052602060002090600c020190508160600135816003018190555081608001602081019061273091906149c7565b60048201805460ff191691151591909117905560a0820135600582015560c0820135600682015560e0820135600782015561010090910135600882015543600a90910155565b600d546001600160a01b0316331461278d57600080fd5b6001600160a01b0381166127a057600080fd5b600380546001600160a01b0319166001600160a01b03831690811790915560408051818152600491810191909152637573646360e01b606082015260208101919091526000805160206152c683398151915290608001610cda565b3360009081526021602052604090205460ff1661281757600080fd5b612822838383613859565b61282b57505050565b6001600160a01b0383166000908152601760209081526040808320858452825280832084845290915290205460108054612867906001906151d5565b815481106128775761287761528c565b90600052602060002090600c0201601082815481106128985761289861528c565b6000918252602082208354600c9092020180546001600160a01b0319166001600160a01b03909216919091178155600180840154908201556002808401549082015560038084015490820155600480840154908201805460ff909216151560ff199092169190911790556005808401549082015560068084015490820155600780840154908201556008808401549082015560098084015490820155600a8084015490820155600b928301549201919091556010805483926017929091849081106129655761296561528c565b60009182526020808320600c909202909101546001600160a01b03168352820192909252604001812060108054919291859081106129a5576129a561528c565b90600052602060002090600c02016001015481526020019081526020016000206000601084815481106129da576129da61528c565b600091825260208083206002600c90930201919091015483528281019390935260409182018120939093556001600160a01b03871683526017825280832086845282528083208584529091528120556010805480612a3a57612a3a615276565b60008281526020808220600c6000199094019384020180546001600160a01b031916815560018101839055600281018390556003810183905560048101805460ff191690556005810183905560068101839055600781018390556008810183905560098101839055600a8101839055600b01829055919092556001600160a01b03861682526018815260408083208684529091528120805491612adc83615218565b919050555050505050565b600d546001600160a01b03163314612afe57600080fd5b6001600160a01b038116612b1157600080fd5b600480546001600160a01b0319166001600160a01b03831690811790915560408051818152600c918101919091526b3b30bab63a26b0b730b3b2b960a11b606082015260208101919091526000805160206152c683398151915290608001610cda565b3360009081526021602052604090205460ff16612b9057600080fd5b612ba2826000015183602001516110f2565b604083810191825283516001600160a01b0390811660009081526013602090815283822081880180518452908252848320865184528252848320885181546001600160a01b031916951694851781558151600182015595516002870155606088015160038701556080880151600487015560a0880151600587015560c088015160068701805460ff191691151591909117905560e0880151600787015561010088015160088701556101208801516009870155610140880151600a9096019590955591815260158252828120935181529290528120805491612c838361522f565b909155505081516001600160a01b0316600090815260156020908152604080832082860151845290915290205460011415612d2457602082810180516000908152601e80845260408083205487516001600160a01b039081168552601f87528285208651865287528285209190915593518352908452812085518154600181018355918352939091200180546001600160a01b031916929091169190911790555b60006060820181815283516001600160a01b0316825260146020908152604080842082870180518652908352818520828801518652835293819020855180825592860151600180830191909155918601516002820155925160038401805460ff191691151591909117905560808501516004909301929092558451925160c086015160a0870151612dba95949293929190613f28565b5050565b612e2d60405180610180016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612e38848484613859565b612e4157600080fd5b6001600160a01b03841660009081526017602090815260408083208684528252808320858452909152902054601080549091908110612e8257612e8261528c565b60009182526020918290206040805161018081018252600c90930290910180546001600160a01b0316835260018101549383019390935260028301549082015260038201546060820152600482015460ff1615156080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b9091015461016082015290509392505050565b601b6020528160005260406000208181548110612f4b57600080fd5b90600052602060002001600091509150505481565b3360009081526021602052604090205460ff16612f7c57600080fd5b600082815260196020908152604080832081516101e08101835281546001600160a01b031660808201818152600184015460a0840152600284015460c0840152600384015460e084015260048401546101008401526005840154610120840152600684015460ff1615156101408401526007840154610160840152600884015461018084015260098401546101a0840152600a8401546101c08401528252600b83015482860152600c83015482850152600d909201546060820152908452601b909252822090915b815481101561322e57848282815481106130605761306061528c565b906000526020600020015414156132265783156130b6578251516001600160a01b03166000908152601c602090815260408083208651830151845290915281208054916130ac83615218565b9190505550613131565b8251516001600160a01b03166000908152601d602090815260408083208651830151845290915281208054916130eb83615218565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff191690555b81548290613141906001906151d5565b815481106131515761315161528c565b906000526020600020015482828154811061316e5761316e61528c565b90600052602060002001819055508180548061318c5761318c615276565b600082815260208082208301600019908101839055909201909255868252601990526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560068101805460ff19169055600781018290556008810182905560098101829055600a8101829055600b8101829055600c8101829055600d015550612dba915050565b600101613044565b5050505050565b3360008181526022602052604090205460035461325d926001600160a01b0390911691613ea9565b33600090815260226020526040812055565b600d546001600160a01b0316331461328657600080fd5b6001600160a01b03811661329957600080fd5b600c546001600160a01b038281169116146132b357600080fd5b600d80546001600160a01b0319166001600160a01b038316908117909155604080518181526003918101919091526233b7bb60e91b606082015260208101919091526000805160206152c683398151915290608001610cda565b600d546001600160a01b0316331461332457600080fd5b600f54600b54600354613345926001600160a01b0391821692911690613ea9565b600e54600a54600354613366926001600160a01b0391821692911690613ea9565b6000600a819055600b55565b600d546001600160a01b0316331461338957600080fd5b6001600160a01b03811661339c57600080fd5b600e80546001600160a01b0319166001600160a01b03831690811790915560408051818152600391810191909152623232bb60e91b606082015260208101919091526000805160206152c683398151915290608001610cda565b6133fe614775565b5060009081526019602090815260409182902082516101e08101845281546001600160a01b031660808201908152600183015460a0830152600283015460c0830152600383015460e083015260048301546101008301526005830154610120830152600683015460ff1615156101408301526007830154610160830152600883015461018083015260098301546101a0830152600a8301546101c08301528152600b82015492810192909252600c81015492820192909252600d90910154606082015290565b3360009081526021602052604090205460ff166134e057600080fd5b6000818152601a6020908152604091829020845181546001600160a01b0319166001600160a01b03909116178155908401516001808301919091559184015160028201556060840151600380830180548795919260ff199091169190849081111561354d5761354d615260565b021790555050505050565b3360009081526021602052604090205460ff1661357457600080fd5b8251516001600160a01b039081166000908152601b602090815260408083208054600180820183559185528385200187905586845260198352928190208751805182546001600160a01b0319169616959095178155918401519282019290925582820151600282015560608084015160038301556080840151600483015560a0840151600583015560c084015160068301805460ff191691151591909117905560e084015160078301556101008401516008830155610120840151600983015561014090930151600a82015590850151600c82015590840151600d82015543600b90910155801561369e578251516001600160a01b03166000908152601c602090815260408083208651830151845290915281208054916136948361522f565b9190505550505050565b8251516001600160a01b03166000908152601d602090815260408083208651830151845290915281208054916136d38361522f565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff19166001179055505050565b600d546001600160a01b0316331461373757600080fd5b6000811161374457600080fd5b6006819055604080518181526010918101919091526f36b0bc2a3930b232b9a832b92830b4b960811b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610cda565b600060646402540be400600954600460009054906101000a90046001600160a01b03166001600160a01b0316637b78d7826040518163ffffffff1660e01b815260040160206040518083038186803b1580156137fe57600080fd5b505afa158015613812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138369190614d3e565b61384091906151b6565b61384a9190615194565b6138549190615194565b905090565b60105460009061386b5750600061201b565b6001600160a01b038416600090815260176020908152604080832086845282528083208584529091528120546010805490919081106138ac576138ac61528c565b60009182526020909120600c9091020180549091506001600160a01b0386811691161480156138de5750838160010154145b80156138ed5750828160020154145b95945050505050565b600d546001600160a01b0316331461390d57600080fd5b60098190556040805181815260069181019190915265074766c4361760d41b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610cda565b601e602052816000526040600020818154811061397e57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600d546001600160a01b031633146139b157600080fd5b600081116139be57600080fd5b600781905560408051818152601691810191909152756d617850656e64696e674d61726b65744f726465727360501b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610cda565b3360009081526021602052604090205460ff16613a3f57600080fd5b80516001600160a01b03166000908152601360209081526040808320828501518452825280832081850151845290915290206007810154613a7e575050565b606082015160038201556080820151600482015560a0820151600582015560e082015160079091015550565b60008181526020805260408120600181015490546110ec919061517c565b600d546001600160a01b03163314613adf57600080fd5b6001600160a01b038116613af257600080fd5b6001600160a01b038116600081815260216020908152604091829020805460ff1916600117905590519182527fb692fa98cbec9bd705572b4c7e0927e3f7698e9fe526dcef6f40f3d4d4980ca39101610cda565b3360009081526021602052604090205460ff16613b6257600080fd5b613b748160000151826020015161167e565b604082019081524361014083019081526010805460018082018355600083905285517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672600c90930292830180546001600160a01b0319166001600160a01b0390921691909117905560208601517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67383015593517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67482015560608501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67582015560808501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6768201805460ff191691151591909117905560a08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67782015560c08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67882015560e08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798201556101008501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8201556101208501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b82015591517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67c8301556101608401517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67d9092019190915554613db991906151d5565b81516001600160a01b03908116600090815260176020908152604080832082870180518552908352818420828801518552835281842095909555855190931682526018815282822093518252929092528120805491613e178361522f565b919050555050565b600d546001600160a01b03163314613e3657600080fd5b6001600160a01b038116613e4957600080fd5b600280546001600160a01b0319166001600160a01b038316908117909155604080518181526009918101919091526863616c6c6261636b7360b81b606082015260208101919091526000805160206152c683398151915290608001610cda565b6040516001600160a01b038316602482015260448101829052611f5e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614490565b60006402540be400613f1e83856151b6565b61201b9190615194565b600082613f36576001613f39565b60005b6000878152602080526040902060ff91909116915084613f8b57808260028110613f6557613f6561528c565b01548611613f735785613f88565b808260028110613f8557613f8561528c565b01545b95505b84613fb45785818360028110613fa357613fa361528c565b0154613faf91906151d5565b613fd3565b85818360028110613fc757613fc761528c565b0154613fd3919061517c565b818360028110613fe557613fe561528c565b015584613fff5785600854613ffa91906151d5565b61400d565b8560085461400d919061517c565b6008558461403e576001600160a01b0388166000908152601660205260409020546140399087906151d5565b614062565b6001600160a01b03881660009081526016602052604090205461406290879061517c565b6001600160a01b038916600090815260166020908152604080832093909355898252602381528282204383529052205461409d90879061517c565b6000888152602360209081526040808320438452825280832093909355815483516335b03c1760e01b815293519293620100009091046001600160a01b0316926335b03c1792600480840193919291829003018186803b15801561410057600080fd5b505afa158015614114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141389190614a01565b6040516304d735cf60e51b8152600481018a90529091506001600160a01b03821690639ae6b9e09060240160206040518083038186803b15801561417b57600080fd5b505afa15801561418f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b39190614d3e565b6000898152602360209081526040808320438452909152902054111561421b5760405162461bcd60e51b815260206004820152601760248201527f424c4f434b5f4f495f4c494d49545f42524541434845440000000000000000006044820152606401611192565b604051633c44d0a360e01b8152600481018990526001600160a01b03821690633c44d0a39060240160206040518083038186803b15801561425b57600080fd5b505afa15801561426f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142939190614d3e565b600214156143fb57604051636dc37de360e01b8152600481018990526000906001600160a01b03831690636dc37de39060240160206040518083038186803b1580156142de57600080fd5b505afa1580156142f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431691906149e4565b9050600086614326576000614329565b60015b60ff1690508115614398578761435e57886011866002811061434d5761434d61528c565b015461435991906151d5565b61437e565b88601186600281106143725761437261528c565b015461437e919061517c565b601186600281106143915761439161528c565b01556143f8565b876143c25788601182600281106143b1576143b161528c565b01546143bd91906151d5565b6143e2565b88601182600281106143d6576143d661528c565b01546143e2919061517c565b601182600281106143f5576143f561528c565b01555b50505b604080518715158152861515602082015290810189905260608101889052608081018590527fcadf7ed5daaec5b514975523d89eb6ebbbd5d892bc7a5bbf71c5fca0219754579060a00160405180910390a1505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526116789085906323b872dd60e01b90608401613ed5565b60006144e5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145659092919063ffffffff16565b905080516000148061450657508080602001905181019061450691906149e4565b611f5e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611192565b6060614574848460008561457c565b949350505050565b6060824710156145dd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611192565b600080866001600160a01b031685876040516145f99190614eeb565b60006040518083038185875af1925050503d8060008114614636576040519150601f19603f3d011682016040523d82523d6000602084013e61463b565b606091505b509150915061464c87838387614657565b979650505050505050565b606083156146c35782516146bc576001600160a01b0385163b6146bc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611192565b5081614574565b61457483838151156146d85781518083602001fd5b8060405162461bcd60e51b81526004016111929190615000565b60405180604001604052806002906020820280368337509192915050565b60405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280614788614710565b81526020016000815260200160008152602001600081525090565b80356147ae816152a2565b919050565b80356147ae816152b7565b600061016082840312156147d157600080fd5b6147d96150e1565b90506147e4826147a3565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015261482460c083016147b3565b60c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b60006020828403121561486f57600080fd5b813561201b816152a2565b60008060006060848603121561488f57600080fd5b833561489a816152a2565b925060208401356148aa816152a2565b929592945050506040919091013590565b600080604083850312156148ce57600080fd5b82356148d9816152a2565b946020939093013593505050565b6000806000606084860312156148fc57600080fd5b8335614907816152a2565b95602085013595506040909401359392505050565b60008060008060008060c0878903121561493557600080fd5b8635614940816152a2565b95506020870135945060408701359350606087013561495e816152b7565b9250608087013561496e816152b7565b915060a087013561497e816152b7565b809150509295509295509295565b600080600080608085870312156149a257600080fd5b84356149ad816152a2565b966020860135965060408601359560600135945092505050565b6000602082840312156149d957600080fd5b813561201b816152b7565b6000602082840312156149f657600080fd5b815161201b816152b7565b600060208284031215614a1357600080fd5b815161201b816152a2565b60006101808284031215614a3157600080fd5b50919050565b60006101808284031215614a4a57600080fd5b614a52615119565b614a5b836147a3565b8152602083013560208201526040830135604082015260608301356060820152614a87608084016147b3565b608082015260a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160928301359281019290925250919050565b600060808284031215614af157600080fd5b6040516080810181811067ffffffffffffffff82111715614b2257634e487b7160e01b600052604160045260246000fd5b60405282518152602083015160068110614b3b57600080fd5b6020820152604083810151908201526060830151614b58816152b7565b60608201529392505050565b60008082840360a0811215614b7857600080fd5b6080811215614b8657600080fd5b50614b8f61514b565b8335614b9a816152a2565b808252506020840135602082015260408401356040820152606084013560048110614bc457600080fd5b6060820152946080939093013593505050565b6000806000838503610200811215614bee57600080fd5b6101c080821215614bfe57600080fd5b614c0661514b565b9150614c1287876147be565b8252610160860135602083015261018086013560408301526101a0860135606083015290935084013591506101e0840135614c4c816152b7565b809150509250925092565b60006101608284031215614c6a57600080fd5b61201b83836147be565b600080828403610200811215614c8957600080fd5b614c9385856147be565b925060a061015f1982011215614ca857600080fd5b5060405160a0810181811067ffffffffffffffff82111715614cda57634e487b7160e01b600052604160045260246000fd5b8060405250610160840135815261018084013560208201526101a084013560408201526101c0840135614d0c816152b7565b60608201526101e0939093013560808401525092909150565b600060208284031215614d3757600080fd5b5035919050565b600060208284031215614d5057600080fd5b5051919050565b600080600060608486031215614d6c57600080fd5b835192506020840151614d7e816152a2565b80925050604084015190509250925092565b60008060408385031215614da357600080fd5b823591506020830135614db5816152b7565b809150509250929050565b60008060408385031215614dd357600080fd5b50508035926020909101359150565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151614e20608084018215159052565b5060a0818101519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151614ebe60c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b60008251614efd8184602087016151ec565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015614f485783516001600160a01b031683529284019291840191600101614f23565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015614f4857614f83838551614de2565b928401926101809290920191600101614f70565b60408101818360005b6002811015614fbf578151835260209283019290910190600101614fa0565b50505092915050565b6020808252825182820181905260009190848201906040850190845b81811015614f4857835183529284019291840191600101614fe4565b602081526000825180602084015261501f8160408501602087016151ec565b601f01601f19169190910160400192915050565b61018081016110ec8284614de2565b81516001600160a01b031681526020808301519082015260408083015190820152606082015160808201906004811061508b57634e487b7160e01b600052602160045260246000fd5b8060608401525092915050565b60006101c0820190506150ac828451614e6c565b602083015161016083015260408301516101808301526060909201516101a09091015290565b61016081016110ec8284614e6c565b604051610160810167ffffffffffffffff8111828210171561511357634e487b7160e01b600052604160045260246000fd5b60405290565b604051610180810167ffffffffffffffff8111828210171561511357634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561511357634e487b7160e01b600052604160045260246000fd5b6000821982111561518f5761518f61524a565b500190565b6000826151b157634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156151d0576151d061524a565b500290565b6000828210156151e7576151e761524a565b500390565b60005b838110156152075781810151838201526020016151ef565b838111156116785750506000910152565b6000816152275761522761524a565b506000190190565b60006000198214156152435761524361524a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611e3357600080fd5b8015158114611e3357600080fdfe943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee44422781a26469706673582212208d45f74de3fda35f0a7423c400c61fc11fcc19045395bf783a9ad575cf08368064736f6c63430008070033","sourceMap":"553:33907:110:-:0;;;3052:53;;;;;;;;;-1:-1:-1;3076:22:110;:20;:22::i;:::-;553:33907;;5939:280:24;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:24;;216:2:150;5998:66:24;;;198:21:150;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:150;;;338:37;5998:66:24;;;;;;392:19:150;5998:66:24;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:24;-1:-1:-1;6125:30:24;;;;;;6174:28;;;564:36:150;;;6174:28:24;;;;;;552:2:150;6174:28:24;;;6074:139;5939:280::o;422:184:150:-;553:33907:110;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061048a5760003560e01c80639c8912f111610262578063d477f05f11610151578063ecf56a1f116100ce578063f65d9dbe11610092578063f65d9dbe14610bd4578063f7b3c6fd14610bdd578063f823e2ae14610c06578063fdb153e214610c19578063fe0fc8d614610c2c578063ff12673a14610c3f57600080fd5b8063ecf56a1f14610b4a578063eda00d5414610b5d578063f0cb9b1114610b8e578063f169429214610ba1578063f4ccf54e14610bb457600080fd5b8063dc6638f411610115578063dc6638f414610af8578063dcdf339a14610b00578063dd0290e214610b13578063e3cbe3a714610b26578063ec44acf214610b3957600080fd5b8063d477f05f14610a8c578063d5dabd7514610a9f578063d775d54814610abf578063d8137fe814610ad2578063dc2123ff14610ae557600080fd5b8063b543503e116101df578063bcc9f1d3116101a3578063bcc9f1d314610a43578063cab9458014610a56578063cda3948f14610a69578063cfad57a214610a71578063d294f09314610a8457600080fd5b8063b543503e146109a9578063b7682d54146109bc578063b833966f146109e7578063b87cb1da146109fa578063b8878a2c14610a2357600080fd5b8063a553906c11610226578063a553906c14610932578063ae8ac94e14610945578063b222cb3814610958578063b3e089a214610983578063b4b0f5671461099657600080fd5b80639c8912f1146108ae5780639cb87f23146108d95780639e5914da146108ec578063a3544181146108ff578063a3a80ffe1461091257600080fd5b80635b621e321161037e5780638049fde7116102fb5780638c8ff1d5116102bf5780638c8ff1d5146107f15780638ecf3f5a1461084857806390d112b91461085d57806391cca3db1461087057806397e7995a1461088357600080fd5b80638049fde7146107a55780638129fc1c146107ae5780638a0bd702146107b65780638a4adf24146107cb5780638b83351a146107de57600080fd5b80636d81d981116103425780636d81d98114610711578063700ff359146107445780637ada84831461076c5780637eed1d301461077f5780637fdb96f31461079257600080fd5b80635b621e321461068b5780635c76ac9e1461069e5780635fbfe8cc146106be57806366ac654d146106de5780636c7be83a146106f157600080fd5b806334df85401161040c5780634415b369116103d05780634415b3691461061e578063443295dc1461064957806344d44f5a146106525780635070e8371461066557806350bb25781461067857600080fd5b806334df8540146105dd5780633c6d6fa0146105e65780633e413bee146105ef5780633f23fa1a146106025780633f64d0361461060b57600080fd5b80631c8636b4116104535780631c8636b414610507578063292c1617146105285780632a9a96671461053b5780633078fff51461054e578063321495921461056757600080fd5b8062b127831461048f57806305f3c6ad146104b95780630d32c907146104ce57806312d43a51146104e15780631441a5a9146104f4575b600080fd5b6002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6104cc6104c736600461485d565b610c52565b005b6104cc6104dc366004614d25565b610ce5565b600d5461049c906001600160a01b031681565b60055461049c906001600160a01b031681565b61051a6105153660046148bb565b6110c7565b6040519081526020016104b0565b61051a6105363660046148bb565b6110f2565b61051a61054936600461491c565b6111aa565b60005461049c906201000090046001600160a01b031681565b61057a610575366004614d25565b611511565b604080516001600160a01b03909d168d5260208d019b909b52998b019890985260608a0196909652931515608089015260a088019290925260c087015260e0860152610100850152610120840152610140830152610160820152610180016104b0565b61051a600a5481565b61051a600b5481565b60035461049c906001600160a01b031681565b61051a60095481565b6104cc61061936600461498c565b61158f565b61051a61062c3660046148bb565b601f60209081526000928352604080842090915290825290205481565b61051a60085481565b61051a6106603660046148bb565b61167e565b6104cc61067336600461485d565b611706565b6104cc61068636600461485d565b6117a7565b6104cc61069936600461485d565b6117f3565b6106b16106ac36600461485d565b61186e565b6040516104b09190614fc8565b6106d16106cc366004614d25565b6118da565b6040516104b09190614f07565b600c5461049c906001600160a01b031681565b6107046106ff366004614d25565b611945565b6040516104b09190615042565b61073461071f36600461485d565b60216020526000908152604090205460ff1681565b60405190151581526020016104b0565b6107576107523660046148e7565b6119e9565b604080519283526020830191909152016104b0565b6104cc61077a366004614d25565b611b68565b61051a61078d366004614d25565b611bbc565b6104cc6107a036600461498c565b611bd3565b61051a60075481565b6104cc611d02565b6107be611e36565b6040516104b09190614f54565b60045461049c906001600160a01b031681565b6104cc6107ec36600461487a565b611f1a565b6108046107ff3660046148e7565b611f7b565b6040516104b09190600060a0820190508251825260208301516020830152604083015160408301526060830151151560608301526080830151608083015292915050565b610850612022565b6040516104b09190614f97565b6104cc61086b3660046148e7565b61205c565b600e5461049c906001600160a01b031681565b61051a6108913660046148bb565b601860209081526000928352604080842090915290825290205481565b61051a6108bc3660046148bb565b601c60209081526000928352604080842090915290825290205481565b61051a6108e7366004614dc0565b612348565b6104cc6108fa36600461485d565b61236c565b6104cc61090d36600461498c565b6123f5565b6109256109203660046148e7565b612524565b6040516104b091906150d2565b6104cc61094036600461485d565b6125dd565b6104cc610953366004614a1e565b612665565b61051a610966366004614dc0565b602360209081526000928352604080842090915290825290205481565b6104cc61099136600461485d565b612776565b6104cc6109a43660046148e7565b6127fb565b6104cc6109b736600461485d565b612ae7565b61051a6109ca3660046148bb565b601d60209081526000928352604080842090915290825290205481565b6104cc6109f5366004614c74565b612b74565b61051a610a0836600461485d565b6001600160a01b031660009081526016602052604090205490565b610a36610a313660046148e7565b612dbe565b6040516104b09190615033565b61051a610a513660046148bb565b612f2f565b6104cc610a64366004614d90565b612f60565b6104cc613235565b6104cc610a7f36600461485d565b61326f565b6104cc61330d565b6104cc610a9a36600461485d565b613372565b610ab2610aad366004614d25565b6133f6565b6040516104b09190615098565b6104cc610acd366004614b64565b6134c4565b6104cc610ae0366004614bd7565b613558565b6104cc610af3366004614d25565b613720565b61051a6137a3565b610734610b0e3660046148e7565b613859565b6104cc610b21366004614d25565b6138f6565b61049c610b34366004614dc0565b613962565b6001546001600160a01b031661049c565b6104cc610b58366004614d25565b61399a565b61051a610b6b3660046148e7565b601760209081526000938452604080852082529284528284209052825290205481565b6104cc610b9c366004614c57565b613a23565b61051a610baf366004614d25565b613aaa565b61051a610bc236600461485d565b60226020526000908152604090205481565b61051a60065481565b61051a610beb36600461485d565b6001600160a01b03166000908152601b602052604090205490565b6104cc610c1436600461485d565b613ac8565b6104cc610c27366004614a37565b613b46565b6104cc610c3a36600461485d565b613e1f565b600f5461049c906001600160a01b031681565b600d546001600160a01b03163314610c6957600080fd5b6001600160a01b038116610c7c57600080fd5b600f80546001600160a01b0319166001600160a01b03831690811790915560408051818152600b918101919091526a676f76547265617375727960a81b606082015260208101919091526000805160206152c6833981519152906080015b60405180910390a150565b3360009081526021602052604090205460ff16610d0157600080fd5b6000805460405163d09ef24160e01b815260048101849052620100009091046001600160a01b03169063d09ef2419060240160806040518083038186803b158015610d4b57600080fd5b505afa158015610d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d839190614adf565b602090810151600084815260198352604080822081516101e08101835281546001600160a01b031660808201818152600184015460a0840152600284015460c0840152600384015460e084015260048401546101008401526005840154610120840152600684015460ff1615156101408401526007840154610160840152600884015461018084015260098401546101a0840152600a8401546101c08401528252600b83015482880152600c83015482850152600d909201546060820152908352601b90945281209193505b815481101561104f5784828281548110610e6b57610e6b61528c565b9060005260206000200154141561103d576000846005811115610e9057610e90615260565b1415610ed5578251516001600160a01b03166000908152601c60209081526040808320865183015184529091528120805491610ecb83615218565b9190505550610f50565b8251516001600160a01b03166000908152601d60209081526040808320865183015184529091528120805491610f0a83615218565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff191690555b81548290610f60906001906151d5565b81548110610f7057610f7061528c565b9060005260206000200154828281548110610f8d57610f8d61528c565b906000526020600020018190555081805480610fab57610fab615276565b600082815260208082208301600019908101839055909201909255868252601990526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560068101805460ff19169055600781018290556008810182905560098101829055600a8101829055600b8101829055600c8101829055600d01555b806110478161522f565b915050610e4f565b5081518051608090910151600354611072926001600160a01b0390911691613ea9565b8151805160209182015160408051888152938401919091526001600160a01b03909116917f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c65910160405180910390a250505050565b6001600160a01b03821660009081526015602090815260408083208484529091529020545b92915050565b6000805b6006548110156111a3576001600160a01b0384166000908152601360209081526040808320868452825280832084845290915290206007015461113b578091506111a3565b60065461114982600161517c565b148015611154575081155b1561119b5760405162461bcd60e51b815260206004820152601260248201527113505617d51490511154d7d4915050d2115160721b60448201526064015b60405180910390fd5b6001016110f6565b5092915050565b3360009081526021602052604081205460ff166111c657600080fd5b60008054604051633a100f4d60e01b8152600481018990526024810188905284151560448201526064916402540be40091620100009091046001600160a01b031690633a100f4d90840160206040518083038186803b15801561122857600080fd5b505afa15801561123c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112609190614d3e565b61126a90896151b6565b6112749190615194565b61127e9190615194565b90508361129357611290600282615194565b90505b61129e8882886119e9565b506002546040805163c4493e3760e01b815290519294506000926064926001600160a01b03169163c4493e3791600480830192602092919082900301818887803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113239190614d3e565b61132e9060646151d5565b61133890856151b6565b6113429190615194565b9050600060016064600260009054906101000a90046001600160a01b03166001600160a01b031663c4493e376040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561139a57600080fd5b505af11580156113ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d29190614d3e565b6113dc90876151b6565b6113e69190615194565b901c9050861561140d5760045460035461140d916001600160a01b03918216911684613ea9565b60048054604051635b898b7560e01b8152918201849052600060248301526001600160a01b031690635b898b7590604401600060405180830381600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b5050505080600b6000828254611482919061517c565b9091555081905061149383866151d5565b61149d91906151d5565b600a60008282546114ae919061517c565b9091555050604080516001600160a01b038c168152602081018b9052861515818301526060810186905290517f9921a6a6258398cbe136bac24f80d97ba2b5e4ab8cf2b2d27232d2ae1c78cdd39181900360800190a15050509695505050505050565b6010818154811061152157600080fd5b60009182526020909120600c9091020180546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b909b01546001600160a01b03909a169b5097999698959760ff9095169693959294919390928c565b3360009081526021602052604090205460ff166115ab57600080fd5b6001600160a01b03841660008181526013602090815260408083208784528252808320868452825280832093835260148252808320878452825280832086845290915290206007820154611600575050611678565b8282600301600082825461161491906151d5565b90915550506007820154611629908490613f0c565b81600001600082825461163c91906151d5565b92505081905550611675868661165f856007015487613f0c90919063ffffffff16565b6006860154600587015460009160ff1690613f28565b50505b50505050565b6000805b6006548110156111a357611697848483613859565b6116a3578091506111a3565b6006546116b182600161517c565b1480156116bc575081155b156116fe5760405162461bcd60e51b815260206004820152601260248201527113505617d31253525514d7d4915050d2115160721b6044820152606401611192565b600101611682565b600d546001600160a01b0316331461171d57600080fd5b6001600160a01b03811661173057600080fd5b600080546001600160a01b038316620100000262010000600160b01b03199091161790556040516000805160206152c683398151915290610cda9083906040808252600f908201526e383934b1b2a0b3b3b932b3b0ba37b960891b60608201526001600160a01b0391909116602082015260800190565b600d546001600160a01b031633146117be57600080fd5b6001600160a01b0381166117d157600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331461180a57600080fd5b6001600160a01b03811661181d57600080fd5b6001600160a01b038116600081815260216020908152604091829020805460ff1916905590519182527ff9cf924d7d98e6e0a27ec523cd7214b0bbdfaba197018b33b41a702f5238190e9101610cda565b6001600160a01b0381166000908152601b60209081526040918290208054835181840281018401909452808452606093928301828280156118ce57602002820191906000526020600020905b8154815260200190600101908083116118ba575b50505050509050919050565b6000818152601e60209081526040918290208054835181840281018401909452808452606093928301828280156118ce57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161191c5750505050509050919050565b61196d6040805160808101825260008082526020820181905291810182905290606082015290565b6000828152601a6020908152604091829020825160808101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600380830154919291606084019160ff909116908111156119cf576119cf615260565b60038111156119e0576119e0615260565b90525092915050565b33600090815260216020526040812054819060ff16611a0757600080fd5b60055460405163ce18b98d60e01b81526001600160a01b03878116600483015260248201879052600092839283929091169063ce18b98d9060440160606040518083038186803b158015611a5a57600080fd5b505afa158015611a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a929190614d57565b919450925090506001600160a01b03821615611b58576001600160a01b03821660009081526022602052604081208054839290611ad090849061517c565b909155507f3a864fe7f731bdc590ef080879dd65d46fc853c3348e4c750964677d111fe2a7905088838886611b05818d6151d5565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a0810183905260c00160405180910390a1611b4c81846151d5565b94509250611b60915050565b869450925050505b935093915050565b3360009081526021602052604090205460ff16611b8457600080fd5b6000908152601a6020526040812080546001600160a01b0319168155600181018290556002810191909155600301805460ff19169055565b60118160028110611bcc57600080fd5b0154905081565b3360009081526021602052604090205460ff16611bef57600080fd5b6001600160a01b03841660008181526013602090815260408083208784528252808320868452825280832093835260148252808320878452825280832086845290915290206007820154611c44575050611678565b60025460058301546007840154600685015460405163aee2e44360e01b8152600481019390935260248301919091526044820186905260ff16151560648201526001600160a01b039091169063aee2e44390608401602060405180830381600087803b158015611cb357600080fd5b505af1158015611cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ceb9190614d3e565b600890920182905543600190910155905050505050565b600054610100900460ff1615808015611d225750600054600160ff909116105b80611d3c5750303b158015611d3c575060005460ff166001145b611d9f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611192565b6000805460ff191660011790558015611dc2576000805461ff0019166101001790555b600d80546001600160a01b0319163317905560056006819055600755611dee6402540be400605a6151b6565b6009558015611e33576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610cda565b50565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015611f115760008481526020908190206040805161018081018252600c860290920180546001600160a01b031683526001808201548486015260028201549284019290925260038101546060840152600481015460ff1615156080840152600581015460a0840152600681015460c0840152600781015460e084015260088101546101008401526009810154610120840152600a810154610140840152600b01546101608301529083529092019101611e5a565b50505050905090565b3360009081526021602052604090205460ff16611f3657600080fd5b6001600160a01b038316301415611f6357600354611f5e906001600160a01b03168383613ea9565b505050565b600354611f5e906001600160a01b0316848484614458565b611faf6040518060a00160405280600081526020016000815260200160008152602001600015158152602001600081525090565b506001600160a01b03831660009081526014602090815260408083208584528252808320848452825291829020825160a08101845281548152600182015492810192909252600281015492820192909252600382015460ff161515606082015260049091015460808201525b9392505050565b61202a6146f2565b60408051808201918290529060119060029082845b81548152602001906001019080831161203f575050505050905090565b3360009081526021602052604090205460ff1661207857600080fd5b6001600160a01b038316600081815260136020908152604080832086845282528083208584528252808320938352601482528083208684528252808320858452909152902060078201546120cd575050505050565b8054600683015460058401546120ed928892889260009160ff1690613f28565b6001600160a01b03851660009081526015602090815260408083208784529091529020546001141561225b576001600160a01b0385166000908152601f60209081526040808320878452825280832054601e90925290912080548190612155906001906151d5565b815481106121655761216561528c565b9060005260206000200160009054906101000a90046001600160a01b03168183815481106121955761219561528c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081601f60008385815481106121da576121da61528c565b60009182526020808320909101546001600160a01b03908116845283820194909452604092830182208b8352815282822094909455918a168252601f835280822089835290925290812055805481908061223657612236615276565b600082815260209020810160001990810180546001600160a01b031916905501905550505b6001600160a01b03851660008181526013602090815260408083208884528252808320878452825280832080546001600160a01b031916815560018082018590556002808301869055600380840187905560048085018890556005850188905560068501805460ff19908116909155600786018990556008860189905560098601899055600a909501889055888852601487528588208d895287528588208c89528752858820888155938401889055918301879055820180549093169092550183905592825260158152828220878352905290812080549161233c83615218565b91905055505050505050565b60208052816000526040600020816002811061236357600080fd5b01549150829050565b600d546001600160a01b0316331461238357600080fd5b6001600160a01b03811661239657600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040805181815260089181019190915267149959995c9c985b60c21b606082015260208101919091526000805160206152c683398151915290608001610cda565b3360009081526021602052604090205460ff1661241157600080fd5b6001600160a01b03841660008181526013602090815260408083208784528252808320868452825280832093835260148252808320878452825280832086845290915290206007820154612466575050611678565b600254600583015460078401546006850154604051632d7b7e5560e21b8152600481019390935260248301919091526044820186905260ff16151560648201526001600160a01b039091169063b5edf95490608401602060405180830381600087803b1580156124d557600080fd5b505af11580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d9190614d3e565b600990920182905543600290910155905050505050565b61252c614710565b506001600160a01b039283166000908152601360209081526040808320948352938152838220928252918252829020825161016081018452815490941684526001810154918401919091526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460ff16151560c0830152600781015460e083015260088101546101008301526009810154610120830152600a015461014082015290565b600d546001600160a01b031633146125f457600080fd5b6001600160a01b03811661260757600080fd5b600180546001600160a01b0319166001600160a01b038316908117909155604080518181526007918101919091526674726164696e6760c81b606082015260208101919091526000805160206152c683398151915290608001610cda565b3360009081526021602052604090205460ff1661268157600080fd5b6126a0612691602083018361485d565b82602001358360400135613859565b6126a75750565b600060106017826126bb602086018661485d565b6001600160a01b03168152602080820192909252604090810160009081208684013582528352818120868301358252909252902054815481106127005761270061528c565b90600052602060002090600c020190508160600135816003018190555081608001602081019061273091906149c7565b60048201805460ff191691151591909117905560a0820135600582015560c0820135600682015560e0820135600782015561010090910135600882015543600a90910155565b600d546001600160a01b0316331461278d57600080fd5b6001600160a01b0381166127a057600080fd5b600380546001600160a01b0319166001600160a01b03831690811790915560408051818152600491810191909152637573646360e01b606082015260208101919091526000805160206152c683398151915290608001610cda565b3360009081526021602052604090205460ff1661281757600080fd5b612822838383613859565b61282b57505050565b6001600160a01b0383166000908152601760209081526040808320858452825280832084845290915290205460108054612867906001906151d5565b815481106128775761287761528c565b90600052602060002090600c0201601082815481106128985761289861528c565b6000918252602082208354600c9092020180546001600160a01b0319166001600160a01b03909216919091178155600180840154908201556002808401549082015560038084015490820155600480840154908201805460ff909216151560ff199092169190911790556005808401549082015560068084015490820155600780840154908201556008808401549082015560098084015490820155600a8084015490820155600b928301549201919091556010805483926017929091849081106129655761296561528c565b60009182526020808320600c909202909101546001600160a01b03168352820192909252604001812060108054919291859081106129a5576129a561528c565b90600052602060002090600c02016001015481526020019081526020016000206000601084815481106129da576129da61528c565b600091825260208083206002600c90930201919091015483528281019390935260409182018120939093556001600160a01b03871683526017825280832086845282528083208584529091528120556010805480612a3a57612a3a615276565b60008281526020808220600c6000199094019384020180546001600160a01b031916815560018101839055600281018390556003810183905560048101805460ff191690556005810183905560068101839055600781018390556008810183905560098101839055600a8101839055600b01829055919092556001600160a01b03861682526018815260408083208684529091528120805491612adc83615218565b919050555050505050565b600d546001600160a01b03163314612afe57600080fd5b6001600160a01b038116612b1157600080fd5b600480546001600160a01b0319166001600160a01b03831690811790915560408051818152600c918101919091526b3b30bab63a26b0b730b3b2b960a11b606082015260208101919091526000805160206152c683398151915290608001610cda565b3360009081526021602052604090205460ff16612b9057600080fd5b612ba2826000015183602001516110f2565b604083810191825283516001600160a01b0390811660009081526013602090815283822081880180518452908252848320865184528252848320885181546001600160a01b031916951694851781558151600182015595516002870155606088015160038701556080880151600487015560a0880151600587015560c088015160068701805460ff191691151591909117905560e0880151600787015561010088015160088701556101208801516009870155610140880151600a9096019590955591815260158252828120935181529290528120805491612c838361522f565b909155505081516001600160a01b0316600090815260156020908152604080832082860151845290915290205460011415612d2457602082810180516000908152601e80845260408083205487516001600160a01b039081168552601f87528285208651865287528285209190915593518352908452812085518154600181018355918352939091200180546001600160a01b031916929091169190911790555b60006060820181815283516001600160a01b0316825260146020908152604080842082870180518652908352818520828801518652835293819020855180825592860151600180830191909155918601516002820155925160038401805460ff191691151591909117905560808501516004909301929092558451925160c086015160a0870151612dba95949293929190613f28565b5050565b612e2d60405180610180016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612e38848484613859565b612e4157600080fd5b6001600160a01b03841660009081526017602090815260408083208684528252808320858452909152902054601080549091908110612e8257612e8261528c565b60009182526020918290206040805161018081018252600c90930290910180546001600160a01b0316835260018101549383019390935260028301549082015260038201546060820152600482015460ff1615156080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b9091015461016082015290509392505050565b601b6020528160005260406000208181548110612f4b57600080fd5b90600052602060002001600091509150505481565b3360009081526021602052604090205460ff16612f7c57600080fd5b600082815260196020908152604080832081516101e08101835281546001600160a01b031660808201818152600184015460a0840152600284015460c0840152600384015460e084015260048401546101008401526005840154610120840152600684015460ff1615156101408401526007840154610160840152600884015461018084015260098401546101a0840152600a8401546101c08401528252600b83015482860152600c83015482850152600d909201546060820152908452601b909252822090915b815481101561322e57848282815481106130605761306061528c565b906000526020600020015414156132265783156130b6578251516001600160a01b03166000908152601c602090815260408083208651830151845290915281208054916130ac83615218565b9190505550613131565b8251516001600160a01b03166000908152601d602090815260408083208651830151845290915281208054916130eb83615218565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff191690555b81548290613141906001906151d5565b815481106131515761315161528c565b906000526020600020015482828154811061316e5761316e61528c565b90600052602060002001819055508180548061318c5761318c615276565b600082815260208082208301600019908101839055909201909255868252601990526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560068101805460ff19169055600781018290556008810182905560098101829055600a8101829055600b8101829055600c8101829055600d015550612dba915050565b600101613044565b5050505050565b3360008181526022602052604090205460035461325d926001600160a01b0390911691613ea9565b33600090815260226020526040812055565b600d546001600160a01b0316331461328657600080fd5b6001600160a01b03811661329957600080fd5b600c546001600160a01b038281169116146132b357600080fd5b600d80546001600160a01b0319166001600160a01b038316908117909155604080518181526003918101919091526233b7bb60e91b606082015260208101919091526000805160206152c683398151915290608001610cda565b600d546001600160a01b0316331461332457600080fd5b600f54600b54600354613345926001600160a01b0391821692911690613ea9565b600e54600a54600354613366926001600160a01b0391821692911690613ea9565b6000600a819055600b55565b600d546001600160a01b0316331461338957600080fd5b6001600160a01b03811661339c57600080fd5b600e80546001600160a01b0319166001600160a01b03831690811790915560408051818152600391810191909152623232bb60e91b606082015260208101919091526000805160206152c683398151915290608001610cda565b6133fe614775565b5060009081526019602090815260409182902082516101e08101845281546001600160a01b031660808201908152600183015460a0830152600283015460c0830152600383015460e083015260048301546101008301526005830154610120830152600683015460ff1615156101408301526007830154610160830152600883015461018083015260098301546101a0830152600a8301546101c08301528152600b82015492810192909252600c81015492820192909252600d90910154606082015290565b3360009081526021602052604090205460ff166134e057600080fd5b6000818152601a6020908152604091829020845181546001600160a01b0319166001600160a01b03909116178155908401516001808301919091559184015160028201556060840151600380830180548795919260ff199091169190849081111561354d5761354d615260565b021790555050505050565b3360009081526021602052604090205460ff1661357457600080fd5b8251516001600160a01b039081166000908152601b602090815260408083208054600180820183559185528385200187905586845260198352928190208751805182546001600160a01b0319169616959095178155918401519282019290925582820151600282015560608084015160038301556080840151600483015560a0840151600583015560c084015160068301805460ff191691151591909117905560e084015160078301556101008401516008830155610120840151600983015561014090930151600a82015590850151600c82015590840151600d82015543600b90910155801561369e578251516001600160a01b03166000908152601c602090815260408083208651830151845290915281208054916136948361522f565b9190505550505050565b8251516001600160a01b03166000908152601d602090815260408083208651830151845290915281208054916136d38361522f565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff19166001179055505050565b600d546001600160a01b0316331461373757600080fd5b6000811161374457600080fd5b6006819055604080518181526010918101919091526f36b0bc2a3930b232b9a832b92830b4b960811b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610cda565b600060646402540be400600954600460009054906101000a90046001600160a01b03166001600160a01b0316637b78d7826040518163ffffffff1660e01b815260040160206040518083038186803b1580156137fe57600080fd5b505afa158015613812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138369190614d3e565b61384091906151b6565b61384a9190615194565b6138549190615194565b905090565b60105460009061386b5750600061201b565b6001600160a01b038416600090815260176020908152604080832086845282528083208584529091528120546010805490919081106138ac576138ac61528c565b60009182526020909120600c9091020180549091506001600160a01b0386811691161480156138de5750838160010154145b80156138ed5750828160020154145b95945050505050565b600d546001600160a01b0316331461390d57600080fd5b60098190556040805181815260069181019190915265074766c4361760d41b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610cda565b601e602052816000526040600020818154811061397e57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600d546001600160a01b031633146139b157600080fd5b600081116139be57600080fd5b600781905560408051818152601691810191909152756d617850656e64696e674d61726b65744f726465727360501b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610cda565b3360009081526021602052604090205460ff16613a3f57600080fd5b80516001600160a01b03166000908152601360209081526040808320828501518452825280832081850151845290915290206007810154613a7e575050565b606082015160038201556080820151600482015560a0820151600582015560e082015160079091015550565b60008181526020805260408120600181015490546110ec919061517c565b600d546001600160a01b03163314613adf57600080fd5b6001600160a01b038116613af257600080fd5b6001600160a01b038116600081815260216020908152604091829020805460ff1916600117905590519182527fb692fa98cbec9bd705572b4c7e0927e3f7698e9fe526dcef6f40f3d4d4980ca39101610cda565b3360009081526021602052604090205460ff16613b6257600080fd5b613b748160000151826020015161167e565b604082019081524361014083019081526010805460018082018355600083905285517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672600c90930292830180546001600160a01b0319166001600160a01b0390921691909117905560208601517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67383015593517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67482015560608501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67582015560808501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6768201805460ff191691151591909117905560a08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67782015560c08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67882015560e08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798201556101008501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8201556101208501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b82015591517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67c8301556101608401517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67d9092019190915554613db991906151d5565b81516001600160a01b03908116600090815260176020908152604080832082870180518552908352818420828801518552835281842095909555855190931682526018815282822093518252929092528120805491613e178361522f565b919050555050565b600d546001600160a01b03163314613e3657600080fd5b6001600160a01b038116613e4957600080fd5b600280546001600160a01b0319166001600160a01b038316908117909155604080518181526009918101919091526863616c6c6261636b7360b81b606082015260208101919091526000805160206152c683398151915290608001610cda565b6040516001600160a01b038316602482015260448101829052611f5e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614490565b60006402540be400613f1e83856151b6565b61201b9190615194565b600082613f36576001613f39565b60005b6000878152602080526040902060ff91909116915084613f8b57808260028110613f6557613f6561528c565b01548611613f735785613f88565b808260028110613f8557613f8561528c565b01545b95505b84613fb45785818360028110613fa357613fa361528c565b0154613faf91906151d5565b613fd3565b85818360028110613fc757613fc761528c565b0154613fd3919061517c565b818360028110613fe557613fe561528c565b015584613fff5785600854613ffa91906151d5565b61400d565b8560085461400d919061517c565b6008558461403e576001600160a01b0388166000908152601660205260409020546140399087906151d5565b614062565b6001600160a01b03881660009081526016602052604090205461406290879061517c565b6001600160a01b038916600090815260166020908152604080832093909355898252602381528282204383529052205461409d90879061517c565b6000888152602360209081526040808320438452825280832093909355815483516335b03c1760e01b815293519293620100009091046001600160a01b0316926335b03c1792600480840193919291829003018186803b15801561410057600080fd5b505afa158015614114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141389190614a01565b6040516304d735cf60e51b8152600481018a90529091506001600160a01b03821690639ae6b9e09060240160206040518083038186803b15801561417b57600080fd5b505afa15801561418f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b39190614d3e565b6000898152602360209081526040808320438452909152902054111561421b5760405162461bcd60e51b815260206004820152601760248201527f424c4f434b5f4f495f4c494d49545f42524541434845440000000000000000006044820152606401611192565b604051633c44d0a360e01b8152600481018990526001600160a01b03821690633c44d0a39060240160206040518083038186803b15801561425b57600080fd5b505afa15801561426f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142939190614d3e565b600214156143fb57604051636dc37de360e01b8152600481018990526000906001600160a01b03831690636dc37de39060240160206040518083038186803b1580156142de57600080fd5b505afa1580156142f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431691906149e4565b9050600086614326576000614329565b60015b60ff1690508115614398578761435e57886011866002811061434d5761434d61528c565b015461435991906151d5565b61437e565b88601186600281106143725761437261528c565b015461437e919061517c565b601186600281106143915761439161528c565b01556143f8565b876143c25788601182600281106143b1576143b161528c565b01546143bd91906151d5565b6143e2565b88601182600281106143d6576143d661528c565b01546143e2919061517c565b601182600281106143f5576143f561528c565b01555b50505b604080518715158152861515602082015290810189905260608101889052608081018590527fcadf7ed5daaec5b514975523d89eb6ebbbd5d892bc7a5bbf71c5fca0219754579060a00160405180910390a1505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526116789085906323b872dd60e01b90608401613ed5565b60006144e5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145659092919063ffffffff16565b905080516000148061450657508080602001905181019061450691906149e4565b611f5e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611192565b6060614574848460008561457c565b949350505050565b6060824710156145dd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611192565b600080866001600160a01b031685876040516145f99190614eeb565b60006040518083038185875af1925050503d8060008114614636576040519150601f19603f3d011682016040523d82523d6000602084013e61463b565b606091505b509150915061464c87838387614657565b979650505050505050565b606083156146c35782516146bc576001600160a01b0385163b6146bc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611192565b5081614574565b61457483838151156146d85781518083602001fd5b8060405162461bcd60e51b81526004016111929190615000565b60405180604001604052806002906020820280368337509192915050565b60405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280614788614710565b81526020016000815260200160008152602001600081525090565b80356147ae816152a2565b919050565b80356147ae816152b7565b600061016082840312156147d157600080fd5b6147d96150e1565b90506147e4826147a3565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015261482460c083016147b3565b60c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b60006020828403121561486f57600080fd5b813561201b816152a2565b60008060006060848603121561488f57600080fd5b833561489a816152a2565b925060208401356148aa816152a2565b929592945050506040919091013590565b600080604083850312156148ce57600080fd5b82356148d9816152a2565b946020939093013593505050565b6000806000606084860312156148fc57600080fd5b8335614907816152a2565b95602085013595506040909401359392505050565b60008060008060008060c0878903121561493557600080fd5b8635614940816152a2565b95506020870135945060408701359350606087013561495e816152b7565b9250608087013561496e816152b7565b915060a087013561497e816152b7565b809150509295509295509295565b600080600080608085870312156149a257600080fd5b84356149ad816152a2565b966020860135965060408601359560600135945092505050565b6000602082840312156149d957600080fd5b813561201b816152b7565b6000602082840312156149f657600080fd5b815161201b816152b7565b600060208284031215614a1357600080fd5b815161201b816152a2565b60006101808284031215614a3157600080fd5b50919050565b60006101808284031215614a4a57600080fd5b614a52615119565b614a5b836147a3565b8152602083013560208201526040830135604082015260608301356060820152614a87608084016147b3565b608082015260a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160928301359281019290925250919050565b600060808284031215614af157600080fd5b6040516080810181811067ffffffffffffffff82111715614b2257634e487b7160e01b600052604160045260246000fd5b60405282518152602083015160068110614b3b57600080fd5b6020820152604083810151908201526060830151614b58816152b7565b60608201529392505050565b60008082840360a0811215614b7857600080fd5b6080811215614b8657600080fd5b50614b8f61514b565b8335614b9a816152a2565b808252506020840135602082015260408401356040820152606084013560048110614bc457600080fd5b6060820152946080939093013593505050565b6000806000838503610200811215614bee57600080fd5b6101c080821215614bfe57600080fd5b614c0661514b565b9150614c1287876147be565b8252610160860135602083015261018086013560408301526101a0860135606083015290935084013591506101e0840135614c4c816152b7565b809150509250925092565b60006101608284031215614c6a57600080fd5b61201b83836147be565b600080828403610200811215614c8957600080fd5b614c9385856147be565b925060a061015f1982011215614ca857600080fd5b5060405160a0810181811067ffffffffffffffff82111715614cda57634e487b7160e01b600052604160045260246000fd5b8060405250610160840135815261018084013560208201526101a084013560408201526101c0840135614d0c816152b7565b60608201526101e0939093013560808401525092909150565b600060208284031215614d3757600080fd5b5035919050565b600060208284031215614d5057600080fd5b5051919050565b600080600060608486031215614d6c57600080fd5b835192506020840151614d7e816152a2565b80925050604084015190509250925092565b60008060408385031215614da357600080fd5b823591506020830135614db5816152b7565b809150509250929050565b60008060408385031215614dd357600080fd5b50508035926020909101359150565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151614e20608084018215159052565b5060a0818101519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151614ebe60c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b60008251614efd8184602087016151ec565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015614f485783516001600160a01b031683529284019291840191600101614f23565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015614f4857614f83838551614de2565b928401926101809290920191600101614f70565b60408101818360005b6002811015614fbf578151835260209283019290910190600101614fa0565b50505092915050565b6020808252825182820181905260009190848201906040850190845b81811015614f4857835183529284019291840191600101614fe4565b602081526000825180602084015261501f8160408501602087016151ec565b601f01601f19169190910160400192915050565b61018081016110ec8284614de2565b81516001600160a01b031681526020808301519082015260408083015190820152606082015160808201906004811061508b57634e487b7160e01b600052602160045260246000fd5b8060608401525092915050565b60006101c0820190506150ac828451614e6c565b602083015161016083015260408301516101808301526060909201516101a09091015290565b61016081016110ec8284614e6c565b604051610160810167ffffffffffffffff8111828210171561511357634e487b7160e01b600052604160045260246000fd5b60405290565b604051610180810167ffffffffffffffff8111828210171561511357634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561511357634e487b7160e01b600052604160045260246000fd5b6000821982111561518f5761518f61524a565b500190565b6000826151b157634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156151d0576151d061524a565b500290565b6000828210156151e7576151e761524a565b500390565b60005b838110156152075781810151838201526020016151ef565b838111156116785750506000910152565b6000816152275761522761524a565b506000190190565b60006000198214156152435761524361524a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611e3357600080fd5b8015158114611e3357600080fdfe943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee44422781a26469706673582212208d45f74de3fda35f0a7423c400c61fc11fcc19045395bf783a9ad575cf08368064736f6c63430008070033","sourceMap":"553:33907:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27189:105;27276:10;;-1:-1:-1;;;;;27276:10:110;27189:105;;;-1:-1:-1;;;;;13367:32:150;;;;13349:51;;13337:2;13322:18;27189:105:110;;;;;;;;4909:209;;;;;;:::i;:::-;;:::i;:::-;;14924:1300;;;;;;:::i;:::-;;:::i;1207:27::-;;;;;-1:-1:-1;;;;;1207:27:110;;;933:25;;;;;-1:-1:-1;;;;;933:25:110;;;26880:158;;;;;;:::i;:::-;;:::i;:::-;;;30977:25:150;;;30965:2;30950:18;26880:158:110;30831:177:150;30544:456:110;;;;;;:::i;:::-;;:::i;22523:1030::-;;;;;;:::i;:::-;;:::i;729:48::-;;;;;;;;-1:-1:-1;;;;;729:48:110;;;1306:39;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;15567:32:150;;;;15549:51;;15631:2;15616:18;;15609:34;;;;15659:18;;;15652:34;;;;15717:2;15702:18;;15695:34;;;;15773:14;;15766:22;15760:3;15745:19;;15738:51;-1:-1:-1;15805:19:150;;15798:35;;;;15864:3;15849:19;;15842:35;15908:3;15893:19;;15886:35;15952:3;15937:19;;15930:35;15996:3;15981:19;;15974:35;16040:3;16025:19;;16018:36;16085:3;16070:19;;16063:36;15536:3;15521:19;1306:39:110;15098:1007:150;1115:23:110;;;;;;1144;;;;;;852:27;;;;;-1:-1:-1;;;;;852:27:110;;;1091:18;;;;;;10764:587;;;;;;:::i;:::-;;:::i;2402:62::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1057:28;;;;;;31282:453;;;;;;:::i;:::-;;:::i;6184:235::-;;;;;;:::i;:::-;;:::i;3889:124::-;;;;;;:::i;:::-;;:::i;5785:210::-;;;;;;:::i;:::-;;:::i;28056:140::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;27738:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1174:27::-;;;;;-1:-1:-1;;;;;1174:27:110;;;26472:160;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2661:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18807:14:150;;18800:22;18782:41;;18770:2;18755:18;2661:49:110;18642:187:150;21240:760:110;;;;;;:::i;:::-;;:::i;:::-;;;;31450:25:150;;;31506:2;31491:18;;31484:34;;;;31423:18;21240:760:110;31276:248:150;16740:135:110;;;;;;:::i;:::-;;:::i;1351:20::-;;;;;;:::i;:::-;;:::i;19899:462::-;;;;;;:::i;:::-;;:::i;1008:43::-;;;;;;3200:176;;;:::i;30167:117::-;;;:::i;:::-;;;;;;;:::i;885:42::-;;;;;-1:-1:-1;;;;;885:42:110;;;24377:283;;;;;;:::i;:::-;;:::i;25653:219::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;30217:4:150;30259:3;30248:9;30244:19;30236:27;;30296:6;30290:13;30279:9;30272:32;30360:4;30352:6;30348:17;30342:24;30335:4;30324:9;30320:20;30313:54;30423:4;30415:6;30411:17;30405:24;30398:4;30387:9;30383:20;30376:54;30500:4;30492:6;30488:17;30482:24;30475:32;30468:40;30461:4;30450:9;30446:20;30439:70;30565:4;30557:6;30553:17;30547:24;30540:4;30529:9;30525:20;30518:54;30069:509;;;;;28272:97:110;;;:::i;:::-;;;;;;;:::i;11639:957::-;;;;;;:::i;:::-;;:::i;1240:27::-;;;;;-1:-1:-1;;;;;1240:27:110;;;1818:78;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2135:80;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2523:57;;;;;;:::i;:::-;;:::i;7015:199::-;;;;;;:::i;:::-;;:::i;19169:463::-;;;;;;:::i;:::-;;:::i;25242:177::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7392:197::-;;;;;;:::i;:::-;;:::i;17490:504::-;;;;;;:::i;:::-;;:::i;2798:52::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3547:172;;;;;;:::i;:::-;;:::i;18209:697::-;;;;;;:::i;:::-;;:::i;6604:231::-;;;;;;:::i;:::-;;:::i;2221:81::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9568:831;;;;;;:::i;:::-;;:::i;29260:115::-;;;;;;:::i;:::-;-1:-1:-1;;;;;29350:18:110;29327:4;29350:18;;;:9;:18;;;;;;;29260:115;29702:311;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2080:49::-;;;;;;:::i;:::-;;:::i;13842:967::-;;;;;;:::i;:::-;;:::i;23942:140::-;;;:::i;4182:192::-;;;;;;:::i;:::-;;:::i;23654:210::-;;;:::i;4564:153::-;;;;;;:::i;:::-;;:::i;26092:163::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16417:179::-;;;;;;:::i;:::-;;:::i;12948:656::-;;;;;;:::i;:::-;;:::i;8206:230::-;;;;;;:::i;:::-;;:::i;24793:152::-;;;:::i;32072:373::-;;;;;;:::i;:::-;;:::i;9106:208::-;;;;;;:::i;:::-;;:::i;2351:45::-;;;;;;:::i;:::-;;:::i;27449:101::-;27534:8;;-1:-1:-1;;;;;27534:8:110;27449:101;;8659:272;;;;;;:::i;:::-;;:::i;1729:83::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20485:424;;;;;;:::i;:::-;;:::i;28889:160::-;;;;;;:::i;:::-;;:::i;2716:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;965:37;;;;;;28559:140;;;;;;:::i;:::-;-1:-1:-1;;;;;28661:24:110;28638:4;28661:24;;;:15;:24;;;;;:31;;28559:140;5348:204;;;;;;:::i;:::-;;:::i;16990:366::-;;;;;;:::i;:::-;;:::i;7773:212::-;;;;;;:::i;:::-;;:::i;1273:26::-;;;;;-1:-1:-1;;;;;1273:26:110;;;4909:209;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;4990:26:110;::::1;4982:35;;;::::0;::::1;;5027:11;:26:::0;;-1:-1:-1;;;;;;5027:26:110::1;-1:-1:-1::0;;;;;5027:26:110;::::1;::::0;;::::1;::::0;;;5068:43:::1;::::0;;26417:21:150;;;26474:2;26454:18;;;26447:30;;;;-1:-1:-1;;;26508:2:150;26493:18;;26486:41;26594:4;26579:20;;;26572:62;;;;-1:-1:-1;;;5068:43:110;;-1:-1:-1;;;;;;;;;;5068:43:110;26559:3:150;26544:19;5068:43:110::1;;;;;;;;4909:209:::0;:::o;14924:1300::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;15017:36:::1;15056:15:::0;;:29:::1;::::0;-1:-1:-1;;;15056:29:110;;::::1;::::0;::::1;30977:25:150::0;;;15056:15:110;;;::::1;-1:-1:-1::0;;;;;15056:15:110::1;::::0;:24:::1;::::0;30950:18:150;;15056:29:110::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;::::0;;::::1;::::0;15106:32:::1;15141:29:::0;;;:24:::1;:29:::0;;;;;;15106:64;;;;;;;;;-1:-1:-1;;;;;15106:64:110::1;;::::0;::::1;::::0;;;-1:-1:-1;15106:64:110;::::1;::::0;-1:-1:-1;15106:64:110;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;::::1;;;;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;15106:64:110;;;15206:36;;;:15:::1;:36:::0;;;;;15056:39;;-1:-1:-1;15253:709:110::1;15274:15:::0;;15270:19;::::1;15253:709;;;15329:3;15314:8;15323:1;15314:11;;;;;;;;:::i;:::-;;;;;;;;;:18;15310:642;;;15369:38;15356:9;:51;;;;;;;;:::i;:::-;;15352:437;;;15454:12:::0;;:19;-1:-1:-1;;;;;15431:43:110::1;;::::0;;;:22:::1;:43;::::0;;;;;;;15475:12;;:22;::::1;::::0;15431:67;;;;;;;:69;;;::::1;::::0;::::1;:::i;:::-;;;;;;15352:437;;;15571:12:::0;;:19;-1:-1:-1;;;;;15547:44:110::1;;::::0;;;:23:::1;:44;::::0;;;;;;;15592:12;;:22;::::1;::::0;15547:68;;;;;;;:70;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;15655:12:110;;:19;-1:-1:-1;;;;;15639:36:110::1;15765:5;15639:36:::0;;;:15:::1;:36;::::0;;;;;;;15676:12;;:22;::::1;::::0;15639:60;;;;;;;15700:12;;:18;::::1;::::0;15639:80;;;;;;;:123:::1;;:131:::0;;-1:-1:-1;;15639:131:110::1;::::0;;15352:437:::1;15830:15:::0;;15821:8;;15830:19:::1;::::0;15848:1:::1;::::0;15830:19:::1;:::i;:::-;15821:29;;;;;;;;:::i;:::-;;;;;;;;;15807:8;15816:1;15807:11;;;;;;;;:::i;:::-;;;;;;;;:43;;;;15868:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;-1:-1:-1;;15868:14:110;;;;;;;;;;;;;;15908:29;;;:24:::1;:29:::0;;;;;15901:36;;-1:-1:-1;;;;;;15901:36:110::1;::::0;;-1:-1:-1;15901:36:110;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;15901:36:110::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;15310:642:::1;15291:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15253:709;;;-1:-1:-1::0;16083:12:110;;:19;;16104:29:::1;::::0;;::::1;::::0;16064:4:::1;::::0;16057:77:::1;::::0;-1:-1:-1;;;;;16064:4:110;;::::1;::::0;16057:25:::1;:77::i;:::-;16173:12:::0;;:19;;16194:22:::1;::::0;;::::1;::::0;16149:68:::1;::::0;;31450:25:150;;;31491:18;;;31484:34;;;;16149:68:110;;-1:-1:-1;;;;;16149:68:110;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;15006:1218;;;14924:1300:::0;:::o;26880:158::-;-1:-1:-1;;;;;26994:25:110;;26971:4;26994:25;;;:16;:25;;;;;;;;:37;;;;;;;;;26880:158;;;;;:::o;30544:456::-;30636:10;;30658:336;30679:16;;30675:1;:20;30658:336;;;-1:-1:-1;;;;;30716:19:110;;;;;;:11;:19;;;;;;;;:30;;;;;;;;:33;;;;;;;;:42;;;30712:118;;30791:1;30783:9;;30810:5;;30712:118;30859:16;;30849:5;:1;30853;30849:5;:::i;:::-;30848:27;30847:43;;;;-1:-1:-1;30880:10:110;;30847:43;30843:110;;;30910:28;;-1:-1:-1;;;30910:28:110;;26060:2:150;30910:28:110;;;26042:21:150;26099:2;26079:18;;;26072:30;-1:-1:-1;;;26118:18:150;;;26111:48;26176:18;;30910:28:110;;;;;;;;30843:110;30978:3;;30658:336;;;;30544:456;;;;:::o;22523:1030::-;3012:10;22743:19;2994:29;;;:17;:29;;;;;;;;2986:38;;;;;;22774:8:::1;22811:15:::0;;:66:::1;::::0;-1:-1:-1;;;22811:66:110;;::::1;::::0;::::1;31725:25:150::0;;;31766:18;;;31759:34;;;31836:14;;31829:22;31809:18;;;31802:50;22918:3:110::1;::::0;718:4:::1;::::0;22811:15;;;::::1;-1:-1:-1::0;;;;;22811:15:110::1;::::0;:24:::1;::::0;31698:18:150;;22811:66:110::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22786:91;::::0;:22;:91:::1;:::i;:::-;22785:118;;;;:::i;:::-;:136;;;;:::i;:::-;22774:147;;22937:8;22932:48;;22961:8;22968:1;22961:8:::0;::::1;:::i;:::-;;;22932:48;23010:51;23024:7;23033:3;23038:22;23010:13;:51::i;:::-;-1:-1:-1::0;23120:10:110::1;::::0;:22:::1;::::0;;-1:-1:-1;;;23120:22:110;;;;22990:71;;-1:-1:-1;23072:20:110::1;::::0;23147:3:::1;::::0;-1:-1:-1;;;;;23120:10:110::1;::::0;-1:-1:-1;;23120:22:110::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;23072:20;23120:10;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23114:28;::::0;:3:::1;:28;:::i;:::-;23096:47;::::0;:14;:47:::1;:::i;:::-;23095:55;;;;:::i;:::-;23193:10;::::0;:22:::1;::::0;;-1:-1:-1;;;23193:22:110;;;;23072:78;;-1:-1:-1;23160:12:110::1;::::0;23226:1:::1;::::0;23219:3:::1;::::0;-1:-1:-1;;;;;23193:10:110;;::::1;::::0;-1:-1:-1;;23193:22:110::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;23160:12;23193:10;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23176:39;::::0;:14;:39:::1;:::i;:::-;23175:47;;;;:::i;:::-;:52;;23160:67;;23242:5;23238:76;;;23283:12;::::0;23256:4:::1;::::0;23249:65:::1;::::0;-1:-1:-1;;;;;23256:4:110;;::::1;::::0;23283:12:::1;23298:15:::0;23249:25:::1;:65::i;:::-;23325:12;::::0;;:52:::1;::::0;-1:-1:-1;;;23325:52:110;;;;::::1;31181:25:150::0;;;23325:12:110::1;31222:18:150::0;;;31215:50;-1:-1:-1;;;;;23325:12:110::1;::::0;:28:::1;::::0;31154:18:150;;23325:52:110::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23402:7;23387:11;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;23469:7:110;;-1:-1:-1;23434:32:110::1;23451:15:::0;23434:14;:32:::1;:::i;:::-;:42;;;;:::i;:::-;23419:11;;:57;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;23492:54:110::1;::::0;;-1:-1:-1;;;;;14909:32:150;;14891:51;;14973:2;14958:18;;14951:34;;;15028:14;;15021:22;15001:18;;;14994:50;15075:2;15060:18;;15053:34;;;23492:54:110;;::::1;::::0;;;;14878:3:150;23492:54:110;;::::1;22764:789;;;22523:1030:::0;;;;;;;;:::o;1306:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1306:39:110;;;;-1:-1:-1;1306:39:110;;;;;;;;;;;;;;;;;;;;:::o;10764:587::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;-1:-1:-1;;;;;10955:19:110;::::1;10937:15;10955:19:::0;;;:11:::1;:19;::::0;;;;;;;:30;;;;;;;;:37;;;;;;;;11024:23;;;:15:::1;:23:::0;;;;;:34;;;;;;;;:41;;;;;;;;11079:10:::1;::::0;::::1;::::0;11075:52:::1;;11110:7;;;;11075:52;11157:14;11136:1;:17;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11222:10:110::1;::::0;::::1;::::0;11203:30:::1;::::0;:14;;:18:::1;:30::i;:::-;11181:1;:18;;;:52;;;;;;;:::i;:::-;;;;;;;;11243:101;11267:6;11275:9;11286:30;11305:1;:10;;;11286:14;:18;;:30;;;;:::i;:::-;11325:5;::::0;::::1;::::0;11332:11:::1;::::0;::::1;::::0;11318:5:::1;::::0;11325::::1;;::::0;11243:23:::1;:101::i;:::-;10927:424;;3034:1;10764:587:::0;;;;:::o;31282:453::-;31378:10;;31400:329;31421:16;;31417:1;:20;31400:329;;;31459:39;31477:6;31485:9;31496:1;31459:17;:39::i;:::-;31454:111;;31526:1;31518:9;;31545:5;;31454:111;31594:16;;31584:5;:1;31588;31584:5;:::i;:::-;31583:27;31582:43;;;;-1:-1:-1;31615:10:110;;31582:43;31578:110;;;31645:28;;-1:-1:-1;;;31645:28:110;;26847:2:150;31645:28:110;;;26829:21:150;26886:2;26866:18;;;26859:30;-1:-1:-1;;;26905:18:150;;;26898:48;26963:18;;31645:28:110;26645:342:150;31578:110:110;31713:3;;31400:329;;6184:235;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;6268:25:110;::::1;6260:34;;;::::0;::::1;;6304:15;:47:::0;;-1:-1:-1;;;;;;6304:47:110::1;-1:-1:-1::0;;;;;;6304:47:110;::::1;;;::::0;;6366:46:::1;::::0;-1:-1:-1;;6366:46:110;;6304:15;-1:-1:-1;;6304:15:110;-1:-1:-1;;;;;28427:2:150;28409:21;;;28466:2;28446:18;;;28439:30;-1:-1:-1;;;28500:2:150;28485:18;;28478:45;-1:-1:-1;;;;;28597:32:150;;28590:4;28575:20;;28568:62;-1:-1:-1;28555:3:150;28540:19;6366:46:110::1;28197:439:150::0;3889:124:110;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;3958:18:110;::::1;3950:27;;;::::0;::::1;;3987:12;:19:::0;;-1:-1:-1;;;;;;3987:19:110::1;-1:-1:-1::0;;;;;3987:19:110;;;::::1;::::0;;;::::1;::::0;;3889:124::o;5785:210::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;5870:23:110;::::1;5862:32;;;::::0;::::1;;-1:-1:-1::0;;;;;5904:28:110;::::1;5935:5;5904:28:::0;;;:17:::1;:28;::::0;;;;;;;;:36;;-1:-1:-1;;5904:36:110::1;::::0;;5955:33;;13349:51:150;;;5955:33:110::1;::::0;13322:18:150;5955:33:110::1;13203:203:150::0;28056:140:110;-1:-1:-1;;;;;28165:24:110;;;;;;:15;:24;;;;;;;;;28158:31;;;;;;;;;;;;;;;;;28133:13;;28158:31;;;28165:24;28158:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28056:140;;;:::o;27738:131::-;27839:23;;;;:11;:23;;;;;;;;;27832:30;;;;;;;;;;;;;;;;;27804:16;;27832:30;;;27839:23;27832:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27832:30:110;;;-1:-1:-1;27832:30:110;;;;;;;;;;;;;;;;;;27738:131;;;:::o;26472:160::-;26550:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26550:24:110;26593:32;;;;:23;:32;;;;;;;;;26586:39;;;;;;;;;-1:-1:-1;;;;;26586:39:110;;;-1:-1:-1;26586:39:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;26593:32;26586:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;26586:39:110;26472:160;-1:-1:-1;;26472:160:110:o;21240:760::-;3012:10;21384:4;2994:29;;;:17;:29;;;;;;21384:4;;2994:29;;2986:38;;;;;;21476:8:::1;::::0;:47:::1;::::0;-1:-1:-1;;;21476:47:110;;-1:-1:-1;;;;;14579:32:150;;;21476:47:110::1;::::0;::::1;14561:51:150::0;14628:18;;;14621:34;;;21407:26:110::1;::::0;;;;;21476:8;;::::1;::::0;:31:::1;::::0;14534:18:150;;21476:47:110::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21406:117:::0;;-1:-1:-1;21406:117:110;-1:-1:-1;21406:117:110;-1:-1:-1;;;;;;21538:22:110;::::1;::::0;21534:420:::1;;-1:-1:-1::0;;;;;21576:17:110;::::1;;::::0;;;:7:::1;:17;::::0;;;;:35;;21597:14;;21576:17;:35:::1;::::0;21597:14;;21576:35:::1;:::i;:::-;::::0;;;-1:-1:-1;21630:236:110::1;::::0;-1:-1:-1;21661:7:110;21687:8;21714:18;21751:21;21791:29:::1;21751:21:::0;21791:5;:29:::1;:::i;:::-;21630:236;::::0;;-1:-1:-1;;;;;14134:15:150;;;14116:34;;14186:15;;;;14181:2;14166:18;;14159:43;14218:18;;;14211:34;;;;14276:2;14261:18;;14254:34;14319:3;14304:19;;14297:35;-1:-1:-1;14348:19:150;;14341:35;;;21630:236:110;;;;;;14065:3:150;21630:236:110;;::::1;21888:38;21912:14:::0;21888:21;:38:::1;:::i;:::-;21880:63:::0;-1:-1:-1;21928:14:110;-1:-1:-1;21880:63:110::1;::::0;-1:-1:-1;;21880:63:110::1;21534:420;21971:5:::0;;-1:-1:-1;21978:14:110;-1:-1:-1;;;3034:1:110::1;21240:760:::0;;;;;;:::o;16740:135::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;16837:31:::1;::::0;;;:23:::1;:31;::::0;;;;16830:38;;-1:-1:-1;;;;;;16830:38:110::1;::::0;;-1:-1:-1;16830:38:110;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;::::1;;::::0;;-1:-1:-1;;16830:38:110::1;::::0;;16740:135::o;1351:20::-;;;;;;;;;;;;;;;-1:-1:-1;1351:20:110;:::o;19899:462::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;-1:-1:-1;;;;;20035:20:110;::::1;20017:15;20035:20:::0;;;:11:::1;:20;::::0;;;;;;;:32;;;;;;;;:40;;;;;;;;20107:24;;;:15:::1;:24:::0;;;;;:36;;;;;;;;:44;;;;;;;;20165:10:::1;::::0;::::1;::::0;20161:52:::1;;20196:7;;;;20161:52;20231:10;::::0;20252:11:::1;::::0;::::1;::::0;20265:10:::1;::::0;::::1;::::0;20285:5:::1;::::0;::::1;::::0;20231:60:::1;::::0;-1:-1:-1;;;20231:60:110;;::::1;::::0;::::1;32088:25:150::0;;;;32129:18;;;32122:34;;;;32172:18;;;32165:34;;;20285:5:110::1;;32242:14:150::0;32235:22;32215:18;;;32208:50;-1:-1:-1;;;;;20231:10:110;;::::1;::::0;:20:::1;::::0;32060:19:150;;20231:60:110::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20301:4;::::0;;::::1;:13:::0;;;20342:12:::1;20324:15;::::0;;::::1;:30:::0;20222:69;-1:-1:-1;19899:462:110;;;;:::o;3200:176::-;3279:19:24;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:24;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:24;1713:19:37;:23;;;3387:66:24;;-1:-1:-1;3436:12:24;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:24;;24350:2:150;3325:201:24;;;24332:21:150;24389:2;24369:18;;;24362:30;24428:34;24408:18;;;24401:62;-1:-1:-1;;;24479:18:150;;;24472:44;24533:19;;3325:201:24;24148:410:150;3325:201:24;3536:12;:16;;-1:-1:-1;;3536:16:24;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:24;;;;;3562:65;3253:3:110::1;:16:::0;;-1:-1:-1;;;;;;3253:16:110::1;3259:10;3253:16;::::0;;3298:1:::1;3279:16;:20:::0;;;-1:-1:-1;3309:26:110;3354:15:::1;718:4;3354:2;:15;:::i;:::-;3345:6;:24:::0;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;20390:36:150;;3721:14:24;;20378:2:150;20363:18;3721:14:24;20238:194:150;3647:99:24;3269:483;3200:176:110:o;30167:117::-;30220:23;30262:15;30255:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30255:22:110;;;-1:-1:-1;30255:22:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30255:22:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30167:117;:::o;24377:283::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;24502:4:::1;-1:-1:-1::0;;;;;24485:22:110;::::1;;24481:173;;;24530:4;::::0;24523:39:::1;::::0;-1:-1:-1;;;;;24530:4:110::1;24549:3:::0;24554:7;24523:25:::1;:39::i;:::-;24377:283:::0;;;:::o;24481:173::-:1;24600:4;::::0;24593:50:::1;::::0;-1:-1:-1;;;;;24600:4:110::1;24623:5:::0;24630:3;24635:7;24593:29:::1;:50::i;25653:219::-:0;25786:16;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25786:16:110;-1:-1:-1;;;;;;25821:24:110;;;;;;:15;:24;;;;;;;;:36;;;;;;;;:44;;;;;;;;;25814:51;;-1:-1:-1;25814:51:110;;;;;;;;-1:-1:-1;25814:51:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25653:219;;;;;;:::o;28272:97::-;28324:14;;:::i;:::-;28350:12;;;;;;;;;;;28357:5;;28350:12;;28357:5;28350:12;;;;;;;;;;;;;;;;;;;;;;;;28272:97;:::o;11639:957::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;-1:-1:-1;;;;;11766:19:110;::::1;11748:15;11766:19:::0;;;:11:::1;:19;::::0;;;;;;;:30;;;;;;;;:37;;;;;;;;11835:23;;;:15:::1;:23:::0;;;;;:34;;;;;;;;:41;;;;;;;;11890:10:::1;::::0;::::1;::::0;11886:52:::1;;11921:7;;24377:283:::0;;;:::o;11886:52::-:1;11990:18:::0;;12017:5:::1;::::0;::::1;::::0;12024:11:::1;::::0;::::1;::::0;11947:89:::1;::::0;11971:6;;11979:9;;11990:18:::1;::::0;12017:5:::1;;::::0;11947:23:::1;:89::i;:::-;-1:-1:-1::0;;;;;12051:24:110;::::1;;::::0;;;:16:::1;:24;::::0;;;;;;;:35;;;;;;;;;-1:-1:-1;12051:40:110::1;12047:382;;;-1:-1:-1::0;;;;;12129:21:110;::::1;12107:19;12129:21:::0;;;:13:::1;:21;::::0;;;;;;;:32;;;;;;;;;12197:11:::1;:22:::0;;;;;;12256:8;;12197:22;;12256:12:::1;::::0;-1:-1:-1;;12256:12:110::1;:::i;:::-;12254:15;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;12234:17;;-1:-1:-1;;;;;12254:15:110;;::::1;::::0;12234:17;;12236:14;;12234:17;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;:35:::0;;-1:-1:-1;;;;;;12234:35:110::1;-1:-1:-1::0;;;;;12234:35:110;;;::::1;::::0;;;::::1;::::0;;;12297:17;;12329:14;;12283:13:::1;::::0;12297:17;;12329:14;;12297:17;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;12297:17:110;;::::1;12283:32:::0;;;;::::1;::::0;;;;;;;;;;:43;;;;;;;;:60;;;;12365:21;;::::1;::::0;;:13:::1;:21:::0;;;;;:32;;;;;;;;;12358:39;12411:7;;;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;-1:-1:-1;;12411:7:110;;;;;;;-1:-1:-1;;;;;;12411:7:110::1;::::0;;;;;-1:-1:-1;;12047:382:110::1;-1:-1:-1::0;;;;;12446:19:110;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:30;;;;;;;;:37;;;;;;;;12439:44;;-1:-1:-1;;;;;;12439:44:110::1;::::0;;-1:-1:-1;12439:44:110;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;12439:44:110;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;12500:23;;;:15:::1;:23:::0;;;;;:34;;;;;;;;:41;;;;;;;;12493:48;;;;;::::1;::::0;;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;12552:24;;;:16:::1;:24:::0;;;;;:35;;;;;;;;:37;;;::::1;::::0;::::1;:::i;:::-;;;;;;11738:858;;11639:957:::0;;;:::o;2523:57::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2523:57:110;;-1:-1:-1;2523:57:110:o;7015:199::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;7090:23:110;::::1;7082:32;;;::::0;::::1;;7124:8;:31:::0;;-1:-1:-1;;;;;;7124:31:110::1;-1:-1:-1::0;;;;;7124:31:110;::::1;::::0;;::::1;::::0;;;7170:37:::1;::::0;;27562:21:150;;;27619:1;27599:18;;;27592:29;;;;-1:-1:-1;;;27652:2:150;27637:18;;27630:38;27735:4;27720:20;;;27713:62;;;;-1:-1:-1;;;7170:37:110;;-1:-1:-1;;;;;;;;;;7170:37:110;27700:3:150;27685:19;7170:37:110::1;27350:431:150::0;19169:463:110;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;-1:-1:-1;;;;;19305:20:110;::::1;19287:15;19305:20:::0;;;:11:::1;:20;::::0;;;;;;;:32;;;;;;;;:40;;;;;;;;19377:24;;;:15:::1;:24:::0;;;;;:36;;;;;;;;:44;;;;;;;;19435:10:::1;::::0;::::1;::::0;19431:52:::1;;19466:7;;;;19431:52;19502:10;::::0;19523:11:::1;::::0;::::1;::::0;19536:10:::1;::::0;::::1;::::0;19556:5:::1;::::0;::::1;::::0;19502:60:::1;::::0;-1:-1:-1;;;19502:60:110;;::::1;::::0;::::1;32088:25:150::0;;;;32129:18;;;32122:34;;;;32172:18;;;32165:34;;;19556:5:110::1;;32242:14:150::0;32235:22;32215:18;;;32208:50;-1:-1:-1;;;;;19502:10:110;;::::1;::::0;:20:::1;::::0;32060:19:150;;19502:60:110::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19572:4;::::0;;::::1;:13:::0;;;19613:12:::1;19595:15;::::0;;::::1;:30:::0;19492:70;-1:-1:-1;19169:463:110;;;;:::o;25242:177::-;25341:12;;:::i;:::-;-1:-1:-1;;;;;;25372:20:110;;;;;;;:11;:20;;;;;;;;:32;;;;;;;;;:40;;;;;;;;;25365:47;;;;;;;;;;;;;;-1:-1:-1;25365:47:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25365:47:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25242:177::o;7392:197::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;7466:23:110;::::1;7458:32;;;::::0;::::1;;7500:8;:31:::0;;-1:-1:-1;;;;;;7500:31:110::1;-1:-1:-1::0;;;;;7500:31:110;::::1;::::0;;::::1;::::0;;;7546:36:::1;::::0;;24775:21:150;;;24832:1;24812:18;;;24805:29;;;;-1:-1:-1;;;24865:2:150;24850:18;;24843:37;24947:4;24932:20;;;24925:62;;;;-1:-1:-1;;;7546:36:110;;-1:-1:-1;;;;;;;;;;7546:36:110;24912:3:150;24897:19;7546:36:110::1;24563:430:150::0;17490:504:110;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;17593:52:::1;17611:9;;::::0;::::1;:2:::0;:9:::1;:::i;:::-;17622:2;:12;;;17636:2;:8;;;17593:17;:52::i;:::-;17588:90;;3269:483:24::0;3200:176:110:o;17588:90::-:1;17687:24;17714:15;17730:17;17687:24:::0;17748:9:::1;;::::0;::::1;:2:::0;:9:::1;:::i;:::-;-1:-1:-1::0;;;;;17730:28:110::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;17730:28:110;;;17759:12;;::::1;;17730:42:::0;;;;;;;17773:8;;::::1;;17730:52:::0;;;;;;;;17714:69;;;::::1;;;;;:::i;:::-;;;;;;;;;;;17687:96;;17810:2;:15;;;17793:1;:14;;:32;;;;17843:2;:6;;;;;;;;;;:::i;:::-;17835:5;::::0;::::1;:14:::0;;-1:-1:-1;;17835:14:110::1;::::0;::::1;;::::0;;;::::1;::::0;;17872:11:::1;::::0;::::1;;17859:10;::::0;::::1;:24:::0;17900:5:::1;::::0;::::1;;17893:4;::::0;::::1;:12:::0;17922:5:::1;::::0;::::1;;17915:4;::::0;::::1;:12:::0;17835:14:::1;17947:8:::0;;::::1;;17937:7;::::0;::::1;:18:::0;17975:12:::1;17965:7;::::0;;::::1;:22:::0;17490:504::o;3547:172::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;3615:20:110;::::1;3607:29;;;::::0;::::1;;3646:4;:21:::0;;-1:-1:-1;;;;;;3646:21:110::1;-1:-1:-1::0;;;;;3646:21:110;::::1;::::0;;::::1;::::0;;;3682:30:::1;::::0;;21905:21:150;;;21962:1;21942:18;;;21935:29;;;;-1:-1:-1;;;21995:2:150;21980:18;;21973:34;22074:4;22059:20;;;22052:62;;;;-1:-1:-1;;;3682:30:110;;-1:-1:-1;;;;;;;;;;3682:30:110;22039:3:150;22024:19;3682:30:110::1;21693:427:150::0;18209:697:110;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;18335:46:::1;18353:7;18362:10;18374:6;18335:17;:46::i;:::-;18330:84;;24377:283:::0;;;:::o;18330:84::-:1;-1:-1:-1::0;;;;;18511:26:110;::::1;18501:7;18511:26:::0;;;:17:::1;:26;::::0;;;;;;;:38;;;;;;;;:46;;;;;;;;;18589:15:::1;18605:22:::0;;:26:::1;::::0;-1:-1:-1;;18605:26:110::1;:::i;:::-;18589:43;;;;;;;;:::i;:::-;;;;;;;;;;;18567:15;18583:2;18567:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;:65;;:19:::1;::::0;;;::::1;;:65:::0;;-1:-1:-1;;;;;18567:65:110;;::::1;-1:-1:-1::0;;;;;;18567:65:110;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;18567:65:110;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;18567:65:110::1;-1:-1:-1::0;18567:65:110;;::::1;;;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;18660:15:::1;:19:::0;;18748:2;;18642:17:::1;::::0;18567:19;;18748:2;;18660:19;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;:26:::0;-1:-1:-1;;;;;18660:26:110::1;18642:45:::0;;;::::1;::::0;;;;;;;;18688:15:::1;:19:::0;;18642:45;;18660:19;18704:2;;18688:19;::::1;;;;;:::i;:::-;;;;;;;;;;;:29;;;18642:76;;;;;;;;;;;:103;18719:15;18735:2;18719:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;:25;;::::0;18642:103;;;;::::1;::::0;;;;;;;;;;:108;;;;-1:-1:-1;;;;;18768:26:110;::::1;::::0;;:17:::1;:26:::0;;;;;:38;;;;;;;;:46;;;;;;;;18761:53;18824:15:::1;:21:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;18824:21:110;;;;;;::::1;;::::0;;-1:-1:-1;;;;;;18824:21:110::1;::::0;;-1:-1:-1;18824:21:110;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;18824:21:110::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;;;;;-1:-1:-1;;;;;18856:29:110;::::1;::::0;;:20:::1;:29:::0;;;;;;:41;;;;;;;;:43;;;::::1;::::0;::::1;:::i;:::-;;;;;;18320:586;18209:697:::0;;;:::o;6604:231::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;6687:27:110;::::1;6679:36;;;::::0;::::1;;6725:12;:43:::0;;-1:-1:-1;;;;;;6725:43:110::1;-1:-1:-1::0;;;;;6725:43:110;::::1;::::0;;::::1;::::0;;;6783:45:::1;::::0;;25629:21:150;;;25686:2;25666:18;;;25659:30;;;;-1:-1:-1;;;25720:2:150;25705:18;;25698:42;25807:4;25792:20;;;25785:62;;;;-1:-1:-1;;;6783:45:110;;-1:-1:-1;;;;;;;;;;6783:45:110;25772:3:150;25757:19;6783:45:110::1;25417:436:150::0;9568:831:110;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;9693:53:::1;9714:6;:13;;;9729:6;:16;;;9693:20;:53::i;:::-;9678:12;::::0;;::::1;:68:::0;;;9768:13;;-1:-1:-1;;;;;9756:26:110;;::::1;;::::0;;;:11:::1;:26;::::0;;;;;;9783:16;;::::1;::::0;;9756:44;;;;;;;;9801:12;;9756:58;;;;;;;:67;;;;-1:-1:-1;;;;;;9756:67:110::1;::::0;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;9756:67:110;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;9756:67:110;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;9756:67:110::1;::::0;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;;9834:31;;;:16:::1;:31:::0;;;;;9866:16;;9834:49;;;;;;;:51;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;9917:13:110;;-1:-1:-1;;;;;9900:31:110::1;;::::0;;;:16:::1;:31;::::0;;;;;;;9932:16;;::::1;::::0;9900:49;;;;;;;;-1:-1:-1;9900:54:110::1;9896:233;;;10031:16;::::0;;::::1;::::0;;10019:29:::1;::::0;;;:11:::1;:29:::0;;;;;;;:36;9984:13;;-1:-1:-1;;;;;9970:28:110;;::::1;::::0;;:13:::1;:28:::0;;;;;9999:16;;9970:46;;;;;;;:85;;;;10081:16;;10069:29;;;;;;;10104:13;;10069:49;;-1:-1:-1;10069:49:110;::::1;::::0;;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10069:49:110::1;::::0;;;::::1;::::0;;;::::1;::::0;;9896:233:::1;10170:5;10139:28;::::0;::::1;:36:::0;;;10201:13;;-1:-1:-1;;;;;10185:30:110::1;::::0;;:15:::1;:30;::::0;;;;;;;10216:16;;::::1;::::0;;10185:48;;;;;;;;10234:12;;::::1;::::0;10185:62;;;;;;;;:75;;;;;;;::::1;::::0;-1:-1:-1;10185:75:110;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;10185:75:110::1;::::0;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;;10295:13;;10310:16;;10363:10:::1;::::0;::::1;::::0;-1:-1:-1;10375:16:110;::::1;::::0;10271:121:::1;::::0;10295:13;10310:16;;10185:75;-1:-1:-1;10363:10:110;10271:23:::1;:121::i;:::-;9568:831:::0;;:::o;29702:311::-;29838:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29838:21:110;29879:46;29897:7;29906:10;29918:6;29879:17;:46::i;:::-;29871:55;;;;;;-1:-1:-1;;;;;29959:26:110;;;;;;:17;:26;;;;;;;;:38;;;;;;;;:46;;;;;;;;;29943:15;:63;;:15;;29959:46;29943:63;;;;;;:::i;:::-;;;;;;;;;;29936:70;;;;;;;;29943:63;;;;;;;;29936:70;;-1:-1:-1;;;;;29936:70:110;;;-1:-1:-1;29936:70:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29936:70:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;29702:311:110:o;2080:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13842:967::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;13942:32:::1;13977:29:::0;;;:24:::1;:29;::::0;;;;;;;13942:64;;;;;;;;;-1:-1:-1;;;;;13942:64:110::1;;::::0;::::1;::::0;;;-1:-1:-1;13942:64:110;::::1;::::0;-1:-1:-1;13942:64:110;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;::::1;;;;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;13942:64:110;;;14042:36;;;:15:::1;:36:::0;;;;;13942:64;;14089:714:::1;14110:15:::0;;14106:19;::::1;14089:714;;;14161:3;14146:8;14155:1;14146:11;;;;;;;;:::i;:::-;;;;;;;;;:18;14142:620;;;14188:5;14184:391;;;14240:12:::0;;:19;-1:-1:-1;;;;;14217:43:110::1;;::::0;;;:22:::1;:43;::::0;;;;;;;14261:12;;:22;::::1;::::0;14217:67;;;;;;;:69;;;::::1;::::0;::::1;:::i;:::-;;;;;;14184:391;;;14357:12:::0;;:19;-1:-1:-1;;;;;14333:44:110::1;;::::0;;;:23:::1;:44;::::0;;;;;;;14378:12;;:22;::::1;::::0;14333:68;;;;;;;:70;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;14441:12:110;;:19;-1:-1:-1;;;;;14425:36:110::1;14551:5;14425:36:::0;;;:15:::1;:36;::::0;;;;;;;14462:12;;:22;::::1;::::0;14425:60;;;;;;;14486:12;;:18;::::1;::::0;14425:80;;;;;;;:123:::1;;:131:::0;;-1:-1:-1;;14425:131:110::1;::::0;;14184:391:::1;14616:15:::0;;14607:8;;14616:19:::1;::::0;14634:1:::1;::::0;14616:19:::1;:::i;:::-;14607:29;;;;;;;;:::i;:::-;;;;;;;;;14593:8;14602:1;14593:11;;;;;;;;:::i;:::-;;;;;;;;:43;;;;14654:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;-1:-1:-1;;14654:14:110;;;;;;;;;;;;;;14694:29;;;:24:::1;:29:::0;;;;;14687:36;;-1:-1:-1;;;;;;14687:36:110::1;::::0;;-1:-1:-1;14687:36:110;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;14687:36:110::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;-1:-1:-1;14741:7:110::1;::::0;-1:-1:-1;;14741:7:110::1;14142:620;14787:3;;14089:714;;;;13932:877;;13842:967:::0;;:::o;23942:140::-;24010:10;24022:19;;;;:7;:19;;;;;;23991:4;;23984:58;;-1:-1:-1;;;;;23991:4:110;;;;23984:25;:58::i;:::-;24060:10;24074:1;24052:19;;;:7;:19;;;;;:23;23942:140::o;4182:192::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;4247:18:110;::::1;4239:27;;;::::0;::::1;;4292:12;::::0;-1:-1:-1;;;;;4284:20:110;;::::1;4292:12:::0;::::1;4284:20;4276:29;;;::::0;::::1;;4315:3;:10:::0;;-1:-1:-1;;;;;;4315:10:110::1;-1:-1:-1::0;;;;;4315:10:110;::::1;::::0;;::::1;::::0;;;4340:27:::1;::::0;;21037:21:150;;;21094:1;21074:18;;;21067:29;;;;-1:-1:-1;;;21127:2:150;21112:18;;21105:33;21205:4;21190:20;;;21183:62;;;;-1:-1:-1;;;4340:27:110;;-1:-1:-1;;;;;;;;;;4340:27:110;21170:3:150;21155:19;4340:27:110::1;20825:426:150::0;23654:210:110;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;23728:11:::1;::::0;23741::::1;::::0;23709:4:::1;::::0;23702:51:::1;::::0;-1:-1:-1;;;;;23709:4:110;;::::1;::::0;23728:11;::::1;::::0;23702:25:::1;:51::i;:::-;23789:3;::::0;23794:11:::1;::::0;23770:4:::1;::::0;23763:43:::1;::::0;-1:-1:-1;;;;;23770:4:110;;::::1;::::0;23789:3;::::1;::::0;23763:25:::1;:43::i;:::-;23831:1;23817:11;:15:::0;;;23842:11:::1;:15:::0;23654:210::o;4564:153::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;4629:18:110;::::1;4621:27;;;::::0;::::1;;4658:3;:10:::0;;-1:-1:-1;;;;;;4658:10:110::1;-1:-1:-1::0;;;;;4658:10:110;::::1;::::0;;::::1;::::0;;;4683:27:::1;::::0;;23170:21:150;;;23227:1;23207:18;;;23200:29;;;;-1:-1:-1;;;23260:2:150;23245:18;;23238:33;23338:4;23323:20;;;23316:62;;;;-1:-1:-1;;;4683:27:110;;-1:-1:-1;;;;;;;;;;4683:27:110;23303:3:150;23288:19;4683:27:110::1;22958:426:150::0;26092:163:110;26171:25;;:::i;:::-;-1:-1:-1;26215:33:110;;;;:24;:33;;;;;;;;;26208:40;;;;;;;;;-1:-1:-1;;;;;26208:40:110;;;;;;;-1:-1:-1;26208:40:110;;;-1:-1:-1;26208:40:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26208:40:110;;;;26092:163::o;16417:179::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;16542:33:::1;::::0;;;:23:::1;:33;::::0;;;;;;;;:47;;;;-1:-1:-1;;;;;;16542:47:110::1;-1:-1:-1::0;;;;;16542:47:110;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;16542:47:110;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;16542:47:110;;::::1;::::0;-1:-1:-1;16542:47:110;;;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;;;;;16417:179:110:o;12948:656::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;13123:12;;:19;-1:-1:-1;;;;;13107:36:110;;::::1;;::::0;;;:15:::1;:36;::::0;;;;;;;:46;;-1:-1:-1;13107:46:110;;::::1;::::0;;;;;;;;::::1;::::0;;;13164:29;;;:24:::1;:29:::0;;;;;;:38;;;;;;-1:-1:-1;;;;;;13164:38:110::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;13164:38:110;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;13164:38:110::1;::::0;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;13250:12:::1;13164:38;::::0;;::::1;13212:50:::0;13273:325;::::1;;;13321:12:::0;;:19;-1:-1:-1;;;;;13298:43:110::1;;::::0;;;:22:::1;:43;::::0;;;;;;;13342:12;;:22;::::1;::::0;13298:67;;;;;;;:69;;;::::1;::::0;::::1;:::i;:::-;;;;;;24377:283:::0;;;:::o;13273:325::-:1;13422:12:::0;;:19;-1:-1:-1;;;;;13398:44:110::1;;::::0;;;:23:::1;:44;::::0;;;;;;;13443:12;;:22;::::1;::::0;13398:68;;;;;;;:70;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;13498:12:110;;:19;-1:-1:-1;;;;;13482:36:110::1;;::::0;;;:15:::1;:36;::::0;;;;;;;13519:12;;:22;::::1;::::0;13482:60;;;;;;;13543:12;;:18;::::1;::::0;13482:80;;;;;;;;;:98:::1;;:105:::0;;-1:-1:-1;;13482:105:110::1;-1:-1:-1::0;13482:105:110::1;::::0;;-1:-1:-1;;12948:656:110:o;8206:230::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;8314:1:::1;8294:17;:21;8286:30;;;::::0;::::1;;8326:16;:36:::0;;;8377:52:::1;::::0;;25210:21:150;;;25267:2;25247:18;;;25240:30;;;;-1:-1:-1;;;25301:2:150;25286:18;;25279:46;25392:4;25377:20;;25370:36;;;8377:52:110::1;::::0;25357:3:150;25342:19;8377:52:110::1;24998:414:150::0;24793:152:110;24912:6;;24876:12;;;:33;;;-1:-1:-1;;;24876:33:110;;;;24852:4;;24935:3;;718:4;;24912:6;;-1:-1:-1;;;;;24876:12:110;;;;:31;;:33;;;;;;;;;;;;:12;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;;;:::i;:::-;24875:57;;;;:::i;:::-;:63;;;;:::i;:::-;24868:70;;24793:152;:::o;32072:373::-;32193:15;:22;32173:4;;32189:70;;-1:-1:-1;32243:5:110;32236:12;;32189:70;-1:-1:-1;;;;;32311:25:110;;32268:24;32311:25;;;:17;:25;;;;;;;;:36;;;;;;;;:43;;;;;;;;;32295:15;:60;;:15;;32311:43;32295:60;;;;;;:::i;:::-;;;;;;;;;;;;;;32372:8;;32295:60;;-1:-1:-1;;;;;;32372:18:110;;;:8;;:18;:46;;;;;32409:9;32394:1;:11;;;:24;32372:46;:66;;;;;32433:5;32422:1;:7;;;:16;32372:66;32365:73;32072:373;-1:-1:-1;;;;;32072:373:110:o;9106:208::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;9244:6:::1;:16:::0;;;9275:32:::1;::::0;;22337:21:150;;;22394:1;22374:18;;;22367:29;;;;-1:-1:-1;;;22427:2:150;22412:18;;22405:36;22508:4;22493:20;;22486:36;;;9275:32:110::1;::::0;22473:3:150;22458:19;9275:32:110::1;22125:403:150::0;2351:45:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2351:45:110;;-1:-1:-1;2351:45:110;;-1:-1:-1;2351:45:110:o;8659:272::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;8785:1:::1;8759:23;:27;8751:36;;;::::0;::::1;;8797:22;:48:::0;;;8860:64:::1;::::0;;22745:21:150;;;22802:2;22782:18;;;22775:30;;;;-1:-1:-1;;;22836:2:150;22821:18;;22814:52;22933:4;22918:20;;22911:36;;;8860:64:110::1;::::0;22898:3:150;22883:19;8860:64:110::1;22533:420:150::0;20485:424:110;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;20639:9;;-1:-1:-1;;;;;20627:22:110::1;20609:15;20627:22:::0;;;:11:::1;:22;::::0;;;;;;;20650:12;;::::1;::::0;20627:36;;;;;;;20664:8;;::::1;::::0;20627:46;;;;;;;20687:10:::1;::::0;::::1;::::0;20683:52:::1;;20718:7;3269:483:24::0;3200:176:110:o;20683:52::-:1;20764:18;::::0;::::1;::::0;20744:17:::1;::::0;::::1;:38:::0;20813:19:::1;::::0;::::1;::::0;20792:18:::1;::::0;::::1;:40:::0;20856:12:::1;::::0;::::1;::::0;20842:11:::1;::::0;::::1;:26:::0;20891:11:::1;::::0;::::1;::::0;20878:10:::1;::::0;;::::1;:24:::0;20485:424;:::o;28889:160::-;28954:4;29011:28;;;:16;:28;;;;;29040:1;29011:31;;;28977;;:65;;29011:31;28977:65;:::i;5348:204::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;5430:23:110;::::1;5422:32;;;::::0;::::1;;-1:-1:-1::0;;;;;5464:28:110;::::1;;::::0;;;:17:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;5464:35:110::1;-1:-1:-1::0;5464:35:110::1;::::0;;5514:31;;13349:51:150;;;5514:31:110::1;::::0;13322:18:150;5514:31:110::1;13203:203:150::0;16990:366:110;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;17094:47:::1;17119:1;:8;;;17129:1;:11;;;17094:24;:47::i;:::-;17084:7;::::0;::::1;:57:::0;;;17161:12:::1;17151:7;::::0;::::1;:22:::0;;;17183:15:::1;:23:::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;17183:23:110;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;17183:23:110::1;-1:-1:-1::0;;;;;17183:23:110;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;17183:23:110::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17183:23:110;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;;17268:22;:26:::1;::::0;17183:23;17268:26:::1;:::i;:::-;17234:8:::0;;-1:-1:-1;;;;;17216:27:110;;::::1;;::::0;;;:17:::1;:27;::::0;;;;;;;17244:11;;::::1;::::0;;17216:40;;;;;;;;17257:7;;::::1;::::0;17216:49;;;;;;;:78;;;;17325:8;;17304:30;;::::1;::::0;;:20:::1;:30:::0;;;;;17335:11;;17304:43;;;;;;;;:45;;;::::1;::::0;::::1;:::i;:::-;;;;;;16990:366:::0;:::o;7773:212::-;2925:3;;-1:-1:-1;;;;;2925:3:110;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;7851:25:110;::::1;7843:34;;;::::0;::::1;;7887:10;:36:::0;;-1:-1:-1;;;;;;7887:36:110::1;-1:-1:-1::0;;;;;7887:36:110;::::1;::::0;;::::1;::::0;;;7938:40:::1;::::0;;21468:21:150;;;21525:1;21505:18;;;21498:29;;;;-1:-1:-1;;;21558:2:150;21543:18;;21536:39;21642:4;21627:20;;;21620:62;;;;-1:-1:-1;;;7938:40:110;;-1:-1:-1;;;;;;;;;;7938:40:110;21607:3:150;21592:19;7938:40:110::1;21256:432:150::0;941:175:68;1050:58;;-1:-1:-1;;;;;14579:32:150;;1050:58:68;;;14561:51:150;14628:18;;;14621:34;;;1023:86:68;;1043:5;;-1:-1:-1;;;;14534:18:150;;1050:58:68;;;;-1:-1:-1;;1050:58:68;;;;;;;;;;;;;;-1:-1:-1;;;;;1050:58:68;-1:-1:-1;;;;;;1050:58:68;;;;;;;;;;;1023:19;:86::i;130:127:127:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;32855:1603:110:-;33055:10;33068:5;:13;;33080:1;33068:13;;;33076:1;33068:13;33091:17;33111:28;;;:16;:28;;;;;33055:26;;;;;;-1:-1:-1;33207:5:110;33202:91;;33254:1;33256:5;33254:8;;;;;;;:::i;:::-;;;33234:17;:28;:59;;33276:17;33234:59;;;33265:1;33267:5;33265:8;;;;;;;:::i;:::-;;;33234:59;33214:79;;33202:91;33315:5;:67;;33365:17;33354:1;33356:5;33354:8;;;;;;;:::i;:::-;;;:28;;;;:::i;:::-;33315:67;;;33334:17;33323:1;33325:5;33323:8;;;;;;;:::i;:::-;;;:28;;;;:::i;:::-;33304:1;33306:5;33304:8;;;;;;;:::i;:::-;;:78;33402:5;:65;;33450:17;33440:7;;:27;;;;:::i;:::-;33402:65;;;33420:17;33410:7;;:27;;;;:::i;:::-;33392:7;:75;33498:5;:87;;-1:-1:-1;;;;;33547:18:110;;;;;;:9;:18;;;;;;:38;;33568:17;;33547:38;:::i;:::-;33498:87;;;-1:-1:-1;;;;;33506:18:110;;;;;;:9;:18;;;;;;:38;;33527:17;;33506:38;:::i;:::-;-1:-1:-1;;;;;33477:18:110;;;;;;:9;:18;;;;;;;;:108;;;;33631:19;;;:7;:19;;;;;33651:12;33631:33;;;;;;:53;;33667:17;;33631:53;:::i;:::-;33595:19;;;;:7;:19;;;;;;;;33615:12;33595:33;;;;;;;:89;;;;33722:15;;:30;;-1:-1:-1;;;33722:30:110;;;;33595:19;;33722:15;;;;-1:-1:-1;;;;;33722:15:110;;-1:-1:-1;;33722:30:110;;;;;33595:19;;33722:30;;;;;;:15;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33807:36;;-1:-1:-1;;;33807:36:110;;;;;30977:25:150;;;33695:57:110;;-1:-1:-1;;;;;;33807:24:110;;;;;30950:18:150;;33807:36:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33770:19;;;;:7;:19;;;;;;;;33790:12;33770:33;;;;;;;;:73;;33762:109;;;;-1:-1:-1;;;33762:109:110;;23998:2:150;33762:109:110;;;23980:21:150;24037:2;24017:18;;;24010:30;24076:25;24056:18;;;24049:53;24119:18;;33762:109:110;23796:347:150;33762:109:110;33885:38;;-1:-1:-1;;;33885:38:110;;;;;30977:25:150;;;-1:-1:-1;;;;;33885:26:110;;;;;30950:18:150;;33885:38:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33927:1;33885:43;33882:483;;;33965:37;;-1:-1:-1;;;33965:37:110;;;;;30977:25:150;;;33944:18:110;;-1:-1:-1;;;;;33965:25:110;;;;;30950:18:150;;33965:37:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33944:58;;34016:17;34036:5;:13;;34048:1;34036:13;;;34044:1;34036:13;34016:33;;;;34066:13;34063:292;;;34114:5;:75;;34172:17;34157:5;34163;34157:12;;;;;;;:::i;:::-;;;:32;;;;:::i;:::-;34114:75;;;34137:17;34122:5;34128;34122:12;;;;;;;:::i;:::-;;;:32;;;;:::i;:::-;34099:5;34105;34099:12;;;;;;;:::i;:::-;;:90;34063:292;;;34251:5;:89;;34323:17;34301:5;34307:12;34301:19;;;;;;;:::i;:::-;;;:39;;;;:::i;:::-;34251:89;;;34281:17;34259:5;34265:12;34259:19;;;;;;;:::i;:::-;;;:39;;;;:::i;:::-;34228:5;34234:12;34228:19;;;;;;;:::i;:::-;;:112;34063:292;33930:435;;33882:483;34389:62;;;19106:14:150;;19099:22;19081:41;;19165:14;;19158:22;19153:2;19138:18;;19131:50;19197:18;;;19190:34;;;19255:2;19240:18;;19233:34;;;19298:3;19283:19;;19276:35;;;34389:62:110;;19068:3:150;19053:19;34389:62:110;;;;;;;33045:1413;;;32855:1603;;;;;;:::o;1355:203:68:-;1482:68;;-1:-1:-1;;;;;13669:15:150;;;1482:68:68;;;13651:34:150;13721:15;;13701:18;;;13694:43;13753:18;;;13746:34;;;1455:96:68;;1475:5;;-1:-1:-1;;;;13586:18:150;;1482:68:68;13411:375:150;5196:642:68;5641:69;;;;;;;;;;;;;;;;;;-1:-1:-1;;5641:69:68;;-1:-1:-1;;;;;5641:27:68;;;5669:4;;5641:27;:69::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;-1:-1:-1;;;5720:111:68;;27988:2:150;5720:111:68;;;27970:21:150;28027:2;28007:18;;;28000:30;28066:34;28046:18;;;28039:62;-1:-1:-1;;;28117:18:150;;;28110:40;28167:19;;5720:111:68;27786:406:150;4108:223:70;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4272:21;:52::i;:::-;4265:59;4108:223;-1:-1:-1;;;;4108:223:70:o;5165:446::-;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:70;;23591:2:150;5354:81:70;;;23573:21:150;23630:2;23610:18;;;23603:30;23669:34;23649:18;;;23642:62;-1:-1:-1;;;23720:18:150;;;23713:36;23766:19;;5354:81:70;23389:402:150;5354:81:70;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:70;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;5165:446;-1:-1:-1;;;;;;;5165:446:70:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:17;;7902:286;;-1:-1:-1;;;;;1713:19:37;;;8113:60:70;;;;-1:-1:-1;;;8113:60:70;;27194:2:150;8113:60:70;;;27176:21:150;27233:2;27213:18;;;27206:30;27272:31;27252:18;;;27245:59;27321:18;;8113:60:70;26992:353:150;8113:60:70;-1:-1:-1;8208:10:70;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9324:20;;-1:-1:-1;;;9324:20:70;;;;9331:12;;9324:20;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;14:134:150:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:950::-;338:5;386:6;374:9;369:3;365:19;361:32;358:52;;;406:1;403;396:12;358:52;428:22;;:::i;:::-;419:31;;473:29;492:9;473:29;:::i;:::-;466:5;459:44;563:2;552:9;548:18;535:32;530:2;523:5;519:14;512:56;628:2;617:9;613:18;600:32;595:2;588:5;584:14;577:56;693:2;682:9;678:18;665:32;660:2;653:5;649:14;642:56;759:3;748:9;744:19;731:33;725:3;718:5;714:15;707:58;826:3;815:9;811:19;798:33;792:3;785:5;781:15;774:58;865:36;896:3;885:9;881:19;865:36;:::i;:::-;859:3;852:5;848:15;841:61;963:3;952:9;948:19;935:33;929:3;922:5;918:15;911:58;988:3;1051:2;1040:9;1036:18;1023:32;1018:2;1011:5;1007:14;1000:56;;1075:3;1138:2;1127:9;1123:18;1110:32;1105:2;1098:5;1094:14;1087:56;;1162:3;1225:2;1214:9;1210:18;1197:32;1192:2;1185:5;1181:14;1174:56;;286:950;;;;:::o;1241:247::-;1300:6;1353:2;1341:9;1332:7;1328:23;1324:32;1321:52;;;1369:1;1366;1359:12;1321:52;1408:9;1395:23;1427:31;1452:5;1427:31;:::i;1493:456::-;1570:6;1578;1586;1639:2;1627:9;1618:7;1614:23;1610:32;1607:52;;;1655:1;1652;1645:12;1607:52;1694:9;1681:23;1713:31;1738:5;1713:31;:::i;:::-;1763:5;-1:-1:-1;1820:2:150;1805:18;;1792:32;1833:33;1792:32;1833:33;:::i;:::-;1493:456;;1885:7;;-1:-1:-1;;;1939:2:150;1924:18;;;;1911:32;;1493:456::o;1954:315::-;2022:6;2030;2083:2;2071:9;2062:7;2058:23;2054:32;2051:52;;;2099:1;2096;2089:12;2051:52;2138:9;2125:23;2157:31;2182:5;2157:31;:::i;:::-;2207:5;2259:2;2244:18;;;;2231:32;;-1:-1:-1;;;1954:315:150:o;2274:383::-;2351:6;2359;2367;2420:2;2408:9;2399:7;2395:23;2391:32;2388:52;;;2436:1;2433;2426:12;2388:52;2475:9;2462:23;2494:31;2519:5;2494:31;:::i;:::-;2544:5;2596:2;2581:18;;2568:32;;-1:-1:-1;2647:2:150;2632:18;;;2619:32;;2274:383;-1:-1:-1;;;2274:383:150:o;2662:791::-;2757:6;2765;2773;2781;2789;2797;2850:3;2838:9;2829:7;2825:23;2821:33;2818:53;;;2867:1;2864;2857:12;2818:53;2906:9;2893:23;2925:31;2950:5;2925:31;:::i;:::-;2975:5;-1:-1:-1;3027:2:150;3012:18;;2999:32;;-1:-1:-1;3078:2:150;3063:18;;3050:32;;-1:-1:-1;3134:2:150;3119:18;;3106:32;3147:30;3106:32;3147:30;:::i;:::-;3196:7;-1:-1:-1;3255:3:150;3240:19;;3227:33;3269:30;3227:33;3269:30;:::i;:::-;3318:7;-1:-1:-1;3377:3:150;3362:19;;3349:33;3391:30;3349:33;3391:30;:::i;:::-;3440:7;3430:17;;;2662:791;;;;;;;;:::o;3458:452::-;3544:6;3552;3560;3568;3621:3;3609:9;3600:7;3596:23;3592:33;3589:53;;;3638:1;3635;3628:12;3589:53;3677:9;3664:23;3696:31;3721:5;3696:31;:::i;:::-;3746:5;3798:2;3783:18;;3770:32;;-1:-1:-1;3849:2:150;3834:18;;3821:32;;3900:2;3885:18;3872:32;;-1:-1:-1;3458:452:150;-1:-1:-1;;;3458:452:150:o;3915:241::-;3971:6;4024:2;4012:9;4003:7;3999:23;3995:32;3992:52;;;4040:1;4037;4030:12;3992:52;4079:9;4066:23;4098:28;4120:5;4098:28;:::i;4161:245::-;4228:6;4281:2;4269:9;4260:7;4256:23;4252:32;4249:52;;;4297:1;4294;4287:12;4249:52;4329:9;4323:16;4348:28;4370:5;4348:28;:::i;4411:273::-;4503:6;4556:2;4544:9;4535:7;4531:23;4527:32;4524:52;;;4572:1;4569;4562:12;4524:52;4604:9;4598:16;4623:31;4648:5;4623:31;:::i;4689:202::-;4783:6;4836:3;4824:9;4815:7;4811:23;4807:33;4804:53;;;4853:1;4850;4843:12;4804:53;-1:-1:-1;4876:9:150;4689:202;-1:-1:-1;4689:202:150:o;4896:1107::-;4988:6;5041:3;5029:9;5020:7;5016:23;5012:33;5009:53;;;5058:1;5055;5048:12;5009:53;5084:22;;:::i;:::-;5129:29;5148:9;5129:29;:::i;:::-;5122:5;5115:44;5219:2;5208:9;5204:18;5191:32;5186:2;5179:5;5175:14;5168:56;5284:2;5273:9;5269:18;5256:32;5251:2;5244:5;5240:14;5233:56;5349:2;5338:9;5334:18;5321:32;5316:2;5309:5;5305:14;5298:56;5387:36;5418:3;5407:9;5403:19;5387:36;:::i;:::-;5381:3;5370:15;;5363:61;5485:3;5470:19;;;5457:33;5440:15;;;5433:58;5552:3;5537:19;;;5524:33;5507:15;;;5500:58;5619:3;5604:19;;;5591:33;5574:15;;;5567:58;5644:3;5692:18;;;5679:32;5663:14;;;5656:56;5731:3;5779:18;;;5766:32;5750:14;;;5743:56;5818:3;5866:18;;;5853:32;5837:14;;;5830:56;5905:3;5953:18;;;5940:32;5924:14;;;5917:56;;;;-1:-1:-1;5374:5:150;4896:1107;-1:-1:-1;4896:1107:150:o;6008:863::-;6102:6;6155:3;6143:9;6134:7;6130:23;6126:33;6123:53;;;6172:1;6169;6162:12;6123:53;6205:2;6199:9;6247:3;6239:6;6235:16;6317:6;6305:10;6302:22;6281:18;6269:10;6266:34;6263:62;6260:185;;;6367:10;6362:3;6358:20;6355:1;6348:31;6402:4;6399:1;6392:15;6430:4;6427:1;6420:15;6260:185;6461:2;6454:22;6500:16;;6485:32;;6560:2;6545:18;;6539:25;6593:1;6583:12;;6573:40;;6609:1;6606;6599:12;6573:40;6641:2;6629:15;;6622:30;6706:2;6691:18;;;6685:25;6668:15;;;6661:50;6756:2;6741:18;;6735:25;6769:30;6735:25;6769:30;:::i;:::-;6827:2;6815:15;;6808:32;6819:6;6008:863;-1:-1:-1;;;6008:863:150:o;6876:768::-;6980:6;6988;7032:9;7023:7;7019:23;7062:3;7058:2;7054:12;7051:32;;;7079:1;7076;7069:12;7051:32;7103:4;7099:2;7095:13;7092:33;;;7121:1;7118;7111:12;7092:33;;7147:17;;:::i;:::-;7201:9;7188:23;7220:33;7245:7;7220:33;:::i;:::-;7276:7;7269:5;7262:22;;7344:2;7333:9;7329:18;7316:32;7311:2;7304:5;7300:14;7293:56;7409:2;7398:9;7394:18;7381:32;7376:2;7369:5;7365:14;7358:56;7466:2;7455:9;7451:18;7438:32;7501:1;7492:7;7489:14;7479:42;;7517:1;7514;7507:12;7479:42;7548:2;7537:14;;7530:31;7541:5;7632:4;7617:20;;;;7604:34;;-1:-1:-1;;;6876:768:150:o;7649:800::-;7760:6;7768;7776;7820:9;7811:7;7807:23;7850:3;7846:2;7842:12;7839:32;;;7867:1;7864;7857:12;7839:32;7890:6;7916:2;7912;7908:11;7905:31;;;7932:1;7929;7922:12;7905:31;7958:17;;:::i;:::-;7945:30;;7998:43;8033:7;8022:9;7998:43;:::i;:::-;7984:58;;8104:3;8089:19;;8076:33;8069:4;8058:16;;8051:59;8172:3;8157:19;;8144:33;8137:4;8126:16;;8119:59;8240:3;8225:19;;8212:33;8205:4;8194:16;;8187:59;7991:5;;-1:-1:-1;8302:18:150;;8289:32;;-1:-1:-1;8373:3:150;8358:19;;8345:33;8387:30;8345:33;8387:30;:::i;:::-;8436:7;8426:17;;;7649:800;;;;;:::o;8454:225::-;8537:6;8590:3;8578:9;8569:7;8565:23;8561:33;8558:53;;;8607:1;8604;8597:12;8558:53;8630:43;8665:7;8654:9;8630:43;:::i;8684:1065::-;8804:6;8812;8856:9;8847:7;8843:23;8886:3;8882:2;8878:12;8875:32;;;8903:1;8900;8893:12;8875:32;8926:43;8961:7;8950:9;8926:43;:::i;:::-;8916:53;-1:-1:-1;9004:4:150;-1:-1:-1;;8985:17:150;;8981:28;8978:48;;;9022:1;9019;9012:12;8978:48;;9055:2;9049:9;9097:4;9089:6;9085:17;9168:6;9156:10;9153:22;9132:18;9120:10;9117:34;9114:62;9111:185;;;9218:10;9213:3;9209:20;9206:1;9199:31;9253:4;9250:1;9243:15;9281:4;9278:1;9271:15;9111:185;9316:10;9312:2;9305:22;;9379:3;9368:9;9364:19;9351:33;9343:6;9336:49;9446:3;9435:9;9431:19;9418:33;9413:2;9405:6;9401:15;9394:58;9513:3;9502:9;9498:19;9485:33;9480:2;9472:6;9468:15;9461:58;9569:3;9558:9;9554:19;9541:33;9583:28;9605:5;9583:28;:::i;:::-;9639:2;9627:15;;9620:30;9712:3;9697:19;;;;9684:33;9678:3;9666:16;;9659:59;-1:-1:-1;8684:1065:150;9631:6;;-1:-1:-1;8684:1065:150:o;9754:180::-;9813:6;9866:2;9854:9;9845:7;9841:23;9837:32;9834:52;;;9882:1;9879;9872:12;9834:52;-1:-1:-1;9905:23:150;;9754:180;-1:-1:-1;9754:180:150:o;9939:184::-;10009:6;10062:2;10050:9;10041:7;10037:23;10033:32;10030:52;;;10078:1;10075;10068:12;10030:52;-1:-1:-1;10101:16:150;;9939:184;-1:-1:-1;9939:184:150:o;10128:373::-;10216:6;10224;10232;10285:2;10273:9;10264:7;10260:23;10256:32;10253:52;;;10301:1;10298;10291:12;10253:52;10330:9;10324:16;10314:26;;10383:2;10372:9;10368:18;10362:25;10396:31;10421:5;10396:31;:::i;:::-;10446:5;10436:15;;;10491:2;10480:9;10476:18;10470:25;10460:35;;10128:373;;;;;:::o;10506:309::-;10571:6;10579;10632:2;10620:9;10611:7;10607:23;10603:32;10600:52;;;10648:1;10645;10638:12;10600:52;10684:9;10671:23;10661:33;;10744:2;10733:9;10729:18;10716:32;10757:28;10779:5;10757:28;:::i;:::-;10804:5;10794:15;;;10506:309;;;;;:::o;10820:248::-;10888:6;10896;10949:2;10937:9;10928:7;10924:23;10920:32;10917:52;;;10965:1;10962;10955:12;10917:52;-1:-1:-1;;10988:23:150;;;11058:2;11043:18;;;11030:32;;-1:-1:-1;10820:248:150:o;11278:861::-;11365:12;;-1:-1:-1;;;;;11139:31:150;11127:44;;11432:4;11425:5;11421:16;11415:23;11408:4;11403:3;11399:14;11392:47;11488:4;11481:5;11477:16;11471:23;11464:4;11459:3;11455:14;11448:47;11544:4;11537:5;11533:16;11527:23;11520:4;11515:3;11511:14;11504:47;11597:4;11590:5;11586:16;11580:23;11612:45;11651:4;11646:3;11642:14;11628:12;11252:13;11245:21;11233:34;;11182:91;11612:45;-1:-1:-1;11706:4:150;11695:16;;;11689:23;11673:14;;;11666:47;11762:4;11751:16;;;11745:23;11729:14;;;11722:47;11818:4;11807:16;;;11801:23;11785:14;;;11778:47;11844:6;11886:14;;;11880:21;11866:12;;;11859:43;11921:6;11963:14;;;11957:21;11943:12;;;11936:43;11998:6;12040:14;;;12034:21;12020:12;;;12013:43;12075:6;12117:14;;;12111:21;12097:12;;12090:43;11278:861::o;12144:775::-;12222:12;;-1:-1:-1;;;;;11139:31:150;11127:44;;12289:4;12282:5;12278:16;12272:23;12265:4;12260:3;12256:14;12249:47;12345:4;12338:5;12334:16;12328:23;12321:4;12316:3;12312:14;12305:47;12401:4;12394:5;12390:16;12384:23;12377:4;12372:3;12368:14;12361:47;12457:4;12450:5;12446:16;12440:23;12433:4;12428:3;12424:14;12417:47;12513:4;12506:5;12502:16;12496:23;12489:4;12484:3;12480:14;12473:47;12566:4;12559:5;12555:16;12549:23;12581:45;12620:4;12615:3;12611:14;12597:12;11252:13;11245:21;11233:34;;11182:91;12581:45;-1:-1:-1;12675:4:150;12664:16;;;12658:23;12642:14;;;12635:47;12701:6;12743:14;;;12737:21;12723:12;;;12716:43;12778:6;12820:14;;;12814:21;12800:12;;;12793:43;12855:6;12897:14;;;12891:21;12877:12;;12870:43;12144:775::o;12924:274::-;13053:3;13091:6;13085:13;13107:53;13153:6;13148:3;13141:4;13133:6;13129:17;13107:53;:::i;:::-;13176:16;;;;;12924:274;-1:-1:-1;;12924:274:150:o;16110:658::-;16281:2;16333:21;;;16403:13;;16306:18;;;16425:22;;;16252:4;;16281:2;16504:15;;;;16478:2;16463:18;;;16252:4;16547:195;16561:6;16558:1;16555:13;16547:195;;;16626:13;;-1:-1:-1;;;;;16622:39:150;16610:52;;16717:15;;;;16682:12;;;;-1:-1:-1;16576:9:150;16547:195;;;-1:-1:-1;16759:3:150;;16110:658;-1:-1:-1;;;;;;16110:658:150:o;16773:728::-;17010:2;17062:21;;;17132:13;;17035:18;;;17154:22;;;16981:4;;17010:2;17233:15;;;;17207:2;17192:18;;;16981:4;17276:199;17290:6;17287:1;17284:13;17276:199;;;17339:52;17387:3;17378:6;17372:13;17339:52;:::i;:::-;17450:15;;;;17420:6;17411:16;;;;;17312:1;17305:9;17276:199;;17506:494;17686:2;17671:18;;17675:9;17766:6;17644:4;17800:194;17814:4;17811:1;17808:11;17800:194;;;17873:13;;17861:26;;17910:4;17934:12;;;;17969:15;;;;17834:1;17827:9;17800:194;;;17804:3;;;17506:494;;;;:::o;18005:632::-;18176:2;18228:21;;;18298:13;;18201:18;;;18320:22;;;18147:4;;18176:2;18399:15;;;;18373:2;18358:18;;;18147:4;18442:169;18456:6;18453:1;18450:13;18442:169;;;18517:13;;18505:26;;18586:15;;;;18551:12;;;;18478:1;18471:9;18442:169;;20437:383;20586:2;20575:9;20568:21;20549:4;20618:6;20612:13;20661:6;20656:2;20645:9;20641:18;20634:34;20677:66;20736:6;20731:2;20720:9;20716:18;20711:2;20703:6;20699:15;20677:66;:::i;:::-;20804:2;20783:15;-1:-1:-1;;20779:29:150;20764:45;;;;20811:2;20760:54;;20437:383;-1:-1:-1;;20437:383:150:o;28641:270::-;28841:3;28826:19;;28854:51;28830:9;28887:6;28854:51;:::i;28916:672::-;29157:13;;-1:-1:-1;;;;;29153:39:150;29135:58;;29249:4;29237:17;;;29231:24;29209:20;;;29202:54;29312:4;29300:17;;;29294:24;29272:20;;;29265:54;29366:4;29354:17;;29348:24;29122:3;29107:19;;;29408:1;29391:19;;29381:150;;29453:10;29448:3;29444:20;29441:1;29434:31;29488:4;29485:1;29478:15;29516:4;29513:1;29506:15;29381:150;29569:12;29562:4;29551:9;29547:20;29540:42;;28916:672;;;;:::o;29593:471::-;29759:4;29801:3;29790:9;29786:19;29778:27;;29814:49;29853:9;29844:6;29838:13;29814:49;:::i;:::-;29921:4;29909:17;;29903:24;29894:6;29879:22;;29872:56;29986:4;29974:17;;29968:24;29959:6;29944:22;;29937:56;30051:4;30039:17;;;30033:24;30024:6;30009:22;;;30002:56;29593:471;:::o;30583:243::-;30765:3;30750:19;;30778:42;30754:9;30802:6;30778:42;:::i;32269:352::-;32341:2;32335:9;32383:6;32371:19;;32420:18;32405:34;;32441:22;;;32402:62;32399:185;;;32506:10;32501:3;32497:20;32494:1;32487:31;32541:4;32538:1;32531:15;32569:4;32566:1;32559:15;32399:185;32600:2;32593:22;32269:352;:::o;32626:349::-;32698:2;32692:9;32740:3;32728:16;;32774:18;32759:34;;32795:22;;;32756:62;32753:185;;;32860:10;32855:3;32851:20;32848:1;32841:31;32895:4;32892:1;32885:15;32923:4;32920:1;32913:15;32980:345;33047:2;33041:9;33089:4;33077:17;;33124:18;33109:34;;33145:22;;;33106:62;33103:185;;;33210:10;33205:3;33201:20;33198:1;33191:31;33245:4;33242:1;33235:15;33273:4;33270:1;33263:15;33330:128;33370:3;33401:1;33397:6;33394:1;33391:13;33388:39;;;33407:18;;:::i;:::-;-1:-1:-1;33443:9:150;;33330:128::o;33463:217::-;33503:1;33529;33519:132;;33573:10;33568:3;33564:20;33561:1;33554:31;33608:4;33605:1;33598:15;33636:4;33633:1;33626:15;33519:132;-1:-1:-1;33665:9:150;;33463:217::o;33685:168::-;33725:7;33791:1;33787;33783:6;33779:14;33776:1;33773:21;33768:1;33761:9;33754:17;33750:45;33747:71;;;33798:18;;:::i;:::-;-1:-1:-1;33838:9:150;;33685:168::o;33858:125::-;33898:4;33926:1;33923;33920:8;33917:34;;;33931:18;;:::i;:::-;-1:-1:-1;33968:9:150;;33858:125::o;33988:258::-;34060:1;34070:113;34084:6;34081:1;34078:13;34070:113;;;34160:11;;;34154:18;34141:11;;;34134:39;34106:2;34099:10;34070:113;;;34201:6;34198:1;34195:13;34192:48;;;-1:-1:-1;;34236:1:150;34218:16;;34211:27;33988:258::o;34251:136::-;34290:3;34318:5;34308:39;;34327:18;;:::i;:::-;-1:-1:-1;;;34363:18:150;;34251:136::o;34392:135::-;34431:3;-1:-1:-1;;34452:17:150;;34449:43;;;34472:18;;:::i;:::-;-1:-1:-1;34519:1:150;34508:13;;34392:135::o;34532:127::-;34593:10;34588:3;34584:20;34581:1;34574:31;34624:4;34621:1;34614:15;34648:4;34645:1;34638:15;34664:127;34725:10;34720:3;34716:20;34713:1;34706:31;34756:4;34753:1;34746:15;34780:4;34777:1;34770:15;34796:127;34857:10;34852:3;34848:20;34845:1;34838:31;34888:4;34885:1;34878:15;34912:4;34909:1;34902:15;34928:127;34989:10;34984:3;34980:20;34977:1;34970:31;35020:4;35017:1;35010:15;35044:4;35041:1;35034:15;35060:131;-1:-1:-1;;;;;35135:31:150;;35125:42;;35115:70;;35181:1;35178;35171:12;35196:118;35282:5;35275:13;35268:21;35261:5;35258:32;35248:60;;35304:1;35301;35294:12","linkReferences":{}},"methodIdentifiers":{"addTradingContract(address)":"f823e2ae","applyReferral(address,uint256,uint256)":"700ff359","blockOI(uint256,uint256)":"b222cb38","callbacks()":"00b12783","claimFees()":"d294f093","claimRebate()":"cda3948f","dev()":"91cca3db","devFeesUSDC()":"34df8540","firstEmptyOpenLimitIndex(address,uint256)":"44d44f5a","firstEmptyTradeIndex(address,uint256)":"292c1617","forceUnregisterPendingMarketOrder(uint256)":"0d32c907","getOpenLimitOrder(address,uint256,uint256)":"b8878a2c","getOpenLimitOrders()":"8a0bd702","getPendingOrderIds(address)":"5c76ac9e","getUsdOI()":"8ecf3f5a","gov()":"12d43a51","govFeesUSDC()":"3c6d6fa0","govTreasury()":"ff12673a","handleDevGovFees(address,uint256,uint256,bool,bool,bool)":"2a9a9667","hasOpenLimitOrder(address,uint256,uint256)":"dcdf339a","initialize()":"8129fc1c","isTradingContract(address)":"6d81d981","maxOpenInterest()":"dc6638f4","maxPendingMarketOrders()":"8049fde7","maxTradesPerPair()":"f65d9dbe","openInterestUSDC(uint256,uint256)":"9cb87f23","openLimitOrderIds(address,uint256,uint256)":"eda00d54","openLimitOrders(uint256)":"32149592","openLimitOrdersCount(address,uint256)":"97e7995a","openTrades(address,uint256,uint256)":"a3a80ffe","openTradesCount(address,uint256)":"1c8636b4","openTradesInfo(address,uint256,uint256)":"8c8ff1d5","pairOI(uint256)":"f1694292","pairTraders(uint256,uint256)":"e3cbe3a7","pairTradersArray(uint256)":"5fbfe8cc","pairTradersId(address,uint256)":"4415b369","pendingMarketCloseCount(address,uint256)":"b7682d54","pendingMarketOpenCount(address,uint256)":"9c8912f1","pendingOrderIds(address,uint256)":"bcc9f1d3","pendingOrderIdsCount(address)":"f7b3c6fd","priceAggregator()":"3078fff5","rebates(address)":"f4ccf54e","referral()":"1441a5a9","registerPartialTrade(address,uint256,uint256,uint256)":"3f64d036","removeTradingContract(address)":"5b621e32","reqIDpendingLimitOrder(uint256)":"6c7be83a","reqIDpendingMarketOrder(uint256)":"d5dabd75","requestGov(address)":"50bb2578","requestedGov()":"66ac654d","setCallbacks(address)":"fe0fc8d6","setDev(address)":"d477f05f","setGov(address)":"cfad57a2","setGovTreasury(address)":"05f3c6ad","setMaxPendingMarketOrders(uint256)":"ecf56a1f","setMaxTradesPerPair(uint256)":"dc2123ff","setPriceAggregator(address)":"5070e837","setReferral(address)":"9e5914da","setTrading(address)":"a553906c","setTvlCap(uint256)":"dd0290e2","setUSDC(address)":"b3e089a2","setVaultManager(address)":"b543503e","storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"fdb153e2","storePendingLimitOrder((address,uint256,uint256,uint8),uint256)":"d775d548","storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)":"d8137fe8","storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256))":"b833966f","totalOI()":"443295dc","trading()":"ec44acf2","transferUSDC(address,address,uint256)":"8b83351a","tvlCap()":"3f23fa1a","unregisterOpenLimitOrder(address,uint256,uint256)":"b4b0f567","unregisterPendingLimitOrder(uint256)":"7ada8483","unregisterPendingMarketOrder(uint256,bool)":"cab94580","unregisterTrade(address,uint256,uint256)":"90d112b9","updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"ae8ac94e","updateSl(address,uint256,uint256,uint256)":"a3544181","updateTp(address,uint256,uint256,uint256)":"7fdb96f3","updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))":"f0cb9b11","usdOI(uint256)":"7eed1d30","usdc()":"3e413bee","vaultManager()":"8a4adf24","walletOI(address)":"b87cb1da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_buy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"FeesCharged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"MarketOpenCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NumberUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NumberUpdatedPair\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_open\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_long\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_leveragedPos\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"OIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"SupportedTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_referrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_leveragedPosition\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_traderFeePostDiscount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_traderFeeDiscount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_referrerRebate\",\"type\":\"uint256\"}],\"name\":\"TradeReferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"TradingContractAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"TradingContractRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__trading\",\"type\":\"address\"}],\"name\":\"addTradingContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPosition\",\"type\":\"uint256\"}],\"name\":\"applyReferral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRebate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dev\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"devFeesUSDC\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"firstEmptyOpenLimitIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"firstEmptyTradeIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"forceUnregisterPendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getOpenLimitOrder\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.OpenLimitOrder\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOpenLimitOrders\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.OpenLimitOrder[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"getPendingOrderIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUsdOI\",\"outputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"govFeesUSDC\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"govTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPositionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_usdc\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_fullFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_buy\",\"type\":\"bool\"}],\"name\":\"handleDevGovFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeAfterRebate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"hasOpenLimitOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isTradingContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxOpenInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPendingMarketOrders\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxTradesPerPair\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"openInterestUSDC\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"openLimitOrderIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"openLimitOrders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"openLimitOrdersCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"openTrades\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"openTradesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"openTradesInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"openInterestUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tpLastUpdated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slLastUpdated\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"beingMarketClosed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"lossProtection\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.TradeInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairTraders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairTradersArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairTradersId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingMarketCloseCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingMarketOpenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingOrderIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"pendingOrderIdsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceAggregator\",\"outputs\":[{\"internalType\":\"contract IPriceAggregator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rebates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"referral\",\"outputs\":[{\"internalType\":\"contract IReferral\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountReduced\",\"type\":\"uint256\"}],\"name\":\"registerPartialTrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__trading\",\"type\":\"address\"}],\"name\":\"removeTradingContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"reqIDpendingLimitOrder\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"orderType\",\"type\":\"uint8\"}],\"internalType\":\"struct ITradingStorage.PendingLimitOrder\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"reqIDpendingMarketOrder\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"trade\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wantedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.PendingMarketOrder\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gov\",\"type\":\"address\"}],\"name\":\"requestGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestedGov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__callbacks\",\"type\":\"address\"}],\"name\":\"setCallbacks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dev\",\"type\":\"address\"}],\"name\":\"setDev\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gov\",\"type\":\"address\"}],\"name\":\"setGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_govTreasury\",\"type\":\"address\"}],\"name\":\"setGovTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxPendingMarketOrders\",\"type\":\"uint256\"}],\"name\":\"setMaxPendingMarketOrders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxTradesPerPair\",\"type\":\"uint256\"}],\"name\":\"setMaxTradesPerPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregator\",\"type\":\"address\"}],\"name\":\"setPriceAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_refferal\",\"type\":\"address\"}],\"name\":\"setReferral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__trading\",\"type\":\"address\"}],\"name\":\"setTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newCap\",\"type\":\"uint256\"}],\"name\":\"setTvlCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"setUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vaultManager\",\"type\":\"address\"}],\"name\":\"setVaultManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.OpenLimitOrder\",\"name\":\"o\",\"type\":\"tuple\"}],\"name\":\"storeOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"orderType\",\"type\":\"uint8\"}],\"internalType\":\"struct ITradingStorage.PendingLimitOrder\",\"name\":\"_limitOrder\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_orderId\",\"type\":\"uint256\"}],\"name\":\"storePendingLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"trade\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wantedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.PendingMarketOrder\",\"name\":\"_order\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_open\",\"type\":\"bool\"}],\"name\":\"storePendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"_trade\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"openInterestUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tpLastUpdated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slLastUpdated\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"beingMarketClosed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"lossProtection\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.TradeInfo\",\"name\":\"_tradeInfo\",\"type\":\"tuple\"}],\"name\":\"storeTrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trading\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transferUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tvlCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"unregisterOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_order\",\"type\":\"uint256\"}],\"name\":\"unregisterPendingLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_open\",\"type\":\"bool\"}],\"name\":\"unregisterPendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"unregisterTrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.OpenLimitOrder\",\"name\":\"_o\",\"type\":\"tuple\"}],\"name\":\"updateOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newSl\",\"type\":\"uint256\"}],\"name\":\"updateSl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newTp\",\"type\":\"uint256\"}],\"name\":\"updateTp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"_t\",\"type\":\"tuple\"}],\"name\":\"updateTrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"usdOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdc\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultManager\",\"outputs\":[{\"internalType\":\"contract IVaultManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"walletOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addTradingContract(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"__trading\":\"The address of the trading contract to be added.\"}},\"applyReferral(address,uint256,uint256)\":{\"params\":{\"_fees\":\"The initial fees for the trade.\",\"_leveragedPosition\":\"The size of the leveraged position.\",\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"The updated fee after applying the referral program.\"}},\"callbacks()\":{\"returns\":{\"_0\":\"The address of the callbacks contract.\"}},\"firstEmptyOpenLimitIndex(address,uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair.\",\"trader\":\"The address of the trader.\"},\"returns\":{\"index\":\"The index of the first empty open limit order.\"}},\"firstEmptyTradeIndex(address,uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair.\",\"trader\":\"The address of the trader.\"},\"returns\":{\"index\":\"The index of the first empty trade.\"}},\"getOpenLimitOrder(address,uint256,uint256)\":{\"params\":{\"_index\":\"The index of the limit order.\",\"_pairIndex\":\"The index of the trading pair.\",\"_trader\":\"The address of the trader.\"},\"returns\":{\"_0\":\"OpenLimitOrder struct containing the order details.\"}},\"getOpenLimitOrders()\":{\"returns\":{\"_0\":\"An array of OpenLimitOrder structs containing all open limit orders.\"}},\"getPendingOrderIds(address)\":{\"params\":{\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"An array of pending order IDs.\"}},\"getUsdOI()\":{\"returns\":{\"_0\":\"USD OI\"}},\"handleDevGovFees(address,uint256,uint256,bool,bool,bool)\":{\"params\":{\"_buy\":\"Indicates if it's a buy operation.\",\"_fullFee\":\"Indicates if the full fee should be applied.\",\"_leveragedPositionSize\":\"Size of the leveraged position.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\",\"_usdc\":\"Whether the fee is in USDC.\"},\"returns\":{\"feeAfterRebate\":\"The fee amount after applying any rebates.\"}},\"hasOpenLimitOrder(address,uint256,uint256)\":{\"params\":{\"index\":\"The index of the limit order.\",\"pairIndex\":\"The index of the trading pair.\",\"trader\":\"The address of the trader.\"},\"returns\":{\"_0\":\"True if an open limit order exists, false otherwise.\"}},\"initialize()\":{\"details\":\"Can be called only once.\"},\"maxOpenInterest()\":{\"returns\":{\"_0\":\"The maximum open interest.\"}},\"openTrades(address,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the trade.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"Trade struct containing the trade's details.\"}},\"openTradesCount(address,uint256)\":{\"params\":{\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"The count of open trades.\"}},\"openTradesInfo(address,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the trade.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"TradeInfo struct\"}},\"pairOI(uint256)\":{\"params\":{\"_pairIndex\":\"Index of the trading pair.\"},\"returns\":{\"_0\":\"The total open interest.\"}},\"pairTradersArray(uint256)\":{\"params\":{\"_pairIndex\":\"Index of the trading pair.\"},\"returns\":{\"_0\":\"An array of trader addresses.\"}},\"pendingOrderIdsCount(address)\":{\"params\":{\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"The count of pending orders.\"}},\"registerPartialTrade(address,uint256,uint256,uint256)\":{\"details\":\"Can only be called by trading contract.\",\"params\":{\"_amountReduced\":\"The amount by which the trade is reduced.\",\"index\":\"Index of the trade.\",\"pairIndex\":\"Index of the trading pair.\",\"trader\":\"Address of the trader.\"}},\"removeTradingContract(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"__trading\":\"The address of the trading contract to be removed.\"}},\"reqIDpendingLimitOrder(uint256)\":{\"params\":{\"orderId\":\"The ID of the pending limit order.\"},\"returns\":{\"_0\":\"PendingLimitOrder struct containing the order's details.\"}},\"reqIDpendingMarketOrder(uint256)\":{\"params\":{\"orderId\":\"The ID of the pending market order.\"},\"returns\":{\"_0\":\"PendingMarketOrder struct containing the order's details.\"}},\"requestGov(address)\":{\"details\":\"Only callable by the current governance.\",\"params\":{\"_gov\":\"The new governance address.\"}},\"setCallbacks(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"__callbacks\":\"The address of the new callbacks contract.\"}},\"setDev(address)\":{\"details\":\"Only callable by the current governance.\",\"params\":{\"_dev\":\"The new developer address.\"}},\"setGov(address)\":{\"details\":\"Only callable by the current governance.\",\"params\":{\"_gov\":\"The new governance address.\"}},\"setGovTreasury(address)\":{\"details\":\"Only callable by the current governance.\",\"params\":{\"_govTreasury\":\"The new developer address.\"}},\"setMaxPendingMarketOrders(uint256)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_maxPendingMarketOrders\":\"The new maximum number of pending market orders.\"}},\"setMaxTradesPerPair(uint256)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_maxTradesPerPair\":\"The new maximum number of trades per pair.\"}},\"setPriceAggregator(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_aggregator\":\"The address of the new price aggregator.\"}},\"setReferral(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_refferal\":\"The address of the new referral contract.\"}},\"setTrading(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"__trading\":\"The address of the new trading contract.\"}},\"setTvlCap(uint256)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_newCap\":\"The new TVl cal\"}},\"setUSDC(address)\":{\"details\":\"Only callable by the governance.\",\"params\":{\"_token\":\"The new USDC token address.\"}},\"setVaultManager(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_vaultManager\":\"The address of the new vault manager.\"}},\"storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"o\":\"Details of the open limit order.\"}},\"storePendingLimitOrder((address,uint256,uint256,uint8),uint256)\":{\"params\":{\"_limitOrder\":\"Details of the pending limit order.\",\"_orderId\":\"The ID for the pending limit order.\"}},\"storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)\":{\"details\":\"Can only be called by trading contract.\",\"params\":{\"_id\":\"The ID associated with the pending market order.\",\"_open\":\"Specifies whether the order opens a new position.\",\"_order\":\"Details of the pending market order.\"}},\"storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256))\":{\"details\":\"Can only be called by trading contract.\",\"params\":{\"_trade\":\"The details of the trade to store.\",\"_tradeInfo\":\"Trade Info struct\"}},\"trading()\":{\"returns\":{\"_0\":\"The address of the trading contract.\"}},\"transferUSDC(address,address,uint256)\":{\"params\":{\"_amount\":\"Amount to transfer.\",\"_from\":\"Address from which to transfer.\",\"_to\":\"Address to which to transfer.\"}},\"unregisterOpenLimitOrder(address,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the limit order.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"}},\"unregisterPendingLimitOrder(uint256)\":{\"params\":{\"_order\":\"The ID for the pending limit order to unregister.\"}},\"unregisterPendingMarketOrder(uint256,bool)\":{\"params\":{\"_id\":\"The ID associated with the pending market order.\",\"_open\":\"Specifies whether the order opens or closes a position.\"}},\"unregisterTrade(address,uint256,uint256)\":{\"details\":\"Can only be called by trading contract.\",\"params\":{\"index\":\"Index of the trade.\",\"pairIndex\":\"Index of the trading pair.\",\"trader\":\"Address of the trader.\"}},\"updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"_o\":\"Details of the updated open limit order.\"}},\"updateSl(address,uint256,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the trade.\",\"_newSl\":\"The new stop loss level.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"}},\"updateTp(address,uint256,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the trade.\",\"_newTp\":\"The new take profit level.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"}},\"updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))\":{\"params\":{\"_t\":\"The updated trade details.\"}},\"walletOI(address)\":{\"params\":{\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"The total open interest in the trader's wallet.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addTradingContract(address)\":{\"notice\":\"Adds a new trading contract to the list of approved trading contracts.\"},\"applyReferral(address,uint256,uint256)\":{\"notice\":\"Applies the referral program during the opening of a trade.\"},\"callbacks()\":{\"notice\":\"Gets the address of the contract that implements callbacks.\"},\"claimFees()\":{\"notice\":\"Allows the governance to claim the accumulated governance fees.\"},\"claimRebate()\":{\"notice\":\"Allows a referrer to claim their rebate.\"},\"firstEmptyOpenLimitIndex(address,uint256)\":{\"notice\":\"Finds the first empty open limit order index for a trader and pair index.\"},\"firstEmptyTradeIndex(address,uint256)\":{\"notice\":\"Finds the first empty trade index for a trader and pair index.\"},\"forceUnregisterPendingMarketOrder(uint256)\":{\"notice\":\"This is used as last resort in case a trader's collateral get stuck in storage\"},\"getOpenLimitOrder(address,uint256,uint256)\":{\"notice\":\"Retrieves a specific open limit order for a trader and pair index.\"},\"getOpenLimitOrders()\":{\"notice\":\"Retrieves all open limit orders.\"},\"getPendingOrderIds(address)\":{\"notice\":\"Retrieves the IDs of pending orders for a specific trader.\"},\"getUsdOI()\":{\"notice\":\"Retrieves usd OI\"},\"handleDevGovFees(address,uint256,uint256,bool,bool,bool)\":{\"notice\":\"Handles the calculation and distribution of development and governance fees.\"},\"hasOpenLimitOrder(address,uint256,uint256)\":{\"notice\":\"Checks if a trader has an open limit order at a specific index and pair index.\"},\"initialize()\":{\"notice\":\"Initializes the proxy\"},\"maxOpenInterest()\":{\"notice\":\"Calculates the maximum open interest based on tvl cap\"},\"openTrades(address,uint256,uint256)\":{\"notice\":\"Retrieves an open trade for a specific trader and pair index.\"},\"openTradesCount(address,uint256)\":{\"notice\":\"Retrieves the count of open trades for a specific trader and pair index.\"},\"openTradesInfo(address,uint256,uint256)\":{\"notice\":\"Retrieves open trade info \"},\"pairOI(uint256)\":{\"notice\":\"Retrieves the total open interest for a specific pair index.\"},\"pairTradersArray(uint256)\":{\"notice\":\"Retrieves the array of traders for a specific pair index.\"},\"pendingOrderIdsCount(address)\":{\"notice\":\"Retrieves the count of pending order IDs for a specific trader.\"},\"registerPartialTrade(address,uint256,uint256,uint256)\":{\"notice\":\"Registers a partial trade and updates trade information accordingly.\"},\"removeTradingContract(address)\":{\"notice\":\"Removes a trading contract from the list of approved trading contracts.\"},\"reqIDpendingLimitOrder(uint256)\":{\"notice\":\"Retrieves pending limit order details by order ID.\"},\"reqIDpendingMarketOrder(uint256)\":{\"notice\":\"Retrieves pending market order details by order ID.\"},\"requestGov(address)\":{\"notice\":\"Requests the governance address.\"},\"setCallbacks(address)\":{\"notice\":\"Sets the callbacks contract.\"},\"setDev(address)\":{\"notice\":\"Updates the wallet recieveing developer share of fees\"},\"setGov(address)\":{\"notice\":\"Updates the governance address.\"},\"setGovTreasury(address)\":{\"notice\":\"Updates the wallet recieveing gov share of fees\"},\"setMaxPendingMarketOrders(uint256)\":{\"notice\":\"Sets the maximum number of pending market orders.\"},\"setMaxTradesPerPair(uint256)\":{\"notice\":\"Sets the maximum number of trades allowed per trading pair.\"},\"setPriceAggregator(address)\":{\"notice\":\"Sets the price aggregator contract.\"},\"setReferral(address)\":{\"notice\":\"Sets the referral contract.\"},\"setTrading(address)\":{\"notice\":\"Sets the trading contract.\"},\"setTvlCap(uint256)\":{\"notice\":\"Sets the TVL cap that be borrowed from LP tranches\"},\"setUSDC(address)\":{\"notice\":\"Updates the USDC token contract address.\"},\"setVaultManager(address)\":{\"notice\":\"Sets the vault manager contract.\"},\"storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Stores an open limit order.\"},\"storePendingLimitOrder((address,uint256,uint256,uint8),uint256)\":{\"notice\":\"Stores a new pending limit order.\"},\"storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)\":{\"notice\":\"Stores a new pending market order and updates associated counters.\"},\"storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256))\":{\"notice\":\"Stores a new trade and updates the associated trade information.\"},\"trading()\":{\"notice\":\"Gets the address of the contract that manages user facingtrading.\"},\"transferUSDC(address,address,uint256)\":{\"notice\":\"Transfers USDC tokens between addresses. USDC intermediately sits in trading storage before moving to vault\"},\"unregisterOpenLimitOrder(address,uint256,uint256)\":{\"notice\":\"Unregisters an open limit order.\"},\"unregisterPendingLimitOrder(uint256)\":{\"notice\":\"Unregisters a pending limit order.\"},\"unregisterPendingMarketOrder(uint256,bool)\":{\"notice\":\"Unregisters a pending market order and updates counters.\"},\"unregisterTrade(address,uint256,uint256)\":{\"notice\":\"Unregisters a trade and deletes trade information accordingly.\"},\"updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Updates an existing open limit order.\"},\"updateSl(address,uint256,uint256,uint256)\":{\"notice\":\"Updates the stop loss level for a trade.\"},\"updateTp(address,uint256,uint256,uint256)\":{\"notice\":\"Updates the take profit level for a trade.\"},\"updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))\":{\"notice\":\"Updates the details of an existing trade.\"},\"walletOI(address)\":{\"notice\":\"Retrieves the total open interest for a specific trader's wallet.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/TradingStorage.sol\":\"TradingStorage\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"src/TradingStorage.sol\":{\"keccak256\":\"0x2fe4af839e20d019ac68bc91b3a1e2c5b8dfc6e11b5e1e002cca60466c08154f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://311fdbdc1eb56058deed64e27c54169c1744719b488f41c99ba572f96bafabec\",\"dweb:/ipfs/QmaRSCddvPTgXfB1VnLc2tqkyWeDNaqWxSW7PpXdkYiui2\"]},\"src/interfaces/ICallbacks.sol\":{\"keccak256\":\"0x29a3caaa16b7a336e7670a433468716569c2bb227691bf21b53279be0d43d9ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682f1631658e298794d902b2fe61a66eb72363131cc08cb39bea49f8084c7712\",\"dweb:/ipfs/QmZngteZUFLYRQrx2QEEoTFvov5FpjAGntS53GrfTqgysA\"]},\"src/interfaces/IExecute.sol\":{\"keccak256\":\"0x189f78c460465dcdaab444248da17059e96e76e862bb08540e7054296512b9b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c757cbde37e2932a25fca5ed1ef8fdd49cf1521b8d9f1cfa1d512d1e94862a3b\",\"dweb:/ipfs/QmVvbrLcDBFo9oMdNqaYTmhhtgnH2WzgX8nbMTKuJU6Y1m\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0x5263d6aeb4ddae325132a38df89f9cbdc4432f44b2d4a657500b29a8b1705fdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a5a03ab14963ec685d8b2c8f2833755136abd84074100eec057fb234ec2616\",\"dweb:/ipfs/QmdV2B3wVYhtkCT6ajU8HKsj824LXCBuF82dkhco6sGPch\"]},\"src/interfaces/IPausable.sol\":{\"keccak256\":\"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e\",\"dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0xd07d98635205ba6650fc5427145869f1ec803fb370f0f3dad836c7b0ce2686a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e3cef3626f7384e4a3876137f27716c0ef9b4a13e8443d5591b94a09f4c211a\",\"dweb:/ipfs/QmUJSKSDNUxuxz42jo9hbNrHncsyw41hJvk7kZqGSeNL7c\"]},\"src/interfaces/IReferral.sol\":{\"keccak256\":\"0xa95953627911c481cbf3da33446ef91c144dfcfe84f7ee9d6dc95e18efe39283\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13cb98ca670e6814a436614d3103ec00bd37a779cdbf73674d703862af02a8a5\",\"dweb:/ipfs/QmZPWF9ZczJwmY9bn7yAcQEpj8euFhFY9s2zkyDqC1Qg25\"]},\"src/interfaces/ITradingStorage.sol\":{\"keccak256\":\"0x43ffc276291a1a728e97af0eab1057c55ed8f4180a79ea8023384a33ec135ba6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f3aca6840be01265d57ad5f141cec52b238bec7a4b9feb39a428727685c0e8b\",\"dweb:/ipfs/QmcFUiJFw6A8jhxKVUMY7jjxQiqBaTSmdkcehqSLtnN1pg\"]},\"src/interfaces/IVaultManager.sol\":{\"keccak256\":\"0x167daac6e885fa066e910a79d7f602ba52f321141af1992b83c842fe264e9219\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77790089333c8783cc836eec99e4dc10f6554f0c6a3ea4f7fd2c727e4d4605e6\",\"dweb:/ipfs/QmNRP5WJKfwDu4S5TK8fQc6MGk8JeDf51DNeevtLfjQnoJ\"]},\"src/library/PositionMath.sol\":{\"keccak256\":\"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c\",\"dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"AddressUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"_trader","type":"address","indexed":false},{"internalType":"uint256","name":"_pairIndex","type":"uint256","indexed":false},{"internalType":"bool","name":"_buy","type":"bool","indexed":false},{"internalType":"uint256","name":"fee","type":"uint256","indexed":false}],"type":"event","name":"FeesCharged","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false}],"type":"event","name":"MarketOpenCanceled","anonymous":false},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"NumberUpdated","anonymous":false},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"NumberUpdatedPair","anonymous":false},{"inputs":[{"internalType":"bool","name":"_open","type":"bool","indexed":false},{"internalType":"bool","name":"_long","type":"bool","indexed":false},{"internalType":"uint256","name":"_pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"_leveragedPos","type":"uint256","indexed":false},{"internalType":"uint256","name":"_price","type":"uint256","indexed":false}],"type":"event","name":"OIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"SupportedTokenAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"_trader","type":"address","indexed":false},{"internalType":"address","name":"_referrer","type":"address","indexed":false},{"internalType":"uint256","name":"_leveragedPosition","type":"uint256","indexed":false},{"internalType":"uint256","name":"_traderFeePostDiscount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_traderFeeDiscount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_referrerRebate","type":"uint256","indexed":false}],"type":"event","name":"TradeReferred","anonymous":false},{"inputs":[{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"TradingContractAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"TradingContractRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"__trading","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addTradingContract"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_fees","type":"uint256"},{"internalType":"uint256","name":"_leveragedPosition","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"applyReferral","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"callbacks","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimFees"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRebate"},{"inputs":[],"stateMutability":"view","type":"function","name":"dev","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"devFeesUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"firstEmptyOpenLimitIndex","outputs":[{"internalType":"uint256","name":"index","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"firstEmptyTradeIndex","outputs":[{"internalType":"uint256","name":"index","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"forceUnregisterPendingMarketOrder"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getOpenLimitOrder","outputs":[{"internalType":"struct ITradingStorage.OpenLimitOrder","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOpenLimitOrders","outputs":[{"internalType":"struct ITradingStorage.OpenLimitOrder[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingOrderIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getUsdOI","outputs":[{"internalType":"uint256[2]","name":"","type":"uint256[2]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"govFeesUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"govTreasury","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_leveragedPositionSize","type":"uint256"},{"internalType":"bool","name":"_usdc","type":"bool"},{"internalType":"bool","name":"_fullFee","type":"bool"},{"internalType":"bool","name":"_buy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"handleDevGovFees","outputs":[{"internalType":"uint256","name":"feeAfterRebate","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"hasOpenLimitOrder","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isTradingContract","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxOpenInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxPendingMarketOrders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxTradesPerPair","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"openInterestUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"openLimitOrderIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"openLimitOrders","outputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"openLimitOrdersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"openTrades","outputs":[{"internalType":"struct ITradingStorage.Trade","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"openTradesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"openTradesInfo","outputs":[{"internalType":"struct ITradingStorage.TradeInfo","name":"","type":"tuple","components":[{"internalType":"uint256","name":"openInterestUSDC","type":"uint256"},{"internalType":"uint256","name":"tpLastUpdated","type":"uint256"},{"internalType":"uint256","name":"slLastUpdated","type":"uint256"},{"internalType":"bool","name":"beingMarketClosed","type":"bool"},{"internalType":"uint256","name":"lossProtection","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairTraders","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairTradersArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairTradersId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingMarketCloseCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingMarketOpenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingOrderIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"}],"stateMutability":"view","type":"function","name":"pendingOrderIdsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"priceAggregator","outputs":[{"internalType":"contract IPriceAggregator","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"rebates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"referral","outputs":[{"internalType":"contract IReferral","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"_amountReduced","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"registerPartialTrade"},{"inputs":[{"internalType":"address","name":"__trading","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeTradingContract"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"view","type":"function","name":"reqIDpendingLimitOrder","outputs":[{"internalType":"struct ITradingStorage.PendingLimitOrder","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"enum ITradingStorage.LimitOrder","name":"orderType","type":"uint8"}]}]},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"view","type":"function","name":"reqIDpendingMarketOrder","outputs":[{"internalType":"struct ITradingStorage.PendingMarketOrder","name":"","type":"tuple","components":[{"internalType":"struct ITradingStorage.Trade","name":"trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"wantedPrice","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"requestGov"},{"inputs":[],"stateMutability":"view","type":"function","name":"requestedGov","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"__callbacks","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setCallbacks"},{"inputs":[{"internalType":"address","name":"_dev","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDev"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGov"},{"inputs":[{"internalType":"address","name":"_govTreasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGovTreasury"},{"inputs":[{"internalType":"uint256","name":"_maxPendingMarketOrders","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxPendingMarketOrders"},{"inputs":[{"internalType":"uint256","name":"_maxTradesPerPair","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxTradesPerPair"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceAggregator"},{"inputs":[{"internalType":"address","name":"_refferal","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setReferral"},{"inputs":[{"internalType":"address","name":"__trading","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTrading"},{"inputs":[{"internalType":"uint256","name":"_newCap","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTvlCap"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setUSDC"},{"inputs":[{"internalType":"address","name":"_vaultManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setVaultManager"},{"inputs":[{"internalType":"struct ITradingStorage.OpenLimitOrder","name":"o","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"storeOpenLimitOrder"},{"inputs":[{"internalType":"struct ITradingStorage.PendingLimitOrder","name":"_limitOrder","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"enum ITradingStorage.LimitOrder","name":"orderType","type":"uint8"}]},{"internalType":"uint256","name":"_orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"storePendingLimitOrder"},{"inputs":[{"internalType":"struct ITradingStorage.PendingMarketOrder","name":"_order","type":"tuple","components":[{"internalType":"struct ITradingStorage.Trade","name":"trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"wantedPrice","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"}]},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"bool","name":"_open","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"storePendingMarketOrder"},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"_trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"struct ITradingStorage.TradeInfo","name":"_tradeInfo","type":"tuple","components":[{"internalType":"uint256","name":"openInterestUSDC","type":"uint256"},{"internalType":"uint256","name":"tpLastUpdated","type":"uint256"},{"internalType":"uint256","name":"slLastUpdated","type":"uint256"},{"internalType":"bool","name":"beingMarketClosed","type":"bool"},{"internalType":"uint256","name":"lossProtection","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"storeTrade"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"trading","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferUSDC"},{"inputs":[],"stateMutability":"view","type":"function","name":"tvlCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOpenLimitOrder"},{"inputs":[{"internalType":"uint256","name":"_order","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterPendingLimitOrder"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"bool","name":"_open","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"unregisterPendingMarketOrder"},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterTrade"},{"inputs":[{"internalType":"struct ITradingStorage.OpenLimitOrder","name":"_o","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updateOpenLimitOrder"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newSl","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateSl"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newTp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateTp"},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"_t","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updateTrade"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"usdOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"usdc","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vaultManager","outputs":[{"internalType":"contract IVaultManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"}],"stateMutability":"view","type":"function","name":"walletOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"addTradingContract(address)":{"details":"Can only be called by the governor.","params":{"__trading":"The address of the trading contract to be added."}},"applyReferral(address,uint256,uint256)":{"params":{"_fees":"The initial fees for the trade.","_leveragedPosition":"The size of the leveraged position.","_trader":"Address of the trader."},"returns":{"_0":"The updated fee after applying the referral program."}},"callbacks()":{"returns":{"_0":"The address of the callbacks contract."}},"firstEmptyOpenLimitIndex(address,uint256)":{"params":{"pairIndex":"The index of the trading pair.","trader":"The address of the trader."},"returns":{"index":"The index of the first empty open limit order."}},"firstEmptyTradeIndex(address,uint256)":{"params":{"pairIndex":"The index of the trading pair.","trader":"The address of the trader."},"returns":{"index":"The index of the first empty trade."}},"getOpenLimitOrder(address,uint256,uint256)":{"params":{"_index":"The index of the limit order.","_pairIndex":"The index of the trading pair.","_trader":"The address of the trader."},"returns":{"_0":"OpenLimitOrder struct containing the order details."}},"getOpenLimitOrders()":{"returns":{"_0":"An array of OpenLimitOrder structs containing all open limit orders."}},"getPendingOrderIds(address)":{"params":{"_trader":"Address of the trader."},"returns":{"_0":"An array of pending order IDs."}},"getUsdOI()":{"returns":{"_0":"USD OI"}},"handleDevGovFees(address,uint256,uint256,bool,bool,bool)":{"params":{"_buy":"Indicates if it's a buy operation.","_fullFee":"Indicates if the full fee should be applied.","_leveragedPositionSize":"Size of the leveraged position.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader.","_usdc":"Whether the fee is in USDC."},"returns":{"feeAfterRebate":"The fee amount after applying any rebates."}},"hasOpenLimitOrder(address,uint256,uint256)":{"params":{"index":"The index of the limit order.","pairIndex":"The index of the trading pair.","trader":"The address of the trader."},"returns":{"_0":"True if an open limit order exists, false otherwise."}},"initialize()":{"details":"Can be called only once."},"maxOpenInterest()":{"returns":{"_0":"The maximum open interest."}},"openTrades(address,uint256,uint256)":{"params":{"_index":"Index of the trade.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."},"returns":{"_0":"Trade struct containing the trade's details."}},"openTradesCount(address,uint256)":{"params":{"_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."},"returns":{"_0":"The count of open trades."}},"openTradesInfo(address,uint256,uint256)":{"params":{"_index":"Index of the trade.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."},"returns":{"_0":"TradeInfo struct"}},"pairOI(uint256)":{"params":{"_pairIndex":"Index of the trading pair."},"returns":{"_0":"The total open interest."}},"pairTradersArray(uint256)":{"params":{"_pairIndex":"Index of the trading pair."},"returns":{"_0":"An array of trader addresses."}},"pendingOrderIdsCount(address)":{"params":{"_trader":"Address of the trader."},"returns":{"_0":"The count of pending orders."}},"registerPartialTrade(address,uint256,uint256,uint256)":{"details":"Can only be called by trading contract.","params":{"_amountReduced":"The amount by which the trade is reduced.","index":"Index of the trade.","pairIndex":"Index of the trading pair.","trader":"Address of the trader."}},"removeTradingContract(address)":{"details":"Can only be called by the governor.","params":{"__trading":"The address of the trading contract to be removed."}},"reqIDpendingLimitOrder(uint256)":{"params":{"orderId":"The ID of the pending limit order."},"returns":{"_0":"PendingLimitOrder struct containing the order's details."}},"reqIDpendingMarketOrder(uint256)":{"params":{"orderId":"The ID of the pending market order."},"returns":{"_0":"PendingMarketOrder struct containing the order's details."}},"requestGov(address)":{"details":"Only callable by the current governance.","params":{"_gov":"The new governance address."}},"setCallbacks(address)":{"details":"Can only be called by the governor.","params":{"__callbacks":"The address of the new callbacks contract."}},"setDev(address)":{"details":"Only callable by the current governance.","params":{"_dev":"The new developer address."}},"setGov(address)":{"details":"Only callable by the current governance.","params":{"_gov":"The new governance address."}},"setGovTreasury(address)":{"details":"Only callable by the current governance.","params":{"_govTreasury":"The new developer address."}},"setMaxPendingMarketOrders(uint256)":{"details":"Can only be called by the governor.","params":{"_maxPendingMarketOrders":"The new maximum number of pending market orders."}},"setMaxTradesPerPair(uint256)":{"details":"Can only be called by the governor.","params":{"_maxTradesPerPair":"The new maximum number of trades per pair."}},"setPriceAggregator(address)":{"details":"Can only be called by the governor.","params":{"_aggregator":"The address of the new price aggregator."}},"setReferral(address)":{"details":"Can only be called by the governor.","params":{"_refferal":"The address of the new referral contract."}},"setTrading(address)":{"details":"Can only be called by the governor.","params":{"__trading":"The address of the new trading contract."}},"setTvlCap(uint256)":{"details":"Can only be called by the governor.","params":{"_newCap":"The new TVl cal"}},"setUSDC(address)":{"details":"Only callable by the governance.","params":{"_token":"The new USDC token address."}},"setVaultManager(address)":{"details":"Can only be called by the governor.","params":{"_vaultManager":"The address of the new vault manager."}},"storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"params":{"o":"Details of the open limit order."}},"storePendingLimitOrder((address,uint256,uint256,uint8),uint256)":{"params":{"_limitOrder":"Details of the pending limit order.","_orderId":"The ID for the pending limit order."}},"storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)":{"details":"Can only be called by trading contract.","params":{"_id":"The ID associated with the pending market order.","_open":"Specifies whether the order opens a new position.","_order":"Details of the pending market order."}},"storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256))":{"details":"Can only be called by trading contract.","params":{"_trade":"The details of the trade to store.","_tradeInfo":"Trade Info struct"}},"trading()":{"returns":{"_0":"The address of the trading contract."}},"transferUSDC(address,address,uint256)":{"params":{"_amount":"Amount to transfer.","_from":"Address from which to transfer.","_to":"Address to which to transfer."}},"unregisterOpenLimitOrder(address,uint256,uint256)":{"params":{"_index":"Index of the limit order.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."}},"unregisterPendingLimitOrder(uint256)":{"params":{"_order":"The ID for the pending limit order to unregister."}},"unregisterPendingMarketOrder(uint256,bool)":{"params":{"_id":"The ID associated with the pending market order.","_open":"Specifies whether the order opens or closes a position."}},"unregisterTrade(address,uint256,uint256)":{"details":"Can only be called by trading contract.","params":{"index":"Index of the trade.","pairIndex":"Index of the trading pair.","trader":"Address of the trader."}},"updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"params":{"_o":"Details of the updated open limit order."}},"updateSl(address,uint256,uint256,uint256)":{"params":{"_index":"Index of the trade.","_newSl":"The new stop loss level.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."}},"updateTp(address,uint256,uint256,uint256)":{"params":{"_index":"Index of the trade.","_newTp":"The new take profit level.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."}},"updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))":{"params":{"_t":"The updated trade details."}},"walletOI(address)":{"params":{"_trader":"Address of the trader."},"returns":{"_0":"The total open interest in the trader's wallet."}}},"version":1},"userdoc":{"kind":"user","methods":{"addTradingContract(address)":{"notice":"Adds a new trading contract to the list of approved trading contracts."},"applyReferral(address,uint256,uint256)":{"notice":"Applies the referral program during the opening of a trade."},"callbacks()":{"notice":"Gets the address of the contract that implements callbacks."},"claimFees()":{"notice":"Allows the governance to claim the accumulated governance fees."},"claimRebate()":{"notice":"Allows a referrer to claim their rebate."},"firstEmptyOpenLimitIndex(address,uint256)":{"notice":"Finds the first empty open limit order index for a trader and pair index."},"firstEmptyTradeIndex(address,uint256)":{"notice":"Finds the first empty trade index for a trader and pair index."},"forceUnregisterPendingMarketOrder(uint256)":{"notice":"This is used as last resort in case a trader's collateral get stuck in storage"},"getOpenLimitOrder(address,uint256,uint256)":{"notice":"Retrieves a specific open limit order for a trader and pair index."},"getOpenLimitOrders()":{"notice":"Retrieves all open limit orders."},"getPendingOrderIds(address)":{"notice":"Retrieves the IDs of pending orders for a specific trader."},"getUsdOI()":{"notice":"Retrieves usd OI"},"handleDevGovFees(address,uint256,uint256,bool,bool,bool)":{"notice":"Handles the calculation and distribution of development and governance fees."},"hasOpenLimitOrder(address,uint256,uint256)":{"notice":"Checks if a trader has an open limit order at a specific index and pair index."},"initialize()":{"notice":"Initializes the proxy"},"maxOpenInterest()":{"notice":"Calculates the maximum open interest based on tvl cap"},"openTrades(address,uint256,uint256)":{"notice":"Retrieves an open trade for a specific trader and pair index."},"openTradesCount(address,uint256)":{"notice":"Retrieves the count of open trades for a specific trader and pair index."},"openTradesInfo(address,uint256,uint256)":{"notice":"Retrieves open trade info "},"pairOI(uint256)":{"notice":"Retrieves the total open interest for a specific pair index."},"pairTradersArray(uint256)":{"notice":"Retrieves the array of traders for a specific pair index."},"pendingOrderIdsCount(address)":{"notice":"Retrieves the count of pending order IDs for a specific trader."},"registerPartialTrade(address,uint256,uint256,uint256)":{"notice":"Registers a partial trade and updates trade information accordingly."},"removeTradingContract(address)":{"notice":"Removes a trading contract from the list of approved trading contracts."},"reqIDpendingLimitOrder(uint256)":{"notice":"Retrieves pending limit order details by order ID."},"reqIDpendingMarketOrder(uint256)":{"notice":"Retrieves pending market order details by order ID."},"requestGov(address)":{"notice":"Requests the governance address."},"setCallbacks(address)":{"notice":"Sets the callbacks contract."},"setDev(address)":{"notice":"Updates the wallet recieveing developer share of fees"},"setGov(address)":{"notice":"Updates the governance address."},"setGovTreasury(address)":{"notice":"Updates the wallet recieveing gov share of fees"},"setMaxPendingMarketOrders(uint256)":{"notice":"Sets the maximum number of pending market orders."},"setMaxTradesPerPair(uint256)":{"notice":"Sets the maximum number of trades allowed per trading pair."},"setPriceAggregator(address)":{"notice":"Sets the price aggregator contract."},"setReferral(address)":{"notice":"Sets the referral contract."},"setTrading(address)":{"notice":"Sets the trading contract."},"setTvlCap(uint256)":{"notice":"Sets the TVL cap that be borrowed from LP tranches"},"setUSDC(address)":{"notice":"Updates the USDC token contract address."},"setVaultManager(address)":{"notice":"Sets the vault manager contract."},"storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"notice":"Stores an open limit order."},"storePendingLimitOrder((address,uint256,uint256,uint8),uint256)":{"notice":"Stores a new pending limit order."},"storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)":{"notice":"Stores a new pending market order and updates associated counters."},"storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256))":{"notice":"Stores a new trade and updates the associated trade information."},"trading()":{"notice":"Gets the address of the contract that manages user facingtrading."},"transferUSDC(address,address,uint256)":{"notice":"Transfers USDC tokens between addresses. USDC intermediately sits in trading storage before moving to vault"},"unregisterOpenLimitOrder(address,uint256,uint256)":{"notice":"Unregisters an open limit order."},"unregisterPendingLimitOrder(uint256)":{"notice":"Unregisters a pending limit order."},"unregisterPendingMarketOrder(uint256,bool)":{"notice":"Unregisters a pending market order and updates counters."},"unregisterTrade(address,uint256,uint256)":{"notice":"Unregisters a trade and deletes trade information accordingly."},"updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"notice":"Updates an existing open limit order."},"updateSl(address,uint256,uint256,uint256)":{"notice":"Updates the stop loss level for a trade."},"updateTp(address,uint256,uint256,uint256)":{"notice":"Updates the take profit level for a trade."},"updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))":{"notice":"Updates the details of an existing trade."},"walletOI(address)":{"notice":"Retrieves the total open interest for a specific trader's wallet."}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/TradingStorage.sol":"TradingStorage"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a","urls":["bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a","dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1","urls":["bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68","dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa","urls":["bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931","dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"],"license":"MIT"},"src/TradingStorage.sol":{"keccak256":"0x2fe4af839e20d019ac68bc91b3a1e2c5b8dfc6e11b5e1e002cca60466c08154f","urls":["bzz-raw://311fdbdc1eb56058deed64e27c54169c1744719b488f41c99ba572f96bafabec","dweb:/ipfs/QmaRSCddvPTgXfB1VnLc2tqkyWeDNaqWxSW7PpXdkYiui2"],"license":"MIT"},"src/interfaces/ICallbacks.sol":{"keccak256":"0x29a3caaa16b7a336e7670a433468716569c2bb227691bf21b53279be0d43d9ac","urls":["bzz-raw://682f1631658e298794d902b2fe61a66eb72363131cc08cb39bea49f8084c7712","dweb:/ipfs/QmZngteZUFLYRQrx2QEEoTFvov5FpjAGntS53GrfTqgysA"],"license":"MIT"},"src/interfaces/IExecute.sol":{"keccak256":"0x189f78c460465dcdaab444248da17059e96e76e862bb08540e7054296512b9b4","urls":["bzz-raw://c757cbde37e2932a25fca5ed1ef8fdd49cf1521b8d9f1cfa1d512d1e94862a3b","dweb:/ipfs/QmVvbrLcDBFo9oMdNqaYTmhhtgnH2WzgX8nbMTKuJU6Y1m"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0x5263d6aeb4ddae325132a38df89f9cbdc4432f44b2d4a657500b29a8b1705fdb","urls":["bzz-raw://a0a5a03ab14963ec685d8b2c8f2833755136abd84074100eec057fb234ec2616","dweb:/ipfs/QmdV2B3wVYhtkCT6ajU8HKsj824LXCBuF82dkhco6sGPch"],"license":"MIT"},"src/interfaces/IPausable.sol":{"keccak256":"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd","urls":["bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e","dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY"],"license":"MIT"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0xd07d98635205ba6650fc5427145869f1ec803fb370f0f3dad836c7b0ce2686a5","urls":["bzz-raw://6e3cef3626f7384e4a3876137f27716c0ef9b4a13e8443d5591b94a09f4c211a","dweb:/ipfs/QmUJSKSDNUxuxz42jo9hbNrHncsyw41hJvk7kZqGSeNL7c"],"license":"MIT"},"src/interfaces/IReferral.sol":{"keccak256":"0xa95953627911c481cbf3da33446ef91c144dfcfe84f7ee9d6dc95e18efe39283","urls":["bzz-raw://13cb98ca670e6814a436614d3103ec00bd37a779cdbf73674d703862af02a8a5","dweb:/ipfs/QmZPWF9ZczJwmY9bn7yAcQEpj8euFhFY9s2zkyDqC1Qg25"],"license":"MIT"},"src/interfaces/ITradingStorage.sol":{"keccak256":"0x43ffc276291a1a728e97af0eab1057c55ed8f4180a79ea8023384a33ec135ba6","urls":["bzz-raw://8f3aca6840be01265d57ad5f141cec52b238bec7a4b9feb39a428727685c0e8b","dweb:/ipfs/QmcFUiJFw6A8jhxKVUMY7jjxQiqBaTSmdkcehqSLtnN1pg"],"license":"MIT"},"src/interfaces/IVaultManager.sol":{"keccak256":"0x167daac6e885fa066e910a79d7f602ba52f321141af1992b83c842fe264e9219","urls":["bzz-raw://77790089333c8783cc836eec99e4dc10f6554f0c6a3ea4f7fd2c727e4d4605e6","dweb:/ipfs/QmNRP5WJKfwDu4S5TK8fQc6MGk8JeDf51DNeevtLfjQnoJ"],"license":"MIT"},"src/library/PositionMath.sol":{"keccak256":"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c","urls":["bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c","dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"src/TradingStorage.sol","id":83539,"exportedSymbols":{"Address":[52266],"AddressUpgradeable":[46968],"ICallbacks":[88257],"IERC20":[51481],"IERC20Permit":[51542],"IExecute":[88371],"IPairStorage":[89055],"IPausable":[89063],"IPriceAggregator":[89248],"IReferral":[89393],"ITradingStorage":[89943],"IVaultManager":[90188],"Initializable":[43537],"PositionMath":[90841],"SafeERC20":[51918],"TradingStorage":[83538]},"nodeType":"SourceUnit","src":"32:34429:110","nodes":[{"id":80830,"nodeType":"PragmaDirective","src":"32:22:110","nodes":[],"literals":["solidity","0.8",".7"]},{"id":80831,"nodeType":"ImportDirective","src":"56:43:110","nodes":[],"absolutePath":"src/interfaces/IPriceAggregator.sol","file":"./interfaces/IPriceAggregator.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":89249,"symbolAliases":[],"unitAlias":""},{"id":80832,"nodeType":"ImportDirective","src":"100:36:110","nodes":[],"absolutePath":"src/interfaces/IPausable.sol","file":"./interfaces/IPausable.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":89064,"symbolAliases":[],"unitAlias":""},{"id":80833,"nodeType":"ImportDirective","src":"137:37:110","nodes":[],"absolutePath":"src/interfaces/ICallbacks.sol","file":"./interfaces/ICallbacks.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":88258,"symbolAliases":[],"unitAlias":""},{"id":80834,"nodeType":"ImportDirective","src":"175:40:110","nodes":[],"absolutePath":"src/interfaces/IVaultManager.sol","file":"./interfaces/IVaultManager.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":90189,"symbolAliases":[],"unitAlias":""},{"id":80835,"nodeType":"ImportDirective","src":"216:42:110","nodes":[],"absolutePath":"src/interfaces/ITradingStorage.sol","file":"./interfaces/ITradingStorage.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":89944,"symbolAliases":[],"unitAlias":""},{"id":80836,"nodeType":"ImportDirective","src":"259:36:110","nodes":[],"absolutePath":"src/interfaces/IReferral.sol","file":"./interfaces/IReferral.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":89394,"symbolAliases":[],"unitAlias":""},{"id":80837,"nodeType":"ImportDirective","src":"296:75:110","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":43538,"symbolAliases":[],"unitAlias":""},{"id":80838,"nodeType":"ImportDirective","src":"372:65:110","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":51919,"symbolAliases":[],"unitAlias":""},{"id":80839,"nodeType":"ImportDirective","src":"438:56:110","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":51482,"symbolAliases":[],"unitAlias":""},{"id":80841,"nodeType":"ImportDirective","src":"495:56:110","nodes":[],"absolutePath":"src/library/PositionMath.sol","file":"./library/PositionMath.sol","nameLocation":"-1:-1:-1","scope":83539,"sourceUnit":90842,"symbolAliases":[{"foreign":{"id":80840,"name":"PositionMath","nodeType":"Identifier","overloadedDeclarations":[],"src":"503:12:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":83538,"nodeType":"ContractDefinition","src":"553:33907:110","nodes":[{"id":80848,"nodeType":"UsingForDirective","src":"617:28:110","nodes":[],"libraryName":{"id":80846,"name":"PositionMath","nodeType":"IdentifierPath","referencedDeclaration":90841,"src":"623:12:110"},"typeName":{"id":80847,"name":"uint","nodeType":"ElementaryTypeName","src":"640:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":80852,"nodeType":"UsingForDirective","src":"650:27:110","nodes":[],"libraryName":{"id":80849,"name":"SafeERC20","nodeType":"IdentifierPath","referencedDeclaration":51918,"src":"656:9:110"},"typeName":{"id":80851,"nodeType":"UserDefinedTypeName","pathNode":{"id":80850,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":51481,"src":"670:6:110"},"referencedDeclaration":51481,"src":"670:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}}},{"id":80855,"nodeType":"VariableDeclaration","src":"683:39:110","nodes":[],"constant":true,"mutability":"constant","name":"_PRECISION","nameLocation":"705:10:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80853,"name":"uint","nodeType":"ElementaryTypeName","src":"683:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653130","id":80854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"718:4:110","typeDescriptions":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"value":"1e10"},"visibility":"private"},{"id":80859,"nodeType":"VariableDeclaration","src":"729:48:110","nodes":[],"baseFunctions":[89592],"constant":false,"functionSelector":"3078fff5","mutability":"mutable","name":"priceAggregator","nameLocation":"762:15:110","overrides":{"id":80858,"nodeType":"OverrideSpecifier","overrides":[],"src":"753:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":80857,"nodeType":"UserDefinedTypeName","pathNode":{"id":80856,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"729:16:110"},"referencedDeclaration":89248,"src":"729:16:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"public"},{"id":80862,"nodeType":"VariableDeclaration","src":"783:27:110","nodes":[],"constant":false,"mutability":"mutable","name":"_trading","nameLocation":"802:8:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPausable_$89063","typeString":"contract IPausable"},"typeName":{"id":80861,"nodeType":"UserDefinedTypeName","pathNode":{"id":80860,"name":"IPausable","nodeType":"IdentifierPath","referencedDeclaration":89063,"src":"783:9:110"},"referencedDeclaration":89063,"src":"783:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPausable_$89063","typeString":"contract IPausable"}},"visibility":"internal"},{"id":80865,"nodeType":"VariableDeclaration","src":"816:30:110","nodes":[],"constant":false,"mutability":"mutable","name":"_callbacks","nameLocation":"836:10:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"},"typeName":{"id":80864,"nodeType":"UserDefinedTypeName","pathNode":{"id":80863,"name":"ICallbacks","nodeType":"IdentifierPath","referencedDeclaration":88257,"src":"816:10:110"},"referencedDeclaration":88257,"src":"816:10:110","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"visibility":"internal"},{"id":80869,"nodeType":"VariableDeclaration","src":"852:27:110","nodes":[],"baseFunctions":[89586],"constant":false,"functionSelector":"3e413bee","mutability":"mutable","name":"usdc","nameLocation":"875:4:110","overrides":{"id":80868,"nodeType":"OverrideSpecifier","overrides":[],"src":"866:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"},"typeName":{"id":80867,"nodeType":"UserDefinedTypeName","pathNode":{"id":80866,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":51481,"src":"852:6:110"},"referencedDeclaration":51481,"src":"852:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"visibility":"public"},{"id":80873,"nodeType":"VariableDeclaration","src":"885:42:110","nodes":[],"baseFunctions":[89598],"constant":false,"functionSelector":"8a4adf24","mutability":"mutable","name":"vaultManager","nameLocation":"915:12:110","overrides":{"id":80872,"nodeType":"OverrideSpecifier","overrides":[],"src":"906:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"},"typeName":{"id":80871,"nodeType":"UserDefinedTypeName","pathNode":{"id":80870,"name":"IVaultManager","nodeType":"IdentifierPath","referencedDeclaration":90188,"src":"885:13:110"},"referencedDeclaration":90188,"src":"885:13:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"visibility":"public"},{"id":80876,"nodeType":"VariableDeclaration","src":"933:25:110","nodes":[],"constant":false,"functionSelector":"1441a5a9","mutability":"mutable","name":"referral","nameLocation":"950:8:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IReferral_$89393","typeString":"contract IReferral"},"typeName":{"id":80875,"nodeType":"UserDefinedTypeName","pathNode":{"id":80874,"name":"IReferral","nodeType":"IdentifierPath","referencedDeclaration":89393,"src":"933:9:110"},"referencedDeclaration":89393,"src":"933:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IReferral_$89393","typeString":"contract IReferral"}},"visibility":"public"},{"id":80879,"nodeType":"VariableDeclaration","src":"965:37:110","nodes":[],"baseFunctions":[89864],"constant":false,"functionSelector":"f65d9dbe","mutability":"mutable","name":"maxTradesPerPair","nameLocation":"986:16:110","overrides":{"id":80878,"nodeType":"OverrideSpecifier","overrides":[],"src":"977:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80877,"name":"uint","nodeType":"ElementaryTypeName","src":"965:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":80882,"nodeType":"VariableDeclaration","src":"1008:43:110","nodes":[],"baseFunctions":[89876],"constant":false,"functionSelector":"8049fde7","mutability":"mutable","name":"maxPendingMarketOrders","nameLocation":"1029:22:110","overrides":{"id":80881,"nodeType":"OverrideSpecifier","overrides":[],"src":"1020:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80880,"name":"uint","nodeType":"ElementaryTypeName","src":"1008:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":80885,"nodeType":"VariableDeclaration","src":"1057:28:110","nodes":[],"baseFunctions":[89881],"constant":false,"functionSelector":"443295dc","mutability":"mutable","name":"totalOI","nameLocation":"1078:7:110","overrides":{"id":80884,"nodeType":"OverrideSpecifier","overrides":[],"src":"1069:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80883,"name":"uint","nodeType":"ElementaryTypeName","src":"1057:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":80887,"nodeType":"VariableDeclaration","src":"1091:18:110","nodes":[],"constant":false,"functionSelector":"3f23fa1a","mutability":"mutable","name":"tvlCap","nameLocation":"1103:6:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80886,"name":"uint","nodeType":"ElementaryTypeName","src":"1091:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":80889,"nodeType":"VariableDeclaration","src":"1115:23:110","nodes":[],"constant":false,"functionSelector":"34df8540","mutability":"mutable","name":"devFeesUSDC","nameLocation":"1127:11:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80888,"name":"uint","nodeType":"ElementaryTypeName","src":"1115:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":80891,"nodeType":"VariableDeclaration","src":"1144:23:110","nodes":[],"constant":false,"functionSelector":"3c6d6fa0","mutability":"mutable","name":"govFeesUSDC","nameLocation":"1156:11:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80890,"name":"uint","nodeType":"ElementaryTypeName","src":"1144:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":80893,"nodeType":"VariableDeclaration","src":"1174:27:110","nodes":[],"constant":false,"functionSelector":"66ac654d","mutability":"mutable","name":"requestedGov","nameLocation":"1189:12:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80892,"name":"address","nodeType":"ElementaryTypeName","src":"1174:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":80896,"nodeType":"VariableDeclaration","src":"1207:27:110","nodes":[],"baseFunctions":[89575],"constant":false,"functionSelector":"12d43a51","mutability":"mutable","name":"gov","nameLocation":"1231:3:110","overrides":{"id":80895,"nodeType":"OverrideSpecifier","overrides":[],"src":"1222:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80894,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":80899,"nodeType":"VariableDeclaration","src":"1240:27:110","nodes":[],"baseFunctions":[89580],"constant":false,"functionSelector":"91cca3db","mutability":"mutable","name":"dev","nameLocation":"1264:3:110","overrides":{"id":80898,"nodeType":"OverrideSpecifier","overrides":[],"src":"1255:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80897,"name":"address","nodeType":"ElementaryTypeName","src":"1240:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":80901,"nodeType":"VariableDeclaration","src":"1273:26:110","nodes":[],"constant":false,"functionSelector":"ff12673a","mutability":"mutable","name":"govTreasury","nameLocation":"1288:11:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80900,"name":"address","nodeType":"ElementaryTypeName","src":"1273:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":80905,"nodeType":"VariableDeclaration","src":"1306:39:110","nodes":[],"constant":false,"functionSelector":"32149592","mutability":"mutable","name":"openLimitOrders","nameLocation":"1330:15:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder[]"},"typeName":{"baseType":{"id":80903,"nodeType":"UserDefinedTypeName","pathNode":{"id":80902,"name":"OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"1306:14:110"},"referencedDeclaration":89474,"src":"1306:14:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"id":80904,"nodeType":"ArrayTypeName","src":"1306:16:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder[]"}},"visibility":"public"},{"id":80909,"nodeType":"VariableDeclaration","src":"1351:20:110","nodes":[],"constant":false,"functionSelector":"7eed1d30","mutability":"mutable","name":"usdOI","nameLocation":"1366:5:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2]"},"typeName":{"baseType":{"id":80906,"name":"uint","nodeType":"ElementaryTypeName","src":"1351:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80908,"length":{"hexValue":"32","id":80907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1356:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"1351:7:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"public"},{"id":80918,"nodeType":"VariableDeclaration","src":"1401:79:110","nodes":[],"constant":false,"mutability":"mutable","name":"_openTrades","nameLocation":"1469:11:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade)))"},"typeName":{"id":80917,"keyType":{"id":80910,"name":"address","nodeType":"ElementaryTypeName","src":"1409:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1401:59:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade)))"},"valueType":{"id":80916,"keyType":{"id":80911,"name":"uint","nodeType":"ElementaryTypeName","src":"1428:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1420:39:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade))"},"valueType":{"id":80915,"keyType":{"id":80912,"name":"uint","nodeType":"ElementaryTypeName","src":"1444:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1436:22:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade)"},"valueType":{"id":80914,"nodeType":"UserDefinedTypeName","pathNode":{"id":80913,"name":"Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"1452:5:110"},"referencedDeclaration":89438,"src":"1452:5:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}}}}},"visibility":"private"},{"id":80927,"nodeType":"VariableDeclaration","src":"1486:87:110","nodes":[],"constant":false,"mutability":"mutable","name":"_openTradesInfo","nameLocation":"1558:15:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo)))"},"typeName":{"id":80926,"keyType":{"id":80919,"name":"address","nodeType":"ElementaryTypeName","src":"1494:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1486:63:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo)))"},"valueType":{"id":80925,"keyType":{"id":80920,"name":"uint","nodeType":"ElementaryTypeName","src":"1513:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1505:43:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo))"},"valueType":{"id":80924,"keyType":{"id":80921,"name":"uint","nodeType":"ElementaryTypeName","src":"1529:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1521:26:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo)"},"valueType":{"id":80923,"nodeType":"UserDefinedTypeName","pathNode":{"id":80922,"name":"TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"1537:9:110"},"referencedDeclaration":89449,"src":"1537:9:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}}}}},"visibility":"private"},{"id":80933,"nodeType":"VariableDeclaration","src":"1579:66:110","nodes":[],"constant":false,"mutability":"mutable","name":"_openTradesCount","nameLocation":"1629:16:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":80932,"keyType":{"id":80928,"name":"address","nodeType":"ElementaryTypeName","src":"1587:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1579:41:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":80931,"keyType":{"id":80929,"name":"uint","nodeType":"ElementaryTypeName","src":"1606:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1598:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":80930,"name":"uint","nodeType":"ElementaryTypeName","src":"1614:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"id":80937,"nodeType":"VariableDeclaration","src":"1651:42:110","nodes":[],"constant":false,"mutability":"mutable","name":"_walletOI","nameLocation":"1684:9:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":80936,"keyType":{"id":80934,"name":"address","nodeType":"ElementaryTypeName","src":"1659:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1651:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":80935,"name":"uint","nodeType":"ElementaryTypeName","src":"1670:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":80945,"nodeType":"VariableDeclaration","src":"1729:83:110","nodes":[],"constant":false,"functionSelector":"eda00d54","mutability":"mutable","name":"openLimitOrderIds","nameLocation":"1795:17:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => uint256)))"},"typeName":{"id":80944,"keyType":{"id":80938,"name":"address","nodeType":"ElementaryTypeName","src":"1737:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1729:58:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => uint256)))"},"valueType":{"id":80943,"keyType":{"id":80939,"name":"uint","nodeType":"ElementaryTypeName","src":"1756:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1748:38:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"},"valueType":{"id":80942,"keyType":{"id":80940,"name":"uint","nodeType":"ElementaryTypeName","src":"1772:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1764:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":80941,"name":"uint","nodeType":"ElementaryTypeName","src":"1780:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}}},"visibility":"public"},{"id":80952,"nodeType":"VariableDeclaration","src":"1818:78:110","nodes":[],"baseFunctions":[89832],"constant":false,"functionSelector":"97e7995a","mutability":"mutable","name":"openLimitOrdersCount","nameLocation":"1876:20:110","overrides":{"id":80951,"nodeType":"OverrideSpecifier","overrides":[],"src":"1867:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":80950,"keyType":{"id":80946,"name":"address","nodeType":"ElementaryTypeName","src":"1826:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1818:41:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":80949,"keyType":{"id":80947,"name":"uint","nodeType":"ElementaryTypeName","src":"1845:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1837:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":80948,"name":"uint","nodeType":"ElementaryTypeName","src":"1853:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":80957,"nodeType":"VariableDeclaration","src":"1934:68:110","nodes":[],"constant":false,"mutability":"mutable","name":"_reqIDpendingMarketOrder","nameLocation":"1978:24:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarketOrder_$89484_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingMarketOrder)"},"typeName":{"id":80956,"keyType":{"id":80953,"name":"uint","nodeType":"ElementaryTypeName","src":"1942:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1934:35:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarketOrder_$89484_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingMarketOrder)"},"valueType":{"id":80955,"nodeType":"UserDefinedTypeName","pathNode":{"id":80954,"name":"PendingMarketOrder","nodeType":"IdentifierPath","referencedDeclaration":89484,"src":"1950:18:110"},"referencedDeclaration":89484,"src":"1950:18:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"}}},"visibility":"private"},{"id":80962,"nodeType":"VariableDeclaration","src":"2008:66:110","nodes":[],"constant":false,"mutability":"mutable","name":"_reqIDpendingLimitOrder","nameLocation":"2051:23:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingLimitOrder_$89494_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingLimitOrder)"},"typeName":{"id":80961,"keyType":{"id":80958,"name":"uint","nodeType":"ElementaryTypeName","src":"2016:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2008:34:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingLimitOrder_$89494_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingLimitOrder)"},"valueType":{"id":80960,"nodeType":"UserDefinedTypeName","pathNode":{"id":80959,"name":"PendingLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89494,"src":"2024:17:110"},"referencedDeclaration":89494,"src":"2024:17:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"}}},"visibility":"private"},{"id":80967,"nodeType":"VariableDeclaration","src":"2080:49:110","nodes":[],"constant":false,"functionSelector":"bcc9f1d3","mutability":"mutable","name":"pendingOrderIds","nameLocation":"2114:15:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[])"},"typeName":{"id":80966,"keyType":{"id":80963,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2080:26:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[])"},"valueType":{"baseType":{"id":80964,"name":"uint","nodeType":"ElementaryTypeName","src":"2099:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80965,"nodeType":"ArrayTypeName","src":"2099:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"visibility":"public"},{"id":80974,"nodeType":"VariableDeclaration","src":"2135:80:110","nodes":[],"baseFunctions":[89850],"constant":false,"functionSelector":"9c8912f1","mutability":"mutable","name":"pendingMarketOpenCount","nameLocation":"2193:22:110","overrides":{"id":80973,"nodeType":"OverrideSpecifier","overrides":[],"src":"2184:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":80972,"keyType":{"id":80968,"name":"address","nodeType":"ElementaryTypeName","src":"2143:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2135:41:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":80971,"keyType":{"id":80969,"name":"uint","nodeType":"ElementaryTypeName","src":"2162:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2154:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":80970,"name":"uint","nodeType":"ElementaryTypeName","src":"2170:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":80981,"nodeType":"VariableDeclaration","src":"2221:81:110","nodes":[],"baseFunctions":[89859],"constant":false,"functionSelector":"b7682d54","mutability":"mutable","name":"pendingMarketCloseCount","nameLocation":"2279:23:110","overrides":{"id":80980,"nodeType":"OverrideSpecifier","overrides":[],"src":"2270:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":80979,"keyType":{"id":80975,"name":"address","nodeType":"ElementaryTypeName","src":"2229:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2221:41:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":80978,"keyType":{"id":80976,"name":"uint","nodeType":"ElementaryTypeName","src":"2248:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2240:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":80977,"name":"uint","nodeType":"ElementaryTypeName","src":"2256:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":80986,"nodeType":"VariableDeclaration","src":"2351:45:110","nodes":[],"constant":false,"functionSelector":"e3cbe3a7","mutability":"mutable","name":"pairTraders","nameLocation":"2385:11:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(uint256 => address[])"},"typeName":{"id":80985,"keyType":{"id":80982,"name":"uint","nodeType":"ElementaryTypeName","src":"2359:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2351:26:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(uint256 => address[])"},"valueType":{"baseType":{"id":80983,"name":"address","nodeType":"ElementaryTypeName","src":"2367:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80984,"nodeType":"ArrayTypeName","src":"2367:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"visibility":"public"},{"id":80992,"nodeType":"VariableDeclaration","src":"2402:62:110","nodes":[],"constant":false,"functionSelector":"4415b369","mutability":"mutable","name":"pairTradersId","nameLocation":"2451:13:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":80991,"keyType":{"id":80987,"name":"address","nodeType":"ElementaryTypeName","src":"2410:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2402:41:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":80990,"keyType":{"id":80988,"name":"uint","nodeType":"ElementaryTypeName","src":"2429:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2421:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":80989,"name":"uint","nodeType":"ElementaryTypeName","src":"2437:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":80999,"nodeType":"VariableDeclaration","src":"2523:57:110","nodes":[],"baseFunctions":[89890],"constant":false,"functionSelector":"9cb87f23","mutability":"mutable","name":"openInterestUSDC","nameLocation":"2564:16:110","overrides":{"id":80998,"nodeType":"OverrideSpecifier","overrides":[],"src":"2555:8:110"},"scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2])"},"typeName":{"id":80997,"keyType":{"id":80993,"name":"uint","nodeType":"ElementaryTypeName","src":"2531:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2523:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2])"},"valueType":{"baseType":{"id":80994,"name":"uint","nodeType":"ElementaryTypeName","src":"2539:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80996,"length":{"hexValue":"32","id":80995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2544:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"2539:7:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}}},"visibility":"public"},{"id":81003,"nodeType":"VariableDeclaration","src":"2661:49:110","nodes":[],"constant":false,"functionSelector":"6d81d981","mutability":"mutable","name":"isTradingContract","nameLocation":"2693:17:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":81002,"keyType":{"id":81000,"name":"address","nodeType":"ElementaryTypeName","src":"2669:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2661:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":81001,"name":"bool","nodeType":"ElementaryTypeName","src":"2680:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":81007,"nodeType":"VariableDeclaration","src":"2716:39:110","nodes":[],"constant":false,"functionSelector":"f4ccf54e","mutability":"mutable","name":"rebates","nameLocation":"2748:7:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":81006,"keyType":{"id":81004,"name":"address","nodeType":"ElementaryTypeName","src":"2724:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2716:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":81005,"name":"uint","nodeType":"ElementaryTypeName","src":"2735:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":81013,"nodeType":"VariableDeclaration","src":"2798:52:110","nodes":[],"constant":false,"functionSelector":"b222cb38","mutability":"mutable","name":"blockOI","nameLocation":"2843:7:110","scope":83538,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"},"typeName":{"id":81012,"keyType":{"id":81008,"name":"uint","nodeType":"ElementaryTypeName","src":"2806:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2798:37:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"},"valueType":{"id":81011,"keyType":{"id":81009,"name":"uint","nodeType":"ElementaryTypeName","src":"2822:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2814:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":81010,"name":"uint","nodeType":"ElementaryTypeName","src":"2829:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":81024,"nodeType":"ModifierDefinition","src":"2874:73:110","nodes":[],"body":{"id":81023,"nodeType":"Block","src":"2893:54:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81016,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2911:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2911:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":81018,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80896,"src":"2925:3:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2911:17:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81015,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2903:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2903:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81021,"nodeType":"ExpressionStatement","src":"2903:26:110"},{"id":81022,"nodeType":"PlaceholderStatement","src":"2939:1:110"}]},"name":"onlyGov","nameLocation":"2883:7:110","parameters":{"id":81014,"nodeType":"ParameterList","parameters":[],"src":"2890:2:110"},"virtual":false,"visibility":"internal"},{"id":81035,"nodeType":"ModifierDefinition","src":"2953:89:110","nodes":[],"body":{"id":81034,"nodeType":"Block","src":"2976:66:110","nodes":[],"statements":[{"expression":{"arguments":[{"baseExpression":{"id":81027,"name":"isTradingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81003,"src":"2994:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":81030,"indexExpression":{"expression":{"id":81028,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3012:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3012:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2994:29:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81026,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2986:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2986:38:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81032,"nodeType":"ExpressionStatement","src":"2986:38:110"},{"id":81033,"nodeType":"PlaceholderStatement","src":"3034:1:110"}]},"name":"onlyTrading","nameLocation":"2962:11:110","parameters":{"id":81025,"nodeType":"ParameterList","parameters":[],"src":"2973:2:110"},"virtual":false,"visibility":"internal"},{"id":81042,"nodeType":"FunctionDefinition","src":"3052:53:110","nodes":[],"body":{"id":81041,"nodeType":"Block","src":"3066:39:110","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":81038,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43518,"src":"3076:20:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":81039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3076:22:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81040,"nodeType":"ExpressionStatement","src":"3076:22:110"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":81036,"nodeType":"ParameterList","parameters":[],"src":"3063:2:110"},"returnParameters":{"id":81037,"nodeType":"ParameterList","parameters":[],"src":"3066:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":81068,"nodeType":"FunctionDefinition","src":"3200:176:110","nodes":[],"body":{"id":81067,"nodeType":"Block","src":"3243:133:110","nodes":[],"statements":[{"expression":{"id":81051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81048,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80896,"src":"3253:3:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":81049,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3259:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3259:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3253:16:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81052,"nodeType":"ExpressionStatement","src":"3253:16:110"},{"expression":{"id":81055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81053,"name":"maxTradesPerPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80879,"src":"3279:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"35","id":81054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3298:1:110","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3279:20:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81056,"nodeType":"ExpressionStatement","src":"3279:20:110"},{"expression":{"id":81059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81057,"name":"maxPendingMarketOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80882,"src":"3309:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"35","id":81058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3334:1:110","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3309:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81060,"nodeType":"ExpressionStatement","src":"3309:26:110"},{"expression":{"id":81065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81061,"name":"tvlCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80887,"src":"3345:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3930","id":81062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3354:2:110","typeDescriptions":{"typeIdentifier":"t_rational_90_by_1","typeString":"int_const 90"},"value":"90"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":81063,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80855,"src":"3359:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3354:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3345:24:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81066,"nodeType":"ExpressionStatement","src":"3345:24:110"}]},"documentation":{"id":81043,"nodeType":"StructuredDocumentation","src":"3110:85:110","text":" @notice Initializes the proxy\n @dev Can be called only once."},"functionSelector":"8129fc1c","implemented":true,"kind":"function","modifiers":[{"id":81046,"kind":"modifierInvocation","modifierName":{"id":81045,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":43439,"src":"3231:11:110"},"nodeType":"ModifierInvocation","src":"3231:11:110"}],"name":"initialize","nameLocation":"3209:10:110","parameters":{"id":81044,"nodeType":"ParameterList","parameters":[],"src":"3219:2:110"},"returnParameters":{"id":81047,"nodeType":"ParameterList","parameters":[],"src":"3243:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81097,"nodeType":"FunctionDefinition","src":"3547:172:110","nodes":[],"body":{"id":81096,"nodeType":"Block","src":"3597:122:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81077,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81071,"src":"3615:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3633:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3625:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81078,"name":"address","nodeType":"ElementaryTypeName","src":"3625:7:110","typeDescriptions":{}}},"id":81081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3625:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3615:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81076,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3607:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3607:29:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81084,"nodeType":"ExpressionStatement","src":"3607:29:110"},{"expression":{"id":81089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81085,"name":"usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"3646:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":81087,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81071,"src":"3660:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81086,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51481,"src":"3653:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$51481_$","typeString":"type(contract IERC20)"}},"id":81088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3653:14:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"src":"3646:21:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"id":81090,"nodeType":"ExpressionStatement","src":"3646:21:110"},{"eventCall":{"arguments":[{"hexValue":"75736463","id":81092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3697:6:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_1773e1ddf200efb0fafc1e372028aa623f95d2de00ee1f4be9d606ee8c89d5fb","typeString":"literal_string \"usdc\""},"value":"usdc"},{"id":81093,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81071,"src":"3705:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1773e1ddf200efb0fafc1e372028aa623f95d2de00ee1f4be9d606ee8c89d5fb","typeString":"literal_string \"usdc\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":81091,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89512,"src":"3682:14:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":81094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3682:30:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81095,"nodeType":"EmitStatement","src":"3677:35:110"}]},"documentation":{"id":81069,"nodeType":"StructuredDocumentation","src":"3381:161:110","text":" @notice Updates the USDC token contract address.\n @dev Only callable by the governance.\n @param _token The new USDC token address."},"functionSelector":"b3e089a2","implemented":true,"kind":"function","modifiers":[{"id":81074,"kind":"modifierInvocation","modifierName":{"id":81073,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"3589:7:110"},"nodeType":"ModifierInvocation","src":"3589:7:110"}],"name":"setUSDC","nameLocation":"3556:7:110","parameters":{"id":81072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81071,"mutability":"mutable","name":"_token","nameLocation":"3572:6:110","nodeType":"VariableDeclaration","scope":81097,"src":"3564:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81070,"name":"address","nodeType":"ElementaryTypeName","src":"3564:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3563:16:110"},"returnParameters":{"id":81075,"nodeType":"ParameterList","parameters":[],"src":"3597:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81119,"nodeType":"FunctionDefinition","src":"3889:124:110","nodes":[],"body":{"id":81118,"nodeType":"Block","src":"3940:73:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81106,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81100,"src":"3958:4:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3974:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3966:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81107,"name":"address","nodeType":"ElementaryTypeName","src":"3966:7:110","typeDescriptions":{}}},"id":81110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3966:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3958:18:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81105,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3950:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3950:27:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81113,"nodeType":"ExpressionStatement","src":"3950:27:110"},{"expression":{"id":81116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81114,"name":"requestedGov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80893,"src":"3987:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81115,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81100,"src":"4002:4:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3987:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81117,"nodeType":"ExpressionStatement","src":"3987:19:110"}]},"documentation":{"id":81098,"nodeType":"StructuredDocumentation","src":"3725:159:110","text":" @notice Requests the governance address.\n @dev Only callable by the current governance.\n @param _gov The new governance address."},"functionSelector":"50bb2578","implemented":true,"kind":"function","modifiers":[{"id":81103,"kind":"modifierInvocation","modifierName":{"id":81102,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"3932:7:110"},"nodeType":"ModifierInvocation","src":"3932:7:110"}],"name":"requestGov","nameLocation":"3898:10:110","parameters":{"id":81101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81100,"mutability":"mutable","name":"_gov","nameLocation":"3917:4:110","nodeType":"VariableDeclaration","scope":81119,"src":"3909:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81099,"name":"address","nodeType":"ElementaryTypeName","src":"3909:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3908:14:110"},"returnParameters":{"id":81104,"nodeType":"ParameterList","parameters":[],"src":"3940:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81152,"nodeType":"FunctionDefinition","src":"4182:192:110","nodes":[],"body":{"id":81151,"nodeType":"Block","src":"4229:145:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81128,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81122,"src":"4247:4:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4263:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4255:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81129,"name":"address","nodeType":"ElementaryTypeName","src":"4255:7:110","typeDescriptions":{}}},"id":81132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4255:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4247:18:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81127,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4239:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4239:27:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81135,"nodeType":"ExpressionStatement","src":"4239:27:110"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81137,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81122,"src":"4284:4:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":81138,"name":"requestedGov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80893,"src":"4292:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4284:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81136,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4276:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4276:29:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81141,"nodeType":"ExpressionStatement","src":"4276:29:110"},{"expression":{"id":81144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81142,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80896,"src":"4315:3:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81143,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81122,"src":"4321:4:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4315:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81145,"nodeType":"ExpressionStatement","src":"4315:10:110"},{"eventCall":{"arguments":[{"hexValue":"676f76","id":81147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4355:5:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_0513914b5dbefa3a0eed07f860beb4ab89366ecf422e323f9160c4de52afed69","typeString":"literal_string \"gov\""},"value":"gov"},{"id":81148,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81122,"src":"4362:4:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0513914b5dbefa3a0eed07f860beb4ab89366ecf422e323f9160c4de52afed69","typeString":"literal_string \"gov\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":81146,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89512,"src":"4340:14:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":81149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4340:27:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81150,"nodeType":"EmitStatement","src":"4335:32:110"}]},"documentation":{"id":81120,"nodeType":"StructuredDocumentation","src":"4019:158:110","text":" @notice Updates the governance address.\n @dev Only callable by the current governance.\n @param _gov The new governance address."},"functionSelector":"cfad57a2","implemented":true,"kind":"function","modifiers":[{"id":81125,"kind":"modifierInvocation","modifierName":{"id":81124,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"4221:7:110"},"nodeType":"ModifierInvocation","src":"4221:7:110"}],"name":"setGov","nameLocation":"4191:6:110","parameters":{"id":81123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81122,"mutability":"mutable","name":"_gov","nameLocation":"4206:4:110","nodeType":"VariableDeclaration","scope":81152,"src":"4198:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81121,"name":"address","nodeType":"ElementaryTypeName","src":"4198:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4197:14:110"},"returnParameters":{"id":81126,"nodeType":"ParameterList","parameters":[],"src":"4229:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81179,"nodeType":"FunctionDefinition","src":"4564:153:110","nodes":[],"body":{"id":81178,"nodeType":"Block","src":"4611:106:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81161,"name":"_dev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81155,"src":"4629:4:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4645:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4637:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81162,"name":"address","nodeType":"ElementaryTypeName","src":"4637:7:110","typeDescriptions":{}}},"id":81165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4637:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4629:18:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81160,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4621:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4621:27:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81168,"nodeType":"ExpressionStatement","src":"4621:27:110"},{"expression":{"id":81171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81169,"name":"dev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80899,"src":"4658:3:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81170,"name":"_dev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81155,"src":"4664:4:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4658:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81172,"nodeType":"ExpressionStatement","src":"4658:10:110"},{"eventCall":{"arguments":[{"hexValue":"646576","id":81174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4698:5:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_479470ac0df380f209de1c800185565472402517515e8e60ed2662ef3c4ccc3a","typeString":"literal_string \"dev\""},"value":"dev"},{"id":81175,"name":"_dev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81155,"src":"4705:4:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_479470ac0df380f209de1c800185565472402517515e8e60ed2662ef3c4ccc3a","typeString":"literal_string \"dev\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":81173,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89512,"src":"4683:14:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":81176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4683:27:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81177,"nodeType":"EmitStatement","src":"4678:32:110"}]},"documentation":{"id":81153,"nodeType":"StructuredDocumentation","src":"4380:179:110","text":" @notice Updates the wallet recieveing developer share of fees\n @dev Only callable by the current governance.\n @param _dev The new developer address."},"functionSelector":"d477f05f","implemented":true,"kind":"function","modifiers":[{"id":81158,"kind":"modifierInvocation","modifierName":{"id":81157,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"4603:7:110"},"nodeType":"ModifierInvocation","src":"4603:7:110"}],"name":"setDev","nameLocation":"4573:6:110","parameters":{"id":81156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81155,"mutability":"mutable","name":"_dev","nameLocation":"4588:4:110","nodeType":"VariableDeclaration","scope":81179,"src":"4580:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81154,"name":"address","nodeType":"ElementaryTypeName","src":"4580:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4579:14:110"},"returnParameters":{"id":81159,"nodeType":"ParameterList","parameters":[],"src":"4611:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81206,"nodeType":"FunctionDefinition","src":"4909:209:110","nodes":[],"body":{"id":81205,"nodeType":"Block","src":"4972:146:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81188,"name":"_govTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81182,"src":"4990:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5014:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5006:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81189,"name":"address","nodeType":"ElementaryTypeName","src":"5006:7:110","typeDescriptions":{}}},"id":81192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5006:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4990:26:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81187,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4982:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4982:35:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81195,"nodeType":"ExpressionStatement","src":"4982:35:110"},{"expression":{"id":81198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81196,"name":"govTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80901,"src":"5027:11:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81197,"name":"_govTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81182,"src":"5041:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5027:26:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81199,"nodeType":"ExpressionStatement","src":"5027:26:110"},{"eventCall":{"arguments":[{"hexValue":"676f765472656173757279","id":81201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5083:13:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_b2b51d1f92ca302a1fce6e850ca9a2b21aa08edb692e7e76a00629fcc543b983","typeString":"literal_string \"govTreasury\""},"value":"govTreasury"},{"id":81202,"name":"_govTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81182,"src":"5098:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b2b51d1f92ca302a1fce6e850ca9a2b21aa08edb692e7e76a00629fcc543b983","typeString":"literal_string \"govTreasury\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":81200,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89512,"src":"5068:14:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":81203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5068:43:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81204,"nodeType":"EmitStatement","src":"5063:48:110"}]},"documentation":{"id":81180,"nodeType":"StructuredDocumentation","src":"4723:181:110","text":" @notice Updates the wallet recieveing gov share of fees\n @dev Only callable by the current governance.\n @param _govTreasury The new developer address."},"functionSelector":"05f3c6ad","implemented":true,"kind":"function","modifiers":[{"id":81185,"kind":"modifierInvocation","modifierName":{"id":81184,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"4964:7:110"},"nodeType":"ModifierInvocation","src":"4964:7:110"}],"name":"setGovTreasury","nameLocation":"4918:14:110","parameters":{"id":81183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81182,"mutability":"mutable","name":"_govTreasury","nameLocation":"4941:12:110","nodeType":"VariableDeclaration","scope":81206,"src":"4933:20:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81181,"name":"address","nodeType":"ElementaryTypeName","src":"4933:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4932:22:110"},"returnParameters":{"id":81186,"nodeType":"ParameterList","parameters":[],"src":"4972:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81234,"nodeType":"FunctionDefinition","src":"5348:204:110","nodes":[],"body":{"id":81233,"nodeType":"Block","src":"5412:140:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81215,"name":"__trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81209,"src":"5430:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5451:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5443:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81216,"name":"address","nodeType":"ElementaryTypeName","src":"5443:7:110","typeDescriptions":{}}},"id":81219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5443:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5430:23:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81214,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5422:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5422:32:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81222,"nodeType":"ExpressionStatement","src":"5422:32:110"},{"expression":{"id":81227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":81223,"name":"isTradingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81003,"src":"5464:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":81225,"indexExpression":{"id":81224,"name":"__trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81209,"src":"5482:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5464:28:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":81226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5495:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5464:35:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81228,"nodeType":"ExpressionStatement","src":"5464:35:110"},{"eventCall":{"arguments":[{"id":81230,"name":"__trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81209,"src":"5535:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81229,"name":"TradingContractAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89502,"src":"5514:20:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":81231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5514:31:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81232,"nodeType":"EmitStatement","src":"5509:36:110"}]},"documentation":{"id":81207,"nodeType":"StructuredDocumentation","src":"5124:219:110","text":" @notice Adds a new trading contract to the list of approved trading contracts.\n @dev Can only be called by the governor.\n @param __trading The address of the trading contract to be added."},"functionSelector":"f823e2ae","implemented":true,"kind":"function","modifiers":[{"id":81212,"kind":"modifierInvocation","modifierName":{"id":81211,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"5404:7:110"},"nodeType":"ModifierInvocation","src":"5404:7:110"}],"name":"addTradingContract","nameLocation":"5357:18:110","parameters":{"id":81210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81209,"mutability":"mutable","name":"__trading","nameLocation":"5384:9:110","nodeType":"VariableDeclaration","scope":81234,"src":"5376:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81208,"name":"address","nodeType":"ElementaryTypeName","src":"5376:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5375:19:110"},"returnParameters":{"id":81213,"nodeType":"ParameterList","parameters":[],"src":"5412:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81262,"nodeType":"FunctionDefinition","src":"5785:210:110","nodes":[],"body":{"id":81261,"nodeType":"Block","src":"5852:143:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81243,"name":"__trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81237,"src":"5870:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5891:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5883:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81244,"name":"address","nodeType":"ElementaryTypeName","src":"5883:7:110","typeDescriptions":{}}},"id":81247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5883:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5870:23:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81242,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5862:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5862:32:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81250,"nodeType":"ExpressionStatement","src":"5862:32:110"},{"expression":{"id":81255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":81251,"name":"isTradingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81003,"src":"5904:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":81253,"indexExpression":{"id":81252,"name":"__trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81237,"src":"5922:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5904:28:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":81254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5935:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5904:36:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81256,"nodeType":"ExpressionStatement","src":"5904:36:110"},{"eventCall":{"arguments":[{"id":81258,"name":"__trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81237,"src":"5978:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81257,"name":"TradingContractRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89506,"src":"5955:22:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":81259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5955:33:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81260,"nodeType":"EmitStatement","src":"5950:38:110"}]},"documentation":{"id":81235,"nodeType":"StructuredDocumentation","src":"5558:222:110","text":" @notice Removes a trading contract from the list of approved trading contracts.\n @dev Can only be called by the governor.\n @param __trading The address of the trading contract to be removed."},"functionSelector":"5b621e32","implemented":true,"kind":"function","modifiers":[{"id":81240,"kind":"modifierInvocation","modifierName":{"id":81239,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"5844:7:110"},"nodeType":"ModifierInvocation","src":"5844:7:110"}],"name":"removeTradingContract","nameLocation":"5794:21:110","parameters":{"id":81238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81237,"mutability":"mutable","name":"__trading","nameLocation":"5824:9:110","nodeType":"VariableDeclaration","scope":81262,"src":"5816:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81236,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5815:19:110"},"returnParameters":{"id":81241,"nodeType":"ParameterList","parameters":[],"src":"5852:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81291,"nodeType":"FunctionDefinition","src":"6184:235:110","nodes":[],"body":{"id":81290,"nodeType":"Block","src":"6250:169:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81271,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81265,"src":"6268:11:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6291:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6283:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81272,"name":"address","nodeType":"ElementaryTypeName","src":"6283:7:110","typeDescriptions":{}}},"id":81275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6283:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6268:25:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81270,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6260:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6260:34:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81278,"nodeType":"ExpressionStatement","src":"6260:34:110"},{"expression":{"id":81283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81279,"name":"priceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80859,"src":"6304:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":81281,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81265,"src":"6339:11:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81280,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"6322:16:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":81282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6322:29:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"src":"6304:47:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":81284,"nodeType":"ExpressionStatement","src":"6304:47:110"},{"eventCall":{"arguments":[{"hexValue":"707269636541676772656761746f72","id":81286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6381:17:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_e1934ba79d430062d3901a2d780068dda946341b0098e54396ce4f96090c9919","typeString":"literal_string \"priceAggregator\""},"value":"priceAggregator"},{"id":81287,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81265,"src":"6400:11:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e1934ba79d430062d3901a2d780068dda946341b0098e54396ce4f96090c9919","typeString":"literal_string \"priceAggregator\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":81285,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89512,"src":"6366:14:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":81288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6366:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81289,"nodeType":"EmitStatement","src":"6361:51:110"}]},"documentation":{"id":81263,"nodeType":"StructuredDocumentation","src":"6001:178:110","text":" @notice Sets the price aggregator contract.\n @dev Can only be called by the governor.\n @param _aggregator The address of the new price aggregator."},"functionSelector":"5070e837","implemented":true,"kind":"function","modifiers":[{"id":81268,"kind":"modifierInvocation","modifierName":{"id":81267,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"6242:7:110"},"nodeType":"ModifierInvocation","src":"6242:7:110"}],"name":"setPriceAggregator","nameLocation":"6193:18:110","parameters":{"id":81266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81265,"mutability":"mutable","name":"_aggregator","nameLocation":"6220:11:110","nodeType":"VariableDeclaration","scope":81291,"src":"6212:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81264,"name":"address","nodeType":"ElementaryTypeName","src":"6212:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6211:21:110"},"returnParameters":{"id":81269,"nodeType":"ParameterList","parameters":[],"src":"6250:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81320,"nodeType":"FunctionDefinition","src":"6604:231:110","nodes":[],"body":{"id":81319,"nodeType":"Block","src":"6669:166:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81300,"name":"_vaultManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81294,"src":"6687:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6712:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6704:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81301,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:110","typeDescriptions":{}}},"id":81304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6704:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6687:27:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81299,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6679:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6679:36:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81307,"nodeType":"ExpressionStatement","src":"6679:36:110"},{"expression":{"id":81312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81308,"name":"vaultManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80873,"src":"6725:12:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":81310,"name":"_vaultManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81294,"src":"6754:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81309,"name":"IVaultManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90188,"src":"6740:13:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultManager_$90188_$","typeString":"type(contract IVaultManager)"}},"id":81311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6740:28:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"src":"6725:43:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":81313,"nodeType":"ExpressionStatement","src":"6725:43:110"},{"eventCall":{"arguments":[{"hexValue":"7661756c744d616e61676572","id":81315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6798:14:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_a84a210bd5354c5ac1271c7767696e74e280e59a4d97bffe747766ee9f8c9762","typeString":"literal_string \"vaultManager\""},"value":"vaultManager"},{"id":81316,"name":"_vaultManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81294,"src":"6814:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a84a210bd5354c5ac1271c7767696e74e280e59a4d97bffe747766ee9f8c9762","typeString":"literal_string \"vaultManager\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":81314,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89512,"src":"6783:14:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":81317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6783:45:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81318,"nodeType":"EmitStatement","src":"6778:50:110"}]},"documentation":{"id":81292,"nodeType":"StructuredDocumentation","src":"6425:174:110","text":" @notice Sets the vault manager contract.\n @dev Can only be called by the governor.\n @param _vaultManager The address of the new vault manager."},"functionSelector":"b543503e","implemented":true,"kind":"function","modifiers":[{"id":81297,"kind":"modifierInvocation","modifierName":{"id":81296,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"6661:7:110"},"nodeType":"ModifierInvocation","src":"6661:7:110"}],"name":"setVaultManager","nameLocation":"6613:15:110","parameters":{"id":81295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81294,"mutability":"mutable","name":"_vaultManager","nameLocation":"6637:13:110","nodeType":"VariableDeclaration","scope":81320,"src":"6629:21:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81293,"name":"address","nodeType":"ElementaryTypeName","src":"6629:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6628:23:110"},"returnParameters":{"id":81298,"nodeType":"ParameterList","parameters":[],"src":"6669:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81349,"nodeType":"FunctionDefinition","src":"7015:199:110","nodes":[],"body":{"id":81348,"nodeType":"Block","src":"7072:142:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81329,"name":"_refferal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81323,"src":"7090:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7103:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81330,"name":"address","nodeType":"ElementaryTypeName","src":"7103:7:110","typeDescriptions":{}}},"id":81333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7103:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7090:23:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81328,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7082:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7082:32:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81336,"nodeType":"ExpressionStatement","src":"7082:32:110"},{"expression":{"id":81341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81337,"name":"referral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80876,"src":"7124:8:110","typeDescriptions":{"typeIdentifier":"t_contract$_IReferral_$89393","typeString":"contract IReferral"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":81339,"name":"_refferal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81323,"src":"7145:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81338,"name":"IReferral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89393,"src":"7135:9:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IReferral_$89393_$","typeString":"type(contract IReferral)"}},"id":81340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7135:20:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IReferral_$89393","typeString":"contract IReferral"}},"src":"7124:31:110","typeDescriptions":{"typeIdentifier":"t_contract$_IReferral_$89393","typeString":"contract IReferral"}},"id":81342,"nodeType":"ExpressionStatement","src":"7124:31:110"},{"eventCall":{"arguments":[{"hexValue":"526566657272616c","id":81344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7185:10:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_e0e014595d25934312f781a2f6c17595fb4a02c46a7e480de1ede5b709831991","typeString":"literal_string \"Referral\""},"value":"Referral"},{"id":81345,"name":"_refferal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81323,"src":"7197:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e0e014595d25934312f781a2f6c17595fb4a02c46a7e480de1ede5b709831991","typeString":"literal_string \"Referral\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":81343,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89512,"src":"7170:14:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":81346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7170:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81347,"nodeType":"EmitStatement","src":"7165:42:110"}]},"documentation":{"id":81321,"nodeType":"StructuredDocumentation","src":"6841:169:110","text":" @notice Sets the referral contract.\n @dev Can only be called by the governor.\n @param _refferal The address of the new referral contract."},"functionSelector":"9e5914da","implemented":true,"kind":"function","modifiers":[{"id":81326,"kind":"modifierInvocation","modifierName":{"id":81325,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"7064:7:110"},"nodeType":"ModifierInvocation","src":"7064:7:110"}],"name":"setReferral","nameLocation":"7024:11:110","parameters":{"id":81324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81323,"mutability":"mutable","name":"_refferal","nameLocation":"7044:9:110","nodeType":"VariableDeclaration","scope":81349,"src":"7036:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81322,"name":"address","nodeType":"ElementaryTypeName","src":"7036:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7035:19:110"},"returnParameters":{"id":81327,"nodeType":"ParameterList","parameters":[],"src":"7072:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81378,"nodeType":"FunctionDefinition","src":"7392:197:110","nodes":[],"body":{"id":81377,"nodeType":"Block","src":"7448:141:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81358,"name":"__trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81352,"src":"7466:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7487:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7479:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81359,"name":"address","nodeType":"ElementaryTypeName","src":"7479:7:110","typeDescriptions":{}}},"id":81362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7479:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7466:23:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81357,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7458:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7458:32:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81365,"nodeType":"ExpressionStatement","src":"7458:32:110"},{"expression":{"id":81370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81366,"name":"_trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80862,"src":"7500:8:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPausable_$89063","typeString":"contract IPausable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":81368,"name":"__trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81352,"src":"7521:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81367,"name":"IPausable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89063,"src":"7511:9:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPausable_$89063_$","typeString":"type(contract IPausable)"}},"id":81369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7511:20:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPausable_$89063","typeString":"contract IPausable"}},"src":"7500:31:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPausable_$89063","typeString":"contract IPausable"}},"id":81371,"nodeType":"ExpressionStatement","src":"7500:31:110"},{"eventCall":{"arguments":[{"hexValue":"74726164696e67","id":81373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7561:9:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_7c13c718f2166ffb5a40117ed95c445804369557a818bab5f163c7a0a95a4de5","typeString":"literal_string \"trading\""},"value":"trading"},{"id":81374,"name":"__trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81352,"src":"7572:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7c13c718f2166ffb5a40117ed95c445804369557a818bab5f163c7a0a95a4de5","typeString":"literal_string \"trading\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":81372,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89512,"src":"7546:14:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":81375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7546:36:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81376,"nodeType":"EmitStatement","src":"7541:41:110"}]},"documentation":{"id":81350,"nodeType":"StructuredDocumentation","src":"7220:167:110","text":" @notice Sets the trading contract.\n @dev Can only be called by the governor.\n @param __trading The address of the new trading contract."},"functionSelector":"a553906c","implemented":true,"kind":"function","modifiers":[{"id":81355,"kind":"modifierInvocation","modifierName":{"id":81354,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"7440:7:110"},"nodeType":"ModifierInvocation","src":"7440:7:110"}],"name":"setTrading","nameLocation":"7401:10:110","parameters":{"id":81353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81352,"mutability":"mutable","name":"__trading","nameLocation":"7420:9:110","nodeType":"VariableDeclaration","scope":81378,"src":"7412:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81351,"name":"address","nodeType":"ElementaryTypeName","src":"7412:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7411:19:110"},"returnParameters":{"id":81356,"nodeType":"ParameterList","parameters":[],"src":"7448:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81407,"nodeType":"FunctionDefinition","src":"7773:212:110","nodes":[],"body":{"id":81406,"nodeType":"Block","src":"7833:152:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81387,"name":"__callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81381,"src":"7851:11:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7874:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7866:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81388,"name":"address","nodeType":"ElementaryTypeName","src":"7866:7:110","typeDescriptions":{}}},"id":81391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7866:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7851:25:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81386,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7843:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7843:34:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81394,"nodeType":"ExpressionStatement","src":"7843:34:110"},{"expression":{"id":81399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81395,"name":"_callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80865,"src":"7887:10:110","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":81397,"name":"__callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81381,"src":"7911:11:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81396,"name":"ICallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88257,"src":"7900:10:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICallbacks_$88257_$","typeString":"type(contract ICallbacks)"}},"id":81398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7900:23:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"src":"7887:36:110","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":81400,"nodeType":"ExpressionStatement","src":"7887:36:110"},{"eventCall":{"arguments":[{"hexValue":"63616c6c6261636b73","id":81402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7953:11:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_107fc3227934d39bbcd945bd1a70b2d6b0de46e4d78ed50c6d9c6bf8d9898854","typeString":"literal_string \"callbacks\""},"value":"callbacks"},{"id":81403,"name":"__callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81381,"src":"7966:11:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_107fc3227934d39bbcd945bd1a70b2d6b0de46e4d78ed50c6d9c6bf8d9898854","typeString":"literal_string \"callbacks\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":81401,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89512,"src":"7938:14:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":81404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7938:40:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81405,"nodeType":"EmitStatement","src":"7933:45:110"}]},"documentation":{"id":81379,"nodeType":"StructuredDocumentation","src":"7595:173:110","text":" @notice Sets the callbacks contract.\n @dev Can only be called by the governor.\n @param __callbacks The address of the new callbacks contract."},"functionSelector":"fe0fc8d6","implemented":true,"kind":"function","modifiers":[{"id":81384,"kind":"modifierInvocation","modifierName":{"id":81383,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"7825:7:110"},"nodeType":"ModifierInvocation","src":"7825:7:110"}],"name":"setCallbacks","nameLocation":"7782:12:110","parameters":{"id":81382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81381,"mutability":"mutable","name":"__callbacks","nameLocation":"7803:11:110","nodeType":"VariableDeclaration","scope":81407,"src":"7795:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81380,"name":"address","nodeType":"ElementaryTypeName","src":"7795:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7794:21:110"},"returnParameters":{"id":81385,"nodeType":"ParameterList","parameters":[],"src":"7833:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81431,"nodeType":"FunctionDefinition","src":"8206:230:110","nodes":[],"body":{"id":81430,"nodeType":"Block","src":"8276:160:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81416,"name":"_maxTradesPerPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81410,"src":"8294:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":81417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8314:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8294:21:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81415,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8286:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8286:30:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81420,"nodeType":"ExpressionStatement","src":"8286:30:110"},{"expression":{"id":81423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81421,"name":"maxTradesPerPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80879,"src":"8326:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81422,"name":"_maxTradesPerPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81410,"src":"8345:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8326:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81424,"nodeType":"ExpressionStatement","src":"8326:36:110"},{"eventCall":{"arguments":[{"hexValue":"6d617854726164657350657250616972","id":81426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8391:18:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_a1ef72ea7d70130f3724acd78c65da7e2ce1293ce24c54c7fb0567c06f108f4e","typeString":"literal_string \"maxTradesPerPair\""},"value":"maxTradesPerPair"},{"id":81427,"name":"_maxTradesPerPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81410,"src":"8411:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a1ef72ea7d70130f3724acd78c65da7e2ce1293ce24c54c7fb0567c06f108f4e","typeString":"literal_string \"maxTradesPerPair\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":81425,"name":"NumberUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89518,"src":"8377:13:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":81428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8377:52:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81429,"nodeType":"EmitStatement","src":"8372:57:110"}]},"documentation":{"id":81408,"nodeType":"StructuredDocumentation","src":"7991:210:110","text":" @notice Sets the maximum number of trades allowed per trading pair.\n @dev Can only be called by the governor.\n @param _maxTradesPerPair The new maximum number of trades per pair."},"functionSelector":"dc2123ff","implemented":true,"kind":"function","modifiers":[{"id":81413,"kind":"modifierInvocation","modifierName":{"id":81412,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"8268:7:110"},"nodeType":"ModifierInvocation","src":"8268:7:110"}],"name":"setMaxTradesPerPair","nameLocation":"8215:19:110","parameters":{"id":81411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81410,"mutability":"mutable","name":"_maxTradesPerPair","nameLocation":"8240:17:110","nodeType":"VariableDeclaration","scope":81431,"src":"8235:22:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81409,"name":"uint","nodeType":"ElementaryTypeName","src":"8235:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8234:24:110"},"returnParameters":{"id":81414,"nodeType":"ParameterList","parameters":[],"src":"8276:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81455,"nodeType":"FunctionDefinition","src":"8659:272:110","nodes":[],"body":{"id":81454,"nodeType":"Block","src":"8741:190:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81440,"name":"_maxPendingMarketOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81434,"src":"8759:23:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":81441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8785:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8759:27:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81439,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8751:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":81443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8751:36:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81444,"nodeType":"ExpressionStatement","src":"8751:36:110"},{"expression":{"id":81447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81445,"name":"maxPendingMarketOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80882,"src":"8797:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81446,"name":"_maxPendingMarketOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81434,"src":"8822:23:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8797:48:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81448,"nodeType":"ExpressionStatement","src":"8797:48:110"},{"eventCall":{"arguments":[{"hexValue":"6d617850656e64696e674d61726b65744f7264657273","id":81450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8874:24:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_38fc1ddeb218b44589d10f25d34cd963e3390a1c282a4d633206bcfa1cbc5f10","typeString":"literal_string \"maxPendingMarketOrders\""},"value":"maxPendingMarketOrders"},{"id":81451,"name":"_maxPendingMarketOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81434,"src":"8900:23:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_38fc1ddeb218b44589d10f25d34cd963e3390a1c282a4d633206bcfa1cbc5f10","typeString":"literal_string \"maxPendingMarketOrders\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":81449,"name":"NumberUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89518,"src":"8860:13:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":81452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8860:64:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81453,"nodeType":"EmitStatement","src":"8855:69:110"}]},"documentation":{"id":81432,"nodeType":"StructuredDocumentation","src":"8442:212:110","text":" @notice Sets the maximum number of pending market orders.\n @dev Can only be called by the governor.\n @param _maxPendingMarketOrders The new maximum number of pending market orders."},"functionSelector":"ecf56a1f","implemented":true,"kind":"function","modifiers":[{"id":81437,"kind":"modifierInvocation","modifierName":{"id":81436,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"8733:7:110"},"nodeType":"ModifierInvocation","src":"8733:7:110"}],"name":"setMaxPendingMarketOrders","nameLocation":"8668:25:110","parameters":{"id":81435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81434,"mutability":"mutable","name":"_maxPendingMarketOrders","nameLocation":"8699:23:110","nodeType":"VariableDeclaration","scope":81455,"src":"8694:28:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81433,"name":"uint","nodeType":"ElementaryTypeName","src":"8694:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8693:30:110"},"returnParameters":{"id":81438,"nodeType":"ParameterList","parameters":[],"src":"8741:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81473,"nodeType":"FunctionDefinition","src":"9106:208:110","nodes":[],"body":{"id":81472,"nodeType":"Block","src":"9156:158:110","nodes":[],"statements":[{"expression":{"id":81465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81463,"name":"tvlCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80887,"src":"9244:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81464,"name":"_newCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81458,"src":"9253:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9244:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81466,"nodeType":"ExpressionStatement","src":"9244:16:110"},{"eventCall":{"arguments":[{"hexValue":"74766c436170","id":81468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9289:8:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_29697e703f7ed2651ec1cc4211bfd0229a2ad9b9769e59a1b3fc72858c97e735","typeString":"literal_string \"tvlCap\""},"value":"tvlCap"},{"id":81469,"name":"_newCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81458,"src":"9299:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_29697e703f7ed2651ec1cc4211bfd0229a2ad9b9769e59a1b3fc72858c97e735","typeString":"literal_string \"tvlCap\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":81467,"name":"NumberUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89518,"src":"9275:13:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":81470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9275:32:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81471,"nodeType":"EmitStatement","src":"9270:37:110"}]},"documentation":{"id":81456,"nodeType":"StructuredDocumentation","src":"8937:164:110","text":" @notice Sets the TVL cap that be borrowed from LP tranches\n @dev Can only be called by the governor.\n @param _newCap The new TVl cal"},"functionSelector":"dd0290e2","implemented":true,"kind":"function","modifiers":[{"id":81461,"kind":"modifierInvocation","modifierName":{"id":81460,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"9148:7:110"},"nodeType":"ModifierInvocation","src":"9148:7:110"}],"name":"setTvlCap","nameLocation":"9115:9:110","parameters":{"id":81459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81458,"mutability":"mutable","name":"_newCap","nameLocation":"9130:7:110","nodeType":"VariableDeclaration","scope":81473,"src":"9125:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81457,"name":"uint","nodeType":"ElementaryTypeName","src":"9125:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9124:14:110"},"returnParameters":{"id":81462,"nodeType":"ParameterList","parameters":[],"src":"9156:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81587,"nodeType":"FunctionDefinition","src":"9568:831:110","nodes":[],"body":{"id":81586,"nodeType":"Block","src":"9668:731:110","nodes":[],"statements":[{"expression":{"id":81495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":81486,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9678:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81488,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"9678:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":81490,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9714:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"9714:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":81492,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9729:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9729:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":81489,"name":"firstEmptyTradeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83231,"src":"9693:20:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":81494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9693:53:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9678:68:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81496,"nodeType":"ExpressionStatement","src":"9678:68:110"},{"expression":{"id":81508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81497,"name":"_openTrades","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80918,"src":"9756:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref)))"}},"id":81504,"indexExpression":{"expression":{"id":81498,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9768:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81499,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"9768:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9756:26:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref))"}},"id":81505,"indexExpression":{"expression":{"id":81500,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9783:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9783:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9756:44:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade storage ref)"}},"id":81506,"indexExpression":{"expression":{"id":81502,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9801:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"9801:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9756:58:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81507,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9817:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"src":"9756:67:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"id":81509,"nodeType":"ExpressionStatement","src":"9756:67:110"},{"expression":{"id":81517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9834:51:110","subExpression":{"baseExpression":{"baseExpression":{"id":81510,"name":"_openTradesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80933,"src":"9834:16:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81515,"indexExpression":{"expression":{"id":81511,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9851:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"9851:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9834:31:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81516,"indexExpression":{"expression":{"id":81513,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9866:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9866:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9834:49:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81518,"nodeType":"ExpressionStatement","src":"9834:51:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":81519,"name":"_openTradesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80933,"src":"9900:16:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81522,"indexExpression":{"expression":{"id":81520,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9917:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"9917:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9900:31:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81525,"indexExpression":{"expression":{"id":81523,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9932:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9932:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9900:49:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":81526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9953:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9900:54:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81552,"nodeType":"IfStatement","src":"9896:233:110","trueBody":{"id":81551,"nodeType":"Block","src":"9956:173:110","statements":[{"expression":{"id":81540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":81528,"name":"pairTradersId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80992,"src":"9970:13:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81533,"indexExpression":{"expression":{"id":81529,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9984:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"9984:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9970:28:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81534,"indexExpression":{"expression":{"id":81531,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"9999:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81532,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9999:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9970:46:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":81535,"name":"pairTraders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80986,"src":"10019:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(uint256 => address[] storage ref)"}},"id":81538,"indexExpression":{"expression":{"id":81536,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10031:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81537,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"10031:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10019:29:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":81539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"10019:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9970:85:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81541,"nodeType":"ExpressionStatement","src":"9970:85:110"},{"expression":{"arguments":[{"expression":{"id":81547,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10104:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81548,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"10104:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":81542,"name":"pairTraders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80986,"src":"10069:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(uint256 => address[] storage ref)"}},"id":81545,"indexExpression":{"expression":{"id":81543,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10081:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"10081:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10069:29:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":81546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"10069:34:110","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":81549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10069:49:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81550,"nodeType":"ExpressionStatement","src":"10069:49:110"}]}},{"expression":{"id":81557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":81553,"name":"_tradeInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81480,"src":"10139:10:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":81555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"beingMarketClosed","nodeType":"MemberAccess","referencedDeclaration":89446,"src":"10139:28:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":81556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10170:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"10139:36:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81558,"nodeType":"ExpressionStatement","src":"10139:36:110"},{"expression":{"id":81570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81559,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"10185:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":81566,"indexExpression":{"expression":{"id":81560,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10201:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"10201:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10185:30:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":81567,"indexExpression":{"expression":{"id":81562,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10216:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81563,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"10216:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10185:48:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":81568,"indexExpression":{"expression":{"id":81564,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10234:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"10234:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10185:62:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81569,"name":"_tradeInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81480,"src":"10250:10:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"src":"10185:75:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"id":81571,"nodeType":"ExpressionStatement","src":"10185:75:110"},{"expression":{"arguments":[{"expression":{"id":81573,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10295:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"10295:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":81575,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10310:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"10310:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":81577,"name":"_tradeInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81480,"src":"10328:10:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":81578,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89440,"src":"10328:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":81579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10357:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":81580,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10363:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"10363:10:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":81582,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"10375:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81583,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"10375:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":81572,"name":"_updateOpenInterestUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83537,"src":"10271:23:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,bool,bool,uint256)"}},"id":81584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10271:121:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81585,"nodeType":"ExpressionStatement","src":"10271:121:110"}]},"baseFunctions":[89823],"documentation":{"id":81474,"nodeType":"StructuredDocumentation","src":"9320:243:110","text":" @notice Stores a new trade and updates the associated trade information.\n @dev Can only be called by trading contract.\n @param _trade The details of the trade to store.\n @param _tradeInfo Trade Info struct"},"functionSelector":"b833966f","implemented":true,"kind":"function","modifiers":[{"id":81484,"kind":"modifierInvocation","modifierName":{"id":81483,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"9656:11:110"},"nodeType":"ModifierInvocation","src":"9656:11:110"}],"name":"storeTrade","nameLocation":"9577:10:110","overrides":{"id":81482,"nodeType":"OverrideSpecifier","overrides":[],"src":"9647:8:110"},"parameters":{"id":81481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81477,"mutability":"mutable","name":"_trade","nameLocation":"9601:6:110","nodeType":"VariableDeclaration","scope":81587,"src":"9588:19:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":81476,"nodeType":"UserDefinedTypeName","pathNode":{"id":81475,"name":"Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"9588:5:110"},"referencedDeclaration":89438,"src":"9588:5:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"},{"constant":false,"id":81480,"mutability":"mutable","name":"_tradeInfo","nameLocation":"9626:10:110","nodeType":"VariableDeclaration","scope":81587,"src":"9609:27:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo"},"typeName":{"id":81479,"nodeType":"UserDefinedTypeName","pathNode":{"id":81478,"name":"TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"9609:9:110"},"referencedDeclaration":89449,"src":"9609:9:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}},"visibility":"internal"}],"src":"9587:50:110"},"returnParameters":{"id":81485,"nodeType":"ParameterList","parameters":[],"src":"9668:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81663,"nodeType":"FunctionDefinition","src":"10764:587:110","nodes":[],"body":{"id":81662,"nodeType":"Block","src":"10927:424:110","nodes":[],"statements":[{"assignments":[81604],"declarations":[{"constant":false,"id":81604,"mutability":"mutable","name":"t","nameLocation":"10951:1:110","nodeType":"VariableDeclaration","scope":81662,"src":"10937:15:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":81603,"nodeType":"UserDefinedTypeName","pathNode":{"id":81602,"name":"Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"10937:5:110"},"referencedDeclaration":89438,"src":"10937:5:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":81612,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81605,"name":"_openTrades","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80918,"src":"10955:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref)))"}},"id":81607,"indexExpression":{"id":81606,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81590,"src":"10967:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10955:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref))"}},"id":81609,"indexExpression":{"id":81608,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81592,"src":"10975:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10955:30:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade storage ref)"}},"id":81611,"indexExpression":{"id":81610,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81594,"src":"10986:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10955:37:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"nodeType":"VariableDeclarationStatement","src":"10937:55:110"},{"assignments":[81615],"declarations":[{"constant":false,"id":81615,"mutability":"mutable","name":"i","nameLocation":"11020:1:110","nodeType":"VariableDeclaration","scope":81662,"src":"11002:19:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"},"typeName":{"id":81614,"nodeType":"UserDefinedTypeName","pathNode":{"id":81613,"name":"TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"11002:9:110"},"referencedDeclaration":89449,"src":"11002:9:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}},"visibility":"internal"}],"id":81623,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81616,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"11024:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":81618,"indexExpression":{"id":81617,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81590,"src":"11040:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11024:23:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":81620,"indexExpression":{"id":81619,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81592,"src":"11048:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11024:34:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":81622,"indexExpression":{"id":81621,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81594,"src":"11059:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11024:41:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11002:63:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81624,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81604,"src":"11079:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":81625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"11079:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11093:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11079:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81630,"nodeType":"IfStatement","src":"11075:52:110","trueBody":{"id":81629,"nodeType":"Block","src":"11096:31:110","statements":[{"functionReturnParameters":81601,"id":81628,"nodeType":"Return","src":"11110:7:110"}]}},{"expression":{"id":81635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":81631,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81604,"src":"11136:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":81633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"11136:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":81634,"name":"_amountReduced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81596,"src":"11157:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11136:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81636,"nodeType":"ExpressionStatement","src":"11136:35:110"},{"expression":{"id":81645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":81637,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81615,"src":"11181:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo storage pointer"}},"id":81639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89440,"src":"11181:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[{"expression":{"id":81642,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81604,"src":"11222:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":81643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"11222:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":81640,"name":"_amountReduced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81596,"src":"11203:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"11203:18:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":81644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11203:30:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11181:52:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81646,"nodeType":"ExpressionStatement","src":"11181:52:110"},{"expression":{"arguments":[{"id":81648,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81590,"src":"11267:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81649,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81592,"src":"11275:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":81652,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81604,"src":"11305:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":81653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"11305:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":81650,"name":"_amountReduced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81596,"src":"11286:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"11286:18:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":81654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11286:30:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":81655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11318:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"expression":{"id":81656,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81604,"src":"11325:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":81657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"11325:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":81658,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81604,"src":"11332:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":81659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"11332:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":81647,"name":"_updateOpenInterestUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83537,"src":"11243:23:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,bool,bool,uint256)"}},"id":81660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11243:101:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81661,"nodeType":"ExpressionStatement","src":"11243:101:110"}]},"baseFunctions":[89637],"documentation":{"id":81588,"nodeType":"StructuredDocumentation","src":"10405:354:110","text":" @notice Registers a partial trade and updates trade information accordingly.\n @dev Can only be called by trading contract.\n @param trader Address of the trader.\n @param pairIndex Index of the trading pair.\n @param index Index of the trade.\n @param _amountReduced The amount by which the trade is reduced."},"functionSelector":"3f64d036","implemented":true,"kind":"function","modifiers":[{"id":81600,"kind":"modifierInvocation","modifierName":{"id":81599,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"10915:11:110"},"nodeType":"ModifierInvocation","src":"10915:11:110"}],"name":"registerPartialTrade","nameLocation":"10773:20:110","overrides":{"id":81598,"nodeType":"OverrideSpecifier","overrides":[],"src":"10906:8:110"},"parameters":{"id":81597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81590,"mutability":"mutable","name":"trader","nameLocation":"10811:6:110","nodeType":"VariableDeclaration","scope":81663,"src":"10803:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81589,"name":"address","nodeType":"ElementaryTypeName","src":"10803:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81592,"mutability":"mutable","name":"pairIndex","nameLocation":"10832:9:110","nodeType":"VariableDeclaration","scope":81663,"src":"10827:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81591,"name":"uint","nodeType":"ElementaryTypeName","src":"10827:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":81594,"mutability":"mutable","name":"index","nameLocation":"10856:5:110","nodeType":"VariableDeclaration","scope":81663,"src":"10851:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81593,"name":"uint","nodeType":"ElementaryTypeName","src":"10851:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":81596,"mutability":"mutable","name":"_amountReduced","nameLocation":"10876:14:110","nodeType":"VariableDeclaration","scope":81663,"src":"10871:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81595,"name":"uint","nodeType":"ElementaryTypeName","src":"10871:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10793:103:110"},"returnParameters":{"id":81601,"nodeType":"ParameterList","parameters":[],"src":"10927:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81802,"nodeType":"FunctionDefinition","src":"11639:957:110","nodes":[],"body":{"id":81801,"nodeType":"Block","src":"11738:858:110","nodes":[],"statements":[{"assignments":[81678],"declarations":[{"constant":false,"id":81678,"mutability":"mutable","name":"t","nameLocation":"11762:1:110","nodeType":"VariableDeclaration","scope":81801,"src":"11748:15:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":81677,"nodeType":"UserDefinedTypeName","pathNode":{"id":81676,"name":"Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"11748:5:110"},"referencedDeclaration":89438,"src":"11748:5:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":81686,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81679,"name":"_openTrades","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80918,"src":"11766:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref)))"}},"id":81681,"indexExpression":{"id":81680,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81666,"src":"11778:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11766:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref))"}},"id":81683,"indexExpression":{"id":81682,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"11786:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11766:30:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade storage ref)"}},"id":81685,"indexExpression":{"id":81684,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81670,"src":"11797:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11766:37:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11748:55:110"},{"assignments":[81689],"declarations":[{"constant":false,"id":81689,"mutability":"mutable","name":"i","nameLocation":"11831:1:110","nodeType":"VariableDeclaration","scope":81801,"src":"11813:19:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"},"typeName":{"id":81688,"nodeType":"UserDefinedTypeName","pathNode":{"id":81687,"name":"TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"11813:9:110"},"referencedDeclaration":89449,"src":"11813:9:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}},"visibility":"internal"}],"id":81697,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81690,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"11835:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":81692,"indexExpression":{"id":81691,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81666,"src":"11851:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11835:23:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":81694,"indexExpression":{"id":81693,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"11859:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11835:34:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":81696,"indexExpression":{"id":81695,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81670,"src":"11870:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11835:41:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11813:63:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81698,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81678,"src":"11890:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":81699,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"11890:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11904:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11890:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81704,"nodeType":"IfStatement","src":"11886:52:110","trueBody":{"id":81703,"nodeType":"Block","src":"11907:31:110","statements":[{"functionReturnParameters":81675,"id":81702,"nodeType":"Return","src":"11921:7:110"}]}},{"expression":{"arguments":[{"id":81706,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81666,"src":"11971:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81707,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"11979:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":81708,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81689,"src":"11990:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo storage pointer"}},"id":81709,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89440,"src":"11990:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":81710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12010:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"expression":{"id":81711,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81678,"src":"12017:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":81712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"12017:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":81713,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81678,"src":"12024:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":81714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"12024:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":81705,"name":"_updateOpenInterestUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83537,"src":"11947:23:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,bool,bool,uint256)"}},"id":81715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11947:89:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81716,"nodeType":"ExpressionStatement","src":"11947:89:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":81717,"name":"_openTradesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80933,"src":"12051:16:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81719,"indexExpression":{"id":81718,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81666,"src":"12068:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12051:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81721,"indexExpression":{"id":81720,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"12076:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12051:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":81722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12090:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12051:40:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81775,"nodeType":"IfStatement","src":"12047:382:110","trueBody":{"id":81774,"nodeType":"Block","src":"12093:336:110","statements":[{"assignments":[81725],"declarations":[{"constant":false,"id":81725,"mutability":"mutable","name":"_pairTradersId","nameLocation":"12112:14:110","nodeType":"VariableDeclaration","scope":81774,"src":"12107:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81724,"name":"uint","nodeType":"ElementaryTypeName","src":"12107:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81731,"initialValue":{"baseExpression":{"baseExpression":{"id":81726,"name":"pairTradersId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80992,"src":"12129:13:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81728,"indexExpression":{"id":81727,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81666,"src":"12143:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12129:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81730,"indexExpression":{"id":81729,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"12151:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12129:32:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12107:54:110"},{"assignments":[81736],"declarations":[{"constant":false,"id":81736,"mutability":"mutable","name":"p","nameLocation":"12193:1:110","nodeType":"VariableDeclaration","scope":81774,"src":"12175:19:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":81734,"name":"address","nodeType":"ElementaryTypeName","src":"12175:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81735,"nodeType":"ArrayTypeName","src":"12175:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":81740,"initialValue":{"baseExpression":{"id":81737,"name":"pairTraders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80986,"src":"12197:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(uint256 => address[] storage ref)"}},"id":81739,"indexExpression":{"id":81738,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"12209:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12197:22:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12175:44:110"},{"expression":{"id":81750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":81741,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81736,"src":"12234:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[] storage pointer"}},"id":81743,"indexExpression":{"id":81742,"name":"_pairTradersId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81725,"src":"12236:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12234:17:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":81744,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81736,"src":"12254:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[] storage pointer"}},"id":81749,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81745,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81736,"src":"12256:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[] storage pointer"}},"id":81746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12256:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":81747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12267:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12256:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12254:15:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12234:35:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81751,"nodeType":"ExpressionStatement","src":"12234:35:110"},{"expression":{"id":81760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":81752,"name":"pairTradersId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80992,"src":"12283:13:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81757,"indexExpression":{"baseExpression":{"id":81753,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81736,"src":"12297:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[] storage pointer"}},"id":81755,"indexExpression":{"id":81754,"name":"_pairTradersId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81725,"src":"12299:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12297:17:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12283:32:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81758,"indexExpression":{"id":81756,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"12316:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12283:43:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81759,"name":"_pairTradersId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81725,"src":"12329:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12283:60:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81761,"nodeType":"ExpressionStatement","src":"12283:60:110"},{"expression":{"id":81767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"12358:39:110","subExpression":{"baseExpression":{"baseExpression":{"id":81762,"name":"pairTradersId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80992,"src":"12365:13:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81764,"indexExpression":{"id":81763,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81666,"src":"12379:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12365:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81766,"indexExpression":{"id":81765,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"12387:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12365:32:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81768,"nodeType":"ExpressionStatement","src":"12358:39:110"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":81769,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81736,"src":"12411:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[] storage pointer"}},"id":81771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"12411:5:110","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":81772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12411:7:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81773,"nodeType":"ExpressionStatement","src":"12411:7:110"}]}},{"expression":{"id":81783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"12439:44:110","subExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81776,"name":"_openTrades","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80918,"src":"12446:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref)))"}},"id":81778,"indexExpression":{"id":81777,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81666,"src":"12458:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12446:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref))"}},"id":81780,"indexExpression":{"id":81779,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"12466:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12446:30:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade storage ref)"}},"id":81782,"indexExpression":{"id":81781,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81670,"src":"12477:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12446:37:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81784,"nodeType":"ExpressionStatement","src":"12439:44:110"},{"expression":{"id":81792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"12493:48:110","subExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81785,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"12500:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":81787,"indexExpression":{"id":81786,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81666,"src":"12516:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12500:23:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":81789,"indexExpression":{"id":81788,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"12524:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12500:34:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":81791,"indexExpression":{"id":81790,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81670,"src":"12535:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12500:41:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81793,"nodeType":"ExpressionStatement","src":"12493:48:110"},{"expression":{"id":81799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"12552:37:110","subExpression":{"baseExpression":{"baseExpression":{"id":81794,"name":"_openTradesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80933,"src":"12552:16:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81797,"indexExpression":{"id":81795,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81666,"src":"12569:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12552:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81798,"indexExpression":{"id":81796,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81668,"src":"12577:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12552:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81800,"nodeType":"ExpressionStatement","src":"12552:37:110"}]},"baseFunctions":[89626],"documentation":{"id":81664,"nodeType":"StructuredDocumentation","src":"11357:277:110","text":" @notice Unregisters a trade and deletes trade information accordingly.\n @dev Can only be called by trading contract.\n @param trader Address of the trader.\n @param pairIndex Index of the trading pair.\n @param index Index of the trade."},"functionSelector":"90d112b9","implemented":true,"kind":"function","modifiers":[{"id":81674,"kind":"modifierInvocation","modifierName":{"id":81673,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"11726:11:110"},"nodeType":"ModifierInvocation","src":"11726:11:110"}],"name":"unregisterTrade","nameLocation":"11648:15:110","overrides":{"id":81672,"nodeType":"OverrideSpecifier","overrides":[],"src":"11717:8:110"},"parameters":{"id":81671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81666,"mutability":"mutable","name":"trader","nameLocation":"11672:6:110","nodeType":"VariableDeclaration","scope":81802,"src":"11664:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81665,"name":"address","nodeType":"ElementaryTypeName","src":"11664:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81668,"mutability":"mutable","name":"pairIndex","nameLocation":"11685:9:110","nodeType":"VariableDeclaration","scope":81802,"src":"11680:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81667,"name":"uint","nodeType":"ElementaryTypeName","src":"11680:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":81670,"mutability":"mutable","name":"index","nameLocation":"11701:5:110","nodeType":"VariableDeclaration","scope":81802,"src":"11696:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81669,"name":"uint","nodeType":"ElementaryTypeName","src":"11696:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11663:44:110"},"returnParameters":{"id":81675,"nodeType":"ParameterList","parameters":[],"src":"11738:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81883,"nodeType":"FunctionDefinition","src":"12948:656:110","nodes":[],"body":{"id":81882,"nodeType":"Block","src":"13097:507:110","nodes":[],"statements":[{"expression":{"arguments":[{"id":81822,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81808,"src":"13149:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":81816,"name":"pendingOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80967,"src":"13107:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":81820,"indexExpression":{"expression":{"expression":{"id":81817,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81806,"src":"13123:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"13123:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"13123:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13107:36:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":81821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"13107:41:110","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":81823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13107:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81824,"nodeType":"ExpressionStatement","src":"13107:46:110"},{"expression":{"id":81829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":81825,"name":"_reqIDpendingMarketOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80957,"src":"13164:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarketOrder_$89484_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingMarketOrder storage ref)"}},"id":81827,"indexExpression":{"id":81826,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81808,"src":"13189:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13164:29:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage","typeString":"struct ITradingStorage.PendingMarketOrder storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81828,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81806,"src":"13196:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"src":"13164:38:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage","typeString":"struct ITradingStorage.PendingMarketOrder storage ref"}},"id":81830,"nodeType":"ExpressionStatement","src":"13164:38:110"},{"expression":{"id":81837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":81831,"name":"_reqIDpendingMarketOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80957,"src":"13212:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarketOrder_$89484_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingMarketOrder storage ref)"}},"id":81833,"indexExpression":{"id":81832,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81808,"src":"13237:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13212:29:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage","typeString":"struct ITradingStorage.PendingMarketOrder storage ref"}},"id":81834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":89479,"src":"13212:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":81835,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13250:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":81836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"13250:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13212:50:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81838,"nodeType":"ExpressionStatement","src":"13212:50:110"},{"condition":{"id":81839,"name":"_open","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81810,"src":"13277:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":81880,"nodeType":"Block","src":"13384:214:110","statements":[{"expression":{"id":81861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13398:70:110","subExpression":{"baseExpression":{"baseExpression":{"id":81852,"name":"pendingMarketCloseCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80981,"src":"13398:23:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81859,"indexExpression":{"expression":{"expression":{"id":81853,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81806,"src":"13422:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"13422:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"13422:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13398:44:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81860,"indexExpression":{"expression":{"expression":{"id":81856,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81806,"src":"13443:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"13443:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81858,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13443:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13398:68:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81862,"nodeType":"ExpressionStatement","src":"13398:70:110"},{"expression":{"id":81878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81863,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"13482:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":81873,"indexExpression":{"expression":{"expression":{"id":81864,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81806,"src":"13498:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81865,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"13498:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"13498:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13482:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":81874,"indexExpression":{"expression":{"expression":{"id":81867,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81806,"src":"13519:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81868,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"13519:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81869,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13519:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13482:60:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":81875,"indexExpression":{"expression":{"expression":{"id":81870,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81806,"src":"13543:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81871,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"13543:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"13543:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13482:80:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"id":81876,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"beingMarketClosed","nodeType":"MemberAccess","referencedDeclaration":89446,"src":"13482:98:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":81877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13583:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"13482:105:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81879,"nodeType":"ExpressionStatement","src":"13482:105:110"}]},"id":81881,"nodeType":"IfStatement","src":"13273:325:110","trueBody":{"id":81851,"nodeType":"Block","src":"13284:94:110","statements":[{"expression":{"id":81849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13298:69:110","subExpression":{"baseExpression":{"baseExpression":{"id":81840,"name":"pendingMarketOpenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80974,"src":"13298:22:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81847,"indexExpression":{"expression":{"expression":{"id":81841,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81806,"src":"13321:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81842,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"13321:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"13321:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13298:43:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81848,"indexExpression":{"expression":{"expression":{"id":81844,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81806,"src":"13342:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"13342:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13342:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13298:67:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81850,"nodeType":"ExpressionStatement","src":"13298:69:110"}]}}]},"baseFunctions":[89674],"documentation":{"id":81803,"nodeType":"StructuredDocumentation","src":"12602:341:110","text":" @notice Stores a new pending market order and updates associated counters.\n @dev Can only be called by trading contract.\n @param _order Details of the pending market order.\n @param _id The ID associated with the pending market order.\n @param _open Specifies whether the order opens a new position."},"functionSelector":"d8137fe8","implemented":true,"kind":"function","modifiers":[{"id":81814,"kind":"modifierInvocation","modifierName":{"id":81813,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"13085:11:110"},"nodeType":"ModifierInvocation","src":"13085:11:110"}],"name":"storePendingMarketOrder","nameLocation":"12957:23:110","overrides":{"id":81812,"nodeType":"OverrideSpecifier","overrides":[],"src":"13076:8:110"},"parameters":{"id":81811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81806,"mutability":"mutable","name":"_order","nameLocation":"13016:6:110","nodeType":"VariableDeclaration","scope":81883,"src":"12990:32:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"},"typeName":{"id":81805,"nodeType":"UserDefinedTypeName","pathNode":{"id":81804,"name":"PendingMarketOrder","nodeType":"IdentifierPath","referencedDeclaration":89484,"src":"12990:18:110"},"referencedDeclaration":89484,"src":"12990:18:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"}},"visibility":"internal"},{"constant":false,"id":81808,"mutability":"mutable","name":"_id","nameLocation":"13037:3:110","nodeType":"VariableDeclaration","scope":81883,"src":"13032:8:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81807,"name":"uint","nodeType":"ElementaryTypeName","src":"13032:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":81810,"mutability":"mutable","name":"_open","nameLocation":"13055:5:110","nodeType":"VariableDeclaration","scope":81883,"src":"13050:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81809,"name":"bool","nodeType":"ElementaryTypeName","src":"13050:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12980:86:110"},"returnParameters":{"id":81815,"nodeType":"ParameterList","parameters":[],"src":"13097:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81999,"nodeType":"FunctionDefinition","src":"13842:967:110","nodes":[],"body":{"id":81998,"nodeType":"Block","src":"13932:877:110","nodes":[],"statements":[{"assignments":[81896],"declarations":[{"constant":false,"id":81896,"mutability":"mutable","name":"_order","nameLocation":"13968:6:110","nodeType":"VariableDeclaration","scope":81998,"src":"13942:32:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"},"typeName":{"id":81895,"nodeType":"UserDefinedTypeName","pathNode":{"id":81894,"name":"PendingMarketOrder","nodeType":"IdentifierPath","referencedDeclaration":89484,"src":"13942:18:110"},"referencedDeclaration":89484,"src":"13942:18:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"}},"visibility":"internal"}],"id":81900,"initialValue":{"baseExpression":{"id":81897,"name":"_reqIDpendingMarketOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80957,"src":"13977:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarketOrder_$89484_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingMarketOrder storage ref)"}},"id":81899,"indexExpression":{"id":81898,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81886,"src":"14002:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13977:29:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage","typeString":"struct ITradingStorage.PendingMarketOrder storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13942:64:110"},{"assignments":[81905],"declarations":[{"constant":false,"id":81905,"mutability":"mutable","name":"orderIds","nameLocation":"14031:8:110","nodeType":"VariableDeclaration","scope":81998,"src":"14016:23:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":81903,"name":"uint","nodeType":"ElementaryTypeName","src":"14016:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81904,"nodeType":"ArrayTypeName","src":"14016:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":81911,"initialValue":{"baseExpression":{"id":81906,"name":"pendingOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80967,"src":"14042:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":81910,"indexExpression":{"expression":{"expression":{"id":81907,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81896,"src":"14058:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"14058:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"14058:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14042:36:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14016:62:110"},{"body":{"id":81996,"nodeType":"Block","src":"14128:675:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":81920,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81905,"src":"14146:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":81922,"indexExpression":{"id":81921,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81913,"src":"14155:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14146:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":81923,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81886,"src":"14161:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14146:18:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81991,"nodeType":"IfStatement","src":"14142:620:110","trueBody":{"id":81990,"nodeType":"Block","src":"14166:596:110","statements":[{"condition":{"id":81925,"name":"_open","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81888,"src":"14188:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":81966,"nodeType":"Block","src":"14311:264:110","statements":[{"expression":{"id":81947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"14333:70:110","subExpression":{"baseExpression":{"baseExpression":{"id":81938,"name":"pendingMarketCloseCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80981,"src":"14333:23:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81945,"indexExpression":{"expression":{"expression":{"id":81939,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81896,"src":"14357:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"14357:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"14357:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14333:44:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81946,"indexExpression":{"expression":{"expression":{"id":81942,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81896,"src":"14378:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"14378:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81944,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"14378:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14333:68:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81948,"nodeType":"ExpressionStatement","src":"14333:70:110"},{"expression":{"id":81964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":81949,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"14425:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":81959,"indexExpression":{"expression":{"expression":{"id":81950,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81896,"src":"14441:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"14441:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81952,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"14441:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14425:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":81960,"indexExpression":{"expression":{"expression":{"id":81953,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81896,"src":"14462:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"14462:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81955,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"14462:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14425:60:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":81961,"indexExpression":{"expression":{"expression":{"id":81956,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81896,"src":"14486:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"14486:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"14486:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14425:80:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"id":81962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"beingMarketClosed","nodeType":"MemberAccess","referencedDeclaration":89446,"src":"14425:123:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":81963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14551:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"14425:131:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81965,"nodeType":"ExpressionStatement","src":"14425:131:110"}]},"id":81967,"nodeType":"IfStatement","src":"14184:391:110","trueBody":{"id":81937,"nodeType":"Block","src":"14195:110:110","statements":[{"expression":{"id":81935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"14217:69:110","subExpression":{"baseExpression":{"baseExpression":{"id":81926,"name":"pendingMarketOpenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80974,"src":"14217:22:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":81933,"indexExpression":{"expression":{"expression":{"id":81927,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81896,"src":"14240:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"14240:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"14240:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14217:43:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":81934,"indexExpression":{"expression":{"expression":{"id":81930,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81896,"src":"14261:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":81931,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"14261:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":81932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"14261:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14217:67:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81936,"nodeType":"ExpressionStatement","src":"14217:69:110"}]}},{"expression":{"id":81977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":81968,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81905,"src":"14593:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":81970,"indexExpression":{"id":81969,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81913,"src":"14602:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14593:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":81971,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81905,"src":"14607:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":81976,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81972,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81905,"src":"14616:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":81973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14616:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":81974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14634:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14616:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14607:29:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14593:43:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81978,"nodeType":"ExpressionStatement","src":"14593:43:110"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":81979,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81905,"src":"14654:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":81981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"14654:12:110","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":81982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14654:14:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81983,"nodeType":"ExpressionStatement","src":"14654:14:110"},{"expression":{"id":81987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"14687:36:110","subExpression":{"baseExpression":{"id":81984,"name":"_reqIDpendingMarketOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80957,"src":"14694:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarketOrder_$89484_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingMarketOrder storage ref)"}},"id":81986,"indexExpression":{"id":81985,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81886,"src":"14719:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14694:29:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage","typeString":"struct ITradingStorage.PendingMarketOrder storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81988,"nodeType":"ExpressionStatement","src":"14687:36:110"},{"functionReturnParameters":81893,"id":81989,"nodeType":"Return","src":"14741:7:110"}]}},{"id":81995,"nodeType":"UncheckedBlock","src":"14775:18:110","statements":[{"expression":{"id":81993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14787:3:110","subExpression":{"id":81992,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81913,"src":"14787:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81994,"nodeType":"ExpressionStatement","src":"14787:3:110"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81916,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81913,"src":"14106:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":81917,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81905,"src":"14110:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":81918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14110:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14106:19:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81997,"initializationExpression":{"assignments":[81913],"declarations":[{"constant":false,"id":81913,"mutability":"mutable","name":"i","nameLocation":"14099:1:110","nodeType":"VariableDeclaration","scope":81997,"src":"14094:6:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81912,"name":"uint","nodeType":"ElementaryTypeName","src":"14094:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81915,"initialValue":{"hexValue":"30","id":81914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14103:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14094:10:110"},"nodeType":"ForStatement","src":"14089:714:110"}]},"baseFunctions":[89644],"documentation":{"id":81884,"nodeType":"StructuredDocumentation","src":"13610:227:110","text":" @notice Unregisters a pending market order and updates counters.\n @param _id The ID associated with the pending market order.\n @param _open Specifies whether the order opens or closes a position."},"functionSelector":"cab94580","implemented":true,"kind":"function","modifiers":[{"id":81892,"kind":"modifierInvocation","modifierName":{"id":81891,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"13920:11:110"},"nodeType":"ModifierInvocation","src":"13920:11:110"}],"name":"unregisterPendingMarketOrder","nameLocation":"13851:28:110","overrides":{"id":81890,"nodeType":"OverrideSpecifier","overrides":[],"src":"13911:8:110"},"parameters":{"id":81889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81886,"mutability":"mutable","name":"_id","nameLocation":"13885:3:110","nodeType":"VariableDeclaration","scope":81999,"src":"13880:8:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81885,"name":"uint","nodeType":"ElementaryTypeName","src":"13880:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":81888,"mutability":"mutable","name":"_open","nameLocation":"13895:5:110","nodeType":"VariableDeclaration","scope":81999,"src":"13890:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81887,"name":"bool","nodeType":"ElementaryTypeName","src":"13890:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13879:22:110"},"returnParameters":{"id":81893,"nodeType":"ParameterList","parameters":[],"src":"13932:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82148,"nodeType":"FunctionDefinition","src":"14924:1300:110","nodes":[],"body":{"id":82147,"nodeType":"Block","src":"15006:1218:110","nodes":[],"statements":[{"assignments":[82012],"declarations":[{"constant":false,"id":82012,"mutability":"mutable","name":"orderType","nameLocation":"15044:9:110","nodeType":"VariableDeclaration","scope":82147,"src":"15017:36:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},"typeName":{"id":82011,"nodeType":"UserDefinedTypeName","pathNode":{"id":82010,"name":"IPriceAggregator.OrderType","nodeType":"IdentifierPath","referencedDeclaration":89075,"src":"15017:26:110"},"referencedDeclaration":89075,"src":"15017:26:110","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"visibility":"internal"}],"id":82018,"initialValue":{"expression":{"arguments":[{"id":82015,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82002,"src":"15081:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82013,"name":"priceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80859,"src":"15056:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":82014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOrder","nodeType":"MemberAccess","referencedDeclaration":89247,"src":"15056:24:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_Order_$89085_memory_ptr_$","typeString":"function (uint256) view external returns (struct IPriceAggregator.Order memory)"}},"id":82016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15056:29:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_memory_ptr","typeString":"struct IPriceAggregator.Order memory"}},"id":82017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89080,"src":"15056:39:110","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"nodeType":"VariableDeclarationStatement","src":"15017:78:110"},{"assignments":[82021],"declarations":[{"constant":false,"id":82021,"mutability":"mutable","name":"_order","nameLocation":"15132:6:110","nodeType":"VariableDeclaration","scope":82147,"src":"15106:32:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"},"typeName":{"id":82020,"nodeType":"UserDefinedTypeName","pathNode":{"id":82019,"name":"PendingMarketOrder","nodeType":"IdentifierPath","referencedDeclaration":89484,"src":"15106:18:110"},"referencedDeclaration":89484,"src":"15106:18:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"}},"visibility":"internal"}],"id":82025,"initialValue":{"baseExpression":{"id":82022,"name":"_reqIDpendingMarketOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80957,"src":"15141:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarketOrder_$89484_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingMarketOrder storage ref)"}},"id":82024,"indexExpression":{"id":82023,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82002,"src":"15166:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15141:29:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage","typeString":"struct ITradingStorage.PendingMarketOrder storage ref"}},"nodeType":"VariableDeclarationStatement","src":"15106:64:110"},{"assignments":[82030],"declarations":[{"constant":false,"id":82030,"mutability":"mutable","name":"orderIds","nameLocation":"15195:8:110","nodeType":"VariableDeclaration","scope":82147,"src":"15180:23:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":82028,"name":"uint","nodeType":"ElementaryTypeName","src":"15180:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82029,"nodeType":"ArrayTypeName","src":"15180:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":82036,"initialValue":{"baseExpression":{"id":82031,"name":"pendingOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80967,"src":"15206:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":82035,"indexExpression":{"expression":{"expression":{"id":82032,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"15222:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82033,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"15222:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"15222:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15206:36:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"15180:62:110"},{"body":{"id":82123,"nodeType":"Block","src":"15296:666:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":82048,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82030,"src":"15314:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":82050,"indexExpression":{"id":82049,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82038,"src":"15323:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15314:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":82051,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82002,"src":"15329:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15314:18:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82122,"nodeType":"IfStatement","src":"15310:642:110","trueBody":{"id":82121,"nodeType":"Block","src":"15334:618:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},"id":82057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82053,"name":"orderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82012,"src":"15356:9:110","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":82054,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"15369:16:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":82055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OrderType","nodeType":"MemberAccess","referencedDeclaration":89075,"src":"15369:26:110","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":82056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_OPEN","nodeType":"MemberAccess","referencedDeclaration":89069,"src":"15369:38:110","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"src":"15356:51:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":82098,"nodeType":"Block","src":"15525:264:110","statements":[{"expression":{"id":82079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"15547:70:110","subExpression":{"baseExpression":{"baseExpression":{"id":82070,"name":"pendingMarketCloseCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80981,"src":"15547:23:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":82077,"indexExpression":{"expression":{"expression":{"id":82071,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"15571:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"15571:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"15571:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15547:44:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":82078,"indexExpression":{"expression":{"expression":{"id":82074,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"15592:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"15592:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"15592:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15547:68:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82080,"nodeType":"ExpressionStatement","src":"15547:70:110"},{"expression":{"id":82096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82081,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"15639:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":82091,"indexExpression":{"expression":{"expression":{"id":82082,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"15655:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"15655:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"15655:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15639:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":82092,"indexExpression":{"expression":{"expression":{"id":82085,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"15676:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"15676:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"15676:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15639:60:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":82093,"indexExpression":{"expression":{"expression":{"id":82088,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"15700:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"15700:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"15700:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15639:80:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"id":82094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"beingMarketClosed","nodeType":"MemberAccess","referencedDeclaration":89446,"src":"15639:123:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":82095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15765:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"15639:131:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82097,"nodeType":"ExpressionStatement","src":"15639:131:110"}]},"id":82099,"nodeType":"IfStatement","src":"15352:437:110","trueBody":{"id":82069,"nodeType":"Block","src":"15409:110:110","statements":[{"expression":{"id":82067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"15431:69:110","subExpression":{"baseExpression":{"baseExpression":{"id":82058,"name":"pendingMarketOpenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80974,"src":"15431:22:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":82065,"indexExpression":{"expression":{"expression":{"id":82059,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"15454:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82060,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"15454:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"15454:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15431:43:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":82066,"indexExpression":{"expression":{"expression":{"id":82062,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"15475:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"15475:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"15475:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15431:67:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82068,"nodeType":"ExpressionStatement","src":"15431:69:110"}]}},{"expression":{"id":82109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":82100,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82030,"src":"15807:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":82102,"indexExpression":{"id":82101,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82038,"src":"15816:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15807:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":82103,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82030,"src":"15821:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":82108,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82104,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82030,"src":"15830:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":82105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"15830:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":82106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15848:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15830:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15821:29:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15807:43:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82110,"nodeType":"ExpressionStatement","src":"15807:43:110"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":82111,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82030,"src":"15868:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":82113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"15868:12:110","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":82114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15868:14:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82115,"nodeType":"ExpressionStatement","src":"15868:14:110"},{"expression":{"id":82119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"15901:36:110","subExpression":{"baseExpression":{"id":82116,"name":"_reqIDpendingMarketOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80957,"src":"15908:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarketOrder_$89484_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingMarketOrder storage ref)"}},"id":82118,"indexExpression":{"id":82117,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82002,"src":"15933:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15908:29:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage","typeString":"struct ITradingStorage.PendingMarketOrder storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82120,"nodeType":"ExpressionStatement","src":"15901:36:110"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82041,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82038,"src":"15270:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":82042,"name":"orderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82030,"src":"15274:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":82043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"15274:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15270:19:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82124,"initializationExpression":{"assignments":[82038],"declarations":[{"constant":false,"id":82038,"mutability":"mutable","name":"i","nameLocation":"15263:1:110","nodeType":"VariableDeclaration","scope":82124,"src":"15258:6:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82037,"name":"uint","nodeType":"ElementaryTypeName","src":"15258:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82040,"initialValue":{"hexValue":"30","id":82039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15267:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15258:10:110"},"loopExpression":{"expression":{"id":82046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15291:3:110","subExpression":{"id":82045,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82038,"src":"15291:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82047,"nodeType":"ExpressionStatement","src":"15291:3:110"},"nodeType":"ForStatement","src":"15253:709:110"},{"expression":{"arguments":[{"expression":{"expression":{"id":82129,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"16083:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"16083:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"16083:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"expression":{"id":82132,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"16104:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"16104:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"16104:29:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":82126,"name":"usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"16064:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}],"id":82125,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51481,"src":"16057:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$51481_$","typeString":"type(contract IERC20)"}},"id":82127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16057:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"id":82128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":51575,"src":"16057:25:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$51481_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$51481_$","typeString":"function (contract IERC20,address,uint256)"}},"id":82135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16057:77:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82136,"nodeType":"ExpressionStatement","src":"16057:77:110"},{"eventCall":{"arguments":[{"id":82138,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82002,"src":"16168:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":82139,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"16173:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"16173:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"16173:19:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"expression":{"id":82142,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82021,"src":"16194:6:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":82143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"16194:12:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"16194:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82137,"name":"MarketOpenCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89570,"src":"16149:18:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":82145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16149:68:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82146,"nodeType":"EmitStatement","src":"16144:73:110"}]},"baseFunctions":[89942],"documentation":{"id":82000,"nodeType":"StructuredDocumentation","src":"14814:105:110","text":" @notice This is used as last resort in case a trader's collateral get stuck in storage"},"functionSelector":"0d32c907","implemented":true,"kind":"function","modifiers":[{"id":82006,"kind":"modifierInvocation","modifierName":{"id":82005,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"14995:11:110"},"nodeType":"ModifierInvocation","src":"14995:11:110"}],"name":"forceUnregisterPendingMarketOrder","nameLocation":"14933:33:110","overrides":{"id":82004,"nodeType":"OverrideSpecifier","overrides":[],"src":"14986:8:110"},"parameters":{"id":82003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82002,"mutability":"mutable","name":"_id","nameLocation":"14972:3:110","nodeType":"VariableDeclaration","scope":82148,"src":"14967:8:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82001,"name":"uint","nodeType":"ElementaryTypeName","src":"14967:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14966:10:110"},"returnParameters":{"id":82007,"nodeType":"ParameterList","parameters":[],"src":"15006:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82167,"nodeType":"FunctionDefinition","src":"16417:179:110","nodes":[],"body":{"id":82166,"nodeType":"Block","src":"16532:64:110","nodes":[],"statements":[{"expression":{"id":82164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":82160,"name":"_reqIDpendingLimitOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80962,"src":"16542:23:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingLimitOrder_$89494_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingLimitOrder storage ref)"}},"id":82162,"indexExpression":{"id":82161,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82154,"src":"16566:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16542:33:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage","typeString":"struct ITradingStorage.PendingLimitOrder storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82163,"name":"_limitOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82152,"src":"16578:11:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"src":"16542:47:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage","typeString":"struct ITradingStorage.PendingLimitOrder storage ref"}},"id":82165,"nodeType":"ExpressionStatement","src":"16542:47:110"}]},"baseFunctions":[89762],"documentation":{"id":82149,"nodeType":"StructuredDocumentation","src":"16230:182:110","text":" @notice Stores a new pending limit order.\n @param _limitOrder Details of the pending limit order.\n @param _orderId The ID for the pending limit order."},"functionSelector":"d775d548","implemented":true,"kind":"function","modifiers":[{"id":82158,"kind":"modifierInvocation","modifierName":{"id":82157,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"16520:11:110"},"nodeType":"ModifierInvocation","src":"16520:11:110"}],"name":"storePendingLimitOrder","nameLocation":"16426:22:110","overrides":{"id":82156,"nodeType":"OverrideSpecifier","overrides":[],"src":"16511:8:110"},"parameters":{"id":82155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82152,"mutability":"mutable","name":"_limitOrder","nameLocation":"16474:11:110","nodeType":"VariableDeclaration","scope":82167,"src":"16449:36:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"},"typeName":{"id":82151,"nodeType":"UserDefinedTypeName","pathNode":{"id":82150,"name":"PendingLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89494,"src":"16449:17:110"},"referencedDeclaration":89494,"src":"16449:17:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"}},"visibility":"internal"},{"constant":false,"id":82154,"mutability":"mutable","name":"_orderId","nameLocation":"16492:8:110","nodeType":"VariableDeclaration","scope":82167,"src":"16487:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82153,"name":"uint","nodeType":"ElementaryTypeName","src":"16487:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16448:53:110"},"returnParameters":{"id":82159,"nodeType":"ParameterList","parameters":[],"src":"16532:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82182,"nodeType":"FunctionDefinition","src":"16740:135:110","nodes":[],"body":{"id":82181,"nodeType":"Block","src":"16820:55:110","nodes":[],"statements":[{"expression":{"id":82179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"16830:38:110","subExpression":{"baseExpression":{"id":82176,"name":"_reqIDpendingLimitOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80962,"src":"16837:23:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingLimitOrder_$89494_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingLimitOrder storage ref)"}},"id":82178,"indexExpression":{"id":82177,"name":"_order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82170,"src":"16861:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16837:31:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage","typeString":"struct ITradingStorage.PendingLimitOrder storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82180,"nodeType":"ExpressionStatement","src":"16830:38:110"}]},"baseFunctions":[89797],"documentation":{"id":82168,"nodeType":"StructuredDocumentation","src":"16602:133:110","text":" @notice Unregisters a pending limit order.\n @param _order The ID for the pending limit order to unregister."},"functionSelector":"7ada8483","implemented":true,"kind":"function","modifiers":[{"id":82174,"kind":"modifierInvocation","modifierName":{"id":82173,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"16808:11:110"},"nodeType":"ModifierInvocation","src":"16808:11:110"}],"name":"unregisterPendingLimitOrder","nameLocation":"16749:27:110","overrides":{"id":82172,"nodeType":"OverrideSpecifier","overrides":[],"src":"16799:8:110"},"parameters":{"id":82171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82170,"mutability":"mutable","name":"_order","nameLocation":"16782:6:110","nodeType":"VariableDeclaration","scope":82182,"src":"16777:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82169,"name":"uint","nodeType":"ElementaryTypeName","src":"16777:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16776:13:110"},"returnParameters":{"id":82175,"nodeType":"ParameterList","parameters":[],"src":"16820:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82242,"nodeType":"FunctionDefinition","src":"16990:366:110","nodes":[],"body":{"id":82241,"nodeType":"Block","src":"17074:282:110","nodes":[],"statements":[{"expression":{"id":82201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82192,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17084:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":82194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89455,"src":"17084:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":82196,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17119:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":82197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"17119:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":82198,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17129:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":82199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"17129:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82195,"name":"firstEmptyOpenLimitIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83286,"src":"17094:24:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":82200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17094:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17084:57:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82202,"nodeType":"ExpressionStatement","src":"17084:57:110"},{"expression":{"id":82208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82203,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17151:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":82205,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":89471,"src":"17151:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82206,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17161:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":82207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"17161:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17151:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82209,"nodeType":"ExpressionStatement","src":"17151:22:110"},{"expression":{"arguments":[{"id":82213,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17204:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}],"expression":{"id":82210,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"17183:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"17183:20:110","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage_ptr_$_t_struct$_OpenLimitOrder_$89474_storage_$returns$__$bound_to$_t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage_ptr_$","typeString":"function (struct ITradingStorage.OpenLimitOrder storage ref[] storage pointer,struct ITradingStorage.OpenLimitOrder storage ref)"}},"id":82214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17183:23:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82215,"nodeType":"ExpressionStatement","src":"17183:23:110"},{"expression":{"id":82230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82216,"name":"openLimitOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80945,"src":"17216:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => uint256)))"}},"id":82223,"indexExpression":{"expression":{"id":82217,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17234:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":82218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"17234:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17216:27:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":82224,"indexExpression":{"expression":{"id":82219,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17244:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":82220,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"17244:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17216:40:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":82225,"indexExpression":{"expression":{"id":82221,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17257:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":82222,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89455,"src":"17257:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17216:49:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82226,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"17268:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"17268:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":82228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17293:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17268:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17216:78:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82231,"nodeType":"ExpressionStatement","src":"17216:78:110"},{"expression":{"id":82239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17304:45:110","subExpression":{"baseExpression":{"baseExpression":{"id":82232,"name":"openLimitOrdersCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80952,"src":"17304:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":82237,"indexExpression":{"expression":{"id":82233,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17325:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":82234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"17325:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17304:30:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":82238,"indexExpression":{"expression":{"id":82235,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82186,"src":"17335:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":82236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"17335:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17304:43:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82240,"nodeType":"ExpressionStatement","src":"17304:45:110"}]},"baseFunctions":[89746],"documentation":{"id":82183,"nodeType":"StructuredDocumentation","src":"16881:104:110","text":" @notice Stores an open limit order.\n @param o Details of the open limit order."},"functionSelector":"fdb153e2","implemented":true,"kind":"function","modifiers":[{"id":82190,"kind":"modifierInvocation","modifierName":{"id":82189,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"17062:11:110"},"nodeType":"ModifierInvocation","src":"17062:11:110"}],"name":"storeOpenLimitOrder","nameLocation":"16999:19:110","overrides":{"id":82188,"nodeType":"OverrideSpecifier","overrides":[],"src":"17053:8:110"},"parameters":{"id":82187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82186,"mutability":"mutable","name":"o","nameLocation":"17041:1:110","nodeType":"VariableDeclaration","scope":82242,"src":"17019:23:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"},"typeName":{"id":82185,"nodeType":"UserDefinedTypeName","pathNode":{"id":82184,"name":"OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"17019:14:110"},"referencedDeclaration":89474,"src":"17019:14:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"visibility":"internal"}],"src":"17018:25:110"},"returnParameters":{"id":82191,"nodeType":"ParameterList","parameters":[],"src":"17074:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82330,"nodeType":"FunctionDefinition","src":"17490:504:110","nodes":[],"body":{"id":82329,"nodeType":"Block","src":"17578:416:110","nodes":[],"statements":[{"condition":{"id":82260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"17592:53:110","subExpression":{"arguments":[{"expression":{"id":82253,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17611:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"17611:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":82255,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17622:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"17622:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":82257,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17636:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89455,"src":"17636:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82252,"name":"hasOpenLimitOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83336,"src":"17593:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view returns (bool)"}},"id":82259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17593:52:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82263,"nodeType":"IfStatement","src":"17588:90:110","trueBody":{"id":82262,"nodeType":"Block","src":"17647:31:110","statements":[{"functionReturnParameters":82251,"id":82261,"nodeType":"Return","src":"17661:7:110"}]}},{"assignments":[82266],"declarations":[{"constant":false,"id":82266,"mutability":"mutable","name":"o","nameLocation":"17710:1:110","nodeType":"VariableDeclaration","scope":82329,"src":"17687:24:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"},"typeName":{"id":82265,"nodeType":"UserDefinedTypeName","pathNode":{"id":82264,"name":"OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"17687:14:110"},"referencedDeclaration":89474,"src":"17687:14:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"visibility":"internal"}],"id":82279,"initialValue":{"baseExpression":{"id":82267,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"17714:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82278,"indexExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82268,"name":"openLimitOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80945,"src":"17730:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => uint256)))"}},"id":82271,"indexExpression":{"expression":{"id":82269,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17748:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"17748:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17730:28:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":82274,"indexExpression":{"expression":{"id":82272,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17759:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"17759:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17730:42:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":82277,"indexExpression":{"expression":{"id":82275,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17773:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89455,"src":"17773:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17730:52:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17714:69:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref"}},"nodeType":"VariableDeclarationStatement","src":"17687:96:110"},{"expression":{"id":82285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82280,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82266,"src":"17793:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":82282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"positionSize","nodeType":"MemberAccess","referencedDeclaration":89457,"src":"17793:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82283,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17810:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positionSize","nodeType":"MemberAccess","referencedDeclaration":89457,"src":"17810:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17793:32:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82286,"nodeType":"ExpressionStatement","src":"17793:32:110"},{"expression":{"id":82292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82287,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82266,"src":"17835:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":82289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"17835:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82290,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17843:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"17843:6:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17835:14:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82293,"nodeType":"ExpressionStatement","src":"17835:14:110"},{"expression":{"id":82299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82294,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82266,"src":"17859:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":82296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89461,"src":"17859:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82297,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17872:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89461,"src":"17872:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17859:24:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82300,"nodeType":"ExpressionStatement","src":"17859:24:110"},{"expression":{"id":82306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82301,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82266,"src":"17893:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":82303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89463,"src":"17893:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82304,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17900:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89463,"src":"17900:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17893:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82307,"nodeType":"ExpressionStatement","src":"17893:12:110"},{"expression":{"id":82313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82308,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82266,"src":"17915:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":82310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89465,"src":"17915:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82311,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17922:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89465,"src":"17922:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17915:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82314,"nodeType":"ExpressionStatement","src":"17915:12:110"},{"expression":{"id":82320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82315,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82266,"src":"17937:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":82317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"17937:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82318,"name":"_o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82246,"src":"17947:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder calldata"}},"id":82319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"17947:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17937:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82321,"nodeType":"ExpressionStatement","src":"17937:18:110"},{"expression":{"id":82327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82322,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82266,"src":"17965:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":82324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":89471,"src":"17965:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82325,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17975:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":82326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"17975:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17965:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82328,"nodeType":"ExpressionStatement","src":"17965:22:110"}]},"baseFunctions":[89768],"documentation":{"id":82243,"nodeType":"StructuredDocumentation","src":"17362:123:110","text":" @notice Updates an existing open limit order.\n @param _o Details of the updated open limit order."},"functionSelector":"ae8ac94e","implemented":true,"kind":"function","modifiers":[{"id":82250,"kind":"modifierInvocation","modifierName":{"id":82249,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"17566:11:110"},"nodeType":"ModifierInvocation","src":"17566:11:110"}],"name":"updateOpenLimitOrder","nameLocation":"17499:20:110","overrides":{"id":82248,"nodeType":"OverrideSpecifier","overrides":[],"src":"17557:8:110"},"parameters":{"id":82247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82246,"mutability":"mutable","name":"_o","nameLocation":"17544:2:110","nodeType":"VariableDeclaration","scope":82330,"src":"17520:26:110","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_calldata_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"},"typeName":{"id":82245,"nodeType":"UserDefinedTypeName","pathNode":{"id":82244,"name":"OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"17520:14:110"},"referencedDeclaration":89474,"src":"17520:14:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"visibility":"internal"}],"src":"17519:28:110"},"returnParameters":{"id":82251,"nodeType":"ParameterList","parameters":[],"src":"17578:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82414,"nodeType":"FunctionDefinition","src":"18209:697:110","nodes":[],"body":{"id":82413,"nodeType":"Block","src":"18320:586:110","nodes":[],"statements":[{"condition":{"id":82348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18334:47:110","subExpression":{"arguments":[{"id":82344,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82333,"src":"18353:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82345,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82335,"src":"18362:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82346,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82337,"src":"18374:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82343,"name":"hasOpenLimitOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83336,"src":"18335:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view returns (bool)"}},"id":82347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18335:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82351,"nodeType":"IfStatement","src":"18330:84:110","trueBody":{"id":82350,"nodeType":"Block","src":"18383:31:110","statements":[{"functionReturnParameters":82342,"id":82349,"nodeType":"Return","src":"18397:7:110"}]}},{"assignments":[82353],"declarations":[{"constant":false,"id":82353,"mutability":"mutable","name":"id","nameLocation":"18506:2:110","nodeType":"VariableDeclaration","scope":82413,"src":"18501:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82352,"name":"uint","nodeType":"ElementaryTypeName","src":"18501:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82361,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82354,"name":"openLimitOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80945,"src":"18511:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => uint256)))"}},"id":82356,"indexExpression":{"id":82355,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82333,"src":"18529:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18511:26:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":82358,"indexExpression":{"id":82357,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82335,"src":"18538:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18511:38:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":82360,"indexExpression":{"id":82359,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82337,"src":"18550:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18511:46:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18501:56:110"},{"expression":{"id":82371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":82362,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"18567:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82364,"indexExpression":{"id":82363,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82353,"src":"18583:2:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18567:19:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":82365,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"18589:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82370,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82366,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"18605:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"18605:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":82368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18630:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18605:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18589:43:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref"}},"src":"18567:65:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref"}},"id":82372,"nodeType":"ExpressionStatement","src":"18567:65:110"},{"expression":{"id":82390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82373,"name":"openLimitOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80945,"src":"18642:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => uint256)))"}},"id":82386,"indexExpression":{"expression":{"baseExpression":{"id":82374,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"18660:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82376,"indexExpression":{"id":82375,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82353,"src":"18676:2:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18660:19:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref"}},"id":82377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"18660:26:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18642:45:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":82387,"indexExpression":{"expression":{"baseExpression":{"id":82378,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"18688:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82380,"indexExpression":{"id":82379,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82353,"src":"18704:2:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18688:19:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref"}},"id":82381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"18688:29:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18642:76:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":82388,"indexExpression":{"expression":{"baseExpression":{"id":82382,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"18719:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82384,"indexExpression":{"id":82383,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82353,"src":"18735:2:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18719:19:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref"}},"id":82385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89455,"src":"18719:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18642:103:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82389,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82353,"src":"18748:2:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18642:108:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82391,"nodeType":"ExpressionStatement","src":"18642:108:110"},{"expression":{"id":82399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"18761:53:110","subExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82392,"name":"openLimitOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80945,"src":"18768:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => uint256)))"}},"id":82394,"indexExpression":{"id":82393,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82333,"src":"18786:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18768:26:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":82396,"indexExpression":{"id":82395,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82335,"src":"18795:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18768:38:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":82398,"indexExpression":{"id":82397,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82337,"src":"18807:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18768:46:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82400,"nodeType":"ExpressionStatement","src":"18761:53:110"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":82401,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"18824:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":82403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"18824:19:110","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage_ptr_$","typeString":"function (struct ITradingStorage.OpenLimitOrder storage ref[] storage pointer)"}},"id":82404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18824:21:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82405,"nodeType":"ExpressionStatement","src":"18824:21:110"},{"expression":{"id":82411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"18856:43:110","subExpression":{"baseExpression":{"baseExpression":{"id":82406,"name":"openLimitOrdersCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80952,"src":"18856:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":82409,"indexExpression":{"id":82407,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82333,"src":"18877:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18856:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":82410,"indexExpression":{"id":82408,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82335,"src":"18886:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18856:41:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82412,"nodeType":"ExpressionStatement","src":"18856:43:110"}]},"baseFunctions":[89653],"documentation":{"id":82331,"nodeType":"StructuredDocumentation","src":"18000:204:110","text":" @notice Unregisters an open limit order.\n @param _trader Address of the trader.\n @param _pairIndex Index of the trading pair.\n @param _index Index of the limit order."},"functionSelector":"b4b0f567","implemented":true,"kind":"function","modifiers":[{"id":82341,"kind":"modifierInvocation","modifierName":{"id":82340,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"18308:11:110"},"nodeType":"ModifierInvocation","src":"18308:11:110"}],"name":"unregisterOpenLimitOrder","nameLocation":"18218:24:110","overrides":{"id":82339,"nodeType":"OverrideSpecifier","overrides":[],"src":"18299:8:110"},"parameters":{"id":82338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82333,"mutability":"mutable","name":"_trader","nameLocation":"18251:7:110","nodeType":"VariableDeclaration","scope":82414,"src":"18243:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82332,"name":"address","nodeType":"ElementaryTypeName","src":"18243:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82335,"mutability":"mutable","name":"_pairIndex","nameLocation":"18265:10:110","nodeType":"VariableDeclaration","scope":82414,"src":"18260:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82334,"name":"uint","nodeType":"ElementaryTypeName","src":"18260:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82337,"mutability":"mutable","name":"_index","nameLocation":"18282:6:110","nodeType":"VariableDeclaration","scope":82414,"src":"18277:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82336,"name":"uint","nodeType":"ElementaryTypeName","src":"18277:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18242:47:110"},"returnParameters":{"id":82342,"nodeType":"ParameterList","parameters":[],"src":"18320:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82485,"nodeType":"FunctionDefinition","src":"19169:463:110","nodes":[],"body":{"id":82484,"nodeType":"Block","src":"19277:355:110","nodes":[],"statements":[{"assignments":[82431],"declarations":[{"constant":false,"id":82431,"mutability":"mutable","name":"t","nameLocation":"19301:1:110","nodeType":"VariableDeclaration","scope":82484,"src":"19287:15:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":82430,"nodeType":"UserDefinedTypeName","pathNode":{"id":82429,"name":"Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"19287:5:110"},"referencedDeclaration":89438,"src":"19287:5:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":82439,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82432,"name":"_openTrades","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80918,"src":"19305:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref)))"}},"id":82434,"indexExpression":{"id":82433,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82417,"src":"19317:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19305:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref))"}},"id":82436,"indexExpression":{"id":82435,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82419,"src":"19326:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19305:32:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade storage ref)"}},"id":82438,"indexExpression":{"id":82437,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82421,"src":"19338:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19305:40:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"nodeType":"VariableDeclarationStatement","src":"19287:58:110"},{"assignments":[82442],"declarations":[{"constant":false,"id":82442,"mutability":"mutable","name":"i","nameLocation":"19373:1:110","nodeType":"VariableDeclaration","scope":82484,"src":"19355:19:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"},"typeName":{"id":82441,"nodeType":"UserDefinedTypeName","pathNode":{"id":82440,"name":"TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"19355:9:110"},"referencedDeclaration":89449,"src":"19355:9:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}},"visibility":"internal"}],"id":82450,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82443,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"19377:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":82445,"indexExpression":{"id":82444,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82417,"src":"19393:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19377:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":82447,"indexExpression":{"id":82446,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82419,"src":"19402:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19377:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":82449,"indexExpression":{"id":82448,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82421,"src":"19414:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19377:44:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"19355:66:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82451,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82431,"src":"19435:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82452,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"19435:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":82453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19449:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19435:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82457,"nodeType":"IfStatement","src":"19431:52:110","trueBody":{"id":82456,"nodeType":"Block","src":"19452:31:110","statements":[{"functionReturnParameters":82428,"id":82455,"nodeType":"Return","src":"19466:7:110"}]}},{"expression":{"id":82469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82458,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82423,"src":"19492:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":82461,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82431,"src":"19523:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82462,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"19523:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":82463,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82431,"src":"19536:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"19536:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82465,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82423,"src":"19548:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":82466,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82431,"src":"19556:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"19556:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":82459,"name":"_callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80865,"src":"19502:10:110","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":82460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"correctSl","nodeType":"MemberAccess","referencedDeclaration":88243,"src":"19502:20:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,bool) external returns (uint256)"}},"id":82468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19502:60:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19492:70:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82470,"nodeType":"ExpressionStatement","src":"19492:70:110"},{"expression":{"id":82475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82471,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82431,"src":"19572:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82473,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"19572:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82474,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82423,"src":"19579:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19572:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82476,"nodeType":"ExpressionStatement","src":"19572:13:110"},{"expression":{"id":82482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82442,"src":"19595:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo storage pointer"}},"id":82479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"slLastUpdated","nodeType":"MemberAccess","referencedDeclaration":89444,"src":"19595:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82480,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19613:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":82481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"19613:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19595:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82483,"nodeType":"ExpressionStatement","src":"19595:30:110"}]},"baseFunctions":[89709],"documentation":{"id":82415,"nodeType":"StructuredDocumentation","src":"18912:252:110","text":" @notice Updates the stop loss level for a trade.\n @param _trader Address of the trader.\n @param _pairIndex Index of the trading pair.\n @param _index Index of the trade.\n @param _newSl The new stop loss level."},"functionSelector":"a3544181","implemented":true,"kind":"function","modifiers":[{"id":82427,"kind":"modifierInvocation","modifierName":{"id":82426,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"19265:11:110"},"nodeType":"ModifierInvocation","src":"19265:11:110"}],"name":"updateSl","nameLocation":"19178:8:110","overrides":{"id":82425,"nodeType":"OverrideSpecifier","overrides":[],"src":"19256:8:110"},"parameters":{"id":82424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82417,"mutability":"mutable","name":"_trader","nameLocation":"19195:7:110","nodeType":"VariableDeclaration","scope":82485,"src":"19187:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82416,"name":"address","nodeType":"ElementaryTypeName","src":"19187:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82419,"mutability":"mutable","name":"_pairIndex","nameLocation":"19209:10:110","nodeType":"VariableDeclaration","scope":82485,"src":"19204:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82418,"name":"uint","nodeType":"ElementaryTypeName","src":"19204:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82421,"mutability":"mutable","name":"_index","nameLocation":"19226:6:110","nodeType":"VariableDeclaration","scope":82485,"src":"19221:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82420,"name":"uint","nodeType":"ElementaryTypeName","src":"19221:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82423,"mutability":"mutable","name":"_newSl","nameLocation":"19239:6:110","nodeType":"VariableDeclaration","scope":82485,"src":"19234:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82422,"name":"uint","nodeType":"ElementaryTypeName","src":"19234:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19186:60:110"},"returnParameters":{"id":82428,"nodeType":"ParameterList","parameters":[],"src":"19277:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82556,"nodeType":"FunctionDefinition","src":"19899:462:110","nodes":[],"body":{"id":82555,"nodeType":"Block","src":"20007:354:110","nodes":[],"statements":[{"assignments":[82502],"declarations":[{"constant":false,"id":82502,"mutability":"mutable","name":"t","nameLocation":"20031:1:110","nodeType":"VariableDeclaration","scope":82555,"src":"20017:15:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":82501,"nodeType":"UserDefinedTypeName","pathNode":{"id":82500,"name":"Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"20017:5:110"},"referencedDeclaration":89438,"src":"20017:5:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":82510,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82503,"name":"_openTrades","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80918,"src":"20035:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref)))"}},"id":82505,"indexExpression":{"id":82504,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82488,"src":"20047:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20035:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref))"}},"id":82507,"indexExpression":{"id":82506,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82490,"src":"20056:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20035:32:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade storage ref)"}},"id":82509,"indexExpression":{"id":82508,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82492,"src":"20068:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20035:40:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"nodeType":"VariableDeclarationStatement","src":"20017:58:110"},{"assignments":[82513],"declarations":[{"constant":false,"id":82513,"mutability":"mutable","name":"i","nameLocation":"20103:1:110","nodeType":"VariableDeclaration","scope":82555,"src":"20085:19:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"},"typeName":{"id":82512,"nodeType":"UserDefinedTypeName","pathNode":{"id":82511,"name":"TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"20085:9:110"},"referencedDeclaration":89449,"src":"20085:9:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}},"visibility":"internal"}],"id":82521,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82514,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"20107:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":82516,"indexExpression":{"id":82515,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82488,"src":"20123:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20107:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":82518,"indexExpression":{"id":82517,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82490,"src":"20132:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20107:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":82520,"indexExpression":{"id":82519,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82492,"src":"20144:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20107:44:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"20085:66:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82522,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82502,"src":"20165:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"20165:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":82524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20179:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20165:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82528,"nodeType":"IfStatement","src":"20161:52:110","trueBody":{"id":82527,"nodeType":"Block","src":"20182:31:110","statements":[{"functionReturnParameters":82499,"id":82526,"nodeType":"Return","src":"20196:7:110"}]}},{"expression":{"id":82540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82529,"name":"_newTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82494,"src":"20222:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":82532,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82502,"src":"20252:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82533,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"20252:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":82534,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82502,"src":"20265:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82535,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"20265:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82536,"name":"_newTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82494,"src":"20277:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":82537,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82502,"src":"20285:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"20285:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":82530,"name":"_callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80865,"src":"20231:10:110","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":82531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"correctTp","nodeType":"MemberAccess","referencedDeclaration":88256,"src":"20231:20:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,bool) external returns (uint256)"}},"id":82539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20231:60:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20222:69:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82541,"nodeType":"ExpressionStatement","src":"20222:69:110"},{"expression":{"id":82546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82542,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82502,"src":"20301:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"20301:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82545,"name":"_newTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82494,"src":"20308:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20301:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82547,"nodeType":"ExpressionStatement","src":"20301:13:110"},{"expression":{"id":82553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82548,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82513,"src":"20324:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo storage pointer"}},"id":82550,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tpLastUpdated","nodeType":"MemberAccess","referencedDeclaration":89442,"src":"20324:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82551,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"20342:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":82552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"20342:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20324:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82554,"nodeType":"ExpressionStatement","src":"20324:30:110"}]},"baseFunctions":[89720],"documentation":{"id":82486,"nodeType":"StructuredDocumentation","src":"19638:256:110","text":" @notice Updates the take profit level for a trade.\n @param _trader Address of the trader.\n @param _pairIndex Index of the trading pair.\n @param _index Index of the trade.\n @param _newTp The new take profit level."},"functionSelector":"7fdb96f3","implemented":true,"kind":"function","modifiers":[{"id":82498,"kind":"modifierInvocation","modifierName":{"id":82497,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"19995:11:110"},"nodeType":"ModifierInvocation","src":"19995:11:110"}],"name":"updateTp","nameLocation":"19908:8:110","overrides":{"id":82496,"nodeType":"OverrideSpecifier","overrides":[],"src":"19986:8:110"},"parameters":{"id":82495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82488,"mutability":"mutable","name":"_trader","nameLocation":"19925:7:110","nodeType":"VariableDeclaration","scope":82556,"src":"19917:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82487,"name":"address","nodeType":"ElementaryTypeName","src":"19917:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82490,"mutability":"mutable","name":"_pairIndex","nameLocation":"19939:10:110","nodeType":"VariableDeclaration","scope":82556,"src":"19934:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82489,"name":"uint","nodeType":"ElementaryTypeName","src":"19934:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82492,"mutability":"mutable","name":"_index","nameLocation":"19956:6:110","nodeType":"VariableDeclaration","scope":82556,"src":"19951:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82491,"name":"uint","nodeType":"ElementaryTypeName","src":"19951:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82494,"mutability":"mutable","name":"_newTp","nameLocation":"19969:6:110","nodeType":"VariableDeclaration","scope":82556,"src":"19964:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82493,"name":"uint","nodeType":"ElementaryTypeName","src":"19964:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19916:60:110"},"returnParameters":{"id":82499,"nodeType":"ParameterList","parameters":[],"src":"20007:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82616,"nodeType":"FunctionDefinition","src":"20485:424:110","nodes":[],"body":{"id":82615,"nodeType":"Block","src":"20553:356:110","nodes":[],"statements":[{"assignments":[82568],"declarations":[{"constant":false,"id":82568,"mutability":"mutable","name":"t","nameLocation":"20623:1:110","nodeType":"VariableDeclaration","scope":82615,"src":"20609:15:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":82567,"nodeType":"UserDefinedTypeName","pathNode":{"id":82566,"name":"Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"20609:5:110"},"referencedDeclaration":89438,"src":"20609:5:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":82579,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82569,"name":"_openTrades","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80918,"src":"20627:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref)))"}},"id":82572,"indexExpression":{"expression":{"id":82570,"name":"_t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82560,"src":"20639:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"20639:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20627:22:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref))"}},"id":82575,"indexExpression":{"expression":{"id":82573,"name":"_t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82560,"src":"20650:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"20650:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20627:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade storage ref)"}},"id":82578,"indexExpression":{"expression":{"id":82576,"name":"_t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82560,"src":"20664:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"20664:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20627:46:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"nodeType":"VariableDeclarationStatement","src":"20609:64:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82580,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82568,"src":"20687:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"20687:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":82582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20701:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20687:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82586,"nodeType":"IfStatement","src":"20683:52:110","trueBody":{"id":82585,"nodeType":"Block","src":"20704:31:110","statements":[{"functionReturnParameters":82565,"id":82584,"nodeType":"Return","src":"20718:7:110"}]}},{"expression":{"id":82592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82587,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82568,"src":"20744:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"20744:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82590,"name":"_t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82560,"src":"20764:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"20764:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20744:38:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82593,"nodeType":"ExpressionStatement","src":"20744:38:110"},{"expression":{"id":82599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82594,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82568,"src":"20792:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82596,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"20792:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82597,"name":"_t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82560,"src":"20813:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"20813:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20792:40:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82600,"nodeType":"ExpressionStatement","src":"20792:40:110"},{"expression":{"id":82606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82601,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82568,"src":"20842:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"20842:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82604,"name":"_t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82560,"src":"20856:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82605,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"20856:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20842:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82607,"nodeType":"ExpressionStatement","src":"20842:26:110"},{"expression":{"id":82613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82608,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82568,"src":"20878:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade storage pointer"}},"id":82610,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"20878:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82611,"name":"_t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82560,"src":"20891:2:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":82612,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"20891:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20878:24:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82614,"nodeType":"ExpressionStatement","src":"20878:24:110"}]},"baseFunctions":[89792],"documentation":{"id":82557,"nodeType":"StructuredDocumentation","src":"20367:113:110","text":" @notice Updates the details of an existing trade.\n @param _t The updated trade details."},"functionSelector":"f0cb9b11","implemented":true,"kind":"function","modifiers":[{"id":82564,"kind":"modifierInvocation","modifierName":{"id":82563,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"20541:11:110"},"nodeType":"ModifierInvocation","src":"20541:11:110"}],"name":"updateTrade","nameLocation":"20494:11:110","overrides":{"id":82562,"nodeType":"OverrideSpecifier","overrides":[],"src":"20532:8:110"},"parameters":{"id":82561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82560,"mutability":"mutable","name":"_t","nameLocation":"20519:2:110","nodeType":"VariableDeclaration","scope":82616,"src":"20506:15:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":82559,"nodeType":"UserDefinedTypeName","pathNode":{"id":82558,"name":"Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"20506:5:110"},"referencedDeclaration":89438,"src":"20506:5:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"src":"20505:17:110"},"returnParameters":{"id":82565,"nodeType":"ParameterList","parameters":[],"src":"20553:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82681,"nodeType":"FunctionDefinition","src":"21240:760:110","nodes":[],"body":{"id":82680,"nodeType":"Block","src":"21396:604:110","nodes":[],"statements":[{"assignments":[82634,82636,82638],"declarations":[{"constant":false,"id":82634,"mutability":"mutable","name":"traderFeePostDiscount","nameLocation":"21412:21:110","nodeType":"VariableDeclaration","scope":82680,"src":"21407:26:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82633,"name":"uint","nodeType":"ElementaryTypeName","src":"21407:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82636,"mutability":"mutable","name":"referrer","nameLocation":"21443:8:110","nodeType":"VariableDeclaration","scope":82680,"src":"21435:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82635,"name":"address","nodeType":"ElementaryTypeName","src":"21435:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82638,"mutability":"mutable","name":"referrerRebate","nameLocation":"21458:14:110","nodeType":"VariableDeclaration","scope":82680,"src":"21453:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82637,"name":"uint","nodeType":"ElementaryTypeName","src":"21453:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82644,"initialValue":{"arguments":[{"id":82641,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82619,"src":"21508:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82642,"name":"_fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82621,"src":"21517:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82639,"name":"referral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80876,"src":"21476:8:110","typeDescriptions":{"typeIdentifier":"t_contract$_IReferral_$89393","typeString":"contract IReferral"}},"id":82640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"traderReferralDiscount","nodeType":"MemberAccess","referencedDeclaration":89392,"src":"21476:31:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256,address,uint256)"}},"id":82643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21476:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"21406:117:110"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82645,"name":"referrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82636,"src":"21538:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":82648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21558:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":82647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21550:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":82646,"name":"address","nodeType":"ElementaryTypeName","src":"21550:7:110","typeDescriptions":{}}},"id":82649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21550:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21538:22:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82675,"nodeType":"IfStatement","src":"21534:420:110","trueBody":{"id":82674,"nodeType":"Block","src":"21562:392:110","statements":[{"expression":{"id":82655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":82651,"name":"rebates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81007,"src":"21576:7:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":82653,"indexExpression":{"id":82652,"name":"referrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82636,"src":"21584:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21576:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":82654,"name":"referrerRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82638,"src":"21597:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21576:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82656,"nodeType":"ExpressionStatement","src":"21576:35:110"},{"eventCall":{"arguments":[{"id":82658,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82619,"src":"21661:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82659,"name":"referrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82636,"src":"21687:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82660,"name":"_leveragedPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82623,"src":"21714:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82661,"name":"traderFeePostDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82634,"src":"21751:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82662,"name":"_fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82621,"src":"21791:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":82663,"name":"traderFeePostDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82634,"src":"21799:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21791:29:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82665,"name":"referrerRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82638,"src":"21838:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82657,"name":"TradeReferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89540,"src":"21630:13:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256,uint256,uint256)"}},"id":82666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21630:236:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82667,"nodeType":"EmitStatement","src":"21625:241:110"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82668,"name":"traderFeePostDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82634,"src":"21888:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":82669,"name":"referrerRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82638,"src":"21912:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21888:38:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82671,"name":"referrerRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82638,"src":"21928:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":82672,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21887:56:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":82632,"id":82673,"nodeType":"Return","src":"21880:63:110"}]}},{"expression":{"components":[{"id":82676,"name":"_fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82621,"src":"21971:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82677,"name":"referrerRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82638,"src":"21978:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":82678,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21970:23:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":82632,"id":82679,"nodeType":"Return","src":"21963:30:110"}]},"baseFunctions":[89918],"documentation":{"id":82617,"nodeType":"StructuredDocumentation","src":"20915:320:110","text":" @notice Applies the referral program during the opening of a trade.\n @param _trader Address of the trader.\n @param _fees The initial fees for the trade.\n @param _leveragedPosition The size of the leveraged position.\n @return The updated fee after applying the referral program."},"functionSelector":"700ff359","implemented":true,"kind":"function","modifiers":[{"id":82627,"kind":"modifierInvocation","modifierName":{"id":82626,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"21363:11:110"},"nodeType":"ModifierInvocation","src":"21363:11:110"}],"name":"applyReferral","nameLocation":"21249:13:110","overrides":{"id":82625,"nodeType":"OverrideSpecifier","overrides":[],"src":"21354:8:110"},"parameters":{"id":82624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82619,"mutability":"mutable","name":"_trader","nameLocation":"21280:7:110","nodeType":"VariableDeclaration","scope":82681,"src":"21272:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82618,"name":"address","nodeType":"ElementaryTypeName","src":"21272:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82621,"mutability":"mutable","name":"_fees","nameLocation":"21302:5:110","nodeType":"VariableDeclaration","scope":82681,"src":"21297:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82620,"name":"uint","nodeType":"ElementaryTypeName","src":"21297:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82623,"mutability":"mutable","name":"_leveragedPosition","nameLocation":"21322:18:110","nodeType":"VariableDeclaration","scope":82681,"src":"21317:23:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82622,"name":"uint","nodeType":"ElementaryTypeName","src":"21317:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21262:84:110"},"returnParameters":{"id":82632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82681,"src":"21384:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82628,"name":"uint","nodeType":"ElementaryTypeName","src":"21384:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82631,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82681,"src":"21390:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82630,"name":"uint","nodeType":"ElementaryTypeName","src":"21390:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21383:12:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":82802,"nodeType":"FunctionDefinition","src":"22523:1030:110","nodes":[],"body":{"id":82801,"nodeType":"Block","src":"22764:789:110","nodes":[],"statements":[{"assignments":[82703],"declarations":[{"constant":false,"id":82703,"mutability":"mutable","name":"fee","nameLocation":"22779:3:110","nodeType":"VariableDeclaration","scope":82801,"src":"22774:8:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82702,"name":"uint","nodeType":"ElementaryTypeName","src":"22774:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82717,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82704,"name":"_leveragedPositionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82688,"src":"22786:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":82707,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82686,"src":"22836:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82708,"name":"_leveragedPositionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82688,"src":"22848:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82709,"name":"_buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82694,"src":"22872:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":82705,"name":"priceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80859,"src":"22811:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":82706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openFeeP","nodeType":"MemberAccess","referencedDeclaration":89197,"src":"22811:24:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,uint256,bool) view external returns (uint256)"}},"id":82710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22811:66:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22786:91:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":82712,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22785:93:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":82713,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80855,"src":"22893:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22785:118:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":82715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22918:3:110","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"22785:136:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22774:147:110"},{"condition":{"id":82719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"22936:9:110","subExpression":{"id":82718,"name":"_fullFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82692,"src":"22937:8:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82725,"nodeType":"IfStatement","src":"22932:48:110","trueBody":{"id":82724,"nodeType":"Block","src":"22947:33:110","statements":[{"expression":{"id":82722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82720,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82703,"src":"22961:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"32","id":82721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22968:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22961:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82723,"nodeType":"ExpressionStatement","src":"22961:8:110"}]}},{"expression":{"id":82733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":82726,"name":"feeAfterRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82700,"src":"22991:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":82727,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"22990:17:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$__$","typeString":"tuple(uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":82729,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82684,"src":"23024:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82730,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82703,"src":"23033:3:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82731,"name":"_leveragedPositionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82688,"src":"23038:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82728,"name":"applyReferral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82681,"src":"23010:13:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,uint256) returns (uint256,uint256)"}},"id":82732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23010:51:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"22990:71:110","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82734,"nodeType":"ExpressionStatement","src":"22990:71:110"},{"assignments":[82736],"declarations":[{"constant":false,"id":82736,"mutability":"mutable","name":"vaultAllocation","nameLocation":"23077:15:110","nodeType":"VariableDeclaration","scope":82801,"src":"23072:20:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82735,"name":"uint","nodeType":"ElementaryTypeName","src":"23072:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82748,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82737,"name":"feeAfterRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82700,"src":"23096:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":82738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23114:3:110","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":82739,"name":"_callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80865,"src":"23120:10:110","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":82740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultFeeP","nodeType":"MemberAccess","referencedDeclaration":88169,"src":"23120:20:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":82741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23120:22:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23114:28:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":82743,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23113:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23096:47:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":82745,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23095:49:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":82746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23147:3:110","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"23095:55:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23072:78:110"},{"assignments":[82750],"declarations":[{"constant":false,"id":82750,"mutability":"mutable","name":"govFees","nameLocation":"23165:7:110","nodeType":"VariableDeclaration","scope":82801,"src":"23160:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82749,"name":"uint","nodeType":"ElementaryTypeName","src":"23160:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82761,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82751,"name":"feeAfterRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82700,"src":"23176:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":82752,"name":"_callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80865,"src":"23193:10:110","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":82753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultFeeP","nodeType":"MemberAccess","referencedDeclaration":88169,"src":"23193:20:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":82754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23193:22:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23176:39:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":82756,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23175:41:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":82757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23219:3:110","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"23175:47:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":82759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23226:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23175:52:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23160:67:110"},{"condition":{"id":82762,"name":"_usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82690,"src":"23242:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82774,"nodeType":"IfStatement","src":"23238:76:110","trueBody":{"expression":{"arguments":[{"arguments":[{"id":82769,"name":"vaultManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80873,"src":"23283:12:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}],"id":82768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23275:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":82767,"name":"address","nodeType":"ElementaryTypeName","src":"23275:7:110","typeDescriptions":{}}},"id":82770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23275:21:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82771,"name":"vaultAllocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82736,"src":"23298:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":82764,"name":"usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"23256:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}],"id":82763,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51481,"src":"23249:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$51481_$","typeString":"type(contract IERC20)"}},"id":82765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23249:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"id":82766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":51575,"src":"23249:25:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$51481_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$51481_$","typeString":"function (contract IERC20,address,uint256)"}},"id":82772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23249:65:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82773,"nodeType":"ExpressionStatement","src":"23249:65:110"}},{"expression":{"arguments":[{"id":82778,"name":"vaultAllocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82736,"src":"23354:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":82779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23371:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":82775,"name":"vaultManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80873,"src":"23325:12:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":82777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allocateRewards","nodeType":"MemberAccess","referencedDeclaration":90172,"src":"23325:28:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool) external"}},"id":82780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23325:52:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82781,"nodeType":"ExpressionStatement","src":"23325:52:110"},{"expression":{"id":82784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82782,"name":"govFeesUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80891,"src":"23387:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":82783,"name":"govFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82750,"src":"23402:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23387:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82785,"nodeType":"ExpressionStatement","src":"23387:22:110"},{"expression":{"id":82792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82786,"name":"devFeesUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80889,"src":"23419:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82787,"name":"feeAfterRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82700,"src":"23434:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":82788,"name":"vaultAllocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82736,"src":"23451:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23434:32:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":82790,"name":"govFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82750,"src":"23469:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23434:42:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23419:57:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82793,"nodeType":"ExpressionStatement","src":"23419:57:110"},{"eventCall":{"arguments":[{"id":82795,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82684,"src":"23504:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82796,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82686,"src":"23513:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82797,"name":"_buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82694,"src":"23525:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":82798,"name":"feeAfterRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82700,"src":"23531:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82794,"name":"FeesCharged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89550,"src":"23492:11:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (address,uint256,bool,uint256)"}},"id":82799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23492:54:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82800,"nodeType":"EmitStatement","src":"23487:59:110"}]},"baseFunctions":[89814],"documentation":{"id":82682,"nodeType":"StructuredDocumentation","src":"22006:512:110","text":" @notice Handles the calculation and distribution of development and governance fees.\n @param _trader Address of the trader.\n @param _pairIndex Index of the trading pair.\n @param _leveragedPositionSize Size of the leveraged position.\n @param _usdc Whether the fee is in USDC.\n @param _fullFee Indicates if the full fee should be applied.\n @param _buy Indicates if it's a buy operation.\n @return feeAfterRebate The fee amount after applying any rebates."},"functionSelector":"2a9a9667","implemented":true,"kind":"function","modifiers":[{"id":82698,"kind":"modifierInvocation","modifierName":{"id":82697,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"22722:11:110"},"nodeType":"ModifierInvocation","src":"22722:11:110"}],"name":"handleDevGovFees","nameLocation":"22532:16:110","overrides":{"id":82696,"nodeType":"OverrideSpecifier","overrides":[],"src":"22713:8:110"},"parameters":{"id":82695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82684,"mutability":"mutable","name":"_trader","nameLocation":"22566:7:110","nodeType":"VariableDeclaration","scope":82802,"src":"22558:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82683,"name":"address","nodeType":"ElementaryTypeName","src":"22558:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82686,"mutability":"mutable","name":"_pairIndex","nameLocation":"22588:10:110","nodeType":"VariableDeclaration","scope":82802,"src":"22583:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82685,"name":"uint","nodeType":"ElementaryTypeName","src":"22583:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82688,"mutability":"mutable","name":"_leveragedPositionSize","nameLocation":"22613:22:110","nodeType":"VariableDeclaration","scope":82802,"src":"22608:27:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82687,"name":"uint","nodeType":"ElementaryTypeName","src":"22608:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82690,"mutability":"mutable","name":"_usdc","nameLocation":"22650:5:110","nodeType":"VariableDeclaration","scope":82802,"src":"22645:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82689,"name":"bool","nodeType":"ElementaryTypeName","src":"22645:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":82692,"mutability":"mutable","name":"_fullFee","nameLocation":"22670:8:110","nodeType":"VariableDeclaration","scope":82802,"src":"22665:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82691,"name":"bool","nodeType":"ElementaryTypeName","src":"22665:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":82694,"mutability":"mutable","name":"_buy","nameLocation":"22693:4:110","nodeType":"VariableDeclaration","scope":82802,"src":"22688:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82693,"name":"bool","nodeType":"ElementaryTypeName","src":"22688:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22548:155:110"},"returnParameters":{"id":82701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82700,"mutability":"mutable","name":"feeAfterRebate","nameLocation":"22748:14:110","nodeType":"VariableDeclaration","scope":82802,"src":"22743:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82699,"name":"uint","nodeType":"ElementaryTypeName","src":"22743:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22742:21:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82833,"nodeType":"FunctionDefinition","src":"23654:210:110","nodes":[],"body":{"id":82832,"nodeType":"Block","src":"23692:172:110","nodes":[],"statements":[{"expression":{"arguments":[{"id":82812,"name":"govTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80901,"src":"23728:11:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82813,"name":"govFeesUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80891,"src":"23741:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":82809,"name":"usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"23709:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}],"id":82808,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51481,"src":"23702:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$51481_$","typeString":"type(contract IERC20)"}},"id":82810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23702:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"id":82811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":51575,"src":"23702:25:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$51481_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$51481_$","typeString":"function (contract IERC20,address,uint256)"}},"id":82814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23702:51:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82815,"nodeType":"ExpressionStatement","src":"23702:51:110"},{"expression":{"arguments":[{"id":82820,"name":"dev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80899,"src":"23789:3:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82821,"name":"devFeesUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80889,"src":"23794:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":82817,"name":"usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"23770:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}],"id":82816,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51481,"src":"23763:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$51481_$","typeString":"type(contract IERC20)"}},"id":82818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23763:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"id":82819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":51575,"src":"23763:25:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$51481_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$51481_$","typeString":"function (contract IERC20,address,uint256)"}},"id":82822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23763:43:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82823,"nodeType":"ExpressionStatement","src":"23763:43:110"},{"expression":{"id":82826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82824,"name":"devFeesUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80889,"src":"23817:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":82825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23831:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23817:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82827,"nodeType":"ExpressionStatement","src":"23817:15:110"},{"expression":{"id":82830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82828,"name":"govFeesUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80891,"src":"23842:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":82829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23856:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23842:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82831,"nodeType":"ExpressionStatement","src":"23842:15:110"}]},"documentation":{"id":82803,"nodeType":"StructuredDocumentation","src":"23559:90:110","text":" @notice Allows the governance to claim the accumulated governance fees."},"functionSelector":"d294f093","implemented":true,"kind":"function","modifiers":[{"id":82806,"kind":"modifierInvocation","modifierName":{"id":82805,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":81024,"src":"23684:7:110"},"nodeType":"ModifierInvocation","src":"23684:7:110"}],"name":"claimFees","nameLocation":"23663:9:110","parameters":{"id":82804,"nodeType":"ParameterList","parameters":[],"src":"23672:2:110"},"returnParameters":{"id":82807,"nodeType":"ParameterList","parameters":[],"src":"23692:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82857,"nodeType":"FunctionDefinition","src":"23942:140:110","nodes":[],"body":{"id":82856,"nodeType":"Block","src":"23974:108:110","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":82841,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24010:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"24010:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":82843,"name":"rebates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81007,"src":"24022:7:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":82846,"indexExpression":{"expression":{"id":82844,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24030:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"24030:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24022:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":82838,"name":"usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"23991:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}],"id":82837,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51481,"src":"23984:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$51481_$","typeString":"type(contract IERC20)"}},"id":82839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23984:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"id":82840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":51575,"src":"23984:25:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$51481_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$51481_$","typeString":"function (contract IERC20,address,uint256)"}},"id":82847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23984:58:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82848,"nodeType":"ExpressionStatement","src":"23984:58:110"},{"expression":{"id":82854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":82849,"name":"rebates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81007,"src":"24052:7:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":82852,"indexExpression":{"expression":{"id":82850,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24060:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"24060:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24052:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":82853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24074:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24052:23:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82855,"nodeType":"ExpressionStatement","src":"24052:23:110"}]},"documentation":{"id":82834,"nodeType":"StructuredDocumentation","src":"23870:67:110","text":" @notice Allows a referrer to claim their rebate."},"functionSelector":"cda3948f","implemented":true,"kind":"function","modifiers":[],"name":"claimRebate","nameLocation":"23951:11:110","parameters":{"id":82835,"nodeType":"ParameterList","parameters":[],"src":"23962:2:110"},"returnParameters":{"id":82836,"nodeType":"ParameterList","parameters":[],"src":"23974:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82897,"nodeType":"FunctionDefinition","src":"24377:283:110","nodes":[],"body":{"id":82896,"nodeType":"Block","src":"24471:189:110","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82870,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82860,"src":"24485:5:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":82873,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"24502:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_TradingStorage_$83538","typeString":"contract TradingStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TradingStorage_$83538","typeString":"contract TradingStorage"}],"id":82872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24494:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":82871,"name":"address","nodeType":"ElementaryTypeName","src":"24494:7:110","typeDescriptions":{}}},"id":82874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24494:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"24485:22:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":82894,"nodeType":"Block","src":"24579:75:110","statements":[{"expression":{"arguments":[{"id":82889,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82860,"src":"24623:5:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82890,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82862,"src":"24630:3:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82891,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82864,"src":"24635:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":82886,"name":"usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"24600:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}],"id":82885,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51481,"src":"24593:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$51481_$","typeString":"type(contract IERC20)"}},"id":82887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24593:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"id":82888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":51602,"src":"24593:29:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$51481_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$51481_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":82892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24593:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82893,"nodeType":"ExpressionStatement","src":"24593:50:110"}]},"id":82895,"nodeType":"IfStatement","src":"24481:173:110","trueBody":{"id":82884,"nodeType":"Block","src":"24509:64:110","statements":[{"expression":{"arguments":[{"id":82880,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82862,"src":"24549:3:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82881,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82864,"src":"24554:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":82877,"name":"usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"24530:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}],"id":82876,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51481,"src":"24523:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$51481_$","typeString":"type(contract IERC20)"}},"id":82878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24523:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$51481","typeString":"contract IERC20"}},"id":82879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":51575,"src":"24523:25:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$51481_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$51481_$","typeString":"function (contract IERC20,address,uint256)"}},"id":82882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24523:39:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82883,"nodeType":"ExpressionStatement","src":"24523:39:110"}]}}]},"baseFunctions":[89617],"documentation":{"id":82858,"nodeType":"StructuredDocumentation","src":"24088:284:110","text":" @notice Transfers USDC tokens between addresses. USDC intermediately sits in trading storage \n before moving to vault\n @param _from Address from which to transfer.\n @param _to Address to which to transfer.\n @param _amount Amount to transfer."},"functionSelector":"8b83351a","implemented":true,"kind":"function","modifiers":[{"id":82868,"kind":"modifierInvocation","modifierName":{"id":82867,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":81035,"src":"24459:11:110"},"nodeType":"ModifierInvocation","src":"24459:11:110"}],"name":"transferUSDC","nameLocation":"24386:12:110","overrides":{"id":82866,"nodeType":"OverrideSpecifier","overrides":[],"src":"24450:8:110"},"parameters":{"id":82865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82860,"mutability":"mutable","name":"_from","nameLocation":"24407:5:110","nodeType":"VariableDeclaration","scope":82897,"src":"24399:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82859,"name":"address","nodeType":"ElementaryTypeName","src":"24399:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82862,"mutability":"mutable","name":"_to","nameLocation":"24422:3:110","nodeType":"VariableDeclaration","scope":82897,"src":"24414:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82861,"name":"address","nodeType":"ElementaryTypeName","src":"24414:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82864,"mutability":"mutable","name":"_amount","nameLocation":"24432:7:110","nodeType":"VariableDeclaration","scope":82897,"src":"24427:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82863,"name":"uint","nodeType":"ElementaryTypeName","src":"24427:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24398:42:110"},"returnParameters":{"id":82869,"nodeType":"ParameterList","parameters":[],"src":"24471:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82916,"nodeType":"FunctionDefinition","src":"24793:152:110","nodes":[],"body":{"id":82915,"nodeType":"Block","src":"24858:87:110","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":82904,"name":"vaultManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80873,"src":"24876:12:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":82905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currentBalanceUSDC","nodeType":"MemberAccess","referencedDeclaration":90165,"src":"24876:31:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":82906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24876:33:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":82907,"name":"tvlCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80887,"src":"24912:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24876:42:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":82909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24875:44:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":82910,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80855,"src":"24922:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24875:57:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":82912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24935:3:110","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"24875:63:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":82903,"id":82914,"nodeType":"Return","src":"24868:70:110"}]},"baseFunctions":[89930],"documentation":{"id":82898,"nodeType":"StructuredDocumentation","src":"24666:122:110","text":" @notice Calculates the maximum open interest based on tvl cap\n @return The maximum open interest."},"functionSelector":"dc6638f4","implemented":true,"kind":"function","modifiers":[],"name":"maxOpenInterest","nameLocation":"24802:15:110","overrides":{"id":82900,"nodeType":"OverrideSpecifier","overrides":[],"src":"24834:8:110"},"parameters":{"id":82899,"nodeType":"ParameterList","parameters":[],"src":"24817:2:110"},"returnParameters":{"id":82903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82902,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82916,"src":"24852:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82901,"name":"uint","nodeType":"ElementaryTypeName","src":"24852:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24851:6:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":82939,"nodeType":"FunctionDefinition","src":"25242:177:110","nodes":[],"body":{"id":82938,"nodeType":"Block","src":"25355:64:110","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82930,"name":"_openTrades","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80918,"src":"25372:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref)))"}},"id":82932,"indexExpression":{"id":82931,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82919,"src":"25384:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25372:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref))"}},"id":82934,"indexExpression":{"id":82933,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82921,"src":"25393:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25372:32:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade storage ref)"}},"id":82936,"indexExpression":{"id":82935,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82923,"src":"25405:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25372:40:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"functionReturnParameters":82929,"id":82937,"nodeType":"Return","src":"25365:47:110"}]},"baseFunctions":[89686],"documentation":{"id":82917,"nodeType":"StructuredDocumentation","src":"24951:286:110","text":" @notice Retrieves an open trade for a specific trader and pair index.\n @param _trader Address of the trader.\n @param _pairIndex Index of the trading pair.\n @param _index Index of the trade.\n @return Trade struct containing the trade's details."},"functionSelector":"a3a80ffe","implemented":true,"kind":"function","modifiers":[],"name":"openTrades","nameLocation":"25251:10:110","overrides":{"id":82925,"nodeType":"OverrideSpecifier","overrides":[],"src":"25323:8:110"},"parameters":{"id":82924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82919,"mutability":"mutable","name":"_trader","nameLocation":"25270:7:110","nodeType":"VariableDeclaration","scope":82939,"src":"25262:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82918,"name":"address","nodeType":"ElementaryTypeName","src":"25262:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82921,"mutability":"mutable","name":"_pairIndex","nameLocation":"25284:10:110","nodeType":"VariableDeclaration","scope":82939,"src":"25279:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82920,"name":"uint","nodeType":"ElementaryTypeName","src":"25279:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82923,"mutability":"mutable","name":"_index","nameLocation":"25301:6:110","nodeType":"VariableDeclaration","scope":82939,"src":"25296:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82922,"name":"uint","nodeType":"ElementaryTypeName","src":"25296:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25261:47:110"},"returnParameters":{"id":82929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82939,"src":"25341:12:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":82927,"nodeType":"UserDefinedTypeName","pathNode":{"id":82926,"name":"Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"25341:5:110"},"referencedDeclaration":89438,"src":"25341:5:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"src":"25340:14:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":82962,"nodeType":"FunctionDefinition","src":"25653:219:110","nodes":[],"body":{"id":82961,"nodeType":"Block","src":"25804:68:110","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":82953,"name":"_openTradesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80927,"src":"25821:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)))"}},"id":82955,"indexExpression":{"id":82954,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82942,"src":"25837:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25821:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.TradeInfo storage ref))"}},"id":82957,"indexExpression":{"id":82956,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82944,"src":"25846:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25821:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInfo_$89449_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.TradeInfo storage ref)"}},"id":82959,"indexExpression":{"id":82958,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82946,"src":"25858:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25821:44:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage","typeString":"struct ITradingStorage.TradeInfo storage ref"}},"functionReturnParameters":82952,"id":82960,"nodeType":"Return","src":"25814:51:110"}]},"baseFunctions":[89698],"documentation":{"id":82940,"nodeType":"StructuredDocumentation","src":"25425:223:110","text":" @notice Retrieves open trade info \n @param _trader Address of the trader.\n @param _pairIndex Index of the trading pair.\n @param _index Index of the trade.\n @return TradeInfo struct"},"functionSelector":"8c8ff1d5","implemented":true,"kind":"function","modifiers":[],"name":"openTradesInfo","nameLocation":"25662:14:110","overrides":{"id":82948,"nodeType":"OverrideSpecifier","overrides":[],"src":"25768:8:110"},"parameters":{"id":82947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82942,"mutability":"mutable","name":"_trader","nameLocation":"25694:7:110","nodeType":"VariableDeclaration","scope":82962,"src":"25686:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82941,"name":"address","nodeType":"ElementaryTypeName","src":"25686:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82944,"mutability":"mutable","name":"_pairIndex","nameLocation":"25716:10:110","nodeType":"VariableDeclaration","scope":82962,"src":"25711:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82943,"name":"uint","nodeType":"ElementaryTypeName","src":"25711:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82946,"mutability":"mutable","name":"_index","nameLocation":"25741:6:110","nodeType":"VariableDeclaration","scope":82962,"src":"25736:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82945,"name":"uint","nodeType":"ElementaryTypeName","src":"25736:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25676:77:110"},"returnParameters":{"id":82952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82951,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82962,"src":"25786:16:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo"},"typeName":{"id":82950,"nodeType":"UserDefinedTypeName","pathNode":{"id":82949,"name":"TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"25786:9:110"},"referencedDeclaration":89449,"src":"25786:9:110","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}},"visibility":"internal"}],"src":"25785:18:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":82977,"nodeType":"FunctionDefinition","src":"26092:163:110","nodes":[],"body":{"id":82976,"nodeType":"Block","src":"26198:57:110","nodes":[],"statements":[{"expression":{"baseExpression":{"id":82972,"name":"_reqIDpendingMarketOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80957,"src":"26215:24:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarketOrder_$89484_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingMarketOrder storage ref)"}},"id":82974,"indexExpression":{"id":82973,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82965,"src":"26240:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26215:33:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage","typeString":"struct ITradingStorage.PendingMarketOrder storage ref"}},"functionReturnParameters":82971,"id":82975,"nodeType":"Return","src":"26208:40:110"}]},"baseFunctions":[89754],"documentation":{"id":82963,"nodeType":"StructuredDocumentation","src":"25878:209:110","text":" @notice Retrieves pending market order details by order ID.\n @param orderId The ID of the pending market order.\n @return PendingMarketOrder struct containing the order's details."},"functionSelector":"d5dabd75","implemented":true,"kind":"function","modifiers":[],"name":"reqIDpendingMarketOrder","nameLocation":"26101:23:110","overrides":{"id":82967,"nodeType":"OverrideSpecifier","overrides":[],"src":"26153:8:110"},"parameters":{"id":82966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82965,"mutability":"mutable","name":"orderId","nameLocation":"26130:7:110","nodeType":"VariableDeclaration","scope":82977,"src":"26125:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82964,"name":"uint","nodeType":"ElementaryTypeName","src":"26125:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26124:14:110"},"returnParameters":{"id":82971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82970,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82977,"src":"26171:25:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"},"typeName":{"id":82969,"nodeType":"UserDefinedTypeName","pathNode":{"id":82968,"name":"PendingMarketOrder","nodeType":"IdentifierPath","referencedDeclaration":89484,"src":"26171:18:110"},"referencedDeclaration":89484,"src":"26171:18:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"}},"visibility":"internal"}],"src":"26170:27:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":82992,"nodeType":"FunctionDefinition","src":"26472:160:110","nodes":[],"body":{"id":82991,"nodeType":"Block","src":"26576:56:110","nodes":[],"statements":[{"expression":{"baseExpression":{"id":82987,"name":"_reqIDpendingLimitOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80962,"src":"26593:23:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingLimitOrder_$89494_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.PendingLimitOrder storage ref)"}},"id":82989,"indexExpression":{"id":82988,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82980,"src":"26617:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26593:32:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage","typeString":"struct ITradingStorage.PendingLimitOrder storage ref"}},"functionReturnParameters":82986,"id":82990,"nodeType":"Return","src":"26586:39:110"}]},"baseFunctions":[89740],"documentation":{"id":82978,"nodeType":"StructuredDocumentation","src":"26261:206:110","text":" @notice Retrieves pending limit order details by order ID.\n @param orderId The ID of the pending limit order.\n @return PendingLimitOrder struct containing the order's details."},"functionSelector":"6c7be83a","implemented":true,"kind":"function","modifiers":[],"name":"reqIDpendingLimitOrder","nameLocation":"26481:22:110","overrides":{"id":82982,"nodeType":"OverrideSpecifier","overrides":[],"src":"26532:8:110"},"parameters":{"id":82981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82980,"mutability":"mutable","name":"orderId","nameLocation":"26509:7:110","nodeType":"VariableDeclaration","scope":82992,"src":"26504:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82979,"name":"uint","nodeType":"ElementaryTypeName","src":"26504:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26503:14:110"},"returnParameters":{"id":82986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82992,"src":"26550:24:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"},"typeName":{"id":82984,"nodeType":"UserDefinedTypeName","pathNode":{"id":82983,"name":"PendingLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89494,"src":"26550:17:110"},"referencedDeclaration":89494,"src":"26550:17:110","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"}},"visibility":"internal"}],"src":"26549:26:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83010,"nodeType":"FunctionDefinition","src":"26880:158:110","nodes":[],"body":{"id":83009,"nodeType":"Block","src":"26977:61:110","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":83003,"name":"_openTradesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80933,"src":"26994:16:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":83005,"indexExpression":{"id":83004,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82995,"src":"27011:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26994:25:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":83007,"indexExpression":{"id":83006,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82997,"src":"27020:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26994:37:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":83002,"id":83008,"nodeType":"Return","src":"26987:44:110"}]},"baseFunctions":[89841],"documentation":{"id":82993,"nodeType":"StructuredDocumentation","src":"26638:237:110","text":" @notice Retrieves the count of open trades for a specific trader and pair index.\n @param _trader Address of the trader.\n @param _pairIndex Index of the trading pair.\n @return The count of open trades."},"functionSelector":"1c8636b4","implemented":true,"kind":"function","modifiers":[],"name":"openTradesCount","nameLocation":"26889:15:110","overrides":{"id":82999,"nodeType":"OverrideSpecifier","overrides":[],"src":"26953:8:110"},"parameters":{"id":82998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82995,"mutability":"mutable","name":"_trader","nameLocation":"26913:7:110","nodeType":"VariableDeclaration","scope":83010,"src":"26905:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82994,"name":"address","nodeType":"ElementaryTypeName","src":"26905:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82997,"mutability":"mutable","name":"_pairIndex","nameLocation":"26927:10:110","nodeType":"VariableDeclaration","scope":83010,"src":"26922:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82996,"name":"uint","nodeType":"ElementaryTypeName","src":"26922:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26904:34:110"},"returnParameters":{"id":83002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83001,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83010,"src":"26971:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83000,"name":"uint","nodeType":"ElementaryTypeName","src":"26971:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26970:6:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83023,"nodeType":"FunctionDefinition","src":"27189:105:110","nodes":[],"body":{"id":83022,"nodeType":"Block","src":"27251:43:110","nodes":[],"statements":[{"expression":{"arguments":[{"id":83019,"name":"_callbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80865,"src":"27276:10:110","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}],"id":83018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27268:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83017,"name":"address","nodeType":"ElementaryTypeName","src":"27268:7:110","typeDescriptions":{}}},"id":83020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27268:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":83016,"id":83021,"nodeType":"Return","src":"27261:26:110"}]},"baseFunctions":[89608],"documentation":{"id":83011,"nodeType":"StructuredDocumentation","src":"27044:140:110","text":" @notice Gets the address of the contract that implements callbacks.\n @return The address of the callbacks contract."},"functionSelector":"00b12783","implemented":true,"kind":"function","modifiers":[],"name":"callbacks","nameLocation":"27198:9:110","overrides":{"id":83013,"nodeType":"OverrideSpecifier","overrides":[],"src":"27224:8:110"},"parameters":{"id":83012,"nodeType":"ParameterList","parameters":[],"src":"27207:2:110"},"returnParameters":{"id":83016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83023,"src":"27242:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83014,"name":"address","nodeType":"ElementaryTypeName","src":"27242:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27241:9:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83036,"nodeType":"FunctionDefinition","src":"27449:101:110","nodes":[],"body":{"id":83035,"nodeType":"Block","src":"27509:41:110","nodes":[],"statements":[{"expression":{"arguments":[{"id":83032,"name":"_trading","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80862,"src":"27534:8:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPausable_$89063","typeString":"contract IPausable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPausable_$89063","typeString":"contract IPausable"}],"id":83031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27526:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83030,"name":"address","nodeType":"ElementaryTypeName","src":"27526:7:110","typeDescriptions":{}}},"id":83033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27526:17:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":83029,"id":83034,"nodeType":"Return","src":"27519:24:110"}]},"baseFunctions":[89603],"documentation":{"id":83024,"nodeType":"StructuredDocumentation","src":"27300:144:110","text":" @notice Gets the address of the contract that manages user facingtrading.\n @return The address of the trading contract."},"functionSelector":"ec44acf2","implemented":true,"kind":"function","modifiers":[],"name":"trading","nameLocation":"27458:7:110","overrides":{"id":83026,"nodeType":"OverrideSpecifier","overrides":[],"src":"27482:8:110"},"parameters":{"id":83025,"nodeType":"ParameterList","parameters":[],"src":"27465:2:110"},"returnParameters":{"id":83029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83028,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83036,"src":"27500:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83027,"name":"address","nodeType":"ElementaryTypeName","src":"27500:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27499:9:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83050,"nodeType":"FunctionDefinition","src":"27738:131:110","nodes":[],"body":{"id":83049,"nodeType":"Block","src":"27822:47:110","nodes":[],"statements":[{"expression":{"baseExpression":{"id":83045,"name":"pairTraders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80986,"src":"27839:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(uint256 => address[] storage ref)"}},"id":83047,"indexExpression":{"id":83046,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83039,"src":"27851:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27839:23:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":83044,"id":83048,"nodeType":"Return","src":"27832:30:110"}]},"documentation":{"id":83037,"nodeType":"StructuredDocumentation","src":"27552:181:110","text":" @notice Retrieves the array of traders for a specific pair index.\n @param _pairIndex Index of the trading pair.\n @return An array of trader addresses."},"functionSelector":"5fbfe8cc","implemented":true,"kind":"function","modifiers":[],"name":"pairTradersArray","nameLocation":"27747:16:110","parameters":{"id":83040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83039,"mutability":"mutable","name":"_pairIndex","nameLocation":"27769:10:110","nodeType":"VariableDeclaration","scope":83050,"src":"27764:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83038,"name":"uint","nodeType":"ElementaryTypeName","src":"27764:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27763:17:110"},"returnParameters":{"id":83044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83043,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83050,"src":"27804:16:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":83041,"name":"address","nodeType":"ElementaryTypeName","src":"27804:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83042,"nodeType":"ArrayTypeName","src":"27804:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"27803:18:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83065,"nodeType":"FunctionDefinition","src":"28056:140:110","nodes":[],"body":{"id":83064,"nodeType":"Block","src":"28148:48:110","nodes":[],"statements":[{"expression":{"baseExpression":{"id":83060,"name":"pendingOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80967,"src":"28165:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":83062,"indexExpression":{"id":83061,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83053,"src":"28181:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28165:24:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"functionReturnParameters":83059,"id":83063,"nodeType":"Return","src":"28158:31:110"}]},"baseFunctions":[89905],"documentation":{"id":83051,"nodeType":"StructuredDocumentation","src":"27875:176:110","text":" @notice Retrieves the IDs of pending orders for a specific trader.\n @param _trader Address of the trader.\n @return An array of pending order IDs."},"functionSelector":"5c76ac9e","implemented":true,"kind":"function","modifiers":[],"name":"getPendingOrderIds","nameLocation":"28065:18:110","overrides":{"id":83055,"nodeType":"OverrideSpecifier","overrides":[],"src":"28115:8:110"},"parameters":{"id":83054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83053,"mutability":"mutable","name":"_trader","nameLocation":"28092:7:110","nodeType":"VariableDeclaration","scope":83065,"src":"28084:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83052,"name":"address","nodeType":"ElementaryTypeName","src":"28084:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"28083:17:110"},"returnParameters":{"id":83059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83058,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83065,"src":"28133:13:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":83056,"name":"uint","nodeType":"ElementaryTypeName","src":"28133:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83057,"nodeType":"ArrayTypeName","src":"28133:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"28132:15:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83077,"nodeType":"FunctionDefinition","src":"28272:97:110","nodes":[],"body":{"id":83076,"nodeType":"Block","src":"28340:29:110","nodes":[],"statements":[{"expression":{"id":83074,"name":"usdOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80909,"src":"28357:5:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"functionReturnParameters":83073,"id":83075,"nodeType":"Return","src":"28350:12:110"}]},"baseFunctions":[89937],"documentation":{"id":83066,"nodeType":"StructuredDocumentation","src":"28202:65:110","text":" @notice Retrieves usd OI\n @return USD OI"},"functionSelector":"8ecf3f5a","implemented":true,"kind":"function","modifiers":[],"name":"getUsdOI","nameLocation":"28281:8:110","overrides":{"id":83068,"nodeType":"OverrideSpecifier","overrides":[],"src":"28306:8:110"},"parameters":{"id":83067,"nodeType":"ParameterList","parameters":[],"src":"28289:2:110"},"returnParameters":{"id":83073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83072,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83077,"src":"28324:14:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":83069,"name":"uint","nodeType":"ElementaryTypeName","src":"28324:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83071,"length":{"hexValue":"32","id":83070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28329:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"28324:7:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"28323:16:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83092,"nodeType":"FunctionDefinition","src":"28559:140:110","nodes":[],"body":{"id":83091,"nodeType":"Block","src":"28644:55:110","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":83086,"name":"pendingOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80967,"src":"28661:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":83088,"indexExpression":{"id":83087,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83080,"src":"28677:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28661:24:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":83089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"28661:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":83085,"id":83090,"nodeType":"Return","src":"28654:38:110"}]},"baseFunctions":[89871],"documentation":{"id":83078,"nodeType":"StructuredDocumentation","src":"28375:179:110","text":" @notice Retrieves the count of pending order IDs for a specific trader.\n @param _trader Address of the trader.\n @return The count of pending orders."},"functionSelector":"f7b3c6fd","implemented":true,"kind":"function","modifiers":[],"name":"pendingOrderIdsCount","nameLocation":"28568:20:110","overrides":{"id":83082,"nodeType":"OverrideSpecifier","overrides":[],"src":"28620:8:110"},"parameters":{"id":83081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83080,"mutability":"mutable","name":"_trader","nameLocation":"28597:7:110","nodeType":"VariableDeclaration","scope":83092,"src":"28589:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83079,"name":"address","nodeType":"ElementaryTypeName","src":"28589:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"28588:17:110"},"returnParameters":{"id":83085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83092,"src":"28638:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83083,"name":"uint","nodeType":"ElementaryTypeName","src":"28638:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28637:6:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83114,"nodeType":"FunctionDefinition","src":"28889:160:110","nodes":[],"body":{"id":83113,"nodeType":"Block","src":"28960:89:110","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":83101,"name":"openInterestUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80999,"src":"28977:16:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2] storage ref)"}},"id":83103,"indexExpression":{"id":83102,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83095,"src":"28994:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28977:28:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":83105,"indexExpression":{"hexValue":"30","id":83104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29006:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28977:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"baseExpression":{"id":83106,"name":"openInterestUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80999,"src":"29011:16:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2] storage ref)"}},"id":83108,"indexExpression":{"id":83107,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83095,"src":"29028:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29011:28:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":83110,"indexExpression":{"hexValue":"31","id":83109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29040:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29011:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28977:65:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":83100,"id":83112,"nodeType":"Return","src":"28970:72:110"}]},"baseFunctions":[89897],"documentation":{"id":83093,"nodeType":"StructuredDocumentation","src":"28705:179:110","text":" @notice Retrieves the total open interest for a specific pair index.\n @param _pairIndex Index of the trading pair.\n @return The total open interest."},"functionSelector":"f1694292","implemented":true,"kind":"function","modifiers":[],"name":"pairOI","nameLocation":"28898:6:110","overrides":{"id":83097,"nodeType":"OverrideSpecifier","overrides":[],"src":"28936:8:110"},"parameters":{"id":83096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83095,"mutability":"mutable","name":"_pairIndex","nameLocation":"28910:10:110","nodeType":"VariableDeclaration","scope":83114,"src":"28905:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83094,"name":"uint","nodeType":"ElementaryTypeName","src":"28905:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28904:17:110"},"returnParameters":{"id":83100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83114,"src":"28954:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83098,"name":"uint","nodeType":"ElementaryTypeName","src":"28954:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28953:6:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83128,"nodeType":"FunctionDefinition","src":"29260:115:110","nodes":[],"body":{"id":83127,"nodeType":"Block","src":"29333:42:110","nodes":[],"statements":[{"expression":{"baseExpression":{"id":83123,"name":"_walletOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80937,"src":"29350:9:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":83125,"indexExpression":{"id":83124,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83117,"src":"29360:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29350:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":83122,"id":83126,"nodeType":"Return","src":"29343:25:110"}]},"baseFunctions":[89925],"documentation":{"id":83115,"nodeType":"StructuredDocumentation","src":"29055:200:110","text":" @notice Retrieves the total open interest for a specific trader's wallet.\n @param _trader Address of the trader.\n @return The total open interest in the trader's wallet."},"functionSelector":"b87cb1da","implemented":true,"kind":"function","modifiers":[],"name":"walletOI","nameLocation":"29269:8:110","overrides":{"id":83119,"nodeType":"OverrideSpecifier","overrides":[],"src":"29309:8:110"},"parameters":{"id":83118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83117,"mutability":"mutable","name":"_trader","nameLocation":"29286:7:110","nodeType":"VariableDeclaration","scope":83128,"src":"29278:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83116,"name":"address","nodeType":"ElementaryTypeName","src":"29278:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29277:17:110"},"returnParameters":{"id":83122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83128,"src":"29327:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83120,"name":"uint","nodeType":"ElementaryTypeName","src":"29327:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29326:6:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83161,"nodeType":"FunctionDefinition","src":"29702:311:110","nodes":[],"body":{"id":83160,"nodeType":"Block","src":"29861:152:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83144,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83131,"src":"29897:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83145,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83133,"src":"29906:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83146,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83135,"src":"29918:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83143,"name":"hasOpenLimitOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83336,"src":"29879:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view returns (bool)"}},"id":83147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29879:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":83142,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"29871:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":83148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29871:55:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83149,"nodeType":"ExpressionStatement","src":"29871:55:110"},{"expression":{"baseExpression":{"id":83150,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"29943:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":83158,"indexExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":83151,"name":"openLimitOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80945,"src":"29959:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => uint256)))"}},"id":83153,"indexExpression":{"id":83152,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83131,"src":"29977:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29959:26:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":83155,"indexExpression":{"id":83154,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83133,"src":"29986:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29959:38:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":83157,"indexExpression":{"id":83156,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83135,"src":"29998:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29959:46:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29943:63:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref"}},"functionReturnParameters":83141,"id":83159,"nodeType":"Return","src":"29936:70:110"}]},"baseFunctions":[89732],"documentation":{"id":83129,"nodeType":"StructuredDocumentation","src":"29381:316:110","text":" @notice Retrieves a specific open limit order for a trader and pair index.\n @param _trader The address of the trader.\n @param _pairIndex The index of the trading pair.\n @param _index The index of the limit order.\n @return OpenLimitOrder struct containing the order details."},"functionSelector":"b8878a2c","implemented":true,"kind":"function","modifiers":[],"name":"getOpenLimitOrder","nameLocation":"29711:17:110","overrides":{"id":83137,"nodeType":"OverrideSpecifier","overrides":[],"src":"29820:8:110"},"parameters":{"id":83136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83131,"mutability":"mutable","name":"_trader","nameLocation":"29746:7:110","nodeType":"VariableDeclaration","scope":83161,"src":"29738:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83130,"name":"address","nodeType":"ElementaryTypeName","src":"29738:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83133,"mutability":"mutable","name":"_pairIndex","nameLocation":"29768:10:110","nodeType":"VariableDeclaration","scope":83161,"src":"29763:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83132,"name":"uint","nodeType":"ElementaryTypeName","src":"29763:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83135,"mutability":"mutable","name":"_index","nameLocation":"29793:6:110","nodeType":"VariableDeclaration","scope":83161,"src":"29788:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83134,"name":"uint","nodeType":"ElementaryTypeName","src":"29788:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29728:77:110"},"returnParameters":{"id":83141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83161,"src":"29838:21:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"},"typeName":{"id":83139,"nodeType":"UserDefinedTypeName","pathNode":{"id":83138,"name":"OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"29838:14:110"},"referencedDeclaration":89474,"src":"29838:14:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"visibility":"internal"}],"src":"29837:23:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83172,"nodeType":"FunctionDefinition","src":"30167:117:110","nodes":[],"body":{"id":83171,"nodeType":"Block","src":"30245:39:110","nodes":[],"statements":[{"expression":{"id":83169,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"30262:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"functionReturnParameters":83168,"id":83170,"nodeType":"Return","src":"30255:22:110"}]},"documentation":{"id":83162,"nodeType":"StructuredDocumentation","src":"30019:143:110","text":" @notice Retrieves all open limit orders.\n @return An array of OpenLimitOrder structs containing all open limit orders."},"functionSelector":"8a0bd702","implemented":true,"kind":"function","modifiers":[],"name":"getOpenLimitOrders","nameLocation":"30176:18:110","parameters":{"id":83163,"nodeType":"ParameterList","parameters":[],"src":"30194:2:110"},"returnParameters":{"id":83168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83172,"src":"30220:23:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_memory_ptr_$dyn_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder[]"},"typeName":{"baseType":{"id":83165,"nodeType":"UserDefinedTypeName","pathNode":{"id":83164,"name":"OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"30220:14:110"},"referencedDeclaration":89474,"src":"30220:14:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"id":83166,"nodeType":"ArrayTypeName","src":"30220:16:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder[]"}},"visibility":"internal"}],"src":"30219:25:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":83231,"nodeType":"FunctionDefinition","src":"30544:456:110","nodes":[],"body":{"id":83230,"nodeType":"Block","src":"30648:352:110","nodes":[],"statements":[{"body":{"id":83228,"nodeType":"Block","src":"30698:296:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":83190,"name":"_openTrades","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80918,"src":"30716:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref)))"}},"id":83192,"indexExpression":{"id":83191,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83175,"src":"30728:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30716:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct ITradingStorage.Trade storage ref))"}},"id":83194,"indexExpression":{"id":83193,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83177,"src":"30736:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30716:30:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Trade_$89438_storage_$","typeString":"mapping(uint256 => struct ITradingStorage.Trade storage ref)"}},"id":83196,"indexExpression":{"id":83195,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83184,"src":"30747:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30716:33:110","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage","typeString":"struct ITradingStorage.Trade storage ref"}},"id":83197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"30716:42:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":83198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30762:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"30716:47:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83206,"nodeType":"IfStatement","src":"30712:118:110","trueBody":{"id":83205,"nodeType":"Block","src":"30765:65:110","statements":[{"expression":{"id":83202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83200,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83181,"src":"30783:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":83201,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83184,"src":"30791:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30783:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83203,"nodeType":"ExpressionStatement","src":"30783:9:110"},{"id":83204,"nodeType":"Break","src":"30810:5:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83207,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83184,"src":"30849:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":83208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30853:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30849:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":83210,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30848:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83211,"name":"maxTradesPerPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80879,"src":"30859:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30848:27:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":83213,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30847:29:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83214,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83181,"src":"30880:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":83215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30889:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"30880:10:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30847:43:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83223,"nodeType":"IfStatement","src":"30843:110:110","trueBody":{"id":83222,"nodeType":"Block","src":"30892:61:110","statements":[{"expression":{"arguments":[{"hexValue":"4d41585f5452414445535f52454143484544","id":83219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"30917:20:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_a8a04650d92b5bacaae555914b54f31d80bbc3ccd0b4683d5528b29509eaacc0","typeString":"literal_string \"MAX_TRADES_REACHED\""},"value":"MAX_TRADES_REACHED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a8a04650d92b5bacaae555914b54f31d80bbc3ccd0b4683d5528b29509eaacc0","typeString":"literal_string \"MAX_TRADES_REACHED\""}],"id":83218,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"30910:6:110","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":83220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30910:28:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83221,"nodeType":"ExpressionStatement","src":"30910:28:110"}]}},{"id":83227,"nodeType":"UncheckedBlock","src":"30966:18:110","statements":[{"expression":{"id":83225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"30978:3:110","subExpression":{"id":83224,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83184,"src":"30978:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83226,"nodeType":"ExpressionStatement","src":"30978:3:110"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83187,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83184,"src":"30675:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83188,"name":"maxTradesPerPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80879,"src":"30679:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30675:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83229,"initializationExpression":{"assignments":[83184],"declarations":[{"constant":false,"id":83184,"mutability":"mutable","name":"i","nameLocation":"30668:1:110","nodeType":"VariableDeclaration","scope":83229,"src":"30663:6:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83183,"name":"uint","nodeType":"ElementaryTypeName","src":"30663:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83186,"initialValue":{"hexValue":"30","id":83185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30672:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"30663:10:110"},"nodeType":"ForStatement","src":"30658:336:110"}]},"baseFunctions":[89777],"documentation":{"id":83173,"nodeType":"StructuredDocumentation","src":"30290:249:110","text":" @notice Finds the first empty trade index for a trader and pair index.\n @param trader The address of the trader.\n @param pairIndex The index of the trading pair.\n @return index The index of the first empty trade."},"functionSelector":"292c1617","implemented":true,"kind":"function","modifiers":[],"name":"firstEmptyTradeIndex","nameLocation":"30553:20:110","overrides":{"id":83179,"nodeType":"OverrideSpecifier","overrides":[],"src":"30618:8:110"},"parameters":{"id":83178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83175,"mutability":"mutable","name":"trader","nameLocation":"30582:6:110","nodeType":"VariableDeclaration","scope":83231,"src":"30574:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83174,"name":"address","nodeType":"ElementaryTypeName","src":"30574:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83177,"mutability":"mutable","name":"pairIndex","nameLocation":"30595:9:110","nodeType":"VariableDeclaration","scope":83231,"src":"30590:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83176,"name":"uint","nodeType":"ElementaryTypeName","src":"30590:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30573:32:110"},"returnParameters":{"id":83182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83181,"mutability":"mutable","name":"index","nameLocation":"30641:5:110","nodeType":"VariableDeclaration","scope":83231,"src":"30636:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83180,"name":"uint","nodeType":"ElementaryTypeName","src":"30636:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30635:12:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":83286,"nodeType":"FunctionDefinition","src":"31282:453:110","nodes":[],"body":{"id":83285,"nodeType":"Block","src":"31390:345:110","nodes":[],"statements":[{"body":{"id":83283,"nodeType":"Block","src":"31440:289:110","statements":[{"condition":{"id":83254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"31458:40:110","subExpression":{"arguments":[{"id":83250,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83234,"src":"31477:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83251,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83236,"src":"31485:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83252,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83243,"src":"31496:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83249,"name":"hasOpenLimitOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83336,"src":"31459:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view returns (bool)"}},"id":83253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31459:39:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83261,"nodeType":"IfStatement","src":"31454:111:110","trueBody":{"id":83260,"nodeType":"Block","src":"31500:65:110","statements":[{"expression":{"id":83257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83255,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83240,"src":"31518:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":83256,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83243,"src":"31526:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31518:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83258,"nodeType":"ExpressionStatement","src":"31518:9:110"},{"id":83259,"nodeType":"Break","src":"31545:5:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83262,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83243,"src":"31584:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":83263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31588:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"31584:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":83265,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31583:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83266,"name":"maxTradesPerPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80879,"src":"31594:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31583:27:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":83268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31582:29:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83269,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83240,"src":"31615:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":83270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31624:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31615:10:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31582:43:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83278,"nodeType":"IfStatement","src":"31578:110:110","trueBody":{"id":83277,"nodeType":"Block","src":"31627:61:110","statements":[{"expression":{"arguments":[{"hexValue":"4d41585f4c494d4954535f52454143484544","id":83274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"31652:20:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_c092c06d577c8372fff9945d6cfc14d164e653656146c8571666ad972ed262db","typeString":"literal_string \"MAX_LIMITS_REACHED\""},"value":"MAX_LIMITS_REACHED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c092c06d577c8372fff9945d6cfc14d164e653656146c8571666ad972ed262db","typeString":"literal_string \"MAX_LIMITS_REACHED\""}],"id":83273,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"31645:6:110","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":83275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31645:28:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83276,"nodeType":"ExpressionStatement","src":"31645:28:110"}]}},{"id":83282,"nodeType":"UncheckedBlock","src":"31701:18:110","statements":[{"expression":{"id":83280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"31713:3:110","subExpression":{"id":83279,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83243,"src":"31713:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83281,"nodeType":"ExpressionStatement","src":"31713:3:110"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83246,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83243,"src":"31417:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83247,"name":"maxTradesPerPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80879,"src":"31421:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31417:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83284,"initializationExpression":{"assignments":[83243],"declarations":[{"constant":false,"id":83243,"mutability":"mutable","name":"i","nameLocation":"31410:1:110","nodeType":"VariableDeclaration","scope":83284,"src":"31405:6:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83242,"name":"uint","nodeType":"ElementaryTypeName","src":"31405:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83245,"initialValue":{"hexValue":"30","id":83244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31414:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"31405:10:110"},"nodeType":"ForStatement","src":"31400:329:110"}]},"baseFunctions":[89786],"documentation":{"id":83232,"nodeType":"StructuredDocumentation","src":"31006:271:110","text":" @notice Finds the first empty open limit order index for a trader and pair index.\n @param trader The address of the trader.\n @param pairIndex The index of the trading pair.\n @return index The index of the first empty open limit order."},"functionSelector":"44d44f5a","implemented":true,"kind":"function","modifiers":[],"name":"firstEmptyOpenLimitIndex","nameLocation":"31291:24:110","overrides":{"id":83238,"nodeType":"OverrideSpecifier","overrides":[],"src":"31360:8:110"},"parameters":{"id":83237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83234,"mutability":"mutable","name":"trader","nameLocation":"31324:6:110","nodeType":"VariableDeclaration","scope":83286,"src":"31316:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83233,"name":"address","nodeType":"ElementaryTypeName","src":"31316:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83236,"mutability":"mutable","name":"pairIndex","nameLocation":"31337:9:110","nodeType":"VariableDeclaration","scope":83286,"src":"31332:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83235,"name":"uint","nodeType":"ElementaryTypeName","src":"31332:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31315:32:110"},"returnParameters":{"id":83241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83240,"mutability":"mutable","name":"index","nameLocation":"31383:5:110","nodeType":"VariableDeclaration","scope":83286,"src":"31378:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83239,"name":"uint","nodeType":"ElementaryTypeName","src":"31378:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31377:12:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":83336,"nodeType":"FunctionDefinition","src":"32072:373:110","nodes":[],"body":{"id":83335,"nodeType":"Block","src":"32179:266:110","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83299,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"32193:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":83300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"32193:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":83301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32219:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32193:27:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83306,"nodeType":"IfStatement","src":"32189:70:110","trueBody":{"id":83305,"nodeType":"Block","src":"32222:37:110","statements":[{"expression":{"hexValue":"66616c7365","id":83303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"32243:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83298,"id":83304,"nodeType":"Return","src":"32236:12:110"}]}},{"assignments":[83309],"declarations":[{"constant":false,"id":83309,"mutability":"mutable","name":"o","nameLocation":"32291:1:110","nodeType":"VariableDeclaration","scope":83335,"src":"32268:24:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"},"typeName":{"id":83308,"nodeType":"UserDefinedTypeName","pathNode":{"id":83307,"name":"OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"32268:14:110"},"referencedDeclaration":89474,"src":"32268:14:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"visibility":"internal"}],"id":83319,"initialValue":{"baseExpression":{"id":83310,"name":"openLimitOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80905,"src":"32295:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OpenLimitOrder_$89474_storage_$dyn_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref[] storage ref"}},"id":83318,"indexExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":83311,"name":"openLimitOrderIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80945,"src":"32311:17:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => uint256)))"}},"id":83313,"indexExpression":{"id":83312,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83289,"src":"32329:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32311:25:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":83315,"indexExpression":{"id":83314,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83291,"src":"32337:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32311:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":83317,"indexExpression":{"id":83316,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83293,"src":"32348:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32311:43:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32295:60:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage","typeString":"struct ITradingStorage.OpenLimitOrder storage ref"}},"nodeType":"VariableDeclarationStatement","src":"32268:87:110"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":83323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83320,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83309,"src":"32372:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":83321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"32372:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83322,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83289,"src":"32384:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"32372:18:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83324,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83309,"src":"32394:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":83325,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"32394:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83326,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83291,"src":"32409:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32394:24:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"32372:46:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83329,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83309,"src":"32422:1:110","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder storage pointer"}},"id":83330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89455,"src":"32422:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83331,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83293,"src":"32433:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32422:16:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"32372:66:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":83298,"id":83334,"nodeType":"Return","src":"32365:73:110"}]},"baseFunctions":[89664],"documentation":{"id":83287,"nodeType":"StructuredDocumentation","src":"31741:326:110","text":" @notice Checks if a trader has an open limit order at a specific index and pair index.\n @param trader The address of the trader.\n @param pairIndex The index of the trading pair.\n @param index The index of the limit order.\n @return True if an open limit order exists, false otherwise."},"functionSelector":"dcdf339a","implemented":true,"kind":"function","modifiers":[],"name":"hasOpenLimitOrder","nameLocation":"32081:17:110","overrides":{"id":83295,"nodeType":"OverrideSpecifier","overrides":[],"src":"32155:8:110"},"parameters":{"id":83294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83289,"mutability":"mutable","name":"trader","nameLocation":"32107:6:110","nodeType":"VariableDeclaration","scope":83336,"src":"32099:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83288,"name":"address","nodeType":"ElementaryTypeName","src":"32099:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83291,"mutability":"mutable","name":"pairIndex","nameLocation":"32120:9:110","nodeType":"VariableDeclaration","scope":83336,"src":"32115:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83290,"name":"uint","nodeType":"ElementaryTypeName","src":"32115:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83293,"mutability":"mutable","name":"index","nameLocation":"32136:5:110","nodeType":"VariableDeclaration","scope":83336,"src":"32131:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83292,"name":"uint","nodeType":"ElementaryTypeName","src":"32131:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32098:44:110"},"returnParameters":{"id":83298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83297,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83336,"src":"32173:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83296,"name":"bool","nodeType":"ElementaryTypeName","src":"32173:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32172:6:110"},"scope":83538,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":83537,"nodeType":"FunctionDefinition","src":"32855:1603:110","nodes":[],"body":{"id":83536,"nodeType":"Block","src":"33045:1413:110","nodes":[],"statements":[{"assignments":[83353],"declarations":[{"constant":false,"id":83353,"mutability":"mutable","name":"index","nameLocation":"33060:5:110","nodeType":"VariableDeclaration","scope":83536,"src":"33055:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83352,"name":"uint","nodeType":"ElementaryTypeName","src":"33055:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83358,"initialValue":{"condition":{"id":83354,"name":"_long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83347,"src":"33068:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"31","id":83356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33080:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"id":83357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33068:13:110","trueExpression":{"hexValue":"30","id":83355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33076:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"33055:26:110"},{"assignments":[83364],"declarations":[{"constant":false,"id":83364,"mutability":"mutable","name":"o","nameLocation":"33107:1:110","nodeType":"VariableDeclaration","scope":83536,"src":"33091:17:110","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":83362,"name":"uint","nodeType":"ElementaryTypeName","src":"33091:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83363,"length":{"hexValue":"32","id":83361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33096:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"33091:7:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"id":83368,"initialValue":{"baseExpression":{"id":83365,"name":"openInterestUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80999,"src":"33111:16:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2] storage ref)"}},"id":83367,"indexExpression":{"id":83366,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83341,"src":"33128:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33111:28:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"33091:48:110"},{"condition":{"id":83370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"33206:6:110","subExpression":{"id":83369,"name":"_open","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83345,"src":"33207:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83384,"nodeType":"IfStatement","src":"33202:91:110","trueBody":{"expression":{"id":83382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83371,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33214:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83372,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33234:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":83373,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83364,"src":"33254:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2] storage pointer"}},"id":83375,"indexExpression":{"id":83374,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83353,"src":"33256:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33254:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33234:28:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":83380,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33276:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33234:59:110","trueExpression":{"baseExpression":{"id":83377,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83364,"src":"33265:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2] storage pointer"}},"id":83379,"indexExpression":{"id":83378,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83353,"src":"33267:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33265:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33214:79:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83383,"nodeType":"ExpressionStatement","src":"33214:79:110"}},{"expression":{"id":83400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":83385,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83364,"src":"33304:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2] storage pointer"}},"id":83387,"indexExpression":{"id":83386,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83353,"src":"33306:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"33304:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":83388,"name":"_open","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83345,"src":"33315:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":83394,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83364,"src":"33354:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2] storage pointer"}},"id":83396,"indexExpression":{"id":83395,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83353,"src":"33356:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33354:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":83397,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33365:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33354:28:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33315:67:110","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":83389,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83364,"src":"33323:1:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2] storage pointer"}},"id":83391,"indexExpression":{"id":83390,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83353,"src":"33325:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33323:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":83392,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33334:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33323:28:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33304:78:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83401,"nodeType":"ExpressionStatement","src":"33304:78:110"},{"expression":{"id":83411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83402,"name":"totalOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80885,"src":"33392:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":83403,"name":"_open","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83345,"src":"33402:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83407,"name":"totalOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80885,"src":"33440:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":83408,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33450:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33440:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33402:65:110","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83404,"name":"totalOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80885,"src":"33410:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":83405,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33420:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33410:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33392:75:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83412,"nodeType":"ExpressionStatement","src":"33392:75:110"},{"expression":{"id":83428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":83413,"name":"_walletOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80937,"src":"33477:9:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":83415,"indexExpression":{"id":83414,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83339,"src":"33487:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"33477:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":83416,"name":"_open","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83345,"src":"33498:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":83422,"name":"_walletOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80937,"src":"33547:9:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":83424,"indexExpression":{"id":83423,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83339,"src":"33557:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33547:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":83425,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33568:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33547:38:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33498:87:110","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":83417,"name":"_walletOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80937,"src":"33506:9:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":83419,"indexExpression":{"id":83418,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83339,"src":"33516:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33506:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":83420,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33527:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33506:38:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33477:108:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83429,"nodeType":"ExpressionStatement","src":"33477:108:110"},{"expression":{"id":83444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":83430,"name":"blockOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81013,"src":"33595:7:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":83434,"indexExpression":{"id":83431,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83341,"src":"33603:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33595:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":83435,"indexExpression":{"expression":{"id":83432,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"33615:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"33615:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"33595:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":83436,"name":"blockOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81013,"src":"33631:7:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":83438,"indexExpression":{"id":83437,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83341,"src":"33639:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33631:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":83441,"indexExpression":{"expression":{"id":83439,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"33651:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"33651:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33631:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":83442,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"33667:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33631:53:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33595:89:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83445,"nodeType":"ExpressionStatement","src":"33595:89:110"},{"assignments":[83448],"declarations":[{"constant":false,"id":83448,"mutability":"mutable","name":"pairsStored","nameLocation":"33708:11:110","nodeType":"VariableDeclaration","scope":83536,"src":"33695:24:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"},"typeName":{"id":83447,"nodeType":"UserDefinedTypeName","pathNode":{"id":83446,"name":"IPairStorage","nodeType":"IdentifierPath","referencedDeclaration":89055,"src":"33695:12:110"},"referencedDeclaration":89055,"src":"33695:12:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"visibility":"internal"}],"id":83452,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":83449,"name":"priceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80859,"src":"33722:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":83450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"33722:28:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":83451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33722:30:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"nodeType":"VariableDeclarationStatement","src":"33695:57:110"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":83454,"name":"blockOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81013,"src":"33770:7:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":83456,"indexExpression":{"id":83455,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83341,"src":"33778:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33770:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":83459,"indexExpression":{"expression":{"id":83457,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"33790:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"33790:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33770:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":83462,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83341,"src":"33832:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83460,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83448,"src":"33807:11:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":83461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"blockOILimit","nodeType":"MemberAccess","referencedDeclaration":89033,"src":"33807:24:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":83463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33807:36:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33770:73:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"424c4f434b5f4f495f4c494d49545f4252454143484544","id":83465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33845:25:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_60943225bcb3d8f59462d8ce0c2007eeb33f93020ae57baaed41296571c54f4a","typeString":"literal_string \"BLOCK_OI_LIMIT_BREACHED\""},"value":"BLOCK_OI_LIMIT_BREACHED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_60943225bcb3d8f59462d8ce0c2007eeb33f93020ae57baaed41296571c54f4a","typeString":"literal_string \"BLOCK_OI_LIMIT_BREACHED\""}],"id":83453,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"33762:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":83466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33762:109:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83467,"nodeType":"ExpressionStatement","src":"33762:109:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":83470,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83341,"src":"33912:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83468,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83448,"src":"33885:11:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":83469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairGroupIndex","nodeType":"MemberAccess","referencedDeclaration":88908,"src":"33885:26:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":83471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33885:38:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":83472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33927:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"33885:43:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83527,"nodeType":"IfStatement","src":"33882:483:110","trueBody":{"id":83526,"nodeType":"Block","src":"33930:435:110","statements":[{"assignments":[83475],"declarations":[{"constant":false,"id":83475,"mutability":"mutable","name":"isUSDCAligned","nameLocation":"33949:13:110","nodeType":"VariableDeclaration","scope":83526,"src":"33944:18:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83474,"name":"bool","nodeType":"ElementaryTypeName","src":"33944:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83480,"initialValue":{"arguments":[{"id":83478,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83341,"src":"33991:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83476,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83448,"src":"33965:11:110","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":83477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isUSDCAligned","nodeType":"MemberAccess","referencedDeclaration":89040,"src":"33965:25:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view external returns (bool)"}},"id":83479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33965:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"33944:58:110"},{"assignments":[83482],"declarations":[{"constant":false,"id":83482,"mutability":"mutable","name":"inverseIndex","nameLocation":"34021:12:110","nodeType":"VariableDeclaration","scope":83526,"src":"34016:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83481,"name":"uint","nodeType":"ElementaryTypeName","src":"34016:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83487,"initialValue":{"condition":{"id":83483,"name":"_long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83347,"src":"34036:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":83485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34048:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":83486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"34036:13:110","trueExpression":{"hexValue":"31","id":83484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34044:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"34016:33:110"},{"condition":{"id":83488,"name":"isUSDCAligned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83475,"src":"34066:13:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83524,"nodeType":"Block","src":"34210:145:110","statements":[{"expression":{"id":83522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":83507,"name":"usdOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80909,"src":"34228:5:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":83509,"indexExpression":{"id":83508,"name":"inverseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83482,"src":"34234:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"34228:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":83510,"name":"_open","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83345,"src":"34251:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":83516,"name":"usdOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80909,"src":"34301:5:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":83518,"indexExpression":{"id":83517,"name":"inverseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83482,"src":"34307:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34301:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":83519,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"34323:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34301:39:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"34251:89:110","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":83511,"name":"usdOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80909,"src":"34259:5:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":83513,"indexExpression":{"id":83512,"name":"inverseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83482,"src":"34265:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34259:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":83514,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"34281:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34259:39:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34228:112:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83523,"nodeType":"ExpressionStatement","src":"34228:112:110"}]},"id":83525,"nodeType":"IfStatement","src":"34063:292:110","trueBody":{"id":83506,"nodeType":"Block","src":"34081:123:110","statements":[{"expression":{"id":83504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":83489,"name":"usdOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80909,"src":"34099:5:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":83491,"indexExpression":{"id":83490,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83353,"src":"34105:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"34099:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":83492,"name":"_open","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83345,"src":"34114:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":83498,"name":"usdOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80909,"src":"34157:5:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":83500,"indexExpression":{"id":83499,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83353,"src":"34163:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34157:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":83501,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"34172:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34157:32:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"34114:75:110","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":83493,"name":"usdOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80909,"src":"34122:5:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":83495,"indexExpression":{"id":83494,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83353,"src":"34128:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34122:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":83496,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"34137:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34122:32:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34099:90:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83505,"nodeType":"ExpressionStatement","src":"34099:90:110"}]}}]}},{"eventCall":{"arguments":[{"id":83529,"name":"_open","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83345,"src":"34399:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":83530,"name":"_long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83347,"src":"34406:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":83531,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83341,"src":"34413:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83532,"name":"_leveragedPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83343,"src":"34425:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83533,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83349,"src":"34444:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83528,"name":"OIUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89562,"src":"34389:9:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bool,bool,uint256,uint256,uint256)"}},"id":83534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34389:62:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83535,"nodeType":"EmitStatement","src":"34384:67:110"}]},"documentation":{"id":83337,"nodeType":"StructuredDocumentation","src":"32451:399:110","text":" @notice Keeps track of OI for protocol and trader\n @param _trader The address of the trader.\n @param _pairIndex The index of the trading pair.\n @param _leveragedPosUSDC The leveraged position size in USDC.\n @param _open True if the position is being opened, false if it's being closed.\n @param _long True if the position is long, false if it's short."},"implemented":true,"kind":"function","modifiers":[],"name":"_updateOpenInterestUSDC","nameLocation":"32864:23:110","parameters":{"id":83350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83339,"mutability":"mutable","name":"_trader","nameLocation":"32905:7:110","nodeType":"VariableDeclaration","scope":83537,"src":"32897:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83338,"name":"address","nodeType":"ElementaryTypeName","src":"32897:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83341,"mutability":"mutable","name":"_pairIndex","nameLocation":"32927:10:110","nodeType":"VariableDeclaration","scope":83537,"src":"32922:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83340,"name":"uint","nodeType":"ElementaryTypeName","src":"32922:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83343,"mutability":"mutable","name":"_leveragedPosUSDC","nameLocation":"32952:17:110","nodeType":"VariableDeclaration","scope":83537,"src":"32947:22:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83342,"name":"uint","nodeType":"ElementaryTypeName","src":"32947:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83345,"mutability":"mutable","name":"_open","nameLocation":"32984:5:110","nodeType":"VariableDeclaration","scope":83537,"src":"32979:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83344,"name":"bool","nodeType":"ElementaryTypeName","src":"32979:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83347,"mutability":"mutable","name":"_long","nameLocation":"33004:5:110","nodeType":"VariableDeclaration","scope":83537,"src":"32999:10:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83346,"name":"bool","nodeType":"ElementaryTypeName","src":"32999:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83349,"mutability":"mutable","name":"_price","nameLocation":"33024:6:110","nodeType":"VariableDeclaration","scope":83537,"src":"33019:11:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83348,"name":"uint","nodeType":"ElementaryTypeName","src":"33019:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32887:149:110"},"returnParameters":{"id":83351,"nodeType":"ParameterList","parameters":[],"src":"33045:0:110"},"scope":83538,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":80842,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":43537,"src":"580:13:110"},"id":80843,"nodeType":"InheritanceSpecifier","src":"580:13:110"},{"baseName":{"id":80844,"name":"ITradingStorage","nodeType":"IdentifierPath","referencedDeclaration":89943,"src":"595:15:110"},"id":80845,"nodeType":"InheritanceSpecifier","src":"595:15:110"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[83538,89943,43537],"name":"TradingStorage","nameLocation":"562:14:110","scope":83539,"usedErrors":[]}],"license":"MIT"},"id":110}
1
+ {"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addTradingContract","inputs":[{"name":"__trading","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"applyReferralAndPnlFee","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_fees","type":"uint256","internalType":"uint256"},{"name":"_leveragedPosition","type":"uint256","internalType":"uint256"},{"name":"_isPnl","type":"bool","internalType":"bool"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_percentProfit","type":"int256","internalType":"int256"},{"name":"_collateral","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blockOI","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"callbacks","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claimFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRebate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dev","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"devFeesUSDC","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"firstEmptyOpenLimitIndex","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"firstEmptyTradeIndex","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"forceUnregisterPendingMarketOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getOpenLimitOrder","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.OpenLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getOpenLimitOrders","inputs":[],"outputs":[{"name":"","type":"tuple[]","internalType":"struct ITradingStorage.OpenLimitOrder[]","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingOrderIds","inputs":[{"name":"_trader","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getUsdOI","inputs":[],"outputs":[{"name":"","type":"uint256[2]","internalType":"uint256[2]"}],"stateMutability":"view"},{"type":"function","name":"gov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"govFeesUSDC","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"govTreasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"handleDevGovFees","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_leveragedPositionSize","type":"uint256","internalType":"uint256"},{"name":"_usdc","type":"bool","internalType":"bool"},{"name":"_fullFee","type":"bool","internalType":"bool"},{"name":"_buy","type":"bool","internalType":"bool"}],"outputs":[{"name":"feeAfterRebate","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"hasOpenLimitOrder","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"incrementClosingFees","inputs":[{"name":"devFees","type":"uint256","internalType":"uint256"},{"name":"govFees","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isTradingContract","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isValidOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leveragedPos","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxOpenInterest","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxPendingMarketOrders","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxTradesPerPair","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openInterestUSDC","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openLimitOrderIds","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openLimitOrders","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openLimitOrdersCount","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTrades","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"openTradesCount","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTradesInfo","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.TradeInfo","components":[{"name":"openInterestUSDC","type":"uint256","internalType":"uint256"},{"name":"tpLastUpdated","type":"uint256","internalType":"uint256"},{"name":"slLastUpdated","type":"uint256","internalType":"uint256"},{"name":"beingMarketClosed","type":"bool","internalType":"bool"},{"name":"lossProtection","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"pairLongOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairShortOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairTraders","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pairTradersArray","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"pairTradersId","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingMarketCloseCount","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingMarketOpenCount","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingOrderIds","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingOrderIdsCount","inputs":[{"name":"_trader","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"priceAggregator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPriceAggregator"}],"stateMutability":"view"},{"type":"function","name":"rebates","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"referral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IReferral"}],"stateMutability":"view"},{"type":"function","name":"registerPartialTrade","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"_amountReduced","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeTradingContract","inputs":[{"name":"__trading","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reqIDpendingLimitOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.PendingLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"orderType","type":"uint8","internalType":"enum ITradingStorage.LimitOrder"}]}],"stateMutability":"view"},{"type":"function","name":"reqIDpendingMarketOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITradingStorage.PendingMarketOrder","components":[{"name":"trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"wantedPrice","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"requestGov","inputs":[{"name":"_gov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestedGov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setCallbacks","inputs":[{"name":"__callbacks","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDev","inputs":[{"name":"_dev","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGov","inputs":[{"name":"_newGov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGovTreasury","inputs":[{"name":"_govTreasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxPendingMarketOrders","inputs":[{"name":"_maxPendingMarketOrders","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxTradesPerPair","inputs":[{"name":"_maxTradesPerPair","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceAggregator","inputs":[{"name":"_aggregator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setReferral","inputs":[{"name":"_refferal","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTrading","inputs":[{"name":"__trading","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTvlCap","inputs":[{"name":"_newCap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUSDC","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setVaultManager","inputs":[{"name":"_vaultManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storeOpenLimitOrder","inputs":[{"name":"o","type":"tuple","internalType":"struct ITradingStorage.OpenLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storePendingLimitOrder","inputs":[{"name":"_limitOrder","type":"tuple","internalType":"struct ITradingStorage.PendingLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"orderType","type":"uint8","internalType":"enum ITradingStorage.LimitOrder"}]},{"name":"_orderId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storePendingMarketOrder","inputs":[{"name":"_order","type":"tuple","internalType":"struct ITradingStorage.PendingMarketOrder","components":[{"name":"trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"wantedPrice","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"}]},{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_open","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storeTrade","inputs":[{"name":"_trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"_tradeInfo","type":"tuple","internalType":"struct ITradingStorage.TradeInfo","components":[{"name":"openInterestUSDC","type":"uint256","internalType":"uint256"},{"name":"tpLastUpdated","type":"uint256","internalType":"uint256"},{"name":"slLastUpdated","type":"uint256","internalType":"uint256"},{"name":"beingMarketClosed","type":"bool","internalType":"bool"},{"name":"lossProtection","type":"uint256","internalType":"uint256"}]},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalOI","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"trading","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferUSDC","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tvlCap","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"unregisterOpenLimitOrder","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterPendingLimitOrder","inputs":[{"name":"_order","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterPendingMarketOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_open","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterTrade","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOpenLimitOrder","inputs":[{"name":"_o","type":"tuple","internalType":"struct ITradingStorage.OpenLimitOrder","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"positionSize","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"slippageP","type":"uint256","internalType":"uint256"},{"name":"block","type":"uint256","internalType":"uint256"},{"name":"executionFee","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateSl","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newSl","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTp","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newTp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTrade","inputs":[{"name":"_t","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"usdOI","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"usdc","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vaultManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVaultManager"}],"stateMutability":"view"},{"type":"function","name":"walletOI","inputs":[{"name":"_trader","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withinExposureLimits","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_leveragedPos","type":"uint256","internalType":"uint256"},{"name":"_buy","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"AddressUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FeesCharged","inputs":[{"name":"_trader","type":"address","indexed":false,"internalType":"address"},{"name":"_pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_buy","type":"bool","indexed":false,"internalType":"bool"},{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FeesClaimed","inputs":[{"name":"govTreasury","type":"address","indexed":false,"internalType":"address"},{"name":"govFees","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"devTreasury","type":"address","indexed":false,"internalType":"address"},{"name":"devFees","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MarketOpenCanceled","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NumberUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NumberUpdatedPair","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OIUpdated","inputs":[{"name":"_open","type":"bool","indexed":false,"internalType":"bool"},{"name":"_long","type":"bool","indexed":false,"internalType":"bool"},{"name":"_pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_leveragedPos","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RebateClaimed","inputs":[{"name":"referrer","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SupportedTokenAdded","inputs":[{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TradeReferred","inputs":[{"name":"_trader","type":"address","indexed":false,"internalType":"address"},{"name":"_referrer","type":"address","indexed":false,"internalType":"address"},{"name":"_leveragedPosition","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_traderFeePostDiscount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_startingFees","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_referrerRebate","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_pairIndex","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TradingContractAdded","inputs":[{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TradingContractRemoved","inputs":[{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615f7b80620000f36000396000f3fe608060405234801561001057600080fd5b50600436106104c15760003560e01c80639c8912f111610278578063d477f05f1161015c578063eda00d54116100ce578063f65d9dbe11610092578063f65d9dbe14610c6a578063f7b3c6fd14610c73578063f823e2ae14610c9c578063fdb153e214610caf578063fe0fc8d614610cc2578063ff12673a14610cd557600080fd5b8063eda00d5414610be0578063f0cb9b1114610c11578063f169429214610c24578063f41450b514610c37578063f4ccf54e14610c4a57600080fd5b8063dc6638f411610120578063dc6638f414610b7b578063dcdf339a14610b83578063dd0290e214610b96578063e3cbe3a714610ba9578063ec44acf214610bbc578063ecf56a1f14610bcd57600080fd5b8063d477f05f14610b0f578063d5dabd7514610b22578063d775d54814610b42578063d8137fe814610b55578063dc2123ff14610b6857600080fd5b8063b543503e116101f5578063c45cceb6116101b9578063c45cceb614610ab3578063cab9458014610ac6578063cda3948f14610ad9578063cfad57a214610ae1578063d294f09314610af4578063d45bc33214610afc57600080fd5b8063b543503e14610a19578063b7682d5414610a2c578063b87cb1da14610a57578063b8878a2c14610a80578063bcc9f1d314610aa057600080fd5b8063a553906c1161023c578063a553906c146109a2578063ae8ac94e146109b5578063b222cb38146109c8578063b3e089a2146109f3578063b4b0f56714610a0657600080fd5b80639c8912f11461091e5780639cb87f23146109495780639e5914da1461095c578063a35441811461096f578063a3a80ffe1461098257600080fd5b806350bb2578116103aa5780637fdb96f31161031c5780638b83351a116102e05780638b83351a1461084e5780638c8ff1d5146108615780638ecf3f5a146108b857806390d112b9146108cd57806391cca3db146108e057806397e7995a146108f357600080fd5b80637fdb96f3146108025780638049fde7146108155780638129fc1c1461081e5780638a0bd702146108265780638a4adf241461083b57600080fd5b80636817f5761161036e5780636817f5761461075e5780636b2d653f146107715780636c7be83a146107995780636d81d981146107b95780637ada8483146107dc5780637eed1d30146107ef57600080fd5b806350bb2578146106e55780635b621e32146106f85780635c76ac9e1461070b5780635fbfe8cc1461072b57806366ac654d1461074b57600080fd5b806332149592116104435780633f64d036116104075780633f64d03614610655578063422a4214146106685780634415b3691461068b578063443295dc146106b657806344d44f5a146106bf5780635070e837146106d257600080fd5b806332149592146105b157806334df8540146106275780633c6d6fa0146106305780633e413bee146106395780633f23fa1a1461064c57600080fd5b80631441a5a91161048a5780631441a5a91461053e5780631c8636b414610551578063292c1617146105725780632a9a9667146105855780633078fff51461059857600080fd5b8062b12783146104c657806305f3c6ad146104f05780630d32c907146105055780630fe1c91f1461051857806312d43a511461052b575b600080fd5b6002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6105036104fe3660046153da565b610ce8565b005b61050361051336600461592d565b610d7b565b6105036105263660046159ef565b611179565b600d546104d3906001600160a01b031681565b6005546104d3906001600160a01b031681565b61056461055f366004615438565b6111c9565b6040519081526020016104e7565b610564610580366004615438565b6111f4565b6105646105933660046154e3565b6112ac565b6000546104d3906201000090046001600160a01b031681565b6105c46105bf36600461592d565b61163f565b604080516001600160a01b03909d168d5260208d019b909b52998b019890985260608a0196909652931515608089015260a088019290925260c087015260e0860152610100850152610120840152610140830152610160820152610180016104e7565b610564600a5481565b610564600b5481565b6003546104d3906001600160a01b031681565b61056460095481565b6105036106633660046155b8565b6116bd565b61067b6106763660046159c8565b6117ac565b60405190151581526020016104e7565b610564610699366004615438565b601f60209081526000928352604080842090915290825290205481565b61056460085481565b6105646106cd366004615438565b611aa4565b6105036106e03660046153da565b611b2c565b6105036106f33660046153da565b611bcd565b6105036107063660046153da565b611c19565b61071e6107193660046153da565b611c94565b6040516104e79190615bf7565b61073e61073936600461592d565b611d00565b6040516104e79190615b36565b600c546104d3906001600160a01b031681565b61056461076c36600461592d565b611d6b565b61078461077f366004615553565b611d82565b604080519283526020830191909152016104e7565b6107ac6107a736600461592d565b612004565b6040516104e79190615c71565b61067b6107c73660046153da565b60216020526000908152604090205460ff1681565b6105036107ea36600461592d565b6120a8565b6105646107fd36600461592d565b6120fc565b6105036108103660046155b8565b612113565b61056460075481565b6105036122d1565b61082e612405565b6040516104e79190615b83565b6004546104d3906001600160a01b031681565b61050361085c3660046153f7565b6124e9565b61087461086f366004615464565b61254a565b6040516104e79190600060a0820190508251825260208301516020830152604083015160408301526060830151151560608301526080830151608083015292915050565b6108c06125ed565b6040516104e79190615bc6565b6105036108db366004615464565b612627565b600e546104d3906001600160a01b031681565b610564610901366004615438565b601860209081526000928352604080842090915290825290205481565b61056461092c366004615438565b601c60209081526000928352604080842090915290825290205481565b6105646109573660046159ef565b612a09565b61050361096a3660046153da565b612a2d565b61050361097d3660046155b8565b612ab6565b610995610990366004615464565b612c74565b6040516104e79190615d01565b6105036109b03660046153da565b612d2d565b6105036109c336600461564a565b612db5565b6105646109d63660046159ef565b602360209081526000928352604080842090915290825290205481565b610503610a013660046153da565b612ed1565b610503610a14366004615464565b612f56565b610503610a273660046153da565b613242565b610564610a3a366004615438565b601d60209081526000928352604080842090915290825290205481565b610564610a653660046153da565b6001600160a01b031660009081526016602052604090205490565b610a93610a8e366004615464565b6132cf565b6040516104e79190615c62565b610564610aae366004615438565b613440565b61067b610ac1366004615499565b613471565b610503610ad4366004615998565b6136e4565b6105036139ba565b610503610aef3660046153da565b613a3c565b610503613b4e565b610564610b0a36600461592d565b613c11565b610503610b1d3660046153da565b613c25565b610b35610b3036600461592d565b613ca9565b6040516104e79190615cc7565b610503610b50366004615790565b613d77565b610503610b63366004615803565b613e0b565b610503610b7636600461592d565b613fd3565b610564614056565b61067b610b91366004615464565b61410c565b610503610ba436600461592d565b6141a9565b6104d3610bb73660046159ef565b614215565b6001546001600160a01b03166104d3565b610503610bdb36600461592d565b61424d565b610564610bee366004615464565b601760209081526000938452604080852082529284528284209052825290205481565b610503610c1f366004615883565b6142d6565b610564610c3236600461592d565b61435d565b610503610c453660046158a0565b61437b565b610564610c583660046153da565b60226020526000908152604090205481565b61056460065481565b610564610c813660046153da565b6001600160a01b03166000908152601b602052604090205490565b610503610caa3660046153da565b6146b2565b610503610cbd366004615663565b614730565b610503610cd03660046153da565b614a09565b600f546104d3906001600160a01b031681565b600d546001600160a01b03163314610cff57600080fd5b6001600160a01b038116610d1257600080fd5b600f80546001600160a01b0319166001600160a01b03831690811790915560408051818152600b918101919091526a676f76547265617375727960a81b60608201526020810191909152600080516020615f26833981519152906080015b60405180910390a150565b3360009081526021602052604090205460ff16610d9757600080fd5b6000805460405163d09ef24160e01b815260048101849052620100009091046001600160a01b03169063d09ef2419060240160806040518083038186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e19919061570b565b602090810151600084815260198352604080822081516101e08101835281546001600160a01b031660808201818152600184015460a0840152600284015460c0840152600384015460e084015260048401546101008401526005840154610120840152600684015460ff1615156101408401526007840154610160840152600884015461018084015260098401546101a0840152600a8401546101c08401528252600b83015482880152600c83015482850152600d909201546060820152908352601b90945281209193505b81548110156111015784828281548110610f0157610f01615eec565b906000526020600020015414156110ef576000846008811115610f2657610f26615ec0565b1480610f4357506006846008811115610f4157610f41615ec0565b145b15610f87578251516001600160a01b03166000908152601c60209081526040808320865183015184529091528120805491610f7d83615e78565b9190505550611002565b8251516001600160a01b03166000908152601d60209081526040808320865183015184529091528120805491610fbc83615e78565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff191690555b8154829061101290600190615e35565b8154811061102257611022615eec565b906000526020600020015482828154811061103f5761103f615eec565b90600052602060002001819055508180548061105d5761105d615ed6565b600082815260208082208301600019908101839055909201909255868252601990526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560068101805460ff19169055600781018290556008810182905560098101829055600a8101829055600b8101829055600c8101829055600d01555b806110f981615e8f565b915050610ee5565b5081518051608090910151600354611124926001600160a01b0390911691614a93565b8151805160209182015160408051888152938401919091526001600160a01b03909116917f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c65910160405180910390a250505050565b3360009081526021602052604090205460ff1661119557600080fd5b81600a60008282546111a79190615ddc565b9250508190555080600b60008282546111c09190615ddc565b90915550505050565b6001600160a01b03821660009081526015602090815260408083208484529091529020545b92915050565b6000805b6006548110156112a5576001600160a01b0384166000908152601360209081526040808320868452825280832084845290915290206007015461123d578091506112a5565b60065461124b826001615ddc565b148015611256575081155b1561129d5760405162461bcd60e51b815260206004820152601260248201527113505617d51490511154d7d4915050d2115160721b60448201526064015b60405180910390fd5b6001016111f8565b5092915050565b3360009081526021602052604081205460ff166112c857600080fd5b60008054604051633a100f4d60e01b8152600481018990526024810188905284151560448201526064916402540be40091620100009091046001600160a01b031690633a100f4d90840160206040518083038186803b15801561132a57600080fd5b505afa15801561133e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113629190615946565b61136c9089615e16565b6113769190615df4565b6113809190615df4565b90508361139557611392600282615df4565b90505b60006113a8898389600080600080611d82565b6002546040805163c4493e3760e01b815290519396509193506000926064926001600160a01b039092169163c4493e3791600480830192602092919082900301818887803b1580156113f957600080fd5b505af115801561140d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114319190615946565b61143c906064615e35565b6114468487615e35565b6114509190615e16565b61145a9190615df4565b9050600060016064600260009054906101000a90046001600160a01b03166001600160a01b031663c4493e376040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea9190615946565b6114f48689615e35565b6114fe9190615e16565b6115089190615df4565b901c9050871561152f5760045460035461152f916001600160a01b03918216911684614a93565b60048054604051635b898b7560e01b8152918201849052600060248301526001600160a01b031690635b898b7590604401600060405180830381600087803b15801561157a57600080fd5b505af115801561158e573d6000803e3d6000fd5b5050505080600b60008282546115a49190615ddc565b90915550819050826115b68588615e35565b6115c09190615e35565b6115ca9190615e35565b600a60008282546115db9190615ddc565b9091555050604080516001600160a01b038d168152602081018c9052871515818301526060810187905290517f9921a6a6258398cbe136bac24f80d97ba2b5e4ab8cf2b2d27232d2ae1c78cdd39181900360800190a1505050509695505050505050565b6010818154811061164f57600080fd5b60009182526020909120600c9091020180546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b909b01546001600160a01b03909a169b5097999698959760ff9095169693959294919390928c565b3360009081526021602052604090205460ff166116d957600080fd5b6001600160a01b0384166000818152601360209081526040808320878452825280832086845282528083209383526014825280832087845282528083208684529091529020600782015461172e5750506117a6565b828260030160008282546117429190615e35565b90915550506007820154611757908490614af6565b81600001600082825461176a9190615e35565b925050819055506117a3868661178d856007015487614af690919063ffffffff16565b6006860154600587015460009160ff1690614b12565b50505b50505050565b600080600060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156117fd57600080fd5b505afa158015611811573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611835919061562d565b60008681526020805260408120600181015490549293509091859161185991615ddc565b6118639190615ddc565b9050841561198d57604051635970d96b60e11b8152600481018790526001600160a01b0383169063b2e1b2d69060240160206040518083038186803b1580156118ab57600080fd5b505afa1580156118bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e39190615946565b81111580156119845750604051638769886960e01b8152600481018790526001600160a01b0383169063876988699060240160206040518083038186803b15801561192d57600080fd5b505afa158015611941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119659190615946565b6000878152602080526040812086915b01546119819190615ddc565b11155b92505050611a9d565b604051635970d96b60e11b8152600481018790526001600160a01b0383169063b2e1b2d69060240160206040518083038186803b1580156119cd57600080fd5b505afa1580156119e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a059190615946565b8111158015611984575060405163108c358760e01b8152600481018790526001600160a01b0383169063108c35879060240160206040518083038186803b158015611a4f57600080fd5b505afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190615946565b6000878152602080526040902085906001611975565b9392505050565b6000805b6006548110156112a557611abd84848361410c565b611ac9578091506112a5565b600654611ad7826001615ddc565b148015611ae2575081155b15611b245760405162461bcd60e51b815260206004820152601260248201527113505617d31253525514d7d4915050d2115160721b6044820152606401611294565b600101611aa8565b600d546001600160a01b03163314611b4357600080fd5b6001600160a01b038116611b5657600080fd5b600080546001600160a01b038316620100000262010000600160b01b0319909116179055604051600080516020615f2683398151915290610d709083906040808252600f908201526e383934b1b2a0b3b3b932b3b0ba37b960891b60608201526001600160a01b0391909116602082015260800190565b600d546001600160a01b03163314611be457600080fd5b6001600160a01b038116611bf757600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b03163314611c3057600080fd5b6001600160a01b038116611c4357600080fd5b6001600160a01b038116600081815260216020908152604091829020805460ff1916905590519182527ff9cf924d7d98e6e0a27ec523cd7214b0bbdfaba197018b33b41a702f5238190e9101610d70565b6001600160a01b0381166000908152601b6020908152604091829020805483518184028101840190945280845260609392830182828015611cf457602002820191906000526020600020905b815481526020019060010190808311611ce0575b50505050509050919050565b6000818152601e6020908152604091829020805483518184028101840190945280845260609392830182828015611cf457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d425750505050509050919050565b60008181526020805260408120815b015492915050565b33600090815260216020526040812054819060ff16611da057600080fd5b8515611ec75760008060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611df557600080fd5b505afa158015611e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2d919061562d565b604051631dc6750f60e21b81526004810188905260248101869052604481018790529091506000906001600160a01b03831690637719d43c9060640160206040518083038186803b158015611e8157600080fd5b505afa158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190615946565b935060009250611ff8915050565b60055460405163ce18b98d60e01b81526001600160a01b038b81166004830152602482018b9052600092839283929091169063ce18b98d90604401606060405180830381600087803b158015611f1c57600080fd5b505af1158015611f30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f54919061595f565b6001600160a01b038216600090815260226020526040812080549497509295509093508392611f84908490615ddc565b9091555050604080516001600160a01b03808f168252841660208201529081018b905260608101849052608081018c905260a0810182905260c081018990527f92133a7a27eec9c36de4706108b974c1be753637bfd864f0d14f4c500ffbcfae9060e00160405180910390a1919350909150505b97509795505050505050565b61202c6040805160808101825260008082526020820181905291810182905290606082015290565b6000828152601a6020908152604091829020825160808101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600380830154919291606084019160ff9091169081111561208e5761208e615ec0565b600381111561209f5761209f615ec0565b90525092915050565b3360009081526021602052604090205460ff166120c457600080fd5b6000908152601a6020526040812080546001600160a01b0319168155600181018290556002810191909155600301805460ff19169055565b6011816002811061210c57600080fd5b0154905081565b3360009081526021602052604090205460ff1661212f57600080fd5b6001600160a01b038416600081815260136020908152604080832087845282528083208684528252808320938352601482528083208784528252808320868452909152902060078201546121845750506117a6565b60008060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d357600080fd5b505afa1580156121e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220b919061562d565b600584015460078501546006860154600187015460405163daefa14560e01b8152600481019490945260248401929092526044830188905260ff161515606483015260848201529091506001600160a01b0382169063daefa1459060a40160206040518083038186803b15801561228157600080fd5b505afa158015612295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b99190615946565b60089093018390555043600190910155905050505050565b600054610100900460ff16158080156122f15750600054600160ff909116105b8061230b5750303b15801561230b575060005460ff166001145b61236e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611294565b6000805460ff191660011790558015612391576000805461ff0019166101001790555b600d80546001600160a01b03191633179055600560068190556007556123bd6402540be400605a615e16565b6009558015612402576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610d70565b50565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156124e05760008481526020908190206040805161018081018252600c860290920180546001600160a01b031683526001808201548486015260028201549284019290925260038101546060840152600481015460ff1615156080840152600581015460a0840152600681015460c0840152600781015460e084015260088101546101008401526009810154610120840152600a810154610140840152600b01546101608301529083529092019101612429565b50505050905090565b3360009081526021602052604090205460ff1661250557600080fd5b6001600160a01b0383163014156125325760035461252d906001600160a01b03168383614a93565b505050565b60035461252d906001600160a01b0316848484615042565b61257e6040518060a00160405280600081526020016000815260200160008152602001600015158152602001600081525090565b506001600160a01b03929092166000908152601460209081526040808320938352928152828220938252928352819020815160a08101835281548152600182015493810193909352600281015491830191909152600381015460ff161515606083015260040154608082015290565b6125f561526f565b60408051808201918290529060119060029082845b81548152602001906001019080831161260a575050505050905090565b3360009081526021602052604090205460ff1661264357600080fd5b6001600160a01b03831660008181526013602090815260408083208684528252808320858452825280832093835260148252808320868452825280832085845290915290206007820154612698575050505050565b8054600683015460058401546126b8928892889260009160ff1690614b12565b6001600160a01b038516600090815260156020908152604080832087845290915290205460011415612826576001600160a01b0385166000908152601f60209081526040808320878452825280832054601e9092529091208054819061272090600190615e35565b8154811061273057612730615eec565b9060005260206000200160009054906101000a90046001600160a01b031681838154811061276057612760615eec565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081601f60008385815481106127a5576127a5615eec565b60009182526020808320909101546001600160a01b03908116845283820194909452604092830182208b8352815282822094909455918a168252601f835280822089835290925290812055805481908061280157612801615ed6565b600082815260209020810160001990810180546001600160a01b031916905501905550505b6001600160a01b0380861660008181526013602090815260408083208984528252808320888452825280832080546001600160a01b031916815560018082018590556002808301869055600380840187905560048085018890556005850188905560068501805460ff19908116909155600786018990556008860189905560098601899055600a909501889055978752601486528487208d885286528487208c88528652848720878155928301879055908201869055810180549092169091558401839055825481516335b03c1760e01b8152915193956201000090910416936335b03c17938282019392909190829003018186803b15801561292857600080fd5b505afa15801561293c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612960919061562d565b60405163f80aa68b60e01b81526001600160a01b03888116600483015260248201889052604482018790529192509082169063f80aa68b90606401600060405180830381600087803b1580156129b557600080fd5b505af11580156129c9573d6000803e3d6000fd5b505050506001600160a01b038616600090815260156020908152604080832088845290915281208054916129fc83615e78565b9190505550505050505050565b602080528160005260406000208160028110612a2457600080fd5b01549150829050565b600d546001600160a01b03163314612a4457600080fd5b6001600160a01b038116612a5757600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040805181815260089181019190915267149959995c9c985b60c21b60608201526020810191909152600080516020615f2683398151915290608001610d70565b3360009081526021602052604090205460ff16612ad257600080fd5b6001600160a01b03841660008181526013602090815260408083208784528252808320868452825280832093835260148252808320878452825280832086845290915290206007820154612b275750506117a6565b60008060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7657600080fd5b505afa158015612b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bae919061562d565b600584015460078501546006860154600187015460405163109b8faf60e11b8152600481019490945260248401929092526044830188905260ff161515606483015260848201529091506001600160a01b038216906321371f5e9060a40160206040518083038186803b158015612c2457600080fd5b505afa158015612c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5c9190615946565b60099093018390555043600290910155905050505050565b612c7c61528d565b506001600160a01b039283166000908152601360209081526040808320948352938152838220928252918252829020825161016081018452815490941684526001810154918401919091526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460ff16151560c0830152600781015460e083015260088101546101008301526009810154610120830152600a015461014082015290565b600d546001600160a01b03163314612d4457600080fd5b6001600160a01b038116612d5757600080fd5b600180546001600160a01b0319166001600160a01b038316908117909155604080518181526007918101919091526674726164696e6760c81b60608201526020810191909152600080516020615f2683398151915290608001610d70565b3360009081526021602052604090205460ff16612dd157600080fd5b612df0612de160208301836153da565b8260200135836040013561410c565b612df75750565b60006010601782612e0b60208601866153da565b6001600160a01b0316815260208082019290925260409081016000908120868401358252835281812086830135825290925290205481548110612e5057612e50615eec565b90600052602060002090600c0201905081606001358160030181905550816080016020810190612e8091906155f3565b60048201805460ff191691151591909117905560a0820135600582015560c0820135600682015560e08201356007820155610100820135600882015543600a82015561012090910135600990910155565b600d546001600160a01b03163314612ee857600080fd5b6001600160a01b038116612efb57600080fd5b600380546001600160a01b0319166001600160a01b03831690811790915560408051818152600491810191909152637573646360e01b60608201526020810191909152600080516020615f2683398151915290608001610d70565b3360009081526021602052604090205460ff16612f7257600080fd5b612f7d83838361410c565b612f8657505050565b6001600160a01b0383166000908152601760209081526040808320858452825280832084845290915290205460108054612fc290600190615e35565b81548110612fd257612fd2615eec565b90600052602060002090600c020160108281548110612ff357612ff3615eec565b6000918252602082208354600c9092020180546001600160a01b0319166001600160a01b03909216919091178155600180840154908201556002808401549082015560038084015490820155600480840154908201805460ff909216151560ff199092169190911790556005808401549082015560068084015490820155600780840154908201556008808401549082015560098084015490820155600a8084015490820155600b928301549201919091556010805483926017929091849081106130c0576130c0615eec565b60009182526020808320600c909202909101546001600160a01b031683528201929092526040018120601080549192918590811061310057613100615eec565b90600052602060002090600c020160010154815260200190815260200160002060006010848154811061313557613135615eec565b600091825260208083206002600c90930201919091015483528281019390935260409182018120939093556001600160a01b0387168352601782528083208684528252808320858452909152812055601080548061319557613195615ed6565b60008281526020808220600c6000199094019384020180546001600160a01b031916815560018101839055600281018390556003810183905560048101805460ff191690556005810183905560068101839055600781018390556008810183905560098101839055600a8101839055600b01829055919092556001600160a01b0386168252601881526040808320868452909152812080549161323783615e78565b919050555050505050565b600d546001600160a01b0316331461325957600080fd5b6001600160a01b03811661326c57600080fd5b600480546001600160a01b0319166001600160a01b03831690811790915560408051818152600c918101919091526b3b30bab63a26b0b730b3b2b960a11b60608201526020810191909152600080516020615f2683398151915290608001610d70565b61333e60405180610180016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61334984848461410c565b61335257600080fd5b6001600160a01b0384166000908152601760209081526040808320868452825280832085845290915290205460108054909190811061339357613393615eec565b60009182526020918290206040805161018081018252600c90930290910180546001600160a01b0316835260018101549383019390935260028301549082015260038201546060820152600482015460ff1615156080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b9091015461016082015290509392505050565b601b602052816000526040600020818154811061345c57600080fd5b90600052602060002001600091509150505481565b600080600060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156134c257600080fd5b505afa1580156134d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fa919061562d565b9050613504614056565b846008546135129190615ddc565b1115801561361a575060405163232683a960e21b8152600481018690526001600160a01b03821690638c9a0ea49060240160206040518083038186803b15801561355b57600080fd5b505afa15801561356f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135939190615946565b604051635e4f8f5960e01b81526004810187905285906001600160a01b03841690635e4f8f599060240160206040518083038186803b1580156135d557600080fd5b505afa1580156135e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360d9190615946565b6136179190615ddc565b11155b801561362c575061362c8584866117ac565b80156136d857506040516315b954db60e21b8152600481018690526001600160a01b038216906356e5536c9060240160206040518083038186803b15801561367357600080fd5b505afa158015613687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ab9190615946565b846136cb886001600160a01b031660009081526016602052604090205490565b6136d59190615ddc565b11155b9150505b949350505050565b3360009081526021602052604090205460ff1661370057600080fd5b600082815260196020908152604080832081516101e08101835281546001600160a01b031660808201818152600184015460a0840152600284015460c0840152600384015460e084015260048401546101008401526005840154610120840152600684015460ff1615156101408401526007840154610160840152600884015461018084015260098401546101a0840152600a8401546101c08401528252600b83015482860152600c83015482850152600d909201546060820152908452601b909252822090915b81548110156139b257848282815481106137e4576137e4615eec565b906000526020600020015414156139aa57831561383a578251516001600160a01b03166000908152601c6020908152604080832086518301518452909152812080549161383083615e78565b91905055506138b5565b8251516001600160a01b03166000908152601d6020908152604080832086518301518452909152812080549161386f83615e78565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff191690555b815482906138c590600190615e35565b815481106138d5576138d5615eec565b90600052602060002001548282815481106138f2576138f2615eec565b90600052602060002001819055508180548061391057613910615ed6565b600082815260208082208301600019908101839055909201909255868252601990526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560068101805460ff19169055600781018290556008810182905560098101829055600a8101829055600b8101829055600c8101829055600d0155506139b6915050565b6001016137c8565b5050505b5050565b336000818152602260205260409020546003546139e2926001600160a01b0390911691614a93565b33600081815260226020908152604091829020548251938452908301527f8ec2a9ed236322c625516e43eab59fcb8145e38ee8d489a28d0aacaeecc298d6910160405180910390a133600090815260226020526040812055565b6001600160a01b038116613a4f57600080fd5b600c546001600160a01b03163314613a9a5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa1a0a62622a960911b6044820152606401611294565b600c546001600160a01b03828116911614613ae85760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa1a0a62622a960911b6044820152606401611294565b600c54600d80546001600160a01b0319166001600160a01b039092169182179055604051600080516020615f2683398151915291610d709160408082526003908201526233b7bb60e91b60608201526001600160a01b0391909116602082015260800190565b600d546001600160a01b03163314613b6557600080fd5b600f54600b54600354613b86926001600160a01b0391821692911690614a93565b600e54600a54600354613ba7926001600160a01b0391821692911690614a93565b600f54600b54600e54600a54604080516001600160a01b03958616815260208101949094529390911682840152606082015290517ff4e6bc0a6951927d4db8490fb63528b3c4ccb43865870fe4e3db7a090cbb14b19181900360800190a16000600a819055600b55565b600081815260208052604081206001611d7a565b600d546001600160a01b03163314613c3c57600080fd5b6001600160a01b038116613c4f57600080fd5b600e80546001600160a01b0319166001600160a01b03831690811790915560408051818152600391810191909152623232bb60e91b60608201526020810191909152600080516020615f2683398151915290608001610d70565b613cb16152f2565b5060009081526019602090815260409182902082516101e08101845281546001600160a01b031660808201908152600183015460a0830152600283015460c0830152600383015460e083015260048301546101008301526005830154610120830152600683015460ff1615156101408301526007830154610160830152600883015461018083015260098301546101a0830152600a8301546101c08301528152600b82015492810192909252600c81015492820192909252600d90910154606082015290565b3360009081526021602052604090205460ff16613d9357600080fd5b6000818152601a6020908152604091829020845181546001600160a01b0319166001600160a01b03909116178155908401516001808301919091559184015160028201556060840151600380830180548795919260ff1990911691908490811115613e0057613e00615ec0565b021790555050505050565b3360009081526021602052604090205460ff16613e2757600080fd5b8251516001600160a01b039081166000908152601b602090815260408083208054600180820183559185528385200187905586845260198352928190208751805182546001600160a01b0319169616959095178155918401519282019290925582820151600282015560608084015160038301556080840151600483015560a0840151600583015560c084015160068301805460ff191691151591909117905560e084015160078301556101008401516008830155610120840151600983015561014090930151600a82015590850151600c82015590840151600d82015543600b909101558015613f51578251516001600160a01b03166000908152601c60209081526040808320865183015184529091528120805491613f4783615e8f565b9190505550505050565b8251516001600160a01b03166000908152601d60209081526040808320865183015184529091528120805491613f8683615e8f565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff19166001179055505050565b600d546001600160a01b03163314613fea57600080fd5b60008111613ff757600080fd5b6006819055604080518181526010918101919091526f36b0bc2a3930b232b9a832b92830b4b960811b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610d70565b600060646402540be400600954600460009054906101000a90046001600160a01b03166001600160a01b0316637b78d7826040518163ffffffff1660e01b815260040160206040518083038186803b1580156140b157600080fd5b505afa1580156140c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e99190615946565b6140f39190615e16565b6140fd9190615df4565b6141079190615df4565b905090565b60105460009061411e57506000611a9d565b6001600160a01b0384166000908152601760209081526040808320868452825280832085845290915281205460108054909190811061415f5761415f615eec565b60009182526020909120600c9091020180549091506001600160a01b0386811691161480156141915750838160010154145b80156141a05750828160020154145b95945050505050565b600d546001600160a01b031633146141c057600080fd5b60098190556040805181815260069181019190915265074766c4361760d41b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610d70565b601e602052816000526040600020818154811061423157600080fd5b6000918252602090912001546001600160a01b03169150829050565b600d546001600160a01b0316331461426457600080fd5b6000811161427157600080fd5b600781905560408051818152601691810191909152756d617850656e64696e674d61726b65744f726465727360501b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610d70565b3360009081526021602052604090205460ff166142f257600080fd5b80516001600160a01b03166000908152601360209081526040808320828501518452825280832081850151845290915290206007810154614331575050565b606082015160038201556080820151600482015560a0820151600582015560e082015160079091015550565b60008181526020805260408120600181015490546111ee9190615ddc565b3360009081526021602052604090205460ff1661439757600080fd5b6143a9836000015184602001516111f4565b604084810191825284516001600160a01b0390811660009081526013602090815283822081890180518452908252848320865184528252848320895181546001600160a01b031916951694851781558151600182015595516002870155606089015160038701556080890151600487015560a0890151600587015560c089015160068701805460ff191691151591909117905560e0890151600787015561010089015160088701556101208901516009870155610140890151600a909601959095559181526015825282812093518152929052812080549161448a83615e8f565b909155505082516001600160a01b031660009081526015602090815260408083208287015184529091529020546001141561452b57602083810180516000908152601e80845260408083205488516001600160a01b039081168552601f87528285208651865287528285209190915593518352908452812086518154600181018355918352939091200180546001600160a01b031916929091169190911790555b60006060830181815284516001600160a01b0390811683526014602090815260408085208289015186528252808520818901518652825280852087518155828801516001820155818801516002820155935160038501805460ff19169115159190911790556080870151600494850155845481516335b03c1760e01b8152915162010000909104909316936335b03c17938282019392909190829003018186803b1580156145d857600080fd5b505afa1580156145ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614610919061562d565b84516020860151604080880151905163503a202f60e01b81526001600160a01b03938416600482015260248101929092526044820152841515606482015291925082169063503a202f90608401600060405180830381600087803b15801561467757600080fd5b505af115801561468b573d6000803e3d6000fd5b505050506117a684600001518560200151856000015160018860c001518960a00151614b12565b600d546001600160a01b031633146146c957600080fd5b6001600160a01b0381166146dc57600080fd5b6001600160a01b038116600081815260216020908152604091829020805460ff1916600117905590519182527fb692fa98cbec9bd705572b4c7e0927e3f7698e9fe526dcef6f40f3d4d4980ca39101610d70565b3360009081526021602052604090205460ff1661474c57600080fd5b61475e81600001518260200151611aa4565b604082019081524361014083019081526010805460018082018355600083905285517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672600c90930292830180546001600160a01b0319166001600160a01b0390921691909117905560208601517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67383015593517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67482015560608501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67582015560808501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6768201805460ff191691151591909117905560a08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67782015560c08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67882015560e08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798201556101008501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8201556101208501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b82015591517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67c8301556101608401517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67d90920191909155546149a39190615e35565b81516001600160a01b03908116600090815260176020908152604080832082870180518552908352818420828801518552835281842095909555855190931682526018815282822093518252929092528120805491614a0183615e8f565b919050555050565b600d546001600160a01b03163314614a2057600080fd5b6001600160a01b038116614a3357600080fd5b600280546001600160a01b0319166001600160a01b038316908117909155604080518181526009918101919091526863616c6c6261636b7360b81b60608201526020810191909152600080516020615f2683398151915290608001610d70565b6040516001600160a01b03831660248201526044810182905261252d90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261507a565b60006402540be400614b088385615e16565b611a9d9190615df4565b600082614b20576001614b23565b60005b6000878152602080526040902060ff91909116915084614b7557808260028110614b4f57614b4f615eec565b01548611614b5d5785614b72565b808260028110614b6f57614b6f615eec565b01545b95505b84614b9e5785818360028110614b8d57614b8d615eec565b0154614b999190615e35565b614bbd565b85818360028110614bb157614bb1615eec565b0154614bbd9190615ddc565b818360028110614bcf57614bcf615eec565b015584614be95785600854614be49190615e35565b614bf7565b85600854614bf79190615ddc565b60085584614c28576001600160a01b038816600090815260166020526040902054614c23908790615e35565b614c4c565b6001600160a01b038816600090815260166020526040902054614c4c908790615ddc565b6001600160a01b0389166000908152601660209081526040808320939093558982526023815282822043835290522054614c87908790615ddc565b6000888152602360209081526040808320438452825280832093909355815483516335b03c1760e01b815293519293620100009091046001600160a01b0316926335b03c1792600480840193919291829003018186803b158015614cea57600080fd5b505afa158015614cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d22919061562d565b6040516304d735cf60e51b8152600481018a90529091506001600160a01b03821690639ae6b9e09060240160206040518083038186803b158015614d6557600080fd5b505afa158015614d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d9d9190615946565b60008981526023602090815260408083204384529091529020541115614e055760405162461bcd60e51b815260206004820152601760248201527f424c4f434b5f4f495f4c494d49545f42524541434845440000000000000000006044820152606401611294565b604051633c44d0a360e01b8152600481018990526001600160a01b03821690633c44d0a39060240160206040518083038186803b158015614e4557600080fd5b505afa158015614e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e7d9190615946565b60021415614fe557604051636dc37de360e01b8152600481018990526000906001600160a01b03831690636dc37de39060240160206040518083038186803b158015614ec857600080fd5b505afa158015614edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f009190615610565b9050600086614f10576000614f13565b60015b60ff1690508115614f825787614f48578860118660028110614f3757614f37615eec565b0154614f439190615e35565b614f68565b8860118660028110614f5c57614f5c615eec565b0154614f689190615ddc565b60118660028110614f7b57614f7b615eec565b0155614fe2565b87614fac578860118260028110614f9b57614f9b615eec565b0154614fa79190615e35565b614fcc565b8860118260028110614fc057614fc0615eec565b0154614fcc9190615ddc565b60118260028110614fdf57614fdf615eec565b01555b50505b604080518715158152861515602082015290810189905260608101889052608081018590527fcadf7ed5daaec5b514975523d89eb6ebbbd5d892bc7a5bbf71c5fca0219754579060a00160405180910390a1505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526117a69085906323b872dd60e01b90608401614abf565b60006150cf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661514f9092919063ffffffff16565b90508051600014806150f05750808060200190518101906150f09190615610565b61252d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611294565b60606136dc848460008585600080866001600160a01b031685876040516151769190615b1a565b60006040518083038185875af1925050503d80600081146151b3576040519150601f19603f3d011682016040523d82523d6000602084013e6151b8565b606091505b50915091506151c9878383876151d4565b979650505050505050565b60608315615240578251615239576001600160a01b0385163b6152395760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611294565b50816136dc565b6136dc83838151156152555781518083602001fd5b8060405162461bcd60e51b81526004016112949190615c2f565b60405180604001604052806002906020820280368337509192915050565b60405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528061530561528d565b81526020016000815260200160008152602001600081525090565b803561532b81615f02565b919050565b803561532b81615f17565b6000610160828403121561534e57600080fd5b615356615d10565b905061536182615320565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a08201526153a160c08301615330565b60c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b6000602082840312156153ec57600080fd5b8135611a9d81615f02565b60008060006060848603121561540c57600080fd5b833561541781615f02565b9250602084013561542781615f02565b929592945050506040919091013590565b6000806040838503121561544b57600080fd5b823561545681615f02565b946020939093013593505050565b60008060006060848603121561547957600080fd5b833561548481615f02565b95602085013595506040909401359392505050565b600080600080608085870312156154af57600080fd5b84356154ba81615f02565b9350602085013592506040850135915060608501356154d881615f17565b939692955090935050565b60008060008060008060c087890312156154fc57600080fd5b863561550781615f02565b95506020870135945060408701359350606087013561552581615f17565b9250608087013561553581615f17565b915060a087013561554581615f17565b809150509295509295509295565b600080600080600080600060e0888a03121561556e57600080fd5b873561557981615f02565b96506020880135955060408801359450606088013561559781615f17565b9699959850939660808101359560a0820135955060c0909101359350915050565b600080600080608085870312156155ce57600080fd5b84356155d981615f02565b966020860135965060408601359560600135945092505050565b60006020828403121561560557600080fd5b8135611a9d81615f17565b60006020828403121561562257600080fd5b8151611a9d81615f17565b60006020828403121561563f57600080fd5b8151611a9d81615f02565b6000610180828403121561565d57600080fd5b50919050565b6000610180828403121561567657600080fd5b61567e615d48565b61568783615320565b81526020830135602082015260408301356040820152606083013560608201526156b360808401615330565b608082015260a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160928301359281019290925250919050565b60006080828403121561571d57600080fd5b6040516080810181811067ffffffffffffffff8211171561574e57634e487b7160e01b600052604160045260246000fd5b6040528251815260208301516009811061576757600080fd5b602082015260408381015190820152606083015161578481615f17565b60608201529392505050565b60008082840360a08112156157a457600080fd5b60808112156157b257600080fd5b506157bb615d7a565b83356157c681615f02565b8082525060208401356020820152604084013560408201526060840135600481106157f057600080fd5b6060820152946080939093013593505050565b600080600083850361020081121561581a57600080fd5b6101c08082121561582a57600080fd5b615832615d7a565b915061583e878761533b565b8252610160860135602083015261018086013560408301526101a0860135606083015290935084013591506101e084013561587881615f17565b809150509250925092565b6000610160828403121561589657600080fd5b611a9d838361533b565b60008060008385036102208112156158b757600080fd5b6158c1868661533b565b935060a061015f19820112156158d657600080fd5b506158df615dab565b610160850135815261018085013560208201526101a085013560408201526101c085013561590c81615f17565b60608201526101e08501356080820152915061020084013561587881615f17565b60006020828403121561593f57600080fd5b5035919050565b60006020828403121561595857600080fd5b5051919050565b60008060006060848603121561597457600080fd5b83519250602084015161598681615f02565b80925050604084015190509250925092565b600080604083850312156159ab57600080fd5b8235915060208301356159bd81615f17565b809150509250929050565b6000806000606084860312156159dd57600080fd5b83359250602084013561542781615f17565b60008060408385031215615a0257600080fd5b50508035926020909101359150565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151615a4f608084018215159052565b5060a0818101519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151615aed60c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b60008251615b2c818460208701615e4c565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015615b775783516001600160a01b031683529284019291840191600101615b52565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015615b7757615bb2838551615a11565b928401926101809290920191600101615b9f565b60408101818360005b6002811015615bee578151835260209283019290910190600101615bcf565b50505092915050565b6020808252825182820181905260009190848201906040850190845b81811015615b7757835183529284019291840191600101615c13565b6020815260008251806020840152615c4e816040850160208701615e4c565b601f01601f19169190910160400192915050565b61018081016111ee8284615a11565b81516001600160a01b0316815260208083015190820152604080830151908201526060820151608082019060048110615cba57634e487b7160e01b600052602160045260246000fd5b8060608401525092915050565b60006101c082019050615cdb828451615a9b565b602083015161016083015260408301516101808301526060909201516101a09091015290565b61016081016111ee8284615a9b565b604051610160810167ffffffffffffffff81118282101715615d4257634e487b7160e01b600052604160045260246000fd5b60405290565b604051610180810167ffffffffffffffff81118282101715615d4257634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715615d4257634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715615d4257634e487b7160e01b600052604160045260246000fd5b60008219821115615def57615def615eaa565b500190565b600082615e1157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615e3057615e30615eaa565b500290565b600082821015615e4757615e47615eaa565b500390565b60005b83811015615e67578181015183820152602001615e4f565b838111156117a65750506000910152565b600081615e8757615e87615eaa565b506000190190565b6000600019821415615ea357615ea3615eaa565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461240257600080fd5b801515811461240257600080fdfe943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee44422781a264697066735822122082e28b38e1bcc96710c5012f26a6c1bc3afdc27749c311b36aa517eb1f15c0fa64736f6c63430008070033","sourceMap":"553:37890:113:-:0;;;3052:53;;;;;;;;;-1:-1:-1;3076:22:113;:20;:22::i;:::-;553:37890;;5939:280:24;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:24;;216:2:154;5998:66:24;;;198:21:154;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:154;;;338:37;5998:66:24;;;;;;392:19:154;5998:66:24;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:24;-1:-1:-1;6125:30:24;;;;;;6174:28;;;564:36:154;;;6174:28:24;;;;;;552:2:154;6174:28:24;;;6074:139;5939:280::o;422:184:154:-;553:37890:113;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106104c15760003560e01c80639c8912f111610278578063d477f05f1161015c578063eda00d54116100ce578063f65d9dbe11610092578063f65d9dbe14610c6a578063f7b3c6fd14610c73578063f823e2ae14610c9c578063fdb153e214610caf578063fe0fc8d614610cc2578063ff12673a14610cd557600080fd5b8063eda00d5414610be0578063f0cb9b1114610c11578063f169429214610c24578063f41450b514610c37578063f4ccf54e14610c4a57600080fd5b8063dc6638f411610120578063dc6638f414610b7b578063dcdf339a14610b83578063dd0290e214610b96578063e3cbe3a714610ba9578063ec44acf214610bbc578063ecf56a1f14610bcd57600080fd5b8063d477f05f14610b0f578063d5dabd7514610b22578063d775d54814610b42578063d8137fe814610b55578063dc2123ff14610b6857600080fd5b8063b543503e116101f5578063c45cceb6116101b9578063c45cceb614610ab3578063cab9458014610ac6578063cda3948f14610ad9578063cfad57a214610ae1578063d294f09314610af4578063d45bc33214610afc57600080fd5b8063b543503e14610a19578063b7682d5414610a2c578063b87cb1da14610a57578063b8878a2c14610a80578063bcc9f1d314610aa057600080fd5b8063a553906c1161023c578063a553906c146109a2578063ae8ac94e146109b5578063b222cb38146109c8578063b3e089a2146109f3578063b4b0f56714610a0657600080fd5b80639c8912f11461091e5780639cb87f23146109495780639e5914da1461095c578063a35441811461096f578063a3a80ffe1461098257600080fd5b806350bb2578116103aa5780637fdb96f31161031c5780638b83351a116102e05780638b83351a1461084e5780638c8ff1d5146108615780638ecf3f5a146108b857806390d112b9146108cd57806391cca3db146108e057806397e7995a146108f357600080fd5b80637fdb96f3146108025780638049fde7146108155780638129fc1c1461081e5780638a0bd702146108265780638a4adf241461083b57600080fd5b80636817f5761161036e5780636817f5761461075e5780636b2d653f146107715780636c7be83a146107995780636d81d981146107b95780637ada8483146107dc5780637eed1d30146107ef57600080fd5b806350bb2578146106e55780635b621e32146106f85780635c76ac9e1461070b5780635fbfe8cc1461072b57806366ac654d1461074b57600080fd5b806332149592116104435780633f64d036116104075780633f64d03614610655578063422a4214146106685780634415b3691461068b578063443295dc146106b657806344d44f5a146106bf5780635070e837146106d257600080fd5b806332149592146105b157806334df8540146106275780633c6d6fa0146106305780633e413bee146106395780633f23fa1a1461064c57600080fd5b80631441a5a91161048a5780631441a5a91461053e5780631c8636b414610551578063292c1617146105725780632a9a9667146105855780633078fff51461059857600080fd5b8062b12783146104c657806305f3c6ad146104f05780630d32c907146105055780630fe1c91f1461051857806312d43a511461052b575b600080fd5b6002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6105036104fe3660046153da565b610ce8565b005b61050361051336600461592d565b610d7b565b6105036105263660046159ef565b611179565b600d546104d3906001600160a01b031681565b6005546104d3906001600160a01b031681565b61056461055f366004615438565b6111c9565b6040519081526020016104e7565b610564610580366004615438565b6111f4565b6105646105933660046154e3565b6112ac565b6000546104d3906201000090046001600160a01b031681565b6105c46105bf36600461592d565b61163f565b604080516001600160a01b03909d168d5260208d019b909b52998b019890985260608a0196909652931515608089015260a088019290925260c087015260e0860152610100850152610120840152610140830152610160820152610180016104e7565b610564600a5481565b610564600b5481565b6003546104d3906001600160a01b031681565b61056460095481565b6105036106633660046155b8565b6116bd565b61067b6106763660046159c8565b6117ac565b60405190151581526020016104e7565b610564610699366004615438565b601f60209081526000928352604080842090915290825290205481565b61056460085481565b6105646106cd366004615438565b611aa4565b6105036106e03660046153da565b611b2c565b6105036106f33660046153da565b611bcd565b6105036107063660046153da565b611c19565b61071e6107193660046153da565b611c94565b6040516104e79190615bf7565b61073e61073936600461592d565b611d00565b6040516104e79190615b36565b600c546104d3906001600160a01b031681565b61056461076c36600461592d565b611d6b565b61078461077f366004615553565b611d82565b604080519283526020830191909152016104e7565b6107ac6107a736600461592d565b612004565b6040516104e79190615c71565b61067b6107c73660046153da565b60216020526000908152604090205460ff1681565b6105036107ea36600461592d565b6120a8565b6105646107fd36600461592d565b6120fc565b6105036108103660046155b8565b612113565b61056460075481565b6105036122d1565b61082e612405565b6040516104e79190615b83565b6004546104d3906001600160a01b031681565b61050361085c3660046153f7565b6124e9565b61087461086f366004615464565b61254a565b6040516104e79190600060a0820190508251825260208301516020830152604083015160408301526060830151151560608301526080830151608083015292915050565b6108c06125ed565b6040516104e79190615bc6565b6105036108db366004615464565b612627565b600e546104d3906001600160a01b031681565b610564610901366004615438565b601860209081526000928352604080842090915290825290205481565b61056461092c366004615438565b601c60209081526000928352604080842090915290825290205481565b6105646109573660046159ef565b612a09565b61050361096a3660046153da565b612a2d565b61050361097d3660046155b8565b612ab6565b610995610990366004615464565b612c74565b6040516104e79190615d01565b6105036109b03660046153da565b612d2d565b6105036109c336600461564a565b612db5565b6105646109d63660046159ef565b602360209081526000928352604080842090915290825290205481565b610503610a013660046153da565b612ed1565b610503610a14366004615464565b612f56565b610503610a273660046153da565b613242565b610564610a3a366004615438565b601d60209081526000928352604080842090915290825290205481565b610564610a653660046153da565b6001600160a01b031660009081526016602052604090205490565b610a93610a8e366004615464565b6132cf565b6040516104e79190615c62565b610564610aae366004615438565b613440565b61067b610ac1366004615499565b613471565b610503610ad4366004615998565b6136e4565b6105036139ba565b610503610aef3660046153da565b613a3c565b610503613b4e565b610564610b0a36600461592d565b613c11565b610503610b1d3660046153da565b613c25565b610b35610b3036600461592d565b613ca9565b6040516104e79190615cc7565b610503610b50366004615790565b613d77565b610503610b63366004615803565b613e0b565b610503610b7636600461592d565b613fd3565b610564614056565b61067b610b91366004615464565b61410c565b610503610ba436600461592d565b6141a9565b6104d3610bb73660046159ef565b614215565b6001546001600160a01b03166104d3565b610503610bdb36600461592d565b61424d565b610564610bee366004615464565b601760209081526000938452604080852082529284528284209052825290205481565b610503610c1f366004615883565b6142d6565b610564610c3236600461592d565b61435d565b610503610c453660046158a0565b61437b565b610564610c583660046153da565b60226020526000908152604090205481565b61056460065481565b610564610c813660046153da565b6001600160a01b03166000908152601b602052604090205490565b610503610caa3660046153da565b6146b2565b610503610cbd366004615663565b614730565b610503610cd03660046153da565b614a09565b600f546104d3906001600160a01b031681565b600d546001600160a01b03163314610cff57600080fd5b6001600160a01b038116610d1257600080fd5b600f80546001600160a01b0319166001600160a01b03831690811790915560408051818152600b918101919091526a676f76547265617375727960a81b60608201526020810191909152600080516020615f26833981519152906080015b60405180910390a150565b3360009081526021602052604090205460ff16610d9757600080fd5b6000805460405163d09ef24160e01b815260048101849052620100009091046001600160a01b03169063d09ef2419060240160806040518083038186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e19919061570b565b602090810151600084815260198352604080822081516101e08101835281546001600160a01b031660808201818152600184015460a0840152600284015460c0840152600384015460e084015260048401546101008401526005840154610120840152600684015460ff1615156101408401526007840154610160840152600884015461018084015260098401546101a0840152600a8401546101c08401528252600b83015482880152600c83015482850152600d909201546060820152908352601b90945281209193505b81548110156111015784828281548110610f0157610f01615eec565b906000526020600020015414156110ef576000846008811115610f2657610f26615ec0565b1480610f4357506006846008811115610f4157610f41615ec0565b145b15610f87578251516001600160a01b03166000908152601c60209081526040808320865183015184529091528120805491610f7d83615e78565b9190505550611002565b8251516001600160a01b03166000908152601d60209081526040808320865183015184529091528120805491610fbc83615e78565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff191690555b8154829061101290600190615e35565b8154811061102257611022615eec565b906000526020600020015482828154811061103f5761103f615eec565b90600052602060002001819055508180548061105d5761105d615ed6565b600082815260208082208301600019908101839055909201909255868252601990526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560068101805460ff19169055600781018290556008810182905560098101829055600a8101829055600b8101829055600c8101829055600d01555b806110f981615e8f565b915050610ee5565b5081518051608090910151600354611124926001600160a01b0390911691614a93565b8151805160209182015160408051888152938401919091526001600160a01b03909116917f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c65910160405180910390a250505050565b3360009081526021602052604090205460ff1661119557600080fd5b81600a60008282546111a79190615ddc565b9250508190555080600b60008282546111c09190615ddc565b90915550505050565b6001600160a01b03821660009081526015602090815260408083208484529091529020545b92915050565b6000805b6006548110156112a5576001600160a01b0384166000908152601360209081526040808320868452825280832084845290915290206007015461123d578091506112a5565b60065461124b826001615ddc565b148015611256575081155b1561129d5760405162461bcd60e51b815260206004820152601260248201527113505617d51490511154d7d4915050d2115160721b60448201526064015b60405180910390fd5b6001016111f8565b5092915050565b3360009081526021602052604081205460ff166112c857600080fd5b60008054604051633a100f4d60e01b8152600481018990526024810188905284151560448201526064916402540be40091620100009091046001600160a01b031690633a100f4d90840160206040518083038186803b15801561132a57600080fd5b505afa15801561133e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113629190615946565b61136c9089615e16565b6113769190615df4565b6113809190615df4565b90508361139557611392600282615df4565b90505b60006113a8898389600080600080611d82565b6002546040805163c4493e3760e01b815290519396509193506000926064926001600160a01b039092169163c4493e3791600480830192602092919082900301818887803b1580156113f957600080fd5b505af115801561140d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114319190615946565b61143c906064615e35565b6114468487615e35565b6114509190615e16565b61145a9190615df4565b9050600060016064600260009054906101000a90046001600160a01b03166001600160a01b031663c4493e376040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea9190615946565b6114f48689615e35565b6114fe9190615e16565b6115089190615df4565b901c9050871561152f5760045460035461152f916001600160a01b03918216911684614a93565b60048054604051635b898b7560e01b8152918201849052600060248301526001600160a01b031690635b898b7590604401600060405180830381600087803b15801561157a57600080fd5b505af115801561158e573d6000803e3d6000fd5b5050505080600b60008282546115a49190615ddc565b90915550819050826115b68588615e35565b6115c09190615e35565b6115ca9190615e35565b600a60008282546115db9190615ddc565b9091555050604080516001600160a01b038d168152602081018c9052871515818301526060810187905290517f9921a6a6258398cbe136bac24f80d97ba2b5e4ab8cf2b2d27232d2ae1c78cdd39181900360800190a1505050509695505050505050565b6010818154811061164f57600080fd5b60009182526020909120600c9091020180546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b909b01546001600160a01b03909a169b5097999698959760ff9095169693959294919390928c565b3360009081526021602052604090205460ff166116d957600080fd5b6001600160a01b0384166000818152601360209081526040808320878452825280832086845282528083209383526014825280832087845282528083208684529091529020600782015461172e5750506117a6565b828260030160008282546117429190615e35565b90915550506007820154611757908490614af6565b81600001600082825461176a9190615e35565b925050819055506117a3868661178d856007015487614af690919063ffffffff16565b6006860154600587015460009160ff1690614b12565b50505b50505050565b600080600060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156117fd57600080fd5b505afa158015611811573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611835919061562d565b60008681526020805260408120600181015490549293509091859161185991615ddc565b6118639190615ddc565b9050841561198d57604051635970d96b60e11b8152600481018790526001600160a01b0383169063b2e1b2d69060240160206040518083038186803b1580156118ab57600080fd5b505afa1580156118bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e39190615946565b81111580156119845750604051638769886960e01b8152600481018790526001600160a01b0383169063876988699060240160206040518083038186803b15801561192d57600080fd5b505afa158015611941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119659190615946565b6000878152602080526040812086915b01546119819190615ddc565b11155b92505050611a9d565b604051635970d96b60e11b8152600481018790526001600160a01b0383169063b2e1b2d69060240160206040518083038186803b1580156119cd57600080fd5b505afa1580156119e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a059190615946565b8111158015611984575060405163108c358760e01b8152600481018790526001600160a01b0383169063108c35879060240160206040518083038186803b158015611a4f57600080fd5b505afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190615946565b6000878152602080526040902085906001611975565b9392505050565b6000805b6006548110156112a557611abd84848361410c565b611ac9578091506112a5565b600654611ad7826001615ddc565b148015611ae2575081155b15611b245760405162461bcd60e51b815260206004820152601260248201527113505617d31253525514d7d4915050d2115160721b6044820152606401611294565b600101611aa8565b600d546001600160a01b03163314611b4357600080fd5b6001600160a01b038116611b5657600080fd5b600080546001600160a01b038316620100000262010000600160b01b0319909116179055604051600080516020615f2683398151915290610d709083906040808252600f908201526e383934b1b2a0b3b3b932b3b0ba37b960891b60608201526001600160a01b0391909116602082015260800190565b600d546001600160a01b03163314611be457600080fd5b6001600160a01b038116611bf757600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b03163314611c3057600080fd5b6001600160a01b038116611c4357600080fd5b6001600160a01b038116600081815260216020908152604091829020805460ff1916905590519182527ff9cf924d7d98e6e0a27ec523cd7214b0bbdfaba197018b33b41a702f5238190e9101610d70565b6001600160a01b0381166000908152601b6020908152604091829020805483518184028101840190945280845260609392830182828015611cf457602002820191906000526020600020905b815481526020019060010190808311611ce0575b50505050509050919050565b6000818152601e6020908152604091829020805483518184028101840190945280845260609392830182828015611cf457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d425750505050509050919050565b60008181526020805260408120815b015492915050565b33600090815260216020526040812054819060ff16611da057600080fd5b8515611ec75760008060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611df557600080fd5b505afa158015611e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2d919061562d565b604051631dc6750f60e21b81526004810188905260248101869052604481018790529091506000906001600160a01b03831690637719d43c9060640160206040518083038186803b158015611e8157600080fd5b505afa158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190615946565b935060009250611ff8915050565b60055460405163ce18b98d60e01b81526001600160a01b038b81166004830152602482018b9052600092839283929091169063ce18b98d90604401606060405180830381600087803b158015611f1c57600080fd5b505af1158015611f30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f54919061595f565b6001600160a01b038216600090815260226020526040812080549497509295509093508392611f84908490615ddc565b9091555050604080516001600160a01b03808f168252841660208201529081018b905260608101849052608081018c905260a0810182905260c081018990527f92133a7a27eec9c36de4706108b974c1be753637bfd864f0d14f4c500ffbcfae9060e00160405180910390a1919350909150505b97509795505050505050565b61202c6040805160808101825260008082526020820181905291810182905290606082015290565b6000828152601a6020908152604091829020825160808101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600380830154919291606084019160ff9091169081111561208e5761208e615ec0565b600381111561209f5761209f615ec0565b90525092915050565b3360009081526021602052604090205460ff166120c457600080fd5b6000908152601a6020526040812080546001600160a01b0319168155600181018290556002810191909155600301805460ff19169055565b6011816002811061210c57600080fd5b0154905081565b3360009081526021602052604090205460ff1661212f57600080fd5b6001600160a01b038416600081815260136020908152604080832087845282528083208684528252808320938352601482528083208784528252808320868452909152902060078201546121845750506117a6565b60008060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d357600080fd5b505afa1580156121e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220b919061562d565b600584015460078501546006860154600187015460405163daefa14560e01b8152600481019490945260248401929092526044830188905260ff161515606483015260848201529091506001600160a01b0382169063daefa1459060a40160206040518083038186803b15801561228157600080fd5b505afa158015612295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b99190615946565b60089093018390555043600190910155905050505050565b600054610100900460ff16158080156122f15750600054600160ff909116105b8061230b5750303b15801561230b575060005460ff166001145b61236e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611294565b6000805460ff191660011790558015612391576000805461ff0019166101001790555b600d80546001600160a01b03191633179055600560068190556007556123bd6402540be400605a615e16565b6009558015612402576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610d70565b50565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156124e05760008481526020908190206040805161018081018252600c860290920180546001600160a01b031683526001808201548486015260028201549284019290925260038101546060840152600481015460ff1615156080840152600581015460a0840152600681015460c0840152600781015460e084015260088101546101008401526009810154610120840152600a810154610140840152600b01546101608301529083529092019101612429565b50505050905090565b3360009081526021602052604090205460ff1661250557600080fd5b6001600160a01b0383163014156125325760035461252d906001600160a01b03168383614a93565b505050565b60035461252d906001600160a01b0316848484615042565b61257e6040518060a00160405280600081526020016000815260200160008152602001600015158152602001600081525090565b506001600160a01b03929092166000908152601460209081526040808320938352928152828220938252928352819020815160a08101835281548152600182015493810193909352600281015491830191909152600381015460ff161515606083015260040154608082015290565b6125f561526f565b60408051808201918290529060119060029082845b81548152602001906001019080831161260a575050505050905090565b3360009081526021602052604090205460ff1661264357600080fd5b6001600160a01b03831660008181526013602090815260408083208684528252808320858452825280832093835260148252808320868452825280832085845290915290206007820154612698575050505050565b8054600683015460058401546126b8928892889260009160ff1690614b12565b6001600160a01b038516600090815260156020908152604080832087845290915290205460011415612826576001600160a01b0385166000908152601f60209081526040808320878452825280832054601e9092529091208054819061272090600190615e35565b8154811061273057612730615eec565b9060005260206000200160009054906101000a90046001600160a01b031681838154811061276057612760615eec565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081601f60008385815481106127a5576127a5615eec565b60009182526020808320909101546001600160a01b03908116845283820194909452604092830182208b8352815282822094909455918a168252601f835280822089835290925290812055805481908061280157612801615ed6565b600082815260209020810160001990810180546001600160a01b031916905501905550505b6001600160a01b0380861660008181526013602090815260408083208984528252808320888452825280832080546001600160a01b031916815560018082018590556002808301869055600380840187905560048085018890556005850188905560068501805460ff19908116909155600786018990556008860189905560098601899055600a909501889055978752601486528487208d885286528487208c88528652848720878155928301879055908201869055810180549092169091558401839055825481516335b03c1760e01b8152915193956201000090910416936335b03c17938282019392909190829003018186803b15801561292857600080fd5b505afa15801561293c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612960919061562d565b60405163f80aa68b60e01b81526001600160a01b03888116600483015260248201889052604482018790529192509082169063f80aa68b90606401600060405180830381600087803b1580156129b557600080fd5b505af11580156129c9573d6000803e3d6000fd5b505050506001600160a01b038616600090815260156020908152604080832088845290915281208054916129fc83615e78565b9190505550505050505050565b602080528160005260406000208160028110612a2457600080fd5b01549150829050565b600d546001600160a01b03163314612a4457600080fd5b6001600160a01b038116612a5757600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040805181815260089181019190915267149959995c9c985b60c21b60608201526020810191909152600080516020615f2683398151915290608001610d70565b3360009081526021602052604090205460ff16612ad257600080fd5b6001600160a01b03841660008181526013602090815260408083208784528252808320868452825280832093835260148252808320878452825280832086845290915290206007820154612b275750506117a6565b60008060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7657600080fd5b505afa158015612b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bae919061562d565b600584015460078501546006860154600187015460405163109b8faf60e11b8152600481019490945260248401929092526044830188905260ff161515606483015260848201529091506001600160a01b038216906321371f5e9060a40160206040518083038186803b158015612c2457600080fd5b505afa158015612c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5c9190615946565b60099093018390555043600290910155905050505050565b612c7c61528d565b506001600160a01b039283166000908152601360209081526040808320948352938152838220928252918252829020825161016081018452815490941684526001810154918401919091526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460ff16151560c0830152600781015460e083015260088101546101008301526009810154610120830152600a015461014082015290565b600d546001600160a01b03163314612d4457600080fd5b6001600160a01b038116612d5757600080fd5b600180546001600160a01b0319166001600160a01b038316908117909155604080518181526007918101919091526674726164696e6760c81b60608201526020810191909152600080516020615f2683398151915290608001610d70565b3360009081526021602052604090205460ff16612dd157600080fd5b612df0612de160208301836153da565b8260200135836040013561410c565b612df75750565b60006010601782612e0b60208601866153da565b6001600160a01b0316815260208082019290925260409081016000908120868401358252835281812086830135825290925290205481548110612e5057612e50615eec565b90600052602060002090600c0201905081606001358160030181905550816080016020810190612e8091906155f3565b60048201805460ff191691151591909117905560a0820135600582015560c0820135600682015560e08201356007820155610100820135600882015543600a82015561012090910135600990910155565b600d546001600160a01b03163314612ee857600080fd5b6001600160a01b038116612efb57600080fd5b600380546001600160a01b0319166001600160a01b03831690811790915560408051818152600491810191909152637573646360e01b60608201526020810191909152600080516020615f2683398151915290608001610d70565b3360009081526021602052604090205460ff16612f7257600080fd5b612f7d83838361410c565b612f8657505050565b6001600160a01b0383166000908152601760209081526040808320858452825280832084845290915290205460108054612fc290600190615e35565b81548110612fd257612fd2615eec565b90600052602060002090600c020160108281548110612ff357612ff3615eec565b6000918252602082208354600c9092020180546001600160a01b0319166001600160a01b03909216919091178155600180840154908201556002808401549082015560038084015490820155600480840154908201805460ff909216151560ff199092169190911790556005808401549082015560068084015490820155600780840154908201556008808401549082015560098084015490820155600a8084015490820155600b928301549201919091556010805483926017929091849081106130c0576130c0615eec565b60009182526020808320600c909202909101546001600160a01b031683528201929092526040018120601080549192918590811061310057613100615eec565b90600052602060002090600c020160010154815260200190815260200160002060006010848154811061313557613135615eec565b600091825260208083206002600c90930201919091015483528281019390935260409182018120939093556001600160a01b0387168352601782528083208684528252808320858452909152812055601080548061319557613195615ed6565b60008281526020808220600c6000199094019384020180546001600160a01b031916815560018101839055600281018390556003810183905560048101805460ff191690556005810183905560068101839055600781018390556008810183905560098101839055600a8101839055600b01829055919092556001600160a01b0386168252601881526040808320868452909152812080549161323783615e78565b919050555050505050565b600d546001600160a01b0316331461325957600080fd5b6001600160a01b03811661326c57600080fd5b600480546001600160a01b0319166001600160a01b03831690811790915560408051818152600c918101919091526b3b30bab63a26b0b730b3b2b960a11b60608201526020810191909152600080516020615f2683398151915290608001610d70565b61333e60405180610180016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61334984848461410c565b61335257600080fd5b6001600160a01b0384166000908152601760209081526040808320868452825280832085845290915290205460108054909190811061339357613393615eec565b60009182526020918290206040805161018081018252600c90930290910180546001600160a01b0316835260018101549383019390935260028301549082015260038201546060820152600482015460ff1615156080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b9091015461016082015290509392505050565b601b602052816000526040600020818154811061345c57600080fd5b90600052602060002001600091509150505481565b600080600060029054906101000a90046001600160a01b03166001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156134c257600080fd5b505afa1580156134d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fa919061562d565b9050613504614056565b846008546135129190615ddc565b1115801561361a575060405163232683a960e21b8152600481018690526001600160a01b03821690638c9a0ea49060240160206040518083038186803b15801561355b57600080fd5b505afa15801561356f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135939190615946565b604051635e4f8f5960e01b81526004810187905285906001600160a01b03841690635e4f8f599060240160206040518083038186803b1580156135d557600080fd5b505afa1580156135e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360d9190615946565b6136179190615ddc565b11155b801561362c575061362c8584866117ac565b80156136d857506040516315b954db60e21b8152600481018690526001600160a01b038216906356e5536c9060240160206040518083038186803b15801561367357600080fd5b505afa158015613687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ab9190615946565b846136cb886001600160a01b031660009081526016602052604090205490565b6136d59190615ddc565b11155b9150505b949350505050565b3360009081526021602052604090205460ff1661370057600080fd5b600082815260196020908152604080832081516101e08101835281546001600160a01b031660808201818152600184015460a0840152600284015460c0840152600384015460e084015260048401546101008401526005840154610120840152600684015460ff1615156101408401526007840154610160840152600884015461018084015260098401546101a0840152600a8401546101c08401528252600b83015482860152600c83015482850152600d909201546060820152908452601b909252822090915b81548110156139b257848282815481106137e4576137e4615eec565b906000526020600020015414156139aa57831561383a578251516001600160a01b03166000908152601c6020908152604080832086518301518452909152812080549161383083615e78565b91905055506138b5565b8251516001600160a01b03166000908152601d6020908152604080832086518301518452909152812080549161386f83615e78565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff191690555b815482906138c590600190615e35565b815481106138d5576138d5615eec565b90600052602060002001548282815481106138f2576138f2615eec565b90600052602060002001819055508180548061391057613910615ed6565b600082815260208082208301600019908101839055909201909255868252601990526040812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560068101805460ff19169055600781018290556008810182905560098101829055600a8101829055600b8101829055600c8101829055600d0155506139b6915050565b6001016137c8565b5050505b5050565b336000818152602260205260409020546003546139e2926001600160a01b0390911691614a93565b33600081815260226020908152604091829020548251938452908301527f8ec2a9ed236322c625516e43eab59fcb8145e38ee8d489a28d0aacaeecc298d6910160405180910390a133600090815260226020526040812055565b6001600160a01b038116613a4f57600080fd5b600c546001600160a01b03163314613a9a5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa1a0a62622a960911b6044820152606401611294565b600c546001600160a01b03828116911614613ae85760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa1a0a62622a960911b6044820152606401611294565b600c54600d80546001600160a01b0319166001600160a01b039092169182179055604051600080516020615f2683398151915291610d709160408082526003908201526233b7bb60e91b60608201526001600160a01b0391909116602082015260800190565b600d546001600160a01b03163314613b6557600080fd5b600f54600b54600354613b86926001600160a01b0391821692911690614a93565b600e54600a54600354613ba7926001600160a01b0391821692911690614a93565b600f54600b54600e54600a54604080516001600160a01b03958616815260208101949094529390911682840152606082015290517ff4e6bc0a6951927d4db8490fb63528b3c4ccb43865870fe4e3db7a090cbb14b19181900360800190a16000600a819055600b55565b600081815260208052604081206001611d7a565b600d546001600160a01b03163314613c3c57600080fd5b6001600160a01b038116613c4f57600080fd5b600e80546001600160a01b0319166001600160a01b03831690811790915560408051818152600391810191909152623232bb60e91b60608201526020810191909152600080516020615f2683398151915290608001610d70565b613cb16152f2565b5060009081526019602090815260409182902082516101e08101845281546001600160a01b031660808201908152600183015460a0830152600283015460c0830152600383015460e083015260048301546101008301526005830154610120830152600683015460ff1615156101408301526007830154610160830152600883015461018083015260098301546101a0830152600a8301546101c08301528152600b82015492810192909252600c81015492820192909252600d90910154606082015290565b3360009081526021602052604090205460ff16613d9357600080fd5b6000818152601a6020908152604091829020845181546001600160a01b0319166001600160a01b03909116178155908401516001808301919091559184015160028201556060840151600380830180548795919260ff1990911691908490811115613e0057613e00615ec0565b021790555050505050565b3360009081526021602052604090205460ff16613e2757600080fd5b8251516001600160a01b039081166000908152601b602090815260408083208054600180820183559185528385200187905586845260198352928190208751805182546001600160a01b0319169616959095178155918401519282019290925582820151600282015560608084015160038301556080840151600483015560a0840151600583015560c084015160068301805460ff191691151591909117905560e084015160078301556101008401516008830155610120840151600983015561014090930151600a82015590850151600c82015590840151600d82015543600b909101558015613f51578251516001600160a01b03166000908152601c60209081526040808320865183015184529091528120805491613f4783615e8f565b9190505550505050565b8251516001600160a01b03166000908152601d60209081526040808320865183015184529091528120805491613f8683615e8f565b90915550508251516001600160a01b03166000908152601460209081526040808320865183015184528252808320865182015184529091529020600301805460ff19166001179055505050565b600d546001600160a01b03163314613fea57600080fd5b60008111613ff757600080fd5b6006819055604080518181526010918101919091526f36b0bc2a3930b232b9a832b92830b4b960811b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610d70565b600060646402540be400600954600460009054906101000a90046001600160a01b03166001600160a01b0316637b78d7826040518163ffffffff1660e01b815260040160206040518083038186803b1580156140b157600080fd5b505afa1580156140c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e99190615946565b6140f39190615e16565b6140fd9190615df4565b6141079190615df4565b905090565b60105460009061411e57506000611a9d565b6001600160a01b0384166000908152601760209081526040808320868452825280832085845290915281205460108054909190811061415f5761415f615eec565b60009182526020909120600c9091020180549091506001600160a01b0386811691161480156141915750838160010154145b80156141a05750828160020154145b95945050505050565b600d546001600160a01b031633146141c057600080fd5b60098190556040805181815260069181019190915265074766c4361760d41b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610d70565b601e602052816000526040600020818154811061423157600080fd5b6000918252602090912001546001600160a01b03169150829050565b600d546001600160a01b0316331461426457600080fd5b6000811161427157600080fd5b600781905560408051818152601691810191909152756d617850656e64696e674d61726b65744f726465727360501b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab90608001610d70565b3360009081526021602052604090205460ff166142f257600080fd5b80516001600160a01b03166000908152601360209081526040808320828501518452825280832081850151845290915290206007810154614331575050565b606082015160038201556080820151600482015560a0820151600582015560e082015160079091015550565b60008181526020805260408120600181015490546111ee9190615ddc565b3360009081526021602052604090205460ff1661439757600080fd5b6143a9836000015184602001516111f4565b604084810191825284516001600160a01b0390811660009081526013602090815283822081890180518452908252848320865184528252848320895181546001600160a01b031916951694851781558151600182015595516002870155606089015160038701556080890151600487015560a0890151600587015560c089015160068701805460ff191691151591909117905560e0890151600787015561010089015160088701556101208901516009870155610140890151600a909601959095559181526015825282812093518152929052812080549161448a83615e8f565b909155505082516001600160a01b031660009081526015602090815260408083208287015184529091529020546001141561452b57602083810180516000908152601e80845260408083205488516001600160a01b039081168552601f87528285208651865287528285209190915593518352908452812086518154600181018355918352939091200180546001600160a01b031916929091169190911790555b60006060830181815284516001600160a01b0390811683526014602090815260408085208289015186528252808520818901518652825280852087518155828801516001820155818801516002820155935160038501805460ff19169115159190911790556080870151600494850155845481516335b03c1760e01b8152915162010000909104909316936335b03c17938282019392909190829003018186803b1580156145d857600080fd5b505afa1580156145ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614610919061562d565b84516020860151604080880151905163503a202f60e01b81526001600160a01b03938416600482015260248101929092526044820152841515606482015291925082169063503a202f90608401600060405180830381600087803b15801561467757600080fd5b505af115801561468b573d6000803e3d6000fd5b505050506117a684600001518560200151856000015160018860c001518960a00151614b12565b600d546001600160a01b031633146146c957600080fd5b6001600160a01b0381166146dc57600080fd5b6001600160a01b038116600081815260216020908152604091829020805460ff1916600117905590519182527fb692fa98cbec9bd705572b4c7e0927e3f7698e9fe526dcef6f40f3d4d4980ca39101610d70565b3360009081526021602052604090205460ff1661474c57600080fd5b61475e81600001518260200151611aa4565b604082019081524361014083019081526010805460018082018355600083905285517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672600c90930292830180546001600160a01b0319166001600160a01b0390921691909117905560208601517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67383015593517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67482015560608501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67582015560808501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6768201805460ff191691151591909117905560a08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67782015560c08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67882015560e08501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798201556101008501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8201556101208501517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b82015591517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67c8301556101608401517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67d90920191909155546149a39190615e35565b81516001600160a01b03908116600090815260176020908152604080832082870180518552908352818420828801518552835281842095909555855190931682526018815282822093518252929092528120805491614a0183615e8f565b919050555050565b600d546001600160a01b03163314614a2057600080fd5b6001600160a01b038116614a3357600080fd5b600280546001600160a01b0319166001600160a01b038316908117909155604080518181526009918101919091526863616c6c6261636b7360b81b60608201526020810191909152600080516020615f2683398151915290608001610d70565b6040516001600160a01b03831660248201526044810182905261252d90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261507a565b60006402540be400614b088385615e16565b611a9d9190615df4565b600082614b20576001614b23565b60005b6000878152602080526040902060ff91909116915084614b7557808260028110614b4f57614b4f615eec565b01548611614b5d5785614b72565b808260028110614b6f57614b6f615eec565b01545b95505b84614b9e5785818360028110614b8d57614b8d615eec565b0154614b999190615e35565b614bbd565b85818360028110614bb157614bb1615eec565b0154614bbd9190615ddc565b818360028110614bcf57614bcf615eec565b015584614be95785600854614be49190615e35565b614bf7565b85600854614bf79190615ddc565b60085584614c28576001600160a01b038816600090815260166020526040902054614c23908790615e35565b614c4c565b6001600160a01b038816600090815260166020526040902054614c4c908790615ddc565b6001600160a01b0389166000908152601660209081526040808320939093558982526023815282822043835290522054614c87908790615ddc565b6000888152602360209081526040808320438452825280832093909355815483516335b03c1760e01b815293519293620100009091046001600160a01b0316926335b03c1792600480840193919291829003018186803b158015614cea57600080fd5b505afa158015614cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d22919061562d565b6040516304d735cf60e51b8152600481018a90529091506001600160a01b03821690639ae6b9e09060240160206040518083038186803b158015614d6557600080fd5b505afa158015614d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d9d9190615946565b60008981526023602090815260408083204384529091529020541115614e055760405162461bcd60e51b815260206004820152601760248201527f424c4f434b5f4f495f4c494d49545f42524541434845440000000000000000006044820152606401611294565b604051633c44d0a360e01b8152600481018990526001600160a01b03821690633c44d0a39060240160206040518083038186803b158015614e4557600080fd5b505afa158015614e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e7d9190615946565b60021415614fe557604051636dc37de360e01b8152600481018990526000906001600160a01b03831690636dc37de39060240160206040518083038186803b158015614ec857600080fd5b505afa158015614edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f009190615610565b9050600086614f10576000614f13565b60015b60ff1690508115614f825787614f48578860118660028110614f3757614f37615eec565b0154614f439190615e35565b614f68565b8860118660028110614f5c57614f5c615eec565b0154614f689190615ddc565b60118660028110614f7b57614f7b615eec565b0155614fe2565b87614fac578860118260028110614f9b57614f9b615eec565b0154614fa79190615e35565b614fcc565b8860118260028110614fc057614fc0615eec565b0154614fcc9190615ddc565b60118260028110614fdf57614fdf615eec565b01555b50505b604080518715158152861515602082015290810189905260608101889052608081018590527fcadf7ed5daaec5b514975523d89eb6ebbbd5d892bc7a5bbf71c5fca0219754579060a00160405180910390a1505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526117a69085906323b872dd60e01b90608401614abf565b60006150cf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661514f9092919063ffffffff16565b90508051600014806150f05750808060200190518101906150f09190615610565b61252d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611294565b60606136dc848460008585600080866001600160a01b031685876040516151769190615b1a565b60006040518083038185875af1925050503d80600081146151b3576040519150601f19603f3d011682016040523d82523d6000602084013e6151b8565b606091505b50915091506151c9878383876151d4565b979650505050505050565b60608315615240578251615239576001600160a01b0385163b6152395760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611294565b50816136dc565b6136dc83838151156152555781518083602001fd5b8060405162461bcd60e51b81526004016112949190615c2f565b60405180604001604052806002906020820280368337509192915050565b60405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528061530561528d565b81526020016000815260200160008152602001600081525090565b803561532b81615f02565b919050565b803561532b81615f17565b6000610160828403121561534e57600080fd5b615356615d10565b905061536182615320565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a08201526153a160c08301615330565b60c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b6000602082840312156153ec57600080fd5b8135611a9d81615f02565b60008060006060848603121561540c57600080fd5b833561541781615f02565b9250602084013561542781615f02565b929592945050506040919091013590565b6000806040838503121561544b57600080fd5b823561545681615f02565b946020939093013593505050565b60008060006060848603121561547957600080fd5b833561548481615f02565b95602085013595506040909401359392505050565b600080600080608085870312156154af57600080fd5b84356154ba81615f02565b9350602085013592506040850135915060608501356154d881615f17565b939692955090935050565b60008060008060008060c087890312156154fc57600080fd5b863561550781615f02565b95506020870135945060408701359350606087013561552581615f17565b9250608087013561553581615f17565b915060a087013561554581615f17565b809150509295509295509295565b600080600080600080600060e0888a03121561556e57600080fd5b873561557981615f02565b96506020880135955060408801359450606088013561559781615f17565b9699959850939660808101359560a0820135955060c0909101359350915050565b600080600080608085870312156155ce57600080fd5b84356155d981615f02565b966020860135965060408601359560600135945092505050565b60006020828403121561560557600080fd5b8135611a9d81615f17565b60006020828403121561562257600080fd5b8151611a9d81615f17565b60006020828403121561563f57600080fd5b8151611a9d81615f02565b6000610180828403121561565d57600080fd5b50919050565b6000610180828403121561567657600080fd5b61567e615d48565b61568783615320565b81526020830135602082015260408301356040820152606083013560608201526156b360808401615330565b608082015260a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160928301359281019290925250919050565b60006080828403121561571d57600080fd5b6040516080810181811067ffffffffffffffff8211171561574e57634e487b7160e01b600052604160045260246000fd5b6040528251815260208301516009811061576757600080fd5b602082015260408381015190820152606083015161578481615f17565b60608201529392505050565b60008082840360a08112156157a457600080fd5b60808112156157b257600080fd5b506157bb615d7a565b83356157c681615f02565b8082525060208401356020820152604084013560408201526060840135600481106157f057600080fd5b6060820152946080939093013593505050565b600080600083850361020081121561581a57600080fd5b6101c08082121561582a57600080fd5b615832615d7a565b915061583e878761533b565b8252610160860135602083015261018086013560408301526101a0860135606083015290935084013591506101e084013561587881615f17565b809150509250925092565b6000610160828403121561589657600080fd5b611a9d838361533b565b60008060008385036102208112156158b757600080fd5b6158c1868661533b565b935060a061015f19820112156158d657600080fd5b506158df615dab565b610160850135815261018085013560208201526101a085013560408201526101c085013561590c81615f17565b60608201526101e08501356080820152915061020084013561587881615f17565b60006020828403121561593f57600080fd5b5035919050565b60006020828403121561595857600080fd5b5051919050565b60008060006060848603121561597457600080fd5b83519250602084015161598681615f02565b80925050604084015190509250925092565b600080604083850312156159ab57600080fd5b8235915060208301356159bd81615f17565b809150509250929050565b6000806000606084860312156159dd57600080fd5b83359250602084013561542781615f17565b60008060408385031215615a0257600080fd5b50508035926020909101359150565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151615a4f608084018215159052565b5060a0818101519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151615aed60c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b60008251615b2c818460208701615e4c565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015615b775783516001600160a01b031683529284019291840191600101615b52565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015615b7757615bb2838551615a11565b928401926101809290920191600101615b9f565b60408101818360005b6002811015615bee578151835260209283019290910190600101615bcf565b50505092915050565b6020808252825182820181905260009190848201906040850190845b81811015615b7757835183529284019291840191600101615c13565b6020815260008251806020840152615c4e816040850160208701615e4c565b601f01601f19169190910160400192915050565b61018081016111ee8284615a11565b81516001600160a01b0316815260208083015190820152604080830151908201526060820151608082019060048110615cba57634e487b7160e01b600052602160045260246000fd5b8060608401525092915050565b60006101c082019050615cdb828451615a9b565b602083015161016083015260408301516101808301526060909201516101a09091015290565b61016081016111ee8284615a9b565b604051610160810167ffffffffffffffff81118282101715615d4257634e487b7160e01b600052604160045260246000fd5b60405290565b604051610180810167ffffffffffffffff81118282101715615d4257634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715615d4257634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715615d4257634e487b7160e01b600052604160045260246000fd5b60008219821115615def57615def615eaa565b500190565b600082615e1157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615e3057615e30615eaa565b500290565b600082821015615e4757615e47615eaa565b500390565b60005b83811015615e67578181015183820152602001615e4f565b838111156117a65750506000910152565b600081615e8757615e87615eaa565b506000190190565b6000600019821415615ea357615ea3615eaa565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461240257600080fd5b801515811461240257600080fdfe943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee44422781a264697066735822122082e28b38e1bcc96710c5012f26a6c1bc3afdc27749c311b36aa517eb1f15c0fa64736f6c63430008070033","sourceMap":"553:37890:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28485:105;28572:10;;-1:-1:-1;;;;;28572:10:113;28485:105;;;-1:-1:-1;;;;;14896:32:154;;;;14878:51;;14866:2;14851:18;28485:105:113;;;;;;;;4844:209;;;;;;:::i;:::-;;:::i;:::-;;15213:1379;;;;;;:::i;:::-;;:::i;35842:159::-;;;;;;:::i;:::-;;:::i;1207:27::-;;;;;-1:-1:-1;;;;;1207:27:113;;;933:25;;;;;-1:-1:-1;;;;;933:25:113;;;28176:158;;;;;;:::i;:::-;;:::i;:::-;;;34170:25:154;;;34158:2;34143:18;28176:158:113;34024:177:154;31838:456:113;;;;;;:::i;:::-;;:::i;23560:1158::-;;;;;;:::i;:::-;;:::i;729:48::-;;;;;;;;-1:-1:-1;;;;;729:48:113;;;1306:39;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;18402:32:154;;;;18384:51;;18466:2;18451:18;;18444:34;;;;18494:18;;;18487:34;;;;18552:2;18537:18;;18530:34;;;;18608:14;;18601:22;18595:3;18580:19;;18573:51;-1:-1:-1;18640:19:154;;18633:35;;;;18699:3;18684:19;;18677:35;18743:3;18728:19;;18721:35;18787:3;18772:19;;18765:35;18831:3;18816:19;;18809:35;18875:3;18860:19;;18853:36;18920:3;18905:19;;18898:36;18371:3;18356:19;1306:39:113;17933:1007:154;1115:23:113;;;;;;1144;;;;;;852:27;;;;;-1:-1:-1;;;;;852:27:113;;;1091:18;;;;;;10917:587;;;;;;:::i;:::-;;:::i;36850:681::-;;;;;;:::i;:::-;;:::i;:::-;;;21644:14:154;;21637:22;21619:41;;21607:2;21592:18;36850:681:113;21479:187:154;2402:62:113;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1057:28;;;;;;32576:453;;;;;;:::i;:::-;;:::i;6119:235::-;;;;;;:::i;:::-;;:::i;3889:124::-;;;;;;:::i;:::-;;:::i;5720:210::-;;;;;;:::i;:::-;;:::i;29352:140::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;29034:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1174:27::-;;;;;-1:-1:-1;;;;;1174:27:113;;;36202:120;;;;;;:::i;:::-;;:::i;22017:1020::-;;;;;;:::i;:::-;;:::i;:::-;;;;34643:25:154;;;34699:2;34684:18;;34677:34;;;;34616:18;22017:1020:113;34469:248:154;27768:160:113;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2661:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;17108:135;;;;;;:::i;:::-;;:::i;1351:20::-;;;;;;:::i;:::-;;:::i;20387:546::-;;;;;;:::i;:::-;;:::i;1008:43::-;;;;;;3200:176;;;:::i;31461:117::-;;;:::i;:::-;;;;;;;:::i;885:42::-;;;;;-1:-1:-1;;;;;885:42:113;;;25675:283;;;;;;:::i;:::-;;:::i;26949:219::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;33408:4:154;33450:3;33439:9;33435:19;33427:27;;33487:6;33481:13;33470:9;33463:32;33551:4;33543:6;33539:17;33533:24;33526:4;33515:9;33511:20;33504:54;33614:4;33606:6;33602:17;33596:24;33589:4;33578:9;33574:20;33567:54;33691:4;33683:6;33679:17;33673:24;33666:32;33659:40;33652:4;33641:9;33637:20;33630:70;33756:4;33748:6;33744:17;33738:24;33731:4;33720:9;33716:20;33709:54;33258:511;;;;;29568:97:113;;;:::i;:::-;;;;;;;:::i;11792:1093::-;;;;;;:::i;:::-;;:::i;1240:27::-;;;;;-1:-1:-1;;;;;1240:27:113;;;1818:78;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2135:80;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2523:57;;;;;;:::i;:::-;;:::i;6950:199::-;;;;;;:::i;:::-;;:::i;19573:547::-;;;;;;:::i;:::-;;:::i;26538:177::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7327:197::-;;;;;;:::i;:::-;;:::i;17858:540::-;;;;;;:::i;:::-;;:::i;2798:52::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3547:172;;;;;;:::i;:::-;;:::i;18613:697::-;;;;;;:::i;:::-;;:::i;6539:231::-;;;;;;:::i;:::-;;:::i;2221:81::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;30556:113;;;;;;:::i;:::-;-1:-1:-1;;;;;30644:18:113;30621:4;30644:18;;;:9;:18;;;;;;;30556:113;30996:311;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2080:49::-;;;;;;:::i;:::-;;:::i;37768:673::-;;;;;;:::i;:::-;;:::i;14131:967::-;;;;;;:::i;:::-;;:::i;25177:203::-;;;:::i;4019:290::-;;;;;;:::i;:::-;;:::i;24819:280::-;;;:::i;36524:121::-;;;;;;:::i;:::-;;:::i;4499:153::-;;;;;;:::i;:::-;;:::i;27388:163::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16785:179::-;;;;;;:::i;:::-;;:::i;13237:656::-;;;;;;:::i;:::-;;:::i;8141:230::-;;;;;;:::i;:::-;;:::i;26091:150::-;;;:::i;33366:373::-;;;;;;:::i;:::-;;:::i;9041:208::-;;;;;;:::i;:::-;;:::i;2351:45::-;;;;;;:::i;:::-;;:::i;28745:101::-;28830:8;;-1:-1:-1;;;;;28830:8:113;28745:101;;8594:272;;;;;;:::i;:::-;;:::i;1729:83::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21057:424;;;;;;:::i;:::-;;:::i;30185:160::-;;;;;;:::i;:::-;;:::i;9545:1007::-;;;;;;:::i;:::-;;:::i;2716:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;965:37;;;;;;29855:140;;;;;;:::i;:::-;-1:-1:-1;;;;;29957:24:113;29934:4;29957:24;;;:15;:24;;;;;:31;;29855:140;5283:204;;;;;;:::i;:::-;;:::i;17358:366::-;;;;;;:::i;:::-;;:::i;7708:212::-;;;;;;:::i;:::-;;:::i;1273:26::-;;;;;-1:-1:-1;;;;;1273:26:113;;;4844:209;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;4925:26:113;::::1;4917:35;;;::::0;::::1;;4962:11;:26:::0;;-1:-1:-1;;;;;;4962:26:113::1;-1:-1:-1::0;;;;;4962:26:113;::::1;::::0;;::::1;::::0;;;5003:43:::1;::::0;;29600:21:154;;;29657:2;29637:18;;;29630:30;;;;-1:-1:-1;;;29691:2:154;29676:18;;29669:41;29777:4;29762:20;;;29755:62;;;;-1:-1:-1;;;5003:43:113;;-1:-1:-1;;;;;;;;;;5003:43:113;29742:3:154;29727:19;5003:43:113::1;;;;;;;;4844:209:::0;:::o;15213:1379::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;15306:36:::1;15345:15:::0;;:29:::1;::::0;-1:-1:-1;;;15345:29:113;;::::1;::::0;::::1;34170:25:154::0;;;15345:15:113;;;::::1;-1:-1:-1::0;;;;;15345:15:113::1;::::0;:24:::1;::::0;34143:18:154;;15345:29:113::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;::::0;;::::1;::::0;15395:32:::1;15430:29:::0;;;:24:::1;:29:::0;;;;;;15395:64;;;;;;;;;-1:-1:-1;;;;;15395:64:113::1;;::::0;::::1;::::0;;;-1:-1:-1;15395:64:113;::::1;::::0;-1:-1:-1;15395:64:113;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;::::1;;;;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;15395:64:113;;;15495:36;;;:15:::1;:36:::0;;;;;15345:39;;-1:-1:-1;15542:788:113::1;15563:15:::0;;15559:19;::::1;15542:788;;;15618:3;15603:8;15612:1;15603:11;;;;;;;;:::i;:::-;;;;;;;;;:18;15599:721;;;15658:38;15645:9;:51;;;;;;;;:::i;:::-;;:130;;;-1:-1:-1::0;15733:42:113::1;15720:9;:55;;;;;;;;:::i;:::-;;15645:130;15641:516;;;15822:12:::0;;:19;-1:-1:-1;;;;;15799:43:113::1;;::::0;;;:22:::1;:43;::::0;;;;;;;15843:12;;:22;::::1;::::0;15799:67;;;;;;;:69;;;::::1;::::0;::::1;:::i;:::-;;;;;;15641:516;;;15939:12:::0;;:19;-1:-1:-1;;;;;15915:44:113::1;;::::0;;;:23:::1;:44;::::0;;;;;;;15960:12;;:22;::::1;::::0;15915:68;;;;;;;:70;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;16023:12:113;;:19;-1:-1:-1;;;;;16007:36:113::1;16133:5;16007:36:::0;;;:15:::1;:36;::::0;;;;;;;16044:12;;:22;::::1;::::0;16007:60;;;;;;;16068:12;;:18;::::1;::::0;16007:80;;;;;;;:123:::1;;:131:::0;;-1:-1:-1;;16007:131:113::1;::::0;;15641:516:::1;16198:15:::0;;16189:8;;16198:19:::1;::::0;16216:1:::1;::::0;16198:19:::1;:::i;:::-;16189:29;;;;;;;;:::i;:::-;;;;;;;;;16175:8;16184:1;16175:11;;;;;;;;:::i;:::-;;;;;;;;:43;;;;16236:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;-1:-1:-1;;16236:14:113;;;;;;;;;;;;;;16276:29;;;:24:::1;:29:::0;;;;;16269:36;;-1:-1:-1;;;;;;16269:36:113::1;::::0;;-1:-1:-1;16269:36:113;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;16269:36:113::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;15599:721:::1;15580:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15542:788;;;-1:-1:-1::0;16451:12:113;;:19;;16472:29:::1;::::0;;::::1;::::0;16432:4:::1;::::0;16425:77:::1;::::0;-1:-1:-1;;;;;16432:4:113;;::::1;::::0;16425:25:::1;:77::i;:::-;16541:12:::0;;:19;;16562:22:::1;::::0;;::::1;::::0;16517:68:::1;::::0;;34643:25:154;;;34684:18;;;34677:34;;;;16517:68:113;;-1:-1:-1;;;;;16517:68:113;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;15295:1297;;;15213:1379:::0;:::o;35842:159::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;35955:7:::1;35940:11;;:22;;;;;;;:::i;:::-;;;;;;;;35987:7;35972:11;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;35842:159:113:o;28176:158::-;-1:-1:-1;;;;;28290:25:113;;28267:4;28290:25;;;:16;:25;;;;;;;;:37;;;;;;;;;28176:158;;;;;:::o;31838:456::-;31930:10;;31952:336;31973:16;;31969:1;:20;31952:336;;;-1:-1:-1;;;;;32010:19:113;;;;;;:11;:19;;;;;;;;:30;;;;;;;;:33;;;;;;;;:42;;;32006:118;;32085:1;32077:9;;32104:5;;32006:118;32153:16;;32143:5;:1;32147;32143:5;:::i;:::-;32142:27;32141:43;;;;-1:-1:-1;32174:10:113;;32141:43;32137:110;;;32204:28;;-1:-1:-1;;;32204:28:113;;29243:2:154;32204:28:113;;;29225:21:154;29282:2;29262:18;;;29255:30;-1:-1:-1;;;29301:18:154;;;29294:48;29359:18;;32204:28:113;;;;;;;;32137:110;32272:3;;31952:336;;;;31838:456;;;;:::o;23560:1158::-;3012:10;23780:19;2994:29;;;:17;:29;;;;;;;;2986:38;;;;;;23811:8:::1;23848:15:::0;;:66:::1;::::0;-1:-1:-1;;;23848:66:113;;::::1;::::0;::::1;34918:25:154::0;;;34959:18;;;34952:34;;;35029:14;;35022:22;35002:18;;;34995:50;23955:3:113::1;::::0;718:4:::1;::::0;23848:15;;;::::1;-1:-1:-1::0;;;;;23848:15:113::1;::::0;:24:::1;::::0;34891:18:154;;23848:66:113::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23823:91;::::0;:22;:91:::1;:::i;:::-;23822:118;;;;:::i;:::-;:136;;;;:::i;:::-;23811:147;;23974:8;23969:48;;23998:8;24005:1;23998:8:::0;::::1;:::i;:::-;;;23969:48;24026:22;24093:79;24116:7;24125:3;24130:22;24154:5;24161:1:::0;24167::::1;24170::::0;24093:22:::1;:79::i;:::-;24249:10;::::0;:22:::1;::::0;;-1:-1:-1;;;24249:22:113;;;;24058:114;;-1:-1:-1;24058:114:113;;-1:-1:-1;24183:20:113::1;::::0;24276:3:::1;::::0;-1:-1:-1;;;;;24249:10:113;;::::1;::::0;-1:-1:-1;;24249:22:113::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;24183:20;24249:10;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24243:28;::::0;:3:::1;:28;:::i;:::-;24208:31;24225:14:::0;24208;:31:::1;:::i;:::-;24207:65;;;;:::i;:::-;24206:73;;;;:::i;:::-;24341:10;::::0;:22:::1;::::0;;-1:-1:-1;;;24341:22:113;;;;24183:96;;-1:-1:-1;24289:12:113::1;::::0;24374:1:::1;::::0;24367:3:::1;::::0;-1:-1:-1;;;;;24341:10:113;;::::1;::::0;-1:-1:-1;;24341:22:113::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;24289:12;24341:10;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24306:31;24323:14:::0;24306;:31:::1;:::i;:::-;24305:58;;;;:::i;:::-;24304:66;;;;:::i;:::-;:71;;24289:86;;24390:5;24386:76;;;24431:12;::::0;24404:4:::1;::::0;24397:65:::1;::::0;-1:-1:-1;;;;;24404:4:113;;::::1;::::0;24431:12:::1;24446:15:::0;24397:25:::1;:65::i;:::-;24473:12;::::0;;:52:::1;::::0;-1:-1:-1;;;24473:52:113;;;;::::1;34374:25:154::0;;;24473:12:113::1;34415:18:154::0;;;34408:50;-1:-1:-1;;;;;24473:12:113::1;::::0;:28:::1;::::0;34347:18:154;;24473:52:113::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24550:7;24535:11;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;24634:7:113;;-1:-1:-1;24616:15:113;24582:31:::1;24599:14:::0;24582;:31:::1;:::i;:::-;:49;;;;:::i;:::-;:59;;;;:::i;:::-;24567:11;;:74;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;24657:54:113::1;::::0;;-1:-1:-1;;;;;16962:32:154;;16944:51;;17026:2;17011:18;;17004:34;;;17081:14;;17074:22;17054:18;;;17047:50;17128:2;17113:18;;17106:34;;;24657:54:113;;::::1;::::0;;;;16931:3:154;24657:54:113;;::::1;23801:917;;;;23560:1158:::0;;;;;;;;:::o;1306:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1306:39:113;;;;-1:-1:-1;1306:39:113;;;;;;;;;;;;;;;;;;;;:::o;10917:587::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;-1:-1:-1;;;;;11108:19:113;::::1;11090:15;11108:19:::0;;;:11:::1;:19;::::0;;;;;;;:30;;;;;;;;:37;;;;;;;;11177:23;;;:15:::1;:23:::0;;;;;:34;;;;;;;;:41;;;;;;;;11232:10:::1;::::0;::::1;::::0;11228:52:::1;;11263:7;;;;11228:52;11310:14;11289:1;:17;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11375:10:113::1;::::0;::::1;::::0;11356:30:::1;::::0;:14;;:18:::1;:30::i;:::-;11334:1;:18;;;:52;;;;;;;:::i;:::-;;;;;;;;11396:101;11420:6;11428:9;11439:30;11458:1;:10;;;11439:14;:18;;:30;;;;:::i;:::-;11478:5;::::0;::::1;::::0;11485:11:::1;::::0;::::1;::::0;11471:5:::1;::::0;11478::::1;;::::0;11396:23:::1;:101::i;:::-;11080:424;;3034:1;10917:587:::0;;;;:::o;36850:681::-;36944:4;36987:15;;:30;;;-1:-1:-1;;;36987:30:113;;;;36944:4;;36987:15;;;-1:-1:-1;;;;;36987:15:113;;-1:-1:-1;;36987:30:113;;;;;;;;;;;;;;:15;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37027:15;37079:28;;;:16;:28;;;;;37108:1;37079:31;;;37045;;36960:57;;-1:-1:-1;37027:15:113;;37113:12;;37045:65;;;:::i;:::-;:80;;;;:::i;:::-;37027:98;;37139:3;37136:388;;;37178:33;;-1:-1:-1;;;37178:33:113;;;;;34170:25:154;;;-1:-1:-1;;;;;37178:21:113;;;;;34143:18:154;;37178:33:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37164:10;:47;;:156;;;;-1:-1:-1;37283:37:113;;-1:-1:-1;;;37283:37:113;;;;;34170:25:154;;;-1:-1:-1;;;;;37283:25:113;;;;;34143:18:154;;37283:37:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37234:28;;;;:16;:28;;;;;37268:12;;37234:31;;;:46;;;;:::i;:::-;:86;;37164:156;37157:163;;;;;;37136:388;37370:33;;-1:-1:-1;;;37370:33:113;;;;;34170:25:154;;;-1:-1:-1;;;;;37370:21:113;;;;;34143:18:154;;37370:33:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37356:10;:47;;:157;;;;-1:-1:-1;37475:38:113;;-1:-1:-1;;;37475:38:113;;;;;34170:25:154;;;-1:-1:-1;;;;;37475:26:113;;;;;34143:18:154;;37475:38:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37426:28;;;;:16;:28;;;;;37460:12;;37455:1;37426:31;;36850:681;;;;;;:::o;32576:453::-;32672:10;;32694:329;32715:16;;32711:1;:20;32694:329;;;32753:39;32771:6;32779:9;32790:1;32753:17;:39::i;:::-;32748:111;;32820:1;32812:9;;32839:5;;32748:111;32888:16;;32878:5;:1;32882;32878:5;:::i;:::-;32877:27;32876:43;;;;-1:-1:-1;32909:10:113;;32876:43;32872:110;;;32939:28;;-1:-1:-1;;;32939:28:113;;30030:2:154;32939:28:113;;;30012:21:154;30069:2;30049:18;;;30042:30;-1:-1:-1;;;30088:18:154;;;30081:48;30146:18;;32939:28:113;29828:342:154;32872:110:113;33007:3;;32694:329;;6119:235;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;6203:25:113;::::1;6195:34;;;::::0;::::1;;6239:15;:47:::0;;-1:-1:-1;;;;;;6239:47:113::1;-1:-1:-1::0;;;;;;6239:47:113;::::1;;;::::0;;6301:46:::1;::::0;-1:-1:-1;;6301:46:113;;6239:15;-1:-1:-1;;6239:15:113;-1:-1:-1;;;;;31610:2:154;31592:21;;;31649:2;31629:18;;;31622:30;-1:-1:-1;;;31683:2:154;31668:18;;31661:45;-1:-1:-1;;;;;31780:32:154;;31773:4;31758:20;;31751:62;-1:-1:-1;31738:3:154;31723:19;6301:46:113::1;31380:439:154::0;3889:124:113;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;3958:18:113;::::1;3950:27;;;::::0;::::1;;3987:12;:19:::0;;-1:-1:-1;;;;;;3987:19:113::1;-1:-1:-1::0;;;;;3987:19:113;;;::::1;::::0;;;::::1;::::0;;3889:124::o;5720:210::-;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;5805:23:113;::::1;5797:32;;;::::0;::::1;;-1:-1:-1::0;;;;;5839:28:113;::::1;5870:5;5839:28:::0;;;:17:::1;:28;::::0;;;;;;;;:36;;-1:-1:-1;;5839:36:113::1;::::0;;5890:33;;14878:51:154;;;5890:33:113::1;::::0;14851:18:154;5890:33:113::1;14732:203:154::0;29352:140:113;-1:-1:-1;;;;;29461:24:113;;;;;;:15;:24;;;;;;;;;29454:31;;;;;;;;;;;;;;;;;29429:13;;29454:31;;;29461:24;29454:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29352:140;;;:::o;29034:131::-;29135:23;;;;:11;:23;;;;;;;;;29128:30;;;;;;;;;;;;;;;;;29100:16;;29128:30;;;29135:23;29128:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29128:30:113;;;-1:-1:-1;29128:30:113;;;;;;;;;;;;;;;;;;29034:131;;;:::o;36202:120::-;36260:4;36283:28;;;:16;:28;;;;;36260:4;36283:31;;;;36202:120;-1:-1:-1;;36202:120:113:o;22017:1020::-;3012:10;22270:4;2994:29;;;:17;:29;;;;;;22270:4;;2994:29;;2986:38;;;;;;22304:6:::1;22301:221;;;22325:24;22352:15:::0;;:30:::1;::::0;;-1:-1:-1;;;22352:30:113;;;;:15;;;::::1;-1:-1:-1::0;;;;;22352:15:113::1;::::0;-1:-1:-1;;22352:30:113::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:15;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22412:67;::::0;-1:-1:-1;;;22412:67:113;;::::1;::::0;::::1;35256:25:154::0;;;35297:18;;;35290:34;;;35340:18;;;35333:34;;;22325:57:113;;-1:-1:-1;22399:10:113::1;::::0;-1:-1:-1;;;;;22412:26:113;::::1;::::0;::::1;::::0;35229:18:154;;22412:67:113::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22399:80:::0;-1:-1:-1;22508:1:113::1;::::0;-1:-1:-1;22493:17:113::1;::::0;-1:-1:-1;;22493:17:113::1;22301:221;22610:8;::::0;:47:::1;::::0;-1:-1:-1;;;22610:47:113;;-1:-1:-1;;;;;16180:32:154;;;22610:47:113::1;::::0;::::1;16162:51:154::0;16229:18;;;16222:34;;;22541:26:113::1;::::0;;;;;22610:8;;::::1;::::0;:31:::1;::::0;16135:18:154;;22610:47:113::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22668:17:113;::::1;;::::0;;;:7:::1;:17;::::0;;;;:35;;22540:117;;-1:-1:-1;22668:17:113;;-1:-1:-1;22540:117:113;;-1:-1:-1;22540:117:113;;22668:35:::1;::::0;22540:117;;22668:35:::1;:::i;:::-;::::0;;;-1:-1:-1;;22718:255:113::1;::::0;;-1:-1:-1;;;;;15691:15:154;;;15673:34;;15743:15;;15738:2;15723:18;;15716:43;15775:18;;;15768:34;;;15833:2;15818:18;;15811:34;;;15876:3;15861:19;;15854:35;;;-1:-1:-1;15905:19:154;;15898:35;;;15964:3;15949:19;;15942:35;;;22718:255:113;;::::1;::::0;;;;15622:3:154;22718:255:113;;::::1;22991:21:::0;;-1:-1:-1;23015:14:113;;-1:-1:-1;;3034:1:113::1;22017:1020:::0;;;;;;;;;;:::o;27768:160::-;27846:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27846:24:113;27889:32;;;;:23;:32;;;;;;;;;27882:39;;;;;;;;;-1:-1:-1;;;;;27882:39:113;;;-1:-1:-1;27882:39:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;27889:32;27882:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;27882:39:113;27768:160;-1:-1:-1;;27768:160:113:o;17108:135::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;17205:31:::1;::::0;;;:23:::1;:31;::::0;;;;17198:38;;-1:-1:-1;;;;;;17198:38:113::1;::::0;;-1:-1:-1;17198:38:113;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;::::1;;::::0;;-1:-1:-1;;17198:38:113::1;::::0;;17108:135::o;1351:20::-;;;;;;;;;;;;;;;-1:-1:-1;1351:20:113;:::o;20387:546::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;-1:-1:-1;;;;;20523:20:113;::::1;20505:15;20523:20:::0;;;:11:::1;:20;::::0;;;;;;;:32;;;;;;;;:40;;;;;;;;20595:24;;;:15:::1;:24:::0;;;;;:36;;;;;;;;:44;;;;;;;;20653:10:::1;::::0;::::1;::::0;20649:52:::1;;20684:7;;;;20649:52;20710:24;20737:15:::0;;:30:::1;::::0;;-1:-1:-1;;;20737:30:113;;;;:15;;;::::1;-1:-1:-1::0;;;;;20737:15:113::1;::::0;-1:-1:-1;;20737:30:113::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:15;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20811:11;::::0;::::1;::::0;20824:10:::1;::::0;::::1;::::0;20844:5:::1;::::0;::::1;::::0;;20851:11;::::1;::::0;20789:74:::1;::::0;-1:-1:-1;;;20789:74:113;;::::1;::::0;::::1;35631:25:154::0;;;;35672:18;;;35665:34;;;;35715:18;;;35708:34;;;20844:5:113::1;;35785:14:154::0;35778:22;35758:18;;;35751:50;35817:19;;;35810:35;20710:57:113;;-1:-1:-1;;;;;;20789:21:113;::::1;::::0;::::1;::::0;35603:19:154;;20789:74:113::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20873:4;::::0;;::::1;:13:::0;;;-1:-1:-1;20914:12:113::1;20896:15;::::0;;::::1;:30:::0;20780:83;-1:-1:-1;20387:546:113;;;;:::o;3200:176::-;3279:19:24;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:24;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:24;1713:19:37;:23;;;3387:66:24;;-1:-1:-1;3436:12:24;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:24;;27533:2:154;3325:201:24;;;27515:21:154;27572:2;27552:18;;;27545:30;27611:34;27591:18;;;27584:62;-1:-1:-1;;;27662:18:154;;;27655:44;27716:19;;3325:201:24;27331:410:154;3325:201:24;3536:12;:16;;-1:-1:-1;;3536:16:24;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:24;;;;;3562:65;3253:3:113::1;:16:::0;;-1:-1:-1;;;;;;3253:16:113::1;3259:10;3253:16;::::0;;3298:1:::1;3279:16;:20:::0;;;-1:-1:-1;3309:26:113;3354:15:::1;718:4;3354:2;:15;:::i;:::-;3345:6;:24:::0;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;23230:36:154;;3721:14:24;;23218:2:154;23203:18;3721:14:24;23078:194:154;3647:99:24;3269:483;3200:176:113:o;31461:117::-;31514:23;31556:15;31549:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31549:22:113;;;-1:-1:-1;31549:22:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31549:22:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31461:117;:::o;25675:283::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;-1:-1:-1;;;;;25783:22:113;::::1;25800:4;25783:22;25779:173;;;25828:4;::::0;25821:39:::1;::::0;-1:-1:-1;;;;;25828:4:113::1;25847:3:::0;25852:7;25821:25:::1;:39::i;:::-;25675:283:::0;;;:::o;25779:173::-:1;25898:4;::::0;25891:50:::1;::::0;-1:-1:-1;;;;;25898:4:113::1;25921:5:::0;25928:3;25933:7;25891:29:::1;:50::i;26949:219::-:0;27082:16;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27082:16:113;-1:-1:-1;;;;;;27117:24:113;;;;;;;;:15;:24;;;;;;;;:36;;;;;;;;;:44;;;;;;;;;27110:51;;-1:-1:-1;27110:51:113;;;;;;;;-1:-1:-1;27110:51:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26949:219::o;29568:97::-;29620:14;;:::i;:::-;29646:12;;;;;;;;;;;29653:5;;29646:12;;29653:5;29646:12;;;;;;;;;;;;;;;;;;;;;;;;29568:97;:::o;11792:1093::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;-1:-1:-1;;;;;11919:19:113;::::1;11901:15;11919:19:::0;;;:11:::1;:19;::::0;;;;;;;:30;;;;;;;;:37;;;;;;;;11988:23;;;:15:::1;:23:::0;;;;;:34;;;;;;;;:41;;;;;;;;12043:10:::1;::::0;::::1;::::0;12039:52:::1;;12074:7;;25675:283:::0;;;:::o;12039:52::-:1;12143:18:::0;;12170:5:::1;::::0;::::1;::::0;12177:11:::1;::::0;::::1;::::0;12100:89:::1;::::0;12124:6;;12132:9;;12143:18:::1;::::0;12170:5:::1;;::::0;12100:23:::1;:89::i;:::-;-1:-1:-1::0;;;;;12204:24:113;::::1;;::::0;;;:16:::1;:24;::::0;;;;;;;:35;;;;;;;;;-1:-1:-1;12204:40:113::1;12200:382;;;-1:-1:-1::0;;;;;12282:21:113;::::1;12260:19;12282:21:::0;;;:13:::1;:21;::::0;;;;;;;:32;;;;;;;;;12350:11:::1;:22:::0;;;;;;12409:8;;12350:22;;12409:12:::1;::::0;-1:-1:-1;;12409:12:113::1;:::i;:::-;12407:15;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;12387:17;;-1:-1:-1;;;;;12407:15:113;;::::1;::::0;12387:17;;12389:14;;12387:17;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;:35:::0;;-1:-1:-1;;;;;;12387:35:113::1;-1:-1:-1::0;;;;;12387:35:113;;;::::1;::::0;;;::::1;::::0;;;12450:17;;12482:14;;12436:13:::1;::::0;12450:17;;12482:14;;12450:17;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;12450:17:113;;::::1;12436:32:::0;;;;::::1;::::0;;;;;;;;;;:43;;;;;;;;:60;;;;12518:21;;::::1;::::0;;:13:::1;:21:::0;;;;;:32;;;;;;;;;12511:39;12564:7;;;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;12564:7:113;;;;;-1:-1:-1;;;;;;12564:7:113::1;::::0;;;;;-1:-1:-1;;12200:382:113::1;-1:-1:-1::0;;;;;12599:19:113;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:30;;;;;;;;:37;;;;;;;;12592:44;;-1:-1:-1;;;;;;12592:44:113::1;::::0;;-1:-1:-1;12592:44:113;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;12592:44:113;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;12653:23;;;:15:::1;:23:::0;;;;;:34;;;;;;;;:41;;;;;;;;12646:48;;;;;::::1;::::0;;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;12740:15;;:30;;-1:-1:-1;;;12740:30:113;;;;12599:19;;12740:15;;;::::1;;::::0;-1:-1:-1;;12740:30:113;;::::1;::::0;12599:19;12740:30;;;;;;;;:15;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12780:50;::::0;-1:-1:-1;;;12780:50:113;;-1:-1:-1;;;;;17371:32:154;;;12780:50:113::1;::::0;::::1;17353:51:154::0;17420:18;;;17413:34;;;17463:18;;;17456:34;;;12713:57:113;;-1:-1:-1;12780:24:113;;::::1;::::0;::::1;::::0;17326:18:154;;12780:50:113::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;;;12841:24:113;::::1;;::::0;;;:16:::1;:24;::::0;;;;;;;:35;;;;;;;;:37;;;::::1;::::0;::::1;:::i;:::-;;;;;;11891:994;;;11792:1093:::0;;;:::o;2523:57::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2523:57:113;;-1:-1:-1;2523:57:113:o;6950:199::-;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;7025:23:113;::::1;7017:32;;;::::0;::::1;;7059:8;:31:::0;;-1:-1:-1;;;;;;7059:31:113::1;-1:-1:-1::0;;;;;7059:31:113;::::1;::::0;;::::1;::::0;;;7105:37:::1;::::0;;30745:21:154;;;30802:1;30782:18;;;30775:29;;;;-1:-1:-1;;;30835:2:154;30820:18;;30813:38;30918:4;30903:20;;;30896:62;;;;-1:-1:-1;;;7105:37:113;;-1:-1:-1;;;;;;;;;;7105:37:113;30883:3:154;30868:19;7105:37:113::1;30533:431:154::0;19573:547:113;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;-1:-1:-1;;;;;19709:20:113;::::1;19691:15;19709:20:::0;;;:11:::1;:20;::::0;;;;;;;:32;;;;;;;;:40;;;;;;;;19781:24;;;:15:::1;:24:::0;;;;;:36;;;;;;;;:44;;;;;;;;19839:10:::1;::::0;::::1;::::0;19835:52:::1;;19870:7;;;;19835:52;19896:24;19923:15:::0;;:30:::1;::::0;;-1:-1:-1;;;19923:30:113;;;;:15;;;::::1;-1:-1:-1::0;;;;;19923:15:113::1;::::0;-1:-1:-1;;19923:30:113::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:15;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19998:11;::::0;::::1;::::0;20011:10:::1;::::0;::::1;::::0;20031:5:::1;::::0;::::1;::::0;;20038:11;::::1;::::0;19976:74:::1;::::0;-1:-1:-1;;;19976:74:113;;::::1;::::0;::::1;35631:25:154::0;;;;35672:18;;;35665:34;;;;35715:18;;;35708:34;;;20031:5:113::1;;35785:14:154::0;35778:22;35758:18;;;35751:50;35817:19;;;35810:35;19896:57:113;;-1:-1:-1;;;;;;19976:21:113;::::1;::::0;::::1;::::0;35603:19:154;;19976:74:113::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20060:4;::::0;;::::1;:13:::0;;;-1:-1:-1;20101:12:113::1;20083:15;::::0;;::::1;:30:::0;19966:84;-1:-1:-1;19573:547:113;;;;:::o;26538:177::-;26637:12;;:::i;:::-;-1:-1:-1;;;;;;26668:20:113;;;;;;;:11;:20;;;;;;;;:32;;;;;;;;;:40;;;;;;;;;26661:47;;;;;;;;;;;;;;-1:-1:-1;26661:47:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26661:47:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26538:177::o;7327:197::-;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;7401:23:113;::::1;7393:32;;;::::0;::::1;;7435:8;:31:::0;;-1:-1:-1;;;;;;7435:31:113::1;-1:-1:-1::0;;;;;7435:31:113;::::1;::::0;;::::1;::::0;;;7481:36:::1;::::0;;27958:21:154;;;28015:1;27995:18;;;27988:29;;;;-1:-1:-1;;;28048:2:154;28033:18;;28026:37;28130:4;28115:20;;;28108:62;;;;-1:-1:-1;;;7481:36:113;;-1:-1:-1;;;;;;;;;;7481:36:113;28095:3:154;28080:19;7481:36:113::1;27746:430:154::0;17858:540:113;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;17961:52:::1;17979:9;;::::0;::::1;:2:::0;:9:::1;:::i;:::-;17990:2;:12;;;18004:2;:8;;;17961:17;:52::i;:::-;17956:90;;3269:483:24::0;3200:176:113:o;17956:90::-:1;18055:24;18082:15;18098:17;18055:24:::0;18116:9:::1;;::::0;::::1;:2:::0;:9:::1;:::i;:::-;-1:-1:-1::0;;;;;18098:28:113::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;18098:28:113;;;18127:12;;::::1;;18098:42:::0;;;;;;;18141:8;;::::1;;18098:52:::0;;;;;;;;18082:69;;;::::1;;;;;:::i;:::-;;;;;;;;;;;18055:96;;18178:2;:15;;;18161:1;:14;;:32;;;;18211:2;:6;;;;;;;;;;:::i;:::-;18203:5;::::0;::::1;:14:::0;;-1:-1:-1;;18203:14:113::1;::::0;::::1;;::::0;;;::::1;::::0;;18240:11:::1;::::0;::::1;;18227:10;::::0;::::1;:24:::0;18268:5:::1;::::0;::::1;;18261:4;::::0;::::1;:12:::0;18290:5:::1;::::0;::::1;;18283:4;::::0;::::1;:12:::0;18203:14:::1;18315:8:::0;::::1;;18305:7;::::0;::::1;:18:::0;18343:12:::1;18333:7;::::0;::::1;:22:::0;18379:12:::1;::::0;;::::1;;18365:11;::::0;;::::1;:26:::0;17858:540::o;3547:172::-;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;3615:20:113;::::1;3607:29;;;::::0;::::1;;3646:4;:21:::0;;-1:-1:-1;;;;;;3646:21:113::1;-1:-1:-1::0;;;;;3646:21:113;::::1;::::0;;::::1;::::0;;;3682:30:::1;::::0;;24745:21:154;;;24802:1;24782:18;;;24775:29;;;;-1:-1:-1;;;24835:2:154;24820:18;;24813:34;24914:4;24899:20;;;24892:62;;;;-1:-1:-1;;;3682:30:113;;-1:-1:-1;;;;;;;;;;3682:30:113;24879:3:154;24864:19;3682:30:113::1;24533:427:154::0;18613:697:113;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;18739:46:::1;18757:7;18766:10;18778:6;18739:17;:46::i;:::-;18734:84;;25675:283:::0;;;:::o;18734:84::-:1;-1:-1:-1::0;;;;;18915:26:113;::::1;18905:7;18915:26:::0;;;:17:::1;:26;::::0;;;;;;;:38;;;;;;;;:46;;;;;;;;;18993:15:::1;19009:22:::0;;:26:::1;::::0;-1:-1:-1;;19009:26:113::1;:::i;:::-;18993:43;;;;;;;;:::i;:::-;;;;;;;;;;;18971:15;18987:2;18971:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;:65;;:19:::1;::::0;;;::::1;;:65:::0;;-1:-1:-1;;;;;;18971:65:113::1;-1:-1:-1::0;;;;;18971:65:113;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;18971:65:113;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;18971:65:113;;::::1;;;-1:-1:-1::0;;18971:65:113;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;19064:15:::1;:19:::0;;19152:2;;19046:17:::1;::::0;18971:19;;19152:2;;19064:19;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;:26:::0;-1:-1:-1;;;;;19064:26:113::1;19046:45:::0;;;::::1;::::0;;;;;;;;19092:15:::1;:19:::0;;19046:45;;19064:19;19108:2;;19092:19;::::1;;;;;:::i;:::-;;;;;;;;;;;:29;;;19046:76;;;;;;;;;;;:103;19123:15;19139:2;19123:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;:25;;::::0;19046:103;;;;::::1;::::0;;;;;;;;;;:108;;;;-1:-1:-1;;;;;19172:26:113;::::1;::::0;;:17:::1;:26:::0;;;;;:38;;;;;;;;:46;;;;;;;;19165:53;19228:15:::1;:21:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;19228:21:113;;;;;;::::1;;::::0;;-1:-1:-1;;;;;;19228:21:113::1;::::0;;-1:-1:-1;19228:21:113;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;19228:21:113::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;;;;;-1:-1:-1;;;;;19260:29:113;::::1;::::0;;:20:::1;:29:::0;;;;;;:41;;;;;;;;:43;;;::::1;::::0;::::1;:::i;:::-;;;;;;18724:586;18613:697:::0;;;:::o;6539:231::-;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;6622:27:113;::::1;6614:36;;;::::0;::::1;;6660:12;:43:::0;;-1:-1:-1;;;;;;6660:43:113::1;-1:-1:-1::0;;;;;6660:43:113;::::1;::::0;;::::1;::::0;;;6718:45:::1;::::0;;28812:21:154;;;28869:2;28849:18;;;28842:30;;;;-1:-1:-1;;;28903:2:154;28888:18;;28881:42;28990:4;28975:20;;;28968:62;;;;-1:-1:-1;;;6718:45:113;;-1:-1:-1;;;;;;;;;;6718:45:113;28955:3:154;28940:19;6718:45:113::1;28600:436:154::0;30996:311:113;31132:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31132:21:113;31173:46;31191:7;31200:10;31212:6;31173:17;:46::i;:::-;31165:55;;;;;;-1:-1:-1;;;;;31253:26:113;;;;;;:17;:26;;;;;;;;:38;;;;;;;;:46;;;;;;;;;31237:15;:63;;:15;;31253:46;31237:63;;;;;;:::i;:::-;;;;;;;;;;31230:70;;;;;;;;31237:63;;;;;;;;31230:70;;-1:-1:-1;;;;;31230:70:113;;;-1:-1:-1;31230:70:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31230:70:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;30996:311:113:o;2080:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;37768:673::-;37893:4;37936:15;;:30;;;-1:-1:-1;;;37936:30:113;;;;37893:4;;37936:15;;;-1:-1:-1;;;;;37936:15:113;;-1:-1:-1;;37936:30:113;;;;;;;;;;;;;;:15;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37909:57;;38047:17;:15;:17::i;:::-;38030:13;38020:7;;:23;;;;:::i;:::-;:44;;:182;;;;-1:-1:-1;38168:34:113;;-1:-1:-1;;;38168:34:113;;;;;34170:25:154;;;-1:-1:-1;;;;;38168:22:113;;;;;34143:18:154;;38168:34:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38117:31;;-1:-1:-1;;;38117:31:113;;;;;34170:25:154;;;38151:13:113;;-1:-1:-1;;;;;38117:19:113;;;;;34143:18:154;;38117:31:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;;;:::i;:::-;:85;;38020:182;:276;;;;;38254:42;38264:10;38276:4;38282:13;38254:9;:42::i;:::-;38020:401;;;;-1:-1:-1;38386:35:113;;-1:-1:-1;;;38386:35:113;;;;;34170:25:154;;;-1:-1:-1;;;;;38386:23:113;;;;;34143:18:154;;38386:35:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30644:18:113;;30621:4;30644:18;;;:9;:18;;;;;;38349:33;;38369:13;;38349:33;:::i;:::-;:72;;38020:401;37976:445;;;37768:673;;;;;;;:::o;14131:967::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;14231:32:::1;14266:29:::0;;;:24:::1;:29;::::0;;;;;;;14231:64;;;;;;;;;-1:-1:-1;;;;;14231:64:113::1;;::::0;::::1;::::0;;;-1:-1:-1;14231:64:113;::::1;::::0;-1:-1:-1;14231:64:113;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;::::1;;;;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;14231:64:113;;;14331:36;;;:15:::1;:36:::0;;;;;14231:64;;14378:714:::1;14399:15:::0;;14395:19;::::1;14378:714;;;14450:3;14435:8;14444:1;14435:11;;;;;;;;:::i;:::-;;;;;;;;;:18;14431:620;;;14477:5;14473:391;;;14529:12:::0;;:19;-1:-1:-1;;;;;14506:43:113::1;;::::0;;;:22:::1;:43;::::0;;;;;;;14550:12;;:22;::::1;::::0;14506:67;;;;;;;:69;;;::::1;::::0;::::1;:::i;:::-;;;;;;14473:391;;;14646:12:::0;;:19;-1:-1:-1;;;;;14622:44:113::1;;::::0;;;:23:::1;:44;::::0;;;;;;;14667:12;;:22;::::1;::::0;14622:68;;;;;;;:70;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;14730:12:113;;:19;-1:-1:-1;;;;;14714:36:113::1;14840:5;14714:36:::0;;;:15:::1;:36;::::0;;;;;;;14751:12;;:22;::::1;::::0;14714:60;;;;;;;14775:12;;:18;::::1;::::0;14714:80;;;;;;;:123:::1;;:131:::0;;-1:-1:-1;;14714:131:113::1;::::0;;14473:391:::1;14905:15:::0;;14896:8;;14905:19:::1;::::0;14923:1:::1;::::0;14905:19:::1;:::i;:::-;14896:29;;;;;;;;:::i;:::-;;;;;;;;;14882:8;14891:1;14882:11;;;;;;;;:::i;:::-;;;;;;;;:43;;;;14943:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;-1:-1:-1;;14943:14:113;;;;;;;;;;;;;;14983:29;;;:24:::1;:29:::0;;;;;14976:36;;-1:-1:-1;;;;;;14976:36:113::1;::::0;;-1:-1:-1;14976:36:113;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;14976:36:113::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;-1:-1:-1;15030:7:113::1;::::0;-1:-1:-1;;15030:7:113::1;14431:620;15076:3;;14378:714;;;;14221:877;;3034:1;14131:967:::0;;:::o;25177:203::-;25245:10;25257:19;;;;:7;:19;;;;;;25226:4;;25219:58;;-1:-1:-1;;;;;25226:4:113;;;;25219:25;:58::i;:::-;25307:10;25319:19;;;;:7;:19;;;;;;;;;;25293:46;;16162:51:154;;;16229:18;;;16222:34;25293:46:113;;16135:18:154;25293:46:113;;;;;;;25357:10;25371:1;25349:19;;;:7;:19;;;;;:23;25177:203::o;4019:290::-;-1:-1:-1;;;;;4079:21:113;;4071:30;;;;;;4133:12;;-1:-1:-1;;;;;4133:12:113;4119:10;:26;4111:53;;;;-1:-1:-1;;;4111:53:113;;26431:2:154;4111:53:113;;;26413:21:154;26470:2;26450:18;;;26443:30;-1:-1:-1;;;26489:18:154;;;26482:44;26543:18;;4111:53:113;26229:338:154;4111:53:113;4193:12;;-1:-1:-1;;;;;4182:23:113;;;4193:12;;4182:23;4174:50;;;;-1:-1:-1;;;4174:50:113;;26431:2:154;4174:50:113;;;26413:21:154;26470:2;26450:18;;;26443:30;-1:-1:-1;;;26489:18:154;;;26482:44;26543:18;;4174:50:113;26229:338:154;4174:50:113;4240:12;;4234:3;:18;;-1:-1:-1;;;;;;4234:18:113;-1:-1:-1;;;;;4240:12:113;;;4234:18;;;;;4267:35;;-1:-1:-1;;;;;;;;;;;23895:2:154;23877:21;;;23934:1;23914:18;;;23907:29;-1:-1:-1;;;23967:2:154;23952:18;;23945:33;-1:-1:-1;;;;;24052:32:154;;;;24045:4;24030:20;;24023:62;24010:3;23995:19;4267:35:113;23665:426:154;24819:280:113;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;24893:11:::1;::::0;24906::::1;::::0;24874:4:::1;::::0;24867:51:::1;::::0;-1:-1:-1;;;;;24874:4:113;;::::1;::::0;24893:11;::::1;::::0;24867:25:::1;:51::i;:::-;24954:3;::::0;24959:11:::1;::::0;24935:4:::1;::::0;24928:43:::1;::::0;-1:-1:-1;;;;;24935:4:113;;::::1;::::0;24954:3;::::1;::::0;24928:25:::1;:43::i;:::-;24999:11;::::0;25012::::1;::::0;25025:3:::1;::::0;25030:11:::1;::::0;24987:55:::1;::::0;;-1:-1:-1;;;;;24999:11:113;;::::1;16536:34:154::0;;16601:2;16586:18;;16579:34;;;;25025:3:113;;;::::1;16629:18:154::0;;;16622:43;16696:2;16681:18;;16674:34;24987:55:113;;::::1;::::0;;;;16485:3:154;24987:55:113;;::::1;25066:1;25052:11;:15:::0;;;25077:11:::1;:15:::0;24819:280::o;36524:121::-;36583:4;36606:28;;;:16;:28;;;;;36635:1;36606:31;;4499:153;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;4564:18:113;::::1;4556:27;;;::::0;::::1;;4593:3;:10:::0;;-1:-1:-1;;;;;;4593:10:113::1;-1:-1:-1::0;;;;;4593:10:113;::::1;::::0;;::::1;::::0;;;4618:27:::1;::::0;;26010:21:154;;;26067:1;26047:18;;;26040:29;;;;-1:-1:-1;;;26100:2:154;26085:18;;26078:33;26178:4;26163:20;;;26156:62;;;;-1:-1:-1;;;4618:27:113;;-1:-1:-1;;;;;;;;;;4618:27:113;26143:3:154;26128:19;4618:27:113::1;25798:426:154::0;27388:163:113;27467:25;;:::i;:::-;-1:-1:-1;27511:33:113;;;;:24;:33;;;;;;;;;27504:40;;;;;;;;;-1:-1:-1;;;;;27504:40:113;;;;;;;-1:-1:-1;27504:40:113;;;-1:-1:-1;27504:40:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27504:40:113;;;;27388:163::o;16785:179::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;16910:33:::1;::::0;;;:23:::1;:33;::::0;;;;;;;;:47;;;;-1:-1:-1;;;;;;16910:47:113::1;-1:-1:-1::0;;;;;16910:47:113;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;16910:47:113;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;16910:47:113;;::::1;::::0;-1:-1:-1;16910:47:113;;;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;;;;;16785:179:113:o;13237:656::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;13412:12;;:19;-1:-1:-1;;;;;13396:36:113;;::::1;;::::0;;;:15:::1;:36;::::0;;;;;;;:46;;-1:-1:-1;13396:46:113;;::::1;::::0;;;;;;;;::::1;::::0;;;13453:29;;;:24:::1;:29:::0;;;;;;:38;;;;;;-1:-1:-1;;;;;;13453:38:113::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;13453:38:113;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;13453:38:113::1;::::0;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;13539:12:::1;13453:38;::::0;;::::1;13501:50:::0;13562:325;::::1;;;13610:12:::0;;:19;-1:-1:-1;;;;;13587:43:113::1;;::::0;;;:22:::1;:43;::::0;;;;;;;13631:12;;:22;::::1;::::0;13587:67;;;;;;;:69;;;::::1;::::0;::::1;:::i;:::-;;;;;;25675:283:::0;;;:::o;13562:325::-:1;13711:12:::0;;:19;-1:-1:-1;;;;;13687:44:113::1;;::::0;;;:23:::1;:44;::::0;;;;;;;13732:12;;:22;::::1;::::0;13687:68;;;;;;;:70;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;13787:12:113;;:19;-1:-1:-1;;;;;13771:36:113::1;;::::0;;;:15:::1;:36;::::0;;;;;;;13808:12;;:22;::::1;::::0;13771:60;;;;;;;13832:12;;:18;::::1;::::0;13771:80;;;;;;;;;:98:::1;;:105:::0;;-1:-1:-1;;13771:105:113::1;-1:-1:-1::0;13771:105:113::1;::::0;;-1:-1:-1;;13237:656:113:o;8141:230::-;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;8249:1:::1;8229:17;:21;8221:30;;;::::0;::::1;;8261:16;:36:::0;;;8312:52:::1;::::0;;28393:21:154;;;28450:2;28430:18;;;28423:30;;;;-1:-1:-1;;;28484:2:154;28469:18;;28462:46;28575:4;28560:20;;28553:36;;;8312:52:113::1;::::0;28540:3:154;28525:19;8312:52:113::1;28181:414:154::0;26091:150:113;26208:6;;26172:12;;;:33;;;-1:-1:-1;;;26172:33:113;;;;26148:4;;26231:3;;718:4;;26208:6;;-1:-1:-1;;;;;26172:12:113;;;;:31;;:33;;;;;;;;;;;;:12;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;;;:::i;:::-;26171:57;;;;:::i;:::-;:63;;;;:::i;:::-;26164:70;;26091:150;:::o;33366:373::-;33487:15;:22;33467:4;;33483:70;;-1:-1:-1;33537:5:113;33530:12;;33483:70;-1:-1:-1;;;;;33605:25:113;;33562:24;33605:25;;;:17;:25;;;;;;;;:36;;;;;;;;:43;;;;;;;;;33589:15;:60;;:15;;33605:43;33589:60;;;;;;:::i;:::-;;;;;;;;;;;;;;33666:8;;33589:60;;-1:-1:-1;;;;;;33666:18:113;;;:8;;:18;:46;;;;;33703:9;33688:1;:11;;;:24;33666:46;:66;;;;;33727:5;33716:1;:7;;;:16;33666:66;33659:73;33366:373;-1:-1:-1;;;;;33366:373:113:o;9041:208::-;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;9179:6:::1;:16:::0;;;9210:32:::1;::::0;;25177:21:154;;;25234:1;25214:18;;;25207:29;;;;-1:-1:-1;;;25267:2:154;25252:18;;25245:36;25348:4;25333:20;;25326:36;;;9210:32:113::1;::::0;25313:3:154;25298:19;9210:32:113::1;24965:403:154::0;2351:45:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2351:45:113;;-1:-1:-1;2351:45:113;;-1:-1:-1;2351:45:113:o;8594:272::-;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;8720:1:::1;8694:23;:27;8686:36;;;::::0;::::1;;8732:22;:48:::0;;;8795:64:::1;::::0;;25585:21:154;;;25642:2;25622:18;;;25615:30;;;;-1:-1:-1;;;25676:2:154;25661:18;;25654:52;25773:4;25758:20;;25751:36;;;8795:64:113::1;::::0;25738:3:154;25723:19;8795:64:113::1;25373:420:154::0;21057:424:113;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;21211:9;;-1:-1:-1;;;;;21199:22:113::1;21181:15;21199:22:::0;;;:11:::1;:22;::::0;;;;;;;21222:12;;::::1;::::0;21199:36;;;;;;;21236:8;;::::1;::::0;21199:46;;;;;;;21259:10:::1;::::0;::::1;::::0;21255:52:::1;;21290:7;3269:483:24::0;3200:176:113:o;21255:52::-:1;21336:18;::::0;::::1;::::0;21316:17:::1;::::0;::::1;:38:::0;21385:19:::1;::::0;::::1;::::0;21364:18:::1;::::0;::::1;:40:::0;21428:12:::1;::::0;::::1;::::0;21414:11:::1;::::0;::::1;:26:::0;21463:11:::1;::::0;::::1;::::0;21450:10:::1;::::0;;::::1;:24:::0;21057:424;:::o;30185:160::-;30250:4;30307:28;;;:16;:28;;;;;30336:1;30307:31;;;30273;;:65;;30307:31;30273:65;:::i;9545:1007::-;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;9682:53:::1;9703:6;:13;;;9718:6;:16;;;9682:20;:53::i;:::-;9667:12;::::0;;::::1;:68:::0;;;9757:13;;-1:-1:-1;;;;;9745:26:113;;::::1;;::::0;;;:11:::1;:26;::::0;;;;;;9772:16;;::::1;::::0;;9745:44;;;;;;;;9790:12;;9745:58;;;;;;;:67;;;;-1:-1:-1;;;;;;9745:67:113::1;::::0;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;9745:67:113;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;9745:67:113;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;9745:67:113::1;::::0;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;;9823:31;;;:16:::1;:31:::0;;;;;9855:16;;9823:49;;;;;;;:51;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;9906:13:113;;-1:-1:-1;;;;;9889:31:113::1;;::::0;;;:16:::1;:31;::::0;;;;;;;9921:16;;::::1;::::0;9889:49;;;;;;;;-1:-1:-1;9889:54:113::1;9885:233;;;10020:16;::::0;;::::1;::::0;;10008:29:::1;::::0;;;:11:::1;:29:::0;;;;;;;:36;9973:13;;-1:-1:-1;;;;;9959:28:113;;::::1;::::0;;:13:::1;:28:::0;;;;;9988:16;;9959:46;;;;;;;:85;;;;10070:16;;10058:29;;;;;;;10093:13;;10058:49;;-1:-1:-1;10058:49:113;::::1;::::0;;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10058:49:113::1;::::0;;;::::1;::::0;;;::::1;::::0;;9885:233:::1;10159:5;10128:28;::::0;::::1;:36:::0;;;10190:13;;-1:-1:-1;;;;;10174:30:113;;::::1;::::0;;:15:::1;:30;::::0;;;;;;;10205:16;;::::1;::::0;10174:48;;;;;;;10223:12;;::::1;::::0;10174:62;;;;;;;:75;;;;;;::::1;::::0;-1:-1:-1;10174:75:113;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;10174:75:113::1;::::0;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;10295:15;;:30;;-1:-1:-1;;;10295:30:113;;;;:15;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;10295:30:113;;::::1;::::0;10174;10295;;;;;;;;:15;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10360:13:::0;;10375:16:::1;::::0;::::1;::::0;10393:12:::1;::::0;;::::1;::::0;10335:78;;-1:-1:-1;;;10335:78:113;;-1:-1:-1;;;;;17744:32:154;;;10335:78:113::1;::::0;::::1;17726:51:154::0;17793:18;;;17786:34;;;;17836:18;;;17829:34;17906:14;;17899:22;17879:18;;;17872:50;10268:57:113;;-1:-1:-1;10335:24:113;::::1;::::0;::::1;::::0;17698:19:154;;10335:78:113::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10424:121;10448:6;:13;;;10463:6;:16;;;10481:10;:27;;;10510:4;10516:6;:10;;;10528:6;:16;;;10424:23;:121::i;5283:204::-:0;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;5365:23:113;::::1;5357:32;;;::::0;::::1;;-1:-1:-1::0;;;;;5399:28:113;::::1;;::::0;;;:17:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;5399:35:113::1;-1:-1:-1::0;5399:35:113::1;::::0;;5449:31;;14878:51:154;;;5449:31:113::1;::::0;14851:18:154;5449:31:113::1;14732:203:154::0;17358:366:113;3012:10;2994:29;;;;:17;:29;;;;;;;;2986:38;;;;;;17462:47:::1;17487:1;:8;;;17497:1;:11;;;17462:24;:47::i;:::-;17452:7;::::0;::::1;:57:::0;;;17529:12:::1;17519:7;::::0;::::1;:22:::0;;;17551:15:::1;:23:::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;17551:23:113;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;17551:23:113::1;-1:-1:-1::0;;;;;17551:23:113;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;17551:23:113::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17551:23:113;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;;17636:22;:26:::1;::::0;17551:23;17636:26:::1;:::i;:::-;17602:8:::0;;-1:-1:-1;;;;;17584:27:113;;::::1;;::::0;;;:17:::1;:27;::::0;;;;;;;17612:11;;::::1;::::0;;17584:40;;;;;;;;17625:7;;::::1;::::0;17584:49;;;;;;;:78;;;;17693:8;;17672:30;;::::1;::::0;;:20:::1;:30:::0;;;;;17703:11;;17672:43;;;;;;;;:45;;;::::1;::::0;::::1;:::i;:::-;;;;;;17358:366:::0;:::o;7708:212::-;2925:3;;-1:-1:-1;;;;;2925:3:113;2911:10;:17;2903:26;;;;;;-1:-1:-1;;;;;7786:25:113;::::1;7778:34;;;::::0;::::1;;7822:10;:36:::0;;-1:-1:-1;;;;;;7822:36:113::1;-1:-1:-1::0;;;;;7822:36:113;::::1;::::0;;::::1;::::0;;;7873:40:::1;::::0;;24308:21:154;;;24365:1;24345:18;;;24338:29;;;;-1:-1:-1;;;24398:2:154;24383:18;;24376:39;24482:4;24467:20;;;24460:62;;;;-1:-1:-1;;;7873:40:113;;-1:-1:-1;;;;;;;;;;7873:40:113;24447:3:154;24432:19;7873:40:113::1;24096:432:154::0;941:175:68;1050:58;;-1:-1:-1;;;;;16180:32:154;;1050:58:68;;;16162:51:154;16229:18;;;16222:34;;;1023:86:68;;1043:5;;-1:-1:-1;;;;16135:18:154;;1050:58:68;;;;-1:-1:-1;;1050:58:68;;;;;;;;;;;;;;-1:-1:-1;;;;;1050:58:68;-1:-1:-1;;;;;;1050:58:68;;;;;;;;;;;1023:19;:86::i;130:127:130:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;34149:1603:113:-;34349:10;34362:5;:13;;34374:1;34362:13;;;34370:1;34362:13;34385:17;34405:28;;;:16;:28;;;;;34349:26;;;;;;-1:-1:-1;34501:5:113;34496:91;;34548:1;34550:5;34548:8;;;;;;;:::i;:::-;;;34528:17;:28;:59;;34570:17;34528:59;;;34559:1;34561:5;34559:8;;;;;;;:::i;:::-;;;34528:59;34508:79;;34496:91;34609:5;:67;;34659:17;34648:1;34650:5;34648:8;;;;;;;:::i;:::-;;;:28;;;;:::i;:::-;34609:67;;;34628:17;34617:1;34619:5;34617:8;;;;;;;:::i;:::-;;;:28;;;;:::i;:::-;34598:1;34600:5;34598:8;;;;;;;:::i;:::-;;:78;34696:5;:65;;34744:17;34734:7;;:27;;;;:::i;:::-;34696:65;;;34714:17;34704:7;;:27;;;;:::i;:::-;34686:7;:75;34792:5;:87;;-1:-1:-1;;;;;34841:18:113;;;;;;:9;:18;;;;;;:38;;34862:17;;34841:38;:::i;:::-;34792:87;;;-1:-1:-1;;;;;34800:18:113;;;;;;:9;:18;;;;;;:38;;34821:17;;34800:38;:::i;:::-;-1:-1:-1;;;;;34771:18:113;;;;;;:9;:18;;;;;;;;:108;;;;34925:19;;;:7;:19;;;;;34945:12;34925:33;;;;;;:53;;34961:17;;34925:53;:::i;:::-;34889:19;;;;:7;:19;;;;;;;;34909:12;34889:33;;;;;;;:89;;;;35016:15;;:30;;-1:-1:-1;;;35016:30:113;;;;34889:19;;35016:15;;;;-1:-1:-1;;;;;35016:15:113;;-1:-1:-1;;35016:30:113;;;;;34889:19;;35016:30;;;;;;:15;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35101:36;;-1:-1:-1;;;35101:36:113;;;;;34170:25:154;;;34989:57:113;;-1:-1:-1;;;;;;35101:24:113;;;;;34143:18:154;;35101:36:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35064:19;;;;:7;:19;;;;;;;;35084:12;35064:33;;;;;;;;:73;;35056:109;;;;-1:-1:-1;;;35056:109:113;;27181:2:154;35056:109:113;;;27163:21:154;27220:2;27200:18;;;27193:30;27259:25;27239:18;;;27232:53;27302:18;;35056:109:113;26979:347:154;35056:109:113;35179:38;;-1:-1:-1;;;35179:38:113;;;;;34170:25:154;;;-1:-1:-1;;;;;35179:26:113;;;;;34143:18:154;;35179:38:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35221:1;35179:43;35176:483;;;35259:37;;-1:-1:-1;;;35259:37:113;;;;;34170:25:154;;;35238:18:113;;-1:-1:-1;;;;;35259:25:113;;;;;34143:18:154;;35259:37:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35238:58;;35310:17;35330:5;:13;;35342:1;35330:13;;;35338:1;35330:13;35310:33;;;;35360:13;35357:292;;;35408:5;:75;;35466:17;35451:5;35457;35451:12;;;;;;;:::i;:::-;;;:32;;;;:::i;:::-;35408:75;;;35431:17;35416:5;35422;35416:12;;;;;;;:::i;:::-;;;:32;;;;:::i;:::-;35393:5;35399;35393:12;;;;;;;:::i;:::-;;:90;35357:292;;;35545:5;:89;;35617:17;35595:5;35601:12;35595:19;;;;;;;:::i;:::-;;;:39;;;;:::i;:::-;35545:89;;;35575:17;35553:5;35559:12;35553:19;;;;;;;:::i;:::-;;;:39;;;;:::i;:::-;35522:5;35528:12;35522:19;;;;;;;:::i;:::-;;:112;35357:292;35224:435;;35176:483;35683:62;;;21943:14:154;;21936:22;21918:41;;22002:14;;21995:22;21990:2;21975:18;;21968:50;22034:18;;;22027:34;;;22092:2;22077:18;;22070:34;;;22135:3;22120:19;;22113:35;;;35683:62:113;;21905:3:154;21890:19;35683:62:113;;;;;;;34339:1413;;;34149:1603;;;;;;:::o;1355:203:68:-;1482:68;;-1:-1:-1;;;;;15198:15:154;;;1482:68:68;;;15180:34:154;15250:15;;15230:18;;;15223:43;15282:18;;;15275:34;;;1455:96:68;;1475:5;;-1:-1:-1;;;;15115:18:154;;1482:68:68;14940:375:154;5196:642:68;5641:69;;;;;;;;;;;;;;;;;;-1:-1:-1;;5641:69:68;;-1:-1:-1;;;;;5641:27:68;;;5669:4;;5641:27;:69::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;-1:-1:-1;;;5720:111:68;;31171:2:154;5720:111:68;;;31153:21:154;31210:2;31190:18;;;31183:30;31249:34;31229:18;;;31222:62;-1:-1:-1;;;31300:18:154;;;31293:40;31350:19;;5720:111:68;30969:406:154;4108:223:70;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4241;5446;5460:23;5487:6;-1:-1:-1;;;;;5487:11:70;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;5165:446;-1:-1:-1;;;;;;;5165:446:70:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:17;;7902:286;;-1:-1:-1;;;;;1713:19:37;;;8113:60:70;;;;-1:-1:-1;;;8113:60:70;;30377:2:154;8113:60:70;;;30359:21:154;30416:2;30396:18;;;30389:30;30455:31;30435:18;;;30428:59;30504:18;;8113:60:70;30175:353:154;8113:60:70;-1:-1:-1;8208:10:70;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9324:20;;-1:-1:-1;;;9324:20:70;;;;9331:12;;9324:20;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;14:134:154:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:950::-;338:5;386:6;374:9;369:3;365:19;361:32;358:52;;;406:1;403;396:12;358:52;428:22;;:::i;:::-;419:31;;473:29;492:9;473:29;:::i;:::-;466:5;459:44;563:2;552:9;548:18;535:32;530:2;523:5;519:14;512:56;628:2;617:9;613:18;600:32;595:2;588:5;584:14;577:56;693:2;682:9;678:18;665:32;660:2;653:5;649:14;642:56;759:3;748:9;744:19;731:33;725:3;718:5;714:15;707:58;826:3;815:9;811:19;798:33;792:3;785:5;781:15;774:58;865:36;896:3;885:9;881:19;865:36;:::i;:::-;859:3;852:5;848:15;841:61;963:3;952:9;948:19;935:33;929:3;922:5;918:15;911:58;988:3;1051:2;1040:9;1036:18;1023:32;1018:2;1011:5;1007:14;1000:56;;1075:3;1138:2;1127:9;1123:18;1110:32;1105:2;1098:5;1094:14;1087:56;;1162:3;1225:2;1214:9;1210:18;1197:32;1192:2;1185:5;1181:14;1174:56;;286:950;;;;:::o;1241:247::-;1300:6;1353:2;1341:9;1332:7;1328:23;1324:32;1321:52;;;1369:1;1366;1359:12;1321:52;1408:9;1395:23;1427:31;1452:5;1427:31;:::i;1493:456::-;1570:6;1578;1586;1639:2;1627:9;1618:7;1614:23;1610:32;1607:52;;;1655:1;1652;1645:12;1607:52;1694:9;1681:23;1713:31;1738:5;1713:31;:::i;:::-;1763:5;-1:-1:-1;1820:2:154;1805:18;;1792:32;1833:33;1792:32;1833:33;:::i;:::-;1493:456;;1885:7;;-1:-1:-1;;;1939:2:154;1924:18;;;;1911:32;;1493:456::o;1954:315::-;2022:6;2030;2083:2;2071:9;2062:7;2058:23;2054:32;2051:52;;;2099:1;2096;2089:12;2051:52;2138:9;2125:23;2157:31;2182:5;2157:31;:::i;:::-;2207:5;2259:2;2244:18;;;;2231:32;;-1:-1:-1;;;1954:315:154:o;2274:383::-;2351:6;2359;2367;2420:2;2408:9;2399:7;2395:23;2391:32;2388:52;;;2436:1;2433;2426:12;2388:52;2475:9;2462:23;2494:31;2519:5;2494:31;:::i;:::-;2544:5;2596:2;2581:18;;2568:32;;-1:-1:-1;2647:2:154;2632:18;;;2619:32;;2274:383;-1:-1:-1;;;2274:383:154:o;2662:519::-;2745:6;2753;2761;2769;2822:3;2810:9;2801:7;2797:23;2793:33;2790:53;;;2839:1;2836;2829:12;2790:53;2878:9;2865:23;2897:31;2922:5;2897:31;:::i;:::-;2947:5;-1:-1:-1;2999:2:154;2984:18;;2971:32;;-1:-1:-1;3050:2:154;3035:18;;3022:32;;-1:-1:-1;3106:2:154;3091:18;;3078:32;3119:30;3078:32;3119:30;:::i;:::-;2662:519;;;;-1:-1:-1;2662:519:154;;-1:-1:-1;;2662:519:154:o;3186:791::-;3281:6;3289;3297;3305;3313;3321;3374:3;3362:9;3353:7;3349:23;3345:33;3342:53;;;3391:1;3388;3381:12;3342:53;3430:9;3417:23;3449:31;3474:5;3449:31;:::i;:::-;3499:5;-1:-1:-1;3551:2:154;3536:18;;3523:32;;-1:-1:-1;3602:2:154;3587:18;;3574:32;;-1:-1:-1;3658:2:154;3643:18;;3630:32;3671:30;3630:32;3671:30;:::i;:::-;3720:7;-1:-1:-1;3779:3:154;3764:19;;3751:33;3793:30;3751:33;3793:30;:::i;:::-;3842:7;-1:-1:-1;3901:3:154;3886:19;;3873:33;3915:30;3873:33;3915:30;:::i;:::-;3964:7;3954:17;;;3186:791;;;;;;;;:::o;3982:725::-;4091:6;4099;4107;4115;4123;4131;4139;4192:3;4180:9;4171:7;4167:23;4163:33;4160:53;;;4209:1;4206;4199:12;4160:53;4248:9;4235:23;4267:31;4292:5;4267:31;:::i;:::-;4317:5;-1:-1:-1;4369:2:154;4354:18;;4341:32;;-1:-1:-1;4420:2:154;4405:18;;4392:32;;-1:-1:-1;4476:2:154;4461:18;;4448:32;4489:30;4448:32;4489:30;:::i;:::-;3982:725;;;;-1:-1:-1;3982:725:154;;4592:3;4577:19;;4564:33;;4644:3;4629:19;;4616:33;;-1:-1:-1;4696:3:154;4681:19;;;4668:33;;-1:-1:-1;3982:725:154;-1:-1:-1;;3982:725:154:o;4712:452::-;4798:6;4806;4814;4822;4875:3;4863:9;4854:7;4850:23;4846:33;4843:53;;;4892:1;4889;4882:12;4843:53;4931:9;4918:23;4950:31;4975:5;4950:31;:::i;:::-;5000:5;5052:2;5037:18;;5024:32;;-1:-1:-1;5103:2:154;5088:18;;5075:32;;5154:2;5139:18;5126:32;;-1:-1:-1;4712:452:154;-1:-1:-1;;;4712:452:154:o;5169:241::-;5225:6;5278:2;5266:9;5257:7;5253:23;5249:32;5246:52;;;5294:1;5291;5284:12;5246:52;5333:9;5320:23;5352:28;5374:5;5352:28;:::i;5415:245::-;5482:6;5535:2;5523:9;5514:7;5510:23;5506:32;5503:52;;;5551:1;5548;5541:12;5503:52;5583:9;5577:16;5602:28;5624:5;5602:28;:::i;5665:274::-;5758:6;5811:2;5799:9;5790:7;5786:23;5782:32;5779:52;;;5827:1;5824;5817:12;5779:52;5859:9;5853:16;5878:31;5903:5;5878:31;:::i;5944:203::-;6039:6;6092:3;6080:9;6071:7;6067:23;6063:33;6060:53;;;6109:1;6106;6099:12;6060:53;-1:-1:-1;6132:9:154;5944:203;-1:-1:-1;5944:203:154:o;6152:1108::-;6245:6;6298:3;6286:9;6277:7;6273:23;6269:33;6266:53;;;6315:1;6312;6305:12;6266:53;6341:22;;:::i;:::-;6386:29;6405:9;6386:29;:::i;:::-;6379:5;6372:44;6476:2;6465:9;6461:18;6448:32;6443:2;6436:5;6432:14;6425:56;6541:2;6530:9;6526:18;6513:32;6508:2;6501:5;6497:14;6490:56;6606:2;6595:9;6591:18;6578:32;6573:2;6566:5;6562:14;6555:56;6644:36;6675:3;6664:9;6660:19;6644:36;:::i;:::-;6638:3;6627:15;;6620:61;6742:3;6727:19;;;6714:33;6697:15;;;6690:58;6809:3;6794:19;;;6781:33;6764:15;;;6757:58;6876:3;6861:19;;;6848:33;6831:15;;;6824:58;6901:3;6949:18;;;6936:32;6920:14;;;6913:56;6988:3;7036:18;;;7023:32;7007:14;;;7000:56;7075:3;7123:18;;;7110:32;7094:14;;;7087:56;7162:3;7210:18;;;7197:32;7181:14;;;7174:56;;;;-1:-1:-1;6631:5:154;6152:1108;-1:-1:-1;6152:1108:154:o;7265:864::-;7360:6;7413:3;7401:9;7392:7;7388:23;7384:33;7381:53;;;7430:1;7427;7420:12;7381:53;7463:2;7457:9;7505:3;7497:6;7493:16;7575:6;7563:10;7560:22;7539:18;7527:10;7524:34;7521:62;7518:185;;;7625:10;7620:3;7616:20;7613:1;7606:31;7660:4;7657:1;7650:15;7688:4;7685:1;7678:15;7518:185;7719:2;7712:22;7758:16;;7743:32;;7818:2;7803:18;;7797:25;7851:1;7841:12;;7831:40;;7867:1;7864;7857:12;7831:40;7899:2;7887:15;;7880:30;7964:2;7949:18;;;7943:25;7926:15;;;7919:50;8014:2;7999:18;;7993:25;8027:30;7993:25;8027:30;:::i;:::-;8085:2;8073:15;;8066:32;8077:6;7265:864;-1:-1:-1;;;7265:864:154:o;8134:774::-;8239:6;8247;8291:9;8282:7;8278:23;8321:3;8317:2;8313:12;8310:32;;;8338:1;8335;8328:12;8310:32;8362:4;8358:2;8354:13;8351:33;;;8380:1;8377;8370:12;8351:33;;8406:22;;:::i;:::-;8465:9;8452:23;8484:33;8509:7;8484:33;:::i;:::-;8540:7;8533:5;8526:22;;8608:2;8597:9;8593:18;8580:32;8575:2;8568:5;8564:14;8557:56;8673:2;8662:9;8658:18;8645:32;8640:2;8633:5;8629:14;8622:56;8730:2;8719:9;8715:18;8702:32;8765:1;8756:7;8753:14;8743:42;;8781:1;8778;8771:12;8743:42;8812:2;8801:14;;8794:31;8805:5;8896:4;8881:20;;;;8868:34;;-1:-1:-1;;;8134:774:154:o;8913:806::-;9025:6;9033;9041;9085:9;9076:7;9072:23;9115:3;9111:2;9107:12;9104:32;;;9132:1;9129;9122:12;9104:32;9155:6;9181:2;9177;9173:11;9170:31;;;9197:1;9194;9187:12;9170:31;9223:22;;:::i;:::-;9210:35;;9268:43;9303:7;9292:9;9268:43;:::i;:::-;9254:58;;9374:3;9359:19;;9346:33;9339:4;9328:16;;9321:59;9442:3;9427:19;;9414:33;9407:4;9396:16;;9389:59;9510:3;9495:19;;9482:33;9475:4;9464:16;;9457:59;9261:5;;-1:-1:-1;9572:18:154;;9559:32;;-1:-1:-1;9643:3:154;9628:19;;9615:33;9657:30;9615:33;9657:30;:::i;:::-;9706:7;9696:17;;;8913:806;;;;;:::o;9724:226::-;9808:6;9861:3;9849:9;9840:7;9836:23;9832:33;9829:53;;;9878:1;9875;9868:12;9829:53;9901:43;9936:7;9925:9;9901:43;:::i;9955:941::-;10083:6;10091;10099;10143:9;10134:7;10130:23;10173:3;10169:2;10165:12;10162:32;;;10190:1;10187;10180:12;10162:32;10213:43;10248:7;10237:9;10213:43;:::i;:::-;10203:53;-1:-1:-1;10291:4:154;-1:-1:-1;;10272:17:154;;10268:28;10265:48;;;10309:1;10306;10299:12;10265:48;;10335:17;;:::i;:::-;10403:3;10392:9;10388:19;10375:33;10368:5;10361:48;10469:3;10458:9;10454:19;10441:33;10436:2;10429:5;10425:14;10418:57;10535:3;10524:9;10520:19;10507:33;10502:2;10495:5;10491:14;10484:57;10593:3;10582:9;10578:19;10565:33;10607:30;10629:7;10607:30;:::i;:::-;10664:2;10653:14;;10646:31;10738:3;10723:19;;10710:33;10704:3;10693:15;;10686:58;10657:5;-1:-1:-1;10820:3:154;10805:19;;10792:33;10834:30;10792:33;10834:30;:::i;10901:180::-;10960:6;11013:2;11001:9;10992:7;10988:23;10984:32;10981:52;;;11029:1;11026;11019:12;10981:52;-1:-1:-1;11052:23:154;;10901:180;-1:-1:-1;10901:180:154:o;11086:184::-;11156:6;11209:2;11197:9;11188:7;11184:23;11180:32;11177:52;;;11225:1;11222;11215:12;11177:52;-1:-1:-1;11248:16:154;;11086:184;-1:-1:-1;11086:184:154:o;11275:373::-;11363:6;11371;11379;11432:2;11420:9;11411:7;11407:23;11403:32;11400:52;;;11448:1;11445;11438:12;11400:52;11477:9;11471:16;11461:26;;11530:2;11519:9;11515:18;11509:25;11543:31;11568:5;11543:31;:::i;:::-;11593:5;11583:15;;;11638:2;11627:9;11623:18;11617:25;11607:35;;11275:373;;;;;:::o;11653:309::-;11718:6;11726;11779:2;11767:9;11758:7;11754:23;11750:32;11747:52;;;11795:1;11792;11785:12;11747:52;11831:9;11818:23;11808:33;;11891:2;11880:9;11876:18;11863:32;11904:28;11926:5;11904:28;:::i;:::-;11951:5;11941:15;;;11653:309;;;;;:::o;11967:377::-;12041:6;12049;12057;12110:2;12098:9;12089:7;12085:23;12081:32;12078:52;;;12126:1;12123;12116:12;12078:52;12162:9;12149:23;12139:33;;12222:2;12211:9;12207:18;12194:32;12235:28;12257:5;12235:28;:::i;12349:248::-;12417:6;12425;12478:2;12466:9;12457:7;12453:23;12449:32;12446:52;;;12494:1;12491;12484:12;12446:52;-1:-1:-1;;12517:23:154;;;12587:2;12572:18;;;12559:32;;-1:-1:-1;12349:248:154:o;12807:861::-;12894:12;;-1:-1:-1;;;;;12668:31:154;12656:44;;12961:4;12954:5;12950:16;12944:23;12937:4;12932:3;12928:14;12921:47;13017:4;13010:5;13006:16;13000:23;12993:4;12988:3;12984:14;12977:47;13073:4;13066:5;13062:16;13056:23;13049:4;13044:3;13040:14;13033:47;13126:4;13119:5;13115:16;13109:23;13141:45;13180:4;13175:3;13171:14;13157:12;12781:13;12774:21;12762:34;;12711:91;13141:45;-1:-1:-1;13235:4:154;13224:16;;;13218:23;13202:14;;;13195:47;13291:4;13280:16;;;13274:23;13258:14;;;13251:47;13347:4;13336:16;;;13330:23;13314:14;;;13307:47;13373:6;13415:14;;;13409:21;13395:12;;;13388:43;13450:6;13492:14;;;13486:21;13472:12;;;13465:43;13527:6;13569:14;;;13563:21;13549:12;;;13542:43;13604:6;13646:14;;;13640:21;13626:12;;13619:43;12807:861::o;13673:775::-;13751:12;;-1:-1:-1;;;;;12668:31:154;12656:44;;13818:4;13811:5;13807:16;13801:23;13794:4;13789:3;13785:14;13778:47;13874:4;13867:5;13863:16;13857:23;13850:4;13845:3;13841:14;13834:47;13930:4;13923:5;13919:16;13913:23;13906:4;13901:3;13897:14;13890:47;13986:4;13979:5;13975:16;13969:23;13962:4;13957:3;13953:14;13946:47;14042:4;14035:5;14031:16;14025:23;14018:4;14013:3;14009:14;14002:47;14095:4;14088:5;14084:16;14078:23;14110:45;14149:4;14144:3;14140:14;14126:12;12781:13;12774:21;12762:34;;12711:91;14110:45;-1:-1:-1;14204:4:154;14193:16;;;14187:23;14171:14;;;14164:47;14230:6;14272:14;;;14266:21;14252:12;;;14245:43;14307:6;14349:14;;;14343:21;14329:12;;;14322:43;14384:6;14426:14;;;14420:21;14406:12;;14399:43;13673:775::o;14453:274::-;14582:3;14620:6;14614:13;14636:53;14682:6;14677:3;14670:4;14662:6;14658:17;14636:53;:::i;:::-;14705:16;;;;;14453:274;-1:-1:-1;;14453:274:154:o;18945:658::-;19116:2;19168:21;;;19238:13;;19141:18;;;19260:22;;;19087:4;;19116:2;19339:15;;;;19313:2;19298:18;;;19087:4;19382:195;19396:6;19393:1;19390:13;19382:195;;;19461:13;;-1:-1:-1;;;;;19457:39:154;19445:52;;19552:15;;;;19517:12;;;;-1:-1:-1;19411:9:154;19382:195;;;-1:-1:-1;19594:3:154;;18945:658;-1:-1:-1;;;;;;18945:658:154:o;19608:730::-;19847:2;19899:21;;;19969:13;;19872:18;;;19991:22;;;19818:4;;19847:2;20070:15;;;;20044:2;20029:18;;;19818:4;20113:199;20127:6;20124:1;20121:13;20113:199;;;20176:52;20224:3;20215:6;20209:13;20176:52;:::i;:::-;20287:15;;;;20257:6;20248:16;;;;;20149:1;20142:9;20113:199;;20343:494;20523:2;20508:18;;20512:9;20603:6;20481:4;20637:194;20651:4;20648:1;20645:11;20637:194;;;20710:13;;20698:26;;20747:4;20771:12;;;;20806:15;;;;20671:1;20664:9;20637:194;;;20641:3;;;20343:494;;;;:::o;20842:632::-;21013:2;21065:21;;;21135:13;;21038:18;;;21157:22;;;20984:4;;21013:2;21236:15;;;;21210:2;21195:18;;;20984:4;21279:169;21293:6;21290:1;21287:13;21279:169;;;21354:13;;21342:26;;21423:15;;;;21388:12;;;;21315:1;21308:9;21279:169;;23277:383;23426:2;23415:9;23408:21;23389:4;23458:6;23452:13;23501:6;23496:2;23485:9;23481:18;23474:34;23517:66;23576:6;23571:2;23560:9;23556:18;23551:2;23543:6;23539:15;23517:66;:::i;:::-;23644:2;23623:15;-1:-1:-1;;23619:29:154;23604:45;;;;23651:2;23600:54;;23277:383;-1:-1:-1;;23277:383:154:o;31824:272::-;32026:3;32011:19;;32039:51;32015:9;32072:6;32039:51;:::i;32101:674::-;32344:13;;-1:-1:-1;;;;;32340:39:154;32322:58;;32436:4;32424:17;;;32418:24;32396:20;;;32389:54;32499:4;32487:17;;;32481:24;32459:20;;;32452:54;32553:4;32541:17;;32535:24;32309:3;32294:19;;;32595:1;32578:19;;32568:150;;32640:10;32635:3;32631:20;32628:1;32621:31;32675:4;32672:1;32665:15;32703:4;32700:1;32693:15;32568:150;32756:12;32749:4;32738:9;32734:20;32727:42;;32101:674;;;;:::o;32780:473::-;32948:4;32990:3;32979:9;32975:19;32967:27;;33003:49;33042:9;33033:6;33027:13;33003:49;:::i;:::-;33110:4;33098:17;;33092:24;33083:6;33068:22;;33061:56;33175:4;33163:17;;33157:24;33148:6;33133:22;;33126:56;33240:4;33228:17;;;33222:24;33213:6;33198:22;;;33191:56;32780:473;:::o;33774:245::-;33958:3;33943:19;;33971:42;33947:9;33995:6;33971:42;:::i;35856:352::-;35928:2;35922:9;35970:6;35958:19;;36007:18;35992:34;;36028:22;;;35989:62;35986:185;;;36093:10;36088:3;36084:20;36081:1;36074:31;36128:4;36125:1;36118:15;36156:4;36153:1;36146:15;35986:185;36187:2;36180:22;35856:352;:::o;36213:349::-;36285:2;36279:9;36327:3;36315:16;;36361:18;36346:34;;36382:22;;;36343:62;36340:185;;;36447:10;36442:3;36438:20;36435:1;36428:31;36482:4;36479:1;36472:15;36510:4;36507:1;36500:15;36567:350;36639:2;36633:9;36681:4;36669:17;;36716:18;36701:34;;36737:22;;;36698:62;36695:185;;;36802:10;36797:3;36793:20;36790:1;36783:31;36837:4;36834:1;36827:15;36865:4;36862:1;36855:15;36922:345;36989:2;36983:9;37031:4;37019:17;;37066:18;37051:34;;37087:22;;;37048:62;37045:185;;;37152:10;37147:3;37143:20;37140:1;37133:31;37187:4;37184:1;37177:15;37215:4;37212:1;37205:15;37272:128;37312:3;37343:1;37339:6;37336:1;37333:13;37330:39;;;37349:18;;:::i;:::-;-1:-1:-1;37385:9:154;;37272:128::o;37405:217::-;37445:1;37471;37461:132;;37515:10;37510:3;37506:20;37503:1;37496:31;37550:4;37547:1;37540:15;37578:4;37575:1;37568:15;37461:132;-1:-1:-1;37607:9:154;;37405:217::o;37627:168::-;37667:7;37733:1;37729;37725:6;37721:14;37718:1;37715:21;37710:1;37703:9;37696:17;37692:45;37689:71;;;37740:18;;:::i;:::-;-1:-1:-1;37780:9:154;;37627:168::o;37800:125::-;37840:4;37868:1;37865;37862:8;37859:34;;;37873:18;;:::i;:::-;-1:-1:-1;37910:9:154;;37800:125::o;37930:258::-;38002:1;38012:113;38026:6;38023:1;38020:13;38012:113;;;38102:11;;;38096:18;38083:11;;;38076:39;38048:2;38041:10;38012:113;;;38143:6;38140:1;38137:13;38134:48;;;-1:-1:-1;;38178:1:154;38160:16;;38153:27;37930:258::o;38193:136::-;38232:3;38260:5;38250:39;;38269:18;;:::i;:::-;-1:-1:-1;;;38305:18:154;;38193:136::o;38334:135::-;38373:3;-1:-1:-1;;38394:17:154;;38391:43;;;38414:18;;:::i;:::-;-1:-1:-1;38461:1:154;38450:13;;38334:135::o;38474:127::-;38535:10;38530:3;38526:20;38523:1;38516:31;38566:4;38563:1;38556:15;38590:4;38587:1;38580:15;38606:127;38667:10;38662:3;38658:20;38655:1;38648:31;38698:4;38695:1;38688:15;38722:4;38719:1;38712:15;38738:127;38799:10;38794:3;38790:20;38787:1;38780:31;38830:4;38827:1;38820:15;38854:4;38851:1;38844:15;38870:127;38931:10;38926:3;38922:20;38919:1;38912:31;38962:4;38959:1;38952:15;38986:4;38983:1;38976:15;39002:131;-1:-1:-1;;;;;39077:31:154;;39067:42;;39057:70;;39123:1;39120;39113:12;39138:118;39224:5;39217:13;39210:21;39203:5;39200:32;39190:60;;39246:1;39243;39236:12","linkReferences":{}},"methodIdentifiers":{"addTradingContract(address)":"f823e2ae","applyReferralAndPnlFee(address,uint256,uint256,bool,uint256,int256,uint256)":"6b2d653f","blockOI(uint256,uint256)":"b222cb38","callbacks()":"00b12783","claimFees()":"d294f093","claimRebate()":"cda3948f","dev()":"91cca3db","devFeesUSDC()":"34df8540","firstEmptyOpenLimitIndex(address,uint256)":"44d44f5a","firstEmptyTradeIndex(address,uint256)":"292c1617","forceUnregisterPendingMarketOrder(uint256)":"0d32c907","getOpenLimitOrder(address,uint256,uint256)":"b8878a2c","getOpenLimitOrders()":"8a0bd702","getPendingOrderIds(address)":"5c76ac9e","getUsdOI()":"8ecf3f5a","gov()":"12d43a51","govFeesUSDC()":"3c6d6fa0","govTreasury()":"ff12673a","handleDevGovFees(address,uint256,uint256,bool,bool,bool)":"2a9a9667","hasOpenLimitOrder(address,uint256,uint256)":"dcdf339a","incrementClosingFees(uint256,uint256)":"0fe1c91f","initialize()":"8129fc1c","isTradingContract(address)":"6d81d981","isValidOI(uint256,bool,uint256)":"422a4214","maxOpenInterest()":"dc6638f4","maxPendingMarketOrders()":"8049fde7","maxTradesPerPair()":"f65d9dbe","openInterestUSDC(uint256,uint256)":"9cb87f23","openLimitOrderIds(address,uint256,uint256)":"eda00d54","openLimitOrders(uint256)":"32149592","openLimitOrdersCount(address,uint256)":"97e7995a","openTrades(address,uint256,uint256)":"a3a80ffe","openTradesCount(address,uint256)":"1c8636b4","openTradesInfo(address,uint256,uint256)":"8c8ff1d5","pairLongOI(uint256)":"6817f576","pairOI(uint256)":"f1694292","pairShortOI(uint256)":"d45bc332","pairTraders(uint256,uint256)":"e3cbe3a7","pairTradersArray(uint256)":"5fbfe8cc","pairTradersId(address,uint256)":"4415b369","pendingMarketCloseCount(address,uint256)":"b7682d54","pendingMarketOpenCount(address,uint256)":"9c8912f1","pendingOrderIds(address,uint256)":"bcc9f1d3","pendingOrderIdsCount(address)":"f7b3c6fd","priceAggregator()":"3078fff5","rebates(address)":"f4ccf54e","referral()":"1441a5a9","registerPartialTrade(address,uint256,uint256,uint256)":"3f64d036","removeTradingContract(address)":"5b621e32","reqIDpendingLimitOrder(uint256)":"6c7be83a","reqIDpendingMarketOrder(uint256)":"d5dabd75","requestGov(address)":"50bb2578","requestedGov()":"66ac654d","setCallbacks(address)":"fe0fc8d6","setDev(address)":"d477f05f","setGov(address)":"cfad57a2","setGovTreasury(address)":"05f3c6ad","setMaxPendingMarketOrders(uint256)":"ecf56a1f","setMaxTradesPerPair(uint256)":"dc2123ff","setPriceAggregator(address)":"5070e837","setReferral(address)":"9e5914da","setTrading(address)":"a553906c","setTvlCap(uint256)":"dd0290e2","setUSDC(address)":"b3e089a2","setVaultManager(address)":"b543503e","storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"fdb153e2","storePendingLimitOrder((address,uint256,uint256,uint8),uint256)":"d775d548","storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)":"d8137fe8","storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256),bool)":"f41450b5","totalOI()":"443295dc","trading()":"ec44acf2","transferUSDC(address,address,uint256)":"8b83351a","tvlCap()":"3f23fa1a","unregisterOpenLimitOrder(address,uint256,uint256)":"b4b0f567","unregisterPendingLimitOrder(uint256)":"7ada8483","unregisterPendingMarketOrder(uint256,bool)":"cab94580","unregisterTrade(address,uint256,uint256)":"90d112b9","updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"ae8ac94e","updateSl(address,uint256,uint256,uint256)":"a3544181","updateTp(address,uint256,uint256,uint256)":"7fdb96f3","updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))":"f0cb9b11","usdOI(uint256)":"7eed1d30","usdc()":"3e413bee","vaultManager()":"8a4adf24","walletOI(address)":"b87cb1da","withinExposureLimits(address,uint256,uint256,bool)":"c45cceb6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_buy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"FeesCharged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"govTreasury\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"govFees\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"devTreasury\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"devFees\",\"type\":\"uint256\"}],\"name\":\"FeesClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"MarketOpenCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NumberUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NumberUpdatedPair\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_open\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_long\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_leveragedPos\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"OIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RebateClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"SupportedTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_referrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_leveragedPosition\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_traderFeePostDiscount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_startingFees\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_referrerRebate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"TradeReferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"TradingContractAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"TradingContractRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__trading\",\"type\":\"address\"}],\"name\":\"addTradingContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPosition\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isPnl\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"_percentProfit\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"_collateral\",\"type\":\"uint256\"}],\"name\":\"applyReferralAndPnlFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRebate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dev\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"devFeesUSDC\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"firstEmptyOpenLimitIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"firstEmptyTradeIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"forceUnregisterPendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getOpenLimitOrder\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.OpenLimitOrder\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOpenLimitOrders\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.OpenLimitOrder[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"getPendingOrderIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUsdOI\",\"outputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"govFeesUSDC\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"govTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPositionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_usdc\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_fullFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_buy\",\"type\":\"bool\"}],\"name\":\"handleDevGovFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeAfterRebate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"hasOpenLimitOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"devFees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"govFees\",\"type\":\"uint256\"}],\"name\":\"incrementClosingFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isTradingContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leveragedPos\",\"type\":\"uint256\"}],\"name\":\"isValidOI\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxOpenInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPendingMarketOrders\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxTradesPerPair\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"openInterestUSDC\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"openLimitOrderIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"openLimitOrders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"openLimitOrdersCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"openTrades\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"openTradesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"openTradesInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"openInterestUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tpLastUpdated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slLastUpdated\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"beingMarketClosed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"lossProtection\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.TradeInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairLongOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairShortOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairTraders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairTradersArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairTradersId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingMarketCloseCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingMarketOpenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingOrderIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"pendingOrderIdsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceAggregator\",\"outputs\":[{\"internalType\":\"contract IPriceAggregator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rebates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"referral\",\"outputs\":[{\"internalType\":\"contract IReferral\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountReduced\",\"type\":\"uint256\"}],\"name\":\"registerPartialTrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__trading\",\"type\":\"address\"}],\"name\":\"removeTradingContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"reqIDpendingLimitOrder\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"orderType\",\"type\":\"uint8\"}],\"internalType\":\"struct ITradingStorage.PendingLimitOrder\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"reqIDpendingMarketOrder\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"trade\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wantedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.PendingMarketOrder\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gov\",\"type\":\"address\"}],\"name\":\"requestGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestedGov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__callbacks\",\"type\":\"address\"}],\"name\":\"setCallbacks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dev\",\"type\":\"address\"}],\"name\":\"setDev\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newGov\",\"type\":\"address\"}],\"name\":\"setGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_govTreasury\",\"type\":\"address\"}],\"name\":\"setGovTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxPendingMarketOrders\",\"type\":\"uint256\"}],\"name\":\"setMaxPendingMarketOrders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxTradesPerPair\",\"type\":\"uint256\"}],\"name\":\"setMaxTradesPerPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregator\",\"type\":\"address\"}],\"name\":\"setPriceAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_refferal\",\"type\":\"address\"}],\"name\":\"setReferral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__trading\",\"type\":\"address\"}],\"name\":\"setTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newCap\",\"type\":\"uint256\"}],\"name\":\"setTvlCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"setUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vaultManager\",\"type\":\"address\"}],\"name\":\"setVaultManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.OpenLimitOrder\",\"name\":\"o\",\"type\":\"tuple\"}],\"name\":\"storeOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"orderType\",\"type\":\"uint8\"}],\"internalType\":\"struct ITradingStorage.PendingLimitOrder\",\"name\":\"_limitOrder\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_orderId\",\"type\":\"uint256\"}],\"name\":\"storePendingLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"trade\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wantedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.PendingMarketOrder\",\"name\":\"_order\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_open\",\"type\":\"bool\"}],\"name\":\"storePendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"_trade\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"openInterestUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tpLastUpdated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slLastUpdated\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"beingMarketClosed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"lossProtection\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.TradeInfo\",\"name\":\"_tradeInfo\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"storeTrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trading\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transferUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tvlCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"unregisterOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_order\",\"type\":\"uint256\"}],\"name\":\"unregisterPendingLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_open\",\"type\":\"bool\"}],\"name\":\"unregisterPendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"unregisterTrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.OpenLimitOrder\",\"name\":\"_o\",\"type\":\"tuple\"}],\"name\":\"updateOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newSl\",\"type\":\"uint256\"}],\"name\":\"updateSl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newTp\",\"type\":\"uint256\"}],\"name\":\"updateTp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"_t\",\"type\":\"tuple\"}],\"name\":\"updateTrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"usdOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdc\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultManager\",\"outputs\":[{\"internalType\":\"contract IVaultManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"walletOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPos\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_buy\",\"type\":\"bool\"}],\"name\":\"withinExposureLimits\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addTradingContract(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"__trading\":\"The address of the trading contract to be added.\"}},\"applyReferralAndPnlFee(address,uint256,uint256,bool,uint256,int256,uint256)\":{\"params\":{\"_collateral\":\"Collateral value for trade\",\"_fees\":\"The initial fees for the trade.\",\"_isPnl\":\"Flag indicating Pnl orderType\",\"_leveragedPosition\":\"The size of the leveraged position.\",\"_pairIndex\":\"The Index of Asset\",\"_percentProfit\":\"Profit Percentage for trade\",\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"The updated fee after applying the referral program.\"}},\"callbacks()\":{\"returns\":{\"_0\":\"The address of the callbacks contract.\"}},\"firstEmptyOpenLimitIndex(address,uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair.\",\"trader\":\"The address of the trader.\"},\"returns\":{\"index\":\"The index of the first empty open limit order.\"}},\"firstEmptyTradeIndex(address,uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair.\",\"trader\":\"The address of the trader.\"},\"returns\":{\"index\":\"The index of the first empty trade.\"}},\"getOpenLimitOrder(address,uint256,uint256)\":{\"params\":{\"_index\":\"The index of the limit order.\",\"_pairIndex\":\"The index of the trading pair.\",\"_trader\":\"The address of the trader.\"},\"returns\":{\"_0\":\"OpenLimitOrder struct containing the order details.\"}},\"getOpenLimitOrders()\":{\"returns\":{\"_0\":\"An array of OpenLimitOrder structs containing all open limit orders.\"}},\"getPendingOrderIds(address)\":{\"params\":{\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"An array of pending order IDs.\"}},\"getUsdOI()\":{\"returns\":{\"_0\":\"USD OI\"}},\"handleDevGovFees(address,uint256,uint256,bool,bool,bool)\":{\"params\":{\"_buy\":\"Indicates if it's a buy operation.\",\"_fullFee\":\"Indicates if the full fee should be applied.\",\"_leveragedPositionSize\":\"Size of the leveraged position.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\",\"_usdc\":\"Whether the fee is in USDC.\"},\"returns\":{\"feeAfterRebate\":\"The fee amount after applying any rebates.\"}},\"hasOpenLimitOrder(address,uint256,uint256)\":{\"params\":{\"index\":\"The index of the limit order.\",\"pairIndex\":\"The index of the trading pair.\",\"trader\":\"The address of the trader.\"},\"returns\":{\"_0\":\"True if an open limit order exists, false otherwise.\"}},\"initialize()\":{\"details\":\"Can be called only once.\"},\"isValidOI(uint256,bool,uint256)\":{\"params\":{\"_pairIndex\":\"Index of Asset\",\"buy\":\"Long/Short\",\"leveragedPos\":\"Position Size\"}},\"maxOpenInterest()\":{\"returns\":{\"_0\":\"The maximum open interest.\"}},\"openTrades(address,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the trade.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"Trade struct containing the trade's details.\"}},\"openTradesCount(address,uint256)\":{\"params\":{\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"The count of open trades.\"}},\"openTradesInfo(address,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the trade.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"TradeInfo struct\"}},\"pairLongOI(uint256)\":{\"params\":{\"_pairIndex\":\"Index of the trading pair.\"},\"returns\":{\"_0\":\"The total Long open interest.\"}},\"pairOI(uint256)\":{\"params\":{\"_pairIndex\":\"Index of the trading pair.\"},\"returns\":{\"_0\":\"The total open interest.\"}},\"pairShortOI(uint256)\":{\"params\":{\"_pairIndex\":\"Index of the trading pair.\"},\"returns\":{\"_0\":\"The total Short open interest.\"}},\"pairTradersArray(uint256)\":{\"params\":{\"_pairIndex\":\"Index of the trading pair.\"},\"returns\":{\"_0\":\"An array of trader addresses.\"}},\"pendingOrderIdsCount(address)\":{\"params\":{\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"The count of pending orders.\"}},\"registerPartialTrade(address,uint256,uint256,uint256)\":{\"details\":\"Can only be called by trading contract.\",\"params\":{\"_amountReduced\":\"The amount by which the trade is reduced.\",\"index\":\"Index of the trade.\",\"pairIndex\":\"Index of the trading pair.\",\"trader\":\"Address of the trader.\"}},\"removeTradingContract(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"__trading\":\"The address of the trading contract to be removed.\"}},\"reqIDpendingLimitOrder(uint256)\":{\"params\":{\"orderId\":\"The ID of the pending limit order.\"},\"returns\":{\"_0\":\"PendingLimitOrder struct containing the order's details.\"}},\"reqIDpendingMarketOrder(uint256)\":{\"params\":{\"orderId\":\"The ID of the pending market order.\"},\"returns\":{\"_0\":\"PendingMarketOrder struct containing the order's details.\"}},\"requestGov(address)\":{\"details\":\"Only callable by the current governance.\",\"params\":{\"_gov\":\"The new governance address.\"}},\"setCallbacks(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"__callbacks\":\"The address of the new callbacks contract.\"}},\"setDev(address)\":{\"details\":\"Only callable by the current governance.\",\"params\":{\"_dev\":\"The new developer address.\"}},\"setGovTreasury(address)\":{\"details\":\"Only callable by the current governance.\",\"params\":{\"_govTreasury\":\"The new developer address.\"}},\"setMaxPendingMarketOrders(uint256)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_maxPendingMarketOrders\":\"The new maximum number of pending market orders.\"}},\"setMaxTradesPerPair(uint256)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_maxTradesPerPair\":\"The new maximum number of trades per pair.\"}},\"setPriceAggregator(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_aggregator\":\"The address of the new price aggregator.\"}},\"setReferral(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_refferal\":\"The address of the new referral contract.\"}},\"setTrading(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"__trading\":\"The address of the new trading contract.\"}},\"setTvlCap(uint256)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_newCap\":\"The new TVl cal\"}},\"setUSDC(address)\":{\"details\":\"Only callable by the governance.\",\"params\":{\"_token\":\"The new USDC token address.\"}},\"setVaultManager(address)\":{\"details\":\"Can only be called by the governor.\",\"params\":{\"_vaultManager\":\"The address of the new vault manager.\"}},\"storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"o\":\"Details of the open limit order.\"}},\"storePendingLimitOrder((address,uint256,uint256,uint8),uint256)\":{\"params\":{\"_limitOrder\":\"Details of the pending limit order.\",\"_orderId\":\"The ID for the pending limit order.\"}},\"storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)\":{\"details\":\"Can only be called by trading contract.\",\"params\":{\"_id\":\"The ID associated with the pending market order.\",\"_open\":\"Specifies whether the order opens a new position.\",\"_order\":\"Details of the pending market order.\"}},\"storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256),bool)\":{\"details\":\"Can only be called by trading contract.\",\"params\":{\"_trade\":\"The details of the trade to store.\",\"_tradeInfo\":\"Trade Info struct\",\"isPnl\":\"Is the order Pnl Type\"}},\"trading()\":{\"returns\":{\"_0\":\"The address of the trading contract.\"}},\"transferUSDC(address,address,uint256)\":{\"params\":{\"_amount\":\"Amount to transfer.\",\"_from\":\"Address from which to transfer.\",\"_to\":\"Address to which to transfer.\"}},\"unregisterOpenLimitOrder(address,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the limit order.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"}},\"unregisterPendingLimitOrder(uint256)\":{\"params\":{\"_order\":\"The ID for the pending limit order to unregister.\"}},\"unregisterPendingMarketOrder(uint256,bool)\":{\"params\":{\"_id\":\"The ID associated with the pending market order.\",\"_open\":\"Specifies whether the order opens or closes a position.\"}},\"unregisterTrade(address,uint256,uint256)\":{\"details\":\"Can only be called by trading contract.\",\"params\":{\"index\":\"Index of the trade.\",\"pairIndex\":\"Index of the trading pair.\",\"trader\":\"Address of the trader.\"}},\"updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"_o\":\"Details of the updated open limit order.\"}},\"updateSl(address,uint256,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the trade.\",\"_newSl\":\"The new stop loss level.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"}},\"updateTp(address,uint256,uint256,uint256)\":{\"params\":{\"_index\":\"Index of the trade.\",\"_newTp\":\"The new take profit level.\",\"_pairIndex\":\"Index of the trading pair.\",\"_trader\":\"Address of the trader.\"}},\"updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))\":{\"params\":{\"_t\":\"The updated trade details.\"}},\"walletOI(address)\":{\"params\":{\"_trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"The total open interest in the trader's wallet.\"}},\"withinExposureLimits(address,uint256,uint256,bool)\":{\"params\":{\"_buy\":\"Long/Short\",\"_leveragedPos\":\"PositionSize\",\"_pairIndex\":\"Index of Asset\",\"_trader\":\"Trader Address\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addTradingContract(address)\":{\"notice\":\"Adds a new trading contract to the list of approved trading contracts.\"},\"applyReferralAndPnlFee(address,uint256,uint256,bool,uint256,int256,uint256)\":{\"notice\":\"Applies the referral program during the opening of a trade.\"},\"callbacks()\":{\"notice\":\"Gets the address of the contract that implements callbacks.\"},\"claimFees()\":{\"notice\":\"Allows the governance to claim the accumulated governance fees.\"},\"claimRebate()\":{\"notice\":\"Allows a referrer to claim their rebate.\"},\"firstEmptyOpenLimitIndex(address,uint256)\":{\"notice\":\"Finds the first empty open limit order index for a trader and pair index.\"},\"firstEmptyTradeIndex(address,uint256)\":{\"notice\":\"Finds the first empty trade index for a trader and pair index.\"},\"forceUnregisterPendingMarketOrder(uint256)\":{\"notice\":\"This is used as last resort in case a trader's collateral get stuck in storage\"},\"getOpenLimitOrder(address,uint256,uint256)\":{\"notice\":\"Retrieves a specific open limit order for a trader and pair index.\"},\"getOpenLimitOrders()\":{\"notice\":\"Retrieves all open limit orders.\"},\"getPendingOrderIds(address)\":{\"notice\":\"Retrieves the IDs of pending orders for a specific trader.\"},\"getUsdOI()\":{\"notice\":\"Retrieves usd OI\"},\"handleDevGovFees(address,uint256,uint256,bool,bool,bool)\":{\"notice\":\"Handles the calculation and distribution of development and governance fees.\"},\"hasOpenLimitOrder(address,uint256,uint256)\":{\"notice\":\"Checks if a trader has an open limit order at a specific index and pair index.\"},\"incrementClosingFees(uint256,uint256)\":{\"notice\":\"Allows trading callbacks to accumulate closing fees.\"},\"initialize()\":{\"notice\":\"Initializes the proxy\"},\"isValidOI(uint256,bool,uint256)\":{\"notice\":\"returns if the new OI is valid as per current OI restrictions\"},\"maxOpenInterest()\":{\"notice\":\"Calculates the maximum open interest based on tvl cap\"},\"openTrades(address,uint256,uint256)\":{\"notice\":\"Retrieves an open trade for a specific trader and pair index.\"},\"openTradesCount(address,uint256)\":{\"notice\":\"Retrieves the count of open trades for a specific trader and pair index.\"},\"openTradesInfo(address,uint256,uint256)\":{\"notice\":\"Retrieves open trade info \"},\"pairLongOI(uint256)\":{\"notice\":\"Retrieves the total Long open interest for a specific pair index.\"},\"pairOI(uint256)\":{\"notice\":\"Retrieves the total open interest for a specific pair index.\"},\"pairShortOI(uint256)\":{\"notice\":\"Retrieves the total Short open interest for a specific pair index.\"},\"pairTradersArray(uint256)\":{\"notice\":\"Retrieves the array of traders for a specific pair index.\"},\"pendingOrderIdsCount(address)\":{\"notice\":\"Retrieves the count of pending order IDs for a specific trader.\"},\"registerPartialTrade(address,uint256,uint256,uint256)\":{\"notice\":\"Registers a partial trade and updates trade information accordingly.\"},\"removeTradingContract(address)\":{\"notice\":\"Removes a trading contract from the list of approved trading contracts.\"},\"reqIDpendingLimitOrder(uint256)\":{\"notice\":\"Retrieves pending limit order details by order ID.\"},\"reqIDpendingMarketOrder(uint256)\":{\"notice\":\"Retrieves pending market order details by order ID.\"},\"requestGov(address)\":{\"notice\":\"Requests the governance address.\"},\"setCallbacks(address)\":{\"notice\":\"Sets the callbacks contract.\"},\"setDev(address)\":{\"notice\":\"Updates the wallet recieveing developer share of fees\"},\"setGovTreasury(address)\":{\"notice\":\"Updates the wallet recieveing gov share of fees\"},\"setMaxPendingMarketOrders(uint256)\":{\"notice\":\"Sets the maximum number of pending market orders.\"},\"setMaxTradesPerPair(uint256)\":{\"notice\":\"Sets the maximum number of trades allowed per trading pair.\"},\"setPriceAggregator(address)\":{\"notice\":\"Sets the price aggregator contract.\"},\"setReferral(address)\":{\"notice\":\"Sets the referral contract.\"},\"setTrading(address)\":{\"notice\":\"Sets the trading contract.\"},\"setTvlCap(uint256)\":{\"notice\":\"Sets the TVL cap that be borrowed from LP tranches\"},\"setUSDC(address)\":{\"notice\":\"Updates the USDC token contract address.\"},\"setVaultManager(address)\":{\"notice\":\"Sets the vault manager contract.\"},\"storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Stores an open limit order.\"},\"storePendingLimitOrder((address,uint256,uint256,uint8),uint256)\":{\"notice\":\"Stores a new pending limit order.\"},\"storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)\":{\"notice\":\"Stores a new pending market order and updates associated counters.\"},\"storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256),bool)\":{\"notice\":\"Stores a new trade and updates the associated trade information.\"},\"trading()\":{\"notice\":\"Gets the address of the contract that manages user facingtrading.\"},\"transferUSDC(address,address,uint256)\":{\"notice\":\"Transfers USDC tokens between addresses. USDC intermediately sits in trading storage before moving to vault\"},\"unregisterOpenLimitOrder(address,uint256,uint256)\":{\"notice\":\"Unregisters an open limit order.\"},\"unregisterPendingLimitOrder(uint256)\":{\"notice\":\"Unregisters a pending limit order.\"},\"unregisterPendingMarketOrder(uint256,bool)\":{\"notice\":\"Unregisters a pending market order and updates counters.\"},\"unregisterTrade(address,uint256,uint256)\":{\"notice\":\"Unregisters a trade and deletes trade information accordingly.\"},\"updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Updates an existing open limit order.\"},\"updateSl(address,uint256,uint256,uint256)\":{\"notice\":\"Updates the stop loss level for a trade.\"},\"updateTp(address,uint256,uint256,uint256)\":{\"notice\":\"Updates the take profit level for a trade.\"},\"updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))\":{\"notice\":\"Updates the details of an existing trade.\"},\"walletOI(address)\":{\"notice\":\"Retrieves the total open interest for a specific trader's wallet.\"},\"withinExposureLimits(address,uint256,uint256,bool)\":{\"notice\":\"Method to Check if new trade is within Exposure Limits\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/TradingStorage.sol\":\"TradingStorage\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"src/TradingStorage.sol\":{\"keccak256\":\"0xa3d3502a9d9a421e18ae869d35fdbe8a7c0bc52b0b385f9fa3990680d45f2ab5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53790a734bd3fa0532ba0a9fec73722eb74f16fe1dee81b35ae77e873ca9ea0a\",\"dweb:/ipfs/QmTjb3RoJUXTH8K5JCJytgkBN4Xj2HN9VhRrJBD4brsdsr\"]},\"src/interfaces/ICallbacks.sol\":{\"keccak256\":\"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59\",\"dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt\"]},\"src/interfaces/IExecute.sol\":{\"keccak256\":\"0x9d34356818b64942ede2aca017517b9ba329093207a0e417469641436d298c88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3536e9511c45ade7bb3a5ee5545e414fe55c4d3fc05410987a81d2c1590ed4b\",\"dweb:/ipfs/QmS5UbmedkTTnn2qYF5kz3xoEtQceaSpPMm4RdjQgf6isY\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0xeec105aed668f80ae66ae314acfe07103f82a5e280fbf234fe2a36d3d67d5a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cca7c817e7d02629cb85cecc3312c9f4e9c1c22ecc2f0db80c25be9476ce7aff\",\"dweb:/ipfs/QmcnmFawRf9ygBUVQaLW9BD5d2YMSU5dgnkJWRXRHbMuSs\"]},\"src/interfaces/IPausable.sol\":{\"keccak256\":\"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e\",\"dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe\",\"dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC\"]},\"src/interfaces/IReferral.sol\":{\"keccak256\":\"0x18871b93f29f8128da14a0b32fd9bbfeb0a8565d5f7442b959713e5b65f9a821\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ae5569cd5f896619a93e8f4bc53e097f3cfae328982e85a5bbcee071d123e18\",\"dweb:/ipfs/QmU44zGYMWSfgAKbQ1BDibwjNMHMH51746HH75qrNhd1bN\"]},\"src/interfaces/ITradingStorage.sol\":{\"keccak256\":\"0xa010a68fee744de912fbb3eddfb2012889ce22fa718b36cb5cecb90a51be8e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4631c54588a7043a50e292fd3a84dcb7f25a27428759604c9d502a2469e56f1b\",\"dweb:/ipfs/QmREpbXoV8Z4ZgoxVFpViBCFrmijMXtBY2gDLfFGD7zD1S\"]},\"src/interfaces/IVaultManager.sol\":{\"keccak256\":\"0xa8ccf68fc5846dd0a638f7c337289d7a90b121ada4eb61802be4ff428319dd8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de750a9805572838bfd630e9ae20f192f8d8a2d53226728aaf32ecd229e8cdb4\",\"dweb:/ipfs/Qmdqj88ry3c1AjABjY3D5PNvE84SXxDoj3M3JLDi8Zz5BS\"]},\"src/library/PositionMath.sol\":{\"keccak256\":\"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c\",\"dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"AddressUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"_trader","type":"address","indexed":false},{"internalType":"uint256","name":"_pairIndex","type":"uint256","indexed":false},{"internalType":"bool","name":"_buy","type":"bool","indexed":false},{"internalType":"uint256","name":"fee","type":"uint256","indexed":false}],"type":"event","name":"FeesCharged","anonymous":false},{"inputs":[{"internalType":"address","name":"govTreasury","type":"address","indexed":false},{"internalType":"uint256","name":"govFees","type":"uint256","indexed":false},{"internalType":"address","name":"devTreasury","type":"address","indexed":false},{"internalType":"uint256","name":"devFees","type":"uint256","indexed":false}],"type":"event","name":"FeesClaimed","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false}],"type":"event","name":"MarketOpenCanceled","anonymous":false},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"NumberUpdated","anonymous":false},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"NumberUpdatedPair","anonymous":false},{"inputs":[{"internalType":"bool","name":"_open","type":"bool","indexed":false},{"internalType":"bool","name":"_long","type":"bool","indexed":false},{"internalType":"uint256","name":"_pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"_leveragedPos","type":"uint256","indexed":false},{"internalType":"uint256","name":"_price","type":"uint256","indexed":false}],"type":"event","name":"OIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"referrer","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RebateClaimed","anonymous":false},{"inputs":[{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"SupportedTokenAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"_trader","type":"address","indexed":false},{"internalType":"address","name":"_referrer","type":"address","indexed":false},{"internalType":"uint256","name":"_leveragedPosition","type":"uint256","indexed":false},{"internalType":"uint256","name":"_traderFeePostDiscount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_startingFees","type":"uint256","indexed":false},{"internalType":"uint256","name":"_referrerRebate","type":"uint256","indexed":false},{"internalType":"uint256","name":"_pairIndex","type":"uint256","indexed":false}],"type":"event","name":"TradeReferred","anonymous":false},{"inputs":[{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"TradingContractAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"TradingContractRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"__trading","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addTradingContract"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_fees","type":"uint256"},{"internalType":"uint256","name":"_leveragedPosition","type":"uint256"},{"internalType":"bool","name":"_isPnl","type":"bool"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"int256","name":"_percentProfit","type":"int256"},{"internalType":"uint256","name":"_collateral","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"applyReferralAndPnlFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"callbacks","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimFees"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRebate"},{"inputs":[],"stateMutability":"view","type":"function","name":"dev","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"devFeesUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"firstEmptyOpenLimitIndex","outputs":[{"internalType":"uint256","name":"index","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"firstEmptyTradeIndex","outputs":[{"internalType":"uint256","name":"index","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"forceUnregisterPendingMarketOrder"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getOpenLimitOrder","outputs":[{"internalType":"struct ITradingStorage.OpenLimitOrder","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOpenLimitOrders","outputs":[{"internalType":"struct ITradingStorage.OpenLimitOrder[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingOrderIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getUsdOI","outputs":[{"internalType":"uint256[2]","name":"","type":"uint256[2]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"govFeesUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"govTreasury","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_leveragedPositionSize","type":"uint256"},{"internalType":"bool","name":"_usdc","type":"bool"},{"internalType":"bool","name":"_fullFee","type":"bool"},{"internalType":"bool","name":"_buy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"handleDevGovFees","outputs":[{"internalType":"uint256","name":"feeAfterRebate","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"hasOpenLimitOrder","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"devFees","type":"uint256"},{"internalType":"uint256","name":"govFees","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"incrementClosingFees"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isTradingContract","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leveragedPos","type":"uint256"}],"stateMutability":"view","type":"function","name":"isValidOI","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxOpenInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxPendingMarketOrders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxTradesPerPair","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"openInterestUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"openLimitOrderIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"openLimitOrders","outputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"openLimitOrdersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"openTrades","outputs":[{"internalType":"struct ITradingStorage.Trade","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"openTradesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"openTradesInfo","outputs":[{"internalType":"struct ITradingStorage.TradeInfo","name":"","type":"tuple","components":[{"internalType":"uint256","name":"openInterestUSDC","type":"uint256"},{"internalType":"uint256","name":"tpLastUpdated","type":"uint256"},{"internalType":"uint256","name":"slLastUpdated","type":"uint256"},{"internalType":"bool","name":"beingMarketClosed","type":"bool"},{"internalType":"uint256","name":"lossProtection","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairLongOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairShortOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairTraders","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairTradersArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairTradersId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingMarketCloseCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingMarketOpenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingOrderIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"}],"stateMutability":"view","type":"function","name":"pendingOrderIdsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"priceAggregator","outputs":[{"internalType":"contract IPriceAggregator","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"rebates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"referral","outputs":[{"internalType":"contract IReferral","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"_amountReduced","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"registerPartialTrade"},{"inputs":[{"internalType":"address","name":"__trading","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeTradingContract"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"view","type":"function","name":"reqIDpendingLimitOrder","outputs":[{"internalType":"struct ITradingStorage.PendingLimitOrder","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"enum ITradingStorage.LimitOrder","name":"orderType","type":"uint8"}]}]},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"view","type":"function","name":"reqIDpendingMarketOrder","outputs":[{"internalType":"struct ITradingStorage.PendingMarketOrder","name":"","type":"tuple","components":[{"internalType":"struct ITradingStorage.Trade","name":"trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"wantedPrice","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"requestGov"},{"inputs":[],"stateMutability":"view","type":"function","name":"requestedGov","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"__callbacks","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setCallbacks"},{"inputs":[{"internalType":"address","name":"_dev","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDev"},{"inputs":[{"internalType":"address","name":"_newGov","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGov"},{"inputs":[{"internalType":"address","name":"_govTreasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGovTreasury"},{"inputs":[{"internalType":"uint256","name":"_maxPendingMarketOrders","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxPendingMarketOrders"},{"inputs":[{"internalType":"uint256","name":"_maxTradesPerPair","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxTradesPerPair"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceAggregator"},{"inputs":[{"internalType":"address","name":"_refferal","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setReferral"},{"inputs":[{"internalType":"address","name":"__trading","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTrading"},{"inputs":[{"internalType":"uint256","name":"_newCap","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTvlCap"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setUSDC"},{"inputs":[{"internalType":"address","name":"_vaultManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setVaultManager"},{"inputs":[{"internalType":"struct ITradingStorage.OpenLimitOrder","name":"o","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"storeOpenLimitOrder"},{"inputs":[{"internalType":"struct ITradingStorage.PendingLimitOrder","name":"_limitOrder","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"enum ITradingStorage.LimitOrder","name":"orderType","type":"uint8"}]},{"internalType":"uint256","name":"_orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"storePendingLimitOrder"},{"inputs":[{"internalType":"struct ITradingStorage.PendingMarketOrder","name":"_order","type":"tuple","components":[{"internalType":"struct ITradingStorage.Trade","name":"trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"wantedPrice","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"}]},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"bool","name":"_open","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"storePendingMarketOrder"},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"_trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"struct ITradingStorage.TradeInfo","name":"_tradeInfo","type":"tuple","components":[{"internalType":"uint256","name":"openInterestUSDC","type":"uint256"},{"internalType":"uint256","name":"tpLastUpdated","type":"uint256"},{"internalType":"uint256","name":"slLastUpdated","type":"uint256"},{"internalType":"bool","name":"beingMarketClosed","type":"bool"},{"internalType":"uint256","name":"lossProtection","type":"uint256"}]},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"storeTrade"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"trading","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferUSDC"},{"inputs":[],"stateMutability":"view","type":"function","name":"tvlCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOpenLimitOrder"},{"inputs":[{"internalType":"uint256","name":"_order","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterPendingLimitOrder"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"bool","name":"_open","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"unregisterPendingMarketOrder"},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterTrade"},{"inputs":[{"internalType":"struct ITradingStorage.OpenLimitOrder","name":"_o","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"positionSize","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"slippageP","type":"uint256"},{"internalType":"uint256","name":"block","type":"uint256"},{"internalType":"uint256","name":"executionFee","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updateOpenLimitOrder"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newSl","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateSl"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newTp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateTp"},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"_t","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updateTrade"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"usdOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"usdc","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vaultManager","outputs":[{"internalType":"contract IVaultManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"}],"stateMutability":"view","type":"function","name":"walletOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_leveragedPos","type":"uint256"},{"internalType":"bool","name":"_buy","type":"bool"}],"stateMutability":"view","type":"function","name":"withinExposureLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"addTradingContract(address)":{"details":"Can only be called by the governor.","params":{"__trading":"The address of the trading contract to be added."}},"applyReferralAndPnlFee(address,uint256,uint256,bool,uint256,int256,uint256)":{"params":{"_collateral":"Collateral value for trade","_fees":"The initial fees for the trade.","_isPnl":"Flag indicating Pnl orderType","_leveragedPosition":"The size of the leveraged position.","_pairIndex":"The Index of Asset","_percentProfit":"Profit Percentage for trade","_trader":"Address of the trader."},"returns":{"_0":"The updated fee after applying the referral program."}},"callbacks()":{"returns":{"_0":"The address of the callbacks contract."}},"firstEmptyOpenLimitIndex(address,uint256)":{"params":{"pairIndex":"The index of the trading pair.","trader":"The address of the trader."},"returns":{"index":"The index of the first empty open limit order."}},"firstEmptyTradeIndex(address,uint256)":{"params":{"pairIndex":"The index of the trading pair.","trader":"The address of the trader."},"returns":{"index":"The index of the first empty trade."}},"getOpenLimitOrder(address,uint256,uint256)":{"params":{"_index":"The index of the limit order.","_pairIndex":"The index of the trading pair.","_trader":"The address of the trader."},"returns":{"_0":"OpenLimitOrder struct containing the order details."}},"getOpenLimitOrders()":{"returns":{"_0":"An array of OpenLimitOrder structs containing all open limit orders."}},"getPendingOrderIds(address)":{"params":{"_trader":"Address of the trader."},"returns":{"_0":"An array of pending order IDs."}},"getUsdOI()":{"returns":{"_0":"USD OI"}},"handleDevGovFees(address,uint256,uint256,bool,bool,bool)":{"params":{"_buy":"Indicates if it's a buy operation.","_fullFee":"Indicates if the full fee should be applied.","_leveragedPositionSize":"Size of the leveraged position.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader.","_usdc":"Whether the fee is in USDC."},"returns":{"feeAfterRebate":"The fee amount after applying any rebates."}},"hasOpenLimitOrder(address,uint256,uint256)":{"params":{"index":"The index of the limit order.","pairIndex":"The index of the trading pair.","trader":"The address of the trader."},"returns":{"_0":"True if an open limit order exists, false otherwise."}},"initialize()":{"details":"Can be called only once."},"isValidOI(uint256,bool,uint256)":{"params":{"_pairIndex":"Index of Asset","buy":"Long/Short","leveragedPos":"Position Size"}},"maxOpenInterest()":{"returns":{"_0":"The maximum open interest."}},"openTrades(address,uint256,uint256)":{"params":{"_index":"Index of the trade.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."},"returns":{"_0":"Trade struct containing the trade's details."}},"openTradesCount(address,uint256)":{"params":{"_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."},"returns":{"_0":"The count of open trades."}},"openTradesInfo(address,uint256,uint256)":{"params":{"_index":"Index of the trade.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."},"returns":{"_0":"TradeInfo struct"}},"pairLongOI(uint256)":{"params":{"_pairIndex":"Index of the trading pair."},"returns":{"_0":"The total Long open interest."}},"pairOI(uint256)":{"params":{"_pairIndex":"Index of the trading pair."},"returns":{"_0":"The total open interest."}},"pairShortOI(uint256)":{"params":{"_pairIndex":"Index of the trading pair."},"returns":{"_0":"The total Short open interest."}},"pairTradersArray(uint256)":{"params":{"_pairIndex":"Index of the trading pair."},"returns":{"_0":"An array of trader addresses."}},"pendingOrderIdsCount(address)":{"params":{"_trader":"Address of the trader."},"returns":{"_0":"The count of pending orders."}},"registerPartialTrade(address,uint256,uint256,uint256)":{"details":"Can only be called by trading contract.","params":{"_amountReduced":"The amount by which the trade is reduced.","index":"Index of the trade.","pairIndex":"Index of the trading pair.","trader":"Address of the trader."}},"removeTradingContract(address)":{"details":"Can only be called by the governor.","params":{"__trading":"The address of the trading contract to be removed."}},"reqIDpendingLimitOrder(uint256)":{"params":{"orderId":"The ID of the pending limit order."},"returns":{"_0":"PendingLimitOrder struct containing the order's details."}},"reqIDpendingMarketOrder(uint256)":{"params":{"orderId":"The ID of the pending market order."},"returns":{"_0":"PendingMarketOrder struct containing the order's details."}},"requestGov(address)":{"details":"Only callable by the current governance.","params":{"_gov":"The new governance address."}},"setCallbacks(address)":{"details":"Can only be called by the governor.","params":{"__callbacks":"The address of the new callbacks contract."}},"setDev(address)":{"details":"Only callable by the current governance.","params":{"_dev":"The new developer address."}},"setGovTreasury(address)":{"details":"Only callable by the current governance.","params":{"_govTreasury":"The new developer address."}},"setMaxPendingMarketOrders(uint256)":{"details":"Can only be called by the governor.","params":{"_maxPendingMarketOrders":"The new maximum number of pending market orders."}},"setMaxTradesPerPair(uint256)":{"details":"Can only be called by the governor.","params":{"_maxTradesPerPair":"The new maximum number of trades per pair."}},"setPriceAggregator(address)":{"details":"Can only be called by the governor.","params":{"_aggregator":"The address of the new price aggregator."}},"setReferral(address)":{"details":"Can only be called by the governor.","params":{"_refferal":"The address of the new referral contract."}},"setTrading(address)":{"details":"Can only be called by the governor.","params":{"__trading":"The address of the new trading contract."}},"setTvlCap(uint256)":{"details":"Can only be called by the governor.","params":{"_newCap":"The new TVl cal"}},"setUSDC(address)":{"details":"Only callable by the governance.","params":{"_token":"The new USDC token address."}},"setVaultManager(address)":{"details":"Can only be called by the governor.","params":{"_vaultManager":"The address of the new vault manager."}},"storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"params":{"o":"Details of the open limit order."}},"storePendingLimitOrder((address,uint256,uint256,uint8),uint256)":{"params":{"_limitOrder":"Details of the pending limit order.","_orderId":"The ID for the pending limit order."}},"storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)":{"details":"Can only be called by trading contract.","params":{"_id":"The ID associated with the pending market order.","_open":"Specifies whether the order opens a new position.","_order":"Details of the pending market order."}},"storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256),bool)":{"details":"Can only be called by trading contract.","params":{"_trade":"The details of the trade to store.","_tradeInfo":"Trade Info struct","isPnl":"Is the order Pnl Type"}},"trading()":{"returns":{"_0":"The address of the trading contract."}},"transferUSDC(address,address,uint256)":{"params":{"_amount":"Amount to transfer.","_from":"Address from which to transfer.","_to":"Address to which to transfer."}},"unregisterOpenLimitOrder(address,uint256,uint256)":{"params":{"_index":"Index of the limit order.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."}},"unregisterPendingLimitOrder(uint256)":{"params":{"_order":"The ID for the pending limit order to unregister."}},"unregisterPendingMarketOrder(uint256,bool)":{"params":{"_id":"The ID associated with the pending market order.","_open":"Specifies whether the order opens or closes a position."}},"unregisterTrade(address,uint256,uint256)":{"details":"Can only be called by trading contract.","params":{"index":"Index of the trade.","pairIndex":"Index of the trading pair.","trader":"Address of the trader."}},"updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"params":{"_o":"Details of the updated open limit order."}},"updateSl(address,uint256,uint256,uint256)":{"params":{"_index":"Index of the trade.","_newSl":"The new stop loss level.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."}},"updateTp(address,uint256,uint256,uint256)":{"params":{"_index":"Index of the trade.","_newTp":"The new take profit level.","_pairIndex":"Index of the trading pair.","_trader":"Address of the trader."}},"updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))":{"params":{"_t":"The updated trade details."}},"walletOI(address)":{"params":{"_trader":"Address of the trader."},"returns":{"_0":"The total open interest in the trader's wallet."}},"withinExposureLimits(address,uint256,uint256,bool)":{"params":{"_buy":"Long/Short","_leveragedPos":"PositionSize","_pairIndex":"Index of Asset","_trader":"Trader Address"}}},"version":1},"userdoc":{"kind":"user","methods":{"addTradingContract(address)":{"notice":"Adds a new trading contract to the list of approved trading contracts."},"applyReferralAndPnlFee(address,uint256,uint256,bool,uint256,int256,uint256)":{"notice":"Applies the referral program during the opening of a trade."},"callbacks()":{"notice":"Gets the address of the contract that implements callbacks."},"claimFees()":{"notice":"Allows the governance to claim the accumulated governance fees."},"claimRebate()":{"notice":"Allows a referrer to claim their rebate."},"firstEmptyOpenLimitIndex(address,uint256)":{"notice":"Finds the first empty open limit order index for a trader and pair index."},"firstEmptyTradeIndex(address,uint256)":{"notice":"Finds the first empty trade index for a trader and pair index."},"forceUnregisterPendingMarketOrder(uint256)":{"notice":"This is used as last resort in case a trader's collateral get stuck in storage"},"getOpenLimitOrder(address,uint256,uint256)":{"notice":"Retrieves a specific open limit order for a trader and pair index."},"getOpenLimitOrders()":{"notice":"Retrieves all open limit orders."},"getPendingOrderIds(address)":{"notice":"Retrieves the IDs of pending orders for a specific trader."},"getUsdOI()":{"notice":"Retrieves usd OI"},"handleDevGovFees(address,uint256,uint256,bool,bool,bool)":{"notice":"Handles the calculation and distribution of development and governance fees."},"hasOpenLimitOrder(address,uint256,uint256)":{"notice":"Checks if a trader has an open limit order at a specific index and pair index."},"incrementClosingFees(uint256,uint256)":{"notice":"Allows trading callbacks to accumulate closing fees."},"initialize()":{"notice":"Initializes the proxy"},"isValidOI(uint256,bool,uint256)":{"notice":"returns if the new OI is valid as per current OI restrictions"},"maxOpenInterest()":{"notice":"Calculates the maximum open interest based on tvl cap"},"openTrades(address,uint256,uint256)":{"notice":"Retrieves an open trade for a specific trader and pair index."},"openTradesCount(address,uint256)":{"notice":"Retrieves the count of open trades for a specific trader and pair index."},"openTradesInfo(address,uint256,uint256)":{"notice":"Retrieves open trade info "},"pairLongOI(uint256)":{"notice":"Retrieves the total Long open interest for a specific pair index."},"pairOI(uint256)":{"notice":"Retrieves the total open interest for a specific pair index."},"pairShortOI(uint256)":{"notice":"Retrieves the total Short open interest for a specific pair index."},"pairTradersArray(uint256)":{"notice":"Retrieves the array of traders for a specific pair index."},"pendingOrderIdsCount(address)":{"notice":"Retrieves the count of pending order IDs for a specific trader."},"registerPartialTrade(address,uint256,uint256,uint256)":{"notice":"Registers a partial trade and updates trade information accordingly."},"removeTradingContract(address)":{"notice":"Removes a trading contract from the list of approved trading contracts."},"reqIDpendingLimitOrder(uint256)":{"notice":"Retrieves pending limit order details by order ID."},"reqIDpendingMarketOrder(uint256)":{"notice":"Retrieves pending market order details by order ID."},"requestGov(address)":{"notice":"Requests the governance address."},"setCallbacks(address)":{"notice":"Sets the callbacks contract."},"setDev(address)":{"notice":"Updates the wallet recieveing developer share of fees"},"setGovTreasury(address)":{"notice":"Updates the wallet recieveing gov share of fees"},"setMaxPendingMarketOrders(uint256)":{"notice":"Sets the maximum number of pending market orders."},"setMaxTradesPerPair(uint256)":{"notice":"Sets the maximum number of trades allowed per trading pair."},"setPriceAggregator(address)":{"notice":"Sets the price aggregator contract."},"setReferral(address)":{"notice":"Sets the referral contract."},"setTrading(address)":{"notice":"Sets the trading contract."},"setTvlCap(uint256)":{"notice":"Sets the TVL cap that be borrowed from LP tranches"},"setUSDC(address)":{"notice":"Updates the USDC token contract address."},"setVaultManager(address)":{"notice":"Sets the vault manager contract."},"storeOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"notice":"Stores an open limit order."},"storePendingLimitOrder((address,uint256,uint256,uint8),uint256)":{"notice":"Stores a new pending limit order."},"storePendingMarketOrder(((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,uint256,uint256),uint256,bool)":{"notice":"Stores a new pending market order and updates associated counters."},"storeTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,bool,uint256),bool)":{"notice":"Stores a new trade and updates the associated trade information."},"trading()":{"notice":"Gets the address of the contract that manages user facingtrading."},"transferUSDC(address,address,uint256)":{"notice":"Transfers USDC tokens between addresses. USDC intermediately sits in trading storage before moving to vault"},"unregisterOpenLimitOrder(address,uint256,uint256)":{"notice":"Unregisters an open limit order."},"unregisterPendingLimitOrder(uint256)":{"notice":"Unregisters a pending limit order."},"unregisterPendingMarketOrder(uint256,bool)":{"notice":"Unregisters a pending market order and updates counters."},"unregisterTrade(address,uint256,uint256)":{"notice":"Unregisters a trade and deletes trade information accordingly."},"updateOpenLimitOrder((address,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"notice":"Updates an existing open limit order."},"updateSl(address,uint256,uint256,uint256)":{"notice":"Updates the stop loss level for a trade."},"updateTp(address,uint256,uint256,uint256)":{"notice":"Updates the take profit level for a trade."},"updateTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))":{"notice":"Updates the details of an existing trade."},"walletOI(address)":{"notice":"Retrieves the total open interest for a specific trader's wallet."},"withinExposureLimits(address,uint256,uint256,bool)":{"notice":"Method to Check if new trade is within Exposure Limits"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/TradingStorage.sol":"TradingStorage"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a","urls":["bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a","dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1","urls":["bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68","dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa","urls":["bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931","dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"],"license":"MIT"},"src/TradingStorage.sol":{"keccak256":"0xa3d3502a9d9a421e18ae869d35fdbe8a7c0bc52b0b385f9fa3990680d45f2ab5","urls":["bzz-raw://53790a734bd3fa0532ba0a9fec73722eb74f16fe1dee81b35ae77e873ca9ea0a","dweb:/ipfs/QmTjb3RoJUXTH8K5JCJytgkBN4Xj2HN9VhRrJBD4brsdsr"],"license":"MIT"},"src/interfaces/ICallbacks.sol":{"keccak256":"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c","urls":["bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59","dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt"],"license":"MIT"},"src/interfaces/IExecute.sol":{"keccak256":"0x9d34356818b64942ede2aca017517b9ba329093207a0e417469641436d298c88","urls":["bzz-raw://f3536e9511c45ade7bb3a5ee5545e414fe55c4d3fc05410987a81d2c1590ed4b","dweb:/ipfs/QmS5UbmedkTTnn2qYF5kz3xoEtQceaSpPMm4RdjQgf6isY"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0xeec105aed668f80ae66ae314acfe07103f82a5e280fbf234fe2a36d3d67d5a59","urls":["bzz-raw://cca7c817e7d02629cb85cecc3312c9f4e9c1c22ecc2f0db80c25be9476ce7aff","dweb:/ipfs/QmcnmFawRf9ygBUVQaLW9BD5d2YMSU5dgnkJWRXRHbMuSs"],"license":"MIT"},"src/interfaces/IPausable.sol":{"keccak256":"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd","urls":["bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e","dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY"],"license":"MIT"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375","urls":["bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe","dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC"],"license":"MIT"},"src/interfaces/IReferral.sol":{"keccak256":"0x18871b93f29f8128da14a0b32fd9bbfeb0a8565d5f7442b959713e5b65f9a821","urls":["bzz-raw://0ae5569cd5f896619a93e8f4bc53e097f3cfae328982e85a5bbcee071d123e18","dweb:/ipfs/QmU44zGYMWSfgAKbQ1BDibwjNMHMH51746HH75qrNhd1bN"],"license":"MIT"},"src/interfaces/ITradingStorage.sol":{"keccak256":"0xa010a68fee744de912fbb3eddfb2012889ce22fa718b36cb5cecb90a51be8e8f","urls":["bzz-raw://4631c54588a7043a50e292fd3a84dcb7f25a27428759604c9d502a2469e56f1b","dweb:/ipfs/QmREpbXoV8Z4ZgoxVFpViBCFrmijMXtBY2gDLfFGD7zD1S"],"license":"MIT"},"src/interfaces/IVaultManager.sol":{"keccak256":"0xa8ccf68fc5846dd0a638f7c337289d7a90b121ada4eb61802be4ff428319dd8e","urls":["bzz-raw://de750a9805572838bfd630e9ae20f192f8d8a2d53226728aaf32ecd229e8cdb4","dweb:/ipfs/Qmdqj88ry3c1AjABjY3D5PNvE84SXxDoj3M3JLDi8Zz5BS"],"license":"MIT"},"src/library/PositionMath.sol":{"keccak256":"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c","urls":["bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c","dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1"],"license":"MIT"}},"version":1},"id":113}