@pendle/core-v2 2.17.7-tradingbot → 2.18.0-tradingbot

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.
Files changed (216) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  19. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  20. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  21. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  22. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  23. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  24. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  26. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  28. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.json +32 -17
  68. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.json +32 -17
  70. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.json +2 -2
  72. package/build/artifacts/contracts/core/TradingBot/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.dbg.json +4 -0
  73. package/build/artifacts/contracts/core/TradingBot/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.json +1190 -0
  74. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.json +301 -397
  76. package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/TradingBot/SpecSegmentLib.sol/SpecSegmentLib.dbg.json +4 -0
  78. package/build/artifacts/contracts/core/TradingBot/SpecSegmentLib.sol/SpecSegmentLib.json +10 -0
  79. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.json +32 -17
  81. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  115. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.json +542 -581
  119. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.json +256 -325
  121. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +6 -17
  123. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +1 -1
  124. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  125. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  126. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  127. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +1 -1
  128. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  129. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  130. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  131. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  132. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  133. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  134. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  135. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  136. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  137. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  138. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  139. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.dbg.json +1 -1
  140. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  141. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  142. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  143. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  144. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  145. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  146. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  147. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  148. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  149. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  150. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  151. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  152. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  153. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  154. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +1 -1
  155. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +1 -1
  156. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +1 -1
  157. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +1 -1
  158. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +1 -1
  159. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +1 -1
  160. package/contracts/core/TradingBot/BotActionCallback.sol +1 -1
  161. package/contracts/core/TradingBot/BotActionHelper.sol +1 -3
  162. package/contracts/core/TradingBot/BotSimulationLib.sol +2 -1
  163. package/contracts/core/TradingBot/LongYieldDecisionHelper.sol +413 -0
  164. package/contracts/core/TradingBot/LongYieldTradingBot.sol +63 -91
  165. package/contracts/core/TradingBot/SpecSegmentLib.sol +62 -0
  166. package/contracts/core/TradingBot/TradingBotBase.sol +14 -9
  167. package/contracts/interfaces/TradingBot/IBotDecisionHelper.sol +41 -57
  168. package/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol +24 -34
  169. package/contracts/interfaces/TradingBot/ITradingBotBase.sol +1 -3
  170. package/package.json +1 -1
  171. package/typechain-types/BotActionCallback.ts +40 -22
  172. package/typechain-types/BotActionHelper.ts +40 -22
  173. package/typechain-types/BotDecisionHelper.ts +221 -187
  174. package/typechain-types/IAnkrBNB.ts +150 -0
  175. package/typechain-types/IAnkrLiquidStaking.ts +253 -0
  176. package/typechain-types/IBotDecisionHelper.ts +142 -212
  177. package/typechain-types/ILongYieldTradingBot.ts +147 -230
  178. package/typechain-types/ISwETH.ts +123 -0
  179. package/typechain-types/ITradingBotBase.ts +14 -22
  180. package/typechain-types/LongYieldDecisionHelper.ts +598 -0
  181. package/typechain-types/LongYieldTradingBot.ts +191 -248
  182. package/typechain-types/PendleAnkrBNBSY.ts +1235 -0
  183. package/typechain-types/PendleAuraWstethAnkreth.ts +1511 -0
  184. package/typechain-types/PendleSwETH.ts +1216 -0
  185. package/typechain-types/PendleThenaSY.ts +153 -0
  186. package/typechain-types/PendleWbEthSY.ts +1229 -0
  187. package/typechain-types/ThenaLpHelper.ts +19 -0
  188. package/typechain-types/ThenaMath.ts +87 -0
  189. package/typechain-types/ThenaPreview.ts +19 -0
  190. package/typechain-types/TradingBotBase.ts +40 -22
  191. package/typechain-types/factories/BotActionCallback__factory.ts +31 -16
  192. package/typechain-types/factories/BotActionHelper__factory.ts +31 -16
  193. package/typechain-types/factories/BotDecisionHelper__factory.ts +490 -421
  194. package/typechain-types/factories/IAnkrBNB__factory.ts +74 -0
  195. package/typechain-types/factories/IAnkrLiquidStaking__factory.ts +123 -0
  196. package/typechain-types/factories/IBotDecisionHelper__factory.ts +540 -579
  197. package/typechain-types/factories/ILongYieldTradingBot__factory.ts +255 -324
  198. package/typechain-types/factories/ISwETH__factory.ts +53 -0
  199. package/typechain-types/factories/ITradingBotBase__factory.ts +6 -17
  200. package/typechain-types/factories/LongYieldDecisionHelper__factory.ts +1247 -0
  201. package/typechain-types/factories/LongYieldTradingBot__factory.ts +301 -393
  202. package/typechain-types/factories/PendleAnkrBNBSY__factory.ts +1100 -0
  203. package/typechain-types/factories/PendleAuraWstethAnkreth__factory.ts +1244 -0
  204. package/typechain-types/factories/PendleSwETH__factory.ts +1022 -0
  205. package/typechain-types/factories/PendleThenaSY__factory.ts +85 -1
  206. package/typechain-types/factories/PendleWbEthSY__factory.ts +1049 -0
  207. package/typechain-types/factories/PtAndLpToAsset__factory.ts +1 -1
  208. package/typechain-types/factories/ThenaLpHelper__factory.ts +13 -0
  209. package/typechain-types/factories/ThenaMath__factory.ts +36 -0
  210. package/typechain-types/factories/ThenaPreview__factory.ts +14 -1
  211. package/typechain-types/factories/TradingBotBase__factory.ts +31 -16
  212. package/typechain-types/hardhat.d.ts +4 -40
  213. package/typechain-types/index.ts +2 -10
  214. package/build/artifacts/contracts/core/TradingBot/BotDecisionHelper.sol/BotDecisionHelper.dbg.json +0 -4
  215. package/build/artifacts/contracts/core/TradingBot/BotDecisionHelper.sol/BotDecisionHelper.json +0 -1070
  216. package/contracts/core/TradingBot/BotDecisionHelper.sol +0 -306
@@ -0,0 +1,1190 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "LongYieldDecisionHelper",
4
+ "sourceName": "contracts/core/TradingBot/LongYieldDecisionHelper.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "ApproxFail",
9
+ "type": "error"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "guessMin",
16
+ "type": "uint256"
17
+ },
18
+ {
19
+ "internalType": "uint256",
20
+ "name": "guessMax",
21
+ "type": "uint256"
22
+ },
23
+ {
24
+ "internalType": "uint256",
25
+ "name": "eps",
26
+ "type": "uint256"
27
+ }
28
+ ],
29
+ "name": "ApproxParamsInvalid",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "BotBinarySearchFail",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "uint256",
41
+ "name": "action",
42
+ "type": "uint256"
43
+ },
44
+ {
45
+ "internalType": "uint256",
46
+ "name": "guessMin",
47
+ "type": "uint256"
48
+ },
49
+ {
50
+ "internalType": "uint256",
51
+ "name": "guessMax",
52
+ "type": "uint256"
53
+ }
54
+ ],
55
+ "name": "BotBinarySearchInvalidRange",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [
60
+ {
61
+ "internalType": "int256",
62
+ "name": "exchangeRate",
63
+ "type": "int256"
64
+ }
65
+ ],
66
+ "name": "MarketExchangeRateBelowOne",
67
+ "type": "error"
68
+ },
69
+ {
70
+ "inputs": [],
71
+ "name": "MarketExpired",
72
+ "type": "error"
73
+ },
74
+ {
75
+ "inputs": [
76
+ {
77
+ "internalType": "int256",
78
+ "name": "currentAmount",
79
+ "type": "int256"
80
+ },
81
+ {
82
+ "internalType": "int256",
83
+ "name": "requiredAmount",
84
+ "type": "int256"
85
+ }
86
+ ],
87
+ "name": "MarketInsufficientPtForTrade",
88
+ "type": "error"
89
+ },
90
+ {
91
+ "inputs": [],
92
+ "name": "MarketProportionMustNotEqualOne",
93
+ "type": "error"
94
+ },
95
+ {
96
+ "inputs": [
97
+ {
98
+ "internalType": "int256",
99
+ "name": "proportion",
100
+ "type": "int256"
101
+ },
102
+ {
103
+ "internalType": "int256",
104
+ "name": "maxProportion",
105
+ "type": "int256"
106
+ }
107
+ ],
108
+ "name": "MarketProportionTooHigh",
109
+ "type": "error"
110
+ },
111
+ {
112
+ "inputs": [
113
+ {
114
+ "internalType": "int256",
115
+ "name": "rateScalar",
116
+ "type": "int256"
117
+ }
118
+ ],
119
+ "name": "MarketRateScalarBelowZero",
120
+ "type": "error"
121
+ },
122
+ {
123
+ "inputs": [],
124
+ "name": "MarketZeroLnImpliedRate",
125
+ "type": "error"
126
+ },
127
+ {
128
+ "inputs": [
129
+ {
130
+ "internalType": "int256",
131
+ "name": "totalPt",
132
+ "type": "int256"
133
+ },
134
+ {
135
+ "internalType": "int256",
136
+ "name": "totalAsset",
137
+ "type": "int256"
138
+ }
139
+ ],
140
+ "name": "MarketZeroTotalPtOrTotalAsset",
141
+ "type": "error"
142
+ },
143
+ {
144
+ "inputs": [],
145
+ "name": "INF",
146
+ "outputs": [
147
+ {
148
+ "internalType": "uint256",
149
+ "name": "",
150
+ "type": "uint256"
151
+ }
152
+ ],
153
+ "stateMutability": "view",
154
+ "type": "function"
155
+ },
156
+ {
157
+ "inputs": [],
158
+ "name": "MINIMAL_EPS",
159
+ "outputs": [
160
+ {
161
+ "internalType": "uint256",
162
+ "name": "",
163
+ "type": "uint256"
164
+ }
165
+ ],
166
+ "stateMutability": "view",
167
+ "type": "function"
168
+ },
169
+ {
170
+ "inputs": [
171
+ {
172
+ "components": [
173
+ {
174
+ "components": [
175
+ {
176
+ "internalType": "int256",
177
+ "name": "totalPt",
178
+ "type": "int256"
179
+ },
180
+ {
181
+ "internalType": "int256",
182
+ "name": "totalSy",
183
+ "type": "int256"
184
+ },
185
+ {
186
+ "internalType": "int256",
187
+ "name": "totalLp",
188
+ "type": "int256"
189
+ },
190
+ {
191
+ "internalType": "address",
192
+ "name": "treasury",
193
+ "type": "address"
194
+ },
195
+ {
196
+ "internalType": "int256",
197
+ "name": "scalarRoot",
198
+ "type": "int256"
199
+ },
200
+ {
201
+ "internalType": "uint256",
202
+ "name": "expiry",
203
+ "type": "uint256"
204
+ },
205
+ {
206
+ "internalType": "uint256",
207
+ "name": "lnFeeRateRoot",
208
+ "type": "uint256"
209
+ },
210
+ {
211
+ "internalType": "uint256",
212
+ "name": "reserveFeePercent",
213
+ "type": "uint256"
214
+ },
215
+ {
216
+ "internalType": "uint256",
217
+ "name": "lastLnImpliedRate",
218
+ "type": "uint256"
219
+ }
220
+ ],
221
+ "internalType": "struct MarketState",
222
+ "name": "state",
223
+ "type": "tuple"
224
+ },
225
+ {
226
+ "internalType": "PYIndex",
227
+ "name": "index",
228
+ "type": "uint256"
229
+ },
230
+ {
231
+ "internalType": "uint256",
232
+ "name": "blockTime",
233
+ "type": "uint256"
234
+ }
235
+ ],
236
+ "internalType": "struct MarketExtState",
237
+ "name": "marketExt",
238
+ "type": "tuple"
239
+ },
240
+ {
241
+ "internalType": "enum ActionType",
242
+ "name": "action",
243
+ "type": "uint8"
244
+ },
245
+ {
246
+ "internalType": "uint256",
247
+ "name": "botParam",
248
+ "type": "uint256"
249
+ }
250
+ ],
251
+ "name": "_calcAmountOutAndIntParams",
252
+ "outputs": [
253
+ {
254
+ "internalType": "uint256",
255
+ "name": "amountOut",
256
+ "type": "uint256"
257
+ },
258
+ {
259
+ "internalType": "uint256",
260
+ "name": "intParams",
261
+ "type": "uint256"
262
+ }
263
+ ],
264
+ "stateMutability": "pure",
265
+ "type": "function"
266
+ },
267
+ {
268
+ "inputs": [
269
+ {
270
+ "components": [
271
+ {
272
+ "components": [
273
+ {
274
+ "internalType": "uint256",
275
+ "name": "lpBalance",
276
+ "type": "uint256"
277
+ },
278
+ {
279
+ "internalType": "uint256",
280
+ "name": "ytBalance",
281
+ "type": "uint256"
282
+ },
283
+ {
284
+ "internalType": "uint256",
285
+ "name": "syBalance",
286
+ "type": "uint256"
287
+ },
288
+ {
289
+ "internalType": "uint256",
290
+ "name": "buyBins",
291
+ "type": "uint256"
292
+ }
293
+ ],
294
+ "internalType": "struct BotState",
295
+ "name": "botState",
296
+ "type": "tuple"
297
+ },
298
+ {
299
+ "components": [
300
+ {
301
+ "components": [
302
+ {
303
+ "internalType": "int256",
304
+ "name": "totalPt",
305
+ "type": "int256"
306
+ },
307
+ {
308
+ "internalType": "int256",
309
+ "name": "totalSy",
310
+ "type": "int256"
311
+ },
312
+ {
313
+ "internalType": "int256",
314
+ "name": "totalLp",
315
+ "type": "int256"
316
+ },
317
+ {
318
+ "internalType": "address",
319
+ "name": "treasury",
320
+ "type": "address"
321
+ },
322
+ {
323
+ "internalType": "int256",
324
+ "name": "scalarRoot",
325
+ "type": "int256"
326
+ },
327
+ {
328
+ "internalType": "uint256",
329
+ "name": "expiry",
330
+ "type": "uint256"
331
+ },
332
+ {
333
+ "internalType": "uint256",
334
+ "name": "lnFeeRateRoot",
335
+ "type": "uint256"
336
+ },
337
+ {
338
+ "internalType": "uint256",
339
+ "name": "reserveFeePercent",
340
+ "type": "uint256"
341
+ },
342
+ {
343
+ "internalType": "uint256",
344
+ "name": "lastLnImpliedRate",
345
+ "type": "uint256"
346
+ }
347
+ ],
348
+ "internalType": "struct MarketState",
349
+ "name": "state",
350
+ "type": "tuple"
351
+ },
352
+ {
353
+ "internalType": "PYIndex",
354
+ "name": "index",
355
+ "type": "uint256"
356
+ },
357
+ {
358
+ "internalType": "uint256",
359
+ "name": "blockTime",
360
+ "type": "uint256"
361
+ }
362
+ ],
363
+ "internalType": "struct MarketExtState",
364
+ "name": "marketExt",
365
+ "type": "tuple"
366
+ },
367
+ {
368
+ "components": [
369
+ {
370
+ "internalType": "uint256",
371
+ "name": "buyYtIy",
372
+ "type": "uint256"
373
+ },
374
+ {
375
+ "internalType": "uint256",
376
+ "name": "sellYtIy",
377
+ "type": "uint256"
378
+ },
379
+ {
380
+ "internalType": "uint256",
381
+ "name": "targetSyRatio",
382
+ "type": "uint256"
383
+ },
384
+ {
385
+ "internalType": "uint256",
386
+ "name": "maxSyRatio",
387
+ "type": "uint256"
388
+ },
389
+ {
390
+ "internalType": "uint256",
391
+ "name": "minYtPtRatio",
392
+ "type": "uint256"
393
+ },
394
+ {
395
+ "internalType": "uint256",
396
+ "name": "numOfBins",
397
+ "type": "uint256"
398
+ }
399
+ ],
400
+ "internalType": "struct LongTradingSpecs",
401
+ "name": "specs",
402
+ "type": "tuple"
403
+ }
404
+ ],
405
+ "internalType": "struct StrategyData",
406
+ "name": "strategyData",
407
+ "type": "tuple"
408
+ }
409
+ ],
410
+ "name": "botExtStats",
411
+ "outputs": [
412
+ {
413
+ "internalType": "uint256",
414
+ "name": "tvlInSy",
415
+ "type": "uint256"
416
+ },
417
+ {
418
+ "internalType": "uint256",
419
+ "name": "iy",
420
+ "type": "uint256"
421
+ },
422
+ {
423
+ "internalType": "uint256",
424
+ "name": "currentSyRatio",
425
+ "type": "uint256"
426
+ },
427
+ {
428
+ "internalType": "uint256",
429
+ "name": "currentYtPtRatio",
430
+ "type": "uint256"
431
+ }
432
+ ],
433
+ "stateMutability": "pure",
434
+ "type": "function"
435
+ },
436
+ {
437
+ "inputs": [
438
+ {
439
+ "internalType": "address",
440
+ "name": "botAddress",
441
+ "type": "address"
442
+ }
443
+ ],
444
+ "name": "getActionDetails",
445
+ "outputs": [
446
+ {
447
+ "components": [
448
+ {
449
+ "internalType": "enum ActionType",
450
+ "name": "action",
451
+ "type": "uint8"
452
+ },
453
+ {
454
+ "internalType": "int256",
455
+ "name": "currentBin",
456
+ "type": "int256"
457
+ },
458
+ {
459
+ "internalType": "uint256",
460
+ "name": "targetIy",
461
+ "type": "uint256"
462
+ },
463
+ {
464
+ "internalType": "uint256",
465
+ "name": "guessBotParams",
466
+ "type": "uint256"
467
+ },
468
+ {
469
+ "internalType": "uint256",
470
+ "name": "guessIntParams",
471
+ "type": "uint256"
472
+ },
473
+ {
474
+ "internalType": "uint256",
475
+ "name": "amountOut",
476
+ "type": "uint256"
477
+ }
478
+ ],
479
+ "internalType": "struct IBotDecisionHelper.ActionToTakeResult",
480
+ "name": "res",
481
+ "type": "tuple"
482
+ }
483
+ ],
484
+ "stateMutability": "nonpayable",
485
+ "type": "function"
486
+ },
487
+ {
488
+ "inputs": [
489
+ {
490
+ "internalType": "address",
491
+ "name": "botAddress",
492
+ "type": "address"
493
+ }
494
+ ],
495
+ "name": "getAvailableZpiAmount",
496
+ "outputs": [
497
+ {
498
+ "internalType": "uint256",
499
+ "name": "amountSyToZpi",
500
+ "type": "uint256"
501
+ }
502
+ ],
503
+ "stateMutability": "nonpayable",
504
+ "type": "function"
505
+ },
506
+ {
507
+ "inputs": [
508
+ {
509
+ "components": [
510
+ {
511
+ "components": [
512
+ {
513
+ "internalType": "uint256",
514
+ "name": "lpBalance",
515
+ "type": "uint256"
516
+ },
517
+ {
518
+ "internalType": "uint256",
519
+ "name": "ytBalance",
520
+ "type": "uint256"
521
+ },
522
+ {
523
+ "internalType": "uint256",
524
+ "name": "syBalance",
525
+ "type": "uint256"
526
+ },
527
+ {
528
+ "internalType": "uint256",
529
+ "name": "buyBins",
530
+ "type": "uint256"
531
+ }
532
+ ],
533
+ "internalType": "struct BotState",
534
+ "name": "botState",
535
+ "type": "tuple"
536
+ },
537
+ {
538
+ "components": [
539
+ {
540
+ "components": [
541
+ {
542
+ "internalType": "int256",
543
+ "name": "totalPt",
544
+ "type": "int256"
545
+ },
546
+ {
547
+ "internalType": "int256",
548
+ "name": "totalSy",
549
+ "type": "int256"
550
+ },
551
+ {
552
+ "internalType": "int256",
553
+ "name": "totalLp",
554
+ "type": "int256"
555
+ },
556
+ {
557
+ "internalType": "address",
558
+ "name": "treasury",
559
+ "type": "address"
560
+ },
561
+ {
562
+ "internalType": "int256",
563
+ "name": "scalarRoot",
564
+ "type": "int256"
565
+ },
566
+ {
567
+ "internalType": "uint256",
568
+ "name": "expiry",
569
+ "type": "uint256"
570
+ },
571
+ {
572
+ "internalType": "uint256",
573
+ "name": "lnFeeRateRoot",
574
+ "type": "uint256"
575
+ },
576
+ {
577
+ "internalType": "uint256",
578
+ "name": "reserveFeePercent",
579
+ "type": "uint256"
580
+ },
581
+ {
582
+ "internalType": "uint256",
583
+ "name": "lastLnImpliedRate",
584
+ "type": "uint256"
585
+ }
586
+ ],
587
+ "internalType": "struct MarketState",
588
+ "name": "state",
589
+ "type": "tuple"
590
+ },
591
+ {
592
+ "internalType": "PYIndex",
593
+ "name": "index",
594
+ "type": "uint256"
595
+ },
596
+ {
597
+ "internalType": "uint256",
598
+ "name": "blockTime",
599
+ "type": "uint256"
600
+ }
601
+ ],
602
+ "internalType": "struct MarketExtState",
603
+ "name": "marketExt",
604
+ "type": "tuple"
605
+ },
606
+ {
607
+ "components": [
608
+ {
609
+ "internalType": "uint256",
610
+ "name": "buyYtIy",
611
+ "type": "uint256"
612
+ },
613
+ {
614
+ "internalType": "uint256",
615
+ "name": "sellYtIy",
616
+ "type": "uint256"
617
+ },
618
+ {
619
+ "internalType": "uint256",
620
+ "name": "targetSyRatio",
621
+ "type": "uint256"
622
+ },
623
+ {
624
+ "internalType": "uint256",
625
+ "name": "maxSyRatio",
626
+ "type": "uint256"
627
+ },
628
+ {
629
+ "internalType": "uint256",
630
+ "name": "minYtPtRatio",
631
+ "type": "uint256"
632
+ },
633
+ {
634
+ "internalType": "uint256",
635
+ "name": "numOfBins",
636
+ "type": "uint256"
637
+ }
638
+ ],
639
+ "internalType": "struct LongTradingSpecs",
640
+ "name": "specs",
641
+ "type": "tuple"
642
+ }
643
+ ],
644
+ "internalType": "struct StrategyData",
645
+ "name": "strategyData",
646
+ "type": "tuple"
647
+ }
648
+ ],
649
+ "name": "getCurrentBin",
650
+ "outputs": [
651
+ {
652
+ "internalType": "int256",
653
+ "name": "",
654
+ "type": "int256"
655
+ }
656
+ ],
657
+ "stateMutability": "view",
658
+ "type": "function"
659
+ },
660
+ {
661
+ "inputs": [
662
+ {
663
+ "components": [
664
+ {
665
+ "components": [
666
+ {
667
+ "internalType": "uint256",
668
+ "name": "lpBalance",
669
+ "type": "uint256"
670
+ },
671
+ {
672
+ "internalType": "uint256",
673
+ "name": "ytBalance",
674
+ "type": "uint256"
675
+ },
676
+ {
677
+ "internalType": "uint256",
678
+ "name": "syBalance",
679
+ "type": "uint256"
680
+ },
681
+ {
682
+ "internalType": "uint256",
683
+ "name": "buyBins",
684
+ "type": "uint256"
685
+ }
686
+ ],
687
+ "internalType": "struct BotState",
688
+ "name": "botState",
689
+ "type": "tuple"
690
+ },
691
+ {
692
+ "components": [
693
+ {
694
+ "components": [
695
+ {
696
+ "internalType": "int256",
697
+ "name": "totalPt",
698
+ "type": "int256"
699
+ },
700
+ {
701
+ "internalType": "int256",
702
+ "name": "totalSy",
703
+ "type": "int256"
704
+ },
705
+ {
706
+ "internalType": "int256",
707
+ "name": "totalLp",
708
+ "type": "int256"
709
+ },
710
+ {
711
+ "internalType": "address",
712
+ "name": "treasury",
713
+ "type": "address"
714
+ },
715
+ {
716
+ "internalType": "int256",
717
+ "name": "scalarRoot",
718
+ "type": "int256"
719
+ },
720
+ {
721
+ "internalType": "uint256",
722
+ "name": "expiry",
723
+ "type": "uint256"
724
+ },
725
+ {
726
+ "internalType": "uint256",
727
+ "name": "lnFeeRateRoot",
728
+ "type": "uint256"
729
+ },
730
+ {
731
+ "internalType": "uint256",
732
+ "name": "reserveFeePercent",
733
+ "type": "uint256"
734
+ },
735
+ {
736
+ "internalType": "uint256",
737
+ "name": "lastLnImpliedRate",
738
+ "type": "uint256"
739
+ }
740
+ ],
741
+ "internalType": "struct MarketState",
742
+ "name": "state",
743
+ "type": "tuple"
744
+ },
745
+ {
746
+ "internalType": "PYIndex",
747
+ "name": "index",
748
+ "type": "uint256"
749
+ },
750
+ {
751
+ "internalType": "uint256",
752
+ "name": "blockTime",
753
+ "type": "uint256"
754
+ }
755
+ ],
756
+ "internalType": "struct MarketExtState",
757
+ "name": "marketExt",
758
+ "type": "tuple"
759
+ },
760
+ {
761
+ "components": [
762
+ {
763
+ "internalType": "uint256",
764
+ "name": "buyYtIy",
765
+ "type": "uint256"
766
+ },
767
+ {
768
+ "internalType": "uint256",
769
+ "name": "sellYtIy",
770
+ "type": "uint256"
771
+ },
772
+ {
773
+ "internalType": "uint256",
774
+ "name": "targetSyRatio",
775
+ "type": "uint256"
776
+ },
777
+ {
778
+ "internalType": "uint256",
779
+ "name": "maxSyRatio",
780
+ "type": "uint256"
781
+ },
782
+ {
783
+ "internalType": "uint256",
784
+ "name": "minYtPtRatio",
785
+ "type": "uint256"
786
+ },
787
+ {
788
+ "internalType": "uint256",
789
+ "name": "numOfBins",
790
+ "type": "uint256"
791
+ }
792
+ ],
793
+ "internalType": "struct LongTradingSpecs",
794
+ "name": "specs",
795
+ "type": "tuple"
796
+ }
797
+ ],
798
+ "internalType": "struct StrategyData",
799
+ "name": "strategyData",
800
+ "type": "tuple"
801
+ },
802
+ {
803
+ "internalType": "enum ActionType",
804
+ "name": "action",
805
+ "type": "uint8"
806
+ },
807
+ {
808
+ "internalType": "uint256",
809
+ "name": "botParam",
810
+ "type": "uint256"
811
+ },
812
+ {
813
+ "components": [
814
+ {
815
+ "internalType": "uint256",
816
+ "name": "guessMin",
817
+ "type": "uint256"
818
+ },
819
+ {
820
+ "internalType": "uint256",
821
+ "name": "guessMax",
822
+ "type": "uint256"
823
+ },
824
+ {
825
+ "internalType": "uint256",
826
+ "name": "guessOffchain",
827
+ "type": "uint256"
828
+ },
829
+ {
830
+ "internalType": "uint256",
831
+ "name": "maxIteration",
832
+ "type": "uint256"
833
+ },
834
+ {
835
+ "internalType": "uint256",
836
+ "name": "eps",
837
+ "type": "uint256"
838
+ }
839
+ ],
840
+ "internalType": "struct ApproxParams",
841
+ "name": "intParams",
842
+ "type": "tuple"
843
+ }
844
+ ],
845
+ "name": "previewAction",
846
+ "outputs": [
847
+ {
848
+ "internalType": "bool",
849
+ "name": "success",
850
+ "type": "bool"
851
+ },
852
+ {
853
+ "components": [
854
+ {
855
+ "internalType": "uint256",
856
+ "name": "lpBalance",
857
+ "type": "uint256"
858
+ },
859
+ {
860
+ "internalType": "uint256",
861
+ "name": "ytBalance",
862
+ "type": "uint256"
863
+ },
864
+ {
865
+ "internalType": "uint256",
866
+ "name": "syBalance",
867
+ "type": "uint256"
868
+ },
869
+ {
870
+ "internalType": "uint256",
871
+ "name": "buyBins",
872
+ "type": "uint256"
873
+ }
874
+ ],
875
+ "internalType": "struct BotState",
876
+ "name": "bot",
877
+ "type": "tuple"
878
+ },
879
+ {
880
+ "components": [
881
+ {
882
+ "components": [
883
+ {
884
+ "internalType": "int256",
885
+ "name": "totalPt",
886
+ "type": "int256"
887
+ },
888
+ {
889
+ "internalType": "int256",
890
+ "name": "totalSy",
891
+ "type": "int256"
892
+ },
893
+ {
894
+ "internalType": "int256",
895
+ "name": "totalLp",
896
+ "type": "int256"
897
+ },
898
+ {
899
+ "internalType": "address",
900
+ "name": "treasury",
901
+ "type": "address"
902
+ },
903
+ {
904
+ "internalType": "int256",
905
+ "name": "scalarRoot",
906
+ "type": "int256"
907
+ },
908
+ {
909
+ "internalType": "uint256",
910
+ "name": "expiry",
911
+ "type": "uint256"
912
+ },
913
+ {
914
+ "internalType": "uint256",
915
+ "name": "lnFeeRateRoot",
916
+ "type": "uint256"
917
+ },
918
+ {
919
+ "internalType": "uint256",
920
+ "name": "reserveFeePercent",
921
+ "type": "uint256"
922
+ },
923
+ {
924
+ "internalType": "uint256",
925
+ "name": "lastLnImpliedRate",
926
+ "type": "uint256"
927
+ }
928
+ ],
929
+ "internalType": "struct MarketState",
930
+ "name": "state",
931
+ "type": "tuple"
932
+ },
933
+ {
934
+ "internalType": "PYIndex",
935
+ "name": "index",
936
+ "type": "uint256"
937
+ },
938
+ {
939
+ "internalType": "uint256",
940
+ "name": "blockTime",
941
+ "type": "uint256"
942
+ }
943
+ ],
944
+ "internalType": "struct MarketExtState",
945
+ "name": "marketExt",
946
+ "type": "tuple"
947
+ }
948
+ ],
949
+ "stateMutability": "pure",
950
+ "type": "function"
951
+ },
952
+ {
953
+ "inputs": [
954
+ {
955
+ "components": [
956
+ {
957
+ "components": [
958
+ {
959
+ "internalType": "uint256",
960
+ "name": "lpBalance",
961
+ "type": "uint256"
962
+ },
963
+ {
964
+ "internalType": "uint256",
965
+ "name": "ytBalance",
966
+ "type": "uint256"
967
+ },
968
+ {
969
+ "internalType": "uint256",
970
+ "name": "syBalance",
971
+ "type": "uint256"
972
+ },
973
+ {
974
+ "internalType": "uint256",
975
+ "name": "buyBins",
976
+ "type": "uint256"
977
+ }
978
+ ],
979
+ "internalType": "struct BotState",
980
+ "name": "botState",
981
+ "type": "tuple"
982
+ },
983
+ {
984
+ "components": [
985
+ {
986
+ "components": [
987
+ {
988
+ "internalType": "int256",
989
+ "name": "totalPt",
990
+ "type": "int256"
991
+ },
992
+ {
993
+ "internalType": "int256",
994
+ "name": "totalSy",
995
+ "type": "int256"
996
+ },
997
+ {
998
+ "internalType": "int256",
999
+ "name": "totalLp",
1000
+ "type": "int256"
1001
+ },
1002
+ {
1003
+ "internalType": "address",
1004
+ "name": "treasury",
1005
+ "type": "address"
1006
+ },
1007
+ {
1008
+ "internalType": "int256",
1009
+ "name": "scalarRoot",
1010
+ "type": "int256"
1011
+ },
1012
+ {
1013
+ "internalType": "uint256",
1014
+ "name": "expiry",
1015
+ "type": "uint256"
1016
+ },
1017
+ {
1018
+ "internalType": "uint256",
1019
+ "name": "lnFeeRateRoot",
1020
+ "type": "uint256"
1021
+ },
1022
+ {
1023
+ "internalType": "uint256",
1024
+ "name": "reserveFeePercent",
1025
+ "type": "uint256"
1026
+ },
1027
+ {
1028
+ "internalType": "uint256",
1029
+ "name": "lastLnImpliedRate",
1030
+ "type": "uint256"
1031
+ }
1032
+ ],
1033
+ "internalType": "struct MarketState",
1034
+ "name": "state",
1035
+ "type": "tuple"
1036
+ },
1037
+ {
1038
+ "internalType": "PYIndex",
1039
+ "name": "index",
1040
+ "type": "uint256"
1041
+ },
1042
+ {
1043
+ "internalType": "uint256",
1044
+ "name": "blockTime",
1045
+ "type": "uint256"
1046
+ }
1047
+ ],
1048
+ "internalType": "struct MarketExtState",
1049
+ "name": "marketExt",
1050
+ "type": "tuple"
1051
+ },
1052
+ {
1053
+ "components": [
1054
+ {
1055
+ "internalType": "uint256",
1056
+ "name": "buyYtIy",
1057
+ "type": "uint256"
1058
+ },
1059
+ {
1060
+ "internalType": "uint256",
1061
+ "name": "sellYtIy",
1062
+ "type": "uint256"
1063
+ },
1064
+ {
1065
+ "internalType": "uint256",
1066
+ "name": "targetSyRatio",
1067
+ "type": "uint256"
1068
+ },
1069
+ {
1070
+ "internalType": "uint256",
1071
+ "name": "maxSyRatio",
1072
+ "type": "uint256"
1073
+ },
1074
+ {
1075
+ "internalType": "uint256",
1076
+ "name": "minYtPtRatio",
1077
+ "type": "uint256"
1078
+ },
1079
+ {
1080
+ "internalType": "uint256",
1081
+ "name": "numOfBins",
1082
+ "type": "uint256"
1083
+ }
1084
+ ],
1085
+ "internalType": "struct LongTradingSpecs",
1086
+ "name": "specs",
1087
+ "type": "tuple"
1088
+ }
1089
+ ],
1090
+ "internalType": "struct StrategyData",
1091
+ "name": "strategyData",
1092
+ "type": "tuple"
1093
+ },
1094
+ {
1095
+ "internalType": "enum ActionType",
1096
+ "name": "action",
1097
+ "type": "uint8"
1098
+ },
1099
+ {
1100
+ "internalType": "uint256",
1101
+ "name": "targetIy",
1102
+ "type": "uint256"
1103
+ },
1104
+ {
1105
+ "internalType": "uint256",
1106
+ "name": "rebalanceAdditionalCheck",
1107
+ "type": "uint256"
1108
+ },
1109
+ {
1110
+ "components": [
1111
+ {
1112
+ "internalType": "uint256",
1113
+ "name": "guessMin",
1114
+ "type": "uint256"
1115
+ },
1116
+ {
1117
+ "internalType": "uint256",
1118
+ "name": "guessMax",
1119
+ "type": "uint256"
1120
+ },
1121
+ {
1122
+ "internalType": "uint256",
1123
+ "name": "guessOffchain",
1124
+ "type": "uint256"
1125
+ },
1126
+ {
1127
+ "internalType": "uint256",
1128
+ "name": "maxIteration",
1129
+ "type": "uint256"
1130
+ },
1131
+ {
1132
+ "internalType": "uint256",
1133
+ "name": "eps",
1134
+ "type": "uint256"
1135
+ }
1136
+ ],
1137
+ "internalType": "struct ApproxParams",
1138
+ "name": "botParams",
1139
+ "type": "tuple"
1140
+ },
1141
+ {
1142
+ "components": [
1143
+ {
1144
+ "internalType": "uint256",
1145
+ "name": "guessMin",
1146
+ "type": "uint256"
1147
+ },
1148
+ {
1149
+ "internalType": "uint256",
1150
+ "name": "guessMax",
1151
+ "type": "uint256"
1152
+ },
1153
+ {
1154
+ "internalType": "uint256",
1155
+ "name": "guessOffchain",
1156
+ "type": "uint256"
1157
+ },
1158
+ {
1159
+ "internalType": "uint256",
1160
+ "name": "maxIteration",
1161
+ "type": "uint256"
1162
+ },
1163
+ {
1164
+ "internalType": "uint256",
1165
+ "name": "eps",
1166
+ "type": "uint256"
1167
+ }
1168
+ ],
1169
+ "internalType": "struct ApproxParams",
1170
+ "name": "intParams",
1171
+ "type": "tuple"
1172
+ }
1173
+ ],
1174
+ "name": "searchForBotParam",
1175
+ "outputs": [
1176
+ {
1177
+ "internalType": "uint256",
1178
+ "name": "",
1179
+ "type": "uint256"
1180
+ }
1181
+ ],
1182
+ "stateMutability": "pure",
1183
+ "type": "function"
1184
+ }
1185
+ ],
1186
+ "bytecode": "0x608060405234801561001057600080fd5b506137e5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c80631cd7e2011461008857806322bcc1e51461016a57806333a26e851461018b5780638d57b2821461019e5780638e727446146101d15780639d2a679f146101f1578063ac4c7e84146101fa578063cf09336114610207578063d8b88a1a14610228575b600080fd5b61009b61009636600461329d565b61023b565b604051610161939291906000610200820190508415158252835160208301526020840151604083015260408401516060830152606084015160808301528251805160a0840152602081015160c0840152604081015160e0840152606081015161010060018060a01b03821681860152608083015161012086015260a083015161014086015260c083015161016086015260e0830151610180860152808301516101a086015250505060208301516101c083015260408301516101e0830152949350505050565b60405180910390f35b61017d6101783660046132f0565b6102c8565b604051908152602001610161565b61017d61019936600461330d565b610394565b6101b16101ac36600461337c565b610590565b604080519485526020850193909352918301526060820152608001610161565b6101e46101df3660046132f0565b6105b7565b60405161016191906133af565b61017d60001981565b61017d655af3107a400081565b61021a610215366004613410565b610797565b604051610161929190613450565b61017d61023636600461337c565b6107f8565b6000610245612ecf565b61024d612ef7565b86516102589061081f565b9150610267876020015161085f565b9050600186600281111561027d5761027d613399565b036102945761028d82828761089d565b92506102be565b60028660028111156102a8576102a8613399565b036102b95761028d828287876108fd565b600092505b9450945094915050565b600080826001600160a01b031663eb983ce56040518163ffffffff1660e01b81526004016102a0604051808303816000875af115801561030c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033091906134c1565b90506000806103478360000151846020015161095b565b50925050915082604001516060015181101561036857506000949350505050565b604080840151015161037b9083906109cf565b83516040015161038b9190613605565b95945050505050565b60008060405180606001604052808981526020018860028111156103ba576103ba613399565b81526020018790526040850151909150156104085760016103e6828660400151888860800151886109f2565b60028111156103f7576103f7613399565b036104085750506040820151610586565b600061041d89600001518a602001518a610b0f565b9050808560200151111561043357602085018190525b60208501518551111561047e5787600281111561045257610452613399565b8551602087015160405163f25ccea360e01b815261047593929190600401613618565b60405180910390fd5b506002610496828660200151888860800151886109f2565b60028111156104a7576104a7613399565b146104b85750506020820151610586565b60005b846060015181101561056c5760006002866000015187602001516104df9190613605565b6104e99190613644565b86516104f59190613658565b9050600061050a84838a8a608001518a6109f2565b9050600181600281111561052057610520613399565b0361053057509250610586915050565b600081600281111561054457610544613399565b0361055157818752610559565b602087018290525b5050806105659061366b565b90506104bb565b5060405163fef33c9d60e01b815260040160405180910390fd5b9695505050505050565b6000806000806105a88560000151866020015161095b565b93509350935093509193509193565b6105f16040805160c08101909152806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000826001600160a01b031663eb983ce56040518163ffffffff1660e01b81526004016102a0604051808303816000875af1158015610634573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065891906134c1565b905060006106698260200151610b42565b905061067e8260000151836040015183610b8f565b6020840181905260000361069757505060008152919050565b6106ae826000015183604001518560200151610b9c565b60408401526020830151600019906000908113156107055760028552835180516020870151606090920151604087015160a001516106ed939190610bf0565b9150816000036107005750505050919050565b61074c565b60018552600061071485610c90565b9050610736818760200151876000015160600151886040015160a00151610bf0565b91508160000361074a575050505050919050565b505b61076c84866000015187604001518461076487610daa565b610199610de6565b606086018190526020850151865161078392610797565b608087015260a08601525092949350505050565b60008060028460028111156107ae576107ae613399565b036107d9576107cf836107bf610de6565b6107c88861085f565b9190610e26565b90925090506107f0565b6107ec836107e68761085f565b90610ec3565b5091505b935093915050565b6000610819826000015183604001516108148560200151610b42565b610b8f565b92915050565b610827612ecf565b604051806080016040528083600001518152602001836020015181526020018360400151815260200183606001518152509050919050565b610867612ef7565b604051806060016040528061087f8460000151610fc7565b81526020018360200151815260200183604001518152509050919050565b600080806108ab8585610ec3565b9150915085602001518111156108c6576000925050506108f6565b80866020018181516108d89190613605565b9052508551829087906108ec908390613658565b9052506001925050505b9392505050565b835160009083111561091157506000610953565b600061091e858585610e26565b50905083866000018181516109339190613605565b90525060208601805182919061094a908390613658565b90525060019150505b949350505050565b600080808061096a8686611044565b935061097585610b42565b6040870151909350610987908561111b565b915060006109a2876000015161099c8861085f565b90611141565b91505080156109bf5760208701516109ba908261111b565b6109c3565b6000195b91505092959194509250565b6000806109dc8385613684565b9050670de0b6b3a7640000815b04949350505050565b600080600080610a0c89600001518a602001518a8861023b565b92509250925082610a23576002935050505061038b565b6000610a2e82610b42565b905060018a602001516002811115610a4857610a48613399565b03610ac8576020808401518b515190910151600091610a6691613605565b905088811115610a7e5760029550505050505061038b565b610a8d828c604001518a6111f8565b15610aa05760019550505050505061038b565b8a60400151821015610aba5760029550505050505061038b565b60009550505050505061038b565b610ad7818b604001518961122b565b15610ae957600194505050505061038b565b8960400151811115610b0257600294505050505061038b565b600094505050505061038b565b60006001826002811115610b2557610b25613399565b03610b3a57610b3383611259565b90506108f6565b5082516108f6565b6000670de0b6b3a7640000610b85610b768460400151856000015160a00151610b6b9190613605565b6301e133809061111b565b610b7f8561127f565b906112cc565b6108199190613605565b6000610953838584611475565b600081600003610bae57610bae61369b565b6000610bba858461148a565b90506000831215610be257610bda610bd3826001613658565b85906114d1565b9150506108f6565b610bda610bd3600183613605565b600083600003610c0257610c0261369b565b6000808512610c265783610c17846002613684565b610c219190613605565b610c28565b835b9050600081670de0b6b3a7640000610c3f88611540565b610c499190613684565b610c539190613644565b90506000670de0b6b3a7640000610c6e83610b7f8184613658565b610c789190613605565b9050610c8488826109cf565b98975050505050505050565b600080610ca58360000151846020015161095b565b9350505050826040015160800151811015610cc35750600092915050565b6000610cd6846000015160200151610daa565b90506000610ce2610de6565b90505b8151610cf2906001613658565b82602001511115610da1576000600283600001518460200151610d159190613605565b610d1f9190613644565b8351610d2b9190613658565b90506000806000610d3f896001868861023b565b92509250925082610d6457610d55600185613605565b602087015250610ce592505050565b610d6e828261095b565b60408d015160800151909a508a109250610d8d91505057838652610d98565b610d55600185613605565b50505050610ce5565b50519392505050565b610db2612f1e565b506040805160a0810182526001815260208101929092526000908201526101006060820152655af3107a4000608082015290565b610dee612f1e565b6040518060a00160405280600181526020016000198152602001600081526020016101008152602001655af3107a4000815250905090565b600080600080610e368787611141565b915091506000610e5383896020015161155b90919063ffffffff16565b90506000610e618284613658565b90506000610e878a60200151838c60400151610e7c8c611567565b8e51939291906115b1565b5060208c015160408d01518d51929950929350610ea59289906116d2565b5050508083610eb49190613658565b96505050505050935093915050565b6000806000610eeb85602001518587604001518860000151611723909392919063ffffffff16565b505060208601519091506000610f018284613684565b610f13670de0b6b3a764000088613684565b610f1d9190613605565b875151909150600090610f2f9061174c565b83610f418a600001516020015161174c565b610f4b9190613684565b610f559190613644565b610f6790670de0b6b3a7640000613658565b90506000610f758284613644565b9050610f818189613605565b95506000610f9c878b6020015161175b90919063ffffffff16565b90506000610faa8783613605565b9050610fb78b8285611767565b9850505050505050509250929050565b610fcf612f4d565b60405180610120016040528083600001518152602001836020015181526020018360400151815260200183606001516001600160a01b03168152602001836080015181526020018360a0015181526020018360c0015181526020018360e0015181526020018361010001518152509050919050565b6000806110508361085f565b905060008061106c86600001518461114190919063ffffffff16565b9150915060008287604001516110829190613658565b9050866020015182116110d057611099848361193d565b6110a39082613658565b90506110bf8288602001516110b89190613605565b859061194f565b6110c99082613658565b9050610586565b60208701516110e090859061193d565b6110ea9082613658565b90506111068760200151836110ff9190613605565b85906119aa565b6111109082613658565b979650505050505050565b600080611130670de0b6b3a764000085613684565b90508281816109e9576109e961362e565b600080600061114f846119ce565b8551604081015160209091015191925060009161116c90846136b1565b61117691906136e1565b86516040810151905191925060009161118f90856136b1565b61119991906136e1565b8751604001519091506111ac90846119e4565b8751604001528651516111bf90826119e4565b8751528651602001516111d290836119e4565b8751602001526111e18261174c565b6111ea8261174c565b945094505050509250929050565b600082841015801561095357506112208361121b84670de0b6b3a7640000613658565b6109cf565b909311159392505050565b6000828411158015610953575061124e8361121b84670de0b6b3a7640000613605565b909310159392505050565b60208101516040820151825160009261081992611277929190611a2b565b835151611b25565b602081015160408201518251600092839261129b929190611a2b565b905060006112c18460000151600001518360200151846000015185604001516000611bb9565b90506109538161174c565b6000816000036112e55750670de0b6b3a7640000610819565b826000036112f557506000610819565b600160ff1b831061133a5760405162461bcd60e51b815260206004820152600f60248201526e78206f7574206f6620626f756e647360881b6044820152606401610475565b82770bce5086492111aea88f4bb1ca6bcf584181ea8059f7653283106113945760405162461bcd60e51b815260206004820152600f60248201526e79206f7574206f6620626f756e647360881b6044820152606401610475565b826000670c7d713b49da0000831380156113b55750670f43fc2c04ee000083125b156113ec5760006113c584611c6a565b9050670de0b6b3a764000080820784020583670de0b6b3a7640000830502019150506113fa565b816113f684611d89565b0290505b670de0b6b3a76400009005680238fd42c5cf03ffff198112801590611428575068070c1cc73b00c800008113155b61146c5760405162461bcd60e51b815260206004820152601560248201527470726f64756374206f7574206f6620626f756e647360581b6044820152606401610475565b6105868161212c565b6000610953836114858685612541565b6125ad565b60008160000361149c5761149c61369b565b600182126114b257816114ae8161370f565b9250505b6108f66114c284606001516119ce565b6114cc9084613727565b61174c565b600081158015906114f1575060a08301516114ed906002613684565b8214155b6114fd576114fd61369b565b6000611508846125e4565b9050611515600282613644565b611520600185613605565b61152a9083613684565b85516115369190613658565b6109539190613658565b6000808213611557576115528261374f565b610819565b5090565b60006108f68383612612565b61156f612f1e565b6040518060a001604052808360000151815260200183602001518152602001836040015181526020018360600151815260200183608001518152509050919050565b60008080806115c1898988611a2b565b905084604001516000036116035784516115db9088612631565b855260208501516115f5906115f08b84612647565b6126cb565b6020860152611603856126da565b60005b85606001518110156116ad57600061161e8783612728565b905060008061162f8d868e8661278d565b50909250905060006116418d8461155b565b9050600061164f8286613605565b90508c811161168657611667818e8d6080015161122b565b1561167e575097509195509093506116c792505050565b848b52611697565b611691600186613605565b60208c01525b5050505050806116a69061366b565b9050611606565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b6000806000806000806116ef8a8a6116e98b6127be565b8a6127d5565b9250925092506116fe8361174c565b95506117098261174c565b94506117148161174c565b93505050509450945094915050565b60008060008060008061173a8a8a6116e98b6119ce565b9250925092506116fe6114cc84612868565b60008082121561155757600080fd5b60006108f68383612876565b825160a001516040840151600091116117c15760405162461bcd60e51b815260206004820152601c60248201527b13585c9ad95d115e1d131a588e88195e1c1a5c9959081b585c9ad95d60221b6044820152606401610475565b83516040015160001261180d5760405162461bcd60e51b815260206004820152601460248201527304d61726b65744578744c69623a204c50203c20360641b6044820152606401610475565b6000611818846119ce565b90506000611825846119ce565b90506000806000808960000151600001518a60000151604001518661184a91906136b1565b61185491906136e1565b8a51602081015160409091015191925060009161187190896136b1565b61187b91906136e1565b9050808212156118b6578a51604081015160209091015192955086945085926118a59084906136b1565b6118af91906136e1565b92506118df565b8a516040810151905191955087935085916118d29083906136b1565b6118dc91906136e1565b93505b828b600001516020018181516118f59190613727565b9052508a51805185919061190a908390613727565b9052508a516040018051869190611922908390613727565b90525061192e8561174c565b9b9a5050505050505050505050565b60208201516000906108f6908361175b565b602082015160408301518351600092839261196d9291908690611723565b50509050600061198a82866020015161288b90919063ffffffff16565b905060006119988286613605565b6020870151909150610586908261175b565b6020820151604083015183516000926119c49285906116d2565b5090949350505050565b60006001600160ff1b0382111561155757600080fd5b600081831215611a215760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b6044820152606401610475565b6108f6828461376b565b611a566040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210611a7a5760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151611a8c9190613605565b9050611a988582612898565b82526020850151611aaa9085906128f9565b602083015284511580611abf57506020820151155b15611ae6578451602083015160405163b1c4aefb60e01b8152610475929190600401613450565b611b0485600001518661010001518460200151856000015185612930565b604083015260c0850151611b1890826129b1565b6060830152509392505050565b600080611b52611b4d856000015186604001518760600151611b47919061376b565b906129e5565b61212c565b90506000611b72611b6b670de0b6b3a764000084613727565b8390612a08565b90506000611b90866020015186611b899190613727565b83906129e5565b90506000611b9e828761376b565b90506103e8611baf826103e7613684565b6111109190613644565b600080611bc687846119e4565b90506000611bd7611b6b888a613727565b9050670d529ae9e8600000811315611c0e5780670d529ae9e8600000604051637e34684f60e11b8152600401610475929190613450565b6000611c1982612a2e565b905085611c268289612a08565b611c309190613727565b9350670de0b6b3a7640000841215611c5e5760405163329e322960e21b815260048101859052602401610475565b50505095945050505050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281611cab57611cab61362e565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215611dca57611dc1826a0c097ce7bc90715b34b9f160241b81611dbb57611dbb61362e565b05611d89565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312611e155772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312611e4c576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611e94576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312611ecf576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312611f0657693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312611f3d57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312611f725768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312611f9d57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312611fd2576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312612007576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b286603831261203b576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac831261206f576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d6310000080860302816120985761209861362e565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6000680238fd42c5cf03ffff198212158015612151575068070c1cc73b00c800008213155b6121905760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610475565b60008212156121c8576121a58260000361212c565b6a0c097ce7bc90715b34b9f160241b816121c1576121c161362e565b0592915050565b60006806f05b59d3b2000000831261220657506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61223c565b6803782dace9d9000000831261223857506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061223c565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261228c5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000084126122c8576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261230257682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261233c576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000841261237557680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123ae5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b188000084126123e7576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126124205768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b815160009082101561255557506000610819565b82602001518211156125835760a0830151612571906002613684565b61257c906001613658565b9050610819565b61258c836125e4565b83516125989084613605565b6125a29190613644565b6108f6906001613658565b6000806125bd84606001516119ce565b6125c6846119ce565b6125d0919061376b565b9050600181126108f6578061038b81613792565b60008160a0015160026125f79190613684565b825160208401516126089190613605565b6108199190613644565b6000670de0b6b3a76400006126278484613684565b6108f69190613644565b600081831161264057816108f6565b5090919050565b600080600090506000600184602001516126619190613605565b90505b8082146126c357600060026126798385613658565b612684906001613658565b61268e9190613644565b905060006126a186886000015184612a81565b12156126b9576126b2600182613605565b91506126bd565b8092505b50612664565b509392505050565b600081831061264057816108f6565b6020810151815111806126f85750670de0b6b3a76400008160800151115b1561272557805160208201516080830151604051632cc06bc160e21b815261047593929190600401613618565b50565b60008115801561273b5750604083015115155b1561274b57506040820151610819565b6020830151835111612774576020830151835160029161276a91613658565b61257c9190613644565b604051637d388ed960e11b815260040160405180910390fd5b600080808080806127ab89896127a28a61374f565b8d929190612b73565b919c909b50909950975050505050505050565b60006127c9826119ce565b610819906000196136b1565b60008060006127e88760a0015185101590565b156128065760405163b2094b5960e01b815260040160405180910390fd5b8651851261282c578651604051632185509b60e21b815261047591908790600401613450565b6000612839888887611a2b565b905061284788828989612b73565b9195509350915061285d8882898988878b612cc7565b509450945094915050565b6000610819826000196136b1565b600082612627670de0b6b3a764000084613684565b6000826109538184612d59565b60006128a3826119ce565b6128ba6128b56201518061016d613684565b6119ce565b84608001516128c991906136b1565b6128d391906136e1565b90506000811361081957604051630e520c3b60e11b815260048101829052602401610475565b6000806000831261290b57600161290f565b6000195b90506129266128b58561292186611540565b612612565b61095390826136b1565b60008061293d86846129b1565b9050670de0b6b3a764000081121561296b5760405163329e322960e21b815260048101829052602401610475565b600061298161297a878a613727565b8990612a08565b9050600061298e82612a2e565b905061299a8187612a08565b6129a4908461376b565b9998505050505050505050565b6000806129c36201518061016d613684565b6129cd8486613684565b6129d79190613644565b9050610953611b4d826119ce565b6000806129f283856136b1565b9050670de0b6b3a7640000815b05949350505050565b600080612a1d670de0b6b3a7640000856136b1565b90508281816129ff576129ff61362e565b6000670de0b6b3a76400008203612a585760405163a9c8b14d60e01b815260040160405180910390fd5b6000612a76612a6f84670de0b6b3a764000061376b565b8490612a08565b90506108f681612d85565b600080828560200151612a94919061376b565b90506000612aa28585613727565b9050600082138015612ab45750600081135b612af55760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b6044820152606401610475565b6000612b23612b0484846136b1565b6020890151612b139089613727565b612b1d90886136b1565b90612a08565b90506000612b39612b348486612a08565b612d85565b8851909150600090612b5490670de0b6b3a764000090612a08565b9050612b6481611b47848661376b565b89604001516129a4919061376b565b600080600080612b968860000151886020015189600001518a6040015189611bb9565b90506000612bac612ba78784612a08565b612868565b60608901519091506000871315612c1b576000612bc98483612a08565b9050670de0b6b3a7640000811215612bf75760405163329e322960e21b815260048101829052602401610475565b612c13612c0c83670de0b6b3a764000061376b565b84906129e5565b915050612c48565b612c4581612c3181670de0b6b3a764000061376b565b612c3b90856136b1565b612ba791906136e1565b90505b60006064612c598c60e001516119ce565b612c6390846136b1565b612c6d91906136e1565b90506000612c7b838561376b565b905060008112612c9457612c8f8a82612e16565b612c9e565b612c9e8a82612e43565b9750612caa8a84612e16565b9650612cb68a83612e16565b955050505050509450945094915050565b6000818860a00151612cd99190613605565b8851909150612ce890866119e4565b8852612d02612cf78486613727565b60208a0151906119e4565b602089018190528851612d2791612d1a9089906128f9565b895160408b015185612e70565b6101008901819052600003612d4f57604051635534d70f60e11b815260040160405180910390fd5b5050505050505050565b6000670de0b6b3a7640000600181612d718686613684565b612d7b9190613658565b6126279190613605565b6000808213612dc65760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610475565b670c7d713b49da000082138015612de45750670f43fc2c04ee000082125b15612e0857670de0b6b3a7640000612dfb83611c6a565b816121c1576121c161362e565b61081982611d89565b919050565b60008060008312612e28576001612e2c565b6000195b90506129266128b585612e3e86611540565b612876565b60008060008312612e55576001612e59565b6000195b90506129266128b585612e6b86611540565b612eb7565b600080612e81878787876000611bb9565b90506000612e916114cc83612d85565b905083612ea36201518061016d613684565b612ead9083613684565b610c849190613644565b600082600181612d71670de0b6b3a764000086613684565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060600160405280612f0a612f4d565b815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60405180610120016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051606081016001600160401b0381118282101715612fd257634e487b7160e01b600052604160045260246000fd5b60405290565b60405161012081016001600160401b0381118282101715612fd257634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715612fd257634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612fd257634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461272557600080fd5b8035612e1181613069565b600081830361016081121561309d57600080fd5b6130a5612fa2565b9150610120808212156130b757600080fd5b6130bf612fd8565b91508335825260208401356020830152604084013560408301526130e56060850161307e565b60608301526080840135608083015260a084013560a083015260c084013560c083015260e084013560e08301526101008085013581840152508183528084013560208401525050610140820135604082015292915050565b60008183036102a081121561315157600080fd5b613159612fa2565b9150608081121561316957600080fd5b613171613039565b83358152602084013560208201526040840135604082015260608401356060820152808352506131a48460808501613089565b602083015260c06101df19820112156131bc57600080fd5b506131c5613009565b6101e08301358152610200830135602082015261022083013560408201526102408301356060820152610260830135608082015261028083013560a08201528060408301525092915050565b803560038110612e1157600080fd5b600060a0828403121561323257600080fd5b60405160a081016001600160401b038111828210171561326257634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b60008060008061038085870312156132b457600080fd5b6132be868661313d565b93506132cd6102a08601613211565b92506102c085013591506132e5866102e08701613220565b905092959194509250565b60006020828403121561330257600080fd5b81356108f681613069565b600080600080600080610440878903121561332757600080fd5b613331888861313d565b95506133406102a08801613211565b94506102c087013593506102e08701359250613360886103008901613220565b9150613370886103a08901613220565b90509295509295509295565b60006102a0828403121561338f57600080fd5b6108f6838361313d565b634e487b7160e01b600052602160045260246000fd5b815160c0820190600381106133d457634e487b7160e01b600052602160045260246000fd5b808352506020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60008060006101a0848603121561342657600080fd5b6134308585613089565b925061343f6101608501613211565b915061018084013590509250925092565b918252602082015260400190565b8051612e1181613069565b600060c0828403121561347b57600080fd5b613483613009565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015292915050565b60008183036102a08112156134d557600080fd5b6134dd612fa2565b60808212156134eb57600080fd5b6134f3613039565b8451815260208501516020820152604085015160408201526060850151606082015280825250607f19820191506101608083121561353057600080fd5b613538612fa2565b6101208085121561354857600080fd5b613550612fd8565b94506080870151855260a0870151602086015260c0870151604086015261357960e0880161345e565b60608601526101008088015160808701528188015160a087015261014088015160c08701528388015160e08701526101808801518187015250508381526101a086015160208201526101c0860151604082015280602084015250506135e2856101e08601613469565b6040820152949350505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610819576108196135ef565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826136535761365361362e565b500490565b80820180821115610819576108196135ef565b60006001820161367d5761367d6135ef565b5060010190565b8082028115828204841417610819576108196135ef565b634e487b7160e01b600052600160045260246000fd5b80820260008212600160ff1b841416156136cd576136cd6135ef565b8181058314821517610819576108196135ef565b6000826136f0576136f061362e565b600160ff1b82146000198414161561370a5761370a6135ef565b500590565b60006001600160ff1b01820161367d5761367d6135ef565b8082018281126000831280158216821582161715613747576137476135ef565b505092915050565b6000600160ff1b8201613764576137646135ef565b5060000390565b818103600083128015838313168383128216171561378b5761378b6135ef565b5092915050565b6000600160ff1b82016137a7576137a76135ef565b50600019019056fea2646970667358221220f25a78b89754e73b4a5e532b244c5b19f5681ed797565f0eb14142d44db1bf7064736f6c63430008110033",
1187
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100835760003560e01c80631cd7e2011461008857806322bcc1e51461016a57806333a26e851461018b5780638d57b2821461019e5780638e727446146101d15780639d2a679f146101f1578063ac4c7e84146101fa578063cf09336114610207578063d8b88a1a14610228575b600080fd5b61009b61009636600461329d565b61023b565b604051610161939291906000610200820190508415158252835160208301526020840151604083015260408401516060830152606084015160808301528251805160a0840152602081015160c0840152604081015160e0840152606081015161010060018060a01b03821681860152608083015161012086015260a083015161014086015260c083015161016086015260e0830151610180860152808301516101a086015250505060208301516101c083015260408301516101e0830152949350505050565b60405180910390f35b61017d6101783660046132f0565b6102c8565b604051908152602001610161565b61017d61019936600461330d565b610394565b6101b16101ac36600461337c565b610590565b604080519485526020850193909352918301526060820152608001610161565b6101e46101df3660046132f0565b6105b7565b60405161016191906133af565b61017d60001981565b61017d655af3107a400081565b61021a610215366004613410565b610797565b604051610161929190613450565b61017d61023636600461337c565b6107f8565b6000610245612ecf565b61024d612ef7565b86516102589061081f565b9150610267876020015161085f565b9050600186600281111561027d5761027d613399565b036102945761028d82828761089d565b92506102be565b60028660028111156102a8576102a8613399565b036102b95761028d828287876108fd565b600092505b9450945094915050565b600080826001600160a01b031663eb983ce56040518163ffffffff1660e01b81526004016102a0604051808303816000875af115801561030c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033091906134c1565b90506000806103478360000151846020015161095b565b50925050915082604001516060015181101561036857506000949350505050565b604080840151015161037b9083906109cf565b83516040015161038b9190613605565b95945050505050565b60008060405180606001604052808981526020018860028111156103ba576103ba613399565b81526020018790526040850151909150156104085760016103e6828660400151888860800151886109f2565b60028111156103f7576103f7613399565b036104085750506040820151610586565b600061041d89600001518a602001518a610b0f565b9050808560200151111561043357602085018190525b60208501518551111561047e5787600281111561045257610452613399565b8551602087015160405163f25ccea360e01b815261047593929190600401613618565b60405180910390fd5b506002610496828660200151888860800151886109f2565b60028111156104a7576104a7613399565b146104b85750506020820151610586565b60005b846060015181101561056c5760006002866000015187602001516104df9190613605565b6104e99190613644565b86516104f59190613658565b9050600061050a84838a8a608001518a6109f2565b9050600181600281111561052057610520613399565b0361053057509250610586915050565b600081600281111561054457610544613399565b0361055157818752610559565b602087018290525b5050806105659061366b565b90506104bb565b5060405163fef33c9d60e01b815260040160405180910390fd5b9695505050505050565b6000806000806105a88560000151866020015161095b565b93509350935093509193509193565b6105f16040805160c08101909152806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000826001600160a01b031663eb983ce56040518163ffffffff1660e01b81526004016102a0604051808303816000875af1158015610634573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065891906134c1565b905060006106698260200151610b42565b905061067e8260000151836040015183610b8f565b6020840181905260000361069757505060008152919050565b6106ae826000015183604001518560200151610b9c565b60408401526020830151600019906000908113156107055760028552835180516020870151606090920151604087015160a001516106ed939190610bf0565b9150816000036107005750505050919050565b61074c565b60018552600061071485610c90565b9050610736818760200151876000015160600151886040015160a00151610bf0565b91508160000361074a575050505050919050565b505b61076c84866000015187604001518461076487610daa565b610199610de6565b606086018190526020850151865161078392610797565b608087015260a08601525092949350505050565b60008060028460028111156107ae576107ae613399565b036107d9576107cf836107bf610de6565b6107c88861085f565b9190610e26565b90925090506107f0565b6107ec836107e68761085f565b90610ec3565b5091505b935093915050565b6000610819826000015183604001516108148560200151610b42565b610b8f565b92915050565b610827612ecf565b604051806080016040528083600001518152602001836020015181526020018360400151815260200183606001518152509050919050565b610867612ef7565b604051806060016040528061087f8460000151610fc7565b81526020018360200151815260200183604001518152509050919050565b600080806108ab8585610ec3565b9150915085602001518111156108c6576000925050506108f6565b80866020018181516108d89190613605565b9052508551829087906108ec908390613658565b9052506001925050505b9392505050565b835160009083111561091157506000610953565b600061091e858585610e26565b50905083866000018181516109339190613605565b90525060208601805182919061094a908390613658565b90525060019150505b949350505050565b600080808061096a8686611044565b935061097585610b42565b6040870151909350610987908561111b565b915060006109a2876000015161099c8861085f565b90611141565b91505080156109bf5760208701516109ba908261111b565b6109c3565b6000195b91505092959194509250565b6000806109dc8385613684565b9050670de0b6b3a7640000815b04949350505050565b600080600080610a0c89600001518a602001518a8861023b565b92509250925082610a23576002935050505061038b565b6000610a2e82610b42565b905060018a602001516002811115610a4857610a48613399565b03610ac8576020808401518b515190910151600091610a6691613605565b905088811115610a7e5760029550505050505061038b565b610a8d828c604001518a6111f8565b15610aa05760019550505050505061038b565b8a60400151821015610aba5760029550505050505061038b565b60009550505050505061038b565b610ad7818b604001518961122b565b15610ae957600194505050505061038b565b8960400151811115610b0257600294505050505061038b565b600094505050505061038b565b60006001826002811115610b2557610b25613399565b03610b3a57610b3383611259565b90506108f6565b5082516108f6565b6000670de0b6b3a7640000610b85610b768460400151856000015160a00151610b6b9190613605565b6301e133809061111b565b610b7f8561127f565b906112cc565b6108199190613605565b6000610953838584611475565b600081600003610bae57610bae61369b565b6000610bba858461148a565b90506000831215610be257610bda610bd3826001613658565b85906114d1565b9150506108f6565b610bda610bd3600183613605565b600083600003610c0257610c0261369b565b6000808512610c265783610c17846002613684565b610c219190613605565b610c28565b835b9050600081670de0b6b3a7640000610c3f88611540565b610c499190613684565b610c539190613644565b90506000670de0b6b3a7640000610c6e83610b7f8184613658565b610c789190613605565b9050610c8488826109cf565b98975050505050505050565b600080610ca58360000151846020015161095b565b9350505050826040015160800151811015610cc35750600092915050565b6000610cd6846000015160200151610daa565b90506000610ce2610de6565b90505b8151610cf2906001613658565b82602001511115610da1576000600283600001518460200151610d159190613605565b610d1f9190613644565b8351610d2b9190613658565b90506000806000610d3f896001868861023b565b92509250925082610d6457610d55600185613605565b602087015250610ce592505050565b610d6e828261095b565b60408d015160800151909a508a109250610d8d91505057838652610d98565b610d55600185613605565b50505050610ce5565b50519392505050565b610db2612f1e565b506040805160a0810182526001815260208101929092526000908201526101006060820152655af3107a4000608082015290565b610dee612f1e565b6040518060a00160405280600181526020016000198152602001600081526020016101008152602001655af3107a4000815250905090565b600080600080610e368787611141565b915091506000610e5383896020015161155b90919063ffffffff16565b90506000610e618284613658565b90506000610e878a60200151838c60400151610e7c8c611567565b8e51939291906115b1565b5060208c015160408d01518d51929950929350610ea59289906116d2565b5050508083610eb49190613658565b96505050505050935093915050565b6000806000610eeb85602001518587604001518860000151611723909392919063ffffffff16565b505060208601519091506000610f018284613684565b610f13670de0b6b3a764000088613684565b610f1d9190613605565b875151909150600090610f2f9061174c565b83610f418a600001516020015161174c565b610f4b9190613684565b610f559190613644565b610f6790670de0b6b3a7640000613658565b90506000610f758284613644565b9050610f818189613605565b95506000610f9c878b6020015161175b90919063ffffffff16565b90506000610faa8783613605565b9050610fb78b8285611767565b9850505050505050509250929050565b610fcf612f4d565b60405180610120016040528083600001518152602001836020015181526020018360400151815260200183606001516001600160a01b03168152602001836080015181526020018360a0015181526020018360c0015181526020018360e0015181526020018361010001518152509050919050565b6000806110508361085f565b905060008061106c86600001518461114190919063ffffffff16565b9150915060008287604001516110829190613658565b9050866020015182116110d057611099848361193d565b6110a39082613658565b90506110bf8288602001516110b89190613605565b859061194f565b6110c99082613658565b9050610586565b60208701516110e090859061193d565b6110ea9082613658565b90506111068760200151836110ff9190613605565b85906119aa565b6111109082613658565b979650505050505050565b600080611130670de0b6b3a764000085613684565b90508281816109e9576109e961362e565b600080600061114f846119ce565b8551604081015160209091015191925060009161116c90846136b1565b61117691906136e1565b86516040810151905191925060009161118f90856136b1565b61119991906136e1565b8751604001519091506111ac90846119e4565b8751604001528651516111bf90826119e4565b8751528651602001516111d290836119e4565b8751602001526111e18261174c565b6111ea8261174c565b945094505050509250929050565b600082841015801561095357506112208361121b84670de0b6b3a7640000613658565b6109cf565b909311159392505050565b6000828411158015610953575061124e8361121b84670de0b6b3a7640000613605565b909310159392505050565b60208101516040820151825160009261081992611277929190611a2b565b835151611b25565b602081015160408201518251600092839261129b929190611a2b565b905060006112c18460000151600001518360200151846000015185604001516000611bb9565b90506109538161174c565b6000816000036112e55750670de0b6b3a7640000610819565b826000036112f557506000610819565b600160ff1b831061133a5760405162461bcd60e51b815260206004820152600f60248201526e78206f7574206f6620626f756e647360881b6044820152606401610475565b82770bce5086492111aea88f4bb1ca6bcf584181ea8059f7653283106113945760405162461bcd60e51b815260206004820152600f60248201526e79206f7574206f6620626f756e647360881b6044820152606401610475565b826000670c7d713b49da0000831380156113b55750670f43fc2c04ee000083125b156113ec5760006113c584611c6a565b9050670de0b6b3a764000080820784020583670de0b6b3a7640000830502019150506113fa565b816113f684611d89565b0290505b670de0b6b3a76400009005680238fd42c5cf03ffff198112801590611428575068070c1cc73b00c800008113155b61146c5760405162461bcd60e51b815260206004820152601560248201527470726f64756374206f7574206f6620626f756e647360581b6044820152606401610475565b6105868161212c565b6000610953836114858685612541565b6125ad565b60008160000361149c5761149c61369b565b600182126114b257816114ae8161370f565b9250505b6108f66114c284606001516119ce565b6114cc9084613727565b61174c565b600081158015906114f1575060a08301516114ed906002613684565b8214155b6114fd576114fd61369b565b6000611508846125e4565b9050611515600282613644565b611520600185613605565b61152a9083613684565b85516115369190613658565b6109539190613658565b6000808213611557576115528261374f565b610819565b5090565b60006108f68383612612565b61156f612f1e565b6040518060a001604052808360000151815260200183602001518152602001836040015181526020018360600151815260200183608001518152509050919050565b60008080806115c1898988611a2b565b905084604001516000036116035784516115db9088612631565b855260208501516115f5906115f08b84612647565b6126cb565b6020860152611603856126da565b60005b85606001518110156116ad57600061161e8783612728565b905060008061162f8d868e8661278d565b50909250905060006116418d8461155b565b9050600061164f8286613605565b90508c811161168657611667818e8d6080015161122b565b1561167e575097509195509093506116c792505050565b848b52611697565b611691600186613605565b60208c01525b5050505050806116a69061366b565b9050611606565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b6000806000806000806116ef8a8a6116e98b6127be565b8a6127d5565b9250925092506116fe8361174c565b95506117098261174c565b94506117148161174c565b93505050509450945094915050565b60008060008060008061173a8a8a6116e98b6119ce565b9250925092506116fe6114cc84612868565b60008082121561155757600080fd5b60006108f68383612876565b825160a001516040840151600091116117c15760405162461bcd60e51b815260206004820152601c60248201527b13585c9ad95d115e1d131a588e88195e1c1a5c9959081b585c9ad95d60221b6044820152606401610475565b83516040015160001261180d5760405162461bcd60e51b815260206004820152601460248201527304d61726b65744578744c69623a204c50203c20360641b6044820152606401610475565b6000611818846119ce565b90506000611825846119ce565b90506000806000808960000151600001518a60000151604001518661184a91906136b1565b61185491906136e1565b8a51602081015160409091015191925060009161187190896136b1565b61187b91906136e1565b9050808212156118b6578a51604081015160209091015192955086945085926118a59084906136b1565b6118af91906136e1565b92506118df565b8a516040810151905191955087935085916118d29083906136b1565b6118dc91906136e1565b93505b828b600001516020018181516118f59190613727565b9052508a51805185919061190a908390613727565b9052508a516040018051869190611922908390613727565b90525061192e8561174c565b9b9a5050505050505050505050565b60208201516000906108f6908361175b565b602082015160408301518351600092839261196d9291908690611723565b50509050600061198a82866020015161288b90919063ffffffff16565b905060006119988286613605565b6020870151909150610586908261175b565b6020820151604083015183516000926119c49285906116d2565b5090949350505050565b60006001600160ff1b0382111561155757600080fd5b600081831215611a215760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b6044820152606401610475565b6108f6828461376b565b611a566040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210611a7a5760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151611a8c9190613605565b9050611a988582612898565b82526020850151611aaa9085906128f9565b602083015284511580611abf57506020820151155b15611ae6578451602083015160405163b1c4aefb60e01b8152610475929190600401613450565b611b0485600001518661010001518460200151856000015185612930565b604083015260c0850151611b1890826129b1565b6060830152509392505050565b600080611b52611b4d856000015186604001518760600151611b47919061376b565b906129e5565b61212c565b90506000611b72611b6b670de0b6b3a764000084613727565b8390612a08565b90506000611b90866020015186611b899190613727565b83906129e5565b90506000611b9e828761376b565b90506103e8611baf826103e7613684565b6111109190613644565b600080611bc687846119e4565b90506000611bd7611b6b888a613727565b9050670d529ae9e8600000811315611c0e5780670d529ae9e8600000604051637e34684f60e11b8152600401610475929190613450565b6000611c1982612a2e565b905085611c268289612a08565b611c309190613727565b9350670de0b6b3a7640000841215611c5e5760405163329e322960e21b815260048101859052602401610475565b50505095945050505050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281611cab57611cab61362e565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215611dca57611dc1826a0c097ce7bc90715b34b9f160241b81611dbb57611dbb61362e565b05611d89565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312611e155772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312611e4c576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611e94576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312611ecf576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312611f0657693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312611f3d57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312611f725768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312611f9d57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312611fd2576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312612007576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b286603831261203b576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac831261206f576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d6310000080860302816120985761209861362e565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6000680238fd42c5cf03ffff198212158015612151575068070c1cc73b00c800008213155b6121905760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610475565b60008212156121c8576121a58260000361212c565b6a0c097ce7bc90715b34b9f160241b816121c1576121c161362e565b0592915050565b60006806f05b59d3b2000000831261220657506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61223c565b6803782dace9d9000000831261223857506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061223c565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261228c5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000084126122c8576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261230257682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261233c576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000841261237557680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123ae5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b188000084126123e7576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126124205768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b815160009082101561255557506000610819565b82602001518211156125835760a0830151612571906002613684565b61257c906001613658565b9050610819565b61258c836125e4565b83516125989084613605565b6125a29190613644565b6108f6906001613658565b6000806125bd84606001516119ce565b6125c6846119ce565b6125d0919061376b565b9050600181126108f6578061038b81613792565b60008160a0015160026125f79190613684565b825160208401516126089190613605565b6108199190613644565b6000670de0b6b3a76400006126278484613684565b6108f69190613644565b600081831161264057816108f6565b5090919050565b600080600090506000600184602001516126619190613605565b90505b8082146126c357600060026126798385613658565b612684906001613658565b61268e9190613644565b905060006126a186886000015184612a81565b12156126b9576126b2600182613605565b91506126bd565b8092505b50612664565b509392505050565b600081831061264057816108f6565b6020810151815111806126f85750670de0b6b3a76400008160800151115b1561272557805160208201516080830151604051632cc06bc160e21b815261047593929190600401613618565b50565b60008115801561273b5750604083015115155b1561274b57506040820151610819565b6020830151835111612774576020830151835160029161276a91613658565b61257c9190613644565b604051637d388ed960e11b815260040160405180910390fd5b600080808080806127ab89896127a28a61374f565b8d929190612b73565b919c909b50909950975050505050505050565b60006127c9826119ce565b610819906000196136b1565b60008060006127e88760a0015185101590565b156128065760405163b2094b5960e01b815260040160405180910390fd5b8651851261282c578651604051632185509b60e21b815261047591908790600401613450565b6000612839888887611a2b565b905061284788828989612b73565b9195509350915061285d8882898988878b612cc7565b509450945094915050565b6000610819826000196136b1565b600082612627670de0b6b3a764000084613684565b6000826109538184612d59565b60006128a3826119ce565b6128ba6128b56201518061016d613684565b6119ce565b84608001516128c991906136b1565b6128d391906136e1565b90506000811361081957604051630e520c3b60e11b815260048101829052602401610475565b6000806000831261290b57600161290f565b6000195b90506129266128b58561292186611540565b612612565b61095390826136b1565b60008061293d86846129b1565b9050670de0b6b3a764000081121561296b5760405163329e322960e21b815260048101829052602401610475565b600061298161297a878a613727565b8990612a08565b9050600061298e82612a2e565b905061299a8187612a08565b6129a4908461376b565b9998505050505050505050565b6000806129c36201518061016d613684565b6129cd8486613684565b6129d79190613644565b9050610953611b4d826119ce565b6000806129f283856136b1565b9050670de0b6b3a7640000815b05949350505050565b600080612a1d670de0b6b3a7640000856136b1565b90508281816129ff576129ff61362e565b6000670de0b6b3a76400008203612a585760405163a9c8b14d60e01b815260040160405180910390fd5b6000612a76612a6f84670de0b6b3a764000061376b565b8490612a08565b90506108f681612d85565b600080828560200151612a94919061376b565b90506000612aa28585613727565b9050600082138015612ab45750600081135b612af55760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b6044820152606401610475565b6000612b23612b0484846136b1565b6020890151612b139089613727565b612b1d90886136b1565b90612a08565b90506000612b39612b348486612a08565b612d85565b8851909150600090612b5490670de0b6b3a764000090612a08565b9050612b6481611b47848661376b565b89604001516129a4919061376b565b600080600080612b968860000151886020015189600001518a6040015189611bb9565b90506000612bac612ba78784612a08565b612868565b60608901519091506000871315612c1b576000612bc98483612a08565b9050670de0b6b3a7640000811215612bf75760405163329e322960e21b815260048101829052602401610475565b612c13612c0c83670de0b6b3a764000061376b565b84906129e5565b915050612c48565b612c4581612c3181670de0b6b3a764000061376b565b612c3b90856136b1565b612ba791906136e1565b90505b60006064612c598c60e001516119ce565b612c6390846136b1565b612c6d91906136e1565b90506000612c7b838561376b565b905060008112612c9457612c8f8a82612e16565b612c9e565b612c9e8a82612e43565b9750612caa8a84612e16565b9650612cb68a83612e16565b955050505050509450945094915050565b6000818860a00151612cd99190613605565b8851909150612ce890866119e4565b8852612d02612cf78486613727565b60208a0151906119e4565b602089018190528851612d2791612d1a9089906128f9565b895160408b015185612e70565b6101008901819052600003612d4f57604051635534d70f60e11b815260040160405180910390fd5b5050505050505050565b6000670de0b6b3a7640000600181612d718686613684565b612d7b9190613658565b6126279190613605565b6000808213612dc65760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610475565b670c7d713b49da000082138015612de45750670f43fc2c04ee000082125b15612e0857670de0b6b3a7640000612dfb83611c6a565b816121c1576121c161362e565b61081982611d89565b919050565b60008060008312612e28576001612e2c565b6000195b90506129266128b585612e3e86611540565b612876565b60008060008312612e55576001612e59565b6000195b90506129266128b585612e6b86611540565b612eb7565b600080612e81878787876000611bb9565b90506000612e916114cc83612d85565b905083612ea36201518061016d613684565b612ead9083613684565b610c849190613644565b600082600181612d71670de0b6b3a764000086613684565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060600160405280612f0a612f4d565b815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60405180610120016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051606081016001600160401b0381118282101715612fd257634e487b7160e01b600052604160045260246000fd5b60405290565b60405161012081016001600160401b0381118282101715612fd257634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715612fd257634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612fd257634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461272557600080fd5b8035612e1181613069565b600081830361016081121561309d57600080fd5b6130a5612fa2565b9150610120808212156130b757600080fd5b6130bf612fd8565b91508335825260208401356020830152604084013560408301526130e56060850161307e565b60608301526080840135608083015260a084013560a083015260c084013560c083015260e084013560e08301526101008085013581840152508183528084013560208401525050610140820135604082015292915050565b60008183036102a081121561315157600080fd5b613159612fa2565b9150608081121561316957600080fd5b613171613039565b83358152602084013560208201526040840135604082015260608401356060820152808352506131a48460808501613089565b602083015260c06101df19820112156131bc57600080fd5b506131c5613009565b6101e08301358152610200830135602082015261022083013560408201526102408301356060820152610260830135608082015261028083013560a08201528060408301525092915050565b803560038110612e1157600080fd5b600060a0828403121561323257600080fd5b60405160a081016001600160401b038111828210171561326257634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b60008060008061038085870312156132b457600080fd5b6132be868661313d565b93506132cd6102a08601613211565b92506102c085013591506132e5866102e08701613220565b905092959194509250565b60006020828403121561330257600080fd5b81356108f681613069565b600080600080600080610440878903121561332757600080fd5b613331888861313d565b95506133406102a08801613211565b94506102c087013593506102e08701359250613360886103008901613220565b9150613370886103a08901613220565b90509295509295509295565b60006102a0828403121561338f57600080fd5b6108f6838361313d565b634e487b7160e01b600052602160045260246000fd5b815160c0820190600381106133d457634e487b7160e01b600052602160045260246000fd5b808352506020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60008060006101a0848603121561342657600080fd5b6134308585613089565b925061343f6101608501613211565b915061018084013590509250925092565b918252602082015260400190565b8051612e1181613069565b600060c0828403121561347b57600080fd5b613483613009565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015292915050565b60008183036102a08112156134d557600080fd5b6134dd612fa2565b60808212156134eb57600080fd5b6134f3613039565b8451815260208501516020820152604085015160408201526060850151606082015280825250607f19820191506101608083121561353057600080fd5b613538612fa2565b6101208085121561354857600080fd5b613550612fd8565b94506080870151855260a0870151602086015260c0870151604086015261357960e0880161345e565b60608601526101008088015160808701528188015160a087015261014088015160c08701528388015160e08701526101808801518187015250508381526101a086015160208201526101c0860151604082015280602084015250506135e2856101e08601613469565b6040820152949350505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610819576108196135ef565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826136535761365361362e565b500490565b80820180821115610819576108196135ef565b60006001820161367d5761367d6135ef565b5060010190565b8082028115828204841417610819576108196135ef565b634e487b7160e01b600052600160045260246000fd5b80820260008212600160ff1b841416156136cd576136cd6135ef565b8181058314821517610819576108196135ef565b6000826136f0576136f061362e565b600160ff1b82146000198414161561370a5761370a6135ef565b500590565b60006001600160ff1b01820161367d5761367d6135ef565b8082018281126000831280158216821582161715613747576137476135ef565b505092915050565b6000600160ff1b8201613764576137646135ef565b5060000390565b818103600083128015838313168383128216171561378b5761378b6135ef565b5092915050565b6000600160ff1b82016137a7576137a76135ef565b50600019019056fea2646970667358221220f25a78b89754e73b4a5e532b244c5b19f5681ed797565f0eb14142d44db1bf7064736f6c63430008110033",
1188
+ "linkReferences": {},
1189
+ "deployedLinkReferences": {}
1190
+ }